アカウント名:
パスワード:
まず基本的なうるう年処理で誤作動を起こさないシステムを作ってください
#なんで2/29を考慮しないシステムが多いのだろう?
考慮しないというか忘れているのではないだろうか。
2000年はルール上、400年に一度の年だったからしょうがない。
だいぶ昔の話になるけど、一緒に仕事をしてた人がmktime相当の処理を書くときに、ある和訳本に書いてあるコードを丸写ししたら思いっきり2000年は閏年でなかったということがありました。その本にあるコードにはきっちりコメントで2000年は閏年でないと書いてあって、丸写ししたコードのコメントをたまたま読んだ顧客がそれに気がついたというみっともなさ。
# コメントまで丸写しとは律儀ではある。
なんでそうなったのか当時調べてみたら、米国でその辺がすっぽり忘れられて教育されていたとか何とかあったと記憶してます。有名な本か教科書かが間違ってたとか何とか。
で、Y2K問題以前は多くの米国人は2000年は閏年ではないと思っていたと、私は勝手に思ってます。真実は知らないけど。
>100年以上動かす事なんて滅多に無いだろう
ではなくて、多くのクリティカルなソフトウェアでは、仕様に設計寿命が含まれていたから、限られた資源の中で、考慮しなかった。
設計寿命30年のシステムを1960年代に作ったとして、まさか2000年を迎えるなんて想定外だったわけです。
東京電力はこんなことも言ってますが、http://www.tepco.co.jp/nu/qa/qa15-j.html [tepco.co.jp]
2000年と2100年が逆?2000年まで使う事を想定していなければ2100年を想定していないのは当然だけど。
そもそも、
稼働期間 = 扱う日付の範囲
ってシステムのほうが少ないだろうが。
富士通とか富士通とか富士通とかのLSIですね。恨みは今でも忘れない。
四年に一回くらいの不具合で文句をいうでない。一日一回の処理でさえ不具合を出すプログラマーが珍しくないというのに。金をけちれば品質が落ちるのは当然なのよ。
#1分に1回のアクセスで機能不全に陥る図書館は……あれは、ちょっと別路線か。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
うるう秒でどうこう言うより (スコア:0)
まず基本的なうるう年処理で
誤作動を起こさないシステムを作ってください
#なんで2/29を考慮しないシステムが多いのだろう?
Re: (スコア:0)
考慮しないというか忘れているのではないだろうか。
Re: (スコア:0)
2000年はルール上、400年に一度の年だったからしょうがない。
Re: (スコア:0)
なんで「100年に一度」まで考慮していながら「400年に一度」まで考慮しないのか不思議。しょうがないとは思えないしょうがなさ。
Re:うるう秒でどうこう言うより (スコア:2)
だいぶ昔の話になるけど、一緒に仕事をしてた人がmktime相当の処理を書くときに、
ある和訳本に書いてあるコードを丸写ししたら思いっきり2000年は閏年でなかったということがありました。
その本にあるコードにはきっちりコメントで2000年は閏年でないと書いてあって、
丸写ししたコードのコメントをたまたま読んだ顧客がそれに気がついたというみっともなさ。
# コメントまで丸写しとは律儀ではある。
なんでそうなったのか当時調べてみたら、米国でその辺がすっぽり忘れられて教育されていたとか何とかあったと記憶してます。
有名な本か教科書かが間違ってたとか何とか。
で、Y2K問題以前は多くの米国人は2000年は閏年ではないと思っていたと、私は勝手に思ってます。真実は知らないけど。
Re: (スコア:0)
>100年以上動かす事なんて滅多に無いだろう
ではなくて、多くのクリティカルなソフトウェアでは、仕様に設計寿命が含まれていたから、限られた資源の中で、考慮しなかった。
設計寿命30年のシステムを1960年代に作ったとして、まさか2000年を迎えるなんて想定外だったわけです。
東京電力はこんなことも言ってますが、
http://www.tepco.co.jp/nu/qa/qa15-j.html [tepco.co.jp]
Re: (スコア:0)
2000年まで使うことを想定していなくても、
2100年まで使うことは無いと想定すれば、
「4で割り切れれば閏年」とうい処理だけをインプリメントしておけばよかった、という事。
それだけで正しく2000年は閏年として処理された。
という事。
#いわゆる2000年問題は別ね。
Re: (スコア:0)
2000年と2100年が逆?
2000年まで使う事を想定していなければ2100年を想定していないのは当然だけど。
Re: (スコア:0)
そもそも、
稼働期間 = 扱う日付の範囲
ってシステムのほうが少ないだろうが。
Re: (スコア:0)
扱う日付の範囲の想定が、具体的にどの範囲だったら、
「100年に一度の処理を入れるけど400年に一度の処理を入れない」なんていう事になるというの?
過去100年分以上の日付は扱うけど現在より先の日付は扱わないとかなら、まだわかるけど。
Re: (スコア:0)
富士通とか富士通とか富士通とかのLSIですね。
恨みは今でも忘れない。
Re: (スコア:0)
四年に一回くらいの不具合で文句をいうでない。
一日一回の処理でさえ不具合を出すプログラマーが珍しくないというのに。
金をけちれば品質が落ちるのは当然なのよ。
#1分に1回のアクセスで機能不全に陥る図書館は……あれは、ちょっと別路線か。