TypeMatrix 2030 USB を買ってみた

タイトルの通りです!


こんな感じ。
止せばいいのに無刻印。
f:id:nishikawasasaki:20120920221529j:image


写真右端の縦に2列、キーボードの真ん中に Return や Delete が並ぶという怪しさ……。
でも右手でマウス操作しながらキーボードで操作する時に
いちいち右手をマウスから外してキーボードを触ることに無駄を感じていたので、
真ん中に Return があるのは便利だと思っています。


当然、英字キーボードですので日本語のオンオフキーはそのままではありません。
でも SKK を普段使っていますので問題ないかな?


気になったのは左 Ctrl の小ささと位置。(左下隅からひとつ上)
Shift の下なのはまだ良いとしても、小さい、とても小さい。。


ということで左 Shift と左 Ctrl を入れ替えました。
すると今度は左 Shift が小さいので押しにくい。。
SKK では致命的。


結局、Space を SandS にして Shift 代わりに使うことにしました。
これで快適!


ついでに Mac だと左 Command と 左 Option が逆なので入れ替えました。


どんどん普通の環境から離れていってるなぁ……

cabal update が timeout するので

xmonad と xmobar を入れ直したかったのでふと cabal update してみたら、
何度やっても timeout ……。
ping は飛ばないけれど nslookup で名前引きはできる。


調べてみると IPv4 ならどうとか IPv6 だとどうとか書いてあるブログもあるのだけれど、
cabal のためにどうこう出来ないので代替策を探しました。


"[Haskell-beginners] Hackage down?"- http://goo.gl/BXCGY


これが丁度探してた、 cabal が見にいく URL を変更する方法だったので
下記のように試してみました。

-- remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
remote-repo: hackage.haskell.org:http://hdiff.luite.com/packages/archive

問題なくミラーから取得できました。


解決してみれば単純なことだけれど、
他に書いてる人もいないようですのでメモメモ。

helm で eshell が便利

helm の readme にもありますが
eshell の補完で helm を使うと便利です。
anything にもあったかもしれません。


普段のコマンドとパスの補完は auto-complete でして、
こったコマンドの履歴や一覧から補完候補を選びたい時は helm を使います。


auto-complete を使う部分

;; eshell での補完に auto-complete.el を使う
(require 'pcomplete)
(add-to-list 'ac-modes 'eshell-mode)
(ac-define-source pcomplete
  '((candidates . pcomplete-completions)))
(defun my-ac-eshell-mode ()
  (setq ac-sources
        '(ac-source-pcomplete
          ac-source-filename
          ac-source-files-in-current-dir
          ac-source-words-in-buffer
          ac-source-dictionary)))
(add-hook 'eshell-mode-hook
          (lambda ()
            (my-ac-eshell-mode)
            (define-key eshell-mode-map (kbd "C-i") 'auto-complete)
            (define-key eshell-mode-map [(tab)] 'auto-complete)))


helm を使う部分

;; helm で履歴から入力
(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map
                (kbd "M-p")
                'helm-eshell-history)))
;; helm で補完
(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map
                (kbd "M-n")
                'helm-esh-pcomplete)))


普段の補完は TAB を使って auto-complete 、
途中まで入力して一覧から補完したい時は M-n で helm-esh-pcomplete 、
途中まで入力した内容から履歴をたどりたい時は M-p で helm-eshell-history 。


M-n と M-p は適当感あるので別のキーに変更したい。


eshell の face (色) が気にいらない人はテーマで

;; eshell
(eshell-ls-executable ((t (:background ,"#色" :foreground ,"#色"))))
(eshell-prompt ((t (:background ,"#色" :foreground ,"#色"))))

のように変更すると良いのではないでしょうか。


キャプチャも撮ったけど
なぜかはてなブログにアップロード完了しないのではれませんでした。。

ダイアリーをインポート!

はてなダイアリーからブログに記事をインポートできるようになっていたので、
いろいろ移してみました。
なんとなくこれで良いかも。

ついでに記事のフォントを web フォントにしてみたり。
若干重たいかな?


こちらを利用させていただいています。

M+ OUTLINE FONTS | WEB FONTS
http://mplus-fonts.sourceforge.jp/webfonts/#license

@import url(http://mplus-fonts.sourceforge.jp/webfonts/mplus_webfonts.css);

body
{
font-family: mplus-1p-regular;
}

play 2.0 ではまった話

ちょっといじってみる必要があったので、
play framework 2.0 をさわっていました。
beta の時にもさわっていたのですけど、
json まわりの変更が入る前のやつだったので 2.0 final に更新しました。


するとどうでしょう、アプリが動かなくなりました。。
最初の1回は Web ページを開けるのですが、
それ以降遷移もリロードもできなくなるのです。


play 本体を homebrew でいれていたのでやめてみたり、
ロードしていたプラグインをやめてみたり、
プロジェクトの設定を変えたり作りなおしたり・・・
色々やってるうちに jps と jstac して、なんだか途中で止まっていることを発見。
もしかして java ? ということで Mac の Java 設定を見てみると、
ちょっと前に入れた oracle 製「Java SE 7 Developer Preview」 が優先に・・・。
Apple 製の Java SE6 に変えて、再度 play すると

[UnsupportedClassVersionError: controllers/routes] 

などと出たためプロジェクトごと作りなおすとようやく動きました。


試しに最新の Oracle JDK7u4 Mac OS X Port Developer Preview Release にしてみても動きませんでした。
Oracle JDK7u4 Mac OS X Port Developer Preview Release — Java.net - http://goo.gl/lj6hj
少なくとも Mac では JDK6 で動かすのが安全なようですね。。

rst + Sphinx S6 で勉強会の資料

勉強会で Scala をさらりと、Actor と Akka Actor について話をしてきました。
資料を rst + Sphinx S6 で作成したので楽しかったです。

Scala/Akka Actor
http://nishikawasasaki.github.com/slides/20120317_scala-akka-actor/html/index.html


github pages を使ってみたかったので、
資料の公開ついでに試してみました。

http://nishikawasasaki.github.com/slides/

S6 もちゃんと動きますし良いですね!
Web フォントを使えば HTML でも思ったフォントで動かせて良いですね!

git のエディタを emacs や emacsclient にした状態の git rebase -i

git で歴史を修正したい時があると思います。

古いコミットを書き換える: 歴史修正主義者のための git rebase -i 入門 - 学習する機械、学習しない人間
http://goo.gl/p902q

こんなふうですね

git rebase -i HEAD~1

実行するとエディタでログの編集をはじめるわけですが、
vi / vim ならばそのままいつもどおり修正をすることになります。


ところが、

  • core.editor
  • GIT_EDITOR

などで git のコミットログ編集用エディタを
emacs や emacsclient にしている場合は少し様子が違います。
view-mode 、読み取り専用で開くのです。


f:id:nishikawasasaki:20120315003631p:image
pick を消して edit と書き直したくなるところですが、
pick の上にカーソルを持って行き、
"e" と入力すれば一瞬で edit に変わります。
f:id:nishikawasasaki:20120315003632p:image


キーはだいたい下のとおりです。

r  >>  reword
e  >>  edit
s  >>  squash  
k  >>  delete


望みどおりになれば C-x C-s して保存後にバッファを閉じれば完了です。


なんで読み取り専用で開くんだろうと少し考えてしまったのでメモ・・・。

2012/03/11 現在 Emacs Tramp の設定方法

Emacs の Tramp でリモートのファイルを編集したいと思ったものの、
検索等で色々見つかる設定が古くなっていたりとどうにもうまくいきませんでした。
ですので 2012/03/11 現在での cygwin と Mac でうまく行った方法をメモしておきます。
少し長いです。。

前提

流れ

  1. ssh-agent の設定
  2. ssh-config の設定
  3. Emacs の起動方法
  4. tramp の設定
  5. cygwin との戦い
  6. Solaris との戦い

ポイントは cygwin の場合の Emacs の起動方法にありました。

ssh-agent の設定

Tramp でパスワードを要求されるとそのやり取りを解決できず、
そのまま固まってしまいますので ssh-agent を使ってパスフレーズ入力を解決します。
ノーパスの秘密鍵を作るよりは幾分か良いでしょうし、
セキュリティに問題ないと判断できれば Tramp を使わなくても利用すると便利です。


鍵認証で ssh 接続を試みるとパスフレーズを要求されますが、
1度登録しておくとその手間を省いてくれるものです。
ssh-add コマンドで認証鍵を指定すると
認証鍵のパスフレーズが要求されますので入力すると準備完了です。

% ssh-agent zsh(使っているshell)
% ssh-add hogehoge(秘密鍵を指定)

Enter passphrase for hogehoge : (パスフレーズを求められるので入力)
Identity added: hogehoge (完了)


ターミナルを再起動したりした後は ssh-agent が起動している必要がありますので、
zshbash ログイン時に1度だけ自動的に立ち上がるようにすると便利です。
詳細については
ssh-agentの使い方 - http://goo.gl/CtEQ1
などを参考にしてみてください。


必要に応じて秘密鍵を手動で登録するようにしていますので、上記から少し変えて

# ssh-agent 用
agentPID=`ps gxww|grep "ssh-agent]*$"|awk '{print $1}'`
agentSOCK=`/bin/ls -t /tmp/ssh*/agent*|head -1`
if [ "$agentPID" = "" -o "$agentSOCK" = "" ]; then
    unset SSH_AUTH_SOCK SSH_AGENT_PID
    eval `ssh-agent`
else
    export SSH_AGENT_PID=$agentPID
    export SSH_AUTH_SOCK=$agentSOCK
fi

としています。
これで ssh-agent が起動していなければ起動し、
起動していれば必要な情報を環境にセットします。

ssh-config の設定

必要なければ飛ばしても良いのですが便利なので設定しておきます。
当たり前な人には当たり前なので設定済みだと思いますし、読み飛ばしてください。。


例えば hogehoge.piyo.com に AAA ユーザで hoge 鍵を使ってログインするとします。
通常であれば長い ssh コマンドのオプションを使ってログインしますが、
~/.ssh/config に

Host hoge
     HostName hogehoge.piyo.com
     IdentityFile ~/.ssh/hoge
     User AAA

と書いておくことで

ssh hoge

とするだけでログインできるようになります。


tramp で接続する際にもこの設定で記述を少なくできますので楽ができます。

Emacs の起動方法

Windows で普段は runemacs.exe をダブルクリック実行して起動している人に必要なポイントです。
Emacs を起動する際は、cygwin で PATH を通して
cygwin 上で runemacs を実行して起動するようにしてください。
これによって Emacsssh-agent を利用できるようになります。


Mac の場合は ターミナルなどで ssh-agent を起動しておけば
後から起動した Emacsssh-agent 有効になっているようです。

tramp の設定

なにはともあれ最新版をダウンロードして .emacs.d の下などに配置します。

(add-to-list 'load-path "~/.emacs.d/elisp/tramp-2.2.4/lisp/")
(require 'tramp)

ここでは ホームディレクトリの .emacs.d/elisp 以下に展開しました。


基本的にはこれだけで使えるようになります。
C-x C-f などしてから

Find file or URL: /ssh:AAA@hoge:/

すればOK・・・ですが

cygwin との戦い

昔はcygwin を使っている環境で tramp を使おうとすると上記のままでは失敗していたようです。
これを解決するための様々な情報がネットや本で見つかります。
putty の plink を使う方法などがそうです。
これは cygwin に含まれていた openssh のバージョンが古いために起きる問題を回避する方法でした。
現在は cygwin の ssh で問題なく動作します。


ただし、下記の tramp の設定を追加してください。

(setq-default tramp-default-method "sshx")

これで plink など必要とせず、ssh-config の設定を引き継いで tramp が使えます。
C-x C-f して

Find file or URL: /sshx:AAA@hoge:/

すれば tramp できます。
ssh ではなく sshx とするところに注意してくださいね。


ちなみに Mac でも sshx で動きますので環境による切り分けは不要でした。

Solaris との戦い

さあこれでつながる・・・と tramp を使用していると、
さっきはつながっていたサーバーに

Couldn't find exit status of `test -d "trampしようとしたパス" unset'

とエラーが出て、2度目以降繋がらなくなりました。
なんてこった・・・。


これはSolaris など一部のサーバーで発生しました。
tramp はデフォルトでは .emacs.d の下に tramp ファイルを作成し、
再接続時などの情報を保存するようです。
どうもこれが悪さをして繋がらなくなるようなので、

(setq-default tramp-persistency-file-name nil)

とすることで回避可能です。


これでようやく一通りすっきりと tramp が使えるようになりました。

終わりに

最終的に tramp 自体の設定は

(add-to-list 'load-path "~/.emacs.d/elisp/tramp-2.2.4/lisp/")
(require 'tramp)
(setq-default tramp-default-method "sshx")
(setq-default tramp-persistency-file-name nil)

とすっきりしたものとなっています。
多段用の設定は別にしていますが、
多段の場合も中継サーバーの ssh の config をうまく設定することで便利に接続できるはずです。


古い Tramp や plink の話、Meadow 用の設定など入り交じって訳がわからなくなりつつありますが、
現在は ssh-agent を利用して sshx を指定すれば特に問題なく利用できるようです。
環境に影響を受けやすいため設定も面倒な事が多いですが、
その分便利なことも多いですから試してみる価値はあると思います!!

zsh のプロンプトで顔文字

現実逃避活動の一環として zsh のプロンプトを久しぶりに変更。
直前のコマンドが成功しているかで、
顔文字と色が変わるようにしてみた。
辛さアップ。。

PROMPT='%F{green}%n%f/%m%B%(?.%F{blue}%(!.#. :))%f.%F{red}%(!.#. :()%f)%b '

成功時
f:id:nishikawasasaki:20120308022010p:image

残念、失敗
f:id:nishikawasasaki:20120308022011p:image


ステータスを取得するには

%(?.ステータス0の時.0以外の時)

と書けばいいので、この中で顔文字を変えています。

Mac の Skype のチャット画面表示を変える

テンプレが公式で公開されています。


Skype for Mac competition | Getting started with the competition』- http://goo.gl/YfzKZ


デフォルトで使っているものは

/Applications/Skype.app/Contents/Resources/ChatStyles

にあります。
コピーして拡張子を一度削除すると中身を編集できるようになるので、
html や css などを編集します。


編集が終わったら、削除した拡張子を再度つけてやります。
名前も変更して "hogehoge.SkypeChatStyle" のようにします。
このオリジナルテーマファイルを

~/Library/Application Support/Skype/ChatStyles

に置いて Skype を再起動すると、
Skype の設定 >> チャット >> 形式
に自分の編集した hogehoge が出てきますので選択します。
後は再起動するなりするとテーマが反映されます。


結構自由に編集できるみたいですので、
標準に飽きた人はフォントや色合いなどから編集してみてはいかがでしょうか?