vimとIDE(ポエム)

誰かに読んでほしいわけじゃなく、自分の頭のモヤモヤを形にするために。

 

いっときPycharmに浮気してました。

使ってみて、IDEの良さってのが少しわかったような気がする。全部環境を用意してもらった状態で、自分の取り組むものに集中できるというのは素晴らしいことなのかもしれない。

 

でも、vimrcをいじって、環境を作りながら一つ一つ把握していく楽しさがないなぁと。

 

vim本体やプラグインの内容を把握してる訳じゃないけど、メーカーパソコンに対する自作パソコンみたいに、自分で組み合わせることで詳しくなっていくような楽しさがvimにはある

 

自分がやりたいこと、学びたいことをやりながらも、色々と環境を作っていくことも楽しみながらやってみたい。

そういうわけでvimに戻ってきました。

 

Windowsでのソフトインストール

macのHomebrewみたいに、ソフトのダウンロードとインストールを一括してやってくれるのに、chocolatyとscoopがあるけど、どっちもやめた。

 

chocolatyはアンインストールがうまくいかない場合があり、scoopはアプリのポータブル版があるものしかカタログに載っていない状態。

どちらも中途半端な状態では、併用するのも管理が面倒くさい。

 

昔やってたUSBメモリにポータブル版を設定したのと同じようにしてみた。

 

基本は昔の記事の内容。

homaju.hatenablog.com

これとMSYS2を組み合わせて、どのWindows10パソコンでもすぐ使えるようにした。

 

MSYS2のインストール

ぐぐればどこでも説明は載っているので割愛

とりあえずMSYS2 homepage 書いてある通りにすればいい。

だいぶ楽になった感じ。そしてインストール先をD:\rootとしてCドライブには入れなかった。

 

ポータブル版のアプリをインストール

ポータブル版はインストールしてフォルダを作成してくれるものや、解凍してできたフォルダをそのままコピーするものもある。root直下にappというフォルダを作成して、そこにアプリごとにフォルダを作成している。現時点でappフォルダに入れてるアプリは下記の通り。

  • afxw:キーボード操作のみの二画面ファイラー
  • clnch3Pythonで拡張可能はコマンドラインランチャー
  • FastCopy:ファイルコピーのソフト(スリープしても続きができるから使用)
  • FirefoxPortable:メインブラウザ
  • mupdf:見ることに特化した軽量PDFビューア(解説
  • NewtonPad:thumbsenseを使えるソフトウェア
  • nodoka:キーボードリマップソフト。これは手放せない。
  • PDF:PDFの追加・削除・回転等の単純アプリをこの中に。
  • pythonWindowsPythonをここにインストール(公式から)
  • RegistryFinder64レジストリの確認用アプリ
  • Tascher:アプリ切り替えのソフト。キーボードのみでも軽快に動く
  • vlc:動画再生ソフト(ダウンロードボタンでzipファイルが選べる

このソフトの起動は起動じのバッチファイルか、クラフトラウンチ(clnch3)を使う。

環境変数とパスの設定をしているから問題なく動く。

 

@echo on
REM%~d0で実行ファイルの存在するドライブに移動
%~d0
REM%~dp0で実行ファイルの存在するフォルダに移動
cd %~dp0

REM 環境変数の設定
set MYBIN=%~d0\root\app
set HOME=%~dp0
set MSYS=winsymlinks:lnk

REM 常駐アプリを起動

start "" "%MYBIN%\nodoka\nodoka.exe" -k  -c3
start %MYBIN%\Tascher\Tascher.exe
start %MYBIN%\clnch3\clnch.exe

 

 

 

 

HP Spectre X360の設定

HP Spectra X360 の設定内容のメモ

を、取ろうとしていたのに、時期が遅くなって大事なことをほとんど忘れてしまった。

また、初期化した場合に備えて、できるだけの記録をここに残しておきます。

Spectre X360の設定

購入したのは「HP Spectre x360 - 13-ap0042tu」

  • OS :Windows 10 Pro 64 ビット  1903
  • CPU:Core i7-8565U CPU @ 1.80GHz
  • メモリ:16 GB
  • モニタ:13インチ 3840 x 2160

初期設定内容

一番問題になるのは、トラックパッドの設定。 デフォルトのドライバーはSynapticの高精細ドライバーになっていない。 これを変更すると、複数本の指での操作が段違いになる。 ドライバーの削除と入れ直しで頑張ったから、成果を見直そうとしたら元に戻ってた……

どういうこと?

とりあえず。高精細対応

1月13日のドライバ 5.5.15.1102にしたら高精細対応になってた。 これは別のドライバを入れた履歴があるから、そうなったのか、今回から高精細になったからかは不明…

Windows版DockerのインストールとグラフDBのDockerImageの作成

これまでマカーだったのに、メモリ不足に我慢できずノートPCを更新することに。

金額とスペックを相談したところ、HPのspecre X360に。

めちゃくちゃ熱くなるところ以外は満足してます。設定もいろいろやったのですが、今日はタイトルのことで色々やったので記録しておく。

 

 Docker for Windowsのインストール

参考:https://www.kakistamp.com/entry/2018/11/26/231341

設定→アプリ→アプリと機能→関連設定「プログラムと機能」→「Windowsの機能の有効化または無効化」を開く

Hyper-Vのチェックを全てにチェックを入れる

win+X→A で管理者でPowerShellを開く

Chocolateyを使って、Dockerをインストール

choco install -y docker
choco install -y docker-compose
choco install -y docker-for-windows

以上で完了。Dockerを起動するとメッセージが出るので、パソコンを再起動する。

Redmineで起動を確認する

docker pull redmine
docker run -p 8080:3000 -dti redmine

これで127.0.0.1:8080にアクセスするとredmineの画面が表示される

 WindowsのDockerでPGXを使えるようにする。

参考:https://www.slideshare.net/HikariMorita/windows-docker-pgx

1.PGXのダウンロード

Oracleのサイトからダウンロードする。アカウントの作成が必要。
商用利用はできないが、無償で検証や開発は可能とのこと。
https://www.oracle.com/technetwork/oracle-labs/parallel-graph-analytix/downloads/index.html
今回は参考ページにあわせて、2.7.0をダウンロード

2.configファイルを作成

作業するフォルダとしてc:\Users\homaju\data\pgxを作成。
ここに、configファイルを作成する。

{
"port": 7007,
"enable_tls": false,
"enable_client_authentication": false
}

 

同じ場所にDockerfileを作成

 FROM openjdk:8-jdk

ARG PGX_VERSION=2.7.0
ENV PGX_HOME=/opt/pgx \
INSTALL_FILE=pgx-${PGX_VERSION}-server.zip

# 1. copy from downloaded file
COPY $INSTALL_FILE $PGX_HOME/

# 2. extract the file
WORKDIR $PGX_HOME
RUN apt-get install -y unzip && \
unzip $INSTALL_FILE && \
rm $INSTALL_FILE

# 3. Change config file
WORKDIR ./pgx-${PGX_VERSION}/
RUN rm ./conf/server.conf
COPY server.conf ./conf/server.conf

CMD ./bin/pgx

 

 

ダウンロードしたzipファイル、server.config、Dockerfileを同じフォルダに保存する。

3. Dockerイメージの作成


PowerShellの画面などで、1で作成したフォルダに移動する。
コマンドを実行
>docker build -t pgx-2.7.0 .
実行が成功したらコマンドで確認

>docker images

4. PGX Shellを起動

>docker run -it --rm pgx-2.7.0 ./bin/pgx

 

これで起動してPGXのShellが使えるようになる。
終了時は>:exit
ヘルプ表示は>:help

 

5. データを実際に使用してみる。(準備)


グラフDBの説明や実際の方法は下記スライドを参考にした。
https://www.slideshare.net/oracle4engineer/oracle-labs-pgx/

データの入手でExposedata.comからとなっているが、現時点でドメインが失効しているので、同じデータをKaggleから取得
https://www.kaggle.com/csanhueza/the-marvel-universe-social-network/downloads/the-marvel-universe-social-network.zip/1
Kaggleでのアカウントが必要なので注意
ダウンロードしたデータを解凍して、PGXフォルダにstorage/hero-networkを作成し、csvファイルを保存する。
ロードするための情報をJSONで記述する
hero-network.csv.jsonをダウンロードデータと同じフォルダに保存

{
"uri": "hero-network.csv"
, "format": "edge_list"
, "node_id_type": "string"
, "separator": ","
}

 

6. データフォルダをマウントして起動

>docker run -it --rm -v c:\Users\homaju\data\PGX\strage:/opt/pgx/workspace pgx-2.7.0


データの読み込みは

pgx> G = session.readGraphWithProperties("../workspace/hero-network/hero-network.csv.json")

 

読み込んだデータの処理は上記参照のP26からを参考に
https://www.slideshare.net/oracle4engineer/oracle-labs-pgx/3

 

Catalinaに備えよう!(rcmとmackupの導入)

 Catalinaが発表されて、開発者のみなさんがベータ版をいろいろ確認しているようですが、公開されて一般人がやることは間違いなくOSのクリーンインストール

 

クリーンインストールはするけども、使い勝手は同じように戻したい。でもTime machineを使って完全に同じにするのは面白みがない。

それどころか、Time machineは失敗ばっかりするし、まともに使える速い専用ストレージも用意できないから、ちゃんと使えた試しがない。

 

でも、クリーンインストールすると気分が気持ちいので、環境を整えるために準備しときましょう。

一番のメインはHome brewコマンドラインアプリはそのままで、GUIアプリはcaskを使い、appストアにしかないのはmasを使う。

でもって、このときの順番が大事なんだけど、

  • brewが使えるようにする。
  • brewfileが使えるようにbrew-fileをインストール

    $brew install rcmdnk/file/brew-file

  • masが使えるようにmasをインストール

    $brew install argon/mas/mas

  • 各アプリをbrewfileからインストール
  • アプリのバックアップを復元する。
  • gitを使って自分のdotfilesの最新版を入手

ここで問題がいろいろと

  • git使うのに.gitconfigがない
  • Doropboxに入ってる設定ファイルがbrewの設定をしないと入手できないのに、brewfileはDropboxgithubの中。

そこで、iCloud Driveを使って少しはましな環境を構築しようと考えてみた。

 

githubとrcmを使うのは

githubとrcmを使ったモダンdotfiles管理 - Qiita

mackupの使い方は

dotfiles, アプリケーションの設定をMackupで管理する - Qiita

 

dotfilesはrcmを使う。アプリケーションはMackupを使うけど、dotfilesは管理させない。

この方法でやってみる。

 

macのAlacrittyとNeovimでeskkを使う場合

Terminalをalacrittyに変えて、Neovimとプラグインのeskkを使えばこの環境でも問題なく日本語を入力できる状態です。
でもって、ターミナルとskkが組み合わさると出てくるのが「CTRL+J」の問題
「CTRL+J」がターミナルを使うときには改行になるんで、skkとは相性が悪い
今回はKarabiner-Elementsとeskkを使ったときの回避方法。

流れとしては、下記の通り。

  1. eskkの日本語切り替えを「CTRL+^」に変更する。
  2. Alacrittyを使うときのみCTRL+Jを送信すると、CTRL+^に切り替える。
eskkの設定

init.vimには次の通り設定

 set imdisable
 imap <C-^> <Plug>(eskk:enable)

1行目の set imdisable でimのAquaSKKなり、ことえりなり使えないようにしておく。元々alacrittyはimが使えないので問題ないけど、念の為
2行目で 「CTRL+^」をeskkを有効にするに割り当て。
eskkのhelpを見るとキーマッピングには3つあるけど、toggleにするとeskkを使う状態にしてから、日本語入力に切り替えるのがうまくいかなかった。
なので、eskk:enableを「CTRL+J」に割り当て。
ちなみにhelpは↓の通り

<Plug>(eskk:enable) (icl)		*<Plug>(eskk:enable)*
<Plug>(eskk:disable) (icl)		*<Plug>(eskk:disable)*
<Plug>(eskk:toggle) (icl)		*<Plug>(eskk:toggle)*
Karabiner-Elements の設定。

専用のコンフィグファイルを作成する。
作業場所は「 ~/.config/karabiner/assets/complex_modifications」
ここにCTRL+J_to_CTRL+^.jsonを作成。内容は以下

{
    "title": "Change CTRL+J on Alacritty",
    "rules": [
        {
            "description": "Change CTRL+J to CTRL+^ on Alacritty",
            "manipulators": [
                {
                    "type": "basic",
                    "from":
                        {
                            "key_code": "j",
                            "modifiers": {
                                "mandatory":["left_control"]
                            }
                        },
                    "to": [
                        {
                            "key_code": "equal_sign",
                            "modifiers": ["left_control"]
                        }
                    ],
                    "conditions": [
                        {
                            "type": "frontmost_application_if",
                            "bundle_identifiers": [
                                "io.alacritty"
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

ポイントはconditionsにおいてウィンドウを指定していること。
bundle_identifiersはKarabiner-Elementsに添付してあるKarabiner-Eventviewerを使えばすぐに分かる。

この設定をして、有効にしたらAlacritty上のNeovimで快適にSKKによる日本語入力ができましたっと。

Alacrittyとtmuxとbash_profile

Alacrittyとnvimの組み合わせが悪い場合があるみたいですが、tmuxを使うと問題ないとか。
そしたら、Alacrittyを起動したら自動でtmux立ち上がるのが楽。
そんな設定をするには、.bash_profileに色々と記入しておく必要があるみたい。

でも、非常用にターミナル.appで起動したらtmuxでは起動させたくない。
そんな対応をするために、以下のような内容になった。

if [ "$TERM_PROGRAM" = "alacritty" ]; then
    SESSION_NAME=ope

    if [[ -z "$TMUX" && -z "$STY" ]] && type tmux >/dev/null 2>&1; then
    >___option=""
    >___if tmux has-session -t ${SESSION_NAME}; then
    >___>___option="attach -t ${SESSION_NAME}"
    >___else
    >___>___option="new -s ${SESSION_NAME}"
    >___fi
    >___tmux $option && exit
    fi
fi

tmux起動の部分については他のページを参照し、
「ope」という名前のセッションが残っていれば、そのセッションでtmuxを起動。
そのセッション名がなかったら新規に「ope」でtmuxを起動。

でもって、最初の1行で使っているターミナルプログラムを判断していてる。
alacrittyだったら、tmuxを自動で起動させるけど、それ以外のターミナルだったら起動させない。
ちなみに環境変数の$TERM_PROGRAMはターミナル.appだとApple_Terminal、iTerm2だとiTerm.appとなってる模様。
じゃあalacrittyは最初っからalacrittyとして設定してるかというとそうでもない。
最初にチェックしたら空白だった。もともとLinuxでのターミナルがメインだから$TERMはあればいいけど、$TERM_PROGRAMは不要みたい。
なので設定ファイルに追加。

env:
  # TERM env customization.
  #
  # If this property is not set, alacritty will set it to xterm-256color.
  #
  # Note that some xterm terminfo databases don't declare support for italics.
  # You can verify this by checking for the presence of `smso` and `sitm` in
  # `infocmp xterm-256color`.
  TERM: xterm-256color
  TERM_PROGRAM: alacritty

.config/alacritty/alacritty.ymlに「TERM_PROGRAM:alacritty」を追記。
alacrittyを再起動してecho $TERM_PROGRAMで確認できる状態になった。
これで使用するターミナルアプリによって、tmuxを自動起動したり素のbashにしたりすることができる。

なんでこんなことをしたかというと、tmux.confの書き間違いで起動したらどうしようもなくなった場合に修正する方法がターミナルのnvimしか用意してなかったから。
別にエディターを入れて対応すんの面倒だった。