Slideshow transcript
Slide 1: Hi!
Slide 5: beard
Slide 6: beard
Slide 7: Thin & Rack
Slide 8: © jezebel.com - http://www.flickr.com/photos/lamazone/2366616647/
Slide 9: http://www.mykaussie.com/images/tshirt7.jpg
Slide 10: Sorry!
Slide 11: Story
Slide 17: A random feed feed feed entry Eating cookies, yummy!
Slide 21: Zzzz...
Slide 22: http://dancingspoon.typepad.com/espresso.jpg
Slide 24: OMGWTFBBQ!!11!!1
Slide 29: ...
Slide 30: 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" 69.110.148.55 - - [09/May/2008:23:58:18 +0000] "GET friendfeedfeedfeed.com/feeds/2 HTTP/1.1" 200 712 "http://friendfeedfeedfeed.com/feeds/2" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"
Slide 31: A random feed feed feed entry Eating cookies, yummy!
Slide 32: Cache?
Slide 33: Cache?
Slide 34: random
Slide 35: (
Slide 38: Web Server
Slide 39: Event Driven Web Server
Slide 42: Process-Based
Slide 43: So what?
Slide 44: server = TCPServer.new('localhost', 3000) loop do client = server.accept puts client.read client.close end
Slide 45: server = TCPServer.new('localhost', 3000) loop do client = server.accept puts client.read client.close end
Slide 46: Client Server
Slide 47: Client Server read
Slide 48: server = TCPServer.new('localhost', 3000) loop do client = server.accept puts client.read client.close end
Slide 49: server = TCPServer.new('localhost', 3000) loop do client = server.accept Thread.new do puts client.read client.close end end
Slide 50: Client Client Server Client
Slide 51: Client Thread Client Server Thread Client Thread
Slide 52: Time
Slide 53: Resources
Slide 54: (?)
Slide 55: @kernel notify me if readable
Slide 56: Non-Blocking Sockets
Slide 57: I/O Multiplexing
Slide 58: OMGWTFBBQ!!11!!1
Slide 59: F******
Slide 60: You lost me at I/O
Slide 61: Complex
Slide 62: http://rev.rubyforge.org/ http://rubyeventmachine.com/ http://twistedmatrix.com/ http://code.google.com/p/pyev/ http://software.schmorp.de/pkg/libev.html
Slide 63: Event Driven
Slide 64: Event Driven Web Server
Slide 65: server = TCPServer.new('localhost', 3000) server.on_readable do client = server.accept client.on_readable do puts client.read client.close end end
Slide 66: More Connections
Slide 67: Less Memory
Slide 68: Faster
Slide 70: (
Slide 71: HTTP
Slide 72: Simple
Slide 73: Flexible
Slide 74: Elegant
Slide 75: Beautiful
Slide 76: and
Slide 77: Sexy
Slide 78: Sexy
Slide 79: Request Response
Slide 80: Request
Slide 81: POST /path HTTP/1.1 Host: localhost Connection: close Content-Length: 6 ohaie!
Slide 82: Response
Slide 83: HTTP/1.1 200 OK Content-Length: 34 Content-Type: text/html <html> <h1>kthxbaie</h1> </html>
Slide 87: API
Slide 88: HTTP
Slide 89: WSGI
Slide 90: API
Slide 91: 1 line
Slide 92: proc { |env| [200, {}, "kthxbai"] }
Slide 93: POST / HTTP/1.1 env = { "REQUEST_METHOD" => "POST", Host: localhost "PATH_INFO" => "/", Connection: close "HTTP_VERSION" => "1.1", Content-Length: 6 "HTTP_HOST" => "localhost", "HTTP_CONNECTION" => "close", "CONTENT_LENGTH" => "6" ohaie! }
Slide 94: [ 200, { HTTP/1.1 200 OK "Content-Length" => "34", Content-Length: 34 "Content-Type" => "text/html" Content-Type: text/html }, [ "<html>", <html> " <h1>kthxbaie</h1>", <h1>kthxbaie</h1> "</html>" ] </html> ]
Slide 95: class MyApp def call(env) [ 200, { 'Content-Type' => 'text/plain' }, "you requested " + env['PATH_INFO'] ] end end
Slide 96: Run it
Slide 97: my_app.ru
Slide 98: run MyApp.new
Slide 99: map '/other' do run OtherApp.new end run MyApp.new
Slide 100: use Rack::CommonLogger map '/other' do run OtherApp.new end run MyApp.new
Slide 101: thin start -R my_app.ru
Slide 102: Ebb
Slide 103: ))
Slide 104: A random feed feed feed entry Eating cookies, yummy!
Slide 105: A random feed feed feed entry Eating cookies, yummy!
Slide 106: self.demo! :code
Slide 107: Thanks! http://code.macournoyer.com/thin
Slide 108: Questions ?



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)