Suche senden
Hochladen
Sledge recently in Yokohama.pm Aug, 2008
•
0 gefällt mir
•
2,522 views
Yoshiki Kurihara
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 24
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
ネタじゃないScala.js
ネタじゃないScala.js
takezoe
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
CMS for Cloud by Ruby
CMS for Cloud by Ruby
Masaki Komagata
Swagger 入門
Swagger 入門
Yoshiaki Yoshida
Jawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
MILI-LLC
Weitere ähnliche Inhalte
Was ist angesagt?
開発環境をDockernizeした話
開発環境をDockernizeした話
Yutaka Horikawa
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
Masaki Suzuki
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
One Time Binding & Digest Loop
One Time Binding & Digest Loop
Kon Yuichi
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
Takuro Sasaki
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
Yutaka Horikawa
Node.js version16の新機能
Node.js version16の新機能
Masaki Suzuki
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
Kazuki Ueki
Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)
Naoto Teruya
実戦Scala
実戦Scala
Yuto Suzuki
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
Daigou Harada
怖いRails
怖いRails
Yutaka Kinjyo
Azure Load Testingを試してみた
Azure Load Testingを試してみた
Hiroyuki Mori
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
Toshiaki Maki
進撃のSbt
進撃のSbt
Yuto Suzuki
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Takao Tetsuro
Realm meet up #17
Realm meet up #17
Daisuke Nagata
Was ist angesagt?
(20)
開発環境をDockernizeした話
開発環境をDockernizeした話
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
One Time Binding & Digest Loop
One Time Binding & Digest Loop
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
AWS Lambdaで作るクローラー/スクレイピング
AWS Lambdaで作るクローラー/スクレイピング
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
Node.js version16の新機能
Node.js version16の新機能
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)
実戦Scala
実戦Scala
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
AWSのElastic BeanstalkでWordPressを 構築レスで導入してみる。
怖いRails
怖いRails
Azure Load Testingを試してみた
Azure Load Testingを試してみた
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
進撃のSbt
進撃のSbt
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
Realm meet up #17
Realm meet up #17
Andere mochten auch
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
株式会社スカイアーチネットワークス
フリーエージェント時代の仕事術 先生:和田 裕介
フリーエージェント時代の仕事術 先生:和田 裕介
schoowebcampus
Iss seminar 2010709#1-upload
Iss seminar 2010709#1-upload
Openwave Systems
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
Munenori Sugimura
とある Perl Monger の働き方
とある Perl Monger の働き方
Yusuke Wada
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
Citrix Systems Japan
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
Amazon Web Services Japan
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
Amazon Web Services Japan
Andere mochten auch
(8)
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
スカイアーチセミナー:[スカイアーチ AWS共催]AWS移行のプロが教える!導入への3ステップ(skyhopperのご紹介):150521
フリーエージェント時代の仕事術 先生:和田 裕介
フリーエージェント時代の仕事術 先生:和田 裕介
Iss seminar 2010709#1-upload
Iss seminar 2010709#1-upload
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
とある Perl Monger の働き方
とある Perl Monger の働き方
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
セキュリティをあきらめない! ~WAFパフォーマンスを無限に拡張するネットワークデザイン~
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
AWS Black Belt Tech シリーズ 2016 - WorkSpaces
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
AWS Black Belt Techシリーズ Amazon WorkDocs / Amazon WorkMail
Ähnlich wie Sledge recently in Yokohama.pm Aug, 2008
Introduction of Rhodes
Introduction of Rhodes
Hitoshi Kuroyanagi
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Using Windows Azure
Using Windows Azure
Shinji Tanaka
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
僕の Serverless web application
僕の Serverless web application
祐樹 夏目
activerecord-turntable
activerecord-turntable
Drecom Co., Ltd.
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
Fujimura Munehiko
130412 kayac-cinnamon
130412 kayac-cinnamon
Yuki Shibazaki
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
tak-nakamura
Inside mobage platform
Inside mobage platform
Toru Yamaguchi
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Etsuji Nakai
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
iPride Co., Ltd.
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
Ähnlich wie Sledge recently in Yokohama.pm Aug, 2008
(20)
Introduction of Rhodes
Introduction of Rhodes
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Using Windows Azure
Using Windows Azure
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
laravel x モバイルアプリ
laravel x モバイルアプリ
僕の Serverless web application
僕の Serverless web application
activerecord-turntable
activerecord-turntable
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
130412 kayac-cinnamon
130412 kayac-cinnamon
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
Inside mobage platform
Inside mobage platform
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
Web制作勉強会 #2
Web制作勉強会 #2
Kürzlich hochgeladen
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
2024 03 CTEA
2024 03 CTEA
arts yokohama
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
Kürzlich hochgeladen
(12)
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
2024 03 CTEA
2024 03 CTEA
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 04 minnanoito
2024 04 minnanoito
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
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.
以上です 質問はありますか?
Jetzt herunterladen