プログラマ ずんべ の日記

zunbe

プログラマ ずんべ の日記
プログラマ ずんべ の日記

探し物は見つかりましたか? サイト内検索を試してください。

プログラマ ずんべ の日記 2005年8月 2005年10月 プログラマ ずんべ の日記


<<先頭] [<前へ] [ 1  2  3  4  5  6  7  8  9  10  11 ] [] [最後>>

【若いモンの発想はわからん】(その17) それはNULLじゃないのか?

(その17) それはNULLじゃないのか?

このエピソードの続き。

 若いモンの発想はわからん(16)

処理しているデータは観測機器から取得した観測データであり、当然のことながら、データ中には「欠測」という状況が発生しうる。
今回のプログラムでは、データが欠測であった場合に、値として NULL を投入するように指示してあった。

社員が書いたプログラムは、通常の値については指示通り NULL が設定されていたが、日平均値の計算は以下の様なプログラムになっていた。

-----
if (有効観測数 > 0)
{
  日平均値 = 日積算値 / 有効観測数;
}
else
{
  日平均値 = 0;
}
-----

有効観測数が「0」の時、日平均値が「0」だと?
ぜんぜんダメである。
なんで、有効な観測値が1レコードもないのに、その平均値が「0」なんだ?
有効な観測値が1レコードもなければ、平均値も有効にはならないのであるから、当然 NULL を設定するべきだろう。

このデータの中身は、気象情報(風速、降水量、日射量など)なのだが、「風速=0」と「風速=わからない(NULL)」はまったく意味が違う。
このプログラムでは、風速が1回も観測できていない状況でも、「平均風速 0.0m」と記録されてしまう。

要するに、社員は、「NULL」という値の意味が理解できていないのである。

ちなみに、このエピソードは、以下のエピソードにも通ずるものがある。

 NULLと空文字列

若いモンは、もっともっと勉強するべきだ。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/09/28 02:36:09 | コメント (0) | トラックバック (0)

2005/09/27

【若いモンの発想はわからん】(その16) 平均値の計算

(その16) 平均値の計算

CSVデータからデータベースに投入するプログラムを作らせた。
仕様はこうだ。

 (1).観測局が10地点あり、1時間毎の観測値(1時間値)がCSVファイルに記録されている。
   CSVのフォーマットは以下の通り。

   -----
   観測局コード,観測年月日,観測時刻,観測値
   -----

 (2).CSVファイルを読み込みデータベースに投入する。
   テーブル構造は以下の通り。

   -----
   観測局コード   PKEY
   観測年月日+時刻 PKEY
   観測値種別    PKEY
   観測値
   -----

   このうち、PKEY と記載されている列がプライマリ・キーである。
   「観測値種別」には、「1時間値」と「日平均値」がある。

 (3).投入は以下の通り行う。

   (a).1時間値は、CSVデータに格納されている値をそのまま投入する。
   (b).日平均値は、当該観測年月日の平均値を求めて投入する。
     その際、時刻には「00:00:00」を設定する。

社員は、この仕様において、日平均値の計算で以下の様な処理を書いた。

 ・同じ「観測年月日」のデータをすべて(全観測局分)積算して、平均値を求めて投入。

  たとえば、以下の様なデータの場合…

  ----- CSVファイル -----
  1,20050927,00,100
  1,20050927,01,110
  1,20050927,02,120
  2,20050927,00,200
  2,20050927,01,210
  2,20050927,02,220
  -----

  日平均値は 160。
  データベースには以下の様に投入される。

  ----- データベース -----
  1,2005-09-27 00:00:00,1時間値,100
  1,2005-09-27 00:01:00,1時間値,110
  1,2005-09-27 00:02:00,1時間値,120
  1,2005-09-27 00:00:00,日平均値,160
  2,2005-09-27 00:00:00,1時間値,200
  2,2005-09-27 00:01:00,1時間値,210
  2,2005-09-27 00:02:00,1時間値,220
  2,2005-09-27 00:00:00,日平均値,160
  -----

ぜんぜんダメである。
どうして、すべて観測局の値から平均値を求めるという発想になるのだろうか。
データベースのプライマリ・キーは、「観測局コード」「観測年月日+時刻」「観測値種別」だ。
すなわち、「観測局コード」「観測年月日+時刻」「観測値種別」を基準に集計されなければならない事を意味している。
どう考えても、すべての観測局のデータを積算して平均値を求めるのはおかしい。

確かにずんべは、「平均値を求めよ」としか指示していない。
しかし、この程度の事は、いちいち指示されなくとも、適切に実装できるべきである。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/09/27 03:59:41 | コメント (6) | トラックバック (0)

【サービス】関連Blog?

関連Blog?

直前のエピソード「新手のスパム?」を書き込んだすぐ後、livedoor NEWS に掲載されている記事の 関連Blog として掲載された。

 
 記事URL

記事のタイトルは「[慶大医学部院生]大麻所持容疑で逮捕 警視庁高井戸署」であるが、ずんべが書いたエピソードとどういう関係があるのだろう?
他の関連ニュース、関連ブログ、関連サイトを見ると、どうも「大学生」というキーワードで関連情報が検索されているようだ。

まぁ、機械的にやっているのだろうから仕方のない事だとは思うが、ちょっと関連性なさすぎじゃないか?
せめて「大麻」あたりもキーワードに含めて検索し、もう少し関連性の精度を高めてほしいところ。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/09/27 01:59:07 | コメント (0) | トラックバック (0)

【独り言】新手のスパム

新手のスパム

今日、まぐまぐからこんなメールが届いた。

--
================
次のメールマガジンに、発行者によって代理登録されました。
-----
●メールマガジン名: 大学生CEOひろとの10億円企業への挑戦!
●マガジンID: 0000123574
●マガジン説明ページ:http://www.mag2.com/m/0000123574.html
●データタイプ: ノーマルテキスト
●発行周期: 月4回以上目標
●発行者連絡先: hiro-atm@mvj.biglobe.ne.jp
●この登録が間違いのとき、または配信中止(解除)ご希望のときは、
http://regist.mag2.com/reader/Magrddel?reg=dairi&id=0000123574&e=*****
をクリックすると、登録キャンセル(解除)されます。

================
●登録日時: 2005/09/26 22:07:17
●登録時IPアドレス: 220.32.130.14
        :
--

「代理登録」だとぅ?
これ以外にも異なるメルマガで2通、計3通着信している。
勝手にメーリングリストに登録するという、新手のスパムだ。

通常のスパム・メールと同様、解除の操作を行えば、メールアドレスが生きているという事を証明してしまうことになるので解除は行わない。
メーラの自動振り分けに登録し、そのまま放置プレイに決定。
スパマー君、がんばってメールを送信してくれたまえ。

どうやら、まぐまぐはスパム・メールの温床になりつつあるようだ。
まぐまぐに限らず、Yahoo! Groups などでも管理者がメールアドレスを自由に登録する事ができるので、状況は同じである。
これらサイトの早急な対応を求む。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/09/27 00:38:44 | コメント (0) | トラックバック (0)

2005/09/26

【若いモンの発想はわからん】(その15) POPサーバ

(その15) POPサーバ

メールをPOPで受信して、処理を行うプログラムを作らせた。
POPする事自体は、既存のモジュールを使用して簡単にできるので、そう難しいプログラムではない。

できあがったプログラムの動作について、できるだけ多くのメール・サーバから受信を行って、動作確認を行う様に指示をした。
社内にあるサーバ環境では、どうやっても限界があるので、自分が持っているメールアドレスを使って、受信ができるか確認する事になる。

社員がテストが完了したと言ってきた。
どのメールサーバを利用して動作確認を行ったのか聞いたところ、以下の回答が返ってきた。

 excite
 goo

意味がわからない。
excite や goo のサービスで POP ができるという話は、聞いた事がない。
どうして、これらのサービスを使用して、POP のプログラムの動作確認ができるのだろうか。

社員は、こうやって動作確認をしているのである。

 excite、goo のアドレスから、会社のアドレスに転送設定

ぜんぜんダメである。
これでは、アクセスするメール・サーバは、会社のメール・サーバ「だけ」ではないか。
要するに、社員は「できるだけ多くのメール・サーバから受信して動作確認を行う」という事の意味が理解できていないのである。

メールサーバには、vpopmail、qpopper など、様々なサーバが存在し、それぞれ微妙に挙動が異なる。
単に接続するだけなら、プロトコルだけの問題であるから、どの様なメール・サーバであろうと、接続できるだろう。
しかし、ヘッダの保存のされ方などは、メール・サーバ特有の動作がかなりある。
たとえば、ヘッダ情報が2行に渡るとき、2行目以降の先頭行は空白か、タブか。
プロトコル上入ってはならないヘッダ情報が投入された場合に、それが削除されるか、されないか。
などである。
ひとつのメール・サーバにアクセスしただけでは、動作確認を行った事にはならない。

動作確認において、何を確認するべきか、きっちりと理解して作業するべきである。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/09/26 13:04:06 | コメント (2) | トラックバック (0)



<<先頭] [<前へ] [ 1  2  3  4  5  6  7  8  9  10  11 ] [] [最後>>