魚の肴

調べたことを書いていきます。

[Ruby] Rubyお勉強2

  • irb の拡張 utility_belt 続き
  • メソッドの名前

collect と map は同じ機能らしい。。
なんで一つの機能に幾つも機能があるんだ。
このへんは思想をちゃんと理解したほうがよさそう。

  • Array#inject について

ブロック内の繰り返し処理に対して、状態を保持できるような動き
ブロック内で変数を扱えるので影響も少なく便利?

# aの変数は値をブロック内で継続して保持する
# bの変数はリストから繰り返し渡ってくる

# a = 1 で初期化
# b = 2, 3, 4 の順で繰り返し
x = [1, 2, 3, 4].inject {|a, b| a + b}
p x

# 初期値を別にしたい
# a = 10 で初期化
# b = 1, 2, 3, 4 の順で繰り返し
y = [1, 2, 3, 4].inject(10) {|a, b| a + b}
p y
  • シンボルについて

初回に一回だけ生成される文字列
文字列の比較処理のコストが落ちる
動的に生成できるし、これはいろいろ使えそう。

    • 静的な生成方法
%s|shinbolname|
:shinbolname
    • 静的な生成方法
douteki = "doutekinamoji"
douteki.intern
    • symbol の使い道
test = "hello"
methodName = :split

if test.respond_to? methodName
    puts "true"
end
  • alias

なんで同じ機能で違う名前があるのか不思議でしらべているうちに alias という機能を学習
これで、同じ関数をエイリアスかけて使用できる。
また、関数の機能が変更になったときでもこんなことができるみたい

#過去の処理内容
def hoge
    puts "hello"
end

#過去の関数にoldをつける
alias old_hoge hoge

#新しい処理に書き換え
def hoge
    puts "new hoge"
    old_hoge
    puts "new hoge"
end

hoge
old_hoge

Rubyのお勉強

Rubyなんか面白そうなので、ちゃんと勉強。
ということで、Rubyのお勉強で気になったところをメモがわりに記録

  • 変数

! 変数名の頭文字が大文字なら定数になるらしい

@@klassname : クラス変数
@instance_var : インスタンス変数

  • 組み込み系

http://www.ruby-lang.org/ja/old-man/html/_C1C8A4DFB9FEA4DFCAD1BFF4.html
ここが大変参考になりました。
こまったらみたりいな。

  • 多重代入

hoge, fuga = "atai1", "atai2"

おもしろいやつ

.. : 範囲演算子(境界含む)
... : 範囲演算子(境界除外)

* 0 以上 最長一致
*? 0 以上 最短一致

+ 0 以上 最長一致
+? 0 以上 最短一致

  • IF文とか書き方(忘れやすいのでメモ
if a > b
    p "a ha okkii"
end
if b > c
    p "b ha okkii"
elsif c < d
    p "c ha chissai"
end
  • case文とか書き方(忘れやすいのでメモ

便利かも。

a = 10
case a

when 1..10
puts "1-10 no aida"
when 11..20
puts "11-20 no aida"
else
puts "other"
end

どうやらcaseを評価するにはオブジェクトに === 演算子の定義が必要っぽい
これは、勉強しとこう。

  • 繰り返しとか書き方(忘れやすいのでメモ
x = 1

while x < 10
    p x
    x += 1
end
  • クロージャとか使うとおもしろい動きできそう。
    • クロージャ例
def test_closure
  c = 0
  f = lambda {|n| c += n }
  return f
end
t = test_closure
t.call(2)
t.call(3)
t.call(4)
t.call(1)

irb の拡張は wirble か utilty belt を使う
utilty belt はwirbleの拡張らしい

gem install utility_belt
gem install wirble

よいカラースキームを知った

いつもターミナルやエディタのカラースキームに困るのだけど、アプリ間では統一するのはめんどくさくてできなかった。

たまたまvimで見かけたカラースキームを読むといろんなアプリで使用できるように設定がまとめられている!!
これはいいなぁ。

Solarized - Ethan Schoonover

Vim, Emacs, IntelliJ IDEA, NetBeans ... etc
OSX, Putty

など対応アプリがいっぱい。

今度からこれにしよう。

設定は以下.

vimの場合

.vimrc

Bundle 'altercation/vim-colors-solarized'
syntax enable
set background=dark
colorscheme solarized

OS X のターミナルの場合

1. ダウンロード
http://ethanschoonover.com/solarized

2. osx-terminal.app-colors-solarized フォルダを開く

3. olarized Dark ansi.terminal をダブルクリック

あとはデフォルトに指定

EverNoteをvimで書き込む

普段あまりEvernoteは使わないのだが、勉強会などに行った時などはメモをMacのローカルにとると共有がめんどくさいので、Evernoteを今後は使おうと思う。

vimのプラグインにEvernoteないかなと思っていると良さそうなプラグインがでてきました。
アカウントの設定など、あまり検索に引っかからなかったので備忘録。

.vimrc に Vundle 登録
.vimrc で Evernoteのアカウントを設定

以下を設定

Bundle 'kakkyz81/evervim'
let g:evervim_username = 'Account'
let g:evervim_password = '*****'
let g:evervim_workdir = '~/.evervim'

:EvervimCreateNote でメモ開始

追記

どうもEvervimSetupを実行するとg:evervim_workdir配下にAccount.txtが作成されるみたい。
グローバル変数とどっちがいいかな...

macports で Vim インストール

macportsvim をデフォルトでインストールするとpythonrubyで作成されているプラグインが動作しない。
port install の時にコンパイルオプションを与えることでpython,rubyのインターフェースを追加することができる。
以下、手順。

% port variants vim
% sudo port install vim +big +python27 +ruby

オプション +big は何か?

コンパイルオプションのセット。tiny, small, normal, big, huge と用意されている。
macports では、tiny,normal,bigが選択できるらしい。

どんなセットなのか知りたい場合は以下のリンクが参考になる。


0Sites.net

ujihisa.vim#2 の参加記録

概要

  • プログラム

http://vim-jp.org/ujihisa.vim-2/

  • 内容

https://gist.github.com/1379903
また、近日中(2011/11/23現在)に http://vim-users.jp リンクされるそうです。

せっかく参加させていただいたので、感想を残します。

1.Vimへの熱い気持ち

会場はVimへの熱い気持ちと愛で満ちていました。
Vim Level をもっと上げていきたいと強く感じました。
歌もとても感動的でした。

2.vim-users.jp はこれから成長していく

VimのプラグインによりVimは今でも十分多機能。
しかし、いずれVim本体のメンテナンスに限界を迎えることが危惧されています。
来るべき新生Vim拡張機能の開発・運用の準備のためにvim-users.jpはコミュニティ強化をすすめていくというのが今後のVimの流れかなと思いました

3.プラグインがすごい

Vim script だけでいろいろできる。自分もこれからもっと使いこなしたいなぁ。やはり「Vimテクニックバイブル」欲しいなぁ。

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vimテクニックバイブル ?作業効率をカイゼンする150の技

とりあえず知らなかったプラグインや機能はいれとこう。
1.相対行番号表示
2.Unite.vimのプラグイン各種(unite-outlineよさげ!)
3.vim-pep8

非常に有意義な時間でした。
参加者の方ともお話ができて、また一つ勉強になりました。

やりたいことを列挙する

何度かやりたいことを書いたけど、どれも実現できていない。。。
でも、あっ、やりたいなぁと思ったことを書いてどれが一番やりたいのか考えるための種にしよう。

  1. プログラミングの勉強
  2. Python の勉強
    • 自分の第一言語にする
    • python 3.2にそろそろ手を出す
    • 仮想環境の構築についてまとめる
    • setuptools.py を使えるようにする
  3. Scala の勉強
    • ワンタイムスクリプトでいいので作る
  4. Ruby の勉強
    • Ruby Association Silver を取る
    • Ruby on Rails を使えるようにする
    • Ruby Rspec を使えるようにする
    • Terma を使えるようにする
  5. 英語の勉強
    • 中学生/高校生レベルの文法を理解する
    • ちゃんと読めるようになる
    • 語彙を増やす
  6. IPv6 の勉強
    • IPv6 周りの知識を学ぶ
  7. アプリを作る
    • Django, RoRを理解する
    • プロトタイプ作る
  8. 手帳カバーを革で作る
    • 手帳買う
    • 型を取る