SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
あなたの時計は大丈夫?
「想定外」だった日時の不具合




 clu2c動態保存整備士
      東平洋史
日時に関する不具合が起きる原因

• オーバーフローによるもの
 「想定外」の期間使用
 – 桁数の制限
  • n桁で処理→n+1桁目に達してオーバーフロー
 – 積算日時の制限
  • n桁で処理→n+1桁目に達してオーバーフロー
  • nビットで処理→n+1ビット目に達してオーバーフロー
• 大小関係の定義ミスによるもの
 – 辞書順で処理
• その他
日時に関する不具合が起きる原因

• オーバーフローによるもの
 「想定外」の期間使用
 – 桁数の制限
  • n桁で処理→n+1桁目に達してオーバーフロー
 – 積算日時の制限
  • n桁で処理→n+1桁目に達してオーバーフロー
  • nビットで処理→n+1ビット目に達してオーバーフロー
• 大小関係の定義ミスによるもの
 – 辞書順で処理
• その他
オーバーフローによるもの(1)

     桁数の制限
西暦2000年問題

• 年を西暦下2桁で処理
 1997 ⇒ 97
 1998 ⇒ 98
 1999 ⇒ 99
 2000 ⇒ 00
   →00は99より小さい
   →2000年(00)は1900年(00)なので1999年(99)より前!
   →誤作動
⇒年を西暦4桁で表現して対応
西暦2000年問題中途半端な対応
下2桁で処理するまま残そうとしたが…

• 西暦2030年問題        • 西暦2069年問題
 – 00~29なら2000年代    – 00~68なら2000年代
 – 30~99なら1900年代    – 69~99なら1900年代
• 西暦2050年問題        • 西暦2070年問題
 – 00~49なら2000年代    – 00~69なら2000年代
 – 50~99なら1900年代    – 70~99なら1900年代
                   • 西暦2100年問題
                    – 00~99なら2000年代
西暦2008年問題

あるネットゲーム(Perl製)で実際に発生
•年を西暦下2桁で処理
•文字列として格納
•先頭が0だと8進数として扱われる処理系
 2007 ⇒ 07 … 8進数だとここが上限(00~07)
 2008 ⇒ 08 … 08という8進数はない!
 2009 ⇒ 09 … 実はここも該当
西暦2010年問題
•年を西暦下2桁で処理          • 発生した事例
•2進化10進表現として格納        – シチズンの電波時計「ワ
                        ールタイムドシリーズ」
•「10」を0x10=16と誤認!       (2008年に発覚)
 2009 ⇒ 09
                      – オーストラリアクイーンズ
 2010 ⇒ 16              ランド銀行の金融システ
 2011 ⇒ 17   実際より       ム(2010年)
 …           6年後と     – ドイツジェムアルト社のIC
 2018 ⇒ 24   誤認         カード使用不能
 2019 ⇒ 25            – PlayStation3で2010年を閏
 2020 ⇒ 32   実際より       年と誤判定(3月1日に2月
                        29日と表示して発覚)
 …           12年後と
 2029 ⇒ 41   誤認
元号の処理方法による問題
• 昭和100年問題
 – 年を昭和2桁で表現
   • 平成以降も、内部的には昭和として扱う
    – 「平成23年」は「昭和86年」
   • 官公庁や金融機関などに存在
 – 「昭和100年(2025年(平成37年))=昭和0年」と誤認
• 平成100年問題
 – 年を平成2桁で表現
 – 「平成100年(2088年)=平成0年」と誤認
もう一つの西暦2000年問題(閏年)

• 閏年と算出できない
 1. 4で割り切れる年は閏年
  2000は4で割り切れる
 2. 4でも100でも割り切れる年は閏年ではない
  2000は4でも100でも割り切れる
 3. 4でも100でも400でも割り切れる年は閏年
  2000は4でも100でも400でも割り切れる
 – 条件3を忘れ、西暦2000年を閏年と判定できない
まとめ
• 耐用年数をきちんと考えて作りましょう
• 耐用年数を超える場合は対策を施しましょう
• テストは慎重に行いましょう

Mais conteúdo relacionado

Mais de 洋史 東平

Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話洋史 東平
 
関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~洋史 東平
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話洋史 東平
 
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~洋史 東平
 
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編洋史 東平
 
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン洋史 東平
 
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)洋史 東平
 
大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2洋史 東平
 
大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした洋史 東平
 
自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?洋史 東平
 
続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした洋史 東平
 
自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした洋史 東平
 
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話洋史 東平
 
bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話洋史 東平
 
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行洋史 東平
 
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみたFreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた洋史 東平
 
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみたSolaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた洋史 東平
 

Mais de 洋史 東平 (20)

Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話Microsoft Excelでgoogle chromeを動かした話
Microsoft Excelでgoogle chromeを動かした話
 
関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~関東地方で北海道を味わおう~上京した皆様へ~
関東地方で北海道を味わおう~上京した皆様へ~
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
 
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
関東地方で北海道を味わおう ~北海道の宿がとれない皆様へ~
 
ぼくnmonです
ぼくnmonですぼくnmonです
ぼくnmonです
 
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編大人の事情が自販機に超自然現象を起こした アマゾンライダー編
大人の事情が自販機に超自然現象を起こした アマゾンライダー編
 
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
大人の事情は自販機に超自然現象を起こさなかったのか? ライダーマン
 
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
大人の事情が自販機に超自然現象を起こした V3(ヴイスリャー)
 
大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2大人の事情が自販機に超自然現象を起こした その2
大人の事情が自販機に超自然現象を起こした その2
 
大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした大人の事情が自販機に超自然現象を起こした
大人の事情が自販機に超自然現象を起こした
 
自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?自販機の超自然現象 果たして収まるか?
自販機の超自然現象 果たして収まるか?
 
続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした続・自動販売機の大人の事情をテストした
続・自動販売機の大人の事情をテストした
 
自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした自動販売機の大人の事情をテストした
自動販売機の大人の事情をテストした
 
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
 
bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話
 
OSUnC川越2016
OSUnC川越2016OSUnC川越2016
OSUnC川越2016
 
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
Selenium WebDriverでFreeBSD 10.2のGoogle Chromeを自動実行
 
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみたFreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
FreeBSD 10.2(amd64)でSelenium WebDriverを動かしてみた
 
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみたSolaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
 
OSCで何したの?
OSCで何したの?OSCで何したの?
OSCで何したの?
 

あなたの時計は大丈夫? 「想定外」だった日時の不具合(OSC2011広島用)