2001-08-03 [長年日記]
λ. Ruby Relaxer
あれは感想ではないと思われ。まあ、そのうち試してみたいなぁとは思うけど。
ふむふむ、RELAXで定義されたXMLモデルに従ったXMLドキュメントを操作するためのクラスを自動生成する
のか。確かに便利そう。あらかじめ定義されたモデルに従った文章だけを扱うなら、DOMなんかいらなくなるわけか。こいつはいいや!
λ. 15000 hit
気が付いたら越えてた。
λ. Scheme(というかScript-Fu)でオクテット列から文字列に変換するには?
いっちーさんに訊かれて色々考えてみたけど、良い方法が思い付かない。たとえば、こんな関数が考えられるけど、オクテットにinteger->charを適用するのは正しい結果を得られる保証が無いばかりか、マルチバイト文字を考慮しないことになる。まあ、SIODじゃ動かないからどうでも良いんだけど。
(define bytes->string (lambda (bytes) (list->string (mapcar integer->char (vector->list bytes)))))
λ. 結局、以下のようなプラグインを書いて使うというのが一番ましな方法かもしれない。しかしアレだよな〜
#include <libgimp/gimp.h> #include <string.h> static void query(void); static void run(char* name, int nparams, GimpParam* param, int* nreturn_vals, GimpParam** return_vals); GimpPlugInInfo PLUG_IN_INFO = { NULL, /* init_proc */ NULL, /* quit_proc */ &query, /* query_proc */ &run, /* run_proc */ }; MAIN() static void query() { static GimpParamDef args[] = { {GIMP_PDB_INT32, "length", "array length"}, {GIMP_PDB_INT8ARRAY, "bytes", "Input bytes"}, }; static GimpParamDef return_vals[] = { {GIMP_PDB_STRING, "string", "Output string)"}, }; static int nargs = sizeof(args) / sizeof(args[0]); static int nreturn_vals = sizeof(return_vals) / sizeof(return_vals[0]); gimp_install_procedure("int8array_to_string", "Convert INT8ARRAY to STRING", "Convert INT8ARRAY to STRING", "Masahiro SAKAI", "Copyright (c) 2000 Masahiro SAKAI", "Fri Aug 3 17:35:49 JST 2001", NULL, "", GIMP_EXTENSION, nargs, nreturn_vals, args, return_vals); } static void run(char* name, int nparams, GimpParam* param, int* nreturn_vals, GimpParam** return_vals) { static GimpParam values[2]; gint32 length = param[0].data.d_int32; gint8* array = param[1].data.d_int8array; guchar* result; result = g_new(guchar, length + 1); result[length] = 0; memcpy(result, array, length); *nreturn_vals = 2; *return_vals = values; values[0].type = GIMP_PDB_STATUS; values[0].data.d_status = GIMP_PDB_SUCCESS; values[1].type = GIMP_PDB_STRING; values[1].data.d_string = result; }
λ. このプラグインを使って、
(define parasite (car (gimp-image-parasite-find 0 "gimp-comment"))) => ("gimp-comment" 1 #22"437265617465642077697468205468652047494d5000") (define hoge (caddr parasite)) => #22"437265617465642077697468205468652047494d5000" (car (int8array-to-string (length hoge) hoge)) => "Created with The GIMP"
λ. ところで
今日も起きたのは昼だし、最近は寝た時間に関係なく起きるのが昼ごろだな〜。さて、せっかく救済措置を取ってもらった体育のレポートを仕上げなくちゃ。これが仕上らないと明日の呑み会も行けなくなるし。
λ. それにしても
「A∨¬A」で検索されるとは…
λ. ルパン3世 アルカトラズ・コネクション
アルカトラズの閉鎖とJFKの暗殺を関連づけるというアイディアは面白かったけど、それだけ。