Dancer Presentation FrOSCon 2010
-
Upload
thomas-fahle -
Category
Technology
-
view
2.461 -
download
2
description
Transcript of Dancer Presentation FrOSCon 2010
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Einfuhrung in Dancer - Effortless Web Frameworkfor Perl
Thomas Fahle
FrOSCon 2010, St. Augustin, 22. August 2010
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Ubersicht
Uber diesen Vortrag
Einfuhrung in Dancer
Dancer Grundlagen - Routing, Logging, ...
Projekt - Beispiel WebApp”Random Number Generator“
Resourcen im Netz - Mehr Infos
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Uber Dancer
Dancer?
Micro Framework fur Webapps
ursprunglich Port von Ruby’s Sinatra
leichtgewichtig
standalone
PSGI/Plack kompatible
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Eine einfache Webapp
Hallo Welt!
Hallo Welt
1 #! / u s r / b i n / p e r l2
3 use Dancer ;4
5 g e t ’ / ’ => sub {6 r e t u r n ” H e l l o Frontpage ” ;7 } ;8
9 g e t ’ / h e l l o / : name ’ => sub {10 r e t u r n ” H e l l o t h e r e ” . params−>{name } ;11 } ;12
13 dance ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Eine einfache Webapp
Run It!
Ein Dancer Programm verfugt uber einen eingebauten Webserver
$ ./hello.pl
>> Dancer server 3303 listening on http://0.0.0.0:3000
== Entering the development dance floor ...
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Routes
Dancer Routen
sind Unterprogramme (subs), die an HTTP Methoden(GET,POST usw.) und einen Pfad gebunden sind
1 g e t ’ / ’ => sub {} ;2 g e t ’ / bar / : v a r ’ => sub {} ;3 g e t ’ / baz /∗ .∗ ’ => sub {} ;4 any ’ / f o o ’ => sub {} ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Parameter
Parameter
Request-Parameter stehen uber die Methode params alsHashreferenz zur Verfugung
1 #! / u s r / b i n / p e r l2 use Dancer ;3
4 g e t ’ / h e l l o / : name ’ => sub {5 r e t u r n ” H e l l o t h e r e ” . params−>{name } ;6 } ;7
8 p o s t ’ / f o r m u l a r ’ => sub {9 my $vorname = params−>{vorname } ;
10 my $nachname = params−>{nachname } ;11 # . . .12 } ;13 dance ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Parameter
Wildcard Parameter/Pfade
splat liefert die Bestandteile eines Wildcard Pfades
1 #! / u s r / b i n / p e r l2 use Dancer ;3 g e t ’ / downloads /∗ .∗ ’ => sub {4 my ( $ l h s , $ r h s ) = s p l a t ;5 } ;6 dance ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Templates
Templates sind Views
Template mit Parametern als Ruckgabe
1 #! / u s r / b i n / p e r l2 use Dancer ;3 p o s t ’ / f o r m u l a r ’ => sub {4 my $vorname = params−>{vorname } ;5 my $nachname = params−>{nachname } ;6 r e t u r n t e m p l a t e ’ f o r m u l a r ’ , {7 vorname => $vorname ,8 nachname => $nachname ,9 } ;
10 } ;11 dance ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Logging
Logging Level
Dancer stellt 3 Logging Level zur Verfugung
1 #! / u s r / b i n / p e r l2 use Dancer qw / : s y n t a x / ;3 debug ”Custom Debugging Message ” ;4 warn ing ”Custom Warning Message ” ;5 e r r o r ”Custom E r r o r Message ” ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Eine einfache WebApp
In sieben Schritten zur WebApp
1 Vorbereitung
2 Dancer Projektgerust erzeugen
3 Modell Zufallszahlen Generator
4 Layout anpassen
5 View erstellen
6 Controller schreiben
7 Fertig
Tests
werden ja ohnehin bei jedem Schritt geschrieben
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Kick-Off
WebApp Zufallszahlen Generator
User kann Zufallszahl aus einem Zahlenbereich ziehen lassen
dient als Starthilfe fur den Einstieg in Dancer
Screen-Shot
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Inspired by Apple - Web apps - Random Number
http://www.apple.com/webapps/calculate/randomnumber.html
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Live-Demo
Live-Demo
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Zufallszahlen Generator Math::Random
Math::Random
1 use Math : : Random qw/ : a l l / ;2
3 my $low ;4 my $ h i g h ;5 my $n = 1 ;6
7 my $ r a n d o m i n t =8 r a n d o m u n i f o r m i n t e g e r ( $n , $low , $ h i g h ) ;9
10 # L i e f e r t im s k a l a r e n Kontext e i n e Z u f a l l s z a h l11 # aus dem B e r e i c h $low . . $ h i g h . $n w i r d12 # n i c h t b e r u e c k s i c h t i g t .
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Template Engine - Template Toolkit
http://template-toolkit.org/
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Validierung des User Inputs
CPAN to the Rescue
Regexp::Common
Provide commonly requested regular expressions
Data::FormValidator
Validates user input (usually from an HTML form) based oninput profile
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
Variablenubersicht
Hauptvariablen
low - Eingabe untere Bereichsgrenze
high - Eingabe obere Bereichsgrenze
random - Ausgabe Zufallszahl
Hilfsvariablen
missing low - Falls untere Bereichsgrenze nicht eingegebenwurde
missing high - Falls obere Bereichsgrenze nicht eingegebenwurde
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Vorbereitung
CPAN-Module installieren
Benotigte Module installieren
$ cpan
cpan> install Dancer
cpan> install Template
cpan> install Math::Random
cpan> install Regexp::Common
cpan> install Data::FormValidator
Optional: Weitere Dancer::Plugins installieren
cpan> install Task::Dancer
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Projektgerust
Bootstrap -Scaffold
Projektgerust erzeugen
$ dancer -a RandomNumber
+ ./RandomNumber
+ RandomNumber/app.psgi
+ RandomNumber/config.yml
+ RandomNumber/environments
+ RandomNumber/environments/development.yml
+ RandomNumber/environments/production.yml
+ RandomNumber/views
+ RandomNumber/views/index.tt
+ RandomNumber/views/layouts
+ RandomNumber/views/layouts/main.tt
+ RandomNumber/RandomNumber.pl
+ RandomNumber/lib
+ RandomNumber/lib/RandomNumber
+ RandomNumber/lib/RandomNumber.pm
+ RandomNumber/public
+ RandomNumber/public/css
+ RandomNumber/public/css/style.css
+ RandomNumber/public/css/error.css
+ RandomNumber/public/images
+ RandomNumber/public/404.html
+ RandomNumber/public/dispatch.fcgi
+ RandomNumber/public/dispatch.cgi
+ RandomNumber/public/500.html
+ RandomNumber/t
+ RandomNumber/t/002_index_route.t
+ RandomNumber/t/001_base.t
+ RandomNumber/Makefile.pl
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Modell Zufallszahlengenerator
Package RandomNumber::Generator 1
RandomNumber::Generator Teil 1
1 package RandomNumber : : G e n e r a t o r ;2 use w a r n i n g s ; use s t r i c t ;3
4 use Math : : Random qw / : a l l / ;5 # Dancer Logg ing6 use Dancer ’ : s y n t a x ’ ;7
8 use E x p o r t e r ;9
10 our $VERSION = ’ 0 . 0 1 ’ ;11 our @ISA = qw/ E x p o r t e r / ;12 our @EXPORT = ( ) ;13 our @EXPORT OK = qw/ random number / ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Modell Zufallszahlengenerator
Package RandomNumber::Generator 2
RandomNumber::Generator Teil 2
1 sub random number {2 my $low = s h i f t @ ;3 my $ h i g h = s h i f t @ ;4 i f ( $low > $ h i g h ) {5 ( $low , $ h i g h ) = ( $high , $low ) ;6 }7 my $n = 1 ;8 my $random number =9 r a n d o m u n i f o r m i n t e g e r ( $n , $low , $ h i g h ) ;
10 debug ”Random Number : ’ $random number ’ ” ;11 r e t u r n $random number ;12 }
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Layout anpassen
Template Engine festlegen
Statt Dancer::Template::Simple kommt TT2 zum Einsatz(config.yml)
template: "template_toolkit"
Dancer verwendet <% als Start-Tag und %> als End-Tag.
TT2 konfigurieren (optional)
template: "template_toolkit"
engines:
template_toolkit:
start_tag: "[%"
stop_tag: "%]"
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Layout anpassen
Layout anpassen
Layout in views/layouts/main.tt beliebig anpassbar
Die Variable content ist von Dancer/TT2 vordefiniert und erhaltden Content aus den Templates.
1 <html>2 <head> . . . </ head>3 <body>4 . . .5 <d i v i d=” c o n t e n t ”>6
7 <% c o n t e n t %>8
9 </ d i v>10 . . .
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
View erstellen
Eingabe der Daten 1
Template views/index.tt: Formular zur Eingabe der Daten Teil 1
1 <form a c t i o n=”/” method=” p o s t ”>2 <t a b l e>3 <t r>4 <% IF m i s s i n g l o w %>5 <td><f o n t c o l o r=” r e d ”>S t a r t w e r t ( von ) :</ f o n t> </ td>6 <% ELSE %>7 <td>S t a r t w e r t ( von ) : </ td>8 <% END %>9 <td>< i n p u t t y p e=” t e x t ” name=” low ”
10 v a l u e=”<% low %>” /> </ td>11 </ t r>
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
View erstellen
Eingabe der Daten 2
Template views/index.tt: Formular zur Eingabe der Daten Teil 2
1 <t r>2 <% IF m i s s i n g h i g h %>3 <td><f o n t c o l o r=” r e d ”>Endwert ( b i s ) :</ f o n t> </ td>4 <% ELSE %>5 <td>Endwert ( b i s ) :</ td>6 <% END %>7 <td>< i n p u t t y p e=” t e x t ” name=” h i g h ”8 v a l u e=”<% h i g h %>” /> </ td>9 </ t r>
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
View erstellen
Eingabe der Daten 3
Template views/index.tt: Formular zur Eingabe der Daten Teil 3
1 <t r>2 <td>  ;</ td>3 <td>< i n p u t t y p e=” submit ”4 v a l u e=” Z u f a l l s z a h l z i e h e n ” />5 </ td>6 </ t r>7 </ t a b l e>8 </ form>
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
View erstellen
Ausgabe der Daten
Template views/index.tt: Ausgabe der Zufallszahl
1 <% IF random OR random == 0 %>2 <t r>3 <td c o l s p a n=”2”>Z u f a l l s z a h l aus dem B e r e i c h4 <b><% low %></b> b i s <b><% h i g h %></b> :5 <f o n t c o l o r=” r e d ”><b><% random %></b></ f o n t> .6 </ td>7 </ t r>8 <% END %>
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Controller GET
GET Request in lib/RandomNumber.pm
1 package RandomNumber ;2 use Dancer ’ : s y n t a x ’ ;3 use RandomNumber : : G e n e r a t o r qw/ random number / ;4 use RandomNumber : : V a l i d a t o r qw/ v a l i d a t e l o w h i g h / ;5
6 our $VERSION = ’ 0 . 1 ’ ;7
8 g e t ’ / ’ => sub {9 t e m p l a t e ’ i n d e x ’ ;
10 } ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Controller POST
POST Request (ohne Validierung)
1 # im package RandomNumber ;2 p o s t ’ / ’ => sub {3 my $ h i g h = params−>{h i g h } ;4 my $low = params−>{low } ;5
6 my $random = random number ( $low , $ h i g h ) ;7
8 t e m p l a t e ’ i n d e x ’ ,9 {
10 random => $random ,11 low => $low ,12 h i g h => $high ,13 } ;14 } ;15 t r u e ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Input Validierung
Aufruf und Verwendung
1 use RandomNumber : : V a l i d a t o r qw/ v a l i d a t e l o w h i g h / ;2
3 my $ r e s u l t s = v a l i d a t e l o w h i g h (4 { low => $low , h i g h => $ h i g h }5 ) ;6
7 i f ( $ r e s u l t s −>s u c c e s s ) {8 # . . .9 }
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Input Validierung
validate low high Teil 1
1 package RandomNumber : : V a l i d a t o r ;2 use Regexp : : Common qw /number / ;3 use Data : : F o r m V a l i d a t o r ;4
5 sub v a l i d a t e l o w h i g h {6 my $ a r g s = s h i f t @ ;7 d i e ”Not a Hash R e f e r e n c e ’ $ a r g s ’ ”8 u n l e s s r e f ( $ a r g s ) eq ’HASH ’ ;9 my $low = $args−>{low } ;
10 my $ h i g h = $args−>{h i g h } ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Input Validierung
validate low high Teil 2 (Profil)
1
2 my $ p r o f i l e = {3 f i l t e r s => [ ’ t r i m ’ ] ,4 r e q u i r e d => [ qw( low h i g h ) ] ,5 c o n s t r a i n t s => {6 low => qr /ˆ$RE{num}{ i n t }$ / ,7 h i g h => qr /ˆ$RE{num}{ i n t }$ / ,8 } ,9 } ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Input Validierung
validate low high Teil 3
1 my $ r e s u l t s =2 Data : : FormVal idator−>check (3 { low => $low , h i g h => $ h i g h } ,4 $ p r o f i l e ) ;5
6 r e t u r n $ r e s u l t s ;7 }
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Controller POST
POST Request mit Validierung Teil 1
1 # im package RandomNumber ;2 p o s t ’ / ’ => sub {3 my $ h i g h = params−>{h i g h } ;4 my $low = params−>{low } ;5
6 my $ r e s u l t s = v a l i d a t e l o w h i g h (7 { low => $low , h i g h => $ h i g h }8 ) ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Controller POST
POST Request mit Validierung Teil 2
1 my $ m i s s i n g l o w =2 not d e f i n e d ( $ r e s u l t s −>v a l i d ( ’ low ’ ) ) ;3 my $ m i s s i n g h i g h =4 not d e f i n e d ( $ r e s u l t s −>v a l i d ( ’ h i g h ’ ) ) ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Controller schreiben
Controller POST
POST Request mit Validierung Teil 3
1 my $random = undef ;2 i f ( $ r e s u l t s −>s u c c e s s ( ) ) {3 $random = random number ( $low , $ h i g h ) ;4 }5
6 t e m p l a t e ’ i n d e x ’ ,7 {8 random => $random ,9 low => $low ,
10 h i g h => $high ,11 m i s s i n g l o w => $ m i s s i n g l o w ,12 m i s s i n g h i g h => $ m i s s i n g h i g h ,13 } ;14 } ;
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Fertig
Fertig!
Have Fun!
Source Code at GitHub
http://github.com/tomfahle/Dancer-RandomNumber
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Resources
RTFM
Dancer wird mit umfangreicher Dokumentation ausgeliefert
Dancer - Effortless Web Framework for Perl -http://perldancer.org/
Dancer::Introduction - http://search.cpan.org/perldoc?Dancer::Introduction
Dancer::Cookbook -http://search.cpan.org/perldoc?Dancer::Cookbook
Dancer::Confighttp://search.cpan.org/perldoc?Dancer::Config
Dancer::Sessionhttp://search.cpan.org/perldoc?Dancer/Session.pm
Dancer::Deployment -http://search.cpan.org/perldoc?Dancer::Deployment
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Resources
IRC und Mailing-Liste
Direkter Kontakt zu Entwicklern und Usern
IRC - irc.perl.org #dancer.
Dancer-users - Perl Dancer users mailing list -http://lists.perldancer.org/cgi-bin/listinfo/
dancer-users
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Vortrage Artikel Blogs
Vortrage
Slides
Alexis Sukrieh -Writing webapps with Perl Dancer -http://www.slideshare.net/asukrieh/
writing-webapps-with-perl-dancer
Alexis Sukrieh -Perl Dancer, FPW 2010 -http://www.slideshare.net/asukrieh/
perl-dancer-fpw-2010-4482016
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Vortrage Artikel Blogs
Artikel
Allgemeine Artikel
A Website in a Minute Using Dancer,the Effortless Web Framework -http://www.perl.org/pub/2010/04/
a-website-in-a-minute-using-dancer-the-effortless-web-framework.
html
The Dancer Ecosystem http://lumberjaph.net/blog/
index.php/2010/04/19/the-dancer-ecosystem/
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Dancer Vortrage Artikel Blogs
Beispiele
Blogbeitrage mit Beispielen und Code
Juan J. Martınez - Screencast: aplicacion de ejemplo conDancer - http://blackshell.usebox.net/archive/screencast--aplicacion-de-ejemplo-con-dancer.html
Poison Bit - Web login form Vs Microsoft Active Directory -http://poisonbit.wordpress.com/2010/04/06/
web-login-form-vs-microsoft-active-directory/
Poison Bit - Login form validating operative system users (noDDBB), in 6 steps -http://poisonbit.wordpress.com/2010/07/14/
login-form-validating-operative-system-users-no-ddbb-in-6-steps/
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Recommended Readings
Dancer vs. Mojo
Alias: Building Top100 2.0
Pitting Mojo vs Dancer in a competition to build Top100 2.0http://use.perl.org/~Alias/journal/40270
Mojo vs Dancer Week 1 - Installer, Support and Hello Worldhttp://use.perl.org/~Alias/journal/40292
Mojo vs Dancer Week 2 - Templates and Imageshttp://use.perl.org/~Alias/journal/40312
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Recommended Readings
Additional Readings
TT2, PSGI/Plack
Template Toolkit - http://template-toolkit.org/
PSGI/Plack - Perl Superglue for Web Frameworks and WebServers - http://plackperl.org/
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Recommended Readings
Related Web Frameworks
Weitere Frameworks zum Vergleich
Mojolicious - a Merb and Sinatra inspired web framework -http://mojolicious.org/
Catalyst - The elegant MVC framework -http://www.catalystframework.org/
Sinatra - http://www.sinatrarb.com/
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Fragen
Fragen?
Fragen?
Fragen!
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Danke!
Vielen Dank!
Danke!
Vielen Dank!
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl
Einleitung Projekt Beispiel WebApp RandomNumber Resourcen Fragen
Perl.org
Perl.org
When you need Perl think Perl.org
http://www.Perl.org
http://learn.Perl.org
http://blogs.Perl.org
http://jobs.Perl.org
Flexible & Powerful
That’s why we love Perl!
Thomas Fahle Einfuhrung in Dancer - Effortless Web Framework for Perl