작년부터 iPhone Application을 만들어 보겠다고, 책도 사고, Study Group 비슷한 것도 만들어보고, 관련된 책들도 몇권을 사서 보았지만, 내가 연 초에 세운 계획중에 하나인 iPhone Application을 1개라도 만들어 보겠다는 계획은 아직 실행되지 못하고 있는 사항이다.

이는 개인적으로 여러가지 많은 일에 관심이 많은 탓이기에, 주 중에는 Web 관려 기술에만 집중하고, 주말에는 iPhone에 대해서 공부하겠다고 시간을 나주어 사용하기로 결심했지만, 주말에는 가족과 같이 하는 일에 우선 순위가 높아서 결국 손을 대지 못하고 있었다.

이미 iPhone SDK를 설치해 본 사람드은 알겠지만, Apple에서는 많은 개발 관련 Resource를 개발자들에게 제공한다. 문서와 동영상으로 만들어진 자료들은 개발자로 하여금, 어떻게 시작을 해야 하는지 무엇을 다루고 공부해야 하는 지를 알려준다. 아쉬운 점이 있다면, 모든 자료는 영어로 되어 있기 때문에 모국어로 영어를 사용하는 사람들보다는 익히기 힘들지 모르겠다, 하지만 아직 한국에는 Apple이 제공하는 환경에서 개발할 수 있도록 만들어진 책은 2권정도가 전부이기때문에, 현재는 다른 길은 없다.

아래는 Apple에서 제공하는 Xcode IDE을 실행했을 때, 볼 수있는 화면준에 하나로, IPhone SDK를 설치하면 볼수 있다. iPhone Application을 개발할 수 있도록 도와주는 Resource 들에 쉽게 접근 할 수 있다.  (Apple에서 화면캡쳐해서 글을 올리는 것은 처음이다.)


최근에 김정현 책임으로 부터, iPhone Application 개발을 위해서 무료로 볼수 있는 자료들에 대해서 들었었다. 스테포드 대핵에서 진행하는 코스로, 이를 동영상으로 마들어서 일반인들도 강의 내용을 볼수 있다는 것이 었다.
어제는 토요일 이어서, googling을 하면서, 관련된 자료를 찾아보고, 아이튠즈를 이용하여 강의를 다운로드 받아서 보았다.



관련된 강의자료는 16개의 Lucture로 구성되어 있고, 이는 "CS 193P iPhone Application Programming" 이라는 제목으로 진행된다.

- 링크 주소: http://www.stanford.edu/class/cs193p/cgi-bin/index.php
- RSS 주소: feed://www.stanford.edu/class/cs193p/cgi-bin/rss.php

관련된 동영상 강의 자료들은 "Stanford on iTunes U "에서 다운로드 받을 수 있는데, 강좌들은 iTunes를 이용해서 다운로드 할 수 있다.




'공부하는 것 > iPhone Application' 카테고리의 다른 글

어떤 iPhone을 살것인가?  (2) 2009.06.24
iPhone Application Life Cycle  (0) 2009.06.01
iPhone SDK Study  (0) 2009.05.31
Posted by 행복상자
지난주에 Google App Engine SDK가 새로 Release되었다.
이번 Release는 Java 언어를 지원하고, 처음 제공되는 Release로 많은 버그들이 수정되었고, 새로운 기능들을 추가하기 위해서 제공한다고 한다.

추가 및 변경된 주요 기능은 아래과 같다.

- Support for unindexed datastore properties of arbitrary types
- Embedded UTF-8 characters in JSPs now render correctly
- Increase in response size limit from 1MB to 10MB
- Support for Thread.setContextLoader()

전체적인 수정된 항목들은 다음의 링크를 통해서 알수 있다.

위 내용들을 살펴보면, 현재 제공하고 있는 기능들을 사용하는 것이 만만치 않음을 알 수 있다. 아직까지는 최종 버전으로 제공되기에는 개발자들의 시행 착오를 필요로한다는 것이다. 그래도 해 볼만한 가치는 있다고 본다. 이렇게 빨리 버그들의 수정과 기능의 변경들이 이루어 지고 있으니 말이다.
만약 SDK를 이용하여 개발하고 있다면, 위의 세부 내용들을 한번씩 살펴보는 것도 시행착오를 줄이는 좋은 방법이다.
생각보다 많은 버그들은 아니므로, 한 시간 정도 투자하면 모든 것들을 살펴 볼 수 있을 거라 생각된다.

새로 제공되는 SDK는 구글에서 여기에서 다운을 받아서 설치 할수있다.
그러나 Eclipse의 plugin을 업데이트 하는 방법이 더 간단하므로, 여기서는 이를 이용하여 설치 하는 방법을 간략하게 알아보겠다.

Eclipse의 Software Updates and Add-ons 창을 열어서, 새로운 Plugin을 찾아보면, 아래와 같이 구글에서 제공하는 App Engine을 위한 Plugin과 SDK를 쉽게 찾을 있을 것이다.


위와 같이 선택을 하고 우측 tkd에 있는 "install..." 버튼을 클릭하여 다음 단계를 진행하면 된다.
이어서 아래의 화면이 나오는데, "NEXT" 버튼을 이용하여 다음 단계로 이동하면 된다.
  
위 화면에 이어서, 라이센스에 동의하는 화면에서 사용자가 동의하면 설치가 진행하게 된다.
설치가 마쳐지면, Eclipse를 다시 시작하면, SDK의 Update 작업은 끝나게 된다. 이미 Eclipse를 사용하고 있는 개발자라면 이는 매운 간단한 작업이 될 것이다.



자 여기가 끝이 아니다, 한거지 더 해야 할 작업이 있다.
지금까지는  SDK를 새로 설치한 것이 아니라, 단지 기존의 것을 업그레이드 하기 위한 준비 작업을 진행하였을 뿐ㅇ이다.  Eclipse에서 이것이 자동으로 설정들이 변경되고, 등록되었으면 좋겠지만, Google에서는 그렇게 제공하지 않고 기존에 설치했던 SDK를 제거하였기 때문에, 기존에 잘 동작하던 프로젝트의 클래스들 마져 Build Error가 일어나는 것을 볼수 있다. (사실 이부분은 나도 전혀 예상하지 못했던 부분이다.)

이를 해결 하기 위해서는 "Java Build Path"의 설정을 수정해 주면 된다. 이해하기 쉽게 말하면, 기존의 것을 참조하고 있던 것을 새로 설치한 SDK의 Path로 설정을 변경하면 된다.

먼저, Eclipse에서 "Alt + Enter"키를 눌러서 아래의 화면을 호출하거나, Eclipse의 window 메뉴의 서브 메뉴인 Preferences 메뉴를 마우스를 클릭하여 아래의 창을 띄운다. 그리고, 왼쪽의 메뉴 트리에서 "Java Build Path"를 클릭하고 "Libraries"템을 클릭한다. (아래 그림 참조)


Google SDK의 새버전으로 변경하기 위해서는,  위 화면의 오른쪽 리스트 창에서 "App Engine SDK..." 항목을 선택하고 오른쪽에 있는 "Edit"버튼을 클릭한다.


아래와 같은 화면이 나타나면, 새로 설치되어 있는 "1.2.1" 버전으로 설정을 변경하고 "OK"버튼을 눌러주면 설정이 모두 끝마치게 된다.

위와 같이 Build Path의 변경이 마쳐지면, Eclipse는 정상적으로 프로젝트를 빌드하고, 동작하게 될것이다.
자, 이제부터 즐거운 프로그래밍 시작이다.

Posted by 행복상자
내가 Unit 테스트를 위한 툴과 TDD(Test Driven development)를 공부하기 시작한 것은 2002년 부터이다.
내가 살아가면서 감사하게 생각하는 것은 내 주변에 좋은 개발자들이 있고, 이 들로 부터 개발을 위한 좋은 정보를 얻을 수 있었다는 것이다. TDD는 지금은 iPhone Application을 개발하는 연승훈이라는 분을 통해서 그 당시에 처음 접하게 되었다.  

TDD에 관한 책은 김창준, 강규영  두분의 번역으로 국내에 책이 출판되었는데, 이전에 내 블로그에 "Kent Beck의 Test-Driven Development by Example"라는 제목으로 언급하기도 했던 책으로, 이 책은 내가 프로젝트의 개발을 시작하기 전에는 꼭 한번씩 읽는 책이다. 조금더 TDD를 잘 써보고 싶은 마음에서 매번 새로운 마음으로 읽어본다.
하지만, 매번 사용의 어려움을 느끼고, 그러면서 새로운 방법과 접근 방법을 배워갈수 있도론 Hint를 준다.

개인적으로는, 집에서 내가 코드를 작성할 때, TDD를 이용하여 Code Coverage를 측정하면, 평균적으로 90%~94%정도의 Coverage를 측정할 수 있다. 상당히 높은 수치이다. 코드의 질적인 면과 효율적인 면에서도, 아무생각 없이 junit을 이용한 코드를 짤 때보다는 높다. 물론, 경험상 TDD를 위한 코드를 작성하기 전에 생각해야 하는 시간을 상대적으로 늘어난다. 그러나 이역시도 클라스와 함수에 대한 명세서가 정확하고 명확하게 정의되어 있는 상태에서 시작한다면 아무런 문제가 되지 않는다. 테스트 코드를 위한 시간이 더 많이 필요로 하지만, Refactoring을 해야 하거나, 시스템 적으로 build와 testing을 해야 할 때 이 코드들은 큰 이익을 안겨준다.

내가 이전까지 사용하던 방식들은 Junit 3.8에서 제공하는 방식으로 이용해 왔다. 4.x 제공하는 기능들에 대한 간단한 사용법들은 알고 있었지만, 이 전에 작성했던 코드들와 게으름으로 다른 기능들에 대한 공부를 안하고 이제까지 버티어 왔다. 이 번에 Google App Engine Java버전을 분석하면서, 짜 넣을 코드들에 대한 테스트를 작성하면, Junit 4.x 버전을 공부하기로 마음 먹었다.

이를 위하여 몇가지 공부를 위한 사이트를 검색하면서, 링크들을 찾아 보았는데,
- IBM의 Developer Networks에 올라와 있는 글이 이해에 도움이 주었다.
- 그리고, www.junit.org 에서 소개하고 있는 글들이 유용하다.
           . New JUnit 4.x Howto + updated JUnit 3.x Howto 
           . JUnit 4.x Quick Tutorial
           . JUnit 4 in 60 Seconds
           . An early look at JUnit 4
Junit 4는 최근에 4.6 버전의 Release를 끝 마쳤다.

테스트를 작성하는 것은 개발자에게 많은 노력을 요한다. 아마도 개발한 코드보다 더 많은 코드들을 작성해야 하는 수고들이 뒤 따라야 할 것이다. 남에게 보기기 위한 다면 적당히 해도 좋다. 그러나 자신을 위하고 자신이 만든 코드를 위한다면, 요율적이고 효과적인 방법을 찾도록 노력해야 한다.

결국, SW 개발자는 자신의 코드로 나를 드러내야 하기 때문이다.
최선이라 함은 열심히 하는 것을 의미하진 않는다, 좋은 결과를 얻을 수 있는 과정을 최선이라고 생각한다.


 
 

'공부하는 것 > jUnit' 카테고리의 다른 글

Junit 4 공부를 시작하면서...  (0) 2009.05.23
Posted by 행복상자
최근 얼마전에 일민이가 "10년이 지나봤자"라는 제목으로 블로그를 쓴 적이 있다.
나의 10년전과 지금의 10년은 무척이나 다르다. 정말 많은 부분이 달라졌지만, SW 개발자들에 대한 인식과 대우는 별로 달라지지 않은 것 같다. "지식 노동자"라는 말이 있지만, SW 개발자는 정말로 사회적으로 노동자로만 대우받고 있는 듯하다. 3D업에 종사하는 사람들이어서 일까? 아니면 정말로 하찮다고 생각되는 일들을 하고 있어서 일까?
직업에는 귀천이 없고, 힘이 닿는 만큼 일할 수 있다면, 어떤 일이든 천직처럼 일 할 수 있다고 행각한다.

사회적인 인식이 꼭 이와 같지 않다고 하더라도, 존경을 받으면서 일을 할 수 있다면, 주변의 사회적 경제적 제약들을 견디어가면서, 나이 지긋한 개발자들이 많을 거라고 생각한다. 수 많은 내공들을 속으로 갈무리 하면서, 철학가적인 풍모를 지닌 그런 존경받을 만한 개발자들 말이다.

내가 10년 전에도 극히 찾아보기 쉽지않은 풍경이었고, 10년의 세월이 지난 지금 역시도 찾아보기 힘든 광경이다.
많은 중년(?)의 개발자들은 지난 10년동안 경제적 위기와 구조조정 속에서 사라져갔고, 다른 일들을 하고 있는 모습을 어렵지 않게 찾아 볼수 있다. 정말로 자신이 좋아하는 일이고, 즐겁게 해왔던 일들에서 멀리 떨어져 다른 일들을 하고 있는 사람들은 어떤 마음일까? 하지만 이러한 일들은 한국 사회와 회사에서 반복되어 지고 있다.
단순히 외국의 개발자들이 나이들어서도 활동하는 것을 보고 부러움과 질시의 눈의 바라보게 되는 것도, 변하지 않는 개발 현실 때문이다.

가끔이지만 내가 전에 모셨던 분의 만나서, 이러 저러한 이야기를 하는데, 요즘은 경제 위기라고 해서 예전보다는 개발자를 구하기가 수월해졌지만, 개발자들이 지하철 2호선 라인 위에서만 일하려고 한다고 탄식을 하신다.
그렇다고, 이들이 자신들이 준비한 이력서만큼 실력이 뛰어난 사람들도 아니고, 일을 가리면서 프로젝트를 찾아 떠 돌아다닌다고 한다. 그리고 개발 기간이 끝나면, 나몰라라 사라지기도 하고,연락이 단절된다고 한다. 인력 풀에서 사람을 찾아 쓰기도 어렵지만, 괜찮은 사람을 만나기는 하늘의 별 따기라고 한다. 더군다나 재미있는 것은 개발자 나이 40이면 아무도 받으려고 하지 않는다고 한다. 좋은 개발자를 프로젝트에 투입하려고 해도 나이가 많다는 이유로 쓰려고 않는다는 것이다. 첫째로 나이 많은 사람을 부리기가 용이치 않다는 이유이고, 나이가 많은 사람은 최신기술에 능숙하지 못할 거라는 선입견 때문이라고 한다. 이들이 찾아볼수 있는 길은 너무나도 좁기만 한다. 개발 PM이 되던가 생계을 위해 다른 길을 찾아가야만 할 것이다.

내가 10년에 보았던 모습과 지금의 현실을 별다른 차이가 없다. 개발자의 관점에서는 암울하기 그지 없는 현실이다.
자신이 개발하는 제품이 어떻게 돌아가는지도 모르는 사람이 개발 PM을 맡고, 일순간에 Achitecture를 엉망으로 만들고, 단지 이슈만 관리하는 모습들을 어디서나 쉽게 볼 수 있다. 사실 이들은 개발자가 아니고, 개발과 관계된 일에 종사하는 사람일 뿐이다. 능력있고 경험많은 개발자들은 어느샌가 주위에서 사라지고, 관리자만 남는 것이 현재 한국의 개발자들의 현실이다.

하지만, 최근에는 1일 개발이 가능한 여러가지 오픈 마켓과 Echo System들이 만들어지고 있다. 이를 통해서 빌 게이츠와 스티브 잡스 만큼의 큰 부를 취하기는 어렵겠지만, 능력있는 개발자들이, 경험과 아이디어가 많은 개발자들이 더 많은 자유도를 가질수 있는 여건들이 만들어지고 있다. 
지금은 Apple이 먼저 시작을 하였지만, Google과 다른 여러 Open Market들이 활성화 된다면, 더불어 개발자의 독립성과 자유도는 한 단계 높아질거라 생각한다.

개인적으로는 앞으로 10년은 이러한 시장이 더욱 커져서, 내가 10년 전에 그렸던 모습들이 10년 후에는 흔하게 볼수 있는 사회가 되었으면 좋겠다. 나이 지긋하게 먹고, 하얀 백발을 휘날리면서, 즐거운 모습으로 개발을 업으로 삼는 사람들이 개발 컨퍼런스에서 흔하게 볼 수 있었으면 좋겠다.
 
 
Posted by 행복상자
Google App Engine에 Java버전 SDK를 다운받고, Springframework을 이용하여, 간단한 MVC모듈을 이용하여 테스트해보고, Google 서버로 테스트해보고 그동안 아무로 작업을 하지 못했다.
개인적으로 여러가지 좋지 않은 일들이 있었기도 하고, 그리고 주말을 제외하면 나만의 관심사들을 깊이 있게 공부하기에는 시간들이 부족하기도 하고, 음.. 변명거릴 찾으려니, 구차하기까지 하다.

오늘은 잠시 스타벅스에 들러서, 잠시 "Google App Engine Java"에 대한 자료들을 살펴보고 있는 중이다.
그리고 살펴보고 있는 자료를 간략하게 나마 정리하고 있는 중이다.

다음 자료를 참고함.
 
 
App Engine Jave Overview
    - Java 표준 기술
        : Java의 표준 기술들로 web applicaions을 개발하고, 이를 구글의 확장성 있는 Infrastucture위에서
          구동 가능하도록 함.
        : 이를 위해서 Java은 Java 6 JVM환경과 Java Servlets interface, 그리고 표준 Interface를 통해 
          App Engine의 확장가능한 Datastore와 Serviece에 제공한다.
            .JDO, JPA, JavaMail 그리고 JCache 등
   
    - Google Plugin for Eclipse
        : Eclipse를 통해서 제공되는 Plugin은 개발을 새로운 프로젝트를 생성하고, 디버그를 도와준다.
        : 이는 Google Web Toolkit을 통해 Cross plotform에서 개발을 용이하도록 도와준다. 
        : 다음 the Java Getting Started Guide 를 통해서 Google App Engine에서 소개 자료를 찾아 볼수 있다.
 
    - The Java Runtime Environment
        : App Engine은 Java 5 JVM상에서 Appliction을 동작시킨다.
        : App Engine SKD는 Java 5와 그 이상의 버전을 지원한다.
        : App Engine 은 Web Application을 위해서 Java Servlet 표준을 사용한다.
            . Java Server Pages, static files and data files 그리고 web.xml과 같은 설정 파일이 
              Standard WAR 디렉토리 구조 안에정의됨.
        : JVM은 보안적인 측명에서 별도로 Appliaciond의 서비스를 지원하도록 분리되어 동작한다.
        : 제약사항으로 App은 Threads를 생성학나 local file system에 데이터를 쓰거나,
          임의로 네트워크 커넥션을 만들수 없다.
        : 더 많은 내용들은 Servlet Environment 를 참조한다.
 
    - The Datastory, the Services and the Standard Interfaces
        : App Engine은 확장성 있는 서비스들을 제공하는데,
            . Application들이 persistant data를 저장하고,
            . 네트워크를 통해서 리소스에 접근하고,
            . 이미지 데이터들을 처리할 수 있도록 해준다. 
        : Datastore은 2가지 표준 자바 Standard Inteterface를 제공한다.
            . Java Data Objects (JDO) 2.3
            . Java Persistence API (JPA) 1.0
        : 위 두개의 Interface는 DataNucleus Access Platform 를 사용할 수 있도록 구현되어져 있다.
        : App Engine은 Memcache를 제공한다. 이는 Datastrore의 Query들과 계산 결과를 캐싱해서
            전달할 있도록 한다. 
            . Java Interface는  JCache (JSR 107)을 구현하였다.
        : URL Fetch 서비스는 다른 웹의 Resource에 접근할 수 있도록 도와준다.
            . Http/Https를 이용하는 다른 서버와 통신이 가능하다.
            .  java.net.URLConnection 를 사용한다.
        : Mail Service
            .  JavaMail Interface를 이용하여 email 메시지를 전송할 수 있음.
        : Image Service
            . Applications에서 이미지를 변환할 수 있도록 서비스를 제공함.
            . 이미지의 크기를 변환하거나 다른 포멧으로 변환이 가능토록 함.
         : Authentication
            . Google Account를 이용한 인증이 가능함.
            . Google Account는 사용자의 계정을 생성하거나, Sign-in할 수 있음.
            . 이미 사용자가 Google의 Account를 가지고 있다면, 이를 Application에 사용할 수 있음.
            
    - Sheduled Tasks
        : Application은 특정한 주기로 Task를 시작할 수 있도록 설정해서 실행할 수 있다.
        : 이는 Unix와 Linux의 Cron Jobs와 유사한다. 다음의 Cron Jobs 를 참조.
    - Java Tools
        : App Engine Java SDK는 몇가지 툴을 포함하고 있다.
            . Test Application
            . Uploading the Application files
            . Downloading log data
            . Apache Ant
            . Google Web Toolkit (GWT)
        : Development server
            . Local에서 application의 개발과 테스트가 가능하도록 도와줌
            . Server는 App Engine의 Data store와 service 그리고 Sandbox를 시뮬레이션을 도와준다.
            . 개발 서버는 data store의 인덱스와 쿼리를 Application에서 테스트 할 수 있도록 도와준다.
        : AppCfg
            . 이 툴은 Command-line인터페이를 제고하여 application을 Google App Engine에서 실행할 수
                있게 도와준다.
            . Application을 Upload하고 index의 구성를 수정하고, Application의 로그를 다운로드 해준기도 한다.
            . 세부 내용은 다음의 "AppCfg"의 내용을 참고한다.
 
간단하게 읽는다는 것이 정리를 하게되니 쉽지가 않다.
하지만 정리하진 않은면, 기억에서 금방 사라지기 때문에, 어쩔수 없다.
Posted by 행복상자
나는 전문적으로 주식투자를 하는 사람이 아니고, 많은 관심을 보이는 사람도 아니다. 그리고 주식을 공부하기 위해서 이러 저러한 책은 섭렵하고, 연구하는 사람은 더 더욱 아니다.

그런내 내가 이책은 보게된 것은, 지난해 가을경, 미국에서 시작된 경제위기로 인하여 세계 경제가 긴장 상태에 놓였을때, 김정현 책임이 우연히 나에게 언급하게 된 것이 계기 였다. 이전에도 "시골의사의 경제학"이라는 책을 보려고, 나의 읽을 책 목록에는 넣었지만, 읽지 못하고 지나쳐 버려서 한층 관심이 생겼다.

그때 나의 관심을 끌도록 만들어준 이야기 하나는 주식 투자를 위해서 투자자들의 돈을 끝어드리는 방법에 대한 예 였는데, 투자자들이 의심하지 못하도록 만드는 것이었다. 즉 100% 확실한 정보를 가지고 있고, 그에 대한 증거를 보여주고, 이를 이용하여 투자할 사람들을 찾는 방법이었다. 사람들에게 주식이 오르고 떨어질 거라는 예측을 연속해서 증명한다면, 대부분의 사람들이 믿을 것이다.
먼저 2000명에게 어느날의 주식시장의 동향이 어떨거라는 메일을 보내는데, 1000명에게는 오른다고 보내고, 나머지 1000명은 떨어진다고 보낸다. 이들은 서로를 모르고 개별적으로 받은 메일이라고 생각할 것이다. 그리고 예측이 맞은 1000명중 500명에게는 또 어떤 주식이 오른다고 보내고, 나머지 500명은 떨어질 거라고 보낸다. 이런 식으로 수차례를 예측한 결과가 맞은 사람들에게 반복해서 보내다 보면, 한번도 틀리지 않고 예측이 모두 맞았다고 믿는 사람들이 생겨날 것이다. 이들은 또한 앞으로도 계속 예측이 100% 맞을 거라는 믿을을 갖게 될것이다. 이때 이들에게 투자를 유도하고, 투자자들은 확신가운데 자신의 돈을 기꺼이 푼다는 이야기였다. 

위의 예를 김정현 책임에게 듣고는 갑자기 책에 대한 관심이 생겨났고, 올초에 책을 사사는 회사에서 하루에 몇장씩 책을 보기 시작했다. 그리고는 최근에 1권을 모두 보게 되었다.

책은 내가 생각했던 주식투자를 위한 지침도, 가이드 책자도 아니었다. 저자인 박경쳘씨는 주식 투자에 대해서 이렇거고, 이러니까 이래야 한다고 강력하게 말하지 않는다. 오히려 주식 투자는 성공할 수 없다라고 이야기 하면서, 자신의 지식과 경험을 이야기 한다. 그리고 주식 투자를 말리기까지 한다.
왜냐하면, 주식시장의 역사는 약 200년이 되었지만, 아직도 아무도 예측할 수 없고, 수도 없는 많은 변수들 가운데서 앞으로 이럴거라고 예측하는 것이 무의미 하기 때문이다. 많은 분석과 연구가 있지만, 이역시도 현재의 현상에 대한 분석이지 미래를 예측하는데는 많은 불확실함을 내포하고 있기 때문이기도 한다.

책을 처음 읽으면서, 저자의 이러한 이야기는 책에 대한 나의 예상과는 많이 달랐다.
그리고 책은 주식에 대한 저자의 개인의 생각보다는 경제에 대한 많은 학설과 연구들을 참조하여 객관적인 입장에서 이야기하고 있다. 이러한 경제적인 연구들은 독자들의 이해를 높일뿐만 아니라, 그의 이야기의 객관성을 부여하는데 도움이 될것이다.

1권을 읽으면서, 책을 통해서 경제학에서 다루고 있는 많은 이론들과 돈의 흐름에 대한 연구들을 시대별로 알수 있었다. 그리고 최근의 외환위기와 미국의 서브프라임를 촉발된 현재의 위기에 대한 내용도 이해하는데 많은 도움이 되었다. 경제에 대한 많은 연구들이 있고 삶에 밀접한 것임에도 무관심하게 지나칠때가 많았는데, 이 책은 알아야 할 것들을 쉽게 이야기 하고 있다.

저자는 1편을 마무리 지을때 까지도 주식을 통해서 대박을 꿈꾸는 이들에게 경고한다. 이는 대부분의 사람이 손해을 볼수 밖에 없는 게임이라고...

내가 이책에서 얻은 것들은 주식에 어떻게 투자를 할것이가에 대한 것이 아니다. 그런 의미에서는 이 책의 제목은 다분분히 미끼(?) 성 문구이지 않나 싶다.
경제와 자본의 흐름에 대한 오랜 역사적인 연구와 실례를 통해서, 미처 보지 못했던 여러가지 경제 논리와 이론들을 알게 되었다. 물론 이러한 이론적인 토대가 나의 삶에서 어떤씩으로 쓰일지는 모르겠다. 그리고 어떤 사람들에게 이러한 것들이 재미 없을 것이라고 할지도 모르겠지만, 적어도 나에게는 책을 손에 들고 있어야하는 이유를 제공해 주었다는 점에서 의미가 크다. 

그래서, 사놓은지 오래 되었는데, 아직 읽지 못한 2편을 기대하고 있다. 또 어떤 식으로 나의 시야를 넓혀 줄지... 
Posted by 행복상자
자바를 이용하여 개발하는 개발자 대부분은 아마도 서버용 Application을 개발할 거다.
자바라는 언어가 현재는 main stream으로 자리를 잡았지만, 윈도우즈 애플리케이션 보다는 서버 환경에 적합한 기술로 알려지고 있다. 하지만, 개발자들은 대부분 자신이 만든 코드가 동작하는 환경에는 알려고도 하지 않을 뿐더러, 어떤식으로 접근해야 하는지 알지 못한다.
예전에는 하드웨어의 성능을 최대한 이용하기 위해서 WAS와 Web Server의 세부적인 부분까지 알고 튠닝을 하는 일이 많았으나, 요즘은 이를 제대로 알려고 하는 사람들을 찾아 보기 힘들다. 물론 기본적으로 설정한 값들을 그대로 사용해도 잘 동작할 만큼 하드웨어의 성능과 넉넉한 메모리 때문에 시스템 동작에 큰 영향을 주지 않는다고 할지도 모르지만, 개발자는 항상 최악의 상황까지도 염두에 두어야 한다.

이 책을 보게된 동기는 제목중에 있는 "코딩 습관"이라는 말 때문이었다. 하지만 전체적으로는 코딩을 위한 내용이라기 보다는 서버의 튜닝과 문제점 해결에 대해 많은 내용을 다루고 있기 때문에, 초보자들에게 좋은 가이드가 될 것 이라 생각된다.
 
이 책의 저자는 SDS에서 실무 경험을 쌓은 엔지니어이다. 책은 가상의 인물을 통해서, 실제와 같은 상황을 예를 들어 개발자가 개발에 관한 기술들을 습득하고, 활용하는 방법에 대해 익혀나가는 것을 독자와 같이 공유토록 이끌어 간다.

개발이라면 코딩이 끝이라고 생각하는 것에서, 시스템 환경 구성과 문제를 어떤 식으로 해결할 지에 대한 가이드가 될 수 있는 책이라고 생각돤다. 이러한 점에서는 제목에 포함되어 있는 코딩 습관이 별로 어울리진 않을지라도, 한번쯤은 읽어 볼만한 책이라 생각된다.

책에서 다루고 있는 내용을 간략하게 소개하면 기본적인 시스템의 메모리 관리와 GC의 종류들과 이를 어떻게 활요할지, 그리고 프로파일링 툴들에 대한 설명들과 Java의 메소드와 API들에 대한 성능및 목적에 맞는 사용법에 대해서
IO에 대한 병목 처리와 로그의 중요성을 설명하고 있다.

그리고 WAS 또는 서버 설정을 위한 기본적인 Thread와 인스턴트 설정에 대한 것과모니터링 API에 대한 JMX에 대한 소개와 사용 방법에 대해서 설명을 한다. 그리고 책의 마지막에는 저자가 실제 있었던 상황들을 이를 해결하기 위해서 사용했던 방법론들을 예를 들어 독자들에게 설명한다. 

결론적으로 이 책은 국내에서 찾아보기 힘든 주제를 다루고 있는 책으로, 초보자들이 전반적인 지식을 얻기에는 도움이 될거라 생각한다. 하지만 제목 대로 좋은 코드를 다루거나 하지는 않기 때문에 코딩 관점에서 책을 보게되면 약간의 실망을 가질것이다. 책에서 다룬고 있는 여러가지 툴들은 개발자와 테스터에게 좋은 툴과 무기로 제공될거라 생각된다. 특히 자바 VM의 GC를 처리하고 이의 동작 방법은 자바의 메모리 관리를 이해하는데 도움이 될것이다.
Posted by 행복상자
며칠전에 블로그를 통해서, SpringSource Tool Suite(STS)의 무료 공개에 대해서 언급했었는데, 이제 공식적으로 무료로 공개한다고, 지난 5월 7일자(미국 시간)로 블로그의 "SpringSource Tool Suite is Now Free!" 라는 제목의 글을 통해서 발표했다.

글의 내용을 잠시 읽어보면, Rod Jonson이 지난 SpringOne Europe에서 약속하였던 것을 이행한다는 이야기이다.
그리고 이제부터는 SpringSource Tool Suite (STS)의 정식버전을 무료로 사용할 수 있다는 내용이다.
또한, Christan Dupuis의 최근의 Blog에 추가된 새로운 Feature(2.1.0.M1)들을 소개한다고 한다.

지난 번에는 블로그를 통해서는 Roo가 STS의 한 Feaure로 들어가있고, Roo를 사용해보기 위해서는 STS를 설치해보아야 한다고 이야기한적이 있는데, 이는 2.1.0.M1 버전 부터 가능할 거라 생각된다.

내가 STS에 관심을 갖고 있는 것은 SpringDM과 OSGi번들로 되어 있는 프로젝트 또는 개발된 Application을 제대로 지원하고 있는 툴이 없기 때문이다. 내가 작년부터 진행하고 있는 프로젝트에 도움이 되지 않을까라는 기대 때문에 이전부터 관심을 두어 있었다.

하지만, 아직 설치와 테스틀 해보지 않은 상태이므로, 툴의 장점을 알아가야 하는 과정을 밟아야 한다.
개발에 직/간접적으로 많은 도움을 줄거라는 기대가 있기 때문에, 조만간 날 잡아서 설치해볼 생각이다.

STS는 "download SpringSource Tool Suite"에서 다운 받을 수 있다.


Posted by 행복상자
Google Trend를 이용해서, 최근에 사용되고 있는 웹 기술들을을 한번 살펴 보았다.
기술이라는 것이 단지 인기에 의해서 흥하고 망하는 것은 아니지만, 사람들이 관심을 끌고 있는 기술들이 무엇인지 안다면, 분명히 그 이유가 있다. 그리고 이를 안다면 개발하고자 하는 프로젝트에 적용할 때, 적지 않은 도움이 될거라고 생각된다.

내가 회사에서 관련 있는 프로젝트는 ExtJS를 기본 Javascript Framework로 사용하고 있는데, ExtJS는 라이센스가 유료이다. 그리고 많은 Component를 개발자에게 제공하지만, 이를 숙달할수 있도록 익히기 위해서는 약 2달정도의 공부할 수 있는 시간이 필요하다. 왜냐하면, Javascript와 CSS의 기본을 충분히 알지 못한다면, 각 Componet를 원하는대로 쉽게 제어하기 힘들기 때문이다.
그래서, 최근에는 JQuery를 검토하고 있고, 이는 생각보다 개발자드의 코드를 많이 줄여주고, 코드를 단순화 시키는데 도움이 된다. 

Google Trend를 통해, 이러한 기술들에 대한 사람들의 관심도를 알아보기 위해서 검색을 해보니, JQuery에 대한 관심도가 상승곡선을 타고있고 Prototype과 ExtJS는 상대적으로 낮은 traffic을 보여주고 있다.

     jquery: 6.40    prototype: 9.80    extjs: 1.90

 위 그래프는 JQeury의 관심도가 ExtJS보다 약 6배정도 높다는 것을 보여주고 있다. (ExtJS를 1이라고 볼때, JQeury는 6.40의 traffic을 보여주고 있다.)  Prototype의 traffic은 초기부터 현재까지 거의 일정하다. 이를 사랑하는 사람들이 꾸준한 애정을 가지고 있다고 할 수 있다.

다음은 개인적으로 관심을 가지고 있는 Microsoft의 ASP.NET MVC에 대한 사람들의 관심도를 알아볼 것이다.
최근에 ASP.NET 3.5의 Extention으로 마이크로소프트 사는 MVC프레임워크를 개발하고 1.0버전을 공식 발표했다.
이에 대한 사람들의 관심도는 기대 이상으로 보인다. 향후에 이를 이용해서 개발하는 개발자들이 꾸준하게 늘거라 생각한다. 그리고 MS에서는 Asp.net에서 제공하는 기본 Javascritp framework으로 JQuery를 제공하고, 이를 Visual studio에서 툴로서 지원하고 있다. 

최근에 많이 사용하고 있는 Spring MVC와 Structs를 비교해서 검색해 보았다.
Spring MVC는 꾸준하게 관심도를 유지하는 반면에, Structs는 시간에 지남에 따라 상대적으로 관심도가 줄어 들오 있다. 이에 반해 MS의 ASP.NET MVC는 최근에 발표된 이후로 많은 관심을 끌고 있음을 아래 차트를 통해서 알수 있다.
 
    spring mvc: 2.10    struts mvc: 1.00    asp.net mvc: 1.40  

위의 차트가 모든 것을 다 말해줄수는 없다. 최근에 발표되었기 때문에 MS의 ASP.NET MVC가 사람들의 관심을 끌고 있을 수도 있고, 검색 조건에 따라서 차트의 결과가 달라질 수도 있기 때문이다.
그러나 분명한 것은 개인적으로는 MS에서 발표한 MVC 프레임워크와 Scheffold 기능은 오픈 소스에서 진행되었던 여러 프로젝트의 장점들을 따서 만들었기 때문에 개발자들에게 도움이 될거라는 점이다.

어떤 기술을 선택할지는 개발자의 몫이다. 기간과 리소스와 개발자들의 기술 수준을 고려해서 프로젝트 초기부터 잘 검토한다면, 효율적인 개발이 이루어질거라 믿는다. 초기에 제대로 검토하는 시간과 노력없이 프로젝트를 진행해서 나중에 땜빵으로 누더기를 만드는 프로젝트를 여러번 보아왔다. 이 또한 개발자의 양심과는 대치대는 것이지만, 후 작업과 품질 좋은 코드를 원한다면, 초기에 많은 시간이 들여야 한다.

항상 하는 이야기지만, 개발자는 코드로 이야기 해야한다.
Posted by 행복상자
Spring Source에서 새로운 툴을 하나 발표하려는 것 같다.
미국 시간으로 어제 "Roo Alpha 2 is now available for download" 라는 제목으로 글이 하나 올라왔는데, 생소한 이름의 툴이 하나 올라왔는데, 기존에 진행되었던 프로젝트와는 많이 생소한 내용이었다.

"Roo Alpha 2" 라는 이름으로 이미 Relesed 된 상태로, 이미 국내에서도 여러 개발자들이 관심을 갖고 살펴보고 있는 듯하다. 이는 SpringSource의 Tool Suite(STS)에 Roo Plugin으로 포함되어져 있고, 이들은 "introduction to Roo" 라는 블로그의 글을 통해서 "Roo"에 대해서 간략하게 소개하고 있다.
간단하게 Roo는  SpringSouce 오픈 소스 프로젝트이고, TDD를 위한 툴이고 이를 위해서 Shell을 개발자에게 제공한다. 그리고 Roo는 개발자가가 새로운 언어를 배우지 않고 쉽고 빠르게 그들의 Application을 개발 할 수 있도록 설계되었다고 한다.

Roo는 무료로 사용할 수 있는 툴인데, 이번주, 즉 5월 7일자(미국시간)로 무료로 다운받아 사용할 수 있다는 것이다. 이에 대해서 시간 제약과 같은 규제는 따로 없다.
우리 시간으로 5월 8일에 다운 받아 쓸수 있다는 말이다. (참조: http://www.springsource.com/products/sts)

Roo는 나에게는 아주 생소한 주제이다. 그래서 잠깐 구글링을 해보 았는데, 국내의 여러개발자들이 벌써 이를 테스트하고 분석하고 있는 중이었는데, 그중 특이한 것은 이 Roo가 갑자기 하늘에서 떨어진 것은 아니라는 것이다.
이미 일민(Toby)이가 이를 대한 소개를 한 글이 있었다. 2006년도에 TES2006에 참석해서 배운 내용을 정리했던 것인데 "TSE2006 넷째날 두번째 세션 - ROO"를 보면 이해에 도움이 될거라 생각된다.
그가 2006년에 Roo에 대해 알았다면, 이는 참 오래된 감춰진 프로젝트의 하나일 것이다.

그리고, "Introducing Spring ROO: Part 1" 의 글을 보면, 현재의 Roo에 대한 간략한 소개와 설치에 대한 설명들이 있다. 이름 참조하면 설치에 무리가 없을 거라 생각되고, 참고로 여기서는 A1 버전을 사용하였다.

그리고 지난주에 유럽에서 열렸던 SpringOne에서 발료되었던 세션중에 "Presentation: "Extreme Productivity in Application Development"을 보면 좀더 새로운 Roo에 대한 정보를 얻을 수 있을 것이다.

최근에 Roo에 대한 새로운 이름에 대해서 투표를 진행했는데, Roo도 괜찮은 이름인것 같다. 어떤 이름으로 다시 공개될지 모르지만 현재는 Roo이고, 이는 당분간은 유지 될거라 생각된다.
(투표에 관심있는 사람은 http://cloud.springsource.com/vote 를 한번 찾아가 보시길... )
Roo 1.0 Release는 6월 중순에 발표될거고, 1.0 GA버전은 올해말에 공개될 예정이다.

Roo를 사용하게 되면 어떤식으로 프로그램 방법이 바뀔지는 아직 감은 없지만, 많은 사람들이 관시을 가지고 있었던 프로젝트 였던만큼, 큰 반향을 일으킬 소지는 충분히 있다. 간단하게 작성된 소스들을 보더라도, AspectJ와 많은 Anotaion들이 사용이 된다. 중요한 것은 새로운 것을 익히고 쓰기 위해서는 기본에 충실해야 한다는 것이다. 이를 쓰기 위해서도 역시 기본적인 개념과 사용법에 대해서 익숙해질 필요가 있다.

아무리 좋은 도구라도 사용하는 사람이 익숙하지 않다면, 좋은 인상을 주기 어렵다. 새로운 것을 배우는데 익숙하거나 즐기는 사람이라면 다르겠지만, 자기가 하고 있는 분야만이 전부라고 생각하는 소아적인 개발자와 관리자를 깨우치기는 정말로 어렵기 때문이다. 그래서 "돼지목에 진주"라는 말이 있나 보다.

Posted by 행복상자