23:42:37 # Life emacs で tab-width を変更する。 lsyncd のソースをよんでいて、デフォルトの 8 タブだとあまりにも横に広がりすぎるので設定変更。 (setq tab-width 2) としたら 2 タブになりました。 簡単すぎ。
09:31:59 # Life libnss-mdns が再インストールするとまともにうごかない件。 /etc/nsswitch.conf を書き換えているのだが、それが再インストールのケースを 考慮していないようだ。 500478
11:23:55 # Life 質問サイト。 質問を追加して、どの質問がよいかを投票できるサイトがあるみたいです。 とりあえず東京エリアDebian勉強会についてのトピックをたててみました。 なにか今後とりあげたいテーマとかあれば、それで投票してみましょう。 テーマはなんでもよくて、既存の質問については+ / - で投票できて、 結果として + が一番多かった質問から順番に並びます。 Google(GMail?) のアカウントが必要なようです。
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
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).
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 をインストールしないとみれない、 というのにいまさら気付きました。
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 はサポートしてませんでした。。。残念。
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 だけだとそういう挙動にならないのでメモしてみました。
22:24:27 # Life yodl が一時ファイルを /tmp/yodl-ユーザ名 に作成する。 --unique-outputオプションを追加すると若干改善するらしい。 並列ビルドにして出力ファイルが意味不明な内容になるのではまりました。
09:24:40 # Life evince でフォントが豆腐になった件。 インストールしたそのままのデフォルトでは ttf-japanese-gothic を選択するようなのだが、それがシンボリックリンクで VLGothic の場合に(限るのか?)うまく表示されない。 alternatives での変更がうまく反映されていないのか、 なんらかの設定が足りていないのか。 デバッグ中。 とりあえずBTSした。499428
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 というらしい。
16:46:20 # Life テストコードをコメントに書いておいたらそれが実行できる、というのがどっかであったなぁ、とおもってたんですが。 rcodetools (xmp)ってやつですね。曖昧な記憶で、ちょっと違ったけど。 ruby でできるならその他の言語でできないはずがない。
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 ^ >
09:13:28 # Life evince で日本語が豆腐になった。 とりあえずttf-japanese-gothic の alternatives がvlgothic ではなく kochi にすれば直るのがわかったのでそれで回避。 vlgothic ではなぜ動かないのだ?
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
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.
$Id: 200809.html.ja,v 1.31 2008/10/01 06:43:17 dancer Exp $