おしゃれなネット連携気象計

面白い。
んが、ベランダの植木鉢の横に雨量計置いてデータ公開しても、しょうがないのではないかとw (本質的な話じゃないけど)

しかしこの値段で売れるんだ。勉強になる。

歴史はやっぱり繰り返す?

iPhone 3G を見て「いずれ、日本国内の携帯電話が海外ブランドのスマホだらけになる」と思った人は少数派だったかも知れないが、まだせいぜい 6年前の話(2008年6月)だ。
一家に一台のビデオカセットレコーダーは、あっという間に DVD プレイヤーとなり、ビデオレンタルショップのレジ前に積み重ねられるようになった。ディスクリート IC が満載だったパソコンはかつて 30〜50万円近くしたが、チップセットといくつかの完成部品を組み合わせる構造になって、一気に低価格化した。
自動車の世界で何が起きるかは、門外漢の私にはちょっと予想できない。もしかすると私の次に買うクルマが、Foxconn 製造になっていたりするのかも知れない。
ソ○トバンクや KD○I が「いまなら駐車場代と車検代を 3年間キャッシュバック!」とかいう広告を始めるかも知れない。日銀総裁が、そのようなデフレは日本経済のためにならないと言い出すかも知れない。

小惑星接近

2014 RC の話題で持ち切りだぜー。(かどうかは知らない)
8月31日に見つかったばかりの小惑星です。地球から月の軌道の 1/10 の距離をかすめるそうです。大きさは 20メーターほど。現在の技術でも、かすめる 10日ほど前にならないと見つからないらしい。(もっとも、こないだロシア上空で爆発した小惑星は、事前に見つかってなかったけど)
なお、11.5等まで増光すると見られ、口径 15〜20センチ程度の望遠鏡があればアマチュアでも観測可能であろうとのこと。天文家の皆さん、頑張ってちょ!

Happy Hacking Keyboard の F10, F11, F12 でボリューム制御をする

Happy Hacking Keyboard (HHK) を Mac に繋いでいるのですが、スピーカーのボリューム制御ができなくてメンドーだなあ、と思ってました。HHK は Fn 修飾キーがあるのですが、例えば F11 を押すには Fn キーを押す必要があり、つまり F11 と Fn + F11 を区別できません。ちゃんと調べてないけど。
Fn + F11 を押すと、Exposé とかいう機能が立ち上がってしまい、ちょっと面倒です。
KeyRemap4MacBook を広げてみたんだけど、最初 Change Functional Key (Brightness, Volume, ...) というところをいじってみたけど、ダメ。今度は F11 で検索して Change F1..F19 Key というところにある F10, F11, F12 to Speaker Controls というところをいじったら、無事に設定できました。中のスクリプトが違うんだろうけど、メンドーなので調べてません。ま、動いたからいいか。

Raspberry Pi 上の Python が遅い

Raspberry Pi 上の Python が遅いぜー、と思ったら、どうもよく知られた問題らしい。ARM 上の Python が遅いのか?

PyPy というのを評価してみようか?

ビーコンモニタ、なんとか Raspberry Pi で動いた


GNU Octave の処理が重くてリアルタイム処理がしんどかったのですが、なんとか動くようになりました。これで、5ワット程度の電力で国際短波ビーコンをモニタをできるようになりました。(いままでは、パソコン 1台を占有してた。)

ただし、現在は NFS あるいはハードディスクのような二次記憶が必要です。フラッシュメモリ(SD カード)だと寿命が短くなる可能性があり、厳しいです。これを改良するには、ちょっと時間がかかりそうなので、とりあえずここでキリをつけました。

GNU Octave に named pipe から読み込ませる

ビーコンモニタの Raspberry Pi への移植プロジェクトは続きます。
Raspberry Pi でも Octave は十分に使えそうですが、起動時に pkg を読み込む(pkg load signal とか)のに時間がかかるのが辛いです。
いままでは、贅沢にも毎回 Octave を起動し直していたのですが、作戦変更で、Octave はずっと起動させたままにしておき、外から適宜ファイルを食わせることにしました。
ここで問題は、例えばコマンド列やデータをファイルで食わせるとき、ファイルが EOF になると fread() が空ベクトルを返してしまうことです。GNU Octave の 3.6.2 版で試してみましたが、一度 fread() が EOF を検出すると、その後ファイルに追記しても再読み込みはできない感じです。例えば、こんなコードを試しましたがダメでした。

fd = fopen("cmd.dat", "rb");

while true
        in = fread(fd, [1 16], "short");
        printf("len = %d\n", length(in));
        if length(in) <= 0
                sleep(1);
        endif
end

そこで、これは以前に(Octave ではありませんが)思いついた方法として、named pipe (FIFO) を使ってみました。まず、named pipe を作ります。

$ mknod cmd.dat p

そんでもって、次のようなコードを動かします。

fd = fopen("cmd.dat", "rb");

while true
        in = fread(fd, [1 16], "short");
        printf("len = %d\n", length(in));
        if length(in) <= 0
                quit(0);
        endif
end

この方法ですと、書き手が named pipe をクローズしない限り、入力データがない間 fread() はブロックします*1
Octave の使い方としてはちょっとギミックですが、これでやってみよう。

*1:書き手がクローズしてしまうと、誰かが再オープンしてもダメみたい。