― Web Technology and Life ―

PerlのWAFのKossyとO/RマッパーTengでつくるWIKIアプリ

2012-03-22
Like a ハッカソン(pre Hachioji.pm #15)の準備として、Kossyの勉強用アプリとしてWIKIアプリを作ってみました。O/RマッパーをTengで、Object::Container::Exporterでインスタンスキャッシュという感じの構成。

Kossyの特徴

作ったアプリの話に入る前にちょっとした個人的なメモをば。

  • ディスパッチャー/ルーターとコントローラーはSinatra-ish,filterがいい按配
  • テンプレートエンジンは、Text::Xslate(Kolon)
  • 独自のバリデーター
  • セットアップスクリプトあり
  • フロントサイドのサポートして、CSSフレームワークのbootstrapとJqueryもついてくる

Kossyのメソッドについてのメモ

filter(DISPATCHER METHODS for Kossy class)

$appのコードリファレンスをラップするイメージ。
filterの中で、$app->($self,$c);を呼び出す前に何か処理を書けば「BEFORE_DISPATCH」的な役割になるし、$app->($self,$c);を呼び出す後に何か処理を書けば「AFTER_DISPATCH」的な役割になる。

fillinform(xslateのfunctionに登録されている)


: block form |fillinform( $c.req ) -> {
<head>
<title><: $c.stash.title :></title>
</head>
<body>
<form action="<: $c.req.uri_for('/post') :>">
<input type="text" size="10" name="title" />
<textarea name="body" rows="20" cols="90"></textarea>
</form>
</body>
: }

フォームをテンプレートに書くときはこんな感じに書いておくと、MyApp::Webのコントローラーのほうに、いちいちHTML::FillInForm::Liteのゴニョゴニョを書かなくていい。(テンプレートがプログラマーチックになるけど、XslateのKolonで書く時点それは許容)

参考

参考情報

参考プロジェクト

勉強用としてWikiアプリ

基本的にnekokakさん作のWAFのKamuiのサンプルアプリのKikiをそのままKossyに載せかえた感じです。まぁ、最初は写経が丁度いいかとw一応、Smart::Args使ったりとか、SkinnyをTengにとか、Kamui::ContainerをObject::Container::Exporterにしたりしています。写経なんで間違いないかなとか思って、テストは書いていません(もう4時でゲンカイですw)。

作ったWikiアプリはこちら

感想

fiterというコントローラーにかますコードリファレンスがいい感じの按配。bootstrapとかXslateのKolonとかのいい勉強にもなったかなと。configは今回、Object::Container::Exporterの中にキャッシュさせたけど、configの仕組みくらいはKossyの中にあってもいいかなーと思ったり思わなかったり。fillinformをxslateのfunctionに登録していたり、今回使わなかったけどkazeburoさんのサンプルアプリの解説で投稿にJavaScriptをかましたり、なかなか痒いところに手が届く感じで、仰るとおり大規模にならないことが確信しているシステムというよりツールくらいのもに載せるにはなかなかとてもいい感じだと思いました。

Kossyのペアプロ用の参考仕様

Like a ハッカソン(pre Hachioji.pm #15)のペアプロ組が参考にするための(特に私w)参考仕様です。基本的に、tokuhiromさんのAmon2で掲示板アプリをつくるを参考にしながらKossyで実装していけばなんとなく開けてくるかなと思っています。

参考

オプションたち

  • 非匿名での投稿
  • それにともなうサインアップ機能の実装
  • facebookの中におく
  • facebookの「いいね」ボタンをつくる
  • https://github.com/kazeburo/GrowthForecastをスクラッチで再実装して、時間別投稿数をグラフにしてトップに表示
  • etc
  • 時間余ったら、https://github.com/kazeburo/GrowthForecastとかhttps://github.com/kazeburo/HRForecastとか題材にコードについて語るとかw

終わりに

bootstrapの仕様見てたり、Kolonの仕様見ていたり、すっかり時間が過ぎてしまった。。。思い返して忘れているだろうけど(苦笑)間違いやご意見あれば気軽にコメントお願いしますー。で、直前になってしまったけど、Kossyのサンプルアプリもひとつ増えたことですし、ぜひ最後まで読んでくれた皆様、Like a ハッカソン(pre Hachioji.pm #15)にふるってご参加をお願いしますm(_ _)m

Perl hachioji.pm update_at : 2012-03-26T15:57:37
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus