2006年12月18日

自転車ログ取りに関するメモ

自転車速度の詳細なログをとってパソコンに持ってきて処理したい。
GPSレシーバーでは今回の目的のためには精度が足りない。
世にサイクルコンピュータの類はいろいろあれど、データをパソコンに取り込めるものはないようだ。
調べてみると、Palmを使うという手がある。いかにもありそうだ。

Welcome to VeloTrend - Home of BikeBrain
画面は良くできているしホイールサイズもmm単位で設定できて、非常に良さそうだが、もう売っていないようだ。

Bikini, The bicycle computer for your PalmPilot!
その代替になりそうかと思ったらこれもオーダーできない。デモ版でも20分は動く。これでしのぐか。
Bicycle Sensor and adapter cable
センサー周りの情報。

VeloAce - Open Source Bike Computer for Palm OS
調べ始めて数日経ってからようやく発見。やはりこういうものが欲しい人はいるのだ。しかし動作条件はOS3.3以上、3.5以上推奨。手元にあるPalmはOS3.1機で、Fatal Exceptionで全くダメ。

Bikiniの開発者に問い合わせてみるか、いっそオークションでm100でも買ってVeloAceにするか。コストはどちらもさして変わらない。ふーむ。

Palm DesktopのOS X日本語版はだいぶ前に開発停止。英語版にパッチを当てれば使えなくはないが、シリアルクレードル+USB-RS-232C変換アダプタでは動かない。Palm Desktopはシリアルポートを捕まえっ放しにしたり、いろいろ気持ち悪いのでpilot-linkを使う。デフォルトは9600bpsらしく、えらく遅いが、.bashrcに
PILOTRATE=115200
export PILOTRATE
と記述してつかえば快速。
インストール
pilot-xfer -p /dev/tty.usbmodemUSB-COM1 -i palmware.prc
リスト
pilot-xfer -p /dev/tty.usbmodemUSB-COM1 -l
取り出し
pilot-xfer -p /dev/tty.usbmodemUSB-COM1 -f BikeLogDB
スケジュールやアドレスで常用するわけじゃないし、これで充分。

p5-Palm-1.3.0
PDBをアレコレするためのモジュール。例えばこんな。
#!/usr/bin/perl -w
use strict;
use Palm::PDB;
use Palm::Raw;
use Data::Dumper;
my $file = shift;
my $pdb = new Palm::PDB();
Palm::PDB::RegisterPDBHandlers("Palm::Raw", "");
$pdb->Load($file) or die $!;
print Dumper $pdb;

ちょっと古いWindows CE機も手元にあるが、CEやPocket PC、Windows Mobileにはこういうものはまったく見当たらない。やっぱPalmの文化は良かったなあ。

2005年02月18日

メモ:Postfix-コマンドへのパイプ

post2blogなどでも利用しているが、sendmail同様postfixも届いたメールをパイプでコマンドへ渡すことが出来る。
通常、このコマンドはnobodyなどのユーザで実行されるが、権限の関係で別ユーザに実行させたい場合がある。この場合は、aliasesへの記述を
foobar: "|/path/to/command"
から
foobar :include:/path/to/file
に変更し、/path/to/fileに
"|/path/to/command"
と記述する。この/path/to/fileの所有者により/path/to/commandが実行される。

2005年01月25日

航空写真を並べてつなげて眺める

前のエントリの続き。
昔の航空写真を眺めているだけでも、たぶんずっと飽きずに楽しめるが、少し手を加えるともっと楽しめるのではないか、と試してみた。

とりあえずはGPSと組み合わせるのが目標。しかしいきなりつまずく。
詳細は省くが、いわゆるオルソ画像にしないとGPSとうまく重ねられない。衛星写真や航空写真をオルソ化するソリューションも世の中にはあるのだが、これはもう何百万円もする。お気軽にPhotoshopでどうにかならないかと思って調べてみたが、一枚一枚歪めていくのは相当面倒くさい。しかも歪めたものをつなぎ合わせなくてはならない。手動でやるのはそうとう根性がいりそう。挫折。

ここで、オルソ化と思うと大変だが、要するに隣り合った画像がそれなりの枚数うまくつながっていれば、とりあえずいろいろ試して見るには充分なのでは、と思い直す。

というわけでデジカメ用のパノラマ写真生成ソフトを利用する。手元にあるのはCanon IXY digital 200aに付属してきたPhotoStitch。これはカメラをパンして撮ったものはもちろん、ドリーで撮ったものも合成できる。航空写真はまさにドリー。200aなんて数年前のデジカメなので、いまはもっと進化したソフトがあるかもしれない。

まず、タイル状に隣り合った写真をダウンロード。多少ずれていても構わない。今回はこの六つ。

Aeroarea

ダウンロードした画像の余分な部分を切り抜く。PhotoStitchは合成する画像のサイズが全部同じじゃないとだめなので、Photoshopで選択範囲を1700x1700ピクセル固定にして切り抜いた。こんな感じ。
Cropped-1

それをPhotoStitchに読み込み、画像の配置を「タイル」にして、ドラッグして正しい位置関係に並べ換える。カメラの焦点距離はとりあえず105mmにして試してみる。
Phtostitch

合成画面で開始ボタンを押すとあれよあれよと言う間に合成、バラバラだったコントラストまで揃えてくれる。
Photostitch2

保存して出来上がり。
(↓2881x2728ピクセル、約3.6MB)
Stitched

かなりコントラストが異なる写真をむりやりつなげているので、ちょっと変なところもあるけど、こりゃ簡単。やばい。ハマりそう。

追記:
http://www.esrij.com/support/erdas/document/kensho_ob2/kensho_ob2.html
によると、もうちょっと長いレンズで撮影されたみたいだが、合成の設定を変えても大した差は見られなかった。

追記(2005-01-25):
何百万円も出さなくてもGRASSを使えばオルソ化出来そうだが、なんとも壁は高そう。日本語版もあるが、とりあえず本家から最新版をダウンロード中。

追記(2005-01-26):
・GRASSの大変素晴らしい入門ページを発見。
http://www.sci.osaka-cu.ac.jp/~masumoto/vuniv2000/
数値地図をインポートする実習まであります。でもコースの最後の方。めげそう…
・撮影コース名と地点名がわかれば
http://mapbrowse.gsi.go.jp/airphoto/photos/fullimage/USA10kKT/M***/P****.jpg
で直に写真ファイルを取れるので、コース図を一覧できるようにしてみた。
$ curl -LO "http://mapbrowse.gsi.go.jp/airphoto/hyouteizu/5339/hyouteizu_5339[2-5][4-7]_USA10kKT.png"
でまとめて落としたコース図を
$ montage -tile 4x4 -geometry 1150x925 hyouteizu_53395*_USA10kKT.png hyouteizu_53394*_USA10kKT.png hyouteizu_53393*_USA10kKT.png hyouteizu_53392*_USA10kKT.png tokyo.png
で一枚につなげる。こんなにいっぱいあるんですがどうしましょう。
(4600x3700pixel, 2.6MB)
Air Tokyo

2005年01月05日

防犯カメラ

CET04で仕掛けたWebカメラを見た知人から、防犯カメラを設置して欲しいと頼まれた。

防犯とはまた穏やかじゃないなーと思いながら、ある程度しっかりしたカメラを選ぶ必要があると判断し、カメラ専門店に行って日本語は怪しいが商品知識豊富な店員にいろいろ聞いて機種を決めた。

それにしても、あるカメラについて、どの程度の暗さまで映るかと聞いたら店内の照明を全部消しちゃったのには驚いた。怪しいビル内の、壁面がカメラで埋め尽くされた真っ暗な店内で、片言の店員と細かいスペックのやり取り。画面で操作を試したうちの一つ、どこかの町が映っているものは、「あ、そのカメラの向きは変えないでね、このあいだ設置した客先のだから」。…怪しい。

カメラ自体は、実売で5万円程度のもの。単体でネットワークに接続でき、低照度に強く、パン/チルト機構付(今回は使わないけど…)と考えると、ビジネス向けラインナップの商品としてはかなり安い。ただし、自身がWebサーバとなって動画/静止画を送りだすこと、設定時間ごとに画像をftpで別マシンへ送りこむことなどはできるが、撮影した映像を管理するアプリケーションは別売で、これがずいぶん高い。事実上PCも一台占有される。
今回は静止画しか使用しないが、撮影頻度や保存期間から計算するとデータ総量はかなりのものになるので、いずれにせよ専用のストレージは必須になる。そこでPC+管理アプリケーションではなく、ストレージを最近流行りの、実は中身はLinux boxというNASにして、それ自体に簡単なファイル管理機能を仕込むことにした。

このNAS、LANDISKがなかなかの優れもの。コンシューマー向けで安価だが、動かしっぱなしが当たり前の製品なので、信頼性も自作機+Linuxなんかよりはよっぽど高そうだ。背面のスイッチ一つで起動/シャットダウンができ、それ以外に直接の人間向けインターフェイスがない上、筐体が小さくてファンレスで置き場所の自由度が高い。間にコネクタが挟まったり変にゴロゴロしたりするACアダプタもなく、ACケーブルは本体から直に生えている。誰かが触っちゃうとかケーブルが抜けちゃうなんていう設置後の不慮の事故の可能性がグッと下がる。

いじり倒している先達の成果も数多く流通している。CPUがSHということもあるのか、ずいぶんマニアックでレベルの高そうなコミュニティも活動している。

しかしOS X以外の/etc以下をいじるのは久しぶりなので、慣れるまで延べ丸一日くらいかかってしまった。
sshdも入れて、さてFTPの設定でもするかと思ったら、標準のWebインターフェイスから設定しても全然つながらない。ここでハマる。結局、sshdのインストーラが入れるhosts.allowが
ALL: LOCAL, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
となっていたのを
ALL: LOCAL, 10.0.0.0/255.0.0.0, 172.16.0.0/255.240.0.0, 192.168.0.0/255.255.0.0
に変更して解決。sshdを入れないことには/etc以下を見ることすら出来ないわけで、このhosts.allowが元々あったものかsshdのインストーラが入れたものなのかがわからず、切り分けが遅れてしまった。

sshdのインストーラのような、筐体を開けなくても中身をいじれるようになるツールは素晴らしいが、ある程度以上いじるならやはり事前にドライブを取り出して、別マシンでext2をマウントしてddか何かでイメージを取っておくくらいのことはやっておかないと、いざというとき苦労することになる。
はー、くたびれたー。

設置するのは百人規模の人が出入りするオフィスで、現状成り行きで構築されているLAN環境は非常に怪しいことになっている。IPアドレスの重複なんて日常茶飯事っぽく、ヤバ過ぎるので、ネットワークの起動スクリプトに
ip addr add (略)
を加えて、PCからNASへのアクセス以外は、通常のネットワークのアドレスとは違う範囲で運用することにする。こんなコンパクトな箱でIP Aliasもすんなり出来ることにシミジミ。

現在は手元で、cronがしっかり回るかどうか確認中。LANDISK、自分でも一台欲しくなってきた。使いみちないけど。

追記:
LANDISKは静音が売り。しばらくアクセスしないとハードディスクも止まる。勝手に電源も落ちて、Wake On Lanなんていう真似もできる。/varや/tmpがRAMディスクへのシンボリックリンクになっているので、ログ吐きなどの間欠的なアクセスのためにディスクが回りっぱなし、というようなことがない。買ってきてそのまま使う分にはなかなか良く考えられた仕上がり。

というか、ほとんどログも吐かないようにしてあるみたいで、/var/logなんかは常に空っぽ。なので変にいじってうまく行かなくなると原因が追求できずハマる。
このRAMディスクは非常に小さいので、ちょっと重いものをパイプでつないだりすると、/tmpを食い潰してしまう。これを避けるため、どうせ今回はディスク回しっぱなしだし、と起動シーケンスの中でhda3の準備が出来るタイミングを確かめもせずうっかり ln -s tmp /mnt/hda3/tmp などとやったらものの見事に立ち上がらなくなった。こうなると缶切りは缶の中。幸いMac OS X Ext2 Filesystemというありがたいものがあるので、ドライブを取り出して外付けFireWireケースの中身と入れ替えてOS Xにマウントし、無事復旧。

2004年05月21日

スケジュールの共有

をしようと思った。

仕事場の人間の7割くらいはiCalを使っているので、まずはiCalで共有。
これはWebDAVを使えばいいだけなので、簡単。
http://www.apple.co.jp/articles/tutorial/panther/vol10_5.html

しかし、OS 9という人もいるし、Windowsという人もいる。WindowsにはiCalendar互換のスケジューラーもあるだろうから、当面の課題はOS 9ユーザー。とりあえず見るだけでもということで、 PHP iCalendarをサーバにインストール。
http://phpicalendar.sourceforge.net/nuke/
これも非常に簡単。展開してconfig.inc.phpの
$language
の行をJapaneseに変更して
$calendar_path
をWebDAVのパスに変更しただけ。あとはindex.phpにアクセスしたらあっさりカレンダーを表示。

しかし、OS 9の人はカレンダーを書き込めないというのは不便過ぎるので、iCalendar互換のカレンダーWebアプリを探してみた。結果、シンプルなカレンダーアプリは見つからず、
phpGroupWare
http://www.phpgroupware.org/
eGroupWare
http://www.egroupware.org/
の二つのグループウェアがiCalendar関係のAPIを持っているようだということで、これらをインストール。eGroupWare はphpGroupWare から分岐したプロジェクトなので、両者は非常に似ている。APIもほとんど同じように見える。phpGroupWareのほうはインストールガイドを読むとMySQLにデータベースを手動で作れとか書いてあったが、eGroupWareは事前になんの設定もいらない。展開して、URLにアクセスするだけ。すべてWeb上で設定できる。これは簡単。ユーザーごとに使うアプリケーションを選択できるので、普通のユーザーにはシンプルにカレンダーだけ表示されるようにもできる。

しかし、iCalendar形式でデータを吐き出す方法がわからない。freebusy形式で吐き出すものをちょっといじってみたが全然ダメ。APIをきちんと理解する気力がわかないままなんとなく検索していたら、phpGroupWareにiCalendarで吐き出すphpが含まれていることに気づく。

これをeGroupWareに持って来たらそのまま動いた。
ただしこいつが吐き出すiCalendarはiCalが解釈に失敗するので、ちょっとスクリプトをいじる必要がある。

これで全員のカレンダーをiCalで読めるようになった。

2004年01月24日

QFront

040124_1920~01.jpg
場所
040124_1920~02.jpg
040124_1921~01.jpg
等倍、2倍、3倍

[地図]

2003年12月18日

OS XでcdmaOneのデータフォルダを操作

celcomm: cdmaOne 携帯用データフォルダ操作ツール

ファイル名をEUCに変換するようになっているため、日本語を含むファイル名がある場合、Mac OS Xでは動かない。

とりあえず、携帯→Macにダウンロードできるようにする方法。

ケーブルはP携線 cdmaOneシリアルケーブル版に付属のものをUSB COM PortVS-60Rにつないで使用。これで/devにtty.usbmodemUSB-COMが現れる。
・celcommを手順通りインストール
・RubyのUconv モジュールをインストール
・celdf_getの適当なところに
require 'uconv'
を追加。
fname2 = if @conv_encoding then sjis2euc(fname) else fname end

fname2 = if @conv_encoding then Uconv.sjistou8(fname) else fname end
に変更。ターミナルから
celdf_get -d /dev/tty.usbmodemUSB-COM --baudrate=19200 *
で全ファイルのダウンロードに成功。

日本語のファイル名を指定してダウンロードしたり、Mac→携帯にアップロードするには、他にも修正する必要があるだろうが、とりあえずバックアップを取ることが目的だったので、ここまでしか試していない。

2003年10月24日

コメント時のリビルド

MovableTypeでコメントを付けようとすると、えらく時間がかかることがある。リビルドが原因だが、特にULSEではややこしいテンプレートを使っているので、シャレにならないくらい遅くなっていた。以下対策メモ。

MovableTypeには、コメント先のエントリーのAuthorにメールを送るお知らせ機能がある。このメールをトリガーにしてリビルドするようにすれば、コメントのセッション自体はリビルドを待つことなく即終了できる。

というわけで、
・lib/MT/App/Comments.pmでリビルドしているところをコメントアウト。
・Authorのメールアドレスを、リビルドした後改めてメールを送信、という動作をするPerlスクリプトへのエイリアスにする。
とすると、あっと言う間にコメント動作が終了する。

そんなわかりにくいことしないでforkするようにすればいいんだろうけど、MTに手を入れるところが少ない方がいいだろうということで、この方法を採用。

2003年07月14日

気になる酒屋

030714_1829~01.jpg
場所 (海抜68m)

問屋風

[地図]