[Ruby] BoR 2장 예제

이번에는 루비에서 게터 세터를 편하게 만들 수 있도록 해주는 키워드를 살펴봤고.

@@두개를 사용해서 변수를 선언하면 클래스 스코프 변수가 된다.

상수를 만들 땐 대문자로 시작하는 변수를 만들면 되고.

파셜 클래스 기능이 있어서 기존 클래스에 새로운 메서드를 추가하는 것도 가능하다.

1.9부터는 최상위 클래스가 BasicObject다. 1.8까지는 Object였다.

[Ruby] BoR 1장 예제

  • “” 안에서 사용할 수 있는 #{} 이거 정말 편한것 같다.
  • 지금까지 본 변수 스코프는 세개… $, @, 아무것도 없는 로컬 변수.
  • 클래스와 객체 만드는 방법.
  • 게터 세터 만들기 귀찮다. 아무래도 루비 전용 IDE를 써야겠다.
  • p(객체) == 객체.inspect
  • 괄호()를 없애는게 좋은가.. 매번 써주는게 좋은가.. 모르겠다. 루비 코더는 어떻게 쓰나?

일단 이정도. 2장에선 본격적으로 다형성을 다루려는듯.

아참 지금 내가 보고 있는책은 The Book of Ruby라는 책임. 설명이 쉽고 재밌어보여서.. 라기보다 그냥 여러 책 중에서 대충 골랐다. 읽어보니까 잘 읽히길래 계속 보기로…

Mac OSX에 Ruby 1.9.3 설치하기

왜이렇게 힘들지? 기본으로 1.8 버전이 설치되어 있는데 최신 버전으로 설치하려고 홈페이지를 찾았갔다.

http://www.ruby-lang.org/en/downloads/

여러가지 방법이 있는데 제일 위에 RVM을 이용해보래. 나도 그래볼까하고 rvm을 설치하는데까지는 성공.

https://rvm.beginrescueend.com/rvm/install/

그런데 이 뒤부터 도무지 진행이 안 되네. rvm을 설치하고 나면 OSX에 기본으로 깔려이는 루비말고 RVM으로 설치한 루비를 기본으로 사용할 수 있도록 하는 명령어 설명이 나온다.

rvm requirements

라고 입력하면 자세히 설명해 주는데… 거기서 첫번째 명령어가 rvm install 1.8.7 이었나. 아무튼 그걸 설치하다가 ./configure에서 에러가 났다고 에러 로그를 확인하란다.

확인해보니까 OSX에 gcc가 없어서 ./configure를 못했데.. 이건 보통 XCode를 설치하면 깔리는걸로 알고 있는데.. XCode가 깔려있는데도 이런 에러가 나니까 황당하네… 그래서 XCode를 실행해봤는데 설치가 뭔가 잘못됐는지 실행하다가 자꾸 죽어.. 그래서 다시 설치했는데 꽤 오래 걸리데… 1.3기가니깐;;

아무튼 다시 설치하고 나서도 설치를 진행하는데 안 돼~ 도무지 안 돼~… 그래서 작전을 바꿈. RVM 꺼져…

Homebrew를 쓰기로 결정.

https://github.com/mxcl/homebrew/wiki/installation

brew를 설치하는건 간단히 한줄로 끝.

/usr/bin/ruby -e “$(curl -fsSL https://raw.github.com/gist/323731)”

그런 다음 루비 설치도 한 줄로 끝

brew install ruby

버전을 명시하는 부분이 없어서 좀 불안했는데 다행히 최신 버전으로 설치해주네.. 오호. 귿.

설치된 루비를 Path에 추가해주고 설치 끝.

오늘은 설치까지만… 원래 30분만 할려고 그랬는데 고작 설치하는데만 이게 몇시간이야;; 아이고.. @_@;;

1. 루비는 어떻게 동작하나?

참조 : 레일스를 위한 루비

– print 와 puts의 차이
puts는 출력을 한 다음에 항상 개행 문자 붙여준다.
puts는 개행 문자가 맨뒤에 붙어있을 경우 무시한다.(일부 OS(winXXX)에서는 말을 안듣는다.)

– 메소드 호출의 특이함
“100”.to_i
100.to_s
직관적이고 편리하며 보다 더 객체지향적임

– 문법 오류 검사하기
ruby -cw 루비파일(c2f.rb)
c :: 문법검사
w :: 경고 메시지 보여주기

– 입출력
모니터로 출력은 살펴봤고
키보드로 입력은 gets
파일에서 입력은 File.read(“파일명”) 리턴값은 문자열
파일로 출력은 1. 파일 만들고(file = File.new(“파일명”) 2. 파일에 쓰고 file.puts “쓸것” 3. 닫기 file.close

– require 와 load
둘 다 다른 파일에 이는 코드를 현재 파일로 불러 온다.
차이점 : load는 호출할 때마다 해당 코드를 삽입 하지만 require는 한번만 삽입한다.
require 사용하여 라이브러리 로딩
예) require ‘cgi’ require ‘REXML/Document’

– Command Line switch
-c 랑 -w는 살펴봤고
-e :: 뒤에 오는 문자열 실행
-v :: 버전 표시 + 상세 설명 모드에서 실행
-l :: 뒤에 오는 문자열 뒤에 무조건 개행
-rname :: name에 지정한 확장을 로드함(require)
–version :: 버전 표시

– Ruby 설치 폴더 찾기
1. irb -rrbconfig 실행
2. Config::CONFIG[“찾을 폴더 식별자”]
찾을 폴더 식별자 :: bindir, rubylibdir, archdir, sitelibdir, sitearchdir

– 프로파일링
ruby -r profile 루비파일(c2f.rb)
프로그램을 수행하는데 드는 시간을 라인별로 확인할 수 있다. good

– ri 와 RDoc
RDoc은 JavaDoc와 같은 녀석
ri는 Java에 없는 것으로 RDoc의 정보를 찾아서 보여줌. 예)ri require

– ERb
매우 중요한 프로그램
HTML안에 루비코드를 포함시켜둔 다음 그 파일을 erb를 사용하여 읽으면 ERb가 루비 코드를 해석하여 HTML 파일을 재구성한다.
<% %>는 루비코드 실행 => JSP의 스크립틀릿
<%= %>는 루비코드로 출력 => JSP의 표현식