タグ

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

  • Re: 知ってそうで意外と知られていないperlの小技 10選 - Pixel Pedals of Tomakomai

    意外と知られていないperlテクってのが、意外とあるもんですね。 最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。 知ってそうで意外と知られていないperlの小技 10選 こういうトリビア的なのはなかなか面白いなあと思ったので便乗させて頂きました。 Re: ランダムシャッフル 続いてこれもソートねた。 これは List::Util::shuffle の方がベターでしょう。*1 % perl use List::Util; print join ' ', List::Util::shuffle qw( 0 1 2 3 4 5 6 7 8 9 ); print "\n"; 1 8 6 3 0 2 7 5 9 4 Re: perlとだけ叩いたら そんなあなたは、まずコンソールに向かって「perl」とだけ打ってリターンしてみてください。 ちなみに、perlrunを読めば

    Re: 知ってそうで意外と知られていないperlの小技 10選 - Pixel Pedals of Tomakomai
  • Coroを使って、コールバック形式を普通の形式に書き換えてみた - Pixel Pedals of Tomakomai

    非同期ブーム第二段です。 書き換え方 func_by_cb( $cb, @params ) みたいな形式があった時に、Coroのrouse_cbを使うと、通常の関数呼び出しの形式で呼び出せる関数に変換ができます。こんな感じで。 sub func_by_coro { func_by_cb( Coro::rouse_cb, @_ ); return Coro::rouse_wait; } 変換前の関数(func_by_cb)は、以下のように使います。 func_by_cb( sub { print @_, "\n"; }, 1, 2, 3); 対して、変換後の関数(func_by_coro)では、この処理を以下のように書けます。 print func_by_coro(1,2,3), "\n"; 使い勝手は一目瞭然ですね! コールバックがAnyEventで実現されている場合 コールバックがAny

    Coroを使って、コールバック形式を普通の形式に書き換えてみた - Pixel Pedals of Tomakomai
  • AnyEventとCoro::AnyEventで諸注意みたいなの - Pixel Pedals of Tomakomai

    またまた非同期ブームに乗ってお勉強継続中です。 AnyEventとCoro::AnyEventの違い AnyEventとCoro::AnyEventでは、メインループを回すスレッドが違います。 use strict; use warnings; use AnyEvent; use Coro; # use Coro::AnyEvent; my $done = AE::cv; my $t = AE::timer 0, 0, sub { print $Coro::current->{desc}, "\n"; $done->send; }; $done->recv; このまま動かすと出力は「[main::]」で、Coro::AnyEventを有効にすると「[AnyEvent idle process]」となります。 裏でメインループが回る Coro::AnyEventを有効にすると idle 状態

    AnyEventとCoro::AnyEventで諸注意みたいなの - Pixel Pedals of Tomakomai
  • recursive blocking wait detected への対処 - Pixel Pedals of Tomakomai

    連休の非同期祭も(疲れたので)これでラストです。 AnyEvent(5.2)でこんなコード書くと、「recursive blocking wait detected」が出ます。 use strict; use warnings; use AnyEvent; sub main { foreach my $i (1 .. 5) { my $cv = AE::cv; my $t = AE::timer $i, 0, sub { $cv->send($i); }; print $cv->recv, "\n"; } } my $t = AE::timer 0, 0, \&main; AE::cv->recv; # 結果 # EV: error in callback (ignoring): AnyEvent::CondVar: recursive blocking wait detected at

    recursive blocking wait detected への対処 - 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
    download_takeshi
    download_takeshi 2009/04/24
    shibuya.pm
  • 1