それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rubyでファイルから固有値(ハッシュ)を求める方法。

ファイルの固有値を求めて管理をしておけばe文書法にも対応できるって聞きました。

require 'digest/md5'
p Digest::MD5.hexdigest(File.open('ruby-1.8.5.tar.gz','rb').read)

ファイルサイズが大きすぎるときは

class Digest::Base
   def self.open(path)
    obj = new

    File.open(path, 'rb') {|f|
      buf = ""
      while f.read(256, buf)
        obj << buf
      end
    }
    obj
  end
end

p Digest::MD5.open("ruby-1.8.5.tar.gz").hexdigest

# => "3fbb02294a8ca33d4684055adba5ed6f"

にするとイイらしい。

ファイル同期をしているが、ファイル名を適当に変更してしまったので、ファイル名で同期できなくなったので、ハッシュ値で同期することにした。JPEG1000ファイルくらいなら5分程度で行けた。ネットワーク越しだと重かった。

やっぱり、ファイルを全部読み込むのは重い処理ですよね。