タグ

perlに関するeagletmtのブックマーク (19)

  • Cache::LRU (a handy and fast in-memory cache module in pure-perl)

    Cache::LRU (a handy and fast in-memory cache module in pure-perl) Last week, after not being able to find a handy and fast cache module, I decided to write one by myself, and the outcome is Cache::LRU. Cache::LRU is an in-memory cache module written in pure-perl. It has no dependencies, and the code is less than 100 lines long. Yet it is faster than other modules as the result of a primitive bench

  • AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったこと

    AnyEvent と Coro を使って、WEB から非同期に並行ダウンロードするプログラムの習作を作ってみた。http://kaede.to/~canada/doc/wiser-clawer-sample-using-coroをだいぶ参考にさせてもらっている。紹介されている非同期クローラはとてもいいのだが、自分がやろうとしていることを考えると、次の点がちょっと気になった。 対象 URI のリストは一千万オーダになる あらかじめメモリ上に列挙しておいていいのだろうか URI の数分のスレッドを起こしていいのだろうか 名前解決すると同一 IP アドレスになるホストが少なくない 同時リクエスト制限をかけるのはホスト名ではなく IP アドレスがいいのではないだろうか ということで、次のような特徴を持つスクリプトを書いてみた。 最大同時接続数の制御にはセマフォを使うのではなく、その数 (20 なら

    AnyEvent + Coro での並行ダウンローダの習作 - 昨日知ったこと
  • おさかなラボ - Coroでより賢い非同期クローラを作る

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

  • おさかなラボ - Coroの並列をあっさり理解するための3つのサンプルスクリプト

    Coroが非同期にルーチンを扱う(コルーチンを扱う)モジュールだということはご存知だと思うが、いまいちピンと来ていない人も多いのではないだろうか。これは、1つにCoroやCoro::Introの例題が悪すぎると思う。例えば、Coro::Introのサンプルスクリプトはこうだ。 use Coro; async { print "async 1\n"; cede; print "async 2\n"; }; print "main 1\n"; cede; print "main 2\n"; cede; このスクリプトは確かに面白い挙動をするが、スレッドを実現してるんだよと言われるとちょっと「?」である。こんなのgoto文でできるじゃんみたいな。そしていきなりセマフォやチャネルの話に飛んでしまい、肝心の「Coroはスレッドが実現できるんだよ」というところが分かりにくい。そこ

  • Sunaba: Plack/PSGI in the cloud

    my $app = sub { [ 200, [ "Content-Type", "text/plain" ], [ "Hello World" ] ]; }; Sunaba is an experimental service powered by Plack, Twiggy and Tatsumaki running on a linode VPS box of Tatsuhiko Miyagawa. Sandbox perl environment is powered by Dan Kogai's lleval Ajax API and all restrictions apply. Services can be interrupted, shutdown or blocked at any time at their own will. NO WARRANTY. Use at

  • "cpanm -l"するとき"--no-uninst-shadows"で元々あるモジュールが消えないようにする - すぎゃーんメモ

    ※追記しました! 最新版(1.0005以降)では起こりません とっても便利なcpanm。 "-l"オプションを使うと、local::libのように指定した任意のPATHにインストールできる。 けど気をつけないといけないことに、これをやると もともと入っていたモジュールが消えちゃったりする。 例えばperlbrewでデフォルトの場所にモジュールをインストールしていて $ perl -MV=AnyEvent AnyEvent /Users/sugyan/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/AnyEvent.pm: 5.271となっていて、「ちょっと古いバージョンのを"$HOME/locallib"に入れて使いたい」と思って $ cpanm -l $HOME/locallib http://search.cpan.org/C

    "cpanm -l"するとき"--no-uninst-shadows"で元々あるモジュールが消えないようにする - すぎゃーんメモ
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • AnyEvent::HTTPでCookieを扱う - punitan (a.k.a. punytan) のメモ

    ここ数週間ずっと悩んでいたことがようやく解決した。ドキュメントも付けておいたのでgitsからとってきて適当にやってください。

    AnyEvent::HTTPでCookieを扱う - punitan (a.k.a. punytan) のメモ
  • Perl 5.13.2 がもたらした package NAMESPACE BLOCK 構文があたえるもの - tokuhirom's blog

    Perl 5.13.2 がもたらした package NAMESPACE BLOCK 構文があたえるもの 開発版の Perl 5.13.2 がリリースされたが、5.13.2 の目玉はなんといっても package NAMESPACE BLOCK 構文だろう。 use 5.13.2; use warnings; package Point { use Moose; has 'x' => (is => 'rw', isa => 'Int'); has 'y' => (is => 'rw', isa => 'Int'); __PACKAGE__->meta->make_immutable; no Moose; }; のように、パッケージを宣言することができるようになった。 この構文は非常に大きい変化をもたらす。 1 ファイルに複数のクラスを書くことが苦でなくなる。package NAME BOC

  • Perl 5.13.2 released! - Islands in the byte stream (legacy)

    Perlの開発版である5.13.2がリリースされた。 http://search.cpan.org/dist/perl-5.13.2/ 今回はかなり意欲的な変更を含んでいる。 文字列置換における/r修飾子の導入。s/foo/bar/r は元の文字列を変更せず、置換後の文字列を返す。これは特に、mapと共に使用するときに威力を発揮する*1 ついにpackage宣言がblockを取れるようになった(!) これは5.14が楽しみだ*2。 See also perl5132delta. *1:今までは map { my $s = $_; $s =~ s/foo/bar/; $s } @array としなければならなかったところを、map { s/foo/bar/r } @array とするだけでよくなる *2:しかし、5.14がメジャーになる日が来るのかどうかは疑問の余地がある。

    Perl 5.13.2 released! - Islands in the byte stream (legacy)
  • 第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (2) | gihyo.jp

    Plack─⁠─PSGIユーティリティ PSGIのおかげで、フレームワークはCGIやFastCGI、mod_perlといった環境の差異を吸収するためのコードを書く必要はなくなり、PSGIのインタフェースだけを実行すればよくなりました。実際に多くのフレームワークがすでにPSGIをサポートしていますが、さて、そうしたアプリケーションをどうやって動かせばよいのでしょうか。 Apacheなど既存のWebサーバでPSGIアプリケーションを動かすには、CGI、FastCGI、mod_perlなどのインタフェースをPSGIに変換する必要があります。また、PSGIをネイティブで実行できるPerlベースのHTTPサーバもほしいところです。 Plackはそうした要件を満たすためのユーティリティで、リファレンス実装としてのPSGIサーバやそれらへのアダプタ、周辺ライブラリや後述するミドルウェアが含まれています。

    第1回 PSGI/Plack―フレームワークとサーバをつなぐエンジン (2) | gihyo.jp
  • CodeRepos::Share – Trac

    typester: なぜか二重にarray refっててSkypeからircのコンタクトリストを更新するところが全く動いてなかったのを修正

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

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

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

    Diligence,Patience,and Humility 努力、忍耐、謙遜 Larry Wall ラリー・ウォール Translation by Akira Kurahone 我われのPerlコミュニティでは、格言を好んで使う。そういった格言の一つに、「物事のやり方は一つではない」と言うのがある。この格言はPerlコミュニティの真理である。また、Perlそのものにも当てはまる。そして、書の各章で明らかにされるように、オープンソースコミュニティにも当てはまる。私は、ここでオープンソースの効用のすべてを語るつもりはない。それは、英語が役に立つ理由を説明しようとするようなものである。ただ、Perlの現状と今後についてなら多少は語れると思う。 こんな格言もある。「プログラミングの三大徳目は、無精、短気、傲慢である」。Perlの偉大なプログラマたちは、それらの徳目を信奉している。オープンソー

  • Perl code - 50 lines - codepad

    eval eval '"'. ('['^"\.").( ('[')^ '(').('`'|'%'). ('{'^'['). ('['^'(').('['^'/' ).('['^')' ).('`' |')').('`'|'#').('[' ^'/').';'.('!'^'+'). ('['^'.').('['^"\(").( '`'|'%').('{'^"\[").( '['^',').('`'|'!').('[' ^')').('`'|('.')).( '`'|')').('`'|'.').(('`')| "'").('['^'(') .';'.('!'^'+').('!'^'+').('[' ^'+').('['^')' ).('`'|')').('`'|'.').('['^'/'). ('{'^'[').'\\'. '"'.('`'^'(').('`'|'%').('`'|',').

  • 第12回 POE:「Perl萌え~」の略ではなく | gihyo.jp

    あだ名の多さは人気の証明? POEという名前にはあきれるほど多くの寓意がこじつけられています。もともとはPerl Object Environment「Perlのオブジェクト環境」の頭文字を並べたものですが、POEの公式サイトを見てみると、Edgar Allan POE「エドガー・アラン・ポー」に始まり(そう、POEは「ポエ」ではなく「ポー」(⁠ないし「ポゥ⁠」⁠)と読みます⁠)⁠、Parallel Object Executor「オブジェクトの並列処理機⁠」⁠、Pathetically Over-Engineered「涙がちょちょ切れるほど作り込みすぎた⁠」⁠、Perl Obfuscation Engine「Perl難読化エンジン⁠」⁠、Perl Objects for Events「イベント用Perlオブジェクト⁠」⁠、Persistent Object Environment「永続オ

    第12回 POE:「Perl萌え~」の略ではなく | gihyo.jp
  • 2009-07-19

    http://d.hatena.ne.jp/TAKESAKO/20090716/1247750262 via http://d.hatena.ne.jp/sugyan/20090717/1247842750 を見て、なんか書いてみるかなぁと。下記3つのコードは一定の期間をおいて SEGV するコードなのですが、共通のテーマに基づいて書かれてます。 SEGV の理由は何でしょうか。 一個目。邪道。でもゴルフでたまに使えるんだよね。 ''=~('(?{'.('_/_ '^';@{:').'})')二個目。一番短いけどこの挙動は長い間知らなかったので結構わからん人多いんじゃないかな。 $_=~'(?{$_=~""})'三個目。読むのはそんなに難しくないけど、書くのは結構大変。新しく書こうと思ったけど結局使い回しでいいやという。 ($;=<<'' _(_@{**+(\$;=<<'' $; )=~(

    2009-07-19
  • Imager::AnimeFace - anime face detection demo

    Imager::AnimeFace - anime face detection demo minimum face size px (min:16px, default:42.592px) Image may be subject to copyright. Below is the image at: img URL: miku nagato faye konachan line art etc.. 2009 anime.udp.jp

    eagletmt
    eagletmt 2009/04/14
    アニメ顔検出デモ
  • はてなダイアリーライター(略称:はてダラ)

    はてなダイアリーライター(はてダラ)は、 ローカルに作った 2004-08-19.txt のようなテキストファイルを、 はてなダイアリーの日記として自動書き込みするコマンドラインツールです。 ご連絡: (2009-09-12) スクリプトをGithubで管理はじめました。(hatena-diary-writer) ご連絡: (2009-08-04) はてダラがhttpsなページでうまく動かない 目次 詳細目次 はじめに インストールと基的な使い方 「はてダラ」スクリプト体のダウンロード コマンドラインオプション 設定ファイル ちょっとしたコツ よくある質問(FAQ) 「この環境で動きました」情報 関連ツール: はてダラスプリッタ(hws.pl) 更新履歴 関連リンク 作成メモ ぜひ、感想をお送りください 詳細目次 詳細目次 はじめに インストールと基的な使い方 「はてダラ」を動かすの

    eagletmt
    eagletmt 2009/04/13
    ローカルに作ったテキストファイルからはてダに投稿するPerlスクリプト
  • 1