• 1310月

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

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

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

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

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

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

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

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

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

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

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

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

    (当サイトでは、Amazonアソシエイトをはじめとした第三者配信のアフィリエイトプログラムにより商品をご紹介致しております。)

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

Comments are closed.