PECL

unicharとdcomplexをマイナーアップデート

php_unichar-0.1.1.tgz php_dcomplex-0.1.2.tgz php_unichar-0.1.1 UTF-8文字列の各文字のコードポイントをずらす関数 unistr_rotate() を追加。 例:

Ioバインディングを朝ハック

php_iovm-070922.tgz寝起きで改良。 IoObject→zvalの変換ができるようにして、IoState::doCString()の戻り値を取得できるようにしました。対応する型はこれだけです。他の型は文字列で <IoObject:name:address> となります。 Io PHP nil null true true false false Number double S</ioobject:name:address>…

IiP - Io in PHP

php_iovm-070920.tgz ちょーシンプルなIoバインディング。息抜きがてらにさくっと作ってみました。 IoStateオブジェクトと、引数として与えられたコードを実行するdoCStringメソッドだけしかありません。 本格的に作り込む時間がないので、しばらくはこのま…

秋のPECLまつり

php_qr-0.3.1.tgz php_yaml-0.1.1.tgz php_senna-0.1.0.tgz -> php_senna-0.1.1.tgz (SenRecordsのイテレータとしてのふるまいを修正) php_unichar-0.1.0.tgz php_dcomplex-0.1.0.tgz -> php_dcomplex-0.1.1.tgz (テストケースを追加、他少々) php_opendogs-…

GDで作成した画像をICO形式で出力する

php_gdextra-0.2.0.tgz Windows ICON (.ico) ファイルフォーマットを調べてみたところ、ヘッダが少し異なるのとマスクデータがあるだけでアイコン本体はBMPだったので、先日のブツにICO形式で書き出す関数を追加してみました。 また、BMP出力でも従来の8,24…

GDで作成した画像をBMP形式で出力する

php_gdextra-0.1.0.tgz GDエクステンションと連携して使う、画像処理のための新作エクステンションです。 表題の機能のほか、ImageMagickを使って読み込んだ画像をGDの画像リソースに変換して返す機能もあります。 PHP5なら素直にimagickエクステンションを…

php_opendogs 0.5.0 Released

php_opendogs-0.5.0.tgz 変更点 数値文字参照とXHTML 1.0で定義されている文字実体参照をUTF-8としてデコードする関数 string od_unistr_decode_entity(string str[, int flags]) を追加 第一引数はデコード対称の文字列、第二引数はデコードオプションで下…

php_yaml 0.1.0 Released

php_yaml-0.1.0.tgz 変更点 デフォルトで全てのYAMLドキュメントをパースしていたのを、最初のYAMLドキュメントだけをパースするように仕様変更 オブジェクトが複合キーに指定された場合、serialize()する前に__toString()を試みるようにした エイリアスをリ…

php_qr 0.3.0 Released

libqr-0.3.0.tgz php_qr-0.3.0.tgz libqrの変更点 QRCodeオブジェクトを複製する関数 QRCode *qrClone(const QRCode *qr, int *errcode) を追加 QRStructuredオブジェクトを複製する関数 QRStructured *qrsClone(const QRStructured *st, int *errcode) を追…

php_qr 0.2.2: OO-APIのバグ修正

php_qr-0.2.2.tgz QRCodeクラスでmaxnum=1のとき、finalize()をコールしても内部的にfinalizeしたことになっていなかったのを修正しました。

php_qr 0.2.1 & php_yaml 0.0.4

いずれもメンテナンスリリースで、新機能等はありません。php_qr-0.2.1.tgz 標準で読み込まれるヘッダで TRUE および FALSE が定義されていないとコンパイルできない問題を修正。 JSON 出力時、ダブルクォートで囲まないように変更。 php_yaml-0.0.4.tgz コ…

QDBM のユーティリティ API : Cabin

便利そうな関数がいっぱいあったので、その中から cbxmlbreak & cbxmlattrs を使った単機能エクステンションの習作を。 XML (ていうか SGML) のテキストデータを配列に分割する関数です。DOM や正規表現でゴリゴリするよりシンプルな処理に。 普段は CodeGen…

コルーチンもどき by 継続

php_continuation-0.0.5.tgz 既存の関数をクロージャ化する関数を追加しました。 string co_enclose(callback $func[, array $env_vars[, int $flags]]) これは co_make_callable(co_create($func, $env_vars, $flags)) を短く書けるようにしたものです。 引…

CVS の python 拡張モジュールが良さげな件

PECL のサイトでは放置されてると思いきや、CVS のログを見ると先月末あたりから開発が再開されている模様。 Python クラス専用の zend_object_handlers 構造体のメンバを全て書き下ろして、マジックメソッド相当のことをよりネイティブに実装されています。…

Continuation 0.0.4

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

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…

YAML パーザ改良の巻

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

OpenDogs extension 0.3.0 - PHP で複素数演算

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

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 による疑似乱数を提供します。 イン…

セッション 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 ディレクトリ) 入出力にファイル名でなくストリームリソ…

PHP で JPEG ロスレス回転

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