一昨年のふるさと納税でもらった日本酒をちょっと消費した。日本酒はなかなかスイスイ減らないということを学んだので、去年のふるさと納税はビールにしたのだった。消費しやすいものを返礼品としてもらうぐらいがちょうどよい。
胃腸の調子が悪くて困った。お腹を温めて寝るしかなさそう。
今日の一曲
季節感がゼロ。そろそろブルアカの5分アニメ放映されないか?
一昨年のふるさと納税でもらった日本酒をちょっと消費した。日本酒はなかなかスイスイ減らないということを学んだので、去年のふるさと納税はビールにしたのだった。消費しやすいものを返礼品としてもらうぐらいがちょうどよい。
胃腸の調子が悪くて困った。お腹を温めて寝るしかなさそう。
季節感がゼロ。そろそろブルアカの5分アニメ放映されないか?
無事に香川に泊まってうどんを食べる。
こんぴらさんの本殿まで行って、見事な筋肉痛を持って帰ることができた。
朝ごはんにうどん、昼もうどん、もう1つうどん、という感じでさすがに満腹になった。
丸亀のマイクロブリュワリーでビールを飲んで、特急に乗り込んで帰る。
岡山駅前のイオンモールではフードコートで地ビールを飲むことができる。おつまみが無限にあるということだ。
四国の県のうち香川ではまだ宿泊したことがない、ということで香川に行った。
車を運転してもらって、いろいろやりながら瀬戸内海を越えた。知らない萌えキャラが歓迎してくれた。
これぞ讃岐うどん、という感じでよかった。
Go Modules Reference - The Go Programming Language を流し読みつつ手元でちょっと実験した感じだと、go.modに指定したバージョンになるようだった。
Module-aware commandsの節を見るとそのように読める。
In module-aware mode, the go command uses go.mod files to find versioned dependencies, and it typically loads packages out of the module cache, downloading modules if they are missing.
module-awareな場合の go run
サブコマンドも、go.modからライブラリのバージョンを特定していそう。
いきなり話題が変わるけど、tools.go に依存ライブラリを列挙するのはGo公式のwikiでも紹介されている手法のようだった。How can I track tool dependencies for a module? という節で紹介されている。
Go製のツールはシングルバイナリで動くことが多く、おもむろにバイナリを落としてきたり、Homebrewに上がっているものを使ったりしがちだけど、ツールのバージョンがどんどん勝手に上がらないように管理したいときは固定するのが便利そう。
年明け1週目の仕事はリハビリみたいなところがあると思う。2週目は月曜日が祝日なので、身体を徐々に慣らしていくような感じで働くことになるであろう。
久しぶりに激しい二日酔いで苦しんでいた。午後にはマシになったけど午前中は仕事にならなくて困った。
2022年末、人類はWSLのファイルシステムを消し飛ばした*1のであった。かけがえのないシェルの履歴*2の思い出と共に。
シェルの履歴が全部消えると、補完に頼って入力しているコマンドが急に打てなくなって、不便になる。2023年はこういった悲しみを減らしていきたい。
ということで、表題の取り組みをやっていくことにした。
以下のようなスクリプトを ~/local/bin/backup-zsh-history
など適当なパスに置いた。5秒おきに ~/.zsh_history
ファイルをDropboxにコピーするスクリプトになっている。-u
オプションを付けることで、~/.zsh_history
が更新されていなかったらコピーしないようにしている。
#!/bin/sh set -eu if [ "$BACKUP_DEST_PATH" = "" ]; then echo 'BACKUP_DEST_PATH not set' > /dev/stderr exit 1 fi while sleep 5; do cp -u /home/utgwkk/.zsh_history $BACKUP_DEST_PATH done
スクリプトを手軽にdaemonizeできたらなんでもいい。最近のWSLではsystemdが使えるので、unit fileを書いて適当なところに設置したらよい。user unitは使えない*3ようなので、最速で動くことを重視して /etc/systemd/system
ディレクトリ以下に置いた。
[Unit] Description=Backup zsh_history [Service] Environment=BACKUP_DEST_PATH=/mnt/c/Users/utgwkk/Dropbox/zsh_history/kaede ExecStart=/home/utgwkk/local/bin/backup-zsh-history [Install] WantedBy=default.target
あとはこのunitを動かせば完成する。
2023年はこのようにしてシェルの履歴をDropboxにバックアップすることにした。これでまたWSLのファイルシステムを吹き飛ばしてもDropboxから復元できるはず。WSLでsystemdが (おおむね) 動くようになったのを知れたのもよかったと思う。systemd user unitが動くようになったらまた教えてください。
(2023/1/4 17:23 追記)
シェルの履歴をDropboxにバックアップする取り組み - 私が歌川ですb.hatena.ne.jp事故で空っぽのファイルになったときに困りそうだけど file history あるからいいみたいな理論なのかな
2023/01/04 17:15
だいたいそういう理論です。コピー元のファイルサイズが明らかに小さかったらcpしない、みたいなことができるとより安全になりそうだけど、うまくできるかどうか。
(2023/1/4 17:25 追記)
ある程度の期間ごとにコピー先のファイルを分けることもできそう、しかしDropbox上のファイルが増殖しまくるのでは?
WSLでsystemdを有効にしたら、見出しのような現象が発生した。WSL上ではWindowsの実行ファイルも実行できるはずだが、以下のようにexec format errorが出て実行できなくなる。
% /mnt/c/win32yank/win32yank.exe -o zsh: exec format error: /mnt/c/win32yank/win32yank.exe
WSLのリポジトリのissueでworkaroundが紹介されているので、これに倣えばよい。
つまり、以下のような内容のファイルを /usr/lib/binfmt.d/WSLInterop.conf
というパスに保存して sudo systemctl restart systemd-binfmt
コマンドを実行したら直る。
:WSLInterop:M::MZ::/init:PF