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
Rails with Node.js - a Reese's Moment
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jerry Cheung
September 26, 2011
Programming
500
1
Share
Rails with Node.js - a Reese's Moment
Introduction to Node.js and how to use it alongside Rails.
Jerry Cheung
September 26, 2011
More Decks by Jerry Cheung
See All by Jerry Cheung
Let's Build Software!
jch
3
170
Evented Ruby vs. Node.js
jch
9
1.9k
Streaming APIs with Ruby
jch
5
660
Evented Ruby vs Node.js
jch
15
4k
Sproutcore Introduction @ LAHN
jch
1
180
Other Decks in Programming
See All in Programming
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
130
AIエージェントで業務改善してみた
taku271
0
480
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
1.7k
Spec Driven Development: The End Of Vibe Coding | DevLand 2026
danielsogl
PRO
0
110
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
290
PCOVから学ぶコードカバレッジ #phpcon_odawara
o0h
PRO
0
210
Swift Concurrency Type System
inamiy
0
230
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
180
20260320登壇資料
pharct
0
160
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.8k
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
430
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
170
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
Un-Boring Meetings
codingconduct
0
260
The browser strikes back
jonoalderson
0
900
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Why Our Code Smells
bkeepers
PRO
340
58k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
470
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
670
Skip the Path - Find Your Career Trail
mkilby
1
100
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Darren the Foodie - Storyboard
khoart
PRO
3
3.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
710
Transcript
Rails with Node.js a Reese’s Moment Monday, September 26, 11
Me Monday, September 26, 11
In a Nutshell Monday, September 26, 11
In a Nutshell • Framework for building network apps Monday,
September 26, 11
In a Nutshell • Framework for building network apps •
First class evented I/O Monday, September 26, 11
In a Nutshell • Framework for building network apps •
First class evented I/O • Built on top of V8 Monday, September 26, 11
What it ain’t Monday, September 26, 11
What it ain’t • NOT a browser side Javascript library
Monday, September 26, 11
What it ain’t • NOT a browser side Javascript library
• NOT a full fledged webapp framework Monday, September 26, 11
A Simple Example Monday, September 26, 11
A Simple Example (1..3).each do |i| contents = File.read('presentation.key') puts
"#{i}. Finished reading file" puts "#{i}. doing something important..." end Monday, September 26, 11
A Simple Example 1. Finished reading file 1. doing something
important... 2. Finished reading file 2. doing something important... 3. Finished reading file 3. doing something important... Monday, September 26, 11
A Simple Example var fs = require('fs'); for (var i=1;
i<=3; i++) { fs.readFile('presentation.key', function(err, data) { console.log(i + ". Finished reading file"); }); console.log(i + ". doing something important..."); } Monday, September 26, 11
A Simple Example var fs = require('fs'); for (var i=1;
i<=3; i++) { fs.readFile('presentation.key', function(err, data) { console.log(i + ". Finished reading file"); }); console.log(i + ". doing something important..."); } Monday, September 26, 11
A Simple Example 1. doing something important... 2. doing something
important... 3. doing something important... 4. Finished reading file 4. Finished reading file 4. Finished reading file Monday, September 26, 11
Trust Callbacks Monday, September 26, 11
Trust Callbacks • Async programming is trickier Monday, September 26,
11
Trust Callbacks • Async programming is trickier • ...But it
doesn’t block your other code Monday, September 26, 11
Go to Jail “Node jails you into this evented- style
programming. You can’t do things in a blocking way, you can’t write slow programs.” - Ryan Dahl Monday, September 26, 11
Some Real Examples Monday, September 26, 11
Some Real Examples • Real-time dashboards and analytics Monday, September
26, 11
Some Real Examples • Real-time dashboards and analytics • Push
notifications Monday, September 26, 11
Some Real Examples • Real-time dashboards and analytics • Push
notifications • Fast file uploads Monday, September 26, 11
Dashboards + Analytics https://github.com/etsy/statsd Monday, September 26, 11
Dashboards + Analytics http://hummingbirdstats.com/ Monday, September 26, 11
Push Notifications https://github.com/mape/node-wargames Monday, September 26, 11
File Uploaders Monday, September 26, 11
File Uploaders • Slow to parse the encoded upload body
Monday, September 26, 11
File Uploaders • Slow to parse the encoded upload body
• Post-processing & background jobs Monday, September 26, 11
File Uploaders require 'sinatra' # curl -F "
[email protected]
" http://localhost:4567/upload post
'/upload' do # already written to params[:data][:tempfile] "" end Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
Upload Benchmarks MRI Ruby 1.8.7 and 1.9.2 with Sinatra 1.2.1
Node 0.5.0 2.66 GHz i7 2000 iterations on a 295 byte file Ruby 67 minutes 3.5 seconds Node 23.9 seconds Monday, September 26, 11
No Silver Bullet Monday, September 26, 11
No Silver Bullet • Not a replacement for Ruby Monday,
September 26, 11
No Silver Bullet • Not a replacement for Ruby •
Use where it makes sense Monday, September 26, 11
No Silver Bullet • Not a replacement for Ruby •
Use where it makes sense • Doesn’t guarantee scalability Monday, September 26, 11
Wrapup Monday, September 26, 11
Wrapup • Server side Javascript rules! Monday, September 26, 11
Wrapup • Server side Javascript rules! • Event driven style
of programming Monday, September 26, 11
Wrapup • Server side Javascript rules! • Event driven style
of programming • Good for specific problems Monday, September 26, 11
Thanks! Questions?
[email protected]
@whatcodecraves http://whatcodecraves.com Monday, September 26, 11