term タグ別の記事一覧

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

 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ビット用プログラムを動かす

 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を延命させる

 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

 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

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

iMac(Early 2009、20インチ)の光学ドライブを交換する

 自宅のメインマシンは20インチiMac(Early 2009)なのだが、2年前くらいから光学ドライブの調子が悪い。このiMacは整備済み製品として購入したもので、HDDとメモリが増量されている。整備済み製品はときどき記載されているスペックよりも上のものが届くことがあってラッキー感があるのだが、1年間の特別保証が切れた直後あたりに調子が悪いことに気付いてしまった。

 現象としては、CDを挿入しても認識されず、ウンウンうなったあとで排出されるというもの。ちょうど手持ちの音楽CDをすべてリッピングしようと思ってたときで、1日に10枚ペースで200枚くらいのCDをリッピングしたのが良くなかったような気がする。しかも、ときどきは認識されるからタチが悪い。認識されても、リッピングされた音源にノイズが載るという現象が出るため実質的に使えない状態。

 有償修理に出すことも考えたのだが、お値段が数万円コースとなるため放置、外付けのドライブを付けてごまかしてたのだが、来年で購入してから3年目になるということもあり、買い換えを視野に入れて交換を行うことにした。

 作業手順はASCII.jpに載っているとおり。iFixitも写真が多くて参考になる。実際に作業してみて感じたコツだが、フレームや液晶の取り外しは本体を寝かせた状態ではなく、立てた状態で作業をしたほうがやりやすい。寝かせると自重で本体がやや歪むためのようだ。

 交換に使用したのは、Sony OptiarcのAD-7640S。元々搭載されているのはAD-5670Sというモデルだが、OEM専用なので入手が難しい。AD-7640SはVintage ComputerでもiMac用に販売されているし、2011年12月現在国内でも入手しやすい。自分は九十九電機で購入。

 スロットイン型のモデルだが、ベゼルがついているので取り外して使用する。また、左側にイジェクトスイッチが付いているが、内蔵で使う場合不要。自分ははさみで切り取ってしまった。単純なスイッチなので動作上は問題ないと思われる。

 さて、換装自体は無難に完了したのだが、どうもうまく動かなかった。ブート直後、丸いインジケータが表示されるまではディスクをセットできるのだが、OSの起動後はディスクを挿入しようとしてもドライブが吸い込んでくれない。OS上からドライブは正しく認識されているのだが。

 再度ばらしたり組み直したりと色々試行錯誤した結果、電源投入時にディスクをセットしておくと、起動後も問題なく動作するということが判明。また、電源投入後で動作しなくなった場合、ディスクをドライブに突っ込んだ状態でスリープ状態から復帰させるとディスクを吸い込み、その後利用できるようになることも分かった。

ちなみに純正のドライブでは、スリープからの復帰時にドライブの音が鳴らないようになっているが、本ドライブでは鳴る。どうもファームウェアの問題のような気がしているのだが、Appleが提供するSuperDriveファームウェア・アップデート3.0は適用できなかった。

ということで問題の解決に向けて依然情報収集中である。

VirtualBoxでGNOME Shellを使う(Fedora 16)

 VirtualBoxでFedora 16のデスクトップを使う場合、デフォルトだとGNOME Shellが利用できない。GNOME Shellの利用にはハードウェアアクセラレーションが必要なためだ。VirtualBoxの場合、Guest Additionをインストールすればハードウェアアクセラレーションが利用可能になり、GNOME Shellが利用可能になる。

VirtualBox Guest Additionのインストール

 基本的な設定はInstall Fedora 16 VirtualBox Guest Additions and Get Working Gnome Shell Inside Virtual Machineという記事にある通り。

1. 仮想マシンの設定の「ディスプレイ」項目で、ビデオメモリを128MBに設定、「3Dアクセラレーションを有効化」にチェックを入れる。
VirtualBoxの設定

VirtualBoxの設定

2. Guest Additionのインストールにはカーネルモジュールのビルドが必要なので、カーネルヘッダーや開発ツールをインストールしておく。
# yum install kernel-devel kernel-headers dkms gcc-c++
3. VirtualBoxの「デバイス」−「Guest Additionsのインストール」を選択してGuest Additionsをマウントする。
4. 下記を実行
# cd /media/VBOXADDITIONS_4.1.6_74713/
# ./VBoxLinuxAdditions.sh
5. SELinuxの設定変更

 インストールされるVirtualBox Guest Addition関連ファイルのSELinuxラベルが不適切なので、変更する。

# cd /opt/VBoxGuestAdditions-4.1.6/lib/
# /sbin/restorecon -v *.so 

 実行後、ls -Zでラベルが「textrel_shlib_t」になっていることを確認する

$ ls -Z
drwxr-xr-x. root root unconfined_u:object_r:usr_t:s0   VBoxGuestAdditions
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLarrayspu.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLcrutil.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLerrorspu.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLfeedbackspu.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLpackspu.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGLpassthroughspu.so
-rwxr-xr-x. root root unconfined_u:object_r:textrel_shlib_t:s0 VBoxOGL.so
6. ログアウトして再ログインする

 以上で作業完了。

VirtualBox上のFedoraでGNOME Shellが動作している

VirtualBox上のFedoraでGNOME Shellが動作している