rinda, druby · druby e3vczw \q 3vczwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å i b...
TRANSCRIPT
![Page 1: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/1.jpg)
Rinda, dRubyanswering the RubyConf, RubyKaigi
Masatoshi SEKI
![Page 2: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/2.jpg)
重要なことを先に
• 先に
![Page 3: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/3.jpg)
重要なこと
• ’05 夏リリース
• まだ初版買えます
dRubyによる
関 将俊 著
分散・Webプログラミング
![Page 4: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/4.jpg)
amazon.co.jpdRubyによる
関 将俊 著
分散・Webプログラミング
buy now!
![Page 5: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/5.jpg)
私について
• 自称プログラマ• 今日はAgileの人じゃないよ
• 打たれ弱い
![Page 6: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/6.jpg)
私について
• Rubyの人になりたい
• さっぱりRubyな依頼こないよ?
XP
Ruby
![Page 7: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/7.jpg)
products
• ERB
• dRuby
• Rinda
• RWiki
• Div
• Koya
• ...
![Page 8: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/8.jpg)
users
• ERB
• dRuby
• Rinda
• RWiki
• Div
• Koya
• ...
otherRindadRuby
ERB
![Page 9: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/9.jpg)
users
• ERB
• dRuby
• Rinda
• RWiki
• Div
• Koya
• ...
other
RindadRuby
ERB
![Page 10: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/10.jpg)
ego-search
• ERB
• dRuby
• Rinda
• RWiki
• Div
• Koya
• ...
other
Rinda
dRuby
ERB
![Page 11: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/11.jpg)
報われない愛
otherRindadRuby
ERB
other
Rinda
dRuby
ERB
ユーザ数 作者の愛情
![Page 12: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/12.jpg)
愛の反対は無関心
• ERBを愛してないわけじゃない
![Page 13: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/13.jpg)
でも今日は
• Rindaを中心に
• ERBはまた今度
about me
Rinda
dRuby
![Page 14: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/14.jpg)
agenda
• dRuby, Rindaの紹介
• いくつかの発表に言い訳• RubyKaigi 2006
• Rinda and DRb in the Real World.
• Scaling Twitter
![Page 15: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/15.jpg)
言い訳駆動
• 最初のリリース以降のモチベーション• コンセプト製品みたいのばっかり• そのくせ指摘されると打たれ弱い• 言い訳をするように本を書いたり‥
![Page 16: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/16.jpg)
RubyKaigi 2006
dRuby, Again.
dRubyをもう一度思い出してみよう今日も古い話ばっかり
![Page 17: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/17.jpg)
dRubydRubyのやること
Rubyのメッセージングを拡張別のプロセスのオブジェクトのメソッドを起動する
Rubyなので
IDL不要proxyは一種類だけ
ブロック付きメソッド
なぜ動くのかProcは参照渡しyieldはProcへの操作
で?
dRubyをなにに使うの?
いろんな分散
配置プロセスマシン機能ちょっと豪華な通信の代替手段
寿命といえば永続化
永遠の永続化比較的に永続化一方よりは長生きだ
長命なオブジェクト
長生きするオブジェクトの方が自然なときWeb UIとか
遺言に苦労するなら
はじめから長命なオブジェクトはいかが?つーかそのMVCでいいの?
Web UI 2.0
Webブラウザ HTTP Web UI アプリケーション
Event !
だいぶ短命長生きだと自然
長生き
![Page 18: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/18.jpg)
dRubyのやること
Rubyのメッセージングを拡張
別のプロセスのオブジェクトのメソッドを起動する
オブジェクトの交換
![Page 19: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/19.jpg)
Object(1) メッセージ送信
Object(2) メッセージ転送
(3) メソッド起動
プロセスを越える
![Page 20: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/20.jpg)
実験
二つのirbを使って話し合う一方はHashを公開
![Page 21: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/21.jpg)
front
システムへの入り口、きっかけURIで指定するdRubyのシステムに一つ以上
![Page 22: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/22.jpg)
irb
cinq:~ mas$ irb --simple-prompt --noreadline>> require 'drb/drb'=> true>>
cinq:~ mas$ irb --simple-prompt --noreadline>> require 'drb/drb'=> true>>
OSXでThreadがスイッチしないときに
![Page 23: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/23.jpg)
{}をfrontに
>> DRb.start_service('druby://localhost:12345', {})=> #<DRb::DRbServer:0x1c1e48....>>>
{}とURIを結びつける
![Page 24: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/24.jpg)
frontを参照
>> DRb.start_service=> #<DRb::DRbServer:0x1c97c4...>>> ro = DRbObject.new_with_uri('druby://localhost:12345')=> #<DRb::DRbObject:....>>>
URIを参照する
![Page 25: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/25.jpg)
{}をいじる>> ro['client'] = 'Hello, Again'=> "Hello, Again">>
>> DRb.front=> {"client"=>"Hello, Again"}>> DRb.front['server'] = 'Hello, World.'=> "Hello, World.">>
>> ro['server']=> "Hello, World.">> ro=> #<DRb::DRbObject:...">>> ro.keys=> ["client", "server"]>> ro.values => ["Hello, Again", "Hello, World."]>>
![Page 26: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/26.jpg)
オブジェクトの交換
Marshal
dumpableNumber, Boolean, String
clone
can’t dumpProc, Thread, File
reference
![Page 27: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/27.jpg)
Threadは参照渡し
>> DRb.front['thread'] = Thread.current=> #<Thread:0x1df7cc run>>>
>> ro['thread']=> #<DRb::DRbObject:...>>> ro['thread'].status=> "sleep">>
![Page 28: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/28.jpg)
値渡しはコピー
>> DRb.front['client']=> "Hello, Again">>
>> ro['client']=> "Hello, Again">> ro['client'].reverse! => "niagA ,olleH">> ro['client']=> "Hello, Again">>
![Page 29: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/29.jpg)
同期
Thread同期の仕組みもそのまま
もちろんTupleSpaceも
![Page 30: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/30.jpg)
で?
dRubyをなにに使うの?
![Page 31: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/31.jpg)
いろんな分散
配置プロセスマシン
機能ちょっと豪華な通信の代替手段
![Page 32: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/32.jpg)
配置と寿命
オブジェクトはプロセスに在る住いが異なる = 寿命が異なるプロセスより長命なオブジェクト
![Page 33: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/33.jpg)
寿命といえば永続化
永遠の永続化比較的に永続化一方よりは長生きだ
![Page 34: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/34.jpg)
長命なオブジェクト
長生きするオブジェクトの方が自然なとき
Web UIとか
![Page 35: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/35.jpg)
Rindaもっとかっこいいやつ
並列処理糊言語 LindaとRinda動的な構成変更 Ring使わなくても素振りしておけ
Linda
並列処理糊言語タプルとタプルスペースパターンマッチング
Lindaの協調
outinとrdパターンで指定ブロックできる参加者はタプルスペースだけを知ってる
かっこいい並列処理
TupleSpace
Engine
Engine
Engine
Client
Client
Tuple Spaceだけを知っている
Rinda
RubyによるLindaの実装dRubyを意識してくれるTupleはArray|Hashで
![Page 36: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/36.jpg)
Linda
並列処理糊言語タプルとタプルスペースパターンマッチング
![Page 37: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/37.jpg)
Lindaの協調
outinとrdパターンで指定ブロックできる
参加者はタプルスペースだけを知ってる
![Page 38: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/38.jpg)
かっこいい並列処理
TupleSpace
Engine
Engine
Engine
Client
Client
Tuple Spaceだけを知っている
![Page 39: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/39.jpg)
Rinda
RubyによるLindaの実装
dRubyを意識してくれる
TupleはArray|Hashで
![Page 40: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/40.jpg)
TupleSpace
>> ts = Rinda::TupleSpace.new=> #<Rinda::TupleSpace:...>>> DRb.front['ts'] = ts=> #<Rinda::TupleSpace:...>>>
>> it = DRbObject.new_with_uri('druby://localhost:12345?ts')=> #<DRb::DRbObject:...>>> ts = Rinda::TupleSpaceProxy.new(it)=> #<Rinda::TupleSpaceProxy:...>>>
TupleSpaceProxyはdRuby下で安全に動作させるためのもの
![Page 41: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/41.jpg)
writeとtake
>> ts.write([:seki, :age, 20])=> #<Rinda::TupleEntry:...>>> TupleSpace
:seki :age
write
20
![Page 42: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/42.jpg)
writeとtake
>> ts.write([:seki, :age, 20])=> #<Rinda::TupleEntry:...>>>
>> ts.take([:seki, :age, nil]) => [:seki, :age, 20]>>
TupleSpace
:seki :age
take
20
![Page 43: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/43.jpg)
待ち合わせ
>> ts.take([:seki, :age, nil])
TupleSpace
take
![Page 44: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/44.jpg)
待ち合わせ
>> ts.write([:seki, :age, 20])=> #<Rinda::TupleEntry:...>>>
>> ts.take([:seki, :age, nil])
TupleSpace
:seki :age
writetake
20
![Page 45: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/45.jpg)
待ち合わせ
>> ts.write([:seki, :age, 20])=> #<Rinda::TupleEntry:...>>>
=> [:seki, :age, 20]>>
>> ts.take([:seki, :age, nil])
TupleSpace
:seki :age
take
20
![Page 46: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/46.jpg)
Answering
• dRuby, Again.
• Scaling Twitter
• Rinda and DRb in the Real World
• mput.dip.jp
• Nick Sieger’s blog
• kiwamu訳
![Page 47: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/47.jpg)
Rinda and DRb in the Real World
• Glenn Vanderburg 返事もらえなかった‥
• mputさんやkiwamuさんの日記を参照
![Page 48: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/48.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 49: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/49.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 50: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/50.jpg)
Tupleの設計
• Tupleの設計はプロトコルの設計
• 伝票• RDBMSのテーブルの設計は?
• なんだろ。帳簿??
![Page 51: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/51.jpg)
Tupleで表現するもの
• RPCの要求とその返信
• 分散データ構造• ストリーム• キャッシュ• ...
![Page 52: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/52.jpg)
テンプレート
• Tupleをパターンで指定
• read, takeで
• ===で比較
• nilはワイルドカード
![Page 53: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/53.jpg)
RPCなTuple
• メッセージ• 識別子• 具 / データ
メッセージ 識別子 具
![Page 54: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/54.jpg)
RPCなTuple
• 値で指定• ワイルドカードはまずない
メッセージ 識別子 具
![Page 55: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/55.jpg)
RPCなTuple
• ほとんどの場合nil
• 返信待ちでは値の場合も• ときどき範囲 (Class, Regexp, Range)
メッセージ 識別子 具
![Page 56: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/56.jpg)
RPCなTuple
• ほとんどの場合nil
• 要素数は合わせてね
メッセージ 識別子 具
![Page 58: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/58.jpg)
RPCなTuple
メッセージ 識別子 具
:snapshot 12345 “http://foo/bar”, 320, 240
:snapshot nil nil, nil, nil
![Page 59: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/59.jpg)
RPCなTuple
メッセージ 識別子 具
:snapshot 12345 “http://foo/bar”, 320, 240
:snapshot nil nil, nil, nil
:snapshot_done 12345 “img_320_240_12345.jpg”
![Page 60: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/60.jpg)
RPCなTuple
メッセージ 識別子 具
:snapshot 12345 “http://foo/bar”, 320, 240
:snapshot nil nil, nil, nil
:snapshot_done 12345 “img_320_240_12345.jpg”
:snapshot_done 12345 nil
![Page 61: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/61.jpg)
Scaling Twitter
Rinda
• Shared Queue (TupleSpace)
• Built with DRb
• RingyDingy makes it stupid easy
• See Eric Hodel’s documentation
• O(N) for take(). Sigh.
Big Bird.(scaling twitter)
![Page 62: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/62.jpg)
Sigh.
• Shared Queue (TupleSpace)
• O(N) for take(). Sigh.
![Page 63: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/63.jpg)
O(N)
• メッセージだけで探す• 要求が溜まってるとき、すぐにマッチ• まぁまぁO(1)じゃない?
:snapshot nil nil, nil, nil
![Page 64: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/64.jpg)
まぁまぁO(1)?
• あれれ• Array#deleteしてた
• delete_atに修正しました
• おまけ: rindexで末尾を先に削除
![Page 65: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/65.jpg)
不公平な検索
• 事前にメッセージごとに分類• 先頭の要素がSymbolの場合のみ
• StringやIntegerは===の扱いが難しい
• ほんとにO(1)っぽい
:snapshot nil nil, nil, nil
![Page 66: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/66.jpg)
不公平な検索
• tuple[0]はSymbolにしておくと効率よい
• そういうケースだけ特別扱いするよ
a Symbol nil nil, nil, nil
![Page 67: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/67.jpg)
Rinda遅いんですけど
• さっきロビーで• ruby_1_8を試して
![Page 68: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/68.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 69: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/69.jpg)
RubyKaigi 2006
• サーバ側がマシンがトラブるとエラーになります。マスターを複数に出来るといいなと思うんですが。(森脇さん)
• 今聞いたんで、これから考えます。(咳)
![Page 70: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/70.jpg)
考えた
• さっきの状態で生き返るTupleSpace
• ただしTupleの状態だけ
• take, readで待ってた人は再試行plz
• 自動的な再起動は別途• Ring ?
![Page 71: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/71.jpg)
永続化
• タプルの内部表現の状態を外部に記録• 変更も記録• 再起動時に記録された情報で再構築
![Page 72: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/72.jpg)
PTupleSpace
• 永続版TupleSpace
• TupleとTupleEntryの永続化
• Tupleのcancelなどのハンドル
• Tupleを保存するTupleStoreと一緒に
![Page 73: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/73.jpg)
TupleStore
• Tupleの情報をメモしとく
• ログファイルのTupleStoreLog
• HashのTupleStoreSimple
• プロセスの寿命の違いを利用• 開発中向け
• RDBなら安心する人は自分で書いてね
![Page 74: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/74.jpg)
• 書くだけ
TupleStore
Log Marshal
PTupleSpace
log
Application
Application
Application
![Page 75: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/75.jpg)
ログから生き返る
• 読むだけ
TupleStore
Log Marshal
PTupleSpace
log
![Page 76: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/76.jpg)
再起動の通知は
• Ringが使えるかも
![Page 77: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/77.jpg)
TupleStoreの配置は
• PTupleSpaceと同じマシンに
• dRubyで好きなところに
![Page 78: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/78.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 79: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/79.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 80: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/80.jpg)
不揮発な参照
• object_idはそのプロセスだけで有効
• 再起動時に困る
![Page 81: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/81.jpg)
不揮発な参照
• DRbIdConvをカスタマイズ
• ログのIDを用いた特別な参照を作る
• 再起動してもTupleEntryの参照が有効
![Page 82: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/82.jpg)
Rinda and DRb in the Real World
• Tupleの設計はプロトコル設計
• SPOFだよ
• RingServerは鬼門
• 不揮発性のオブジェクトID
• 2004年から開発停まってるじゃん
![Page 83: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/83.jpg)
2004年で停まってる
• 変えたよ。• 変えないと、ダメなの?
![Page 84: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/84.jpg)
まとめ
• 関心をもってくれたみなさまに感謝• RubyKaigi 2006
• Rinda and DRb in the Real World.
• Scaling Twitter
![Page 85: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/85.jpg)
それから
• たまにはERBの言い訳をしたい
• なぜ行に分割するのか• メソッド化して使うのがERB way
![Page 86: Rinda, dRuby · dRuby E3VCZw \q 3VCZwÝ¿· ´ï¬ ¦ Á wÓé·µw¦Ò´ £«ÄwÝ ¹¿Å I b 3VCZswp *%-Æ A QSPYZx° ¨iZ Òé¿« ÇVݹ¿Å se X wT](https://reader034.vdocuments.net/reader034/viewer/2022050407/5f845a4da65bfc1814176ae7/html5/thumbnails/86.jpg)
toRuby 4h
• とちぎRubyの勉強会
• 6/23 西那須野公民館
• 豪華ゲスト• 豪華レギュラー