Skip to content

Instantly share code, notes, and snippets.

@t-yuki
Last active August 29, 2015 14:06
Show Gist options
  • Save t-yuki/479e4121bf543d2b3d12 to your computer and use it in GitHub Desktop.
Save t-yuki/479e4121bf543d2b3d12 to your computer and use it in GitHub Desktop.

GREE Tech Talk 06 - Practical Goの聴講メモ。

peco

コマンドラインフィルタリングツール ls | peco とか

インストールとか

使い方はわかりやすく! readmeにアニメgif mac -> homebrewにするとよい

CLIのテスト

termboxのうち、必要なやつだけをインターフェイス定義して、モック化できるようにする。 var screen Screen = Termbox() とかしといて、差し込む -> 本来はDIすべき。

グローバルな差し込み -> 差し込み関数の戻り値で、ガード関数を返す

func setDummyScreen() (scr Screen, guard func()) {
  guard := func() { /*...*/ }
  return dummyScreen()
}

ライブラリ

Perlと違って、あまり汎用ライブラリ化しなくていいのでは? たとえば・・・FSMほしい -> aho-chookアルゴリズムのライブラリあるけど、使い方にマッチしない -> コピペして型だけ書き換えた スクリプト言語とちがって、ライブラリだけ更新がありえない

Godep

godep -> 依存関係管理ツール。 コピーするようになった?

Cross-Compile

CGOがあるとムリ・・・。 os/userがひどい。home dirをとると、nil, nilで帰ってくる

GREE - Practical Go

Service Reliability Team / Middlewares

出会い

InfluxDB -> 時系列データの格納、集計 / Time Series Database for Application Monitoring -> Practical

Goのモニタリング

  • pprof, memstats, app
  • expvar使ってる
  • Grafanaでグラフ化

Middlewareのつくりかた

MQTT: IoT向けのPub/Subプロトコル。IBMが20年前につくった。ヘッダ4バイト。 QoSできる。SUBSCRIBEしててもPUBLISHできる。Will, Retain等 QoS0: 送る QoS1: PUBBACK QoS2: etc..

VS Mosquitto (C実装)

Listener/Handler/MQTT Impls

Middlewareのフレームワークほしい

M: OS Thread P: CPU G: goroutine

forkするとダメ。runtime.GOMAXPROCSで死ぬ

事前割り当て大事

なぜロック? -> パフォーマンスの問題。チャネル使ったけど、遅かった デバッグ方法 -> panic駆動。。。

InfluxDB

Paul Dix, CEO of InfluxDB

++general talks++

influxdb pprof unsafe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment