.ppkファイルとか渡されて困ったとき
PuTTY 独自の形式の .ppk ファイルで鍵ペアを渡されて困ったときのためにメモ。
PuTTY に付属している puttygen コマンドで普通の公開鍵・秘密鍵に分離できる。
Debian 系なら putty-tools
パッケージをインストールするだけでいいらしい(未確認)
OSX だと ports 使うか自分でビルドする。
ぼくは自分でビルドした。
wget http://the.earth.li/~sgtatham/putty/latest/putty-0.60.tar.gz
tar zxvf putty-0.60.tar.gz
cd putty-0.60/macosx
make puttygen
で puttygen だけビルドできる。っていうか全体 make はぼくの環境では失敗した。まぁこれさえビルドできればOK。
秘密鍵を取り出す。
./puttygen unko.ppk -O private-openssh -o private_key
公開鍵
./puttygen unko.ppk -O public-openssh -o public_key
OSX でディスプレイが電源切れたことを検知したい
おもむろに Xcode のドキュメントを検索すると CGGetOnlineDisplayList
とかいう関数が見つかったので
#include <CoreFoundation/CoreFoundation.h>
#include <ApplicationServices/ApplicationServices.h>
int main (int argc, const char * argv[]) {
CGDisplayCount displayCount;
CGDirectDisplayID displays[4];
int i;
CGGetOnlineDisplayList(4, displays, &displayCount);
for (i = 0; i < displayCount; ++i) {
CGRect rect = CGDisplayBounds(displays[i]);
printf("%d: %.0fx%.0f ( ", i, rect.size.width, rect.size.height);
if (CGDisplayIsActive(displays[i]))
printf("active ");
if (CGDisplayIsAsleep(displays[i]))
printf("sleep ");
if (CGDisplayIsBuiltin(displays[i]))
printf("builtin ");
if (CGDisplayIsMain(displays[i]))
printf("main ");
if (CGDisplayIsOnline(displays[i]))
printf("online ");
printf(")\n");
}
return 0;
}
とかいうのを書いてみた。これで、
$ ./dispinfo
0: 1280x800 ( active builtin main online )
1: 1024x768 ( active online )
とかいう出力が得られる。
のだけど、ディスプレイの電源(上記の1)を切ってもこのプログラムの出力は全く変わらない。ケーブルを抜くと出力から消える。
ここではケーブルは指したままで、ディスプレイの電源が落ちたことを検知したいという状況なので全然使えない。。
どーしたらいいんだろ?
CarbonEmacsの背後のWindowを切り替える
そろそろ野球のシーズンですね。フルスクリーンEmacsの裏にメディアプレーヤーを置くとなかなか快適ということを発見しました。
しかし、単純に裏に表示しているだけなため、Firefoxを開いたあとEmacsに戻ったりするとEmacsの裏の画面がFirefoxになってしまっていてイラッとします。
そこでこんな elisp で emacs の裏の画面を好きなアプリケーションにすぐに設定できるようにしてみました。
(do-applescript "activate application \"VLC\"
activate application \"Emacs\"")
快適。
ところで、これをもっと汎用的にして、VLC の部分を anything で選択きたら全画面 emacser にはものすごく便利なのかも。
Hiveminder.app
お気に入りのタスク管理ツール Hiveminder をちょっとハックして自分好みにしてみた。
- Fluid でアプリケーション的に使えるように
- ページ内の jGrowl の通知を本物の Growl 使うように変更
- いまやってるタスクのタイムをカウント出来る機能
- でそれ(いまやるべきこと)を10分間隔で Growl 通知する機能
など。すぐに他ごとしてしまう僕のような人には一番最後の機能がなかなか有効なはず。
スクリプトのダウンロード、使い方などはgithubにアップしたのでそっち見てくださいませ。
余談。
そんなに Hiveminder がいいの? と聞かれると返答に困るわけですが、todo.pl からのブレインダンプでのタスク登録 (todo.pl braindump) とか、指定した日付になるまでタスクリストからタスクを隠せる機能 ([hide until next monday]) だとか、タスクにアイデア的に登録したものをやんないよなーってものは永久に隠せたり(隠してるのはいつでも表示させることが出来るので過去のアイデアリストとして使える)とか他にはない気に入ってるところがたくさんあるので使い続けてます。
@obra++ bestpractical++
ってとこですかね!
あと、いつものように、自分の必要な最小限の機能しかつくってないので、興味ある人いらっしゃいましたら是非とも一緒にハックしましょう。
OSXで快適ビットマップフォント生活
OSX の良いところの一つにアンチエイリアスの効いたきれいなフォントがあげられると思います。
ただ、ターミナルやエディタなどでそう言うフォントを使用するとどうしても視認性の問題から文字サイズを大きくする必要があり、1画面あたりの情報量が減ってしまいます。
また単純に僕がビットマップフォントが好きだという理由もあり、ずっと OSX でもビットマップフォントで開発したいなーと思ってました。
しかし、Terminal.app や iTerm できれいに日本語を表示できるビットマップフォントを見つけられず、やむを得ずアンチエイリアスしてました。 Osaka フォントとか、CarbonEmacs だとビットマップ表示で日本語きれいにひょうじできるのにTerminal.app やiTerm だとガタガタになってしまうし。。
で、あきらめてたんですが、モトヤシーダというフォントならいけるよという話を聞いて設定してみたところわりときれいに表示させることが出来ました。
モトヤシーダは
こちらのサイトで販売されているのですが、お試しフリーフォントというところに入っていますのでとりあえず無料で試せます。僕はWin版をダウンロードしてCrossOver Macで自己解凍exeを展開しました。ただのlhaの自己解凍形式のようなのでlhaコマンドでも行けるそうです。
そんなわけで Terminal.app + iTerm から CarbonEmacs + iTerm に移行しました。
僕が愛用している CodingFontTobi というフォントは ttf 版だとなぜか 16pt 設定で 11pt 相当の表示というなぞの状態になっていて、日本語をうまく混在表示させるためにはasciiとそれ以外で違うフォント設定を使えるアプリケーションを使う必要があります。
CarbonEmacsとiTermならそれができるということですね。CodingFontTobi 16pt + モトヤシーダ(EmacsではOsaka) 11pt という設定にしてます。
これでやっと OSX でも満足行く表示になりました。やっぱりこっちのほうがいいですなー。
また、他にもいいビットマップフォントをご存じの方いらっしゃいましたら是非とも教えてください!!
emacs23をつかってみた
昨日のエントリで CarbonEmacs を使えばいいのかもと思ってちょっとためしてみようと思ったのだけど、どうせなら MultiTTY 使いたいなーなどという気持ちが出てきてしまった。
それで emacs23 ベースな CarbonEmacs 的なのがないかと探してみたら、いまの CVS の emacs は普通に Emacs.app を作ることができるみたい。
cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs
とかで co してきて
./configure --with-ns
make
make install
で nextstep ディレクトリに Emacs.app ができている。
CLI で起動したい場合は
Emacs.app/Contents/MacOS/Emacs -nw
でおk。emacsclient は
Emacs.app/Content/MacOS/bin/emacsclient
にある。etags とかもここにある。
とりあえず multitty をためしてみるために Emacs.app と CLI (-nw) と両方立ち上げて
emacsclient -t /path/to/file
としてみたところ、ちゃんとどちらの emacs でも同じファイルを開き、編集内容も共有できた。
これで徐々に GUI な emacs に移行できるかなー。
iTermでもremap.app_term_commandL2optionL
KeyRemap4MacBook に remap.app_term_commandL2optionL
という設定があって、これを使うと Terminal.app でのみ左コマンドキーと左オプションキーを入れ替える左コマンドキーを左オプションキーにすることができる。
これを iTerm でも使いたかったので設定を追加しようと思ってソースを見てたら実はこのオプションは iTerm でも効くようにつくられているのだが、そのアプリケーション名の指定が間違っているだけだということがわかった。
diff --git a/src/core/server/server.cpp b/src/core/server/server.cpp
index d4695fe..40d1715 100644
--- a/src/core/server/server.cpp
+++ b/src/core/server/server.cpp
@@ -206,7 +206,7 @@ KeyRemap4MacBook_server::Server::do_ActiveApplicationInfo(KeyRemap4MacBook_bridg
reply->is_vi = true;
}
if (strcmp(applicationName, "com.apple.Terminal") == 0 ||
- strcmp(applicationName, "iTerm") == 0) {
+ strcmp(applicationName, "net.sourceforge.iTerm") == 0) {
reply->is_terminal = true;
}
if (strcmp(applicationName, "com.vmware.fusion") == 0 ||
としてやるだけで、iTerm でもつかえるようになった。めでたし。
OSXターミナル事情
新MacBookでの
- Terminal.app
- 重さはmacminiで使うのと比べるとかなりましになってる(GPUのおかげ?)
- まぁでも若干重いよ
- 日本語入力中に画面が更新されると入力途中のが消える(これが地味にいたい)
- iTerm
- ATOKでの変換の文節区切りがわからない
- 重い
- 入力ソースをUSにしないとmetaがつかえない
- urxvt (X11)
- 軽い!
- 日本語入力が死ぬ
SKKを使いこなせる人ならurxvtで決まりという感じな気がするが、僕は無理なので Terminal.app がメインになるかなぁ、という感じ。
でも、日本語入力中に画面更新されると入力途中なのが消えちゃうってのがあるのでirssiとかはきつい。ただemacsつかわなければiTermの重さはそんなに気にならないのでemacsはTerminal.appをつかい、irssiはiTermをつかうという両刀で行こうかと思っているところ。
ちなみにLimeChatも試してみたけどやっぱり使いにくいなぁ。irssiサイコウ!
ここまで書いて、CarbonEmacsが使いこなせればiTermだけでいいんじゃないかという気もしているところ。
GrowlのON/OFFをホットキーでできるようにする
人に画面見せてるときなどに、恥ずかしい通知がくるとこまるのでホットキーで Growl 通知の ON/OFF を切り替えたいと思ったのだが、なぜかググっても見つからないので、ごにょごにょしてみた。
tell application "System Events"
set isRunning to (count of (every process whose name is "GrowlHelperApp")) > 0
end tell
if isRunning then
tell application "GrowlHelperApp" to quit
else
tell application "GrowlHelperApp" to launch
tell application "GrowlHelperApp"
set the allNotificationsList to {"Growl Toggler"}
register as application "Growl Toggler" all notifications allNotificationsList default notifications allNotificationsList
notify with name "Growl Toggler" title "Growl started" description "" application name "Growl Toggler"
end tell
end if
Growl を起動状態をトグルする AppleScript。
終了するときは何も言わずに Stop するが、スタートしたときは Growl 通知で Growl started と出るようにした。
これをアプリケーションとして保存して、あとは QuickSilver の Trigger 機能とかでホットキーで起動できるようにすれば完了。
一応これで動くのだが、AppleScript をアプリケーションにすると重いなぁ。。
OSXの.dmgファイルをLinuxでごにょるの法
dmg2img というのがよくできてる。
dmg2img xcode.dmg xcode.img
とすると xcode.img
という HFS+
のイメージファイルにしてくれる。
で、
mount -t hfsplus -o loop xcode.img /mnt
とかでマウントできる。
その中のpkgファイルの中身を取り出すには
xar -xf /mnt/Packages/MacOSX10.5.pkg Payload
mv Payload Payload.gz
gunzip Payload.gz
mkdir dump
cd dump
cat ../Payload | cpio -i -d
とかするとdumpディレクトリ以下にpkgが展開されるという感じ。