ウィルス除去サーバの弊害
以前より学校全体にて導入していたウィルス除去サーバ NetShelter も導入から時期が経過し、 性能問題などから更新となった。 このため先週より新しいウィルス除去サーバに切替えたのだが、 昨日少しトラブルがあった様子。
自宅サーバへメールが届かない
色々と作業の中、自宅 tsaitoh.net にも Cc: でメールを投げたら、 『"tsaitoh.net"がみつからない』とのエラーで、 ウィルス除去サーバが返送してくる。 新しいサーバ運用開始から、自宅にメールを送るのは最初だったので、 サーバの問題を懸念する。
Dynamic DNS のサーバが拒否るのか?
特に、自宅サーバ tsaitoh.net は Dynamic DNS を使っており、 tsaitoh.net を正引きしたアドレスと、 それを逆引きした時のドメイン名は一致しない。 こういうサイトは、『SPAMボット化したパソコン』と疑われ、 メールの配送・受信拒否というトラブルの憂き目に会いやすい。
対外メールサーバを SPAM サーバと誤認?
しかし、センターの方に確認したら、Internet から DMZ 内部のウィルス除去サーバに メールを中継する対外接続サーバを、『ゴミメールを大量に投げてくる SPAM サーバと誤認』 したことで、対外接続サーバからの接続を一時的に拒否しているみたい。 前述症状は、この影響の可能性が大きい様子。 現在 情報センターにて、設定の見直しをしている状況との連絡を受ける。
演習
時間としては、先週から取り組んでいる N進数 の取扱いプログラムの 課題時間とした。
よくある間違い
演習の時に3年生がよく、プログラム作成時にやりそうな間違いとして、 いくつかのネタを紹介する。
/* 平均点を求めたい。*/ int sum = 100 ; /* 合計点 */ int size = 3 ; /* 人数 */ float mean ; mean = sum / size ; ........... mean = (float)sum / (float)size ; と書くべき。 printf( "%f" , mean ) ; ★平均点は 33.0 点 平均点を求めるつもりのプログラムでも、 sum / size はそれぞれ整数型なので、割算も整数型で行われる。 /* 点数が可ならば(60≦点<80) */ if ( 60 <= point < 80 ) ..... if ( 60 <= point && point < 80 ) と書くべき。 処理... ; ★処理は(ほとんどの処理系では)必ず実行される。 条件式は、(60 <= point) < 80 と解釈される。 60 <= point は論理値 0 or 1 を返す。 その (0 or 1) を 80 と比較するため。 /* 実数データの読み込み */ double x ; scanf( "%f" , &x ) ; ........ scanf( "%lf" , &x ) ; と書くべき ★xはゴミの値となる。 %f は float型(4byte)の入力フォーマット。 scanf は、xの場所に、入力データを 4 byte だけ格納する。 しかし、x は double 型で (8byte) の値。残りの 4byte にはゴミが入ったまま。