golang
gomockの引数のMatcherでgomock.Eq()を使うときに、構造体がポインタ型だったりするとうまく比較できない。 type Hoge struct { ID string } m.EXPECT().Hoge(gomock.Eq(&Hoge{ID: "1"})).Return(nil).AnyTimes() // マッチしない m.Hoge(&Hoge{ID: "1"}) そ…
go-cmp を使うと2つの構造体のDiffを取ることができるが、プロパティにJSON文字列([]byte や json.RawMessage など)があると、内容は同じでもインデント等が異なるとdiffが出てしまい、うまく比較できない。 type Hoge struct { ID string JSON json.RawMess…
以下の記事で示したように、github.com/go-sql-driver/mysql で parseTime、loc オプションを適切に設定することで、Go の time.Time型とMySQLの datetime 型をタイムゾーンを考慮して適切に相互変換できる。 mrk21.hatenablog.com しかし、同様にMySQLのdat…
MySQLのdatetime型はタイムゾーンを保持しないため、MySQL側でJSTで取り扱うと決めたら、クライアント側で都度適切にタイムゾーンを変換する必要がある。 Go言語でこれを適切に行うためには、DB接続時に github.com/go-sql-driver/mysql のDSNで以下のように…
背景 goproxy を使って HTTP Proxy server を作った その Proxy server は AWS Fargate で動作していてNLBでロードバランシングされている NLBはターゲットタイプがインスタンス以外だとRemote IPがNLBのものになってしまう Proxy server でクライアントのRe…