非同期で全文検索エンジンgroongaを叩く AnyEvent::Groonga 書いたよ

要するにAnyEventでgroongaを使いたかったのでperlモジュール書きました。んでもって久々にCPANにアップしましたよ、という告白です。 AnyEvent::Groonga - Groonga client for AnyEvent http://search.cpan.org/~miki/AnyEvent-Groonga/ 非同期でガンガン全…

perlでデーモン書く時は素直にMoose化しておくのもいいかもな

今更Mooseの話題かよ、と思われることでしょうが、自分は常に流行の3年遅れぐらいを全力で追いかけるタイプなので、自分にとっては今が旬。というわけで、Moose的なはなしを書きます。突然ですが、現役バリバリのperl使いのみなさんに質問です。POEやらAnyE…

「みんなの検索」リリースしました

昨日、仕事で開発をすすめていた検索機能をリリースしたので、ちょっと紹介します。 「gooウェブ検索」で、自分に似た検索をしている人たちの関心事が見える機能「みんなの検索」を提供開始 gooのweb検索で適当なキーワードで検索すると、結果表示面の一番し…

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

AnyEventを使う場合に、どうしてもブロッキングしてしまうような処理があるとして、それを外部プロセスとして切り出しつつ、メインのイベントループの中に取り込みたいんだよな、と。そんな時はAnyEvent::Workerがよさそうです。 AnyEvent::Worker - Manage …

perlで高速な類似検索エンジンを構築できるようにしてみた

すみません。タイトルはやや釣り気味です。類似検索エンジンというか、そのアイデア程度の話なんですが、以前から考えていた類似検索エンジン風のネタがあったので、ちょっとperlで書いてみたので、そいつを晒してみます。 Luigi https://github.com/miki/Lu…

行列分解ライブラリredsvdで潜在的意味インデキシングを試してみたの巻

久しぶりに自然言語処理的な話です。すこし前にPFIの岡野原さんが公開されたredsvdを試してみました。 redsvd は行列分解を解くためのC++ライブラリであり、特異値分解(SVD)、主成分分析(PCA)、固有値分解などをサポートしています (中略) 例えば、行と列…

Hadoopに入門してみた - セットアップからHadoop Streaming まで -

大規模データを処理する必要が出て来たので、Hadoopを導入してみることになりました。以下、導入メモです。 セットアップ 以下のような構成で試してみます。環境はCentOSです。 マスター(host001) ━┳ スレーブ(host002) ┣ スレーブ(host003) ┣ スレーブ…

Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件

JavaでRijndael(AES)で暗号化されたデータをPerlで復号化しようと思います。「暗号方式と秘密鍵だけ聞いておけば簡単にデコードできるっしょ、余裕っしょ」とタカをくくっていたら、思いっきり天罰がくだりました。久しぶりにハマったのであります。 ちゃん…

遺伝的アルゴリズムを楽しく理解できるサイトをまとめてみた

女優の菊川怜さんが学生時代に研究テーマにしていたという事で有名な「遺伝的アルゴリズム」ですが、名前の仰々しさとは裏腹に、意外と直感的に理解できる取っ付きやすいアルゴリズムだったりします。それにしても菊川怜さん、美人ですねー。こんな先生にイ…

perlでテトリス!

偶然おもしろいモノを発見しました。コンソールで遊べるperlテトリスです。スクリーンショットとってみました。 なんと、macbookのターミナル上でカラフルなテトリスが元気よく動いてます! それにしても、俺テトリス下手だな。。。ってのはおいといて、ソー…

1枚のスクリプトに全てをまとめてくれるApp::FatPacker

App::FatPackerとは、依存モジュールを全て1つのファイルに押し込んでパックしてくれるライブラリです。CPANにあります。 pack your dependencies onto your script file http://search.cpan.org/~mstrout/App-FatPacker-0.009001/ 依存モジュールを解決し…

知ってそうで意外と知られていないperlの小技 10選

意外と知られていないperlテクってのが、意外とあるもんですね。 最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。どれも最新のモダパ的なモノではないけども、知っておくと地味に便利かもしれないノウハウです。中級レベル以…

perlXSでSTLのstd::mapを使ってみる

ここのところC++でコードを書いているんですが、やっぱりそいつをperlから使いたい。 ということでXSについてお勉強中です。ごく簡単なものなら書けるようになってきましたが「perlから渡したハッシュをC++側でstd::mapとして受け取りたい」といった特殊なケ…

多次元尺度法で遊んでみる(オレ流 R入門)

多次元データをクラスタリングする際に、それらのデータを2次元データに落とし込んで可視化させたいことがあります。そんな時に便利なのが「多次元尺度法」という手法です。個々のデータ間の距離/類似度が分かっている場合に、それらのデータの座標を求めて…

動的計画法とナップサック問題を学びたい人におすすめのサイト

組み合わせ最適化の手法として「動的計画法」というモノがあります。wikipediaから抜粋 動的計画法(どうてきけいかくほう、英: Dynamic Programming, DP) コンピュータ科学の分野において、ある最適化問題を複数の部分問題に分割して解く際に、そこまでに…

bayonやCLUTOが爆速な理由

クラスタリングツールbayonを使っていて、常々「どうしてこんなに高速に処理できんのかなぁ」と疑問に感じていました。repeated bisectionという手法自体がk-means法などと比べると効率がいいのですが、それにしても、それだけでは説明がつかないほど爆速な…

mysqlで複数行にまたがるカラムをCSVフォーマットで出力する方法

地味なネタですが、今日はまってしまったのでメモっておきます。とあるとmysqlのデータをselect * from xxx into outfileで外部ファイルに出力したいとします。 テーブルのスキーマは「URL、タイトル、 HTML本体」という構成だとしましょう。HTML本体の部分…

onUnloadでクリックトレース

メリークリスマス! 聖なる夜に不慣れなjavascriptをいじってる豚野郎です。 「普段からwebビーコンでユーザの閲覧ページの追跡ばかりしている変態くん。本当はそのユーザが飛んでいった外部ページのURLも知りたいんじゃないのか?ん?我慢すんなよユー。」…

噂のnode.websocket.jsでサーバサイドJSとHTML5 WebSocketを体験してみたの巻

WebSocketを体験してみたいのと、サーバサイドJSを試したいのと、さらにはmac版のChromeをインストールしてみたという条件が重なり、これはもう深夜だけどnode.websocket.jsを試してみるしかないな、という状況に追い込まれました。 構成 最近あたらしく調達…

macbook airにvirtualboxでwindowsをインストールする方法

普段持ち歩くノートPCをvaioからmacbook airに変えました。いやっほう!!うれしいナ。ですが職場ではwindowsなので、macbookだと時折不便なこともあるんですよね。なのでvirtualboxでwindowsもセットアップしておくことにしました。「余裕でしょ簡単でしょ…

クラスタリングツールbayonを便利に使うText::Bayonを書きましたよ

JPerl Advent Calender 2009 のhacker trackに「Perlではじめるテキストマイニング」というタイトルで記事を書きました。テキストマイニング系のモジュールを色々紹介しているので、興味ある人はぜひご覧ください。さてさて、記事の最後の方で軽くふれました…

ギレンも登場!BM25なPerlモジュール書いたよ

久しぶりに何か書きます。情報検索のアルゴリズムで「BM25」というものがあります。 何年か前に某研究所に遊びに行ったときに「TF/IDFより精度のいいやつ」みたいな感じでかなりアバウトに教えてもらいました。 その時は「名前だけでも覚えて帰ろう」と思っ…

websequencediagrams をPerlでごにょごにょ

http://www.websequencediagrams.com というサイトを知ってますか?ZIGOROuさんがブログで使っていたので知ったんですが、実に便利っぽいです。専用のダイアグラム構文を書いてサイトにHTTP POSTするとPNGやPDFでシーケンス図を生成して返してくれる代物です…

Yahoo-APIを無制限に叩くためのモジュール書いた

ふと気づくとYahooの「ウェブ検索API」の利用制限が変わっていて、今までは同一IPからの利用は5万回/24時間でしたが、10月13日から同一appidからの利用が5万回/24時間となっていました。http://developer.yahoo.co.jp/newslist/1#64つまりappid…

ローカルポートを食いつぶしていた話

ここのところ、お仕事で管理しているシステムで、夜中に負荷が急上昇する事象が発生しており、夜な夜な対応に追われていました。 (このブログ書いている今も、負荷がじわじわ上昇中なんですが・・・)で、いろいろと調査した結果、ようやく糸口がわかってき…

AnyEvent::Intro チョー訳 その2

チョー訳その2です。今回はCondition Variablesとmain loop、それとTimer関連の説明部分を訳します。 前回の区切りの場所がイマイチ悪かったんですが、今回のところまでで「Introduction to Event-Based Programming」のパートが終わります。なお部分的にか…

AnyEvent::Intro チョー訳 その1

最近perl界隈で話題のAnyEventについて、今のうちに習得しておくとid:miyagawaみたいにクールになれて、もしかしてモテるのではないかと思い、よっしゃ、勉強してみるか、ということでドキュメント読み出したんですが、、えらいボリュームですね。心がポッキ…

gooの検索キーワードをリアルタイムで生☆ストリーム!

先日のYAPCのLTで時間切れで紹介できなかったんですが、本日gooでリアルタイムwebなサービスを3本リリースしました。 サーバ側にはperlのXMLSocketサーバHoppyを使っています。クライアントはFlashです。 検索キーワード 生☆ストリーム http://labs.goo.ne.j…

YAPC::Asia 2009 でLTしてきたヨ(でも時間切れ★)

9月10日、11日と開催されたYAPC::Asia 2009に参加してきました。今回はid:ZIGOROuとid:lestrraからお誘いをいただき、スピーカーとして参加させていただきました。ありがとうございます。それにしてもLTの難しさを実感しましたです。はい。冒頭から笑いを取…

最速ブログウオッチャー

時代は「リアルタイムweb」ということで、強引にリアルタイムっぽいアプリを作ってみました。題して「最速ブログウォッチャー」です。 「最速」ってついてますけど、本当はそんなに速くないです。なるはやって言うほうが正しいけど、聞こえが良いので最速っ…