日々、雑雑と。

いろいろなことを垂れ流し

Go

gin.Contextをgoroutineに渡す時に気をつけること

ginのContextをgoroutineに渡す時は、Context.Copy()を使うこと。 ... ctx := c.Copy() go func() { // ctx を使った処理など } ... gin.Contextのインスタンスはsync.Poolで使い回されており、使う度にフィールドを初期化するためにリセットしている。その…

DockerコンテナのcronログをFluentdに伝搬する

背景 1つのDockerコンテナ内にメインアプリ用とバッチ処理用のGoバイナリを入れて、メインアプリはpid 1(シェルスクリプト経由で実行)、バッチ処理はcron上で周期的に実行するコンテナを作った。が、後々Fluentdにログを集約することになったものの、cronで…

time.Timeのゼロ値はUnixtimeのゼロじゃない

time.Timeのゼロ値はUnixtimeのゼロではないことを知り、備忘録。 まとめ 以下のコードだと、tにはUnixtimeとしてのゼロは入らない。 t := time.Time{} fmt.Println(t.UnixNano() == 0) // -> false time.Unix()関数で2引数に0を指定すると、Unixtimeとして…