タグ

AnyEventに関するdownload_takeshiのブックマーク (14)

  • Twiggy::Prefork をリリースしました - blog.nomadscafe.jp

    だいぶ以前 Plack::Server::AnyEvent::Prefork というのを書いて某所で使っていたのですが、ここ数日で事例がもうひとつ増えたついでに Twiggy ベースに書き直してCPANリリースしました。 https://metacpan.org/module/Twiggy::Prefork 使うには、 $ plackup -s Twiggy::Prefork -a app.psgi な感じで、Server::Starterにも対応しているので、 $ start_server --port 5000 -- plackup -s Twiggy::Prefork -a app.psgi とすれば、hot-deployも可能です。 起動オプションは、Twiggyがサポートしているオプションに加えて、 —max-workers preforkするworker数 —max-reqs-

  • AnyEvent でバックエンドに EV を使う時の注意 - unknownplace.org

    AnyEvent を利用する際に注意する必要があることに、コールバック中で発生した例外の処理方法がバックエンドに任されている(=例外処理の方法がバックエンドによってちがう)、というのが挙げられる。 Impl::Perl では例外は単純に rethrow されるため、プログラム中で例外が発生したり die したりすると普通にプロセスは終了する。 しかし、Impl::EV の場合、デフォルトでは例外はキャッチされ標準エラーに出力されるものの、そのまま処理は続行されてしまう。 以下のような1秒タイマーをまわしてタイマーが発火したらアプリを終了する、というようなコードがあったとき、 use strict; use warnings; use AnyEvent; my $cv = AnyEvent->condvar; my $t; $t = AnyEvent->timer( after => 1,

  • AnyEvent IRC bot: Morris - D-6 [相変わらず根無し]

    AnyEvent IRC bot: Morris http://github.com/lestrrat/Morris Moose + POEなIRCボット作ろうと前に思い立って、結構長いこと弊社内で使ってたんですが、このたびAnyEvent化して色々モダナイズしました。やっぱり非同期なhttp_getしてる部分とかは抜群に速いなぁ。 AnyEvent したついでにAnyEvent::MPにも対応したですよ。POE::IKCと違って、一旦セットアップしちゃえば、Morrisの外から何かをポストするのにコマンドラインから一発でできる; aemp morris privmsg "#channel" "Your comment" ただMPってセットアップが結構面倒くさいのね。以下はまったり考え込んだりしてしまったところ: 最初動かない時になにやってんんだかわからないので、PERL_ANYEVENT

  • AnyEvent::Wassrつくった - すぎゃーんメモ

    諸事情により、AnyEvent::TwitterのWassrバージョンが欲しかったので、作ってみた。 AnyEvent::Twitter - search.cpan.org 基的にはこのAnyEvent::Twitterのパクリ。じゃっかんインターフェースを自分好みに変更してたりもするけれど。 ドキュメントは無いですゴメンナサイ!! いちおう特徴 認証はBASIC認証一択 friends_timelineとrepliesを取得可能 内部でAnyEvent::HTTPを使ってAPIアクセス、AnyEventのtimerを使って自動繰り返し weightによる取得頻度の調整はAnyEvent::Twitterと同様 APIの使用回数制限は無いので、intervalで指定した秒数毎に取得(デフォルトは60秒とした) Twitter APIでは指定idより新しいもの、という指定が出来たけどWas

    AnyEvent::Wassrつくった - すぎゃーんメモ
  • 自分専用TwitterのWeb UI 「Hamaki」 - D-6 [相変わらず根無し]

    自分専用TwitterのWeb UI 「Hamaki」 ミニブログサービスで先行するTwitterと差別化を図った上で新たなサービスを出すのは面倒くさいので、id:miyagawa氏のコードを丸々パクった上でTwitter支援ツール、Hamakiを機能の夜からちょこちょこと開発しました(当はTwitter以上に色々できるんですが、そのあたりはまださわってない) もう自分がやりたい事はだいたいできるようになったのでとりあえず公開です。 まず前提としてTwitterを使ってていくつか不満な点があったわけです: Twitterで特定のアプリの発言がちょっぴり気になるので自分のTLに表示したくないかといって上記アプリの発言している人たちの他の発言は読みたいので、それらの人をremoveするのもしたくない。あと、全般的にtwitterをリロードするような事をしていると非常に効率が悪いかといって、今

  • おさかなラボ - 非同期の簡単なクローラの作り方

    そろそろ(いまさら)Coro+AnyEventでもやってやるか!と思って簡単な並列クローラを作ることにしたのだが、ググって出てくるサンプルを見てもいまひとつうまく動いてくれない。 で、そういえばYAPC::Asia 2009でmala.さんがAnyEvent::HTTPを使うとこんなに簡単にできるよ!と言っていたので、スライドの通りにやってみた。 use AnyEvent::HTTP; sub done { print @_; } http_get ("http://www.example.com/“, \&done); # 1 http_get (”http://www.example.com/“, \&done); # 2 http_get (”http://www.example.com/“, \&done); # 3 –mala氏 main.txtから引用。 こ

  • AnyEvent::Intro チョー訳 その2 - download_takeshi’s diary

    チョー訳その2です。今回はCondition Variablesとmain loop、それとTimer関連の説明部分を訳します。 前回の区切りの場所がイマイチ悪かったんですが、今回のところまでで「Introduction to Event-Based Programming」のパートが終わります。 なお部分的にかなり意訳、というか勝手な解釈で訳している箇所もあります。概ね合っているとは思いますが、こまかい部分では間違った表現もあるような気がしてます。 より正確に勉強したい人は原文を眺めながらチョー訳をご覧下さいませ。 原文はこちら http://search.cpan.org/~mlehmann/AnyEvent-5.2/lib/AnyEvent/Intro.pod#Condition_Variables それでは訳して行きましょう! Condition Variables(状態変数) I

    AnyEvent::Intro チョー訳 その2 - download_takeshi’s diary
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 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
  • 2009/07/09 - memo - unknownplace.org

    最近 AnyEvent にはまっています。おもしろい! AnyEvent と同じ非同期プログラミングフレームワークであるところの POE では $kernel->alias_set('hoge'); などとしておくと $kernel->post( hoge => 'state' ); みたいな感じでどこからでもそのコンポーネントを呼び出すことができました。 しかし AnyEvent ではそう言った機能がないため以下のように Object::Container を使って解決することにしました。 呼び出される側: use AnyEvent; use Object::Container 'event'; my $cv = AnyEvent->condvar; $cv->cb(sub { my (@args) = $cv->recv; # ここになんか処理 }); event->register(

  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 1