December 26, 2007

Invalid card number (cont.)

非常に気持ち悪い終わり方だが、udevとhalをインストールしなおしたら解決した。結局誰が、いつ、どうやって/dev/snd/*を作ってるかはわからず終い。たぶんudevなんだろうが、udevinfoとかみてもドライバをロードする手がかりがないように見える。

December 22, 2007

Invalid card number

いつのupdateからかはっきりしてないのだけど、rebootしてみたらalsa-utilsのinit scriptから呼ばれるamixerがこんなエラーを大量に吐いて音が全くでない状態になった。/proc/asound/cardsとかにはちゃんとデバイスが認識されてるように見えるし、/proc/asound/card0とかもある。とりあえずstraceしてみたら、/dev/snd/controlC0/dev/aloadC0が見つからんということのようだ。udevかなあ。手動で/usr/share/alsa-base/snddevicesを実行すると一通り必要なデバイスを作ってくれるけど、OSS互換モード以外はだめぽい。

とりあえずgnome-sound-propertiesで自動検出からOSSに変更しといた。

December 18, 2007

gtk+ immoduleをXSETTINGS経由で変更する

trunkにcommitされた。

December 17, 2007

破壊的代入とcopy-sequence

何も知らずにこんなコードをEmacs Lisp上で書いた。便宜上サンプルコードとしてよりシンプルになってはいるけど。

(defun foo ()
(let ((bar '(a b c)))
(if (eq (car bar) 'a)
(prog2
(setcar bar 'e)
(foo)))
bar))

なんとなくbarには常に(a b c)が代入されて無限ループになりそうなもんだけど、最初の呼び出しも含めて実際にはfooは2回しか呼ばれない。これは'(a b c)が実行時に生成されるんではなくて、読み込み時に生成されるからなんだそうな。これを回避するにはlistやconsといった関数を呼び出せばいいようだ。ただこれらの書き換えが出来ない場合には、copy-sequencecopy-treeといった関数を使うことで手間を省くことが出来る。

勉強になった。

mew-ical.el

先日の続き。認証の有無を認識するようにして、必要ならパスワードの入力を求めるようにしてみた。それからMETHOD:REPLYな.icsファイルの場合には、リクエストに対する相手のステータスを表示するようにした。

ファイルは前回と同じ場所に置いた。