これができると嬉しいこと サーバとクライアントがひとつのプロセスにまとまってクローラー的なプロセスが必要なくなり、監視せずに済むので地味に嬉しい 概要 言われてみれば何だ、という程度ではあるけれども、app.psgiで Twiggy::Server を使い、コネクションを AE::timer で監視し、AE::cv->recv; するという方法をつかえば Tatsumaki::MessageQueue も使えて万々歳。これがなかなか思いつかなかった… 思いつかなかった言い訳 Twitter の userstream は時々切れるので再接続の処理をする必要があった。今までずっとクローラーで while ループ回したりしてたけれども、 while を使って接続が切れるごとに ->recv してるとサーバと一緒に動かすことができなくて悶々とした日々を過ごすこと数ヶ月。 サーバでは builder
要するにAnyEventでgroongaを使いたかったのでperlモジュール書きました。んでもって久々にCPANにアップしましたよ、という告白です。 AnyEvent::Groonga - Groonga client for AnyEvent http://search.cpan.org/~miki/AnyEvent-Groonga/ 非同期でガンガン全文検索エンジンを叩きたいな、ということでAnyEvent::Groonga。 なおYappo さんが取り組まれているCライブラリのperlバインディングスとは異なり、AE::Groongaはgroongaディストリビューションに同梱されてるオリジナルの「groongaサーバ」を対象としています。 このgroongaの組み込みサーバは、じつはhttpとgqtp(groonga独自プロトコルらしい)両方をしゃべれます。また普通にローカルのDB
Coro とは、AnyEvent、JSON::XS で有名な Marc Lehmann 作の、Perlにおいて、協調型スレッド(簡単な方のスレッド) を実現して、背後で AnyEvent が仕事をしながら、プログラマ側からは今までのブロッキング方式と思って書けるようにするためのモジュールです。 本体に同梱されている Coro::Specific というモジュールを使うと、今まで fork システムコールで多重化していた Net::Server のような、サーバーのインスタンスが1つで、それぞれのクライアントがプロパティをちょこっと書き換える型のサーバーを Coro 化するのに役に立ちます。 実際に、Coro における PSGI サーバー実装である Corona で使っている、Net::Server::Coro では、以下のようにして特定のプロパティをコルーチンごとに別々に設定できるようにし
Twitterクライアントアプリでよくある「デスクトップ通知機能」。Macの場合はGrowlでアイコンと発言が出たりしますよね。 先日TwitterのUser streams APIがついに一般公開されたそうで、それに伴ってCPANモジュール"AnyEvent::Twitter::Stream"もアップデートされました。 Tatsuhiko Miyagawa / AnyEvent-Twitter-Stream-0.20 - search.cpan.org せっかくなのでちょっと使ってみました。 参考:Twitterの新しいStreaming API「ChirpUserStreams」がすごすぎる件 - すぎゃーんメモ #!/usr/bin/perl use strict; use warnings; use AnyEvent::HTTP; use AnyEvent::Twitter::St
2010年09月01日03:00 カテゴリLightweight Languages perl - 勝手に添削 - Webサイト死活管理 やはり必要以上にゆるいと感じたので。 PerlスクリプトでWebサイト死活管理 - ゆーすけべー日記 リダイレクトはエラー扱いに 以下、問題と感じたところ。 $ua->is_success は300番台でも成立する LWP に限らず User Agent のほとんどはデフォルトではリダイレクト先まで見に行ってしまう このままだと以下のような場合もOKになってしまう。 % lwp-request -S -mHEAD http://www.dan.co.jp/~dankogai/hijitsuzai HEAD http://www.dan.co.jp/~dankogai/hijitsuzai --> 302 Found HEAD http://blog.li
本連載では第一線のPerlハッカーが回替わりで執筆していきます。第2回は、Japan Perl Association代表理事の牧大輔さんで、テーマはAnyEventです。 はじめに 昨今のPerl界で最も熱い話題がイベント駆動プログラミングです。イベント駆動プログラミングはいわゆる「リアルタイムWeb」などと呼ばれる、大量のデータや接続をさばきつつも更新通知の速さが重要となるアプリケーションでは必須技術で、今後のエンジニアにとって最も重要な知識の一つと言えるでしょう。 イベント駆動プログラミング自体はPerlでも以前からさまざまな用途に使われてきましたが、それがまた見直されているのは、従来のイベント駆動プログラミング用ツールキットの使いやすさをはるかに凌駕するAnyEventというモジュールが成熟期を迎えたためです。 イベント駆動プログラミングとは AnyEventの解説に入る前に、簡単
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
AnyEventでの簡単なFIFOキューの作り方 まぁ考えてみれば単純な話ですけど、いわゆるGuardを使うとよいです。参考はAnyEvent::HTTP コールバック$cbの最初の引数をguard変数にしておき、キューの1スロットを使用している間はこのguard変数をundefしないようにしておく感じです。 use strict; use AnyEvent; use AnyEvent::Util; my @q; # 実際にコールバックを入れておくところ my $ACTIVE = 0; # 現在の使用中スロット my $MAX_ACTIVE = 1; # 最大何個のコールバックを「同時」に行うか(もちろん本当に同時じゃないよ!) sub drain_queue { while ( @q && $ACTIVE < $MAX_ACTIVE ) { if (my $cb = shift @q)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く