適当に・・・

何の目的も無くブログを立ち上げてみました。更新は不定期ですね。

Tomcat4 シンボリックリンク

2009年01月28日 15時49分13秒 | Tomcat
Tomcat4 シンボリックリンク

Tomcat4でシンボリックリンクを有効にするには

<Context path="/webdav" docBase="webdav" debug="0" reloadable="true" crossContext="true">
<Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true" />
</Context>

allowLinking="true"の設定です。

いつも忘れてしまって調べる手間が・・・・

時間を有効に使おう

mod_chxj を 試す

2009年01月27日 11時01分57秒 | Apache
apache2.0用の携帯変換用モジュール
mod_chxjを試してみる。

用意するものは
httpd-2.0.63.tar.gzと
mod-chxj_0.12.31.src.tar

mod-chxjはapache2.0系およびapache2.2系で使えるらしいけど
apache2.0をコンパイルしてみる。(オプションは1.3系のコピーでw)
./configure --prefix=/usr/local/apache-2.0.63 --enable-shared=max --enable-module=so --enable-module=headers --enable-module=rewrite --enable-module=vhost_alias --enable-module=proxy --enable-module=usertrack

make all
make install

OKトニー
とりあえずapache2.0は入った。

次 tar xvzf mod-chxj_0.12.31.src.tar
cd mod-chxj_0.12.31

./buildconf.sh

./configure --with-apxs=/usr/local/apache2/bin/apxs

で実行・・・・

エラー キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

configure: error: wand-config not found.

なんかwand-configがみあたらねーって言われてるよ。
yum -y install ImageMagick-develで
ImageMagick-develをインストール

で次のエラーw
error: apr-config and apr-1-config not found.

どんどんオプションを追加して、

./configure --with-apxs=/usr/local/apache2/bin/apxs --with
-apr-config=/usr/local/apache2/bin/apr-config --with-apu-config=/usr/local/apache2/bin/apu-config

再度ここで
error: pcre-config and pcre-1-config not found.
のエラーw

yum -y install pcre-develで
pcreインストール

再度

./configure --with-apxs=/usr/local/apache2/bin/apxs --with
-apr-config=/usr/local/apache2/bin/apr-config --with-apu-config=/usr/local/apache2/bin/apu-config

を実行
通りました。

Cookieシミュレート機能でMySQLやmemcachedで使えるらしいけど、
その辺はとりあえずデフォルトで良いから。

make all
make install

でインストール完了

httpd.confとかの変更があるから~。
マンドクセーw

/usr/local/apache2/conf/に
chxj.confを作成以下を記述
(コピーなんだけどね~w)

#====================================================================================
# モジュールをApache2.xにロード
#====================================================================================
LoadModule chxj_module modules/mod_chxj.so

#====================================================================================
# デバイスデータの設定
#====================================================================================
ChxjLoadDeviceData /usr/local/apache2/conf/chxj/device_data.xml

#====================================================================================
# 絵文字データの設定
#====================================================================================
ChxjLoadEmojiData /usr/local/apache2/conf/chxj/emoji.xml

#====================================================================================
# 変換エンジン動作指示命令
# ChxjConvRule ==> ディレクティブ
# "^/chxj.+$" ==> Perl互換のURIパターン
# EngineOn ==> 変換エンジンを動作させる指示。動作させたく無い場合は"EngineOff"
# EUC-JP ==> サーバ側の文字コード。(NONEを指定した場合は文字コード変換しない)
# EUC-JPからCP932に文字コード変換します。
#====================================================================================
ChxjConvertRule "^/chxj.+$" "EngineOn" "NONE"

でhttpd.confに

Include /usr/local/apache2/conf/chxj.conf

を記述

mkdir /usr/local/apache2/conf/chxj
cp /usr/local/src/mod-chxj_0.12.31/etc/* /usr/local/apache2/conf/chxj


/usr/local/apache2/bin/apachectl start

エラー キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

Syntax error on line 4 of /usr/local/apache2/conf/chxj.conf:
Cannot load /usr/local/apache-2.0.63/modules/mod_chxj.so into server: /usr/local/apache-2.0.63/modules/mod_chxj.so: undefined symbol: SSL_set_ex_data

後でgoogle大先生に教えてもらおう

結果
apacheのコンパイルオプション足りないらしいw

--enable-ssl コレ重要w

再度一通りインストールをし
apache再起動
エラーなし。

テストは
適当なi-mode用のxhtmlを書いてみた
内容はヒミツよ~w

でローカルな環境なので当然携帯からアクセスできんわなw
最近、便利だと思い使い始めたFireFox登場
(おせーよおめぇはって言われるけどね~)

FireMobileSimulatorを入れて
3キャリアテスト。

一応ちゃんと出るようには変換されました。
絵文字の晴れだけ書いてテストもやったけど
ちゃんと表示されるし、htmlのタグもちゃんと変換してくれるっぽい。

フリーのmod_ktaiとどっちがいいのかね。

※以下 YUMEMI LABから引用
mod_ktaiは現在以下の環境で動作します。
OS:CentOS 5、RedHat Enterprise 5
ミドルウェア:Apache 2.2以上、Boost 1.33以上、ImageMagick(mod_ktai_imageを使用する場合)
CPU:i386版、x86版
※Apache、Boost、ImageMagickは、ソースからではなくパッケージからインストールしたものをご利用下さい。
ソースからインストールしたものではmod_ktaiは動作できません。
※Apacheはpreforkモードでご利用ください

だって。制約が結構多いんだね。。。。。

問題は端末情報だよね。
新しい端末情報をメンテしてくれる
サービス(有志)とかあると便利だね。

立ち上げるか?でも面倒だし、
バグあっても責任とれないしね~
気が向いたら立ち上げる。

お金払えばラウンドアバウトとかあるけど。
ライセンス料金は激高い気がする。
(400万の保守料2年目から100万だったかな?
最新端末は3営業日以内で出すと。。。)

なんでも、世の中お金だね~w

Linux DVD 焼く

2009年01月21日 16時55分08秒 | Linux
Linux DVD 焼く

何か、WindowsではMac用のDVDが読めないということで
LinuxでISOに変換した。

ISOに変換するのは以前書いたコマンド
dd if=/dev/cdrom of=hoge.iso
でいける

でコレをDVDメディアに焼くには
google大先生によるとgrowisofsと言うのを使うらしい。

growisofs -Z /dev/cdrom=hoge.iso

とする。

ちなみに昔コンピュータの実習で
なんで「hoge」って記述するんですかと
聞いた奴がいたが明確な答えは教師から返って来なかった。

hogeは意味を持たなく説明の為に使っているとかなんとか
でもunixの説明では圧倒的にhogeって多いよね。

mysql 5.1 インストール

2009年01月18日 13時55分10秒 | Mysql
mysql 5.1 インストール
(シシンデラのインストールなんだけどね)

googlecode に手順載ってる通りにすすめる

cd /home
svn checkout http://cicindela2.googlecode.com/svn/trunk/ cicindela

でこれで/homeディレクトリにcicindelaってディレクトリが出来た

グループとユーザーを適当に作成

groupadd mysql
useradd -g mysql mysql

(もちろんログインとかしないんだったら
useradd -g mysql -s /sbin/nologin mysql とかのオプションを
適当につけて。)

mysql 5.1のソースコードをダウンロードする。
以下ページより

http://dev.mysql.com/downloads/mysql/5.1.html

ここのSourceってのを持ってくるrpmでも良いのかも知れないけど、
ソースの方が細かい設定できる気がする。
(もちろん個人的な主観で妄想的なことは十分承知)

※なんか登録させられるけど適当に入れて。
mysql-5.1.30.tar.gzをダウンロード

/usr/local/srcに配置

cd /usr/local/src

tar xvzf mysql-5.1.30.tar.gz

cd mysql-5.1.30

./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb --prefix=/usr/local/mysql-5.1.30
(--with-innodbとかつけないと、innodb関連のオプションを設定ファイルに書くと
そんなオプションしらねーよとか言われる。)

make all
make install

シンボリックリンク作成
ln -s /usr/local/mysql-5.1.30/ /usr/local/mysql

ライブラリを登録
echo /usr/local/mysql/lib/mysql > /etc/ld.so.conf.d/mysql.conf
ldconfig

起動スクリプトコピー
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql

mysqlの設定
ln -s /home/cicindela/etc/mysql/my.cnf /usr/local/mysql/my.cnf

DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql

起動
/etc/ini.d/mysql start
Starting MySQL.............. [ OK ]
と出ればmysqlに関しては終了。

シシンデラを使うには続きがある。

perlモジュールのインストールCPAN経由
perl -MCPAN -e "install DBI; install DBD::mysql; install Ima::DBI;install Time::Piece; install Log::Log4perl;install Module::Pluggable; install Class::Singleton;"

初期設定が出来てないと色々と聞かれるので
Are you ready for manual configuration? [yes] とか出たら
思い切ってNoと答えてみるw
あっ自動でやってくれるのね♪便利ですCPAN。

次apache + mod_perlのインストール
http://httpd.apache.org/download.cgiからダウンロードできる。
(いつのまにかapacheも2.2系まででてるな~。
でもよくわかんねーから。1.3系使います。
うごくのか? apache 1.3+ mod_perl 1.0系で・・・・w)

apacheは何度もインストールしてるから判らなければココをみてくれ。
http://blog.goo.ne.jp/hirohito_japan/m/200807
(sslの手順だけ省けば出来るでしょ。
そろそろ同じことを書くのは面倒になってきたw)

mod_perlのインストール
http://perl.apache.org/download/index.htmlここから
1.0系の方をダウンロードして。

/usr/local/srcに配置

cd /usr/local/src

tar xvzf mod_perl-1.0-current.tar.gz

cd mod_perl-1.30

perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/local/apache/bin/apxs EVERYTHING=1

make all
make install

でmod_perlは完了。

試しに

/usr/local/apache/bin/apachectl start

でエラー無く起動することを確認。

/usr/local/apache/bin/apachectl stop

次、daemontoolsのインストール
googlecodeより

※daemon tools は,入力バッファをフラッシュしたり,定期的に新しいデータで中間集計テーブルを再計算させるために使います。従って,新たなデータが次々に入ってこない場合 ( Demos の例など,固定のデータセットを読み込ませて結果を見るだけの場合など) はこのステップをスキップしても問題ありません。

って書いてあるから次々にデータが入ってくるから入れないと困るんだな。

daemontoolsインストール
http://cr.yp.to/daemontools/install.htmlココから

cd ./admin/daemontools-0.76

./package/install

・・・・・・なんかエラー出たw
教えてグーグル大先生!!!!
パッチが出てるらしいじゃあーりませんか。

wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

patch -p1 <daemontools-0.76.errno.patch ./package/install

ココまでOKで
分析用のメインバッチのシンボリックリンク作成
ln -s /home/cicindela/etc/service/cicindela_batch /service/cicindela_batch

データ挿入用バッファをフラッシュするバッチのシンボリックリンク作成
ln -s /home/cicindela/etc/service/cicindela_flush_buffers /service/cicindela_flush_buffers

コレでインストールはOK

で、

cd /home/cicindela/misc

perl create_init_sql.pl --db_name=test_recommend | /usr/local/mysql/bin/mysql -uroot

でテスト用のDBを作成

vi /home/cicindela/lib/Cicindela/Config/_common.pm

$C{DEFAULT_DATASOURCE} = [ 'dbi:mysql:cicindela;host=localhost', 'cicindela', 'japana' ];

の記述を

$C{DEFAULT_DATASOURCE} = [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ];

に変更して保存

でapache起動

http://localhost/cicindela/record?set=item&op=insert_pick&user_id=1&item_id=1

でアクセスしてみる。.....

なにも反応なし。

ログを確認すると
WARN: Can't connect to data source 'HASH(0x89f79f0)' because I can't
work out what driver to use (it doesn't seem to contain a 'dbi:driver:' prefix and the DB
I_DRIVER env var is not set) at /usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pm line 328
となっている。

google大先生に聞いてみた

http://localhost/cicindela/record?set=item&op=insert_pick&user_id=1&item_id=1
のURLのset=itemと言うパラメータが鍵で、
set=xxxのxxxのフィルタを

cicindela/lib/Cicindela/Config/_common.pmに登録しないとならないらしい。
面倒なのでclip_simpleの記述をコピーしてclip_simpleをitemに変更。

再度アクセス。
またログを確認するとエラーが・・・・
Perhaps the DBD::mysql perl module hasn't been fully installed,
なんかDBDのモジュールが完全にインストールされてねーよ
って言われてるのか?

仕方無いので 再度 perl -MCPAN -e shell
> install DBD::mysqlでインストール

なんかエラー出てるしw コレが原因か。
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
で解消できた。

再度アクセス

おお。ログにエラーなし。データが登録されたのかな?

/usr/local/mysql/bin/mysql -uroot -p test_recommend

mysql> select * from picks;

おぉ入ってるじゃありませんかー 一応成功ですです。
でもぉ~ user_id と item_idは番号ではないのですよー

フィルタ定義を以下のように書くと user_id item_id共に数値以外でも
変換してくれる模様

'item' => {
datasource => [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ],
filters => [
[ 'PicksExtractor', { interval => '1 year' } ],
'InverseUserFrequency',
'ItemSimilarities',
],

# user_id item_idが番号以外
use_user_char_id => 1,
use_item_char_id => 1,

# レコメンドフィルタにItemSimilaritiesを使う設定かな?
recommender => 'ItemSimilarities',
calculation_track => 1,

# 10分毎にレコメンドを再計算
refresh_interval => 10 * 60 * 1,
},

あとはテストデータを放り込んでいくだけ。

以下テーブル一覧だけど。

categories
categories_buffer
item_id_char2int
last_processed
picks
picks_buffer
ratings
ratings_buffer
tagged_relations
tagged_relations_buffer
uninterested
uninterested_buffer
user_id_char2int

う~んpicksにはデータが入るが、extracted_picks も item_similarities_online
も出来ない・・・・・

ログを見ると
WARN: prepare_cached(desc picks_buffer) statement handle DBIx::ContextualFetch::st=HASH(0x8b910dc) still Active at /usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pm line 398

なんかワーニングでてまっせ大先生。

/usr/lib/perl5/site_perl/5.8.8/Ima/DBI.pmを編集

sub _mk_sql_closure の中
? $dbh->prepare_cached($sql)を
? $dbh->prepare_cached($sql,undef,3)に変更

ワーニングはコレで解消された。
それでもでないw 何が悪いのか。。。

良くわからないけど、フィルタを登録しなおしたら
出た。

'item' => {
datasource => [ 'dbi:mysql:test_recommend;host=localhost', 'root', '' ],

filters => [
'PicksExtractor',
'InverseUserFrequency',
'ItemSimilarities',
],

use_user_char_id => 1,
use_item_char_id => 1,

recommender => 'ItemSimilarities',
refresh_interval => 10 * 60 * 1,

},

OKトニー

あとは実装されてるフィルタが何かとか、
この場面ではどのフィルタが有効だとか、
そうゆうことが判ればイケる。

シシンデラ

2009年01月16日 18時59分00秒 | Mysql
シシンデラ

ライブドアのレコメンドエンジン(シシンデラ)Cicindela
面白そうだし、便利そうだから使ってみようかと。

apache + perl + mysqlの組み合わせ

perlとmysqlは初めて
(適当に遊ぶことはあっても本気で作ることは無いな~)

ライブドア+perlは有名だけど。
(Sledge(スレッジ)とか。でもあんまりperl良く知らね)

次はmysqlのインストールになる予感。


OS インストール ドライバ

2009年01月10日 14時44分02秒 | Weblog
OS インストール ドライバ

よくなんか踏んだり調子が悪くなったりした
OSを再インストールすることがある。
もちろんWindowsの類なのだが、

入れた後にドライバがないから動かないと
言われて再度ドライバを検索し、インストール
させられる。
これが案外手間のかかる仕事。

便利なソフトとしてDouble Driverってソフトがある。
動いているOSのドライバのバックアップを取ってくれる。
これで外部メディアに保存しておけば、あとはこれを
再度インストールするだけなのでスゲー便利。

以下リンク(窓の森)
http://www.forest.impress.co.jp/article/2008/12/12/doubledriver.html

手間が減ることはいいことだ。