Submit Search
Sledge recently in Yokohama.pm Aug, 2008
0 likes
2,525 views
Yoshiki Kurihara
1 of 24
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PDF
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
PDF
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
PDF
ネタじゃないScala.js
takezoe
PPTX
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
KEY
CMS for Cloud by Ruby
Masaki Komagata
PDF
Swagger 入門
Yoshiaki Yoshida
PDF
Jawsug chiba API Gateway
Takuro Sasaki
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
MILI-LLC
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
ネタじゃないScala.js
takezoe
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
CMS for Cloud by Ruby
Masaki Komagata
Swagger 入門
Yoshiaki Yoshida
Jawsug chiba API Gateway
Takuro Sasaki
明日からはじめられる Docker + さくらvpsを使った開発環境構築
MILI-LLC
What's hot
(20)
PPTX
開発環境をDockernizeした話
Yutaka Horikawa
PPTX
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
PDF
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
PDF
One Time Binding & Digest Loop
Kon Yuichi
PDF
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
PDF
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
PDF
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
PDF
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
PPTX
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
PPTX
Node.js version16の新機能
Masaki Suzuki
PPTX
20161208 Classmethod Codenize Tools
Kazuki Ueki
PPTX
Serverless Framework 使ってる話(node.js)
Naoto Teruya
PDF
実戦Scala
Yuto Suzuki
PPTX
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
Daigou Harada
PDF
怖いRails
Yutaka Kinjyo
PDF
Azure Load Testingを試してみた
Hiroyuki Mori
PDF
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
PDF
進撃のSbt
Yuto Suzuki
PPTX
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
PDF
Realm meet up #17
Daisuke Nagata
開発環境をDockernizeした話
Yutaka Horikawa
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
One Time Binding & Digest Loop
Kon Yuichi
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
Node.js version16の新機能
Masaki Suzuki
20161208 Classmethod Codenize Tools
Kazuki Ueki
Serverless Framework 使ってる話(node.js)
Naoto Teruya
実戦Scala
Yuto Suzuki
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
Daigou Harada
怖いRails
Yutaka Kinjyo
Azure Load Testingを試してみた
Hiroyuki Mori
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
進撃のSbt
Yuto Suzuki
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
Realm meet up #17
Daisuke Nagata
Ad
Viewers also liked
(8)
PDF
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
株式会社スカイアーチネットワークス
PDF
フリーエージェント時代の仕事術 先生:和田 裕介
schoowebcampus
PPT
Iss seminar 2010709#1-upload
Openwave Systems
PPT
Perl Beginners #7 おとなのWAF
Munenori Sugimura
PDF
とある Perl Monger の働き方
Yusuke Wada
PPTX
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
Citrix Systems Japan
PDF
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
Amazon Web Services Japan
PDF
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
Amazon Web Services Japan
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
株式会社スカイアーチネットワークス
フリーエージェント時代の仕事術 先生:和田 裕介
schoowebcampus
Iss seminar 2010709#1-upload
Openwave Systems
Perl Beginners #7 おとなのWAF
Munenori Sugimura
とある Perl Monger の働き方
Yusuke Wada
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
Citrix Systems Japan
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
Amazon Web Services Japan
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
Amazon Web Services Japan
Ad
Similar to Sledge recently in Yokohama.pm Aug, 2008
(20)
PDF
Introduction of Rhodes
Hitoshi Kuroyanagi
PDF
DLR言語によるSilverlightプログラミング
terurou
PDF
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
PPT
Using Windows Azure
Shinji Tanaka
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
PDF
laravel x モバイルアプリ
Masaki Oshikawa
PDF
僕の Serverless web application
祐樹 夏目
KEY
activerecord-turntable
Drecom Co., Ltd.
PDF
AndroidでActiveRecordライクにDBを使う
Fujimura Munehiko
PDF
130412 kayac-cinnamon
Yuki Shibazaki
PDF
多分モダンなWebアプリ開発
tak-nakamura
PPT
Inside mobage platform
Toru Yamaguchi
KEY
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
PDF
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
PDF
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
PDF
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
PDF
試して学べるクラウド技術! OpenShift
Etsuji Nakai
PPTX
Docker friendlyPHP / Laravel
Kentarou Takeda
PDF
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
PPTX
自作アプリをデプロイしてみた with Docker
iPride Co., Ltd.
Introduction of Rhodes
Hitoshi Kuroyanagi
DLR言語によるSilverlightプログラミング
terurou
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Using Windows Azure
Shinji Tanaka
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
laravel x モバイルアプリ
Masaki Oshikawa
僕の Serverless web application
祐樹 夏目
activerecord-turntable
Drecom Co., Ltd.
AndroidでActiveRecordライクにDBを使う
Fujimura Munehiko
130412 kayac-cinnamon
Yuki Shibazaki
多分モダンなWebアプリ開発
tak-nakamura
Inside mobage platform
Toru Yamaguchi
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
試して学べるクラウド技術! OpenShift
Etsuji Nakai
Docker friendlyPHP / Laravel
Kentarou Takeda
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
自作アプリをデプロイしてみた with Docker
iPride Co., Ltd.
Sledge recently in Yokohama.pm Aug, 2008
1.
最近のSledgeについて id:clouder
2.
self-introduction •id clouder •本名 栗原
由樹 •livedoor 所属 •HTTP::MobileAgent Imager::QRCode etc...
3.
今日話すこと •簡単な紹介 •livedoorでの最近の使い方
4.
今日話さないこと •インストール方法 •詳しい使い方
5.
•Perlで出来た純国産 Webアプリケーションフレームワーク •2003年2月13日リリース •最新版はバージョン1.11 •http://sl.edge.jp/ Sledgeとは
6.
•弊社では今でも現役バリバリです •Sledgeを使ってるっぽい会社 Sledgeとは
7.
今と昔のコードを 見比べてみる
8.
dispatcher処理(昔) .cgiファイル #!perl use strict; use App::Pages::Root; App::Pages::Root->dispatch(‘index’); もしくは Sledge::Dispatcher <Location
/webapp> SetHandler perl-script PerlHandler Sledge::Dispatcher::Properties PerlSetVar SledgeMapFile /path/to/map.properties </Location>
9.
dispatcher処理(今) Sledge::Engineを使用 <Location /webapp> SetHandler perl-script PerlHandler
App </Location> dispatchはApp.pm package App; use strict; use Sledge::Engine; __PACKAGE__->setup;
10.
dispatcher処理(今) App/{CMS,Admin}.pmなど機能別に使い分け # App/CMS.pm package App::CMS; use
strict; use Sledge::Engine; __PACKAGE__->setup; # modperl.conf <Location /webapp-cms> SetHandler perl-script PerlHandler App::CMS </Location>
11.
Config処理(昔) Sledge::Configを使用 # lib/App/Config/_test.pm package App::Config::_test; use
strict; use vars qw(%C); *Config = %C; $C{TMPL_PATH} = '/path/to/view'; $C{DATASOURCE} = [ 'dbi:mysql:appdb','root', '' ]; _test.pm や _production.pm など ファイルで環境を使い分ける
12.
Config処理(今) 独自に実装しYAML形式で記述 # config.yaml test: tmpl_path: /path/to/view datasource: -
dbi:mysql:testdb ... production: tmpl_path: /path/to/view datasource: - dbi:mysql:proddb ... 1ファイルで環境を棲み分け
13.
テンプレート処理(昔) Sledge::Templateベース # テンプレートへの値の渡し方 $self->tmpl->param(foo =>
‘bar’); # テンプレートファイルの選択はguess_filename()に任せるか $self->load_template(‘index.html’);
14.
テンプレート処理(今) Sledge::Viewを利用 # PagesのベースクラスでSledge::Plugin::Viewをuseする package App::Pages; use
strict; use Sledge::Plugin::View; sub create_view { App::View::TT->new( shift ) } # App/View/TT.pmを用意(JSON.pmやRSS.pmなど使い分け) package App::View::TT; use strict; use base qw( Sledge::View ); sub process { ... } sub render { ... }
15.
テンプレート処理(今) Sledge::Plugin::Stashを利用 # テンプレートへの値の渡し方 $self->stash->{ foo
} = ‘bar’; # テンプレートファイルも stash に $self->stash->{ template } = ‘/path/to/index.html’; # もしくは __PACKAGE__->register_hook( AFTER_DISPATCH => sub { my $self = shift; $self->stash->{ template } = $self->guess_filename( $self->page ); } );
16.
Validation処理(昔) ページ毎にApp::Validator::PageNameを作成 # App::Validator::Baseで validate
を定義 package App::Validator::Base; sub validate { my($self, $page) = @_; $self->normalize($page); my($status, $stuff) = $self->do_validate($page); $page->tmpl->param(errors => $stuff) if $status == FAIL; return $status, $stuff; }
17.
Validation処理(昔) ページ毎にApp::Validator::PageNameを作成 # App::Validator::PageNameでdo_validate()を定義 package App::Validator::PageName; sub
do_validate { my($self, $page) = @_; ... if (成功) { return SUCCESS, undef } else { return FAIL, $errobj; } }
18.
Validation処理(今) Data::FormValodatorを利用 # App::PagesやApp::Data::Baseなどにvalidate()を定義 sub validate
{ my($self, $name) = @_; unless ($name) { $name = join '_', $self->prefix, $self->page; $name =~ s{/}{_}g; $name =~ s{^_}{}; } my $profiles = $self->path_to('etc', 'dfv.pl')->stringify; my $dfv = Data::FormValidator->new($profiles, { missing_optional_valid => 1, msgs => &dfv_messages_handler($name), }); my $form = eval { $dfv->check($self->r, $name); }; $self->stash->{form} = $form; $form; }
19.
Validation処理(今) ちなみにetc/dfv.plは普通な感じです use strict; use Data::FormValidator::Constraints
qw(:closures); return +{ page1 => { required => [qw(username password)], constraint_methods => { username => qr/^[a-zA-Z0-9]{4,8}$/, }, }, page2 => { required => [qw(foo bar)], optional => [qw(baz) ], constraint_methods => { foo => qr/^[01]$/, }, }, };
20.
Validation処理(今) PagesもしくはDataクラスからvalidate()する # フォームのある各ページのPagesでvalidate()をコール package App::Pages::Foo; sub
dispatch_index { my $self = shift; my $form = $self->validate; if ( $form->success ) { # 成功 } else { # エラー } }
21.
Validation処理(今) PagesもしくはDataクラスからvalidate()する # Dataオブジェクト経由validate()をコール package App::Pages::Foo; sub
dispatch_index { my $self = shift; my $obj = App::Data::User->new($self->r); my $form = $obj->validate; if ( $form->success ) { # 成功 } else { # エラー } }
22.
という感じで 使ってます。
23.
エンジニア募集中 現在livedoorでは一緒に働いてくれる エンジニアを募集しています。 もし興味のある方は、 clouder at gmail.com や http://recruit.livedoor.com/ など、どこからでもよいのでコンタクト を取ってくださいませ。 お待ちしております!
24.
以上です 質問はありますか?
Download