Hatena::ブログ(Diary)

mizchi log

@mizchiの雑記帳

2011-02-21

tiarraのログをMongoDBに保存するLog::Mongo 書いた


適当に作って数日使用してみて、問題なく動いていたので公開

gist: 833306 - TiarraでMongoDBに投げるモジュール。- GitHub

tiarra/module/Log/Mongo.pm として保存してください。
Log::Channelの改造。動いてるもんは触るなの精神で、PerlわからんのでLog::Channelの書き込みのタイミングでコントロール奪ってるだけです。
引数も同じにしないと動きません。tiarra.conf へ Log::Channelと同じ書式でダミーの引数を記述してください。

+Log::Mongo{
 ... Log::Channelと同じダミー引数
}

MongoDBの構成は tiarra - <チャンネル名> - { header="ヘッダ",content="本文",timestamp="書き込み時の時刻" }

forkしてくれる人いたらお願いします。


生まれて初めてPerl書いた。恐ろしい体験だった。

2010-11-23

cpan恐怖症の僕がPerlの環境構築してからTetoをいれるまで


貴重なマシンパワーの一部をニコ動の作業用BGMに割いてるみなさんおはようございます

もともとFlashというかAdobeが嫌いなので、しかしニコ厨としてはなんとかしてStremaing環境を構築したくて id:motemen さんのTetoをいれたかった
うちのMBAにはFlashいれてない。自宅で鯖化した旧MBがニコ動再生機と化していた

ニコニコ動画の音声だけを流し聴きするストリームサーバを書きました - NaN days - subtech
音声が入れば最低でも作業用BGMきけるよ!ってこと頑張ってみた

PerlといえばCPAN。名前を聞くだけで魅力的だとわかるモジュールが目白押し。WWW::Mechanize::AutoPagerとか超羨ましい
しかしPerl、というかCPANには嫌な思い出があって

  • 依存が複雑
  • 依存が多すぎ
  • 初心者なのでこれ入ってて当然だよね、がわからない
  • そもそもLogが読めない
  • そもそも暗黙知大杉
  • Plagger 動かせなかった思い出
  • remedie 動かせなかった思い出

まあ cpanminus という 使いやすいモジュールができたらしいのでそっちで頑張ってみようと思った
ちなみに Plaggerもremedieもcpanminusもmiyagawaさん製

perlbrew


homebrew + perlbrew + cpanm + local::lib + etc.な開発環境を作る - antipop

$ cd ~/
$ curl -LO http://xrl.us/perlbrew
$ cd ~/perl5
$ perl perlbrew install
$ ~/perl5/perlbrew/bin/perlbrew init
$ vim ~/.zshrc # source ~/perl5/perlbrew/etc/bashrcを追加
$ source ~/perl5/perlbrew/etc/bashrc
$ perlbrew install perl-5.10.1 # 自分の環境だと失敗したので --force オプションをつけました
$ perlbrew swicth perl-5.10.1

cpanminus

perlbrew + cpanminus + local::lib で環境構築 - Webtech Walker

$ mkdir ~/bin #pathを通しておく
$ cd ~/bin
$ wget --no-check-certificate http://xrl.us/cpanm
$ chmod +x cpanm

ここまでは特に問題ない

Teto

ffmpegが必要
最近homebrew にうつったので homebrew でいれる。MacPortsでも入れられるけど確かオプションが大量にあったような 要 port variants ffmpeg

sudo brew install ffmpeg


Tetoのソースのダウンロード

$ git clone git://github.com/motemen/Teto.git
$ cd Teto
$ perl Makefile.pm


とすると大量にwarningが出る
Module::Install::Any::Mooseがあれば足りないモジュールを指摘されるのでまずは突っ込む
$ cpanm Module::Install::Any::Moose

再度 perl Makefile.pm し、足りないモジュールをとにかくcpnam hogehoge していく
モジュールが糞多いけど、たぶん他のモジュールを使う際もよく使われてるライブラリが多い(と思われる)ので我慢しよう
終わったら make & sudo make install

Config::Pit について

pit といってソースにコードを書かなくて済むように~/.pit 以下にパスワードを預けるモジュールがあるのだけど
自分の環境でワンライナー飛ばしたんだけど、ちゃんと動かなかった

$ perl -MConfig::Pit -e'Config::Pit::set("nicovideo.jp",  data=>{ username => "miz404@gmail.com",  password =>"somethingpassword"})'

~/.pit/default.yaml をのぞくとなぜか miz404gmailになってたので直接編集して対応。
ここで二時間ぐらいハマっていた。encodingの設定が甘いんだろうか

Teto実行

まだ環境構築終わってません

サンプル通り./teto.pl --port 9090 http://www.nicovideo.jp/mylist/3271200 とすると依存がおかしいとの警告が出る
これはperl Makefile.pm に書かれてなくてもとにかくまだ足りないモジュールがあるらしいので、たいていは cpanm hogehoge していけば解決する
多分そのうち実行できるので、ログを確認する
[error] ~ ダウンロードできない云々は多分~/.pit/default.yaml がおかしいので見直す

無事にうごけば http://localhost:9090/ でインターフェースが確認できる
iTunesを起動して Cmd+U http://localhost:9090/stream でストリームが流れてくる


お疲れさまでした

教訓


  • やっぱCPANこわい
  • やっぱモダンなモジュールがどれとかわからない
  • 成功経験も大事
  • Makefile.pmに書いてある依存が全てではない


やっぱニコニコで作業用BGMだけでも聞けると快適

2010-06-10

ExtractTermで専門用語抽出


ExtractTermというPerlで書かれたライブラリがあるらしい。
専門用語(キーワード)自動抽出用Perlモジュール ”TermExtract”の解説


CGI版で試してみる
専門用語(キーワード)自動抽出サービス 「言選Web」

http://gyazo.com/ca3dcbfe68d8e98cb33fe7c17560cd6c.png

「本文」とかゴミは混ざってるけどなかなかの精度。事前に候補を絞る程度には使えそうだ。

インストール


$ wget http://gensen.dl.itc.u-tokyo.ac.jp/soft/TermExtract-4_08.tar.gz
$ tar xzvf TermExtract-4.08.tar.gz


makefileをutf-8にしておくらしい

$ cd TermExtract
$ cp MeCab.pm MeCab.org.pm
$ iconv -f euc-jp -t utf-8 MeCab.org.pm > MeCab.pm
$ cd ..

$ perl Makefile.PL
$ make
$ sudo make install


サンプルのスクリプトを使ってみる。

[mizchi]% perl ~/work/TermExtractSamples/UNIX/ex_mecab.pl mecab_out.txt        
#ここ                                                              790.54
-                                                                      659.91
月                                                                    479.31
風                                                                    449.13
日                                                                    339.12
春                                                                    338.09
山                                                                    264.54
[#「                                                              254.98
酒                                                                    246.07
樹明君                                                              231.45

青空文庫の何かを使った。一般語だと厳しい。右はTF*IDFスコアっぽい。
オプションはあとで調べる。

参考にしたサイト

おまけ

http://gyazo.com/c440825465b79ea905dd162f9729b68a.png

euc-jpなニオイがする!
日本語の自然言語処理はエンコーディングとの戦いですね!