バッファロー、レコーダ予約がうるう年処理で動作しない問題 44
ストーリー by hylom
結構被害があるのね 部門より
結構被害があるのね 部門より
Aluminum-Carbide 曰く、
バッファローのHDDレコーダー「DTV-H500R」「DVR-1Cシリーズ」「DVR-1シリーズ」でうるう年関連のバグが発見されたとのこと(バッファロー公式リリース、AV Watch記事)。
「2月29日以降対象機器をスタンバイ状態にしたまま、一度も同機の電源ボタンを押してテレビ視聴をしなかった場合もしくは視聴しても視聴時間が5分以下だった場合予約録画が正常に行われない場合があることが判明した」とのこと。
先日シャープのレコーダーでもうるう年関連で「HDDの残容量があるにも関わらず予約ができない旨が表示される」というバグが発見されたが、こちらは「内部時計が不正となり、同日以降の予約録画が実行されない」というもの。「対象機器の電源ボタンを押し、5分程度チャンネルを変えずにテレビ視聴してから、もう一度電源ボタンを押してスタンバイ状態にすること」で対処できるという。
標準Cライブラリに日時関係関数を充実させるべき (スコア:2)
うるう年でよく問題が起こるのは、C言語の標準ライブラリに日付関係の関数が充実しておらず、標準の関数だけでは不足なので、日時を扱うアプリを作るたびに、日時の処理を再発明している状況だから
仮にC言語の標準ライブラリに日時関数が充実して、再発明しなくてもよくなれば、アプリごとに日付処理を再作成しなくてもよくなってバグ混入もなくなる
Re:標準Cライブラリに日時関係関数を充実させるべき (スコア:2)
Re: (スコア:0)
ちなみに、一部のスクリプト言語やマクロ言語なんかでは、日時処理関係の関数が充実して再発明しなくてもよくなってます
C言語も、そんなふうにするべき
お前もか (スコア:1)
一体どういうプログラムにするとそういう事になるのかと
それ以前にどういう仕様書でどういうテストをしたのか見てみたいですね
#いっそのこと2012、2016、2020とかハードコーディングしとけばいいんじゃないかと
不思議ですねぇ (スコア:2)
2000年以前より多いような気がします。
アセンブラでコードを記述していた頃の方がまだ少なかったんじゃないですかね。
そういえばK&RのC言語本にも演習が載ってたような気がするんですが、何が気にくわなくて自分で書いたんでしょうね。
そうとうに枯れた処理のはずなのに。
それとも閏年がない国の人がプログラミングしたんですかね。使ってる暦が違うとか。
Re:お前もか (スコア:1)
単に閏年の事を忘れてただけでしょう。
5分云々ってのはそれだけ電源が入っていれば受信電波から時計設定するので復帰するということかと。
閏年の存在を忘れているのでハードコーディングってのも無理ですね。
Re:お前もか (スコア:1)
こういう機器って専用のRTCチップを使ってたりするんじゃない?で、それがバグってると。
設計に組み入れる方は、時間/日付勘定専用のチップが、まさかうるう年ごときも処理できない
なんて初歩的なバグを抱えているはずがないとすっかり信じきって採用して、確認もしない。
でも実際はそんなあほな子が作ったような残念RTC ICがしれっと出回っていたりする [wikipedia.org]んだなぁw。
Re:お前もか (スコア:1)
そもそもRTCの日付計算って余計なお世話な気がする。
OSの起動時とかに日付からシステムタイムに変換するコード書いてると、適当なところからミリ秒単位でカウントしてろとか思っちゃう。
小さめな組み込み機器だと必要なんだろうか。
Re: (スコア:0)
このLSIの場合は、閏年の100年ルールだけ想定して、400年ルールを見逃してたって話でしょ。
閏年が想定されていないのと同じ扱いにするのは違う気がするな。
#厄介なのには違いないが。
Re: (スコア:0)
100年ルールも400年ルールも、その他のルールも含めて、既成のチップはちゃんと対応している前提で使ってるよね普通、という意味で。
「ルールAには対応していますが、ルールBには対応しておりません。従いまして、閏年処理についてはアプリケーション側で再計算が必要です。」
そんなチップ意味なさすぎ。
Re:お前もか (スコア:1)
400年ルールに対応していた既製品って具体的にどれでしょうか?
# 4年ルールだと2000年はOKですけどね
Re: (スコア:0)
とゆーか、そういう処理を毎回いちいち実装し直してるんだろうか?
Re: (スコア:0)
Re:お前もか (スコア:1)
簡単か複雑って問題じゃないでしょ
だよね。 (スコア:0)
#2112000 [srad.jp]この辺でも言われている通り、
そもそも末端の方で実装する必要があると認識してないだろうなぁ。
そーゆールールじゃない、と言う話だと思う。
自分はWeb系の人間なので門外漢だけど、
末端の方の処理で「毎回いちいち」カレンダー扱うなんて非効率な事をしてたのは
学生時代(10年以上前)の趣味のCGIプログラムの時の話だもの。
それは単に「ろくにライブラリを使えてなかった」からやってただけの話。
まともなプログラマなら「毎回いちいち」閏年の計算が必要な組み方はしないよね。
Re:だよね。 (スコア:1)
java6 が和暦対応すると聞いてwktkしてたら、
明治までしかなかったときのガッカリ感ときたら……
Re: (スコア:0)
その結果閏年が存在することすら忘れて落とし穴にハマると。
いちいち明示的にコーディングしないにしても存在を忘れちゃダメだろ。
Re: (スコア:0)
> いちいち明示的にコーディングしないにしても存在を忘れちゃダメだろ。
「簡単か複雑って問題じゃないでしょ」(#2112046) とのツッコミにむきになってるのかなぁと思うんだけど、
「誰が」存在を忘れていたと推察したの?
Re: (スコア:0)
そんなの簡単だぜ!
→間違えて顰蹙
Re: (スコア:0)
それを見てる奴が「こんな簡単なことを間違えるなんて(ドヤァ」
まさに今回の問題の図式そのもの
Re: (スコア:0)
毎回実装してないからこそ、シリーズ物で不具合が発生しているんじゃないでしょうか。
いっその事 (スコア:0)
閏年を廃止にした方が世界のためなのではないかと思いました。
Re:いっその事 (スコア:2)
人の誕生日を勝手に廃止するなよ.
Re: (スコア:0)
年を取るのは翌日(3月1日)だから大丈夫ですよ
# そういう問題ではない
Re: (スコア:0)
Re: (スコア:0)
誕生日の前日の開始時ですよね?
Re: (スコア:0)
年齢計算ニ関スル法律 [e-gov.go.jp]
民法143条 [e-gov.go.jp]
Re:いっその事 (スコア:1)
どちらにしてもお誕生日会は実施してもらえそうにないですね
Re: (スコア:0)
なぜ誰も17歳教に触れないのだろう?
Re: (スコア:0)
佐久間正英さん、こんなところで。
Re:いっその事 (スコア:1)
よし、じゃあみんなの力を合わせて、地球の公転周期を0.0663%ほど加速するんだ。
とりあえず、夕暮れに第2宇宙速度で真上にものを投げてみよう。
Re: (スコア:0)
閏年を無くしたらどのぐらいで季節との差を実感できるかな。
Re: (スコア:0)
大の月、小の月の区別もややこしいので、day of yearにした方が。
↓
季節がずれるのはやっぱり許せないので、いっその事、通算秒にした方が。起点は1970年あたりで。
Re:いっその事 (スコア:3, おもしろおかしい)
だが待ってほしい。通算秒では日常生活では粒度が細かすぎやしないだろうか。
そこで通算日ですよ。起点は1858年11月17日 [wikipedia.org]でどうでせう。
Re: (スコア:0)
日にしたら今度は閏秒が、ってなるんでは?
Re:いっその事 (スコア:1)
季節もずれず、閏年もない暦はちゃんと存在するじゃないですか。
そう。みんなおなじみ、旧暦(太陽太陰暦)です。
ま、代わりに閏月がありますけど。
Re: (スコア:0)
ユリウスのステマ乙
Re: (スコア:0)
ローマ教皇の優越なんか認めないから大昔のローマ皇帝の権威に従うぜ! って本末転倒すぎやしませんか>正教会
正常に行われない場合があることが判明した (スコア:0)
場合があるってことは、明確に原因箇所が分かってないってことでFA?
>>それ以前にどういう仕様書でどういうテストをしたのか見てみたいですね
こう言う人ほど、テスト仕様書にそった確認をしないんですよねぇ
Re: (スコア:0)
単に、発生回復条件を大雑把に書いているので、当てはまらない場合もありえるからでは。
Re: (スコア:0)
明確に書いていない=判っていない
は短絡的過ぎるね。
Re: (スコア:0)
> こう言う人ほど、テスト仕様書にそった確認をしないんですよねぇ
根拠のない決めつけをする人ほど、って事ならその通りだと思います。
Re: (スコア:0)
> 場合があるってことは、明確に原因箇所が分かってないってことでFA?
なんでそうなるのでしょうか?
普通に一般告知で使われる文言ですが知りませんか?
製造などの内部での報告書なら許されませんが、一般人相手の告知ではそこまではしませんよ?
せいぜい、ちょっと詳しい人相手に詳細告知を後で出すぐらいでしょう。
> こう言う人ほど、テスト仕様書にそった確認をしないんですよねぇ
根拠は?
自分がそうだからってのは根拠になりませんよ?
それとも「どういう仕様書でどういうテストをしたのか」を「テスト仕様書にそった確認」をしろってこと?
だとしたら本末転倒ですね。
オラ 難しいことは良くわからんのだが、 (スコア:0)
適当にググッたらこんなの [ibm.com]か見つかったんだけど、
要するにこの手の問題というのは
ユリウス通日から年月日形式に変換する関数が閏日処理をちょんぼしていたため、
閏日以降はシステム日付と常に1日ずれるようになってしまった
でFA?