2007-01-01から1年間の記事一覧

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カンファレンス2007プチレポート

PHP

もうあれから6日が経過しようというところですが、遅ればせながら。 PHPカンファレンス2007に参加、「今日からはじめるPHPエクステンション」という演題で喋ってきました。 久々のプレゼンということもあり、すごく緊張していました。もっと滑舌よく、手際よ…

オブジェクトのプロパティをマージ

PHP

OpenDogsエクステンションの次期バージョンではarray_merge()のオブジェクト版を実装する予定です。 返り値は与えられたオブジェクトのクラスによらず、stdClassのインスタンスです。 /* {{{ proto object od_object_merge(object obj1[, object obj2[, obje…

鍵鬼は無念の涙を流した

Mac

それは数週間前のこと。 手持ちのKeynote 1.0(英語版)がIntel Macでは動かないので「もうiWork '07は出んやろ」と思い9/1のプレゼン用にiWork '06を買った男がここにひとり。 そして昨夜未明。 http://www.apple.com/jp/iwork/ '07ではない・・・たしかに'07…

ご飯を残したら負けかなと思ってる

,,,,,,,,,,,,,,,,,,,, /": : : : : : : : \ /-─-,,,_: : : : : : : : :\ / '''-,,,: : : : : : : :i /、 /: : : : : : : : i ________ r-、 ,,,,,,,,,,、 /: : : : : : : : : :i / L_, , 、 \: : : : : : : : :i / 食べ残し…

Piece Framework勉強会に参加してきました

先週末のことになりますが、第8回Piece Framework勉強会に参加してきました。 こちらのミスで飛び入り参加のようなかたちになってしまいましたが、快く迎えてくださってありがとうございました。>all (あとで申し込みのメールを見直してみたら、サブジェク…

php_qr 0.2.2: OO-APIのバグ修正

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

業務(?)連絡

名古屋止まりらしいので乗り過ごす心配はなさそうです。 追記: 名駅では無事に降車。 在来線に乗り換えて目が覚めたら三河安城を一駅過ぎて安城だったのはたぶん気のせい。 少なくとも(高校時代)目が覚めると県境のトンネルを越えてそこは岡山だったのに比べ…

オレオレパッチ

PHP

ちょっとだけ便利になるパッチたち。PHP 5.2.3 向けです。 php-5_2_3-config-file-scan-dir.patch CLI とその他 SAPI で config_file_scan_dir を分ける。 CLI 用の config_file_scan_dir は configure --with-config-file-scan-dir で設定したパスに接尾辞 …

jQuery で MochiKit ライクな DOM 生成

車輪の再発明である可能性はひじょーに高いですが、この程度なら探すより書くほうが早いので作ってみました。 MochiKit のように H1([attributes[, node(s)[, ...]]) で jQuery オブジェクトが生成できます。 あえて jQuery.fn.extend() せず、window オブジ…

ブログアプリケーションの作成ですと!

技術評論社のサイトで連載 Piece Frameworkによるブログアプリケーションの作成 が始まりました。 Piece Frameworkは,本質的な開発の実践のためのアプリケーションフレームワークです。この連載では,簡単なブログアプリケーションの作成を通して,ステート…

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…

Parallels 導入

Mac

IE で Web サイトの確認をするために Parallels Desktop for Mac 3.0 と Windows XP を購入しました。 インストールは難なく終了し、あとは Parallels Tools をインストールして Coherence モードにすれば驚くほどシームレスに動作します。 さらに AppleK fo…

コルーチンもどき 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 構造体のメンバを全て書き下ろして、マジックメソッド相当のことをよりネイティブに実装されています。…

マジックメソッドで遊んでみる

PHP

__call(), __get(), __toString() を使って実験。 _name = (string)$name; } public function __call($name, $args) { return new MagicChain(sprintf('%s::%s(%s)', $this->_name, $name, serialize($args))); } public function…

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…