Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tochigi Ruby Kaigi 08 Keynote
Search
seki at druby.org
June 29, 2019
Programming
0
500
Tochigi Ruby Kaigi 08 Keynote
分散オブジェクトとはアレですか?
seki at druby.org
June 29, 2019
Tweet
Share
More Decks by seki at druby.org
See All by seki at druby.org
XP, Testing and ninja testing
m_seki
3
650
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
490
ERB, ancient and future
m_seki
3
920
ERB Hacks
m_seki
1
1.5k
わりこまれるはなし
m_seki
0
910
ぼくのかんがえたさいきょうのけいやくによるプログラミング
m_seki
2
1.3k
Learn Ractor
m_seki
1
2.7k
How many copies did you buy the first print?
m_seki
1
1.1k
Create my own search engine.
m_seki
1
5.4k
Other Decks in Programming
See All in Programming
Rancher と Terraform
fufuhu
2
550
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
2.4k
Namespace and Its Future
tagomoris
6
700
Kiroで始めるAI-DLC
kaonash
2
610
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
190
為你自己學 Python - 冷知識篇
eddie
1
350
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.3k
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
230
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
560
Improving my own Ruby thereafter
sisshiki1969
1
160
Featured
See All Featured
How GitHub (no longer) Works
holman
315
140k
Facilitating Awesome Meetings
lara
55
6.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Automating Front-end Workflow
addyosmani
1370
200k
It's Worth the Effort
3n
187
28k
Designing Experiences People Love
moore
142
24k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Transcript
分散オブジェクトとは アレですか? SSID: toruby pass: toruby08 Tochigi RubyKaigi 08 Masatoshi
SEKI / @m_seki
http://www.druby.org/drb20_tork08.pdf ֎ʹग़Εͳ͍࣮श༻ͷωοτϫʔΫ SSID: toruby pass: toruby08 SSID: toruby pass: toruby08
Agenda 頃 Workshop SSID: toruby pass: toruby08
࡞Γͳ͕Βߟ͑Δͷ͕͖ dRuby SSID: toruby pass: toruby08
OOPͷϑΝϯλδʔ SSID: toruby pass: toruby08
ࢄOOPͷϑΝϯλδʔ SSID: toruby pass: toruby08
dRubyͰ࡞ͬͨͷ SSID: toruby pass: toruby08
ઌฦΓ OOP SSID: toruby pass: toruby08
Ͱ͖͔ͯΒߟ͑ͨ͜ͱ SSID: toruby pass: toruby08
ϓϩηεΛ͚Δҙຯ SSID: toruby pass: toruby08
dRuby 20th anniversary hands-on workshop @m_seki /
[email protected]
ॏཁ 2005 ! SSID: toruby pass: toruby08 dRuby ʹΑΔ ؔকढ़ஶ
ࢄ ɾ Web ϓϩάϥϛϯά
The dRuby Book 2012 Out of print SSID: toruby pass:
toruby08
HTML൛ެ։த http://www.druby.org/sidruby/ SSID: toruby pass: toruby08
Rubyͱࢲ 1999 ERB, dRuby, .... 2000 Perl/RubyConference SSID: toruby pass:
toruby08
ERB Ruby SSID: toruby pass: toruby08
dRuby SSID: toruby pass: toruby08
ࠓ dRuby 頃 SSID: toruby pass: toruby08
ࠓ SSID: toruby pass: toruby08
RMI Remote Method Invocation SSID: toruby pass: toruby08
αʔό Web SSID: toruby pass: toruby08
dRuby SSID: toruby pass: toruby08
Ruby෩ Web dRuby Ruby Ruby SSID: toruby pass: toruby08
ԋश1 Hello, World. SSID: toruby pass: toruby08
ԋश1 SSID: toruby pass: toruby08 hello_server.rb hello_client.rb hello() "Hello, World."
hello_server.rb require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) while true sleep 1 end
require require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
DRb.start_service require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
URI require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ऴྃͤ͞ͳ͍ require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ଋࣄ require 'drb/drb' DRb.start_service URI SSID: toruby pass: toruby08
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
ଋࣄ require 'drb/drb' DRb.start_service DRbObject.new_with_uri SSID: toruby pass: toruby08
ݩ͜Ε class Hello def hello puts('Hello, World.') end end ro
= Hello.new ro.hello
require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello require 'drb/drb' class
Hello def hello puts('Hello, World.') end end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ԋश1 hello_client.rb hello_server.rb hello_client.rb SSID: toruby pass: toruby08
ԋश2 (Hash) SSID: toruby pass: toruby08
Hash ( ) Array ( ) SSID: toruby pass: toruby08
hash_server.rb require 'drb/drb' require 'pp' front = Hash.new DRb.start_service('druby://localhost:54300', front)
while true sleep 10 pp front end
ԋश2 SSID: toruby pass: toruby08 hash_server.rb irb irb
ԋश2 "String" 2012 Time.now $stdout SSID: toruby pass: toruby08
CGIͷྫ SSID: toruby pass: toruby08 CGI Web App CGI CGI
CGI long lifetime short lifetime
WEBrickʹΑΔΞϓϦ WEBrick HTTP CGI SSID: toruby pass: toruby08
WEBrick::CGI require 'webrick/cgi' class MyCGI < WEBrick::CGI def do_GET(req, res)
res["content-type"] = "text/plain" ret = "hoge\n" res.body = ret end end MyCGI.new.start()
start WEBrick::CGI#start(env = ENV, stdin = $stdin, stdout = $stdout)
startϝιου $stdin, $stdout SSID: toruby pass: toruby08
m_seki's cgi require 'drb/drb' DRb.start_service('druby://localhost:0') ro = DRbObject.new_with_uri('druby://localhost:50830') ro.start(ENV.to_hash, $stdin,
$stdout)
startͷΑ͏͢ SSID: toruby pass: toruby08 CGI Web App $stdin.read $stdout.write
start(env, $stdin, $stdout)
Δͼ·40߸ SSID: toruby pass: toruby08
ԋश6 Shi-ri-to-ri SSID: toruby pass: toruby08
·ͱΊ dRuby SSID: toruby pass: toruby08
;Γ͔͑Γ SSID: toruby pass: toruby08