Go Documentation 輪読会 #13
前回: Go Documentation 輪読会 #12
Scrapboxへの参加リンク
こちら
開催概要
Slack
Gophers Slack の doc-reading-ja チャンネルを使います
Connpass: https://gospecreading.connpass.com/
Google Meet: ConnpassにURLを記載しています
資料
NobishiiさんJamboard: https://jamboard.google.com/d/1t5ATTRc5X8_zk5jw_C55B3d5me5BWKE4myohR2AtvpM/viewer?f=0
リトマステスト早見表
https://docs.google.com/presentation/d/1LpECC1KE7k5ntIkT_1DqcW66PUZCNfS1P8Qgoh4Fi78/edit#slide=id.g134fe0489da_0_0
タイムテーブル
19:00 ~ 参加準備 (Slackへの登録、Scrapboxへの登録、自己紹介を書く等)、雑談
19:10 ~ 軽めに自己紹介 (1人1分程度)
19:20 ~ 輪読開始
20:20 ~ 10分休憩
20:30 ~ 再開
21:30 終了
お知らせ
入門Go Documentation輪読会、10/19 (水)で決定しました! 🎉
自己紹介 (近況報告)
syumai
https://twitter.com/__syumai
https://github.com/syumai
普段はTS / Goを書いてる
magicpro
Go Spec 輪読会から参加
Go歴は2年
業務ではバックエンドエンジニアをやっています
近況
Google Code Review Guideline を読みました
https://google.github.io/eng-practices/review/
最近レビューのことで頭を悩ませてたので、得るものがたくさんありました
syumai > Code Review Commentsおすすめです
https://github.com/golang/go/wiki/CodeReviewComments
のびしー(nobishii) Twitter
最近読んでますリスト
nand2tetris parserを書き終わりました
sync.Condだいたい理解しました!
muroon
https://twitter.com/muroon01
Go歴4年
広告アプリでGoを書いてます
最近こんなものを書きました
https://tech.speee.jp/entry/2022/07/12/134605
https://medium.com/@muroon/the-reason-why-zap-and-zerolog-make-it-zero-allocation-3ee8f69f660
CompareAndSwap
https://github.com/redis/redis/blob/c4b4b6c06b0562740d214d0df467b2ba40396ffc/deps/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h#L126
https://github.com/cockroachdb/cockroach/blob/efad149fa653df762975b483176211209814be70/pkg/base/cluster_id.go#L58
Seiya Umemoto
https://twitter.com/seiyasm18
https://github.com/seiya303
Go歴半年
元々はPythonを4年近く書いていました
機械学習(Keras等々)、スクレイピング(Scrapy等々)、ウェブアプリ(Django, Flask等々)
契約書管理のウェブサービスでGoを書いています
最近社内で「実用Go言語」の輪読会を主催して無事完了しました
最近はTSでVue.jsを書き始めました
おすすめ本
https://budougumi0617.github.io/2022/07/22/release_go_web_application_book/
今回の範囲:
Updating the Go Memory Model の Incorrect compilation から
無効な最適化の例
ループが終わることを仮定して、ループの前後のコードの順序を入れ替えてはいけない例
https://play.golang.org/p/Ek9M3N2LYvb
条件のないループでなくても、無限に終わらないことがある
関数の実行前後のコードの順序を入れ替えてはいけない例
by Nobishiiさん https://go.dev/play/p/HRG76qAlXti
コードの順序を入れ替えると、happens before edgeが張られる順序が変わってしまうケースがある
後に使われることがわかっているメモリ領域を、実際の書き込み前に一時的な領域として使用してはいけない例
*p = i + *p/2 を *p /= 2; *p += i に書き換える例
https://play.golang.org/p/FX5ksJfN7gu
結果は同じになるが、競合があった場合、書き換え後のプログラムでは、2, 3 に加えて 1も読み取ることが出来てしまう
競合のあるプログラムの意味論が変わってしまう
次回: The Go Memory Model の Memory Model から