2008年7月1日(火) やっと家へ [同日]
● 友だちの家で朝ごはんをいただいてから出発。早いのに。何からなにまでありがとう。
● GPSで位置を確認しながら101号線を北へ。空港こっち、という看板が見えて一番右の車線に寄って走っていたら、空港へ向かうランプをびゅん、と通りすぎた。えっ?おっかしいな。さっきの看板を見てこの車線を進めばいい、と思いこんでたのに、実際にはもう一度右に出ないといけなかったようだ。友だちの奥さんも同じ間違いをしたようで、まあ僕だけじゃないんだな。
● どこで戻ろうかと思っていると次の出口が見えてきた。レンタカー屋さんの入っている建物も。結果的にはレンタカーを返す時には、空港を通りすぎた次の出口で良かったようだ。空港に出てしまってたらだいぶ遠回りにになっちゃってたのかもしれない。
● いずれにせよ、101号線にわかりやすい標示が無いのが問題なんだろうね。
● SFO
そういうわけでレンタカーを返しシャトル (Air Train!) に乗って空港に到着。この乗り物は無人運転なんだけど、扉が閉まる時に誰かがかけこむと「I delayed departure」とか言って、ちょっと待っている。なかなかよくできている。
しかし外はずいぶん寒かった。昼間はすっきりした気候で、頭を使うような仕事にはちょうど良い感じ。これもIT産業が発達した理由のひとつなのかもね (いいかげん)。
● SFO-HNL B767
けっこう空いてる。航空会社だいじょうぶかな。そろそろおなかが空いてきたな、と思ったらご飯が出ました。ごちそうさま。
● HNL
さっきのが昼ごはんだったような気がするけどもう一度。コナビールのパブはまだ工事中でした。
● HNL-ITO B717-200
ぼーっと音楽を聴いてた。やっぱりノイズキャンセルヘッドホン欲しいかもなあ…。せめてヘッドホンのまわりのウレタン(片方だけ紛失した)の換えだけでも見つけたかった。
● ITO
荷物出てこないなあ、とおもっているとカールセルががたんと止まった。またですかー。窓口で連絡先を知らせてリファレンス番号をもらう。SFOでスーツが壊れたのを入れて、今回だけで三度目の荷物のトラブルですよ。これまで一度しかなかったのに、今回は運が良い、ちがう、悪い。
結局荷物は夜遅くにおじさんが乗用車で配達してくれました。フランスで買ったワインがほっかほかになってましたよ。残念無念。しかしホノルル空港で待たされることを考えても、こういうものを買ってくるのには無理があったか。
2008年7月2日(水) 時差ぼけでぐっすり眠る [同日]
● Palmの充電器を壊した
出張中にPalmの電池がこころもとなくなってきたので、変換プラグを通して接続。あれ?充電してないな、酔ってるからかな(なぜ)、と思って放っておいた。
戻って改めて充電しようとしても充電されない。ようく見ると、INPUT: 120VACと書いてある。げげっ。今時そりゃないっしょー。しかもこのでかい図体で。フランスの220Vの電源で壊してしまったか。
このデバイスは幸いUSB経由で充電できるので、今後はそれで凌ぐことにする。とは言え、Frogpadのように電源の線に5V来ているだけではだめで、USBのクロックも見ているようなのでPC経由でしか充電できないんだけれど。まったく妙なところで贅沢だよね。
というか、電気器具の標示をちゃんと見るように。下手すると火事になる。はい、すみません。
2008年7月5日(土) 久しぶりにプログラミング遊び [同日]
● 仕様書を読むだけで時間切れになりそうな予感もありますが。
● [memo] Ubuntu 8.04のSCIMを、shift+spaceでon/offする
SCIMのSetupのウインドウを表示して、Global Setup内のTriggerでShift+spaceを追加したらできるようになった。
● [run] 最短コース
昨日久しぶりにサッカー(もどき)をして、自分の体力の無さに愕然とした。走りはじめていきなり、今までそこにあったはずの筋肉が無いことに気づいた。がんばらにゃ。
時計が壊れているのでしばらくのあいだタイムは測れない。
● USB video device class (wikipedia.org) に対応したカメラから好きな設定で静止画を得たい
案外欲しい機能をすべて備えたアプリケーションが無いものだね。
LinuxからUVCデバイスを使うには、Linux UVC driver and tools (berlios.de) を使うのかと思ったけれど、このパッケージにはあまりドキュメントが無い。非公式Wikiからもリンクされているluvcview (quickcamteam.net) のソースコードを見ると、Video for Linux Two (V4L2; linuxtv.org) に定義されている定数をioctl()で送ってやりとりをしているみたい。
とりあえずはluvcviewに倣って、V4L2のドキュメントを読みながらコードを書けばいいのだろうか。それがLinux UVC driver and toolsを使うことになるのか、調べたらこのパッケージにもっと使いやすいAPIがあるのか気になる…と書きつつV4L2を読んどこ。
(追記) ちゃうちゃう。アプリケーションから見えるAPIがV4L2で、USB video device classに対応したハードウェアに対してこのAPIを実装してるのがLinux UVC driver and toolsなんだ。
● ジョギングの後に買い物に行くのは避けるべき
ビールを買ってしまったではないかい。
2008年7月8日(火) 頭が筋肉痛 [同日]
● それは頭痛というものです。寝る前に二分探索の比較回数とか考えてたからなあ…。
● [DocoMomo] サスペンドさせるのは難しいかも
しばらく放ってあるどこモモ。IMクライアントを入れたくなったのを気に、今、サスペンド(かな?メモリの内容はハードディスクに書かずにメモリの中に保持したままの方)できないのが何故か調べてみました。
そしてわかった衝撃の事実。USBドライバモジュール(ehci-hcd)をアンロードして、再度、ロードする (藤井正人Online研究室) 必要があるようです。えー。それにはUSBメモリをumountする必要があって、それにはrun level 1まで降りなくちゃいけなくて、それにはサスペンド直前に走ってたプロセスはほとんど止めなくちゃいけないことになります。サスペンドの意味ないやん。というわけでまた保留。何とかumountしないでモジュールのリロードができないかな。
もうひとつ、キーボードのマッピングがデフォルトに戻っちゃう、という現象も見つけたのですが、こちらはたぶんレジュームした時にkeytableをrestartすればいいはず。(追記) これは実機で確認できた。
2008年7月10日(木) 今日は長いよ [同日]
● [DocoMomo] docomomo-0.13.1をリリースしました
DocoMomoは、512MB程度以上のあるix86マシンで512MB程度以上のUSBメモ リからGNU/Linuxを起動できるようにするツールです。DocoMomoを作成す る環境と同様の、使い慣れた環境をUSBメモリ上に構築できます。
Momonga Linux 4の上で、USBメモリへのDocoMomoのインストールおよび Linux上で動くインストーラの作成が可能です。 IMクライアントが欲しくなったのを期に更新しました。 残念ながら0.12系列で挑戦していたサスペンドはお預け。
リリース0.13.1では、複数のプロトコルを扱えるインスタントメッセンジャー Pidgin を追加しました。
DocoMomoの作成に必要なファイルは SourceForge.jpのProject Info から、LinuxからUSBにMomonga Linux 4から作成したDocoMomoをインスト ールできるインストーラは http://docomomo.sourceforge.jp/ からダウンロードしてください。
2008年7月11日(金) 遠い世界のはなしみたいだ [同日]
● 海に注ぐ溶岩が赤く光っているのが山の上から見えた。
● 熟れていない果物を食べる
切ってから熟れていないことに気づいて室温に放置してみたパパイア(の切り身)、一晩くらいじゃぜんぜん熟れない上に変な匂いもしてきた。試しに電子レンジで温めてみたら、そこそこ熟れた味に近くなった。あったかいけど。
● [memo] ルートCAの証明書の場所
どうしてこんなことまでやってるんだろうと思いつつ調べる必要があった。
Momonga Linux 2のopenssl-0.9.7g-2mでは/usr/share/ssl/cert.pemに、Momnoga Linux 4のopenssl-0.9.8f-1m.mo4では/etc/pki/tls/cert.pemにある。
今回問題になったのはUbuntu 6.06で作業前の状態ではみつけられなかったのだが、ca-certificates-20050804-0ubuntu0.6.06.1というパッケージをインストールしたら/etc/ssl/certs/以下にできた。w3mでhttpsのサイトを閲覧すると証明書に問題があるという警告は消えたが、依然、straceではどのストアを見ているのかはわからなかった。
Ubuntu 8.04ではca-certificatesをインストールしていなくても同じhttpsのサイトを問題なく閲覧できた。これも不思議。
2008年7月13日(日) [同日]
● [memo] luvcview (quickcamteam.net) を作ってみる
たぶん標準的な*1パッケージ構成のUbuntu 8.04に追加でインストールしたのは、libsdl1.2-dev。
あと、Linux UVC driver & toolsより、svn://svn.berlios.de/linux-uvc/linux-uvc/trunkをcheckoutし、libwebcamより、http://svn.quickcamteam.net/svn/qct/Linux/をcheckout。READMEのとおり、一部のヘッダファイルをsymlinkした。
*1 このご時勢コンパイラが入ってたら標準的とは言えないのかな
● 野良ビルドのluvcviewはUbuntu提供のluvcviewと違ってioctl()がInvalid argumentを返す。なぜ…
● [memo] autotoolsで管理するプロジェクトを始めてみる
久しぶりにやろうとすると忘れてしまっていることに気づく。 一度メモしておこう。下記の手順が正しいとは限らないのでご注意ください。
Ubuntuの場合は開発ツールがぜんぜん入ってない。僕の場合は、 automakeを入れる必要があった。
まずdoc/、src/、test/をつくってsrc/に適当にファイルを配置する。
autoscanでconfigure.scanを作ってもらえるので、configure.inに改名して、 FULL-PACKAGE-NAME、VERSION、BUG-REPORT-ADDRESSを編集する。
Makefile.amを作って、SUBDIRS = . test、 test/Makefile.amのcheck_PROGRAMSにとりあえず作ったテストプログラムを書く。 INCLUDES = -I$(top_srcdir)/src も追加。 (追記) TESTS = にも追加しないとmake checkで走らせてくれない。
automakeする。configure.inにAM_INIT_AUTOMAKEが無いと怒られるので、 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERISION) という行を追加する。
automakeする。aclocal.m4が無いと言われるのでaclocalする。
automakeする。install-shが無いと言われるので、automake --add-missingする。
automakeする。AC_CONFIG_FILES([Makefile])が無いと言われるので、 AC_CONFIG_FILES([test/Makefile]) という行と一緒にconfigure.inに追加する。
automakeする。INSTALLが無いと言われるのでautomaek --add-missingする。 COPYINGとしてGPL3がsymlinkされる(Ubuntu)。えええっ!?
automakeする。NEWS、README、AUTHORS、ChangeLogが無いといれる。 COPYINGも一緒に編集する。
automakeする。Makefile.inとtest/Makefile.inができる。
この状態でautoreconfすると、configureができるので実行してみる。 config.h、Makefile、test/Makefileができる。
これで、make checkが走るようになる。 ここで悩ましいのはどこまでレポジトリに登録しておくか。 他のマシンでcheckoutしてすぐ./configureできるようにしたいと思って、 手で書いたファイル以外に、 スクリプト: depcomp missing install-sh aclocal.m4、 生成ファイル: configure Makefile.in test/Makefile.in をsvn addしてみた。 次はコードのtypoの修正から。
● automakeとsubversionを使うプロジェクトでmake commitできるようにする
下記をトップディレクトリのMakefile.amに追記しておくと、 ChangeLogの最初のパラグラフ(空行まで)をcommit logとしてcommitしてくれる。
.PHONY: commit commit: .svn cd $(top_srcdir) && \ log=`sed -n '/^$$/q;p' ChangeLog` && \ svn commit -m "$$log" && \ echo "$$log"
前にも書いたような気がするけど。
● error: expected expression before `struct’
V4L2のioctl(2) APIを呼ぶコードが、上記のコンパイルエラーをもらった。 linux/videodev2.hをincludeしてプリプロセッサだけを通すと、下記のようなコードに展開されていた。
ioctl(…, _IOWR ('V', 36, struct v4l2_queryctrl), …)
_IOWRって何?というわけで、加えて、linux/ioctl.hをincludeするようにしたらコンパイルできるようになった。
2008年7月17日(木) 朝飯前のシゴト [同日]
● sshトンネル崩落
家の中に入口があるsshトンネルにつながらなくなった。/var/log/messagesには、「sshd: error: channel_setup_fwd_listener: cannot listen to port: 入口ポート番号」というログが残っていた。netstat -tするとトンネルプロセス自体は生きているようだった。
トンネルの出口からは、トンネルが切れたら再接続するようにしてある。家の中のトンネルプロセスを殺してしばらく待ったらトンネルを通れるようになった。
2008年7月21日(月) 蒸し暑いよ [同日]
● Ubuntu 8.04のシステムのタイムゾーンが勝手にJapanになる
TZは設定していないのにdateするとJSTで答えてくれちゃう。以前はHSTになってたような気がするんだけどな。
sudo dpkg-reconfigure tzdata してみた。dateがHSTで答えてくれるようになった。
2008年7月24日(木) 文字通りシゴトが積もっていく [同日]
● [memo] subversionで外部定義を設定する
レポジトリの管理下にあるディレクトリで、下記のようにする。この場合外部定義にするのはreferencesディレクトリ。
$ mkdir references $ svn add references $ svn commit
(追記) 上記までは不要だったようだ。svn removeした。
$ svn propset svn:externals 'references svn+ssh:…/references' . $ svn stat M . 外部項目 'references' の状態表示を行っています。
「svn:externalの属性値」がディレクトリとURLの対応を指すというのを思い出すのに時間をかけてしまった。これまでも何度かやってるのに。
● しかしおうちレポジトリサーバとの通信が遅くて作業が滞る。
2008年7月26日(土) 眠れなくて困る [同日]
● 起きてる分いろいろできるわけじゃないしな。
● [memo] Ubuntuのマシンをstatic IP addressにする
How to set a static IP in Ubuntu from the shellを見ながら、/etc/network/interfacesの内容を、
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
のうち後半を、
auto eth0
iface eth0 inet static
address 192.168.1.68
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
のように変更した。
/etc/resolv.confは家ルータからDHCPでもらってきてあるものが使えそうなので、そのままにしてある。編集後
sudo /etc/init.d/networking restart
したら新しいIPアドレスにsshできた。
● Ubuntuマシンから名前解決できないし、pingすら家ネットワークの外に出ていかない。何故だろうとしばらく悩んで、ルータでそのように設定していたのに気づいた。あほでした。
● そうそう、sshd_configはPermitRootLoginとUseDNSをnoにしておきました。
● Ubuntuで/dev/input/miceをコンソールに居るユーザーものにする (失敗)
ローカルログインユーザによるマルチメディアデバイスの利用を参考に、 libpam-devpermをインストールして、/etc/pam.d/loginに
session required pam_devperm.so
を追加し、/etc/logindevpermに、
/dev/tty1 0660 /dev/input/mice
を追加した…が、/dev/input/miceのownerはrootのままだった。 /dev/tty1は変化してるのになあ。
というわけで、luvcviewのSDLはマウスをみつけることができないの で起動しない。しょぼん。
2008年7月27日(日) 明るくなってきました [同日]
● [memo] Ubuntu hardyの/dev/input/miceをudevから設定する (別解で解決)
コンソールでluvcviewを起動したいのだが、 マウスを読み書きするパーミションがなかった。
/etc/udev/20-names.rulesに
KERNEL=="mice", NAME="input/%k" KERNEL=="mouse[0-9]*", NAME="input/%k"
とあるので、/etc/udev/40-permissions.rulesに、下記を追加してみた。
# Input devices, group under /dev/input KERNEL=="mice", GROUP="tty", MODE="0660" KERNEL=="mouse[0-9]*", GROUP="tty", MODE="0660"
次に、sudo vigrして、ユーザーをttyグループに追加した。
この状態でマシンを再起動して、コンソールからログインしなおしたら、 期待通りluvcviewが起動してくれた。
● 眠いぜ。
● [memo] Ubuntu 8.04からのX11Forwardingを可能にする
xauthを入れたら可能になった。同時に、libx11-6 libx11-data libxau6 libxcb-xlib0 libxcb1 libxdmcp6 libxext6 libxmuu1 x11-commonが入った。
● [memo] ちょっとの間放っておいたUbuntu Hardyのopensshを更新する
sshの鍵を作ろうとして、ふと思いだして手元のThinkpad 240をapt get updateしようとしたら、
The following packages have been kept back: bind9-host dnsutils libbind9-30 libisccfg30 linux-image-server linux-server openssh-client openssh-server
と言われた。
moccoriの日記を参考に、下記の操作をしてみた。
$ sudo apt-get dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following NEW packages will be installed: libdns35 linux-image-2.6.24-19-server linux-ubuntu-modules-2.6.24-19-server openssh-blacklist The following packages will be upgraded: bind9-host dnsutils libbind9-30 libisc32 libisccc30 libisccfg30 liblwres30 linux-image-server linux-server openssh-client openssh-server ufw 12 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 27.2MB of archives. After this operation, 83.3MB of additional disk space will be used. (後略)
sshのホストキーは作りなおされました。
● [memo] Ubuntu Hardyでconfigure: error: C compiler cannot create executables
config.logを見ると「/usr/bin/ld: crt1.o: No such file: No such file or directory」とのこと。libc-devから、libc6-devとlinux-libc-devをインストールしたら進んだ。
● [n810] PIMの開発者は一度Palmを使ってみるべき
言いすぎっていうか自分でやりたい。
N-810のgpe-*が更新されていた(2.8+maemo+svn20080722-1)のだけれど、Palm TXでは便利に使えていて僕に必要な機能はまだ無かった。そのうち自分でやりたいのでメモしておく。
- calendarの項目(タイムゾーンの違う部署をつないでやるリモート会議など)にタイムゾーンを設定できるようにする。ジョギングする、などどこでもローカル時間で実行したいタスクもあるのでタイムゾーンを設定しない項目も作れる必要がある
- todoの項目に繰り返しを設定できるようにする
- (これは別にアプリケーションを作る) システム時刻の設定でタイムゾーンを変更した場合は、時刻も追随して変更されるようにする。システム時計をUTCにするのが便利かも
いつできるかなあ…。
2008年7月30日(水) 寝不足でやま [同日]
● Palm TXのケースが裂けた
亀裂が入ってきて、そろそろ危ないかな、と思っていた、Palm TXのシリコンケースがついに裂けた。Amazonで見てもPalm shopで見てももう同じタイプのものは売っていない。
ふと思いだして、以前ネジが折れてケースを買い直したのを思いだした。今回のはネジは折れていないので2つのケースから使えるものをつくれた。
よかったよかった。
って次に壊れたらどうしようかねえ。
● そういえばN810のケースはベルトにひっかける部分が壊れている。M4のネジをPalm TXのケースのネジの折れた部分にくっつけられれば再生利用できるのかな。
● ふと、Palm TXのネジの折れたケースのうちまだ生きているベルトクリップの部分を、N810のケースの壊れてしまったベルトクリップの代わりにとりつけてみたら、着いた。わはは。3個の壊れたケースから使えるケースが2個できたわけだ。我ながらたいしたもんだ。
● [memo] gnome-terminalでEast Asian Ambiguous問題を解決する
ちょっとしたメモをja_JP.UTF-8な環境のw3mから起動したviimで付けている。 「Σ」が沢山でてきてその度に表示の桁が狂って見にくくなる。
xfce4-terminal での East Asian Ambiguous 問題 (鷹の島) を参考に、 $HOME/.xinit.d/customに下記のようなファイルを置いたらマシになった 。
VTE_CJK_WIDTH=1 export VTE_CJK_WIDTH
ただ、w3m自体の表示がすこしずれるようになったような気がする。 vimでカーソルがどこにいるかわからなくなるよりはマシなので今は我慢する。
2008年7月31日(木) 慢性的寝不足 [同日]
● O'Keefe and Sons閉店
世界で二番目においしい*1と勝手に思っていたパン屋さんが今日で店仕舞いなのだそうです。残念。ずん夫人が早起きして閉店セールのパンを買ってきてくれました。
*1 一番おいしいのはGarchingの中心にあるBäckrei Sharl
● DocoMomo持って移動オフィス
USBメモリを持ち歩いて空いてるPCを見つければ*1どこでも自分のオフィス♪というわけで空いた机を放浪中。これは便利だ。
*1 と書けるほど気楽にはPCは見つからないけど
● 今年の年末にも閏秒が来るそうですよ
IERS Bulletin C 36より。1月1日0時UTCの前に1秒増えるので日本だと元旦の午前9時の前かな。
● 閏秒は1秒増えるのに閏年は1年じゃなくて1日増えるのな。
> okuji [似たようなもので、サウナの後に牛乳一本ってのもありましたね。カロリー消費が目的だとすると、かなり本末転倒という。]
> zunda [カロリー消費にはジョギングよりもあまり脈拍の上がらないウォーキングの方が良いという話もあるそうですね。真偽のほどは知..]