2008年07月30日

trunkのHTTP::Engineのsubカバレッジが100%になった今日この頃皆様いかがおすごしでしょうか。

今現在はtrunkのテストカバレッジを高めた上で、lazy_requestブランチを本格的に採用すべく動いている所です。
nothingmuchによるブランチで、request関連の情報を必要になった時に作り出すような物になっています。
今までは(Catalystもそうだけど)clientからrequestが有るたびに使いもしないデータを最初に作ってたんだけど、そういった事が解消されます。
ただ、今の状態だとPOSTでfile uploadした時が上手く動かない。

lazy_request自体は外部インターフェィスは変わらない予定なので、別に互換性とかの問題は出ないはずなんですが、このブランチが落ち着き次第 HTTP::Engine::Context を無くすブランチを作る予定す。
今までは request や response の情報は $c に生えているメソッド $c->req や $c->res 経由でアクセスする感じでしたが、mstやnothingmuch曰く「context使うなんてCatalystの二の舞になっちゃうyp!(意訳)」といった提案を受けて、「結局 $c ある利点てそんなにないよね」って考えに至ったのでcontextを無くす方向で動こうと思います。
ぶっちゃけWAF側にcontextあったら、どのコンテキストがWAFのなのかHTTP::Engineのなのかわかんなくなって混乱しそうだしね。

sub handle_request {
    my $c = shift;
    $c->res->body($c->req->uri);
}
このコードが
sub handle_request {
    my $req = shift;
    return HTTP::Engine::Response->new( body => $req->uri);
}
になる感じす。

冗長になっちゃうんじゃ無いか?みたいな意見もありそうですが昔のnothingmuchのプランによると

sub handle_request {
    my $req = shift;
    return HTTP::Engine::Response::Redirect->new('http://example.com/');
}
(あ、これも冗長か><)
sub handle_request {
    my $req = shift;
    return HTTP::Engine::Response::JSON->new({ foo => 'bar' });
    # 18:39 < t*kihirom>     return HTTP::Engine::Response::JSON->new({ foo => 'bar' });
    # 18:39 < tokihir*m> HATE HATE HATE
}
みたいに、特定用途によってレスポンスのクラスを変えれるようにしたらどうか的な話になった。

HTTPEx::Declareつかえば

use HTTPEx::Declare qw( res redirect );
interface {
    module => 'ServerSimple',
    args   => {
        host => 'localhost',
        port =>  1978,
    }
};

run {
    my $req = shift;
    return redirect('http://example.com/') if $req->uri =~ /redirect/;
    return res( body => 'hello' );
};
とかになると思う。

HTTP::Engine::Compat的なモジュールを使って、過去のHTTP::Engineアプリと互換性をなるべく保つようにする事も一応考えています。
HTTP::Engine->newするかわりにHTTP::Engine::Compat->newする感じで。

HTTP::Engineはなるべくシンプルであれというのが我々の共通認識であるのでcontextを無くす変更により、よりスマートになるんではないかと思っている次第です。
今まで時間があいた分を取り戻すかのように怒濤に進める予定。

Posted by Yappo at 2008年07月30日 18:37 | TrackBack | Perl
Comments

Gold in WoW is usually called wow gold, which is as popular as wow power leveling among WoW gamers. Some even strive to find cheapest wow gold with fast delivery online. The same, warhammer gold and warhammer power leveling are hot topic in any game forums. As one of the most popular game, lineage 2 is also well known, running after lineage 2 adena is an interesting thing, too. Since last year, Aion released, we also provide gamers with cheap aion gold, aion account, aion cd key, aion power leveling and aion time card, which are necessities in the game. I believe a seasoned player, you would not be unfamiliar with darkfall online, maybe you are playing it now. If you really playing it, you can get cheapest darkfall gold, darkfall power leveling, darkfall account, darkfall cd key and darkfall time card in an instant from us. More, we are supplying age of conan gold (somebody call it aoc gold by short), lotro gold in Lord of the Ring Online, silkroad gold, the gold name in silk road, maple story mesos, which is the particular gold game in Maple Story, eve isk (the only currency in EVE Online), ffxi gil (also the gold in FFXI), eq2 gold and eq2 plat are the short forms of EverQuest II Platinum as well as rom gold that the gold in Runes of Magic, atlantica gold, gamers are chasing all the time and spellborn gold which mean your status in the game. Just come here now.

Posted by: cheapest wow gold at 2009年07月08日 16:05
Post a comment









Remember personal info?






コメントを投稿する前に↓の場所にnospamと入力してください。