明日の発表会に向けて、共同研究をしている方々にスライドを見てもらって、指摘をいただき直しました。明日の朝また練習です。
明日は午後一で発表会だそうです。いよいよ横須賀とおさらばです。
ARM上でのスタックトレースができたっぽいです。でもフレームポインタを辿るだけのx86とは違って、シンボル情報を使って関数の先頭を見るなどしているため、stripされたバイナリだとトレースできません。なんとかならんかなあ。
秋葉原でミーティングがありました。前日、徹夜で報告書を書いたために眠いです。
帰りにヨドバシでELECOMのイヤホン(MS-AL94シリーズ)を買いました。マイクがセットになっている優れものなのに、プラグ部分の立て付けが非常に悪いです。プラグがマイク端子に刺さりませんよ?力づくで刺したら、VersaProの中の何かが削れたので即引っこ抜きました。
エレコムといえば、前買ったLaneed(エレコム製スイッチングハブのブランド名)も、3番ポートだけ壊れて焦ったし、WEBカメラも壊れて録画画面が真緑になったし。安物ってそんなもんですかねー。
ちなみにイヤホンと一緒に買った Logitechの激安マウスは変な動作もせず非常に快適で、非常に対照的でした。
Armadilloのaptitudeが死んでしまう問題は、エラーでコケるパッケージをdpkg --force-all -i hogehogeって無理やりインストールしたら直りました。しかもaptitude upgradeしたらそのパッケージが削除されました。あーん?こんなんで良いのかいな、オイ。
昨日、参照の話が出てきたのでそれに関連した話をば。C++ の参照って微妙にわかりづらいと思います。
例えばint func_a(int &arg) {arg++;}; なんて関数があると、呼び出すときはint i; func_a(i); と書きます。見た目は値渡しで呼んでそうなのに、実は値が変えられてしまう気持ち悪い現象が起きます。
どうもC++ はCの拡張版であるという色眼鏡がかかってしまって、Cの全て値渡し呼び出しというルールとぶつかって参照がややこしく感じます。実際に使おうと思っても関数定義を見るまでは、参照渡しで変更される可能性があるのか、単なる値渡しなのかが呼び出し側からぱっと見わからないから、面倒なんですね…。
では、どうしているかというと、参照で渡すときはconst参照しか使いません。もし関数側に変更する意思があるなら、ポインタを受け取る(ポインタ渡しは & が付くのでわかる)ようにします。C++ なのにポインタとはかなりCライクな書き方ですが、参照渡しなのにうっかりCの値渡しだと思って原因不明のバグに悩むよりはマシかなと思います。
プログラムの話。何かを検索するような関数で、検索条件に一致するものが見つからなかったら例外を投げるように書いていたところ、これがえらく遅いことが発覚しました。
で、塚原氏と話していて例外とは何たるかに気づきました。例外はこれ以上の続行が不可能なエラーが発生したか、稀にしか起こらない異常事態を知らせる時に使うものであって、検索で対象が見つからないのは正常事態ですから、例外を投げるのはおかしい訳です。しかし例外を投げるように書いてしまったプログラムが沢山あるので直すのも面倒です。かなり憂鬱です。
そういえばJavaのget関数などは見つからなかったときにnullを返してくるのですが、C++ の参照にはNULLは入らない(キャストすれば入るかもしれないけど絶対後でクラッシュの誘因になる)よなあ。C++ だとポインタしかないですか。そうですか。
昼まで寝ていたら「掃除しても良いですか?」ってホテルの人から電話が来ましたので、そそくさと退散して、横須賀の街を散策。横須賀は外人とその辺に居そうなおばちゃん(日本人?)が英語で喋ってたりしておりますよ。明日は横浜に行ってみようと思います。
リファレンスモニタが監視対象のレジスタを取得するときにPTRACE_PEEKUSERで読んでいます。これは1回に4バイトしか読めず、何度も呼ぶことになるから遅いのです。その昔、榮樂氏にPTRACE_GETREGS(一回の呼び出しで済む)使わないの?って聞かれたりもしました。
そのときは説明できませんでしたけど、わざと使っていなかったはずなんですよ。なんでだか思い出せないので、試しにGETREGSで読んでみたら seamonkeyを監視するときにえらい勢いで失敗します。うわ、これだよ!でも何でだろうね?
調べるの面倒くさいんで、GETREGSが失敗したらフォールバックでPEEKUSERを使ってごまかしました。従来よりちょっと速くなったみたいだし良いよな。
横須賀に向かうサラリーマンとか学生にまぎれてYRPに向かっていると、急に年食ったような錯覚が…。いかんいかん、俺はまだ学生だっつーの。
実質2日でやれって言われた作業が、マジで2日で終わるとは思いませんでした。いや、うれしいんですよ、もちろん。
成果物のテストをするにはスタティックリンクしたバイナリの方が都合が良いので、クロスコンパイル環境でスタティックリンクしてArmadilloに持って行ったら、Kernel too oldだってさ。うーん、困った。
製造元からArmadillo用のDebianを取ってきて、Armadillo上でコンパイルしようとしたらbzip2がねえって言われるし。aptitude installしてもエラーで死んで動かないじゃないか。うおーい、そりゃねえぜ(´д`;)
YRPへは京急で通っています。スイカは使えませんが、パスネットが使えるようなので早速購入しました。YRPへのバスが多くてあまり待たないせいか、それほど不便には感じません。
京急ではドレミファ列車(※)を良く見かけます。電車のうなり音はどうやっても耳障りですが、どうせ鳴っちゃうし、音階にしてみたよ!という割切りが素敵です。
YRPでのお仕事ですが、こちらの実装が遅れに遅れているせいでスケジュールが結構厳しいです。今日は 9時から22時までずっとプログラムしていました。頭が痛くなってきます。でもやりとげて晴れ晴れと帰るつもりです。
※ドイツ、シーメンス社のVVVFインバータ(英語ではVariable Frequency Drive: Wikipediaより)を積んだ列車のこと。発車時にファソラシドーレーミファソーーという音がする。京急ではかなりの頻度で見かけます。
横須賀から更新してみるテスト。
朝7時くらいの電車に乗って、横須賀へ。こんな朝早くだから空いてるだろうと思ったら、TXがすげえ混んでました。よく考えると東京に8時台に着くのだから通勤時間帯ですよね…。でも品川から乗った京急は下り方面ということも手伝ってか、がらっがらでした。同じ駅で降りたYRP勤めの人々(多分)は「通勤ラッシュって何?食べられるの?」って感じでトコトコ歩いてました。
YRPについたら、私の指導担当の方が、YRPの建物紹介と、部屋に入るためのカードをもらう手続きなどしてくださいました。担当の方には非常に良くしていただいています。
ラボのLANから外にいけないようになっているらしく、自宅や筑波大のサーバにログインするにはグローバルIPをもらうしかないんですと。仕方ないからドコモからお借りしてX31をルータにしました。実家での経験が役に立ちましたが…ここのネットワーク使いづらいなー。
歓迎会を開いていただきました。企業の研究所ってもっと黙々とした感じかと思っていたのですが、けっこう皆さん話したり歩いたりしていますね。ちょっと意外でした。
シグナル周りのエミュレーションを作ってみた。今までできなかったシェルからのサスペンドが動くようになったけども、やっぱりいろいろおかしいですね。manとemacsをサスペンドすると暴走します。ま、これはとりあえず放置かな。IDSの方作らないとね。
明日から横須賀のYRPに行って参ります。ネットが使えるホテルらしいので、横須賀からの更新も予定しています。
学校に行ったら、ミーティング行かないの?と言われて初めてその存在に気づきました。今日ミーティングなんていつ言ってたっけ?うーん、まあいいか。
ミーティングの後、研究室の本の整理をしました。1000冊あるかと思いましたが、意外と届かなかったな。
母から千葉滋賀佐賀のflashが面白いというメールが来ました。何でいまさら…すごく懐かしいなあ。あのコントは、確かラーメンズの日本語学校シリーズというコントの一部でしたよね?新橋のやつと千葉滋賀佐賀のやつ、以外のバリエーションもあるようですが、誰か知りませんか。
取手の美術館?の手伝いに行くという大下さんを見送ってから、学校に行きました。
ARMに苦戦しまくりです。とりあえずシステムコールに渡す引数を書き換えられること、システムコールから戻ってきたときにレジスタの値を復元できることなどを確認しました。
そんなことよりもシステムコール番号の書き換えができないのが一番困るんですがね…。
大下さんの誕生日にシェリーグラスをプレゼントしました。乾杯のときにキーン…と良い音のするものが欲しくて、グラス売り場の商品を一個一個軽く叩いて、音を聞きながら探しました。店員の視線が痛かったのは言うまでもありません。
じょー邸にて、そろそろつくばを離れるじょーを惜しんでの飲み会に参加しました。日本酒をちびちび飲みながら話していました。もうそんな時期なのか。
Debianの日本プライマリサーバであるftp.jp.debian.orgが最近ハードウェア障害で落ちていましたが、復活したようです。中の人お疲れ様です。
< | 2006 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 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 | - |
合計:
本日: