ジャンクツッコミが多いので、ツッコミを消した。
httpへのリンクが張ってあるのを自動で消したりすれば、大半のものは無くなるのだろうが、自分以外の書き込みはほとんどないので、面倒になって、ツッコミを禁止した。
るびまゴルフにトラックバックしたからか、訪問者が多少増えて、ジャンクも増えてしまったのだろう。ところで、第四回のるびまゴルフは出遅れていたら、ほとんど答えが出揃っているようだったので、今回は参戦しないことにした。今回のは短い問題なのだが、個人的にはもう少し長い問題の方が好きだ。
new media
知らないメディアを入手した。
SparQというもので、1GBの容量がある。以前EZDriveというものを入手したが、その親戚のようだ。しかし、ドライブが無いので、動作確認もできない。いつかドライブが手に入るといいな。
ジャンクツッコミ
最近、ツッコミあらしが増えてきた
最初にtDiaryをインストールしたときから、心配していたのだが、ツッコミにはなんの制限も設けていない。つまり、誰でも何でも書き込めてしまうのだ。いずれは、広告や変な内容を書き込まれることになるとは思っていたが、最近そういったものが増えてきた。
知らない人からのコメントなどがもらえるかも知れないということで、表示しているが、これまではほとんど自分のコメントしかないし、消してしまおうか迷っている。自分のコメントは、本文に追加すればよいわけだし。
サーバーのrubyが1.6.8なので、tDiaryのバージョンが古くなってしまっている。新しいものでは、junkを取り除く機能がつけられたりするのかな。まあ、ソースをいじって変なのを除いてしまえばよいのだろうが、読むの面倒だし。
まあ、もうしばらくはこのままで行って様子をみよう。ruby関連のサイトからいくつかリンクを張られるようになったので、以前よりは多少は有名になったのかも知れない。junkも増えるのはしかた無いのだろう。
タイムアウト処理
RS232Cのエラー
この間、装置が暴走してしまった。その原因はまだはっきりしないが、一番状況を説明できるのが、RS232Cの読み取りで止まってしまったという可能性だ。GPIBなどでは、長い間読み取りできないと、タイムアウトエラーになるので、そのエラートラップをかけておけばよいが、RS232Cにはデフォルトではタイムアウトがない。また、パリティーぐらいしかチェックしていないので、通信ミスでうまく命令が伝わらなくても、それに気づかないで、読み取ろうとしていつまでもデータが戻ってこない。そうなると、その部分でずっとプログラムが止まってしまう。
それを防止するために、RS232Cでもtime outができるように、読み込みのmethodをこんなふうにしてみた。
def read() @rs.write(sprintf("L\x0d\x0a")) t=Thread::start{@v=@rs.gets("\x0d\x0a").to_f} t0=Time::now while Time::now < t0+1 return @v unless t.alive? sleep 0.01 end t.kill print "rs232c timeout!\n" @v=-1.0 return @v end
もっとシンプルに書ける気がするが、読み取りはスレッドにまかせて、それが終了していたらその値を返して、それがいつまでも終わらなかったら、スレッドを殺すという感じである。 これで、RS232Cのエラーは無くなるはずだが、これが本当の原因なのかはまだはっきりしないので、他の部分も調べないと。
2008/11/30追記 timeoutのライブラリもあるようで、
require 'timeout' def read() @rs.write(sprintf("L\x0d\x0a")) timeout(1){ return @rs.gets("\x0d\x0a").to_f } rescue TimeoutError return -1.0 end end
てな感じで良いのかも。
ntpの設定
時計の同期
時計の正確さはあまり気にしていなかったが、ようやくntpの設定をした。以前は失敗に終わっていたので、放っておいたというのが正確ですが。いつか気がついたのが、独自のntpサーバーがあるらしく、外部のntpの使用は禁止されているかも知れないということである。つまり、そのntpサーバーを指定すれば良いということです。
インストールするのはntpかと思ったら、ntpdateだった。ntpはサーバーのようです。
sudo aptitude install ntpdate
/etc/default/ntpdateで設定を変更。NTPDATE_USE_NTP_CONF=noとntpサーバーを指定。これで、
sudo ntpdate-debian
とすれば、時計を合わせてくれる。cronなどで自動でやるのもいいけど、今回はやめにしよう。/etc/cron.daily/をみたら、ntpというのがあったけど、これはntpを誤ってインストールして、アンインストールしたけど残ってしまったものかな。
検索form
サイト内検索
blogも長くなってくると、検索機能が欲しくなってくる。メモの意味合いもあるので。本当はNamazuなどをインストールすると良いのだろうが、面倒なので、googleで自分のサイトに限定して検索するようにしてみた。
inurlを使うと、URLに含まれる文字列を限定できるので、これをblogのURLを入れれば、良いことになります。プラグインのsearch_form.rbを使うと、短く書けそうだが、まあ良いだろう。欠点としては、googleが見に来てくれるまでは、検索にかからないということだ。
2008/9/28追記 カレンダーの右に持ってきたいのだが、うまくいかない。
2009/2/11追記 inurlではあまり検索にかからない場合が多いので、キーワードを追加して検索する方法に変えてみた。
web cameraのストリーミング配信
web cameraで動画
ストリーミングの配信には、他のソフトをインストールする必要があるのかと思っていたが、/usr/share/doc/webcam-server/applet/webcam.htmlをブラウザで見ると、動画が見れることが分かった。デフォルトだとFPSが1なので、5ぐらいにしておくと良いだろう。
あとはIPの制限などをしたいところだが、この設定はまだ不明だ。 apacheの方で制限することはできるが、httpから直接見ることはできるし。webcam-serverを-Dhオプションで立ち上げれば、localhostのみからアクセスが可能になるが、それでは別のマシンから見れないし。
web camera
web cameraを設置した
昨日までは出張だった。上野で新幹線から常磐線に乗り換えるときにweb cameraを見付けたので、おもちゃとして買ってきた。Creative製だったので、まあそれなりのものだろう。USBをさしたらov511というdriverで認識したようだ。xawtvをインストールして実行したら、何もしなくても見ることはできた。webcam-serverをインストールして、
webcam-server -d /dev/video1
でサーバーを起動すると、8888のポートで見ることができるようになった。video0はキャプチャーカードが使っているので、video1を指定する必要があったが、結局ほとんど何もしないでweb cameraが使えるようになってしまった。まだ細かい設定やストリーミングは配信できるようにはしていないが。Linuxでは古いハードの設定は非常に簡単にできるようになっているように感じる。
プロジェクターとポスター
platexとrubyをつかって準備
最近のプレゼンの手法としては、プロジェクターとポスターが主で、OHPはほとんど使われなくなってきた。OHPシートは別の目的に良く使うので、無くなると困るのだが。プロジェクターの場合にはprosperを、ポスターの場合はposterクラスを使ってplatexで作っている。
しかし、直にtexで書くとコマンドなどがいろいろと入って構造がよくわからなくなるので、texのソースはrubyで作っている。arrayとして、内容を記述しておいて、それをrubyで処理すると、texのソースができる仕組である。実際には、化学式などの表記を適宜処理するスクリプトも使っているが。
このとき、プロジェクターとポスターの元になるarrayのフォーマットを共通にしておくと、ポスターの内容をそのままプロジェクターに移植することもできて便利である。多少の場所などの調整は必要になるが。
ひとつ難点を挙げると、最終的にはpdfにするのだが、間でpsを通るので、そのファイルサイズが大きくなってしまうことである。dvipdfmxで処理するとprosperはうまくいかないので、dvipsとps2pdfを使っているのである。
色空間
rainbowのRGB表示
いくつものデータのあるグラフを書いていると、それぞれのデータをいろいろな色で区別する必要がある。このとき、どのような色で表現するか迷うことがあるが、その場合にはrainbow colorをしばしば用いる。
このrainbow colorは、HSV色空間でHueを等間隔で変化させた色となっている。色空間としては、RGBが有名であるが、rainbow colorをRGBで表すとどうなるかが必要になった。HSVとRGBの変換公式から計算すれば良いのだが、これは面倒だ。できるだけ簡単にRGB表示を求める方法はないかと考えると、Rを使うと良いということに気がついた。
Rでは、rainbow(n)とすると、n分割した色のベクトルとなる。そこで、
col2rgb(rainbow(7))
とすると、RGBの値が表示される。 YIQなんかも一種の色空間と言えると思うが、地上デジタルの場合には、どうなるのだろうか。白黒の地上デジタルなんかもあるのかな。