얼마전에 Ruby on Rails를 2.2.2하였었는데, 오늘 또 2.3.2버전으로 update하였다.
이전에도 2.3버전이 곧 나올거라는 것은 알고 있었고, RubyOnRails사이트에서 보여지는 개발문서들은 2.3 버전을 기준으로 외부로 공개되었었다.(2.3버전을 기준으로 쓰여졌다는 말임)

Rails 2.2.2를 2.3.2 버전으로 업그레이드 하는 것은 아주쉽다. 이미 여러차례 gem을 이용하여 플러그인들과 Library들을 설치해본 경험이 있기때문이고, 쉬운 사용법 때문이다.

내가 작년에 진행했던 프로젝트는 나른대로 처움에 잡았던 컨셉과 기능들이 잘 설계되었다고 생각하였다.
하지만 개발자들의 빠르게 효율적으로 만들어주고, 좀 더 쉽게 개발할 수 있도록 도와주려 했넌 나의 생각은 여지없이 무너지고, 결국 EJB에 버금가는 또 하나의 무거운 괴물을 만든것이 아닌가라는 생각이 자주든다.

개발과 테스트 그리고 배포시의 패키지 또는 개발된 리소스를 이용하는 방법은 달라야한다.
Rails에서 배포는 gem을 이용하는데, 개인적으로는 간단하고 단순한것이 마음에 든다.

기본적으로 Gem을 이용하기 때문에 최신 버전을 받는것은 간략하게 "gem install rails" 라고 Command창에서 실행하기만 하면 된다.
이를 실행하기 전에 현재 설치 되어 있는 Rails 버전을 아래과 같이 확인할 수 있다. 
명령창에 "rails -v" 라고 입력하고 실행하면 된다.
  

현재 설치 되어 있는 Rails의 버전은 2.2.2 이다. 이제 새로 배포되기 시작한 Rails 2.3.2를 설치할 텐데, 위에서 한번 언급했던 "gem install rails"라고 실행을 하거나 "gem install rails -y"을  주고 실행을 시키면 된다. 이때 사용하는 "-y" 옵션은 설치에 필요한 패키지들에 대한 dependency가 있는 모듈 역시 자동으로 설치하도록 도와준다.
여기서는 위의 그래에서 처럼 "-y" 옵션을 사용하여 "gem install -y"를 명령행에서 실행시켰다. (아래 그림 참조)


설치 명령에 따라서, 업그레이드에 필요한 Rails의 필수 6개의 피키지들이 위와 같이 설치가 되고 있다. 먼저 기본 6개의 패키지들이 설치가 되고, 이어서 필요한 문서들이 함께 설치가 되고 있는 중이다.

Rails와 문서들의 설치가 완료되면, 아래와 같이 Rails의 버전을 확인해서 설치가 정상적으로 완되되었는지 다시 한번 확인하면 설치는 마무리 된다.


Posted by 행복상자

지난 몇주 동안 Ruby on Rails를 가지고 이것 저것 테스트도 하고 공부를 하고 있는 중이다. 그리고 RedRails 플러그인을 Eclipse에 설치하여 몇가지 셈플도 만들어 보았는데, 예전에 사용해 보았던 RedRails 0.8, 0.9 버전보다 사용하기도 편해졌고, Console창에서 Scaffolding을 이용하여 파일을 생성하는 것보다 더 가볍고 빠르다는 느낌이 든다.
이는 아마도 백그라운드에서 Ruby이 VM이 떠 있는 상태에서 실행되기 때문일거라 생각된다.
Console창으로 Rails를 실행하는데 익숙한 개발자를 위하여, RedRails는 Console 모드를 추가되었다.

RedRails를 설치하는 방법에 대해서 간략하게 설명하려고 하는데, 다음과 같은 순서로 진행하면 된다.

RedRails는 http://www.aptana.com/에서 다운을 받아 독립적으로 실행되는 프로그램으로 설치하거나 Eclipse의 Plugin형태로 설치가 가능하다.
윈래 RadRails는 개인 개발자가 혼자 개발하다고, Aptana라는 회사로 이적하면서, 개발되고 수정되고 있는, 공개 Plugin인데, Aptana라는 회사는 웹 개발을 위한 개발 툴과 Eclipse 플러그인을 개발하고 있는 회사로, 툴들이 제법 사용할 만한 가치가 있다. 

먼저 http://www.aptana.com/studio/download 로 이동해서, 설치 버튼을 누르면, 플러그인 설치를 위한 설명 페이지로 이동하게 된다.  Eclipse에서 RedRails 플로그인을 설치하기 위해서는 먼저 Aptana Studio를 설치해야 하는데, 이는 Eclipse의 Help > Software Update... 메뉴를 선택하면 아래와 같은 화면이 나타나는데, 차의 우측의 Add Site...버튼을 클릭하고 Remote Update를 위해서 다음과 같은 URL을 입력 필드에 입넣어주고 저장한후 상단의 Install...버튼을 클릭하여 실행을 시켜면 아래 그림과 같이 진행이 될 것이다. 
        * Add Site...:   http://d3kp2jit5ckrb9.cloudfront.net/3.2/ 
         



설치할 Plugin들을 다운로드하면 아래와 같이 설치 항목들을 확인하는 창이 나타난다. 당연히 "NENT"버튼을 클릭해서 다음 단계로 넘어간다.
 


그러면, 아래와 같은 화면이 나타나는데, 라이센스에 관련된 내용이므로 동의하고 다음단계로 넘어가면 된다.


위 그림에서 "Finish"버튼을 누르면, 설치가 진행된다.



설치가 완료 되면 아래와 같은 창이 나타나는데, "Yes"버튼을 클릭하여, Eclipse를 재 시작 시킨다.


Elipse를 재 시작하고, Aptana Studio를 시작한다. (만약, 직접 실행이 되지 않았다면, Eclipse의 우측 상단에서 Apatana Perspective를 선택하면 된다.)
그리고, 상단의 메뉴를 보면 아래와 같은 메뉴텝이 있는데, 여기서 두번째 메뉴 아이템을 클릭하면, Aptana의 설치 가능한 Plugins Manager 윈도우가 나타난다.


아래과 같이 Plugins Manager윈도우가 나타나면, "Install"텝을 선택하고 보면, 리스트에 Aptana ReadRails라는 플러그인이 보인 것이다. (아래 그림 참조)

설치하려고 하는 Plugin에 마우스 오른쪽 버튼을 클릭하고, Context메뉴에서 Install을 선택한다. (여기서 우리는 Aptana RedRails를 선택한다. 이유는 다들 알겠지요. 우리는 RedRails 플러그인 설치하려고 여기까지 왔습니다. ^^)

여기까지 잘 따라왔으면, 아래와 같은 창이 나타나는 것이 보게될 것이다.
각 항목들을 모두 체크해 주고,  화면 아래에 있는 "Next"버튼을 클릭하여 다음 단계로 이동한다.

위에서 처럼 Plugin을 설치하게 되면, 처음에 Aptana Studio Plugin을 설치했을 때 처럼, Eclipse를 재 시작을 확인하는 윈도우가 나타나게 되는데, "Yes"를 눌러 재시작을 시키면 된다.


Eclipse가 정상적으로 재시작하자마다, 아래의 창이 나타남을 볼수 있을 것이다.
화면 하단의 Install버튼을 눌러 Ruby와 RedRails를 위한 gem들을 설치하면 Rails를 사용하기 위한 모든 준비가 마쳐지게 된다.



주의 사항으로는 만약 Ecllise가 설치된 경로에 한글이 포함되어 있으면, Aptana Studio 플러그인이 정상적으로 설치가 되지 않는다. 나도 몇번을 설치하다가 결국을 Eclipse 경로를 "C:\" 아래로 바꾸었다. (이는 이전 버전에서는 없었던 문제이다. )

RedRails를 설치하면, 실망할 일은 별로 없을 것이다. 오히려 개발하는데 여러 모로 편리함을 주기때문에 편리하다. 특히 Javascript 코딩을 하거나, SVN을 연동할 일이 있다면, 이는 정말 Eclipse가 잘 하는 장르 중에 하나이다.

여담인데, 오늘 SVN없이 작업하다가 셈플 코드를 모두 날렸다. 결국 SVN Eclipse plugin을 설치하고 나서야 안심이 되었다. 이 플러그인역시 위에 있는 화면중에 하나인 plugin Manager를 통해서 설치했다. 나의 경우는 SubClipse Plugin을 설치했다.

Posted by 행복상자

ScottGu's Blog에 올라온 글이다. 최근에 그의 블러그는 글이 올라오는 빈도수가 현저하게 적어졌는데, 아마도 ASP.NET의 새 버전 출시로 바쁘기 때문일 거라 추측을 하게 된다.

오늘 날자로 올라온 그의 블러그는 "Free ASP.NET MVC eBook Tutorial" 이라는 제목의 글을 공개했다.

말 그대로 책을 bookcover[1]자유롭게 다운로드 해서 볼수 있도록 해주겠다는 것인데, 사실인가 싶어서 링크를 클릭하고 다운로드를 실행시켰는데, 약 190페이지가 넘는 책을 받아 볼수 가 있었다.

다음 링크를 이용해서 책을 Download해서 받아 볼수 있다.
Download the free end-to-end tutorial chapter in PDF form

그의 Blog를 보면, 책의 저자는 4명이다. 오른쪽의 책 표지에 저자들이 보인다.
Scott Guthly는 이 책의 첫 부분을 저술하였으며, 그가 쓴 처움 부분이 무료로 공개하기로 한 것이다.

실제로 책에는
"Chapter 1 is licensed under the terms of Creative Commons Attribution No Derivatives 3.0 license" 라고 표시되어 있다.

우선 그가 준 선물에 무척 감사할 따름이다.
오늘 대충 책의 내용을 흩어 보았는데, 새로운 툴과 기술을 익히는 가장 좋은 방법을 예제를 따라서 실행해 보는 것이다. 그리고 그 예제를 익숙하게 재현한다면, 그 때 부터는 기술을 내것으로 만들수 있는 기본적인 준비가 된 것이다.

본 책은 ASP.NET에서 도입한 MVC 프레임워크를 이해하기 쉽도록, 셈플 프로젝트를 만들어서 하나 하나 개발자가 따라갈수 있도록 자세히 설명하고 있다. 물론 많은 이미지와 캡쳐한 이미지도 많아서, 쉽게 따라할 수 있을 것 같다.
그리고 책 중간에는, 웹 개발에서 빠질 수 없는 Database의 연동을 위한 LINQ에 대한 설명과 사용법도 나와 있어, 이에 대한 이해가 전혀 없는 사람도 따라하면서 새로운 기술들에 대한 이해도를 높일수 있다.

그리고 MVC 프레임워크의 도입과 동시에 개발자들이 쉽게 Controller를 재 구성 할 수 있도록 사용법을 설명하고, Routing에 대한 추가적인 설정 방법도 설명하는데, 사실 이 부분을 Rails 프레임워크의 구성과 매우 유사하다.
정확히는 모르겠지만, Rails의 프레임워크의 영향을 받았을 것라는 생각이 든다.

많은 말은 필요 없다. 다운로드 받아서, 실제로 새로운 MVC 프레임워크를 사용해 보고 코드를 작성한다면 백마디 말보다도 더 유익할 거라 생각이 든다.

아래는 책의 주요 목차들이다.

  • Create a database
  • Build a model with validation and business rules
  • Implement data listing/details UI on a site using Controllers and Views
  • Enable CRUD (Create, Update, Delete) data form entry
  • Use the ViewModel pattern to pass information from a Controller to a View
  • Re-use UI across a site using partials and master pages
  • Implement efficient data paging
  • Secure an application using authentication and authorization
  • Use AJAX to deliver dynamic updates
  • Use AJAX to add interactive map support
  • Perform automated unit testing (including dependency injection and mocking)


 

Posted by 행복상자
Pro Javascript를 전체적으로 한번 흩어 보고나서는, Javascript에 대한 이해도가 무척 높아졌다. 물론 당연히 알아야 할 것들을 그동안 모르는 채 잘 지내왔을 뿐이다.
내가 알던 쉬운 자바스크립트는 지금의 것과는 너무도 많이 달랐다. 아니 자바스크립트의 가능성과 기능에 대해서 너무 간과해 왔는지도 모른다.

HTML의 DOM 구조는 개발자로 하여금 문서의 구조을 쉽게 이해할 수 있도록 도와주고, 이는 CSS와
Javascript를 통해서 쉽게 제어할 수 있어 매우 유용하다.

<html>
<head>
<title>Introduction to the DOM</title>
<script>
    // We can't manipulate the DOM until the document
    // is fully loaded
    window.onload = function(){
    // Find all the <li> elements, to attach the event handlers to them
    var li = document.getElementsByTagName("li");
    for ( var i = 0; i < li.length; i++ ) {
        // Attach a mouseover event handler to the <li> element,
        // which changes the <li>s background to blue.
        li[i].onmouseover = function() {
            this.style.backgroundColor = 'blue';
        };

        // Attach a mouseout event handler to the <li> element
        // which changes the <li>s background back to its default white
        li[i].onmouseout = function() {
            this.style.backgroundColor = 'white';
        };
    }
};
</script>
</head>
<body>
<h1>Introduction to the DOM</h1>
<p class="test">There are a number of reasons why the
DOM is awesome, here are some:</p>
<ul>
    <li id="everywhere">It can be found everywhere.</li>
    <li class="test">It's easy to use.</li>
    <li class="test">It can help you to find what you want, really quickly.</li>
</ul>
</body>
</html>

위의 코드는 "Pro Javascript"에 나오는 예제인데, HTML은 XML의 구조를 가지고 있지만, 가장 단순한 형태중에 하나로 문서를 구성하는 Object를 정의하고 있다. 이러한 구조는 "태그(Tag)"라는 형태로 정의되어지는데, 위 예제는 태그에 Event의 handler를 할당하는 코드이다.

코드에 대한 설명을 덧 붙이자면,
1. var li = document.getElementsByTagName("li");
    - 위 코드를 통해서 HTML 문서에 정의된 "li" 태그들의 리스트를 가져와서 var li에 저장한다.
    - document.getElementsByTagName 메소드는 태그 이름을 이용하여 Element를 가져오는
      함수이다.

2. li[i].onmouseover = function() {this.style.backgroundColor = 'blue'; );
   - 위 코드를 정의하기 전에, "li.length"를 통해서 리스트의 갯수를 알수 있고 이를 For 루프 문의
     통해서 반복을 시킨다.
   - 이는 동일한 이벤트를 "li"태그로 정의된 Object에 할당하기 위새서이다.
   - li[i].onmouserover 이벤트 메소드는 위와 같이 새로 정의된 메소드를 통해서 마우스가 "li"태그
     위에서 움직일 때 태그의 배경색을 "blue"로 바꾸어 준다.

3. li[i].onmouseout = function() {this.style.backgroundColor = 'white'; };
    - 이 코드는 "li" 태그의 onmouseout event 메소드를 정의하는 코드로, 마우스가 태그를 벗어날때
      태그의 배경색을 "white"로 바뀌게 만들어 준다.

위의 코드를 이해할 수 있으면, jQuery에서 얼마나 직관적으로 같은 코드를 간략하고 단순한 형태로 사용할 수 있는지 알게된다면, 깊은 인상을 받을 것이다.
Posted by 행복상자