ガーディアンズ・オブ・ギャラクシー: リミックス
今年のオープニング賞みたいなのあったら絶対これってぐらい良かった。何度でも見たい。
1がめちゃくちゃ良かったけど、それを超えていく良さ。今年一番良かった。タイトルだけはどうにかしてほしいですね。
夜空はいつでも最高密度の青色だ
どこでもやってなくてしょうがないから都内に行ってきたけど、先行公開っていう罠だった…。詩集が原作らしくてちょっと変わった映画でしたね。
macvim の menu のショートカットを消す
macvim を使っている最中に、たまにタイポなのか、make らしきものが実行されていて謎だった。今日それが解決して macvim には cmd+b (メニュー -> ツール -> メイクに定義されている)に :make が割り当てられていた。英字キーボードで cmd に変換を割り当てているので、しょっちゅう cmd を押すのでそれと b ( back ) が一緒に押されたと認識されて make が走っていたのだった。不運すぎる。
macmenu Tools.Make key=<nop>
macvim のオプションを調べたら、上のように設定するとキーバインドを解除できるとしったので、ようやく解放された….。
PLAYERUNKNOWN'S BATTLEGROUNDS
ちょっとした時間にできそうだし、気になってた pubg を買って遊んでみた。一度だけソロドン勝を食べることができた。
これはすごい運が良くて、毎回外れの方に降りているけど、狭まるエリアが毎回ちょっとだけ進んだところだったので、後ろをほぼ気にせず進めたというのが大きい。 あと、途中で 8x スコープを強奪した、最後の 5 人ぐらいの時に他人の場所は把握してたけど、多分こちらは把握されていなかったというのも運がよかった。
残り3人になった時に連続で落としてノーダメージドン勝。
coop でも遊びたいけど、周りで遊んでいる人がいないので寂しい。。。
タイムアウト(キャンセル)を context.Context に寄せてみる
気が向いたので前書いた go のライブラリの一つのタイムアウトの指定(キャンセルも含む)を context.Context に寄せてみた。 (https://github.com/soh335/test-mysqld-docker/pull/6) このライブラリは docker で test 用の mysqld のプロセスを管理するもの。
NewMysqld()
を呼ぶとタイムアウトするまで docker で mysql を立てて、ピングが通ったら dsn を知ることができるという流れになっている。
今までは config struct に timeout の指定を入れて渡していた。こんな感じ。( nil だった時はこの config の値をデフォルトで指定してたけど)
config := &MysqldConfig{ Tag: "mysql:latest", Timeout: 30 } mysqld, err := mysqltest.NewMysqld(config) if err != nil { log.Fatal(err.Error()) } defer mysqld.Stop() db, err := sql.Open("mysql", mysqld.DSN()) ...
それを context に寄せて見たものがこれ。
ctx, cancel := context.WithTimeout(context.Background(), time.Second*30) defer cancel() mysqld, err := mysqltest.NewMysqld(ctx, "mysql:latest") if err != nil { log.Fatal(err.Error()) } defer mysqld.Stop() db, err := sql.Open("mysql", mysqld.DSN()) ...
config の内容が tag しかなくなってしまったので、string として渡すようにした。
個人的には defer を二つ書かないといけないのがちょっと見栄えが良くないな…と感じた。ドキュメントとか関数名次第であると思うけど、直感的に cancel がここでいう NewMysqld だけに効くのか Stop にも効くのか分かりづらいなぁという感じ。大抵 context を渡すのって何かの操作一つだからかな。 そういう意味では、NewMysqld より Start とかの方が context が効く範囲がわかりやすいかも?
まぁ内部だけで使うにしても、標準ライブラリも context に色々対応してきたし使った方が楽なことが多いので、使っていきたいとこ。