2009年2月14日土曜日

1234567890、おめでとう

今日は、あの日ですよね。そう、1970年1月1日0時0分0秒から秒数を数えると、

1234567890

になる瞬間を迎える日。ちなみに、そのほかのことには、あまり関心を持たないことにしています。



1970年1月1日0時0分0秒ってのは、なんじゃらほい?
という人もいるかもしれませんが、これは、UNIXの内部で時刻を扱うとき、1970年1月1日0時0分0秒を原点として、秒数で数えているからです。

FreeBSDのtime(3)のマニュアル
http://www.freebsd.org/cgi/man.cgi?query=time&apropos=0&sektion=3&manpath=FreeBSD+7.1-RELEASE&format=html

UNIXが誕生した(C言語が誕生した?)瞬間からさかのぼって、ちょうど切れ目のよさそうな日時、ってことで選んだのでしょうかね。



ちなみに、これまで32bit幅の符号付整数で秒数を数えてきたために、「2038年問題」というのが待っています。

ウィキペティア 2038年問題
http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C

ちなみにMS-DOSは、1980年1月1日から数えてました。
さらに話が脱線しますが、MS-DOSのFATファイルシステムでは、ファイルのタイムスタンプで、秒に使うビット数をケチって5ビット(0~31までしか表現できない)しか用意しなかったので、この5bitの値の2倍の値を秒として使うことにしたため、タイムスタンプの秒は必ず偶数になる、という、すばらしく割り切った仕様がありました。このアバウトさは、米国精神の表れなのではないでしょうか。



FreeBSDの/usr/include/fs/msdosfs/direntry.hにある、



#define DT_2SECONDS_MASK	0x1F	/* seconds divided by 2 */


がその5bitの部分です。





UTC(協定世界時)の1970年1月1日0時0分0秒から数えるので、日本の場合、時差を考えると、2009年2月14日午前8時31分30秒に、1234567890を迎えました。


1234567890になる、その瞬間を、ものすごくアナクロな手法で待っていて・・・



20090214



あー 1秒ずれた!! もう人生の終わりだー!いや、世界の終わりだー!





0 件のコメント:

コメントを投稿