18:11:03 # Life 日々のバックアップやコードのデプロイなどの並列に動いている動作を管理するシェルスクリプトを順番にnodejsで書き直した。 エラー処理が失敗していたりやろうと思っていたことをやってなかっ たり書き直しただけだけど色々と問題を発見してかなりよい。とい うかシェルスクリプトやばいのかそれとも別言語で書き直すことに 良い効果があるのだろうか。 本当は依存関係とかがあるのでなんかもっと違う言語で書きたい気もするんだけど良いものが思いつかない。Ninjaとかでもいいのかなぁ。 Makefileでもいいんだけどこれ以上Makefileに依存したくない気もする。
すくなくとも一ヶ月くらいはラズパイにコードをデプロイする一連のGit pushとかをするデプロイスクリプトが壊れていたっぽい。
18:12:27 # Life 今月読んだ本の読書メモ。 子どもたちが夏休みにはいり、読書習慣が崩壊した。
09:22:04 # Life std::optionalはreferenceをとらない。boost::optionalはreferenceとったっぽい。 std::optional<V&>はstatic_assertで蹴られる。 std::reference_wrapperを使うと回避できるけどvalue().get()とかvalue_or(kValue /* reference がとられるのでrvalueじゃだめ*/).get()とかが散りばめられるようになってあまり便利じゃない。 シンプルなoptional referenceの提案 がでてた。問題意識とかはわからんではない。 これはoptional referenceの検討か。 残念ながら止まっているように見える。
08:50:03 # Life openvpnのクライアント設定。ひさびさに設定しようとしたらハマったのでメモ。 openvpnサーバ側においていた/etc/openvpn/easy-rsa のなかみがなんか変わっててopenssl.cnfがないというエラーがでたのでとりあえずopenssl-1.0.0.cnfのシンボリックリンクにした。 /etc/openvpn/easy-rsaって自分でつくったディレクトリのような気もするんだけどもう2013年ころにどうおもってなにをしたのかおもいだせない。 あとクライアントの設定ファイルを/etc/openvpn/においてからsystemdのデーモン設定を読み込み直さないと存在に気づいてくれないのでそこにハマった。複数のconfファイルが任意に存在してよい感じになってからかな。service openvpn restartするだけだとなにもしなくてそういうもんだったかなと焦った。
systemctl daemon-reload service openvpn restart
12:38:44 # Life ブロックデバイスのStatsの解釈。 /sys/block/*/statの解釈が難しすぎるので とりあえずJSでペーストしたらそれっぽい値を何種類がダンプしてくれるようにしてみた。 この情報をうまいこと出してくれるツールはなんだろうと思ったら多分iostat。まぁいいか。
10:29:13 # Life COVID19の中でまた8月がやってきた。子どもたちは夏休み。
11:00:34 # Life sqlite3でJournal modeを切り替える。 WAL使いたいなぁとおもったので。 まず公式のドキュメントをながめると Schemaを指定すればよいと言うように書いてある。mainがデフォルト。tempとかもあるらしい。 いみがよくわからないのでひとしきり検索してみたらschema前はattach database で指定できるらしい。 最初に起動するときのコマンドラインに指定したデータベースがmainでそれ以外はattach databaseで指定した名前ということかな。 そこまでわかればまぁpragma journal_mode wal;で変更。デフォルトはDELETEだった。
$ sqlite3 air.db sqlite> pragma journal_mode; delete sqlite> pragma journal_mode = WAL; wal sqlite> pragma journal_mode; wal