コンピュータ環境 (2003/08)

最初の書き込みへ

基本の環境はこちら

2003年07月の環境
2003年09月の環境
戻る


時系列・環境の変遷


 

2003/08/26 (Tuesday)
続々・SOBIG疲れた / 詐称ロボット

続々・SOBIG

 ナイショのナローバンド受信環境で半月ぶりにメールを受信したら、こちらにも SOBIG.F がしっかり入電していてもう大変。
 なにしろ ISDN でしょ、もう終わりゃしない。結局100通ばかり受信して。
 中に、10通くらい、必要なメールが混じっているので、いちいちタイトルとか差し出し人とか確かめなきゃだし、1通ごとに Norton AntiVirus 様が「おったで」と確認ダイアログ表示して、これに「OK」を2回クリックして応答しないと次のメールを受信しないし。
 全部受信しおわった時には、なんか一仕事終わらせたように消耗してしまいました。

詐称ロボット

 巷間、某韓国系のクローラーロボットが身分を詐称しているといって問題になっているようです。
ふが日記・T(ツッコみのT)(2003-08-21)さんとか、void GraphicWizardsLair( void ); //さんとか、いろんなところで叩いています。

 さっそく .htaccess の deny に追加しました。たかゆきお兄ちゃまに感謝です。

 .htaccess の使い方がよく分かっていないので、何度も何度も 500 とか 403 を返してしまいました。どうやら安定したみたいです。
 というわけで、せっかく遊びに来てくださったのに 500 とか 403 とかくらったみな様、いらしゃいましたらごめんなさい。


2003/08/25 (Monday)
続・SOBIGマジやばい

 日曜日も100通以上届き、ウツな気分で出社してみたら、職場では3通。

 ううむ、この格差は一体何なんだとますますウツになります。

 暑くて脳みそ干上がりそうだし、まともにモノ考えることもできゃしません。

2003/08/26へ

2003/08/23 (Saturday)
SOBIGマジやばい

 金曜日に職場のメールににうでんするようになったこのワーム。
 ゆうべも自宅のメーラにちょこっちょこっとはいってましたが。
 今日になって大爆発。

 これ書いているのが午後4時半ですが。
 すでに受信が100通という…

 すごいよ、すごい。こんなものすごい大爆発見たことない。
 月曜日に職場のメーラ開くのが、今からウツです。

2003/08/25へ

2003/08/19 (Tuesday)
Morgan le Fay の悲劇

 つうほどのことはないんですが。

 土曜日の恒例のガンダムシード録画に失敗しまして。
 いや、予兆はあったんです。前日の Alien の録画にも失敗していたので。
 しかし、金曜日の夜は酔っぱらっていたし、コミケのスタッフやっているので早寝しなきゃだしで、原因調査をしなかったんですね。
 それで、家族に録画を頼んで出発してしまった、と。

 で、「やっといたぜ」というたのもしい言葉にむかえられて Morgan le Fay をチェキすると、録画ファイルの容量が 3 MB しかない。「これ、自動的に停止するんか?」との質問もあり、にわかに不安になって HDD の容量を調べたら、残り 0 (;´Д`)。

 一応 40 GB あるんよ、D:。それで、半月くらい前には 10 GB 以上確保してあった*はず*なんだよ、それがどうよ、あっというまに…

 そういうわけで(どうゆうわけよ?)、昨日の終業後、魔の街によって 120 GB HDD を確保してきました。
 領域確保は一瞬でおわりましたが初期化に約90分かかり、40 GB のデータ転送はもっとかかったので作業させたままで寝てしまいました。
 今朝起きたら終わっていましたので電源切断してきました。

 IDE は、HDD * 2、DVD-R、MO で埋めつくされてますので、一時的に MO をはずして作業しました。
 今夜は、40 GB を 120 GB に換装して、そのうちに、C: の 15 GB を 40 GB に換装しようと思っています。

 マルチメディア恐るべし。

2003/08/23へ

2003/08/12 (Tuesday)
名寄せ作業

 これは、主にエンドユーザが所有している複数の EXCEL シートから、ユニークな行だけ抽出するというものです。

 いろんな名簿があるわけです。社内の統一データベースとかないから。
 それで、DM 出すとか、E-Mail 送る(SPAM じゃないよ、SPAM じゃない)とかするときになると、複数の EXCEL シートをどかっと持ってきて、「名寄せたのむ」ということになります。

 考え方は割と簡単で、データを ACCESS のテーブルに取り込んで、それぞれのテーブルで不一致クエリーを取り、ユニオンクエリーで合体させるだけなんですが。
 考え方は割と簡単なんですが、いざ実際にやってみるとけっこう大変。

 名前と会社名で調べるのですが、名字と名前の間のスペースの問題とか、社名では株式会社、(株)、鰍フ問題とか、いろいろとありまして。

 このへんの問題は、VBA をがりがり書いて、名寄せ用の「氏名詰め」、「社名詰め」というフィールドを追加し、名前はスペースを全部取り去る、社名は漢字+半角カナに変換して、梶A(有)といった文字を考えられるかぎりみつけてはがす、といった処理をして、まあこれでいいか、みたいなことにしてお茶を濁しています。

 さて今、三つのテーブル、a、b、cがあったとします。データの優先順位は a>b>c とします。a と b に重複レコードがあれば、a のレコードを生かすわけですね。
 順番としては、

  1. 三つのテーブルのレコードレイアウトを一致させます
  2. プログラムで「氏名詰め」、「社名詰め」のフィールドを作ります
  3. 一番優先順位の低いテーブルから、次の順位のテーブルに対して不一致クエリーを発行します。
    • 不一致クエリーウィザードを使うえば割と簡単
    • ただし、付き合わせフィールドがふたつあるので、ウィザードでは「氏名詰め」だけしていして、最後に編集画面で「社名詰め」を追加します
  4. できた不一致クエリーと、「次の順位のテーブル」に対してユニオンクエリーを発行します。
    • ユニオンクエリーは SQL からたたくしかないので、そのように
    • SELECT * FROM [今作った不一致クエリー] UNION SELECT * FROM [次の順位のテーブル];
  5. できたユニオンクエリーから、一番順位の高いテーブルに対して不一致クエリーを発行します。
  6. できた不一致クエリーと一番順位の高いテーブルに対してユニオンクエリーを発行します。
  7. 完成\(^^)/

 順位の低いものから順位の高いものに対して発行する不一致クエリーは、順位の低いものにしかないレコードを抽出していることになります。
 できた不一致クエリーと順位の高いものでユニオンクエリーを発行すれば、そのレコードはユニークになります。
 テーブルが何個あっても、この過程をくり返せば最終的にユニークなレコードのクエリーを得られます。

 これまでは、テーブル数が3個から4個という作業がほとんどでしたので、クエリーの作成はウィザードとか SQL 画面とか使って、手作業でやっていました。

 せんしうの木曜日に、テーブル9個という作業依頼があり、しかも内容を見れば、E-Mail のあるレコードは個人名と E-Mail で、E-Mail のないレコードは個人名と社名で名寄せしろと、要するにテーブル9個の名寄せを2回 = テーブル18個に対する作業ということになり。
 作成するクエリーの数は、(テーブル数 - 1) * 2 ですから、この場合 (9-1) * 2 * 2 = 32個という(涙)

 おろおろと9個の EXCEL ブックを開いてみたところ、ありがたいことに全部のシートの列がそろえてありましたので最初の難関はクリアしました。
 インポートを9回、手作業でやるのはなんか気が重くなり、その場でちょちょっと VBA を書いて、パラメータは固定文字列にして関数を呼び出し、インポートはプログラムにまかせ、「氏名詰め」、「社名詰め」の作成も終わり、E-Mail ありとなしのテーブルの分離もやって、それからえんえんと不一致クエリー〜ユニオンクエリーの作成を16回くり返して無事終了しました。
 これが木曜日の夕方のこと。
 用心して一晩寝かせ、金曜日の午前中にクエリーを見直してみたところ、案の定間違いが一ヶ所。
 修正して、納品しました。

 ほっと胸をなで下ろしていたところ、その直後に同じ部門の別人から今度はテーブル6個の名寄せ依頼です。

 キレました。自分の中で何かが音を立ててキレました。
    プ ロ グ ラ ム を 書 い て や る 。

 不一致クエリーにせよユニオンクエリーにせよ、ちがうところは FROM 句だけといっても過言ではありません。んなもん VBA で書けばいいじゃん、もう手でやらなくていいじゃんかよ。
 というわけで、金曜日の11時頃から夕方まで、昼寝もせずにがりがりとコーディングしました。

 入力ファイルのテーブルを作って、レコードを参照しながら、昨日作ったインポート関数を呼び出すようにしました。
 統計テーブルを作って、それぞれのテーブルとクエリーのレコード数を格納するようにしました。
 一個目のシート情報を参照して、インポート用テーブルのレイアウトを生成するようにしました。
 最後にできたクエリーを Transferspreadsheet 関数で EXCEL に出力するようにしました。

 なんだ、これ、エンドユーザに提供できるじゃん((木玄火暴))

 大変有意義なしうまつでしたチャンチャン

2003/08/19へ

最初に戻る
戻る