昨日、水分を取り忘れていたらしく二日酔い寸前のような状態になりました。こりゃダルいっす。
先日のテンプレートクラスの続きです。テンプレートはマクロみたいなもので、オブジェクトの宣言時にインスタンス化されます。先日の例だと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な転送を作れば、実験に移れるはず。
豆知識。手袋より首周りを暖めるマフラーの方が、手を温める効果が高いそうです。手袋はキーが打てないから助かります。早速実践していますが、部屋が寒すぎて意味がありませんでした。春先にまたやってみます。
この記事にコメントする
塚田氏がヤフオクで落としたランプを取りに(無駄に)二台で行きました。解体屋だというから工場かと思ったら、普通の平屋です。工場は遠くにあるそうです。また遊びに来てよーと言ってました。きさくなおっさんです。その後、旧PC修理用のパーツ代を払って、研究室に行きました。
研究室では設定を頼まれたスイッチをいじって、こんなもんかーと遊んでいました。PCから802.1Q VLANのタグ付きパケットをどうやって流すんだかわかりません。
夕方、かもめガスの人が来て給湯器を修理してくれました。直って湯が出て幸せなんですが、原因が良くわからないままなので再発がちょっと不安です。修理の人は誤作動防止策として、警報機との連携部分(昔使っていたらしい、今は使ってない)を切ってくれました。あと、ガスのメーターは耐震装置が入ってるからうっかり叩かないでください、とのことでした。
この記事にコメントする
昨日の晩から湯が出ません。今日も出ません。しかも今日は休日です。明日修理してくれるか聞かないと…。
この記事にコメントする
給油して洗車して新しいグラフィックカードを買いました。RADEON 9200SEチップでGIGABYTE製、要は安物です。ファンレスだと思ったら、ケーズの店員がファンつきを箱に入れていました。まあいいや、交換面倒くせーし。
じょーの誕生会をしました。会話がどこかずれたような変な雰囲気でした。
(左)コンデンサ破損1
(右)コンデンサ破損2
旧PCのマザーボードが逝きました。壊れたのはLelonの電解コンデンサのみで、少なくとも4つは吹っ飛んでました。ネットではLelonは粗悪品、のような記述も見受けられます。まあ安物マザーの割に2年もったんだからまだマシでしょうか。PCの調子がおかしいときは、コンデンサをチェックしてみると良いかもしれません。
写真は壊れたコンデンサです。コンデンサが膨らみ蓋が割れて、中の電解液らしきものが漏れて固まっています。左の写真の、左側のコンデンサ(おそらく壊れていない)と比べるとわかりやすいかと思います。
この記事にコメントする
| < | 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 | - | - | - | - | - |
25年10月15日
25年10月18日
22年5月5日
25年10月19日
23年4月11日
06年4月22日
25年10月17日
25年10月6日
25年10月13日
20年10月23日
25年10月12日
20年8月29日
19年1月13日
18年10月13日
18年9月3日
18年8月20日
18年7月23日
18年7月22日
18年10月14日
18年11月10日
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: