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
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby; Exported
Sapporo RubyKaigi 2012
Tatsuhiko Miyagawa
September 15, 2012
More Decks by Tatsuhiko Miyagawa
See All by Tatsuhiko Miyagawa
Carmel at YAPC::EU 2015
miyagawa
0
610
Carton at London Perl Workshop 2013
miyagawa
0
320
Managing CPAN dependencies with Carton
miyagawa
0
380
What's new in Carton and cpanm at YAPC::Asia 2013
miyagawa
6
1.4k
Carton 1.0 at OSCON 2013
miyagawa
11
2.4k
cpanm 1.6 at OSDC.TW
miyagawa
6
1.4k
10 more things to be ripped off
miyagawa
7
1.5k
10 Years: LL, you and me
miyagawa
2
260
Plack 1.0 announcement at OSCON
miyagawa
1
320
Other Decks in Technology
See All in Technology
ブラウザで変わるID連携(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
240
:syncing_time:
sksat
2
740
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
420
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
480
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
320
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
Digital Credentials API × OpenID4VP ブラウザ完結型本人確認の実装知見(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
230
internal/testlog で遊ぼう
rokuosan
0
200
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
190
RelayerというPHPのフレームワークを作った
polidog
PRO
0
140
DDDのエッセンスを取り入れたAIでの開発
ak2ie
1
230
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
550
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
The Invisible Side of Design
smashingmag
301
52k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
810
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
790
Darren the Foodie - Storyboard
khoart
PRO
3
3.7k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Color Theory Basics | Prateek | Gurzu
gurzu
0
440
First, design no harm
axbom
PRO
2
1.3k
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