みちたろうの誕生日に参加しました。いきなり押しかけて、みんなで祝いました。やはりこういうのは面白いですね。
誕生日のお祝いの後は小磯邸でマージャンを打っていました。何もかけてないからいいけど、ボロ負けです。みんな強いな…。
今日の夕方、新聞の集金が来るというから出かけないで待っていたのに誰も来やしないし、もういいや。払わなくて困るのは向こうです。
我が家のテレビの裏を見たらD1端子が付いていたので、せっかくだから使おうかとPS2のケーブルをコンポジット(おなじみ丸い黄色の端子)からD1端子(D型の端子)に交換してみました。店にはコンポーネント出力(3本に分かれるタイプ)のケーブルも売っていて、こんなの使えるテレビあるか?と思いつつ、帰路へ。
中学生の頃でしょうか、スーパーファミコンのケーブルをコンポーネントからS端子に交換したときは、さほど画質が変わらずがっかりした覚えがあります。が、今回は違いました。ほんと、全然違う…って感じでした。でも残念ながら遊んでいる場合じゃないので、ゲームはまた今度です。
論文が進まないのはいつものことですが、進展がどうであれそろそろ見せたほうが良いかと思い、阿部さんに論文を送って見てもらいました。さーどのようなアドバイスがくるやら?
昨日、水分を取り忘れていたらしく二日酔い寸前のような状態になりました。こりゃダルいっす。
先日のテンプレートクラスの続きです。テンプレートはマクロみたいなもので、オブジェクトの宣言時にインスタンス化されます。先日の例だとb.cppではBのクラスを宣言していないので、b.oに何もコードが出力されません。a.cppではBを宣言していますが、a.cppでインクルードしているb.hにはコードがかかれていないので、結局Bのインスタンス化はされません。Cはコードが書いてあるのでインスタンス化されます。
ヘッダにコードを全て書いてしまうか、それは汚いから嫌、どうしてもコードとヘッダを分離したいとなれば、明示的にテンプレートクラスを具現化してやらなければいけません。b.cppの先頭に、
template class vector<int *>;
このように明示的にインスタンス化を行わないと、リンカでコケます。ま、こんなことしたら全然テンプレートの意味ないんですけどねー!!はっはっは。あー使えねー。
新年会に行きました。丸茂に行ったらちょうど買い物が終わったところで、すれ違いでした。寂しくハンバーガーを買っていたら塚田氏が来て、でも彼は車だからまた別れて、またもすれ違いでした。
飲み会の途中から始まった百人一首には参加せず、横で話していたら静かにしてくださいと言われ、えー?飲み会なのにーと思ったり思わなかったり。そういえばあの本かなりイカしてる本だったなあ。
研究室にてバグ取りをしました。スレッドが立ち上がる前に終了させると、今まで溜まっていたリクエストを無理やり空にしてしまう仕様にしていたためでした。とりあえず動いているようですし、解決できたかな。
テンプレートクラスに手を出してみたところ、変なエラーが出てきてリンクできません。他のオブジェクトにテンプレート関数があり、インラインコンストラクタではない場合(サンプルで言うとclass B<T>)、コンストラクタへの参照が解決できない、とかリンカがほざいてリンクしません。Aへの参照は解決しているくせに…なぜ。
#include "b.h"
template <class T> class A {
public:
A(void);
virtual ~A(void);
};
template <class T>
A<T>::A(void) {}
template <class T>
A<T>::~A(void) {}
int main()
{
A<int *> a;
B<int *> b;
C<int *> c;
return 0;
}
template <class T> class B {
public:
B(void);
virtual ~B(void);
};
template <class T> class C {
public:
C(void) {};
virtual ~C(void) {};
};
#include "b.h"
template <class T>
B<T>::B(void) {}
template <class T>
B<T>::~B(void) {}
コンパイルの結果はこんなかんじ。
$ g++ -c b.cpp a.cpp $ g++ b.o a.o a.o: In function `main': a.o(.text+0x1d): undefined reference to `B<int *>::B(void)' a.o(.text+0x4e): undefined reference to `B<int *>::~B(void)' a.o(.text+0xaf): undefined reference to `B<int *>::~B(void)' collect2: ld returned 1 exit status
卒論のテーマ決めをしました。長引くのかなあ、と思っていたら結構あっさりでした。
Keep-Aliveな転送の実験を研究室でしていたら、やたら転送が不安定になったりならなかったり…。色々条件を変えて実験してみたところ、どうやらスイッチングハブが原因のようです。ギガビット用のスイッチでも、5ノードが一気に通信し始めると転送が間に合わなくなるようで、完全に盲点でした。
旧PCを復活させるためのマザーとCPUが届きました。ちゃっちゃと組み立てて、Windowsやらその他のアプリケーションやらを再インストール。HDDが若干足を引っ張っている感じはしますが、以前より軽快な動作です。
卒論がちょっと進展して、やっとKeep-Aliveな転送ができました。思いがけない大改装になってしまいました。もしかすると元の設計が限界に来ているのかもしれません。でも書き直すとか有り得ないんで、このままつぎはぎで頑張るしかないです。
明日は卒論のテーマ決めですが、テーマのいい案が考えつかないなあ…。
ストーブがあるのに灯油がないそうで、大下さんとジョイ本に灯油を買いに行きました。ジョイ本の灯油44円/Lはかなり安いことに後で気づきました。近くのスタンドは軒並み48円/Lでしたよ。
研究室に行ったら、なんかすごい久しぶりに見た、と言われました。研究室には行かなかったけど、一応頑張ってますんで。ま、この間のゼミはすっかり忘れてましたけどー。
家に帰ってきて洗濯物を洗濯機から出すのを忘れていたことに気づき、洗濯物がうんぬんより、入れたことを忘れていた事実にショック…。
じょーの家で桃鉄USAやってたら寝てしまい、朝になっていました。朝日が目に染みる。
なんだ、お茶碗三杯程度って、よくわかんないな?まあいいや、適当に2合半くらいで足りるだろ。
…って思ったのが悪かったね、やっぱり適当は良くないと思いました。明らかに規定量の1.5倍はある。
Wordは使いづらいですねー、文章の先頭を「勝手に」大文字にする、@ が一文字でもあれば「勝手に」ハイパーリンク化する、英語の常識と思われる修正候補を「無理やり」日本語に適用してくる、おせっかいもいい加減にして欲しいものです。
この邪魔者はオートコレクトというんですが、唯一の救いはオートコレクトをOFFにできることでしょうね。Wordにイラついている方は、とりあえず全部外して使ってみてはいかが?だいぶすっきりしますよ。
旧PC(DDR266)をデュアルチャンネルで粘らせると4.2GB/sとなって、まだまだ現役ですよってことが言いたかっただけなんですが、表がでかくなりました。
メモリは転送速度だけではありません。ま、速いに越したことは無いです、きっと。よく調べなかったせいで、表が穴だらけになってしまいました。詳しい方、足りない部分を教えてください…。
チップ(メモリモジュール) | バス幅、クロック | 最大転送速度(大体) |
---|---|---|
DDR SDRAM | ||
DDR200(PC1600) | 64bit, 100MHz | 1.6GB/s |
DDR266(PC2100) | 64bit, 133MHz | 2.1GB/s |
DDR333(PC2700) | 64bit, 166MHz | 2.7GB/s |
DDR400(PC3200) | 64bit, 200MHz | 3.2GB/s |
DDR2 SDRAM | ||
DDR2-533(PC2-4300) | bit, MHz | 4.3GB/s? |
おまけにもうひとつ。
チップ(メモリモジュール) | バス幅、クロック | 最大転送速度(大体) |
---|---|---|
SDRAM | ||
PC66 | 64bit, 66MHz | 528MB/s |
PC100 | 64bit, 100MHz | 800MB/s |
PC133 | 64bit, 133MHz | 1064MB/s |
DRDRAM | ||
PC600 | 16bit, MHz | 1.2GB/s |
PC700 | 16bit, MHz | 1.4GB/s |
PC800(RIMM1600) | 16bit, MHz | 1.6GB/s |
PC1066(RIMM2100) | 16bit, MHz | 2.1GB/s |
PC1066(RIMM4200) | 32bit, MHz | 4.2GB/s |
glibcに安全でない一時ファイルの使用があってパッチが当たったんですが、当方Debianのため、apt-get update, apt-get upgradeってやったらあっさりglibcが入れ替わりました。なんだこれ、Debianすげえよ。
友達とバスの話をしながらざっと調べたデータ(下の表)です。いやー、ISA遅いなあ。昔はCバスに増設メモリ刺したものですが、今考えるとぞっとする遅さですね。PCI-Expressの登場によりPCIも過去の物になりつつあります。時代の流れですね。技術者を自負するならばぼけっとせず全力で付いていかねば!
ちなみにデータが間違っていても、責任は取れません。教えていただければ直しますが、あしからず。
バスの名前 | 最大転送速度(大体) |
---|---|
ISAバス | 8MB/s |
Cバス(PC98xxシリーズ) | 10MB/s |
PCI(32bit, 33MHz) | 133MB/s |
PCI(64bit, 66MHz) | 533MB/s |
PCI-X(サーバ用、64bit, 133MHz) | 1.06GB/s |
AGP | 266MB/s(x1)〜2.13GB/s(x8) |
PCI-Express | 320MB/s(x1)〜5GB/s(x16) |
起きたら9時だったので、もう一眠り、と思ったら16時でした。引越し手伝うよとか言ってて、このざまです。メール見て凹みました。って、今日ゼミと研究室見学があったのか。そういえばメールが来てたなあ…。なんだか今日は色々ダメです。どうしたんだろう。
なんとなく悔しいから卒論進めまくることにしました。気合入れてフック機構を作り直し、塚田氏の要求に応えうるものができました。あとはKeep-Aliveな転送を作れば、実験に移れるはず。
豆知識。手袋より首周りを暖めるマフラーの方が、手を温める効果が高いそうです。手袋はキーが打てないから助かります。早速実践していますが、部屋が寒すぎて意味がありませんでした。春先にまたやってみます。
< | 2005 | > | ||||
<< | < | 01 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | - | 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 | - | - | - | - | - |
合計:
本日: