2009-01-01から1年間の記事一覧

昨年一年に更新された名前空間上位300傑

ちなみに連載第11回で利用した2008年7月から2009年6月までに更新があった名前空間リストの上位300傑はこんな感じです。アップロードされたものの拡張子を判定したりはしていないので、細かいところでは誤差があるかもしれませんが、おおよその傾向をつかむう…

モダンPerl連載第11回

今回はシュガー関数まわりからの脱線?の締めくくりとして、Develの一部やB、Subのように、「よりよい書き方」をサポートするためのモジュールも、均すと実は最近毎日のように更新されていたんですよ、という話を具体的な数字をまじえて紹介してみました。こ…

Test::系のモジュールを書いている人は要注意

詳細はuse Perl;の記事とコメントにある通りですが、最新の開発版Test::Moreでサブテストの導入が始まっています。これをサポートするためにTest::Builderに修正が加わったため、Test::Builder->newがシングルトンを返すことを前提にしているテスト系モジュ…

モダンPerl連載第10回

どんどん明後日の方向に向かっているこの連載も10回目になりました。今回は当初の予定を少し変えて(うまくまとめられなかったともいう)、シュガー関数を使った宣言的な書き方がこの15年ほどでどんな風に変わってきたかを簡単にまとめてみました。最近のモ…

META.ymlの件

パッケージャ、ツールチェーンまわりに手を出すのであれば、こんなのもある、ということは覚えておいた方がいい。http://search.cpan.org/dist/JSON-CPAN-Meta/lib/JSON/CPAN/Meta.pm動機付けについてはこのあたりね。http://rjbs.manxome.org/rubric/entry/…

モダンPerl連載第9回

今回は前回最後に予告した通りにJiftyネタ。『まるごとPerl!』に書いた話はなるべく飛ばして、これまであまり説明してこなかった部分のみ抽出するようにしてみましたが、CatalystにしろJiftyにしろ、この連載で全部を書ききるのはもちろん無理な話なので、で…

WindowsでPerlスクリプトをダブルクリックで実行したいけど

一瞬でコマンドプロンプトが閉じて困るという人は、レジストリから該当のキーを探してこんな風にすればいいんでないかと。 cmd.exe /k C:\Perl\bin\perl.exe "%1" %* 注意:レジストリをいじる自信のない人はまねしないこと! cf: http://d.hatena.ne.jp/kta…

モダンPerl連載第8回

今回もCatalyst 5.8というより、実は5.6時代(の末期)からあったもののおさらいですが、あのmstはCatalyst+DBIC+TT+Mooseをこう使っているという実例として、Reactionというフレームワークを取り上げてみました。実用的かどうかはさておき、歴史的には(…

Test::UseAllModules 0.12

0.11はrequireしたときに警告が出てうまく動かないよというレポートが届いたので修正しておきました。ついでにこんな感じでTest::NoWarningsなどといっしょに使えるようにしてあります。ロードしただけで警告が出るモジュールなんて許せない、という方はお試…

Test::LatestPrereqs 0.01

管理しているモジュール/アプリケーションが増えてくると、なにかの理由(バグを見つけたとか新しい機能が追加されたとか)で依存モジュールのバージョンをあげようと思ったとき、「ほかにこのモジュールに依存しているものはなかったっけ?」と首をかしげ…

githubに動くサンプルを用意しておきました

先日の第7回の記事で書いたサンプルアプリを最低限動くようにしておきました。基本的な使い方は、git cloneしたあと、 $ perl bin/myapp add_user --id=admin --password=change_me --name=adminのようにしてユーザを追加。お決まりの $ perl script/myapp_s…

モダンPerl連載第7回

今回は(いちおう)Catalystのチェーンドアクションの話。5.8系列の話というより5.7系列のおさらいですし、「実はそれチェーンドアクション使わなくてもできるよ」というネタも混じっていますが、そのあたりはご勘弁をば。そこそこ動くサンプルも用意したか…

Path::Extended 0.12

file_or_dir()とdir_or_file()というヘルパーを用意しました。使い方はこんな感じ。 use strict; use warnings; use Path::Extended; my $maybe_file = file_or_dir('path/to/something'); if ($maybe_file->is_dir) { warn "this is not a file!"; } else {…

Padre 0.35

IRCチャンネルは半年前くらいからROMっていたのですが、先日JPAのブログで「Padre の日本語化に興味有る方募集」とネタ振りされていたので、日本語化しておきました。Padreというのは「Perl Application Development and Refactoring Environment」の略。要…

Test::UseAllModules 0.11

ユニットテストを多用するようになって、t/lib配下のモジュールそのもののエラーでテストが止まることが増えてきたので、Test::UseAllModulesを拡張してテストしたいディレクトリを追加できるようにしました。使い方はこんな感じ。 use strict; use warnings…

モダンPerl連載第6回

ゴールデンウィークでも更新はお休みにならないということで、今回は最近5.8系列になって中身ががらっと変わってしまったCatalystの移行話。APIそのものが変わったわけではありませんから、当初予想していたほど大変なわけではありませんが、なにしろ根っこ…

DBD::SQLite 1.25

Adam Kennedyがきれいにまとめてくれていますが、先日来活発にコミットしてきたDBD::SQLiteが1.25の時点で正式にamalgamationを使うようになりましたので、これまでDBD::SQLite::Amalgamationを使っていた方はこの機会にぜひDBD::SQLiteの方に切り替えてくだ…

JPAとかShibuya.pmとか

まじめなまとめはほかの方のを読んでいただくとして、どうでもよさげなことだけいくつか。

モダンPerl連載第5回

今回はPerlのドキュメントまわりの話(つうか、perldocについて)を簡単にまとめてみました。市場やネット上に落ちてるドキュメントは玉石混淆ですから、うかつにググるくらいならCPANからたどれる由緒ただしいドキュメントを読んでくださいませ、という話。…

Test::Classy 0.07

tokuhiromさんが嘆いておられたので日本語対応してみました。utf8プラグマの有無でどうするかを決めるというかなり横着な実装ですが、こんな感じのテストモジュール(t/lib/MyApp/Test/Basic.pm)を書いて、 package MyApp::Test::Basic; use strict; use warn…

DBD::SQLite 1.20

長らくバグが放置されたままだったDBD::SQLiteですが、先日AliasことAdam Kennedyがメンテナを引き継いだのを受けて、いま何人かのCPAN Authorsが集まってごりごり直しています。tokuhiromさんのところでパッチが紹介されていたもののように、有名どころのバ…

モダンPerl連載第4回

今回はMooseからMouse、Any::Mooseに至る流れを簡単に紹介してみました。実際にはもっとどろどろした話もありましたが、その辺はさらっと流す方向で。Mooseが実際に使われ始めている様子とか、Mooseといってもたいていの場合は(Class::Accessor::Fastなどと…

モダンPerl連載第3回

今回は多重継承を使わない拡張の一例として、Role/Traitを取り上げてみました。http://gihyo.jp/dev/serial/01/modern-perl/0003ただ、連載のなかでとりあげた考え方はあくまでも一例にすぎません。牧さんの『モダンPerl入門』やDave RolskyがPerl Foundatio…

モダンPerl連載第2回

今回は次回以降の前振りとして、特にCatalystの世界で問題になっていた多重継承時のメソッド解決順序の変遷についてまとめてみました。次回は3月23日公開予定です。 http://gihyo.jp/dev/serial/01/modern-perl/0002

平凡社ライブラリー版『ガリア戦記』

今作もPerlとは無関係ですが、Amazonに入ったようなのでここにもメモしておきます。ご関心のある方はぜひ。ガリア戦記 (平凡社ライブラリー)作者: ガーイウス・ユーリウスカエサル,Gaius Julius Caesar,石垣憲一出版社/メーカー: 平凡社発売日: 2009/03/01メ…

Test::UseAllModules 0.10

内容的には変わっていませんが、長らくdev releaseになっていたのを正式版にしたのと、dannさんがTest::LoadAllModulesというまぎらわしいのを出していたので、hanekomu氏のTest::CompileともどもSEE ALSOに注記しておきました。この三つ、どれを使うかは好…

Test::Classy 0.05

ユニットテスト中に死なれるとその後のテストが丸ごと死んでしまう問題があったので、各テストをevalでくくるようにしてみました。もっとも、Moose/Mouse系のアプリはこの対策をしてもテストが死んでしまうのでどうしたものかなあ、というところなのですが。…

「モダンPerlの世界へようこそ」はじめました

先日連載したMojoの特集に引き続き、今度はgihyo.jpで「モダンPerl」の連載をさせてもらえることになりました。http://gihyo.jp/dev/serial/01/modern-perl今回は連載第1回ということでいささか煽り成分を多めにしてありますが、牧さんの名誉のために先に書…

Plagger::Plugin::CustomFeed::MixiScraperのカレンダー処理

id:mad-caponeさんから、CF::MSでカレンダーのデータを取ろうとすると日付情報が入らないバグがあるとのご指摘がありました。 http://d.hatena.ne.jp/mad-capone/20090211/1234337425 WWW::Mixi::Scraperのテストは通っていたのと、自分の環境で試したときは…

メソッドチェーンの話の続きの続き(エラー処理編)

メソッドチェーンを使うとデバッグしづらくなるんでないか、という疑問に対するMojo的な反論。 my $instances = Mojo::Loader->new->load('Book')->build;という文があるとき、loadに失敗したらどうなるかを考えてみる。よくあるメソッドのようにload('Book'…