タグ

ブックマーク / hiratara.hatenadiary.jp (21)

  • 「Hokkaido.pm のおかげで結婚できました」 - Pixel Pedals of Tomakomai

    めでたい RT @lestrrat: [YAPC::Asia のおかげで結婚できました」RT @hiratara: 無事に婚姻届が受理されたとこ。 @Yappo 「YAPC::Asia のおかげで結婚できました」エントリありますか RT @hiratara: 無事に婚姻届が受理されたとこ。 @lestrrat エアRTからの無茶ぶりがあったので、YAPC::Asiaの話ではないですがこぼれ話でも。 とは付き合いが長かったのに加え、今年は震災もあったことから、「二人の関係を有耶無耶にしたまま人生を終えてしまったら死んでも死にきれない」という思いが少なからずありました。そのタイミングで開催されたのが、Hokkaido.pm #5。ちょうどうまーく実家に帰る口実ができたので、Hokkaido.pmへ行くついでにプロポーズしてそのまま実家に挨拶へ連れて行くという作戦を練りました。にも実家にも、

    「Hokkaido.pm のおかげで結婚できました」 - Pixel Pedals of Tomakomai
  • Data::Monad::CondVar をリリースしました - Pixel Pedals of Tomakomai

    YAPC Asia 2011で話をする予定のモジュールをCPANへアップしました。 Data::Monad::CondVarはJSDeferred みたいなもんです。 use AnyEvent; use AnyEvent::HTTP; sub random_choice { my ($data, $headers, $cb) = @_; my (@url) = $data =~ m{href="(http:[^"]+)}g; http_get +(shuffle @url)[0], $cb; } my $cv = AE::cv; http_get "http://yapcasia.org/2011/", sub { random_choice @_ => sub { random_choice @_ => sub { random_choice @_ => sub { my ($data,

    Data::Monad::CondVar をリリースしました - Pixel Pedals of Tomakomai
  • Amon2のソースを読む(5) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のDSL周り。これで最後。 Amon2::Declare $c じゃなくて c() 使えたらいいよねって話。内容物の中では、t/ 内のExtended::V::MT::Context にて、テンプレからcを呼び出せるようにするために使っている。 Amon2::Lite Sinatra-ish な書き方ができるようにするもの。Amon2::Lite::_child_N という名前でコンテクストクラスを作る。Nは連番なので、package名さえ分ければ複数箇所から利用が可能*1。 use 元にはルーティングに必要な関数をエクスポートする。2.49 の実装では Router::Simple::Sinatraish は使わずに自前で実装している。さらにコンテキストにはdispatch と create_view が必須なのでこれらを実装。create_view では__D

    Amon2のソースを読む(5) - Pixel Pedals of Tomakomai
  • Amon2のソースを読む(4) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のTriggerとPluggin。 Amon2::Trigger クラスに対してもインスタンスに対してもフックがかけられ、それぞれ@Class::_trigger と $obj->{_trigger} を使って保存される。get_trigger_code を呼ぶと関連するハンドラを全て取得できるが、インスタンスに対して呼んだ場合はインスタンスに紐づくハンドラとそのクラスの継承ツリー上のクラスにぶら下がる全てのハンドラを得られる。ハンドラは親→子の順に並んでいる。厳密な順序に関しては、mro::get_linear_isa を使っているので現在設定されているmroの影響を受ける。 Amon2::Plugin::Web:: プラグインは $c->add_trigger でトリガを仕掛けたり、$c にメソッドを生やしたりしてYourProject::Web クラスを拡張

    Amon2のソースを読む(4) - Pixel Pedals of Tomakomai
  • Amon2のソースを読む(3) - 北海道苫小牧市出身の初老PGが書くブログ

    今日はAmon2-2.49のscaffoldとDispatcher。--flavor=Basic が基なんで、それを読む。 概要 scaffold 内のPerl関連のファイルはapp.psgiとYourProject.pmとYourProject::Webと YourProject::Web::Dispatcher だけ。実際のユーザ側の処理は YourProject::Web::Dispatcher がディスパッチした先に書くことになるので、Dispatcher.pm に直接書くか、YourProject::Web::C 以下のクラスに書くことになる。 YourProject::Web::Dispatcher を書くために Amon2::Web::Dispatcher::Lite と Amon2::Web::Dispatcher::RouterSimple が提供されているので、これも

    Amon2のソースを読む(3) - 北海道苫小牧市出身の初老PGが書くブログ
  • Amon2のソースを読む(2) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のコンテキスト周りで、具体的には Amon2、Amon2::Web、Amon2::WebRequest、Amon2::WebResponse、ついでにAmon2::Config::Simple 。Dispatcher はこれらと粗結合なので、次回以降。他残っているのは、scaffoldのコードと、トリガーとプラグイン周り。 Amon2::Web と Amon2 の関係 Amon2::Web はAmon2(コンテキスト) を継承しておらず、コンストラクタも持っていない。YourProject::Web ではAmon2 と Amon2::Web の双方を継承して使う。という構造を考えると、Amon2::Web はAmon2 のサブクラスに対する Mix-in として働いていると見た方がわかりやすい。 Amon2::Web scaffoldの YourProject/a

    Amon2のソースを読む(2) - Pixel Pedals of Tomakomai
  • Amon2のソースを読む(1) - 北海道苫小牧市出身の初老PGが書くブログ

    今日は Amon2-2.49 のscaffoldの作成まで。具体的にはAmon2::Setup:: 名前空間の部分。 amon2-setup.pl script/amon2-setup.pl がscaffoldの作成スクリプトだが、これは各フレーバーをnew->runしてるだけ。フレーバはAmon2::Setup::Flavor:: という名前空間に置かれるが、+指定で好きな名前空間のものも読めそう。 Amon2::Setup::Flavor Amon2::Setup::Flavor はフレーバーのスーパークラスで、ファイルを特定のPATHに吐き出す write_file などを提供する。write_file に渡すファイル名は、<<hoge>>の形式で変数を利用可能。ファイルの内容はXslateで解釈されるが、タグは <% hoge %> の形式。 Amon2-2.49のコアパッケージに

    Amon2のソースを読む(1) - 北海道苫小牧市出身の初老PGが書くブログ
  • 今日はShibuya.pm #15の日です。 - Pixel Pedals of Tomakomai

    Shibuya.pm #15に出席予定です。昨日に引き続き、IIJさんの大会議室に向かってます。ストリーミング中継もあるらしいです。 MORE Learning Perl / brian d foyさん(@briandfoy, @briandfoy_perl) .pmは世界中にある → 実際に会いたい Acme::CPANAuthors->new('Japanese') → 日のCPAN author "Learning Perl" → 5.10に対応。5.14対応にしたい。Unicode対応したい。 "Inter mediate Perl" → 新しい版は来年の夏? 正規表現オブジェクトやMoose対応。 Mastering Perl → アップデート予定はない Effective Perl PROGRAMMING → 一番おすすめ。5.12。 Effective Parlerを更新中

    今日はShibuya.pm #15の日です。 - Pixel Pedals of Tomakomai
  • perlのテストの仕組み(TAP::Harness) - Pixel Pedals of Tomakomai

    perlのテストフレームワークである、TAP::Harnessの動きを調べました。わかりやすく言えばproveコマンドの中身です。 *.t(予備知識) 説明不要だと思いますが、モジュール開発者が書くテストスクリプトです。個々の*.tは単なるスクリプトで、実行されるとTAPを標準出力へ吐きます。こんなの。 1..2 ok 1 not ok 2TAPを吐くのは、Test.pm とか Test::Moreとかが担当しているお仕事で、TAP::Harnessは何もしないです。 なお、書式さえ守ってればTest.pmやTest::Moreを使わなくても単にprint文で吐いてもOKだったりします。 App::Prove proveコマンドの実装です。引数の解釈とかをして、TAP::Harnessを起動します。 TAP::Harness テストを起動させるruntestsを持っています。runtest

    perlのテストの仕組み(TAP::Harness) - Pixel Pedals of Tomakomai
  • Gitリポジトリ中のサブディレクトリを別のリポジトリにする - Pixel Pedals of Tomakomai

    clone して filter-branch を使うと、サブディレクトリを別のリポジトリにできます。 例えば、/tmp/hoge にあるリポジトリに hoge と subdir/foo と言うファイルがあって、ログが以下とすると、 % git log -p --pretty=oneline ac27f0a1f18108cd81be52634b07228c6bb95a0b Added foofoo diff --git a/subdir/foo b/subdir/foo index 257cc56..b4c9d55 100644 --- a/subdir/foo +++ b/subdir/foo @@ -1 +1,2 @@ foo +foofoo a6cc83ca5cec477444f0d63359ef12dede648eb5 Added hogehoge diff --git a/hoge

    Gitリポジトリ中のサブディレクトリを別のリポジトリにする - Pixel Pedals of Tomakomai
  • Tatsumaki でブラウザベースの Twitter Streaming - Pixel Pedals of Tomakomai

    それってHamakiなんですが、試しに作ってみたので一応。ただし、Tatsumakiは、 This is considered as alpha quality software. Most of the stuff are undocumented since it's considered unstable and will likely to change. You should sometimes look at the source code or example apps in eg directory to see how this thing works. Tatsumaki なので自己責任で:-p 後、このエントリより eg/chat を見た方が勉強になりますw Tatsumaki概要 TatsumakiはPlackとAnyEventをベースにしたTornadoっぽくWE

    Tatsumaki でブラウザベースの Twitter Streaming - Pixel Pedals of Tomakomai
  • YAPC::ASIA 2009 の感想 - Pixel Pedals of Tomakomai

    まず、スタッフの皆さん、今年も素晴らしいイベントをありがとうございました。今回も、Perlにどっぷり漬かって楽しい3日間でした。当にお疲れ様でした。 気になったセッション 今回個人的に特に気になったセッションを個別に挙げさせて頂きます。 Yusuke Wadaさん「miyagawanize」 ずるいけど、一番面白かったです。でも、ずるいです。 Yoshinori TAKESAKOさん「all your base32 are belong to us」 ほんと、何がTAKESAKOさんを突き動かしてるんでしょう? 具体的な手法まで説明があり、笑いあり感動ありのバランスのとれた素晴らしいセッションでした。 Tokuhiro Matsunoさん「Concurrent DB Access with Perl」と、Tatsuhiko Miyagawaさん「Event programming fun

    YAPC::ASIA 2009 の感想 - Pixel Pedals of Tomakomai
  • Perlでモナドを学ぶ - Pixel Pedals of Tomakomai

    勉強のためにPerlでモナドを実装してみました。 免責 圏論のモナドの概念をPerlでシミュレートしようと言うエントリであって、モナドを開発にどう利用するかなどについてはびっくりするくらい言及しませんので悪しからず。 1. 圏を考える Perlのスカラ値の任意の集合を対象として、引数も戻り値も一つで副作用がないサブルーチンを射とします*1。domとcodについては、関数が正常に動作する範囲で適当にとりましょう。 * 例: 対象「文字列」から対象「整数」への射 length 2. 自己関手の表現 自己関手は、二つの写像からなります。 対象を対象に移す写像 T_object モノとしては考えますけど今回は実装しません*2。 射を射に移す写像 T_arrow 『サブルーチンを受け取ってサブルーチンを返すサブルーチン』として実装できます。 3. 自然変換の表現 関手Tから関手Sの自然変換は、対象A

    Perlでモナドを学ぶ - Pixel Pedals of Tomakomai
  • 社内勉強会 - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceなんかじゃないの内容を社内勉強会でやったので、スライドだけ貼っておきます。 slideshareの貼り方ははてなブログでslideshareのプレゼンテーションflashを貼る方法で教わりました。

    社内勉強会 - Pixel Pedals of Tomakomai
  • Shibuya.pm #11 感想 - Pixel Pedals of Tomakomai

    今日はメモがグダグダなので、感想を別途。 dankogaiさんのサンドボックス話が面白かったです。FreeBSD系にしか使えないとは言え、llevalのような機能を人に解説できるレベルで実現してしまうとこはさすがです。ありがたく聞かせて頂きました。 kenjiさんの Capture the Flag の話は、異世界の話で刺激になりました。これに参加してる人はマトリクスの中に入れるんじゃないでしょうか? バイナリアンの方々のすごさを改めて認識しました。Fukumori DaikiさんのNaCl話も同様に尊敬。 gfxさんのAcme::Perl::VMは、実にAcmeチックで素敵でした。VM楽しそうですねー。JavaVM仕様とか読んで勉強したいです(Perlじゃないの!?)。 tokuhiromさんのDevel::BindPP素敵でした。ソース自体もXSのドキュメントよりためになるよってとこに

    Shibuya.pm #11 感想 - Pixel Pedals of Tomakomai
  • 今日はShibuya.pm #11の日です - Pixel Pedals of Tomakomai

    no Perl; use x86; *1ですので、Perlにそんなに興味がない方でも楽しめると思います!!(笑) 今日はユニバーサルアクセスを兼ねて内容を細か目に書いたのですが、書いてる人もあまり理解してないので雰囲気だけ読み取って下さい・・・。誤りの指摘は大歓迎ですorz 4/23追記: 内容の補完のために、すぎゃーんメモさんとこのメモも合わせてどうぞ。 第一部 sandbox特集 バイナリ畑で捕まえて - inside lleval / dankogaiさん バイナリ麦畑で捕まえて → lleval というサービス デモ Perlのコード(CSSの都合で動かない) BASICのコード postscript Perl6 → 重いけど動く 動かすのは簡単 → 不正なコードを動かされると困る → 捕まえて欲しい 1分を越すとタイムアウトする fork爆弾 外部モジュール(syscall.p

    今日はShibuya.pm #11の日です - Pixel Pedals of Tomakomai
  • Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceと似たような物だと思ってたんですが、大きな誤解でした。 モダンPerlの世界へようこそを読んで、Moose::RoleはTraits: Composable Units of Behaviorの概念の実装らしいことがわかったので、この論文を読んでみました。*1。非常に面白い内容でした。P.12 の a) と b) を見るだけでも、この概念の面白さが伝わるんじゃないかと。要は、指定した振る舞い(requires)から新しい振る舞い(provides)を作るものが、Traitsってことです。(ただし、ここで言う振る舞いにはアクセサを含みます。) 誤解していたこと Moose::RoleをTraitsとして見なすとすれば、JavaのInterfaceの性質である以下の2点は誤解です*2。 Moose::Roleは、単なるインタフェース(API)

    Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai
  • POEでmapを並行化してみる - Pixel Pedals of Tomakomai

    POEの練習代わりに、POEを使ってmap関数を並行化してみました。今回は MooseX::POE を使っています。 逐次処理バージョン POEで逐次処理版のmap処理を書いてみると、こんな感じになりました。 package MySession; use MooseX::POE; sub transform { sleep 1; return (shift) * 2; }; sub START{ my $self = shift; my @odds = map { transform($_) } 1 .. 10; print join(",", @odds), "\n"; print "done\n"; } no MooseX::POE; package main; use strict; use warnings; use POE; MySession->new; POE::Kernel

    POEでmapを並行化してみる - Pixel Pedals of Tomakomai
  • 書籍: モダンPerl入門 - Pixel Pedals of Tomakomai

    amazonで露出されたようなので言及しておきます。 モダンPerl入門 牧 大輔 JPA関連でも精力的に活動されてます、牧さんが執筆されたPerlです。今回はたまたま縁あって*1校正のお手伝いをさせて頂きました。 内容は、世間にはあまり知られていないPerlコミュニティでのノウハウや最近の動向を集めたものとなっており、読むととても勉強になります。またモダンなだけではなく、「実用的なPerl」を謳っており、今日からでも業務に使えるノウハウが満載です。 Perlに携わる方には、ぜひとも手に取って頂きたい一冊です。 1/19 追記: 著者の牧さんのblogで詳しい紹介が公開されました! *1:CodeZineの編集者さんの方にお願いして混ぜてもらいましたw

  • XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai

    id:TAKESAKOさんの好意で出させてもらったので、適当にロギングします。 はじめてのXS / id:hirose31さん XSってなに? PerlとCをつなぐための言語&インタフェース Foo.xs → xsubpp → Foo.c → Cコンパイラ → Foo.so Perlからは、XSLoaderやDynaLoaderでFoo.soを読み込む なぜXSを使う? Cのライブラリを使いたい パフォーマンス向上(Cache::Memcached::Fast 等) Perlの内部をいじくり倒す(autobox*1 等) XSを書いた動機 → forkしまくりたくなかった ドキュメント perlxstut, perlxs, perlguts, perlapi h2xs or module-starter (Module::Starter::XSimple) で始める 外部のsay_hell

    XS Nite (Shibuya.pm Tech Talk #9) - Pixel Pedals of Tomakomai