2013/07/30

[Google Chrome] アップデートは管理者によって無効になっています。

Chrome は特に意識をしなくても自動的にアップデートされる。
しかし、なんらかの理由でアップデートが無効になっている時や、逆にアップデートを自動でさせたくない場合はレジストリをいじることで設定を変更できる。

\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update
UpdateDefault キー
1 : 自動更新させる
0 : 自動更新しない

セキュリティ上のリスクもあるので、できれば自動更新させたいところだ。

2013/07/29

[SQL Server] WHERE 条件内での CASE 文を使った取得項目の分岐

Transact-SQL (SQL Server) でも、WHERE 条件内で CASE 文を使用できる。単純 CASE 式、検索 CASE 式、いずれもサポートされる。
-- HAGE 列の値によって 'hogehoge' と比較する項目を分岐させる

SELECT *  FROM  HOGE
WHERE
(
 CASE HAGE
   WHEN 1 THEN AAA
   WHEN 2 THEN BBB
   ELSE  CCC
  END
) = 'hogehoge'

他の条件と AND や OR で結合もできる。
なお、括弧はなくても良いが、見通しを良くするという意味で付けたほうが丁寧だろうね。

2013/07/28

[Management Studio] インテリセンスが表示されない場合のキャッシュ初期化

Management Studio 2008 以降では、Visual Studio のそれと同じく、入力候補 (インテリセンス) が表示されるが、これはキャッシュされているらしく、調子が悪い場合はキャッシュをクリアすれば元に戻るようだ。ちなみに、他にも以下のようなショートカットキーがある。

  • メンバの一覧 (Ctrl + J)
    何もないところで入力候補を表示。
  • パラメータヒント (Ctrl + Shift + Space)
    関数等のヒントを表示。
  • クイックヒント (Ctrl + k, Ctrl + I)
    XMLエディタ時のみ使うらしい。よくわからないw
  • 入力候補(Alt + 右)
    パラメータに入力する値の候補を表示。パラメータヒントが、パラメータの機能のヒントであるのに対し、こちらのヒントは具体的な値のヒントとなる。パラメータヒントを出しつつ、入力候補を出すことも可能。実はメンバの一覧のコマンド (Ctrl + J) でも代用できる。Ctrl + Shift + Space, Ctrl + J と押下するとどういったパラメータをセットすればいいのかわかる。
  • ローカルキャッシュの更新 (Ctrl + Shift + R)
    このコマンドを実行しても特になにか反応があるわけではないが、ちゃんと更新されている…はず。

2013/07/27

[VBA] 配列はすでに宣言されています。

コンパイルエラー : 配列はすでに宣言されています
Dim hoge(5) as Integer
ReDim hoge(0 To 10)
上記のような書き方はできない。
なぜなら、配列の拡張を行う ReDim ステートメントは動的配列にしか使えないからだ。
Dim hoge() As Integer
ReDim Preserve hoge(0 To 10)
はじめに配列を宣言しているときにインデックスを決めてしまうと拡張できない。
なお、Preserve オプションを付けることで元の値が保持されたまま配列の拡張を行うことができる。
Preserve オプションは二次元配列等には使えないので注意する。
http://msdn.microsoft.com/ja-jp/library/w8k3cys2.aspx

2013/07/25

[C#] int? 値型にクエッションマークをつけて null を許容。

値型の変数には null を代入できない。しかし、 何らかの理由で null をセットしたい場合に備えて、Nullable という型がある (.Net Framework 2.0 以降)。
 int? i = null;
 bool? b = null;
 string s = null;
型に「?」をつけることで、null を許容するようになる。string などの参照型ではこのような書き方はできないので注意する (そもそも参照型は初めから null を許容する)。
また、? には合体演算子という働きもあり、「??」とつなげることで null の判定を簡単に行える。

 int? i = null;
 int? j = 100;
 i = i ?? j;

  // i は 100 になる。
VB の場合は、変数名に「?」をつけるのではなく、変数名に記号をつけるらしい。

2013/07/15

[Flickr 2013] Shortcut keys

Flickr redesigned.
Press '?' key. You can see keyboard shortcuts.


Contacts list view.

Press J : Scrol to next row.
Press K : Scroll to previous row.

(Row is ignored)
Press Space : Scroll down.
Press Shift + Space : scroll up.

Photos view.

[ Navi ]
Press -> :  Next photo.
Press -< :  Previous photo.
Press > : Move the filmstrip (to right)
Press < : Move the filmstrip (to left)
Press ] : Open the next filmstrip
Press [ : Open the previous filmstrip

[ Action ]
Press F : Add to your favorite.
Press G : Add to a group.
Press E : Add a set.
Press A : Add a gallery.
Press C : Jump to comment field.
Press T : Jump to tag field.
Press P : Jump to person field.

Keyboard shortcuts can manipulate photos quickly.

2013/07/11

[VBA] ブレークポイントで止まらない場合の対処方法

Excel の VBA で、ブレークポイントを設定しているにも関わらずデバッグできなくなることがある。

原因は不明だが、いったん空行を挿入して保存しなおすと直る場合がある。
行数で管理されている何らかのデータが、行数を変更することで修復されるような動きだった。

2013/07/10

[Visual Studio] ビルドエラー時の挙動を設定する。

ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?

ビルドに失敗すると表示されるダイアログボックスだが、今後このダイアログを表示しない。にチェックを入れると、次回以降は選択した挙動となる。
うっかりこれにチェックを入れた場合、以下の方法で再設定できる。

[ツール] - [オプション] - [プロジェクトおよびソリューション] - ビルド / 実行 → 実行時に、ビルドまたは配置のエラーが発生したとき

  • 古いバージョンを起動する (ダイアログで「はい」を選択した場合)
  • 起動しない (ダイアログで「いいえ」を選択した場合)
  • 起動時に確認する (毎回ダイアログボックスが表示される)

2013/07/05

[C#] オブジェクトの型チェック

Object 型の型チェックは様々な方法があるが、is で判定する方法がよくとられる。
object obj = null;
if (obj is string)
{
}
// false
空文字か null かのチェックをするケースもよくするが、うっかりこう書いてしまうと危険だ。
object obj = null;
if (string.IsNullOrEmpty(obj.ToString()))
{ 
 // 例外が発生する。
}
これは null を参照してしまうケース。
ToString() の対象となる変数が null であるため、ToString() メソッドにアクセスできないためだ。

参照型であるなら、as でキャストする方法もある。
これはチェック目的というよりも、とりあえず値を変換したい場合か。
object obj = null;
string s = obj as string;
// s = null
変換できない場合、代入先の変数には null になる。

as は int などの値型には使用できない。
で、TryParse を使おうとすると、TryParse は string 型の引数しか取れないことにぶち当たる。
ToString() などとやってしまうと……例外が発生する可能性がある。ならば Convert なら。Convert ならなんとかしてくれるはずだとこう書く。
object obj = null;
int i;
if (int.TryParse(Convert.ToString(obj), out i))
{
}
Convert は変換できない場合は勝手に空文字にしてくれる。
しかし、何をやりたいのかわからなくなってくるw

結局、型のチェックをするという構造自体まず避けるべきだし、チェックをかけるなら is で。
また、キャストも色々と方法があるが、ToString() で落ちてしまうようなソースにならないよう、はじめにちゃんと考えるべきなのだろう。
Related Posts Plugin for WordPress, Blogger...