【PS3】時計機能の大バグを考えて・・・
![]() さて、2010/3/1に起こったPS3のはちゃめちゃな不具合ですが、 皆さん、セーブデータにトロフィーにご無事でしょうか? http://gs.inside-games.jp/news/222/22225.html これは大問題、欧米では訴訟が頻発しそうですね… 開発者のテスト機でも起こったらしいので、 デベロッパーは涙でしょう… 全く意味不明な今回の不具合ですが、 いくら考えても検討も付かない… まずは閏年はグレゴリオ暦で、 http://ja.wikipedia.org/wiki/%E9%96%8F%E5%B9%B4#.E3.82.B0.E3.83.AC.E3.82.B4.E3.83.AA.E3.82.AA.E6.9A.A6 西暦年が4で割り切れる年は閏年 ただし、西暦年が100で割り切れる年は平年 ただし、西暦年が400で割り切れる年は閏年 です。 これはプログラマーなら誰でも知っている情報です。 で、今年は2010年。 どれで割っても割り切れない… 閏年のチェックすらしない年なのです。 逆に世界を騒がせた2000年は4桁目が繰り上がるのと閏年計算の全てに該当する年だったので、 世界でバグだらけでした。 ちょっと前に韓国とオーストラリアで2010年問題がありましたねぇ。 これは下2桁だけBCDを使ってたのが問題?らしいですが。 http://ja.wikipedia.org/wiki/%E4%BA%8C%E9%80%B2%E5%8C%96%E5%8D%81%E9%80%B2%E8%A1%A8%E7%8F%BE 全く謎なのが、今回の閏年。 公式発表の1日経ったら直りますってのも… 安全の為、boost::gregorianを使いましょうw 後、新型では起こらないってのも謎ですね。 ファームウェアがバージョン毎に用意されているんでしょうか? |


UNIX系ですと、1970年1月1日を起点とした通算秒で日付と時間を管理しているのはご存知かと思います。そして、2038年にオーバーフロー問題が控えていることも。
仮に、この2038年問題の先送りのため、PS3の内部クロックが、2000年1月1日を起点としていた場合、標準的な日付時刻の処理ルーチンでは、今年は1980年と見なしてしまいます。そして、1980年は閏年なんですよね。
以上は何の根拠もない妄想ですが、プログラミングに携わったことのある人間には、今回の件はけっこう興味深い事象ですので、詳細を発表してもらいたいですよね。
2010/3/3(水) 午前 10:52 [ えまのん ]
なるほど!UNIXではそういうトリックも使うのですね!勉強になりました。
ただ二年前の閏年は正常に機能していたので、その辺りが更に謎ですねぇ。
仰せの通り、詳細発表はするべきです!
2010/3/4(木) 午前 1:12 [ kos*y*com ]