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

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>

Suffix Array をソートする

標準ドキュメントの C API リファレンスを見ながら作った、はじめての C による Python モジュール。 Sary の sary_builder_sort() をラップしただけの単機能です。Python で mksary コマンドで生成されるものと少し異なる (具体的には行頭の数バイトをスキ…

自分も必修科目の未履修にあてはまるかもしれない件

etc

ウン年前のことりなりますが、僕も社会科は現代社会と地理しか受けてないんですがどうしましょう。 ちなみに今回「も」未履修が発覚した学校であります。今も昔も変わらず校長がダメなのは苦笑いせざるを得ませんね。 それとは全く関係なく、写真は今日の夕…

復活?

etc

ご無沙汰しておりました。 またぼちぼちと書き始めます。 前回の日記から今日までに良いと思ったものベスト3(ジャンル問わず)を挙げるなら 結婚できない男 SHINJO Piece Framework でしょうか。 とりあえず復帰第一段として CodeGen_PECL を使って Sary の…

congratulation!

etc

大学のときの友達の作品が 名古屋デザインDo! の1次審査を通りました。 まっつん、おめでとう!

帰る間際に

はてなダイアリーの HTML ソースから特定の記事に関連付けられた画像の URL を抽出するルーチンにバグ発見。 帰る前に修正できて良かった。 次のバージョンでは goo ブログにも対応したい。 RSS に description ではなくて content:encoded に img 要素も含…

Cure

常盤薬品の配置用のど飴(医薬品)をもらって、だいぶ咽の調子は良くなりました。 そしてコーヒーをいれる。 僕は松屋式ドリップのキモは蒸らしと本抽出初期の"ひたひた"にするまでだと考えていて、そこがうまくいけばドリップは成功したも同然です。 (蒸ら…

風邪ではないようだけど

のどが痛い。 しかし詰めに向かって着々と仕事をこなす。 作業のペースは落ちているような気がする。

澱のように

どうも疲労が蓄積しているっぽい。 ラストスパート。

バイオ風に

etc

かつ・・・うま・・・

W41CA

携帯を1年と9ヶ月 (たぶん) 振りに機種変更。 W21S から W41CA に。 ポイント併用で税込み 5,250 円ナリ。いやまさかここまで安くなるとは思ってませんでした。てっきり倍ぐらいはかかるものかと。 デジカメモードの設定変更がしにくい以外はとてもいい機種…

ぷらぷら

これまで使った MochiKit の便利なところ。 MochiKit.Async.doSimpleXMLHttpRequest() MochiKit.Async.Deferred() MochiKit.DataTime.isoTimestamp() MochiKit.Base.map() MochiKit.Base.filter() MochiKit.DOM 全般 MochiKit.DOM で子ノードにテキストを指…

もちもち

Ajax で見出し一覧をページングする機能を実装するために、MochiKit を使ってみた。 まだ Ajax と DOM しか試してませんが、これは良いですね。 Ajax ではリクエスト成功/失敗時のハンドラを後から付け足していけるのが面白い。 DOM は普通に書くと長くなる…

Planet をプチ修正

突然 Planet で収集・再構築したフィードが XML の構文エラーでパースできない事態が発生。 問題の行を1文字ずつダンプして調べてみたところ、0x03 (ETX/テキスト終了) が紛れ込んでいました。UTF-8 としては ETX を含んでいても問題無いが、well-formed な …

とりあえずは

先方の要求が大体叶えられる仕様に。 あとは細部の調整。 今回は xhld モジュールをカスタマイズしたけれど、カテゴリが多くなるにつれて保守が大変になるので、やっぱりモジュールを新規作成したほうが良いことが分かった。 ただこれにはちょっと時間がかか…

名古屋を歩く

etc

今日はオフの日なので名古屋に遊びに来た。1年以上来ていない間に何か変わったことはあっただろうか。 まずは栄近辺をぶらぶらと。ここらへんはあまり変わってないかも。 Apple Store で MacBook を触ってみた。 キーボードは良くも無く、悪くも無く、まあ許…

いつの間にやら

etc

あと一月半ほどで僕も四捨五入したら三十になるのかー、とか悠長なこと考えてたら、恐ろしいことに気付いた。 ちげーよ、四捨五入じゃない。百点棒の清算の如く、五捨六入しても三十になるのである。 三十路の足音が聞こえるとともに、「いまそこにある危機…

KOUNYUU

デトロイト・メタル・シティ1巻を KOUNYUU した。 (Amazon で YOYAKU したのは出稼ぎの日程の都合で TORIKESHI) SATSUGAI されるのを覚悟で言うと、単行本サイズのせいか、連載で読んだときよりインパクトがだいぶ小さい気がする。 疲れてるのかな。 What a …

さくらで Planet を使う

さくらのレンタルサーバでは _bsddb.so がインストールされておらず、 Python の bsddb モジュールが使えないので、自前で用意した。 SSH でログインして下記のような感じで。(だいぶ端折ってます) Berkeley DB のパッチと setup.py は Ports のものを使用。…

改題

どうも人聞きが悪いようなのでカテゴリ名を改めた。 rtknkn(days) が変わってないのは、きっと気のせい ;-)

re

アドホックに正規表現でごり〜ごり。

RSS に画像を...

特に意識することはなかったので気付かなかったのですが、はてなダイアリーではアップロードした写真や、img 要素で直接埋め込んだ画像が RSS の content 要素には含まれないみたい。 となると、予定が狂うわけで。 う〜〜〜ん、いざとなれば自前でどうにで…