tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

perl

配列の削除と splice

配列を操作してて、「ある条件のばあい、その要素を削除」みたいなことをしたい場合。良くやるのが、 sub remove_item_in_some_condition { my (@input) = @_; my @result = (); for my $item ( @input ) { push @result, $item if( !some_condition($item) …

Perl のテストについて(2011年改訂版1)

0. 前提 0.1 はじめに 以前、Perl のテストについてという記事を書きました。2008年の記事なのですが、現在もそこそこのアクセスがあるようです。ただ、Test::More がアップグレードされて新しい書き方ができるようになったり、そもそも僕自身のプログラムの…

失敗のテストのテストの話

何を言っているのか良く分からないかもしれませんが、そういう話。拙作のTest::Module::Usedとか、もっとメジャーどころだと Test::Pod とか Test::Perl::Critic とか、自前で ok() 相当のメソッドや関数を持っているモジュールがあります。こういうモジュー…

Perl Best Practice 一人読書会(1日目&2日目)

Perlベストプラクティスを読んでます。ずいぶん前に一度読んだはずなのですが、ほとんど忘れてました。。。この本については、「良い本だけど、Perl のベストプラクティスではなく、Damian氏のベストプラクティスだから、気をつけて読まないと駄目だ」という…

これをもっときれいに書く方法ないかなぁ。。。

Test::Module::Usedを書いている際に思ったことメモ。Perl でオブジェクト指向で書いる場合で、subref を受けるメソッドで、受けた subref もそのクラスのメソッドの場合に、うまく $self を渡す方法がないのかなぁ、と思いました。分かりにくいので、実際の…

Test::Module::Used 0.2.1_03 shipped

表題のとおりです。これは正式でも良かったような気がするのですが、0.2.1_01 で 「Carp を use し忘れる」、という「お前何のためにこのモジュール書いたんだよ」って突っ込まれたら何もいえないような信じられないミスをやらかしたので、もう一度デベロッ…

Test::Module::Used 0.2.1_01 shipped

表題のとおりです。以前、いろいろ「やることやら無いこと」書いた割には、全然違う対応をしてしまいました。「そういえば META ファイルって、YAML だけじゃなくて、たまに JSON 使ってるのもあるよなぁ」とか思って調べてみたら、こんな話(META.ymlの件)と…

時間に関するテストの話

昔の記事、Time::Fake もいいけど、これからは Test::MockTime だねになぜか急にブクマがついていた(しかもすごい Perl Monger の人達から)ので、ちょっと追記してみました。(「追記。。。的なもの(2010/11/20)」の部分です。)

ファイル名 or 拡張子から content-type(MIME type) を決める

実ファイルにアクセスできる場合: File::MMagic or File::MMagic::XS できない場合: File::MimeInfo の globs() File::MimeInfo の場合はこんな感じ。 use strict; use warnings; use File::MimeInfo qw(globs); my $type; $type = globs("a.txt"); warn $ty…

YAPC::Asia に行ってきました(2日目)

楽しかったけど、さすがに疲れたー。昨日・今日のまとめは、そのうち書きます。(多分。hirataraさんがすげーしっかりまとめてるので、モチベーションが微妙ですが。。。)見つけたスライドは随時ブクマしてます。 はてなブックマーク - tsucchi1022のブックマ…

YAPC::Asia に行ってきました

今年で2度目の参加となりました。見てきたセッションのまとめ的な話は後で書く(と思う。書けなかったら申し訳ない)のでとりあえずメモ。 バッテリーの壊れたノートPCはただのゴミですね。持ってかなきゃよかったorz 去年より話を理解できてる気がする。素直…

Test::Module::Used の話

YAPC::Asia も近いので、久々に Perl の話を書こうと思います。僕が作った Test::Module::Used の話。とはいえ、新しい話は特に無いので、今までのまとめをしようと思います。 これは何? CPAN モジュールを書く際、Makefile.pm に、依存するモジュールを re…

Test::Mock::ExternalCommand というモジュールを書いてみた

久々に Perl モジュールを書いてみました。tsucchi's p5-Test-Mock-ExternalCommand at master - GitHub外部コマンドの「ふり」をする物体をでっち上げるためのモジュールです。Synopsis も書きましたが、ここにも載せときましょう。こんな感じです。 use Te…

モダン(?) ActivePerl 入門

mixi でも使われているという噂*1のActivePerl。モダンなActivePerl スクリプトでは、先頭の shebang に #!/usr/local/bin/activeperl と書くのはもはや常識ですよね!しかしながら、Unix 系 OS など、ActivePerl がインストールされていない環境が多いのも…

大の大人が全力で「こたつたこ」に取り組んでみた

「こたつたこ」って知ってますか?NHK の「ピタゴラスイッチ」に出てくる歌です。可愛らしい絵と回文で構成された歌詞が特徴的です。僕はこの歌(?)が大好きです。見たこと無い人は、ぐぐってみれば良いと思います。(著作権的に微妙なので、直リンは載せませ…

家でも Hudson はじめました

Hudson をはじめてみました の続きみたいな話。(なのかな???)dannさんが最近、Hudson 導入した記事を書いています。 HudsonでperlプロジェクトのCI - Devel::Coverでcoverage取得 PerlプロジェクトをHudsonで継続的インテグレーション これを読んでたら、…

Archive::Tar でアーカイブを作成する

Archive::Tar で tar.gz を作ろうと思ってぐぐってみたら、 use Archive::Tar; my $tar = Archive::Tar->new; $tar->add_files( 'a.txt', 'b.txt' ); $tar->write("hoge.tar.gz", COMPRESS_GZIP); みたいな感じの、ぶっちゃけ残念な感じのサンプルがヒットし…

Test::Module::Used でやりたいのだけど、できないこと

Test-Module-Usedの話。ずいぶん前から分かっている、バグじゃないけど、バグに近い挙動として、サブモジュールの扱いがあります。たとえば、DBIx::Skinny を Makefile.PL に requires 指定して、テスト対象のモジュールの lib で、DBIx::Skinny::Schema を …

Nagios plugin をいじった話(もしくは Module::Install の install_script まわりの話)

Nagios のプラグイン書いたの続きみたいな話。プラグインで使うスクリプト(check_hogehoge みたいなの)を好きな場所にインストールしたいのだけど、Module::Install でそれをどうやったらいいのか分からず悩んでました。たとえば、Makefile.PL で、 install_…

Nagios のプラグイン書いた

表題のとおりです。Solaris の check_swap プラグインが無かったのでそれと、raildctl を叩いて status が OPTIMAL かどうかをチェックするプラグインです。 Nagios-Plugin-Solaris-CheckRAIDctl Nagios-Plugin-Solaris-CheckSwap CPAN モジュールレイアウト…

テストの話

mixi の開発者ブログの下記の記事を眺めていたら、 いまからでも間に合う開発者テスト自分がここ1年くらいで迷って試行錯誤してた事とどこか似ている部分があって、ちょっと安心した。いや、mixi のほうがずっとちゃんとできてるし、凝った構成になってるけ…

一見簡単そうだけど、実は難しい処理

CSV ファイルの解析 perl で言えば、 my @items = split(/,/, $line); で済んでいるなら幸せ。ダブルクォーテーションの内部だとカンマを見ないとか、その他もろもろの本来の CSV の処理が入るとあっという間に死ねる。Perl なら、Text::CSV 系のモジュール…

Test::Module::Used 0.1.9 Released

最近あんまり更新してない気がしますが、一応生きてます。Test-Module-Used-0.1.9をリリースしました。きっかけはバグリポート。t ディレクトリに入ってるテスト用のモジュールで use してるモジュールのチェックが抜けてました orzレポートしてくれる、って…

map を使おう

仕事メモ。map の使い方で初心者っぽいハマり方をしたので。 my @aaa = qw( key1 key2 key3 ); こんな感じの配列から、「key」を除いて、(1, 2, 3)みたいなリストが欲しいとします。で、 my @aaa = qw( key1 key2 key3 ); @aaa = map { s/^key// } @aaa; #こ…

Debian の package maintainer の方に COPYRIGHT がないって言われた話

ちょっと前の話ですが、今回 ports を作ってみようと思ったきっかけなので書きます。年末年始ごろに、Test::Module::Usedに対して、Bug #53290 for Test-Module-Used: Missing Copyright Informationというレポートが来ました。「COPYRIGHT の情報がないよ」…

ports maintainer になりました

つーわけで、昨日 send-pr した Module::Usedの ports が無事に取り込まれました。晴れて ports maintainer になりました。この勢いで、Test::Module::Usedも send-pr しちゃいました。こっちはまだ取り込まれてないけどね。今後も、FreeBSD で使いたい ports…

ports maintainer になるかもです

ふと、Test::Module::Used(僕の書いた CPAN モジュール)の ports を作って send-pr してみよう、と思いました。で、google で調べたり、既存の ports を見ながらあれこれしていたのですが、依存関係の、Module::Used(作者は僕じゃなくて、Elliot Shank さん)…

Test::Module::Used 0.1.4 をリリースしました

まあ表題のとおりです。 0.1.3 系は Developer Release として気に入らないインターフェースの削除とかしました。で、0.1.4 からはそれを本流にも取り込み、といった感じです。あと、エラーメッセージを若干改善しました。自分のほしかったものは大体完成し…

変数に代入しながら置換する

どっかで見たことあるコードなのだけど、どこで見たのか忘れちゃって、検索しようにもどう検索していいのか良くわかんない。で、試行錯誤したら再現できた。多分これであってるはず。忘れないようにメモメモ #!/usr/bin/perl -w use strict; use warnings; u…

Test::Module::Used 0.1.2 Released

Test::Module::Used 0.1.2をリリースしました。今回は気に入らないパラメータの名前を変更したりしてるので、ちょっと大きな変更かもです。でも互換性は保っているので大丈夫でしょう。今回のリリースから、t ディレクトリにおいてあるテスト用の package (…