Plack perl superglue for web frameworks and servers

Tatsuhiko Miyagawa
Tatsuhiko MiyagawaSoftware Engineer
Plack
Superglue for Perl Web Frameworks
         Tatsuhiko Miyagawa
           Perl Oasis 2010
Tatsuhiko Miyagawa

• Japanese, lives in San Francisco
• Works at Six Apart
• 170+ CPAN modules (id:MIYAGAWA)
• @miyagawa
• bulknews.typepad.com
Background
40 slides of why we need Plack.
   May I fast-forward them?
      (since Stevan spoiled)
Web Frameworks
Maypole Mason Mojo Sledge Catalyst Spoon PageKit
 AxKit Egg Gantry Continuity Solstice Mojolicious
Tripletail Konstrukt Reaction Jifty Cyclone3 WebGUI
  OpenInteract Squatting Dancer CGI::Application
 Nanoa Ark Angelos Noe Schenker Tatsumaki Amon
   Apache2::WebApp Web::Simple Apache2::REST
                  SweetPea Hydrant
Most of them run on
 mod_perl and CGI
Some run on FastCGI
Some run standalone
Very few supports
  non-blocking
Because:
No common server
environment layers
CGI.pm
Runs “fine” on:
    CGI, FastCGI, mod_perl (1 & 2)
Standalone (with HTTP::Server::Simple)
CGI.pm = LCD
   It’s also Perl core
:-(
Catalyst
The most popular framework as of today
Catalyst::Engine::*
            Server abstractions.
Well supported Apache, FCGI and Standalone
                No CGI.pm
CGI.pm
  Jifty, CGI::Application, Spoon


mod_perl centric
Mason, Sledge, PageKit, WebGUI


       Adapters
  Catalyst, Maypole, Squatting
Problems:
       Duplicated efforts
No fair performance evaluations
Question:
Can we share?
Attempt:
HTTP::Engine
HTTP::Engine
Lots of adapters (FCGI, Apache2, POE)
     Clean Request/Response API
Written by Yappo, tokuhirom and others
Problems
Mo[ou]se everywhere
 Moose is non-realistic in CGI environment
 Mouse is lovely but has its own problems :p
Monolithic
All implementations share HTTP::Engine roles
and builders, which is sometimes hard to adapt
      and has less place for optimizations.
APIs everywhere
Most frameworks have their request/response API
          Sometimes there are gaps.
    Annoying to write bridges and wrappers
Solution
Steal great stuff
from Python/Ruby
WSGI (Python)
   Rack
WSGI (PEP-333)
mod_wsgi, Paste, AppEngine
 Django, CherryPy, Pylons
Plack perl superglue for web frameworks and servers
Rack
Passenger, thin, Unicorn, Mongrel, Heroku
            Rails, Merb, Sinatra
Plack perl superglue for web frameworks and servers
WSGI/Rack
 Completely separate interface
from the actual implementation
Approach
Split HTTP::Engine
 into three parts
Interface
       Servers
Utils & Middleware
PSGI (interface)
HTTP::Server::PSGI etc. (servers)
     Plack (utils & middleware)
PSGI
Perl Web Server Gateway Interface
Interface
WARNING
You DON’T need to care about these
   interface details unless you are
framework or middleware developers
   (But i guess many of you are ...)
# WSGI
def hello(environ, start_response):
 start_response(“200 OK”, [
   (‘Content-Type’, ‘text/plain’)
 ])
 return [“Hello World”]
# Rack
class Hello
 def call(env)
   return [
     200,
     { “Content-Type” => ”text/plain” },
     [“Hello World”]
   ]
 end
end
# PSGI
my $app = sub {
   my $env = shift;
   return [
      200,
      [ ‘Content-Type’, ‘text/plain’ ],
      [ ‘Hello World’ ],
   ];
};
PSGI application
   code reference
   $app = sub {...};
my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};
environment hash
$env: CGI-like env variables
+ psgi.input, psgi.errors etc.
my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};
Response
 array ref with three elements
status code, headers (array ref)
and body (IO-like or array ref)
my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};
$body
  IO::Handle-like
getline() and close()
IO::Handle::Util
Easily turns perl code ref into a IO::Handle
Streaming interface
my $app = sub {
  my $env = shift;
  return sub {
    my $respond = shift;
    # You could do some event loop
    # to delay response (e.g. Comet)
    $respond->([ $status, $header, $body ]);
  };
};
my $app = sub {
  my $env = shift;
  return sub {
    my $respond = shift;
    my $w = $respond->([ $status, $header ]);
    $w->write($body);
    $w->write($body);
    ...
    $w->close;
  };
};
Streaming Interface
 Originally designed for non-blocking servers
Now available for most servers incl. CGI, Apache
Catalyst            CGI::App              Jifty        Tatsumaki


                                                    Plack::Middleware

                               PSGI

    Plack::Handler::* (CGI, FCGI, Apache)


Apache       lighttpd       HTTP::Server::PSGI      mod_psgi   Perlbal
PSGI adaptation
Maypole Mason Mojo Sledge Catalyst Spoon PageKit
 AxKit Egg Gantry Continuity Solstice Mojolicious
Tripletail Konstrukt Reaction Jifty Cyclone3 WebGUI
  OpenInteract Squatting Dancer CGI::Application
 Nanoa Ark Angelos Noe Schenker Tatsumaki Amon
   Apache2::WebApp Web::Simple Apache2::REST
                  SweetPea Hydrant
Maypole Mason Mojo Sledge Catalyst Spoon PageKit
 AxKit Egg Gantry Continuity Solstice Mojolicious
Tripletail Konstrukt Reaction Jifty Cyclone3 WebGUI
  OpenInteract Squatting Dancer CGI::Application
 Nanoa Ark Angelos Noe Schenker Tatsumaki Amon
   Apache2::WebApp Web::Simple Apache2::REST
                  SweetPea Hydrant
Applications
MT::App, WebGUI
Plack
“PSGI toolkit”
HTTP::Server::PSGI
 Reference PSGI web server
      bundled in Plack
Very fast
 3000 QPS on standalone
15000 QPS with prefork :)
Plack::Handler
Connects PSGI apps to Web servers
 CGI, FastCGI, Apache, Standalone
Utilities
Plackup
Run PSGI app instantly from CLI
     (inspired by rackup)
Plack::Runner
            plackup backend
Use this to make CLI for your web app
Middleware
Plack perl superglue for web frameworks and servers
my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};

my $mw = sub {
   my $env = shift;
   # do something with $env
   my $res = $app->($env);
   # do something with $res;
   return $res;
};
Middleware
    Debug, Session, Runtime, Static, AccessLog,
  ConditionalGET, ErrorDocument, StackTrace,
Auth::Basic, Auth::Digest, ReverseProxy, Refresh etc.
Plack::Middleware
  reusable and extensible
  Middleware framework
 Plack::Builder DSL in .psgi
my $app = sub {
   return [ $status, $header, $body ];
};

use Plack::Builder;

builder {
  enable “Static”, root => “/htdocs”,
    path => qr!^/static/!;
  enable “Deflater”; # gzip/deflate
  $app;
}
plackup compatible
plackup -e ‘enable “Foo”;’ app.psgi
Plack::App::URLMap
    Multiplex multiple apps
 Integrated with Builder DSL
use CatApp;
use CGIApp;

my $c1 = sub { CatApp->run };
my $c2 = sub { CGIApp->run_psgi };

use Plack::Builder;

builder {
  mount “/cat” => $c1;
  mount “/cgi-app” => builder {
    enable “StackTrace”;
    $c2;
  };
}
CGI::PSGI
Easy migration from CGI.pm
CGI::Emulate::PSGI
    CGI::Compile
Easiest migration from CGI scripts (like Registry)
Plack::Request
    like libapreq (Apache::Request)
wrapper APIs for middleware developers
Plack::Test
 Unified interface to write tests
with Mock HTTP and Live HTTP
use Plack::Test;
use HTTP::Request::Common;

my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};

test_psgi app => $app, client => sub {
   my $cb = shift;
   my $req = GET “http://localhost/foo”;
   my $res = $cb->($req);
   # test $res;
};
use Plack::Test;
use HTTP::Request::Common;
$Plack::Test::Impl = “Server”;

my $app = sub {
   my $env = shift;
   return [ $status, $header, $body ];
};

test_psgi app => $app, client => sub {
   my $cb = shift;
   my $req = GET “http://localhost/foo”;
   my $res = $cb->($req);
   # test $res;
};
Test::WWW::Mechanize::PSGI
           acme++
Other PSGI Servers
Non-blocking servers
     psgi.nonblocking = true
AnyEvent, Coro, POE, Danga::Socket
Tatsumaki
 Non-blocking Web App framework
Comet, Server push, async HTTP client
http://github.com/miyagawa/Tatsumaki
Nomo
Unixy PSGI web servers with supervisors support
       http://github.com/miyagawa/Nomo
Re’em
Unicorn in Moose + FCGI::Manager
 http://github.com/perigrin/re-em
nginx embedded perl
 http://github.com/yappo/nginx-psgi-patchs
mod_psgi
http://github.com/spiritloose/mod_psgi
evpsgi
http://github.com/sekimura/evpsgi
Perlbal plugin
http://github.com/miyagawa/Perlbal-Plugin-PSGI
Catalyst            CGI::App              Jifty        Tatsumaki


                                                    Plack::Middleware

                               PSGI

    Plack::Handler::* (CGI, FCGI, Apache)


Apache       lighttpd       HTTP::Server::PSGI      mod_psgi   Perlbal
DEMO
Recent Updates
Common Confusions
“Is Plack a (new)
  framework?”
No.
Plack is intended to be used by developers for
   framework, web servers and middleware.
“But what is this
Plack::Request then?”
Ugh.
Plack::Request can be used as a micro framework.
   But our plan is to rename the existing one.
“Is Plack a web server?”
Not anymore.
Decided to give web servers ::PSGI name such as:
    HTTP::Server::PSGI, PoCo::Server::PSGI,
         AnyEvent::HTTPD::PSGI, etc.
“Implements PSGI
  = use Plack?”
Yeah, but not
 necessarily.
Future
PSGI 1.1
psgi.streaming
  becomes SHOULD (from MAY)
Will be BufferedStreaming middleware
psgi.input
read callback (for WebSockets)
psgi.logger
Optional: Log::Dispatch-ish logger object
useful for Debug and FirePHP integration
psgix.session
Optional: Session as a hash ref
      (API is in Piglet)
Plack 1.0
HTTP::Server::PSGI
 (partial) HTTP/1.1 support
   pull prefork out of core
refactoring loaders
Restarter, Shotgun, gateway.cgi
   Plack::Handler renames
Merge Plack::Request
   Becomes a library for middleware writers
Make it work better when created multiple times
Summary

• PSGI is an interface, Plack is the code.
• We have many (pretty fast) PSGI servers.
• We have adapters and tools for most web
  frameworks.
• Use it!
http://github.com/miyagawa/Plack
        http://plackperl.org/
   http://advent.plackperl.org/
      irc://irc.perl.org/#plack
BTW
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
We can fix this.
1) Help me SEO
 <a href=”http://plackperl.org/”>
(put “Perl” and “Web” here)</a>
2) More insanely:
% ls -l perlwebserver-0.3/lib/PerlWebServer/Module/
total 208
-rw-r--r-- 1 miyagawa staff 6029 Dec 15 2000 mod_cgi.pm
-rw-r--r-- 1 miyagawa staff 71770 Dec 15 2000 mod_homer.pm
-rw-r--r-- 1 miyagawa staff 5337 Jan 15 15:29 mod_psgi.pm
-rw-r--r-- 1 miyagawa staff 7394 Dec 15 2000 mod_ssi.pm
httpi: I gave up.
There is tools/phproxy which does similar things.
Questions?
1 of 127

Recommended

Plack at YAPC::NA 2010 by
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Tatsuhiko Miyagawa
3.7K views117 slides
Plack basics for Perl websites - YAPC::EU 2011 by
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011leo lapworth
18K views323 slides
Plack at OSCON 2010 by
Plack at OSCON 2010Plack at OSCON 2010
Plack at OSCON 2010Tatsuhiko Miyagawa
42K views138 slides
Building a desktop app with HTTP::Engine, SQLite and jQuery by
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
4.2K views112 slides
Intro to PSGI and Plack by
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and PlackTatsuhiko Miyagawa
4K views79 slides
Deploying Plack Web Applications: OSCON 2011 by
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
8.2K views143 slides

More Related Content

What's hot

Modern Web Development with Perl by
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with PerlDave Cross
15.8K views112 slides
Plack - LPW 2009 by
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009Tatsuhiko Miyagawa
2.4K views93 slides
Tatsumaki by
TatsumakiTatsumaki
TatsumakiTatsuhiko Miyagawa
12.5K views59 slides
Docker for Developers - PHP Detroit 2018 by
Docker for Developers - PHP Detroit 2018Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018Chris Tankersley
865 views138 slides
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery by
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
39.1K views131 slides
Using PHP Functions! (Not those functions, Google Cloud Functions) by
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Chris Tankersley
177 views72 slides

What's hot(20)

Modern Web Development with Perl by Dave Cross
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
Dave Cross15.8K views
Docker for Developers - PHP Detroit 2018 by Chris Tankersley
Docker for Developers - PHP Detroit 2018Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018
Chris Tankersley865 views
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery by Tatsuhiko Miyagawa
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa39.1K views
Using PHP Functions! (Not those functions, Google Cloud Functions) by Chris Tankersley
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)
Chris Tankersley177 views
No callbacks, No Threads - Cooperative web servers in Ruby 1.9 by Ilya Grigorik
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
Ilya Grigorik12.8K views
Modern Perl by Dave Cross
Modern PerlModern Perl
Modern Perl
Dave Cross6.6K views
A reviravolta do desenvolvimento web by Wallace Reis
A reviravolta do desenvolvimento webA reviravolta do desenvolvimento web
A reviravolta do desenvolvimento web
Wallace Reis932 views
Web frameworks don't matter by Tomas Doran
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
Tomas Doran593 views
Perl in the Internet of Things by Dave Cross
Perl in the Internet of ThingsPerl in the Internet of Things
Perl in the Internet of Things
Dave Cross4.6K views
Modern Perl for the Unfrozen Paleolithic Perl Programmer by John Anderson
Modern Perl for the Unfrozen Paleolithic  Perl ProgrammerModern Perl for the Unfrozen Paleolithic  Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
John Anderson3.9K views
DevOps tools for everyone - Vagrant, Puppet and Webmin by postrational
DevOps tools for everyone - Vagrant, Puppet and WebminDevOps tools for everyone - Vagrant, Puppet and Webmin
DevOps tools for everyone - Vagrant, Puppet and Webmin
postrational57K views
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 by Matt Gauger
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger1.8K views
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De... by Matt Gauger
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
Matt Gauger1.9K views
Webinar: Building Your First App in Node.js by MongoDB
Webinar: Building Your First App in Node.jsWebinar: Building Your First App in Node.js
Webinar: Building Your First App in Node.js
MongoDB633 views
Modern Perl Web Development with Dancer by Dave Cross
Modern Perl Web Development with DancerModern Perl Web Development with Dancer
Modern Perl Web Development with Dancer
Dave Cross2.5K views
Introduction to Apache Camel by Claus Ibsen
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
Claus Ibsen5.6K views

Viewers also liked

Perl.Hacks.On.Vim Perlchina by
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchinaguestcf9240
1.1K views225 slides
WF4 + WMI + PS + αで運用管理 by
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理Tomoyuki Obi
1.8K views53 slides
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版 by
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版You_Kinjoh
11.8K views316 slides
関西Vim勉強会#5 vimrcの書き方 by
関西Vim勉強会#5 vimrcの書き方関西Vim勉強会#5 vimrcの書き方
関西Vim勉強会#5 vimrcの書き方tsukkee _
2.4K views27 slides
Introduction To Managing VMware With PowerShell by
Introduction To Managing VMware With PowerShellIntroduction To Managing VMware With PowerShell
Introduction To Managing VMware With PowerShellHal Rottenberg
971 views25 slides
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩 by
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩Atsushi Tadokoro
2.9K views67 slides

Viewers also liked(20)

Perl.Hacks.On.Vim Perlchina by guestcf9240
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchina
guestcf92401.1K views
WF4 + WMI + PS + αで運用管理 by Tomoyuki Obi
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
Tomoyuki Obi1.8K views
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版 by You_Kinjoh
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版
HTML5の基礎と応用 ~Open Web Platform~ WebSocket / WebRTC / Web Audio API / WebGL 第二版
You_Kinjoh11.8K views
関西Vim勉強会#5 vimrcの書き方 by tsukkee _
関西Vim勉強会#5 vimrcの書き方関西Vim勉強会#5 vimrcの書き方
関西Vim勉強会#5 vimrcの書き方
tsukkee _2.4K views
Introduction To Managing VMware With PowerShell by Hal Rottenberg
Introduction To Managing VMware With PowerShellIntroduction To Managing VMware With PowerShell
Introduction To Managing VMware With PowerShell
Hal Rottenberg971 views
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩 by Atsushi Tadokoro
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩
メディア芸術基礎 II HTML5とは何か? HTML5、はじめの一歩
Atsushi Tadokoro2.9K views
開発者のための最新グループポリシー活用講座 by junichi anno
開発者のための最新グループポリシー活用講座開発者のための最新グループポリシー活用講座
開発者のための最新グループポリシー活用講座
junichi anno2.9K views
Cactiでのcliツールについて by Akio Shimizu
CactiでのcliツールについてCactiでのcliツールについて
Cactiでのcliツールについて
Akio Shimizu4.2K views
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure by Dan Kaminsky
Phreebird Suite 1.0:  Introducing the Domain Key InfrastructurePhreebird Suite 1.0:  Introducing the Domain Key Infrastructure
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
Dan Kaminsky14.5K views
Vmware esx top commands doc 9279 by logicmantra
Vmware esx top commands doc 9279Vmware esx top commands doc 9279
Vmware esx top commands doc 9279
logicmantra2.3K views
PowerShellを使用したWindows Serverの管理 by junichi anno
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
junichi anno8.7K views
開発者のためのActive Directory講座 by junichi anno
開発者のためのActive Directory講座開発者のためのActive Directory講座
開発者のためのActive Directory講座
junichi anno7.1K views
グループポリシーでWindowsファイアウォール制御 120602 by wintechq
グループポリシーでWindowsファイアウォール制御 120602グループポリシーでWindowsファイアウォール制御 120602
グループポリシーでWindowsファイアウォール制御 120602
wintechq5.1K views
Windows スクリプトセミナー 基本編 by junichi anno
Windows スクリプトセミナー 基本編Windows スクリプトセミナー 基本編
Windows スクリプトセミナー 基本編
junichi anno7.7K views
VMworld 2013: PowerCLI Best Practices - A Deep Dive by VMworld
VMworld 2013: PowerCLI Best Practices - A Deep DiveVMworld 2013: PowerCLI Best Practices - A Deep Dive
VMworld 2013: PowerCLI Best Practices - A Deep Dive
VMworld2.3K views
Building vSphere Perf Monitoring Tools by Pablo Roesch
Building vSphere Perf Monitoring ToolsBuilding vSphere Perf Monitoring Tools
Building vSphere Perf Monitoring Tools
Pablo Roesch3.9K views
Windows スクリプトセミナー WMI編 VBScript&WMI by junichi anno
Windows スクリプトセミナー WMI編 VBScript&WMIWindows スクリプトセミナー WMI編 VBScript&WMI
Windows スクリプトセミナー WMI編 VBScript&WMI
junichi anno5.8K views
おさらいグループポリシー 120320 by wintechq
おさらいグループポリシー 120320おさらいグループポリシー 120320
おさらいグループポリシー 120320
wintechq3.7K views

Similar to Plack perl superglue for web frameworks and servers

Psgi Plack Sfpm by
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmsom_nangia
1.8K views92 slides
Psgi Plack Sfpm by
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmwilburlo
593 views92 slides
Get your teeth into Plack by
Get your teeth into PlackGet your teeth into Plack
Get your teeth into PlackWorkhorse Computing
11.4K views21 slides
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure by
Cloud meets Fog & Puppet A Story of Version Controlled InfrastructureCloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled InfrastructureHabeeb Rahman
3.3K views36 slides
Original slides from Ryan Dahl's NodeJs intro talk by
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
2.1K views69 slides
Gohan by
GohanGohan
GohanNachi Ueno
2.5K views25 slides

Similar to Plack perl superglue for web frameworks and servers(20)

Psgi Plack Sfpm by som_nangia
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
som_nangia1.8K views
Psgi Plack Sfpm by wilburlo
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
wilburlo593 views
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure by Habeeb Rahman
Cloud meets Fog & Puppet A Story of Version Controlled InfrastructureCloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Habeeb Rahman3.3K views
Original slides from Ryan Dahl's NodeJs intro talk by Aarti Parikh
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
Aarti Parikh2.1K views
Cannibalising The Google App Engine by catherinewall
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
catherinewall3.9K views
Clojure and the Web by nickmbailey
Clojure and the WebClojure and the Web
Clojure and the Web
nickmbailey1.9K views
HOW TO DEAL WITH BLOCKING CODE WITHIN ASYNCIO EVENT LOOP by Mykola Novik
HOW TO DEAL WITH BLOCKING CODE WITHIN ASYNCIO EVENT LOOPHOW TO DEAL WITH BLOCKING CODE WITHIN ASYNCIO EVENT LOOP
HOW TO DEAL WITH BLOCKING CODE WITHIN ASYNCIO EVENT LOOP
Mykola Novik3.5K views
Django deployment with PaaS by Appsembler
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
Appsembler55.1K views
ApacheConNA 2015: What's new in Apache httpd 2.4 by Jim Jagielski
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
Jim Jagielski700 views
ApacheCon 2014 - What's New in Apache httpd 2.4 by Jim Jagielski
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
Jim Jagielski1.2K views
asyncio community, one year later by Victor Stinner
asyncio community, one year laterasyncio community, one year later
asyncio community, one year later
Victor Stinner1.4K views
Where is my scalable api? by Altoros
Where is my scalable api?Where is my scalable api?
Where is my scalable api?
Altoros1.3K views
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later by Haehnchen
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
Haehnchen1.7K views

More from Tatsuhiko Miyagawa

Carton CPAN dependency manager by
Carton CPAN dependency managerCarton CPAN dependency manager
Carton CPAN dependency managerTatsuhiko Miyagawa
4.1K views39 slides
cpanminus at YAPC::NA 2010 by
cpanminus at YAPC::NA 2010cpanminus at YAPC::NA 2010
cpanminus at YAPC::NA 2010Tatsuhiko Miyagawa
1.6K views31 slides
CPAN Realtime feed by
CPAN Realtime feedCPAN Realtime feed
CPAN Realtime feedTatsuhiko Miyagawa
7.1K views27 slides
Asynchronous programming with AnyEvent by
Asynchronous programming with AnyEventAsynchronous programming with AnyEvent
Asynchronous programming with AnyEventTatsuhiko Miyagawa
6.5K views70 slides
Remedie OSDC.TW by
Remedie OSDC.TWRemedie OSDC.TW
Remedie OSDC.TWTatsuhiko Miyagawa
7.8K views45 slides
Why Open Matters It Pro Challenge 2008 by
Why Open Matters It Pro Challenge 2008Why Open Matters It Pro Challenge 2008
Why Open Matters It Pro Challenge 2008Tatsuhiko Miyagawa
7.9K views103 slides

More from Tatsuhiko Miyagawa(17)

Recently uploaded

STPI OctaNE CoE Brochure.pdf by
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdfmadhurjyapb
12 views1 slide
Roadmap to Become Experts.pptx by
Roadmap to Become Experts.pptxRoadmap to Become Experts.pptx
Roadmap to Become Experts.pptxdscwidyatamanew
11 views45 slides
Attacking IoT Devices from a Web Perspective - Linux Day by
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day Simone Onofri
15 views68 slides
virtual reality.pptx by
virtual reality.pptxvirtual reality.pptx
virtual reality.pptxG036GaikwadSnehal
11 views15 slides
Top 10 Strategic Technologies in 2024: AI and Automation by
Top 10 Strategic Technologies in 2024: AI and AutomationTop 10 Strategic Technologies in 2024: AI and Automation
Top 10 Strategic Technologies in 2024: AI and AutomationAutomationEdge Technologies
14 views14 slides
The details of description: Techniques, tips, and tangents on alternative tex... by
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...BookNet Canada
121 views24 slides

Recently uploaded(20)

STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb12 views
Attacking IoT Devices from a Web Perspective - Linux Day by Simone Onofri
Attacking IoT Devices from a Web Perspective - Linux Day Attacking IoT Devices from a Web Perspective - Linux Day
Attacking IoT Devices from a Web Perspective - Linux Day
Simone Onofri15 views
The details of description: Techniques, tips, and tangents on alternative tex... by BookNet Canada
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...
BookNet Canada121 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2216 views
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson33 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst470 views
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma17 views
Data-centric AI and the convergence of data and model engineering: opportunit... by Paolo Missier
Data-centric AI and the convergence of data and model engineering:opportunit...Data-centric AI and the convergence of data and model engineering:opportunit...
Data-centric AI and the convergence of data and model engineering: opportunit...
Paolo Missier34 views
Perth MeetUp November 2023 by Michael Price
Perth MeetUp November 2023 Perth MeetUp November 2023
Perth MeetUp November 2023
Michael Price15 views
Lilypad @ Labweek, Istanbul, 2023.pdf by Ally339821
Lilypad @ Labweek, Istanbul, 2023.pdfLilypad @ Labweek, Istanbul, 2023.pdf
Lilypad @ Labweek, Istanbul, 2023.pdf
Ally3398219 views
DALI Basics Course 2023 by Ivory Egg
DALI Basics Course  2023DALI Basics Course  2023
DALI Basics Course 2023
Ivory Egg14 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi120 views
From chaos to control: Managing migrations and Microsoft 365 with ShareGate! by sammart93
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!From chaos to control: Managing migrations and Microsoft 365 with ShareGate!
From chaos to control: Managing migrations and Microsoft 365 with ShareGate!
sammart939 views

Plack perl superglue for web frameworks and servers