-
[catalyst][server]CatalystをレンタルサーバのCGIで動かすときの設定
lapis25 09/02 00:00:00
[http://catalyst.g.hatena.ne.jp/lapis25/20061223/p1]に他の方法を さくらインターネットスタンダードプランで設定してます. 結論を書くと script/hoge_cgi.plを公開されているサーバに名前を変えてコピーする use libを書き換える の2点で動きました 作ったアプリケーションのディレクトリ,をここではhogeとします.その直下のscriptディレクトリにhoge_cgi.plを使うとCatalystをCGIとして動かします.現在Cat ...
-
[catalyst][dbic] モデルのfunctional test
dann 03/13 22:54:14
DBICx::TestDatabaseとTest::Fixture::DBIC::Schemaを使ってモデルのテストをしてみた。大体イメージどおりの感じで使えるかなぁと。 テスト用のDBクラス DBICx::TestDatabaseを使っている。将来的に拡張する可能性があるため継承をしておく。 モデルのテスト用のベースクラス。 setupでfixture作成. Test::Fixture::DBIC::Schemaでfixtureのロード. テストコード モデルのテストクラスは、MyA ...
-
Cowなメモリ共有のプラクティス with mod_perl
dann 04/10 22:29:37
mod_perlのことを全然分かっていないので、最近少しずつid:hidedenに聞きながら勉強している今日この頃です。いくつかの記事とid:hidedenなどに聞いた話を含めて、自分の理解している範囲内でまとめてみました。 forkしたプロセス間でのメモリ領域の共有 forkでは全てのメモリが共有された状態・親プロセスと子プロセスでメモリが共有された状態になっている。子プロセスをforkするときには、forkする前に確保したメモリは共有される。しかし、子プロセスがforkしてからモジュールをロードさ ...
-
[catalyst]Controller::Resources を catamoose で使えるようにした
ikasam_a 05/15 11:50:19
Catalyst 5.80003 でテスト通した。[http://search.cpan.org/~masaki/Catalyst-Controller-Resources-0.06/:title] 5.7x ではテストしてないし、そもそも Moosify したので動かないと思われるので、Catalyst 5.7x で使う場合には 0.04 をオススメします。 catamoose 対応するにあたってのはまりどころは BEGIN { extends 'Catalyst::Controller' } しな ...
-
[rest][catalyst]オーバーロード POST with Catalyst
ikasam_a 01/25 00:38:27
>http://d.hatena.ne.jp/ZIGOROu/20090124/1232810879:title> <input type="hidden" name="x-tunneled-method" value="delete" /> rails みたいに _method=put って書きたいよって人は[http://gist.github.com/51460:title=こちらを参考に]どうぞ.
-
[catalyst][rest]統一インターフェイスと PUT and DELETE tunneled POST パターン
ikasam_a 04/20 02:42:28
HTTP の場合,統一インターフェイスとは HTTP メソッドのことで,特に一般的な操作に対して以下の4つが規定されている. GET - リソースの表現を取得する POST - リソースを作成する PUT - リソースを変更する DELETE - リソースを削除する ROA 的にはこのような決まったインターフェイスでリソースの操作をするといいわけだが,Web アプリケーションの場合相手になるクライアントは(主に)Web ブラウザで,これが往々にして PUT/DELETE などをサポートしていないため,そ ...
-
[catalyst]Catalyst で map.resources 的なことをするコントローラ
ikasam_a 12/16 23:57:57
>http://b.hatena.ne.jp/entry/http://catalyst.g.hatena.ne.jp/ikasam_a/20071216/1197817077> charsbar: Chained Action? 内部実装は Chained Action を動的に作ってるだけです.が,Chained Action って Attribute 複雑だし汚いだろって個人的に思ってるので. coderepos で書いてます. [http://coderepos.org/share/brows ...
-
[catalyst][openid]sreg とか extension とか
ikasam_a 07/16 21:58:51
coderepos の私家版 C::Auth::Cred::OpenID に手を入れてみた. http://coderepos.org/share/changeset/15895 やったこと [http://d.hatena.ne.jp/ZIGOROu/20080322/1206198224:title=ZIGOROuさんの記事]を参考に,set_extension_args できるようにした sreg.nickname があるときに VerifiedIdentity の display の値を上書き ...
-
[catalyst]Catalyst::Plugin::BuildURIをURIに日本語が存在するときにも使いたい
ikasam_a 12/27 03:27:07
[http://d.hatena.ne.jp/ZIGOROu/20061030/1162241093:title=Catalyst::Plugin::BuildURI]で$argsに日本語が入った場合に上手くいかなかったのと,あとexample.com/myapp/なんて配置の場合に上手くいかなかったので,0.0.2にパッチ書いてみた. 直接動作に関係ないけど,CPANPLUSでUnparsableになるので,0.0.xみたいなversion stringを使うのなら version.pm使った方が ...
-
[moose] MooseX::Types使って型定義
dann 05/01 00:00:00
http://search.cpan.org/~phaylon/MooseX-Types-0.04/lib/MooseX/Types.pm MooseX::Typesを使って、MyApp::Types::Core とか作ると、subtypeの定義を別のクラスに出すことができます。 型定義(subtype, coerce)は基本的に使いまわしたいもののはずなので、オレオレTypesを発展させて使いまわせるようにしておくと、使いどころが結構ありそうだなぁという気がします。 moose版のHTTP::En ...
-
[catalyst]Controller::Resources を他の Controller と併用する
ikasam_a 10/29 20:45:08
[http://vkgtaro.jp/2008/10/28/catalyst_controller_resources_and_request_token:title] まだ [http://coderepos.org/share/changeset/22322:title=CodeRepos の trunk] に入れただけだけど,多分対応したはず. (追記)[http://search.cpan.org/~masaki/Catalyst-Controller-Resources-0.04/:titl ...
-
DBを直接モデルとして扱うのは悪か?
dann 03/06 00:48:11
DBICをControllerから直接呼ぶのは本当に悪なのか?、これは一概には言えないんじゃないかと思っているのだけれど、Perl界隈でもそうなんだろうか。以下のようにレイヤ分割して、レイヤ間を疎に保つという話は、Javaの界隈では割によくやられていた話だ。大体以下のような構成だ。 Action -> Service-> Domain Model -> DAO -> OR Mapper レイヤ間をDIコンテナで繋いで、各レイヤ間の依存関係は最小にして、テスタビリティを高めるというのが定石だった。ドメイ ...
-
DIコンテナ
dann 04/03 00:09:53
DIコンテナの一つの役割は、オブジェクトの依存関係をWiringして、上記のような依存関係を解決することです。以下にBread::Boardを利用したDIの例を説明します。 実行するコードは、以下のようになります。下記の例は、Bread::BoardというPerlのDIコンテナを利用したものです。 applicationサービスを取得すると、MyApplicationのオブジェクトはFileLoggerオブジェクトが設定された状態(依存関係がwiringされた状態)で取得されるため、MyA ...
-
Catalystに依存しないconfigの読み込み
dann 03/16 14:11:37
Catalystに依存せずにyamlなどの設定を読むようにした。 package MyApp::ConfigLoader; use strict; use warnings; use MyApp::Utils; use Config::Any; use File::Spec; sub new { my $class = shift; my $self = {}; bless $self , $class; $self->{config} = $self->load; ...
-
[cpan] CHI -- Unified cache interface
dann 05/04 00:00:00
http://search.cpan.org/~jswartz/CHI-0.07/lib/CHI.pm cool! DODのcacheの実装を見るとget_multi周りのcacheのAPIの共通化が上手くされていて、感動していたんですが、それを汎用化したような感じになってますね。 まだあまり使われていないみたいですが、これからはCHIを使っていくのが流行るかもしれないですね。
-
テーブル:モデルが1:1になることの問題点はなんだろう?
dann 03/07 01:51:35
id:Baysideさんの話 http://d.hatena.ne.jp/Bayside/20080306/p1 以下の点は理解できます。 複数のロジックを束ねるのにL(miyagawaさんがいっているCに近いもの)を置く Controllerにロジックを書くのはよくない ただ、以下の点はよくわからないです。 Catalyst 用語でいう stash と session は MyApp::Logic 内で隠蔽化してしまうと幸せになれます。 テーブル:モデル=1:1 じゃダメ sessionが ...
-
[moose] MooseのRoleでAOP
dann 05/18 00:00:00
aroundのキーワードで指定できるメソッドが1つになってしまうからAOP目的では使えないけれど、around 'do_*' のように指定できるようになれば、Roleを複数のクラスに組み込めて使えるようになる。 だから、Transactionのように明示的にメソッドを指定したい場合には、aroundのmodifierにメソッドを登録するところを少し書き換えるだけでいけると思う。Mooseにパッチあてたいなぁ、これは。 package指定のようなjoinpointの指定はできないけれど、実際にパッケージ ...
-
Mooseのパフォーマンス測定 Class::Accessor::Fast vs Moose
dann 05/03 00:00:00
http://code2.0beta.co.uk/moose/svn/Moose/trunk/benchmarks/caf_vs_moose.pl setterは実行回数たりねーと怒られた. getterは大差なし インスタンス生成は、かなり差がある。最大100倍くらい遅い Destructionもかなり差がある 現状だとインスタンス作る場合には、mata->make_immutableしておいたほうがいいってこと。CGIで使うには無理がありそうだけど、そうじゃなきゃいけそうだなぁと。 DI ...
-
Mooseは実用で使えるか?
dann 05/04 00:00:00
nemuiからneru.
-
Moose::Roleのインターフェースとしての役
dann 04/30 00:00:00
かっちり作りたいときに「これはインターフェースですよ」と明示する仕組みが重要で、JavaのInterfaceは優れた言語仕様の一つです。Moose::Roleは、そのInterfaceとしての役割を果たしています(一応、Mixinとしての役割も)。 このMoose::RoleのInterfaceの仕組みは、実装するべき箇所を明文化するのにとても向いています。特にフレームワークを作りたい場合には、役に立つと思います。 YAPC::AsiaでもMooseでフレームワーク作ろうみたいなセッションがあったよう ...
-
Moose::Roleの使い方のサンプルp
dann 05/01 00:00:00
MooseのCookbookからRoleのInterfaceとしての役割を示すエッセンス部分を切り出してみました。 http://search.cpan.org/dist/Moose/lib/Moose/Cookbook/Recipe10.pod Comparableというクラスが、Interfaceとしての役割を果たしていて、MooseのRoleになっています。このComparableを実装する人は、compareメソッドを実装しなければいけませんよというように読みます。(equal_toメソッド ...
-
CatalystCon#1資料-Catalystからモデルを切り離せ
dann 04/23 00:00:00
slideshareのほうにアップ。 http://www.slideshare.net/techmemo/catalyst-367905/ 後で。 # slideshareだとやっぱりスライド変換途中でレイアウトが少し崩れるね。
-
[catalyst]Catalyst Conference #1
ikasam_a 04/23 02:17:47
Catalyst REST Practice #1 ってタイトルで発表してきました.資料はこちらからどうぞ. http://svn.coderepos.org/share/docs/masaki/catalystcon1/roa_and_catalyst.html ちなみにプレゼンツールは S6 使わせてもらっていて,スライド作成は,はてな記法をパースして S6 とマージして出力する Catalyst アプリでやってました. 今回は ROA の話から初めて,それを実際に実現するためには Catalys ...
-
[catalyst][openid]Cred::OpenID と find_user
ikasam_a 04/06 22:22:50
>http://hibinokoto.jp/archives/2008/04/post-259.html:title> OP(IdP) での認証に成功してリダイレクトで戻ってきた後の $realm->find_user の真偽で authentication の真偽を決めてしまうのが個人的に微妙なところ。 (snip) OP(IdP) での認証が出来てさらに $c->find_user でアプリの DB からユーザが SELECT 出来たか否かで authentication の真偽が決まる。 この部分 ...
-
[vim] vimをIDEっぽく使う (autocomplpop + ctags)
dann 03/31 18:53:52
LLを使ううえで大変なことは、Eclipseがないことに尽きる。補完がしにくいし、ソースコードjumpがしにくい。けれど、これはautocomplpopとctagsを組み合わせると、Eclipseまで完璧ではないもののそれに近いことが実現できる。 ctags+vimで該当箇所へのjump ポイントは、使うモジュールの全部のタグを作っておいて、cronでまわして生成しておくこと ただし、Eclipseは型がわかっているから、一発で該当箇所にjumpできるけど、LLの場合だとそこまで完璧にはいかない。 ...
-
dannさんを囲む会で、何故か自分が店の予約をしている件について
dann 03/26 01:30:38
tomyheroのひどい丸投げをみた! ということで、他に参加される方がいれば、techmemo@gmail.com or この日記のコメントにでも参加希望の旨連絡ください。木曜日までに連絡もらえれば予約しておきます。 参加確定リストの中に知り合いがいない人は、techmemo@gmail.comまで連絡してもらえれば、僕の連絡先をメールでお伝えしますので、e-mailで。 参加者リスト 確定 id:dann id:vkgtaro id:tomyhero id:hideden id:ly ...
-
飲み会まとめ
dann 03/30 06:12:44
始発で帰ったから、眠すぎて記憶が飛んでる... けど、楽しかったなぁ。こういうContextが共有された状況で限定された話を密にできるといいなと。 昼の部は、masakiさんとvkgtaroさんとCatalystでものづくり。Tipsも何点か教えてもらって、足りない部分とかがわかったのはよかったなぁ。こういうコード見ながらやるのは一番いいなと。 夜の部は、ZIGORuさんとlyokatoさんと殆ど話をしてた気がするなぁ。typesterさんとcharsbarさんとはあまり話せなかったから、次回Cata ...
-
Shipwright
dann 02/16 10:34:23
これは、かなり使える気がする。cool! http://search.cpan.org/~jesse/Shipwright-1.0/ CPANモジュールがバージョン管理できる。 モジュール間の依存関係、インストール順をyamlで管理することができる モジュールのバージョンの更新が簡単にできる cpanコマンドみたいに、何度もy押さなくていい! といったことができるようになっている。 一回、CPANモジュールをバージョン管理下にいれてしまえば、後はどのサーバーでも同じバージョンのものが使えるよ ...
-
自分が使うときのレイヤ分け
dann 03/06 00:48:12
以下くらいの形で成り立つんじゃないかと最近思ってる。Javaerなときは、DIコンテナで繋ぐ形しかありえないと思っていたのだけれど、Railsを触ってからは大分変わった。 DBICのモデルに固有のロジックは、DBIC部分に。DBICのモデルをまたがるロジックは、Service部分にという形に今はしている。DBICのモデルは、Controllerに見せる形になっている。 Controller -> Service -> DBIC Controller -> DBIC
-
[catalyst]OpenID のパッチを書いた
ikasam_a 11/12 19:31:54
Catalyst::Plugin::Authentication::Credential::OpenID (0.03) で新旧両方の認証 API に対応するパッチを書いて [http://rt.cpan.org/Ticket/Display.html?id=30659:title=RT に登録]した.
-
[catalyst][fastcgi]CatalystでText::VimColorを使う
ikasam_a 12/25 13:18:28
今更ですが,かぜぶろさんの[http://blog.nomadscafe.jp/archives/000703.html:title=CatalystでText::VimColorが動かない]を受けて. lighttpd + fastcgiな環境で試したけど,とりあえずこんな感じで追加したところ動いたっぽい.いいのかな. 一応パッチ
-
[catalyst][advent2007]Catalyst Advent Calendar 2007 目次
lapis25 12/01 00:00:00
http://catalyst.perl.org/calendar/2007/ 今年もAdvent Calendarの季節ですね まだリンク一覧はないです→http://dev.catalystframework.org/wiki/DocLinks ここでも→http://dev.catalystframework.org/svnweb/Catalyst/browse/trunk/examples/CatalystAdvent/root/2007/ 例によって適当な日本語概要を順次追加 [http ...
-
[catalyst]それ Catalyst::Action::RenderView と dump_info でできるよ
ikasam_a 11/04 00:42:48
http://d.hatena.ne.jp/kane46/20071102/1194014078 強制デバッグスクリーンにしたいということで It also allows you to pass dump_info=1 to the url in order to force a debug screen
-
[catalyst][auth]Catalyst::Plugin::Authenticationが変わっている
lapis25 08/06 00:00:00
ひさしぶりにCatalystをさわっている.id:vkgtaroさんにC::P::Authenticationが少し変更されていることを教えてもらった.自分で作っている分はいままでのようにひとつの認証方法を使っていて,詳しく見ていないのだけどこのあたりの変更がぱっと見える loginメソッドからauthenticateメソッドに変更になっていて,引数にrealmが追加されている 複数の認証方法を設定で書くことで,引数にrealmを設定して複数の認証方法をAuthenticationの仕組みで扱える Au ...
-
[catalyst]NEXTよりClass::C3のほうが正しいMROになるのはわかるんだが
ikasam_a 09/03 23:09:19
[http://d.hatena.ne.jp/holidays-l/20070829/p1:title=NEXTの代わりにClass::C3]ってのが実はくせもので,M/V/CとかActionClassに使うぶんには問題無いと思うんだけど,Pluginでコアに関わる部分,要するにprepareとかEngineのアクションに適用するとこける(はず). どっかで前に読んだんだけど,Class::Data::Inheritable/Class::Accessor::Fastまわりの継承問題なのかな. Ca ...
-
よさげなモジュールたち。
tokuhirom 11/29 10:57:09
このへん? Catalyst Catalyst::Action::RenderView Catalyst::Devel Catalyst::Manual Catalyst::Model::DBIC::Schema Catalyst::Plugin::Authentication Catalyst::Plugin::Authentication::Store::DBIC Catalyst::Plugin::Authentication::Store::HTTP Catalyst::Pl ...
-
[catalyst][controller]Chain#01
lapis25 01/04 00:00:00
役に立たないメモ. なんかよくわからないのでいろいろやってみる.あとでまとめられたらイイナ [参考] http://yusukebe.com/tech/archives/20070102/110651.html http://search.cpan.org/dist/Catalyst-Runtime/lib/Catalyst/DispatchType/Chained.pm http://www.catalystframework.org/calendar/2006/10 http://dev.catal ...
-
[catalyst]C::P::FillInForm::Loose
ikasam_a 11/26 23:45:41
finalize での強制 fillform をオプションにしてみた.あと $c->stash->{error} は外した.
-
[catalyst]Catalystはrequire 5.008001=Perl5.8.1
lapis25 11/22 00:00:00
当たり前だけど5.8.1以降なら動くということ.CentOS3.xはPerl5.8.0なんだよねぇ.5.8.0に書き換えても動くのかな?ちなみにMovable TypeもPerl5.8.1以降推奨ですね 違いはこんな感じらしい↓ [http://fleur.hio.jp/perldoc/perl/5.8.1/perldelta.html] 動きそうな気もするけどその関係で問題があると困るな
-
[Catalyst][Plugin]Session::FastMmap
lapis25 11/08 00:00:00
[http://search.cpan.org/dist/Catalyst-Plugin-Session-FastMmap/FastMmap.pm:title] [http://qootas.org/blog/archives/2005/06/catalyst_authen.html:title] このあたりを参考にひとまず単体で使うだけやってみる myApp.yml expiresの値はyamlで設定するなら数値で指定する必要があるみたい.たとえば60 * 60のような書き方ではダメでした m ...
-
[catalyst][Controller]Data::Page::Navigation
lapis25 10/27 00:00:00
[http://search.cpan.org/~kazeburo/Data-Page-Navigation/lib/Data/Page/Navigation.pm:title] これは良いものです myApp.pmでuse Data::Page::Navigationしてみたけどそれでいいのかな.ひとまず動いてるしいいか…