WindowsのSSHクライアント【RLogin】でproxy経由でAWSにアクセスする

みなさん、SSHクライアントはなにを使っていますか?
WindowsユーザーだとputtyやTeraTermでしょうか。
私は会社では、タブや画面分割など機能が充実しているPoderosaを利用していました。

最近社内からAWSへアクセスする為の構成が変わり、HTTPプロキシサーバを経由してアクセスすることになったのですが、PoderosaにはHTTPプロキシの設定がありません。

そこで別のクライアントを探してみたところRLoginというクライアントがHTTPプロキシの設定も出来、画面分割も出来るようだったので、早速使ってみることにしました。

今回は、AWSに接続するまでの手順を例としてご紹介します。
※AWSのEC2インスタンスは作成済であるものとします

インストール


ここから対象のファイルをDLし、解凍後exeファイルを実行するだけ

設定

  • 新規接続先の設定

f:id:tenten0213:20130404011344p:plain

  • プロキシの設定 (Proxy Server)

f:id:tenten0213:20130404011535p:plain

  • SSHキーの設定 (SSH Identity Key)

f:id:tenten0213:20130404013830p:plain


これで設定完了です。

他にもフォントや背景色、KeepAliveの間隔など様々な設定が行えます。
自身では背景を少し透過させ、フォントをSource Code Proにしてみました。

f:id:tenten0213:20130404013904j:plain

Tabの切り替えはCtrl+Tabで行えます。
Ctrl+Rightで横分割、Ctrl+Downで縦分割で開けます。
Ctrl+Upで画面の入れ替えも可能です。

あと、なにげに便利なのがSFTPの機能がついている事です。
ちょっとファイルをアップロードしたい時なんかに重宝しそうです。

f:id:tenten0213:20130404014827p:plain


感想

同じ名前のUnixコマンドがあり、ググラビリティが低いです。
設定の豊富さ、拡張性から考えてももっと使われても良い気がします。
動作もそれなりに軽快で拡張性も高いので、興味があればみなさんも使ってみてはいかがでしょうか?

ディレクトリ構造をドキュメント化するのに便利なtreeを入れてみた

brew install tree
  • オプション
usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]]
        [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
        [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
        [--filelimit #] [<directory list>]
  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -i            Don't print indentation lines.
  -q            Print non-printable characters as '?'.
  -N            Print non-printable characters as is.
  -p            Print the protections for each file.
  -u            Displays file owner or UID number.
  -g            Displays file group owner or GID number.
  -s            Print the size in bytes of each file.
  -h            Print the size in a more human readable way.
  -D            Print the date of last modification.
  -F            Appends '/', '=', '*', or '|' as per ls -F.
  -v            Sort files alphanumerically by version.
  -r            Sort files in reverse alphanumeric order.
  -t            Sort files by last modification time.
  -x            Stay on current filesystem only.
  -L level      Descend only level directories deep.
  -A            Print ANSI lines graphic indentation lines.
  -S            Print with ASCII graphics indentation lines.
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  -P pattern    List only those files that match the pattern given.
  -I pattern    Do not list files that match the given pattern.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  -R            Rerun tree when max dir level reached.
  -o file       Output to file instead of stdout.
  --inodes      Print inode number of each file.
  --device      Print device ID number to which each file belongs.
  --noreport    Turn off file/directory count at end of tree listing.
  --nolinks     Turn off hyperlinks in HTML output.
  --dirsfirst   List directories before files.
  --charset X   Use charset X for HTML and indentation line output.
  --filelimit # Do not descend dirs with more than # files in them.

rails のプロジェクトで表示するとこんな感じ。

tree 
.
├── Gemfile
├── Gemfile.lock
├── README.rdoc
├── Rakefile
├── app
│   ├── assets
│   │   ├── images
│   │   │   └── rails.png
│   │   ├── javascripts
│   │   │   └── application.js
│   │   └── stylesheets
│   │       └── application.css
│   ├── controllers
│   │   └── application_controller.rb
│   ├── helpers
│   │   └── application_helper.rb
│   ├── mailers
│   ├── models
│   └── views
│       └── layouts
│           └── application.html.erb
├── config
│   ├── application.rb
│   ├── boot.rb
│   ├── database.yml
│   ├── environment.rb
│   ├── environments
│   │   ├── development.rb
│   │   ├── production.rb
│   │   └── test.rb
│   ├── initializers
│   │   ├── backtrace_silencers.rb
│   │   ├── inflections.rb
│   │   ├── mime_types.rb
│   │   ├── secret_token.rb
│   │   ├── session_store.rb
│   │   └── wrap_parameters.rb
│   ├── locales
│   │   └── en.yml
│   └── routes.rb
├── config.ru
├── db
│   └── seeds.rb
├── doc
│   └── README_FOR_APP
├── lib
│   ├── assets
│   └── tasks
├── log
├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── favicon.ico
│   ├── index.html
│   └── robots.txt
├── script
│   └── rails
├── test
│   ├── fixtures
│   ├── functional
│   ├── integration
│   ├── performance
│   │   └── browsing_test.rb
│   ├── test_helper.rb
│   └── unit
├── tmp
│   └── cache
│       └── assets
└── vendor
    ├── assets
    │   ├── javascripts
    │   └── stylesheets
    └── plugins


日本語が文字化けしたときは

tree -N

で解決

rvmからrbenvに乗り換える

みんなrvmよりrbenvの方がイイヨって言うからrbenvに乗り換えることにした。

rvmのアンインストール


seppukuコマンドでrvmをアンインストールする。
なんか潔くて、乗り換えるのに好きになりそう。
rvm seppuku

次に、rvmに関する設定を.zshrc/.bashrc から削除

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"</pre>

とか

rbenvのインストール

brew install rbenv


ruby-buildのインストール

brew install ruby-build

.zshrcに環境変数を設定

export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"


使い方

  • インストール可能なRubyの一覧を確認する
rbenv install -l
  • インストール
rbenv install 2.0.0-p0
  • インストールしたRubyのバージョン一覧を確認
rbenv versions
  • Rubyのバージョン切り替え
rbenv global 2.0.0-p0
  • 特定ディレクトリでのRubyのバージョン切り替え
rbenv local 2.0.0-p0
  • インストールしたRubyやGemのパスを通す
rbenv rehash

gemとか入れたらいちいちrehashしないといけないみたいなんだけど、それを自動化するgemがあるのでいれる。

gem install rbenv-rehash

あと、"rbenv"って打ちにくいので"re"にaliasを設定しておいた。

alias re=rbenv

参考


Ruby 2.0.0-p0インストール(Mac OS X 10.8.2) #Ruby #bundler - Qiita
rbenvのコマンドメモ

MacBookで外付けキーボードからスリープする方法

最近MacBookAirに外付けのディスプレイとキーボードを繋いで利用している。

せっかくディスプレイを繋いで利用しているのに*1、スリープさせるのに本体の電源ボタン押したり本体を閉じるのが面倒で嫌だった。
WindowsのWin+Lみたいな感じでスリープさせる方法は無いのかと思い、調べてみた。

Macの起動・スリープ・再起動・終了のキーボードショートカットまとめ(27種類) / Inforatiを見てみると、スリープ関連のキーボードショートカットが載っている。

キーボードショートカット 説明
「Control」+「Shift」+「Eject ⏏」 すぐにディスプレイのみをスリープ
「Command」+「Option」+「Eject ⏏」 すぐにスリープ


ただ、MacBookAirにはEjectキーが無いので他のキーで対応する必要がある。
Ejectキー無いなら他のキーに割り当てれば良いよねってことで、KeyRemap4MacBook*2を利用。

KeyRemap4MacBookのMacBookAir(2010,Late) StyleにてF12 to Ejectの項目にチェックする。

f:id:tenten0213:20130223131114j:plain

これで快適にスリープさせることが出来る。

キーボードショートカット 説明
「Control」+「Shift」+「F12」 すぐにディスプレイのみをスリープ
「Command」+「Option」+「F12」 すぐにスリープ

*1:クラムシェルモードじゃなくてデュアルディスプレイ

*2:Mac用じゃないキーボードを利用しているので、もともと使っていましたが

IntelliJ IDEA で 日本語名のテストメソッドを実行する設定

IntelliJ IDEAで日本語名のテストメソッドを実行する際にハマったので、メモを残しておく。

環境

設定

ファイルエンコーディングの設定


いろいろなブログに書いてあるとおり、IntelliJ IDEAのInfo.plistのkey:VMOptions , Stringの最後にファイルエンコーディングの設定を追記する。

  • /Applications/IntelliJ IDEA 12 CE.app/Contents/Info.plist
-Dfile.encoding=utf-8

追記したが、文字化けが治らない

f:id:tenten0213:20130117210844j:plain

JUnit実行時のVMOption設定

他の方法を調べてみたら、JUnit実行時のVMOptionに以下を設定すれば動く模様。

-ea -Dsun.jnu.encoding=UTF-8
  • Run - Edit Configurations... - VMOptions

f:id:tenten0213:20130117212219j:plain

文字化けが解消され、Greenになった! ヨカッタヨカッタ
f:id:tenten0213:20130117212646j:plain

でもわざわざ設定するのメンドイ…

環境変数に追加


とゆうことで、環境変数に上記で指定した設定を追加する。

  • /etc/launchd.conf

※ない場合はファイルを作る。たぶん管理者権限が無いとダメ

setenv JAVA_TOOL_OPTIONS -Dsun.jnu.encoding=UTF-8

追記後、PCを再起動する。

  • 設定の反映を確認
java -h

f:id:tenten0213:20130117215123j:plain

  • JUnit実行時のVMOptionの設定を外して実行

f:id:tenten0213:20130117215305j:plain

ちゃんと文字化けせずに実行できた。

参考


IntelliJ IDEA + Spock で日本語テストメソッド実行時にハマった話 - THE BLUE NOWHERE
IntelliJ IDEA の日本語テストメソッド名の実行で再度ハマった話 - THE BLUE NOWHERE
IntelliJでテストメソッドを日本語で書く - ギークに憧れて

bashでautojumpを使う

zshだとautojumpよりz.shのほうがPythonなしで動いて良いよ | この先生きのこるにはで紹介されているようにz.shを使ってみるのも良さそうだけど、bashで使いたいのでautojumpを使ってみる。

インストール

$ git clone git://github.com/joelthelion/autojump.git

gitから取得後、autojumpのディレクトリに移動し

$ cd autojump

インストール用のshellを実行する。

$ ./install.sh -l

以下の様な実行結果が表示される。

Installating autojump...

Destination:      /home/tenten0213/.autojump/

Binary:           /home/tenten0213/.autojump/bin/
Documentation:    /home/tenten0213/.autojump/share/man/man1/
Icon:             /home/tenten0213/.autojump/share/autojump/
Shell scripts:    /home/tenten0213/.autojump/etc/profile.d/

`./bin/icon.png' -> `/home/tenten0213/.autojump/share/autojump/icon.png'
`./bin/autojump' -> `/home/tenten0213/.autojump/bin/autojump'
`./bin/autojump_argparse.py' -> `/home/tenten0213/.autojump/bin/autojump_argparse.py'
`./docs/autojump.1' -> `/home/tenten0213/.autojump/share/man/man1/autojump.1'
`./bin/autojump.sh' -> `/home/tenten0213/.autojump/etc/profile.d/autojump.sh'
`./bin/autojump.bash' -> `/home/tenten0213/.autojump/etc/profile.d/autojump.bash'
`./bin/autojump.zsh' -> `/home/tenten0213/.autojump/etc/profile.d/autojump.zsh'
`./bin/_j' -> `/home/tenten0213/.autojump/_j'

Please add the line to ~/.bashrc :

[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

You need to run 'source ~/.bashrc' before you can start using autojump. To remove autojump, run './uninstall.sh'

以下の1行を.bashrcに追記しろと書かれているので、追記する。

[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

追記後、bashrcを読み込み直す。

$ source ~/.bashrc

これでインストール完了。

使ってみる


詳細はjoelthelion/autojump · GitHub参照。
とりあえず、あんまりオプションとか使わないで $ j hoge + Tabって感じで使ってる。

$ j hoge

と入力し、Tabを押すと、

$ j '/home/tenten0213/project/hoge' 

といった感じで補完してくれる。

うん、便利。