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 に渡す、笑い。

Posted by Morimoto at 02:12 AM | コメント (0) | トラックバック

November 11, 2004

UTF8 -> EUC

utf-8 から EUC への変換にはまった。前はどうしてたんだろうと思ったら meta 要素を見に行ってるな…。uconv を使ってるんだけれども uconv に自動判別メソッドは無い。ということでぐぐってみたらあった。

	begin
		str2 = Uconv.u8tosjis(str)
	rescue Uconv::Error
		str2 = str.toeuc
	end

ということでこんなふうにした。

Posted by Morimoto at 10:03 PM | コメント (0) | トラックバック

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 というのを入れておきました。一応動作確認までしておいたので、急に停電になっても自動的にシャットダウンはされることは確認済みです。

Posted by Morimoto at 01:17 AM | コメント (0) | トラックバック

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 の設定する際の覚書ですよ、笑い。

Posted by Morimoto at 09:59 PM | コメント (0) | トラックバック

June 07, 2004

MySQL管理

とりあえず機能豊富で使いやすそうで Windows でも使えてかっこいい。けど使い方がよくわかりません。既にテーブルはこういう風に作ればいいジャンというのはできているのに、MySQL の使い方と SQL の構文がよくわからない。さらに Ruby での DB 操作クラスも大まかな設計ができているのに。1日でわかる MySQL どこぉ?

Posted by Morimoto at 02:44 PM | コメント (0) | トラックバック

June 05, 2004

Ruby から MySQL

Windows の Ruby で MySQL を使う場合には Ruby/MySQL を使うのが一番楽チンだ。これなら Ruby 1.8 で MySQL 4 でもうまくいくっぽい。

なんだかいろいろ悩んで困って苦労してたのがあほみたいに簡単にできた。

Posted by Morimoto at 07:43 PM | コメント (0) | トラックバック

May 13, 2004

カーナビ

パイオニア、運転手の気分で自動選曲するHDD型カーナビ

おもしろそう。つかカーナビのプレイヤーでこういうのやる前にWindows上でこういうのやってくれるのって無いのだろうか?

Posted by Morimoto at 02:57 PM | コメント (0) | トラックバック

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 の動作は確認。

Posted by Morimoto at 01:15 AM | コメント (3) | トラックバック

January 23, 2004

メモメモメモ

おうちでリサーチにつき忘れないためにもメモを大量に。つか MT は投稿がらくちんなのでメモ用としてもかなり使えるね。

WEB を自動的に巡回して壁紙を自動で変えてくれるもののようだ。ちょっと違うが使えるかも。

あ、あった、下の記事で言ってた奴が。とりあえず試してみようそうしよう。

Ruby で作った検索エンジンらしい。これにも WEB を巡回する機能が搭載されているようだ。

これも Robot のようだ。参考になりそう。

Posted by Morimoto at 03:09 AM | コメント (0) | トラックバック

Ruby

Ruby に移行したので Ruby 関連のページもメモっておこう。

Windows で使う場合にはどうもこのバイナリが一番いい気がする。Ruby 標準のライブラリつかクラスか、がついているのは多分これだけ。Cygwin 版は使ってみていないのでそれとの比較はしていない。

Ruby 用の IDE(統合開発環境)。非常に出来が良くてすばらしくて感動した。関数名などの補完機能はばっちりだし、オブジェクト指向による数多の関数群を左側にリストしてくれたり、よく使うパターン(def ... end などなど)は省略記号を用いて効率よく入力できたり、そしてなによりデバッグ機能が本当にありがたい。Windows 版しかないのがやや残念なのかもしれないが(僕は Windows 愛好家なので問題無いが)、前に書いた Eclipce を利用したものなどに比べると比較にならないぐらい良くできている。ということで非常にお勧めです。

んで、また HTML 収集の話に戻る。こんなの見つけた。というかそれ欲しいんですよ。RAA に乗せると書いてあるが RAA 見つからない。その後はどうなったんでしょ。

Posted by Morimoto at 02:36 AM | コメント (0) | トラックバック

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/

こんなものもあるようだ。

Posted by Morimoto at 02:02 AM | コメント (0) | トラックバック

January 22, 2004

オープンソースのクローラー

日々の巡回先であるセキュリティーホールメモから悪徳商法?マニアックスに関するグーグルによって省かれる問題におけるスラッシュドットの記事を発見、その記事に対するコメントから、オープンソースの検索エンジン Nutch に関する @IT の記事を発見、Nutch はクローラー(WEBを巡回しWEB上のものを集めてくるためのもの)を持たないため、オープンソースのクローラーを利用することを推奨しており、それがオープンソースのクローラーである「Grub」だそうだ。こういうのをちょうど探していた、すばらしい。Windows でも使えるようなので早速一晩動かしてみることにしよう。

と、思ったが、どうやらこの Grub とやらはローカルにファイルを落としてくれるようなものではないようだ。みんなで協力して URL を集めましょうというようなもので、SETI@HOME などのソフトと似たようなタイプのソフトのようだ。つまり使えない。

Posted by Morimoto at 09:11 PM | コメント (0) | トラックバック

January 11, 2004

Web Publisher

http://webpub.narucy.com/

あーなるほど、そういえばこういうツールって無いね、すばらしい。ぜひ今度使ってみよう、そうしよう。

Posted by Morimoto at 04:21 AM | コメント (0) | トラックバック

ruby

perl から ruby への移行を検討しつつさらりと勉強。動作速度に関してはなんともいえないが(動作原理的には perl の方が早いのだろうけど)、なかなかに魅力的な言語ということを理解してきた。オブジェクト指向だし。

ただ、オブジェクト指向言語なのにクラス変数が無いという事実に多少困惑した。変数の宣言も独特だ。しかもブロックは end で終わる。非常に異国語という感じがする。しかしこれを習得すると日本語、英語、C言語、C++、Perl、N88-BASIC、Java(かたこと)に加えてさらに使える言語が増えるので非常に国際人という感じだ。

さて、こんなだれもつっこんでくれないようなところでくだらないボケを書いてみたりしても仕方が無いので2つほど URI をメモ。

ちなみにわざわざ Eclipse を用いる必要があるのかどうかは秘密だ。

Posted by Morimoto at 02:45 AM | コメント (0) | トラックバック

December 01, 2003

インターネット地図

http://slashdot.jp/article.pl?sid=03/11/28/1415257&topic=74&mode=nested

とりあえずめもめも

Posted by Morimoto at 04:15 PM | コメント (0) | トラックバック

November 20, 2003

url

http://www.packetblackhole.com/cgi-bin/whatcat.cgi

ウェブを分類してくれるようだ。ちょっと面白いかも。

Posted by Morimoto at 10:37 AM | コメント (1) | トラックバック

November 18, 2003

url

HOTWIRED の blog 特集関心空間

関心空間ってまったく知らなかったんだけれども、これってどうなんだろう。いろいろ徘徊してみたけど、見づらいは使いづらいはどこにいったらいいのかわからないはで、このシステムが何をやっているのか良くわからない。ただ、ABOUT に書かれていることは非常に興味深い。それが実現できているのかはちょっと使った感じでは非常に疑わしいけどね。誰か使ったことのある人いる?

Posted by Morimoto at 09:08 PM | コメント (3) | トラックバック

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 の吐き出すソースの異常っぷりといったら、なんだかアセンブリチックなところだ。吐き出されたものを覗いてみても何がなにやら。

Posted by Morimoto at 06:36 PM | コメント (1) | トラックバック