Recommended
PDF
Mojoliciousでつくる! Webアプリ入門
PDF
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PDF
PDF
いまさら聞けない!?Backbone.js 超入門
PDF
BACKBONE.JSによるWebアプリケーション開発について
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
ODP
ODP
PDF
【Camphor ×サイボウズ】selenium勉強会
PDF
PDF
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
KEY
続・Twitter bootstrap入門 #html5j
PDF
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
PDF
PDF
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
PDF
ODP
PDF
Introduction to Favmemo for Immature Engineers
PDF
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PDF
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
PPT
PDF
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
PDF
PDF
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PDF
More Related Content
PDF
Mojoliciousでつくる! Webアプリ入門
PDF
PDF
「新しい」を生み出すためのWebアプリ開発とその周辺
PDF
PDF
いまさら聞けない!?Backbone.js 超入門
PDF
BACKBONE.JSによるWebアプリケーション開発について
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
ODP
What's hot
ODP
PDF
【Camphor ×サイボウズ】selenium勉強会
PDF
PDF
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
KEY
続・Twitter bootstrap入門 #html5j
PDF
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
PDF
PDF
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
PDF
ODP
PDF
Introduction to Favmemo for Immature Engineers
PDF
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PDF
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
PPT
PDF
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
PDF
PDF
Viewers also liked
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PDF
PPTX
Amon2 で造られた api サーバを引き継いで課金の実装をしました話
PPTX
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
PDF
Mojoliciousのログ出力を改造する in chiba.pm #3
PDF
PDF
PDF
PPT
CPANの依存モジュールをもう少し正しく検出したい
PPT
2016年のPerl (Long version)
PPT
PPTX
PDF
PPT
More from Tetsuya Tatsumi
PDF
PDF
Mojoliciousのl10 nを自動化するツール
PDF
PDF
PDF
PPTX
英文難易度の低いニュースを集めたWebアプリ twien
PDF
PDF
Mojolicious+redisでチャットを作った 1. 2. 3. 4. 5. 6. 7. 8. 10. 11. 12. 非同期なコード
package Test::Web::Example;
use Mojo::Base 'Mojolicious::Controller';
use Time::HiRes qw(sleep);
sub welcome {
my $self = shift;
$self->render_later;
Mojo::IOLoop->timer(0.5 => sub {
$self->render(
message => 'Welcome to the
Mojolicious real-time web framework!');
});
}
1;
13. Apache bench
ab –c 100–n 1000 http://your_host_name/
サーバ構成
さくらVPS
メモリ 1G
CPU 仮想2コア
nginx1.6+hyponotad 5workers
nginx1.6+starman 5workers
14. 15. 16. 17. 18. 同期的コード
sub mojo4{
my $self = shift;
my $ua = LWP::UserAgent->new;
my $res = $ua-
>get("http://atndfc.dokechin.com");
if ($res->is_success) {
$self->render(message => $res->content);
}
else {
die $res->status_line;
}
}
19. 20. 21. 22. 23. # callback hell code
sub mojo{
my $self = shift;
$self->render_later;
$ua->get('http://yahoo.co.jp/' =>
sub{ my ($ua, $tx) = @_;
my $title1 = $tx->res->dom->html->head-
>title->text;
$ua->get('http://google.com/' =>
sub{ my ($ua, $tx) = @_;
my $title2 = $tx->res->dom->html->head-
>title->text;
$self->render(msg => $title1 . $title2);
});
});
}
24. # finish
sub mojo2{
my $self = shift;
$self->render_later;
my $delay = Mojo::IOLoop::Delay->new;
$delay->on(finish=>sub{
my $delay = shift;
my @titles = map { $_->res->dom-
>at('title')->text } @_;
$self->render(message => "@titles");
});
$self->ua->get( $_ => $delay->begin )
for@urls;
}
25. # stepsを利用したコード
sub mojo3{
my $self = shift;
$self->render_later;
my $delay = Mojo::IOLoop::Delay->new;
$delay->steps(sub{
my ($delay) = @_;
$self->ua->get( "http://www.cpan.org/" =>
$delay->begin);
$self->ua->get( "http://jognavi.com/" => $delay-
>begin);
}, sub {
my ($delay,@args) = @_;
my @messages = map {$_->res->dom->at('title')-
>text} @args;
$self->render(message=> "@messages");
},
);
}
26. 27. 28. 29. 30. 31. 32. 33.