Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm
NAME HTML::MobileJpCSS - css inliner and converter SYNOPSIS use HTML::MobileJpCSS; my $inliner = HTML::MobileJpCSS->new(base_dir => '/path/to/documentroot/'); $inliner->apply(<<'...'); <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.1) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" l
ClearSilverは超高速なテンプレートエンジンです。 どのくらい速いかと言えば、id:spritlooseさんがベンチマーク(d:id:spiritloose:20060812)を取ってますので、参考にして下さい。 今日そのPerlバインディングをインストールする際にハマったのでメモ。 configure --prefixオプションが結構曲者です。 # ./configure --prefix=/usr --disable-apache --disable-java --disable-csharp --enable-gettextのように、 apache, java, csharpは除外 gettextによる国際化対応は有効 と言う感じでconfigureすると、Makefileのinstallターゲットは、 install: all ./mkinstalldirs $(DESTD
今日はmixi OpenIDという認証サービスが発表され、各所で報じられている。 ミクシィ、認証サービス「mixi OpenID」を提供--「mixi Platform」第1弾 mixiサービス企画部長に聞く、「プラットフォームを開放する理由」 「あなたのマイミクだけコメント可能な掲示板」といったウェブサービスが開発可能になった『mixi OpenID』 「mixiがOpenIDのOPになったからと言って何がどうなるというわけでもないでしょ」と思っていた人も、「マイミクシィ認証」「コミュニティ認証」という2つの仕様には少し驚いただろう。前者は「○○さんとマイミクシィであるか」、後者は「○○というコミュニティに入っているか」をそれぞれ証明するものだ。これらを使えば、単にmixiのユーザが使えるというだけに留まらない、人や関心でのつながりを生かしたアプリケーションを作れることになる。 以下のコ
http://perl-users.jp/nowpast.htmlPerl 5 今昔 の modernが新し過ぎる。単なる流行として好きな人がMooseとか追うのはいいが、Perl文化として Class::Accessor::* とかoldtypeにするのはどうよ?システムって最低3年は使うだろうから、3年間は安定して生き残る技術以外は「これが標準なんだ」って勧めちゃ駄目な気がするのよ。Perlの場合はコミュニティが元気すぎて、3年間安定するもんがないんじゃないかって気がする。だから、「標準」を書籍にすることが難しいんだろうな。確かに、未だにour使わなかったり@ISAにpushしてるコード見るとゲンなりするし、openの引数を3つにするのも理由もあって賛成なのだが、Moose使うよりは自前でblessしたりしてるコードの方がいい気がする。Mooseは覚えても、数年後には知識としては陳腐化
TheSchwartz の worker で、一つの job が worker->grab_for (default 3600) 秒以上掛かる処理をすると、処理中の job を他の worker が掴んでしまう。 具体的には大量のメール送信をしていたんだけど、Data::Valve でスロットリングしてゆっくり送っていたら 1時間以上掛かって、別の worker も同じ job を実行してしまった。結果、同じメールが 2通ずつ出た orz grab_for は job を処理しはじめた worker が、失敗を報告もできないでクラッシュした場合に、別の worker が処理できるようにするもの。しかし送信してしまったメールは取り消せないからな…… package MyWorker; use base qw/ TheSchwartz::Worker /; sub grab_for { 60
昨日のはてなのホットエントリーに『入門ベイズ統計』の読みどころという記事が載っていました。ベイズ理論の人気は根強いですね。 ベースとしての数式は割とシンプルなので、自分で実装してもそれ程手間は掛からないかもしれません。しかし、CPANのモジュールとして提供されているので、そちらを使用するのも良いかと思います。私が知っている所では、Algorithm::NaiveBayesが簡単で使いやすかったです。 昔書いたコードですが、下のサンプルでは簡単なスパムフィルターを作っています。spam.txtとham.txtは、それぞれのコーパスを形態素解析して作った単語のみのリストです。test.txtは、判定したい文章から抽出した単語のリストです。スパムとハムの量を増やせば、これだけでも割と使い物になります。 応用例としては、スパムとハムの2種類のカテゴリだけではなく、複数種類のカテゴリを作ればブログの
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
Selenium IDE で生成したテストケースに従ってWWW::Mechanizeを動かすためのラッパーモジュールMechanizedSelenium(仮称)を作ってみて、どれくらい使えるか試してみました。 背景 スクレイピングはもっと簡単にならなければいけないの最後でちょこっと触れていた、ウェブアプリケーションのテストケースを簡単に生成する Selenium IDE は、ブラウザでクリックしていくだけでデータを抜き出せてしまう Dapper: The Data Mapper と並んで考えさせられたツールです。 一度、ウェブアプリケーションのテストをするために HTTP::WebTest を使ってテストケースを書いたことがありました。しかし、ブラウザをマウスでちょこっとつつくだけの動作をperlで書き直すのは本当に退屈な作業ですし、テストケースを書くこと自体が困難で、アプリケーションにバ
Web Testing with HTTP::Recorder Jun 4, 2004 by Linda Julien HTTP::Recorder is a browser-independent recorder that records interactions with web sites and produces scripts for automated playback. Recorder produces WWW::Mechanize scripts by default (see WWW::Mechanize by Andy Lester), but provides functionality to use your own custom logger. Why Use HTTP::Recorder? Simply speaking, HTTP::Recorder re
2008年07月02日23:00 カテゴリLightweight Languages perl - デフォルト値のperlらしい指定法 Perl Cookbook (English) Christiansen / Torkington [邦訳: Perlクックブック] これでもよいのだけど、さらに恰好つけるとよりperlらしくなるので。 デフォルト値の扱い。 - サンプルコードによる Perl 入門 Scalarによるデフォルト値 sub num{ my $num = shift; # .... } ここは sub num{ my $num = shift || -1; # .... } の方がわかりやすい。0または''を入力値、すなわち非デフォルト値として扱いたい場合のみ、 sub num{ my $num = shift; $num = -1 if not defined $num;
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Perlのhashって相当使ってるけど、中身知らないなー、とふと思い、調べてみたら、こんなページがあった。 http://www.perl.com/lpt/a/679 2002年に書かれたもので、ちょっと古いけれど、読んでいったら、詳しく知りたかったらとりあえずPerl 1.0のhash.cから始めたらいいんじゃないかみたいなことから書いてあって、なるほどと思って読んでみた。短い。 与えられたキーからデータの入っている場所を探すハッシュ関数としては、以下みたいなループ。 for (s=key,i=0,hash = 0; /* while */ *s; s++,i++,hash *= 5) { hash += *s * coeff[i]; } oentry = &(tb->tbl_array[hash & tb->tbl_max]); こんな感じで、キーの文字1文字ずつを使ってcoeffとい
TheSchwartz の worker を Ctrl-C とか kill で止めた場合に、job の処理が半端な状態で終わられると困る、という話。以前 Deamon::Generic で TheSchwartz の worker をデーモン化する(2) - 酒日記 はてな支店 で諦めたんだけど、ちょっと必要に迫られたので考えてみたら一応できたっぽい。 package MyWorker; use strict; use warnings; use base qw( TheSchwartz::Worker ); sub sighandler { warn "caught signal @_\n"; no warnings 'redefine'; *TheSchwartz::work_once = sub { exit }; } sub work { my ($class, $job) = @
MySQLだと問題ないみたい。あと、job の引数に何を渡すかで変わってくるらしい…… [2010-2-16 追記] 追記時点での DBD::Pg と DBD::SQLite の最新版 (DBD::Pg-2.16.1, DBD::SQLite-1.29) では、以下に記述されているメモリリークは解消されています。記事自体は記録の意味も兼ねているので消さずに残しますが、ご注意ください。 ちなみに SQLite 用のスキーマは TheSchwartz 自身に同梱されていて t/schema-sqlite.sql に、PostgreSQL 用のはリポジトリの trunk にあります。doc/schema-postgres.sql 検証用のスクリプトは最後に載せますが、単に client が job を突っ込んで、worker が job を取り出して $job->completed() するだけ
Cache::Memcached::Fastを試す Perlの新しいmemcachedクライアント「Cache::Memcached::Fast」がでていたので試してみた 結論から言うと、これは使えそう。 まず、C::M::Fastはmemcached-1.2.4でサポートされた、append, prepend, cas, gets, gets_multiをサポートする唯一のPerlクライアントです。また、常に問題となるCache分散にKetama consistent hashing algorithmをサポートしているためCacheの組み替えを最小限にしてCacheサーバの追加が行えます。 手元のベンチマークでは50%〜80%、処理によりますが300%以上高速化されてます インストールは普通にCPANから行えます。ただし、memached-.1.2.4が動いていないとmake test
英国放送協会(BBC)がPerl on Railsを名乗るMVCフレームワークを開発したという話が一部をにぎわしていたので、簡単なまとめ。英語で話を追える人は下記を(コメント欄含めて)順に読んでいけばOKです(これ以外にもスラッシュドット(本家)をはじめ、いくつかのソースに情報が分散していますが、必要な流れはだいたいこの三つで把握できるはず)。 http://www.bbc.co.uk/blogs/radiolabs/2007/11/perl_on_rails.shtml http://derivadow.com/2007/11/30/perl-on-rails/ http://iamseb.com/seb/2007/12/perl-on-rails-why-the-bbc-fails-at-the-internet/ さて、本題。2007年11月30日に「BBCが自社フレームワークとして
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
2007年11月07日23:00 カテゴリLightweight Languages perl - Dir::Tree つうのを書いてみた そんなあなたに、こんなモジュールを書いてみた。 tree コマンドが便利 - IT戦記 もっと直感的に(あまり考えずに)、探せるコマンドはないのかなあと思って tree コマンドを使ってみた。使い方は、こんな感じ。 % perl -Ilib -MDir::Tree -e 'print Dir::Tree->new(shift)->tree_cmd(1)' . |-- Changes |-- MANIFEST |-- Makefile.PL |-- README |-- lib | |-- Dir | | |-- #Tree.pm# | | |-- Tree.pm |-- t | |-- 00-load.t | |-- boilerplate.t | |
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く