タグ

ブックマーク / download-takeshi.hatenablog.com (14)

  • perlでデーモン書く時は素直にMoose化しておくのもいいかもな - download_takeshi’s diary

    今更Mooseの話題かよ、と思われることでしょうが、自分は常に流行の3年遅れぐらいを全力で追いかけるタイプなので、自分にとっては今が旬。というわけで、Moose的なはなしを書きます。 突然ですが、現役バリバリのperl使いのみなさんに質問です。 POEやらAnyEventやらでちょっとしたアプリケーションサーバを書く場合、みなさんはどうやって「デーモン化」してますか? 自分はもう何回もこの手のものを書いてきたつもりですが、実は未だにベストな手法を編み出せてません。。。 App::DaemonやDaemon::Genericあたりでなんとなく自分流な形を模索した時期もありましたが、結局どれも面倒くさくなって、最近では「もう nohup perl hoge_server.pl & でいいじゃん」みたいな。「止める時は pkill -f hoge_server でいいじゃん、文句アッカ」みたいな

    perlでデーモン書く時は素直にMoose化しておくのもいいかもな - download_takeshi’s diary
  • perlで高速な類似検索エンジンを構築できるようにしてみた - download_takeshi’s diary

    すみません。タイトルはやや釣り気味です。 類似検索エンジンというか、そのアイデア程度の話なんですが、以前から考えていた類似検索エンジン風のネタがあったので、ちょっとperlで書いてみたので、そいつを晒してみます。 Luigi   https://github.com/miki/Luigi 類似検索なのでLuigi。ルイージとか読みたい人はそう読んじゃっても良いです。(冷) 考え方と仕組み 類似文書の検索、となりますと一般的には超高次元での空間インデックスとかが必要になります。 昔からR-TreeやSR-Treeなど、いろいろと提案されていますが、より高次元になると「次元の呪い」によりパフォーマンスが出なくなる、なんて言われていますね。 そこで最近ではLSHに代表されるような、より高度な「近似」型のインデキシング手法が人気を集めているようです。 で、今回考えたLuigiも実は近似型のインデッ

    perlで高速な類似検索エンジンを構築できるようにしてみた - download_takeshi’s diary
  • Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件 - download_takeshi’s diary

    JavaでRijndael(AES)で暗号化されたデータをPerlで復号化しようと思います。 「暗号方式と秘密鍵だけ聞いておけば簡単にデコードできるっしょ、余裕っしょ」とタカをくくっていたら、思いっきり天罰がくだりました。久しぶりにハマったのであります。 ちゃんと確認しておくべきだった情報 まずは暗号方式と秘密鍵だけでなく、以下の情報をしっかりと確認しておく必要アリでした。 暗号アルゴリズム 秘密鍵 秘密鍵の長さ ブロック暗号化モード IV(Initialization Vector:初期化ベクトル) padding方式 暗号のことちゃんと勉強した事がないので、なんだかよくわからんけど、必要らしい。 せめて事前にここらへんを読んで勉強しておけばよかった。 ぱせらんメモ http://d.hatena.ne.jp/pasela/20100612/crypto DESに代わる次世代暗号「AES

    Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件 - download_takeshi’s diary
  • perlでテトリス! - download_takeshi’s diary

    偶然おもしろいモノを発見しました。コンソールで遊べるperlテトリスです。 スクリーンショットとってみました。 なんと、macbookのターミナル上でカラフルなテトリスが元気よく動いてます! それにしても、俺テトリス下手だな。。。 ってのはおいといて、ソースを見てみましょう。難読化されてます。 #!/usr/bin/perl $_='A=15; B=30; select(stdin); $|=1; select(stdout);$|=1; system "stty -echo -icanon eol \001"; for C(split(/\s/,"010.010.010.010 77.77 022.020.020 330.030.030 440.044.000 055.550.000 666.060.". "000")){D=0;for E(split(/\./,C)){F=0;for

    perlでテトリス! - download_takeshi’s diary
  • 1枚のスクリプトに全てをまとめてくれるApp::FatPacker - download_takeshi’s diary

    App::FatPackerとは、依存モジュールを全て1つのファイルに押し込んでパックしてくれるライブラリです。CPANにあります。 pack your dependencies onto your script file http://search.cpan.org/~mstrout/App-FatPacker-0.009001/ 依存モジュールを解決して1枚のスクリプトにまとめてくれるようです。 perl使いの間で大人気の「cpanm」でもこれが使われています。 どっかでcpanmの紹介として「1枚岩のスクリプト」みたいな表現を目にしましたが、要するにこれのことを指していたようです。 ちなみに作者はlocal::libの人。 「ファット」って響きが心に刺さりますが、id:miyagawaさんも使ってることだし、きっと良質モジュールなんだろうなーと思って触ってみました。 使ってみて まず

    1枚のスクリプトに全てをまとめてくれるApp::FatPacker - download_takeshi’s diary
  • クラスタリングツールbayonを便利に使うText::Bayonを書きましたよ - download_takeshi’s diary

    JPerl Advent Calender 2009 のhacker trackに「Perlではじめるテキストマイニング」というタイトルで記事を書きました。テキストマイニング系のモジュールを色々紹介しているので、興味ある人はぜひご覧ください。 さてさて、記事の最後の方で軽くふれましたが、つい先日 Text::Bayon というモジュールをリリースしました。 Text::Bayon - Handling module for the clustering tool 'bayon' CPAN : http://search.cpan.org/~miki/Text-Bayon/ Github : http://github.com/miki/Text-Bayon それの具体的な使い方を紹介します。 何をするものか? Text::Bayonはクラスタリングツールbayonをperlスクリプトからス

    クラスタリングツールbayonを便利に使うText::Bayonを書きましたよ - download_takeshi’s diary
  • ギレンも登場!BM25なPerlモジュール書いたよ - download_takeshi’s diary

    久しぶりに何か書きます。 情報検索のアルゴリズムで「BM25」というものがあります。 何年か前に某研究所に遊びに行ったときに「TF/IDFより精度のいいやつ」みたいな感じでかなりアバウトに教えてもらいました。 その時は「名前だけでも覚えて帰ろう」と思っていたのですが、帰りに安い居酒屋で大酒をのみ、電車のなかで騒いでしまうほど酔っ払ってすっかりその名前を忘れてしまってました。(なにやってんだか・・・) で、最近Web+DB pressをパラパラ見ていたらBM25の名前を発見!ああ、これだこれだ、思い出したよ! というわけで、重い腰を上げてモジュール化してみました。 githubに上げてあります。 Lingua::JA::OkapiBM25 http://github.com/miki/Lingua-JA-OkapiBM25 そのうちCPANからも落とせるようになります。 正式名称は「Okap

    ギレンも登場!BM25なPerlモジュール書いたよ - download_takeshi’s diary
  • Yahoo-APIを無制限に叩くためのモジュール書いた - download_takeshi’s diary

    ふと気づくとYahooの「ウェブ検索API」の利用制限が変わっていて、今までは同一IPからの利用は5万回/24時間でしたが、10月13日から同一appidからの利用が5万回/24時間となっていました。 http://developer.yahoo.co.jp/newslist/1#64 つまりappidを複数用意して数珠つなぎに使って行けば、同一IPからの利用が事実上無制限となるんだよね!?ということで、久しぶりにPerl Module書きました。 WebService::APIKeys::AutoChanger github: http://github.com/miki/WebService-APIKeys-AutoChanger CPAN : http://search.cpan.org/~miki/WebService-APIKeys-AutoChanger まだCPANにあがって

    Yahoo-APIを無制限に叩くためのモジュール書いた - download_takeshi’s diary
  • ローカルポートを食いつぶしていた話 - download_takeshi’s diary

    ここのところ、お仕事で管理しているシステムで、夜中に負荷が急上昇する事象が発生しており、夜な夜な対応に追われていました。 (このブログ書いている今も、負荷がじわじわ上昇中なんですが・・・) で、いろいろと調査した結果、ようやく糸口がわかってきました。 結論から言うと、ローカルポートなどのネットワーク資源をいつぶしていたようです。 以下、調べていってわかったことなどのメモです。 トラブルの事象 運用しているのは Apache2.2 + mod_perl2 なwebサーバで、リスティング広告システムの配信系です。 リスティング広告の配信のシステムって一般的にロジックが複雑でいやーな感じなんですが、このシステムもご他聞に漏れずかなりのひねくれ者で、しかもトラヒックは結構多めです。システム全体で、日に1000万〜2000万クエリくらいかな。幸か不幸か、このご時勢においてもトラヒック的には成長し続

    ローカルポートを食いつぶしていた話 - download_takeshi’s diary
  • AnyEvent::Intro チョー訳 その1 - download_takeshi’s diary

    最近perl界隈で話題のAnyEventについて、今のうちに習得しておくとid:miyagawaみたいにクールになれて、もしかしてモテるのではないかと思い、よっしゃ、勉強してみるか、ということでドキュメント読み出したんですが、、えらいボリュームですね。心がポッキリ折れました。 い、いや、そんなことではいかん!頑張るぞ。 というわけで、折角なので、チョー訳を残していこうと思います。AnyEventはおさえておきたいけどドキュメントの長さに呆然としてしまったアナタ、ダウンロードたけしと一緒にレッツスタディしようぜ! なお、AnyEventのドキュメントはすごく長いので、ぶつ切りでいきます。最後まで書き綴れるかどうかは不明です。 さらに英語にはあまり自信がないくせに、要所要所ですごく意訳的なことをしています。誤訳などありましたら指摘して下さいませ。 ※原文はこちら http://search.c

    AnyEvent::Intro チョー訳 その1 - download_takeshi’s diary
  • HTML::Feature 3.00 リリースしました - ダウンロードたけし(寅年)の日記

    前回のエントリで案内した通り、perl文抽出モジュール「HTML::Feature」を全面的に作り直し、リリースしました。すでにCPANにも反映されています。今回の改修で、抽出精度が向上し、且つ全体的にも高速化がなされました。ヤタ! HTML::Feature - Extract Feature Sentences From HTML Documents http://search.cpan.org/~miki/HTML-Feature/ 以下、簡単に新機能をご紹介します。 エンジンモジュールを直列に並べる 従来からコアとなるエンジンモジュールについては、任意のものに置き換えることができるようになっていました。デザパタでいうと「Strategyパターン」です。 version 3.00 からは、任意の個数のエンジンを好きな順番で直列に並べられるようになりました。 例えば全く異なる抽出方

    HTML::Feature 3.00 リリースしました - ダウンロードたけし(寅年)の日記
  • 汎用的なXMLSocketサーバを書いた - download_takeshi’s diary

    FlashのXMLSocketサーバ「Hoppy」をリリースしました。 Hoppy - Flash XMLSocket Server http://github.com/miki/Hoppy/tree/master githubにあげてあります。そのうちCPANにも反映されると思います。 HoppyはFlashのXMLSocketサーバのperl実装です。いわゆるプッシュ型のwebアプリケーションを簡単に実装することを目標としたTCPサーバです。 内部はperlのPOEによるイベントドリブンな実装なので、POEの知識がある方であれば、かなり柔軟にサーバの振る舞い自体を変更したり拡張したりすることができます。逆にPOEを知らない人でも、いくつかの決めごとに従うだけで、簡単に機能を搭載していく事ができます。 基的な決めごと Hoppyはある程度の「決めごと」を前提とした、汎用的で拡張可能なX

    汎用的なXMLSocketサーバを書いた - download_takeshi’s diary
  • Kamaitachi入門(その2) - download_takeshi’s diary

    前回に引き続きperlのRTMP実装であるKamaitachiのコードリーディングです。 今回はKamaitachi体のソースコードを見ていきます。 lib以下のモジュールファイルの構成 [miki@vmware kamaitachi]$ tree lib lib |-- Kamaitachi | |-- IOStream.pm | |-- Packet | | `-- Function.pm | |-- Packet.pm | |-- Service | | |-- AMFHandler.pm | | |-- AutoConnect.pm | | |-- AutoConnectACL.pm | | |-- Broadcaster.pm | | |-- ChildHandler.pm | | |-- ConnectionHandler.pm | | |-- Core.pm | | |--

    Kamaitachi入門(その2) - download_takeshi’s diary
  • Kamaitachi入門 - download_takeshi’s diary

    Kamaitachiとは、typesterさんが鋭意開発中のperlによるRTMPサーバの実装( =~ Flash Media Server)です。 RTMPサーバのオープンソース実装としてはRed5やWowza、RubyIzumiなどが知られていますが、「perl使いだったらKamaitachiだよ!」ということで、年の瀬の忙しい中、家族の冷たい視線に刺されつつKamaitachiに入門してみようと思います。 Kamaitachi とは まずは周辺情報の整理から。 Kamaitachiの紹介サイト http://bm11.kayac.com/project/kamaitachi/ 作っている人 id:typester id:hide-K typesterさんのブログ http://unknownplace.org/memo/search?q=kamaitachi ソース http://g

    Kamaitachi入門 - download_takeshi’s diary
  • 1