Entries from 2008-03-01 to 1 month

wcsmbs系関数とsetlocale()

ここで触れられているphp_mblen()は元はといえば私のコミットしたコードなので、なんでこんなんになってたんだっけ? といろいろ思い出しつつ調べてみた。結論から言うと、mblen() や mbrlen() をポータブルに利用するには、setlocale(LC_ALL, ""); をプログ…

ahemフォント

(via http://blog.mozilla.com/rob-sayre/2008/03/26/acid3-is-basically-worthless/) コレを見ていて酷いなぁと (ますさん風に) 思いつつ、Ahem フォントっていうものの存在を知った。何か現実的に利用されうるフォントではなく、テストのフォントを表示す…

GNU Pthを使って、PHPでユーザスレッドを実現する

のをやってみた。もうちょっと作り込んでから、と思ったけど、まあまあまともに動くので先に公開。次のようなスクリプトがさくさく動いちゃうよ!

Mozo.PHP をレポジトリに上げました。

ちょ、freehg.org は神。http://freehg.org/u/moriyoshi/mozo-php/を参照してくださいまし。ついでに PHP の parser と lexer を C++ に移植したやつ。 構文木作るとこ*1まで行ったままで止まっているこの子を誰か拾ってください。http://freehg.org/u/moriy…

軽量ユーザスレッドを実現するlibtaskを試してみた。

libtask。コルーチンとスケジューラがセットになっているのか。 #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include "task.h" typedef int err_t; typedef struct { char *name; } my_task_t; void my_task_run(my_task_t *ctx) { printf("Hi, I am a lightw</unistd.h></stdlib.h></stdio.h></string.h>…

Mozo.PHP (その3)

今日の最初の方にリリースしたものはメモリリークします。 本気で使っている方はここから最新版を再度落としてください。 エラー処理 (1) C++ の関数からエラーを出して呼び出し元に復帰したいときは、mozo::php::runtime_error を throw します。 throw php…

Mozo.PHP (その2)

(追記: タイトルの一部にタグを入れているところが正しくタグとして認識されなかったので直しました。重複RSSエントリが発生したらすみません。) 前日の続き。ダウンロードはここ。主な変更点: std::string を戻り値にできないバグの修正。 HashTable の変換…

C関数レベルのクロージャを C++ で実現?

前にlibffi を使ってクロージャが作れることは確認したけど、やや力技過ぎ。 ちょっと調べてみるとid:mb2syncさんの日記 (スターありがとうございました) に c_function というのが紹介されていたので試してみた。 #include <iostream> #include "c_function.hpp" stru</iostream>…

Boost.Python のような手軽さで C++ で PHP の拡張モジュールを書ける「Mozo.PHP (仮称)」

えー、久しぶりにですます調です。本日の第2回PHP拡張勉強会でグダグダながらもちょこっと発表させていただいた、あのライブラリについての紹介です。ダウンロードは以下からできます。 http://www.voltex.jp/downloads/mozo-php-20080324.tar.bz2 最新版は…

libffi (x86) のクロージャがbuggyな件

boost-php (謎) を書いていて、ZEND_FUNCTION_ENTRY の handler にクロージャを指定できるといろいろ便利だということが分かったので libffi に手を出してみた。が、、、テストコードが謎の SEGV を出して動かない。渋々 (gdb) disassemble closure->tramp c…

例外クラスと swap()

この組み合わせにふと考えを巡らせてみた。例外クラスにも swap() は必要か? でも、どうも明確な答えが見つからない。そもそも swap() って代入操作での例外安全性を保証するためだけのもの? #include <iostream> #include <stdexcept> #include <string> class MyException: public std::</string></stdexcept></iostream>…

FreenodeでNickServのパスワードをリセットするには

意外に説明がないんだねこれ。パスワードを忘れる以前に、あらかじめ set email でメールアドレスが登録されていないと認証できないので注意。 /stats p でスタッフを見つける。常駐しているわけではないようで、いない事が多いのでしつこくやる。時差に注意…

[雑記] anond からのリファラ

めっちゃ焦った。またなんか書かれてるのかと思ったら、SxSのあれだったわけね。mt.exe で python.exe にマニフェスト組み込めって書いてるドキュメントをどっかで見たけどそのために Windows SDK 落とすアホはいないだろ。って思って追記。Cygwin は Create…

続グリッド

これの続き。一応違和感のないくらいには賢くなったはず。Option キーをこんなに使うのも久しぶりというくらい使いまくり。 ちょっと長過ぎて小汚いコードになってしまった…。追記: さっき Leopard の Terminal.app で使ってみたら、そもそも Terminal.app …

AppleScript の Filter と Python の Generator

python で every 的なものがサポートされたら。。。 print every thing in [ every thing @filtered in (1, 2, 3) that is not None ] ちょっと可読性上がるけどマジックワード増え過ぎか。。。

Terminal.appのウィンドウを横方向の間隔でグループ化してグリッドにそろえるスクリプト

このエントリの続き。このままではまだ使いにくいので、もっと賢くしていかないとなあ。 on createOverlappingPair(_first, _second, _xRange) script OverlappingPair property FirstWindowIndex : _first property SecondWindowIndex : _second property x…

Terminal.appのウィンドウをScreenぽく分割するようなスクリプト

ここで紹介されているのと戯れていて、あとはターミナルの分割さえできれば…と思い作成したのが次の AppleScript。あまり賢くないけど、今開いてるウィンドウのサイズを半分にして空いたスペースに新しく作成したウィンドウを配置するというもの。QuickSilve…

[linux][kernel][mutex] linux/mutex.h 互換ヘッダの件

ここで触れていた件が修正された模様。kernel-2.6.9-68.18.el の RPM はここ。これを報告したのが 2007年3月20日だから1年弱かかったわけで。意味が分からん。