PHP

array_diff_recursive

PHP

ググっても見つからなかったので作ってみた。(所要時間10分) 解決したい問題 'a', 'b' => array('b', 'c')); $b = array('a' => 'a', 'b' => array('b')); var_dump(array_diff($a, $b)); 残念な結果 array(0) { } function $v) { if (array_key_…

PHPでBit処理の簡易フレームワークを作ってみた。

PHP

名付けて BitIndexer とりあえず Parse だけ。Builder はこれから作る。 テストコード 14bit ずつ切り出してダンプ

配列の + 演算子が便利な件 (2)

PHP

以前、PHP 配列の + 演算子が便利な件 - yoyaのメモ の中で、上書き関係がどうのと書きながら、 もっと本質的な挙動の違いに触れなかったので、今更ながら追記。 array_merge は連想配列の合成には使えない 連想配列でキーに数字(又は数字と解釈できる文字列…

swftools for PHP

PHP

swftools を PHP に binding する試みを開始。 準備 とりあえず、php extension を作る際のイニシエーションの儀式。 % cd php-5.2.9 % ./ext_skel --extname=swftools % cd swftools % vi config.m4 % ./configure % make 詳しくはこっち ↓ http://pwiki.aw…

PHP勉強会@関東

PHP

http://events.php.gr.jp/events/show/71なんでかPHPと関係ないバグ管理システムのRedmineが1番面白くてタメになった気がする不思議。id:yandodさん最高!冒頭のフレームワーク話しは XSS対策で入力バリデート強化って時点で…なんていうか、サニタイズ言う…

mb_strlen() 関数の落とし穴

PHP

会社の同僚と mb_strlen の話をしていて以下のページを見つけましたが、 http://itpro.nikkeibp.co.jp/article/COLUMN/20070307/264117/ というように、mb_strlen()関数の第2引数に$strの文字エンコードを指定すると、 PHPの内部エンコーディング設定に関わ…

order by 風な sort 関数 (2)

PHP

そして、array_multisort で同じ事が出来ると同僚から指摘を受ける… ○rz http://www.okuryu.com/blog/archives/2006/03/100202.html 公式マニュアルを見ると、マトリックスソートの説明が前半に書いてあって、 使えないと思い込んでましたが http://jp.php.n…

order by 風な sort 関数

PHP

ORDER BY で複数カラム指定したような sort 関数がないかな。 といった話があったので、試しに作ってみました。 http://diary.awm.jp/~yoya/data/2008/12/11/order_by_sort.phps 使い方サンプル $array = array( array('name' => 'berry', 'price' => 200, '…

PHP 配列の + 演算子が便利な件

PHP

配列(array)変数を連結する関数として、 array_merge と array_merge_recursive の2つが有名ですが、 + 演算子も使える事が意外と知られていないような気がするので自分へのメモを兼ねつつ紹介。 実験コード $a = array('goo1' => 'goo1', 'goo2' => array(…

swfdump のソースコード公開

SWF ファイルの中身を解析するページを用意してますが、 http://awm.jp/~yoya/php/flash/swfdump/ 移動しました。↓ http://awm.jp/~yoya/php/swfed/index.php これのソースコードを公開してという声は以前からあり、また、 使いたいけど仕事で使う SWF ファ…

画像フォーマットを気にせず image_id で画像入れ替えできるように

今までは、BitsLossless に対しては png 画像を。BitsJpeg に対しては jpeg 画像しか 差し替えられなかったのですが、BitsJpeg に対して png 画像を。また、その逆でも 差し替えが出来るようにしました。 あと、BitJpeg(1) にαチャネルを与えてもマスクが効…

mp3-dev branch 作成

replaceMP3Data のコードが書きかけで止まっているので、 他の修正をする度にコードをどかして commit してます。 そろそろ面倒になって来たので、mp3 対応の branch を切りました。 mkdir trunk svn add trunk svn commit svn rename src trunk/src svn ren…

Skype on Linux がメモリを使いすぎる問題 (3)

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 27944 yoya 15 0 94656 45m 13m S 41.9 4.6 11:01.74 skype 問題なかったので、次はボットをつないで様子を見ます。

bs_unescape.php

PHP

エラーのログを見てると、たまに日本語がバックスラッシュでエスケープされてる事があるので、それを解くだけのページを作ってみました。 http://awm.jp/~yoya/php/bs_unescape.php 例えば、 \xe8\xb5\xa4\xe9\x9d\x92\xe9\xbb\x84\xe8\x89\xb2 のような文字…

memcachedを使ったPHPのシングルトン実装?

PHP

以前、以下のページを参考にコードを書かれて困ったのを思い出したので。 http://www.tsujita.jp/blojsom/blog/default/PHP/2007/01/12/memcached%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FPHP%E3%81%AE%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%88%E3%83%B3%…

PHP で 3D plot

PHP

GIF 画像合成では減色処理が必要になるので、減色アルゴリズムの検証として 色んな画像ファイルに対して、 R,G,B ヒストグラムを 3D にマッピングしてみようかと、 軽く 3D plot 処理を考えていたところ、以下の PHP ライブラリを紹介してもらいました。 PHP…

Skype API wrapper class (PHP) を試してみた (4)

何時の間にか作者に捕捉されてましたw http://diary.eth.jp/?date=20080918#p03 github での fork & pull をお望みのようなので、 github にアカウントを作成*1して、何も考えず fork 。 http://github.com/yoya/ http://github.com/yoya/php-skype/tree/ …

最小公倍数

PHP

GIF89a Overlap for PHP download | SourceForge.net ↑このツールで複数GIFファイルのフレーム数の最小公倍数を算出する必要があるので、 とりあえずそれっぽいのを実装。 確か、お互いに引き算し合って残った数値がそれとかいう理屈だったので。 そのままコ…

GIF89a Overlap for PHP

giflib/util/gifovly.c に触発されて、gifovlap extension なるものを実装開始。 gifovly.c がアバター画像作成っぽい処理だと思っていましたが、よくコードを読むと、 アニメーションGIFの各フレームを重ね合わせる処理をしていて、つまり dispose 的な 処…

Skype API wrapper class (PHP) を試してみた (3)

DIALOG_PARTNER でエラーになる件 http://www.novic.jp/skype/skype-api/skype-api-30ea30d530a130ec30f330b9-1/30aa30a730af30c8/chat-30aa30a730af30c8 https://developer.skype.com/Docs/ApiDoc/OPEN_IM なるほど。Chat のメッセージなのね。 Skype/Chat.…

Skype API wrapper class (PHP) を試してみた (2)

試しに、Bot を動かしてみました。 http://labs.gree.jp/Top/OpenSource/Skype/Document/Tutorial_Bot.html % cd example % php skype_bot.php PHP Fatal error: Uncaught exception 'Exception' with message 'plugin file not found [Skype/Bot/Plugin/Log…

Skype API wrapper class (PHP) を試してみた

Skype protocol の仕様は公開されていないので、Skype のインスタンスを起動して、 それを proxy のように利用するのが Skype API の方式。 Skype API on Linux - https://developer.skype.com/Docs/ApiDoc/Skype_API_on_LinuxLinux では D-Bus で通信するら…

movie ftyp 処理

PHP

最近、動画関連のページを色々と見回っています。 http://pwiki.awm.jp/~yoya/?video 以下のページを見て何となく ftyp 処理のプログラムを作りました。 http://mobilehackerz.jp/archive/wiki/?3GPP2%20File%20Format プログラム http://awm.jp/~yoya/php/m…

php_qr extension

PHP

試しに導入。 普通は↓こちらを使いそうですが、 QRコードクラスライブラリ for PHP4/5 - Qrcode encode class library for PHP4/5 「実行時にはそれなりの負荷がかかる」と明言してるので、 extension の方を試みました。 php_qr-0.1.0.tgz php_qr-0.1.0 -…

RETURN_STRINGL(s, l, dup)

PHP

extension を作る時に第3引数をあやふやなまま使っていたので、 一応整理。 php-5.2.6/Zend/zend_API.h を見れば一目瞭然。 #define RETURN_STRINGL(s, l, duplicate) { RETVAL_STRINGL(s, l, duplicate); return; } ↓ #define RETVAL_STRINGL(s, l, duplic…

PHP と srand と seed (2)

PHP

google で検索してたら http://www.sasaraan.net/program/php/tips.php?id=rand mt_srand(microtime()*1000000); の記述を見つけました。これだと乱数列が100万種に限定されるので、 mt_srand(microtime(true)*1000000); とかの方が良いのでは。 といった指…

PHP と srand と seed

PHP

億のレコード数を目指すサービスで、 レコードの uniq id を生成する PHP コードをみて絶望したっ! function createUniqID() { srand( (double)microtime()*1000000 ); <略> それは勘弁して… ・゚・(ノД`)・゚・ (検索で見つけたどこかのブログからコピペしてきた…