아래 코드에서 파일에 대한 MD5SUM 을 구하기 위해서 주석 처리한 부분을 대신 사용할 수 도 있다. 인터넷에서 찾아보면 이렇게 되어 있는 경우가 많은데, 이렇게 하면 메모리를 많이 잡아먹는 문제가 발생한다. 반드시 Digest::MD5.file().hexdigest 를 이용해야만 적은 메모리를 사용하면서 원활하게 동작되니 주의하기 바란다.

# -*- coding: cp949 -*-
require 'find'
require 'digest/md5'
 
file_list = Array.new
Find.find("C:\\") do |path|
  if File.file?(path) and File.size(path) > 10_000_000
    # digest = Digest::MD5.hexdigest(File.read(path))
    # --> 위와 같이 해도 되지만, 메모리를 많이 잡아먹는다.
    digest = Digest::MD5.file(path).hexdigest
    file_list << digest+"|"+path
  end
end
 
distinct_list = Hash.new(0)
file_list.each do |val|
  (md5, file) = val.split(/\|/)
  distinct_list[md5] += 1
end
 
distinct_list.each do |md5, count|
  if count >= 2
    print "\n["+md5+"]\n"
    file_list.each do |val|
      (md5_2, file) = val.split(/\|/)
      if md5 == md5_2
        print file+"\n"
      end
    end
  end
end
  • 참조
    - http://rvm.beginrescueend.com/ : Ruby Version Manager (RVM)
    - Unix 계열의 OS에서는 RVM 으로 다양한 버전의 Ruby 를 설치/관리할 수 있다.
    - 소스 컴파일을 하기 때문에 설치가 느리긴 하지만 다양한 OS에서 일관된 설치/관리를 제공하므로 효과적이다.
    - http://railstutorial.org/ruby-on-rails-tutorial-book : Ruby on Rails Tutorial
  • 필요한 패키지 설치
    # yum groupinstall "Development Tools"
    # yum install autoconf bison curl git zlib zlib-devel libxslt-devel libxml2-devel
    
  • rvm 설치
    # bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
  • /etc/profile 에 다음 내용 추가
    [[ -s "/usr/local/rvm/bin/rvm" ]] && source "/usr/local/rvm/bin/rvm"
    
  • rvm 정상설치 확인
    # source "/usr/local/rvm/bin/rvm"
    # type rvm | head -1
    rvm is a function
    
    위에서 rvm is a function 이 나오면 정상 설치된 것이다.
  • 설치할 수 있는 ruby 버전들 확인
    # rvm list known
    
  • 원하는 버전의 ruby 설치
    # rvm install 1.9.2
    # rvm --default use 1.9.2
    
  • ruby 버전 확인
    # ruby -v
    ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
    

Debian Linux 에서 Ruby를 사용하려면 패키지를 설치하면 쉽게 사용할 수 있다. 그러나 원하는 버전의 Ruby를 사용하고자 한다면, 별도로 설치해야 되는데, 그 방법을 설명하고자 한다.

  • 참조
  • 필요한 패키지 설치
    # apt-get install autoconf build-essential bison curl git
    
  • rvm 설치
    # bash < <( curl -L http://bit.ly/rvm-install-system-wide )
    
  • /etc/profile 에 다음 내용 추가
    [[ -s "/usr/local/lib/rvm" ]] && source "/usr/local/lib/rvm"
    
  • rvm 정상설치 확인
    # source "/usr/local/lib/rvm"
    # type rvm | head -1
    rvm is a function
    
    위에서 rvm is a function 이 나오면 정상 설치된 것이다.
  • 설치할 수 있는 ruby 버전들 확인
    # rvm list known
    
  • 원하는 버전의 ruby 설치
    # rvm install 1.9.2
    # rvm --default use 1.9.2
    
  • ruby 버전 확인
    # ruby -v
    ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
    

다시 Rails 를 공부하기 시작했는데, 보던 책들이 전부 Rails 1.2.x 버전에 대한 것들이다. 그러다 보니, 테스트를 하는데 최근에 사용되는 버전에서 제대로 돌아가지 않는 문제가 발생하고 있다. 다양한 문제들이 있지만, 지금 살펴 볼 것은 View를 구성하는 템플릿 파일명에 대한 것이다. 1.2.x 에서는 .rhtml 사용했었는데, 2.1.x 이후에는 .html.erb 또는 .erb 와 같은 형식을 이용한다고 한다. 이 외에도,

.iphone.erb  # ERB 엔진을 사용하는 iPhone을 위한 HTML 스타일
.js.rjs      # RJS를 이용하는 JavaScript
.xml.builder # XML builder를 이용하는 XML 포맷

와 같은 형식을 이용할 수 있는데, 각기 다른 이 모든 view 들이 아래와 같은 형식의 같은 컨트롤러를 공유한다.

respond_to :format { |format| ... }.

또한, 위에서 .erb 보다는 .html.erb 처럼 어떤 타입인지를 나타내는 확장명을 사용하는 것을 권장한다.

+ Recent posts