Misc Change Log

`OpenBSD で scheme のアプリ開発' みたいなことをやってます。

2005-07-31

頻繁に X が落ちる件

仮想画面を切り替えたり Firefox でタブをツンツンしたりした瞬間に落ちる現象が 解決された模様

ここらへんに経緯がある https://bugs.freedesktop.org/...(←ヲレヲレ署名)。

変更箇所からいって、

# cd XF4/xc/programs/Xserver/fb
# make && make install

で十分かな。

OpenBSD の場合、セキュリティのため mmap のリターンページのアドレスをかき混ぜてるので、 書き込んだあとにうっかりそのまま読もうとして失敗とか、固有の(!)問題がいろいろとある。 gprolog とか clisp とかがまだ動かない。誰か、きちんと動く Common Lisp 処理系プリーズ。

Posted at 19:47 | Permalink | Category | Comments

X31 で winmodem

http://mail-index.netbsd.org/...

via: http://sigsegv.s25.xrea.com/...

まじですか。試そうかなあ。でも重要度はかなり低いなあ。どうしよ。

もしこれが動けば、OpenBSD 上で動作していない機能は残り、

のみとなるわけだ。うはは。

参考: http://www.cse.unsw.edu.au/~dons/x31.html

Posted at 19:07 | Permalink | Category | Comments

ogginfo が日本語タイトルで常に ### に化ける

mp3, vorbis プレイヤーとして、gqmpeg を愛用しているのだが、 vorbis でエンコードしたファイルの曲名がいつも '#' で埋められているのでおかしいなあ、と。

gqmpeg のソースを読んでみると、 ogginfo の出力をパイプで読んでいるだけのようだ。 そこで、

$ ogginfo foo.ogg

とすると、タイトルが '#' で埋められている。

で、vorbis ファイルを直接読んでみると、 やっぱり '#' で埋められてる。

vorbis のファイルは abcde エンコードしており、こいつは内部で oggenc を使っているので、 結局のところ vorbis-tools のロケールまわりに問題があるらしい。

ざっとコードを見るに、 文字コードの変換は share/utf8.c で行っているんだけど、 config.h をインクルードしてないのが原因だった。 share/iconvert.c も同じく。

というわけで、以下のファイルを ports/audio/vorbis-tools/patches 以下に投入。

patch-share_iconvert_c and patch-share_utf8_c

Citrus なしの OpenBSD の場合、環境変数 CHARSET を設定すべし(EUC-JP とか)。 Citrus 環境下では nl_langinfo(CODESET); されるのでロケールから自動設定される。

というわけで解決。

てか、config.h が無かったら、 utf8.c も iconvert.c も何もしないコードしか出力されないんだけど。 誰もテストしてないのかよ!なんだかなあ。

ところで、FreeBSDNetBSD も対策をしてないようなので、 このパッチは有効みたい。未確認。

Posted at 18:36 | Permalink | Category | Comments
2005-07-12

pccts 入門その 2

LL(1) で解決: ch3-03p2.g

expressions
    : expr ("="^ expr )* "\n"
    | "\n"
;

のようにすればよい。この場合、左辺を確定した後で右辺のマッチに入るので曖昧にならない。 ただし、この場合は、

1+1=3

も文法的に正しくなる。ので、木を評価するときに左辺をチェックする。 今回はそのまま出力するだけなので、上の式だと '3' を印字する。

そういえば、一部のパターンマッチの機構を持つ言語だと確かに上の文法もアリだ。 なるほどなるほど。

Posted at 17:42 | Permalink | Category | Comments
2005-07-11

pccts 入門

LL(k) parser generator の pccts について少しだけ。

私が教えてあげるわけじゃなくって、私が入門。 つうか教えてくれ。

lexer/parser と聞いてピンとこない人は、

http://www.okisoft.co.jp/esc/whitepaper.html こちらの「開発」はおもしろおかしくディープなこと書いていらっしゃるし、書籍なら、

Nutshell の Lex & Yacc

あたりを読めば、lexer と parser でどんなことができるのか、 ひととおりは分かるようになるんじゃないかなあ (ちなみに yacc は LALR parser generator)。 って、日本語訳版は絶版になってるのか。 知らなかった。

続きを読む ...

Posted at 15:30 | Permalink | Category | Comments
2005-07-05

OpenGL を使用するソフトでマウスが画面左側に張り付いて離れなくなる件

http://marc.theaimsgroup.com/...

あー、これこれ。 これが起こると X ごと落とさないといけなくなるという悲惨な状況に。 あと、上で指摘されてるけど、水平方向への異常しか起こらないところも謎。

Blender で起こるんだよね。 Wings 3D でも起こるんだよね。南無南無。

うちだけの現象だと思ってた。 確かに共通してるのは OpenGL ぐらいしかないな(Wings 3D は SDL を介してるけど)。

ところで Wings 3D はおもしろいよ(Erlang で動く実用ソフトだし。ソースもなかなか読みごたえがある)。 別稿でネタ書こうかしら。

Posted at 00:16 | Permalink | Category | Comments
2005-07-01

script-fu がクラッシュする件

http://distantland.hp.infoseek.co.jp/...

OpenBSD でも起こるのだけど、これで解決。

--- gimp-2.2.8/plug-ins/script-fu/siod/slib.c.orig      Tue Jan 11 20:27:32 2005
+++ gimp-2.2.8/plug-ins/script-fu/siod/slib.c   Fri Jul  1 10:40:55 2005
@@ -1131,6 +1131,8 @@
       cname = name;
       while ((c = *cname++))
        hash = ((hash * 17) ^ c) % n;
+      if (hash < 0)
+        hash = -hash;
       sl = obarray[hash];
     }

たしかにこのままでは c < 0 のときに動作しなくなることがある。

この手の文字列処理って、 思い込みで書いてるのでけっこう気が付きにくいんだよね。

Posted at 23:34 | Permalink | Category | Comments