My External Storage

Oct 25, 2021 - 5 minute read - Comments - go

[Go] JSONを構造体にマッピングしつつ生データを保存するUnmarshalJSONの実装方法

GoではJSONを扱うときでもしっかり型定義に当てはめて利用するのが一般的だ。
しかし、外部から受け取ったJSONデータは型に当てはめつつ併せて生データも保存しておきたいときがある。
Defind Typeをうまく使うとシンプルなUnmarshalJSON(data []byte)メソッドを定義できる。

type Event struct {
    ID   string          `json:"id"`
    Type string          `json:"type"`
    Payload Payload      `json:"pyload"`
    // 構造体にマッピングする前のJSONを保存しておきたい
    Raw  json.RawMessage `json:"-"`
}

Sep 13, 2021 - 5 minute read - Comments - go

[Go] 前方互換性を保ちながらhttp.DefaultTransportからチューニングしたhttp.Transportをつくる

@dice_zuさんからhttp.DefaultTransportの正しい(?)コピーのやり方を教えてもらったのでメモしておく。
結論から言うとhttp.DefaultTransport変数にたいしてnet/http#Transport.Cloneメソッドを使うと良い。 これなら新しいGoのバージョンでhttp.Transportに新しいフィールドが追加されても問題ない。

https://pkg.go.dev/net/http#Transport.Clone

Aug 31, 2021 - 8 minute read - Comments - review

[書評] 早く正しく決める技術

毎日の中で迷いがあったり下した決断で不安になったりすることがあるので手にとった。
決断力の育て方だけでなく、直感力の重要性など多くの学びがある本だった。

Aug 30, 2021 - 3 minute read - Comments - aws

S3に保存されたAWS ALBのアクセスログをローカルでさっと確認するワンライナー

AWS ALBのログを漁って疎通確認をするときにちょっとラクするためのスニペットメモ。

$ aws s3 ls s3://${ALB_LOG_BUCKET}/AWSLogs/${ACCOUNT_ID}/elasticloadbalancing/ap-northeast-1/2021/08/30/ \
| awk '{print " s3://${ALB_LOG_BUCKET}/AWSLogs/${ACCOUNT_ID}/elasticloadbalancing/ap-northeast-1/2021/08/30/"$4}' \
| xargs -IS3URL aws s3 cp S3URL - | zcat