つれづれ日記 2008年9月

予定

毎日


2008年9月30日 (火曜日)

23:42:37 # Life emacs で tab-width を変更する。 lsyncd のソースをよんでいて、デフォルトの 8 タブだとあまりにも横に広がりすぎるので設定変更。 (setq tab-width 2) としたら 2 タブになりました。 簡単すぎ。

2008年9月28日 (日曜日)

09:31:59 # Life libnss-mdns が再インストールするとまともにうごかない件。 /etc/nsswitch.conf を書き換えているのだが、それが再インストールのケースを 考慮していないようだ。 500478

11:23:55 # Life 質問サイト。 質問を追加して、どの質問がよいかを投票できるサイトがあるみたいです。 とりあえず東京エリアDebian勉強会についてのトピックをたててみました。 なにか今後とりあげたいテーマとかあれば、それで投票してみましょう。 テーマはなんでもよくて、既存の質問については+ / - で投票できて、 結果として + が一番多かった質問から順番に並びます。 Google(GMail?) のアカウントが必要なようです。

2008年9月27日 (土曜日)

00:10:25 # Life 負荷テスト。 とりあえず、手元の git サーバがセミナー時の負荷に耐えるかどうか確認です。 30クライアントで試験してみたところ、接続失敗エラーが発生していました。 ソースを 確認してみたところ、max_connections = 32 というデフォルトの値が定義されていました。 --max-connections オプションを指定してあげないと当日エラーが起きそうですな。

10:23:46 # Life ssh の常識。 .ssh/config で ControlMaster auto を設定すると接続が高速になるので 遠距離のサーバに対して ssh で捜査するのは常識だよね。 あと、ユーザ名の指定って .ssh/config でデフォルトが指定できる から、現在のユーザ名とサーバ側のユーザ名が違ってもそこに設定すれば大丈夫。 知ってた? (man ssh_config)

... 実は僕は知らなかったのですが。 ControlMaster auto でセッションをはりなおさないのは高速だとおもっていたけどさらに この方法だと ssh-agent をつかわなくてもパスワードを最初の一回だけ入力すればよい認証にできるという点については気付いてなかった。 不覚。便利じゃん。

あと、localhost に対しては stricthostkeychecking をオフにしてます。 これは chroot やゲストOSに対して ssh を利用して接続する場合、 ホストキーはその場で作成した捨てキーなので毎回チェックするのにあまり意味が見出せないからでした。

UPDATE: コメントいただいたので追記。 Host には複数のホストを記述できます。 で、また、Compression yes としたほうが遠隔で遅い接続であれば快適かも。

ServerAliveInterval 10
ServerAliveCountMax 12
Compression yes

Host alioth.debian.org git.debian.org 
  ControlMaster auto
  ControlPath ~/tmp/ssh-%r@%h:%p
  User dancer

Host localhost
  StrictHostKeyChecking no
  Compression no

#Host *
#  -- I can set default setting here...
	

21:18:45 # Life isight firmware. 久しぶりにMacBook のiSight をつかって動画をとってみようかなとおもって調べてみた。 状況が大きく変わっている。 linux-uvc が Linux Kernel 2.6.26 にマージされている。 isight_firmware (drivers/usb/misc/isight_firmare.c) モジュールというのが Linux Kernel 2.6.26 にはいっていて /lib/firmware/isight.fw というファイルをロードするようだ。 isight-firmware-tools というツールがあって、それは hal でがんばっているようだ。 だが、HAL経由でうまくうごいていないような気がする。 昔の macbook-firmware-loader で無理矢理ロードさせてみるとファームウェアはロードできたようだ。 IFT で強制ロードさせる仕組みはどうだろう?

$ dmesg 抜粋
[   10.942810] firmware: requesting isight.fw
[   11.063666] usbcore: registered new interface driver isight_firmware
$ lsusb
Bus 005 Device 003: ID 05ac:8300 Apple, Inc. Built-in iSight (no firmware loaded)	
	

なんとなく sudo mv ./kernel/drivers/usb/misc/isight_firmware.ko{,-disabled} してみた。 そうすると isight_firmware.ko 自体はつかわれなくなる。

/var/log/messagesを眺めている感じでは、

Sep 27 21:27:44 coreduo ift-callout: Firmware loaded succesfully to 005:003
	

しかし、lsusb の結果を見る感じでは、だめ。 /dev/video0 も作成されない。 なんでだ?

$ lsusb
Bus 005 Device 003: ID 05ac:8300 Apple, Inc. Built-in iSight (no firmware loaded)
  	

昔のツールを使うとファームウェアのロードはできる。 uvcvideo ドライバもロードできて、認識はする。 /dev/video0 も作成される。

$ sudo macbook-isight-firmware-loader AppleUSBVideoSupport
$ lsusb
Bus 005 Device 087: ID 05ac:8501 Apple, Inc. Built-in iSight [Micron]
$ v4l-info 

### v4l2 device info [/dev/video0] ###
general info
    VIDIOC_QUERYCAP
	driver                  : "uvcvideo"
	card                    : "Built-in iSight"
	bus_info                : "0000:00:1d.7"
	version                 : 0.1.0
	capabilities            : 0x4000001 [VIDEO_CAPTURE,STREAMING]

standards

inputs
    VIDIOC_ENUMINPUT(0)
	index                   : 0
	name                    : "Camera 1"
	type                    : CAMERA
	audioset                : 0
	tuner                   : 0
	std                     : 0x0 []
	status                  : 0x0 []

video capture
    VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
	index                   : 0
	type                    : VIDEO_CAPTURE
	flags                   : 0
	description             : "32595559-0000-0010-0080-719b380"
	pixelformat             : 0x00000000 [....]
    VIDIOC_G_FMT(VIDEO_CAPTURE)
	type                    : VIDEO_CAPTURE
	fmt.pix.width           : 640
	fmt.pix.height          : 480
	fmt.pix.pixelformat     : 0x00000000 [....]
	fmt.pix.field           : NONE
	fmt.pix.bytesperline    : 1280
	fmt.pix.sizeimage       : 614400
	fmt.pix.colorspace      : unknown
	fmt.pix.priv            : 0

controls
    VIDIOC_QUERYCTRL(BASE+0)
	id                      : 9963776
	type                    : INTEGER
	name                    : "Brightness"
	minimum                 : 0
	maximum                 : -256
	step                    : 256
	default_value           : 16128
	flags                   : 0

### video4linux device info [/dev/video0] ###
general info
    VIDIOCGCAP
	name                    : "Built-in iSight"
	type                    : 0x1 [CAPTURE]
	channels                : 1
	audios                  : 0
	maxwidth                : 640
	maxheight               : 480
	minwidth                : 48
	minheight               : 32

channels
ioctl VIDIOCGCHAN: Invalid argument

tuner
ioctl VIDIOCGTUNER: Invalid argument

audio
ioctl VIDIOCGAUDIO: Invalid argument

picture
    VIDIOCGPICT
	brightness              : 64
	hue                     : 0
	colour                  : 54613
	contrast                : 0
	whiteness               : 0
	depth                   : 16
	palette                 : unknown

buffer
ioctl VIDIOCGFBUF: Invalid argument

window
    VIDIOCGWIN
	x                       : 0
	y                       : 0
	width                   : 640
	height                  : 480
	chromakey               : 0
	flags                   : 0

	

2008年9月26日 (金曜日)

09:37:58 # Life flymake. ここ数日flymake をいじっています。 Cを対象とする場合、フラグとかが一意に決まらないので check-syntax という make ターゲットを作成して 対応することになります。 しかし、makefile の中身でフラグとかはそもそもわかっているはずなので、make -n の出力を処理してどうにかなったりしないものか?

21:16:03 # Life pdnsd。 最近 pdnsd を使ってみています。 spamassassinでDNS系のチェックを入れているとDNSリクエストが大量に発生するのですが、 今使っているプロバイダーの提供しているDNSサーバがいけてないようでした。 そこでpdnsdを使ったのですが、 デフォルトの設定ではリクエストがドロップされまくっていました。 とりあえずスレッドの上限を増やしてみたりキャッシュのサイズを大きくしてみたりしました。 pdnsd-ctl status で確認したところの0 queries droppedというのがポイントです。

Thread status:
==============
pdnsd control thread is running.
tcp server thread is running.
udp server thread is running.
3870 query threads spawned in total (0 queries dropped).
227 running query threads (227 active, 0 queued).
	

2008年9月25日 (木曜日)

09:00:06 # Life Debian 仮想インスタンス。 とりあえず実験用のインスタンスをインストールしようとして、kqemu をいじる。 kvm と kqemu をみてみたところ、kvm が一般ユーザでどうもうごいていない気がする。 ユーザをkvmグループに追加したあと再起動したら直っていた。 sid にはいっている kqemu (1.4) は現在 experimental にはいっている qemu でしか動かないようだ。うがー。500152 lenny の kqemu (1.3) は sid でも大丈夫なのでlenny のリリースには影響ないようだ。

09:41:47 # Life emacs の info. emacs22-common-non-dfsg をインストールしないとみれない、 というのにいまさら気付きました。

2008年9月23日 (火曜日)

22:16:29 # Life 画面の動画をとってみた。 recordmydesktop というパッケージがあります。 Xでの画面の操作を動画にして録画してくれるようです。 とりあえずためしてみました。 単純にファイル名を指定するだけでそれっぽく動作してくれます。録画終了は ctrl-c でよいようです。 recordmydesktop -workdir /var/tmp/ -width 800 -height 600 -y 32 -o latex.ogv カスタマイズしたのは次の部分です。 作業ファイルを置くディレクトリはデフォルトで/tmpを利用することになりますが、作業ファイルのサイズが大きいため /tmp におさまらなかったので、 /var/tmp を指定したのと、MacBook の画面は横長なのでそのまま録画すると見にくくなるかなぁとおもって 800x600 のサイズにしてみました。 あと gnome のパネル部分がもったいないので、y 開始位置を32 pixel 下にしています。 これでogg theora の動画が作成されます。 勢いにのって google video にアップロードしようとしたら、 ogg theora はサポートしてませんでした。。。残念。

2008年9月22日 (月曜日)

08:37:08 # Life Debian upload queue の変更。 メンテナがパッケージを変更して、アップロードすると Debian sid に入ります。 その際に利用するファイル転送サービスが Debian upload queue です。 ftp 経由でアップロードして GPG 署名を確認し、適切なディストリビューションに パッケージを追加するという処理が行われています。 Joerg Jaspert が変更点を blog に書いてました。 CNAME が追加されて upload.ftp.debian.org, upload.ssh.debian.org でアップロードするように変更。 従来は ftp プロトコルのみ公式サポートしていたのが ssh プロトコル経由でもサポートするように。 あたりが影響するかな?

21:47:46 # Life cdn を利用しているときの approx の挙動。 現在滞在している国にあったミラーを自動で利用できるようになる仕組み cdn.debian.net を利用しています。 さらに手元では、pbuilder などの開発を効率よく行うには Debian ミラーが必須なので、 approx を併用してキャッシュしています。 approx は必要なファイルがあるたびい内部的に毎回 curl を呼び出しています。 cdn.debian.net は名前解決を行うたびに違う答えをかえしてきます。 結果としてパッケージ毎に違うミラーからダウンロードすることになるようです。 そこまで分散しなくても大丈夫だとおもうんだけどな。 特に問題になっているわけではないですが、通常のapt-get / aptitude だけだとそういう挙動にならないのでメモしてみました。

2008年9月20日 (土曜日)

22:24:27 # Life yodl が一時ファイルを /tmp/yodl-ユーザ名 に作成する。 --unique-outputオプションを追加すると若干改善するらしい。 並列ビルドにして出力ファイルが意味不明な内容になるのではまりました。

2008年9月18日 (木曜日)

09:24:40 # Life evince でフォントが豆腐になった件。 インストールしたそのままのデフォルトでは ttf-japanese-gothic を選択するようなのだが、それがシンボリックリンクで VLGothic の場合に(限るのか?)うまく表示されない。 alternatives での変更がうまく反映されていないのか、 なんらかの設定が足りていないのか。 デバッグ中。 とりあえずBTSした。499428

2008年9月16日 (火曜日)

22:01:48 # Life platex のコンパイルするための makefile を並列で実行してみた。 東京エリアDebian勉強会用資料のリポジトリ(monthly-report.git) には、 tex のソースファイルが現時点で 110 あります。 高速化する方法はないかなぁとおもって並列ビルドを試してみました。 latex の特性として、スタイルファイルの読み込みや一時ファイルの読み書きなどでディスクIOはありますが主としてCPU負荷の高い処理が続き、 メモリ消費はあまりないというのがあります。 dvipdfmx を実行する部分で少しメモリを大きめに消費しますが、dvipdfmx+gs でも20MB程度。 ということで、メモリ1GB搭載のdual-core のノートパソコンで10並列で動かしてみました。 結論からいうと、2並列で十分高速になった気がします。 しかしそれ以上の高速化はまた違うチューニングをしないとだめなんじゃないかと。 直列の場合:

real	10m43.546s
user	10m13.846s
sys	0m16.429s
	

並列の場合(make -j2):

real	6m29.429s
user	10m37.064s
sys	0m19.005s
	

並列の場合(make -j10):

real	6m7.792s
user	10m52.361s
sys	0m19.293s
	

tex/styファイルのハッシュをとって、 latex の出力をキャッシュするという仕組みがあるともうすこし高速にできるかもなぁ。 styが変更されない前提で、 sty ファイルをロードしたところまでをダンプして、そこから先だけをビルドするとかすれば高速化になるか? whizzytexにある機能を応用したらできるか? この仕組みは preview-latexではpreview-cache-preamble というらしい。

2008年9月14日 (日曜日)

16:46:20 # Life テストコードをコメントに書いておいたらそれが実行できる、というのがどっかであったなぁ、とおもってたんですが。 rcodetools (xmp)ってやつですね。曖昧な記憶で、ちょっと違ったけど。 ruby でできるならその他の言語でできないはずがない。

2008年9月11日 (木曜日)

22:51:43 # Life v8. 手元でビルドが通るように修正しつつ git svn rebase してみたら、いろいろな修正がなされてました。 Debian sid でもビルドがとおるようになったようです。 とりあえず今日はscons sample=shell のビルドが通ったので満足です。

[22:52:37]coreduo:v8> ./shell 
V8 version 0.3.1
> quit
function () { [native code] }
> bye
(shell):1: ReferenceError: bye is not defined
bye
^
> exit 
(shell):1: ReferenceError: exit is not defined
exit 
^
>
	

2008年9月4日 (木曜日)

09:13:28 # Life evince で日本語が豆腐になった。 とりあえずttf-japanese-gothic の alternatives がvlgothic ではなく kochi にすれば直るのがわかったのでそれで回避。 vlgothic ではなぜ動かないのだ?

2008年9月3日 (水曜日)

21:27:11 # Life grub rescue CD を作成。 なんとなく起動できるようにディスクを準備してみた。

$ mkdir -p iso/boot/grub
$ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
$ genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \
	    -boot-load-size 4 -boot-info-table -o grub.iso iso
$ sudo wodim -scanbus
scsibus1000:
	1000,0,0 100000) 'MATSHITA' 'CD-RW  CW-8221  ' 'GA0H' Removable CD-ROM
	1000,1,0 100001) *
	1000,2,0 100002) *
	1000,3,0 100003) *
	1000,4,0 100004) *
	1000,5,0 100005) *
	1000,6,0 100006) *
	1000,7,0 100007) *
$ sudo wodim -v dev=1000,0,0 -eject -data /tmp/grub.iso 
	

2008年9月2日 (火曜日)

22:42:46 # Life 祭りにのりおくれないためにとりあえず。 git-svn clone http://v8.googlecode.com/svn/trunk/ v8してみた。 Debian GNU Linux sid (i386) 上でsconsを実行して、いまここ。

g++ -o obj/release/accessors.o -c -ansi -pedantic -Wall -Werror -W -Wno-unused-parameter -fno-strict-aliasing -O2 -fno-rtti -fno-exceptions -ansi -pedantic -Wall -Werror -W -Wno-unused-parameter -fno-strict-aliasing -O2 -DENABLE_LOGGING_AND_PROFILING src/accessors.cc
In file included from src/v8.h:62,
                 from src/accessors.cc:28:
src/objects-inl.h:251: error: explicit template specialization cannot have a storage class
src/objects-inl.h:298: error: explicit template specialization cannot have a storage class
scons: *** [obj/release/accessors.o] Error 1
scons: building terminated because of errors.
	

2008年9月1日 (月曜日)

12:00:58 # Life 朝からCのregexpで遊んだ。 qemubuilder + distcc の仕組みをいろいろ作るための 第一歩。


Junichi Uekawa

$Id: 200809.html.ja,v 1.31 2008/10/01 06:43:17 dancer Exp $