diff --git a/hello_trema/hello_trema.md b/hello_trema/hello_trema.md index 25afbf2..2ee1757 100644 --- a/hello_trema/hello_trema.md +++ b/hello_trema/hello_trema.md @@ -3,11 +3,11 @@ -## 演習: "Hello Trema!" を実行 ############################################# +## "Hello Trema!" を実行 ####################################################### -### 以下のコマンドを入力し、Trema を実行します : +### 以下のコマンドを入力し、Trema を起動してみよう: - $ cd Tutorials/Trema + $ cd trema-tutorial $ trema run hello-trema.rb Hello Trema! # Ctrl-C to quit @@ -16,29 +16,29 @@ ![overview](hello_trema.png) - -# 基本コマンド : `trema run` ############################################### + +# コントローラの起動 ########################################################### $ trema run [controller-file] -* 上記コマンドで、コントローラを実行します -* Ctrl-c で停止します -* `trema help run` でオプションリストを表示します +* コントローラを実行 +* Ctrl-c で停止 +* `trema help run` でオプションを表示 - -# 書いたコードをすぐ動かす ################################################################# + +# すぐに動かせる ############################################################### -* `trema run` コマンドで、書いたコントローラをすぐ実行できます -* 書いたコントローラを、即座にテストできます -* 短いサイクルで "コーディング、テスト、デバッグ" を繰り返す開発スタイルを実現できます +* `trema run` で、書いたコントローラをすぐ実行 +* 仮想ネットワークで動作をテスト +* "コーディング、テスト、デバッグ" の短いサイクル -# Trema 上での コントローラの書き方 ############################################# +# Trema でのコントローラの書き方 ############################################### - + # hello-trema.rb ############################################################### @@@ ruby @@ -48,45 +48,45 @@ end end -* シンプルですが、これだけで完全なコントローラのコードになっています -* (ただし Hello Trema! と表示するだけのものです) +* シンプル! これだけでコントローラが動く +* (ただし Hello Trema! と表示するだけ) -# コントローラクラス ############################################################# +# コントローラクラス ########################################################### @@@ ruby class HelloController < Controller # ... end -* すべてのコントローラは、クラスとして実装します (`class HelloController`) -* Trema クラスライブラリに用意されている `Controller` クラスのサブクラスとして実装します -* コントローラに必要なメソッドは、自動的に継承されます (flow-mod メッセージの送信等) +* すべてのコントローラはクラス (`class HelloController) +* Trema の `Controller` クラスを継承 +* コントローラに必要なメソッドも継承 (FlowMod の送信等) -# イベントハンドラ ############################################################### +# イベントハンドラ ############################################################# @@@ ruby class MyController < Controller def start # start-up event handler # ... end - - def packet_in dpid, msg # Packet-in received handler + + def packet_in(dpid, msg) # Packet-in received handler # ... end - + # ... end -* イベントドリブン形式で、コントローラを記述します -* 各イベントハンドラを、インスタンスメソッドとして実装します +* イベントドリブンにコントローラを記述 +* 各イベントハンドラをインスタンスメソッドとして実装 -# イベントハンドラ (Floodlight の場合) ################################################# +# イベントハンドラ (Floodlight の場合) ######################################### @@@ java // Packet-in handling in Floodlight @@ -94,16 +94,18 @@ switch (msg.getType()) { case PACKET_IN: return this.handlePacketIn(sw, ...); - ... + + // ... + private Command handlePacketIn(IOFSwitch sw, ...) { - ... + // ... -* Floodlight では、複雑なイベント振り分けを必要とします -* おまじないが多いため、コードの見通しが悪くなります +* Floodlight では複雑なイベント振り分けが必要 +* 「おまじない」が多く、コードの見通しが悪い -# イベントの振り分け ################################################################ +# イベントの振り分け ########################################################### @@@ ruby # Packet-in handling in Trema @@ -111,38 +113,35 @@ def start # automatically called at startup # ... end - - def packet_in dpid, msg # automatically caled when receiving a packet-in + + def packet_in(dpid, msg) # automatically caled when receiving a packet-in # ... end end -* Trema はイベントの振り分けにリフレクションを使っています -* そのため、複雑になりがちなディスパッチやハンドラ登録を行う必要はありません +* Trema はイベントの振り分けにリフレクションを使う +* 面倒なイベントディスパッチやハンドラの登録が不要 -# コーディングのための工夫 ####################################################### +# コーディングのための工夫 ##################################################### -* 簡潔なコードを書くための工夫 - * e.g., "handler name" == "message name" -* イベントディスパッチのような、おまじないを不要に -* 楽しいプログラミングのために、お約束事やつまらない部分を削減 +* "handler name" == "message name" +* イベントディスパッチのような「おまじない」を不要に +* お約束やつまらない部分を削減し, 楽しくプログラミング -# 短く書く ################################################################ +# 短く書こう ################################################################### * コードの長さと生産性の間には強い相関関係 - * e.g. Arc Programming Language [Paul Graham] + * e.g., Arc Programming Language [Paul Graham] * コードを短くすることで、 * お約束コードを書く時間を最小にする - * バグ混入の可能性を少なくする + * バグの可能性を少なくする -
- -## Trema は、実行時の効率性よりも -## プログラマーの生産性に重きをおいています +## Trema は性能よりも +## プログラマーの生産性を重視 @@ -155,6 +154,5 @@ end end -* ロギングレベル毎に用意されたシンプルな API (debug, info, etc) -* `trema ruby` で、Logging API を含む API リファレンスを表示 - +* ロギングレベルに応じたシンプルな API (debug, info, etc.) +* `trema ruby` で Logging API を含む API リファレンスを表示 diff --git a/intro/intro.md b/intro/intro.md index 46c5925..fc1c769 100644 --- a/intro/intro.md +++ b/intro/intro.md @@ -17,7 +17,7 @@ -# Trema とは ################################################################ +# Trema とは ################################################################### * Ruby 用 OpenFlow 開発フレームワーク * diff --git a/styles.css b/styles.css index 6fc557e..a806247 100644 --- a/styles.css +++ b/styles.css @@ -1,9 +1,13 @@ +.medium { + font-size: 90%; +} + .small { - font-size: 70%; + font-size: 80%; } .smaller { - font-size: 60%; + font-size: 70%; } .slide_info {