2007-01-01から1年間の記事一覧
Tokyo Cabinetのデータベースは書き込みモードで開くと排他ロックがかかるので、Apache2 (prefork)+mod_phpやCGIのようなリクエストごとにPHPのプロセスが分かれているWebアプリケーションでTokyo Cabinetを読み書き両用で使うのは苦しいものがあります。(コ…
shimookaさんとこ経由で知ったのですが、僕がゆっくりしている間に(実際はいろいろあったわけですが)PHP 5.3に無名関数やらクロージャやらを実装する話が進んでいた模様。 ループで使えないとかopcode cacheとの相性が悪いとか言われていたので、拙作パッ…
php_yaml-0.3.0.tgz PHP6のUnicode文字列対応を改善。
php_unichar-0.3.0.tgz PHP6用コードを改善。 ZTSモードでの不具合を修正。
php_tokyocabinet-0.3.0.tgz Tokyo Cabinet 1.1.0で加わったAPIを実装。 TCHDB::setcache() TCBDB::range() TCBDB::rangefwm() IDLに合わせてTCBDBクラスのメソッドを名称変更。古い名前も残しているが、非推奨。 putdupall→putlist, outall→outlist, getall…
php_speedy-0.2.0.tgz HTMLタグを生成する関数を追加。 string t(string $name[, string $content[, array $attributes[, bool $close]]]) タグを生成する。 void pt(string $name[, string $content[, array $attributes[, bool $close]]]) タグを出力する。
php_senna-0.2.0.tgz id:tasukuchanに「sen_ctx_recv()のSEN_CTX_MOREは意味があるので連結しちゃダメ」と教えてもらったので修正。 SenContext::recv()は結果を連結せずに、最初に返ってきた結果だけを返す。 SenContext::has_more()で結果に続きがあるかを…
php_rskit-0.1.0.tgz 新作。PHPでクラスをMix-inするRSKit::mixin()等のユーティリティクラス。詳細はあとで追記します。追記: バージョン0.2.0に関するエントリに使い方を書いています。
php_mecab-0.3.0.tgz PHP 5.3/6.0に対応。 PHP6のUnicode文字列とC文字列の相互変換をするエンコーディングを指定するためのphp.iniディレクティブmecab.internal_encodingを追加。 指定できる値はICUが対応しているエンコーディング名で、デフォルト値はUTF…
php_iovm-0.5.0.tgz PHP6のUnicode文字列対応を改善。 IoのVectorオブジェクト互換のPHPクラスIoVectorを追加。 32bit浮動小数点数のベクトル演算を扱うクラス。(SIMD対応) IoStateとは別に単独で使用可能。 PHPの変数とIoの変数の相互変換にも使われる。 Io…
php_epeg-0.2.0.tgz PHP 5.3/6.0に対応。 必要最低限以外のJPEGマーカーを削除するコードを修正。
php_continuation-0.2.0.tgz PHP6に対応。 未定義のクラスが指定された場合は__autoload()を使うように変更。
php_calias-0.1.0.tgz 未定義のクラスが指定された場合は__autoload()を使うように変更。 実行時にCG(class_table)を参照していたのをEG(class_table)を参照するように修正。
溜まりに溜まっていたのをまとめてリリース。それぞれの詳細は個別のエントリで。 php_calias-0.1.0.tgz php_continuation-0.2.0.tgz php_epeg-0.2.0.tgz php_iovm-0.5.0.tgz php_mecab-0.3.0.tgz php_rskit-0.1.0.tgz php_senna-0.2.0.tgz → php_senna-0.2.…
今更ですがPiece Network 1のレポートというか、発表しての感想をば。資料は来週末ぐらいを目標に、紹介しきれなかったSPLクラスの分も加筆して公開します。 SPL入門 「SPL入門」というタイトルで話させていただきました。 SPLは「これまでできなかったこと…
eval内で無名関数を宣言したり、eAcceleratorのようなopcode cahceと組み合わせたりしたときに問題があったのでパッチを更新。 php-5.2.5-rsky-071129a.patch 無名関数の絡みで今更ながら php.internals: PATCH: anonymous functions in PHPから始まる議論を…
無名関数がかなり使いやすくなりました。高階関数のような記述もできます。 たとえば、これの結果は
勢いに任せてVM・構文解析器・コア関数をハックして以下の機能を実装してみました。 無名関数リテラル (PHPの仕様上、実際は自動で名前が割り振られ、リクエスト終了まで関数は生き続ける) 角括弧による配列リテラル Callable Object php-5.2.5-rsky-071126.…
ずっと我慢してきたけど、もう限界。MacBook Proの液晶だと目が疲れて仕方ないので目が疲れにくい液晶モニタを買うことにしました。ついでにHHK Proも。 まず第一希望はColorEdge CG221。¥590,000。無理。却下。 というわけで、現実的なレベルでいくと EIZO …
runkitはPECLでなくて標準添付・Windows版でもデフォルトで有効でいいんじゃないかと思う今日この頃。PHPでもこういうことがしたくなってきました。
php_speedy-0.1.0.tgz 瓢箪から出た駒というかなんというか、Speedyエクステンション正式リリース。 speedy関数はstdClass以外のオブジェクトもコンテキストとして受け付けるようになり、また、speedy関数の実行によってコンテキストが汚染されなくなりまし…
ブログのデザインを少しいじりました。 Safari3向けにスタイルシートを調整したり、IE7向けの調整はギブアップしたり、無駄にグラデーションしたロゴを作ったり、タイトル横の空白を詰めたり。
php_tokyocabinet-0.2.0.tgz Tokyo CabinetのPHPバインディングを更新しました。変更点は以下の通りです。 データベースを閉じるcloseメソッドを実装。(0.1.0ではIDLで指示されていないし、明示的に閉じなくてもデストラクタで閉じられるので実装していなか…
唐突に、PHP用のテンプレートエンジンを4+1行で実装してみる。 方針: ふつうのPHPファイルをテンプレートとして使う。 は面倒なので と書けるようにする。 はもっと面倒なので と書けるようにする。 ついでにXML宣言も .... とかけるようにする。 4+1行…
php_calias-0.0.1.tgz この前のKOF2007の打ち上げ兼Piece Network 1の打ち合わせで出た話を元に、PHP 5.3/6.0の名前空間とは異なる、既存クラスのエイリアスを登録するエクステンションを書いてみました。PHP 5.2以降対応です。 Application Sever SAPIもし…
Piece Framework公式サイトとかPHPプロ!とかid:takagimasahiroさんとことかid:YudoufuさんとことかITEMAN御大とこなどなどで告知されまくっているPiece Network 1に出演します。 ふつつか者ですが、よろしくお願いします。
今朝までは無事だったFreeBSDの自宅サーバがお亡くなりに。 原因は電源ぽいのだけど、いいかげん使い倒したマシンだしデータの救出のため3.5インチHDDの外付けケースを注文して、退役させることにしました。 そしてついさっき、Mac OS X10.3.9のセキュリティ…
php_tokyocabinet-0.1.0.tgz Tokyo CabinetのPHPバインディングを作ってみました。 インストールは phpize; configure --enable-tokyocabinet; make; sudo make install と、いつもの手順ですが、configure内でpkg-configを使います。Tokyo Cabinetはバージ…
php_continuation-0.1.1.tgz php_iovm-0.4.0.tgz php_opendogs-0.6.1.tgz php_senna-0.1.2.tgz php_tokyocabinet-0.1.0.tgz php_unichar-0.2.0.tgz php_yaml-0.2.0.tgz 溜まっていたものをまとめてリリース。PHP 6.0/5.3向けにビルドできなくなったのを修正…
とりあえずテキストに書き出してみただけの状態です。そのうち日本語で表にします。 identifier: expected type required argument number and types 'l': integer 1: long * 'd': float 1: double * 's': binary string 2: char **, int * 'S': binary stri…