Ruby on Rails에서 HTML을 중복없이 개발하는 프레임 워크 중에 Haml이라는 것이 있다는 것은 알고 있었는데,
HAML 사용하기 에서 언급된 단점들 때문에 사용하지 않고 있었다.

치명적인 것은, Javascript친화적이지 않다는 단점.

그런데 웹 프론트를 개발하다 보면 HTML보다 CSS에는 엄청난 중복이 있다는 것을 알 수 있다.
그래서 나온 것이 Sass 라는 CSS 프리프로세싱 언어가 있다.

석준님께서 알려주신 http://ruby-toolbox.com/ 에서 알게 된 compass 라는 CSS 관련 gem을 알게 되었는데,
이것이 뭐하는 gem인가 하면,
Sass로 코딩된 것을 CSS로 프리컴파일 해주는 역할을 한다.

$ compass --watch

라고 명령을 주면 Sass 파일을 고치면 자동으로 CSS를 다시 생성해 주어서 개발시에 pre-processing에 대한 불편함이 없다.

Sass 의 사용평은,, 훌륭한 물건이다. 아주 편하다는 것이다.

Ruby on Rails로 웹 개발을 하시는 분은 Sass의 사용을 검토해 보라고 권유해 드리고 싶다.

그리고,, http://ruby-toolbox.com/ 사이트는 대박 유용하다는 것.!!
라이브러리의 용도별로 user rating을 해 두어서 사용자 선호도를 알 수 있다.
아주 훌륭한 수많은 라이브러리들이 있으니,
Ruby , Ruby on Rails 개발자라면 http://ruby-toolbox.com/ 를 적극 활용하기를..
 
Posted by jhkim

liquid template 은 Ruby 에서 사용하는 템플릿 라이브러리 인데,
Ruby on Rails에서 바로 사용하기가 생각보다 편하지 않은 것 같다.

그래서 여기저기 둘러보다가 발견하게 된 것이,
http://www.akitaonrails.com/2009/09/08/user-editable-liquid-templates-in-the-database
인데, 최근에 릴리즈 된 듯 하고,, 아직 부족한 점이 많아 보인다.

그래도, 개념적으로 내가 바라는 형태로 움직일 듯 하다.
이럴때 저 오픈소스 개발에 뛰어들 수 있는 실력만 되면 정말 좋을텐데 -_-;;
업그레이드 시켜주고 싶은데.. 실력부족.

고수님께서 해주시길 기다리는 수밖에..

Posted by jhkim
Ruby on Rails가 생산성이 좋은 이유에는 여러가지가 있지만,
그중에서 한가지가 RESTful동작의 scaffold를 자동으로 생성해 준다는 것이다.

Ruby on Rails는 Creating a weblog in 15 minutes with Rails 2
를 보면 알겠지만, DB를 기반으로 모델을 생성하고,
create, update, delete, list 등의 기본 동작을 하는 controller와 view를 생성해 준다.
이런 기능을 발판코드를 만든다고 말하며 scaffold 기능이라고 한다.

이것은 개발 초기에 생산성을 크게 향상시켜준다.

이와 비슷한 동작을 Java에서 구현 할 수 있는 방법을 소개하려고 한다.
사용할 프레임워크와 플러그인, 라이브러리는
  • Struts2 - 웹개발프레임워크 ( + Spring 사용)
  • iBATIS - DATA Mapper
  • iBATOR - DB Table을 기반으로 DAO, Model 소스 제너레이터
  • Struts2 Convention Plugin - Java의 XML홍수 속에서 XML을 대신한 Convention으로 동작 하도록 함.
  • Struts2 REST Plugin - Ruby on Rails와 같은 RESTful 지원
  • uBATOR - (자체제작) DB Table을 기반으로 controller, view 소스 제너레이터

DB Table을 생성하고,
iBATOR를 이용해서 Java Model과 DAO를 만든다.

Struts2를 다운로드 받으면, struts2-rest-showcase-2.1.6.war 가 들어있는데,
아주 훌륭하다.
이것을 기반으로 RESTful application을 만든다.

그런데, Controller, View를 노가다로 만들어 주려니 여간 힘든 것이 아니다.
iBATOR 소스코드가 공개되어 있으니, 약간 수정하여
Controller, View를 자동 생성하는 uBATOR를 만든다.

이렇게 만들면..
DB에 Table만 생성하면, Ruby on Rails에서 scaffold와 같이
Java에서도 RESTful로 동작하는 web application을 몇분만에 만들 수 있다.

 


Posted by jhkim
Java Warehouse Developer Center vs. Rails


엄밀히 따지자면, Java는 언어이고, Ruby on Rails는 웹 개발 프레임워크이기 때문에 두 개가 비교되기에는 부적합 합니다.
여기서 말하는 Java는 Java를 이용한 웹 개발 이라는 의미에서 해석하시면 좋을 듯 합니다.

제가 하고 싶은 질문은,
Java와 Ruby on Rails 중에서 웹 개발을 하기에 어떤 것이 더 적합한 언어, 프레임워크인가? 입니다.

결론부터 말씀드리자면, Java보다 Ruby on Rails에 손을 들어주고 싶습니다.

저는 개인적으로 Java 언어를 오랫동안 사용해 와서,
언어 자체로만 따지자면 Java가 익숙한 언어입니다.
그런데 최근 들어서(사실은 지속적으로 고민했습니다만..) 회사에서 Java를 이용해서 웹 개발을 하다 보면, 참 여러 가지가 비효율적이라는 생각이 듭니다.

Java진영에서 웹 개발에 사용되고 있는 프레임워크로는 webwork, spring, ibatis 를 사용 중이고, 빌드 배포에는 maven을 사용 중이며, 운영환경으로는 apache + tomcat을 사용 중입니다.
Java를 이용한 웹 개발에서는 위에 나열한 것 외로, 여러 가지로 얽힌 프레임워크와 라이브러리가 더 사용되게 됩니다.

일단 위 프레임워크, 라이브러리를 사용하기 위한 XML configuration을 하면서 그 복잡함에 지치게 되죠.
그리고, 코딩을 할 때에는 BO, BOImpl, DAO, DAOImpl에 동일한 패턴의 코드들을 죄다 나열하게 됩니다.
이것이 정석이라고 하는데, 노가다 코드를 작성하면서 이것이 과연 필요한 것인가.. 라는 생각을 지속적으로 하게 됩니다.
그 중에서도 특히 DAO, DAOImpl은 거의 기계적인 패턴의 코드만을 작성하게 되는데도 말이죠.

xwork.xml(webwork url 설정), applicationContext.xml(spring object설정), BO(Business logic Object), DAO(Data Access Object) 4군데에서 동일한 네이밍 규칙을 지키려고 개발자가 신경을 쓰며 수많은 반복되는 패턴의 복사 코드를 생성하게 됩니다.
이 반복적인 작업이 저에게는 너무 큰 비효율로 인식되는 군요.

게다가 코드가 파일마다 몇 백 라인씩 되어가는데, 위에서 언급한 4군데에서 동일한 패턴으로 사용되는 코드들의 네이밍 규칙이 다들 제 각각으로 되게 되면.. 개발하는데 여간 해깔리고 힘든 일이 아닐 수 없습니다.
이 수많은 코드들은 바로 유지보수의 어려움이라는 직격탄으로 개발자들에게 날라오게 된다고 생각합니다.

게다가 Java라는 언어가 기본적으로 compile time을 가지는 언어라서,, Java Object가 수정될 때마다 tomcat을 restart해야 하는 불편함이 있습니다. 개발 생산성에 상당한 치명타를 입히게 되죠.
게다가 xml등의 resource파일이 수정되는 때에는,, 무시무시한 maven빌드 과정을 다시 거쳐야만 합니다.
몇 십 초 되는 과정을 개발 중간중간에 거치려니.. 답답합니다.
몇 초라도 손해를 덜 보기 위해서는 개발장비를 더 좋은 것으로 바꿔야겠군요!


반면 Ruby on Rails 웹 개발 프레임워크의 개발환경은 위에 언급한 대부분의 단점을 보완하고 있습니다. 게다가, 웹 프론트, 프레젠테이션 레이어에서 사용되는 수많은 장점을 더 가지고 있죠.

그렇다고 해서, Ruby on Rails가 Java에 비해서 모든 면에 서 뛰어나다는 것은 아닙니다.
많은 사람이 협업해야 하는 대형 프로젝트에서는 Ruby 보다 Java가 더 적합하다고 생각합니다.
그러나 대규모의 웹 프로젝트가 아니라면,, 제가 지금 하고 있는 규모의 프로젝트 대부분에서 Ruby on Rails가 적합하다고 생각합니다.

끝으로, 제가 꼽는 Ruby on Rails에 비해서 Java의 장점은 아이러니하게도 좀 전에 언급한 Java언어의 단점인 Compile time 이 있다는 데에서 찾을 수 있습니다.
컴파일을 한다는 것으로 compile time에 수많은 오류를 찾아 낼 수 있기 때문입니다.
Ruby on Rails는 compile 과정이 없기 때문에 run time 에 에러를 만나게 됩니다. 이것은 Ruby on Rails의 안 좋은 점이네요.
그리고 Java언어는 Compile 과정이 있는 언어이기 때문에, IDE에서 코딩 시에 auto completion 을 지원해 줍니다. Ruby언어는 동적인 성향이 강한 스크립트 언어이기 때문에 이 부분의 지원이 쉽지 않다는 점이 있습니다.

이 두 가지의 장점을 Ruby on Rails에서 누릴 수 있는 방법이 있거나..
위에서 언급한 Java언어의 웹 개발 환경에서의 수많은 단점을 극복할 수 있는 방법이 있었으면 좋겠습니다.

개인적으로는 노가다 코드로 대부분의 시간을 낭비하는 Java로 하는 웹개발 보다는 생산성 좋은 Ruby on Rails로 개발하고 싶습니다. Ruby on Rails로 개발하다보면 Ruby언어도 점점 익숙해 지겠죠.
그러나 회사에서 저의 생각을 받쳐주지는 않네요.-_-;
그래서 당분간 Java를 계속 하게 됩니다. 안타깝게도,, 이러면서 저의 짧은 Ruby, Ruby on Rails의 지식도 점점 잊혀져 가는 듯 합니다.

끝으로,,
이글은 개발관련 잡담, 개인적인 생각임을 밝힙니다..
제가 개발관련 지식이 부족해서 오판을 하는 것일 수도 있죠.ㅎ

Posted by jhkim
원문:
http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/


만박님의 미투글:
http://me2day.net/sumanpark/2008/05/02#15:04:13

ruby on rails로 운영되는 사이트가 꽤 많이 되는 것 같습니다.
최근 ruby on rails를 공부 하면서,
ruby라는 새로운 언어를 겪고, rails라는 웹 생산성을 경험하고 있습니다.

웹개발을 그러케 많이 한 편은 아니지만,
저에게 ruby on rails의 개념이 참 좋아 보입니다.

그런데 가끔 위와 같이 scalability, performance 등 의문을 던지는 글을 몇번 보았습니다.
그래서 여기저기 돌아다니면서, 의심의 눈을 가지고 google을 검색해 본 결과..
적어도 아직까지는 저에게 ruby on rails가 웹을 개발하기에 좋은 방향이라고 판단이 됩니다.

잘 개발만 하면, 성능이 크게 떨어지지 않을 것으로 판단되고,

생산성 좋으니, 점점 비싸지는 고급인력을 적게 투입하여, 적은 비용으로 개발하고,
점점 싸지고, 성능이 좋아지는, 싼 고철덩이 하드웨어를 더 추가하면 되리라 생각됩니다.

진정 scalability가 전혀 안 받쳐주면 큰일이지만요..
Posted by jhkim

http://imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=32015

-- 위 글의 마지막 부분이 좋아서 옮겨왔습니다.

글을 마치며 끝으로 하고 싶은 이야기는 지금 떠오르는 아이디어에 대한 구현을 당장 시작해보라는 것이다. 콘솔을 하나 열고 rails new_idea라고 입력하는 것만으로 이미 70%는 끝난 것이나 마찬가지다. 여기에 몇 시간만 더 투자한다면 충분히 잘 돌아가는 멋진 사이트를 만들어볼 수 있다. 이런 말을 하는 이유는 머릿속으로 가진 아이디어와 실제 눈앞에 구현된 사이트의 차이가 엄청날 것이기 때문이다. 그리고 아이디어에 실체를 부여하는 일은 우리 개발자들이 가진 특권이기도 하다.

앞으로도 레일즈라는 좋은 도구를 이용해 번뜩이는 아이디어를 가진 서비스들이 많이 생겨나기를 바란다. 모든 웹 개발자가 행복해지는 그 날까지 오늘도 파이팅!

Posted by jhkim
http://appletree.or.kr/blog/web-development/ruby-on-rails/passenger-apache-%ec%9b%b9-%ec%84%9c%eb%b2%84%eb%a5%bc-%ec%9c%84%ed%95%9c-%ec%86%90%ec%89%ac%ec%9a%b4-rails-%ec%96%b4%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98-%eb%b0%b0%ed%8f%ac-%ed%99%98/

예상대로 루비온레일즈의 속도가 느리다거나, 배포가 불편하다는 점은 점점 개선될 것으로 보입니다.
java가 처음에 느려서 못쓰겠다는 말이 많았듯이, ruby도 점점 성능향상을 가질 것으로 보입니다.
빠르게 변하겠죠.?
Posted by jhkim
http://calendar.daum.net
다음 캘린더가 루비로 개발 되었다는 것은 예전에 알게 되었습니다.
그런데 오늘 들어가 보니, 생각보다 속도가 상당히 빠르다는 느낌을 받습니다. 그래서 서버가 어떤 서버인지 보니, nginx라는 가벼운 웹서버를 front로 사용하고 있더군요.

http://myruby.net/pages/605658
수행 속도 면에서 apache보다 월등히 뛰어난 듯 합니다. 그런데 정작 ruby로 개발된 가장 유명한 springnote는 front 웹서버로 apache를 사용하고 있는 듯 하네요.
왜 그런지 이유는 좀 더 알아봐야 겠습니다.

다음 캘린더 서비스 소개:
http://dante.tistory.com/entry/intro-calendar-service


마소글: 쾌속 개발의 선두주자 레일즈 활용하기:
http://imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=32015
Posted by jhkim
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200701020009
사용자 삽입 이미지
책의 역자 서문 중에서..
"  C와 Perl CGI에서 시작하여 PHP, ASP 또는 서블릿/JSP등을 거쳐 프레임워크를 사용한 개발 방식으로의 진화는 우리 시대 대부분의 웹 개발자들이 따르는 커리어 패스일 것입니다. 기술은 다양해지고 개발의 라이프사이클은 갈수록 짧아지는데 시장의 요구사항은 더 복잡해지니 결국 생산성이 관건이 되는 것이겠죠.
  레일스의 첫인상은 마치 오래 전에 C로 CGI를 작성하다가 PHP를 처음 접했을 때의 느꼈던 그런 느낌이라고 할까요."

----

  레일스 레시피라는 루비온레일스 예제중심의 책을 보다보니, 김석준님의 역자 서문에 위와 같은 글이 있었습니다.
  제가 처름에 레일스를 본 이유는, 주위에서 들리는 말에 의하면 기존 웹 개발 방법 보다 10배~15배가 좋더라, 좋아하는 책중에 하나인 실용주의 프로그래머에서 스크립트 언어의 중요성, 루비언어의 극찬을 들 수 있습니다.

  저도 루비 온 레일스를 공부하면서 위 역자 서문과 유사한 생각을 많이 하게 됩니다. 직접 하다보니 웹 개발 방향의 트랜드가 될 것 같다는 생각을 했습니다. 나중에는 꼭 루비 언어가 아니라도, JAVA언어로 개발하여도 ruby on rails와 유사한 형태로 개발 할 수 있지 않을까 하는 생각이 듭니다.
Posted by jhkim
드디어 지겨웠던 96개의 Ruby on rails동영상 강의를 다 봤다.

http://jaehyun.codns.com/data/railscasts/000_CONTENTS.html
나중에 필요한것 다시볼 때 기억하기 좋으라고, 옆에다가 comment를 달아 두었다.
나중에 알아 볼 수 있는 comment인지가 의문이다.
96개나 되는 강의에 지겨워서 중간에 포기할 뻔 했다.ㅡㅡ;

영어 강의라서 듣다보니 잘 안들리는 것도 있고-_-;;
그래도 영어 듣기가 좀 느는 것 같은 느낌도 있고..

Ruby on Rails(루비 온 레일스)에 익숙하지 않은 분들은 동영상 강의를 보는것이
감각을 가지는데 도움이 될 것 같다.
Posted by jhkim