2004年12月06日

DataTable.GetChanges()


DataTable.GetChanges() って、テーブルに対して行われた変更部分だけを取得できるのですが、これではまりました。

 foreach ( DataRow dr in dataTable.GetChanges().Rows ) {
   dr.RowError = "error";
 }

とやっても、RowError プロパティに文字列を設定すると、DataGridの表示が変るのはずなのですが、いくら頑張っても、表示が変りません。
デバッグでdataTableの中をブラウズしていったら、RowError プロパティが変更されていないじゃないですか???
間違いなく上のコードは実行されているのに、どうして?と思いました。
調べたら、DataTable.GetChanges()メソッドって、コピーを返すんですね。
DataTable.GetChanges()が返すテーブルの各row は、オリジナルのRowの参照を持っているのかと思っていたら、完全なるコピーが作成されるようで、GetChanges()で返される各row も複製なので、いくら、
dr.RowError = "error";
とやっても、オリジナルを変更できないのでした。
これを知らずに時間を無駄に費やしてしまいました。
  

Posted by gushwell at 19:43Comments(1)TrackBack(1)ADO.NET

2004年12月02日

これってフィッシング詐欺?


先日、Yahooから、「あなたの出品に対して、以下の質問がありました」というメールが届きました。その質問の内容は、「あなたが出品しているXXXXXを絶対に入手したいので、言い値で購入しますから、xxxx@xxxx.xxxx のメールに連絡ください」というものでした。
馬鹿な僕は、言い値で買ってくれるならば、と喜んでこのメールアドレスに返信してしまったのですが、あとから冷静になって考えると、これって、フィッシング詐欺の一種なのかなと思い始めました。返信もありませんから、たぶんそうかなーと思います。
まあ、この手のメールではパスワードまでは漏れないので、まあフィッシング詐欺というカテゴリには入らないのかもしれませんが、それでも、ちょっといやな気分です。
幸い、住所や電話番号、銀行口座などの個人情報はメールに記載しませんでしたので、漏れたのは、名前とメールアドレスくらいです。
オークションをやっているとメールアドレスが漏れてしまうのはどうしようもないですね。出品している商品が落札されれば、かならず、メールでやり取りすることになるので、落札者にはメールアドレスがわかってしまいます。
落札者が、ネットでいかがわしい商売をしている人ならば、このメールアドレスに対して、スパムメールを送りつけくる可能性大です。
実際に、損してもよいから、安くうって、それで、多くの人のアドレスを入手し、ダイレクトメールを送りつけている人がいるようです。
これは、もう防ぎようがありません。




  
Posted by gushwell at 20:12Comments(0)TrackBack(0)雑談

2004年11月30日

DataGrid


DataGrid(Windows Forms)の使いこなしテクニックが書かれている本ってないでしょうか。DatGridってデフォルトとはちがったスタイルにしようと思うと、とたんに使い方が難しくなります。それと、カラムのスタイルを設定するための同じようなコードがだらだらと続いてしまうのは何とかならないかな。
誰でも使えるようにするには、ファサードを用意してあげる必要があると思います。  
Posted by gushwell at 21:39Comments(0)TrackBack(2)WindowsForms

2004年11月29日

Hashtableのforeach


Hashtable で foreach を使おうと思ったら、やり方が分からない。でもって、調べてみました。2つやり方があるようです。
一つは、DirectoryEntryクラスのインスタンスを取り出す方法。

 Hashtable ht = new Hashtable();
ht.Add("HP","Hewlett-Packard");
ht.Add("MS","Microsoft");
ht.Add("CA","Computer Associates");
foreach ( DictionaryEntry d in ht ) {
listBox1.Items.Add(d.Key + " : " + d.Value);
}

もう一つは、Keys プロパティを使う方法。
 foreach (string name in ht.Keys) {
listBox1.Items.Add(name + " : " + ht[name]);
}

前者の方が僕の好みですね。
  
Posted by gushwell at 21:50Comments(5)TrackBack(0)C#

2004年11月27日

C#プログラミングレッスンNo016発行


予定より2日遅れで、「C#プログラミングレッスン No016」を発行しました。入門編は、もうそろそろ終了の予定です。
あと、基本的文法で書き忘れたのは、エスケープシーケンスくらいでしょうか。
基本データ型、変数、演算子、制御構文といったところは一通り解説したと思うので、そろそろ、入門編を終了し、いよいよオブジェクト指向プログラミングの話題に移れそうです。
ちょっと、悩んでいるには、関数の説明をどうするか、ということ。そもそもC言語で言うところの関数ってC#には無いから、関数の説明は不要という考えも成り立つし、関数という概念を説明しておいてからのほうが、クラスの説明をしやすいかな〜、なんて思ったり。

それと、どこまで、オブジェクト指向について説明したら良いのかについても迷っています。オブジェクトとは何か、オブジェクト指向と何かといった説明をしだすと、C#の話題から離れて行きそうですし、かといって、いきなり、「クラスの書き方は...」と始めるのはあまりにも、不親切のような気もしますし。  
Posted by gushwell at 22:00Comments(0)TrackBack(0)メルマガ

2004年11月25日

続・なぜ「IT産業のトヨタ」は出ないのか


日経のIT Proに掲載されている「続・なぜ「IT産業のトヨタ」は出ないのか」を
興味深く読ませていただきました。
日本人は、「方法論や体系化や標準化は全く苦手です。大局的俯瞰的な見方も苦手です。」と書いて有りますが、まったくその通りだと思いますね。
欧米人は、このあたりがとても得意ですよね。そして、方法論や体系化したものの名前付けも、日本人に比べて優れていると思います。
日本人ならば、あれ、とか、それ、で済んでしまうものに対しても、欧米人は、きちんと名前を付けることに重要さを身にしみて知っているからなのでしょうね。

それとこの記事の最後の話題「宮大工SEに活躍の場を」で書かれている内容は、ほんとうにそうなって欲しいですよね。
プログラマー SE、管理職という一本道のキャリアアップしか無いのは寂しい物です。たぶん、多くの会社でもそうなんでしょうね。
  
Posted by gushwell at 20:11Comments(0)TrackBack(0)news