「Test::More - LazyLoadLife」について、角谷さんに「詳しく」と希望されたのだがうまく書けない。ので、まずいまま書く。ここらへんを突き詰め体系化すれば、プログラミングスタイルに小さい変革を起こすことができると思うのだが、私には荷が重い。まぁ、交響チラシの裏に書いておけばミームはいつか誰かが咲かせてくれるだろう。 Perl のテスティング・フレームワーク Test::More の機能・特に SKIP, TODO ブロックが、TDD(BDD) や 過去はまつもとさん、昨日は西本さんが漏らしていた「TDD でアイデアが失われていく」というハッカーの悩みの一助になるのではないか? と考えたのだ。 まずは、Test::More の リファレンスの SKIP, TODO の項を読んで欲しい。……読んだ? この機能が揮発性のアイデアを書き留めておくのに丁度良いのでは? ということだ
Cache-Memcached-XS-0.01 - client library for memcached (memory cache daemon) using libmemcache - metacpan.org libmemcache を使って書かれた Memcachedのインターフェース。 使い方はほぼ Cache::Memcached と同じっぽい。 速度にどのぐらい差が出るかベンチとってみた。 #!/usr/local/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); use Cache::Memcached; use Cache::Memcached::XS; my $bench = timethese(10000, { 'Cache::Memcached' => sub { m
2006年10月17日23:00 カテゴリ JPEGにファイルを隠させない方法 ああ、Warezと戦っていた頃が懐かしい。 秋元@サイボウズラボ・プログラマー・ブログ: jpegの中に別のファイルを隠す方法 jpeg形式のファイルの後に、rar(圧縮形式の一つ)を単純につなげると、普通に開くと画像が表示されて、rarの解凍ツールで開くとrarの部分が解凍できるファイルが作れるということだ。まだ今よりディスクがずっと貴重だった頃、無料ホームページサービスというのはこれとの戦いだった。 画像を交換しているフリをして何か他のものを交換したい人 たちがたくさんいたのだ。まあ今でもいるのかも知れないが、これだけ無料ホスティング(blog含む)の容量制限が緩和された昨今では昔ほどの需要はないのだろう。 ファイルを隠す方は簡単すぎ。解説なんかなくても cat good.jpg bad.rar > bad
初登場になります、酒井といいます。 今回は Six Apart のサービスで使われている MogileFS というファイルシステムを紹介したいと思います。MogileFS については、日本語の情報はあまり…、というかほとんどない状況ですので参考にしていただければと思います。では早速。。。 MogileFS とは MogileFS とは、Perl で記述されているオープンソースな分散ファイルシステムです。 プロジェクトホームページ http://www.danga.com/mogilefs/ メーリングリスト http://lists.danga.com/mailman/listinfo/mogilefs 上記のホームページ内でも紹介されていますが、主に以下のような特徴があります。 アプリケーションレベルでの実装なので特殊なカーネルモジュールいらず。 ファイルを複数ホストに自動コピー / バ
Module::Installって最近良く見るんですけど、イマイチその旨みを知らなかったんですが、 WiKicker の Makefile.PL を Module::Install ベースにに書いてありました。 で引用ですけど、 依存モジュールを、それぞれ必須のもの・ビルドのみ時に必要なもの・推奨のものと分けて処理できる Makefile.PL 実行時に、未インストールの依存モジュールを CPAN からインストールできる。 依存モジュールを feature 別にまとめて、ビルド時に未インストールのものをインストールするか対話的に選択できる。 などの機能が使えるようになる。 ってあるそうな。特に未インストールが対話的にインストール出来る機能って見たことあるけどModule::Installの機能とは露知らず。。。CPAN Authorとして恥ずかしいっすね。^^;
DBIx::Class を少し使ったことがあったので Class::C3 をなんとなくで理解していたんです。(ふーん幅優先版の NEXT モジュールでしょ?みたいな感じで。) でも、これは絶対にちゃんと細かい挙動まで勉強しといたほうがいいと思いました。 多重継承とか mixin とかに強くなりたいなと C3 C3 というのは Python 2.3 のドキュメントに書いてある MRO(Method Resolution Order 多重継承したときにどんな感じでメソッドを探索するかという順番) を決めるアルゴリズムで。Algorithm::C3 っていうのがそのアルゴリズムの Perl 実装なんです。 それに! Parrot でも使えるみたいだし! ちなみに MRO ってこんな感じね A には add というメソッドがある B にも add というメソッドがある C は A と B を多重継
2006年09月08日05:00 カテゴリLightweight Languages perl - no warnings 'unintialized' はてぶ経由でCharsbarさんからも指摘あり。 [を] not defined とヒアドキュメント 昔はそうやっていたのですが、「use warnings」を使い始めたら、 警告 ("Use of uninitialized value ...") が出るようになったので、 いつも入れているのです…。これまたPerlの世界ではTMTOWTDIな対策があるのだけど、いい機会なのでここでその対策をまとめておきます。 no warnings 'uninitialized'; これが一番基本的な対策になります。Scope単位で有効なpragmaなので、 use warnings; sub foo{ no warnings 'uninitiali
Test::Perl::Critic で PBP 準拠なコードを自動テスト Perl Best Practices 日本語版発売記念ということで、Plagger のユニットテストに Test::Perl::Critic を組み込んでみました。 Perlベストプラクティスposted with amazlet on 06.08.24Damian Conway クイープ オライリー・ジャパン (2006/08/24) Amazon.co.jp で詳細を見る 組み込むといっても実装は簡単で、t/99-perlcritic.t なファイルをつくって、以下のように書き込むだけ。 use strict; use Test::More; eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcri
Rabin Karp アルゴリズムでコード重複の検出 YAPC::NA で会った Fotango の Norman Nunley がつくってる Algorithm::RabinKarp モジュールが面白げです。 Rabin Karp 文字列探索アルゴリズム (wikipedia) を使って文字列のハッシュ(ダイジェスト)をチェックし、同一の値を示す部分を重複しているとみなしてレポートしてくれます。つまり、プロジェクト内のコードのコピーペーストを検出するツールとして使えるというわけ。 ためしに Plagger で試してみた結果は rabin.txt のようになりました。プラグインの register_hook や CustomFeed での Feed オブジェクトの生成など、イディオム的に使う部分が大半になってしまっていますが、いくつか実際コピペで再利用しているコードが検出できています。 c
iandeth. Perl, Flash ActionScript, MySQL, Movable Type, システム開発 - そんなテーマのサイトdeth. gtop.plx #!/usr/bin/perl use strict; use warnings; use GTop; my $gtop = GTop->new; my $before = $gtop->proc_mem($$)->size; eval $ARGV[0]; die $@ if $@; my $after = $gtop->proc_mem($$)->size; my $diff = GTop::size_string($after - $before); print "$diff : $ARGV[0]\n"; 例) CGIモジュールのメモリ増加量は... $ ./gtop.plx 'use CGI' 704k :
最近の CPAN モジュールで Storable を当たり前のように使っているのをみかけるのですが、入れ子になっていないフラットなハッシュ程度の単純なデータをシリアライズするには重いのではないかとベンチマークをとってみました。ついでに、以前から比較してみたかった pack/unpack の固定長と可変長の比較もやってみました。ベンチマークをとるのは、ハッシュのシリアライズでありがちな要素数の少ない文字列リストと、配列のシリアライズでありがちな要素数が多い整数リストの 2 つにしました。 結論 要素数が少ないハッシュのシリアライズには split/join が速いようです。 要素数が多い整数のリストのシリアライズには整数 unpack/pack が速いようです。 可変長文字列 unpack/pack は split/join よりも遅いようです。 単純なデータ構造では Storable のメ
内から外が見えないサーバがけっこうあって、そういうサーバにCPANモジュールを入れるときはひとつひとつ、configure, make, make installしてたけど、CDBIとか、ましてやSVKを入れるときにいい加減ウンザリしたので、調べてみたら、nDiki: 野良パッケージと依存 Perl モジュールのインストールセット をCPAN::Site で (2006-02-11)にバッチリ書いてあるし、これもCPANのドキュメント嫁って話でした。 以下、やり方。 モジュール取得 外が見えているサーバでCPANシェルを起動させて、欲しいモジュールを取得。このとき、 build_cache がデフォルトの10だとちょっと不安だったので、100とか指定しておいた。 あと、 get だと依存関係にあるモジュールは入れてくれないっぽい。なので、 make とかで芋づるで取得。 モジュールを移す
VERSION-0.05000での記述。http://search.cpan.org/~mstrout/DBIx-Class/ ドキュメントも当初に比べれば増えてきたし、そっち見たほうがよかばい。 まあ以下は簡単なまとめで。一通り使えるくらいは書きたい。 このサイトはWikiなので途中途中に色々追加したり修正したりしますからご注意を DBIx::Class::Schemaを使ってみる これからDBICではSchemaメインらしい。 使うテーブル作成SQL create table user ( id int(10) NOT NULL auto_increment, name varchar(256) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く