• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Mojolicious
 

Mojolicious

on

  • 5,199 views

 

Statistics

Views

Total Views
5,199
Views on SlideShare
4,677
Embed Views
522

Actions

Likes
4
Downloads
21
Comments
0

8 Embeds 522

http://allframeworks.ru 396
http://www.slideshare.net 94
http://www.allframeworks.ru 26
http://sayperl.org 2
http://static.slidesharecdn.com 1
http://blog.perl5doc.ru 1
http://www.facebook.com 1
http://webcache.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mojolicious Mojolicious Presentation Transcript

    • Mojolicious. Веб в коробке! Анатолий Шарифулин вторник, 18 мая 2010 г.
    • Perl, CGI.pm вторник, 18 мая 2010 г.
    • Perl, cgi-bin/ вторник, 18 мая 2010 г.
    • Perl, cgi-bin/, гамно! вторник, 18 мая 2010 г.
    • вторник, 18 мая 2010 г.
    • Что такое Mojolicious? вторник, 18 мая 2010 г.
    • Что такое Mojolicious? • Веб фреймворки: Mojolicious::Lite, Mojolicious, Mojo • Объектно-ориентированное API, без скрытой магии и зависимостей, написанное на чистом Perl • Полный стек HTTP 1.1 и WebSocket (клиент-сервер), а также IPv6, SSL и IDNA вторник, 18 мая 2010 г.
    • HTTP 1.0 Запрос Ответ Запрос Ответ вторник, 18 мая 2010 г.
    • HTTP 1.1 Запрос Запрос Ответ Ответ вторник, 18 мая 2010 г.
    • Что такое Mojolicious? • Асинхронный ввод-вывод, prefork-веб сервер с поддержкой epoll и kqueue, unix-сокетов и «горячей» разработки • CGI, FastCGI и PSGI • RESTful-роутеры, плагины, сессии, Perl-ish шаблонизатор, JSON, I18N вторник, 18 мая 2010 г.
    • «Свежий» код, основанный на опыте разработке Catalyst вторник, 18 мая 2010 г.
    • Удовольствие! Код Mojolicious::Lite Код Mojolicious Mojo CGI FastCGI PSGI HTTP 1.1 WebSocket вторник, 18 мая 2010 г.
    • Mojolicious::Lite MVC веб-фреймворк ~ sinatra вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; get '/hello' => sub { shift->render_text( 'Привет Devconf!' ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; post '/hello' => sub { shift->render_text( 'Привет Devconf!' ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; any '/hello' => sub { shift->render_text( 'Привет Devconf!' ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; get '/hello' => (agent => qr/Firefox/) => sub { shift->render_text( 'Привет Devconf!' ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; post '/:name' => sub { # /* my $self = shift; my $name = $self->param('name'); $self->render_text( "Привет $name!" ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; post '/:name' => { id => 42 } => sub { # /* my $self = shift; my $name = $self->param('name'); warn $self->param( 'id' ); $self->render_text( "Привет $name!" ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; post '/:name' => { id => 42 } => sub { # /* my $self = shift; my $name = $self->param('name'); warn $self->stash( 'id' ); $self->render_text( "Привет $name!" ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; post '/:name' => [ name => qr/d+/ ] => sub { my $self = shift; my $name = $self->param('name'); $self->render_text( "Привет $name!" ); }; app->start; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; any '/time' => 'clock'; app->start; __DATA__ @@ clock.html.ep % my ($sec, $min, $hour) = (localtime)[0, 1, 2]; Текущее время <%= $hour %>:<%= $min %>:<%= $sec %> вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; websocket '/echo' => sub { my $self = shift; $self->receive_message( sub { my ($self, $msg) = @_; $self->send_message( "тук-тук: $msg" ); } ); }; вторник, 18 мая 2010 г.
    • Примеры Mojolicious WebSocket @xantus, @vti Интересный пример IRC-клиент вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; get '/fetch' => sub { my $self = shift; $self->render_data( $self->client ->get( 'http://devconf.ru' ) ->res ->body ); }; вторник, 18 мая 2010 г.
    • use Mojolicious::Lite; plugin charset => { charset => 'windows-1251' }; ladder sub { my $self = shift; # проверка авторизации }; ... вторник, 18 мая 2010 г.
    • Cписок всех роутеров приложения script/lite.pl routes /hello (?-xism:^/hello) /time (?-xism:^/time) /echo (?-xism:^/echo) /fetch (?-xism:^/fetch) /:name (?-xism:^/((?-xism:d+))) вторник, 18 мая 2010 г.
    • Если много шаблонов в секции __DATA__ script/lite.pl inflate /templates/ /templates/clock.html.ep вторник, 18 мая 2010 г.
    • Сокращатель ссылок на Mojolicious::Lite 100 строк кода (5 обработчиков) 130 строк шаблонов (4 шаблона) 1 файл вторник, 18 мая 2010 г.
    • вторник, 18 мая 2010 г.
    • Mojolicious MVC веб-фреймворк ~ Ruby on Rails вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action/:id') ->to('example#welcome', id => 1); } 1; вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action/:id') ->to('example#welcome', id => 1); } 1; вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action/:id') ->to('example#welcome', id => 1); } 1; вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action/:id') ->to('example#welcome', id => 1); } 1; вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; my $b = $r->bridge->to('auth#check); $b->route('/admin')->to('admin#welcome'); } вторник, 18 мая 2010 г.
    • package App; use base 'Mojolicious'; sub startup { my $self = shift; my $r = $self->routes; $r->route('/:controller/:action/:id') ->to('example#welcome', id => 1); } 1; вторник, 18 мая 2010 г.
    • package App::Example; use base 'Mojolicious::Controller'; sub welcome { my $self = shift; warn $self->stash( ‘id’ ); $self->render( message => 'Devconf!' ); } 1; вторник, 18 мая 2010 г.
    • Шаблон example/welcome.html.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.xml.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.rss.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.mail.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.html.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.html.tt controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.html.cttp2 controller / action . format . handler вторник, 18 мая 2010 г.
    • Шаблон example/welcome.html.ep controller / action . format . handler вторник, 18 мая 2010 г.
    • % layout 'default'; <h2><%= $message %></h2> <a href="<%== url_for %>">click here</a> вторник, 18 мая 2010 г.
    • <!doctype html> <html> <head><title> Привет! </title></head> <body> <%== content %> </body> </html> вторник, 18 мая 2010 г.
    • Около 20 проектов на Mojolicious вторник, 18 мая 2010 г.
    • вторник, 18 мая 2010 г.
    • Mojo Базовый веб-фреймворк вторник, 18 мая 2010 г.
    • package App; use base 'Mojo'; sub handler { my ($self, $tx) = @_; warn $tx->req; warn $tx->req->url; $tx->res->headers ->content_type( 'text/plain' ); $tx->res->body( 'Devconf 2010' ); } вторник, 18 мая 2010 г.
    • вторник, 18 мая 2010 г.
    • Mojo::Client HTTP 1.1 и WebSocket клиент вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->get( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->post( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->put( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->delete( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $self->client->get( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->async->get( ‘http://devconf.ru’ => sub { my ($self, $tx) = @_; say $tx->res; } )->process; вторник, 18 мая 2010 г.
    • my $client = Mojo::Client->new; $client->get(‘http://devconf.ru’)->res->code; $client->get( 'http://search.twitter.com/trends.json' )->success->json->{trends}->[0]->{name} вторник, 18 мая 2010 г.
    • Mojo::IOLoop TCP клиент-сервер вторник, 18 мая 2010 г.
    • my $loop = Mojo::IOLoop->new; $loop->listen(port => 3000, cb => sub { my ($self, $id) = @_; $self->read_cb ($id => sub { ... }); $self->write_cb($id => sub { ... }); ); my $id = $loop->connect(port => 3000, ...); $loop->start; $loop->stop; вторник, 18 мая 2010 г.
    • Test::Mojo Фреймворк для тестирования вторник, 18 мая 2010 г.
    • my $t = Test::Mojo->new( app => 'App' ); $t->get_ok( '/hello' ) ->status_is( 200 ) ->header_is( 'X-Powered-By' => 'Mojolicious (Perl)' ) ->content_is( 'Привет Devconf!' ); $t->post_ok( '/42' ) ->content_like(qr/Привет/, 'тест пройден!'); вторник, 18 мая 2010 г.
    • Всё, что нужно – есть! Mojolicious – веб в коробке! вторник, 18 мая 2010 г.
    • Mojolicious на CPAN • Mojolicious • MojoX::Log::* • Mojo::Server::FCGI • MojoX::Renderer::* • AnyEvent::Mojo • TT • Apache::Mojo • CTTP2, HTP Apache2::Mojo • XSLT • Catalyst::Engine::Mojo • Mail Squatting::On::Mojo вторник, 18 мая 2010 г.
    • Документация • Пока мало документации, зато очень хороший фидбек :) • Mojolicious::Lite и Mojolicious::Guides • Mojolicious Handbook @kvorg • Mojolicious FAQ @vti вторник, 18 мая 2010 г.
    • Полезная информация • http://mojolicious.org • irc://irc.perl.org/#mojo • http://groups.google.com/group/mojolicious • Github: kraih, vti, xantus, memowe, sharifulin • Twitter: @kraih, @vtivti, @sharifulin • Juick: @vti, @sharifulin вторник, 18 мая 2010 г.
    • «Making hard things possible and everything fun!» Девиз Mojolicious вторник, 18 мая 2010 г.
    • «Duct tape for the HTML5 Web» Девиз Mojolicious #2 вторник, 18 мая 2010 г.
    • «Viva la revolution!» Девиз Mojolicious #3 вторник, 18 мая 2010 г.
    • «Особая разновидность современного программиста – программист, изучающий фреймворки» Алекс Капранов вторник, 18 мая 2010 г.
    • «Каждый программист должен сделать 3 вещи: фреймворк, шаблонизатор и событийную машину» Анатолий Шарифулин вторник, 18 мая 2010 г.
    • use Mojolicious or die вторник, 18 мая 2010 г.
    • Viva la revolution! вторник, 18 мая 2010 г.
    • use Perl or die вторник, 18 мая 2010 г.
    • JFDI вторник, 18 мая 2010 г.
    • Спасибо за внимание! Анатолий Шарифулин sharifulin вторник, 18 мая 2010 г.
    • any ‘/questions’ => sub { shift->render( answer => ‘sharifulin’ ); }; вторник, 18 мая 2010 г.