This domain may be for sale!
Catalyst は Web アプリケーションを開発するときに、フレームワークとしてとても便利です。 ひとつの Web サービスを作ろうとすると、以下のような様々な処理が必要になってきます。 ユーザーに見せるWeb インターフェイス アクセス集計などの日次バッチ処理 アバター画像などの生成・変換処理 ユーザー通知やメルマガ配信などのメール送信処理 これを、すべて Catalyst にやらせてしまうと、プロセスが太りすぎてしまいますし、アプリケーション設計として不自然です。 結論から先に言ってしまうと、モデルやロジックだけでなく、ヴァリデーション処理なども Catalyst から分離してしまい、Catalyst はリクエストのディスパッチと View だけを担当するのがスマートで、拡張・メンテナンス・テストがしやすいやり方なのかなと、最近うっすらと考えています。Catalyst 在りきではな
はじめに 遅ればせながらじっくりCatalystのsourceを読んでみようかと思ったので、 備忘録を兼ねてシリーズ化してみます。 ちなみにソースコードはCatalyst::Runtimeの5.7003を見てます。 まずbootstrapとなるscript(project_server.pl)から見れば当然、Catalyst.pmを継承したクラスが基点となってるのは明らかなので、ここから読んでみます。 ここでは、 $ catalyst.pl MyAppでプロジェクトを作った物だとします。 まず出来上がったMyApp.pmを見てみます。 Catalyst->import use Catalyst qw/-Debug ConfigLoader Static::Simple/; our $VERSION = '0.01'; # # Configure the application # __PA
This repository is private. All pages are served over SSL and all pushing and pulling is done over SSH. No one may fork, clone, or view it unless they are added as a member. Every repository with this icon () is private. This repository is public. Anyone may fork, clone, or view it. Every repository with this icon () is public.
以前書いたエントリの修正です。 get_columnsだとinflateを通らないようなので、明示的にアクセサを呼ぶように修正しました。使い方には変更ありません。 sub inflate_row { my $row = shift; my %data; foreach my $column ( $row->result_source->columns ) { $data{$column} = $row->$column; } return \%data; } sub inflate_resultset { my $rs = shift; return [ map { inflate_row($_) } $rs->all ]; } sub inflate_dbic { my ( $c, $obj ) = @_; if ( !Scalar::Util::blessed($obj) ) { re
ググっても意外と情報が出てこないmany_to_manyを試してみた。DBはMySQLで。 ■ DB作成 DBはこんな感じで作る。 create table users ( id int not null auto_increment primary key, name varchar(255) not null unique ) engine=innodb; create table roles ( id int not null auto_increment primary key, name varchar(255) not null unique ) engine=innodb; create table user_roles ( id int not null auto_increment primary key, user int not null, role int not
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
MobileCat とは さいきんすっかり放置です、すみません。このページとソース逆引きのページだけ静的に残してあります。参考程度にお願いします。2009/8 冨田 Perl で、CPAN モジュールをさまざま組み合わせてモバイルサイトを作る方法を紹介してみるプロジェクトです。(紹介記事) このサイト http://mobilecat.koneta.org/ 自体がサンプルとなっています。UA を変えたり携帯からアクセスしてみてください。 Links ソース一式 // thanks coderepos ソース逆引き - 簡単な解説のページ TODO founder: Naoki Tomita (モバイル系ブログ) 携帯開発系チャンネル: #mobilejp @ irc.freenode.net おことわり スケールのサンプルになる必要もないだろうと、個人サーバーで軽く動かしているため、修正
せっかくようやっと本題であるモバイル開発の話がでると思っていたんですが、エントリの内容の正当性に自信がないのでいろいろ悩んでいたら、更新が滞ってしまいました。。まだちょっと悩み中ですがとりあえず公開してみます。 文字コードの扱い方針 文字コード取り扱いの基本ルールは以下のようにしました。 パラメータは入力された段階で、入ってきたパラメータをUTF-8エンコーディングに変換する。 テンプレートはすべてUTF-8で記述する。アプリケーション側では、utf8フラグなしで読み込んで使用する。 DBにはutf8のキャラクタセットで保存する。 ビューでレンダリング時に携帯端末に合わせてエンコーディング変換する。 具体的には、まずルートコントローラー(MyApp::Conteroller::Root)で、$c->req->paramから、utf8フラグなしのUTF-8エンコーディング文字列に変換します。
っていうのがなかなかできなくて。 テンプレートファイルはShift_JISなんだけどソースコードやDBはUTF-8でやりたい。 でさらに最終出力は携帯用サイトなのでShift_JISでっていうレアなケースを実現したいと。 テンプレートをUTF-8にさえすればCatalyst::Plugin::Charsets::Japaneseで一発OKなんだけどね。 テンプレートをクライアントが触りたいとかってケースでUTF-8とかわからんからShift_JISでお願いとかって結構あるのでそーゆー場合のお話ですね。 まぁクライアントが触る部分だけをうまく切り離してなんとかするってのが普通のやり方なのかもしれないけどとりあえず。 ってことでまずはShift_JISで書かれたテンプレートを動的にUTF-8に変える必要があります。 それはTemplate::Provider::Encodeでできるわけです。
#前に社内wikiに書いておいたのを公開してみるテスト。 Catalystでマルチバイトを扱う機会があるのは主に ユーザーがフォームで入力する値 ($c->req->param()) データベースからの入出力 (DBIx::Class) それ以外の文字列の評価 View::TTによる出力の生成 FillInFormによるフォームの埋め込み HTTPレスポンス です。 ここでは以下の条件でまとめてみました。 文字コードはUTF8に統一 データベースにはmysqlを使用 下準備 テンプレート、perlのコードは全てUTF8で書きます。 mysqlの文字コードの指定は/etc/my.cnfに [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysql] default-character-set
ひげぽん OSとか作っちゃうかMona- - Catalyst入門 と お作法について templateの include rootからのパスを指定してやればよい [% include templates/user/username.tt %]はてなのひげぽんさんがCatalystについて書いていたのでそれを受けて書いてみます。上記のこれは、root/base/の中に読み込みたいincludeファイルを入れてやると、それがTTのINCLIDE_PATHに入っているので [% include username.tt %]で読み込めるようになります。Catalyst::View::TTの103行目付近にその記述があります。ちなみに、テンプレートの中にデフォルトで使えるようになってる変数はbase($c->req->base), c($c), name($c->config->{name})の3
DBIx::Class::Schema::Loaderを入れれば、その上の3つもインストールされる。DBDはどれを使うか聞かれるがデフォルトは「インストールしない」なのでリターン連打しないように注意して。ほかにも物凄い大量の依存パッケージをインストールする。 CatalystのDBIサポート関連クラスをCPANでインストール 適当なテーブルを作る。 CREATE TABLE books ( id INTEGER NOT NULL AUTO_INCREMENT, isbn VARCHAR(13), title VARCHAR(255) NOT NULL, author VARCHAR(255), summary TEXT, PRIMARY KEY(id) ) character SET utf8 type=innoDB; テスト用に適当なデータもブッ込んでおく insert into boo
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
今回は Catalyst の Action の定義の仕方や処理の流れについて書いてみます。 Catalyst::Manual::Intro の Action にある説明を簡単にご紹介しますので、version 5 になってかっこよくなった action 定義の仕方を大雑把にでも理解できるかと思います。 Catalyst の Action Catalyst の Action は以下の例のように 特別な属性(例では ": Private")を持ったサブルーチンで定義されます。 sub default : Private { my ( $self, $context ) = @_; $context->response->output('Catalyst rockz!'); } Catalyst では何種類かの書き方で action(特別な属性を持ったサブルーチン)を 定義できますが、今回は G
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く