RubyKaigi 2015 の 3 日目に参加したので、そのメモです。
Ruby Committers vs the World
- matz が本日は来ていないので、司会が個人的に matz に質問していた話
- Soft Typing の進捗どうですか
- 近年
RUBY_VERSION
の bump しかコミットがないですがどうですか - The commits of the Year (注目のコミット)
- check incompatible libruby r50412
- rvm がインストール済みの gem を引き連れて ruby のバージョンをあげる機能 (migrate) があるが、それが問題を引き起こすので shared library の gem を入れ直さないといけない
- rdoc/rubygems backports (hsbt)
- コミットログにダメ出し
-
explicit_bzero(3)
(kosaki) - 何かあった時に情報を盗みにくくするためのゼロクリアが最適化で消されることがある
- 最適化で消されないゼロクリア
- code size diet (normal)
- 自分で普通という人は普通じゃない
- optimization of
newobj_of()
(Kazuho Oku さん) r52072 - frozen string literal の件で炎上した影響
- 雑なツイートをしてしまったばかりにrubyを高速化するはめになった俺たちは!
- https://twitter.com/kazuho/status/675858887803727872
- The new committers
- odaira さん
- AIX, z/Linux など IBM 関連
- sho-h さん
- rdoc とるりまの質を高めたい
- gogotanaka さん
- cmath.rb のメンテナ
- yuki24 さん
-
did_you_mean
gem - sonots さん
- logger のメンテナを nahi さんから引き継いだ
- yui-knk さん
- Rails のテストで壊れた時に trunk での変更が原因だったら、足りないテストを足したり直したり
- AMA (Ask Me Anything)
- rubyにコントリビュートしたいと思う人に勉強しておくといいよ、と思うものを一つだけあげるとしたら何でしょうか!
- hsbt さんの発表資料を見る
- akr さんの本を参考にする (APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus))
- Python使えって言われるんですがどうしたらいいですか?
- 今後、数値計算分野で Python を食える日が来るでしょうか
- Python を使って欲しいものを Ruby に持ってくる活動を続けていく
- Matz以外のコミッタが並行・並列性の提供にどう考えているか聞きたいです!
- 怒り駆動開発に炎上駆動開発!コミッターが語るRubyの1年と未来。Ruby Committers vs the World #rubykaigi #rubykaigiA - Togetterまとめ
Writing web application in Ruby
- Ubiregi
- React.js
- gohra
- Hyalite
- Opal
- Symbol がなくて String と同じ扱い
-
Kernel#proc
の引数なしが使えないので、引数リストに&block
をつけて受け取る必要がある - それ以外は Ruby として問題なくかけた
- React.js と Virtual DOM
- opal-browser
- JSX -
Hyalite::Component::ShortHand
- Example: TodoMVC
- このスライド自体も Hyalite のサンプル (twitter ではここまで rabbit だと思っていた人が多数)
- TodoMVC の例の説明
- Ruby-ish implementation
- isomorphic
- スライド: http://rubykaigi.youchan.org/
- RubyでWebアプリ!? ReactjsぽいことができるHyaliteを使えばMatzが追いかけてくるスライドもすぐ作れるよ #rubykaigi #rubykaigiB - Togetterまとめ
Lunch on your own
今日も築地の方に行っていました。
Refinements - the Worst Feature You Ever Loved
- monkey patch の例
- refinements の例
- module の中で
- top level で
- eval の中で
- security risks
- performance issues
- confusing corner case
- dynamically scoped refinements の利点と欠点
- refinements today
- 現状は lexical scope
- the three use cases again
- refinements today の欠点と利点
- a deep problem
- Ruby2.0で導入されたRefinementsという機能のメリットとリスクについて #rubykaigi #rubykaigiB - Togetterまとめ
Discussion on Thread between version 1.8.6 and 2.2.3
- Asakusa.rb meetup after RubyKaigi 2015
- https://jishin.net/
- 100スレッド*100プロセス
Thread#status
- Cases of threads got stuck
- Case 1
- 2.2.3 の方が CPU usage は増えていた
- 実行回数は変わっていなかった
- Case 2
- 例外のメモリ使用量は 2.2.3 で減っていた
- timeout で例外処理があると Case 1 よりメモリ使用量が多い
- conclusion: (thread is) too complicated to understand
- 質疑応答
- マルチスレッドは IO 多重化などを想定していて、処理が回っているものを多重化しているものはあまり想定していなかったという話など
- スレッドをいっぱい立ててみた時のお話。10000スレッドでRubyはどうなるか? #rubykaigi #rubykaigiB - Togetterまとめ
Plugin-based software design with Ruby and RubyGems
- plugin の例として Firefox Add-on など
- How did I design plugin architecture?
- Plugin Architecture Design Patterns
- traditional
- Dependency Injection
- Dependency Injection + Plugin loader
- Plugin Architecture of Fluentd
- Plugin Architecture of Embulk
- embulk の demo
- embulk-filter-kuromoji
- jar ファイルの頭にシェルスクリプトと bat ファイルを埋め込む話
- Pitfalls & Challenges
- プラグインベースのソフトウェアとは?開発とテストを容易にするデザインパターン #rubykaigi #rubykaigiA - Togetterまとめ
Afternoon Break
スピーカーやコミッターのサインを集めているボードに書いてきました。 Keynote が A ホールのみなので、この後はずっと A ホールにいることにしました。
Request and Response
- HTTP2
- 利点
- バイナリ
- 多重化
- ヘッダーを圧縮
- SSL 使用
- サーバープッシュ
- Google Chrome だと chrome://net-internals/#spdy で確認できる
- Firefox は x-firefox-spdy ヘッダが付いている
- Rack
- Adapter pattern で依存の爆発を解決した
- Rack Middleware
- Rails アプリでの例
- Web Server parses the Request
-
Rails::Application
を継承した YourApp -
Rack::SendFile
,ActionDispatch::Static
, …,Router
- Rack 山
- 長すぎるし複雑
- Rack API の問題
- ストリーム
- HTTP2 のサーバーの例
- 質疑応答
- https://github.com/tenderlove/ds9 はなぜ ds9 という名前なのか
- スタートレック
- nghttp2 の ng は next generation
- (スタートレックをよく知らないのでよくわからず)
- どのくらい発表練習した?
- 翻訳 2 週間、練習 5 時間
- サーバープッシュの設定はどこに?
- view helper で自動
- ソースコードを読んだら IPv6 に対応していないように見えたが IPv6 対応の方針は? https://twitter.com/takano32/status/675942535211171841
- わからない
- パッチを送ってください
- Rack 3 はたぶん API が変わる
Actor, Thread and me
- アーロンの後はやりにくい https://twitter.com/m_seki/status/675938103735902209
- dRuby 本 10 周年
- agenda の Really? が重要
- アクターモデル
- Ether (エーテル) : メッセージを伝搬する何か
- Send と Receive だけで考える
oso_matz_RPC
choro_matz
- 後でやる作戦は誰も止まっていないのにシステムが止まってしまうことがある
jushi_matz
- おすすめ
- システム全体はアクターモデルで考える
- アクターはマルチスレッドで動く
- Fiber を使ってみるために bartender というのを作った https://github.com/seki/bartender
- 全員が Queue を持っているというのを書いてみた
- 使い道がなかった
- 中央集権型
Rinda::TupleSpace
を使う todo_matz
- アクターはより良いスレッドではない感が共有できたはず
- スポンサーが大事
- 質疑応答
- スレッドの今後について
- 現状で満足している
- 1.8 の方が良かった
- 上司に 3 倍速くしろといわれてるんですが
- IO 待ちばっかりなら今のスレッドで良いのではないか
- unicorn (プロセス) から puma (マルチスレッド) に変更したが、リソース的にも速度的にも改善しなかった
- Fiber の使った例のところでもっと良い書き方があるという話
スポンサーセッション (Speee)
- 意外と知っている人が多い
- いろんなことをやっているので紹介するのは難しい
- IT 企業対抗 Splatoon 大会
- Speee ラウンジ
Ruby: 2020 - how do we get to Ruby3x3 (Keynote)
- CRuby には JIT が必要
- Part 1: Performance
- Parallelism
- Part 2. Survey of the past
- 2a. SELF https://ja.wikipedia.org/wiki/Self
- 2b. Strongtalk https://en.wikipedia.org/wiki/Strongtalk
- 2c. V8
- JIT Compiler Types
- Tracing JITs
- Method JITs
- Partial Evaluation
- Part 4: Comparison
- Part 5: A Proposal
-
[1,2].min
を最適化する話 - MIPASWAP = Matz is Pragmatic And So We Are Pragmatic (スライドでは And が抜けていたらしい)
- 質疑応答
Closing
- 819 Rubyists! https://twitter.com/nhance/status/675971298816823296
- すし詰め https://twitter.com/yoshiaki_0614/status/675974594025648128
- RubyKaigi 2016
- Sep. 8th .. 10th
- 京都国際会館
- 価格は未定だが今年よりは安くしたい
全体の感想
- 英語がさっぱりだった。
- 1 日目の寿司チケットを使い損ねた。
- 本を買うかどうか迷っていたら、買いたかった本はすでに売り切れていて、買わずに済んだ。(荷物が重くならずに済んだ。)
- 2 日目の会場 Wi-Fi の調子が悪かった。
- 3 日目も調子が悪いタイミングがあったが、何度かつなぎ直していたら治った。
- http://blog.rubykaigi.org/ が更新されていなかった。
- 天気が微妙だった。
- 久しぶりの人にいろいろ会えた。
- みられなかった発表は http://togetter.com/id/tg__dev の togetter を参考にスライドを読むと良さそう。
- 宿が歩いて移動できる範囲で良かった。(会場まで徒歩 20 分ぐらいの場所だった。)
- ちょっと遅れ気味の日もあったけど、セッションの開始には遅刻せずに毎日朝から参加できた。
Disqus Comments