GREE Tech Talk 06 - Practical Goの聴講メモ。
コマンドラインフィルタリングツール
ls | peco
とか
使い方はわかりやすく! readmeにアニメgif mac -> homebrewにするとよい
termboxのうち、必要なやつだけをインターフェイス定義して、モック化できるようにする。
var screen Screen = Termbox()
とかしといて、差し込む -> 本来はDIすべき。
グローバルな差し込み -> 差し込み関数の戻り値で、ガード関数を返す
func setDummyScreen() (scr Screen, guard func()) {
guard := func() { /*...*/ }
return dummyScreen()
}
Perlと違って、あまり汎用ライブラリ化しなくていいのでは? たとえば・・・FSMほしい -> aho-chookアルゴリズムのライブラリあるけど、使い方にマッチしない -> コピペして型だけ書き換えた スクリプト言語とちがって、ライブラリだけ更新がありえない
godep -> 依存関係管理ツール。 コピーするようになった?
CGOがあるとムリ・・・。 os/userがひどい。home dirをとると、nil, nilで帰ってくる
Service Reliability Team / Middlewares
InfluxDB -> 時系列データの格納、集計 / Time Series Database for Application Monitoring -> Practical
- pprof, memstats, app
- expvar使ってる
- Grafanaでグラフ化
MQTT: IoT向けのPub/Subプロトコル。IBMが20年前につくった。ヘッダ4バイト。 QoSできる。SUBSCRIBEしててもPUBLISHできる。Will, Retain等 QoS0: 送る QoS1: PUBBACK QoS2: etc..
- WebSocket, TLS...
- http://tdoc.info/blog/2014/01/27/mqtt.html
VS Mosquitto (C実装)
Listener/Handler/MQTT Impls
Middlewareのフレームワークほしい
M: OS Thread P: CPU G: goroutine
forkするとダメ。runtime.GOMAXPROCSで死ぬ
事前割り当て大事
なぜロック? -> パフォーマンスの問題。チャネル使ったけど、遅かった デバッグ方法 -> panic駆動。。。
Paul Dix, CEO of InfluxDB
++general talks++
influxdb pprof unsafe