2010年11月04日

Silverlightで、ネットワークアダプタの有効/無効の切り替えを検知する方法

ネットワークアダプタの有効/無効をリアルタイムに検知する方法です。
http://codezine.jp/article/detail/4702?p=3
posted by キヨ at 22:08| Comment(0) | TrackBack(0) | .NET技術

2010年10月13日

RFC非準拠のメールアドレスの扱い

.NET4では、RFCに準拠しないメールアドレス(ピリオドが連続しているメールアドレスなど)が扱えるようになっています。
対象は、MailAddressクラスです。
.NET 3.5までは、MailAddressクラスにRFCに準拠しないアドレスを指定すると例外が出ましたが、.NET4では例外が出ることなく扱え、メール送信まで行うことができるようです。
http://msdn.microsoft.com/ja-jp/library/system.net.mail.mailaddress.aspx
posted by キヨ at 21:43| Comment(0) | TrackBack(0) | .NET技術

2010年09月30日

現在実行中のメソッド名と、クラス名を取得する方法

MethodBaseクラスのGetCurrentMethodメソッドを呼び出すことで、現在実行中のメソッド名を取得することができます。
http://msdn.microsoft.com/ja-jp/library/system.reflection.methodbase.getcurrentmethod.aspx

戻り値はMethodBaseクラスであるため、さらに以下のコードで、どのクラスのどのメソッドを実行中かも取得できます。
MethodBase.GetCurrentMethod().DeclaringType.FullName;

これを応用すれば、実行中のメソッド名などを容易にログに記録できます。
ソース中にメソッド名をべた書きしていると、メソッド名のリファクタリングを行ったときにも容易に対応できます。
posted by キヨ at 21:34| Comment(0) | TrackBack(0) | .NET技術

2010年09月19日

EntityFrameworkでSQL関数にマッピングされるCLRのメソッド

EntityFrameworkでSQL関数にマッピングされるCLRのメソッドの一覧が、下記にまとめられています。
これで、EntityFrameworkを使ったクエリ式に書けるメソッドを把握することができます。
http://msdn.microsoft.com/ja-jp/library/bb738681.aspx
posted by キヨ at 14:29| Comment(0) | TrackBack(0) | .NET技術

2010年09月01日

ASP.NETでボタンの2度押しを防止する方法

ASP.NETでは、ボタンの2度押しによって本来は1回だけ行いたい処理が、複数回サーバーで実行されてしまう問題が知られています。
ショッピングサイトで、購入ボタンを複数回クリックするなど、本来1回しか行われない処理が複数回実行されてしまう場合があります。

これを簡易的に回避する方法があります。

ボタンコントロールのOnClientClickプロパティに、以下のようにJavaScriptコードを設定します。


これにより、2回目以降のボタンクリックでは、ポストバックが発生しないようになります。

この方法では、ボタン一つ一つに対してOnClientClickプロパティの設定が必要になりますが、画面上の全てのボタンで2度押しを防止させたい場合には、下記ページのコードが参考になります。
http://d.hatena.ne.jp/itaosan/20061225/1167025092

最後に・・・ここで紹介した方法は、クライアント側での簡易的な回避方法にすぎません。
JavaScriptをOFFにされた場合や、直接HTTP通信を送り込まれた場合などの対応には、サーバー側での本格的な対策が必要です。
posted by キヨ at 21:35| Comment(0) | TrackBack(0) | .NET技術

2010年08月27日

UnicodeとシフトJISとで、文字の比較順序が異なる

二つの文字を、UnicodeとシフトJISとでそれぞれ文字コード順で比較したときに、結果は一般的に同じとは限りません。
例えば、Unicodeで比較したときあれば"本">"部"ですが、シフトJISで比較した場合は"本"<"部"となります。

逆に、文字コード順にソートされていることが分かっているが、どの文字コードでソートしているかが分からないとき、「本」「部」の2文字で比較すれば判断することが可能になります。
名づけて、「本部作戦」とでも呼ぶのがいいでしょうかね。
posted by キヨ at 22:11| Comment(0) | TrackBack(0) | .NET技術

2010年08月23日

.NET4で簡単にマルチスレッド処理を実現する

.NET4では、System.Threading.Tasks名前空間にあるParallel.Invokeメソッドを使うことで、複数のメソッドを簡単にマルチスレッドで実行することができる。
ただし制限として、引数なし、戻り値voidのメソッドに限られる点に注意。

【参考】http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_02/csharp4_02_01.html

このページでは、CPUに存在するコア数を超えてマルチスレッド処理を行った場合、逆にパフォーマンスが下がることがあることも指摘している。これも合わせて参考になる。


さらに、.NETで稼動コンピュータのCPUコア数を知る方法もあるようです。
【参考】http://gurizuri0505.halfmoon.jp/20080806/2423
【参考】http://social.msdn.microsoft.com/Forums/ja-JP/netfxgeneralja/thread/eeed7149-6a36-4c64-a41f-5d93600e821a

これを併用すれば、搭載されているCPUコア数を元に最適なスレッド数で処理を実現するコードも書けそうです。
posted by キヨ at 21:34| Comment(0) | TrackBack(0) | .NET技術

2010年08月17日

ストリームの内容を別のストリームにコピーする

あるストリームから読み出したデータを、別のストリームに書き込む処理が、.NET4から1つのメソッドで簡単に行えるようになりました。
StreamクラスのCopyToメソッドを使えばよいとのことです。

私はストリーム間のデータ転送処理を書くことも多いので、この方法でちょっとは楽になりそうです。

【参考】ストリームを簡単にコピーするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/1047streamcopyto/streamcopyto.html
posted by キヨ at 21:49| Comment(0) | TrackBack(0) | .NET技術