二台のPCがvirusに感染
身の回りのPCのいずれかに、autorunを利用したvirusが居るようだとは思っていたが、ようやく発見した。研究室内では、測定用のPCの一台に感染していた。
測定用のWindows PCは、不用意にupdateすると、測定が動かなくなってしまう可能性があるし、networkからvirusを吸い込むことがあるので、networkから切り離して使用している。数年前までは、これでvirusに感染することはほとんど無かったのだろうが、近年はUSBメモリを介してデータを移動するので、MAL_OTORUNには感染しやすい情況にあった。
今回感染したvirusは、それほど悪質なものではなかったので、safe modeから立ち上げて、virus本体を消去して、レジストリも適宜消したら、除去が終了した。
しかし、今後も似たようなvirusで、さらに悪質なものが感染する可能性もあるので、USBメモリを使ったデータの移動をどうするか考える必要があるだろう。
ipod nanoを分解
ipod nanoの液晶
知り合いから壊れたipod nano(第二世代)をもらったので、分解してみた。コネクタの部分から徐々に爪を外していったら無事に開いた。液晶部分とスイッチ部分へはコネクタを介してリボンケーブルでつながっている。そのコネクタの爪を立てると、ケーブルははずれて、粘着テープで固定されている部分を外すと、うまく分解できた。
部品を眺めてみて使えそうなものとしては、フラッシュと液晶に目が止まった。フラッシュの石は何かのときに使えるかもしれないが、はがすのは大変そうだ。一方、液晶はうまく外せると、いろいろと楽しそうだ。しかし、世の中そんなに甘くはなかった。液晶ユニットは粘着テープで固定されているのだが、前面のガラスが外れて壊れてしまった。
液晶は24pinのコネクタにつながっており、信号線の数が少ないので、どのように制御しているのだろう。バックライトは横からLEDで光を出して、それを適宜拡散させていた。陰極管を使わなくてよいので、マイコンなどで使うのにはうってつけに思われるのだが、壊してしまったのでは諦めるしかない。
修理用の部品としては、液晶だけが売られているようだが、数千円するようなので、少し高価である。ipodの原価は四千円ぐらいという噂もあるので、液晶の原価は千円もしないのだろう。いつか安価で入手できたら、制御を試みてみよう。
CDROM boot ubuntu
ubuntuのsamba
立ち上がらなくなったLinuxからdataを吸い出すために、knoppixで立ち上げようとしたが、なぜか途中で止まってしまう。CDが壊れたのかなと思って、次はubuntuを試してみることにした。ubuntuのinstall diskを使うと、installしないで使ってみることができる。こっちは無事に立ち上がった。
さて、問題はHDDの中身をどうやって取り出すかだ。HDDは物理的には壊れていないようで、データ領域は問題無く読める。次は、それを別のPCに移すために、sambaで共有する。しかし、ubuntuのsambaの使い方はいまいちよく理解できていない。GUIで共有することはできたようだが、CDROM bootなのでパスワードがどうなっているのか分からない。ユーザー名はubuntuになっているようなので、いろいろと試したが、うまくいかない。
仕方がないのでターミナルから行うことにした。smbpasswd -a ubuntuとしてsambaにユーザーを登録する。そして、sambaを再起動する。しかし、ubuntu 10.04はこれまでとはやり方が違うようだ。これまでは、sudo /etc/init.d/samba restartとしていたが、sudo service smbd restartとする。しかし、これでもうまく共有ができない。最終的には、/etc/samba/smb.confの設定がhome directoryを共有するようになっていたので、その部分のコメントアウトをはずすと、やっと共有ができた。defaultの設定がdebianとは違っているようだ。
無事、データを取り出すことができたので、時間ができたときに再インストールしよう。
磁気センサーの改良
C言語の整数
AVRを使った磁気センサーのプログラムをいろいろと改良していたのだが、ときどき変な挙動をする。この原因を調べていたが、いくつか原因があったが、絶対値を計算するときにうまくいっていなかったのが、一番大きな原因だった。例えば、絶対値を求めるには次のような関数を書いたとする。
char abs(char v){ if(v<0){v=-v;} return v; }
しばらく機械語から遠ざかっていたので、気がつくのが遅れたが、これではうまくいかない場合がある。charでは、-128から127までの整数を表現することができる。そして、マイナスをつけるときには、0x100-vという計算がされる。-128は0b10000000と表現されるが、これにマイナスをつけると、0b10000000となり、128ではなく-128となってしまう。つまり、-128以外はうまく働くが、-128だけはダメなのだ。まあ、少しずつCを思い出していこう。
液晶の活用
linux死亡
計測用のPCの不調
Linuxのwineをいじっていて、なんだか挙動がおかしい。初めはwineとの相性の問題かと思っていたが、ファイルシステムが変な気がしたので、再起動した。すると、起動できない。grubとかは動いているのだが、fsckが起動して、途中で沢山エラーが出る。おそらく、HDDの一部がクラッシュしたらしい。まだ、多少は必要なデータが入っているので、後でknoppixでCDROMブートして、取り出せるか試してみよう。
これまでに、Linuxで不調になったことがあるが、その大部分がHDDの不調によるものだった気がする。HDDが壊れたのでは仕方がない。
plot for python
matplotlib
rubyでグラフを書けないかと思っていた。そのために、rsrubyをつかったり、tkのcanvasを使って簡易のグラフを書くツールをつくったこともある。一方、pythonにはグラフを書くツールがあるようだ。matplotlibというものだ。debianでは、python-matplotlibをaptで入れればインストールは終了する。使い方は、いろいろとあって覚えるのは難しそうだ。例えば、こんな感じで使うらしい。
import matplotlib.pyplot as plt import numpy as np x=np.arange(0,1,0.01) y=np.exp(x) plt.plot(x,y+0,'r-',label='first') plt.plot(x,y+1,'b:',label='second') plt.plot(x,y+2,'g--',label='third') plt.grid(True) plt.legend() plt.xlabel('x') plt.ylabel('y') plt.show()
細かいグラフの調節の仕方を覚えないといけないが、python上から簡単にグラフを扱えるのは便利かも知れない。
昔はできたのだが
Windows NTのIOポート
WindowsのIOポートをたたく必要が出てきそうになったので、調べてみた。よく知られているように、NT系ではIOポートを直接操作することはできない。
昔はDriverLINXのdiportio.dllを使うと、NTからIOを扱うことができた。しかし、今ではリンクが切れている。いろいろと探してみると、Software Informerというところには、あるようだが、それを作っていたScientific Software Tools, Inc.のサイトからはdownloadできない。これはまだ使えるのかな。
ほかには、WinIo.dllというものを使っている人もいるようだ。しかし、それを使うためのbinderを書くのも面倒だな。このくらい自分で書けるようになればよいのだが、windowsのプログラム手法を勉強する気にはなかなかならない。
京都の秋葉
寺町通りを歩いてみた
京都に出張に来たついでに、寺町を歩いてみた。秋葉や日本橋に比べると、当然見劣りしてしまう。秋月やデジットに相当する店は無い。マルツーがあるだけでも有難いと考えるべきだろう。マルツーの中を一通り見てみたが、一つ興味を引かれるものを見つけた。microchipのMCP3551という22bitのDelta-Sigma型A-Dコンバーターだ。精度の高いADコンバーターを探しているのだが、Delta-Sigma型だと精度の高いものがつくれるようだ。原理はいまいち理解できていないが。値段も手ごろだ。インターフェースはSPIなのだが、マイコンで扱うので、問題はない。今後使うADコンバーターの候補に入れておこう。
動画を使ったプレゼン
impressiveで動画
以前はプレゼンテーションはacroreadを使って行っていたが、今はimpressiveを使っている。Ubuntu Weekly Recipeによると、0.10.2からは、動画再生機能が使えるらしいので、つかってみた。
PageProps = { 12: { 'video': "embedded.ogv" } }
という内容を、例えばmovie.infoという名前で作って、–script movie.infoオプションをつけて実行すればよい。すると、12ページ目が表示されたときにmovieが再生される。しかし、一度再生すると、二度目には再生できなかったり、再生中にキーボードで何か操作したら固まってしまったりと、まだ改良の余地があるように思われる。