月別アーカイブ: 2012年1月

[SQL]SQLを整形する

データベースと連携するプログラムを書いていると、SQL文は文字列として扱うことが多い。
そのためSQLを出力させると、1行の文字列になってしまい非常に読みづらくなってしまう。

自動で整形してくれるツールを探してみると、SQL Convertというソフトがあった。

クリップボードにあるSQL分を自動で整形してくれるというソフトである。
プログラムで生成した結果、長く複雑になってしまったSQL文の分析に使えそうだ。

作者のページ:http://www.geocities.jp/rgyxd366/
Vector:SQLConvert
WEB版:SQLConvert(WEB版)

[SQLServer][SQL] Order by で NULLを最後に持ってくる

仕事でMicrosoftのSQLServerを使っているが、このSQLServer、資格で勉強したORACLEのSQLと細かい部分で違っている。

今日知ったのはOrder by句におけるNULLの扱い。
デフォルトではNULLが先頭にくる。ORACLEにはNULLを最後に持ってくるオプションがあったが、SQLServerのOrder by句にはそのようなオプションは無いらしい。

という訳で、Order by句に以下のCase文を加えるのが手っ取り早いようだ。

    CASE WHEN [列名] IS NULL THEN 0 ELSE 1 END DESC

使うとすれば、こんな感じ。

 SELECT
     *
 FROM
     SYOHIN
 ORDER BY
     CASE WHEN PRICE IS NULL THEN 0 ELSE 1 END DESC
    ,PRICE

こうすれば、PRICEという列の値を昇順でかつ、NULLを最後に並べることが出来る。

Visual Studio2008のキーボードショートカット

今の仕事の開発はVB.NETがほとんどなので、VisualStudio2008を使うことが多い。
デバッグの時にツールバーにあるコメントアウトのボタンを使うことが多いので、キーボードショートカットが無いかを調べてみた。
マイクロソフトの公式ページでキーボードショットカットの一覧があったので使いそうなものをメモしておく。


コメント化、コメント解除:Ctrl + K, Ctrl + C および Ctrl + K, Ctrl + U


現在の領域の折りたたみ:Ctrl + M, Ctrl + M


行の切り取り:Ctrl + Y


定義へ移動:F12 または Shift + F2




こんなところでしょうか。
一気には覚えられないしね。

肝心のコメント化ショートカットは二つの組み合わせなので、複数行とかをコメントアウトする時じゃないなら、普通に ‘ をうつ方が早いかも。

定義へ移動はよく使うから覚えたほうがいいかも。
それにしても、Microsoft公式のサポートページは文字ばかりで使いにくい。

参考:http://msdn.microsoft.com/ja-jp/vstudio/dd183139
VB.NET基礎学習Bible―270例題で学ぶプログラミングの散歩道

[Excel][VBA]2つのシートを比較して違うセルに色を付ける

仕事でサイズの大きな複数ののCSVファイルを比較することがよくある。
エクセルに開いてマクロで結果を出すのが効率的なので、2つのシートを比較するマクロをメモしておく。

Sub Macro()
'
' 2つのシートの同じ位置のセルの値を比較し、
' 等しくなければそのセルを赤で塗りつぶす。

'
  Dim RETSU_S, RETSU_E, GYOU_S, GYOU_E As Long
  RETSU_S = 1 '列をAから
  RETSU_E = 10 '列をJまで
  GYOU_S = 2 '行を2から
  GYOU_E = 101 '行を101まで

  Dim s1, s2 As Worksheet 'Worksheetsオブジェクト用
  Set s1 = Worksheets("Sheet1") '比較元シート名
  Set s2 = Worksheets("Sheet2") '比較先シート名

  Dim retsu, gyou As Long 'この変数で列と行を指定する

  For gyou = GYOU_S To GYOU_E '開始行から終了行まで
    For retsu = RETSU_S To RETSU_E '開始列から終了列まで
      If s1.Cells(gyou, retsu).Value <> s2.Cells(gyou, retsu).Value Then 
	  '同じ位置のセルの値が等しくなければ、そのセルを赤で塗りつぶす。
        s1.Cells(gyou, retsu).Interior.Color = RGB(255, 0, 0)
		s2.Cells(gyou, retsu).Interior.Color = RGB(255, 0, 0)
      End If
    Next
  Next

End Sub

比較する内容や、セルの色を変えることで応用できると思う。

MAMPでMySQLが起動しない時の対処法

今更ながらMAMPをインストールしてみた。
設定いじってるとMySQLのサーバーが起動しなくなった。
そのときの対処法をメモ。

ターミナルから以下のコマンドを実行。

$ killall -9 mysqld

これでMAMPを再起動すると、MySQLもちゃんと起動するようになった。

-9オプションは強制終了らしい。

Basic認証の設定メモ

毎度調べないとできないし、Ubuntuは少し違うようなのでメモ。

.htpasswdファイルの作成

まずは.htpasswdファイルの作成

$ sudo htpasswd -c /etc/apache2/mods-available/.htpasswd hoge

新しくファイルを作ったり、上書きする場合には -c オプションが必要になるみたい。
-c をつけなければユーザを追加するみたい。

apacheの設定

apacheの設定ファイルを編集

$ sudo vi /etc/apache2/site-available/default

以下の内容を追記

    <Directory "/var/www/">    #BASIC認証をかけるフォルダを指定
        AuthType BASIC
        AuthName "Type ID and Pass..."
        AuthUserFile /etc/apache2/mods-available/.htpasswd   #htpasswdファイルの場所を指定
        AuthGroupFile /dev/null
        require valid-user
    </Directory>

その後apacheの再起動

$ sudo /etc/init.d/apache2 restart

明けましておめでとうございます。

明けましておめでとうございます。
2011年は就職し、3ヶ月の研修を経て7月から本格的に仕事が始まり、
あっという間の6ヶ月でした。

2011年は結局ブログ放ったらかしで、ほとんど更新しませんでした。
(そもそもサーバー落としっぱなしだった。)
2012年の目標はちゃんと作業メモとして、ブログを更新していくことにします。
今年もよろしくお願いします。