日向夏特殊応援部隊

俺様向けメモ

CPAN

Iterator::GruopedRange 0.02 Released

さて、ちょっとしたことからタイトルのようなモジュールを書いて見ました。Iterator::GroupedRange モジュールは簡単に説明すると、リストまたは別の(複数行ずつ返す)イテレータから指定行数分まとめて列挙するというモジュールです。0.01 で SYNOPSIS を思…

XML::Writer

今まで使ったこと無かったけど、これは便利だ。 #!/usr/bin/perl use strict; use warnings; use IO::String; use XML::Beautify; use XML::Writer; my $osns = 'http://ns.opensocial.org/2008/opensocial'; my $buffer = IO::String->new; my $writer = XM…

今日の SQL::Abstract

SELECT * FROM hogehoge WHERE hoge_flags & 2 = 0; みたいのを作りたい場合、 use strict; use warnings; use Data::Dump qw(dump); use SQL::Abstract; my $sql = SQL::Abstract->new; my ($stmt, @bind) = $sql->select("hogehoge", ["*"], +{ hoge_flags…

DBD::Mock を使ったテスト

DBD::Mock は DBI のドライバの一つで、DBI を使ったプログラムで意図的な状態を作る事が出来ます。 と言う訳でメモ程度に書いて行きます。 データベースハンドルの取得 use strict; use warnings; use Test::More; use DBI; plan tests => 3; my $dbh = DBI…

Sub::Exporter の collectors

Sub::Exporter の collectors だけ良く分からなくて、 Tutorial Cookbook を見たんだけど、その部分の解説とコードが中途半端で意味が良く分かりませんでした。そんな訳で Google 先生に聞いたところ、 http://googlewhacks.blogspot.com/2007/12/pittsburgh…

URI::Template 0.14_01 は draft-03 相当

まぁ DEVELOPER RELEASE ですけども、URI::Template 0.14_01 は draft-03 相当みたい。 新しく出来るようになったこと id:n_shuyo に、 draft-03 でしかないくせに、RESTful本の作者からは「HTML5 に入るかも」と(過度の?)期待を得ているのだが、実のところ…

Params::Coerce のメモ

Params::Coerce の使い方が良く分からなかったので試してみました。 追記 (2008-06-09T18:22:10+09:00) と言うか、すぐに間違えに気づいたので内容を大幅に書き換え(ぉぃ Params::Coerce とは 特定のクラスのインスタンスから違うクラスのインスタンスへ変…

XRI::Resolution::Liteのサンプル

解説はあとで。priorityも考慮に入れて、OpenID サービスを取得する場合はこんな感じかなぁ。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Math::BigInt; use Perl6::Say; use XML::LibXML; use XRI::Resolution::Lite; my $cl…

Catalyst/DBICでDigest認証する

自分の為のメモですよ。 準備 まずはCatalystプロジェクトを作ります $ mkdir -p /path/to/dir $ cd /path/to/dir $ catalyst.pl AuthSample ユーザー用のDBICスキーマを定義します。 $ module-starter --module AuthSample::Schema $ cd AuthSample-Schema…

DBIx::Class::Service Released

まだCPANに反映されて居ないと思いますが、DBIx::Class:Serviceと言うモジュールをリリースしました。 /lang/perl/DBIx-Class-Service/trunk (CodeRepos) DBIx-Class-Service-0.02 - Aggregate DBIC processes between multiple tables. - metacpan.org どん…

GraphViz::ISA::MultiでDBICのクラスツリーを作る

もうすぐ送別会なのでソースだけ。 画像もうpりました。 とてもじゃないけど印刷出来ないグラフが表示されます。>< ソース #!/usr/bin/perl use strict; use warnings; use Module::Find; use GraphViz::ISA::Multi; setmoduledirs("./lib"); my @modules …

DBIx::Class SourceCode Reading

Class::C3::Componentised Source Code Reading - Yet Another Hackadelic DBIx::Class::Componentised Source Code Reading - Yet Another Hackadelic Class::Accessor::Grouped - Yet Another Hackadelic を予備知識としてDBIx::Classを読み解きます。 も…

Class::Accessor::Grouped

Class::Accessor::GroupedはDBIx::Classの親クラスの一つです。*1 DBIx::Classを理解する上で避けれないので調べてみました。 要約 簡単に言えばあるクラスのインスタンスが他のクラスのインスタンスを持つような場合に、その他のクラスのアクセサへのショー…

DBIx::Class::Componentised Source Code Reading

d:id:ZIGOROu:20080317:1205779889 の続きです。 DBIx::Class::Componentisedとは 恐らくDBIC関連のdistにおける基底クラスだと考えて良いと思います。 DBIx::Classはこのクラスを継承していて、DBIx::Class::Componentisedは前回説明した、Class::C3::Compo…

Net::OpenID::Consumerでsregを試す

ふと思い立ってOpenIDが使えるちょっとしたサービスを作ってみようかなと思っています。 で、その中でsreg*1を使いたかったのでNet::OpenID::Consumerのopenid2 branchで出来るかどうか調べてみました。 その前にsregについて具体的に説明 The request param…

DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル

と言う訳で自分なりに色々調べてみた。 テスト用データベース定義 CREATE TABLE `User` ( `user_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 default NULL, `created_on` datetime default NULL, `updated_on` datet…

DBICx::DeployでSchema->Database

DBICx::Deployが便利す。 これは既にある既存のSchemaクラスからデータベースを構築(deploy)する物です。元々MySQLでテーブル作ってからDBIx::Class::Schema::LoaderとかでSchema生成してあったとして、 それをSQLiteで手元でちょっとテストとかそういうのに…

Class::C3::Componentised Source Code Reading

DBIC関連の基底クラスとも言えるモジュールがClass::C3::Componentisedです。C3ベースのコンポーネント化されたクラスモジュールを作る際のベースですね。 1.0003をテキストとします。 load_components() sub load_components { my $class = shift; my $base…

DBICのTransactionとAutoCommit

追記(2008-03-16T02:21:32+09:00) ごめんなさい、要約が超間違えてました>< 要約 transactionしたい場合はAutoCommit => 1としてtxn_doすると幸せになれます。 解説 しようかと思ったけど、同様の現象で既にきちんと解説してる人が居るのでそちらにリンク…

Catalyst::Controller::Atompubのdispatch、Slugヘッダとか

Atompubの勉強始めました。 Catalyst::Controller::Atompubについて こちらはid:teahut*1さん自身がPerl(Catalyst)でAtompubサーバーを作る解説記事を書かれていますので、そちらを見ると大体分かると思います。で今の所、分かった事とか困ってる事とか書い…

XML::LibXML::XPathContextで良くやるミス

自戒の為にメモっとく。 <doc xmlns:foo="http://foo.com/" xmlns="http://bar.com/"> <x/> <foo:x/> </doc> なんてxmlがあるとして、 #!/usr/bin/perl use strict; use warnings; use XML::LibXML; use XML::LibXML::XPathContext; my $doc = XML::LibXML->new->parse_file("test.xml"); my $xpc = XML:…

Template-Toolkitでマルチバイトな話

先に言っておくと、hide-kさんのまとめが分かりやすいです。 http://blog.hide-k.net/archives/2007/03/catalyst_2.php 最もCatalystを使う際にと言う事ですが。 utf8フラグを立てないでTTを使う場合 ソース自身はutf8で書くんですけど、 #!/usr/bin/perl us…

Japanese Mozilla HackersなブログのフィードをOPML化

実は、ニッチなJavaScriptブログと言う位置づけで、Ci.nsIZIGOROu - Mozilla 拡張機能勉強会と言うブログもやってる訳ですが、 最近こんなエントリを書きました。 Japanese Mozilla Hackers - Ci.nsIZIGOROu - Mozilla 拡張機能勉強会 で見かけたブクマコメ…

Nagios::Plugins::Memcached 0.02 Release

昨日、ちょっと修正して0.02をリリースしました。 Nagiosのプラグインでmemcachedを監視するコマンドです。*1監視項目は、 接続できるか レスポンスタイム キャッシュサイズ キャッシュヒット率 の4つです。 接続とレスポンス 指定時間内に接続出来るかどう…

WWW::Mechanize付属のmech-dumpが便利な件

Scrapingは余りやらないんですけど、いざやる場合にフォームのパラメタとか調べるのは面倒です。そんな時にWWW-Mechanizeに付属のコマンドのmech-dumpを使うと便利です。 サンプル 例えば、Pathtraqのトップページなら、 $ mech-dump --forms http://pathtra…

堅牢なパスワードを強制するテクニック

やっぱりサービス側で堅牢なパスワードをユーザーに強制する仕組みが無いと問題があるサービスと言うのはたくさんあるって事で、Perlで出来る限り簡単にそういう仕組みを作れないかなと。幾つかピックアップしてみました。 Data::Passwordモジュールを使う …

Term::ANSIColorでカラフルなシェルを作るたった一つの方法

もはや何も言うまい。 $ perl -MTerm::ANSIColor=:constants -e 'print BLUE BOLD ON_WHITE "bold blue", RESET . "\n";'

Time::Progressでプログレスバーを実現する。

ひょっとしたら役に立つかもしれないけど、基本的には無駄な知識です。あしからず。 サンプルソース #!/usr/bin/perl use strict; use warnings; use Time::Progress; my @actions = qw(setup prepare accept finalize); my $progress = Time::Progress->new…

Shibuya.pm Technical Talk #08 - Advanced MogileFSの資料を公開します

ダウンロード shibuya_pm_tt08_advanced_mogilefs.ppt 解説 今回はMogileFSのpluginの作り方にフォーカスを当てた内容になっています。 MogileFSのpluginは、 DB Schemaをplugin用に定義する global_hookにコールバックを定義する 新しいcmdをquery workerに…

MogileFSのplugin機構のメモ (1)

以前書いた記事、d:id:ZIGOROu:20070626:1182850060 にてMogileFS::Client::FilePathsと、この記事では思い切り書き忘れてましたけど、MogileFS::Plugin::MetaData, MogileFS::Plugin::FilePathsに関する雑多なメモです。詳しくは来月上旬にあるShibuya.pmに…