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
Ruby; Exported
Search
Tatsuhiko Miyagawa
September 15, 2012
Technology
1
1k
Ruby; Exported
Sapporo RubyKaigi 2012
Tatsuhiko Miyagawa
September 15, 2012
Tweet
Share
More Decks by Tatsuhiko Miyagawa
See All by Tatsuhiko Miyagawa
Carmel at YAPC::EU 2015
miyagawa
0
540
Carton at London Perl Workshop 2013
miyagawa
0
270
Managing CPAN dependencies with Carton
miyagawa
0
320
What's new in Carton and cpanm at YAPC::Asia 2013
miyagawa
6
1.3k
Carton 1.0 at OSCON 2013
miyagawa
11
2.3k
cpanm 1.6 at OSDC.TW
miyagawa
6
1.3k
10 more things to be ripped off
miyagawa
7
1.4k
10 Years: LL, you and me
miyagawa
2
210
Plack 1.0 announcement at OSCON
miyagawa
1
280
Other Decks in Technology
See All in Technology
Jamf Connect ZTNAとMDMで実現! 金融ベンチャーにおける「デバイストラスト」実例と軌跡 / Kyash Device Trust
rela1470
0
130
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
230
マルチプロダクト×マルチテナントを支えるモジュラモノリスを中心としたアソビューのアーキテクチャ
disc99
0
290
僕たちが「開発しやすさ」を求め 模索し続けたアーキテクチャ #アーキテクチャ勉強会_findy
bengo4com
0
1.9k
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
380
LLM開発を支えるエヌビディアの生成AIエコシステム
acceleratedmu3n
0
370
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
120
LIFF CLIとngrokを使ったLIFF/LINEミニアプリのお手軽実機確認
diggymo
0
230
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
720
Google Agentspaceを実際に導入した効果と今後の展望
mixi_engineers
PRO
2
330
20250728 MCP, A2A and Multi-Agents in the future
yoshidashingo
1
210
「育てる」サーバーレス 〜チーム開発研修で学んだ、小さく始めて大きく拡張するAWS設計〜
yu_kod
1
250
Featured
See All Featured
Scaling GitHub
holman
461
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
Agile that works and the tools we love
rasmusluckow
329
21k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Navigating Team Friction
lara
188
15k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
750
Thoughts on Productivity
jonyablonski
69
4.8k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Transcript
Ruby; Exported Tatsuhiko Miyagawa Sapporo RubyKaigi 2012 Sunday, September 30,
12
About Me • Tatsuhiko Miyagawa • @miyagawa • San Francisco,
CA • COOKPAD Inc. US Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://www.flickr.com/photos/ya-ko/5086710287/in/set-72157625177557742 Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Cross Language Pollination Sunday, September 30, 12
Perl's influence in Ruby Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Ruby Heritage from Perl Sunday, September 30, 12
http://edward.oconnor.cx/2006/03/ruby-is-perl-done-right Sunday, September 30, 12
http://edward.oconnor.cx/2006/03/ruby-is-perl-done-right Sunday, September 30, 12
ARGF Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
%q %Q Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
`` Sunday, September 30, 12
> `date` # => "Sat Sep 15 09:20:07 JST
2012\n" > %x{echo oops && exit 99} # => "echo\n" > $?.exitstatus # => 99 Sunday, September 30, 12
$! $@ $; $, $/ $\ $. $_ $> $<
$$ $? $~ $= $* $& $` $' Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Mostly, things you don't like :p Sunday, September 30, 12
"Perl's special variables are one of the biggest mistake I
made in Ruby." Sunday, September 30, 12
http://blog.nicksieger.com/articles/2007/10/06/obscure-and-ugly-perlisms-in-ruby Sunday, September 30, 12
Gems Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Ruby's influences in other languages (Perl) Sunday, September 30, 12
Sunday, September 30, 12
Full-stack Web frameworks Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
micro web frameworks Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
DSL Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Perl Modules for Ruby Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
My Cases Sunday, September 30, 12
Plack / PSGI Sunday, September 30, 12
# WSGI def hello(environ, start_response): start_response(“200 OK”, [
(‘Content-‐Type’, ‘text/plain’) ]) return [“Hello World”] Sunday, September 30, 12
# Rack app = -‐>(env) { return [
200, { 'Content-‐Type' => 'text/plain' }, [ 'Hello World' ] ] } Sunday, September 30, 12
# PSGI my $app = sub { my $env
= shift; return [ 200, [ 'Content-‐Type', 'text/plain' ], [ 'Hello World' ] ]; }; Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
It's been a huge success. Sunday, September 30, 12
CGI::Application Apache IIS lighttpd CGI.pm CGI fastcgi mod_perl Jifty Mason
Catalyst Mason::CGIHandler Catalyst::Engine nginx HTTP::Server ::Simple Sunday, September 30, 12
PSGI Plack::Middleware Catalyst CGI::App Jifty Dancer Apache lighttpd HTTP::Server::PSGI Perlbal
mod_psgi Plack::Handler::* (CGI, FCGI, Apache) Starman Twiggy uWSGI Corona Feersum Mojolicious Sunday, September 30, 12
We chose Rack (over WSGI) to copy from: It's newer
and simpler. Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Plack Sunday, September 30, 12
Inspired by: Rack, Werkzeug Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
WSGI: Dec 2003 Rack: Aug 2009 (0.9) Sunday, September 30,
12
“The nicest thing about being late is that there are
plenty of things left to steal.” Sunday, September 30, 12
Better late than never Sunday, September 30, 12
Better late than too early :) Sunday, September 30, 12
Cross-language Pollination Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://bulknews.typepad.com/blog/2009/10/psgiplack-streaming-is-now-complete.html Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
rubygems Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
rubygems quiet and intuitive. Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Carton Sunday, September 30, 12
Sunday, September 30, 12
Like Bundler Sunday, September 30, 12
Sunday, September 30, 12
Starman PSGI HTTP Server Sunday, September 30, 12
http://tomayko.com/writings/unicorn-is-unix Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Name Sunday, September 30, 12
"Naming is Important." Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
CPAN traditionally prefers long names Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Too many ::’s! Hard to type nor say. People tend
to shorten the names. e.g. MXMARMR (MooseX::MetaAttribute::Role::Meta::Role) Sunday, September 30, 12
Sunday, September 30, 12
Perl • HTTP::Server::Simple • JSON::XS • Devel::StackTrace • Net::OAuth::Lite •
Text::CSV_XS Sunday, September 30, 12
Python • python-json • pyoauth2 • pygeoip • PyYAML •
Numpy Sunday, September 30, 12
Ruby • Yajl • Psych • unicorn • thin •
puma • doorkeeper • kaminari • paperclip • resque • pry • factory_girl • capybara Sunday, September 30, 12
Perl Descriptive, boring, ::Simple Python Descriptive, confusing, py*, *.py Ruby
Fancy, creative, chaotic Sunday, September 30, 12
except Frameworks. Django, bottle, Catalyst, Dancer, Mojolicious, Rails, Sinatra Sunday,
September 30, 12
People tend to love software with names. (citation needed) Sunday,
September 30, 12
Starman Starlet Twiggy Markapl Corona Pinto Xslate Carton Confusing for
a bit, but it feels more "real". Sunday, September 30, 12
How it's received: Sunday, September 30, 12
Telling Perl developers "Ruby is awesome" makes them defensive. Sunday,
September 30, 12
Shipping awesome code inspired by Ruby makes them appreciative Sunday,
September 30, 12
(We Code) Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Starman Starlet Twiggy Plack::Handler::FCGI mod_perl 2 HTTP::Server::PSGI H::S::Simple::PSGI CGI Feersum
uWSGI mod_perl 1.3 0 15 30 45 60 Sunday, September 30, 12
http://www.bofh.org.uk/2010/03/10/falling-out-of-love-with-a-language Sunday, September 30, 12
Sunday, September 30, 12
Quite contrary! Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Wrap up Sunday, September 30, 12
Perl respects Ruby Sunday, September 30, 12
http://www.artima.com/intv/ruby3.html Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://yapcasia.org/2012/talk/show/bcdf8c9e-da9d-11e1-a79e-0d4e6aeab6a4 Sunday, September 30, 12
Thank you. Sunday, September 30, 12