월요일, 12월 18, 2006

2007년도 계획

Health
  1. 규칙적인 운동을 하도록 한다
  2. 체중 조절
Family
  1. 주말은 언제나 가족과 함께
Professions
  1. Java ME, Java SE
    • 업무에 관련된 기술 분야를 중점적으로 습득하도록 한다
  2. NetBeans
    • NetBeans의 Mobility pack등을 실제 업무에 적용
  3. UML, Design Pattern, XP
    • 프로젝트 진행 시 문서화 및 개발 방법론으로 적용
  4. 영어 / 일어에 지속적으로 노출

일요일, 12월 17, 2006

와인에 대하여

오늘 MBC의 방송 프로그램을 보다 보니 200만원 상당의 와인이 잠깐 소개되었다.
음... 와인 한병에 200만원이라니. 내가 그 맛을 보면 값어치에 걸맞는 무언가를 얻을 수 있을까? 당근 없겠지? ^^

평소 와인 맛보다는 와인 상식에 관심이 많았던지라 다시 한번 와인 상식을 넓혀보고자 Web Search를 좀 해보았다.

몇가지 와인 품종에 대한 Wikipedia 정보이다.

http://en.wikipedia.org/wiki/Wine
Cabernet_Sauvignon
Merlot
Syrah
Pinot_Noir

별로 접해본적이 없는 White Wine의 품종 들...

Chardonnay
Riesling ---> 얼마전에 먹어본 독일산 와인 품종 ^^

토요일, 12월 09, 2006

my business card

My business card collection from 1999 until 2006

목요일, 12월 07, 2006

네트워크 (프로토콜) 용어 정리

여러 네트워크 관련 (프로토콜) 용어들을 정리해보고자 한다.

요즘 관심가는 페이지 링크 모음

Java Passion : Java, AJAX, NetBeans 등에 대한 학습자료 및 Lab을 제공함
http://www.javapassion.com/

Google Code : Google의 개발 API 관련 문서 제공
http://code.google.com/

Mozillar Developer Center: FireFox 브라우저에서 S/W 개발에 관련된 정보 제공
http://developer.mozilla.org/

Google Code Search: 소스 코드 검색 엔진
http://www.google.com/codesearch

Java Community Process: JCP organization home page로 Java의 모든 JSR을 살펴볼 수 있음
http://www.jcp.org/

화요일, 11월 28, 2006

이스탄불!

이스라엘에서 귀국길에 이스탄불에 들렀다. 약 7시간 정도 혼자 지하철을 이용하여 블루 모스크와 성소피아 성당을 구경하였다.

공항에서 트램을 타고 1시간 정도 이동하여 오후 3시 경 블루 모스크 근방에 도달하였다. 그 때 오후 예배를 드리는지 도시 전체에 기도하는 소리가 울려퍼졌다. 동시에 내 눈에 들어온 블루 모스크의 모습은 너무나 웅장하여 가슴이 떨릴정도였다.

하지만, 이 곳이 블루 모스크인줄 모르고 지나쳐 두 정거장을 더 지나갔는데 운좋겠도 이 실수 덖분에 이스탄불 항을 볼 수 있었다. 아시아와 유럽을 잇는 거대한 다리가 두 협곡을 연결하여주고 넓은 바다에는 낚시를 즐기는 할아버지들과 아마도 유럽과 아시아를 오고가는 배들이 바쁘게 움직이고 있었다.

항만에서 아까 지나쳐 온 블루 모스크를 향해 걸어가기로 했다. 걸어가면서 토카피 성의 외벾을 따라 줄지어서 양탄자 가게들과 캐밥 음식점들이 눈에 띄었다. 한국말로 "동양"이라고 써져있는 여관도 보았는데 아마도 재한국인이 운영하고 있으리라.

블루 모스크 근방에 도착하여 먼저 성소피아 성당을 구경하였다. 지어진지 천년이 넘었다고 하는데 특이하게도 내부에서는 그리스도 벽화를 볼 수 있었다. 어떻게 이슬람 국가에 이런것이 남아 있을까 궁굼해하고 있을 때 외국인 관광객에게 설명을 해주던 인솔자의 설명을 귀돈냥하였다.
이유인즉 콘스탄티노플을 점령한 술탄이 벽화 위에 모두 색으로 덧 칠을 하였을뿐 회손하지는 않았다는 것이다. 현명한 술탄!

성소피아 성당을 나와 블루 모스크의 광장으로 향하였다. 주변에는 한국인 관광객도 간간이 볼 수 있었다. 그 광장에는 한 무리의 어린 학생들이 있었는데 나에게 다가와 연신 일본어, 영어를 섞어가며 말을 걸었다. 어린이들은 국적에 관계없이 참 이쁘구나 라고 생각하면서 그 곳을 빠져나와 캐밥을 먹으며 잠시 지친몸을 쉬고 트램을 타고 공항으로 향하였다. 이미 시간은 7시 경이 되어 주변은 어둠에 잠기고 있었다.

트램에 타고 있는 동양인은 나 혼자뿐인지라 괜시리 신경도 쓰이기도 하고 정말 이국적인 분위기기가 물씬 풍기는 짧은 여행이었다.

후기
캐밥을 먹었던 식당의 주인 아저씨가 한국에서 왔다고 하니 형제의 나라라며 차를 한잔 대접하더라. 방송에서만 듣던 터키와 한국의 우정을 실감(?)하였다고나 할까 ^^

수요일, 11월 15, 2006

예루살렘!




어제 예루살렘에 다녀왔습니다.

물론 신자가 아닌 저로서는 신자분들에 비하면 그 감동이 덜하겠지만 그래도 세계 3대 종교의 성지를 직접 이 발로 밟고 눈으로 확인하였다는 사실은 꽤 의미있다 하겠습니다.

예루살렘에 방문하기 전에는 그 곳이 오래된 사막속의 황폐한 성지라고 생각하고 있었습니다. 아무도 살지 않지만 신자들이 끊임없이 방문하는 성지같은 곳이라고 생각했지요.

그런데, 직접 방문해보니 제 상상과는 전혀 달리 현재도 도시(Old City)안에 사람들이 살고 있으며 상점, 심지어 피자가게까지 있는 그냥 삶을 살아가는 곳이었습니다.

도시의 핵심에는 지구의 중심이라고 불리는 돌위에 성전이 지어져있으며 (현재는 무슬림 사원입니다.) 유대교 신자들은 이 성지에 가장 가깝게 붙어있는 서쪽벽에서 기도를 드리고 있습니다.

에루살렘은 현재 4개의 구역으로 나누어져 각각 유대인, 무슬림, 기독교인, 아르메니안 등이 주측으로 관리된다고 합니다. 저는 유대인지역과 무슬림 지역을 아주 잠깐 들어가봤는데 무슬림 지역은 왠지 좀 황량하고 무서운 기분이 들더군요.

몇 천년의 역사동안 타 민족에게 지배당하고 뿔뿔이 흩어졌다가 다시 이스라엘에 모여 삶의 터전을 잡은 유대인들의 마음속에 영원불멸의 성지로 남아있는 예루살렘.

왠지 우리들에게도 이런 마음의 받침이 될 수 있는 곳이 하나 있었으면 좋겠다는 생각이 들었습니다.

Open Source Java ME - 드디어 공개된 Java 소스 코드

Java ME 소스 코드가 phoneMe라는 새로운 이름으로 공개되었다.

https://phoneme.dev.java.net/

이제 일반 개발자들도 Sun의 Java ME 소스코드를 다운로드하여 볼 수 있으며 만일 commiter가 된다면 수정도 가능하다.

현재 공개된 코드는 CLDC-HI 1.1.3, JWC 1.1.3 및 몇가지 추가적인 JSR 코드들이다.

앞으로 이 오픈 소스를 이용하여 여러 개발 업체들이 Sun의 Java 기술을 채용할 것으로 보이며 이로써 Java ME의 영향력이 더욱 강해질 것으로 생각된다.

금요일, 11월 03, 2006

2007년 Sun Tech Days!

http://kr.sun.com/developers/techdays/

2007년 2년 만에 드디어 Sun Tech Day를 개최한다. Java와 Solaris 그리고, NetBeans가 축이되는 이번 행사는 특히나 내가 연사로 Java ME MSA 기술을 소개한다.
제목은 "차세대 모바일폰 프로그래밍: MSA와 CLDC" 이다.

자세한 Agenda는 이곳을 참조하시길.

목요일, 10월 26, 2006

현재 나의 관심사들

  1. Java ME
    • MSA
    • CLDC-HI
  2. NetBeans
  3. Python
  4. Web technology
  5. Self paced projects

화요일, 10월 24, 2006

타짜

만화책으로 좀 보다 만 타짜를 영화관에서 봤다. 500만 국민 여러분들이 입증해주신 영화라 기대가 컸는데 나 한테는 약 5%로 부족한 영화되겠다. 만화책을 봐서 그런가?

월요일, 10월 23, 2006

달리기 2주차

2주째에 접어든 달리기 보고서. 현재 운동장 7.5 바퀴를 돌고있으며 달리기 시간은 20분정도.
날씨가 점점 싸늘해지고 있지만 아직까지는 달릴만하다.

목요일, 10월 19, 2006

TDD (Test Driven Development)


켄트 백이 집필한 테스트 주도 개발이란 책을 보았다.
예전 부터 XP나 TDD에 관심을 가지고는 있었지만 책도 제대로 본적이 없고 어렴풋하게 그게 뭐겠구나 생각만 하고 있었으므로 이 책이 좀더 탄탄한 지식을 쌓는데 도움이 되었다.

TDD를 단순히 코드 개발 시 검증을 쉽게 하기 위한 방편으로 생각하고 있었는데 책을 읽고 나니 소프트웨어 개발의 주기를 관리하기 위한 하나의 방법론처럼 느껴진다. (아직, TDD를 사용해본적도 없고 달랑 책 한권을 출퇴근시간에 살펴본 것이니 무리한 결론은 금물!)

어떤 책이든 달랑 읽기만하고 심사숙고 해보지 않거나 실 생활에 적용해보지 않으면 별 소용이 없듯이 TDD 역시 내 스스로 절차탁마해보지 않고는 이게 어떤 것인지 알 수 없을 것이다. TDD 관련 자료를 주변에 붙여놓고 개인 프로젝트 구현 시 TDD를 이용할 수 있도록 하자!

TDD의 개발 주기를 간단히 설명해보면:
- 테스트 작성 (하나의 기능에 대해)
- 일단 테스트가 성공할 수 있도록만 구현
- Refactoring : 테스트 코드나 구현 코드를 refactoring함

위 주기를 계속 반복하여 동작하는 깔끔한 코드를 작성하는 것을 목표로 한다.
이 책과 관련하여 앞으로 참고할 만한 서적 및 자료는 다음과 같다.
  1. Refactoring : Martin Fowler
  2. The Smalltalk Best Practice Patterns: Kent Beck
  3. Design Patterns: Gamma, Erich, Helm
  4. Extreme Programming Explaind: Kent Beck
  5. Code Complete: Steve McConnel
  6. www.artima.com/intv/contest.html
  7. www.mockobject.com
  8. www.sdmagazine.com
  9. martinfowler.com

수요일, 10월 18, 2006

Windows XP에서 부팅 시 시작하는 프로그램(프로세스) 찾기

얼마전부터 내 Windows XP 랩탑 컴퓨터를 다른 컴퓨터에서 ping도 안되고 네트워크 폴더에도 접근안되는 현상이 발생했다. 그냥 그러려니 하고 지내던 중 급기야 오늘 이놈의 문제를 해결해야겠다고 맘을 다잡고 한 2시간 고생을 했는데...

갖가지 Windows XP 설정을 변경해도 전혀 나아지지 않더라는 말씀 OTL
한가지 힌트를 얻은 것이 다른 시스템에서 ping -t로 계속 ping을 해보고 있으면 Windows XP가 부팅하고 로그온 화면이 나온 직후 약 5초 정도는 ping이 성공하더라는 것이다. 즉, 시작 프로그램에서 시작되는 어떤 프로세스에 의해 이러한 현상이 생기고 있다는 것을 알 수 있었다.

그리하야... Windows XP가 부팅 중 실행되는 프로세스들을 검토하기 위하여 sysinternals에서 매우 좋은 유틸리티 프로그램을 구하였다. 이 프로그램은 시작 프로그램, 디바이스 드라이버, 서비스 등 그야말로 부팅 시 실행되는 모든 프로세스를 총망라하여 보여줄 뿐만 아니라 다른 시스템의 내용과 비교 기능 등 문제 해결을 위한 모든 것을 제공하여 주었다.



이 툴을 사용하여 정상 시스템과 목록을 비교 이상한 프로세스들을 시작하지 못하도록 설정한 후 (당근 이 툴은 시작 프로세스들을 직접 지우거나 시작되지 않도록 설정할 수도 있다.) 문제를 해결하였다 우후!

일요일, 10월 15, 2006

Java 개발자가 주의해야 할 Python

Java에 익숙한 개발자가 Python을 사용 시 주의해야 할 만한 것들을 정리해보도록 하자.

1) '==' 연산자
Java에서는 2개의 문자열(String)을 비교 시 문자열 값 자체가 같은지 확인하기 위해서는 equals() method를 사용하고 ==는 객체의 identity가 동일한지 확인한다.
그러나, Python에서는 어떤 객체이든 값이 동일한지 확인하기 위해 == 연산자를 사용한다. 객체의 identity가 동일한지는 A is B 로 확인할 수 있다.

2) static 멤버 변수의 위치
Java에서는 static 멤버나 일반 멤버 변수를 위치에 관계 없이 선언하여 사용한다. 그러나, Python의 경우는 class attribute(Java에서는 static 변수)는 class 정의 바로 다음에 작성하고 data attribute(Java에서 non-static 변수)는 __init__ method에 작성하여야 한다.

실용주의 프로그래머 (The Pragmatic Programmer : From Journeyman to Master)

초심자에서 중급 개발자로. 중급 개발자에서 이젠 좀 한다하는 수준의 S/W 엔지니어 살아가고 있지만 사실 소프트웨어 개발에 대한 열정은 반대로 줄어온것 같다는 생각이 든다.
누구나 그렇듯 초심자 시절에는 무엇이든 다 할 수 있고 또한 젊은의 열정도 있어 뭐든지 열심히 관심을 가지고 매사에 몰두한다.
경력이 쌓아가면 갈 수록 경험과 통빡(^^)은 늘어가지만 열정만은 어린시절보다 못해 왠지 갈수록 초라해지는 느낌이들고 약간의 불안감과 함께 인생의 방향 전환도 슬쩍 슬쩍 생각하게된다.

하지만, 잠시 마음을 가다듬고 생각해보면 내가 좋아서 하는 일로 돈도 벌고 계속 새로운 것을 배울 수 있으며 맘만 먹으면 내 손 끝에서 무엇이든 창조해 낼 수 있는 이런 직업이 또 어딨나하는 깨닮음을 얻게된다.

이 책은 다시 초심자 시절의 열정을 갇기로 맘 먹고 1주일 정도 후딱 해치워버린 책이다. 이미 잘 알고 있었던 내용도 있었고 새로운 내용도 있었지만 가장 중요한 것은 나의 일에 "애정"을 가진 사람이라면 충분히 공감하고 새겨볼 만한 내용이 많았다는 것이다.

도서관에서 1주일 대출로 빌려보았지만 기회가 되면 구매를 하여 옆에 두고 살짝 살짝 들쳐보고 싶은 책이다.

아래는 동 출판사에서 번역한 책 중 읽어 볼 만하다고 생각되는 목록이다.
  1. 대체 뭐가 문제야 : 문제 해결에 관한 창의적 사고를 길러주는 6가지 질문
  2. 테스트 주도 개발
  3. 익스트림 프로그래밍
  4. 생각하는 프로그래밍 : 프로그래밍 본질에 관한 15가지 에세이
  5. 실용주의 프로그래머를 위한 버전관리 using CVS
  6. 실용주의 프로그래머를 위한 프로젝트 자동화
  7. 리팩터링 워크북

화요일, 10월 10, 2006

나는 달린다 (Mein Langer Lauf zu mir selbst)

110kg이 나가는 뚱뚱보에서 75kg의 건장한 50대 남성이 되기까지 Joschka Fischer(전 독일 외무 장관)이 행한 일은 무엇일까?

'나는 달린다'가 그 해답이었다.

한때 인생의 시름을 잊기 위해 쉴세없이 먹어대고 그로인해 100kg이 넘는 거구가 될 수 밖에 없었던 그는 이혼 및 여러 인생의 위기를 겪으며 이대로는 안된다라는 절박한 심정으로 운동화를 신고 달리기 시작한다.

물론, 처음은 쉽지 않았다. 100kg이 넘는 거구로 달린다는 것은 쉽지않은 일일 것이다. 하지만, 한번 결정한 것은 포기하지 않는다는 신념과 자신의 인생을 개혁하겠다는 강한 의지로 그는 1주일, 1개월, 1년을 포기하지 않고 달려 이제는 마라톤도 뛸 수 있는 진정한 Runner로 변신한 것이다.

여기 그가 달리기 위해 세운 4가지 원칙이 있다.
  • 과감한 결단
  • 끈기있게 지속
  • 철저히 현실에 발을 딛고 실행할 것
  • 인내
다음은 3가지 기본 수칙이다.
  • 나 자신을 기만하지 말라
  • 과도한 부담을 주는 일은 피하라
  • 결코 포기하지 않는다
나 역시 달리기로 운동을 선택한 이상 '포기'하지 말고 끈기있게 지속해야 할 것이다.
오늘 5km 달리기의 1주차 처방에 따라 1분 뛰고 1분 걷기를 반복하여 운동장 6바퀴를 달렸다. 총 운동 시간은 25분정도를 지속하였다.

자 이제 부터 시작이다! 무리하지 말고 차근 차근 포기하지 않고 실천하도록 하자.

일요일, 10월 08, 2006

Python의 Data Type 정리

1. Dictionary
d = {"key1":"a", "key2":"b", 3:"c", "key4":4}

키와 값으로 이루어지고 정해진 순서가 없음.

d.keys() => ["key1", "key2", 3, "key4]
d.values() => ["a", "b", "c", 4]
d.items() => [("key1", "a"), ("key2", "b"), (3, "c"), ("key4", 4)]

2. List
l = ["a", "b", "c", "d"]

정해진 순서대로 유지되며 Java의 배열과 비슷하나 더 확장된 기능을 제공함

3. Tuple
t = ("a", "b", "c", "d")

List와 동일하나 값이 불변임. 값을 수정할 수 있는 방법을 제공하지 않음.
상수 값을 사용할 때 속도가 더 빠르기 때문에 활용함.
Tuple을 List로 변환하기 위해서는 list(x) 메쏘드를 사용할 수 있다.

l = list(t)
# l => ['a', 'b', 'c', 'd', 'e']

4. Set
Set을 생성하기 위해서는 set(x) 메쏘드를 사용한다. Set은 중복된 값을 가지고 있지 않는다.

s = set(t)
# s => set(['a', 'c', 'b', 'e', 'd'])

관련 Tutorial은 이 페이지를 참고하기 바란다.