Mac OS X上でのEmacs 24設定(主にoptionキー周り)

2012年8月8日 23:02

 Mac OS XでATOKを使っていると、通常「¥」キーでは¥が入力される。しかし、Mac OS X(というかUTF-8)では¥と\は違う物として扱われる。そのため、色々と面倒くさいことが発生する。ことえりでは「¥」キーで\を入力する設定があるのだが、ATOKにはない。キーマップを書き換えて対応する、という方法もあるのだが、そういった方法は個人的に嫌いなので、Emacs側の設定で何とかすることにする。

 設定は以下の3点。

(setq mac-option-modifier nil)
(setq mac-command-modifier 'meta)
(global-set-key (kbd "C-M-¥") 'indent-region)

1行目でoptionキーをoptionキーとして認識させ、2行目でcommandキーをmetaキーとして認識させる。最後に、なぜかcontrol+command+option+¥がC-M-\として認識されないので、代わりにC-M-¥にindent-regionを割り当てる。

とりあえず、これでしばらくはしのげるかなと。

64ビット版CentOSで32ビット用プログラムを動かす

2012年7月26日 18:17

 64ビットのLinux環境で32ビットのプログラムを動かそうとする場合、32ビット版のライブラリが不足していて実行できない場合がある。

/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

 と出た場合、次のように32ビット版のlibstdc++をインストールすればOK。

$ sudo yum install libstdc++.i686

CentOS 5を延命させる

2012年4月17日 14:14

 CentOS 5を使っていると、含まれているソフトウェアのバージョンが古かったり、そもぞもリポジトリにそのソフトウェアがなかったりして困ることがある。さっさとCentOS 6にアップデートすればいい話なのだが、面倒くさいとか、そもそもフルバックアップしないと行けないとか色々と大変だったりするので(CentOS 5からCentOS 6へのアップデートは再インストールが推奨されている)、なんとかまだCentOS 5をこのまま使いたい、そんな時に役立つのがEPEL。

 EPELは「Extra Packages for Enterprise Linux」の略で、Fedora Projectが運営しているRed Hat Enterprise Linuxおよびその互換OS向けのパッケージリポジトリ。同種のものにrpmforgeがあるわけですが、Fedora Projectが運営しているということでEPELのほうがやや信頼感が(個人的には)高いということでこちらを使うことに。

 導入方法は簡単。以下を実行するだけ。

$ sudo rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm

 これでgitとかpython26とかをyumでインストールできるようになります。

Windows Azureメモその2:Azure Drive

2012年3月16日 22:17

 Azure Driveを利用するコード例がいくつかWebにあるのだが、「Windows Azure アプリケーション開発入門: 第 5 回 Azure ストレージ & Storage Client API を極める」は間違っているので注意。これで1日潰れた。

 全体としては内容はほぼ正しいのだが、最後に紹介されているドライブを作成するコードは現状(Azure SDK 1.6)では正しく動かない。問題の個所は、PageBlobを作成している部分。CloudDrive

  //PageBlobの作成
   pgAzure.Create(nDriveSize * 1024 * 1024);

Windows Azure 実環境上で CloudDrive の Mount メソッドが Unknown Error を発生させる」で述べられているが、CloudDriveのCreateメソッドを呼ぶ前に利用するBlobを作成していてはダメ。CloudDriveのCreateメソッドではBlobのフォーマット(VHD作成)も行っているため、CloudPageBlobのCreateメソッドでBlobを作成してしまうとマウントできなくなる模様。

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から接続できるかは不明。