X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftalk-introduction-to-psgi;a=blobdiff_plain;f=slides.html;h=430a5667a47c1d0fefd5090f20b89fa258f69a4a;hp=61f2b9c68ed9043130856df539d16457969f131e;hb=HEAD;hpb=0e27d4aad0b3f460bcdc7cd243c4ef035884db2e diff --git a/slides.html b/slides.html index 61f2b9c..430a566 100644 --- a/slides.html +++ b/slides.html @@ -19,6 +19,23 @@ name: bluehost --- +class: center, middle +name: perl-code + +```perl +@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ +@p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord +($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&& +close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print +``` + +Source: [Just Another Perl / Unix Hacker](http://perl.plover.com/obfuscated/) by Mark Jason Dominus + +??? +This is a Perl presentation, so I hope code that looks like this doesn't frighten you. + +--- + ## Agenda - Answer "What is PSGI?" @@ -1041,6 +1058,133 @@ my $app = sub { --- +class: env +layout: true + +## PSGI Environment + +--- + +.condensed.marginfix[ +.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` +] +.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` +] +] + +--- + +.condensed.marginfix[ +.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`] +] +.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` +] +] + +--- + +.condensed.marginfix[ +.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` +] +.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`] +] +] + +??? +- Harakiri is a form of Japanese ritual suicide by disembowelment. + +--- + layout: false ## Benefits of PSGI @@ -1227,130 +1371,6 @@ my $app = sub { --- -class: env -layout: true - -## Plack `$env` - ---- - -.condensed.marginfix[ -.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` -] -.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` -] -] - ---- - -.condensed.marginfix[ -.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`] -] -.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` -] -] - ---- - -.condensed.marginfix[ -.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` -] -.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`] -] -] - ---- - layout: false ## Plack Handlers @@ -1435,6 +1455,9 @@ enable 'RedirectSSL'; - Redirects from http to https (or backwards, if configured). - Can also set HSTS header with configurable `max-age`. +??? +- HSTS = HTTP Strict Transport Security + --- layout: false