_J Blog

学んだ事のまとめやメモなどが中心です

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にもっと便利なのありそうだけど・・・
何かあったらぜひご紹介ください。