タグ

anyeventに関するkiririmodeのブックマーク (19)

  • AnyEvent 5.3 Released - unknownplace.org

    出てました。気がつきませんでした。 このバージョンから AnyEvent::Impl::Cocoa が入りました。これは Cocoa::EventLoop を AnyEvent から使うアダプターで、 use Cocoa::EventLoop; していると自動的に使われます。したがって、 use AnyEvent; use Cocoa::EventLoop; # AnyEventを使用したコード... と言うように書くと自動的に Cocoa のイベントループで AnyEvent が動作するというわけです。 こうしておけば Cocoa::Growl など、Cocoa::EventLoop を必要とするモジュールをシームレスに AnyEvent 内で使うことが出来て便利です。 なお、AnyEvent::Impl::NSRunLoop は DEPRECATED ってことでとりあえずドキュメントに

  • ブロッキングする処理を外部プロセスに任せる - AnyEvent::Workerを使ってみた - download_takeshi’s diary

    AnyEventを使う場合に、どうしてもブロッキングしてしまうような処理があるとして、それを外部プロセスとして切り出しつつ、メインのイベントループの中に取り込みたいんだよな、と。 そんな時はAnyEvent::Workerがよさそうです。 AnyEvent::Worker - Manage blocking task in external process http://search.cpan.org/~mons/AnyEvent-Worker/ POEで言うところのPOE::Component::Genericのようなものらしいです。使いこなせるようになるといろいろと便利! use strict; use warnings; use AnyEvent; use AnyEvent::Worker; $|++; print _timestamp(), "開始しまーす\n"; my $cv =

    ブロッキングする処理を外部プロセスに任せる - AnyEvent::Workerを使ってみた - download_takeshi’s diary
  • Cocoa::EventLoop - unknownplace.org

    そういえば Cocoa::EventLoop と言うモジュールを書いたんでした。 これはもともと AnyEvent::Impl::NSRunLoop として書いていたイベントループ処理部分だけを単体モジュールとして切り出した物で、 AnyEvent を使わなくても Cocoa のイベントループを Perl から使用できるというものです。 くわしくはドキュメントを参照してもらうとして、Cocoa::Growl を使ったサンプルを載せてみます: use Cocoa::EventLoop; use Cocoa::Growl; my $done = 0; growl_notify( name => 'Notification Name', title => 'Hello', description => 'Cocoa World!', on_click => sub { $done++; }, o

  • Perl から Growl をちゃんと使おう - Articles Advent Calendar 2010 Hacker

    こんにちわ。Growl 大好きっ子 typester です。 重たいバッチジョブを走らせている間、別の作業をする。ジョブが終わったらデスクトップに Growl を表示させて処理の完了を知る。 その合間にもRSSから配信されたニュースや自分への Mention を Growl 表示し、あっという間に情報を操作する。 誰もが憧れる Hackish な作業風景ですね。Mac ユーザであればその他の活用方法を知ってる人も数多くいるでしょう。 でもperlbrewで64bit perlいれてるからMac::Growlがうまくインストールできないし... そんな風に思っていた頃が僕にもありました。 Cocoa::Growl http://search.cpan.org/dist/Cocoa-Growl/ そんな不満を打破するべく僕は Cocoa::Growl を書いた。 XS で Objective-

    Perl から Growl をちゃんと使おう - Articles Advent Calendar 2010 Hacker
  • perl - 勝手に添削 - Webサイト死活管理 : 404 Blog Not Found

    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 - 勝手に添削 - Webサイト死活管理 : 404 Blog Not Found
  • livedoor Techブログ : IRC がゆく

    開発部 _ です。 みなさんは IRC を使っていますか? もしくは使ったことがありますか? ネット上の個人コミュニケーション手段が msn・Yahoo!・Skype などのメッセンジャーが一般的になって久しい昨今、IRC は一部のマニアが使うニッチで古臭い手段という見方も多いようです。 そんな中 livedoor では、日々の運用作業に始まり、開発中のコンテンツ進捗、技術的な意見交換、バグ報告、ランチどこいく?、麻雀やりますよ、今夜のおかずに到るまで日常的に活用されています。 IRC で使われているツールに IRC bot(IRCボット:以下 ボット)と呼ばれる小さなプログラムがあります。 ユーザーの発言に反応したり、定期的に何かを発信したり、嫌なアイツにナニしてくれたり、と作り手の発想次第でいろいろな処理をさせることが出来ます。 時に悪用(ボットネットなど)されるなどネガティヴな印象を

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Perl 非同期プログラミング

    Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。

    Perl 非同期プログラミング
  • 第2回 AnyEventでイベント駆動プログラミング (3) | gihyo.jp

    AnyEventベースのモジュール 前回まで紹介したのはAnyEventの基APIのみです。CPANにはこれらをベースにさらに複雑な機能を実装した様々なモジュールがあり、それらをうまく組み合わせて簡単に高機能なイベント駆動プログラムを構築することができます。代表的なものとしては、以下のようなモジュールが登録されています。 非同期でHTTP通信を行うAnyEvent::HTTP 低レイヤのI/Oを簡単にするAnyEvent::Handle ソケット接続を行うAnyEvent::Socket データベース処理を非同期で行うAnyEvent::DBI CouchDBと非同期に通信を行うAnyEvent::CouchDB PSGI/Plackを非同期エンジンで動かすTwiggy これらを組み合わせて使うことにより、ブラウザと非同期に通信しつつ裏ではデータベースおよびイントラネットのほかのREST

    第2回 AnyEventでイベント駆動プログラミング (3) | gihyo.jp
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • AnyEventでの簡単なFIFOキューの作り方 - D-6 [相変わらず根無し]

    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)

  • おさかなラボ - Coroでより賢い非同期クローラを作る

    前回のエントリでは簡単なクローラの作り方を説明した。しかしこのクローラには欠点があり、取得したいURLが何千何万とある場合、一度にhttp_getが走ってしまい、リソースを使い切ったり同じサーバーへのアクセスを待つ間にタイムアウトしたりと都合が悪かった。そこで今回はAnyEventに加えCoroを使うことにより、並列を使ってリソースへの同時アクセス制限を行うクローラの書き方を解説する。 これは前回のエントリの改良版になるので、初めてこれを読む方は当該エントリを先に読んで頂きたい。 まず、前回はAnyEventを使い、condvarとsend-recvを使ってイベントの監視をしていたが、Coroと同時に使う場合これでは都合が悪い。イベントループを回す場合、一般的にAnyEventはrecvを、Coroはjoinを使うが、これらはどちらもイベントループが終わるまでブロックするのでどちらかし

  • 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
  • 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
  • ゆーすけべー日記

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

    ゆーすけべー日記
  • 第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp

    イベントループを持つモジュールが抱える問題点 イベントループを持つモジュールの一例として、前回はPOEを取り上げましたが、もちろん同じようなループを持つモジュールはほかにもあります。 たとえば1995年に故ニック・イング・シモンズ(Nick Ing-Simmons)氏が始めたPerl/Tkや、POE誕生前夜の1997年から開発が行われているGtk(のちのGtk-Perl⁠)⁠、その後継にあたるGtk2/GlibのPerlバインディング(2003年)など、GUIアプリケーション関連のツールがそうですし、IO::Poll(1997年)やIO::Async(2007年)のようなモジュールにもイベントを監視するためのループが使われています。また、Event(1997年)やlibeventのラッパであるEvent::Lib(2004年⁠)⁠、EV(2007年)のように、イベントループそのものを実装す

    第13回 AnyEvent:イベント駆動モジュールの方言を吸収する | gihyo.jp
  • AnyEvent::ReverseHTTP

    NAME AnyEvent::ReverseHTTP - reversehttp for AnyEvent SYNOPSIS use AnyEvent::ReverseHTTP; # simple Hello World server my $guard = reverse_http "myserver123", "token", sub { my $req = shift; return "Hello World"; # You can return HTTP::Response object for more control }; # more controls over options and callbacks my $server = AnyEvent::ReverseHTTP->new( endpoint => "http://www.reversehttp.net/rever

    AnyEvent::ReverseHTTP
  • AnyEvent::Intro

    NAME AnyEvent::Intro - an introductory tutorial to AnyEvent Introduction to AnyEvent This is a tutorial that will introduce you to the features of AnyEvent. The first part introduces the core AnyEvent module (after swamping you a bit in evangelism), which might already provide all you ever need: If you are only interested in AnyEvent's event handling capabilities, read no further. The second part

    AnyEvent::Intro
  • 1