squikole -3ページ目

20060123

コナナッツワ。squikoleです。
またボッカリと更新が空いてしまいました。若干、反省しております。嘘です。はい。

昔、幼き頃に「継続はチカラ也」と、ご教授頂きましたが、まったくもって身になっておりません。先生、ごめんなさい。

暖房生活

手前味噌なお話ではありますが、ワタクシの住む東北南端の福島は寒いんです!はっきりいって(´A`)トウシ シチャウヨ・・・(はぁと
という事で、凍死してしまう前に対策委員会を結成し(構成員数一名)、改善案を日夜検討した結果、

『 暖 房 器 具 を 買 え ! 』

との決定を受けて、即発注!そして、本日、目的のブツが届いた次第です。・・・つか、そんな結論すぐ出せよ(´A`;)アホッ テ ヤーネ


E&E オーガニックカーボンヒーター SLC1-IV アイボリー (強300W・弱150W)

TWINBIRD アロマピュア パーソナル加湿器 シルキーホワイト SK-D974SI
それで購入したのが↑の2つ。カーボンヒーターと加湿器! あわせて買っても一万円でお釣りがきちゃいます。

ウチの部屋はだいたい6畳くらいですが、このカーボンヒーター+こたつで寒さ対策はバッチリ!
このカーボンヒーター。かなり小さくて箱から出した時は、「パワー不足なんじゃ・・・?」と思ったのですが、充分あったかくて大満足。さらに、小さいので持ち運びが楽で色んな所に持っていけて便利です。

それから、加湿器!今まで使った事がなかったのですが、この季節、充分に加湿して適当な湿度になった部屋を味わってしまったら、もう止められませんよ。

日本人が快適だと感じる冬季の温度、湿度は
温度:18~20度
湿度:40~50%
ということで、今後はこれを目安に快適な冬生活を送りたいと思います(´∀`)カイテキ カイテキ

MySQL 4.1 + Senna ( + MeCab) で日本語の全文検索

またまた、備忘録的に MySQLSenna さらに MeCab を使った(日本語対応)全文検索エンジンの仕組みを構築する方法を。

MySQLには、FULLTEXTインデックスがありますが、これが日本語にまっ~たく対応しておらず、悲しい気持ちでいっぱいになってしまいますね。
しかし、MySQL + Senna + MeCab を組み合わせることで日本語の全文検索が簡単に実現できてしまうんです!


確認した環境は、Debian (sarge 3.1)。
デフォルトの文字コードは、「UTF-8」にしています。他に「EUC」や「Shift JIS」も使えます。


導入した各プログラムのバージョンは以下のとおり
  • MeCab 0.93 (& MeCab 用の辞書 IPA 辞書 2.7.0-20060707)
  • Senna 0.9.0
  • MySQL 4.1.20

MeCabをインストールする

(参考:MeCab: Yet Another Part-of-Speech and Morphological Analyzer
$ tar zxvf ./mecab-0.93.tar.gz
$ cd ./mecab-0.93
$ ./configure --with-charset=utf8
$ make
$ su
# make install
続いてMeCab用辞書のインストール。
$ tar zxvf ./mecab-ipadic-2.7.0-20060707.tar.gz
$ mecab-ipadic-2.7.0-20060707
$ ./configure --with-charset=utf8
$ make
$ su
# make install

Sennaをインストールする

(参考:Senna 組み込み型全文検索エンジン - インストール方法
$ wget http://dev.razil.jp/archive/senna/senna-latest-svn.tar.gz
$ tar xvfz senna-latest-svn.tar.gz
$ cd senna
$ ./configure
$ make
$ su
# make install
UTF-8でインデックスを作成するように設定を変更します。
# mkdir /var/senna
# echo "DEFAULT_ENCODING utf8" > /var/senna/senna.conf
Shift JISでインデックスを作成する場合は
# echo "DEFAULT_ENCODING sjis" > /var/senna/senna.conf
とします。

MySQLをインストールする

MySQLのソースにSennaのパッチをあてます。Senna 0.9.0に付属するパッチは、MySQLの4.0、4.1、5.0、5.1の4つのバージョンに対応しており、本稿では4.1を選択しました。
また、4.1用の付属パッチのファイル名には「4.1.20」とあるので、同一バージョンのMySQLソースを用意しました。
(Sennaサイトに記載がありますが、ある程度バージョンが異なっていてもパッチの適用は可能なようです。しかし、本稿では無用なトラブルを避けるため同一バージョンを用意しました。)

$ tar zxvf ./mysql-4.1.20.tar.gz
$ cd ./mysql-4.1.20
$ patch -p1 < ../senna/bindings/mysql/mysql-4.1.20.senna.diff
他にもいくつかパッチが出ています。必要なものは適用しておきます。手順は こちら をご覧ください。

さて次にconfigureを再作成します。
Sennaサイトにもあるように

bison 1.75, autoconf 2.59, automake 1.8(aclocal 1.8), libtool 1.4以上が必要です

ということで、各コマンドのバージョンが低い場合などは、GNUサイト から最新版をダウンロードして、コンパイル&インストールしちゃいましょう。
ワタシの場合、autoconf、libtool、automakeをインストールしました。
各コマンドの名称をsearchボタン横のテキストボックスから検索するとソースへのリンクが表示されます。あとは適宜、ダウンロード→コンパイル→インストールでok。
また、下位バージョンのコマンドが既にインストールされた状態の場合、以下のコマンド(パス無し)ではPATHによっては下位バージョンのコマンドが実行されてしまうので絶対パスで実行しましょう。(/usr/local/bin/autoconf←みたいに)

んで、以下のコマンドを順次実行します。
# libtoolize -c -f
# aclocal-1.9
# autoheader
# automake-1.9 -c -a -i
# autoconf
sql/sql_yacc.yyファイルを作成します。
# touch sql/sql_yacc.yy
MySQLをコンパイル&インストールします。
# ./configure --with-charset=utf8 --with-extra-charsets=ujis,sjis --with-named-curses-libs=/lib/libncurses.so.5 --with-senna
# make
# su
$ make install
本稿でのconfigureオプションは最低限のオプションのみです。環境に合わせて最適なオプションを付加してください。

あとは通常のMySQLのセットアップを実行します。

以上で日本語対応全文検索エンジンの導入は完了です。動作確認などは、 こちら のサイトなどを参考にしてください。

これで日本語の文章検索が超っ速ですゎ( ´∀`)

Apacheモジュールを後から追加 ~mod_rewrite編~

新年早々からApacheネタ(備忘録)でございます。

ということで。
モジュールをApacheのコンパイル後に(再起動無しで)追加する方法を。

また、Apacheのコンパイル時にDSO(mod_so)が組み込まれていないと、この方法では追加できません。(Apacheの再コンパイルが必要)

ちなみに、DSOが組み込まれているか確認するには以下のコマンドを実行します。
# /usr/local/apache/bin/httpd -l
結果一覧に「mod_so.c」がある事を確認してください。(無い場合は組み込まれていません)


まず、稼動しているApacheと同じバージョンのソースを準備します。そのソースファイルを展開し、展開後ディレクトリの「src/modules/standard/」にカレントを移動します。
# tar zxvf ./apache_1.3.xx
# cd ./apache_1.3.xx/src/modules/standard/
上記ディレクトリ内にApache標準モジュールのソースが保存されています。mod_rewriteのソースは、「mod_rewrite.c」と「mod_rewrite.h」です。


んでは、早速、mod_rewriteを動的モジュールとしてコンパイルします。
# /usr/local/apache/bin/apxs -c mod_rewrite.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/usr/local/apache/include  -c mod_rewrite.c
In file included from mod_rewrite.c:51:
mod_rewrite.h:91:18: ndbm.h: そのようなファイルやディレクトリはありません
apxs:Break: Command failed with rc=1
失敗しました・・・。

「ndbm.h」が見つからないと出ましたね~。では、「ndbm.h」ファイルを検索します。
# find / -name ndbm.h -print
/usr/include/gdbm/ndbm.h
「/usr/include/gdbm」ディレクトリに目的のファイルが見つかりましたので、以下のようにオプションを追加して再度コンパイルを実行します。

見つからなかった場合は、http://directory.fsf.org/GNU/gdbm.html から最新のソースを取得してコンパイルしてください。
/usr/local/apache/bin/apxs -c -I /usr/include/gdbm mod_rewrite.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/usr/local/apache/include -I/usr/include/gdbm  -c mod_rewrite.c
gcc -shared -o mod_rewrite.so mod_rewrite.o
今度はちゃんとコンパイルできましたね。

次にインストールします。
# /usr/local/apache/bin/apxs -i mod_rewrite.so
cp mod_rewrite.so /usr/local/apache/libexec/mod_rewrite.so
chmod 755 /usr/local/apache/libexec/mod_rewrite.so
設定を追加します。「httpd.conf」ファイルに下記の設定子を追加します。
LoadModule rewrite_module        libexec/mod_rewrite.so
設定ファイルをチェックします。
# /usr/local/apache/bin/apachectl configtest
Syntax error on line 217 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/mod_rewrite.so into server: /usr/local/apache/libexec/mod_rewrite.so: undefined symbol:dbm_fetch
また、失敗ですよ...orz...
gdbmにリンクして、再々度コンパイルします。
参考:Viktor's Home Page: Undefined symbol 'dbm_fetch' with the Apache server
# /usr/local/apache/bin/apxs -c -I /usr/include/gdbm -l gdbm mod_rewrite.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/usr/local/apache/include -I/usr/include/gdbm  -c mod_rewrite.c
gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
インストール → 設定のチェック を先程と同様に行い。

あとは、
# /usr/local/apache/bin/apachectl graceful
とし、設定をリロードさせれば「mod_rewrite」が有効となります。

以下の書籍も参考になると思います。

あけましておめでとうございます

年が明けました!
あけましておめでとうございます!!本年もよろしくお願いいたしますm(_ _)m