• 1310月

    クマデジタルさんによれば、昨日の自動改札機の問題の原因が
    ある程度、判明したようで。
    http://www.itmedia.co.jp/news/articles/0710/12/news117.html

    私は夜のバッチ処理あたりで不具合が起きたのかなぁと思って
    いたのですが、どうやら違ったみたいですね。

    毎朝、サーバから受信する「ネガデータ」というデータの受信に
    失敗したせいみたい。
    不正カードなどを排除する仕組みは、こうやってるんですね。

    「ある長さ、ある件数」といった特定条件でエラーになるんだとか。
    まぁ、この手のバグはありがちですよね。
    0バイトだったとか、サイズがunsigned intなのに受信側がsigned intで
    受け取ってるとかね。(^^;

    ただ、この判定部にバグがあるのは仕方ないにしても、リトライを
    無限ループで繰り返すのは、処理として、いかんですねぇ。

    こういう起動シーケンスでは異常系(サーバーが死んでるとか)を
    考慮して、無限ループは書かないってのがコーディング上のルール
    みたいなものかと。

    まぁ、大体、無限ループってのは極力使わないのに限ります。
    for(;;)とかwhile()なんて、簡単に書いちゃうのが一番危険。(^^;

    もし書いたとしても、breakの条件を正常系だけでなく、異常系にも
    ちゃんと入れてあげるのが賢明ですね。

    言われてみれば、この(プログラミング)業界って、他の製造業
    みたいな「ヒヤリハット」のような活動が、あまりされてないですよね。

    単体であれ、バグが発生したら、それは「ヒヤリハット」集に追加して
    チェックリストにしていけば、ソフトウェア品質も、少しは他の製品に
    近づけるのかも。

    それにしても、サーバから切り離して単体起動させた人は、
    なかなか良いセンスを持ってらっしゃいますよね。
    エラーログでも見られるようになってるのかなぁ?

    まぁ、今回の件で自動改札機も立派な「コンピュータ」なんだって
    ことが判った次第であります。

    Filed under: その他
    2007/10/13 9:39 am | 無限ループは使わない はコメントを受け付けていません。

Comments are closed.