Tuesday, April 28, 2009

ludia 1.5.1 and senna (search fulltext) install and configure for postgresql(ludia とsenna インストールと設定)

LudiaはSennaを使ったPostgresSQL用の組み込み型全文検索インデックスエンジンです。
ダウンロード

下記サイトからダウンロード。

http://sourceforge.jp/projects/ludia/

Mecab、MeCab辞書、Sennaが含まれているludia-withdepsのパッケージをDLします。
インストール
解凍

$tar -zxvf ludia-withdeps-1.5.1.tar.gz
$cd ludia-1.51/deps

MeCabのインストール

分かち書き方式に形態素解析を利用しない場合は、 MeCab(と辞書)をインストールする必要はありません。その場合はSennaのインストールに進んでください。 (MeCabをインストールしない場合はSennaのインストールの際に、 --without-mecabオプションを指定する必要あり)

MeCabをインストールする場合は、アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf mecab-0.97.tar.gz
$ cd mecab-0.97
$ ./configure --with-charset=utf8
$ make
$ su
# make install

MeCab辞書のインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ su
# make install

Sennaのインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ tar -zxvf senna-1.13.tar.gz
$ cd senna-1.13
$ ./configure
$ make
$ su
# make install

MeCabをインストールしていない場合には、以下のように --without-mecab オプションの指定が必要

$ ./configure --without-mecab

Ludiaのインストール

アーカイブを展開し、以下の要領でビルドとインストールを行います。:

$ ./../../
$ ./configure
$ make
$ su
# make install

pg_configコマンド、senna-cfgコマンドのインストール先にPATHが設定されていない場合、以下のようにそれぞれのpathをconfigureオプションで指定してください。:

$ ./configure --with-pg-config=/usr/local/pgsql/bin/pg_config --with-senna-cfg=/usr/local/bin/senna-cfg

インデックスアクセスメソッドの登録

$ psql -f /usr/share/pgsql/pgsenna2.sql testdb -u

postgreSQLの設定ファイル編集

postgresql.confに下記の設定を追加

custom_variable_classes = 'ludia'
ludia.max_n_sort_result = 10000
ludia.enable_seqscan = on
ludia.seqscan_flags = 1
ludia.sen_index_flags = 31
ludia.max_n_index_cache = 16
ludia.initial_n_segments = 512

インデックスの作成

インデックス作成例:

CREATE INDEX student_fulltext_index_name
ON student
USING fulltext(studentname);

検索クエリ

SELECT * FROM student WHERE studentname %% 'もも';

Monday, April 27, 2009

postgresql log setting postgresql ログ 設定

syslogにログをはく

vi /usr/local/pgsql/data/postgresql.conf

log_destination = 'syslog'
log_statement = 'all'

syslogの設定にも追加

vi /etc/syslog.conf

local0.* /var/log/postgresql.log

syslog再起動

/etc/init.d/syslog restart

Saturday, April 25, 2009

perl pdf encode utf8 and shift_jis(japanese font)

#!/usr/bin/perl -w
use strict;
use PDF::API2;
my $pdf = PDF::API2->new;
$pdf = PDF::API2->open('/tmp/old.pdf');
my $page = $pdf->openpage(1);
my $gfx = $page->gfx;
#my $jfs = $pdf->cjkfont( 'KozGo', -encode=>'utf8' );
my $jfs = $pdf->cjkfont( 'KozGo', -encode=>'shiftjis' );
my $text = "T03 2007/1/23 どんなかんじでしょうかね";
$gfx->textlabel(30, 800, $jfs, 20, $text, -color=>'red');
$pdf->saveas("new_file.pdf");

Friday, April 24, 2009

add more package for apache httpd アパッシュは、モジュール追加

add more package for apache httpd アパッシュは、モジュール追加
インストーラされてるモジュールの確認

# /usr/local/apache2/bin/httpd -l

これでモジュールの一覧が見える。ここに mod_so.c が無いともう駄目らしい。
コンパイル

ソースがあるディレクトリを探して移動する。
rewrite module は httpd-2.0.59/modules/mappers にあった。

# /usr/local/apache-2.0/bin/apxs -c mod_rewrite.c

インストール

そしてインストール

# /usr/local/apache-2.0/bin/apxs -ian rewrite mod_rewrite.la

設定を確認して apache をリロード

httpd.conf には勝手に追加されるらしい。

LoadModule rewrite_module modules/mod_rewrite.so

なので後は再ロードする。

# /etc/init.d/httpd reload

Thursday, April 23, 2009

perl pdf table and image

#!usr/bin/perl -w
use PDF::API2;
use PDF::Table;

# PDFつくる
my $pdf = PDF::API2->new;
my $pdftable = new PDF::Table;


# ページつくる
my $page = $pdf->page(0); # 0 は最後に追加

#ページのサイズ決める
$page->mediabox( 'A4');
#ピクセルでサイズ指定
#$page->mediabox( 512, 512 );
# mm で指定。PDF::API2 は 72dpiらしいので
#$page->mediabox( 210 / 25.4 * 72 , 297 / 25.4 * 72 );

# 画像を入れる
my $image = $pdf->image_jpeg('bill.jpg');
my $gfx = $page->gfx;
# 左下スミが原点
my $xpos = 100 ; my $ypos = 500;
my $image_resolution = 350 ;
my $scale = 400 / $image_resolution ;
$gfx->image( $image, $xpos, $ypos, $scale );

my $some_data =[
["1 Lorem ipsum dolor",
"Donec odio neque, faucibus vel",
"consequat quis, tincidunt vel, felis."],
["Nulla euismod sem eget neque.",
"Donec odio neque",
"Sed eu velit."],
#... and so on
];

$left_edge_of_table = 50;
# build the table layout
$pdftable->table(
# required params
$pdf,
$page,
$some_data,
x => $left_edge_of_table,
w => 495,
start_y => 750,
next_y => 700,
start_h => 300,
next_h => 500,
# some optional params
padding => 5,
padding_right => 10,
background_color_odd => "gray",
background_color_even => "lightblue", #cell background color for even rows
);


# 既存のPDFのページを1ページ追加する
# 既存のPDFを開く
my $mypdf = PDF::API2->open('aaa.pdf');
# 16ページ目を追加する
$pdf->importpage( $mypdf, 16);

# 保存する
$pdf->saveas('ddd.pdf');

Monday, April 20, 2009

LINUXスワッピングを追加(add extra swap)

SWAP space under RHEL/CentOS

Adding a 250 MB swap file to the system

Create an empty 250M file :
dd if=/dev/zero of=/swapfile bs=1024 count=2097152

Create the swap on the newly created file :
mkswap /swapfile

Enable the new swap file :
swapon /swapfile

Edit fstab and add :
/swapfile swap swap defaults 0 0

Verify if the new swap space is enabled :
cat /proc/swaps
free -m


分からないから、質問して下さい。

PHP GD インストールと設定

PHP 公式サイト から PHP のソースファイルをダウンロードしてインストールを行う。
PHP のインストールと実行には flex と libxml2 が必要。
また PostgreSQL や MySQL といったデーターベースサーバーとの連携を有効にするためには PostgreSQL、MySQL が必要。
PHP を使った CMS や BLOG システムでよく利用される GD ライブラリ(画像を動的に生成する機能)を有効にする。
このためには zlib と libpng が必要。
# yum -y install flex libxml2-devel

MySQL との連携を有効にするためには MySQL のインストールが完了している必要がある。
GD ライブラリを有効にするためには zlib と libpng が必要。

yum を使って zlib と libpng をインストールする場合は以下のように実行する。
yum を使って libxml2 をインストールした場合 zlib はすでにインストールされている。
# yum -y install zlib-devel libpng-devel

また GD で JPEG を扱う場合は JPEG 画像ライブラリである libjpeg が必要。
# yum -y install libjpeg-devel

PHP のソースファイルを PHP 公式サイト から/usr/local/srcへダウンロードしてコンパイル、インストールを行う。
但し、そのままPHP5をソースからインストールすると/(Apacheインストールディレクトリ)/modules/----に作成されるべきモジュールである

libphp5.so

が作成されない。これは、バグらしいので、以下バグに対応させたインストール方法を記載する。

<バグ対策済みインストール方法>
# mkdir /usr/local/php-5.2.6
# cd /usr/loca/src
# tar zxf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure --prefix=/usr/local/php-5.2.6
# make
# make install
# make clean
# make distclean
# ./configure --prefix=/usr/local/php-5.2.6 --enable-mbstring --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-gd --with-zlib --with-jpeg-dir
# make
# make install

<-- configure オプションの解説>
① インストール先のディレクトリを設定。
--prefix=/usr/local/php-5.2.1

② マルチバイト文字を有効(マルチバイト文字列関数である mbstring 関数を有効にする)。
--enable-mbstring

③ Apache の動的モジュールとして組み込む設定。
--with-apxs2=/usr/local/httpd/bin/apxs

④ MySQL データーベース、PostgreSQL データーベースとの連携を有効にする。
--with-pgsql=/usr/local/pgsql
--with-mysql=/usr/local/mysql

⑤ GDライブラリを有効にする。
--with-gd
--with-zlib

⑥ JPEG 画像ライブラリを有効にする。
--with-jpeg-dir

PHP のディレクトリを /usr/local/php としてアクセスできるようにシンボリックリンクを作成。
# ln -sfn /usr/local/php-5.2.6 /usr/local/php5

httpd.confにPHPファイルタイプ情報追加
AddType application/x-httpd-php.php  ← 追記

PHP とMySQLとphpMyAdmin間の通信はソケット(ファイル)で行われるためソケットファイルのパスは3者の各設定ファイルで統一したものを指定し ておく必要がある。以下、PHPの設定のファイルである/etc/php.iniにソケットのパスを指定する方法を記載する。

/etc/php.ini
[MySQl]セクション内
mysql.default_socket = /var/lib/mysql/mysql.sock  ← 追記

PHP 
'./configure' '--with-apxs2=/usr/sbin/apxs' '--with-pgsql' '--with-iconv' '--enable-mbstring' '--enable-ftp' --with-zlib --enable-mbstring --with-curl --with-curlwrappers --with-pdo-pgsql --with-gd --with-freetype-dir --with-jpeg-dir

make

make install

どこか分からないから、質問下さい!