Rubyで2つの配列をハッシュに変換するワンライナー
最近、ちょっとRubyを書いていて使った、
2つの配列をそれぞれ対応するキーと値の
ハッシュに変換するときのやりかたをメモ。
hash = Hash[keys.zip vals]
もしくは
hash = Hash[*([keys, vals].transpose.flatten)]
です。
※2011/11/15追記
上の方はkeyesberryさんに教えていただいた方法です
コードもぐっと短くなってとてもすてきですね。
一応、以下に実験結果。
test.rb
#キーと値の配列をそれぞれ定義 keys = %w[ushi tori] vals = %w[beef chicken] #2つの配列をハッシュに変換する hash = Hash[*([keys, vals].transpose.flatten)] # ここは # hash = Hash[keys.zip vals] # とした方が短い!(同じ結果が得られます) #出力してみる p hash
実行してみる
ruby test.rb {"ushi"=>"beef", "tori"=>"chicken"}
こんなかんじでした。
autoconf のインストール
最新版は以下のURLで確認
GNU Project Archives
手順は下記です。
$ wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz $ tar -zxvf autoconf-latest.tar.gz $ cd autoconf-2.68 #ここを適宜最新のバージョンのディレクトリに読み替えてください $ ./configure $ sudo make & make install
これで完了です。
256色対応 gnu-screen 4.1.0 インストール
screenに入ってないときには vim が 256色で動いてるのに、
screen立ち上げると vim の色の設定が急に効かなくなるときは、
もしかして gnu-screen が256色に対応していないのかもしれません。
バージョンを確認してみましょう
$ screen -v Screen version 4.00.03 (FAU) 23-Oct-06
せっかくなので gnu-screen の 4.1.0 を利用してみます。
下記にインストール方法を記載します。
1.) gnu-screen 4.1.0をインストール
※注意 autoconf が version 2.6 未満だった場合は2.6 以上にしてからおこなって下さい!
参考: autoconf のインストール - ひたすら事務
$ git clone git://git.savannah.gnu.org/screen.git $ cd screen/src $ autoconf $ autoheader $ ./configure --enable-colors256 $ sudo make & make install
2.) screenrc の設定
~/.screenrc に下記を追記してください
いらない設定もあるかも・・・
defbce on term xterm-256color shell $SHELL termcapinfo xterm* 'Co#256:pa#32767:AB=\E[48;5;%dm:AF=\E[38;5;%dm:'
3.)色のチェック
ちゃんと256色でてるか確認用スクリプトをつかって確認します。
screen を起動して下記コマンドを実行してください。
$ wget http://www.frexx.de/xterm-256-notes/data/256colors2.pl $ perl 256colors2.pl
色がきれいに出れば成功です!
バックグラウンドで立ち上がってる screen を強制終了させるコマンド
色々弄っているうちにあるscreenに入れなくなってしまったときなどに使ってます。
たとえば、
$ screen -S ruby $ screen -S test
などで screenを2つ立ち上げていて
ruby という名前の screen を強制終了したいとき
$ screen -S ruby -X quit
で終了できます。
一連の流れで確認してみると
$ screen -ls There are screens on: 34806.ruby (Detached) 34046.test (Detached) $ screen -S ruby -X quit $ screen -ls There are screens on: 34046.test (Detached)
という感じになります。
NSDictionaryとNSArrayの高速列挙について
基本的な事を知らなかったでメモ
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", @"value3", @"key3", nil ]; // キーでループする場合 for (id i in [dictionary keyEnumerator]) { // なんか処理 } // 値でループする場合 for (id i in [dictionary objectEnumerator]) { // なんか処理 }
NSDictionryの値も直接ループできるのを知らなかった・・・
キーを取り出してから値を取得してた・・・
CentOS で Git や apt-get を yum で入れる方法
1.) yumのリポジトリファイルを編集
vim /etc/yum.repos.d/CentOS-Base.repo
一番下に下記を追記
[dag] name=Dag RPM Repository for Redhat EL5 baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1 #ここを1にすると常にこのリポジトリを利用するようになる gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
2.) git と apt のインストール
# yum -y install git apt
apt-get を利用するときはこの後に
# apt-get update
としたほうがよいです。
vimでウィンドウサイズを変更する
vimでwindowサイズを頻繁に変える事があったので、簡単な設定を書きました。
下記を .vimrc に貼付ければつかえます。
※ こっちにvimscriptでplugin書いてみました。
よろしければご覧くださればよろこびます。(2011/11/06)
"quick chenge window size "ウィンドウを下に大きくする Ctrl-E + j "上に... Ctrl-E + k "左に... Ctrl-E + h "右に... Ctrl-E + l nnoremap [winsize] <Nop> nmap <C-E> [winsize] nnoremap [winsize]k :resize -3<CR> nnoremap [winsize]j :resize +3<CR> nnoremap [winsize]h :vertical resize +10<CR> nnoremap [winsize]l :vertical resize -10<CR>
他のpluginや、Uniteのpluginにもっと便利なのありそうだけど・・・
何かあったらぜひご紹介ください。