ATM

OC-3インタフェース:ANSI(米国規格協会)が標準化したインタフェース。伝送速度は155.52Mbps。
OC-12インタフェース:ANSI(米国規格協会)が標準化したインタフェース。伝送速度は622.08Mbps。

ファイルを特定の文字列で分割する


cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)

ある簡単なCのプログラムを実行したときに表示されたエラーである。

サーチしても全然情報がなくて、試行錯誤の結果原因はわかった。恥ずかしいことだが、openしていないファイルに書き込もうとしたことが原因である。

しかし、私は釈然としない。たしかに私の初歩的なミスではあるが、その時にどうして上記のようなエラーが表示されるのか、と。何がprobably corrupted stackだよ、と。

作ったプログラムは、あるファイルを分割するものである。

分割条件は、">>"で始まり、"<<"で終わる。
ファイルを読んで、">>"が現れたら出力ファイルを開き、"<<"が現れるまで読み込んだ行を出力ファイルに書き込む。
そして、"<<"が現れたらファイルを閉じる、というループである。

私は、">>"が現れない場合を考慮していず、その場合は読み飛ばさなけれならないのにopenしていないファイルに出力していた。

とりあえず、出力ファイルのopen/close時にフラグをオン・オフして、フラグがONの時のみ書き込むようにした。

最初、フラグの名前を"WRITE"にしたらエラーが出た。予約語だなと思って"write_flg"としたら、またエラーが出た。これも予約語なのかなと"www"にしたらようやくコンパイルが通った。

もうひとつ懸案事項がある。

このプログラムでは、ある条件で現れるログ内の行の文字列をファイル名としている。その文字列の長さは不定であり、その文字列に拡張子".log"を連結している。

strncpy(s2,buf+3,strlen(buf)-4);
s2[strlen(buf)-4]='\0';
printf("%s\n",s2);
sprintf(s, "%s%s", s2, EXT);
outputfile = fopen(s, "w");

このとき、strncpyで文字列をコピーしているのだが、開始位置が3で、文字列長は3+1=4である。この+1とは、改行コードのLFである。

">> ABC-1.2"+(LF)

という文字列から、

"ABC-1.2.log"

という文字列を作りたいのである。

一応これでうまくいっているのだが、改行コードがCR+LFになると、だめだ。そのときは、-5にしないといけない。これをどちらでも対応できるように、つまりCR+LFなら5,LFなら4とする方法はあるのか?


PLCと無線

パソコンの前に蚊取り線香を置いたら煙が吸い込まれていった・・・なんか可笑しい。

今日スラドでPLCについての話題を読んだのだが、PLCというのは普及しかけてはいるものの、いろいろと問題があるようである。

私の家では無線を使っている。2階(中2階)の部屋に無線ルータがあって、そのほぼ真下に位置する居間にあるPCが唯一の無線クライアントである。

たまにノートPCを使うときにつなぐことがあるが、ごくまれである。居間のパソコンの主な利用者は母であるが、つながらないことが結構あると言っている。どうも、縦方向には無線LANは弱いらしい。それほど使う人ではないから、使えない頻度は高いかもしれない。

また、近所にあるAPが表示され、チャンネルがぶつかったりすることもある。無線LANのセキュリティは、いろんな情報からすると安全なものは何一つないと言ってもいいような状況だ。

だから、私は無線LANにはあまり良いイメージがなく、すぐにでもPLCに変えようと思っていた。しかしスラドの連中の話をきいて、それも躊躇している。

私が無線LANを導入したのは結構早いほうだったと思う。1999年か2000年くらい。まだISDNを使っていた時期だ。私の部屋と居間と2回線契約しているのがもったいないと思って、無線LANにしたのだ。APが5万円くらいした。その頃は使い勝手はよかった。遅かったけど、切れたりすることはほとんどなかった。その後規格が新しくなり、今は11Mbpsだっけ?それくらいになってから、接続状況があまりよくない。周りにユーザが増えて干渉したりもしている。

私のPCケースのサイズ

antecのsonata designer 500とかいうやつ。

たぶん、サイズはsoloと同じ。
47x43x20。

CPUクーラーをつけるなら高さは16cmくらいまで。

10X10くらいなら、周りは何もないが、それこえると北に2.5センチくらいのコンデンサがいくつか、すぐ南に何かヒートシンクが、東2センチくらいのところにメモリが高さ3センチくらい、西は各種I/Fがあって、その上にはリヤファンがある。

winfastのチップ2.5x2.5センチ。


AINEX RSF-01BL(スロット取付型PCシステムクーラー)がよさそう。

OSPFのDR選出条件

OSPFのDR選出条件について、勘違いしていたこと。

DRの選出条件は、priority, loopback address, i/fの最大のアドレスの順に決定するというのは、参考書やらいろんなサイトに書かれていてみんな知っていることであろうが、実際のDRの決定には、もうひとつ大事な要件がかけている。いや、二つだ。

1つは、ルーター(OSPFプロセス)が起動していること、もうひとつはOSPFが起動してからdead-intervalが経過しているかどうか、である。

OSPFが起動してることなんて、当たり前じゃないかと笑うかもしれないが、そんなことはない。

あるネットワークに3台のルータがあるとする。まだルーティングプロトコルは設定していない。その状態から、OSPFを設定することになった。ひとりで。それくらい一人でやれ、ということで。

まずルータAに設定を入れる。次にB、Cと。ループバックアドレスは1.1.1.1, 2.2.2.2, 3.3.3.3となっていて、OSPFに関する設定はすべて初期値とする。ちなみにpriorityは1, hello intervalは10、deadintervalは40。多分、多くのルータがそうなっていると思う。

さあ、DRになるルータはどれか。

教科書的な答えであればCであるが、実際にはおそらくA。でなければB。CがDRになることはまずないだろう。

なぜか。それは、ルータAにOSPFの設定を入れてからBに設定を入れるまで、多分40秒が経過するからだ。

ルータAは自分以外のneighborがいないので、dead intervalの経過を待って、自分をDRとする。そのあとに自分よりDRとなる条件が優位なルータが起動しても、DRの再選出はおこなわれないため、ルータAがDRのままとなる。

Aを設定して40秒以内にBを設定すればB,Cまで設定すればCになる。

でも、40秒以内に3台のルータにOSPFの設定を入れるのは多分無理だろう。だから、AがDRになるというわけである。

もちろん、資格試験とかでAだと答えたらバツだけどね。

Antecのケース

ケースを買おうと思う。秋葉原から上野へ歩いて帰るところにあるAntecのショールームはいつも気になっていたのだが、Antecが価格が高いのにかかわらずシェアがトップであることを知って、もうAntecしかないと思い始めた。


<ANTEC>
Three Hundred \9,765
Solo電源なし \12,800
Solo \13,320
Nine Hundred \15,800
P180 \17,146
P182 \21,000


<COOLERMASTER>
CM 690 RC-690-KKN2-GP \11,550
COSMOS RC-1000-KSN1-GP \27,432


<OWLTECH>
OWL-PCOX22 \11,833

カリスマSEが教えてくれたこと

あるブログを見ていたらIT分野でランクが31位となっていた。

へーすごいな、でもまだ上位がいるんだ、と、どんなブログがいるのか見てみたら、「カリスマSEのなんたらかんたら」というブログがあった。自分でカリスマを名乗るとはどんなあつかましい奴だとのぞいてみたら、Windowsで画面の向きを変えるにはCtrl+Alt+矢印でできることが書いてあった。

向きを変えたことはあるが、それはグラフィックドライバの詳細設定みたいなところでしかできないのだと思っていたらキーボードでできるとは。いったん変えて元に戻すときに、首を傾けながらその設定画面をクリックしていたのに・・・

カリスマと名乗るのを認めてやろう。

あれ、でもVistaだからかな、家のPCではできない。