Practice of Programming

プログラム とか Linuxとかの話題

Perl

ファイルテスト演算子 -M -A -C には基準の時間がある

ファイルテスト演算子 -M はファイルが作成されてからの日数を返す。 86400かけてやれば、秒数になる。 print 86400 * (-M $file); で、File::Findをループで回して、ファイルが変更されたら云々という処理に使おうかと思ったのだが、うまくいかない。次のsc…

パスワード付き一太郎文書を開く with Win32::GuiTest

明けましておめでとうございます。 今年も宜しくお願いします。 昨年末に、 Win32::GuiTest で Windows の GUI アプリをハックしようを見て、一太郎ファイルで、パスワード忘れたのがあったので、やってみようと思い立ちました。パスワードが数字の語呂合わ…

Util::Any 0.04リリース

今回の変更では、exportする関数の選択をできるようにしたのと、関数の名前の変更に対応しました。http://search.cpan.org/dist/Util-Any/前者については、Data::Dumperの@EXPORT, @EXPORT_OK に、DumperとDumperXってあるんだけど、 Dumper内で、DumperX呼…

Helper::Simple

perlのシンタックスカラーを有効にしたら、コードが途中で切れてたので、修正 それ、Module::Setupで? 2ヶ月くらい前にCodeReposにあげて、途中放置して、忘れちゃったりで、グダグダだったのをここ数日でまとめました。 なんか色々微妙だったので、だいぶ…

Util::Any 0.03

名前が悪い、List::Util::Allにしたほうが良いよって、メールが来た。 いや、Listだけじゃないですからと返事をした。 だが、紛らしいのはドキュメントと機能が悪いからだということで、色々追記してみました。 Data::Dumper, String::Util, String::CamelCa…

local $@ と同一スコープで例外を吐いてはいけない

id:lestrratさんの http://perl-users.jp/articles/advent-calendar/2008/03.html を読んで。 そういや、つけたり、つけなかったりしてた...特にポリシーもなく。 全部につける必要はないとのことですが、つけてテストを書いたらはまった。 書いたコードを単…

UtilをまとめてしまうUtil::Any

#coderepos で、「怪しい名前空間w」と言われてしまいましたが(^^;; Util系のモジュールがPerlにいくつかあって、便利なんだけど、紛らわしいというか、覚えてなくて、毎度調べるみたいなことがあります。 たとえば、List::UtilとList::MoreUtils。 「uniq関…

LWPで進捗を表示してダウンロード

hanekomuさん作成のLWP::UserAgent::ProgressBar というものがあります。 http://search.cpan.org/dist/LWP-UserAgent-ProgressBar/lib/LWP/UserAgent/ProgressBar.pmただ、これ、get しか対応してません。postに対応した版は、code reposにちょっと前にcomm…

Catalyst::Model::DBIC::Schemaのmodelメソッドを便利にする

Catalyst::Model::DBIC::Schemaのソース http://search.cpan.org/src/BOGDAN/Catalyst-Model-DBIC-Schema-0.21/lib/Catalyst/Model/DBIC/Schema.pmnew の後半部分。Modelクラスを動的に増やして、そこに、ACCEPT_CONTEXTを生やしている。 sub new { my $self…

Perl Quiz

こちらの問題。 http://d.hatena.ne.jp/gfx/20081007/1223340787回答がすでにいろいろ出てるけど。 これで。 #!/usr/bin/perl use strict; use Test::More 'no_plan'; sub f{ my $builder = Test::More->builder; my $out = $builder->output; print $out <

TemplateのWRAPPER

2009/2/1追記 WRAPPERで勘違いしていた。METAでしか値を渡せないのかと思ってたら、普通に渡せるんですね。下記のMETAでやってるやつ、別にMETAでやる必要がないですね orzCatalystのTTSiteで見かけてから、WRAPPERを使って楽をするようにしています。 同じp…

Archive::Zipでスカラを展開

$targetにzipの中身が入っていて、そいつを展開したい。 Archive::Zipには、readFromFileHandleってのが用意されている(ファイルから読む場合は、readメソッド)ので、 スカラリファレンスをopenでやってみたけど... use Archive::Zip; my $zip = new Archive…

Kansai.pm第9回ミーティング

ひさびさに行ってきました。 Mooseとか、Hadoopとか、面白かったですよ。 naoyaさんが、グーグルの人みたいだったw LTでちょっと喋ってきましたが、 止められなかったので、時間オーバーしていまいた...。 ごめんなさい。喋りながら時間見れない人なので...…

.tファイルを t/hoge/*.t に置きたいとき

今日はYAPC::Asia 2008 でしたね。僕は最近の体調の悪さ具合を考えて、午前中は自分の体調と相談してました。 いけそうだなーと思ったので、午後から参加。 YAPCでテストの話題があったから、書いている...わけではないけど。 ExtUtils::MakeMaker を使って…

CP::FormValidator::Simple::Auto の self_rule

ドキュメントに書いてないんですが、 action1: param1: - self_rule: HOGE message: 'param1 is invalid HOGE' と書いて、コードで、 if (not some_check()) { $c->form->set_invalid('param1', 'HOGE'); } とやると、$c->form_messages('param1') で、定義…

DBIx::Class::Schema::Loaderでテーブル情報の表示

明けまして、おめでとうございます。本年もよろしくお願いします。前作ったのをちょっと変えた。http://rwds.net/trac.cgi/file/bin/get_table_info.pl

Catalyst::Plugin::FormValidator::Simple::Autoのパッチ

DPLICATIONとデフォルトのバリデーション、DBIC_UNIQUE 対応。DBIC_UNIQUEは微妙な感じ。 --- ../Catalyst-Plugin-FormValidator-Simple-Auto-0.15/./lib/Catalyst/Plugin/FormValidator/Simple/Auto.pm 2007-04-10 10:57:23.000000000 +0900 +++ ./lib/Cata…

overload が無効?

下記のようなモジュールを書いてみました。 http://rwds.net/trac.cgi/file/modules/Mortal/lib/Mortal.pm 概要は、mortal という関数をExportし、その関数に渡されたオブジェクトはbool以外のoverloadで死ぬようになり、何のメソッドを使っても死ぬようにな…

DateTime系のモジュールで...

ここで、DateTime系って言ってるのは、DateTimeモジュールのことではないです。 自作する場合(wrapperでもなんでも)、みたいな話。例えば、Time::Pieceのように $d += DAY * 5; $d += MONTH * 3; なんてことをしたい。 ただ、Time::PieceのTime::Secondsに定…

C::P::FormValidator::Simple::Auto

昨日の続き。DUPLICATIONができない(こちらとかこちら)、ということなので対応してみる。こんなYAMLで(with: [mail1, mail2] がポイント) edit_execute: mail1: - rule: EMAIL message: not mail - rule: NOT_BLANK message: mail1 is required mail2: - rul…

Catayst::Plugin::FormValidator::Simple::Autoのパッチ

重複して、プロファイルを書くのは辛いので、書いてみたけど、ダサいかな。 上書きとか出来るようにしておいたほうが良い気がするので、もうちょっとなんとかするかも。 --- /usr/local/share/perl/5.8.4/Catalyst/Plugin/FormValidator/Simple/Auto.pm.back…

Tie::Trace 0.06

同僚のJN氏に、Tie::Traceのワーニングがわかりづらいから、あーしたほうが、こーしたほうが、とか言われて、 変更してみました。そのうちCPANにあがるかと(今、気づいたんだけど、日本語のドキュメント更新し忘れた...orz)。 金曜にはだいたい出来てたはず…

DBIC::Manual Intro Component Glossary を翻訳

DBIx::Class::Manual::Intro DBIx::Class::Manual::Component DBIx::Class::Manual::Glossaryそのうち、下記にあがるはず。 http://perldoc.jp/docs/modules/DBIx-Class-0.07006/lib/DBIx/Class/Manual/ Cookbookも、誤字、誤訳等、ご指摘を受けて修正済み。…

UTF-8関連ドキュメント

最近、PerlのUTF-8関連が話題(宮川さん、Danさん、Yappoさん)だったので。 宮川さんの内容に関しては、UTF-8に限っては、use utf8 で、STDIO、STDOUTは影響しないので、問題ないんじゃないのかなぁとは思いますが。 #!/usr/bin/perl use utf8; print "あいう…

DBIC::Manual::Cookbook 翻訳

DBIx::Class::Manual::Cookbookを翻訳しました。 だいぶてきとー気味。

use Test::Base instead of Test::More

以前Test::Moreで書いたテストが通らなくて、テスト結果を見たのですが、結構長いテキストの比較だったので、、gotとexpectedで全部だされてもなぁ...と思ったのですが、Test::Baseは、Test::Moreと互換性があるんだった、と思いだして、変えてみた。 use Te…

いくつものclone

なんか、CPAN探したら、clone系いっぱいあるんですね...。 Clone Clone::Fast Scalar::Util::Clone Class::MakeMethods::Utility::Ref いったいどれが速いんだってことで試してみた(Perl 5.8.4)。 Rate ref util dclone more fast normal ref 32.5/s -- -88%…

Kwiki続き

Kwikiいいですね。でも、ノードキュメントですね...。 plugins_fileメソッドがないエラー Can't locate object method "plugins_file" via package "Kwiki::Config" at /home/ktat/svk/kwiki/lib/Kwiki/Command/V1.pm line 132.ですが、単純な話で、config.y…

Kwikiの設定

ちょっと前に、Kwikiをインストールして、ほったらかしにしてたのですが、設定いじってみました。 Kwikiのプラグインの設定は、kwiki -new で作ったパス(例:/var/www/kwiki)の /var/www/kwiki/pluginsファイルの中に設定します。本来は、 kwiki -add Kwiki::…

Data::RuledValidator 0.10

Data::RuledValidator::Plugin::Japanese のバージョンあげるために、あげました。 ので本体はたいした変更はなし。名前が変な関数名直したりしたり、したくらい。 Data::RuledVadliator::Language::Japaneseっていうのを作ってみたんですよ。 hiragana は …