2009-01-01から1ヶ月間の記事一覧

HE::Middleware::Profile

標準のloggerなようなものがHTTP::Engine::Middlewareにあれば、HE::Middlewareの用途が広がりそう。 WAFのmiddlewareとしなくてもよいものが結構ありそう HE::Middleware::Profileを実装してみた感じ、Profilerそのものを差し替えられるとよさそう。config…

Angelosグループ@はてな

作る過程についてangelosグループで少しずつ記録を残していくことにしました。すでに大枠は固まってしまったので、過去のデザイン上の判断についても少しずつ書いていきたいと思います。http://angelos.g.hatena.ne.jp/dann/

Angelos::Class, Angelos::PluginでMouseをラップしている理由

http://angelos.g.hatena.ne.jp/lyokato/20090120/1232429809lyokatoさんが書いてくれているのですが、AngelosではMouseをラップして使っています。この目的は幾つかあって、 Mouse, Mooseの違いを吸収する事 Mouseがいざなくなったとかそういうときのためで…

XSでのエントリーポイント

http://d.hatena.ne.jp/gfx/20090121/1232507043gfxさんの記事の中で、以下の情報はとても貴重だなぁと。こういう情報を出してもらえるのはとても有り難いです。 perlapi.pod sv.c+sv.hとav.c+av.h DDEBUGGINEをつけてコンパイルしたperlバイナリ

#angelos作りました

freenodeに#angelosを作りました。WAFのデザインなどについて話したいという方は是非どうぞ。Pluginをバリバリ開発したいという方もお待ちしています :-)

perlのソースコードの参照

gfxさんからXSやるときはまずPerlのソースコードをみれるようにしておくのが基本!というツッコミを頂いたので、手元において引けるようにしてみました。 コードを手元に置いてみる git clone git://perl5.git.perl.org/perl.git いつでも引けるようにしてみ…

Class::Method::Modifiers::Fast

Angelosのプラグイン機構はMouseに依存しているので、Mouseを高速化しなければ速度の改善は見込めません。そこで、id:gfxさんのData::Utilを使って、Class::Method::Modifiers互換のインターフェースをもつ、高速なmethod modifierを実装してみました。以下…

angelos hackathon #1

つい先日、lyokatoさん、bonnuさん、vkgtaroさんとangelos hackathon #1をやりました。 lyokatoさんはFormValidator::Simpleのプラグインを作ってくれました! bonnuさんはFillInFormのプラグインを作ってくれました! vkgtaroさんは、Logger周りの改善やdet…

Angelosグループ@はてな

id:lyokatoさんが作ってくれました!さらに、ソースまで含めた解説を書いてくれてます。 http://angelos.g.hatena.ne.jp/lyokato/既に自分のブログより詳しく書かれています。angelosは、大分API仕様は固まってきたのですが、まだ変更したいところがあるので…

XSの勉強を始めるためのエントリーポイントは?

XSをはじめようかと思い、少しずつtutorialとかを眺めてみたのだけれど、目的なく読むのは経験上続かないので、興味があるものから読んでみることにしました。まず、ShikaのXSから読んでみてます。Shikaのコードは一通りよんでいるため、Perl的に何をすると…

git log -pが便利

git

複数人で開発をやろうとすると、昨日どんな変更が入ったかとかを確認するのはよくやると思うんですが、そんなときに以下のようなコマンドをよく使っています。 git log -p HEAD@{3.days.ago}gitdifflogという名前でpathの通ったところにいれて使ってます。# …

buildbotでgithubのperlプロジェクトをContinuous Integration

angelosの仕様も固まってきたので、Continuous Integration環境を整えて定期的にビルドできるようにしてみました。30分毎にgithubからチェックアウトして、make testしてます。以下、buildbotのmaster.cfg # This is the dictionary that the buildmaster pa…

Angelosのプラグイン機構

最終的にPluginはMouseのRoleでhookポイントにmethod modifierでhookして差し込む形にすることにしました。Sledge風なHookとMixin系のPluginを最初完全にわけていたのですが、これで一つに統合できます。 Hookの実現方法 Engine, Controller, Viewごとに、そ…

Apache::TestでTESTファイルの出力されるファイルを変える方法

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 - RESTfulなDispatcher

HTTP::Routerのファーストユーザー兼開発者という事でikasam_aにDispatchされたので、早速HTTP::Routerの紹介を。 http://search.cpan.org/~masaki/HTTP-Router-0.01/HTTP::Routerは一言で説明すると、RESTfulなDispatcherです。RailsやMerbのRoutesと同じで…

FormValidatorまわりのPluginの仕様

Pluginの仕様を考えると、Validationをどこでするのか、validation error時の表示方法、formの受け渡し方あたりが考えどころだなぁと。catalystのcontrollerでstash介してform渡す仕様は、どうも直感的じゃないので違う形で実現したいなと Validationのする…

Devel::NYTProfを使ったチューニングでわかること

極端に遅いモジュールの処理(0.x secの処理) キャッシュし忘れでメソッドが何回もcallされてる処理 スタートアップ時にかかるコストか否か ここから先のチューニングは、使っているモジュールそのもののコードレベルでの理解がないとチューニングは難しいで…

angelos@mod_perl

angelosはHTTP::Engineを使っているので、HTTP::Engine以上の速度がでることはないので、HTTP::Engineとの速度差をみながらチューニングをしてみてるんですが、同じコードでもServerSimpleとmod_perlとで10%近く速度に差がでるなぁと。server simpleでApache…

angelos@mod_perl

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…