PHP

Continuation 0.0.4

php_continuation-0.0.4devel.tgz 一昨日書いた以下の項目を実装。 配列で continuation に渡す引数リストを指定する方法はダサいしミスの元になりやすいので、次のバージョンでは後方互換性を無視して可変長引数にしようと思います。 今は実行時にローカル…

スレッディング拡張モジュールは断念

PHP

APR を使えばプラットフォームごとのスレッドの実装に気を遣わなくていいじゃーん! ってことでクラス図を書いたりなんかしてやる気マンマンだったのですが、関数のコールスタック EG(argument_stack) とかその他諸々のスレッド間で独立していないと困る情報…

Teaser

PHP

Class Chart of AtThread, Draft 2 posted by (C)rsk Class Chart of AtThread, Draft 2.1 posted by (C)rsk

Continuation 0.0.3

php_continuation-0.0.3devel.tgz 昨日予告してたやつです。 array co_inspect(resource continuation $co) continuation にバインドされている変数のコピーを取得する。 アーカイブに付属の使用例だと何が嬉しいのかよく分からないと思うので、別の例をば。…

Continuation 0.0.2

php_continuation-0.0.2devel.tgz コールバック関数がコードによっては予期しない動作をする可能性があったので、修正版をリリースします。 次のバージョンでは、continuation にバインドされている変数をエクスポートする関数を実装する予定です。

コルーチン改め継続

php_continuation-0.0.1devel.tgz 別に C言語レベルでコンテキストスイッチしなくても、関数が呼び出される際の状態を保存・復元すれば似たようなことができるじゃん! と思いつき、変数のシンボルテーブルの複製をリソースにすることでコルーチンっぽい操作…

OpenDogs Extension 0.4.0

php_opendogs-0.4.0.tgz IEEE754 に基づいた浮動小数点数/16進表記文字列の変換をする関数を追加。 string od_float2hex(float $num[, bool $as_single = false]) 浮動小数点数の16進表記を得る。$as_single が true かつ $num が単精度で表現可能な値なら8…

素数探索

PHP

予め生成しておいたテーブルから素数を探索するクラスを作ってみました。 31ビットで表せる素数は 2 から 2147483647 (0x7fffffff も素数!) までの約1億500万個あるのですが、二分探索法を使って高速・省メモリに素数を調べることができます。 ダウンロード …

コルーチン実装失敗

PHP

ここ二日ほど某イベント用に PHP でコルーチンを実現するエクステンションを作ってました。 ・・・が、どうも ZendEngine の VM と、コルーチンを呼び出す/コルーチンから復帰する際のコンテキスト切り替えの相性が悪いらしく、特定の条件でしかまともに動か…

YAML パーザ改良の巻

php_yaml-0.0.1devel3.tgz 以前のバージョンではクォートされていないスカラー値の int/float 判定と、int/float のパース処理はかなり手を抜いていて、PHP 組み込みのものを使っていました。そのため 2進数、60進数、可読性のためにアンダースコアが途中に…

YAML パーザのベンチマーク

PHP

そろそろポインタいじりにも飽きてきたので Pure LL な世界に戻ろうかと思う今日この頃です。 (pthread extension を書いてみようかと思ったこともあったけど、泥沼に嵌る予感がしたので中止) 思うところあって、Spyc と拙作の LibYAML エクステンションでベ…

OpenDogs extension 0.3.0 - PHP で複素数演算

php_opendogs-0.3.0.tgz C99 の complex.h を使った複素数のサポートを追加しました。 倍精度実数の精度に制限されるので厳密さが求められる用途には厳しいかもしれません。 complex リソースで複素数の演算をします。(下記 API 一覧の返値/引数型では単に c…

PDO_PGSQL でラージオブジェクト

make test で必ず失敗するので PDO_PGSQL におけるラージオブジェクトのサポートは腐っているものとばかり思っていたのですが、実はそうではありませんでした。 なんと、腐っていたのはテストケースの方でした。その発想はなかったわ。 というわけで、ちゃん…

OpenDogs extension 0.2.0 is out!

php_opendogs-0.2.0.tgz 文字列が UTF-8 として妥当なシーケンスか検証する関数 od_unistr_valid() と機能一覧を連想配列で返す関数 od_get_features() を追加したり、別件で作ってた Unicode 正規化機能をマージしたり。 正規化を有効にするには configure …

Yet-Another YAML parser for PHP

php_yaml-0.0.1devel.tgz Yet-Another っていうか LibYAML のラッパに過ぎないわけですが。 しかも emitter は未実装で、parser も基本型のみで、複合キーやユーザ定義タグにも非対応。 さらに対応している libyaml バージョン 0.0.1 と svn ではずいぶん中…

OpenDogs extension 0.1.0 is out!

このブログの過去のエントリで書いたネタと非公開だったネタ、いくつかをまとめて一つの拡張モジュールにしてみました。 php_opendogs-0.1.0.tgz Base32、UTF-8 対応の chr() & ord()、整数と平衡三進法の相互変換、dSFMT による疑似乱数を提供します。 イン…

pecl_http の隠し機能?

PHP

今回は HttpRequest クラスのドキュメント化されていない (っぽい) 機能を紹介します。 なんと、サブクラスのメソッドとして onfinish が定義されている場合、リクエスト終了時に自動でコールされるのです。 onfinish メソッドは引数としてリクエストが成功…

セッション ID 生成モジュールを更新

痛いバグがあったので、修正版をリリースします。 php_session_hash (Alternative Session ID Generator Extension Module for PHP) php_session_hash-0.0.5.tgz PHP 組み込みの MD5 および SHA1 利用時の致命的なバグを修正

JPEG ロスレス回転モジュールを更新

ストリーム API とリサイズのサポートを追加しました。 php_jpegtransform (JPEG Transformation Extension Module for PHP) php_jpegtransform-0.2.0.tgz テストケースを記述 使用例を追加 (examples ディレクトリ) 入出力にファイル名でなくストリームリソ…

QRコード生成モジュールを更新

拡張子を取得するための関数を追加しました。 php_qr (QR Code Generator Extension Module for PHP) php_qr-0.2.0.tgz 関数 string qr_extension(int $format[, bool $include_dot]) およびメソッド string QRCode::getExtension([bool $include_dot]) を追…

PHP で JPEG ロスレス回転

ありそうで無かったので作ってみました。 php_jpegtransform-0.0.1.tgzこのモジュールのソースコードには IJG JPEG Library (libjpeg) より以下のファイルを拝借しています。 README (libjpeg のライセンスにより) jinclude.h jpegint.h transupp.c transupp…

QRコード生成モジュールの使い方 for PHP5

ドキュメントを書いているときに QRCode::addData() および QRCode::readData() での第二引数 $mode の取り扱いについて想定外の動作になっていたことに気付いたので、修正版をリリースします。 php_qr-0.1.4.tgz 0.1.4 で致命的なバグを加えてしまっていた…

libqr-0.1.4, php_qr-0.1.3 & pyqr-0.1.1

今回はOO的に書いてみました。finalizeし忘れてハマりました。。。 php_qrがバージョンアップ - Do You PHP はてな サンプルを書いてくださってありがとうございます。やっぱりそこはハマりますよね... ちなみに finalize 前に getSymbol/outputSymbol とか…

php_qr-0.1.2

php_qr-0.1.2.tgz PHP4 でも QRコードをイメージリソースとして取得できるように、関数 []resource qr_image_resource(string $data[, array $options[, array &$colors]])[] を追加しました。 また、qr_image_resource() の第三引数または QRCode::getImage…

php_qr-0.1.1 & libqr-0.1.2

php_qr-0.1.1.tgz libqr-0.1.2.tgz libqr の内容はすべて php_qr に含まれています。 php_qr の変更点 for PHP4/5 出力形式に対応した MIME タイプを返す関数 string qr_mimetype(int $format) を追加。 for PHP5 only 出力形式に対応した MIME タイプを返す…

php_qr-0.1.0

php_qr-0.1.0.tgz PHP4/5 用の QRコード生成拡張モジュールです。 インストール方法 通常の PHP 拡張モジュール同様にインストールできます。 tar xfz php_qr-0.1.0.tgz cd php_qr-0.1.0 phpize ./configure --enable-qr make sudo make install PHP の GD …

訂正です

PHP

この件に関しては僕の認識が誤っていました。MT はゲーム等のクリティカルでない用途に使う乱数としては使い勝手が良いものだけど、セキュリティが求められる分野では有効ではないのですね。 session_hash エクステンションのアドバンテージは MD5 / SHA1 よ…

今日の小ネタ: create_closure()

PHP

http://p0t.jp/mt/archives/2007/04/php_22.html より。 リンク先のコメントで id:bobchin さんが書かれている方法とはまた別のやつを考えてみました。

PHPプロ!で紹介されました

http://www.phppro.jp/news/369 びっくりですよ。(嬉) 最初の説明は我ながら読みにくい文章だったと反省しています。 ちなみに session_hash モジュールは用途が用途だけに phpt スタイルのテストケースも書いていて、make test で確認できます。 (このと…

高木浩光さんのブックマークコメントに対するレスポンス

PHP

参照:http://b.hatena.ne.jp/HiromitsuTakagi/20070426#bookmark-4557199 [セキュリティ][乱数][PHP][使うな危険][bad] 「セッションIDの重複による脆弱性などに気を配る必要方は試してみては」 アルゴリズムを使ってはいけない。 予測困難性が重要であるの…