勉強のモチベーションになればいいなと

ただ資格勉強するだけじゃつまらないので、資格勉強の進捗や気になったことを発信してみようかと思って始めました

windows 10 WSL最強環境

ついに最強環境が出来上がったので記事を書きます。

  • wsltty
  • tmux
  • mintty-quake-console
  • vim
  • fish

完璧までのあらすじ

  • wsl上のvimで快適に日本語入力したい
  • たくさんウィンドウを分割したい
  • ssh先をわかりやすくしたい
  • 必要な時すぐにターミナルを出したい

WSL上のvimで快適に日本語入力したい

家のメインマシンはWindows 10を使っています。Windowsってvimで快適に日本語入力するにはIMEとの戦いが欠かせないんです。 その戦いにいったん終止符を打ったので自分の環境の設定をここに記しておきます。

使っているターミナルはwslttyです。WindowsTerminalじゃうまく動かんかった。

~/.vimrcの設定値抜粋です。 基本的にここここを参考に作りました。 &termscreen-256colorになっているのはtmux上だと色がうまく出なかったのでこの設定に行きつきました。

歴史は忘れた。

set t_SI+=^[[<r
set t_EI+=^[[<s^[[<0t
set t_te+=^[[<0t^[[<s
set ttimeoutlen=20

if &term =~ 'screen-256color'
  let &t_EI .= "\ePtmux;\e\e[<0t\e\\"
elseif &term =~ 'xterm'
  let &t_EI .= "\e[<0t"
endif

ちなみに日本語入力したい理由はよくMarkdown書くからです。MarkdownのプレビューはPrevimがおすすめです。WSLからも使えるオプションがついてます。

必要な時すぐにターミナルを出したい

自分はQuakeのような上からニュッっと出てくるターミナルが好きなんですが、 Windowsで長らくいいものが見つからなくてKeypirinhaからwslttyを起動する日々を送っていました。

今日tmuxの設定やらWindowsTerminalを使おうといろいろ試していたらいいソフトウェアを見つけました。

mintty-quake-console

これを使うとminttyをquakeの様に上からニュッっと出せるようになります。

ReleaseからzipをDLしてきて解凍するだけの簡単なお仕事です。

mintty-quake-console.iniの設定値はこちら。

[General]
mintty_path=C:\Users\UserName\AppData\Local\wsltty\bin\mintty.exe
mintty_args=--WSL= --configdir="C:\Users\UserName\AppData\Roaming\wsltty" -~ tmux
hotkey=F12

[Display]
start_with_windows=1
start_hidden=1
initial_height=2160
autohide_by_default=0
animation_step=16
animation_timeout=10
animation_mode_slide=0
animation_mode_fade=1
initial_width=80
initial_trans=239
window_borders=0
display_on_monitor=0

たくさんウィンドウを分割したい

最近tmuxを使い始めたんですが、wslttyを起動するたびに手動でtmuxを起動するのが面倒くさい。 なので、wsltty起動時にtmuxを自動起動してくれるように悪戦苦闘していたんですがうまくいかなかったんです。

大体記事にあるのが~/.config/fish/fish.configに記述したり~/.zshrcに記述したりしてこねくり回してtmuxを起動させようというもので。 それを真似してみたんですがどうもうまくいかなかったんですよね。おそらくwslttyの仕様上難しいんだと思うんですけど。

wsltty起動時に~ tmuxって引数与えると起動時にtmux起動することがわかりました。完璧です。

ssh先をわかりやすくしたい

最近リモートワークするのに自分の家のマシンにいろいろssh接続する機会が増えました。 大体マイマシンはfish使って画面広く使いたくてホスト名とかプロンプトに書いてないことが多いんですよね。

そうすると今ログインしている場所がわかりづらくてどうしようと思ってたんですが、tmuxで解決しました。

参考にさせていただいたQiitaの記事はこちらです。 やっていることはここに書いてあることそのまんまです。

そのtmux上で実行した最後のコマンドも出せればよかったんですがいったん諦めました。

Divaコン進捗

Divaコンの進捗。

 

とりあえずMPR121を2つつなげて認識させるところまではいった。
I2Cのアドレスが重複しちゃうのをどうやったらアドレス変えられるかを調べてこんなページが出てきたのでとりあえずメモ。

https://forums.adafruit.com/viewtopic.php?f=22&t=88603

 

i2cdetect -y 1 でとりあえず5a, 5bに認識されたのでこの5bに認識されたMPR121の値をとってくればいいのかをソース見て確認中。

 

これができたらいよいよタッチセンサ作成本格始動ってところかな

Divaコン作り始めました

はじめに

初音ミク Project Diva Future Tone DXがやりたくなったのでやっているんですが、アケコンが欲しくなったので作り始めました。

先人たちの知恵を借りてとりあえずMPR121(静電容量式タッチセンサ)を2つ注文して届いたのでRaspberry Piで動作確認。

そのときに躓いたことを軽くメモしておきます。

今回作成するタッチセンサとRaspberry Piへの配線はこんな感じ。

上のブレッドボードは今手に入るMPR121の基板だと思ってください。 左からIRQ,SCL,SDA,ADDR,GND,3Vo,VINで並んでます。

今回使うのはSCL,SDA,GND,VINの4箇所のみ。

f:id:ymd330:20200513220152j:plain
配線図

Raspberry PiはI2Cを有効化したものとして話を勧めます。

接続できたらi2cdetectコマンドで認識しているか確認しましょう。 認識されていたら5aって表示されていると思います。

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

手順

  • gitからAdafruitのサンプルをダウンロードする。(今回はPythonでやってます。)
git clone https://github.com/adafruit/Adafruit_Python_MPR121.git
  • setup.pyを実行する。
cd  Adafruit_Python_MPR121/
sudo python setup.py install

この後にsampleフォルダにあるsimpletest.pyを実行すればいいと思っていたんですが、エラーになってしまったので エラーメッセージでググりました。

エラーメッセージはこれ。

Adafruit MPR121 Capacitive Touch Sensor Test
chmod: '/sys/module/i2c_bcm2708/parameters/combined' にアクセスできません: そのようなファイルやディレクトリはありません
Traceback (most recent call last):
  File "simpletest.py", line 34, in <module>
    if not cap.begin():
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_MPR121/MPR121.py", line 90, in begin
    I2C.require_repeated_start()
  File "/usr/local/lib/python2.7/dist-packages/Adafruit_GPIO/I2C.py", line 79, in require_repeated_start
    subprocess.check_call('chmod 666 /sys/module/i2c_bcm2708/parameters/combined', shell=True)
  File "/usr/lib/python2.7/subprocess.py", line 190, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'chmod 666 /sys/module/i2c_bcm2708/parameters/combined' returned non-zero exit status 1
  • モジュールを読み込む(自分はこれでエラーが治りました)
sudo modprobe i2c_bcm2708
cd example
sudo python simpletest.py
  • 触って楽しむ

以上!

この後は先人の知恵のソースを眺めつつDivaコンのタッチセンサーを作れるようにやっていきたいと思います。

知識ゼロからだったのでタッチセンサーを動作させるのにも時間がかかるかなと思っていましたがあっさり行けましたね!

ターミナルを変えました

今までWindowsTerminal(Preview)を使っていましたが、wslttyに鞍替えしました。

vimでterminalを開いたときにカーソルが白塗り矩形になってしまうのと、白塗り矩形が文字を透過しなくて使いづらい事に気がついたので。。。

WSL(ubuntu18.04) + fish + wsltty の環境で改行時に

[I] [04/24 14:52] ~ >
¶       

こんな感じで表示されてしまい画面が変になる人向けに改善方法を書きます。 結論から書くとwslttyのテキストのロケール設定をCに変えるだけです。

f:id:ymd330:20200424145424p:plain

日本語環境やろ~って思ってja_JPにしていたのが良くなかったみたいです。

WSL環境はこんな感じ

[I] [04/24 14:49] ~ > cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
[I] [04/24 14:50] ~ >
[I] [04/24 14:49] ~ > fish -version
fish, version 3.1.0
[I] [04/24 14:49] ~ >
[I] [04/24 14:49] ~ > locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

wslttyすごい快適ですね。 色バグとかもないし。。。

BeatSaberめっちゃ面白い

ひょんなことからカイシャの人にOculus Riftを借りました。
(2月には自分で買う予定)

 

BeatSaberがめちゃくちゃ面白い

Mod入れてカスタム曲入れられるようにしていろいろな曲やってます。

 

ejiejidayoさんのButterflyがめちゃくちゃ面白いので皆さんもBeatSaber買ったらMod入れてぜひやってみてください。

 

最近はModいれるのもツールがGithubで公開されるなんてすごい時代になりましたね。

BeatSaberのMod管理に使っているのがModAssistantというツールで、C#で書かれているっぽいです。

 

余裕があったらコードも少し覗いてみようかな。

 

3Dモデルを表示したり三人称視点にしたりするModあるんですが流石にGTX970だとスペック不足があってそこまでは手を出せないですが、そのうちRyzenやらなんやら買ってあたらしいPC組んでやりたいですね。

 

3Dモデル作成にも手を出しそうで怖いです。

vimconf 2019 感想

vimconf.orgvimconf 2019に行ってきたので情熱のある内にレポートをしたい

全編通して英語 ⇔日本語同時翻訳付き!!
非常に濃厚な1日でした。
ノベルティVimロゴ付きのアイススプーンと鮭とばでした。
鮭とば美味しかった・・・・

これでシンカンセンスゴイカタイアイスも難なく食べられますね!!

セッションについて


LSP(Language server protocol)と通信するためのプラグイン(vim-lsp)を作った人と
Neovimのリードメンテナの人のKeynoteセッションで開幕。

正直話についていけない感がすごかった

そもそもプラグインのキーワード補完の機能がどういう仕組みで動いているか知らなかった(LSPという言葉の意味すらわからなかった)ので、非常にいい勉強になりました。
vim-lspに依存しているなんかのプラグインを使ってみようと思ったけどうまく動かすことができなくて挫折してました
neovimの話とかテキストエディタの歴史とか

 

 

非常に印象に残ったというか、自分が理解できたもの/覚えているもの

- Vimを完全に理解するとvimになる (vim理解度のグラフの頂点にYou are vimと書いてあった)
- 目の前の仕事を片付けてから.vimrcを触ろう(.vimrcを触る時間が長くなるのはみんなあるあるらしい)
- .vimrcの可搬性を大事に

- 使っていたプラグインのバグを報告したら「neovim使ってないからわからない」で10分でissueが閉じた
- PR投げてレビューを受け、後方互換性を意識したコードへ
- これからコントリビューターとしての道が 必要なのは一歩踏み出す勇気

- タグジャンプについての話
- 正直全然理解できなかったけどそういう仕組みがあって、指定した関数へのジャンプ機能を実装しているということがわかった

- vim本体のテストについての話(正直あんまり理解できなかった・・・)

- vimさわり始めて1年でものすごい量のアウトプットをされたゴリラさんの家は上野動物園にあるらしい
-

- 光のvimmerの話
- プラグインを使わずにvimの標準機能のみでvimを使い倒す
- 非常に多くの機能を使っていて正直頭が全然追いつかなかったのでHelpを熟読しようと思う

- 闇のvimmerの話
- プラグインをめちゃくちゃ使ってライブコーディング
- フォントサイズを変えることですらプラグインを使ってヌルヌル替えていくところが非常にプラグインを使いこなしていてすごいと思った
- 機材が不調だったがカメラで撮影した画面を共有してデモをするというすごいアドリブ発表
- ズーム(物理)

昼食

すきやき弁当美味しかった(小並感)

LTについて

- スッと下がるドラを持つ手
- 痩せたい.vim
- コードの大規模リファクタリングのツールとしてvimscriptを選択した話
- vimソースコードgoogle codeからgithubに移管した話(急遽LT枠で40分で話す予定の話を5分に圧縮)


AfterParty

- LANケーブルの様な見た目のLANケーブルのような味がするお菓子(アメリカ産お土産)
このお土産のおかげで交流ができました、この場を借りてお礼を申し上げます。ありがとうございました!
- AfterPartyLT
- テンプレートプラグインを使ったスゴイハヤイライブコーディング
- 消えたスライド/英語・日本語両対応LT
- 3枚のうち1枚が「おまけ」のみの高速LT(矩形選択のエンド位置を変える方法と前回の矩形選択を呼び出す方法)
- vim内でExplorer すごい便利だと思ったので入れようと思う

感想


のりと勢いで参加したvimconfですが、非常に楽しめました。
いい知見を得られたのでvimをたくさんやっていきたいと思います。


自分の日本語と記憶力の限界です。矩形選択のエンド位置を替えるショートカットはもうすでに頭から
抜けてしまったので調べます。。。


ありがとうございました。

Deep Security ManagerのSNMP Trap送信にはまった話

今いろいろと話題のTrend Microさんですが、Deep Security でSNMP Trapの特定アラートが通知されなくてはまっていたのが解決したので書きます。

 

システムイベントで「アラートの開始」の転送するにチェックを入れていなかったのが原因でした。

 

顛末はもう疲れたので今度忘れてなかったら書くと思います。
ただの設定漏れだったよ・・・