basebank / gophers-code-reading-party

Gophers Code Reading Party records
18 stars 1 forks source link

20230126 Gophers Code Reading Party #40

Closed budougumi0617 closed 1 year ago

budougumi0617 commented 1 year ago

15:00~16:00 @ Zoom, BASE BANK, Inc.

参加者

お題

ネタ

ネタがなかったら proposal: review meeting minutes をみてみよう!
https://github.com/golang/go/issues/33502

budougumi0617 commented 1 year ago

2/21 Go 1.20 リリースパーティ https://gocon.connpass.com/event/273096

枠はもっと増やす調整中です

budougumi0617 commented 1 year ago

3/9 Go言語プログラミングエッセンス https://www.amazon.co.jp/dp/4297134195

budougumi0617 commented 1 year ago

FutureさんのGo 1.20リリース連載 https://future-architect.github.io/articles/20230123a/

budougumi0617 commented 1 year ago

Share your feedback about developing with Go https://go.dev/blog/survey2023-q1

budougumi0617 commented 1 year ago

Software Design (ソフトウェアデザイン) 2023年2月号 https://www.amazon.co.jp/dp/B0BRYWJTKW

なるほど納得Go言語

Go at GoogleとかWhy Go?的な話だった。知らないのもあったしすごい

budougumi0617 commented 1 year ago

ちょっと今回は少なめかもしれない

budougumi0617 commented 1 year ago

https://twitter.com/__syumai/status/1618226822763925506

参加したかったなあ

budougumi0617 commented 1 year ago

こちらです〜

https://zoom.us/j/92179216825?pwd=Q3hjUlB6bkZtZUhZbzVhSk5Cc2lYQT09

budougumi0617 commented 1 year ago

Go Conferenceのプロポーザルは今週末締め切り https://sessionize.com/go-conference-2023-online/

budougumi0617 commented 1 year ago

Go1.20でサポート予定の統合テスト用カバレッジプロファイリングを触る https://zenn.dev/moneyforward/articles/25469f8d60621b

budougumi0617 commented 1 year ago

https://github.com/toshi0607/Go-FAQ-Japanese-Edition

budougumi0617 commented 1 year ago

https://github.com/DataDog/datadog-lambda-go https://pkg.go.dev/github.com/DataDog/datadog-lambda-go

budougumi0617 commented 1 year ago

これでLambdaがコールドスタートしたかわかるのか、ハック感ある。

https://github.com/DataDog/datadog-lambda-go/blob/1cdcde5b6f3e4c2d3d237e380fab7f6d9f1c1294/internal/wrapper/wrap_handler.go#L44-L70

// WrapHandlerWithListeners wraps a lambda handler, and calls listeners before and after every invocation.
func WrapHandlerWithListeners(handler interface{}, listeners ...HandlerListener) interface{} {
    err := validateHandler(handler)
    if err != nil {
        // This wasn't a valid handler function, pass back to AWS SDK to let it handle the error.
        logger.Error(fmt.Errorf("handler function was in format ddlambda doesn't recognize: %v", err))
        return handler
    }
    coldStart := true

    // Return custom handler, to be called once per invocation
    return func(ctx context.Context, msg json.RawMessage) (interface{}, error) {
        //nolint
        ctx = context.WithValue(ctx, "cold_start", coldStart)
        for _, listener := range listeners {
            ctx = listener.HandlerStarted(ctx, msg)
        }
        CurrentContext = ctx
        result, err := callHandler(ctx, msg, handler)
        for _, listener := range listeners {
            ctx = context.WithValue(ctx, extension.DdLambdaResponse, result)
            listener.HandlerFinished(ctx, err)
        }
        coldStart = false
        CurrentContext = nil
        return result, err
    }
}
budougumi0617 commented 1 year ago

遅延評価している。clientは最初に初期化するけれど、データが必要になるのはユーザーが書いた関数の実行後だから。 https://github.com/DataDog/datadog-lambda-go/blob/ff5fffbace038f9a2017e70ad7ce5c09ff601b9e/internal/metrics/api.go#L121-L134

func (cl *APIClient) decryptAPIKey(decrypter Decrypter, kmsAPIKey string) <-chan string {

    ch := make(chan string)

    go func() {
        result, err := decrypter.Decrypt(kmsAPIKey)
        if err != nil {
            logger.Error(fmt.Errorf("Couldn't decrypt api kms key %s", err))
        }
        ch <- result
        close(ch)
    }()
    return ch
}