アーカイブ

2010 年 1 月 のアーカイブ

peclのjsonはnumber型をintに桁落ちする

2010 年 1 月 27 日 コメントはありません

いろいろな制約の関係でCentOS5系のPHP5.1.6でjsonの処理を行わなければならず、Jsphonだとパフォーマンス的に厳しいのでpeclのjsonを利用することになりました。

利用していたところ、mumber型がint型に桁落ちする現象に遭遇。


$ php -r "var_dump(json_decode('{\"id\":8271518654}'));"
object(stdClass)#1 (1) {
  ["id"]=>
  int(2147483647)
}

調べてみたところ、PHP5.2.1の時代にバグレポートされてその後fixされたが、peclにはバックポートされてないようでした。

PHP Bugs: #41567: json_encode double conversion is inconsistent with PHP
バグレポートを参考に修正し、phpizeしてみましたが変わらず。

PHP5.2で取り込まれてるわけですが、そこでphpizeすればいけるんじゃ?ということで5.2.3のソースをダウンロードしphpize後make成功したのでインストールしてみましたが件の件は修正されていませんでした。

結局、PHP5.2.4で修正されていることを確認したのでここに軟着陸。


$ cd /usr/local/src
$ wget http://museum.php.net/php5/php-5.2.4.tar.gz
$ tar zxf php-5.2.4.tar.gz
$ cd php-5.2.4/ext/json
$ phpize
$ ./configure
$ make
$ sudo make install
$ php -i | grep json
$ php -r "var_dump(json_decode('{\"id\":8271518654}'));"
object(stdClass)#1 (1) {
  ["id"]=>
  float(8271518654)
}

make通ったのはPHP5.2.9まで、PHP5.2.5~PHP5.2.9はjson_encodeで問題が見つかった為結局PHP5.2.4のを利用することに。
もうちょい時間があったらしっかり検証したいとこですが。

カテゴリー: php タグ: ,

MeCabのインストール

2010 年 1 月 1 日 コメントはありません

パッケージが見つからなかったのでソースからコンパイル
MeCabのインストール

cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.98.tar.gz
tar xzf mecab-0.98.tar.gz
cd mecab-0.98
./configure --prefix=/usr/local/mecab-0.98 --with-charset=utf8
make
make install
ln -sfn /usr/local/mecab-0.98 /usr/local/mecab

MeCab辞書のインストール

cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --prefix=/usr/local/mecab --with-charset=utf8 --with-mecab-config=/usr/local/mecab/bin/mecab-config
make
make install
カテゴリー: 日記 タグ: