달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
MVC 패턴을 이용하여, 기본적인 페이지를 만드는 것은 별로 어렵지 않다. 그리고 scaffold를 이용하여 기본적인 뼈대를 만들어서 원하는 기능을 살을 붙이듯이 개발해 나갈 수 있다.
Active Record는 데이터 레이어와 비스니스 레이어를 위해서 데이터를 관리하고 쉽게 사용할 수 있도록 도와준다.


6. Active Record
    : Active Record는 레일즈 애플리케이션과 데이터베이스 간의 연동을 담당한다.
    : 액티브 레코드에서는 레코드 객체를 통해서 데이터베이스 테이블을 조작한다.
    : 각각의 레코드는 데이터베이스 테이블에서 각각의 행과 대응하고, 각각의 액티브 레코드 객체는 데이터베이스 조작에 필요한
      CRUD(생성, 읽기, 수정, 삭제)메소드들을 가지고 있다.
 
    6.1 Active Record의 3가지 특징
        : 설정 대신 컨벤션 이용: 규약에 따라서 필요한 규칙들을 암묵적으로 정의하여 사용한다.
        : 멘타 프로그래밍: 데이터베이스 테이블에 정의된 컬럼들을 찾아서 대응되는 객체의 속성으로 추가하는 작업을 자동을 해준다.
        : 맵핑 언어: 맵핑 언어를 사용하여 테이블 간의 관계를 지정한다.
 
7. Database 설정
    : Active Record를 이용아혀 여러가지 Data base를 사용할 수 있지만, 나는 sqlite의 사용을 위한 database을 설정하려한다.
    : "config"디렉토리 아래의 database.yml 파일을 다음과 같이 설정한다.
    
    -Code in database.yml-

        development:
          adapter: sqlite
          database: db/photos_development

        test:
          adapter: sqlite
          database: db/photos_test
        production:
          adapter: sqlite
          database: db/photos_production

     7.1 Shema Migration

        : 아래와 같이 Model을 생성한다.

        => ruby script/generate model Photo

        : 위 코드를 통해서 app/modes/photo.rb 파일안에 모델 객첵가 생성된다.

        : Shema Migration을 통하면 데이터베이스와 독립적인 스키마를 구성할 수 있다.

     

    7.2 Shema Migration 설정

        : "config/enviroment.rb"파일을 열어 "config.active_record.schema_format = :ruby"로 설정해주면되나,

        : RubyOnRails 1.1 이후 버전은 이 값이 기본 설정 값이므로, 변경할 필요는 없다.

 

    7.3 up/down 메소드 설정

        :"db/migrate"디렉토리의 001_create_photos.rb 파일을 열고 다음과 같이 수정한다.

        

        -Code in 001_create_photos.rb-

        class CreatePhotos < ActiveRecord::Migration
          def self.up
            create_table :photos do |photo|
              photo.column "filename", :string
            end
          end

          def self.down
            drop_table :photos
          end
        end
 

 8. 기본 액티브 레코드 클래스

    : 마이그레이셔이나 SQL명령, 어느 것을 사용하더라도 작명 규약을 반드시 지켜야 한다.

    : 테이블 이름이나 id 컬럼의 정의등 모두 작명규약에 따라서 이름이 만들어진다.

 

    8.1 Rails의 작명 규약

        :클래스와 테이블 이름

            . 레일즈는 액티브 레코드 클래스 이름의 영문 복수형을 데이터베이스 테이블 이름으로 간주하여 테이블을 찾는다.

        :식별자

            . 액티브 레코드는 "id"란 이름의 컬럼을 찾아 유일한 식별자로 사용한다. "id"컬럼은 정수형이어야 하며, 데이터베이스는

              이 컬럼을 키로 사용해야 한다.

        :외래키

            . 외래키는 <clise>_id 의 형태로 이름이 지어져야 한다.

        : 대문자 표기

            . 클래스를 정의할 때 클래스 이름은 각 단어의 첫번째 글자는 대문자로 하고 단어 사이의 공백을 없앤다.

            . 메소드, 데이터베이스테이블 이름, 컬럼 이름. 속성 이름, 심벌 이름등은 단어 사이의 공백을 '_'문자로 대체한다.     

 9. Rails Console
    : 레일즈 콘솔은 데이터베이스와 모델 간의 유기적인 작업을 할 수 있도록 해준다.
    : 이는 다음과 같은 작업을 하도록 도와준다.
        . 데이터 베이스와 연결한다.
        . app/model에 있는 액티브 레코드 클래스들을 불러온다.
        . 데이터베이스와 모델 간에 데이터베이스 작업을 포함하여 유기적인 작업을 할 수 있게 해준다.
    : 다음과 같이 실행한다.
    => ruby script/console

디버깅과 개발에 활용할 수 있는 콘솔화면이 실행됨을 볼수 있을 것이다.
참고로, 나의 개발 환경이 윈도우 이므로 "ruby + command"의 형태롤 도스모드에서 명령을 실행하고 있다.
:
Posted by 행복상자
최근에 Ruby on Rails를 2.2로 업그레이드 하고,  몇가지 테스트 하면서 다시 공부하를 시작하고 있다.
나름대로 전문가라고 자부하는 경력 5년의 김정현 책임이 요즘 너무나 바빠서 몇가지 물어보려해도 연락 자체가 어려운 실정이다.

작년에 공부하면서 정리했는 문서가 있는데, 이는 한빛 출판사에서 번역한 책으로 "Ruby on Rails: Up and Running"라는 제목을 책을 공부하면서 정리한 것이다. 이책에 대한 정보는 "[도서 추천] Ruby on Rails(초고속 웹 개발의 시작)" 라는 제목으로 이전에 쓴 글이 있는데, 이를 참조하면 책을 이해하는데 도움이 될 것이다.
하지만 최근에 나온 2.2버전과 2.3 버전은 책의 예제를 따라가다보면, 뭔가 이상하다고 느낄 것이다.
다시 말해서, 정상적으로 동작하지 않는다. 왜냐하면 책은 1.2 버전을 기준으로 작성되었기 때문이며, 예제를 테스트하려면, Ruby on Rails 1.2 버전을 설치해야 한다.

내가 이전에 정리하고, 다시 정리한 자료는 이전 버전(1.2)을 기준으로 작성되었다. 정리가 마무리되면 2.2버전으로 차이점과 사용법을 다시 정리할 예정이다.

아래 정리한 내용을 간략하게 소개하면, 기본 환경은 만들고, 서버를 실행하고 간단하게 MVC 프레임워크에 따라 테스트 페이지를 만드는 방법을 순서대로 정리하였다. 


1. Ruby On Rails 환경 만들기
    : Rails의 환경은 만들기 위해서는, 아래와 같이 실행을 시키면 "myApps"라는 디렉토리 아래 관련된 폴더와 파일들이 생성된다. 
    => Rails myApps
 
2. Server Test
    : Rails에서 기본으로 제공하는 WEBrick 서버를 실행시키기 위해서는 아래와 같은 명을 실행하면 된다.
    => ruby script/server
    
    :위와 같이 이를 실행하면, 기본 포트로 3000번을 사용하게된다.
    : 테스트는 다음과 같이 웹브라우져에서 실행한다. http://localhost:3000

 

3. Server의 Port및 환경 수정
    : port 및 기본 설정 사항을 수정하기 위해서는 script/server 스크립트를 수정하면 된다. (text edit에서 수정가능)
 
 
    3.1 script/generate options
        : 아래과 같이 console창에 입력하고 실행하면, Parameter를 입력에 대한 사용법이 표시된다.
        => ruby script/generate
            Usage: script/generate [options] generator [args]
 
            Rails Info:
                -v, --version                   Show the Rails version number and quit.
                -h, --help                       Show this help message and quit.

            General Options:
                -p, --pretend                  Run but do not make any changes.
                -f, --force                      Overwrite files that already exist.
                -s, --skip                       Skip files that already exist.
                -q, --quiet                     Suppress normal output.
                -t, --backtrace               Debugging: show backtrace on errors.
                -c, --svn                       Modify files with subversion. (Note: svn must be in path)


 
4. Controller 생성하기
    : Rails즈의 구조와 Server가 정상적으로 동작하면, 다음과 같이 Controller를 생성할 수 있다.
    => ruby script/generate controller Greeting
    : 생성시, 이전에 만들어진 folder 또는 파일은 skip하고, "Greeting"을 위한 새로운 파일들이 생성됨을 볼수 있다.
 
    4.1 생성된 Controller 테스트
    : 생성된 greeting controller의 동작을 확인하시 위해서 웹브라우저의 주소창에 다음과 같이 실행한다.
    => http://localhost:3000/greeting  (greeting 만 붙여주면 된다.)
    : 그러나 이는 정상적으로 동작하지 않는다. 왜냐하면 빈 껍데기만 생성되어져 있기 때문이다.
    : app/controllers 폴더의 "greeting_controller.rb"를 열고 아래과 같이 코드를 추가,수정한다.
 
        class GreetingController < ApplicationController
          def index
            render :text=> "<h1>Welcome to your first Rails application</h1>"
          end
        end
    
5. View 생성하기
    : view에서 Controller에서 전달해준 데이터를 표시하기 위해서는 view를 생성하면 된다.
    : 아래는 controller과 view를 동시에 생성하는 것인데, 기존에 생성한 controller을 유지하려면 "n"을 누르면 된다.
    => ruby script/generate controller Greeting index
    : app/views/greeting/ 디렉토리 아래 index.rhtml 파일 생성된 것을 console창에서 볼 수 있다.
    : 이전에 생성한 greeting_controller.ry파일에서 index 메소드는 그대로 두고 code만 삭제한다.
    : 브라우져에서 새로 고치기를 하면 새로 만든 뷰가 보여지는 것을 확인할 수 있다.
 
    5.2 Controller와 view 연동하기
    : controller에 @welcome_message 인스턴트 변수를 추가한다.
    -Code in greeting_controller.rb-
        class GreetingController < ApplicationController
          def index
              @welcome_message ="Welcome to your first Rails application"
          end
        end

     -Code in index.rhtml-
        <h1><%= @welcome_message %></h1>
        <p>Find me in app/views/greeting/index.rhtml</p>
 
    : 브라우져를 새로고침해서 원하는 결과가 나왔는지 확인해 보자.

당연히 원하는 결과가 나올 것이다.
:
Posted by 행복상자
오전에 있었던 강좌에 이어서, 오후에 있었던 3개의 강좌들이다.
사실 모든 강좌들을 다 보게되면, 약 7시간 정도가 필요하다. 전부를 한번에 들어 볼수는없지만, 주제별로 나누어 보면 큰 도움이 될거라 생각이 든다.
강의에 사용되었던 자료들에 대한 링크도 추가한다.

Individual slide sets in PDF format:
:
Posted by 행복상자
이번이 계획하였었던 내용으로는 마지막이다.

  - Eclipse에서 hsqldb 사용하기(1)
  - Eclipse에서 hsqldb 사용하기(2)

지난번까지 해 왔던 작업들을 정리하면, 먼저,Jave와 Eclipse 환경에서 개발하기 위해서 hasqldb.jar를 Spring Framewor의 Libray디렉토리로 부터 복사해서 Eclipse의 "lib" 디렉토리에 넣어, Eclipse와 Ant로 Build 시 사용할수 있도록 환경을 만들어 주는 것을 배웠다.

그리고, Ant로 빌드하기 위해서, Data Source를 Propeties로 부터 참조할 수 있도록 별도의 파일로 나누었고,이를 참조하는 방법에 대해서 배웠다.

이번에는 지난번에 작성하였던 "Build.xml" 파일이 정상적으로 동작하는지 실행해보고, 실제로 생정한 값들이 새로 만들어진 Table에 추가되었는지를 Eclipse의 Plug-in을 통해서 확인하는 방번에 대해서 이야기 할 것이다.

우선, 가장 먼저 해야 할 일은, 지난 번에 만들어 놓은 배치 파일(server.bat)을 이용해서, hsqldb 서버를 실행시켜 주어야 한다.

나의 경우는 배치파일에 아래와 같이 정의 되어 있다. 물로 도스 창에서 Typing해서 실행할 수 있지만, 자주 사용하는 것이므로 배치파일로 만드는 것이 편리하다.

java -classpath ..\war\WEB-INF\lib\hsqldb.jar org.hsqldb.Server -database test

도스창이 뜨로 정상적으로 실행이 되었으면, 이제 본격 적으로 실행을 시켜 보겠다.

내가 사용하는 Eclipse버전은 Eclipse IDE for Java EE Develosers 버전을 www.eclipse.org 에서 다운 받아 사용하는데, 이유는 WTP(Web Tools Platform) 이 이미 포함되어 있어서 별도로 설치할 필요가 없기 때문이다.

먼저 Elclipse에서 Ant를 실행 시켜 보도록 하자.

Eclipse IDE 왼쪽 하단에 있는 툴바의 제일 왼쪽에 있는 버튼을 클릭을 한다.
(아래 그림 참조)

그러면 아래와 같은 pop-up 창이  나타날 것이다. 메뉴 항목중에 Ant를 찾아서 클릭을 해줌면 Ant의 View 윈도우가 나타난다.


만약 위 pop-up창에서 Ant 메뉴가 보이지 않으면, 위 그림 하단에 있는 "Other..."를 선태하거나, 단축키(Alt-Shiff+Q, Q)를 눌러서 아래의 "Show View" 윈도우를 호출한다.
여기서 "Ant"를 찾아 선택한다.(아래 그림 참조)


그러면 아래와 같이 Ant의 View 화면이 나타나게 된다.(사실 여기서는 Build.xml을 선택한후 Ant View를 띄우는 순서로 진행한것이다.) 
우리는 Table을 생성을 하려고 하는 것이므로 아래 그림의 왼쪽에 있는 트리에서 "ceate Tables"를 더블 클릭한다.그러면 아래와 같이 "Ant Cofiguration Selection"창이 나타 나는데 여기서는 "createTables"라는 항목을 실행 시킨다.
 
그러면 Eclipse IDE의 Consol 창에 테이블 생성이 성공 되었다는 메시지가 아래와 같이나타날 것이다.

자 그러면 이제는 Sample 데이터를 만들어 보자.
이 것도 역시 지난번에 만들어 놓은 Built.xml에 있는 스크립트를 이용하면 된다.
이번에도 Eclipse의 Ant View에서 실행 시켜 보겠다.
단추키 "Alt+Shift+Q, Q"를 이용하여 "Show View"창을 띄우고,"Ant"를 선택하면 아래와 같이 "Ant View"창을 나타날 것이다. 여기 트리에서 "loadData" 선택해서 Table을 생성했던고 마찬가지로 실행을 시킨다.


Ant는 아래와 같이 만들어 놓은 스크립트를 참조해서 데이터를 hsqldb에  생성하게 되는데, 생성되는 과정은 Eclipse IDE의 Console창의 로그를 통해서 확인이 가능하다.

자 이번에는 위의 3개의 Data가 정말로 DB의 Products 테이블로 잘 생성되어는지를 Eclipse의  Plugin을 통해서 확인해 보자.

현재 사용하고 있는 IDE에 Database를 관리해 주는 Plugin View가 없다면, 이미 여러번 사요해본 단추키 "Alt+Shift+Q, Q"를 이용하여 "Show View"창을 아래와 같이 띄우고, 창의 상단에 "data"라고 입력한다. 이때 아래의 트리는 관련된 기능들을 보여주는데,여기서 아래와 같이 "databases" 를 선택한다. 


아래의 DatabasesView창의 상단 툴바 메뉴에서 "Add"버튼을 클릭한다.
(왼쪽에서 2번째 버튼, 마우스를 가져다 대면 툴팁이 나타난다.)


그러면 Database Connection을 추가 할 수 있도록 아래와 같이 창이 나타난다.
나는 여기서 "Connetion name"을 "hSqlServe"이라고 넣었다.



위 화면에서 "Next >"버튼을 눌러서 아래와 같이 Connection 정보를 설정하는 화면으로 이동을 한다. 이미 드라이버에 대한 정보가 있다면, Combobox에서 hsqlDriver를 선택하면 되지만, 만약 없다면 "Add..." 버튼을 눌러서 드라이버 정보를 추가해야 한다.


위와 같이 설정이 되면, "Test connection"버튼을 눌러서 Connection 테스트를 해본다. 성공했으면, "Finish"버튼을 눌러서 "Databases View"창에 추가한다.

성공적으로 완료가 되었다면 아래와 같이 Tree에 추가되어 나타날 것이다.
Ant를 이용해서 추가했던 Sample 데이터를 보기 위해서는 Tree에서 우리가 보기 원하는 "PRODUCTS" 테이블을 더블클릭해 주면 된다.


그러면 그 결과 테이블들이 다음과 같이 Eclipse IDE에 나타나게 된다.


Ant를 이용해서 생성했던 3개의 새로운 데이터가 성공적으로 추가된 것이 보인다.

지금까지 여러가지를 보아왔다. hsqldb에 대한 설명은 없었지만, 개념상으로 알아두면 된다. 그리고 이는 단지 hsql을 위한 기능이 아니라, 다른 Database에 대해서도 동일하게 적용이 가는하다. 단지 여기서 이를 두고 설명한 것은 가볍고, 설치가 용이하기 때문에 이를 예제로 사용한 것 뿐이다.

그리고, Ant build를 이용하여 개발에 반복적인 작업들을 처리하도록 하였는데, 사실 이부분은 개발뿐 만 아니라 자신이 만든 코드에 대한 Unit Test에도 상당히 도움이 된다. 테이블을 생성해서 데이터를 읽는 테스트 코드를 만들고 초기화 하는 부분을 반복적으로 사용한다면, 굉장히 도움이 많이 될것이다.

마지막으로 Eclipse의 IDE에 추가해서 사용했던 Plugin은 설명한 것 말고도 다른 유용한 것들이 있다. 그러나 이 역시 지금 추가해서 사용했던 것과 대동 소이 할 것이다.

마지막으로 여기에서 사용하였던, 예제로 사용한 파일 3개와 Build.xml 파일을 아래에 추가해 놓겠다. Eclipse Project의 "db/" 디렉토리에서 생성한 파일 들이다.

 




:
Posted by 행복상자