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 (20)
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 (14)
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 (8)
PDF
PDF
Mojoliciousのl10 nを自動化するツール
PDF
PDF
PDF
PPTX
英文難易度の低いニュースを集めたWebアプリ twien
PDF
PDF
Recently uploaded (9)
PDF
RS485/UART to LoRaWANコンバーター RS485-LB/LS日本語カタログ
PDF
HyperChips Investor Pitch 2025 - Power Solution Provider for WBG Power Semico...
PDF
株式会社CyberneXの会社紹介資料です。当社との協業や投資に興味あればご連絡ください。
PDF
20250918_VIoTLT_vol21_kitazaki_v1___.pdf
PDF
論文紹介:LoRA in LoRA: Towards Parameter-Efficient Architecture Expansion for Con...
PPTX
Drupal11新機能紹介.pptx [2025/09/12]の勉強会で発表されたものです。
PDF
論文紹介:SoccerNet-v2: A Dataset and Benchmarks for Holistic Understanding of Bro...
PPTX
Kiroを使ってみた - そこから見える今どきの開発 - Kiro Meetup Japan #1
PDF
RS485/UART to LoRaWAN コンバーター RS485-LB/LS日本語マニュアル
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.