Posts
main関数を分けたのでテストも書く
mainのテストは、os.Argsを直接設定するという割と無理やりな書き方でテストしていたけれど、処理部分を別関数にしたので、引数を変えて正常系と異常系をテストし分けることができるようになった。
docker-compose v1のEOL
Docker Desktopでは設定でcomposeのバージョン(1系と2系)を切り替えることができる。 ところで、いつまでV1が使えるのか気になったので調べてみた。 https://github.com/docker/compose では、デフォルトのブランチがv2となっている。masterブランチに切り替えてREADME.mdを見ると、 New features and bug fixes will only be considered in the V2 codebase とあるが、 but as Read more
main関数を分ける
Rust版でやっているように、main関数から処理を分離してrun関数を作ってみた。
コマンドライン引数をflagで処理する
入力ファイルをos.Args[1]で取得していたので、引数指定しないと範囲外アクセスでpanicしていた。 flagパッケージ使ってflag.Arg(0)で取得するようにしたので、引数指定しなかった場合にはファイルなしエラーで終わるようになった。 もっと親切にするなら、エラー終了ではなくヘルプ表示にする Read more
Goのconst
EOTとかbyteのスライスをconstで定義しようとしてできなかった。 const EOT = []byte{0x00, 0xFF, 0x2F, 0x00} $ go run cmd/mdmml/main.go # github.com/umemak/mdmml ./mdmml.go:10:7: const initializer []byte{...} is not a constant The Go Programming Language Specification - The Go Programming Language 文字列リテラルが許されるならbyteスライスも許されてもよいではないかと思ったけれど、ダメらしい。 varで我慢する。
バグ取り
MDMMLのループバグ、デバッグが面倒だったのでループの展開だけ前処理に分けることにした。 これだと文字列の状態でテストできるので、16進数より見やすい。 たぶん直ったと思う。
Rancher Desktop
Inspironクリーンインストールした後、Dockerのセットアップしてなかったの忘れていて、せっかくなのでRancher Desktopを試してみることにした。 公式ページからWindows用のインストーラーをダウンロードして実行。 起動時に聞かれるContainer Runtimeはdockerdを選 Read more
バグ発見
ループと休符の組み合わせで、休符が消える現象が起きてる気がする。 後から実装したところはちょっと入り組んでしまっているね。。