Go
カンファレンス・勉強会メモ
More than 3 years have passed since last update.

Official

Generative programming in Go. - monochromegane

Debugging Go Code with GDB - kaneshin

Gore: A Tale of Go REPL - motemen

Go言語でコマンドラインツールをつくるときに僕の語ること - deeeet

自己完結型の形態素解析器をgoで作った話 - ikawaha

Gaurun〜A general push notification server in Go〜 - cubicdaiya

  • slide
  • GourunとはGo製push通知基盤システム
  • 以前はプッシュ通知はジョブキュー(Q4M+PHP)
  • 現在はNginx + Gourun(APIベース、JSON)
  • チャネルのサイズを静的固定(チャネル数超えるとブロック)
  • 監視はZabbix。API(stat/go、stat/app)でメモリ、GC、 ゴルーチン数、チャネル数を取得する。
  • ゴルーチンがメモリリークしたり、チャネルのブロッキングしたりするので、監視して注意する。外部ライブラリが悪さをしていたので、そのライブラリをforkして直して使っている。
  • golang-stats-api-handlerそのまま出力している。

Goと電子工作とロボット - たけいひでゆき

ピクシブ社内広告サーバーでのGoの開発・運用 - catatsuy

  • slide
  • Go製広告サーバーの紹介
  • Nginx -> Circus -> App(Go) -> fluentd -> Admin(MySQL)
  • キャッシュ機構やコネクションの保持とか考える事が減るのでNginxで受ける。
  • GoでTCPをlistenして起動したサーバーに対してproxy_passすると遅かったので、Unixドメインソケットで受けたかった。
  • Circus
    • Python製のプロセス管理ツール。Circus自体がソケットファイルを持って、アプリケーションはファイルディスクリプタをlistenさせて起動してくれる。
  • UNIXドメインソケット
    • 同一マシンなら親子関係がなくても可能なプロセス間通信。
    • memcachedにも利用している
  • profiling
  • testing.B
  • golang-stats-api-handler -> muninで可視化。
  • nginxから社内から見れないように
  • Goプロセス監視はCircus、Nagios。
  • stopwatch
  • もっと速く・・・
    • CPU throttling (最大周波数で動くように)。/etc/default/cpifrequtils を編集。広告サーバーとDBサーバーでは有効だった。
  • Goのログ
    • 標準出力してCircusに任せていたが、ピーク時にCircusが負荷がかかるので、ログローテートを自前で実装した。(USR1受け取ったら新しくファイルを開いて、pidファイルを作る)

GOで基盤システムつくってる話 - サイバーエージェント 西尾様

  • slide
  • ソシャゲのRealtime Messaging Platformで何故Goを採用したかの話
  • コード
    • 読みやすい
    • 機能/担当者間のレビューや相互理解が容易
    • フォーマットやコード規定が明確
  • 学習コスト
    • A Tour of Go
    • Effective Go
    • 60-70%は自習でなんとかなる
    • 30%がGOらしく書く事
  • 開発環境がgomt,golint,go toolvet,godocとか標準で豊富
  • デプロイが楽
  • テストが楽
  • ベンチマークが楽
  • プロファイルが楽
  • パッケージ管理に求める事
    • versioningが必須
    • vendoringは?
  • パッケージ管理の選択技
  • パーケージ構成
    • レイヤー、機能でパッケージを分離
    • ルートパッケージから2階層以内
  • Goぽいコードを近づける為に
    • まずは標準パーケージ見る
  • ライブラリやフレームワークの選定
  • genericsないのどうしてる?
    • interface + type check{}
    • reflect使わない

LT

AppEngine for Go Unittest - sinmetal

slide

pp and reflect - k0kubun

slide

Goのパッケージ構成で試行錯誤してみた話 - fkm

slide

Go製の拡張可能なslackbot - kyokomi

slide