頻繁に X が落ちる件
仮想画面を切り替えたり Firefox でタブをツンツンしたりした瞬間に落ちる現象が 解決された模様。
ここらへんに経緯がある https://bugs.freedesktop.org/...(←ヲレヲレ署名)。
変更箇所からいって、
# cd XF4/xc/programs/Xserver/fb
# make && make install
で十分かな。
OpenBSD の場合、セキュリティのため mmap のリターンページのアドレスをかき混ぜてるので、
書き込んだあとにうっかりそのまま読もうとして失敗とか、固有の(!)問題がいろいろとある。
gprolog とか clisp とかがまだ動かない。誰か、きちんと動く Common Lisp 処理系プリーズ。
X31 で winmodem
http://mail-index.netbsd.org/...
via: http://sigsegv.s25.xrea.com/...
まじですか。試そうかなあ。でも重要度はかなり低いなあ。どうしよ。
もしこれが動けば、OpenBSD 上で動作していない機能は残り、
- ACPI (作業中)
- Firewire (以前はあったけど消えた)
- TCPA (NetBSD のパッチはある)
のみとなるわけだ。うはは。
参考: http://www.cse.unsw.edu.au/~dons/x31.html
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 も何もしないコードしか出力されないんだけど。
誰もテストしてないのかよ!なんだかなあ。
ところで、FreeBSD も NetBSD も対策をしてないようなので、
このパッチは有効みたい。未確認。
pccts 入門その 2
LL(1) で解決: ch3-03p2.g
expressions
: expr ("="^ expr )* "\n"
| "\n"
;
のようにすればよい。この場合、左辺を確定した後で右辺のマッチに入るので曖昧にならない。
ただし、この場合は、
1+1=3
も文法的に正しくなる。ので、木を評価するときに左辺をチェックする。
今回はそのまま出力するだけなので、上の式だと '3' を印字する。
そういえば、一部のパターンマッチの機構を持つ言語だと確かに上の文法もアリだ。
なるほどなるほど。
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)。
って、日本語訳版は絶版になってるのか。
知らなかった。
続きを読む ...
OpenGL を使用するソフトでマウスが画面左側に張り付いて離れなくなる件
http://marc.theaimsgroup.com/...
あー、これこれ。
これが起こると X ごと落とさないといけなくなるという悲惨な状況に。
あと、上で指摘されてるけど、水平方向への異常しか起こらないところも謎。
Blender で起こるんだよね。
Wings 3D でも起こるんだよね。南無南無。
うちだけの現象だと思ってた。
確かに共通してるのは OpenGL ぐらいしかないな(Wings 3D は SDL を介してるけど)。
ところで Wings 3D はおもしろいよ(Erlang で動く実用ソフトだし。ソースもなかなか読みごたえがある)。
別稿でネタ書こうかしら。
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 のときに動作しなくなることがある。
この手の文字列処理って、
思い込みで書いてるのでけっこう気が付きにくいんだよね。