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

Spark Project 勉強会 #3に行ってきた!

C, Java, JavaScript, Perlと結構書けるようになってきたので、今年はActionScriptを初めてみようかと思い、Spark Projectの勉強会のほうに参加してきました。http://wiki.libspark.org/wiki/SparkStudy/03 Flashの最新動向 Flash Player10での、3Dの強化が…

CPANモジュールをDeveloper ReleaseとしてUploadする方法

バージョン番号を、次の正規表現(/\d\.\d+_\d/)にマッチする形で書いておけばいいらしい。ということを、woremacxさんに教えてもらいました。woremacx++http://www.cpan.org/modules/04pause.html#conventions # dev releases towards 1.93 1.92_50 1.92_51 …

CPANモジュールの作成からリリースまで

CPANモジュールの作成方法について、大体理解したので、過去のエントリをまとめてみました。他に、こんなのもしたほうがいいよ!とかあれば、是非お願いします。 CPANモジュールのひな形作成 pmsetupによるCPANモジュールの作成 pmsetup Foo::Bar http://dan…

my pmsetup

自分がモジュール作るときに使ってるpmsetupです。yappoさんのpmsetupをgit用に一部変えているだけですが、git使われている方がいればどうぞ。http://gist.github.com/13374

ShipitでCPANにモジュールをリリース

Shipitは、テスト、リリースタグ付け、CPANへのアップロードなど、CPANモジュールのリリースに必要な手順を自動化してくれるツールです。モジュールをアップロードして、CPAN Authorになりたい!ということで、shipitを使ってモジュールのアップロードをして…

Cache::Memcached::Fastがmemcached clientのライブラリとして重要な理由

これはConsistent Hashingの実装があるからということに尽きるのではないかと思いいます。memcachedのサーバーを追加するときには、Capacity Planning上、Capacityが足りなくなるタイミングで行います(追加するときには負荷が上がりすぎているという状況も…

Identity Conference #3にいってきた!

OpenIDでログインするblogを作ってみたので、次はOAuthでも遊びたいなということで、sofflitto会議室で行われたIdentity Conferenceに参加してきました。会場のまったり感と各発表20-30分程度と1つの発表が丁度よい長さだったこともあり、とてもゆっくり聞け…

CPAN Authorになりました!

今年はモジュールを使う側だけでなく、作る側になるというのを一つの目標にしていました。ある程度作りたいものをさくさく作れるようになってきたので、CPAN Authorになってみることにしました。今後、多くの人に使われるようないいモジュールを作れるように…

Sub系まとめ

Sub::XXX系は、Perlのsyntaxのどうしても汚くなってしまう部分を綺麗にwrapしてくれるので、使いどころが結構多いですね。Mooseもそうなんですが、それ普通他の言語だと言語レベルで元々サポートしてて、もっと綺麗にかけるようなぁっていうのが、たくさんあ…

Queueベースのアーキテクチャにおけるクライアントとプロセスサイズ

http://d.hatena.ne.jp/tokuhirom/20080902/1220337074tokuhiromさんの日記に詳しく書いてありますが、TheShwartzとTheShwartz::Simpleだと、メモリの使用量に2Mbも差があります。JobQueueを使って、非同期にすることの目的の一つに、App Serverの処理時間を…

PerlRequest単位のモデル

あとPerRequest系のモデルってみんな使わないのかな?僕の場合はPerRequestのモデルの方が多いんだけど・・・。ユーザーからの情報を受け取って処理するモデルが結構あるから自然とPerRequestになるんだけどもしかしてそーゆーのはモデル化するのに相応しく…

続MultiAdaptor

http://d.hatena.ne.jp/fbis/20080924/1222231854fbisさん案は、一番柔軟に設定できる案で、とてもDIコンテナを使う形の設定に近いんですよね。これは、Bread::Boardベースでやろうかなぁというのは少し思ってます。とりあえずは、Catalystのモデルとするト…

Sub::AutoでAUTOLOADを隠蔽

Sub::Autoを使う事で、PerlのAUTOLOADをとても綺麗に書けますね。 #!/usr/bin/env perl use strict; use warnings; { package Person; use Sub::Auto; use Perl6::Say; sub new { my $pkg = shift; bless {},$pkg; } autosub (^say_(\w+)$) { my ($what, @pa…

Queueベースのアーキテクチャについて

http://satoshi.blogs.com/life/2008/09/post-1.html以下の手順で進めるのが、今のところの定石な気がします。 Level2分散(機能別+ID(ユーザークラスタ)別)をやって同期で処理する Level2分散でもwriteの処理が追いつかなくて、かつユーザーへのレスポンス…

Catalyst::Model::MultiAdaptorでlifecyle support

ラップするインスタンスのライフサイクルを設定できるようにしました。PerRequest, Prototype, Singletonの3つをサポートしています。lifecycleで指定します。http://github.com/dann/catalyst-model-multiadaptor/tree/master package TestApp::Web::Model:…

CatalystアプリのメモリーリークをDevel::Leak::Objectでチェック

Devel::Leak::Object http://search.cpan.org/~adamk/Devel-Leak-Object-0.92/lib/Devel/Leak/Object.pmこれでオブジェクトのリークを調べる事ができます。 事前準備 exit(0)をcallするControllerを用意TestApp::Web::Controller::Root sub exit : Local { m…

Flickrから最新の写真をダウンロード

Flickrで写真を眺めるのが日課の今日この頃です。お気に入りの写真をiPod touchにいれて持ち歩くために、ダウンロードするためのスクリプトを書いていました。お気に入りの人の写真のフィードのURLを与えて、それらのフィード中の写真を一括でダウンロードす…

Catalyst::Model::MultiAdaptor - 複数のPOPOモデルをCatalystモデルにラップする

Catalyst::Model::Adaptorは素晴らしいモジュールなのですが、Catalyst::Model::Adaptorは、ラッパ(Adaptor)とPlainなCatalystモデルが1:1対応するために、ラッパを複数作る必要があるのが大変でした。そこで、複数のPOPOモデルをロードするモジュールを作っ…

CPANでよく使われているテストモジュール

こういうの調べるのはなかなか面白いなぁ。http://use.perl.org/~Ovid/journal/37433 1. 69396 - Test::More 2. 10912 - Test 3. 2314 - Test::Exception 4. 962 - Test::Simple 5. 610 - Test::Base 6. 386 - Test::NoWarnings 7. 308 - Test::Builder::Tes…

Plaggerで使われているモジュール一覧を出力する

テストで使われているモジュールとかの一覧を集計するのがなかなか面白そうだったので、それを Plaggerに対してやってみようということでやってみました。Plaggerのレベルだと使われている回数を出すのはあまり意味がなさそうなので、モジュール一覧だけ。CP…

Catalystで使われているモジュール一覧 (trunk版)

さっきのスクリプトで抽出。 perl extract_modules.pl /Users/dann/workdir/catalyst-trunk/lib Catalyst 結果 CGI::Simple::Cookie Carp Class::Inspector Class::MOP Config Cwd Data::Dump Devel::InnerPackage Errno File::Copy File::Find File::Modifi…

Moose系な人の特徴

Sub::XXX系が多め。全体的に黒魔術が隠蔽されてコードがcleanになっている。Sub系をみて黒魔術が理解できるという側面もある。

MooseX::Params::Validateでメソッド引数のvalidation

MooseX::Methodとやりすぎ感があるけれど、これくらいなら良さそう。モジュールのインターフェースになる部分に使うのがよさそうだなぁ。入り口でがちがちにValidationかけるのは、個人的な趣味にあう。 #!/usr/bin/env perl use strict; use warnings; use …

local::libがアプリケーションのモジュール配布に使えそう

local::lib http://search.cpan.org/~mstrout/local-lib-1.002000/lib/local/lib.pmlocal::libの向いてる用途は以下のような感じ。 This makes it easier to ship an application with an app-specific copy of a Perl module, or collection of modules. Us…

DIとは何か 番外編 - DIコンテナを使わずにModelのTestabilityを高める方法 -

DIコンテナは使わないけれども、「DIパターン + コラボレータ(依存性)のデフォルト設定 + Catalyst::Model::Loader」の構成にすることで、各コンポーネントの単体テストが可能になり、Testabilityを高める事ができます。「DI + コラボレータのデフォルト設…

Catalyst::Model::Loader

思うところがあって複数のPOPOモデルを読み込んでCatalystのModelにするLoaderを作ってみた。パッケージ名がなんかしっくりこないけれど。 package Catalyst::Model::Loader; use strict; use warnings; use Class::C3; our $VERSION = '0.01'; use …

DI(Dependency Injection)とは - 第2回

第1回では、DIパターンについて説明しました。今回は、DIパターンを踏まえて、DIコンテナとは何かについて説明します。 DIコンテナとは何か? 前回、DIパターンは、「依存性をクラスの外に出し、依存性の実装クラスを交換可能にするパターン」であることを説…

DI (Dependency Injection)とは - 第1回

次期Catalystでも使われるかもというDependency Injectionについて説明します。まず、DIとDI Containerは別の概念なのでまずDIから説明します。DIとは依存性を注入するという設計上のテクニックの一つです。依存性を注入って言われても何それ?という人も多…

CPAN Ratingsの5つ星のついたものを報告するIRC bot

plagger-ircbotという素晴らしいものがあるので、push系のbotは全部これで。実行 plagger-ircbot -c config.yaml plagger -c config.yaml cronでplaggerの実行を回して、後はDedupedとか使って重複しないようにとか。 --- global: plugin_path: /home/dann/p…

CPAN Ratingsで5つ星のモジュールを表示する

Perlで良いモジュールを選ぶ方法の一つにCPAN Ratingsを使うという方法があります。http://cpanratings.perl.org/今まではCPAN RatingsのRSSを購読していたんですが、全部を読む必要はあまりなさそうです。rateが5のものだけ読めば良さそうですね。というこ…