18:43:21 # Life OpenVPNの設定をなんとか頑張って修復したが力尽きた。昔はスマホから繋げられるようにしていた気がするのだがなんかAndroid OpenVPN Connectがサポートしている設定が違うっぽい。前もハマった記憶がうっすらと。
21:25:37 # Life EasyRSAのドキュメントについていろいろいいたいことがあったのでプルリクエストを投げてみた。 すぐに反応があっておどろき。
17:24:05 # Life git で gpgで署名する。-SオプションでGPG鍵で署名するということができるのは知っていたが設定ができない。 git commit がエラーをはくのだが要領を得ないのでstraceしてみたらgpgはエラーをはいていてそれをgitは表示してくれていないということがわかった。
read(7, "gpg: signing failed: Screen or w"..., 12108) = 127 poll([{fd=5, events=POLLIN}, {fd=7, events=POLLIN}], 2, -1) = 2 ([{fd=5, revents=POLLHUP}, {fd=7, revents=POLLHUP}])
まず手元ではGPGのパスフレーズを表示する画面の設定が必要で export GPG_TTY=$(tty) した上で、 これが表示できる大きさのターミナルが必要であるということがわかった。なんじゃそりゃ。
11:33:21 # Life ZNCの設定。IRC Bouncerが使いたいなぁとおもって、なんかPlumまた使うのもなぁとおもって調べていたところ、ZNCというのがどうも評判がよさそう。 Debianのパッケージもあるようで、それを試そうかと思いました。 設定はとりあえず自分のユーザで起動するのは簡単でそれでもいいかなと思ったんだけど、 パッケージ側では_zncというユーザを作成してくれていてそれを有効化したら使えるっぽい。なるほど。 2019年にDebianパッケージにそういう仕組みが入ったのであまりブログ記事とかには出てないのかな。 探した感じブログ記事は10年前とかのがたくさんひっかかってよくわからなかったのでした。
11:28:43 # Life 今月読んだ本の読書メモ。
20:43:08 # Life GCC pragma. gccはclangのpragmaはみてくれないのだが、clangはgccのpragmaをみてくれるっぽい。 GCC Pragma に従って、どれをWarningにするか、エラーにするかとかが選べる。 とりあえず手元のコードは両方でコンパイルしたいので、GCCのPragmaを記述しておいた。
#pragma GCC diagnostic warning "-Wdeprecated-declarations"
16:37:06 # Life podmanがエラーをはいていてさてどこかで見たなとおもったら先月も遭遇していた。 そのメモをもとにsudo rm -rf find ~/.local/share/containers/で削除して解決。
$ podman build . ERRO[0000] User-selected graph driver "vfs" overwritten by graph driver "overlay" from database - delete libpod local files to resolve. May prevent use of images created by other tools
15:58:47 # Life chrome extension Manifest v2 からv3 への移行。 Chrome Extensionは以前はManifest v2だったのだが、v3に変更になったと。マイグレーションするには ここらへんをみればよいのか?。 ただマニフェストの形式が変わったというよりはどちらかというとBackground PagesがごっそりとService Workerになったというイメージなのかな。 Chrome extension専用だったAPI群がちょっとそれ以外に近づいたりしたんだろうか。かなりよくわかってないのでまだ試行錯誤中。
17:46:20 # Life chrome extension Manifest v2 からv3 への移行でハマったところ。
移行ガイドではbrowser_actionをactionにmanifestで書き直すように指示されているのだが、ついでにbrowserActionをactionに書き換えれば良いというのが最初わかってなかった。それでだいぶ時間を溶かした。あとからわかってみれば当たり前だけど。
service_workerを全くわかってなかったので全然ロードされないのかと思っていたのだが結局感覚としてはbackground pagesとほぼ同じタイミングでロードされるようだった。何が違うのか結局よくわかっていない。
あと、chrome.tabs.executeScriptがdeprecateされていてchrome.scripting.executeScriptに変わっていた。従来のものでは文字列を渡したらそれをそのままJavascriptとして実行してくれたのだが、この変更により関数を渡すと関数をシリアライズして向こうに渡してそれを実行する、 ただしクロージャーが渡せるわけではないのでパラメータは明示的に関数パラメーターを渡せるように変わった。 関数を文字列として手動でシリアライズしていたときに仕込みやすいエスケープバグが潰せるだろうということらしい。 移行のついでに従来の自分の書いたスクリプトのバグを発見してしまった。 内容としては、文字列として`${こんな感じで}`渡していたパラメーターが、思っていた型ではなく展開されたので、文字列型が数字として関数では処理されていた。 関数に置き換えたことで正しく文字列型として処理され、値が変わってしまったというバグ。 あと、この書き方にしたら混乱するかなと思ったがコードを編集している感じでは以前の文字列をただ渡しているよりはちゃんと Emacsのコードのシンタックスハイライトもインデントも動くし、 Javascriptとしては書き心地が良い。
しかし、よくわからないところで二時間溶かしてしまった。 メインのマイグレーションに挑戦するまえにもうちょっとシンプルなやつに挑戦していたので初めて見るドキュメントというわけではなかった。 その準備があったからこそ挑戦する気にはなったのだが、 その準備があってもかかってしまった二時間なのでだいぶ辛い。 これも5年メンテしているスクリプトなのでたまに色々作業が発生するわけだが、 全く価値に直結しないのでこういう変更をさせられるのはつらい。
21:18:49 # Life fincoreのブロックデバイスまわりの扱いがイマイチだなぁとおもっていじってたら。 cachestatシステムコールなるものが新しく登場してきた。 へえ。
21:35:17 # Life Named Return Value Optimization(NRVO)。気になったのでコード書いて確認してみた。 特に気になったのはoptionalを返す場合。適当なクラスを書いてoptionalの中身を返すコードを書いたら、copy ellisionされなかった。 optionalを返すコードを書いたらcopy ellisionされた。だいたい等価な気がするのでもう一息コンパイラーには頑張っていただきたい。 compiler explorer.
std::optional<NoticeCopy> nrvo_option_content() { NoticeCopy n{1}; return n; } std::optional<NoticeCopy> nrvo_option() { std::optional<NoticeCopy> n{1}; return n; }
07:30:06 # Life Emacsを最小化したくない。Ctrl-Zを間違えて押すことがあってログインシェルとして使っていると非常に不便である。 GUIの場合は最小化するのでそこまで影響がないんだけど、CUIの場合バックグラウンドに回ってしまい、そしてログインシェルとして使っているとセッションが切れる。 なんか手元で試行錯誤してC-zおよびC-xC-zを無効にしたいのだがなんか思ったような挙動にならない まずなぜかglobal-unset-keyがきかなかった。そしてglobal-set-keyでundoに設定した気がするんだがなぜかC-zがPrefix keyになった。うーむなぜだ。 しかし今見たらちゃんと思ったような設定担っている。再起動しすぎて意味がわからなくなってきたのかも。
(global-unset-key ("\C-z")) (global-set-key "\C-z" 'undo) (global-set-key (kbd "C-z") #'undo) (global-set-key "\C-x\C-z" #'undo)
07:33:30 # Life emacs idoを使い始めて。iswitchbがdeprecateされてそろそろ10年くらい立ったっぽいので重い腰を上げてidoにお引越し。 大体使い方がわかったのだけどファイルパスをコピペで入力したいときがよくわからない。 そもそもコピペがしたいんじゃなくてそこからファイルを開きたいのだということに合点がいったのでM-x ffapを使うので落ち着いた。 あとC-xC-fC-fでもとのfind-fileに戻れるらしい。
07:35:35 # Life Mozcのキーバインド。カタカナとかに切り替えるのにF6-F10とかのキーバインドが通らないターミナル環境を使っていたので困っていたのだが Ctrl-UIOPあたりで代替になるということを知った。便利。
17:26:29 # Life 住宅ローンっていくら位払うことになるんだろうとおもってざっくりと計算してみた。 わかりやすいシミュレーターどっかにころがっていないのだろうか。 これ。