Entries from 2008-01-01 to 1 year

すごくどうでもいい事だけど

Boost.Variantのドキュメントにある以下の説明は穏やかにBoost.Anyをdisっているように見えなくもない。つか Boost.Any の swap で no-throw が保証されてるのはポインタ同士の交換だからで、それなら別に Boost.Variant でポインタを束ねてもいいし…。 Of c…

Boostのカテゴリ分け

Boostがどんどん肥大化しているのに眉をひそめる人は少なくないと思う。私なら以下のようにカテゴライズして提供しようと考えるけども、いまだにモノリシックなやり方を崩さないのはなんか理由があるんだろうか。ちなみに、以下のリストではライブラリ間の依…

Vellumを試してみた

Zedがなんだか頑張っているようなのでVellumを試してみた。Pythonで書かれた「超」単純なビルドシステムであったはずが…Python文法のサブセットを解釈するパーザ (Zappで書かれている) を追加したりとか、よく分からないことになっている。リンク先には詳し…

Boost.MPLのlambdaがようわからん

コンテナのリストが与えられたとき、そのすべての要素のvalue_typeが同じであるかどうかを調べるメタ関数を書いているんだけど、腑に落ちないのが以下。 #include <boost/mpl/vector.hpp> #include <boost/mpl/at.hpp> #include <boost/mpl/if.hpp> #include <boost/mpl/fold.hpp> #include <boost/mpl/bool.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/lambda.hpp> #include </boost/mpl/lambda.hpp></boost/mpl/and.hpp></boost/mpl/bool.hpp></boost/mpl/fold.hpp></boost/mpl/if.hpp></boost/mpl/at.hpp></boost/mpl/vector.hpp>

Mozo.PHPのアーカイブを更新しました。

オレンジニュースにて紹介していただいたようなので、ダウンロードのリンク先を修正しておきました。RSSリーダで再度上に上がってきてしまった方、すみません。こちらにも念のため: http://voltex.jp/downloads/mozo-php-20080405.tar.bz2

libffi 3.0.5 リリース

libffi (x86) のクロージャがbuggyな件で書いていた問題が修正されたlibffi 3.0.5がリリースされた模様。 ">ChangeLogいろんなプロジェクトで自分の名前が無意味に拡散している今日このごろ。 パッチだけじゃなくてゴリゴリ貢献したいよなあ。追記: 過去に作…

続Boost.GILで遊んでみる。

昨日のサンプルをさらに発展させて、縮拡・回転に挑戦してみた。実際に動作させたところ: http://video.google.com/videoplay?docid=-8908866618776833085 #include <iostream> #include <cmath> #include <boost/lexical_cast.hpp> #include <boost/gil/typedefs.hpp> #include <boost/gil/extension/io/png_io.hpp> #include </boost/gil/extension/io/png_io.hpp></boost/gil/typedefs.hpp></boost/lexical_cast.hpp></cmath></iostream>

Boost.GILで遊んでみる

遊んでいるというか、遊んではいないんだけど。PNG画像を読み込んでアスキーアートぽく出力するサンプル。 #include <iostream> #include <boost/gil/typedefs.hpp> #include <boost/gil/extension/io/png_io.hpp> int main(int argc, char** argv) { namespace g = boost::gil; if (argc <= 1) return -1; g::rgba8_image_t img; g</boost/gil/extension/io/png_io.hpp></boost/gil/typedefs.hpp></iostream>…

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年弱かかったわけで。意味が分からん。

[math][knuth] Surreal Number

上のプログラムで ZeroOrMore と書いていて思い出したのが surreal number (日本語だと超現実数?でもこの言い方オカルト臭くて好きじゃない…)。クヌース先生の書いた「至福の超現実数」というこれまた怪しい本があるのでおすすめ (血気盛んな若い男女の話で…

[haXe] haXe、変態的過ぎるの巻

なんじゃあこのswitchはぁぁぁぁぁ!!!!!!! OCamlか!!!!!! って haXe 自体が OCaml で書かれているし。w.l.o.g.のこのエントリで紹介されていた論文「Derivation of deterministic inverse programs based on LR parsing」に出ているランレングスのサンプルコ…

Cyrus-SASL の configure.in と aclocal.m4 がひどい件

AC_ARG_WITH(plugindir, [ --with-plugindir=DIR set the directory where plugins will be found [[/usr/lib/sasl2]] ], plugindir=$withval, plugindir=/usr/lib/sasl2) AC_DEFINE_UNQUOTED(PLUGINDIR, "$plugindir", [Runtime plugin location]) AC_SUBST…

CVS のレポジトリをまるごと Mercurial 化するスクリプト

だんだんスニペット置き場になりつつあるような気がする…。いや、日本語で喋るかプログラミング言語で喋るかの違いしかないよね。追記1: 今見たら EXIT_SUCCESS がなぜか 1 になってたので修正しました。はずかしー>< 追記2: -d:pserver:anonymous... はあ…