2008年10月06日 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を誤ってインストールして、アンインストールしたけど残ってしまったものかな。
2008年10月16日 タイムアウト処理
_ 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てな感じで良いのかも。
2008年10月18日 ジャンクツッコミ
_ 最近、ツッコミあらしが増えてきた
最初にtDiaryをインストールしたときから、心配していたのだが、ツッコミにはなんの制限も設けていない。つまり、誰でも何でも書き込めてしまうのだ。いずれは、広告や変な内容を書き込まれることになるとは思っていたが、最近そういったものが増えてきた。
知らない人からのコメントなどがもらえるかも知れないということで、表示しているが、これまではほとんど自分のコメントしかないし、消してしまおうか迷っている。自分のコメントは、本文に追加すればよいわけだし。
サーバーのrubyが1.6.8なので、tDiaryのバージョンが古くなってしまっている。新しいものでは、junkを取り除く機能がつけられたりするのかな。まあ、ソースをいじって変なのを除いてしまえばよいのだろうが、読むの面倒だし。
まあ、もうしばらくはこのままで行って様子をみよう。ruby関連のサイトからいくつかリンクを張られるようになったので、以前よりは多少は有名になったのかも知れない。junkも増えるのはしかた無いのだろう。
2008年10月30日 new media
_ 知らないメディアを入手した。
SparQというもので、1GBの容量がある。以前EZDriveというものを入手したが、その親戚のようだ。しかし、ドライブが無いので、動作確認もできない。いつかドライブが手に入るといいな。