Plan 9とGo言語のブログ

主にPlan 9やGo言語の日々気づいたことを書きます。

Go

GAE第2世代で実装方法はどう変わったか

久しぶりにGAE/Goで自分用サービス作ったとき、第1世代(Go 1.9まで)と全く違っていて混乱したので自分用メモ。 DatastoreがCloud Firestoreになった 以前はAppEngine専用のDatastore APIを使っていたが、Cloud Datastoreを経て現在はCloud Firestoreを使うよ…

opencensus-goでPlan 9用のmackerel-agentを作っている話

この記事はMackerel Advent Calendar 2019の12日目です。 公式に提供されているmackerel-agentはGoで書かれていて、Windows、Linux、macOSなどに対応していますが、Plan 9には対応していません。個人のサーバはPlan 9が動作しているし良い機会なので、opence…

意外と難しいos/execの話

Go

Goのos/execパッケージは、別のコマンドを扱うためのパッケージですが、使い方を間違えたり、気が散っていたりするとリソースリークを引き起こす可能性があります。こないだリークするコードを目にしたので、どういった理由なのかも含めて紹介します。ここに…

Goでファイルの存在確認

Go

Goでファイルの存在確認について、インターネットではos.Statの戻り値がエラーかどうかを判定する方法が紹介されていますけれど、os.Statはファイルが存在する場合でもエラーを返すことがあるため、この方法では正しく判定できないケースが存在します。また…

GoのPrintfでカスタムフォーマッタを使う

Go

Goの fmt パッケージは、%s や %3.4f のような書式を使えます。基本的にはCと同じですが、%#v や %T などGo固有なものもあります。書式は基本的に %[flag][width][.precision]{verb} のように分かれていて、それぞれの数値は幅や0埋めなどを指定します。{ver…