2009-01-01から1ヶ月間の記事一覧
標準のloggerなようなものがHTTP::Engine::Middlewareにあれば、HE::Middlewareの用途が広がりそう。 WAFのmiddlewareとしなくてもよいものが結構ありそう HE::Middleware::Profileを実装してみた感じ、Profilerそのものを差し替えられるとよさそう。config…
作る過程についてangelosグループで少しずつ記録を残していくことにしました。すでに大枠は固まってしまったので、過去のデザイン上の判断についても少しずつ書いていきたいと思います。http://angelos.g.hatena.ne.jp/dann/
http://angelos.g.hatena.ne.jp/lyokato/20090120/1232429809lyokatoさんが書いてくれているのですが、AngelosではMouseをラップして使っています。この目的は幾つかあって、 Mouse, Mooseの違いを吸収する事 Mouseがいざなくなったとかそういうときのためで…
http://d.hatena.ne.jp/gfx/20090121/1232507043gfxさんの記事の中で、以下の情報はとても貴重だなぁと。こういう情報を出してもらえるのはとても有り難いです。 perlapi.pod sv.c+sv.hとav.c+av.h DDEBUGGINEをつけてコンパイルしたperlバイナリ
freenodeに#angelosを作りました。WAFのデザインなどについて話したいという方は是非どうぞ。Pluginをバリバリ開発したいという方もお待ちしています :-)
gfxさんからXSやるときはまずPerlのソースコードをみれるようにしておくのが基本!というツッコミを頂いたので、手元において引けるようにしてみました。 コードを手元に置いてみる git clone git://perl5.git.perl.org/perl.git いつでも引けるようにしてみ…
Angelosのプラグイン機構はMouseに依存しているので、Mouseを高速化しなければ速度の改善は見込めません。そこで、id:gfxさんのData::Utilを使って、Class::Method::Modifiers互換のインターフェースをもつ、高速なmethod modifierを実装してみました。以下…
つい先日、lyokatoさん、bonnuさん、vkgtaroさんとangelos hackathon #1をやりました。 lyokatoさんはFormValidator::Simpleのプラグインを作ってくれました! bonnuさんはFillInFormのプラグインを作ってくれました! vkgtaroさんは、Logger周りの改善やdet…
id:lyokatoさんが作ってくれました!さらに、ソースまで含めた解説を書いてくれてます。 http://angelos.g.hatena.ne.jp/lyokato/既に自分のブログより詳しく書かれています。angelosは、大分API仕様は固まってきたのですが、まだ変更したいところがあるので…
XSをはじめようかと思い、少しずつtutorialとかを眺めてみたのだけれど、目的なく読むのは経験上続かないので、興味があるものから読んでみることにしました。まず、ShikaのXSから読んでみてます。Shikaのコードは一通りよんでいるため、Perl的に何をすると…
複数人で開発をやろうとすると、昨日どんな変更が入ったかとかを確認するのはよくやると思うんですが、そんなときに以下のようなコマンドをよく使っています。 git log -p HEAD@{3.days.ago}gitdifflogという名前でpathの通ったところにいれて使ってます。# …
angelosの仕様も固まってきたので、Continuous Integration環境を整えて定期的にビルドできるようにしてみました。30分毎にgithubからチェックアウトして、make testしてます。以下、buildbotのmaster.cfg # This is the dictionary that the buildmaster pa…
最終的にPluginはMouseのRoleでhookポイントにmethod modifierでhookして差し込む形にすることにしました。Sledge風なHookとMixin系のPluginを最初完全にわけていたのですが、これで一つに統合できます。 Hookの実現方法 Engine, Controller, Viewごとに、そ…
App::Benchmark::WAFのベンチ機能がmod_perl下でのパフォーマンス測定が簡単にできて素晴らしいので、angelosにもまるっともらって組み込んでみた。Apache::TestMM::filter_args(); Apache::TestMM::generate_script('t/TEST');みたいな感じで書いてt/TEST生…
Moduleが依存しているモジュールを出力するスクリプトをDevel::FindNamepsacesを使ってかいてみた。Devel::NYTProfとかでprofiling結果をみていると、こんなモジュールつかってたのか!ということがよくあるわけですが、どのモジュールが使っているモジュー…
HTTP::Routerのファーストユーザー兼開発者という事でikasam_aにDispatchされたので、早速HTTP::Routerの紹介を。 http://search.cpan.org/~masaki/HTTP-Router-0.01/HTTP::Routerは一言で説明すると、RESTfulなDispatcherです。RailsやMerbのRoutesと同じで…
Pluginの仕様を考えると、Validationをどこでするのか、validation error時の表示方法、formの受け渡し方あたりが考えどころだなぁと。catalystのcontrollerでstash介してform渡す仕様は、どうも直感的じゃないので違う形で実現したいなと Validationのする…
極端に遅いモジュールの処理(0.x secの処理) キャッシュし忘れでメソッドが何回もcallされてる処理 スタートアップ時にかかるコストか否か ここから先のチューニングは、使っているモジュールそのもののコードレベルでの理解がないとチューニングは難しいで…
angelosはHTTP::Engineを使っているので、HTTP::Engine以上の速度がでることはないので、HTTP::Engineとの速度差をみながらチューニングをしてみてるんですが、同じコードでもServerSimpleとmod_perlとで10%近く速度に差がでるなぁと。server simpleでApache…
App::DLMProfを使って、動的にロードされたモジュールを調べてみた。 App/Benchmark/WAF/Angelos/Controller/Root.pm Params/ValidateXS.pm unicore/lib/gc_sc/Digit.pl unicore/lib/gc_sc/Word.pl Term/ANSIColor.pm Apache2/Connection.pm YAML/Loader/Bas…