2010-01-01から1年間の記事一覧

あいまいなEnumerable#include?

module Enumerable def like?(val, op=:===) any? do |i| i.__send__(op, val) end end end pattern = [/\.$/, '.git'] pattern.include?('.') # -> false pattern.like?('.') # -> true コード例がすべて。Enumerable#include?はOb…

ruby 1.8.7で1.9のBasicObjectを再現したみたいとおもって、次のようなコードを書いて実行した。 Prototype = Object.clone p Prototype.instance_methods # -> ["inspect", "tap", "clone", ...] BASIC_METHODS = %w(== equal? ! != instance_eval instance…

Windowsでatig.rbをうごかす

Windows XP SP3 Ruby 1.8.7 p249 i286-mswin32 git 1.6.4.msysgit.0 こういう環境でatig.rbを動かすまでのメモ。 atig.rbを入れる Git Bashに入る。 $ git clone git://github.com/mzp/atig.git atig $ cd atig $ ruby atig.rb --debugいろいろ怒られる。 Ru…

Vimperatorのプラグイン管理について

RubyGemsやCPANのようなプラグイン管理システムがほしい 検索、インストール、依存性解決 (あまり必要ないかも)、削除、更新、などをコマンドで実現したい 主なプラグインソースはCodeReposとVimperatorのリポジトリ Vimperatorのプラグインで実現したいので…

オリジナルと同じインデックスに同じ要素が現れないソート

unsorted = ('a'..'z').to_a.sort randomized = unsorted.sort_by {|i| (pos = rand(unsorted.size - 1)) == unsorted.index(i) ? pos + 1 : pos } unsorted.zip(randomized).all? {|(i, j)| i == j } # -> false 小文字のアルファベットが…

長さの単位を扱う

class Length YARD = { :barleycorn => ((1.0 / 3) / 12) / 3, :in => (1.0 / 3) / 12, :ft => 1.0 / 3, :yard => 1.0, :pole => 5.5, :chain => 5.5 * 4, :furlong => 5.5 * 4 * 10, :ml => 5.5 * 4 * 10 * 8, :league => 5.5 * 4 * 10 * 8 * 3, } METRIC =…

これから技術系の話題はこっちのダイアリで書くことにした。