달력

2

« 2009/2 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

우연히 YouTube 사이트를 검색하다가 Ruby on Rails에 대한 동영상 강좌가 올라와 있는 것을 발견하였다. 하루동안 버클리 대학에서, 세미나가 진행 되었던 것들인데, 주제별로 잘 나누어져 있어서, 처음 접하는 사람들이 Ruby on Rails를 이해하고 공부하는데 큰 도움이 될거라 생각된다.
세미나는 "Ruby on Rails Short course"라는 제목으로 열렸는데, 동영상은 영어로 진행되어서 이해하기가 어려울 수 있다. 더군다나, 말하느 속도도 상당히 빨라서, 집중해서 들어야 한다. 하지만, 레일즈의 데모를 보면 쉽게 이해 할 수 있을 것이다. 레일즈가 유명해진 것도 15분 내외의 데모 동영상을 통해서 알려 졌으니 말이다.

아래에 첨부한 동영상들은 오전에 있었던 강의 동영상 들이다.
그리고 강의에 사용되었던 자료들의 링크이다.

Individual slide sets in PDF format:


Ruby on Rails Short Couse:

Ruby on Rails - Part 1: Hello World
 

Ruby on Rails - Part 2: Just Enough Ruby

Ruby on Rails - Part 3: Basic Rails

 

:
Posted by 행복상자
오래 간만에 Ruby On Rails에 관한 이야기를 한다.
내가 좋아하는 Framwork이고, 앞으로의 발정 가능성에 대해서도 항상 눈여겨 보는 Framework이다.
한 동안 회사일로 바빠서, 그 동안 약간의 기술적인 관심만을 남겨두고 있다고, 이제 조금 여유가 생겨서 다시 들여다 보게 되었다.

내 노트북에 설치되어 있는 Rails의 버전은 1.2.6 였는데, 이를 먼저 Upgrade 하기로 하였다.

Rails의 새버전의 설치는 "gem instll rails"라고 도스창에서 실행하면 자동으로 인터넷에서 다운받아 설치하게 된다. 
아래는 이를 실행한 결과이다. 여기서는 rails를 설치할 때 dependency에 대해서는 사용자의 확인을 받도록 별도의 옵션을 명령행에 추가하지 않했다.


만약, 사용자의 확인 없이 rails 설치를 위해서 필요한 패키지들을 모두 설치하려면 아래와 같이 명령창에 넣어서 실행하면 된다. (y옵션을 주면 --dependencies 옵션을 준것과 동일하게 동장한다.)
gem instll rails -y
설치가 마쳐졌으면 아래와 같이 Rails의 버전을 확인할 수 있다.



이제 Rails의 업데이트를 끝 마쳤다. 이번에는 Ruby의 패키지와 컴포넌트를 Update해주는 gem을 업데이트 하겠다. 이는 자신을 업그레이드 해야 하므로 install명령으로는 동작하지 않는다.

아래와 같이 도스창에 명령를 실행시키면 된다.
 gem update --system


이역시 무척 간단하게 실행될 것이다.

마지막으로 embedded DBMS인 sqlite를 지원하기 위해서, 이에 관련된 모듈을 업데이트 하려고 한다.
아래과 같이 실행하면 된다.
gem install sqlite-ruby

 
gem이 이전 버전과 다른 점은 다른 OS의 버전이 있을 때 사용자가 수동으로 이를 확인하고 설치하였었는데, 이 부분이 자동화 된점이 이전 버전과 비교해서 편리해 졌다.

 
:
Posted by 행복상자
원래는 책에서 Closure에 대한 설명에 대한 설명이 있는데, 나의 관심을 끈 것은 Anonymous함수의 사용에 대한 것이었다.

아래의 예제는 동일한 동작을 하는 메소드를 Event에 추가하는 예제인데, 중간 정도에 보면 난데 없이 "(function(){" 으로 시작하는 구문이 나온다. 이 부분이 Anonymoun function 이다.
이렇게 만들면 "Global"로 선언할 필요없이 임시적으로 함수 블럭의 사용이 가능하다.
구문을 닫을 경우는 "})();"를 이용하면 된다.

 // An element with an ID of main
var obj = document.getElementById("main");

// An array of items to bind to
var items = [ "click", "keypress" ];

// Iterate through each of the items
for ( var i = 0; i < items.length; i++ ) {
    // Use a self-executed anonymous function to induce scope
    (function(){
        // Remember the value within this scope
        var item = items[i];
        // Bind a function to the elment
        obj[ "on" + item ] = function() {
            // item refers to a parent variable that has been successfully
            // scoped within the context of this for loop
            alert( "Thanks for your " + item );
        };
    })();
}

사실 위의 코드는 불필요한 내용들이 많이 들어있다. 굳지 저렇게 써야하나 라는 생각이 들지도 모르지만, 이것은 단지 예제 정도록 사용하면 된다.
그래도 몇가지 건질 것이 있다면, 위의 코드에서 "id"를 이용하여 오브젝트를 가져오고, Event를 Bind하는 내용을 담고 있는데, Event명을 obj["on" + item]의 형태로 Event를 binding한다.
위의 코드는 "click" 과 "keypress"에 대한 이벤트가 발생하면 메시지를 발생시키는 예제이다.

:
Posted by 행복상자
내가 현재 진행하고 있는 프로젝트는 Spring Dynamic Modules 1.1.2를 기반으로 개발하고 있다. 그리고 이를 기반으로 다른 솔루션 또는 Web Application들이 개발되고 있다.

지금은 지난 말까지 개발된 Framework의 일부 Architecture와 모듈을 Refactory중에 있다. 이의 필요성은 아마도 Spring DM Server가 나온다면, 사라질지도 모른다. 개발하고 있는 Core가 Spring DM Server와 거의 유사한 Architecture를 하고 있기 때문이다. 아마도 Spring DM Kernel만 있다고 누군가가 같다고 할지도 모르지만, Spring의 많은 기능을 얻어다 사용하기 때문에 이를 갈 수는 없고 많은 혜텍을 입었다고 할 수 있다.

지난 주에 Spring Dynamic Module 1.1.3이 발표되었다.
몇가지 변경된 사항을 살펴보았는데, 크게 바뀐 부분들은 눈에 들어오지 않는다.

아래는 Spring Dynamic Module의 Change Log이다.


Changes in version 1.1.3 (2009-02-13)
-------------------------------------

General
* various documentation improvements and fixes

Package org.springframework.osgi.context
* improved proxying of classes that are boot delegated outside the OSGi environment

Package org.springframework.osgi.io
* fixed manifest headers parsing problem when dealing with nested whitespaces
* fixed handling of optional required bundles
* improved OsgiBundlePatternMatchingResolver to return ContextResources
* changed OsgiBundlePatternMatchingResolver#findResources(String) visibility to protected

Package org.springframework.osgi.service
* fixed visibility issue when invoking non-public proxied methods
* improved waiting code to deal with spurious or accidental wakeups
* fixed issue with OsgiServiceProxyFactoryBean that caused autowiring to fail in some cases

:
Posted by 행복상자