2006-11-01から1ヶ月間の記事一覧

セッション設定に気をつけて

第4回 Piece Framework 勉強会で、何故か "The flow name [ WizardForm ] not found in the flow definitions." と、フロー定義がねー YO! と怒られて先に進めなかった問題ですが、解決しました。 どうやらセッション関連の設定がまずかったようです。 エン…

is_numeric() & eval()

PHP

% php -r 'var_dump(is_numeric("+0123.45e6"), +0123.45e6); > var_dump(is_numeric("-0123"), -0123);' bool(true) float(123450000) bool(true) int(-83)この結果を踏まえ、is_numeric() で真となる文字列は、クォートしなかった場合 PHP のパーザで数値…

Hack#97

PHP

Piece Framework 勉強会の後の懇親会で出た(と思う)正規表現を使わずに整数であるかどうかを確認するにはどうするか?というネタと、Binary Hacks の Hack#97 - 浮動小数点数のビット列表現 を Pure PHP でやってみる、の両方をいっぺんに。ctype_digit() …

第4回 Piece Framework 勉強会

Piece の勉強会は今回が初参加。 静的なページでウィザードを作ってみるぐらいの予習はしておきたかったのですが、ぶっつけ本番で挑戦です。 神戸まで行くには以下のプランがあり、3番目はありえない(遅刻のおそれもある)ので1番目か2番目になります。 早…

unichr extension 0.0.2

PHP

Surrogate (Cs) に加え、 Noncharacter のコードポイントが与えられたときも False を返すように修正したバージョンです。 インストール方法はこちら。

平衡三進記数法

任意の整数について、平衡三進記法の各桁の trit を収めた配列を返すメソッド - Smalltalkのtは小文字です の Smalltalk のコードをベタ移植して、PHP と Python でも整数を 1, 0, -1 の配列(タプル)として返す関数を書いてみました。 平衡三進記数法とい…

デザイン変えました

etc

ほんのちょっとしか変わってませんが、多少は見やすくなったんじゃないかなと思います。 こっそりプリンタフレンドリーな CSS も仕込んでます。 しかし Safari (というか Cocoa の奥の方) の Unicode ⇔ EUC-JP 問題 (Yen Sign Problem) が解決する見込みもな…

メールドリブンな Web アプリ

Web

送られてきた電子メールに対して何らかのアクションを実行する場合、普通は smtpd の設定で特定のアカウント宛てのメッセージを別のプログラムの標準入力に喰わせるのですが、僕のようにメールサーバの運用などしたくない人間にとって、これはちょっと難しい…

テンプレートドリブンなデータベーススキーマ作成

PHP

昔、妄想していたことを、ふと思い出したので忘備録として。 僕は幾つかある PHP のテンプレートシステムのうち PEAR::HTML_Template_Flexy を好んで使うのですが、これにはテンプレート中のフォーム要素を取得・操作するステキな機能があります。 そして、…

PHP の定数を Python で

PHP のコアで定義されている定数 (の一部) と Python で同等の値を得るための表記の対応表を作ってみました。 間違っている箇所がありましたらコメントでご指摘ください。 マジック定数 PHP Python __LINE__ - __FILE__ __file__ __FUNCTION__ - __CLASS__ s…

Unicode まとめ

ウニよりもカキのほうが好きな僕ですが、ちょっと前まで unichr() 絡みでウニウニ言っていたときに調べた Unicode 関連のまとめ。 僕自身このまとめが正しいか確信できていないのですが、個人的なメモとして残しておきます。 文字セット 空間 符号化方式 (oc…

三嶋亭

大変美味しゅうございました。

イノダ

その後、すき焼きを食べるべく京都へ。三嶋亭の予約の時間まで少し時間があったのでイノダで一服。 イノダの何が良いかというと、店員の質。これに限ります。店員教育が行き届いており、毎度感心させられます。スイーツも美味しいですね。コーヒーは特別美味…

KOF2006

南港 ATC に行ってきました。なぜか高校生が大勢いました。 Piece Framefowk のセッションが始まる前に ITEMAN さんとちょっとお話。このブログを見ていただいていたことも驚きでしたが、まさかプロフィールのイラストで本人特定されるとは想定外でしたw 内…

Metakit 訂正編

どうやら README にあった configure のあと、Makefile を修正するというのは公式のユニバーサルバイナリ版 Python 2.5 のときの話だったようで、configure && make && make install で普通にいけました。 Metakit for Python の日本語訳の基本的な使い方も…

Metakit を試してみようと思ったのですが

Metakit という非常に面白そうな組み込み型データベースのことを知り、いざ試してみようとインストールしてみたわけですが・・・ ・・・なんか、どう見ても中間ファイルです。本当に (ry なオブジェクトにリンクしている件。 % otool -L /usr/local/metakit/…

Suhosin 0.9.6.2

PHP

PHP 5.2.0 向けの Suhosin パッチがバージョン 0.9.6.2 にアップデートされていました。 PHP の他のバージョン向けは 0.9.6 のままで、PHP 5.2.0 でビルドできない問題等が修正されているようです。 当方 (Mac OS X 10.4.8/PowerPC G5) でも 0.9.6 では zend…

はてブ debut

web

ちょー遅まきながら、はてなブックマークを使い始めてみた。 ローカルのブックマークの移行は諦めて、新規登録だけはてブにしよう。 「タブで開く」状態のブログも随時 Bloglines で読もう。 Plagger も使ってみようと思う。*1 *2 ・・・で、編集しちゃって…

-DPHP_PCRE_NO_INDEX_NAMED_CAPTURE

PHP

引き続き ext/pcre/php_pcre.c を改造。 コールバック関数にも名前付きでキャプチャして渡せるようにしたのに加え、PHP_PCRE_NO_INDEX_NAMED_CAPTURE マクロを定義してコンパイルしたときは、名前付きでキャプチャした箇所は添字番号でキャプチャされないよ…

バイナリアン度は 37 点

正解した問題も半分ぐらいは知っていたのではなく勘で答えたのですが...orz ここら辺の本を買おうかと思ってます。 Binary Hacks ―ハッカー秘伝のテクニック100選作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸出版社/メーカー: オライリー・ジャパン…

preg_match(_all) でメモリリークの可能性がある件

PHP

先日のパッチは PHP_5_2 ブランチの CVS (PHP 5.2.0 の玉にあるものと同じ) に対してのものだったのですが、それを PHP_4_4 および HEAD にも適用してみようと作業をしていたところ、PHP_4_4 (PHP_4_3 と PHP_5_0 も) では preg_match(_all) で名前付きキャ…

named capture on preg_replace_callback()

PHP

PHP の正規表現ではコールバック関数を用いた置換では名前付き捕獲式集合が無視されるのですが、以前からこれは困ったことだと思っていました。 ちょっと複雑な正規表現を扱うときはコールバック関数側でのマッピングが面倒だし、さらにその正規表現を改変し…

unichr(), uniord(), RFC 3629

PHP

さらに改良。 RFC 3629 および Unicode 3.2 に準拠し、UTF-16 の範囲に対応。 unichr() にサロゲート領域の値 (0xD800〜0xDFFF) を与えると false を返す。 uniord() は (先頭の 1〜4 バイトに限り) UTF-8 としての妥当性をチェックする。 調査の過程で知っ…

uniord()

PHP

unichr() があるなら uniord() も欲しいよね、ってことで書いてみました。 unichr.xml の extension 要素に追加する関数定義: <function name="uniord"> <proto>int uniord(string str)</proto> <description></description> <code></code></function>

unichr.so

PHP

今日は先日の unichr() 関数を PHP エクステンションとして作ってみます。 pecl-gen に喰わせる XML はこんな感じで。 (Safari から投稿しているため、バックスラッシュが文字化けしています。'?0' は '\0' に、"?n" は "\n" に読み替えてください) <extension name="unichr" version="0.0.1"> <summary>Unicod</summary></extension>…

unichr()

PHP

ふとした思いつきで Python の unichr() を PHP で書いてみました。 UCS-2 のコードポイントに対応した UTF-8 の文字(列)を返す関数です。 オリジナルは Unicode 文字列型のオブジェクトを返すのですが、バージョン 6 未満の PHP にはそんなものは無いので U…

CodeGen_PECL で sary バインディング その4・番外編

PHP

これを公開するに至るまでには裏話がありまして、別件で特定の目的専用のモジュールを作ったことがきっかけでした。 それではこんな関数を使っています。 /* {{{ proto array t_search(resource sary_res_searcher res_searcher, string pattern); */ PHP_FU…

CodeGen_PECL で sary バインディング その3・活用編

PHP

続いて今回作成したモジュールが提供する関数の使用例を紹介します。 libsary には他にも色々な API があるのですが、検索に最低限必要な関数だけを実装しました。 全てを網羅できたらいいなーと思いつつ、たぶんやらなさそう... // SarySearcher オブジェク…

CodeGen_PECL で sary バインディング その2・解説編

PHP

引き続き、その1・紹介編に載せた spec ファイルのポイントを解説します。 まずは依存する libsary や glib のパスをどうするかという点ですが、幸いにして sary は pkg-config に対応しているので deps 要素の中に以下のような with 要素を書くだけで済みま…

CodeGen_PECL で sary バインディング その1・紹介編

PHP

CodeGen_PECL の使い方は Do You PHP はてな - PEAR::CodeGen_PECL事始め でよくまとめられているので、そちらと併せて読んでいただけると分かりやすいと思います。 spec ファイル (sary.xml) の内容は以下の通りです。 <extension name="sary" version="0.0.1"> <summary>Sary PHP extension</summary> <description></description></extension>