Perl

HaskellのlensをPerlに移植したData::Focus 0.01をリリース

HaskellのlensライブラリのAPIと実装をてきとうにパクってきて、Data::FocusというPerlモジュールを作った。 https://metacpan.org/pod/Data::Focus 現状、Haskellのコンパクトなlens実装であるlens-family-coreパッケージに近い作りになっている。lensパッ…

Perl Beginners #16に行ってきた

昨日は東京は京橋で開催されたPerl Beginnersに参加してきた。先月のYokohama.pmに続き、懲りずにLTしました。 Perl Beginners #16 : ATND 主催のytnobodyさんはじめ、皆様お疲れ様でした & ありがとうございました。

Gnuplot::Builder 0.27をリリースした

先日、Gnuplot::Builder 0.27をリリースした。 https://metacpan.org/pod/Gnuplot::Builder 今回のバージョンの目玉はなんといってもやはりGnuplot::Builder::Templateだろう。これは"正しい"gnuplotの構文を記憶したテンプレートオブジェクトを提供するモジ…

NEILBからpull-requestもらった話

先日、NEILBことNeil Bowers氏から唐突にpull-requestをもらった。 Require Exporter version 5.57+ by neilbowers · Pull Request #6 · debug-ito/busybird Fixed pod warning by neilbowers · Pull Request #1 · debug-ito/Web-Dash 内容としてはどうって…

Yokohama.pm #12 に行ってきた

先日、面白法人カヤックさんのオフィスで開催されたYokohama.pmに行ってきた。 Yokohama.pm #12 : ATND

Daikuにpull-requestした話 あるいは なぜドキュメンテーションをpull-requestするのかという話

先日、PerlモジュールのDaikuにpull-requestしたところ、無事マージされ、リリースされた。 songmuさん、ご対応ありがとうございます。今回のpull-requestではそれなりの量のドキュメンテーションを追加させていただいた。 思い返すと、自分は以前にもAnyEve…

autovivification 0.13をロードした状態でpure-Perl AnyEventを使うとフリーズする

https://rt.cpan.org/Ticket/Display.html?id=99458 表題の通り。具体的にはAnyEvent::LoopをロードするとBEGIN節の実行が終わったあたりでフリーズする。その間、CPU使用率は100%に張り付く。当面はEVモジュールを使えば問題なさそう。

Make a lot of plots with Gnuplot::Builder, ImageMagick and Daiku

Preparing a lot of plots for academic papers has always been a pain for me, but recently I've managed to reduce the pain by Gnuplot::Builder and some other goodies. Here's how.

MOONGIFTさんがBusyBirdを紹介して下さいました

http://www.moongift.jp/2014/09/busybird ありがとうございます!!

BusyBirdで添付画像を表示できるようになった

BusyBird 0.08をリリースした。 https://metacpan.org/pod/BusyBird 今回の更新では、ステータスオブジェクトに添付されている画像URLを表示する機能を追加。デフォルトでは、ステータスオブジェクト中の"media" EntitiyからURLを抜き出して表示する。なので…

Perl使いがHaskellに入門してみて思ったこと

ここ数ヶ月ばかり、ちょこちょことHaskellをいじってみた上での感想。 今までやったこととしては、 hexpatを使ったXML文書のパース regex-pcreを使った簡単な正規表現処理 Parsecを使った簡単な独自形式の文字列データのパース Cabal, HUnit, QuickCheckを使…

YAPC::Asia 2014 行ってきた

YAPC::Asia 2014に行ってきました。 2日目しか参加してないです、まじすいません。 会場について 個人的には日吉は家からめちゃくちゃ近いので助かるなあ。 コーヒースペース サイコーでした。 お菓子めっちゃ食べてすみません。 飲食できるのがイベントホー…

BusyBird::Input::Feedをリリース

BusyBirdにRSS/Atomフィードを入力するためのモジュールである、BusyBird::Input::Feedを書いた。例えばここのサイトのRSSフィードを取り込むとこんな感じになる。アイコンはサイトのfaviconを使うようにしたので微妙に見た目がアレなんだけど、ま、いいか。…

BusyBird 0.01をリリース

BusyBirdと名づけたPerlモジュール兼アプリをリリースした。 https://metacpan.org/pod/BusyBird BusyBirdは個人用のタイムラインビューワアプリ。「タイムラインビューワ」とはつまりread-onlyなTwitterクライアントのようなものだと考えればいいだろう。主…

Future::Qアップデートと最近のPerlにおけるFuture/Promise/Deferred事情

ここ1,2週間でCPANモジュールFuture::Qを久々に更新した。v0.050 → v0.090の主な更新内容は以下の通り。 resolve()メソッドを追加 finally()メソッドを追加 $OnErrorパッケージ変数で未処理のfailed Futureのエラーメッセージを受けるコールバックを登録…

Gnuplot::Builder 0.20 released

I released a CPAN module called Gnuplot::Builder. https://metacpan.org/pod/Gnuplot::Builder Gnuplot::Builder is a front-end module for Gnuplot. Gnuplot is a multi-platform plotting tool. http://gnuplot.info/ In this article I explain why I…

Tie::Anonというしょーもないモジュール書いた

この間、こんなふうにてきとーなデータをTie::IxHashに詰めて返す関数を書いた。 sub numbers { my ($orig) = @_; tie(my %h, "Tie::IxHash", orig => $orig, square => $orig * $orig, cube => $orig * $orig * $orig ); return \%h; } このコード、変数%h…

PSGIアプリでWebSocketを使う場合、responderはどうすべきか?

Plack::App::WebSocketを実装していて、「PSGIのresponderをどう扱うべきか?」に悩みました。Plack::App::WebSocketは内部で以下のようなことをしています。 my $env = shift; my $fh = $env->{"psgix.io"}; return sub { my $responder = shift; ... # Web…

Plack::App::WebSocketとAnyEvent::WebSocket::Serverをリリース

PSGIアプリケーション上でお手軽にWebSocketを使うためのモジュールPlack::App::WebSocketをリリースしました。 https://metacpan.org/pod/Plack::App::WebSocket こんな感じで使います。 builder { mount "/websocket" => Plack::App::WebSocket->new( on_e…

Unity Dashクローン Web::Dash というのを作った

Ubuntuの検索ユーザインタフェースUnity Dashと同じような機能をWebブラウザでできるようにするWeb::Dashというプログラムを作った。動作イメージはこんな感じ。下はXubuntu 12.04でWeb::Dashを立てて、Wikipediaレンズを使って検索したところ。Xubuntuなの…

現在進行中の処理と未来の値を指し示すfuture/promise/deferred

Future::Qモジュールを書いた時に他のfuture実装についてもいくつか調べたのでメモ。futureは(バックグラウンドで)現在進行中の処理と、それが終わったあかつきに得られるであろう結果の値を指し示す(というか保持する)オブジェクト。 http://en.wikipedia.o…

Future::Qをリリース

PerlのFutureモジュールのサブクラスとして、Future::Qというのを作ってみた。これはFutureモジュールにthen()メソッドといったQ.jsと(ほぼ)互換のメソッドを付け加えたもの。こんな感じで使う。

JSON::XS::BooleanオブジェクトをData::Cloneしようとすると死ぬ

表題のとおり。以下のバージョンで確認。 perl 5.14.2 Data::Clone 0.003 JSON::XS 2.33 JSON::PP 2.27200 rt.CPANは https://rt.cpan.org/Ticket/Display.html?id=82584以下のようなテストをやってみると、 use strict; use warnings; use JSON::XS (); use…

CPS関数をループ実行する

CPS(Continuation-Passing Style)の関数をループ実行するのに使えるユーティリティモジュールを試してみた。今回試したのは、 CPS (v0.18) http://search.cpan.org/~pevans/CPS-0.18/lib/CPS.pm Async::Defer (v0.9.4) http://search.cpan.org/~powerman/Asy…

Async::Selector v1.011をリリース

PerlモジュールAsync::Selector v1.011をリリースした。 http://search.cpan.org/~toshioito/Async-Selector-1.011/ 元々v0.02をリリース済みだったんだけど、ちょっとPODを修正・加筆しようと思ったらいろいろAPIでイケてないところがボロボロ出てきて結局…

空の正規表現パターン (empty pattern)の挙動

恥ずかしながら初めて知ったのだが、Perl5における空の正規表現パターン(m//とかqr//とか)はだいぶトリッキーな動作をするらしい。http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operatorsに曰く、 If the PATTERN evaluates to the empty string,…

Async::DeferもしくはPromisesを使ってTwitterのuser_timelineをロードしまくるサンプル

表題のものを書いてGistにアップした。詳しくは内蔵PODを参照。 https://gist.github.com/4186470 Promiseを使っても非同期ルーチンのループ処理を書くのはなかなか難しい気がする。特にループの回数が事前に分からない今回のような場合は再帰コールを使わざ…

Promises/Future と Async::Defer

You're Missing the Point of Promises · GitHubを読んだ。

Async::Queueをリリース

PerlモジュールAsync::Queueをリリースした。 http://search.cpan.org/perldoc?Async%3A%3AQueue このモジュールは、あらかじめ登録した非同期処理を立て続けに実行する際に、実行並列度に制限をかけてFIFO実行してくれる、というもの。 ぶっちゃけた話、asy…

Net::Pcapのビルドでハマる

Xubuntu 12.04でNet::PcapモジュールをCPANからインストールしようとしたら、makeに失敗。 こんなエラーが出ていた。 looking for -lpcap... no - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - You appear to lack the pcap(3) library. If i…