2006-01-01から1年間の記事一覧
PHP の正規表現ではコールバック関数を用いた置換では名前付き捕獲式集合が無視されるのですが、以前からこれは困ったことだと思っていました。 ちょっと複雑な正規表現を扱うときはコールバック関数側でのマッピングが面倒だし、さらにその正規表現を改変し…
さらに改良。 RFC 3629 および Unicode 3.2 に準拠し、UTF-16 の範囲に対応。 unichr() にサロゲート領域の値 (0xD800〜0xDFFF) を与えると false を返す。 uniord() は (先頭の 1〜4 バイトに限り) UTF-8 としての妥当性をチェックする。 調査の過程で知っ…
unichr() があるなら uniord() も欲しいよね、ってことで書いてみました。 unichr.xml の extension 要素に追加する関数定義: <function name="uniord"> <proto>int uniord(string str)</proto> <description></description> <code></code></function>
今日は先日の unichr() 関数を PHP エクステンションとして作ってみます。 pecl-gen に喰わせる XML はこんな感じで。 (Safari から投稿しているため、バックスラッシュが文字化けしています。'?0' は '\0' に、"?n" は "\n" に読み替えてください) <extension name="unichr" version="0.0.1"> <summary>Unicod</summary></extension>…
ふとした思いつきで Python の unichr() を PHP で書いてみました。 UCS-2 のコードポイントに対応した UTF-8 の文字(列)を返す関数です。 オリジナルは Unicode 文字列型のオブジェクトを返すのですが、バージョン 6 未満の PHP にはそんなものは無いので U…
これを公開するに至るまでには裏話がありまして、別件で特定の目的専用のモジュールを作ったことがきっかけでした。 それではこんな関数を使っています。 /* {{{ proto array t_search(resource sary_res_searcher res_searcher, string pattern); */ PHP_FU…
続いて今回作成したモジュールが提供する関数の使用例を紹介します。 libsary には他にも色々な API があるのですが、検索に最低限必要な関数だけを実装しました。 全てを網羅できたらいいなーと思いつつ、たぶんやらなさそう... // SarySearcher オブジェク…
引き続き、その1・紹介編に載せた spec ファイルのポイントを解説します。 まずは依存する libsary や glib のパスをどうするかという点ですが、幸いにして sary は pkg-config に対応しているので deps 要素の中に以下のような with 要素を書くだけで済みま…
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>
標準ドキュメントの C API リファレンスを見ながら作った、はじめての C による Python モジュール。 Sary の sary_builder_sort() をラップしただけの単機能です。Python で mksary コマンドで生成されるものと少し異なる (具体的には行頭の数バイトをスキ…
ウン年前のことりなりますが、僕も社会科は現代社会と地理しか受けてないんですがどうしましょう。 ちなみに今回「も」未履修が発覚した学校であります。今も昔も変わらず校長がダメなのは苦笑いせざるを得ませんね。 それとは全く関係なく、写真は今日の夕…
ご無沙汰しておりました。 またぼちぼちと書き始めます。 前回の日記から今日までに良いと思ったものベスト3(ジャンル問わず)を挙げるなら 結婚できない男 SHINJO Piece Framework でしょうか。 とりあえず復帰第一段として CodeGen_PECL を使って Sary の…
大学のときの友達の作品が 名古屋デザインDo! の1次審査を通りました。 まっつん、おめでとう!
はてなダイアリーの HTML ソースから特定の記事に関連付けられた画像の URL を抽出するルーチンにバグ発見。 帰る前に修正できて良かった。 次のバージョンでは goo ブログにも対応したい。 RSS に description ではなくて content:encoded に img 要素も含…
常盤薬品の配置用のど飴(医薬品)をもらって、だいぶ咽の調子は良くなりました。 そしてコーヒーをいれる。 僕は松屋式ドリップのキモは蒸らしと本抽出初期の"ひたひた"にするまでだと考えていて、そこがうまくいけばドリップは成功したも同然です。 (蒸ら…
のどが痛い。 しかし詰めに向かって着々と仕事をこなす。 作業のペースは落ちているような気がする。
どうも疲労が蓄積しているっぽい。 ラストスパート。
かつ・・・うま・・・
携帯を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 で収集・再構築したフィードが XML の構文エラーでパースできない事態が発生。 問題の行を1文字ずつダンプして調べてみたところ、0x03 (ETX/テキスト終了) が紛れ込んでいました。UTF-8 としては ETX を含んでいても問題無いが、well-formed な …
先方の要求が大体叶えられる仕様に。 あとは細部の調整。 今回は xhld モジュールをカスタマイズしたけれど、カテゴリが多くなるにつれて保守が大変になるので、やっぱりモジュールを新規作成したほうが良いことが分かった。 ただこれにはちょっと時間がかか…
今日はオフの日なので名古屋に遊びに来た。1年以上来ていない間に何か変わったことはあっただろうか。 まずは栄近辺をぶらぶらと。ここらへんはあまり変わってないかも。 Apple Store で MacBook を触ってみた。 キーボードは良くも無く、悪くも無く、まあ許…
あと一月半ほどで僕も四捨五入したら三十になるのかー、とか悠長なこと考えてたら、恐ろしいことに気付いた。 ちげーよ、四捨五入じゃない。百点棒の清算の如く、五捨六入しても三十になるのである。 三十路の足音が聞こえるとともに、「いまそこにある危機…
デトロイト・メタル・シティ1巻を KOUNYUU した。 (Amazon で YOYAKU したのは出稼ぎの日程の都合で TORIKESHI) SATSUGAI されるのを覚悟で言うと、単行本サイズのせいか、連載で読んだときよりインパクトがだいぶ小さい気がする。 疲れてるのかな。 What a …
さくらのレンタルサーバでは _bsddb.so がインストールされておらず、 Python の bsddb モジュールが使えないので、自前で用意した。 SSH でログインして下記のような感じで。(だいぶ端折ってます) Berkeley DB のパッチと setup.py は Ports のものを使用。…
どうも人聞きが悪いようなのでカテゴリ名を改めた。 rtknkn(days) が変わってないのは、きっと気のせい ;-)
アドホックに正規表現でごり〜ごり。
特に意識することはなかったので気付かなかったのですが、はてなダイアリーではアップロードした写真や、img 要素で直接埋め込んだ画像が RSS の content 要素には含まれないみたい。 となると、予定が狂うわけで。 う〜〜〜ん、いざとなれば自前でどうにで…