The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
_ YAPC::Asia 2008 で発表してきました [perl] YAPC::Asia 2008 で発表してきました.内容は [2008-05-14-1] に書いた ように,AtomPub サーバについてと POE vs Erlang についてです. あんまりうまく話せなかったり,発表が時間内に終わらずに司会の daiba さんに迷惑かけたりしてちょっと悔いが残る感じでした.準備不足だった かなぁ.. それでも多くの人に聞きに来ていただけたのは嬉しかったです.AtomPub のセッションにあんなに人が来るとは思わなかったです.ありがとうござ いました. # スライドは↓にあります. 2日目は参加できませんが (kazeburo さんの講演とか聞きたかったなぁ), 参加される方は楽しんできてください.
POE::Component::Server::TCPをつかったサーバー習作。 やることは 1.ClientConnectedでクライアントのオブジェクト($heap->{client})を%clientsに入れる。 2.ClientInputがきたら%clientsにあるクライアントすべてに送信。 3.ClientDisconnectedで切れたクライアントのオブジェクトを%clientsから削除。 これだけでtelnetで繋いで会話するだけのサーバーが作れる。 空行含んでも60行足らずで書けた。POE便利杉 #!/usr/bin/perl use strict; use warnings; use POE qw(Component::Server::TCP); my %clients; # ID => clientオブジェクト my $acceptor_session_id
inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標
1対1チャット 1対1でチャットするcometベースの仕組みを作ってみました.クライアント側はまだブラッシュアップしてる最中ですが,サーバ側のコードは落ち着いてきたのでまとめてみます.このサーバは html, css, jsファイルのダウンロード /sendにクライアントが投げてきたpostメッセージの受信 /helloにクライアントがJSONで投げてきたgetメッセージの受信 受信したpostメッセージを,getメッセージへのresponseとして特定のクライアントにJSONP形式で送信 死活監視を兼ねて,システムにログイン中のユーザ一覧をgetメッセージへのresponseとして全クライアントにJSONP形式で送信 という機能を持っています. POE::Component::Server::HTTP my $server = POE::Component::Server::HTTP->
2007年04月25日02:00 カテゴリLightweight Languages perl - PoCo::Client::HTTP < LWP::UserAgent->new(keep_alive => 1) POEが大流行しています。私自身POEはちょくちょく使っているのですが、サーバーはとにかくクライアントとなるとそれほど使っていません。 理由は、以下ではありません D-5 出張版 - [開発] PoCo::Client::HTTP decodes content (w/o Permission) Kazuho@Cybozu Labs: Re: PoCo::Client::HTTP が勝手に文字コードを変えてしまう件 理由は、もっと単純。非効率だからです。 以下をご覧下さい。ここでは10000bytesのコンテントを同じサーバーに100回取りに行っています。 % perl lwp
スタンドアロンWebサーバ書くのにPOE::Component::Server::HTTPはかなりお手軽ですね。エラー処理とかいろいろはしょると以下のコードで、Webサーバが走ります。 use strict; use warnings; use POE qw( Component::Server::HTTP Sugar::Args ); my $httpd_aliases = POE::Component::Server::HTTP->new( Port => 8080, ContentHandler => { '/' => \&httpd_index, } ); sub httpd_index { my ($request, $response) = @_; $response->code(RC_OK); $response->content('Hello, POE!'); return
WEB+DB PRESS Vol.38 の見本誌が届きました。連載も今回で7回目。今回は POE の話の後編です。複数の HTTP サーバーに非同期で同時アクセスするクライアントプログラムを POE::Component::* に頼らずつくり、その後 POE::Component を紹介しつつ IRC bot を作る、という内容になってます。先日の前編の vol.37、それから先日の YAPC::Asia の資料とあわせてお読みいただけると理解が深まるかなと思います。 今月号は新連載が色々始まってたりして関心が高いわけですが、断固guy 小飼弾さん (http://blog.livedoor.jp/dankogai/) の Alpha Geek に逢いたいのゲストがIT戦記の id:amachang とあの"はまちちゃん"で、はまちちゃんの写真が載っていました。はまちちゃんの顔が見たい人は
Twitterっぽいサーバースクリプト書いたよ twitterのAPIはtwitter以外でも互換APIだしたり、ライブラリとかがtwitter以外でも使えるようになってたりと、API周りが面白い今日この頃です。 大して深い意味は無いのですが、オレオレTwitterみたいのが欲しくなってサクっとTwitter APIが使えるサーバスクリプト書いてみました。 デモはhttp://tech.yappo.jp:11111/にて動いてます。 id/passwodはguest/guestもしくはtest/testです。 ソースはhttp://svn.yappo.jp/repos/public/misc/twitterd.pl 使い方はドキュメント書いてあるけど、htpasswdでユーザーアカウントを作成して、その作成したアカウントを使ってTwitterもどきにログイン出来ます。 サーバーを立ち上げた
twitter2ircd.pl - POEで書いたperlのTwitter IRC Gateway Twitterは、どことなくチャット的な利用もされていてiChat使っていたのですが,WindowsのTwitter IRC GatewayがあってIRCでやるのが楽しそうだったので、Macで動くようにPerlでIRC Gateway書きました。 miyagawaさんにPoCo::Server::IRCのサンプルコードとしてLingrのIRC Gatewayを教えてもらったので、参考にしてPOE::Component::Client::Twitterを作ってCPANにうpしました。 パッケージ中にはtwitter2ircd.plというTwitterのIRC Gatewayとなるサンプルコードを同梱しています。 コードの下にサンプルの設定ファイルがあるので参考にして下さい。 こんな感じで 普通
Comet については、普及するかどうかという以前に、どう使えばいいのか、正しく使った場合に何をどこまでできるのか、という理解が共有されていないように思います。なので、(あくまで私見ですが) 使用したスライドの一部を公開したいと思います。よろしければごらんください。 サイボウズラボの奥さんによる Comet のサーバー周りの資料。すばらしい。C10K に対してどのようなアーキテクチャをとるのが良いかとの考察が特に勉強になりました。 また、問題や改善すべき点があれば、教えていただければ幸いです。 というので問題、改善すべきというわけではないですが Perl 周りの話で少し補足を。 資料中の「初心者へのオススメが PoCo::Server::HTTP でパフォーマンスが欲しい人には Sys::Syscall qw/:epoll/」の点。おそらく Perl でも epoll を使えますよというこ
Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の
PoCo::HTTP で Comet チャットサーバを作る - daily dayflower を試してみた。面白い。 ついでに spread を使って、Comet チャットサーバをクラスタリングする実験をしてみる。 POE::Kernel->run(); の前に、PoCo::SpreadClient もセットアップ。 use POE::Component::SpreadClient; POE::Component::SpreadClient->spawn( 'spread' ); POE::Session->create( inline_states => { _start => \&spread_start, _sp_message => \&spread_message, } ); POE::Kernel->run(); sub spread_start { $poe_kernel-
せっかくのイベントドリブンフレームワークな POE ですから Comet でチャットをやってみようかと。ありきたりですが。 POE::Component::* でウェブサーバを立ち上げられるのは現在のところ, POE::Component::Server::HTTPServer POE::Component::Server::SimpleHTTP POE::Component::Server::HTTP の3つがあります。1番目は最近 inactive なのでパス。2番目は「イベントフレームワーク」への馴染みはいいんですが「Simple」じゃなくなってます。3番目はコールバック関数を登録するというお気楽スタイルなんですがちょっと雑な感じ。 今回は楽をするために3番目の PoCo::HTTP を使ってみたいと思います。id:naoya 氏も最近紹介してましたし。 URI の設計指針は, チャ
クローラを作る必要に迫られているので、Crawler Framework の Xangoや、crawlerを試してみたり。 POEを全然使ったことがないせいか、Xangoのほうは最初付属のPODを呼んでも全然分かんなかったんだけど、そこは Plagger::Plugin::Aggregator::Xango とか、t/02-pull.t と t/lib/XangoTest/SimplePull/{Broker,Handler}.pm あたりを読んでがんばる。ていうか POD の SYNOPSYS にすぐ動くサンプルを書いていてほしいと思ったり。あと、公式サイトに書いてある svn://svn.razil.jp/Xango/trunk って SVN レポジトリがアクセスできないけど http://svn.razil.jp/Xango/trunk ならアクセスできる罠。まぁ、最終的には CPA
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く