meshu thin & rack
DESCRIPTION
Marc-Andre Cournoyer MeshU presentation on Thin & RackTRANSCRIPT
![Page 1: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/1.jpg)
Hi!
![Page 2: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/2.jpg)
![Page 3: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/3.jpg)
![Page 4: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/4.jpg)
![Page 5: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/5.jpg)
beard
![Page 6: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/6.jpg)
beard
![Page 7: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/7.jpg)
Thin & Rack
![Page 8: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/8.jpg)
© jezebel.com - http://www.flickr.com/photos/lamazone/2366616647/
![Page 9: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/9.jpg)
http://www.mykaussie.com/images/tshirt7.jpg
![Page 10: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/10.jpg)
Sorry!
![Page 11: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/11.jpg)
Story
![Page 12: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/12.jpg)
![Page 13: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/13.jpg)
![Page 14: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/14.jpg)
![Page 15: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/15.jpg)
![Page 16: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/16.jpg)
![Page 17: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/17.jpg)
A random feed feed feed entry
Eating cookies, yummy!
![Page 18: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/18.jpg)
![Page 19: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/19.jpg)
![Page 20: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/20.jpg)
![Page 21: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/21.jpg)
Zzzz...
![Page 22: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/22.jpg)
http://dancingspoon.typepad.com/espresso.jpg
![Page 23: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/23.jpg)
![Page 24: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/24.jpg)
OMGWTFBBQ!!11!!1
![Page 25: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/25.jpg)
![Page 26: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/26.jpg)
![Page 27: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/27.jpg)
![Page 28: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/28.jpg)
![Page 29: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/29.jpg)
...
![Page 30: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/30.jpg)
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"
![Page 31: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/31.jpg)
A random feed feed feed entry
Eating cookies, yummy!
![Page 32: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/32.jpg)
Cache?
![Page 33: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/33.jpg)
Cache?
![Page 34: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/34.jpg)
random
![Page 35: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/35.jpg)
(
![Page 36: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/36.jpg)
![Page 37: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/37.jpg)
![Page 38: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/38.jpg)
Web Server
![Page 39: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/39.jpg)
Event Driven Web Server
![Page 40: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/40.jpg)
![Page 41: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/41.jpg)
![Page 42: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/42.jpg)
Process-Based
![Page 43: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/43.jpg)
So what?
![Page 44: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/44.jpg)
server = TCPServer.new('localhost', 3000)
loop do client = server.accept
puts client.read
client.close
end
![Page 45: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/45.jpg)
server = TCPServer.new('localhost', 3000)
loop do client = server.accept
puts client.read
client.close
end
![Page 46: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/46.jpg)
ServerClient
![Page 47: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/47.jpg)
ServerClient Serverread
Server
![Page 48: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/48.jpg)
server = TCPServer.new('localhost', 3000)
loop do client = server.accept
puts client.read
client.close
end
![Page 49: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/49.jpg)
server = TCPServer.new('localhost', 3000)
loop do client = server.accept Thread.new do puts client.read
client.close endend
![Page 50: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/50.jpg)
ServerClientClientClient
![Page 51: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/51.jpg)
ServerClient Thread
Client Thread
Client Thread
![Page 52: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/52.jpg)
Time
![Page 53: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/53.jpg)
Resources
![Page 54: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/54.jpg)
(?)
![Page 55: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/55.jpg)
@kernel notify me if readable
![Page 56: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/56.jpg)
Non-Blocking Sockets
![Page 57: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/57.jpg)
I/O Multiplexing
![Page 58: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/58.jpg)
OMGWTFBBQ!!11!!1
![Page 59: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/59.jpg)
F******
![Page 60: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/60.jpg)
You lost me at I/O
![Page 61: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/61.jpg)
Complex
![Page 62: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/62.jpg)
http://rev.rubyforge.org/http://rubyeventmachine.com/
http://software.schmorp.de/pkg/libev.html
http://code.google.com/p/pyev/
http://twistedmatrix.com/
![Page 63: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/63.jpg)
Event Driven
![Page 64: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/64.jpg)
Event Driven Web Server
![Page 65: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/65.jpg)
server = TCPServer.new('localhost', 3000)
server.on_readable do client = server.accept client.on_readable do puts client.read
client.close endend
![Page 66: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/66.jpg)
More Connections
![Page 67: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/67.jpg)
Less Memory
![Page 68: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/68.jpg)
Faster
![Page 69: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/69.jpg)
![Page 70: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/70.jpg)
(
![Page 71: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/71.jpg)
HTTP
![Page 72: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/72.jpg)
Simple
![Page 73: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/73.jpg)
Flexible
![Page 74: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/74.jpg)
Elegant
![Page 75: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/75.jpg)
Beautiful
![Page 76: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/76.jpg)
and
![Page 77: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/77.jpg)
Sexy
![Page 78: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/78.jpg)
Sexy
GET /love HTTP/1.1POST /hot HTTP/1.1GET /it_on HTTP/1.1
![Page 79: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/79.jpg)
Request Response
![Page 80: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/80.jpg)
Request
![Page 81: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/81.jpg)
POST /path HTTP/1.1Host: localhostConnection: closeContent-Length: 6
ohaie!
![Page 82: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/82.jpg)
Response
![Page 83: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/83.jpg)
HTTP/1.1 200 OKContent-Length: 34Content-Type: text/html
<html> <h1>kthxbaie</h1></html>
![Page 84: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/84.jpg)
![Page 85: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/85.jpg)
![Page 86: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/86.jpg)
![Page 87: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/87.jpg)
API
![Page 88: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/88.jpg)
HTTP
![Page 89: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/89.jpg)
WSGI
![Page 90: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/90.jpg)
API
![Page 91: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/91.jpg)
line1
![Page 92: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/92.jpg)
proc { |env| [200, {}, "kthxbai"] }
![Page 93: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/93.jpg)
env = { "REQUEST_METHOD" => "POST", "PATH_INFO" => "/", "HTTP_VERSION" => "1.1", "HTTP_HOST" => "localhost", "HTTP_CONNECTION" => "close", "CONTENT_LENGTH" => "6"}
POST / HTTP/1.1Host: localhostConnection: closeContent-Length: 6
ohaie!
![Page 94: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/94.jpg)
HTTP/1.1 200 OKContent-Length: 34Content-Type: text/html
<html> <h1>kthxbaie</h1></html>
[ 200, { "Content-Length" => "34", "Content-Type" => "text/html" }, [ "<html>", " <h1>kthxbaie</h1>", "</html>" ]]
![Page 95: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/95.jpg)
class MyApp def call(env) [ 200, { 'Content-Type' => 'text/plain' }, "you requested " + env['PATH_INFO'] ] endend
![Page 96: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/96.jpg)
Run it
![Page 97: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/97.jpg)
my_app.ru
![Page 98: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/98.jpg)
run MyApp.new
![Page 99: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/99.jpg)
map '/other' do run OtherApp.newend
run MyApp.new
![Page 100: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/100.jpg)
use Rack::CommonLogger
map '/other' do run OtherApp.newend
run MyApp.new
![Page 101: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/101.jpg)
thin start -R my_app.ru
![Page 102: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/102.jpg)
Ebb
![Page 103: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/103.jpg)
))
![Page 104: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/104.jpg)
A random feed feed feed entry
Eating cookies, yummy!
![Page 105: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/105.jpg)
A random feed feed feed entry
Eating cookies, yummy!
![Page 106: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/106.jpg)
self.demo! :code
![Page 107: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/107.jpg)
Thanks!http://code.macournoyer.com/thin
![Page 108: MeshU Thin & Rack](https://reader033.vdocuments.us/reader033/viewer/2022052904/557d9b8ed8b42a16698b4e06/html5/thumbnails/108.jpg)
Questions ?