Suche senden
Hochladen
Rack
•
Als KEY, PDF herunterladen
•
0 gefällt mir
•
1,063 views
S
shaokun
Folgen
广州 ruby 爱好者聚会上五分钟 topic http://github.com/shaokun/rack-demo
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 21
Jetzt herunterladen
Empfohlen
HTTPS and Ansible
HTTPS and Ansible
Jeff Geerling
Clack: glue for web apps
Clack: glue for web apps
fukamachi
Woo: Writing a fast web server
Woo: Writing a fast web server
fukamachi
Ansible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL Meetup
Jeff Geerling
Server Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.js
Jeff Geerling
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Fastly
High Performance Drupal
High Performance Drupal
Jeff Geerling
Ansible
Ansible
Vishal Yadav
Empfohlen
HTTPS and Ansible
HTTPS and Ansible
Jeff Geerling
Clack: glue for web apps
Clack: glue for web apps
fukamachi
Woo: Writing a fast web server
Woo: Writing a fast web server
fukamachi
Ansible 101 - Presentation at Ansible STL Meetup
Ansible 101 - Presentation at Ansible STL Meetup
Jeff Geerling
Server Check.in case study - Drupal and Node.js
Server Check.in case study - Drupal and Node.js
Jeff Geerling
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Altitude SF 2017: Advanced VCL: Shielding and Clustering
Fastly
High Performance Drupal
High Performance Drupal
Jeff Geerling
Ansible
Ansible
Vishal Yadav
Docker With Asp.net Core
Docker With Asp.net Core
Fatih Şimşek
Provisioning Rails Servers with Ansible
Provisioning Rails Servers with Ansible
Radamanthus Batnag
Introduction to CQ5
Introduction to CQ5
Michele Mostarda
RESTFul development with Apache sling
RESTFul development with Apache sling
Sergii Fesenko
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io df14
Kevin Poorman
Drupal and Elasticsearch
Drupal and Elasticsearch
Nikolay Ignatov
Ansible E2E Testing
Ansible E2E Testing
Roberto Perez-Rodriguez
Lisp in the Cloud
Lisp in the Cloud
Mike Travers
Boulder dev ops-meetup-11-2012-rundeck
Boulder dev ops-meetup-11-2012-rundeck
Will Sterling
Ansible + WordPress
Ansible + WordPress
Alan Lok
Rails with mongodb
Rails with mongodb
Kosuke Matsuda
Continuous Deployment with Jenkins and Salt
Continuous Deployment with Jenkins and Salt
Anirban Saha
Ansible Case Studies
Ansible Case Studies
Greg DeKoenigsberg
Drupal, Android and iPhone
Drupal, Android and iPhone
Alexandru Badiu
What is new in icinga2
What is new in icinga2
Icinga
Steamlining your puppet development workflow
Steamlining your puppet development workflow
Tomas Doran
Understanding salt modular sub-systems and customization
Understanding salt modular sub-systems and customization
jasondenning
Scaling and Managing Selenium Grid
Scaling and Managing Selenium Grid
dimakovalenko
Introduction to Systems Management with SaltStack
Introduction to Systems Management with SaltStack
Craig Sebenik
In-browser storage and me
In-browser storage and me
Jason Casden
Git flow
Git flow
shaokun
Rest Ruby On Rails
Rest Ruby On Rails
shaokun
Weitere ähnliche Inhalte
Was ist angesagt?
Docker With Asp.net Core
Docker With Asp.net Core
Fatih Şimşek
Provisioning Rails Servers with Ansible
Provisioning Rails Servers with Ansible
Radamanthus Batnag
Introduction to CQ5
Introduction to CQ5
Michele Mostarda
RESTFul development with Apache sling
RESTFul development with Apache sling
Sergii Fesenko
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io df14
Kevin Poorman
Drupal and Elasticsearch
Drupal and Elasticsearch
Nikolay Ignatov
Ansible E2E Testing
Ansible E2E Testing
Roberto Perez-Rodriguez
Lisp in the Cloud
Lisp in the Cloud
Mike Travers
Boulder dev ops-meetup-11-2012-rundeck
Boulder dev ops-meetup-11-2012-rundeck
Will Sterling
Ansible + WordPress
Ansible + WordPress
Alan Lok
Rails with mongodb
Rails with mongodb
Kosuke Matsuda
Continuous Deployment with Jenkins and Salt
Continuous Deployment with Jenkins and Salt
Anirban Saha
Ansible Case Studies
Ansible Case Studies
Greg DeKoenigsberg
Drupal, Android and iPhone
Drupal, Android and iPhone
Alexandru Badiu
What is new in icinga2
What is new in icinga2
Icinga
Steamlining your puppet development workflow
Steamlining your puppet development workflow
Tomas Doran
Understanding salt modular sub-systems and customization
Understanding salt modular sub-systems and customization
jasondenning
Scaling and Managing Selenium Grid
Scaling and Managing Selenium Grid
dimakovalenko
Introduction to Systems Management with SaltStack
Introduction to Systems Management with SaltStack
Craig Sebenik
In-browser storage and me
In-browser storage and me
Jason Casden
Was ist angesagt?
(20)
Docker With Asp.net Core
Docker With Asp.net Core
Provisioning Rails Servers with Ansible
Provisioning Rails Servers with Ansible
Introduction to CQ5
Introduction to CQ5
RESTFul development with Apache sling
RESTFul development with Apache sling
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io df14
Drupal and Elasticsearch
Drupal and Elasticsearch
Ansible E2E Testing
Ansible E2E Testing
Lisp in the Cloud
Lisp in the Cloud
Boulder dev ops-meetup-11-2012-rundeck
Boulder dev ops-meetup-11-2012-rundeck
Ansible + WordPress
Ansible + WordPress
Rails with mongodb
Rails with mongodb
Continuous Deployment with Jenkins and Salt
Continuous Deployment with Jenkins and Salt
Ansible Case Studies
Ansible Case Studies
Drupal, Android and iPhone
Drupal, Android and iPhone
What is new in icinga2
What is new in icinga2
Steamlining your puppet development workflow
Steamlining your puppet development workflow
Understanding salt modular sub-systems and customization
Understanding salt modular sub-systems and customization
Scaling and Managing Selenium Grid
Scaling and Managing Selenium Grid
Introduction to Systems Management with SaltStack
Introduction to Systems Management with SaltStack
In-browser storage and me
In-browser storage and me
Andere mochten auch
Git flow
Git flow
shaokun
Rest Ruby On Rails
Rest Ruby On Rails
shaokun
More to RoC weibo
More to RoC weibo
shaokun
iOS 图片浏览器 DIY
iOS 图片浏览器 DIY
shaokun
Rails web api 开发
Rails web api 开发
shaokun
VIM for the PHP Developer
VIM for the PHP Developer
John Congdon
WebSocket 实时推特流
WebSocket 实时推特流
shaokun
Rails Engine | Modular application
Rails Engine | Modular application
mirrec
Namespace less engine
Namespace less engine
shaokun
Andere mochten auch
(9)
Git flow
Git flow
Rest Ruby On Rails
Rest Ruby On Rails
More to RoC weibo
More to RoC weibo
iOS 图片浏览器 DIY
iOS 图片浏览器 DIY
Rails web api 开发
Rails web api 开发
VIM for the PHP Developer
VIM for the PHP Developer
WebSocket 实时推特流
WebSocket 实时推特流
Rails Engine | Modular application
Rails Engine | Modular application
Namespace less engine
Namespace less engine
Ähnlich wie Rack
CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009
Jason Davies
Rails Performance
Rails Performance
Wen-Tien Chang
Node js quick-tour_v2
Node js quick-tour_v2
http403
Node js quick tour v2
Node js quick tour v2
Wyatt Fang
Node js quick-tour_v2
Node js quick-tour_v2
tianyi5212222
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
Soroush Dalili
introduction to node.js
introduction to node.js
orkaplan
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
Stuart (Pid) Williams
Top 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud Developers
Brian Huff
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
Amazon Web Services Japan
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
Alona Mekhovova
Rest ful tools for lazy experts
Rest ful tools for lazy experts
ColdFusionConference
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
Ortus Solutions, Corp
Building APIs with NodeJS on Microsoft Azure Websites - Redmond
Building APIs with NodeJS on Microsoft Azure Websites - Redmond
Rick G. Garibay
Hacking Adobe Experience Manager sites
Hacking Adobe Experience Manager sites
Mikhail Egorov
Доклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDays
ru_Parallels
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010
Rich Bowen
GitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by Scala
takezoe
Ricardo Sanchez - Ruby projects of interest for devops
Ricardo Sanchez - Ruby projects of interest for devops
SVDevOps
Ruby projects of interest for DevOps
Ruby projects of interest for DevOps
Ricardo Sanchez
Ähnlich wie Rack
(20)
CouchDB for Web Applications - Erlang Factory London 2009
CouchDB for Web Applications - Erlang Factory London 2009
Rails Performance
Rails Performance
Node js quick-tour_v2
Node js quick-tour_v2
Node js quick tour v2
Node js quick tour v2
Node js quick-tour_v2
Node js quick-tour_v2
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
introduction to node.js
introduction to node.js
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
Top 10 HTML5 Features for Oracle Cloud Developers
Top 10 HTML5 Features for Oracle Cloud Developers
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
Using and scaling Rack and Rack-based middleware
Using and scaling Rack and Rack-based middleware
Rest ful tools for lazy experts
Rest ful tools for lazy experts
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
Building APIs with NodeJS on Microsoft Azure Websites - Redmond
Building APIs with NodeJS on Microsoft Azure Websites - Redmond
Hacking Adobe Experience Manager sites
Hacking Adobe Experience Manager sites
Доклад Михаила Егорова на PHDays
Доклад Михаила Егорова на PHDays
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010
GitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by Scala
Ricardo Sanchez - Ruby projects of interest for devops
Ricardo Sanchez - Ruby projects of interest for devops
Ruby projects of interest for DevOps
Ruby projects of interest for DevOps
Kürzlich hochgeladen
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
Ingrid Airi González
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
Wes McKinney
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Farhan Tariq
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
DianaGray10
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
Hiroshi SHIBATA
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
MounikaPolabathina
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
Nathaniel Shimoni
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
UiPathCommunity
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
Knoldus Inc.
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Ravi Sanghani
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Alkin Tezuysal
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
AliaaTarek5
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
LoriGlavin3
Kürzlich hochgeladen
(20)
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Rack
1.
Rack
Shaokun Wu shaokun@kudelabs.com
2.
•
web framework • frameworkless web application
3.
•
web servers WEBrick, Mongrel, Thin, Passenger... • web server handlers
4.
??? •n
frameworks •m web servers • web server handlers
5.
n*m
6.
n * m
=> n + m
7.
HTTP Request => Response
8.
Request • GET /
HTTP/1.1 User-Agent: curl/7.12.2 ... Host: ruby-lang.org Pragma: no-cache Accept: */*
9.
Response •
HTTP/1.1 302 Found • Date: Sat, 27 Oct 2007 10:07:53 GMT Server: Apache/2.0.54 (Debian GNU/Linux) mod_ssl/2.0.54 OpenSSL/0.9.7e Location: http://www.ruby-lang.org/ Content-Length: 209 Content-Type: text/html; charset=iso-8859-1 • <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="http://www.ruby-lang.org/">here</ a>.</p> </body></html>
10.
Response • Status Code
to_i • Headers each yields key-value pairs • Body each yields strings
11.
[status, headers, body]
12.
Rack • •
HTTP Ruby API
13.
Hello Rack! •
lambda { |env| [200, # Status Code {"Content-Type"=>"text/plain"}, # Headers ["Hello, world!"]] # Body }
14.
Rack Handlers •
CGI • EventedMongrel • FastCGI • LSWS • Mongrel • SCGI • SwiftipliedMongrel • Thin • WEBrick
15.
•
Rack::Cascade • Rack::CommonLogger • Rack::Lint • Rack::Recursive • Rack::Reloader • Rack::ShowException • Rack::ShowStatus • Rack::Static • Rack::URLMap • http://coderack.org/middlewares
16.
Let’s code!
17.
Hello Rack!
18.
Response Timer
19.
.NET or J2EE in
one second
20.
No IE 6
Please!!!!!!!!!!
21.
Thanks! shaokun@kudelabs.com
Hinweis der Redaktion
Jetzt herunterladen