이번 주에는 Google App Engine에 feel이 꽂히는 바람에 몇가지 작업들을 해보았다.
그중에 하나는 우연히도 Eclipse에서 JRuby 환경을 남들고, 기존에 만들었던 Rails 프로그램이 실행이 가능하다는 사실을 알았다. 사실 이는 Eclipse의 기본 플러그인으로 바로 사용하는 것보다는 RedRails의 설치로 인하여 생기 긍정적인 Side Effect이다.
RedRails Plug-in을 설치할때, JRuby실행을 위한 Plugin또한 같이 설치되었기 때문에, 몇가지 작업과 몇가지 환경 구성을 위한 작업을 해주면 된다.

간략하게 순서를 설명하고, 진행 사항은 화면 캡쳐한 이미지를 이용하여 다시 설명하도록 하겠다.
(여기서 설명하는 방법은 기본적으로 RedRails 1.0 이상 버전이 설치되어 있다고 가정한다.)

- 진행 순서-
1. RedRails가 설치되어 있는, Eclipse에서 사용할 VM을 JRuby VM을 설정을 변경한다.
2. 관련된 플러그인들을  설치한다.
3. DB과련된 Plugin들을 gem을 이용하여 설치한다. (설명은 sqlite를 예로 하였음)

- 설 명 -
먼저 Eclipse를 실행하고, "Ctrl + 3" 키를 눌러서 빠른 찾기 창을 띄우고 "Preperences"를 창 상단에 있는 입력창에 입력한다. 그리고나서 "Preferences"창을 띄운다. (또 다른 방법으로는 Eclipse 메뉴의 Window 메뉴의 하위 메뉴인 "Preferences"메뉴를 클릭해서 창을 띄울수 있다.)

Preferences 창이 나타나면, 왼쪽 상단의 입력창에, "Installed Interpreter"라고 입력을 하거나, 직접 Ruby 설정 Tree 아래에 있는 "Installed Interpreters"를 찾아서 클릭을 한다.  

위 화면에서 보면, Ruby와 JRuby에 대한 VM을 선택할 수 있는 체크박스가 있는데, 여기서 "JRuby VM"을 선택한다. 위에서는 "org.jruby_1.1.6..."으로 표시되어 있는 것을 선택하면 된다.

그리고 조금만 기다리면, 아래와 같은 창이 RedRais(Eclipse)에 나타나는데, 이는 JRuby의 설치 경로가 기존에 설치되어 있는 Ruby의 경로와 다르기 때문이므로, 화면 아래에 있는 "Install"버튼을 눌러 그대로 진행 시킨다.


그러면 Rails를 위한 플러그인들과 라이브러리들의 설치가 아래와 같이 진행될 것이다.


플러그인들이 설치가 완료되고, 기존에 만들어 둔 Rails 프로젝트를 RedRails에서 열어, 서버를 실행을 시킨다.



서버가 Start되어 정상적으로 구동이되면, 웹브라우져에서 "http://localhost:3000" 를 입력하여 서버에 접속을 시키면 정상적으로 연결되는 것을 볼수 있을 것이다.

하지만, 기존에 만들어둔 프로그램이 정상적으로 동작하지 않는 것을 보게되는데, 이경우에는 몇가지 플러그인들을 더 설치해 주어야 한다.
나의 환경은 sqlite3를 이용하여 데이터베이스를 생성하고 어플케이션의 데이터를 저장하기 때문에 sqlite3 플러그인을 설치하는 것을 예로 들겠다.

먼저 다음 두개의 플러그인들을 gem을 이용해서 설치한다.
"jdbc-sqlite3"와 "activerecord-jdbcsqlite3-adapter" 플러그인을 설치하기 위해서는 아래와 같이 명령창에서 실행한다. RedRails가 설치되어 있으면, "Rails Shell"에서 실행하면 된다. 
    - Gem 실행 -
   1. gem install jdbc-sqlite3
   2. gem install activerecord-jdbcsqlite3-adapter

만약 정상적으로 위 명령이 실행이 되지 않는다면, Eclipse를 다시 실행하도록 한다.
버그인지는 모르겠지만, 새로 설치된 플러그인과 환경들이 정상적으로 메모리에 로딩되지 않았기 때문이다.

여기까지 따라왔으면, 한가지 더 수정할 것이 있다. 다름아닌 database 설정에 대한 것이다.
"config/database.yml" 파일을 열어서, adapter 를 sqlite3에서 jdbcsqlite3 로 변경해 주면된다. (아래 설정 예 참조)

- database.yml 설정 예- 
 development:
  adapter: jdbcsqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

위와 같이 설정을 변경하고, 서버를 재 실행하고 테스트 하면 된다.  다음과 같이 Rails Shell에서 실행하면 된다. 이미 잘 알고 있으리고 생각하지만, script/server 라고 타이핑하고 실행하면된다.
아니면, Eclispe에서 Severs View를 열고, 여기서 실행한다.

짤지만, 많은 부분을 달려왔다. 한가지 언급하지 못한 부분이 있는데, gem 명령을 실행해서 update와 Install이 정상적으로 이루어 지지 않고 다음과 같은 메시지가 뜬다면, 현재 로그인 계정에 한글이 들어 있는지 의심해 보아야 한다.

- 에러 메시지 -
 ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory - No such file or directory - C:/Documents and Settings/???
 
JRuby의 문제인지 RedRails의 문제인지 정확하게 알지는 못하지만, 한글 계정으로 윈도우를 실행해서 작업을 할 경우에 나타나는 문제인데, google을 통해서 찾아본 바로는 Unicode에 대한 문제였다. (으~~ 이것 땜시 새벽 늦게 까지 테스트 했다니....)
gem을 캐싱하기 위해서 임시로 만들어 놓는 디렉토리(.gem)인것 같은데, 아직 정확한 문제점을 확인하지 못하고 있다. 몇몇의 설정 파일들과 소스들을 찾아서 검토하고 있는데 정확히 어떤 위치인지 잘 모르겠다. 윈도우즈의 환경변수를 통해서 사용자 계정과 위치를 가져오는 것 같기도 한데, 이 역시 정보가 부족해서, 좀더 찾아와야 할 것 같다.
최근에 JRuby 1.2.0 버전이 올라왔다. 내가 설치한 것은 1.1.6 버전인데, 이 버전에서 해결이 되었으면 좋으련만....

 

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 행복상자
어제는 Roby 세미나에 다녀왔다.
김 정현 책인 2시경에 오라고 해서, 12시부터 자기는 Ruby 투터리얼 강의가 있는데 루비를 알는 사람들은 2시부터 참석하면 된다고 했다. 조금 일찍 도착한 나는 별다방에서 시원하고 단 음료를 시켜놓고, 홀로 요즘 공부하고 있는 자바 소스를 분석하고 있었다.

이젠, 가야지하고 포스코 사거리로 나섰다. 그리고 세미나가 열리는 빌딩을 찾아 갔는데, 이게 왠걸? 느낌이 이상했다. 건물 1층의 보안 요원은 그런 행사가 없다고 하며, 혹시 다른 건물이 아니지 확인해 주었다. 나도 이상해서 전화를 해보았다.
앗 이럴수가 세미나 장소는 가락시장역에 있는 소프트웨어 진흥원 건물이었다. 그 곳은 이전에 Spring 세미나가 열렸던 곳이라 찾는 데는 어려움이 없었다. 하지만 왜 장소를 잘못 알았을까? 참 미스테이한 일이었지만, 이유를 찾는데는 어려움이 없었다. 행사, 세미나 게시판에서 전년도 행사장 위치 소개를 이번 행사 약도로 잘못 보고 헛걸음을 친 것이었다.

암튼 행사는 엄청 늦었다.

행사는 소프웨어 진흥원 건물 5층에서 열렸다. 약 100명 정도의 참석자들이 모여있었다. 나름 준비해온 세미나 자료를 참석자들에게 열정적인 모습으로 설명하는 모습이 이상적이었다. 하지만, 전문적인 Speaker들이 아니기에, 하고싶은 말을 전달하는 과정이 수월해 보이지는 았았다. 그러나 인상적인 것은 자기가 좋아하는 것을 더 많으 사람들에게 전하려는 열정많은 정말 뜨거웠다. 그리고, 제대로 준비해서 전달할 수 있는 기회가 곧 오지 않을까 생각이 들었다.
이 사람들의 열정과 젊음이 정말 부럽다.

몇몇 주제는 낯 설었지만, 흥미로왔다. 그리고 누구나 마지막까지 자리를 지치는 사람들에게만 주어진다는 상품 추첨 시간은 긴장감이 돌았다. 겨우 책 5권 밖에 되지 않아서, 5%의 확률.., 역시나 나는 추첨 운은 없다. 기존에 책을 가지고 있는 사람들이 당첨되어서 책을 포기해 주었지만, 나에게는 기회가 돌아오지 않았다.

세미나 주제중에 JRuby와 Spring Framework의 개발시 사용에 대한 발표가 있었다. 행사장에 많은 사람들은 자바로 개발을 해본 사람들이 많았고, 나역시 관심이 있는 주제이기도 했다. 왜냐하면, Rails의 생산성은 익히 알려져 있기 때문이다. 기기에다 자바 기술의 탄탄함까지 더해진다면이라는 가능성을 항상 염두에 두고 있기 때문에 Ruby와 Rails에도 관심을 가지고 있는 것이다.
세미나는 단순했다. "이렇게 이렇게 사용하면 되지 않을까요? 고객이 원하면 이렇게 하면 되지요" 라는 정도의 이해로 세미나를 진행한다는 것은 무리라는 생각이 들었다.
RubyOnRails의 입장에서 보면, 기존이 자바 Enterprise 기술은 경쟁자일 뿐이고, 극복하지 않으면, 커 나가지 못한다는 입장을 가지고, 타 기술에 대한 정확한 이해없이 융합 또는 양 기술의 동시 사용에 대해서 논하는 것은 시기 상조가 아닐까 싶었다.
정확하게는 Ruby라는 기술이 더 좋은데, 할 수 없이 자바를 사용해야 하는 것처럼 들렸다. (아니라면 정말 죄송)
나도 이야기를 들으면서, 그런데 왜 자바의 기술들을 쓰려고 할까라는 생각이 연신 들었다.
이에 대한 명확한 해답이 없으면, 아마도 한국에서 Ruby라는 기술의 확산은 그리 쉬운 길이 아닐것 같다. 결국 고객들을 설득해 나가야 한다. 고객이 원하는 것을 해 줄수 있다면, 루비든 자바든 다 같이 하나의 툴일 뿐이다.

그동안 많은 새로운 툴들이 나와서 개발자들이 편해질 거라고 했지만, 편해진 시간 만큼 개발자는 더 많은 일과 프로젝트를 하고 있을지도 모른다. 우리들의 Boss는 결코 멍청하지 않다. 고객은 개발시에는 무지하고 멍청해 보일지도 모르지만, 산출물이 나오는 시점에는 어는 누구보다도 예리하고 날카롭다. 그리고 천재적이기까지 하다. 항상 새로운 일들을 준비해 준다.
개발자들은 그러한 천재들을 상대하기 위해서 더 많은 공부와 자기가 습득한 기술들의 단련이 필요하고, 더불의 설득력을 길러야 할 것이다. 기대치 관리를 포함해서 말이다.
(정말 두서 없이 글을 썼다.)

 
 
Posted by 행복상자

사실 오늘은 최근에 공개한 iPhone SDK 소개 키노츠와 데모 동영상을 보려고 PC를 열었다가  별 생각 없이 .Net MVC를 찾아들어가게 되었다. 의도한 것은 절대로 아니다.
요즘에 나온는 많은 웹 프레임워크들은 경쟁적으로 자기들이 많든 MVC Framework의 우수함을 알리는데 열을 올리고 있다. 그리고 실제로 쓰기에 충분할 만큼 안정성과 성능을 보장해 준다.

그러나 최근에 이도 종지부가 찍힌것 같다.(이는 절대적으로 내 개인적인 소견이다.) 새로 개발되거나 또는 기존 Framework가 버전업이 되면서 MVC Framework들이 유사해 지기 시작했으니 말이다. 이에 가장 큰 영향을 준 Framework는 역시 Rails이다. 개발자에게 필요한 것은(자신을 증명하는 것은), 마지막에 완성된 코드라고 누군가가 이야기 한것 같다. (아마도 최근에 한국에 찾아온 MS의 누군가 였었지요..)

개발자에게는 생산성과 안정성이 가장 큰 이슈이다. 이것은 마케팅적으로 영업적으로 대외에 홍보하는 포장되고 형식적인 것이 아니라, 프로젝트를 함에 있어서 필수적인 것이다.
웹 개발에 있어서는 배포된 Application의 성능과 안정성은 너무나 중요하다. (사실 이외에도 챙겨할 것들은 부지기수 이다.)

그런 면에서 RobyOnRails는 가히 충격적이었다. 마치 Visual Basic을 처음 접할때의 충격과도 같았다. MVC를 지원하기 위한 Simple하고도 직관적인 구조와 개발자가 부담감 없이 익힐 수 있는 기본 명령과 사용법등은 누구를 위한 Framework 인가를 바로 알수 있게 해준다.

지난 몇달전에 일민(Toby)이가 진행하는 KSUG 세미나를 통해, Spring 2.5에서 변화되는 Spring MVC 프레임워크의 변화를 접하게 되었는데, XML과 자바 Annotation 그리고 Auto Wiring를 이용하지만 그 근간은 Rails의 프레임워크라는 생각이 많이 들었다.

많은 프레임워크가 서로의 좋은 기능을 통해서 발전하는 것은 개발자로서는 행복한 선택을 할 수 있어서 즐겁다.

이야기가 길어졌는데, 오늘 내가 본 Micorsoft의 MVC 데모 동영상이다.  



너무나도 쉽고, Rails와 유사히지 않은가?
사실 회사에서는 요즘 .Net이냐 Java냐로 논란이 많다. 그래서 관심있게 본것이다.

아래의 링크들을 이용하면 다른 데모도 볼수 있다.
      - Part 1 - Displaying Data 
      - Part 2 - Editing Data and Making Forms 
      - Part 3 - Advanced Techniques 
      - Part 4 - Testing

Posted by 행복상자
Ruby On Rails 환경 구성

요즈음 내가 갑자기 다양한 웹 기술에 관심을 갖게 되었다.  처음 웹을 접한지 벌써 10년이 넘어섰다. 그동안 큰 변화들이 있었지만 최근 1~2년의 기술 발전은 정말 비약적이다. 하루 하루 새로운 것이 나온다. 특히 ExtJS는 요즘 나의 관심거리이다. 현재 2.0 beta가 나온 상태이다.

그 동안 사용했던 웹 개발 환경도 참 다양하기도 하지...
아는 사람을 아는 Interdev 1.0 beta 버전을 이용하여 1996년 처음 ASP를 접했었다.
그리고 Perl을 이용해서 리눅스 환경에서 CGI를 개발하기도 했고, C컴파일러를 이용하여 HTML을 직접 제어하기도 했다. 그리고 현재는 Java를 이용하여 솔루션을 개발하고 있다.

그러나 이 모든것은 Server Side의 변화와 개발이었으며, 사용하는 언어는 개발 환경에 개발 속도에 영향을 주는 환경이었다. 어떤 개발 환경을 선택하냐에 따라 개발 결과와 효율이 크게 달라 졌었다. 사실, Vi 에디터는 웹 개발에는 별로 도움이 되지 않는 도구라고 생각할 때가 많았었다. (오해하지 마시라, Vi를 손발처럼 다루는 선수들 말고, 나를 예를 드는 것이니까... ^^) Web 서버와 DB서버를 오가면서 수동으로 작업할때 중간에 버리는 짜투리 시간들이 참 많다.특히 EJB로 개발할 때는 컨테이너 올리고 내리는 것은 정말 참기 어려운 작업이었다. 좀더 자동화 되고 지능적인 툴을 사용한다면, 시간을 생산해 낼 수 있다.

현재는 개인적으로 Roby를 공부 중인데,  아래는 집에서 사용하고 있는 개인용 PC에 설치되어 있는 gem 목록이다. 최근에 Rails를 설치하고 RedRails 플러그인을 eclipse에 설치해서 개발 환경을 만들었다. 그리고  DB는 학습을 위해서 간단한 Sqlite를 설치했다.

RedRails를 이용하여 예제를 생성하고, 테스트 하는 것은 정말 간단한 작업이었다. 그러나, 환경을 만들어 주는 것은 쉽지는 안았다. 시행 착오를 격으면서 gem 을 이용하여 Ruby 라이브러리를 설치하고 Eclipse 플러그인을 설치했다. 최신 버전을 설치하기 위해서는 검색엔진의 도움을 받는 것이 쉬운 길인듯 하다.

설치과정을 간단하게 설명하면(정말 간단하게),
 
1. Ruby 1.86 버전을 설치한다.
2. Eclipse 3.3 버전을 설치한다.
   - Ruby 개발을 위해, DLTK를 SW Update를 이용하여 설치한다.
3. Rails를 설치한다.
    - gem install rails 라고 도스 명령창에 입력후 앤터 (Y/N 확인을 해야 한다.)
   - 다음과 같이 Dependency 옵셜을 주면 자동으로 설치한다.
       gem install rails --include-dependencies
4. Eclipse를 위한 aptana 플러그인을 설치(
http://www.aptana.com)
   - aptana 사이트에서, RedRails 플러그인을 Eclipse에 설치한다.

이클립스에서 Rails 프로젝트를 만들어서 사요하면 되는데, 이는 다음을 참조한다.
동영상:
http://www.aptana.tv/movies/aptana_radrails_intro/aptana_radrails_intro.html

만약, 위 동영상 예제와 같이 sqlite를 이용하고 싶다면, sqlite를 다운받아야 하는데, 내가 약간의 시행 착오를 겪은 것은 sqlite.dll을 어디에 두어야 하는 것이지 였다. 
이 파일은 Rails가 만들어준 디렉토리중 bin 디렉토리에 두고 사용하면 된다.
아마 쉽게 위 동영상 예제를 따라 할 수 있을 것이다.

오늘 회사에서 Rails를 설치하려 했는데, 사내 보안 정책으로 인해서, gem을 사용할 수 없다는 것을 깨닫는데, 많은 시간이 걸렸다. 일종의 Proxy 정책의 영향인데, robyforge에 정상적으로 연결이 되지 않는다. Gem을 이용하여 Rails를 원격으로 설치할 수 없었다.

그래서 집에 있는 PC에 저장되어 있는 Gem 파일을 이용하여 Local에서 설치하려고 한다. 아래는 내 PC에 있는 gem 패키지 목록들이다.

도스창에서 dir/s *.gem 명령을 입력하고 실행시키면 된다.

사용자 삽입 이미지

Rails 설치를 위한 gem 파일 목록

Posted by 행복상자