Windows Azureメモその1

2012年3月7日 22:40

最近Windows Azureを触っているので備忘録的にはまったポイントをメモ(その1)。

SDKのバージョン

Windows AzureはSDKのバージョンアップとともに機能が増えたり仕様が変わっているため、古いバージョンのドキュメントを参照していると現状では仕様が変わっていたりしてハマる。特に1.3ではIIS周りの仕様変更など大きな変更点があったので、1.3未満のドキュメントを参照している場合注意が必要。特にFull IISあたり。

参考:Windows Azure 1.3の新機能の概要 - @IT

ディレクトリ構成

Windows Azureにデプロイした際、アップロードしたファイルがどのドライブに保存されるかは不定のようだ。E:の場合もあればF:の場合もある。WebRoleの場合、これらのドライブの、「¥approot¥」以下と「¥siteroot¥0¥」以下にファイルが展開される。¥approot¥と¥siteroot¥0¥以下には同じものが展開されるが、HTTPサーバーのルートとなるのは¥siteroot¥0¥のほう。

Web配置

Web配置では¥siteroot¥0¥以下が更新され、¥approot¥側は更新されない。

スタートアップタスクとその実行フォルダ

IISの設定を変更したい場合、スタートアップタスクとしてバッチファイルを実行するよう指定して処理するのが定石。スタートアップタスク実行時のカレントディレクトリは明言されていないが、Windows Azure環境では¥approot¥bin¥以下になる模様(エミュレータ上ではまた別のディレクトリになるので注意)。スタートアップタスクとして実行したいファイルのプロパティで「出力ディレクトリにコピー」を「常にコピーする」などに設定すると、そのファイルがこのディレクトリに配置される。サブディレクトリ以下にあるファイルはbin以下にそのサブディレクトリが作成されて配置される。

「ビルドアクション」の設定

ビルドアクションが「なし」のファイルはapprootおよびsiteroot以下に配置されず無視される。必要なファイルは「コンテンツ」に設定しておけばよい。

バッチファイル

Visual Studioでテキストファイルを作成するとBOM付きUTF-8エンコードのファイルができるのだが、これをバッチファイルとして実行しようとするとBOMが認識されずにエラーとなる。

エミュレータと実環境の違い

ディレクトリ配置が異なる。本番環境で¥approot¥bin¥に配置されるディレクトリは別の場所に配置される。

リモートデスクトップ

Azure SDK 1.6以降では発行時のウィザードでロールへのリモートデスクトップ接続の設定を行えるが、ここで「自動」を選択しないと、なぜかリモートデスクトップ接続もWeb配置もできなくなることがある(体験談)。前者はロールの再起動でなぜかできるようになったが、後者はリモートデスクトップが可能になった状態でもなぜかできなかった……。

あと、リモートデスクトップについてはWindows以外のクライアントもあるが、接続にウィザードで作成した証明書が必要なので、発行に用いたWindows環境以外から接続したい場合は証明書関係の設定が必要。ということでMacやLinuxから接続できるかは不明。

Emacsのキーバインディング設定

2012年1月16日 20:06

 Emacsの設定ファイル(.emacsなど)でキーバインディングを設定する場合の作法はググると色々なものが出てくるのだが、最近ではkbd関数を利用するのが一般的なようだ。コントロールキー同時押しや特殊キーに関数を割り当てる場合、一昔前は分かりにくい表記で書いていたが、kbd関数を使うと割と簡潔にキーを指定できる。

 たとえばCtrl+Shift+Insertというキーに「add-anchor」関数を割り当てる場合は下記のようにする。

(global-set-key (kbd "C-S-<insert>") 'add-anchor)

 あと、global-set-key関数を使う以外に、define-key関数を「global-map」引数付きを使う人もいるようだが、こちらについてはどちらも意味的には同じ。たとえば上記の例をdefine-keyを使って書くと、次のようになる。

(define-keyglobal-map (kbd "C-S-<insert>") 'add-anchor)

 「global-map」の代わりに「current-global-map」を使っても、基本的には同じ。Emacsのマニュアル中、キーマップ周りは「Commands for Binding Keys」にあるのでこちらもご参照を。