2000年02月29日

400年に一度の閏年

今年は400年に一度の閏年であり、そして今日は400年に一度の閏日である。今日のニュースでもそのために起こったコンピュータの誤作動を大きく報じている。もしかしたら、4で割り切れる年は閏年に決まっているでしょ? という方もいるかもしれないがそれは間違いである。

以下のCのソースコードを見て欲しい。一目瞭然であるが、4で割り切れ、かつ、100で割り切れないか、400で割り切れる年が閏年である。このとき、4で割り切れ、100で割り切れない年を閏年としてしまったり、西暦を二桁で扱ったために1900年として計算が行われたりすると、プログラムは誤作動を起こすのである。

year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)

これも一種の2000年問題だが、閏年に関しては、閏年ではないのに閏年だと誤認する2100年問題の方が、トラブルは大きい気がする。もっとも100年後のお話であるけれど(笑)。

話はちょっと外れるが、以前、以下に示す日付から曜日を求めるプログラムを見て感動したことがある。因みにこれは、C言語のFAQにも載っている、坂本智彦さんという方が書かれたものだ。

dayofweek(y, m, d)      /* 0 = Sunday */
int y, m, d;            /* 1 <= m <= 12, y > 1752 or so */
{
    static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
    y -= m < 3;
    return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

こういうソースコードと出会った日は、なんだか嬉しくなる。

Posted by Foota at 00:00 | Comments (0)

2000年02月17日

CSSの対応は?

先日、ここのページをカスケーディングスタイルシート(CSS)を用いて統一したのだが、思ったより苦労した。別にCSS自体は難しいものではなく、検索エンジンで2~3のCSSを解説しているサイトを探せば事足りる。では何がそんなに難しいのか? それは現状ではCSSを完全サポートするブラウザが普及していないことである。

まず、ページを作るにあたって、もっとも普及しているブラウザであるInternet Explorer(IE)とNetscape Navigator(NN)の両方がサポートしているプロパティにしなければならない。特にNNは対応していない、もしくは一部不具合のあるプロパティが多いので苦労した。例えば、BODY { background-color: black; }と指定しても、NNだと表組みなどで反映されないのである。仕方がないので、すべてのタグに対してbackground-colorの指定を行った。CSSでは複数タグへの一括指定ができるが、やはり(CCSコーディングの)見た目が美しくない。フォントの指定にも不備がある。また、IE/NNの両方ともtext-shadowプロパティをサポートしていない。IEは独自仕様のfilterプロパティを持っているのだが、企業による拡張プロパティは使いたくない。

結局、完全準拠しているブラウザならばすぐにできたであろうものに、えらい時間がかかってしまった。やはり見た目を表現するのにはCSSがもっとも有効であると思うので、今後のブラウザでのサポートを期待したい。

Posted by Foota at 00:00 | Comments (0)

2000年02月14日

WWWサーバ攻撃の果てに…?

先週の2月10日に、Vectorの作者ホームページのサイトに、Foota WWW Serviceを移転させた。これは、私の勤めている理研の研究室のWWWサーバが運用停止したからである。サーバ停止の理由は、中央省庁のWWWサイトが相次いでクラックされているせいだ。とはいっても、クラッカーにより研究室のWWWサーバが被害を受けたわけではなく、科学技術庁からのお達しで、すべての所外向けWWWサーバを停止せよとのことであるからだ。このことは、新聞にも載ったのでご存知の方も多いと思う。

しかし、WWWサーバを停止させるのは、それこそクラッカーたちの思うつぼであり、彼らは自分たちの力で停止に追い込んだとほくそえんでいることだろう。もっとも、納得のできる対策ができていないのであれば、サーバ停止はやむを得ないのかもしれない。

Posted by Foota at 00:00 | Comments (0)