タグ

ブックマーク / blog.bulknews.net (7)

  • Time to ditch encoding.pm: blog.bulknews.net

    Time to ditch encoding.pm Perl でソースコードにマルチバイトなリテラルを埋め込む場合には encoding プラグマを使うのが定石でしたが、 use encoding 'utf-8'; my $name = "宮川達彦"; こうすると STDIO まで utf-8 でエンコード・デコードされるという問題があり、また encoding.pm はファイルスコープで動くのでレキシカルに一部分だけバイト列として扱いたい(という需要があるかどうかは微妙ですが)というときにうまくいかず、イマイチ encoding プラグマを全面採用できず、decode() を使ったり \x{XXXX} で書いたりってことが結構ありました。 が、Juerd と RGARCIA が encoding::source と encoding::stdio (もとは encoding::split

  • svk でオフラインコミット: blog.bulknews.net

    svk でオフラインコミット 30日に OSCON から帰国しました。 Plagger のプレゼンもまずまずうまくいったし、Dojo project の Alex, Open ID の人、それにもちろん YAPC でもおなじみの Perl コミュニティのみんなと再会できたので楽しかったです。Six Apart がシルバースポンサーだったのもあって Ben, Anil, Artur をはじめとして大きなプレゼンスをアピールできたのもいい感じでした。 行きと帰りの飛行機では svk を使ってオフラインハック。オフラインになったところで svk cp && svk switch svk cp //mirror/plagger/trunk //local/plagger-trunk svk switch //local/plagger-trunk/plagger これで //local にうつった

  • Test::Perl::Critic で PBP 準拠なコードを自動テスト: blog.bulknews.net

    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

  • svk を当社比100倍高速化する方法: blog.bulknews.net

    svk を当社比100倍高速化する方法 svk を使っているときの最大の不満は、ローカルのミラーレポジトリが大きくなるにつれ各種操作、とくに checkout と commit が遅くなってくること。 既知の問題だとおもっていたんですが、plagger のリリースに15分くらいかかるようになったのでたまらず #perl6 で clkao をつかまえてクレーム。「そんな遅いはずはないので Devel::DProf で dprofpp の結果おくってよ」とのこと。さっそくやってみるとほとんどが Data::Hierarchy の _ancestors 関数でした。 というわけで clkao が Data::Hierarchy 0.32 をリリースしてくれた。Changes に "Workaround various performance issues. The real fix will b

  • Blog Developer's Cookbook : Weblogs.com Ping Gateway to はてなアンテナ (POE版)

    Weblogs.com Ping Gateway to はてなアンテナ (POE版) 前回紹介した、はてなアンテナ Ping ゲートウェイには、1点問題がありました。Ping を受け取った後、HTTPリクエストを発行してレスポンスを待っているため、Ping 受信に非常に時間がかかることがあるという点です。ここに時間がかかると、Blog ツールのエントリビルド処理が待たされることになり、好ましくありません。Ping を受けとったら即座にレスポンスを返し、非同期にアンテナへのリクエストを投げる方がよいでしょう。 今回のレシピでは、POE と呼ばれるフレームワークを使用して、この処理の非同期化を行ってみます。 Perl の非同期処理 一般に、外部へのネットワーク接続(この場合は、はてなアンテナへのHTTP接続)などによるブロッキング(*1)を避けるためには、一連の処理を個別に非同期で(async

  • HTML::Selector::XPath をリリース: blog.bulknews.net

    HTML::Selector::XPath をリリース CSS Selector in Perl とか subtech - Bulknews::Subtech - CSS selector to XPath あたりで議論していた CSS 2 Selectors to XPath コンパイラなモジュールをつくって、CPAN に HTML::Selector::XPath としてリリースしました。 使い方は naoya さんが先に書いてますが、HTML から正規表現を使うことなくスクレイプするのに便利。たとえば Mixi にログインしてマイミク最新日記と、1件目のタイトル、文を抜き出すコードが、以下のようにかけます。 #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use HTML::Selector::XPat

  • CPAN::Mini で CPAN のミラーをローカルに: blog.bulknews.net

    CPAN::Mini で CPAN のミラーをローカルに DECON で話してきたネタですがちょっと詳しく。 飛行機やら電車の中やらでオフラインハックするときに(たまに)問題になるのが CPAN モジュールの不足です。「あぁ、このマシンにはあのモジュール入ってねぇ~」とかでハックが滞るのは萎えます。というわけで minicpan。CPAN::Mini というモジュールで、CPAN モジュールの最新版だけを持ってきてミラーをつくることができます。 導入は簡単で、CPAN から install CPAN::Mini すると minicpan というコマンドが付属してきます。コマンドラインから使うには、 > minicpan -r http://ftp.funet.fi/pub/languages/perl/CPAN/ -l ~/minicpan とかすれば finet から HTTP で同期で

  • 1