一日目とはうってかわって、二日目は晴天!
2日目のスケジュールはこちら。
Schedule - RubyKaigi 2015
今日もノベルティは盛りだくさん
初日と若干ラインナップの変わっているノベルティコーナー。
SとXSのTシャツは品切れ。
GitHubステッカーは補充されて30分足らずでなくなってしまう大人気っぷりだったんですが、弊社エンジニアはちゃっかりゲットしていました。
Linux loves Ruby. Ruby Loves Linux - How to debug your linux box
Kosaki Morihito氏によるlinuxのデバックツールの紹介でした。
Ftrace, Perf tools, System Tapの使い所を説明いただきました。
その中でもFtraceについてさっそく触ってみました。
コンテキストスイッチの切り替えが走るタイミングでログを出力します。
$ sudo mount -t debugfs none /sys/kernel/debug $ sudo echo 1 > /sys/kernel/debug/events/sched/sched_switch/enable $ sudo echo 1 > /sys/kernel/debug/tracing/tracing_on $ cat /sys/kernel/debug/trace
中身は下記のような内容で、切り替え時のログが出力されています。
# tracer: nop # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | <idle>-0 [000] 7184920.739899: sched_switch: prev_comm=swapper prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=mysqld next_pid=1179 next_prio=120 mysqld-1179 [000] 7184920.741425: sched_switch: prev_comm=mysqld prev_pid=1179 prev_prio=120 prev_state=S ==> next_comm=swapper next_pid=0 next_prio=120
また、traceの量ですが、
$ cat /sys/kernel/debug/trace | wc -l 1023 $ cat /sys/kernel/debug/trace | wc -l 1054 $ cat /sys/kernel/debug/trace | wc -l 1083
と増え続けましたが、Kosakiさんのおっしゃるとおり、ある一定以上は記録されないようになっていました。(とはいえずっと出力されるので閉じ忘れにご注意を!)
$ cat /sys/kernel/debug/trace | wc -l 37424 $ cat /sys/kernel/debug/trace | wc -l 37439 $ cat /sys/kernel/debug/trace | wc -l 37408
キャッチできるイベントも1500以上あり、取りたいイベントはほとんどとれるそうです。
Charming Robots
juliancheal (Julian Cheal)による
Artoo - Ruby framework for robotics, physical computing, and the Internet of Thingsを使った制御まわりの話はデモが多くて楽しめました。
- ルパン3世のテーマに合わせてLEDが光…らない(音小さすぎた)→会場の手拍子で成功
- ドローンが最前列に突っ込む、壁に激突
- DDRのマットでドローンを制御。音楽に合わせて踊るJulianに合わせて踊るドローン
等々、ハプニングも少々ありましたが、Rubyのリアルワールドへの進出を期待させるセッションでした。。
The history of testing framework in Ruby
さあ、次は歴史の授業です。
Kohei SutouによるRubyのテストの歴史の発表でした。
rubyの進化と共にテストも進化してきたことがよくわかるセッションでした。
お昼
土曜の築地で食事処を探してはいけない
師走ですね…
お昼頃から人が増え、つめてつめて状態に
運営の楽しんでる感が伝わってきます。
テトリスみたいにつめていってね!
ユーモラスな詰めてお座りください #rubykaigi pic.twitter.com/s383ISvle0
— ぷりんたい&.alone? (@spacepro_be) 2015, 12月 12
The worst Ruby codes I've seen in my life
「俺が見てきたRubyのクソコードたちを晒す」
- WOP = Workaround-oriented programming - Uncyclopedia - Wikia
- 語順が違うけど同じ機能(っぽい)メソッド
- 巨大すぎるクラス
何度見てもひどい
[code lang="ruby"] def check_new check_existing end [/code]
The future of Ruby is in motion!
- WatchOSやtvOSにも対応
- ライブコーディングによって変わる寿司の挙動を眺める不思議なセッション。
- 最後は通販番組のようなノリに…
気になったらとりあえずダウンロード!ということらしいです。 http://www.rubymotion.com/jp/download/
Rhebok
High performance Rack Handler
@kazeburo
Unicorn 1.5-2.0倍早いRackの説明でした
ホットデプロイの仕組みやUnicornとのアーキテクチャ、技術的な差分の説明でしたが
参考になったのがLinuxにおけるTCP周りの仕組みでした。
TCP_NODELAY
TCP送信はOS側でNagleアルゴリズムによって小さな送信パケットをまとめ一度にすべてのパケットを送信している
それにしたがってレイテンシに影響がでる。
TCP_NODELAYオプションをつけることによってバッファリングせずに送信するためレイテンシ少なくすることができるが
送信パケットが多くなりすぎるため、独自にRhebokで送信するデータをまとめて送る仕組みが導入されていた
この仕組みってKVSなどのレイテンシが少なくパケットのやりとりが多いがアプリケーションやミドルウェアを作る仕組みとしては基礎的なことなんだと勉強になりました!
以上、二日目レポートでした。
残るは日曜日!