Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Dancer A  micro framework  for  writing web applications Alexis Sukrieh OSDCfr 2009
Alexis Sukrieh http://sukria.net http://twitter.com/sukria http://search.cpan.org/~sukria/
Dancer http://dancer.sukria.net $ sudo cpan Dancer http://github.com/sukria/Dancer
Description Syntax Application Tree Environments Deployment
webapp  framework  for Perl
Again, another one !!?
YES.
Why ?
Web Development in Perl can be :
CGI.pm : fat webapp junkfood
Catalyst : it's huge, but, it's huge.
Plenty of other frameworks alike
Ruby introduced something else
A new approach to  webapp development
Perl needed the same
definetly
Kindly stolen from Ruby
So, Dancer is a framework ...
a  micro  framework
<ul>Lightweight </ul>
<ul>Standalone </ul>
<ul>PSGI/Plack compliant </ul>
<ul>expressive syntax </ul>
<ul>few configuration </ul>
<ul>painless  for the developer </ul>
<ul>enough talking, let's dance </ul>
 
<ul>Sorry, I mean ... </ul>
package   MyApp ; use  Dancer; get  '/'  =>  sub  { 'Hello OSDCfr 2009!' }; dance;
A dancer script is a webserver
$ ./myApp.pl >> Listening on 127.0.0.1:3000 == Entering the development dance floor ...
Working webapp ready to be hacked
» happiness : he can WSFC now
Description Syntax Application Tree Environments Deployment
A Dancer app is defined with  route handlers
a route handler is basically a  sub
bound to an HTTP  method   (typically ' get ' or ' post ')
with a path  pattern
/foo /bar/:var /baz/* r('/stuff/([a-z0-9]+)/')
Static pattern (path) / /foo /bar/baz
pattern with named tokens /hello/:buddy my $name = params->{buddy}
pattern with anonymous tokens /show/*.* my ($file, $ext) = splat;
pseudo-regexp-defined patterns r('/post/([a-z0-9]+)') my ($post) = splat; # $1
processing a request = finding a  matching route handler
404 No matching route handler » no joy
Route handler found » Joy
When found,  a route handler is executed
it can alter the response headers get '/' => sub { content_type  'text/plain'; return 'this is plain text'  };
pass to the next matching handler get '/lazy' => sub { pass  and return false; };
serve a static file get '/dowload/:file' => sub { my $file = params->{file}; if (! -f $file) {  pass and return false;  } ...
throw an error get '/forbidden' => sub { send_error 'Nope'; };
redirect to somewhere else get '/forbidden' => sub { redirect  '/better/place'  };
and of course, render a content get '/showme' => sub { template 'showme', {  var => 'foo'}; };
return value  = content to render
logging ?
get '/' => sub { # ... debug 'here it is'; }; » logs/development.log
pre-processing ?
before sub {  do_some_init_stuff(); params->{foo} = 'beenthere'; };
static file serving ?
existing file  in  $appdir/public = file served , no handler needed
Description Syntax Application Tree Environments Deployment
app.pl
app.pl views/ index.tt
app.pl views/ index.tt layouts/ main.tt
app.pl views/ index.tt layouts/ main.tt config.yml
app.pl views/ index.tt layouts/ main.tt config.yml environments/ development.yml production.yml
app.pl views/ index.tt layouts/ main.tt config.yml environments/ development.yml production.yml public/
bootstraping ?
$ dancer -a MyApp
+ MyApp + MyApp/views + MyApp/views/index.tt + MyApp/views/layouts + MyApp/views/layouts/main.tt + MyApp/environments + My...
» Working webapp, pre-configured, pre-designed and waiting for your hacks
Description Syntax Application Tree Environments Deployment
settings : customizing the app
settings in the app code
use Dancer; set layout => 'application' set foo => 42; set content_type =>'text/plain';
handy at first, but dirty
YAML config files: goodness
# config.yml layout: 'application' foo: 42 content_type: 'text/plain'
config.yml = global configuration
environments/foo.yml « foo » configuration
$ dancer -e foo runs the app in « foo » environment
development.yml warnings: 1 show_errors: 1 ...
production.yml warnings: 0 show_errors: 0 ...
show_errors: 1
show_errors: 0
Description Syntax Application Tree Environments Deployment
For production needs,  use PSGI/Plack
Plack is to Perl : what Rack is to Ruby what WSGI is to Python
universal  server <-> application  gateway
PSGI/Plack miyagawa http://plackperl.org
Dancer supports Plack since 0.9904
app.psgi tells Plack how to dance
use CGI::PSGI; use MyApp; my $handler = sub { my $env = shift; my $cgi = CGI::PSGI->new($env); Dancer->dance($cgi); };
The app is now PSGI/Plack aware
$ plackup -a app.psgi &
Webservers have PSGI adapters
Apache (mod_psgi) nginx Perlbal HTTP::Server::Fast Plack (standalone)
Conf example with Apache  <Location /> SetHandler perl-script PerlHandler  Plack::Server::Apache2 PerlSetVar psgi_app /pat...
Works pretty well
enjoy web development with Perl
DANCE!
Upcoming SlideShare
Loading in …5
×

Writing webapps with Perl Dancer

44,952 views

Published on

Dancer is a micro framework for Perl, this presentation describes it and show how to use it.

Published in: Technology
  • If you are looking for customer-oriented academic and research paper writing service try ⇒⇒⇒ WRITE-MY-PAPER.net ⇐⇐⇐ liked them A LOTTT Really nice solutions for the last-day papers
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Writing a good research paper isn't easy and it's the fruit of hard work. For help you can check writing expert. Check out, please ⇒ www.HelpWriting.net ⇐ I think they are the best
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://redirect.is/fyxsb0u } ......................................................................................................................... Download Full EPUB Ebook here { https://redirect.is/fyxsb0u } ......................................................................................................................... Download Full doc Ebook here { https://redirect.is/fyxsb0u } ......................................................................................................................... Download PDF EBOOK here { https://redirect.is/fyxsb0u } ......................................................................................................................... Download EPUB Ebook here { https://redirect.is/fyxsb0u } ......................................................................................................................... Download doc Ebook here { https://redirect.is/fyxsb0u } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Writing webapps with Perl Dancer

  1. 1. Dancer A micro framework for writing web applications Alexis Sukrieh OSDCfr 2009
  2. 2. Alexis Sukrieh http://sukria.net http://twitter.com/sukria http://search.cpan.org/~sukria/
  3. 3. Dancer http://dancer.sukria.net $ sudo cpan Dancer http://github.com/sukria/Dancer
  4. 4. Description Syntax Application Tree Environments Deployment
  5. 5. webapp framework for Perl
  6. 6. Again, another one !!?
  7. 7. YES.
  8. 8. Why ?
  9. 9. Web Development in Perl can be :
  10. 10. CGI.pm : fat webapp junkfood
  11. 11. Catalyst : it's huge, but, it's huge.
  12. 12. Plenty of other frameworks alike
  13. 13. Ruby introduced something else
  14. 14. A new approach to webapp development
  15. 15. Perl needed the same
  16. 16. definetly
  17. 17. Kindly stolen from Ruby
  18. 18. So, Dancer is a framework ...
  19. 19. a micro framework
  20. 20. <ul>Lightweight </ul>
  21. 21. <ul>Standalone </ul>
  22. 22. <ul>PSGI/Plack compliant </ul>
  23. 23. <ul>expressive syntax </ul>
  24. 24. <ul>few configuration </ul>
  25. 25. <ul>painless for the developer </ul>
  26. 26. <ul>enough talking, let's dance </ul>
  27. 28. <ul>Sorry, I mean ... </ul>
  28. 29. package MyApp ; use Dancer; get '/' => sub { 'Hello OSDCfr 2009!' }; dance;
  29. 30. A dancer script is a webserver
  30. 31. $ ./myApp.pl >> Listening on 127.0.0.1:3000 == Entering the development dance floor ...
  31. 32. Working webapp ready to be hacked
  32. 33. » happiness : he can WSFC now
  33. 34. Description Syntax Application Tree Environments Deployment
  34. 35. A Dancer app is defined with route handlers
  35. 36. a route handler is basically a sub
  36. 37. bound to an HTTP method (typically ' get ' or ' post ')
  37. 38. with a path pattern
  38. 39. /foo /bar/:var /baz/* r('/stuff/([a-z0-9]+)/')
  39. 40. Static pattern (path) / /foo /bar/baz
  40. 41. pattern with named tokens /hello/:buddy my $name = params->{buddy}
  41. 42. pattern with anonymous tokens /show/*.* my ($file, $ext) = splat;
  42. 43. pseudo-regexp-defined patterns r('/post/([a-z0-9]+)') my ($post) = splat; # $1
  43. 44. processing a request = finding a matching route handler
  44. 45. 404 No matching route handler » no joy
  45. 46. Route handler found » Joy
  46. 47. When found, a route handler is executed
  47. 48. it can alter the response headers get '/' => sub { content_type 'text/plain'; return 'this is plain text'  };
  48. 49. pass to the next matching handler get '/lazy' => sub { pass and return false; };
  49. 50. serve a static file get '/dowload/:file' => sub { my $file = params->{file}; if (! -f $file) { pass and return false; } send_file $file; };
  50. 51. throw an error get '/forbidden' => sub { send_error 'Nope'; };
  51. 52. redirect to somewhere else get '/forbidden' => sub { redirect '/better/place'  };
  52. 53. and of course, render a content get '/showme' => sub { template 'showme', { var => 'foo'}; };
  53. 54. return value = content to render
  54. 55. logging ?
  55. 56. get '/' => sub { # ... debug 'here it is'; }; » logs/development.log
  56. 57. pre-processing ?
  57. 58. before sub { do_some_init_stuff(); params->{foo} = 'beenthere'; };
  58. 59. static file serving ?
  59. 60. existing file in $appdir/public = file served , no handler needed
  60. 61. Description Syntax Application Tree Environments Deployment
  61. 62. app.pl
  62. 63. app.pl views/ index.tt
  63. 64. app.pl views/ index.tt layouts/ main.tt
  64. 65. app.pl views/ index.tt layouts/ main.tt config.yml
  65. 66. app.pl views/ index.tt layouts/ main.tt config.yml environments/ development.yml production.yml
  66. 67. app.pl views/ index.tt layouts/ main.tt config.yml environments/ development.yml production.yml public/
  67. 68. bootstraping ?
  68. 69. $ dancer -a MyApp
  69. 70. + MyApp + MyApp/views + MyApp/views/index.tt + MyApp/views/layouts + MyApp/views/layouts/main.tt + MyApp/environments + MyApp/environments/development.yml + MyApp/environments/production.yml + MyApp/config.yml + MyApp/app.psgi + MyApp/MyApp.pm + MyApp/MyApp.pl + MyApp/public + MyApp/public/css + MyApp/public/css/style.css + MyApp/public/css/error.css + MyApp/public/images + MyApp/public/404.html + MyApp/public/500.html
  70. 71. » Working webapp, pre-configured, pre-designed and waiting for your hacks
  71. 72. Description Syntax Application Tree Environments Deployment
  72. 73. settings : customizing the app
  73. 74. settings in the app code
  74. 75. use Dancer; set layout => 'application' set foo => 42; set content_type =>'text/plain';
  75. 76. handy at first, but dirty
  76. 77. YAML config files: goodness
  77. 78. # config.yml layout: 'application' foo: 42 content_type: 'text/plain'
  78. 79. config.yml = global configuration
  79. 80. environments/foo.yml « foo » configuration
  80. 81. $ dancer -e foo runs the app in « foo » environment
  81. 82. development.yml warnings: 1 show_errors: 1 ...
  82. 83. production.yml warnings: 0 show_errors: 0 ...
  83. 84. show_errors: 1
  84. 85. show_errors: 0
  85. 86. Description Syntax Application Tree Environments Deployment
  86. 87. For production needs, use PSGI/Plack
  87. 88. Plack is to Perl : what Rack is to Ruby what WSGI is to Python
  88. 89. universal server <-> application gateway
  89. 90. PSGI/Plack miyagawa http://plackperl.org
  90. 91. Dancer supports Plack since 0.9904
  91. 92. app.psgi tells Plack how to dance
  92. 93. use CGI::PSGI; use MyApp; my $handler = sub { my $env = shift; my $cgi = CGI::PSGI->new($env); Dancer->dance($cgi); };
  93. 94. The app is now PSGI/Plack aware
  94. 95. $ plackup -a app.psgi &
  95. 96. Webservers have PSGI adapters
  96. 97. Apache (mod_psgi) nginx Perlbal HTTP::Server::Fast Plack (standalone)
  97. 98. Conf example with Apache <Location /> SetHandler perl-script PerlHandler Plack::Server::Apache2 PerlSetVar psgi_app /path/app.psgi </Location>
  98. 99. Works pretty well
  99. 100. enjoy web development with Perl
  100. 101. DANCE!

×