rubykaigi2008行ってきたのでまとめ
1st day
寝坊したので午後から参加。
Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば (増原英彦)
- 情報系学科の人気が低い昨今。
- 東大では昨年からrubyでコンピュータサイエンスを教えるようになった。
- 初心者向けのはまりどころを解説。空白スペースが入ってるとか、"が大文字とか。
成功するRuby教育のプラクティス (吉田裕美)
- 教育ではペアプロを使うと効果的になる。
- 会話で活気が生まれる、スキルの差が収拾できる、短時間で終わる
- テストコードを与えてそれを解くコードを作成させる。
- ゲーム感覚で楽しい、TDDの基礎、短時間で終わる
RSpecによるRailsアプリケーションのBDD、事例報告 (Yugui(園田裕貴))
- RSpecを用いて1ヶ月でサイト構築。
- まじめにSpec書くとコードの7割がテストコードになる。
- テストコードを書くポイント
- モデルは必須
- コントローラはデータの入出力のある箇所
- viewはインタラクションとして必須の箇所
- 要はレイヤー間のコミュニケーションがあるところにはテストを書く
Q.7割がテストコードと聞くと、上の人がそんなことにリソース使ってるんじゃなくて実装コード書けと言われそうだが?
A.「おまえは何も分かってないんだから黙ってろ」
スライド
http://www.slideshare.net/yugui/rspecrailsbdd/
LT
- ODEのプレゼンすばらしすぎる
- Enumerableのeach_slice、each_consを使え
(1..10).each_slice(3) {|a| p a} => [1, 2, 3] [4, 5, 6] [7, 8, 9] [10] (1..10).each_cons(3) {|a| p a} => [1, 2, 3] [2, 3, 4] [3, 4, 5] [4, 5, 6] [5, 6, 7] [6, 7, 8] [7, 8, 9] [8, 9, 10]
- named_scopeを使え!sqlの組み立てがすっきりする
- わっふるわっふる
2nd day
matzを説得する方法 (田中哲)
- 説得材料はちゃんと集めましょう。でないと無視される。
日本Rubyのリファレンスマニュアル2008・初夏 (青木峰郎)
- 年末には1.8.7対応のドキュメントがリリースできそう
Developing and scaling iKnow! (Zev Blut)
- 20万ユーザ。80万リクエスト/day、82 controller、1000を超えるview、migrationは474。
- nginx、mongrel、mysqlを使用。mysqlは早いディスク、8CPU、メモリ10Gを用いた。
- memcacheを今後使う予定。
- 負荷が高いところ
- ARのlengthは負荷を超あげてしまうのでsizeを使おう
- openidはOPが遅くなっている場合F5連打されてコネクションを使い切ってしまう。timeoutを適切に設定すべき
- ファイルフォーマットのext3は1ディレクトリに31997ファイルまでしか作れないので、キャッシュに使う場合は注意しよう
- CIツールにオープンソースのkwalaを使っている。
Inside Tabelog's Backend (京和崇行)
- 食べログの中の人。
- 7000万PV/月。サーバ13台。50request/sec、rails1.2
- Apache+mod_proxy_balancer+mongrel
- mongrelを放っておくとメモリ食って落ちるのでcronで2〜3日ごとに再起動ソリューション
- DB負荷対策にacts_as_readonlyableを使用。
- mugic_multi_connectionはテーブルの数だけコネクション張りまくってしまう。テーブルが150個くらいになると死ねる。
- acts_as_readonlyableは設置が楽
- routesのパフォーマンスが悪いと聞いたので、mod_rewriteで対応。
- memcachedのヒット率80%
- mysqlのクエリキャッシュのヒット率50%
- 負荷が高いため、includeは使わない、pagenateが遅い
- 現在sessionをDBに格納しているがmemcacheに切り替える予定。