- 引きこもり
- 元気になりつつあります
- 仕事順調
- Railsいじれるようになった
- 引越しする予定
json_decode()のJSON_BIGINT_AS_STRINGをPHP5.2.xで使う
twitterの投稿IDをjson_decode()できない
PHPのjson_decode()が大きい数値をfloat()に変換してしまう現象があり、twitterのIDをdecodeできなくて困った。
floatに変換しない方法は無いものだろうか?
http://www.php.net/manual/ja/function.json-decode.php を見たところ、JSON_BIGINT_AS_STRINGというオプションを指定すると、Stringとして扱ってくれるようなんだけど、その機能は開発中のPHPにしか入っていない。
それじゃ、開発中のjson_decode()を使おう
ということで、どうしてもjson_decode()の新しいバージョンが使いたかったので、
PHPの開発中のソースをダウンロードして、新しいバージョンのjson.soをコンパイルしたときのメモでござる。
ここで、ダウンロードするソースを確認。
http://svn.php.net/viewvc/php/php-src/trunk/ext/json/
svnを使ってソースの取得
$ svn co http://svn.php.net/repository/php/php-src/trunk/ext/json php-trunk-20110128-ext-json
取得したソースのディレクトリへ移動して
$ cd php-trunk-20110128-ext-json
さて、extensionのコンパイルでござる。
phpizeをして、configureの作成をします。
$ phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519
configureができるので、実行するよ。一緒のphp-configの場所を指定するなり。
$ ./configure --with-php-config=/usr/bin/php-config
終わったら、make をしてみて既存のjson.soと置き換えてみる。
CentOSの場合、/usr/lib/php/modules/json.so に合ったので、そこと置き換えました。
テスト用のPHPファイルを作って、
<?php echo "php version:".phpversion()."\n"; echo "============================\n"; $json = '{"bignumber":100999999999999999999}'; var_dump( json_decode($json)); var_dump( json_decode($json,false,512,JSON_BIGINT_AS_STRING));
実行してみると、
$ php x.php PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/json.so' - /usr/lib/php/modules/json.so: undefined symbol: Z_DELREF_P in Unknown on line 0
むむ、こまった。
Z_DELREF_P()って何だ?って思って、ググって見ると、PHP5.2.2からPHP5.2.3になるときにリファレンスカウンタ関係のAPIが変わったらしい。*1
とりあえず、それっぽいAPIに置き換えてみる。
JSON_parser.cにある、Z_DELREF_P()をZVAL_DELREF()に変更して、再度コンパイルをしよう。
さて、再度実行。
$ php x.php PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/json.so' - /usr/lib/php/modules/json.so: undefined symbol: zend_parse_parameters_none in Unknown on line 0
こんどは何だ? zend_parse_parameters_none() はjson_last_error()で使っているのかな。
あんまりつかわなそうな関数なので、コメントアウトしてしまいました。
/* {{{ proto int json_last_error() Returns the error code of the last json_decode(). */ static PHP_FUNCTION(json_last_error) { // if (zend_parse_parameters_none() == FAILURE) { return; // } RETURN_LONG(JSON_G(error_code)); } /* }}} */
さて、コンパイルしなおして、実行してみよう。
$ php x.php php version:5.2.4 ============================ object(stdClass)#1 (1) { ["bignumber"]=> float(1.01E+20) } object(stdClass)#1 (1) { ["bignumber"]=> string(21) "100999999999999999999" }
ふう、できた。よかったよかった。
あれ?
twitterからidじゃなくて、id_strつかってねって書いてある。泣きたい。><
http://groups.google.com/group/twitter-development-talk/browse_thread/thread/6a16efa375532182?pli=1
旧電話番号つかえなくなりました
0x0-65xx-8724の電話番号つかえなくなりました。
もし新しい電話番号を知りたい方は、ここにコメントとか、twitterのjksyあてにDMください。
ELBを使うように設定しました
これでサーバーの追加がやりやすくなった。
子猫のここ1ヶ月まとめ
にゃんこを拾ってから1ヶ月経ったのでまとめる。
- 2010/07/03 にゃんこを拾った
- ビニール袋にインしてた。 http://twitpic.com/21wv9u
- お風呂入れてミルクあげたら寝まくりんぐ。 http://twitpic.com/22263x
- 2010/07/04
- 夜中にミルク上げたり、にゃんこ欲しいかも、というのを聞いて[@oremaxis]さんに連絡してみる
- 2010/07/05
- 哺乳瓶を買ってきて、哺乳瓶使いになる
- 2010/07/06
- 実家ににゃんこを預ける
- 2010/07/09
- 実家から連れて帰り、ペットシッターさんに頼む
- 目があいてきた http://twitpic.com/23ibs9
- 2010/07/10
- ミルクをよく飲む。元気いっぱい。 http://twitpic.com/23wkib
- 2010/07/12
- 2010/07/13
- [@oremaxis]さんが来て、にゃんこを見て行ってくれた。気に入った子猫がいるといいんだけどなー。
- 茶白のにゃんこも目が開いた! なかなか開かないので、セイントセイヤのシャカかと思った。http://twitpic.com/250t5c
- 2010/07/16
- 凛々しくなってまいりました。 http://twitpic.com/25sfw4
- 2010/07/17
- ミルクあげるのも大変。よく飲みまくり。http://twitpic.com/25t928
- 2010/07/18
- いつまでもバッグのなかだとかわいそうなので、ケージを用意した。お気に召すといいんだけど。 http://twitpic.com/26gq5z
- お気に召さなかった様子。ところてんみたいにでる三毛。http://twitpic.com/26gr8t
- なぜか違うネコが入った。君は違うんだけど。 http://twitpic.com/26hhqo
- 2010/07/24
- 出歩くようになりました。 http://twitpic.com/27vnfh
- 2010/07/25
- トイレを作ってあげたら、なぜかみんなでそこで寝るようになってしまった。http://twitpic.com/28cils
- エアコンついたよー。 http://twitpic.com/28ikwh
- 2010/07/26
- 一番からだの大きいにゃんこが雷にビビる。 http://twitpic.com/28pd5n
- 2010/07/28
- [@oremaxis]さんに三毛がもらわれていきました。 http://twitpic.com/29f0ie
- 2010/07/31
- [@AresClares]がウチに来て、にゃんこハウスになってくれた。http://twitpic.com/2aaxp9
- 脱走癖が抜けない。 http://twitpic.com/2a6q31
- 猫巻。 http://twitpic.com/2acsnf
- 2010/08/03
- タワシに変化した。 http://twitpic.com/2b7wo1
- 2010/08/06
- 離乳食飛び越えて、ササミ食うようになった。 http://twitpic.com/2c3fpj
- なぜか仲良しトイレ。 http://twitpic.com/2c4fws
- 2010/08/07
- リビングへ進出。 http://twitpic.com/2cbfhi
- 戸田公園の花火。 http://twitpic.com/2cen8k
捨て子ニャンコ拾った
ビニール袋に入って川岸に捨てられていた。
川のフェンスの向こう側にいたので、フェンスを乗り越えていった。
ちくしょう、捨てるなら拾いやすいところに捨ててくれよ。
病院に連れて行ったら、小さいから病気の有無はわからない。
へその緒がついていたから、生後1日か2日ぐらいじゃないかなー、といわれた。
家につれて帰って、粉ミルクをあげたけどなかなか飲まないので、いろいろ試行錯誤した後、下記の条件でよく飲むようになった。
- 液体ミルク
- 人肌よりちょい熱いぐらい(江戸っ子じいちゃんのお風呂ぐらい)
- 脱脂綿にたれない程度に含ませる
- 吸い付いてきたら、スポイトでミルクを補給
ん?なんか、ソフトのインストール手順みたいな書き方だな。
しばらくは夜中おきて、子にゃんこのお世話かなー。
他にとった、にゃん子の写真 http://twitpic.com/22263x