Getting Real by 37signals
http://gettingreal.37signals.com/toc.php
Getting Real by 37signals (한글 번역)
http://gettingreal.37signals.com/GR_kor.php
최근 재미있게 읽은 책(혹은 인터넷 글) 이다.
지금까지 내가 소프트웨어를 하면서 느끼는 점, 고민을 잘 이야기 해 주고 있다.
전적으로 내가 생각하는 소프트웨어 개발 방법론과 일치한다.
내 주변에서 개발되고 있는 대부분의 소프트웨어는
너무 많은 기능을 가지고 있고, 감당하지 못할 정도로 덩치가 커지고 있다.
이것은 유지보수에 치명적인 악영향을 끼침에도 불구하고,
당장 기능 구현에 급급한 나머지.. 소프트웨어의 크기가 커짐을 의식하지 못한 채 개발에 열중하고 있다.
이런 개발문화는 빨리 없어져야 한다.
Getting Real 글을 읽으면서 많은 부분 공감했다.
그런 나의 마음을 잘 해아린 글 처럼 느껴진다.
소프트웨어 개발자라면 한번쯤 읽어 보고.. 깊히 생각해 볼만하다고 생각한다.
My interests: Computer Science, Software Engineering, Web2.0, SNS, Ruby on Rails, Starting business and Google.
2009년 9월 21일 월요일
2009년 9월 20일 일요일
아이폰 어플리케이션 개발
objective-c, COCOA 프래임웍을 조금 알아야 한다.
이걸 모르면 [ ] 가 너무 많아서, C, Java만 한사람들 에게는 모두 배열로 보인다.
이게 배열이 아니고 java에서 . 과 비슷한 건데..
책: 코코아 프로그래밍
http://www.yes24.com/24/goods/3287305
책: 아이폰 개발
http://www.yes24.com/24/goods/3287305
우선 한글 자료가 많은 곳.
http://iphoneos.co.kr/
http://cocoadev.tistory.com/
이미지 2D기반의 게임을 개발하려면 라이브러리를 이용해야 좋다.
물리엔진도 이용할 수 있으니, 활용도는 아주 높다.
http://code.google.com/p/cocos2d-iphone/
이걸 모르면 [ ] 가 너무 많아서, C, Java만 한사람들 에게는 모두 배열로 보인다.
이게 배열이 아니고 java에서 . 과 비슷한 건데..
책: 코코아 프로그래밍
http://www.yes24.com/24/goods/3287305
책: 아이폰 개발
http://www.yes24.com/24/goods/3287305
우선 한글 자료가 많은 곳.
http://iphoneos.co.kr/
http://cocoadev.tistory.com/
이미지 2D기반의 게임을 개발하려면 라이브러리를 이용해야 좋다.
물리엔진도 이용할 수 있으니, 활용도는 아주 높다.
http://code.google.com/p/cocos2d-iphone/
PHP Fest 2009 실용주의 PHP
PHPKorea 주최로,
PHP Fest 2009 실용주의 PHP
세미나를 합니다.
자세한 내용은 : http://new.imaso.co.kr/seminars/phpfest2009
저는 등록했으니, 등록하신 분 있으시면 같이가요.~

PHP Fest 2009 실용주의 PHP
세미나를 합니다.
자세한 내용은 : http://new.imaso.co.kr/seminars/phpfest2009
저는 등록했으니, 등록하신 분 있으시면 같이가요.~
2009년 8월 8일 토요일
Java로 Ruby on Rails의 RESTful, scaffold처럼 웹개발하기
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에서 구현 할 수 있는 방법을 소개하려고 한다.
사용할 프레임워크와 플러그인, 라이브러리는
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을 몇분만에 만들 수 있다.





그중에서 한가지가 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을 몇분만에 만들 수 있다.
2009년 7월 10일 금요일
회사에서 사용하는 비공개 웹 프레임워크 라이브러리의 문제점
회사에서 전사적으로 사용하고 있는 웹 프레임워크가 있는데,
오픈소스가 아니고, 사내 전용 소프트웨어 입니다.
그런데, 이것이 처음 사용될 당시.. 수년 전에는 좋은 시도였을지 모르겠으나,
현재는 많은 신기술, 개발자의 창의적 생각을 가로막는 것 같습니다.
오픈소스들도 발전하고 있고,
소프트웨어 기술도 발전하고 있는데..
굳이 사내에서 전용 프레임워크를 만들어서..
구글링에 답이 없어서 문제 해결이 어렵고..
문서화도 부족하고..
현존하는 훌륭한 외부 오픈소스 라이브러리들과 잘 붙지 않는..
이런 소프트웨어를 만들어서 써야 하는가?
정말.. 진심으로 현존하는 웹 프레임워크가 부족하여 보완하고 싶다면,
정정 당당하게 Apache Project를 출범하던지.. SourceForge에 올려서..
세계를 무대로 평가 받으면 좋지 않을까?(물론 어려움이 많겠지만..)
아니면,, 그냥 가벼운 정도로 오픈된것에 플러그인 정도 보완을 한다던가..
회사에서 강제로 비공개 소프트웨어 라이브러리를 만들어서,,
모든 개발 부서에 사용을 강요하는 것은..
회사로서 큰 손실인 듯 합니다.
(물론 비공개로 개발된 사내 라이브러리가 매우(x100) 훌륭하고 좋다면이야, 좋겠지만.. 대부분 그렇지 못하니..)
오픈소스가 아니고, 사내 전용 소프트웨어 입니다.
그런데, 이것이 처음 사용될 당시.. 수년 전에는 좋은 시도였을지 모르겠으나,
현재는 많은 신기술, 개발자의 창의적 생각을 가로막는 것 같습니다.
오픈소스들도 발전하고 있고,
소프트웨어 기술도 발전하고 있는데..
굳이 사내에서 전용 프레임워크를 만들어서..
구글링에 답이 없어서 문제 해결이 어렵고..
문서화도 부족하고..
현존하는 훌륭한 외부 오픈소스 라이브러리들과 잘 붙지 않는..
이런 소프트웨어를 만들어서 써야 하는가?
정말.. 진심으로 현존하는 웹 프레임워크가 부족하여 보완하고 싶다면,
정정 당당하게 Apache Project를 출범하던지.. SourceForge에 올려서..
세계를 무대로 평가 받으면 좋지 않을까?(물론 어려움이 많겠지만..)
아니면,, 그냥 가벼운 정도로 오픈된것에 플러그인 정도 보완을 한다던가..
회사에서 강제로 비공개 소프트웨어 라이브러리를 만들어서,,
모든 개발 부서에 사용을 강요하는 것은..
회사로서 큰 손실인 듯 합니다.
(물론 비공개로 개발된 사내 라이브러리가 매우(x100) 훌륭하고 좋다면이야, 좋겠지만.. 대부분 그렇지 못하니..)
2009년 7월 8일 수요일
자바로 웹개발시 사용되는 프레임워크, 라이브러리
만약에 내가 자바로 웹개발을 한다면,
아래 프레임워크, 라이브러리를 사용하려 합니다.
다른 좋은 것들 있으면 알려주세요.~
Web Framework
Struts 2 - http://struts.apache.org/2.x/index.html
Spring Plugin - http://struts.apache.org/2.x/docs/spring-plugin.html
Web Presentation
FreeMarker - http://freemarker.org/
SiteMesh Plugin - http://struts.apache.org/2.x/docs/sitemesh-plugin.html
Javascript
Struts2 jQuery Plugin - http://code.google.com/p/struts2-jquery/
Struts2 jQuery Plugin Showcase - http://www.weinfreund.de/struts2-jquery-showcase/index.action
DB Access
iBatis - http://ibatis.apache.org/
iBator - http://ibatis.apache.org/ibator.html
Log
Log4j - http://logging.apache.org/log4j/
Build, Deploy
Apache Ant - http://ant.apache.org/
Operation
Apache Tomcat - http://tomcat.apache.org/
Misc.
Struts 2 Plugins - http://cwiki.apache.org/S2PLUGINS/home.html
또 필요한게 뭐가 있을까??
아래 프레임워크, 라이브러리를 사용하려 합니다.
다른 좋은 것들 있으면 알려주세요.~
Web Framework
Struts 2 - http://struts.apache.org/2.x/index.html
Spring Plugin - http://struts.apache.org/2.x/docs/spring-plugin.html
Web Presentation
FreeMarker - http://freemarker.org/
SiteMesh Plugin - http://struts.apache.org/2.x/docs/sitemesh-plugin.html
Javascript
Struts2 jQuery Plugin - http://code.google.com/p/struts2-jquery/
Struts2 jQuery Plugin Showcase - http://www.weinfreund.de/struts2-jquery-showcase/index.action
DB Access
iBatis - http://ibatis.apache.org/
iBator - http://ibatis.apache.org/ibator.html
Log
Log4j - http://logging.apache.org/log4j/
Build, Deploy
Apache Ant - http://ant.apache.org/
Operation
Apache Tomcat - http://tomcat.apache.org/
Misc.
Struts 2 Plugins - http://cwiki.apache.org/S2PLUGINS/home.html
또 필요한게 뭐가 있을까??
2009년 7월 3일 금요일
자바와 루비온레일스의 웹개발 ( Java vs. Ruby on Rails for Web Development )
엄밀히 따지자면, 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의 지식도 점점 잊혀져 가는 듯 합니다.
끝으로,,
이글은 개발관련 잡담, 개인적인 생각임을 밝힙니다..
제가 개발관련 지식이 부족해서 오판을 하는 것일 수도 있죠.ㅎ
피드 구독하기:
글 (Atom)