[ASP.NET] ポストバック時にスクロールバーを保持する(Chrome, Firefox)

基本的に、Page 要素に MaintainScrollPositionOnPostBack="true"と記述すれば良かったのだが、Chrome や Firefox ではこれが効かない。有効にするためにはもうひと工夫しなければならないのだ。
  1. プロジェクトを右クリックして、ASP.NET フォルダの追加。
    App_Browsers フォルダを追加する。
  2. App_Browsers に、新しい項目 (ブラウザ ファイル) を追加。
    BrowserFIle.browser というファイルが追加されるので、以下の記述を追加する。

  
    
      
    
  
  
    
      
    
  

refID="Safari1Plus" というのが Chrome のことである。 これで今までどおり MaintainScrollPositionOnPostBack="true" を追加すれば OK。
Page_Load に this.MaintainScrollPositionOnPostBack = true; を追加するという記述があるサンプルもあるが、ページにタグを追加しても同じ効果のようだ。

[ 参考 ] http://www.codeproject.com/Tips/207917/Maintain-Scroll-Position-Problem-fix-for-Chrome - THE CODE PROJECT

[WIndows] GALAXY 9600GT のファンが止まる

夏に近づくにつれ、PC の発熱が厳しくなってくる。
まぁ、今時デスクトップ PC なんてマニアしかつかっていないだろうがw

PC を起動して、しばらく経つといきなり不安定になって PC が停止する。
停止の仕方も、いきなり画面がブラックアウトしたりして、ブルースクリーンすらでない嫌な止まり方。

Windows がこういった具合に停止するというのはたいていハードウェア周りのトラブルだったりするのだが、今回もよくよく点検してみると、なんとグラフィックボードのファンが動いていなかった。


動いていなかった原因がまたひどい。 ファンに貼ってあるシールが熱ではがれてしまい、ファンがシールを巻き込んで止まっていたのだ。

今回の教訓 ファンにシールが貼ってあるグラフィックボードは買ってはいけない。

[Firefox Beta] 起動しなくなる不具合。

おそらく Beta 版だけの現象だと思うのだが、Firefox が起動しなくなるときがある。具体的にはアイコンをクリックしても無反応になってしまう。こうなるとなんどクリックしてもダメ。

ただ、PCを再起動していちばんはじめに Firefox を起動させようとするとメッセージウィンドウが出ることがある。


更新に失敗しました。
差分更新を適用できませんでした。完全更新をダウンロードしてインストールします。

とりあえずこの画面が出れば差分だろうが完全だろうが起動できるようになる。
アップデートの何かでこけているのだろう。

[Windows 8] Error Code: 0x0000005D


Windows 8 のRelease Preview を VMware Player にインストールしようと思ったら、いきなりダメだった (笑) 。調べてみると、このエラーはプロセッサ関係のエラーらしい。
VMware Player のプロセッサ コア数が 1 になっていたので、いったん仮想マシンを閉じてからプロセッサ コア数を変更。再度インストールを試みたがダメだった。
ちなみに、Core 2 Quad のマシン。確かにもう古いのだが、いくら何でもこれでダメってことはないだろう……。VMware 経由なので、他に原因があるような気がするが、やはり新しい Windows というのは、常にハードウェア要件が高いのだろうかね。

[C#] bit 型を抽出条件にする

SQL Server の bit 型というのは状態保持によく使われるが、これがなかなか面白い。
これはデータとしては数値として扱われる (TRUE = 1, FALSE = 0 ) のだが、 プログラムから抽出上限として使うには bool として扱わなければならない。
SELECT * FROM Hoge WHERE Hoge_Flag = 0
-- 文字列でもいける
SELECT * FROM Hoge WHERE Hoge_Flag = 'FALSE'
-- こんなのでもいけるw
SELECT * FROM Hoge WHERE Hoge_Flag = 'FaLsE'
しかしながら、プログラム内から (例えば LINQ)条件にしようとすると……。
var hogeDb = new HogeDBEntities();
var query = from hoge in hogeDb.Hoge_Flag == 1
   select hoge;
// 演算子 '==' を 'bool' と 'int' 型のオペランドに適用することはできません。
Entity Framework からだと、データベースの型も厳密に定義されているので実行前にこういうエラーがチェックされる。これは素晴らしい。
こういうフラグのようなものは数値型でよく定義されているのだが、設計者の好みによって 0 が無効なのか、-1 が無効なのかバラバラだが、bit で定義するのがいいのかもしれない。

bit (Transact-SQL) - msdn
null も取れるし。

[ADO.NET] 複数のプロジェクトからモデルにアクセスする

指定された名前付き接続は、構成内に見つからないか、EntityClient プロバイダーと併用することを意図していないか、または無効です。
ADO.NET Entity Framework で DB アクセスをする際に、複数のプロジェクトから一つのモデルを参照したいということはよくあるが、この場合は参照元のプロジェクトの App.Config の connectionStrings ノードにも、接続文字列を追加する必要がある。

クラス ライブラリで定義されたモデルを使用する - msdn

[Visual Studio] 型または名前空間名 ´´ は名前空間 ´´ に存在しません。アセンブリ参照が不足しています。

このエラーは、単純に参照設定が正しくされていないものなのだが、正しく参照設定を行ったにも関わらずエラーが解消されずにハマったことがあったのでメモ。実際は、やはり正しく参照設定が行われていなかったのだが(笑)。
参照元のソリューションにクラスライブラリのプロジェクトを追加しようとしたのだが、結論から言うと、.NET Framework のバージョンが合っていなかった。
で、落とし穴だったのが、微妙な違い。

参照元のバージョン: .NET Framework 4 Client Profile
参照先のバージョン: .NET Framework 4

Client Profile というのを調べてみると、
サーバ専用の機能を削除したサブセットで、軽快なインストーラーを作成できます
と、書いてある。
Microsoft .NET Framework 4 基本情報 - .NET Framework デベロッパー センター

とりあえず、バージョンの違いには特に気をつけなければいけないようだ。
昔は単に参照されていないとかそういう簡単な原因だったのだがね。同じバージョンでも違うのがあると別物として扱われるとは。

ちなみに、コンソールアプリケーションを新規作成するとデフォルトが .NET Framework 4 Client Profile になるのでハマったようだ……。

[C#] コンソールをキー入力で一時停止

よくサンプルソースなどであるコンソールアプリケーションは、普通に実行するとそのまま最後まで処理が行われたあとにウィンドウがすぐに閉じて終了してしまう。これでは何も確認できないじゃないか、というのは誰しも通る道 (笑) 。
それを回避するためには、とりあえずユーザーに入力を促すコマンドを入れてあげると良い。
 // キー入力を待つ(止める目的なら、どっちでも良い)
 Console.ReadLine();
 Console.ReadKey();
厳密に言うと、ReadLine() は行の出力。ReadKey() は、入力キーの受け取り(.NET Framework 2.0 より追加)。なので、キー入力を待っているのは ReadKey() の方。
ただ、これだけを入れるとコンソールが止まるだけなので、実際には、
 Console.WriteLine("何かキーを押してください。");
とかやらないと、ウィンドウで何が起こっているのかわかりづらかったりする。