February 10, 2005
MeCab & MeCab/Ruby into VineLinux3
Dual Xeon マシンに MineBlogRecommendServer を移行。今までは Windows XP マシンだったが、せっかくなので VineLinux にすることにした。クローラを動かしたりなんかを考えると、Windows はよろしくない。あと遠隔操作が困難だし。
ほんで、Linux に移るにあたり一番の懸念だった MeCab のインストールにつまづく。いつもつまづく、困る。んでも、まあ、なんとかインストールできたのでメモを残しておこう。
- VineLinux 3.1 をインストール。なぜかグラフィカルモードでできない。なぜだ?テキストモードでインストール、わずか10分。
- MeCab インストール。まあ通常通りで問題なし。
- MeCab/Ruby、Ruby からバインディングするためのやつインストール、いつも悩むところ。以下、うまく行った方法
- とりあえず「$ apt-get install ruby-devel」する。つかどうして入っていないのか不思議で仕方が無い。
- MeCab のインストールパスを変更していないと、/usr/local/bin にインストールされるが、Vine はここにパスが通ってない、あと /usr/local/lib にライブラリがあることも宣言しとかんといけないらしい。ここではまった。
# .bash_profile PATH=$PATH:/usr/local/bin LD_LIBRARY_PATH=/usr/local/lib export PATH LD_LIBRARY_PATH
ってなかんじで追記、その後通常通りruby extconf.rb make su make install
で完了
いまいちまだ Linux 使いじゃないな僕は。
November 24, 2004
MySQL の ON DUPLICATE
MySQL の 4.1 が出たといくつか前のエントリーで書いたが、新機能であるところの ON DUPLICATE KEY UPDATE が気になったので早速使ってみた。
ON DUPLICATE は INDEX を UNIQUE なものとして作っているカラムで、新しく INSERT する行が持つカラムが既に存在する場合には値を増やす等の別のことができるようにするものである。
今までは
if exist?(insert_item)
sql.query("UPDATE SET update_exec WHERE colum_have_index = insert_item;")
else
sql.query("INSERT table (colum_have_index) VALUES(insert_item);")
end
という感じだったのが
sql.query("INSERT table (colum_have_index) VALUES(insert_item)
ON DUPLICATE KEY UPDATE update_exec;")
というふうになる。これによって今まで1アイテム挿入するのに掛かっていた時間で数十アイテム挿入できるようになった気がする。まあ他にも1個ずつ挿入するよりも1つのクエリにまとめてしまったり、その他既にカラムが存在するかどうかのチェックを SQL にまかしその場合には IGNORE するなんていうもろもろの処理も加えたりするけれども、最終的にそういったもろもろをやった結果、1つの HTML の処理に数分、遅いときには10分以上掛かっていたものが、長くてもわずか2,3秒の処理で終わるようになった。超高速化。これでようやく MySQL の高速性を発揮できる。
つか使い慣れないと結構わからんよなあ。本当にちょっとしたことで偉い速度に差がある。コツは自前でコードを書かずになるべく SQL に渡す、笑い。
November 11, 2004
UTF8 -> EUC
utf-8 から EUC への変換にはまった。前はどうしてたんだろうと思ったら meta 要素を見に行ってるな…。uconv を使ってるんだけれども uconv に自動判別メソッドは無い。ということでぐぐってみたらあった。
begin str2 = Uconv.u8tosjis(str) rescue Uconv::Error str2 = str.toeuc end
ということでこんなふうにした。
October 28, 2004
MySQL4.1 安定版リリース
今現在のところサブクエリを使ってなかったんだけれども、これでサブクエリを使うことを検討に加えた方がよさそうになった。つか、サブクエリが使えるのは 4.2 からだと思ったけどちょっとずれて記憶していたみたいね。つまり僕が今まで使っていたのは 4.0 ということか。それと 4.1 から使えるようになった機能のうち
新しい INSERT ... ON DUPLICATE KEY UPDATE ... 構文が実装された。この構文を使用すると、INSERT によって PRIMARY または UNIQUE キー(インデックス)で重複が発生した場合に既存のレコードを更新することができる。
というのが気になるなあ。
King!(尾内研向け文章)
ほぼ僕の勝手な意向によって king に VineLinux3.0 を入れて動かし始めました。一応 samba も動かしてあるのでその 1T のディスク容量の恩恵にあずかることもできるかもしれません、が、まだあんまり使うのはよしといてください。そのうち MySQL を入れる予定なのでそうなったらもっと恩恵を得ることができるでしょう。
それとデフォルトの UPS のアプリケーションはインストールができそうも無い、ということで APCUPSD というのを入れておきました。一応動作確認までしておいたので、急に停電になっても自動的にシャットダウンはされることは確認済みです。
October 26, 2004
MySQL の packetlength
MySQL を使うための Ruby のインスタンスがエラー名も出さずに死ぬので困惑していたら、MySQL の max_allowed_packet によってパケットサイズが制限されているのを知った。セキュリティーな点から当然だよなあ。つかなぜ僕は真っ先にログを見て気づかなかったのだろうか。
パケットの上限サイズはデフォルトで 1M になっているようだ。今 MySQL に登録しているのは普通の HTML で、まあ、1M を超えるような HTML は非常に少ないと思うので、エラーの原因が分かる前に書き直した例外処理で無理やり拾うという方法でも問題ないだろう、とか思いつつ、自分が書いたスクリプトのエラーログ見たら doblog だったのでこれは困る。僕のシステムの対象は blog ページ。
doblog は URI から想像するに動的にページを生成していると思われるのだが、1ページが 1M を超えるようなページはシステムが重くなる原因にならないのかなあ。集めてある HTML は半年以上前のものが多いので今はそんなことはないのかもしれないけれど。
doblog はさておき、この文章は MySQL の設定する際の覚書ですよ、笑い。
June 07, 2004
MySQL管理
- MySQL 4.0、本体
- DBDesigner 4、設計ツール
- MySQL Administrator、管理ツール
- MySQL マニュアル、日本語
とりあえず機能豊富で使いやすそうで Windows でも使えてかっこいい。けど使い方がよくわかりません。既にテーブルはこういう風に作ればいいジャンというのはできているのに、MySQL の使い方と SQL の構文がよくわからない。さらに Ruby での DB 操作クラスも大まかな設計ができているのに。1日でわかる MySQL どこぉ?
June 05, 2004
Ruby から MySQL
Windows の Ruby で MySQL を使う場合には Ruby/MySQL を使うのが一番楽チンだ。これなら Ruby 1.8 で MySQL 4 でもうまくいくっぽい。
なんだかいろいろ悩んで困って苦労してたのがあほみたいに簡単にできた。
May 13, 2004
February 04, 2004
Windows で Ruby/MeCab
Windows バイナリの和布蕪はあるものの、Ruby でバインディングするとかいうののコンパイルができない。んで、まあ Makefile やら Mkmf やらはまったくわからないのでなんとなく手作業にて extconf.rb を下記のように作成。
have_library('libmecab') && create_makefile('MeCab')
libmecab.lib、libmecab.dll、mecab.h をラッパーのソースのあるディレクトリにコピーし、
ruby extconf.rb
そしてこのあと nmake するとなんとか MeCab.so ができるのでこれを \ruby_installed\lib\ruby\1.8\i386-mswin32 にコピーし libmecab.dll を \ruby_installed\bin にコピー。これでどうやら動くようだ。
うーん、辞書とかはいったいどこを見に行っているのだろうか。結構動きが謎なので今後さらに解明を続けよう。
まあどうしてうまくいったのかわからないが、とりあえず mswin用Ruby1.8.1、MeCab0.77 にて同梱の test.rb の動作は確認。
January 23, 2004
メモメモメモ
おうちでリサーチにつき忘れないためにもメモを大量に。つか MT は投稿がらくちんなのでメモ用としてもかなり使えるね。
WEB を自動的に巡回して壁紙を自動で変えてくれるもののようだ。ちょっと違うが使えるかも。
あ、あった、下の記事で言ってた奴が。とりあえず試してみようそうしよう。
Ruby で作った検索エンジンらしい。これにも WEB を巡回する機能が搭載されているようだ。
これも Robot のようだ。参考になりそう。
Ruby
Ruby に移行したので Ruby 関連のページもメモっておこう。
Windows で使う場合にはどうもこのバイナリが一番いい気がする。Ruby 標準のライブラリつかクラスか、がついているのは多分これだけ。Cygwin 版は使ってみていないのでそれとの比較はしていない。
Ruby 用の IDE(統合開発環境)。非常に出来が良くてすばらしくて感動した。関数名などの補完機能はばっちりだし、オブジェクト指向による数多の関数群を左側にリストしてくれたり、よく使うパターン(def ... end などなど)は省略記号を用いて効率よく入力できたり、そしてなによりデバッグ機能が本当にありがたい。Windows 版しかないのがやや残念なのかもしれないが(僕は Windows 愛好家なので問題無いが)、前に書いた Eclipce を利用したものなどに比べると比較にならないぐらい良くできている。ということで非常にお勧めです。
んで、また HTML 収集の話に戻る。こんなの見つけた。というかそれ欲しいんですよ。RAA に乗せると書いてあるが RAA 見つからない。その後はどうなったんでしょ。
Web Crawler
Web Crawler 探してみたところ幾つか見つかった。
Source Forgeで Crawler のプロジェクトがかなりあるようだが使えそうなのは次の3つぐらいだろうか。
- http://sourceforge.net/projects/archive-crawler/
- http://sourceforge.net/projects/webharvest/
- http://sourceforge.net/projects/larm/
とりあえずどれも Windows 環境では動かない。というか自宅の環境で動かなかった。が、それなり作られている感じはする。
- http://verno.ueda.info.waseda.ac.jp/iron33/li>
こんなものもあるようだ。p>
January 22, 2004
オープンソースのクローラー
日々の巡回先であるセキュリティーホールメモから悪徳商法?マニアックスに関するグーグルによって省かれる問題におけるスラッシュドットの記事を発見、その記事に対するコメントから、オープンソースの検索エンジン Nutch に関する @IT の記事を発見、Nutch はクローラー(WEBを巡回しWEB上のものを集めてくるためのもの)を持たないため、オープンソースのクローラーを利用することを推奨しており、それがオープンソースのクローラーである「Grub」だそうだ。こういうのをちょうど探していた、すばらしい。Windows でも使えるようなので早速一晩動かしてみることにしよう。
と、思ったが、どうやらこの Grub とやらはローカルにファイルを落としてくれるようなものではないようだ。みんなで協力して URL を集めましょうというようなもので、SETI@HOME などのソフトと似たようなタイプのソフトのようだ。つまり使えない。
January 11, 2004
ruby
perl から ruby への移行を検討しつつさらりと勉強。動作速度に関してはなんともいえないが(動作原理的には perl の方が早いのだろうけど)、なかなかに魅力的な言語ということを理解してきた。オブジェクト指向だし。
ただ、オブジェクト指向言語なのにクラス変数が無いという事実に多少困惑した。変数の宣言も独特だ。しかもブロックは end で終わる。非常に異国語という感じがする。しかしこれを習得すると日本語、英語、C言語、C++、Perl、N88-BASIC、Java(かたこと)に加えてさらに使える言語が増えるので非常に国際人という感じだ。
さて、こんなだれもつっこんでくれないようなところでくだらないボケを書いてみたりしても仕方が無いので2つほど URI をメモ。
ちなみにわざわざ Eclipse を用いる必要があるのかどうかは秘密だ。
December 01, 2003
November 20, 2003
November 18, 2003
url
関心空間ってまったく知らなかったんだけれども、これってどうなんだろう。いろいろ徘徊してみたけど、見づらいは使いづらいはどこにいったらいいのかわからないはで、このシステムが何をやっているのか良くわからない。ただ、ABOUT に書かれていることは非常に興味深い。それが実現できているのかはちょっと使った感じでは非常に疑わしいけどね。誰か使ったことのある人いる?
November 17, 2003
perl
C から perl を使う方法がなんとなくわかったっぽい。なにかあらたにインストールしなくても、perl は C のソースを吐き出してくれるようだ。
http://aspn.activestate.com/ASPN/docs/3PMX/perlembed.html
この辺にいろいろ使い方が書いてあるが、VisualC++ からビルドするためには /I c:\perl\lib\CORE\ というオプションを追加し、c:\perl\lib\CORE\perl58.lib にリンクを張ればいいらしい。
にしても、perl の吐き出すソースの異常っぷりといったら、なんだかアセンブリチックなところだ。吐き出されたものを覗いてみても何がなにやら。