2006-05-31 (水)
ロボットのお披露目会.本当はもっと前だったのだけど,色々あって今日になりました.何人もの先生方に見に来ていただきましたが,あんまり上手く動いていなかったような.
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
ロボットのお披露目会.本当はもっと前だったのだけど,色々あって今日になりました.何人もの先生方に見に来ていただきましたが,あんまり上手く動いていなかったような.
今日は床屋に行く.
起きたら日付が変わっていました.
昼寝.
そろそろ,ロボットを先生方に見せるお披露目会をやる予定なのですが,なんとかなるんでしょうか?
今日は眠かったので途中で寝ないように積極的に議論に参加する.なにか間違っている気がしますが.
……って次回は私が発表者ですか?B4で最初だし.
また基板のエッチングとか.今日で,だいたいの人が終わりました.ここまでは思ったよりスムーズに来たな.
今日はゼミ中,眠くて大変でした.
新入部員のために色々.サークル内ロボコンをやる予定でそのために,プログラミングから半田付けまで教えないといけない.回路が出来たら,次はロボット本体のための加工を教えることになるのかな.あと出来ればCADとか.上手くいけば,来年はかなり作業が分担できるようになりそう.際立ってプログラムを書ける人間をどこかで探す必要がありそうな気もするけれど.
今日からプリント基板のエッチングです.大人数では作業できないので,日を分けてきてもらうことに.
3年生もいれて,参加しているのは20人以上…….
数式はMathMLが普及しつつあるけど,化学の構造式を記述する言語も欲しいな.
機能受信したメールを処理する.SPAM率が99%を超えています.これはもうメールは使うなということにしたいんですが…….
とりあえず,私に何か送った方でまだ返事が来てないという方は再度ご連絡ください.できれば,件名か本文の2〜3行で用件が分かるようにしてください.
正直,「拝啓」から始まるメールとかは困ります.先を読まないと用件が分からないし,返事を書くのも気を使うし.まぁ,そんなメール滅多にないですが…….
メールは毎日チェックしてと,研究室の先生に一昨日くらいに言われてた気がするので,メールを受信してみる.500通ほど溜まってました.殆どスパムでしょうが.
この日記のHTMLをTransitionalからStrictに変更しておく.あと,今後XHTMLに移行することを考えて,タグの要素名を小文字にしておく.HTMLではW3Cで公開されたリファレンスが大文字だったからそれに従って書いてたのに,XHTMLになって小文字に鞍替えするなんて,裏切られた気分なんですが…….
まだ,一部のモジュールが妙なHTML吐いているような……あとで修正しよう.
そろそろXMLに移行するべきなんでしょうか.XMLじゃないと色々と不便なことも出てきますし.
なんか,SGMLもHTMLもXMLもあまり好きでは無いのですが,どうしたら良いんでしょう.要素の始めと終わりで似たような文字列を打たなければいけないのは,なぜですか.
新入生歓迎会.
どうも,K谷先生の中で,私の得意分野はOSということになっているらしい.ゼミ中にWindows95時代のメモリ管理とか聞かれたり.
解決編です.
まず,落ち着いて最近変更されたファイルを検索する.身に覚えの無いファイルは無いみたいだ.setuidされているファイルも特に怪しいものはない.まぁ,これまた信用なら無い表示なのだけど.
原因が分からないまま放置は危険だよなぁ…….本当にRootkitみたいなのが入っていて踏み台にされるのは嫌だし.そもそも,12:40きっかりと言うのが妙に気にかかる.人間が手動でコマンドを叩いた可能性が無いわけではないけど,一秒もずれてません.何らかのスクリプトを使った可能性が高い.
とりあえず,cronから調べるかと,/etc/crontabの中身を確認.……一番下に怪しいコマンドが書いてあります.実行される時刻は12時40分.ファイルの更新日時が最近ではなかったので,期待してなかったのですが…….
何かのシェルスクリプトを呼び出しています.そのシェルスクリプトも確認する.ファイルの更新日時は2005年.1年以上前?まさか,1年以上前に侵入されて今まで気づかなかったというのか?シェルスクリプトは,設定ファイルのコピーと,shutdownコマンドが書かれていました.このコマンドによってサーバが落とされたわけです.
侵入された危険性を感じたらネットワークから切り離すのが常識かもしれませんが,SSH経由でしかアクセスできないので…….そもそもまだ,侵入されたと決め付けるのは早い.というか,まだ調査開始から10分も経っていません.
しかし,1年前からこれは仕掛けられていたのでしょうか?いったい何のために?もしかして,もう踏み台に使って用済み?いやいや,思い当たる節があります.5月16日12時40分がキーワードですね.一年前の今頃の記憶を呼び覚ましましょう.
犯人が判明.自分でした……一年前の.
たしか,去年の5月16日の1時くらいから停電があったのでした.で,停電前に電源をシャットダウンしておこうと思って,ついでにいくつかの処理を書いたスクリプトを実行するようにcronに放り込んだのです.で,cronってyearの指定が無いじゃないですか.なので,「5月16日12時40分」に実行するようにしたわけです.数秒で書いたようなシェルスクリプトなので,もちろん年のチェックをするはずもありません.そもそも,その日のうちに削除する予定のスクリプトでしたし.
曜日の指定もしていれば2011年になってから気づいたかもしれません.
なんか,このまま行くとデスマーチ?という感じです.私は今回のロボコンはプログラミングはサポート側にまわると決めたので,手伝いに留めることにしてたのですが…….
一人で全部書くなんてのはもう嫌なんだけどなぁ…….
今日の論文ゼミは,いくつか興味を引かれる部分があったかな.
実家からインターネットに繋がらないというメールが.確認すると,ルータ代わりにしていた,実家のサーバにpingが届かない.
再起動してもらったらOKだったようなので,原因究明のためにSSHでログイン.なんか,変なアタックを受けて落ちたんじゃないだろうなぁ…….ログをたまに見るとアタックはいっぱいあるみたいだし.そういえば,最近のパッチ当ててない気がするぞ.それとも,半年以上再起動もしないで放置していたから,Windowsみたいに機嫌が悪くなったのかも.
原因を探す.
とりあえず,ログを見ると,rootの権限で電源を切られている.「May 16 12:40:00 www shutdown: power-down by root:」……12時40分きっかり.システムに障害があって停止したわけではないようだ.変なプロセスが走っていないことを確認する.これは問題無い.でも,root権限が取られているなら,rootkitでも入れられている可能性があるので,全ての表示は信頼できない.これはまずい.
とりあえず,suでルートになってみる.なんとなく心配だったので,わざとパスワードを間違ったりしたり.rootパスワードは変更されてないようだ.
……続く.
久しぶりにテキスト処理がメインでないプログラムをPerlで書いてみる.まぁ,Perlを使ったのは,ファイルの読み書きでテキスト処理が面倒だったからだけど….
実数の有効桁数をどうにかしたいときってPerlだとどうするべきなんでしょう?.sprintfを使ってみたり,1000倍してからintにしてまた1000で割るみたいなことしてるのですが….
当たり前のことかもしれませんが,クロージャって遅延評価に使えるじゃん…….一度計算した結果を覚えて置くようにすれば,2度目は速そうだし.少し面倒な気もするけど,なかなか調子がいい.
で,結果を処理するのはHSPだったりするのですが…….
やっとHSP3に慣れてきました.Win32APIやDLLの呼び出しがかなり楽ですね.
今日は久しぶりに少しプログラムを書く.C++万歳です.やっぱりJavaは演算子のオーバーロードが出来ないのが敗因です.
こんな風景を見たような気がします.
今日はBOOKゼミ.みんな,Javaのバーチャルマシンの仕様をあまり理解していない雰囲気.この研究室で一番使われているのはJavaっぽいのですが….私はJavaは好きじゃないと以前言ってしまったので,発言は遠慮しておく.
今日も新入部員向けにC言語講座とかやってました.今回は,私は聞いている方.
研究室のゴミを捨てに行ったら,同じ機種のスイッチングハブがいくつも捨ててあるのを見たので,後から拾いに行く.
全て壊れてます.いくつかばらしてみると,電源のコンデンサが膨らんでいて,熱が発生した形跡がある.これは,アレだろうということで,型番を検索するとやっぱりコンデンサの不良で,無償交換に応じてくれるらしい.
謎の写真.
午前中は少し論文を読む.英語とにらめっこしていると眠くなります.
午後は昼寝.
開発者の金子氏が色々と情報漏洩対策を提案しているっぽいですね.ただ,Upfolder.txtを監視するソフトで対策とかしても,直接キャッシュに変換するウイルスや外のWinnyネットワークと直接通信するのがすぐに作られてしまうと思ったのですが….
思ったのですが.よくよく考えるとそんなに面倒なことをしてまで他人の情報を漏洩させようという人がいないのかもしれない.今出回っているWinnyでウイルスは子一時間もあれば作れてしまうような単純なものばかりのようだし.まぁ,迷惑といえば迷惑ですが,ちょっとしたイタズラ気分で作られた可能性が高いでしょう.
それよりも危惧するべきは,WinnyのBOF脆弱性を使って,数万台のパソコンを踏み台にして,どこかを攻撃されることだよなぁ.穴の開いていると分かっているPCがインターネット上に大量にあると分かっていたら,誰かやる気がします.
研究室で出てた課題の締め切りが今日だったので,急いで書いて提出しておく.言語は自由と書いてあったので,今回はC++で.普段はあまり使わないようにしているSTLですが,今回は使ってしまいました.STLは本当に便利ですね.なんとなく嫌いだったのですが,使っていれば好きになれるかもしれない.(嫌いなのは,コンパイル後のバイナリのサイズの増加が簡単に予測できないからだったような…)
「組込みソフトウェア開発のための構造化モデリング」を読み終えておく.
オブジェクト指向でも構造化でもその他の手法でも,ここまでちゃんとやれば大きな問題は起こらないと思うのだけどなぁ.現実はそうじゃないのかな.上手く行きそうな手法があるのに,プロジェクトを進めるのに使わないというのが現実な気がするのですが.失敗するリスクよりも納期やら色々の方が優先されてたりするのかな.でも期待値を取れば,ちゃんとした手法の法が早く開発できそうなのですが….いまいち,わからないなぁ.
「レタス・フライ」を買ってくる.
後で読もう.
昼寝してて起きたら夜中でした.
1年と1秒なら,「365 days, 1sec」,1年と2秒なら,「365 days, 2secs」
「今朝は何時ごろ起きたかっけか?」と思って,Windowsの起動時間を調べることが多々あるのですが,意外と面倒くさい.最近はネットワークインターフェイスの接続時間を見たりもしてました.
そこで,uptimeコマンドを作っておく.例の如く49日問題が存在してますが,動機が動機なのでどうでもいい.usersが実は「1」に固定されてるのも気にしない.Windowsだし.
そういえば,uptimeコマンドが表示する起動時刻の表示フォーマットって時間によってころころ変わります.そこで,正確なところも調べておこうと思ってFreeBSDのソースを見てみる.覗いて見てびっくり.単語の複数形,単数形の処理はもちろん,「2:59」の次は,「3:00」ではなくて,「3hrs」なんですね.で,一分後にはまた「3:01」になるようになってる.
WinSCPってWindows用の「SFTPクライアント」になってたんですね.SCPもサポートしていると書いてますが.
衛星写真ってたまに更新されてるんですね.都市部を中心に解像度の高い最近の写真が追加されてます.
なんか,バグがあるような気がするなぁ.特に新しい写真と古い写真が重なっている部分に,違う地域の写真が重なることがあるような….
借りていた,「組込みソフトウェア開発のための構造化モデリング」を読み始める.
世間はオブジェクト指向とかいうものが流行ってるけど,やっぱ時代は構造化です.そんな事言ってると研究室で孤立しそうですが.
課題のプログラムも締め切りが近いので書き始めないと.書いて面白くないプログラムを課題にするのはどうかと思うのですが,基本的なプログラミングのスキルを見たい場合は仕方ないのでしょう…….
でも,書くの面倒くさいなぁ.始めれば1時間もかからないのだろうけど.
ところで,「話題沸騰ポット」って富士山頂とかで使えなくないですか?
Windowsの電卓って,1/0とかを計算すると「0で割ることはできません」と出ますが,0/0を計算すると「関数の結果が定義されていません」となるのか.
ところで,「全ての正の実数を掛け合わせた数」というのは計算できそうもありませんが,不定でしょうかそれとも他の値でしょうか?有理数の場合はどうでしょうか.まぁ,暇があったら少し考えてみましょう.
リセット時は問題無いのに,電源をONにしたときに,妙な動作をすることがあったので,適当なディレイを入れたら安定した.内部プルアップを有効にした直後はピンの状態が安定してないのが原因っぽい.
データシートを見てて,妙なことを思いつく.内部プルアップ抵抗を使って2ビットD/Aできないか.ちょうどいい抵抗を外付けすれば,上手く行くかもしれない.素直にピンを2本使った方が良いでしょうが….
とりあえず,チャレンジ.最初,ATMEGA88でやろうかと思って,プルアップ抵抗の抵抗値を測って真面目に計算したのですが,その辺に余ってた2313があったので,そっちでやりました.抵抗値の調整に少してこずったけど,一つのピンで2ビットD/Aは出来ました.AT90S2313の一つのピンに抵抗が繋がっているだけなのに,オシロスコープ上には,階段状の波形がでてます.マイコンでのD/Aの精度を2乗できるというのは画期的だと思います.何に使えるかは知りませんが.
AVR担当の後輩のG氏に見せたら,驚いてました.ピンの入力モードを波形生成に使うという発想はなかなかできないようです.
次は2本使って4ビットにするか….
ちなみに,手元にあるMEGA88の内部プルアップの抵抗の実測値は,41.66Kくらいだったので,出力を125Kで電源に繋いで,62.5Kで電源に落とせば良いかと思います.2313だと少し抵抗値が違うようですが,面倒なので100Kと47Kを使いました.これだとあまり均等にならないので,ちゃんと測って計算した方がよさそうです.
新入部員に作ってもらうライントレースロボットの回路を決める.全て合わせて約6000円.こんなものだろうけど,少し高いなぁ.これでもかなり削ったんだけど.
モータやらサーボやらが入ってるから仕方ないかなぁ.サーボはオプションとした方が良かったかも.