タグ

perlに関するcavoriteのブックマーク (58)

  • 第22回 Coroを使ったやさしいクローラの作り方(3) | gihyo.jp

    (1)はこちら、(⁠2)はこちらから。 並列・分散処理のためのクローラ ある程度大規模なクローラを作る場合は、一定時間内になるべく多くのURLから効率的にデータを収集する必要があります。接続先のホストごとに同時接続数やウェイトなどの配慮をしつつ、全体としては大量のリクエストを同時に処理する必要があります。検索エンジンのためのクローラ、定期的に同じURLにアクセスする必要がある更新チェックやフィードアグリゲータなどは、特に該当するでしょう。 Perlで高性能なクローラを書く場合の選択肢は2つあります。一つはforkによるマルチプロセスによるもので、Parallel::ForkManagerやParalell::Preforkを使うケースや、ジョブキューのためのフレームワークを使ったワーカがこれに該当します。もう一つはAnyEventやCoroを使ったI/O多重化によるアプローチです。筆者が好

    第22回 Coroを使ったやさしいクローラの作り方(3) | gihyo.jp
  • Hatena-Textbook/oop-for-perl.md at master · hatena/Hatena-Textbook · GitHub

    この講義の目的 明日以降、Perlの言語自体にはまらない 今日、いろいろやって、なるべくはまってください 疑問があったらどんどん質問してください 目次 Perlプログラミング勘所 Perlによるオブジェクト指向プログラミング テストを書こう ヒント 課題について Perlプログラミング勘所 質問 Perlでプログラミングをしたことがありますか? はじめに 事前課題 http://github.com/hakobe/Sorter 前提 はじめてのPerl、続はじめてのPerlに目を通している 一度はPerlでオブジェクト指向プログラミングしたことがある 事前課題でやっているはず Perlの良いところ CPAN やりたいことはすでにモジュール化されてる それCPANでできるよ 表現力が高い TMTOWTDI (やりかたはいくつもあるよ!) 実際に使われてる はてな/DeNA/NHN/mixi

  • PerlAndLWP

    ※[文字列1, 文字列2...]は、無名配列 * 7.2.1. Start-Tag Tokens $token->[0] == "S"のときトークンは、 Start-tag ["S", $tag, $attribute_hash, $attribute_order_arrayref, $source] $tag タグの名前、小文字 $attribute_hashref $attribute_order_arrayref このタグのアトリビュートをエンコードするハッシュへのリファレンス アトリビュートのなまえ の小文字標記がハッシュへのキーとなる $attribute_order_arrayref 配列のアトリビュート名(小文字)へのリファレンス $source オリジナルの HTMLソース <IMG SRC="kirk.jpg" alt="Shatner in r&ocirc;le of

  • 最近のPerlのデバッグ - ✘╹◡╹✘

    Perlよく分からないけど最近こうやってデバッグするようにしてる。 Data::Printer これまで値の確認にはData::Dumperを利用していたけど、程良く整形して色付けしてくれるData::Printerを使うようになった。use Data::Printerの代わりにuse DDPというエイリアスでも利用できる。useするとpという整形出力用メソッドを提供してくれる。Rubyで言うと、ppを利用していたのがap(=awesome_print)を利用するようになったというイメージ。これは適当にSelenium::Remote::Driverクラスのインスタンスをpメソッドで出してみた図。 Carp::REPL REPLはコード中で処理を止めてPerlの対話環境を開くやつ。これまで使ってなかったけど、良さそうという話をTLで見かけたので、適当にData::Printer入れて値確認

  • サイトのクローリングにはScrappyがすごくいいかもしれない - Perl勉強メモ アルパカDiary出張版

    クローリング楽しいですよね! perlで高速にクロールしたいのであればGunghoなど使うのがいいかもしれませんが、 基手軽にやりたいことが多いので WWW::Mechanize+Web::Scraper という組み合わせでクロールするのが定番でした。 しかしたまたま Scrappy を知り、 少し触ってみたところすごくいいのではないか!?と思い 記事にしてみました。*1 基系(crawlコマンドを利用する場合) my $scrappy = Scrappy->new; $scrappy->crawl('1.クロールするルートURL', '2.URLにマッチするパス' => { '3.コンテンツにマッチするxpath or CSSセレクタ' => sub { my ($self, $item) = @_; # 4.キューに追加 $self->queue->add($item->{href

    サイトのクローリングにはScrappyがすごくいいかもしれない - Perl勉強メモ アルパカDiary出張版
  • Perl=>WWW::Mechanizeでの日本語の扱いでつまづき、解決した件。 - Perl楽しいから好き

    WWW::Mechanizeを使いこなしたい オライリーの『SPIDERING HACKS』を買ってからというもの、「MADにWEBの情報を集めて整理してエグイ感じで発信してやるぜ、グヘヘ」と思っていたが、いまいち進んでいない。 一番の原因は、日語マルチバイトの壁。 使っていても「Wide Characterうんたら」というエラーが出たり、文字コードの扱いがうまくいっていなくて欲しい結果が得られない。 Perlモチベーションが高まってしまった今日、久しぶりにMechを使ってみた。 やろうとしたことは、非常にシンプル。 (1)ターゲットURLにアクセス (2)URL内のリンクを辿ってページ遷移 (3)ページ遷移先のコンテンツを表示する ポータルみたいなのを作るベースとしての動作確認のつもりで行った作業。 #!/usr/bin/perl # # Mechでスクレイピング♪(use encod

    Perl=>WWW::Mechanizeでの日本語の扱いでつまづき、解決した件。 - Perl楽しいから好き
  • Proxy経由でLWP::UserAgentを使う - JPerl Advent Calendar 2009

    Proxy経由でLWP::UserAgentを使う - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? こんにちは!好きな寿司ネタは甘エビのkamipoです。 今日はProxy経由でLWP::UserAgentを使う方法を紹介したいと思います。 クローラやWeb APIなどを扱うモジュールの内部で必ずと言っていいほど使われているHTTPクライアントのLWP::UserAgentですが、世の中には色々な事情でHTTPリクエストするのにProxyを経由しなければいけない環境の人がいるんじゃないかと思います。 まず、LWPとCrypt::SSLeayの最新版をCPANからインストールしておきましょう。 % cpan LWP Crypt::SSLeay LWP::UserAgentでProxyを指定するには以下の

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

    そろそろ(いまさら)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から引用。 こ

  • おさかなラボ - 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はスレッドが実現できるんだよ」というところが分かりにくい。そこ

  • String::Dictionary - naoyaのはてなダイアリー

    String::Dictionary という Perl のライブラリを作ってみました。 http://github.com/naoya/perl-String-Dictionary/tree/master String::Dictionary は検索エンジンその他を作る時に必要になる「辞書」のためのデータ構造 + API です。辞書は単語の集まりですが、これを配列やハッシュなどで持つのではなく、単語をすべて繋げた一つの大きな文字列として保持することでメモリ領域を節約したものです。単語は単に文字列連結で持つだけでなく、Front Coding で圧縮しています。以下簡単な解説です。 辞書は例えば [0] ・・・ jezebel [1] ・・・ jezer [2] ・・・ jezerit [3] ・・・ jeziah [4] ・・・ jeziel ...という風に単語を配列で持つことで実現でき

    String::Dictionary - naoyaのはてなダイアリー
  • PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog

    サボっていた早朝ジョギング@駒沢公園を再開して2週間たち、やっと抜かれる数より抜く数の方が増えてきたmikioです。今回は、PerlRubyのハッシュの代用としてTokyo Cabinetを使うことでメモリ使用量を激減させられることを説明します。 抽象データベースAPI Tokyo Cabinetには抽象データベースという機構があり、先日、そのPerlRubyのバインディングをリリースしました。それを使うと、各種言語のハッシュとほぼ同じような共通したインターフェイスで、以下のデータ構造を利用することができます。 オンメモリハッシュ:各種言語に標準のハッシュと同じく、メモリ上でkey/valueの関係を表現する。 オンメモリツリー:メモリ上の二分探索木としてkey/valueの関係を表現する。 ファイルハッシュ:いわゆるDBMとして、ファイル上でkey/valueの関係を表現する。 ファ

    PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog
  • WindowsでPerlを使うもんじゃない

     WindowsPerl 5.8/5.10を使うモンじゃない 2008.01.17 3008.02.13改版  長い間に,私はPerlを使うときに次のようなテンプレートを使うようになっていた。 #!perl # utf8でセーブ # --------------------------------------------------- # @ARGV = map { decode('cp932',$_) } @ARGV ; # --------------------------------------------------- # opendir(D,encode('cp932',"表")) ; # @nodes = map { decode('cp932',$_) } readdir(D) ; # closedir(D) ; # -----

  • perl開発に便利なemacs設定 - HK's Weblog

    perl気で勉強しようと思い、emacsを使った便利な設定をwebからリストアップしてみた。 perltidy インデント整形ツール。 選択したリージョンを一気に整形してくれるので、昔誰かが作ったインデントなしのプログラム等を一気に整形してくれる。 (defun perltidy-region () "Run perltidy on the current region." (interactive) (save-excursion (shell-command-on-region (point) (mark) "perltidy -q" nil t))) (defun perltidy-defun () "Run perltidy on the current defun." (interactive) (save-excursion (mark-defun) (perltidy-r

    perl開発に便利なemacs設定 - HK's Weblog
  • local-lib-2.000029

    The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

    local-lib-2.000029
  • local-lib-1.008009

    The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

    local-lib-1.008009
  • otsune's FreeBSD memo :: ユーザー領域にCPANをインストールする方法

    FreeBSD Tips and Memo (Jail, ports, etc.) http://www.otsune.com/bsd/ ユーザー領域にCPANをインストールする方法 Last updated $Date: 2011/03/22 06:19:28 $ 追記 いまは local::lib (devel/p5-local-lib) を使えば下記の設定と同じ事が出来ます。そのモジュールを使う事を強くお勧めします。 追記2 さらに今時は cpanm (devel/p5-App-cpanminus) をインストールしても同様のことが出来ます。 最近は local::lib を直接つかわないでもいきていけるという話 - TokuLog 改メ tokuhirom’s blog CPANとは? CPANはComprehensive Perl Archive Networkの略で、Perl

  • Perlメモ/日本語の扱い - Walrus, Digit.

    Perlで日語を使用するとき、正しく動かなくなる代表的なケースは次の2点です。 日語を扱う時、文字コードを意識していない。 正規表現で、日語の文字列を使うとエラーが出る。 日語を扱う時には、文字コードを意識する必要があります。 代表的な文字コードには「7ビットJIS」「SJIS(シフトJIS)」「EUC(日語EUC)」「UTF8(Unicode)」があります。 厄介なのは、同じ言葉でも、文字コードによってコンピューター内部での表現が違うことです。 例えば、WebブラウザからSJISで送られてきた「塚」という言葉と、EUCコードのスクリプト中で設定した「塚」という言葉を比較すると「別物だよ」という結果が出ます。 こうした問題が起きないように、普通は、以下のことに気をつけてスクリプトを作ります。 スクリプトを書くときに、どの文字コードを使うか決めておく。 データの入出力(CGIの

  • Perl5.8 の UNICODE 対応

    perl は 5.8 から Unicode(utf-8) がサポートされました.5.6 でも Unicode に対応はしていましたが,ぜんぜん使い物にならず,ようやく 5.8 でまともに使えるようになったということです.ただせっかく使えるにもかか わらず perldoc などを見てもイマイチ使い方がわからないので,独自にまと めてみたのがこのページです. 誤った書き方や勘違いをしてい ることもあるので,形式的ですがこのページの内容は無保証です. 内容 文字コード変換 perlIO jperlからの移行 UTF-8フラグ 文字コード自動判別 Unicode Standard Unicode 正規化 その他 参考資料 文字コード変換 とりあえず perl5.8 で新しく組み込まれた機能を見るために,euc-jp から shift_jis への変換スクリプトをいくつか載せます. openを利用し

  • Perl-5.8 MEMO

    Perl-5.8 覚え書き Last Updated at $Date: 2005/12/04 04:00:59 $. このページは,Perl-5.8.2 を使う上で困ったことなどの覚え書きです. 日語を含むスクリプトを書く 日語 EUC でスクリプトを書く UTF-8 でスクリプトを書く 日語を含むファイルを開く 連想配列で日語を使う 日語を含む正規表現 文字コードの自動判定 古い Perl でも実行できるように書く 未解決の問題 日語を含むスクリプトを書く Perl-5.8.x で日語を扱うスクリプトを書く場合,大きく2通りの方法があります. 日語 EUC でスクリプトを書く. UTF-8 でスクリプトを書く. どちらの方法でも, (1)ファイル入出力, (2)データベースアクセス, (3)プロセス間通信の3つに気をつけて, 明示的にバイト列を文字列に変換したり,また逆

  • Emacs-EPL-0.7

    The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

    Emacs-EPL-0.7