Whiteship's Note


2. 레일스는 어떻게 동작하는가?

RUBY/for Rails : 2007.06.14 00:33


참조 : 레일스를 위한 루비

-애플리케이션 개발 과정
1. 모델 구현
2. 컨트롤러 구현
3. 뷰 구현

-레일즈의 MVC
모델: ActiveRecord - actionpack에 속함
뷰: ActionVIew - actionpack에 속함
컨트롤러: ActionController - activerecord에 속함

gems 폴더 아래에 위치 합니다.
사용자 삽입 이미지

- Rails 샘플 애플리케이션 개발하기
1. 모델 구현
    - 테이블의 이름은 복수형
    - id라는 필드가 있어야 함
    - y가 x에 속하면 y테이블에 x_id가 있어야 함
    - SQL로 테이블을 만들어도 되고
    - 레일즈의 마이그레이션을 사용해도 된다.
    - 모델사이의 연관 설정하기
       - 속한다. belong_to
       - 가지고 있다. has_many
2. 컨트롤러 구현
    - 액션 구현
    - 전체 컨트롤러를 나타내는 ApplicationController
3. 뷰 구현
    - layout "레이아웃 파일 이름" :: 레이아웃 설정
    - 레이아웃의 컨텐츠가 들어갈 위치에 <%= @content_for_layout %> 삽입
    - <% @composer.each do |composer| %> :: JSTL의 <c:forEach /> 와 비슷한 것
4. 접속하기
    - 첫 페이지 변경하기 :: conflg/routes.rb 파일에서 설정
    - 예) map.connect '', :controller => "main", :action => "welcome"

- 래일즈 애플리케이션 생명주기
1. 클라이언트가 서버로 요청을 보냄
2. 디스패처가 요청 받아서 담당할 컨트롤러 찾음
3. 요청을 처리하고 해당 액션과 연결되어 있는 뷰로 결과를 랜더링
4. ERb가 루비 코드를 변환해서 HTML 완성후 응답을 돌려줌
5. 클라이언트에서 HTML 확인

'RUBY > for Rails' 카테고리의 다른 글

2. 레일스는 어떻게 동작하는가?  (0) 2007.06.14
1. 루비는 어떻게 동작하나?  (0) 2007.06.06
top

TAG RoR, RoR MVC

Write a comment.


RoR vs Java

RUBY/Getting Started : 2007.06.09 09:47


RoR vs Java

JavaBeans, Spring, Tapestry, Hibernate and Own Standard Jar
vs
RoR

관련된 영상으로 Ruby vs PHP도 세 개 정도 있던데 완전 안습입니다.ㅋ

외국인들도 '자르'라고 읽네요. ^^;

'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

TAG RoR
  1. 국지니 2007.12.12 14:00 PERM. MOD/DEL REPLY

    애플 광고를 패러디 했네요...ㅋㅋㅋ 완전 안습이네요...ㅋㅋㅋ

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.12.12 14:18 PERM MOD/DEL

    ㅋㅋㅋ재밌죠.

Write a comment.


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

RUBY/for Rails : 2007.06.06 10:35


참조 : 레일스를 위한 루비

- 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의 표현식

'RUBY > for Rails' 카테고리의 다른 글

2. 레일스는 어떻게 동작하는가?  (0) 2007.06.14
1. 루비는 어떻게 동작하나?  (0) 2007.06.06
top

Write a comment.


Active Record

RUBY/on Rails : 2007.06.01 21:38


원문 : http://www.martinfowler.com/eaaCatalog/activeRecord.html

번역

액티브 레코드

테이터베이스의 테이블 또는 뷰의 레코드를 랩핑한 것에 해당 데이터를 사용할 도메인 로직을 추가한 객체이다.

자세한 설명은 P of EAA 페이지 160을 참조.

사용자 삽입 이미지
데이터와 행위를 가지고 있는 객체이다. 여기 있는 데이터의 대부분은 영속성을 가지며 데이터베이스에 저장된다.  액티브 레코드는 데이터에 접근하는 로직을 도메인 객체에 넣는 가장 노골적인(명백한, 분명한) 접근 방법이다. 이 방법을 사용하면 누구든지 해당 데이터를 데이터베이스에서 어떻게 읽어오고 저장할지 알 수 있다.

top

Write a comment.


"4일간 RoR" Item 테이블 만들 때 주의~

RUBY/on Rails : 2007.05.28 12:10


엄청나게 삽질을 했네요;; 분명히 레퍼런스대로 다 따라했는데 안 되는거에요. priority에 값을 줬는데 안줬다고 에러가 나는데 이것 참 난감하더군요.

그래서 따라하던 소스코드는 지워버리고 http://rails.homelinux.org/ 여기서 소스코드를 받아서 돌려보고 있는데 역시나 같은 에러가 발생합니다. 이거 대체 뭐야... 분명히 window랑 Linux에서 테스트 했다고 했는뎅;; 하며서 다시 위 링크를 살펴봤습니다.

페이지 맨 아래에 두 줄..
In particular, I have had reports that the data type tinyint(1) causes problems in the Priority field in the Item table - if this happens to you, please try increasing the size of the field.
=> Item 테이블의 Priority 의 데이타 타입을 tinyint(1)로 했을 때 잘 안되는 경우가 있는데 그럴 떄는 필드 사이즈를 조정해 주세요.

ㄷㄷㄷ;; 이것 때문에 몇 시간을 소비한거야!! ㅠ.ㅠ
사용자 삽입 이미지
휴~ 이렇게 수정해주고 나니 잘 돌아가네요. 이런~ 날려버린 나의 소스 코드 다시 만들어야 겠네요.ㅋㅋ

top

  1. Favicon of http://truthiness.pe.kr BlogIcon ongs 2007.05.28 18:16 PERM. MOD/DEL REPLY

    요즘 RoR공부하고 계시는건가요?

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.05.28 18:48 신고 PERM MOD/DEL

    넹 재미로요.
    Spring 레퍼런스만 두 달인가 봤더니 머리가 아파서요. 잠시 바람피는 심정으로 보고 있어요.ㅋㅋ

    요즘 AppFuse 하시죠? 잘 보고 있답니다. AppFuse 할까 RoR 할까 고민하다가 AppFuse는 2.0 정식버젼 나오면 하려고 RoR을 선택했어요.

Write a comment.


Ruby on Rails 튜토리얼 링크 모음

RUBY/on Rails : 2007.05.27 16:34


원문 : http://the-est.com/blog/acher/entry/Top-12-Ruby-on-Rails-Tutorials

링크만 요약합니다.
  1. Rolling with Ruby on Rails
  2. Rolling with Ruby on Rails, Part 2
  3. Four Days on Rails (PDF)
  4. Really Getting Started in Rails
  5. Tutorial in Ruby on Rails
  6. Fast-track your Web apps with Ruby on Rails 
  7. Getting Your Feet Wet With Ruby on Rails 
  8. How to make a todo list program with Rails 
  9. Ajax on Rails
  10. Many to Many Tutorial for Rails (PDF) 
  11. Distributing Rails Applications - A Tutorial 
  12. Installing Ruby on Rails with Lighttpd and MySQL on Fedora Core 4

1, 2번 링크는 저번에 봤던 기사의 초본인가 보군요.
- Rolling with Ruby on Rails Revisited, 번역 기사
- Rolling with Ruby on Rails Revisited2, 번역 기사


top

  1. Favicon of http://humbleprogrammer.net/blog BlogIcon HumbleProgrammer 2007.05.27 19:42 PERM. MOD/DEL REPLY

    기선님은 기존 자바 진영 프레임워크에 대한 기반지식이 있으시니까,
    튜토리얼부터 보시는 것보다는, ActiveRecord , ActionController , ActionView 이렇게 MVC 컴포넌트별로 각각의 자바 프레임워크에 대응해서 살펴보시면, 금방 익히실것 같아요^^

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.05.27 21:02 신고 PERM MOD/DEL

    4일 완성까지만 보고 험블님께서 번역하고 계신 책을 보며 공부하려구요.
    베타리딩 열심히 해드릴께요. :)

  2. 999 2008.12.16 10:21 PERM. MOD/DEL REPLY

    좋은정보 감사합니다~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.12.16 12:22 신고 PERM MOD/DEL

    넵~

Write a comment.


rails로 생성한 scaffold 코드 살펴보기 - View

RUBY/on Rails : 2007.05.27 10:31


View는 세 가지 구성요소로 이루어져 있습니다. Layout, Template, Partial 이 세가지 입니다. 각각의 관계를 그림으로 나타내면 다음과 같습니다.
사용자 삽입 이미지
Layout 은 각각의 Template 앞 뒤에 해당하는 HTML 을 넣을 수 있습니다.
Template 은 각각의 페이지에 해당하며
Partial 은 각각의 페이지 구성요소 중에 여러 페이지에서 사용할 부분을 따로 빼낸 부분입니다.
사용자 삽입 이미지
위 표에 각각의 default name이 적혀있으며 파일이 위치 할 폴더를 보여주고 있습니다.

Layout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Categories: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
</head>
<body>
<h1><%=@heading %></h1>
<p style="color: green"><%= flash[:notice] %></p>

<%= yield  %>

</body>
</html>

스케폴드에서 만들어준 레이아웃 코드입니다.
스타일 시트는 따옴표 사이에 이름을 주면 rails의 웹 기본 폴더인 public의 하위 디렉토리 stylesheets 밑에 위치한 파일을 찾게 됩니다.
사용자 삽입 이미지
파란색 부분의 코드는 임의로 넣어준 것입니다. 각각의 페이지에서 @heading 변수의 값을 바꿔주면 여기서 출력해줄 값도 변하게 됩니다.

Template
<% @heading = "Edit Category" %>
<% form_tag :action => 'update', :id => @category do %>
    <%= render :partial => 'form' %>
    <%= submit_tag 'Edit' %>
<% end %>

<%= link_to 'Show', :action => 'show', :id => @category %>
|
<%= link_to 'Back', :action => 'list' %>

@heading 변수에 Edit Category 라는 값을 주고 있습니다. 따라서 레이아웃에서 이 값을 받아서 화면에 출력하게 될 것입니다. 그리고 여기서 주목할 부분은 빨간색 부분인 render :partial 입니다. 저 코드가 위치한 자리에 form이라는 partial을 사용하라는 의미 인 것 같습니다. 그럼 _form.rhtml을 찾아서 저 위치에 포함시켜 줍니다.

Partial
<%= error_messages_for 'category' %>

<!--[form:category]-->
<p><label for="category_category">Category</label><br/>
<%= text_field 'category', 'category', "size"=>20, "maxlength"=>20  %></p>

<p><label for="category_created_on">Created on</label><br/>
<%= datetime_select 'category', 'created_on'  %></p>

<p><label for="category_updated_on">Updated on</label><br/>
<%= datetime_select 'category', 'updated_on'  %></p>
<!--[eoform:category]-->

_form.rhtml 파일입니다.
맨 윗 부분은 이전 글에서 예상했던 것 처럼 에러 메시지를 출력하는 부분이 맞습니다.
파란색 부분은 별도로 추가해준 부분입니다.
여기서 살펴볼 코드는 빨간색 부분입니다. text_field 는 보여줄 <input /> 의 타입을 지정해 주는 것으로 예상이 되며 첫 번째 인자 'category'는 테이블이고 두 번째 인자 'category'는 테이블의 컬럼 이름입니다.
top

TAG RoR, View

Write a comment.


rails로 생성한 scaffold 코드 살펴보기 - Controller

RUBY/on Rails : 2007.05.26 23:42



class CategoriesController < ApplicationController
  def index
    list
    render :action => 'list'
  end

컨트롤러의 첫부분 입니다. list 메소드를 호출하고 list라는 이름의 뷰를 사용하도록 render :action 을 사용합니다.

  def destroy
    Category.find(params[:id]).destroy
    redirect_to :action => 'list'
  end

컨트롤러의 마지막 부분으로 지우고 난 뒤 list 페이지로 이동하도록 redirect_to :action 을 사용합니다.

컨트롤러 곳곳에서 사용하고 있는 find, find_all, new, save, update_attributes, destroy 이런 메소드들은 ActiveRecord에 있는 메소드를 사용한다고 합니다. ActiveRecord에 대한 공부가 필요하군요. 이 전 글에서 제가 궁금해 했었던 Dao 역할을 하는 녀석이 바로 이 녀석이였던 것 같습니다.

RadRails의 RI 탭에서 검색하면 바로 레퍼런스를 참조 할 수 있습니다. 그런데 조금 오래 걸립니다. 뻗어버린 줄 알았습니다...
사용자 삽입 이미지



top

Write a comment.


RoR Validation 맛보기

RUBY/on Rails : 2007.05.26 11:32


RoR 4일 완성이라는 40페이지? 정도의 책(무료로 다운 가능합니다.)이 있길래 그 책을 보며 RoR 맛을 보려고 합니다.(일본어랑, 중국어로 된 번역본은 있는데 한글판은 없네요.ㅠ.ㅠ)

012
흠.. 테이블을 잘 못 만들어서 중복 된 값이 들어가게 되었네요. 테이블을 수정해서 중복된 이름의 category를 못만들게 하면 scaffold로 생성한 뷰에서 에러가 발생합니다.

이런 에러 로그를 보여주는 대신 validation 에러 메시지를 보여주도록 모델에 간단하게 validation 로직을 추가할 수 있습니다.

class Category < ActiveRecord::Base
  validates_length_of :category, :within => 1..20
  validates_uniqueness_of :category, :message => "already exists"
end

코드가 엄청나게 직관적이기 때문에 어떤 내용인지 짐작할 수 있을 것입니다.

이렇게 코드를 추가해주고 서버를 껐다 다시 돌릴 필요도 없이 그냥 계속 작업을 합니다.
사용자 삽입 이미지
이미 등록되어 있는 Category인 스터디를 입력하면...

사용자 삽입 이미지
흠.. 정말 놀랍도록 간단하고 영리한 프레임워크입니다.

뷰 코드를 보면 제일 상단에 이미 에러 객체의 내용을 출력하는 것으로 보이는 코드가 들어있습니다.
<%= error_messages_for 'category' %>

<!--[form:category]-->
<p><label for="category_category">Category</label><br/>
<%= text_field 'category', 'category'  %></p>

<p><label for="category_created_on">Created on</label><br/>
<%= datetime_select 'category', 'created_on'  %></p>

<p><label for="category_updated_on">Updated on</label><br/>
<%= datetime_select 'category', 'updated_on'  %></p>
<!--[eoform:category]-->

그리고 컨트롤러에서 create 메소드를 보겠습니다.
  def create
    @category = Category.new(params[:category])
    if @category.save
      flash[:notice] = 'Category was successfully created.'
      redirect_to :action => 'list'
    else
      render :action => 'new'
    end
  end

흠.. 이건 좀 모르겠네요. 분명 여기서 Category 모델을 사용자가 폼에서 입력하는 데이터를 바인딩하고(Category.new(params[:category]))나서.. 저장할 때(@category.save) Validation을 걸리게 되고 else문에 걸려서 계속해서 "new" 즉 생성하는 페이지를 다시 로딩 할 때 위에서 봤던 뷰 코드가 다시 읽히게 되고 그 때 에러의 내용을 출력(<%= error_messages_for 'category' %>)해주는 것 같은데. 대체 Dao 역할을 하는 코드(@category.save의 실체)는 어디에 있는거지??
top

  1. Favicon of http://decoder.tistory.com BlogIcon decoder 2007.05.26 15:06 신고 PERM. MOD/DEL REPLY

    인터넷에 올라오는 많은 문서들이 일본어로 번역되는 경우는 많은데, 한글로 옮겨져 있는 경우는 흔치 않더라구요. 안타깝지만 현실입니다. JDK도 일어판이 있잖아요.. ㅡㅡ;

    이런 문서는 한글로 옮겨보고 싶은 충동을 자극하죠.. -_-

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.05.26 21:04 신고 PERM MOD/DEL

    넹 안타깝네요.
    이번에 번역하고 있는 IBM 기사 번역하는게 끝나면 저걸 번역해서 올려야겠네요.

    Favicon of http://decoder.tistory.com BlogIcon decoder 2007.05.27 01:59 신고 PERM MOD/DEL

    재밌는 건 같이 하시죠~ :)

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.05.27 10:30 PERM MOD/DEL

    좋아요. ㅎㅎ
    앞뒤로 나눠서 둘이 하면 금방 하겠네요.
    하고나서 AJN에 베타리딩을 부탁드려서 피드백 받아도 되겠네요. :)

    Favicon of http://decoder.tistory.com BlogIcon decoder 2007.05.27 20:45 신고 PERM MOD/DEL

    ㅎㅎ 넵. 그럼 제가 2일차까지 먼저 진행하고 있겠습니다. :)

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.05.27 21:03 신고 PERM MOD/DEL

    넹 그럼 전 3일차 부터 번역하겠습니다.

Write a comment.


Aptana+RadRails와 Instant Rails 빨리 다운 받기

RUBY/on Rails : 2007.05.25 22:28


Aptana + RadRails 빨리 다운 받기
Instant Rails 빨리 다운 받기
둘 다 window 용입니다.
사용자 삽입 이미지사용자 삽입 이미지

AJN 서버를 이용했습니다. 도통 느려터져서(제가 받을 땐 30~50kb/s정도 나오던데요.) 답답하신 분들은 위 링크 받으시면 됩니다.



top

Write a comment.


Aptana + RadRails 설치와 설정

RUBY/on Rails : 2007.05.25 18:54


Eclipse로는 아무래도 안되는데 Aptana는 한 방에 플러그인을 사용할 수 있었습니다. Eclipse용 플러그인이 뭔가 이상한듯...

Aptana는 처음 써보는데 Eclipse랑 거의 똑같은 것 같네요.
사용자 삽입 이미지

0. Instant Rails를 다운로드 하여 적당한 위치에 압축을 풉니다.
-이것으로 Ruby, Rails, 서버, DB 설치 끝입니다.

1. 여기 Aptana + radrails를 다운로드 합니다.
-86메가 인데 굉장히 느립니다.
-이미 Aptana를 사용중이시면 플러그인만 다운로드 하실 수도 있습니다.

2. Eclipse에서 플러그인 설치하듯이 설치하려고 하면 이미 업데이트 사이트 목록에 추가되어 있는 것을 볼 수 있습니다. 따라서 그냥 체크하고 설치만 하면 됩니다.
사용자 삽입 이미지

3. RDT 플러인을 설정해줍니다.
사용자 삽입 이미지
Rails 에는 설정해줄 것이 없고 Ruby에 Installed Interpreter만 설정해 주면 됩니다. 설정해주는 방법은 오른쪽에 Add버튼을 클릭한 뒤 디렉토리 버튼을 눌러서 "Instant Ruby설치 디렉토리"/ruby 폴더를 지정해 주면 됩니다.

4. 끝입니다. 이제 간단하게 Rails 프로젝트를 만들고 db설정 파일에서 계정 설정해주고 제너레이터로 scaffold 사용해서 간단하게 만들고 server 탭에서 브라우져 모양 누르면 알아서 서버 돌리고 내장 브라우저로 보여줍니다.

Good!!

Aptana + RadRails 빨리 다운 받기
Instant Rails 빨리 다운 받기
top

  1. Favicon of http://chanwook.tistory.com BlogIcon 찬욱 2007.05.25 19:58 PERM. MOD/DEL REPLY

    저보다 먼저 시작하시니 좋은데요~ 전 그냥 따라하면 될 뿐~ㅎㅎ

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.05.25 21:12 PERM MOD/DEL

    먼저라고 할 것도 없어~
    이건 뭐 5분이면 따라 한다는거~ㅋㅋ

    이제부터가 갈길이 멀어보이는데;; 어서 앞장서줘~

Write a comment.


Eclipse(or Aptana)용 RoR 플러그인 설정

RUBY/on Rails : 2007.05.25 15:48


참조 : http://www.aptana.com/docs/index.php/Configuring_your_RadRails_setup

Eclipse든 Aptana든 Rails플러그인 RadRails를 설치하려면 RDT가 먼저 설치되어 있어야 하고 둘 다 제대로 설정 안해주면 잘 안돌아 간다고 합니다.

Eclipse에 플러그인 설치하고 돌려보려는데 잘 안되네요.[각주:1] 흠.. 대엽님이 번역한 글[각주:2]에 나와있는 설정 내용과 비슷한데 이상하게 잘 안되서 찾아 보다가 저걸 발견했지만 수업이 있어서 다녀온 다음에 해봐야겠습니다.  ㅠ.ㅠ
top

Write a comment.


Rolling with Ruby on Rails Revisited 실습 후기

RUBY/on Rails : 2007.05.25 12:12


와 세상에 이렇게 간단하다니;;; 정말 RoR 장난아니네요.
- Rolling with Ruby on Rails Revisited, 번역 기사
- Rolling with Ruby on Rails Revisited2, 번역 기사
위 글 두개를 참조 하며 따라해 보았습니다. 번역 기사에 오타(특히 코드 주변)[각주:1]가 있긴 하지만 화면 캡쳐 한 걸 보면 쉽게 따라하실 수 있습니다.

그 전에 설치와 서버 구동에 관한 부분은 위 글과 달리 http://www.rubyonrails.org/down 이 글을 참조 했습니다.

프로젝트 만드는 방법
rails 프로젝트 패키지명

DB 이름 convention
프로젝트 홈 이름_development

DB 설정
비번 없는 root 계정에 위의 DB 이름을 defalut로 사용하기 때문에 별다른 설정이 필요 없을 수도 있습니다.
프로젝트홈/config/database.yml

Scaffold로 기본적인 CRUD를 위한 모델, 컨트롤러, 뷰 생성하기
ruby script/generate scaffold 모델명 컨트롤러명

서버 구동 하기
ruby script/server

서버 접속하기
http://localhost:3000

서버 멈추기
Ctrl + c, Ctrl + z, Ctrl + x 셋을 번갈아 가며 눌러보다 보면 멈추게 됩니다. [각주:2]

프로젝트 구조
- 프로젝트 홈
사용자 삽입 이미지

- app
사용자 삽입 이미지

와 이걸로 게시판 만들면 정말 5분만에 만들겠네요. 예제 따라하면서 자동으로 만들어 주는 화면과 컨틀롤러들이 동작하는 걸 보고 깜짝 놀랐습니다. 아직 화면을 바꾸고 컨트롤러의 동작을 바꾸지는 못하지만 이런 기본 포맷만 만들어서 보여주기에는 더없이 좋은 것 같습니다.

좀 더 공부해서 화면과 컨트롤러와 모델을 내 맘대로 수정할 수만 있으면 지금 Spring, Hibernate로 하고 있는 학교 프로젝트들을 좀 더 쉽게 만들 수 있을 것 같다는 느낌이 듭니다.

과연 내 맘대로 주무룰수 있을 때 까지 공부하는게 얼마나 힘들지 모르겠지만 좋은 번역서들과 책들이 나오고 있기 때문에 재밌게 공부할 수 있을 것 같네요. RoR 멋져효~
  1. Reflection을 반사라고 번역한 부분이 꽤 인상적이였습니다. [본문으로]
  2. 콘솔창이 느리게 반응해서 어떤 키로 멈췄는지 모르겠네요;; 아마도 c 일듯. [본문으로]
top

TAG ol, RoR
  1. 요술뱃살 2007.05.29 19:25 PERM. MOD/DEL REPLY

    루비 정말 대단한거 같아요!!

    초보 프로그래머인 저도 뭣도 모르고 코드 몇 줄 만지니깐 웹 애플리케이션이 순식간에 만들어지더라구요;

    앞으로 자주 찾아오겠습니다.

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.05.29 22:37 PERM MOD/DEL

    네 RoR의 Scaffold는 정말 대단한 것 같습니다.

    저도 많이 놀랐었는데요.

    자주 찾아오시게끔 열공해야겠네요. :)

Write a comment.


RoR Start~

RUBY/on Rails : 2007.05.24 23:53


설치
- http://www.rubyonrails.org/down

가이드
- Rolling with Ruby on Rails Revisited, 번역 기사
- Rolling with Ruby on Rails Revisited2, 번역 기사

Eclipse 에서 돌려보기
- Ruby on Rails Meets Eclipse,
- 번역 기사
    - 루비 온 레일즈, 이클립스를 만나다(1)
    - 루비 온 레일즈, 이클립스를 만나다(2)
    - 루비 온 레일즈, 이클립스를 만나다(3)
top

Write a comment.


Reading and 'Riting

RUBY/Manual : 2006.11.04 23:02


Ruby는 다영한 I/O 라이브러리를 제공합니다. 하지만 이 책에서는 간단한 메소드 몇개 만을 사용합니다. 그 중에 두 개를 이미 보셨을 것입니다. puts와 print입니다. puts는 puts 뒤에 오는 아규먼트들을 각 각 newline(자바에서는 \n)을 추가하여 화면에 출력하며, print는 newline 문자 없이 아규먼트들을 출력해 줍니다. 또하나 자주 사용되는 것은 printf입니다. 이것은 형식 문자열로 아규먼트를 제어하는 형식입니다.(C나 Perl에 처럼)

printf "Number: %5.2f, String: %s", 1.23, "hello"

이렇게 입력을 하면

Number:  1.23, String: hello=> nil

이렇게 출력됩니다. %f는 실수를 출력할 것이고 %s는 문자열을 출력할 것이라는 것입니다. %와 f사이의 숫자는 (allowing five characters in total, with two after the decimal point) 이렇습니다. 즉 앞에 . 앞에 있는 숫자는 총 숫자를 말하고 . 뒤에 있는 숫자는 소숫점을 말한다고 합니다. 그래서 출력 실험을 해봤습니다.

irb(main):017:0> printf "%6.3f, %s", 123456789.1234567, "test"
123456789.123, test=> nil
irb(main):018:0> printf "%6.4f, %s", 123456789.1234567, "test"
123456789.1235, test=> nil
irb(main):019:0> printf "%1.4f, %s", 123456789.1234567, "test"
123456789.1235, test=> nil

. 뒤에 있는 숫자를 변경 해보니 결과물의 소숫점의 자릿수가 바뀌는 것을 확인 할 수 있습니다. 하지만 . 앞의 숫자에 어떤 영향을 받고 있는 것인지는 확인 할 수 없었습니다.

프로그램에 값을 입력시키는 방법도 여러가지가 있습니다. 그 중에 가장 전통적인 방법으로 gets를 사용합니다.

irb(main):022:0> line = gets
hi
=> "hi\n"
irb(main):023:0> print line
hi
=> nil
irb(main):024:0>

gets는 방금 읽어들인 문장을 리턴하는데 그 때 리턴되는 것을 전역 변수인 $_ 안에 저장합니다. 이 변수는 많은 경우에 기본으로 사용되는 특별한 변수 입니다. print를 아규먼트 없이 호출하면 &_ 안에 있는 것을 호출하게 됩니다. if 나 while문을 정규 표현식과 사용한다면 그 표현식은 $_ 변수에 대응하여 작동합니다. 예를 들어 다음 프로그램은 "Ruby"라는 단어간 들어간 모든 줄을 출력합니다.

while gets           # assigns line to $_
 if /Ruby/          # matches against $_
   print            # prints $_
 end

이 것을 저번 글에서 배웠던 이터레이터를 사용하여 다음과 같이 나타낼 수도 있습니다.

ARGF.each { |line|  print line  if line =~ /Ruby/ }

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Blocks and Iterators

RUBY/Manual : 2006.11.03 11:45


이번 세션에서는 간단하게 Ruby의 장점중에 하나를 설명하겠습니다. 코드 블럭을 살펴보려고 합니다. 코드 블럭은 callback을 구현하거나(Java의 anonymous inner class보다 간단하게), 코드 덩어리(C의 funtion pointer보다 더 유연한)를 넘겨주거나, 이터레이터를 구현할 때 사용할 수 있습니다.

코드 블럭은 ( )사이 또는 do 와 end 사이의 코드 덩어리 입니다.
{ puts "Hello" }       # this is a block

do                     #
 club.enroll(person)  # and so is this
 person.socialize     #
end                    #

코드 블럭을 만들어 두고 yield 를 사용하여 여러번 호출 할 수 있습니다.

def callBlock
 yield
 yield
end
callBlock { puts "In the block" }

callBlock 이라는 메소드 안에는 yield 를 두 번 사용했습니다. 그리고 오른쪽에 코드 블럭이 있군요. 그럼 이 코드 블럭을 두 번 호출 하게 될 테니 화면에 in the block 가 두번 찍힐 것입니다.

In the block

In the block

You can provide parameters to the call to
yield: these will be passed to the block. Within the block, you
list the names of the arguments to receive these parameters between
vertical bars (``|'').
def callBlock yield , end callBlock { |, | ... }

코드 블럭은 Ruby에서 이터레이터를 구현할 때 사용됐습니다.
a = %w( ant bee cat dog elk )    # create an array
a.each { |animal| puts animal }  # iterate over the contents
이 것의 결과는 다음과 같습니다.
ant
bee
cat
dog
elk

each라는 메소드가 어떻게 구현되어 있는지 보겠습니다.

# within class Array...
def each
 for each element
   yield(element)
 end
end
You could then iterate over an array's elements by calling itseach method and supplying a block. This block would be called foreach element in turn.
[ 'cat', 'dog', 'horse' ].each do |animal|
 print animal, " -- "
end
produces:
cat -- dog -- horse --

Java와 C에서 사용하는 여러 loof를 Ruby에서는 단순한 메소드 호출을 사용하여 할 수 있습니다.

5.times {  print "*" }
3.upto(6) {|i|  print i }
('a'..'e').each {|char| print char }

produces:

*****3456abcde

*을 출력하는 코드 블럭을 다섯번 호출하고, 3~6까지 출력하고, a~e까지 출력했습니다.


'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Regular Expressions

RUBY/Manual : 2006.10.05 16:18


Regular Expressions

모든 프로그래머들은 Ruby에 이미 만들어져 있는 문자열, 정수, 실수, 배열 등과 같은 것에 익숙할 것입니다. 하지만 Ruby가 가지고 있는 regular expression은 스크립트 언어라고 불리는 것에만 있습니다. 말하기 부끄럽지만 text를 다루는데는 regular expression이 매우 유용합니다.

여기서는 그 전부에 대해 다루지는 않고 regular expression을 사용하는 몇가지 예만 살펴 보겠습니다. 56페이지 부터 시작하는 부분에서 이것에 대한 모든 것을 볼 수 있을 것입니다.

regular expression은 문자열에서 특정 패턴을 구분하는 간단한 방법입니다. Ruby에서는 / / 슬러쉬 사이에 패턴을 적어 넣음으로써 regular expression을 작성할 수 있습니다(/패턴/). 그리고 Ruby에서 이것은 당연히 객체이고 객체처럼 다뤄 집니다.

예를 들어 문자열에 Perl또는 Python을 포함하는 문자열에 매치하는 패턴을 작성하고 싶다면 다음과 같은 regular expression을 사용할 수 있습니다.

/Perl|Python/


"|" 파이프 문자를 이용하여 여러개의 문자열을 구분 할 수 있습니다. 그리고 괄호도 사용할 수 있지요. 따라서 위의 표현을 다음괕이 적을 수도 있습니다.
/P(erl|ython)/


그리고 반복되는 패턴을 기술 할 수도 있습니다. /ab+c/는 문자열이 a를 가지고 있고 a뒤에 하나 또는 그 이상의 b가 있고 그 뒤에 c가 있는 문자열에 매칭됩니다. +대신에 *를 써서 /ab+c/라고 표현하면 a뒤에 b가 없거나 하나 이상일 수 있고 그 뒤에 c가 있는 문자열에 매칭됩니다.

여러 문자 그룹중 하나를 매칭 시킬 수도 있습니다. \s 는 공백 문자(스페이스, 탭, 새줄 등등)와 매칭 됩니다. \d는 모든 정수를 매칭 됩니다. and ``\w'', which matchesany character that may appear in a typical word. The single character``.'' (a period) matches any character.

이것들을 사용하여 몇가지 유용한 regular expression을 만들 수 있습니다.

/\d\d:\d\d:\d\d/     # a time such as 12:34:56
/Perl.*Python/       # Perl, zero or more other chars, then Python
/Perl\s+Python/      # Perl, one or more spaces, then Python
/Ruby (Perl|Python)/ # Ruby, a space, and either Perl or Python

"=~" 이 오퍼레이션은 문자열에 regular expression을 매칭 하는데 사용할 수 있습니다. 만약에 문자열에서 해당하는 패턴이 발견되면 =~ 는 그 패턴이 시작하는 위치를 리턴하고 없다면 nil을 리턴합니다. 이 말은 if문이나 while문의 조건식에 사용할 수 있다는 것입니다. 다음의 예는 문자열에 'Perl' 또는 'Python'이 있는지 확인합니다.

if line =~ /Perl|Python/
 puts "Scripting language mentioned: #{line}"
end

Ruby의 메소드를 사용하여 패턴에 매칭되는 문자열을 다른 문자열로 교체 할 수 있습니다.

line.sub(/Perl/, 'Ruby')    # replace first 'Perl' with 'Ruby'
line.gsub(/Python/, 'Ruby') # replace every 'Python' with 'Ruby'

이 책 전반에 걸쳐 regular expression을 살펴 볼 것입니다.

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Control Structures

RUBY/Manual : 2006.10.04 18:47


Control Structures

Ruby는 if나 while 같은 유용한 제어문을 가지고 있습니다. Java, c, Perl 프로그래머들은 이 제어문 바디에 괄호를 뺸 것을 눈치 챗을 것입니다. 대신에 자바는 end라는 키워드로 바디를 구분합니다.
if count > 10
 puts "Try again"
elsif tries == 3
 puts "You lose"
else
 puts "Enter a number"
end
while문도 비슷하게 end를 사용합니다.
while weight < 100 and numPallets <= 30
 pallet = nextPallet()
 weight += pallet.weight
 numPallets += 1
end
Ruby의  statement modifier라는 것을 사용하여 while이나 if문을 줄여 쓸 수가 있습니다. 사용 법은 먼저 딱 한 문장 만 기술을 하고 그 뒤 if나 while 키워드를 사용하고 조건을 명시하면 됩니다.

예를 들어 아래에 한 문장의 간단한 if문이 있습니다.
if radiation > 3000
 puts "Danger, Will Robinson"
end
이것을 아래와 같이 간단히 줄일 수 있습니다.
puts "Danger, Will Robinson" if radiation > 3000
한 문장의 while문이 아래에 있습니다.
while square < 1000
  square = square*square
end
이것도 아래 처럼 줄일 수 있습니다.
square = square*square  while square < 1000

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Arrays and Hashes

RUBY/Manual : 2006.10.02 18:13


Arrays and Hashes


Ruby의 array와 hash는 인덱스가 있는 collection입니다. 둘 다 객체를 담아 두고 key를 사용하여 접근하는 콜렉션입니다. array에서 key는 정수이지만 hash는 어떤 객체도 key가 될 수 있습니다. 둘 모두 새로운 요소를 추가할 때 커기제 됩니다. array에 접근을 하는게 보다 효율 적이지만 hash는 보다 유연함을 제공합니다. 어떤 array이나 hash들도 여러 타입의 객체를 담아 둘 수 있습니다. 이 말은 하나의 array에 정수, 문자열, 실수를 담을 수 있다는 것입니다.


[ ] 이 괄호 사이에 요소들을 나열 하는 array literal을 사용하여 새로운 배열을 생성하고 초기화 할 수 있습니다. array 객체를 가지고 객체에 있는 각각의 요소들에 [] 안에 index를 사용하여 접근할 수 있습니다. 다음의 예에서 봅시다.

a = [ 1, 'cat', 3.14 ]   # array with three elements
# access the first element
a[0] »1
# set the third element
a[2] = nil
# dump out the array
a »[1, "cat", nil]


array 객체의 생성자를 사용하여 생성하거나 요소들이 없는 비어있는 괄호 [] 를 사용하여 배열을 생성할 수도 있습니다. Array.new .
empty1 = []
empty2 = Array.new


단어들의 배열을 생성할 때 "" 와 , 를 사용하기가 매우 번거로울 수 있는데 이 때 사용하기 편한 것이 있습니다. 바로 %w 입니다. 다음과 같이 사용할 수 있습니다.

a = %w{ ant bee cat dog elk }
a[0] »"ant"
a[3] »"dog"


Ruby의 hash는 배열과 비슷합니다. hash는 [] 말고 {} 이 괄호를 사용합니다. 반드시 하나의 요소에는 두 개의 객체가 제공되어야 합니다. 하나는 key 하나는 value입니다.


예를들어, 악기들을 오케스크라 위치에 따라 매핑하고 싶다면 다음과 같이 할 수 있습니다.

instSection = {  'cello'     => 'string',  
'clarinet'  => 'woodwind',  
'drum'      => 'percussion',  
'oboe'      => 'woodwind',  
'trumpet'   => 'brass',  
'violin'    => 'string'}


Hash는 array와 같이 [] 괄호를 사용하여 index화 됩니다.

instSection['oboe'] »"woodwind"
instSection['cello'] »"string"
instSection['bassoon'] »nil


마지막 예가 보여주듯이 hash에 해당하는 key가 없는 경우에 기본적으로 nil을 반환합니다. 하지만 가끔은 여러분이 원하는 기본값을 반환하도록 하고 싶을 것입니다. 예를 들어 해당하는 key가 몇 번 출현하는지 카운팅하는 hash의 경우 기본값을 0으로 하고 싶을 것입니다. 이것은 hash를 생성할 때 생성자에 기본값을 인자로 넘겨 주는 방식으로 할 수 있습니다.

histogram = Hash.new(0)
histogram['key1'] »0
histogram['key1'] = histogram['key1'] + 1
histogram['key1'] »1


배열과 해쉬 객체는 매우 유용한 메소드들을 많이 가지고 있습니다. 33page와 278page~317page에 걸쳐 이 메소드들에 대해 자세하게 나와있습니다.

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Some Basic Ruby

RUBY/Manual : 2006.09.26 07:23


Some Basic Ruby

많은 사람들이 새로운 언어를 배울 때 지겨운 문법을 읽는 것을 좋아하지 않습니다. 그래서 방법을 생각해냈습니다. Ruby 프로그램을 작성할 때 꼭 알아야 하는 것들만 적어 놨습니다. 199페이지 부터 시작하는 18챕터에서 더 자세히 살펴보겠습니다.

간단한 Ruby 프로그램을 보며 시작합시다. 문자열을 반환하는 메소드를 작성했습니다. 이름을 문자열에 추가하여 반환하는 군요. 이 메소드를 몇번 호출해 봤습니다.

def sayGoodnight(name)  
result = "Goodnight, " + name  
return result
end
# Time for bed...
puts sayGoodnight("John-Boy")
puts sayGoodnight("Mary-Ellen")

Ruby는 statement마다 세미콜론(;)을 필요로 하지 않습니다. 그리고 주석은  # 문자로 시작합니다.

메소드는 def 키워드를 사용하여 정의하며 def뒤에 메소드의 이름을 적어주고 메소드의 파라미터들을 괄호() 안에 적어줍니다. 또 루비는 여러 문장을 묶거나 메소드의 정의를 구분하기 위해 중괄호를 사용하지 않습니다. 대신 end로 끝남을 알려줍니다. 메소드의 첫줄은 "Goodnight, "에 파라미터 name을 붙이고 그 다음 줄에서 result를 반환하고 있습니다. result 변수를 선언할 필요가 없습니다. 그냥 대입 할 때 생기게 됩니다.

메소드를 정의한 뒤 우번 호출을 했습니다. 그리고 두 경우다 결과를 puts 메소드에 넘겨줍니다. puts는 아규먼트로 넘어온 값을 단순히 newline과 함께 출력합니다.

Goodnight, John-BoyGoodnight, Mary-Ellen
``puts sayGoodnight("John-Boy")'' 이 문장은 두개의 메소드 호출을 하고 있습니다. 하나는 sayGoodnight이고 다은으로 puts입니다. 왜 sayGoodnight는 괄호를 사용해서 인자를 넘겨주는데 puts는 안그러냐구요? 그냥 취향입니다. 사실 아래 있는 것들 모두 같은 뜻입니다.

puts sayGoodnight "John-Boy"
puts sayGoodnight("John-Boy")
puts(sayGoodnight "John-Boy")
puts(sayGoodnight("John-Boy"))
하지만 삶은 그렇게 간단하지 않습니다. 괄호를 사용하면 어떤 인자가 어떤 메소드에 사용되는 것인지 헷갈리게 됩니다. 따라서 괄호는 단순한 경우에는 사용하지 않는것을 추천합니다.

이 예제는 Ruby의 문자열(string) 객체도 보여주고 있습니다. string 객체를 생성하는 방법은 다양하지만 가장 흔한 방법으로는 문자열 상수를 사용하는 방법입니다. 문자열 상수는 " " 나 ' ' 로 둘러쌓인 문자열을 말합니다. 이 두 형태의 차이점은 상수를 생성할 때 Ruby가 문자열에 처리를 하는 양이 다르다는 것입니다. ' ' 로 둘러쌓인 경우에 Ruby는 몇몇 예외처리 들과 매우 소수의 작업을 하며 ' ' 안에 있는 문자열 상수들이 문자열 값이 됩니다.

" "로 둘러쌓인 경우에 Ruby는 좀더 많은 일을 하는데, 우선. / 로 시작하는 문자를 binary 값을 바꿔줍니다. "\n"과 같은 경우 이 문자열을 newline 문자로 바꿔줍니다.

puts "And Goodnight,\nGrandma"

이 문장의 결과는 아래와 같습니다.

And Goodnight,Grandma

" "를 사용한 문자열은 #{ expression } 을 expression의 값으로 대체 할 수 있습니다. 이것을 사용하여 메소드를
재정의 할 수 있습니다.

def sayGoodnight(name)  result = "Goodnight, #{name}"  return resultend

#{...} 안에 있는 expression이 단순히 global, instance 또는 class 변수 일 경우에는 괄호를 사용하지 않아도 됩니다. string이나 Ruby의 기본 타입들은 47쪽부터 시작하는 챕터5를 보면 됩니다.

마지막으로 이 메소드를 좀더 단순하게 고칠수가 있는데 Ruby의 메소드는 맨 마지막 문장의 값을 return합니다. 따라서 return result문장을 지워도 됩니다.

def sayGoodnight(name)  "Goodnight, #{name}"end

하나만 더 알고 지나갑시다. Ruby의 naming 규칙입니다. 여기서 아직 배우지 않은 class 변수와 같은 말이 나오겠지만 그냥 들어두기 바랍니다.

Ruby는 여러가지 이름을 정할 때 약속이 있습니다. 지역 변수, 메소드 이름, 메소드의 파라미터들은 이름의 첫글자가 소문자로 시작합니다. 전역 변수는 $로 시작하고 인스턴스 변수는 @로 시작합니다. 클래스 변수는 @@이걸로 시작을 합니다. 마지막으로 클래스 이름, 모듈 이름, 상수는 대문자로 시작합니다.

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

TAG ruby, string

Write a comment.


Eclipse에서 Ruby사용하기.

RUBY/Getting Started : 2006.09.22 12:12


http://www-128.ibm.com/developerworks/opensource/library/os-rubyeclipse/
Ruby프로젝트 생성, test, debug.

http://rubyeclipse.sourceforge.net/download.rdt.html
Ruby 플러그인 설치 방법.


'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

Write a comment.


Ruby in Twenty Minutes 4

RUBY/Getting Started : 2006.09.21 11:20


이 전에 만들었던 새로운 프로그램을 좀더 자세히 살펴봅시다. # 마크로 시작하는 줄은 Ruby에서 주석을 나타낼때 사용합니다. 이 마크가 사용된 줄은 interpreter가 무시하게 됩니다. The first line of the fileis a special case, and under a Unix-like operating system tells theshell how to run the file.(이부분은 무슨 뜻인지 모르겠네요;;) 나머지 주석들은 프로그램의 명확성을 위해 사용되었습니다.

say_hi 메소드가 좀더 기술적으로 변했습니다.
# Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @names.respond_to?("each")
# @names is a list of some kind, iterate!
@names.each do
|name|
puts "Hello #{name}!"
end
else
puts "Hello #{@names}!"
end
end

@names를 보고 분기를 합니다. 만약에 nil이면 점 세개를 출력합니다.

Cycling and Looping—a.k.a. Iteration

만약에 @names 객체가 each에 반응을 하면 iterator를 사용할 수 있다는 것이고 그것을 사용하여 각각의 사람들에게 인사를 하면 되겠네요.

반복에 대해 좀더 자세히 살펴봅시다.

@names.each do
|name|
puts "Hello #{name}!"
end

each는 코드 블럭을 받아들이는 메소드로써 리스트에 있는 모든 원소들을 상대로 코드 블럭을 실행합니다. do와 end 사이가 블럭에 해당합니다. A block is like an anonymous functionor lambda. 블럭은 파이프들(| |) 사이에 있는 변수가 이 블럭에서 사용될 파라미터입니다.

여기서는 리스트 안에 있는 모든 요소들을 name으로 가리키고 이것을 사용하여  puts "Hello #{name}!" 를 실행했군요.
다른 프로그래밍 언어의 경우 리스트의 요소들을 반복할 때 for loop를 사용합니다.
(C언어 스타일 같은 경우 다음과 같이 표현 합니다.)

for (i=0; i<number_of_elements; i++)
{
do_something_with(element[i]);
}

이것도 작동은 하지만 우아하진 않습니다. 여기서는 i와 같은 변수를 필요로 합니다.
i는 리스트의 길이를 나타내고 리스트에서 어떤 순으로 작업을 할지 알려줍니다.
하지만 Ruby는 좀더 우아한 방법을 사용합니다.
모든 구체적인 것들은 each 메소드 안에 숨겨 놨습니다. 우리가 할일은 오직 리스트안에 있는
각각의 요소들이 each문 안에서 어떠한 작업을 할 것인지만 기술하면 됩니다.

Blocks, the Highly Sparkling Glint on the Edge of Ruby

블럭은 리스트보다 더 복잡한 것들을 다룰 때 사용합니다. 메소드를 가지고 구체적인 것들을 다룰수 있는 것을 물론이고 셋업, 분해, 에러들 또한 다룰 수 있습니다

# Say bye to everybody
def say_bye
if @names.nil?
puts "..."
elsif @names.respond_to?("join")
# Join the list elements with commas
puts "Goodbye #{@names.join(", ")}. Come back soon!"
else
puts "Goodbye #{@names}. Come back soon!"
end
end

say_bye 메소드는 each를 사용하지 않고 대신에 @names가 join 메소드에 반응 하는지를 체크 합니다. 그리고 만약에 반응한다면 join을 사용합니다. 반응하지 않으면 그냥 변수를 문자열로 출력합니다. 이 메소드는 변수의 실제 타입을 신경쓰지 않습니다. 이 메소드가 지향하는 것은 "Duck Typing"입니다. "만약에 오리같은 것이 들어오면 오리처럼 꽥꽥거려라..". 라는 것이죠. 이런것의 장점은 변수들의 불필요한 타입 제약을 가하지 않는다는 것입니다. 만약에 새로운 타입의 리스트를 가지고 온다면 (join 메소드를 구현한 것이여야 겠죠.) 모든 일들이 계획된 대로 진행될 것입니다.

Kicking Off the Script

여기까지가 MegaGreeter 클래스 였고 남은 부부는 이 클래스의 메소드를 호출하여 사용하는 부분입니다. 이게 Ruby in Twenty Minutes 여기서 배울 마지막 트릭이군요.

if
__FILE__ == $0

_FILE_ 이것은 현재 파일이름을 가지고 있는 마술 같은 변수 입니다. $0 은 프로그램을 시작하기 위해 사용되는 파일의 이름입니다. 이 문장은 "만약에 이 파일이 실행되는 파일이면..." 이라는 뜻입니다. 어떤 파일이 그냥 library 로 사용될 것이라면 저 문장에 걸렸을 때 실행되지 안을 것이고 만약에 파일이 실행될 수 있는 파일이면 다음 코드가 실행될 것입니다.

Consider Yourself Introduced

여기까지가 Ruby의 quick tour 였습니다. 하지만 아직 살펴 볼 것들이 많습니다.(제어문, 블럭, 모듈들,,)
Documentation 이곳에 가시면 여러 문서들이 무료로 제공됩니다.
만약에 책을 보고 싶으신 분들은 book list이곳을 클릭하여 살펴보시면 됩니다.



'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

Write a comment.


Ruby in Twenty Minutes 3

RUBY/Getting Started : 2006.09.20 22:40


저번 글에서 만들어 두었던 class의 객체를 생성합시다.


g 객체를 한번 생성하면 그 이름이 Pat이라는 것을 기억하는군요. 흠.. 만약에 name 변수에 직접 접근하면 어떻게 될까요?


오호.. 안되는 군요..

Under the Object’s Skin

인스턴스 변수들은 항상 객체 속안에 숨겨져 있습니다. (인스턴스 변수는 @name 과 같이 @를 붙여서 만드나 봅니다.) 심하게 감춰져 있지는 않고 객체를 조사해보면 그들에게 접근 할 수 있는 다른 방법들이 존재합니다만...Ruby는 data를 숨기기 좋은 객체 지향 접근법을 사용합니다.

그럼 Greeter 객체 안에는 어떤 메소드들이 있을까요?


와오.. 엄청나게 많네요. 여기 보이는 메소드들은 Greeter 객체가 가지고 있는 모든 메소드입니다. 조상(부모도 포함됐겠죠? :)으로 부터 받은 많은 메소드들도 포함되어 있습니다. 만약에 우리가 만든 method들만 보고 싶다면 조상들에게 정의되어 있는 메소드를 보길 원치 않는 다는 의미로 false를 파라미터로 넘겨주면 됩니다.


자 그럼 이제 어떤 method들이 우리가 가진 객체가 반응을 하는지 봅시다:


say_hi와 to_s(어떤 것을 string으로 바꿔주는 method군요. 기본적으로 모든 객체들이 가지고 있습니다.) 그러나 name이란 메소드는 모르네요.

Altering Classes—It’s Never Too Late

만약에 name을 바꾸거나 보고 싶다면 어떻게 해야할까요? Ruby는 객체의 변수에 접근할 수 있는 쉬운 방법을 제공합니다.


Ruby에서는 class를 다시 열어서 수정을 할 수 있습니다. 기존에 이미 만들어져 있는 객체들은 바뀌지 않지만 이 후에 새로 만들어지는 객체들은 영향을 받습니다. 그래서 이제 새로운 객체를 만들고 @name 속성을 가지고 놀아봅시다.


attr_accessor 을 사용해서 getter에 해당하는 name과 setter에 해당하는 name= 두개의 메소드를 정의했습니다.

Greeting Anything and Everything, MegaGreeter Neglects None!

이 greeter 는 그다지 흥미롭지 않군요. 이 class는 오직 한번에 한사람만 다루는데요 여러 사람들에게 인사를 하는 class를 만들 순 없을까요?

그렇게 할 수 것을 Ruby interpreter인 IRB에 직접 쓰는 대신에 파일로 만들어 봅시다.

IRB를 끝내기 위해서 "quir"이나 "exit" 또는 그냥 컨트롤+D 를 입력합니다.

C:\Documents and Settings\keesun>ruby
class MegaGreeter
attr_accessor :names

#Create the object
def initialize(names = "world")
@names = names
end

#Say hi to everybody
def say_hi
if @names.nil?
puts "..."
elsif @name.respond_to?("each")

@name.each do
|name|
       puts "Hello #{name}!"
     end
   else
   puts "Hello #{@names}!"
   end
  end

  # Say bye to everybody
  def say_bye
   if @names.nil?
     puts "..."
   elsif @names.respond_to?("join")
     # Join the list elements with commas
     puts "Goodbye #{@names.join(", ")}.  Come back soon
   else
     puts "Goodbye #{@names}.  Come back soon!"
   end
  end

end

if __FILE__ == $0
  mg = MegaGreeter.new
  mg.say_hi
  mg.say_bye

  # Change name to be "Zeke"
  mg.names = "Zeke"
  mg.say_hi
  mg.say_bye

  # Change the name to an array of names
  mg.names = ["Albert", "Brenda", "Charles",
   "Dave", "Englebert"]
  mg.say_hi
  mg.say_bye

  # Change to nil
  mg.names = nil
  mg.say_hi
  mg.say_bye
end


cmd창을 열고 위처럼 입력한 뒤

컨트롤 + c를 입력하면 위에 입력한 것을 바로 처리합니다.

Hello world!
Goodbye world.  Come back soon!
Hello Zeke!
Goodbye Zeke.  Come back soon!
Hello AlbertBrendaCharlesDaveEnglebert!
Goodbye Albert, Brenda, Charles, Dave, Englebert.  Come back soon!
...
...

위와 같은 결과를 보셨다면 제대로 된 것입니다.

윈도우의 도스창에서 바로 실행시키지 않고.

위의 코드를 ri20min.rb 라고 저장한 뒤 ruby ri20min.rb 를 이용하여 실행하여도 같은 결과를 볼 수 있습니다.

'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

TAG ruby

Write a comment.


Ruby in Twenty Minutes 2

RUBY/Getting Started : 2006.09.19 21:59


저번에 이어 이번에는 "Hello World!"를 매번 전부 타자를 치지 않고 출력하는 방법은 없을 까요?

메소드를 만들어 봅시다.


위와 같이 코딩을 합니다.

def h 는 method 정의 부분을 시작하는 코드입니다. 이것은 Ruby에게 우리가 h라는 이름의 method를 정의하고 있다는 것을 알려줍니다.
다음 줄은 method의 body에 해당합니다. 우리가 전에 봤던 명령줄이랑 같습니다.
마지막으로 end는 Ruby에게 method 정의가 끝났다는 것을 알려줍니다.
Ruby의 nil 응답은 우리에게 method가 정의 됐다는 것을 알려줍니다.

The Brief, Repetitive Lives of a Method

이제는 위에서 만든 method를 몇번 호출해 봅시다.

매우 쉽네요. Ruby에서 method를 호출하는 방법은 method 이름을 부르면 되네요. 만약에 parameter들을 필요로 하지 않는 method라면 이렇게 해도 되는게 맞습니다. 비어있는 괄호를 추가시켜서 부를 수도 있지만 꼭 그럴 필요는 없지요.

만약에 kee sun이 아닌 특정 사람에게 인사를 전하고 싶다면 어떻게 해야할까요? h method가 이름을 parameter로 가지도록 재정의 하면 되겠네요.


몇가지 트릭이 사용되었는데요. 먼저 parameter로 이름을 주면서 method를 호출 해보고 다음에는 paramter가 없는 method를 다시 호출해 보았습니다. default parameter로 kee sun을 주었습니다. 이것은 name으로 오는 parameter가 없으면 "kee sun"을 출력하라는 것이네요.
그리고 원문에는 설명이 나와있지 않지만 아무래도 문자열.capitalize 메소드를 호출하면 문자열의 첫 문자를 대문자로 바꿔주는 듯 하네요.

Evolving Into a Greeter

만약에 진짜 greeter를 원한다면 어떨까요. 당신의 이름을 기억해두었다가 항상 당신에게 존경을 표하는 그런 것 말입니다. 당신은 아마도 그것을 위해 객체를 사용하길 원할 것입니다. "Greeter" class를 만들어 봅시다.


여기 새로 추가된 keyword는 class입니다. 이것은 Greeter라고 이름으로 새로운 class 정의 하고 class안에 method들을 정의합니다. @name 은 class내의 다른 method들에서 접근이 가능한 instance 변수 입니다. say_hi 와 say_bye 에서 사용한 것을 확인할 수 있습니다.



오늘은 여기까지 입니다. 다음 번에는 객체를 생성하여 사용하는 것을 살펴보겠습니다.


원문 : http://www.ruby-lang.org/en/documentation/quickstart/2/

번역 + 편역 : 기선

'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

TAG class, method, ruby
  1. Favicon of https://springframework.tistory.com BlogIcon 영회 2006.09.20 01:55 신고 PERM. MOD/DEL REPLY

    여기 루비 얘기 좀 있더라

    http://beyond.daesan.com/

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.09.20 10:14 신고 PERM MOD/DEL

    와오.. 그렇군요 ㅎㅎ 감사합니다.

Write a comment.


Ruby in Twenty Minutes 1

RUBY/Getting Started : 2006.09.18 12:01


http://www.ruby-lang.org/en/documentation/quickstart/
위 링크를 따라하며 글을 씁니다.

Introduction

이것은 20분정도 걸리는 짧은 tutorial입니다. 이미 Ruby를 설치했다는 가정하에 시작하겠습니다.

Interactive Ruby

IRB를 실행합니다.
  • Mac OS X 사용자는 터미널을 열고 irb를 type한뒤 enter를 칩니다.
  • Linux 사용자는 쉘을 열고 ibr를 type하고 enter칩니다.
  • Windows 사용자는 Start menu의 Ruby section에서 fxri를 엽니다.


위와 같은 화면이 뜹니다.

콘솔에서 "Hello World"를 입력합니다.


위와 같이 출력됩니다.

Ruby Obeyed You!

두번째 줄에 나타난 것은 IRB가 마지막 expression이 수행되었다는 것을 우리에게 알려주는 방법입니다. 만약에 "Hello Wrold!"를 출력하기 원한다면 조금만 더 추가하면 됩니다.

puts는 Ruby에서 뭔가를 출력하는 기본 명령어 입니다. 그럼 => nil은 무엇일까요?
expression의 결과 입니다. puts는 항상 nil을 return합니다. nil은 Ruby의 absolutely-positively-nothing value입니다.

Your Free Calculator is Here

IRB는 또한 기본 계산기로도 충분히 사용할 수 있습니다.

위의 연산 결과를 보시면 직관적으로 알 수 있습니다. ** 는 제곱 연산을 할 때 사용하네요.
Math.sqrt(9)는 Java에서 사용하던 Math class와 같은 방법으로 사용하는 것을 볼 수 있습니다.

Modules, Group Code by Topic

Math는 수학을 위해 만들어져 있는 모듈(built-in module)입니다. 모듈들은 Ruby에서 두가지 역할을 합니다. 여기서는 한가지 역할을 보여 줍니다: 비슷한 method들을 비슷한 이름으로 모아 두는 것입니다. Math는 sin()이나 tan()과 같은 method들 역시 포함하고 있습니다.

다음은 dot(쩜)입니다. dot이 한일이 무엇인가요? dot은 message의 수신자를 어떻게 식별하는지를 나타냅니다. message가 무엇이냐구요? 이번 경우에는 parameter인 9를 가지고 square root를 구하라는 method를 호출한다는 의미의 sqrt(9)가 message입니다.

method 호출의 결과값은 3.0입니다. 여기서 여러분은 아마 3이 아니라는 것을 알아차렸을 것입니다. 이것은 보통 square root가 정수가 아니기 때문입니다. 그래서 이 method는 항상 소수점을 가진 수를 return합니다.

만약에 우리가 이 연산의 결과를 기억하고 싶다면 어떻게 해야할까요? 변수에 결과를 대입하세요.


총 4 단계로 이루어진 글인데요. 일단 여기서 1 단계를 마칩니다.

'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

Write a comment.


Ruby Is an Object-Oriented Language

RUBY/Manual : 2006.09.17 12:13


Ruby.new


이 책을 Top-down방식으로 구성하기 위해서 class와 object가 먼저 나오고 그 다음에 세부적인 문법들을 다루려고했지만 string이나 if문 연산자와 같이 기본적인 것을 모르면 class의 예를 들기가 어렵기 때문에 전체적으로는Top-down 방식으로 기술하지만 거기에 사용된 예를 이해하기 위한 세부적인 것 까지 추가하여 다르게 됩니다.

그럼 이제 부터 Ruby를 시작하기에 앞서 Ruby의 중요한 특징과 Ruby에서 사용되는 특별한 단어들에 대한 짧은 tutorial을 보겠습니다.

Ruby Is an Object-Oriented Language

Ruby는 진짜 객체지향 언어 입니다. 당신이 만들어 내는 모든 것이 객체 이고 그것들의 연산의 결과 역시 객체입니다. 하지만, 많은다른 언어들도 똑같이 객체 지향이라고 주장하며, 종종 객체 지향에 대한 다른 해석과 그들만이 사용하는 개념에 대한 다른 용어들을가지고 말을 합니다.

따라서 보다 세부적인 내용을 살표보기 전에, 먼저 우리가 사용할 용어들을 간략히 살펴봅시다.

Class는 state와 state를 사용하는 method들의 combination입니다.
(아래는 원문입니다.)
A class is a combination of state (forexample, the name of the song)and methods that use that state (perhapsa method to play the song).
Object는 class instance와 같은 말입니다.
(아래는 원문입니다.)
The word objectis usedinterchangeably with class instance (and being lazy typists,we'llprobably be using the word ``object'' more frequently).
Ruby는 이런 객체들은 생성자를 호출해서 만들 수 있습니다. 생성자는 class와 관련된 특별한 메소드 입니다. 기본 생성자는 new 를 통해서 불려집니다.

[CODE]song1 = Song.new("Ruby Tuesday")
song2 = Song.new("Enveloped in Python")
# and so on[/CODE]

이런 객체들은 같은 class로 부터 생성되었지만 그들은 각각 유일한 특성들을 가지고 있습니다.
먼저, 모든 객체들은 유일(무이)한 object identifier(짧게 object id라고도 합니다)를 가지고 있습니다.둘째,  당신은 instance variables을 정의할 수 있습니다. instance variable이란 각각의 객체에유일한 값을 가지고 있는 변수들을 말합니다. 이러한 변수들은 객체의 상태를 나타냅니다.

각각의 class들은 또한instance method들을 정의할 수 있습니다. 각각의 method는 자기 자신에 의해 호출되거나 class 밖에서호출되는 기능의 덩어리 입니다. 이러한 instance method들은 객체의 instance 변수와 객체의 상태에 접근할 수있고 습니다.

Method들은 객체에 메시지를 보내어 호출 됩니다(are invoked). message는method의 이름과 method가 필요로 하는 parameter들이 딸려 있습니다. 객체가 message를 받으면 해당하는method를 자신의 class에서 찾습니다. 만약에 발견하면 그 method는 수행되며 만약에 찾지 못하면...이 부분은나중에 다루겠습니다.

복잡하게 들릴지 모르겠지만 실제로는 매우 자연스럽습니다. 몇몇 method 호출을 살펴보겠습니다.(기억하세요 code 예제에 있는 화살표는 리턴되는 값을 보여줍니다.)

"gin joint".length » 9
"Rick".index("c") » 2
-1942.abs » 1942
sam.play(aSong) » "duh dum, da dum de dum ..."

Here, the thing before the period is called the receiver, andthe name after the period is the method to be invoked.  <- 무슨말인지 모르겠네요;
첫번째 것은 string의 길이를 요청했고, 두번쨰는 c가 몇번째에 있는지 알려달라고 했습니다. 세번째는 절대값을 마지막은 sam에게 노래를 불러 달라고 요청했습니다.

이쯤에서 다른 언어들과 Ruby의 차이를 말해야겠네요. Java에서는 어느 수의 절대값을 알고싶을 때 그 수를 따로 분리 되어 있는 함수를 호출하면서 인자로 넘깁니다. 아마도 다음과 같이 사용할 것입니다.
[CODE]number = Math.abs(number)     // Java code[/CODE]
Ruby에서는 절대값을 구하는 기능은 숫자들에 내장되어 있습니다. 세부사항은 숫자들이 내부적으로 알아서 관리합니다. 당신은 간단하게 abs message를 보내면 되는 것입니다.
[CODE]number = number.abs[/CODE]
이러한 것은 모든 Ruby객체에 적용됩니다: 이밖에도 C언어 에서는 strlen(name)이런 방법을 사용할 것을 Ruby에서는name.length를 사용합니다. 바로 이 부분이 우리가 Ruby가 진짜 객체 지향이라고 말하는 이유입니다.

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.


Ruby 설치하기

RUBY/Getting Started : 2006.09.16 11:24


http://www.ruby-lang.org/en/downloads/
위 링크에서 글을 보고 있습니다.

저는 windows에서 해볼 것이기 때문에 아랫 부분만을 봤습니다.

Ruby on Windows

TheWindows platform has several options for installing Ruby. The firstoption is simply installing the compiled binaries. The second option isto use the one-click installer. If you’re unsure about how to installRuby, the one-click installer may be the best option for you. (Inaddition to Ruby, the one-click installer also comes with a bunch ofadditional libraries built in.)


두 가지 방법이 있는 하나는 컴파일 된 바이너리 파일들을 설치하는 것이고 다른 방법은 훨씬 간펴한 원클릭 인스톨러로 설치하는 것이군요.

당연히;; 간편하게 원클릭 인스톨러를 다운 받습니다.

윽.. 인터넷이 느린건지 시간이 좀 걸리네요..

다운받는 동안
http://tryruby.hobix.com/
이 곳에서 Ruby를 체험해 볼 수 있습니다.

와.. 엄청나네요.. 이걸 어떻게 만들었을지.. 정말 아이디어 부터 디자인, 개발 한 것 까지 정말 대단하네요.. 시간가는 줄 모르고 빠져들었습니다. ㅋ 다운로드가 다 됐슴에도 불구하고 끝까지 따라 해보고 있습니다.

역시 설치는 클릭 몇번이면 끝나는 군요.

freeRIDE라는 IDE를 실행하고 다운받는 동안 놀아봤던 간단한 문장 몇개를 적은 뒤 run을 실행해 봤습니다.
그러나.. window에서 사용할 때는 debug 옵션에서 무언가 체크해줘야 한다는 에러메시지가 출력되더군요.
그래서 옵션이 어디있는가 찾아 보다가.. debug를 클릭했더니 ㅜㅜ 얼었네요.. 아 갈길이 머네요. 오늘은 한탬포 쉬겠습니다.




'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

TAG install, ruby

Write a comment.


Roadmap

RUBY/Manual : 2006.09.16 10:13


http://www.rubycentral.com/book/roadmap.html
위에 링크된 페이지를 보며 글을 작성합니다.

이 책은 총 네 파트로 나뉘어 지는데 다음과 같습니다.

In Part I, Ruby의 다양한 측면, Ruby tutorial을 보시게 됩니다. Ruby를 특별하게 하는 용어들과 개념에 대한 짧은 챕터들로 시작합니다. 물론 이 챕터들은 다른 챕터를 이해하기 위한 충분한 기본 문법도 제공합니다. tutorial은 top-down 방식으로  이 언어를 살펴볼 것입니다. 따라서 classes, objects, types , expressions 과 언어를 구성하는 모든 것을 살펴 볼 것입니다. 우리는 또한 문제가 발생했을 때 당신을 도울 수 있는 간략한 챕터로 마무리를 할 것입니다.

Ruby의 가장 멋진 점 중에 하나가 바로 주변 환경과 얼마나 잘 통합되느냐 입니다.
Part II, Ruby in Its Setting, 이부분을 공부하세요. 이 부분에서 당신은 Ruby를 실행하고, web에서 Ruby를 사용하기 위한 실용적인 정보를 찾을 수 있습니다. 당신은 Tk를 사용해서 어떻게 GUI를 생성하는지, 그리고 MS Windows 환경에서 Ruby를 어떻게 사용할지(native API calls, COM integration, Windows Automation) 배우게 될 것입니다. 결국에 Ruby를 확장하거나 당신의 code에 Ruby를 심는(embed) 것이  얼마나 쉬운지 알게 될 것입니다.

Part III, Ruby Crystallized, 이 부분은 매우 구체적인 내용을 포함하고 있습니다. 이 부분에서 당신은 언어의 매우 섬세한 모든 부분(the metaclassmodel, tainting, reflection, and marshaling)에 대해 볼 수 있습니다. You could probablyspeed-read this the first time through, but we found ourselves usingthe tables in this section even as we were writing the rest of thebook.


The Ruby Library Reference is Part IV. 매우 큽니다. 우리의 40개 이상의 기존에 만들어진 class와 mudule들에 있는 800개가 넘는 method들을 문서화 했습니다. It's big. We documentover 800 methods in more than 40 built-in classes and modules. 그중에서도, 우리는 Ruby에 있어 좀더 유용한 library module들 중 일부를 70페이지에 걸쳐 기술했습니다.


자 그럼 이책을 어떻게 읽어야 할까요?

그문제는 당신에게 달려있습니다. 당신의 일반적인 programming에 대한 level과 일부는 OO에 따라 당신은 이 책의 아주 적은 부분만을 읽기를 원할 것입니다. 그래서 우리가 다음과 같이 추천해 드립니다.

만약에 당신이 초보자라면, Part 1부터 읽기 바랍니다. 프로그램들을 작성할 때 library reference를 가까이 두기바랍니다. Array, Hash와 String같은 기본 class에 친숙해 지기 바랍니다. 환경에 점차 익숙해 짐에 따라, 당신은 Part 3에 있는 좀더 세밀한 부분을 알고 싶어질 것입니다.

만약에 자신이 Perl, Python, Java, or Smalltalk들에 익숙하다면,Chapter 2 부터 읽기를 제안합니다. 여기서 당신은 책을 따라 천천히 꾸준하게 책을 읽을 수도 있으며, 모든 부분을 skip하고 Part 3의 세밀한 부분으로 갈 수있습니다.

전문가들과 ``I-don't-need-no-stinking-tutorial'' 타입의 사람들은 199page부터 시작하는 Chapter 18에 있는 reference로 바로 뛰어 들 수 있습니다. library reference를 대강 살펴보더나 coffee coaster로 책을 사용할 수 있습니다.

물론, 책을 처음부터 읽거나 자신이 원하는 대로 읽어도 괜찮습니다.

아 그리고 잊지마세요. 만약에 자신이 알아 낼 수 없는 문제가 발생했을 때 도움을 드립니다. page 525쪽 부터 시작하는 Appendix C에 많은 정보가 있습니다.

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.