2023/12/2 Go Conference mini 2023 Winter IN KYOTO #kyotogo
https://gyazo.com/d7abf3ca8a8492809b43e001642a71a3
Go Conference mini 2023 Winter IN KYOTO - connpass
Your site
懇親会: Go Conference mini 2023 Winter IN KYOTO - connpass
https://www.youtube.com/watch?v=Dw8ELeFKqLY
Opening
Deep dive into log/slog package Kanata Miyahana
資料 : Deep dive into log/slog package - Google スライド
Goプログラムがビルドされるまで(コンパイラーの仕組みを探る) Richard Rowland
資料 : Goプログラムがビルドされるまで (コンパイラーの仕組みを探る) #Go - Qiita
Goにおけるcall graphを用いた大規模コードベースの影響調査 Yoshiki Fujikane
資料 : GoにおけるCall Graphを用いた 大規模コードベースの影響調査 - Speaker Deck
Parsing case study in Go Ken'ichirou Oyama
資料 : Parsing case study in Go / Go Conference mini 2023 Winter IN KYOTO - Speaker Deck
日時処理の新スタンダード: Synchro によるタイムゾーン安全、楽々開発 Kei Kamikawa
資料 : 日時処理の新スタンダード: Synchro によるタイムゾーン安全、楽々開発 - Speaker Deck
Go Conference mini 2023 Winter IN KYOTO に参加しました
Code-Hex/synchro: 🕰️ Synchro: Timezone-typesafe date and time framework for Go. 🌟 Star to support our work!
timezone
Go1.22で導入予定だったzeroというbuilt-inについての紹介 Takuma Shibuya
資料 : Go 1.22で追加予定 だった zeroの紹介 Go Conference mini - Google スライド
Go Getでのchecksum不一致に遭遇した話とその対応 Natsumi Kojima
資料 : Go Getでのchecksum不一致に遭遇した話とその対応 - Speaker Deck
Go Conference mini 2023 Winter IN KYOTOでLTしてきました! - ANDPAD Tech Blog
CUE+Goで安全かつ簡単に設定ファイルを自動生成してみた Naoki Kuroda
資料 : CUE+Goで安全かつ簡単に設定ファイルを自動生成してみた - Speaker Deck
CUE (configure unify execute)
context.WithoutCancelについて語る Momo Ito
Golangを使ったDB用負荷テストツールの開発 Genki Sugawara
資料 : Golangを使ったDB用負荷テストツールの開発 | ドクセル
winebarrel/qube: qube is a DB load testing tool.
會場着ne-sachirou.icon
インターフェースのラッパーを作る際の落とし穴 by mazrean
資料 : インターフェースのラッパーを 作る際の落とし穴 / Go Conference mini 2023 - Speaker Deck
mazrean/iwrapper: A tool to assist in creating wrappers for Go interfaces.
生成AIによる静的解析ツールの自動生成 by tenntenn
資料 : 生成AIによる 静的解析ツールの自動生成 - Google スライド
靜的解析
x/tools/go/analysis package
go vet
analysis package
custom analyzers
linter 以外も作れる樣に # 61345
skeletonで始めるGoの静的解析 | メルカリエンジニアリング
gostaticanalysis/skeleton: Tool: skeleton is create skeleton codes for golang.org/x/tools/go/analysis.
ChatGPT
prompt engineering
巨大 PDF (靜的解析の解說書) を⻝はせられるのか
few-shot prompt
穴埋め prompt
// TODO と書いて埋めさせる
京都のおすすめの御土產も敎へてくれる (?)
sashabaranov/go-openai: OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for Go
The Future of encoding/json by iamshunta
資料 : The Future of JSON - Speaker Deck
encoding/json
since 2008
io.Reader から Unmarshal できない
[]byte を返す。memory alocation が必要
streaming できない
RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format 日本語訳とのズレ
invalid な UTF-8
key の重複
reflection による制限
case insensitive
encoding/json/v2
encoding/json/v2 · golang/go · Discussion #63397
https://gyazo.com/1cf1f04cd361869a509edf06290e3082
jsontext package + json package
struct tag
omitzero
nocase
inline
unknown
format
time.Time 等
opts ...Options
Go の functional option pattern
続) TinyGo で作る自作キーボードの世界 by sago35
資料 : 続) TinyGo で作る自作キーボードの世界 - Google スライド
TinyGo で作る自作キーボードの世界 - Google スライド
Go Conference mini 2023 Winter IN KYOTO に参加しました - sago35の日記
TinyGo
Amazon.co.jp: 基礎から学ぶ TinyGoの組込み開発 : 高砂正哲: 本
sago35/tinygo-keyboard: USB HID keyboard firmware for tinygo
layer 機能
Fn key の類似
keyboard 配列
key map の動的變更・保存
VIA
Remap
Vial
Mark - Highlight several words in different colors simultaneously. (#1238 continued) : vim online
触って理解するGoコンパイラの最適化 市川悠人
資料 : 触って理解する Go コンパイラ最適化 go conference mini 2023 - Speaker Deck
最適化
コンパイラ最適化 - Wikipedia
zero size (struct{}) の memory allocation 囘避
cast 最適化 m[string(b)]
zero clear 最適化
for i := range a { a[i] = 0 }。memclr 函數が使はれる
今後は clear 函數を使へ
inline 展開
インライン展開 - Wikipedia
escape 解析
エスケープ解析 - Wikipedia
heap に escape (alloc) | stack に積まれる
mark scan 囘避
GoのGC (garbage collector)について理解する - Speaker Deck
Ghidra
Ghidra - Wikipedia
Ghidra
NationalSecurityAgency/ghidra: Ghidra is a software reverse engineering (SRE) framework
開発チーム横断タスクフォース「Goサブ会」の運用事例と今後の展望 by stefafafan
資料 : 開発チーム横断タスクフォース 「Goサブ会」の 運用事例と今後の展望 - Speaker Deck
社内でオーナーとして運営しているチーム横断の「Goサブ会」について登壇した #kyotogo - stefafafan の fa は3つです
hatena/godash: Minimal wrapper of samber/lo
プロダクションで使うGo Pluginの利便性とパフォーマンス性 Tomohisa Oda
資料 : プロダクションで使うGo Pluginの利便性とパフォーマンス性 / Simplicity and Performance of Go plugin for Production - Speaker Deck
knqyf263/go-plugin
knqyf263/go-plugin: Go Plugin System over WebAssembly
至高のGoプラグイン用ツールを作った - knqyf263's blog
Revolutionising Inheritance with Generics: A Fresh Approach in Go Gaurav Suryawanshi
資料 : Revolutionising Inheritance with Generics-GoConMini - Google スライド
net/http から net.Conn を掘り起こす Hiroya Onoe
資料 : net/httpからnet.Connを掘り起こす - Speaker Deck
GoとテストとインプロセスDB Daisuke Makiuchi
資料 : GoとテストとインプロセスDB - Speaker Deck
ブログのリアクションから始めるGoのパフォーマンス分析入門 Takayuki Miyahara
資料 : ブログのリアクションから始めるGoのパフォーマンス分析入門 - Speaker Deck
cockroachdb/errors: Go error library with error portability over the network
GoのProtocプラグインを活用した効率的なgRPC負荷試験戦略 Shota Iwami
資料 : GoのProtocプラグインを活用した効率的な負荷試験戦略 / Efficient Load Testing Strategies Utilizing the Go Protoc Plugin - Speaker Deck
lyft/protoc-gen-star: protoc plugin library for efficient proto-based code generation
作ってよかったgraceful shutdownライブラリne-sachirou.icon
資料 : 2023/12/2 作ってよかったgraceful shutdownライブラリ #kyotogo
Xユーザーのうたがわききさん: 「graceful #kyotogo」 / X
XユーザーのKyoto.goさん: 「Closing前のLT6人目はInoue Sachirouさんで「作ってよかったgraceful shutdownライブラリ」です! #kyotogo https://t.co/N61SfJTYPo」 / X
Xユーザーのk1LoWさん: 「正式名称が「会」か「會」かで印象が違う #kyotogo」 / X
Xユーザーのksdevさん: 「漢字の癖が強いんじゃ #kyotogo」 / X
Xユーザーのsyumaiさん: 「舊字體の資料、癖が強い #kyotogo」 / X
Xユーザーのチェシャ猫さん: 「(なんで全部舊字體なんだ) #kyotogo」 / X
XユーザーのShohei Gopher Z&Ninjaさん: 「旧かな使いまでwww #kyotogo」 / X
Xユーザーのうたがわききさん: 「「君のgraceful shutdownは間違っている」みたいな記事が社内ドキュメントにあって毎回読みにいっていた #kyotogo」 / X
Xユーザーのねことまと🐈🍅🍲さん: 「3、40行減ってる。地味に助かる #kyotogo」 / X
Xユーザーのあけのさん: 「コピペしてた気がするなぁ… #kyotogo」 / X
Xユーザーのsyumaiさん: 「絶対読むリストに入れました! #kyotogo https://t.co/W3isZ7hKn6」 / X
Xユーザーのk1LoWさん: 「ライブラリで切り出して共通・横断の議論の場にするの頭いい。 最近社内でもP山さんがコードで逆コンウェイ戦略をしているなあ #kyotogo」 / X
Xユーザーのshinshinさん: 「読んでみる。https://t.co/nLo4pasOG7 #kyotogo」 / X
Closing
/kyotogo/Go Conference mini 2023
12/2 に開催したGo Conference mini 2023 Winter IN KYOTOの #kyotogo 枠でオフライン運営スタッフデビューしました - おうさまのみみはロバのみみ
Goクイズ - Google スライド
Go Conference mini 2023 Winter in KYOTOに参加しました#解説
1
code:double defer sandwich.go
// https://go.dev/play/p/FF7aqxX3XIG
package main
import (
"fmt"
"runtime"
)
func main() {
var (
normalReturn bool
recovered bool
panicValue any
)
defer func() {
switch {
case normalReturn:
fmt.Println("normal return")
case recovered:
fmt.Println("recovered", panicValue)
default:
fmt.Println("runtime.Goexit")
}
}()
func() {
defer func() {
panicValue = recover()
}()
f()
normalReturn = true
}()
if !normalReturn {
recovered = true
}
}
func f() {
runtime.Goexit()
}
2
code:go
package main
import (
"encoding/json"
"os"
)
type SecureString struct{ s string }
type T struct {
Email SecureString json:"email,omitempty"
}
// エラーは発生しない前提
func main() { json.NewEncoder(os.Stdout).Encode(T{}) }
{"email":{}}
4
code:go
package main
type T struct {
_ 0func()
N int
}
func main() {
t := T{N: 100}
println(t == t)
}
./prog.go:10:10: invalid operation: t == t (struct containing [0]func() cannot be compared)
/utgwkk-pub/Go Conference mini 2023 Kyoto
2023/12/2 #kyotogo #event_報