テキストボックスの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との比較
- ボックス化
が、予想したとおり動作する。
SYSとSYSTEMのデフォルトのパスワード
Oracleデータベースを作成する際に、SYSやSYSTEMのパスワードを明示的に指定しないと、
- SYS:CHANGE_ON_INSTALL
- SYSTEM:MANAGER
という、デフォルトのパスワードが設定されるらしい。11gでもこの仕様は変わっていないようだ。
ちなみに、パスワードが大文字か小文字かは、マニュアルからははっきりとしない。実験してみる必要がありそうだ。パスワードが大文字化小文字かは、11gからは非常に重要(11gからはデフォルトでcase-sensitiveなため。というか10g以前ではcase-insensitiveにしかできない)なので、マニュアルに明記されていないのは問題だろう…。
古い時代のOracleを触っている人にとっては極めて常識的な知識なのだと思うが、私は初耳だった。DBCAを使ってデータベースを作成している限り、SYSやSYSTEMには必ずパスワードを明示的に指定することになるから。