레일스 1.2.2 이후 EdgeRails에서는 무슨 일이? 3

Posted by deepblue Wed, 21 Feb 2007 01:43:00 GMT

레일스 1.2.x 릴리즈는 이제 안정화되고 있는 분위기다. 이제 2.0을 위해 달리는 것 같다. EdgeRails ChangeLog를 구독하며 주목할 만한 변화들을 모아보았다.

http://forum.rubykr.org/viewtopic.php?p=4647

EdgeRails의 변화들은 즐겁다. 지적 영감을 주기도 한다.

프로그래밍 루비 - 강컴 월간 베스트 1위 2

Posted by deepblue Fri, 16 Feb 2007 17:21:00 GMT

인사이트에서 전해온 반가운 소식 2가지!

프로그래밍 루비가 강컴 월간 베스트 1위에 올랐다는 소식과 레일스와 함께하는 애자일 웹 개발 예약 판매 소식.

많은 분들의 노력으로 올해는 국내에서도 루비가 많이 퍼지는 해가 될 것 같다. 반갑다. 레일스!

어떤 젬을 쓰고 계세요?

Posted by deepblue Thu, 15 Feb 2007 01:04:00 GMT

요즘 자신이 사용 중인 젬 리스트를 블로깅하는 것이 유행인보다(via Mike Clack, Stone Code Weblog.)

이젠 남이 어떤 젬을 쓰는지 궁금해질만큼 젬이 다양해졌다는 의미로 해석해도 될까?

[deepblue:/] deepblue% gem list | grep '^[a-zA-Z]'
actionmailer (1.3.1)
actionpack (1.13.1)
actionwebservice (1.2.1)
activerecord (1.15.1)
activesupport (1.4.0)
capistrano (1.3.1)
character-encodings (0.2.0)
daemons (1.0.4)
diff-lcs (1.1.2)
ezcrypto (0.7)
fastri (0.3.0.1)
gd2 (1.1.1)
gem_plugin (0.2.1)
heckle (1.2.0)
hoe (1.1.7)
merge3 (0.9)
mongrel (0.3.13.4)
mongrel_cluster (0.2.1)
needle (1.3.0)
net-sftp (1.1.0)
net-ssh (1.0.10)
oz (0.1.1)
ParseTree (1.6.4)
piston (1.2.1)
rail_stat_generator (0.1.4)
rails (1.2.1)
rake (0.7.1.5)
rcov (0.7.0.1)
RedCloth (3.0.4)
RedGreen (1.0)
rspec (0.7.5.1)
ruby-openid (1.1.4)
ruby-yadis (0.3.4)
ruby2ruby (1.1.4)
rubyforge (0.4.0)
rubygems-update (0.9.1)
RubyInline (3.6.2)
sources (0.0.1)
streamlined_generator (0.0.5)
termios (0.9.4)
turing (0.0.9)
unicode (0.1)
wirble (0.1.2)
ZenTest (3.4.3)

가장 아끼는(?) 젬이 있다면, 완소 rspec~!

단수 리소스 - 레일스 1.2.2

Posted by deepblue Fri, 09 Feb 2007 01:22:00 GMT

Rails 1.2.2추가된 정말 반가운 기능이 있다. 바로 map.resource!

전에도 언급했다시피, Rails 1.2 버전의 핵심은 바로 REST다. 그리고 REST를 레일스 방식으로 소화해낸 것이 ‘리소스’라는 개념이고, 라우팅(routes.rb)에 map.resources를 추가하는 것만으로 애플리케이션을 REST에 대응시킨다. 예를 들어 라우팅에 아래와 같은 내용이 포함되면,

map.resources :users

다음과 같이 매핑된다.

# CRUD
POST /users -> UsersController.create (CREATE)
GET /users/1  -> UsersController.show :id => 1 (READ)
PUT /users/1 -> UsersController.update :id => 1 (UPDATE)
DELETE /users/1 -> UsersController.destroy :id => 1 (DELETE)

GET /users -> UsersController.index 
GET /users/new -> UsersController.new 

깔끔한 URL과 HTTP Verbs를 잘 활용한 모습이 인상적이다. 그리고 공짜로 얻어지는 URL 헬퍼 메서드들도 유용하다. 예를 들면 user_path, hash_for_new_user_path, users_url 등이다.

하지만, 실제 적용하다 보면, 문제가 발생한다. 모든 리소스가 여러 개(복수)라는 가정을 깔고 있기 때문이다. 이에 반하는 대표적인 예로, 세션 리소스를 들 수 있다. 세션이 복수라면 깔끔하지 못한 상황이 발생한다. 예를 들어, 로그아웃의 경우 세션을 DELETE하는데, 이 때 세션에 대한 ID가 필요하다. 하지만 세션의 ID는 전혀 의미 없는 값이라 고민된다. 세션의 목록을 나열하는 index 메서드도 문제다.

유저 설정(Preference)도 마찬가지다. 특정 리소스에 대한 Lock도 리소스당 하나뿐이기 때문에 고민된다. 모두 복수 리소스를 가정한 map.resources에 맞추려 하기 때문이다.

위에서 나열한 것처럼 단수인 리소스도 존재하므로 이를 매핑하기위한 방법도 제공되어야한다. 다행히 레일스 1.2.2에 그 기능이 추가되었다. 바로 map.resource이다. 이제 세션도 보다 명쾌하게 정의할 수 있게 되었다.

map.resouce :session

GET /session/new -> SessionController.new (LOGIN VIEW)
GET /session -> SessionController.show (STATUS)
POST /session -> SessionController.create (LOGIN
DELETE /session  -> SessionController.destroy (LOGOUT)

단수 리소스(Singular Resouce)를 환영한다. 이제 다음 단계는 리소스에 대한 CRUD 이외의 작업을 잘 정의할 수 있도록 하는 :collection, :member 설정을 보다 쉽게 할 수 있는 방법이다. 실제 사용해보니, 매번 routes.rb 즉, Configuration(설정)을 염두에 두고 수정해줘야 하는 어색함은 레일스 방식과 어울리지 않는다. 어떤 방법이 있을까? 자바의 Annotation과 비슷한 무언가가 필요하지 않을까?

웹 프레임워크 비교 5

Posted by deepblue Sun, 04 Feb 2007 14:34:00 GMT

PHP 컨퍼런스에서 Tim Bray가 발표한 자료중 흥미로운 내용이 있다(뒷북).

Frameworks

PHP, 레일스, 자바를 4가지 기준(스케일, 개발 속도, 툴, 유지)으로 비교를 한 것이다.

Scaling 면에서는 이미 검증된 PHP의 손을 들어주었다. 위키피디아와 야후라는 레퍼런스가 있으니 그럴 만 하다. 그에 비해 레일스는 ‘아무도 아직 이루지 못했다’라는 표현을 했다.

개발 속도 면에서는 레일스가 압도적이다. 여기서 재미있는 표현이 있는데 PHP는 “quick-and-dirty”이고, 레일스는 “quick-and-clean”이라는 것이다. 이것은 툴의 문제일까? 사람(커뮤니티)의 문제일까?

개발툴은 자바를 따라갈 수 없을것이고, Maintainability 측면도 개발속도와 유사하다.

읽어 볼만한 글이라 인용해보았다.

Older posts: 1 ... 3 4 5 6 7 ... 22