2014年5月18日日曜日

Golang Cafe #29

5/11(日)に開催された「Golang Cafe #29」に参加してきました。

参加者は主催の +Takashi Yokoyama さん、+Takanobu Hagino さん、ハムエッグさん、私の4名でした。

今回はdocker.goのデーモンモード処理をソースリーディングしました。

  if *flDaemon {
    // デーモンモード処理
  } else {
    // クライアントモード処理
  }

デーモンモードの処理の流れは、以下の通りです。

  1. 実行環境がLinux(amd64)であることをチェック
  2. 作業用のテンポラリーディレクトリーを作成
  3. テンポラリーディレクトリーを保有するengineを生成
  4. engineの登録
    1. engineに"initserver"と"init_networkdriver"のハンドラーを登録
    2. engineに"serveapi"のハンドラーを登録
  5. engineから取得したjob「initserver」をGoroutine起動
  6. engineから取得したjob「serveapi」を起動

engineとjobは構造体で、それぞれの役割は以下の通りです。

  • engine
    • Dockerのコア機能で、ジョブを実行してコンテナーを操作
  • job
    • Dockerエンジンで動作する基本ユニット
      • 例)プロセス実行、コンテナ生成、ダウンロード、http API 提供、など

他の参加者に比べて、ソースを追いかけている時に迷子になる場面が多かったのですが、私のVimmer力不足が原因でした。(もっと使いこなせば...T_T)

ちなみに、参加者が使用しているソースビューワーは、以下の通りです。

  • Takashi Yokoyama さん、Takanobu Hagino さん
    • Sublime Text
  • ハムエッグさん
    • Emacs
    • Vim + less

大量&多階層のソースを扱うなら「LiteIDE X」を使う手もありかも。

一ヶ月前にソースリーディング用としてダウンロードしたソースと、github上のソースとで、差分が生じ始めていました。活発なプロジェクトである証拠ですね。

0 件のコメント: