]> Dogcows Code - chaz/talk-introduction-to-psgi/blobdiff - slides.html
fix fonts
[chaz/talk-introduction-to-psgi] / slides.html
index fef0bc2a56e47c841dfd48358d97a74927100f8d..c5390b0e0c588ac1ba7fa22cfad90b07d4f023a6 100644 (file)
@@ -216,7 +216,7 @@ layout: true
 
 ---
 
-### Hypertext Transfer Protocol
+### **H**yper**t**ext **T**ransfer **P**rotocol
 
 --
 - Invented by Tim Berners-Lee in 1989, first specified as [HTTP 0.9](https://www.w3.org/Protocols/HTTP/AsImplemented.html) in 1991.
@@ -542,7 +542,7 @@ layout: true
 
 ---
 
-### Common Gateway Interface
+### **C**ommon **G**ateway **I**nterface
 
 --
 - Created by the NCSA in 1993.
@@ -581,25 +581,25 @@ print "Your IP address is ${client_ip}.";
 
 .condensed[
 .col[
-- AUTH_TYPE
-- CONTENT_LENGTH
-- CONTENT_TYPE
-- GATEWAY_INTERFACE
-- PATH_INFO
-- PATH_TRANSLATED
-- QUERY_STRING
-- REMOTE_ADDR
-- REMOTE_HOST
+- `AUTH_TYPE`
+- `CONTENT_LENGTH`
+- `CONTENT_TYPE`
+- `GATEWAY_INTERFACE`
+- `PATH_INFO`
+- `PATH_TRANSLATED`
+- `QUERY_STRING`
+- `REMOTE_ADDR`
+- `REMOTE_HOST`
 ]
 .col[
-- REMOTE_IDENT
-- REMOTE_USER
-- REQUEST_METHOD
-- SCRIPT_NAME
-- SERVER_NAME
-- SERVER_PORT
-- SERVER_PROTOCOL
-- SERVER_SOFTWARE
+- `REMOTE_IDENT`
+- `REMOTE_USER`
+- `REQUEST_METHOD`
+- `SCRIPT_NAME`
+- `SERVER_NAME`
+- `SERVER_PORT`
+- `SERVER_PROTOCOL`
+- `SERVER_SOFTWARE`
 - other "protocol-specific" variables
 ]
 ]
@@ -621,9 +621,9 @@ print "Your IP address is ${client_ip}.";
 
 .condensed[
 .col[
-- Content-Type
-- Location
-- Status
+- `Content-Type`
+- `Location`
+- `Status`
 - other "protocol-specific" header fields
 ]
 ]
@@ -1198,38 +1198,38 @@ layout: true
 
 .condensed[
 .col[
-- HTTP_ACCEPT
-- HTTP_ACCEPT_ENCODING
-- HTTP_ACCEPT_LANGUAGE
-- HTTP_CACHE_CONTROL
-- HTTP_CONNECTION
-- HTTP_DNT
-- HTTP_HOST
-- HTTP_USER_AGENT
-- PATH_INFO
-- QUERY_STRING 
-- REMOTE_ADDR
-- REMOTE_PORT
-- REQUEST_METHOD
-- REQUEST_URI
-- SCRIPT_NAME
+- `HTTP_ACCEPT`
+- `HTTP_ACCEPT_ENCODING`
+- `HTTP_ACCEPT_LANGUAGE`
+- `HTTP_CACHE_CONTROL`
+- `HTTP_CONNECTION`
+- `HTTP_DNT`
+- `HTTP_HOST`
+- `HTTP_USER_AGENT`
+- `PATH_INFO`
+- `QUERY_STRING `
+- `REMOTE_ADDR`
+- `REMOTE_PORT`
+- `REQUEST_METHOD`
+- `REQUEST_URI`
+- `SCRIPT_NAME`
 ]
 .col[
-- SERVER_NAME
-- SERVER_PORT
-- SERVER_PROTOCOL
-- psgi.errors
-- psgi.input
-- psgi.multiprocess    
-- psgi.multithread     
-- psgi.nonblocking     
-- psgi.run_once        
-- psgi.streaming
-- psgi.url_scheme
-- psgi.version
-- psgix.harakiri
-- psgix.input.buffered
-- psgix.io
+- `SERVER_NAME`
+- `SERVER_PORT`
+- `SERVER_PROTOCOL`
+- `psgi.errors`
+- `psgi.input`
+- `psgi.multiprocess`
+- `psgi.multithread`
+- `psgi.nonblocking`
+- `psgi.run_once`
+- `psgi.streaming`
+- `psgi.url_scheme`
+- `psgi.version`
+- `psgix.harakiri`
+- `psgix.input.buffered`
+- `psgix.io`
 ]
 ]
 
@@ -1237,38 +1237,38 @@ layout: true
 
 .condensed[
 .col[
-- .highlight[HTTP_ACCEPT]
-- .highlight[HTTP_ACCEPT_ENCODING]
-- .highlight[HTTP_ACCEPT_LANGUAGE]
-- .highlight[HTTP_CACHE_CONTROL]
-- .highlight[HTTP_CONNECTION]
-- .highlight[HTTP_DNT]
-- .highlight[HTTP_HOST]
-- .highlight[HTTP_USER_AGENT]
-- .highlight[PATH_INFO]
-- .highlight[QUERY_STRING ]
-- .highlight[REMOTE_ADDR]
-- .highlight[REMOTE_PORT]
-- .highlight[REQUEST_METHOD]
-- .highlight[REQUEST_URI]
-- .highlight[SCRIPT_NAME]
+- .highlight[`HTTP_ACCEPT`]
+- .highlight[`HTTP_ACCEPT_ENCODING`]
+- .highlight[`HTTP_ACCEPT_LANGUAGE`]
+- .highlight[`HTTP_CACHE_CONTROL`]
+- .highlight[`HTTP_CONNECTION`]
+- .highlight[`HTTP_DNT`]
+- .highlight[`HTTP_HOST`]
+- .highlight[`HTTP_USER_AGENT`]
+- .highlight[`PATH_INFO`]
+- .highlight[`QUERY_STRING `]
+- .highlight[`REMOTE_ADDR`]
+- .highlight[`REMOTE_PORT`]
+- .highlight[`REQUEST_METHOD`]
+- .highlight[`REQUEST_URI`]
+- .highlight[`SCRIPT_NAME`]
 ]
 .col[
-- .highlight[SERVER_NAME]
-- .highlight[SERVER_PORT]
-- .highlight[SERVER_PROTOCOL]
-- psgi.errors
-- psgi.input
-- psgi.multiprocess    
-- psgi.multithread     
-- psgi.nonblocking     
-- psgi.run_once        
-- psgi.streaming
-- psgi.url_scheme
-- psgi.version
-- psgix.harakiri
-- psgix.input.buffered
-- psgix.io
+- .highlight[`SERVER_NAME`]
+- .highlight[`SERVER_PORT`]
+- .highlight[`SERVER_PROTOCOL`]
+- `psgi.errors`
+- `psgi.input`
+- `psgi.multiprocess`
+- `psgi.multithread`
+- `psgi.nonblocking`
+- `psgi.run_once`
+- `psgi.streaming`
+- `psgi.url_scheme`
+- `psgi.version`
+- `psgix.harakiri`
+- `psgix.input.buffered`
+- `psgix.io`
 ]
 ]
 
@@ -1276,38 +1276,38 @@ layout: true
 
 .condensed[
 .col[
-- HTTP_ACCEPT
-- HTTP_ACCEPT_ENCODING
-- HTTP_ACCEPT_LANGUAGE
-- HTTP_CACHE_CONTROL
-- HTTP_CONNECTION
-- HTTP_DNT
-- HTTP_HOST
-- HTTP_USER_AGENT
-- PATH_INFO
-- QUERY_STRING 
-- REMOTE_ADDR
-- REMOTE_PORT
-- REQUEST_METHOD
-- REQUEST_URI
-- SCRIPT_NAME
+- `HTTP_ACCEPT`
+- `HTTP_ACCEPT_ENCODING`
+- `HTTP_ACCEPT_LANGUAGE`
+- `HTTP_CACHE_CONTROL`
+- `HTTP_CONNECTION`
+- `HTTP_DNT`
+- `HTTP_HOST`
+- `HTTP_USER_AGENT`
+- `PATH_INFO`
+- `QUERY_STRING `
+- `REMOTE_ADDR`
+- `REMOTE_PORT`
+- `REQUEST_METHOD`
+- `REQUEST_URI`
+- `SCRIPT_NAME`
 ]
 .col[
-- SERVER_NAME
-- SERVER_PORT
-- SERVER_PROTOCOL
-- .highlight[psgi.errors]
-- .highlight[psgi.input]
-- .highlight[psgi.multiprocess         ]
-- .highlight[psgi.multithread  ]
-- .highlight[psgi.nonblocking  ]
-- .highlight[psgi.run_once     ]
-- .highlight[psgi.streaming]
-- .highlight[psgi.url_scheme]
-- .highlight[psgi.version]
-- .highlight[psgix.harakiri]
-- .highlight[psgix.input.buffered]
-- .highlight[psgix.io]
+- `SERVER_NAME`
+- `SERVER_PORT`
+- `SERVER_PROTOCOL`
+- .highlight[`psgi.errors`]
+- .highlight[`psgi.input`]
+- .highlight[`psgi.multiprocess`]
+- .highlight[`psgi.multithread`]
+- .highlight[`psgi.nonblocking`]
+- .highlight[`psgi.run_once`]
+- .highlight[`psgi.streaming`]
+- .highlight[`psgi.url_scheme`]
+- .highlight[`psgi.version`]
+- .highlight[`psgix.harakiri`]
+- .highlight[`psgix.input.buffered`]
+- .highlight[`psgix.io`]
 ]
 ]
 
@@ -1381,7 +1381,7 @@ enable 'LogDispatch', logger => $logger;
 ### [`XSRFBlock`](https://metacpan.org/pod/Plack::Middleware::XSRFBlock)
 
 ```perl
-enable 'XSRFBlock';
+enable 'XSRFBlock', cookie_options => { httponly => 1 };
 ```
 
 - Blocking cross-site request forgery couldn't be easier.
@@ -1405,7 +1405,7 @@ layout: false
 ![CPAN](img/cpan.png)
 ]
 
-## Plack modules on the CPAN in July 2016
+## Plack modules in July 2016
 
 **10** `Plack-Handler-*` distributions
 
@@ -1417,7 +1417,17 @@ layout: false
 
 ## Parting Thoughts
 
-- You should write middleware!
+- PSGI also specifies a way to delay or stream responses to the server.
+
+???
+- It's kind of complicated, but you can read the spec to learn more.
+- Read the source code of various apps and middlewares to see how it works in practice.
+
+--
+- There are tons of great apps and middleware on the CPAN.
+
+--
+- Consider writing some of your app as a middleware.
 
 ???
 - The concept and implementation of middleware is cool.
@@ -1430,13 +1440,6 @@ layout: false
   - Sessions
   - Rate limiters
 
---
-- PSGI also specifies a way to delay or stream responses to the server.
-
-???
-- It's kind of complicated, but you can read the spec to learn more.
-- Read the source code of various apps and middlewares to see how it works in practice.
-
 ---
 
 class:  center, middle
This page took 0.03047 seconds and 4 git commands to generate.