2008年
10月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

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というものを入手したが、その親戚のようだ。しかし、ドライブが無いので、動作確認もできない。いつかドライブが手に入るといいな。