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
1
490
Rails with Node.js - a Reese's Moment
Introduction to Node.js and how to use it alongside Rails.
Jerry Cheung
September 26, 2011
Tweet
Share
More Decks by Jerry Cheung
See All by Jerry Cheung
Let's Build Software!
jch
3
160
Evented Ruby vs. Node.js
jch
9
1.9k
Streaming APIs with Ruby
jch
5
650
Evented Ruby vs Node.js
jch
15
4k
Sproutcore Introduction @ LAHN
jch
1
170
Other Decks in Programming
See All in Programming
ふん…おもしれぇ Parser。RubyKaigi 行ってやるぜ
aki_pin0
0
110
オブザーバビリティ駆動開発って実際どうなの?
yohfee
1
490
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
270
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
1
150
15年目のiOSアプリを1から作り直す技術
teakun
0
500
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
160
並行開発のためのコードレビュー
miyukiw
2
2k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
22
8k
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
120
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
130
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
300
AI巻き込み型コードレビューのススメ
nealle
2
2.3k
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
250
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
85
Docker and Python
trallard
47
3.7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
130
Producing Creativity
orderedlist
PRO
348
40k
BBQ
matthewcrist
89
10k
Done Done
chrislema
186
16k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
130
Fireside Chat
paigeccino
41
3.8k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How STYLIGHT went responsive
nonsquared
100
6k
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