2016-10-01から1ヶ月間の記事一覧
table = [] table[index] ||= [] table[index] << name みたいに [] で初期化するようなコードは table = Hash.new { |hash, key| hash[key] = [] } table[index] << name という風に .new に渡すブロック内で値を初期化することができる。
xmodmap でマウスのボタンを入れ替えたんですが、これだけではログイン時に設定が反映されませでんした。 [~/.xinputrc に読みこむ設定を追加する] ~/.xinputrc に以下の設定を追加する必要があります。 if [ -f ~/.xmodmap ];then xmodmap ~/.xmodmap fi こ…
ちょっとした小ネタですが、従来、map() や filter() に渡す文字列式の中では v:val や v:key を使用することが出来ます。 echo map([1, 2, 3], "v:val + v:val") " => [2, 4, 6] echo filter({ "mami" : 1, "mado" : 2, "homu" }, 'v:key =~ ''^m''') " => …
例えば、Ruby の正規表現内でパスを含む際に /^\/path\/to\/hoge.*/ みたいに書くことがあると思います。 この時にパスの / は \/ という風にエスケープして記述する必要があります。 [%r を使う] こういう時に %r を使うと綺麗に書くことが出来ます。 %r{^/…
最近新しいマウスを購入したんですが、サイドに付いてるボタンの配置が以前つかっていたマウスと逆だったので設定を変更しました。 [xmodmap を使って入れ替える] xmodmap を使うのがよさそうだったのでやってみました。 設定は ~/.xmodmap ファイルに記述し…
Vim 8.0 では JSON 形式のデータを扱う機能が追加されました。 [注意] Vim のヘルプを日本語翻訳してるvimdoc-jaですが、まだ最新版の Vim のヘルプに追従しておらず jsondecode()、jsonencode() と表記されていますが、正しくは json_decode() と json_enco…
Vim 8.0 では新しく type() が返す値が v:t_xxx のような定数として追加されました。 v:t_bool Value of Boolean type v:t_channel Value of Channel type v:t_dict Value of Dictionary type v:t_float Value of Float type v:t_func Value of Funcref type…
以前も書いたような気がしますが、#tap で任意の戻り値を返したい場合は break を使用します。 # #tap は通常自身を返す p 10.tap { |myself| myself + 32 } # => 10 # #tap で戻り値を返したい場合は break を使用する p 10.tap { |myself| break myself + …
久々に金が手に入ったのでメインで使用してるデスクトップパソコンを新しくしました。 もちろん自作です。 流石にこの時代に Core2Duo はつらかった。 [構成] 【CPU】Core i7 6700K BOX 【CPUクーラー】虎徹 SCKTT-1000 【メモリ】CMK16GX4M2A2666C16 [DDR4 …
ふと、気になったので試してみました。 [funcref() した後に :delfunction する] function! Test() return "test" endfunction let F = funcref("Test") delfunction Test echo F() " E933: 関数は削除されました: Test " E15: 無効な式です: F() まあ、これ…
『[1,2,16].map(&:to_s(16)) みたいにかきたいよねー』というやつ。 class Symbol def call *args, &block proc { |myself| myself.send self, *args, &block } end end p [1, 2, 16].map(&:to_s.(16)) # => ["1", "2", "10"] #call を定義してこういう風に…
RUby で alias_method した元の名前を取得したい場合 Method#original_name で取得することが出来ます。 class X def homu "homu" end alias_method :mami, :homu alias_method :mado, :mami end x = X.new p x.method(:homu).original_name # => :homu p x.…
rspec に渡すファイル名の末尾に ファイル名:行番号 と指定すればその行番号のテストのみが実行されます。 $ rspec path/to/hoge_spec.rb:42 これで42行目に関連してるテストが実行されます。
rake spec で特定のファイルのテストを実行したい場合、次のようにして SPEC にファイル名を設定して実行します。 $ SPEC=spec/path/to/hoge_spec.rb rake spec
Binding#local_variable_get でローカル変数にアクセスする事が出来ます。 def func a, b add = a + b # このメソッド内のコンテキストを返す binding end context = func 1, 2 # #local_variable_get でコンテキストの変数を取得する p context.local_varia…
Ruby では現在のスコープのコンテキストを bindig オブジェクトとして扱う事が出来ます。 def func a, b add = a + b # このメソッド内のコンテキストを返す binding end p func 1, 2 # => #<Binding:0x00000000c0fe18> [binding オブジェクトと #eval()] bindig の利用方法はいくつか</binding:0x00000000c0fe18>…