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
450
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
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
370
ERB, ancient and future
m_seki
3
850
ERB Hacks
m_seki
1
1.4k
わりこまれるはなし
m_seki
0
780
ぼくのかんがえたさいきょうのけいやくによるプログラミング
m_seki
1
1.1k
Learn Ractor
m_seki
1
2.6k
How many copies did you buy the first print?
m_seki
1
710
Create my own search engine.
m_seki
1
5.3k
Rinda in the real-world embedded systems.
m_seki
0
420
Other Decks in Programming
See All in Programming
S3静的ホスティング+Next.js静的エクスポート で格安webアプリ構築
iharuoru
0
210
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
12
3.7k
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
450
Compose Hot Reload is here, stop re-launching your apps! (Android Makers 2025)
zsmb
1
120
AtCoder Heuristic First-step Vol.1 講義スライド(山登り法・焼きなまし法編)
takumi152
4
1k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
200
SideKiqでジョブが二重起動した事象を深堀りしました
t_hatachi
0
270
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
0
170
AI時代のプログラミング教育 / programming education in ai era
kishida
23
21k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
1.1k
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
1.6k
英語文法から学ぶ、クリーンな設計の秘訣
newnomad
1
280
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Optimizing for Happiness
mojombo
377
70k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Building an army of robots
kneath
304
45k
The World Runs on Bad Software
bkeepers
PRO
67
11k
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