atsukanrockのブログ

Microsoft系技術を中心にぼちぼち更新します

問題だらけのshowModalDialog

はじめに

ブラウザ上でのJavaScriptに、showModalDialogというメソッドがある。MDCのリファレンス(MDC)の説明*1を引用すると、

指定された HTML 文書を含む モーダルダイアログボックスを生成し、表示します。

という機能を持つメソッドだ。しかしながらこのメソッド、私が今回経験したが、問題山積だ。結論から言うと、使うべきでない。

本エントリでは、私が今回発見したshowModalDialogの問題点を列挙し、このメソッドが必要になりそうな場合の代替案を示す。

*1:Geckoエンジン(Firefoxなどが使用)の仕様

続きを読む

.NETの正規表現は国際化対応(?)している

はじめに

.NETの正規表現MSDN]の正規表現が、国際化対応か何か良く分からないが、私にとっては少し意外な動作をすることを発見した。その動作を記録し、私なりのルールを示す。

なお、以降の記述では、正規表現のパターンを示す場合、/<パターン>/のように記述する。

続きを読む

テキストボックスのonchangeイベントを信用するべからず

はじめに

JavaScriptで、テキストボックスのonchangeイベントを信用してはならない。本エントリでは、今回私が経験した、期待とは異なる動作を紹介し、対処方法を提案する。

続きを読む

LinqのWhereでの列挙中に、列挙を中断できる

IEnumerableを返すためにyield returnを使うコードを、最近になって初めて実践的に使った。するとあることに気付いた。次のコード、yieldに慣れていないとどう動くか予想しづらいのではないか。

int count = 0;
var array = new object[100];
foreach (var obj in array.Where((o) =>
{
    count++;
    return true;
}))
{
    Console.WriteLine(count);
    if (count >= 10)
    {
        break;
    }
}
続きを読む

ASP.NETで「ログイン成功後に新しいセッションを開始」は可能なんだろうか?

はじめに

IPAが、『安全なウェブサイトの作り方』という、Webサイトのセキュリティに関するガイドブックを出している。このPDFの21ページに、「ログイン成功後に、新しくセッションを開始するようにする」という対策がある。この解説の内容は納得できるものだ。しかし、ASP.NETで、うまくこれを実装する方法はあるのだろうか?

続きを読む

Nullableはまあまあ賢い

はじめに

System.Nullable<T>は、まあまあ賢い。まあまあ賢いとはどういうことかというと、予想したとおり動作してくれる。具体的には、

  • nullとの比較
  • ボックス化

が、予想したとおり動作する。

続きを読む

0.00001.ToString()は"1E-05"

標記のとおり、

  • System.Single(C#ではfloat)
  • System.Double(C#ではdouble)

の、ToString()メソッドの戻り値は、値によっては指数表記となる。

ドキュメントにも明記されているのだが、その説明は非常にわかりづらい。おそらく、固定小数点表記と指数表記で、戻り値の文字数がより少なくなる方の表記となるようだ。