« 2005年5月 | トップページ | 2005年7月 »

2005年6月28日 (火)

三鷹駅・開業75周年イベントに行って来ました…

行って来ました。

車両基地「三鷹電車区」。

普段絶対に入れない場所に行けるだけでも
ちょっとドキドキ!

(忍び込めば入れますが…それは犯罪です…。)

12時開場の予定なので、30分前に並ぶと…

Ca240113既に長蛇の列。>うっそ~!
しかも、結構な晴天下…。(つまり炎天下。)
入場までの55分間、まじ倒れそう…。

 
 

その後もかなり並んでいたのを聞いたので
三鷹駅の予想通り2千人程が来ていたのでは…。

Ca240124ようやく入り口に到着…。
えへへ・・・
記念品のボールペンを貰いました…。
友人に自慢するのだぁ!

 
ふと見ると少年が記念品を配っている…。
おお、鉄道少年団と言う組織があることを
初めて知りました…。
ボーイスカートみたい…。

Ca240125最初電車の中に案内される…。
中は冷房が効いていて人心地…。

 

 
一休み一休み…。

Ca240126ここは、電車の掃除用メンテナンス通路?
蛇口が点々と…。

 

 
現有車両の中をとことこ歩いていきます…。

Ca240127Ca240132 

 
 

 
展示している電車の中に試験中のACトレインが…

Ca240136Ca240137Ca240145 

 

 
 

デープなてっちゃんが案内役のJR職員に
デープな内容を質問していました…。
Ca240153Ca240154

工場横に停車している点検用車両。
珍しいのでパチリ。

 
 

この工場は、1車両を各パーツにばらして
修理点検を行う工場らしいです。

Ca240155Ca240159

 

 
 

 
実際にジャッキアップしている状態を展示していました。
 Ca240162
Ca240164

 
 

 

 
工場内に昔の写真パネルや案内板が展示してありました。

Ca240156Ca240158

 
 
 
 
  
次の工場は、連結状態の車両を点検整備を行う細長い工場。
点検用にレールの下が空いています。

Ca240174Ca240175Ca240180

 
 
 
 
  
途中、車両の制御ボックスが空いていて
中が見れるようになっていたのでパチリ。

Ca240181Ca240186

 
 
 
 
  
外に出ると種類の異なる車両が並べてあり壮観。

Ca240190Ca240191

 
 
 
 
 

最後に記念弁当

Ca240193

 

 
 
 
美味しゅうございました…。

| | コメント (0) | トラックバック (0)

2005年6月24日 (金)

フレッツADSLのトラブル

内容や時間は、ちょっとうろ覚え気味。>取り合えず逃げを一発。

昨日の昼頃からインターネットに接続できない…

なんかのメンテナンスか?
事故か?
故障か?

どうせ一晩過ぎれば直っているだろうと高を括っていたら
直っていない…。

NTTに連絡をする。
もちろんフリーダイヤル

「調査をしますので折り返しご連絡を致します…。」

との事だった…。

意外なのは、ここからの対応。

30分ほどすると
「そちらのモデムと同期が取れないのを確認しました。
これから電話局を調査致します。
もし、そこで不具合が発見できない場合には
そちらで調査を行う必要がありますので
今日の午後に伺ってもよろしいでしょうか?」

とにかく早急に直して欲しいと伝える。

それから…40分ほどすると
「電話局の装置に異常を確認しました。
これから、新しい装置に交換致しますので終了しましたら
ご連絡致します。」

更に40分ほどすると
「装置を交換致しました。
インターネットに接続できるかご確認ください。」

無事接続できました。

対応にちょっと感動…。

驚いたのは、迅速な対応もそうだが、
現状の説明と対応予定を経過ごとに
きちんと伝えてくれた事。


ちょっと凄いぞNTT東日本

全ての場所でそうだと言えないけれど
東京都内、特に今回お世話になった担当者には、
非常に良い対応をしてもらったと思います。

トラブルに対する迅速かつ
不安を取り除く分かりやすい説明などの
良質な対応を今後も期待してます…。

| | コメント (0) | トラックバック (0)

2005年6月21日 (火)

できるなら二つの方法で動作を確認しよう

前回は、試しにテストプログラムを組んだら

マジで終わらん…。

と言うわけで検証には、時間がかかることもある…
と言う事になってしまった…。

そうプログラムには、予想以外のことが多々あるのだ!
と言う事にしよう…。

気を取りなおして…
スケールダウンしてやり直し…。

#include <stdio.h>
#include <time.h>
#define        CHAR_MAX        0x7F
void main( void )
{
    char tmpbuf[128];
    char A, B, C;
    int IA, IB, IC;

    _strtime( tmpbuf );
    printf( "開始:\t\t\t\t%s\n", tmpbuf );
    for( A = 0 ; A < CHAR_MAX ; A++ )
    {
        for( B = 0 ; B < CHAR_MAX ; B++ )
        {
            C = A + B;
            IA = A;
            IB = B;
            IC = IA + IB;
            if( IC != ( int )C )
            {
                printf( "ちょっと違うよ!%d - %d\n", IC, ( int )C );
            }
        }
        _strtime( tmpbuf );
        printf( "経過(%d):\t\t\t\t%s\n", A, tmpbuf );
    }
    _strtime( tmpbuf );
    printf( "終了:\t\t\t\t%s\n", tmpbuf );
}

開始:                           12:30:15
    ~省略~
ちょっと違うよ!250 - -6
ちょっと違うよ!251 - -5
ちょっと違うよ!252 - -4
経過(126):                              12:30:28
終了:                           12:30:28

生きている内に終わった…。
良かった…。<ちょっと涙目…。

ちなみに、「for( A = 0 ; A <= CHAR_MAX ; A++ )」にすると
終わらない…。
これは、次のネタに取っておこう…。

て、何だったけ…。
おお、そうだ検証する方法だったっけ…。

結果を見ると左が正の数で右が負の数と…
まあ、違うのが一目瞭然!
つまり、希望した値と異なるものが来ることがあるのだ!

疲れたので、終わり。

| | コメント (0) | トラックバック (0)

2005年6月11日 (土)

生きている内に終わらない動作確認

大抵プログラマーは、作成したプログラムが
正しく動作しているか正確に確認してない

例えば、「C = A + B」を確認するときは、
幾つか思いつく数値を入れて帰ってくる値を確認する。
「A=1/B=1」とか入れて「C=2」と返ってきたら
「ちゃんと動いてるやん。」と思う。

でも、「A=2147483647/B=1」のとき、「C=-1」に
なるのは、確認しない…。多分しない…。

もし確実に動作しているかを確認するのなら
2種類の方法を作成し結果を比較する形にするしかないが…
こいつが結構難しい。

例えば、「C = A + B」の動作を確認するには…
(CPUの動作確認のようだ…)

#include <stdio.h>
#include <time.h>
#define        INT_MAX        0x7FFFFFFF
void main( void )
{
    char tmpbuf[128];
    int A, B, C;
    double DA, DB, DC;

    _strtime( tmpbuf );
    printf( "開始:\t\t\t\t%s\n", tmpbuf );
    for( A = 0 ; A < INT_MAX ; A++ )
    {
        for( B = 0 ; B < INT_MAX ; B++ )
        {
            C = A + B;
            DA = A;
            DB = B;
            DC = DA + DB;
            if( DC != ( double )C )
            {
                printf( "ちょっと違うよ!%f - %f\n", DC, ( double )C );
            }
        }
        _strtime( tmpbuf );
        printf( "経過(%d):\t\t\t\t%s\n", A, tmpbuf );
    }
    _strtime( tmpbuf );
    printf( "終了:\t\t\t\t%s\n", tmpbuf );
}

ちなみに「for( b = 0 ; b < INT_MAX ; b++ )」ループの
ワンカウントにつき3分ほど掛かるので…
全てが終わるのに
6442450941分
107374182.3時間
4473924.2日
12257.3年?!

おお、生きているうちに終わらん…。
いくら長生きするつもりでも…
一万歳じゃあ既にミイラですよ…。<て、生きていないし。

いやその前にPCが壊れる!
絶対壊れる!

要するにものによっては、検証が不可能なのだ…。

まあ、人海ならぬPC海(?)で4473924.2台用意して
分散実行すれば一日で結果を出せるのだろうが…
安いPCでも一兆円ぐらい出せば揃うのか?
広さだって、東京都23区ぐらい必要…?
想像できん…。

つまり

プログラマーが作成した処理、つまりプログラムは、
正しく動くか確認または、検証が
出来ないこともある…。

(これを「プログラム原則の2」と…しよう…)

アレ?これでよかったんだっけ…?

| | コメント (0) | トラックバック (0)

2005年6月 6日 (月)

プログラマーのお仕事

いつも思うことがある。

プログラマーの仕事量は、ちょと伝えにくい。
特にバグについては、伝えられない…。
要望・仕様変更に対しては、実際にやってみないと分からない所が多々ある…
場合もある…。

例えば、「C = A + B」をC言語で書くとこうなる。

    C = A + B;

そのまんま…
でも、これにさえバグは潜んでいる…。

#include <stdio.h>
void main( void )
{
    int    A, B, C;

    A    = 10;
    B    = 954;
    C    = A + B;
    printf( "結果:%d\n", C );

    A    = 2147483647;
    B    = 2147483647;
    C    = A + B;
    printf( "結果:%d\n", C );
}

実行する…。
結果:964
結果:4294967294
とは、ならず
結果:964
結果:-2
…と返ってくる…。

え゛?!

で!ここで言いたい事は!

プログラマーが作成した処理、つまりプログラムは、
あるときは、正しく動き
あるときは、正しく動かない。

(これを「プログラム原則の1」とする!)

これが、プログラムを厄介にして
プログラマーを地獄に叩き込む。

誰かが「ここを変えてよ」と言う。
誰かが、目の前で変える…。
大抵、ここで終わる。

でも、プログラムの場合
誰かが「ここを変えてよ」と言う。
誰かが、目の前で変える…。
大抵、ここから始まる。

『何か』を変えると『何処か』も変わる…。
いや絶対変わっている!

そして、大抵バグになる…。

締め切り間際、多くのバグはテストプレイヤーによって
発見される…。

「デバッグしろ!」と紙の束が来る…。
あるいは、ファイルで来る…。

取っても、取っても取りきれない…。
ゴキブリの比ではない!
別に生んだつもりも育てた覚えは無いのに…。(-_-;)

たまに、1バグ潰す過程で2バグを生み出す事もある…。
って生んでんジャン!

プログラマーとバグの闘いは、終わらない…。

…て、それじゃぁヤバイじゃん…。

| | コメント (0) | トラックバック (0)

« 2005年5月 | トップページ | 2005年7月 »