Sunday, March 18, 2007

Windows system programming

Windows 시스템 프로그래밍 제3판 (정보문화사, Johnson M. Hart)

간만에 괜찮은 윈도우 시스템 프로그래밍 책을 찾았다.
가지고 있던 책들이 이미 발간된지 한참지나 최신 경향들을 반영하지 못해서 새로운 책을 찾았었는데 마음에 드는 책을 구할 수가 없었다.
GUI 와 MFC 를 배제한 그러면서도 너무 커널 내부에 초점을 맞추지 않는 즉, Win32 API 와 Shell, Registry, Service, Security 그리고 ADSI 등 실제 프로젝트에 도움이 될만한 내용의 책을 찾고 있었는데 이 목적에 딱 맞는 책이다.

사실 책을 산지는 한달이 넘었는데 바쁘다 보니 이제서야 겨우 다 읽었다.
위의 개별적인 항목 하나하나가 책 몇권 분량이 될 수 있기 때문에 이 책 한권만으로 충분치는 않지만 Starting Guide로서는 썩 괜찮은 책이다.

Saturday, March 03, 2007

Teach Yourself Programming in Ten Years

다음은 피터 노빅이 자신의 블로그에 올린 프로그래밍을 배우는 방법이다.

[Teach Yourself Programming in Ten Years]

- 프로그래밍에 관심을 가져보고 정말 재미가 있다고 생각해야 10년 정도를 기꺼이 쏟아 부을 수 있다.

- 다른 사람의 프로그램을 읽어보고 다른 사람과 이야기해야 하는데 이 과정은 어떤 책이나 교육과정보다 중요하다.

- 가장 좋은 배우기는 실제로 해보면서 배우는 것이고 이 방법을 더 적극적으로 체계화해야 한다는 것이다. 최고의 성취는 오랜 기간 경험을 쌓으면서 생기는 것이 아니라 노련한 사람의 경우에 있어서도 끊임없는 개선으로 이루어지기 때문이다.

- 컴퓨터 학과가 가르쳐주는 것이 전부가 아니며 일을 하면서 배울 수도 있다.

- 프로젝트를 다양하게 해보면서 어떤 프로젝트에서는 최고의 프로그래머가 되어 다른 사람들을 리드하고 비전을 제시해 보기도 하고 어떤 프로젝트에서는 다른 사람으로부터 지도 받을 필요가 있다.

- 다른 사람이 이끄는 프로젝트에 참여하여 다른 사람의 프로그램을 이해한 후 원래의 작성자가 놓친 부분을 고쳐보기도 하고 자기의 프로그램을 관리할 다른 사람들이 쉽게 작업할 수 있는 프로그램을 작성하기도 해야 한다.

- 다양한 프로그래밍 언어를 배워라.

노빅이 제시한 것은 "10년"이라는 긴 시간이었다. 10년이라는 시간을 잡은 데에는 이유가 있다. 보통 한분야에서 정통하거나 대가가 되기까지 일반적으로 10년 정도의 세월이 걸린다는 연구결과를 인용한 것이다. 지름길이나 단축코스는 없다.

(주: 피터노빅은 작년까지 구글의 Search Quality의 책임자였다가 요즘은 연구책임자로 있다.)

출처 : 시간의 경제학 - 10년 동안 프로그래밍 배우기 (안윤호) ZDNet 컬럼

-------------------------------------------------------------------------------

나는 벌써 프로그래밍을 시작한지 10년이 지났다.
피터 노빅은 10년이면 대가가 될 수 있다고 했지만 아직은 아는 것보다는 모르는 게 더 많은 것 같다. 다만 내가 무엇을 알고 무엇을 모르는 지 정도는 알게 된것 같다. 구루 소리를 들으려면 앞으로도 10년은 더 필요하지 않을까...

프로그래밍을 배우는 방법으로 피터 노빅의 의견에 전적으로 동의하며 몇 가지 의견을 첨부하고자 한다.

- 10%의 성능 향상을 위해 100%의 추가적인 노력을 들일 각오를 하라.
- 한가지 문제를 최대한 여러가지 방식으로 풀어보라.
- 다양한 프로그래밍 언어를 배우되 하나에 정통하라.
- 문제를 풀기위해서 키보드부터 두드리기 보다는 종이위에 펜으로 아이디어를 정리해보라.
- 새로 배운 것은 반드시 프로젝트에 적용해 써먹도록 하라.

Monday, January 29, 2007

VMWare Lab Automation 컨퍼런스에 다녀왔습니다.

지난 목요일 VMWare Lab Automation 컨퍼런스에 다녀왔습니다.

시카고 리버옆의 아담한 레스토랑에서 점심을 먹으며 진행됐습니다.



New York Strip 이라는 메뉴를 시켰더니 스테이크가 나오더군요.
태형씨는 별로라고 하던데 전 맛있었습니다.
그리고 후식으로 나온 치즈케익은 정말 맛있었습니다.
(공짜라서 그런지도.. 같이 같던 "Neil"이란 친구 말로는 평소에는 너무 비싸 오기 힘든 곳이라더군요.)



그동안 Xen, Virtual Server 그리고 Virtuozoo 까지는 리뷰를 해봤지만 상대적으로 VMWare에 대해서는 무관심했었는데 이번기회에 많은 정보를 얻었습니다.
(사실 영어가 딸려서 직접 알아 들은 건 조금 밖에 없습니다.)


VMWare도 Virtuozoo 못지 않게 많은 기능과 편리한 인터페이스를 제공합니다. 패키지의 완성도에서는 훨씬 더 뛰어나다는 생각도 들더군요. VMWare 를 기반으로 그 위에서 운영되는 다양한 제품군들을 보유하고 있었습니다.
특히 리눅스 위주인 Virtuozoo에 비하여 윈도우즈 지원이 잘 되어있다는 느낌을 받았습니다.


사실 VMWare가 elary starter 이면서도 레퍼런스를 찾아보기 힘들었고 VPS Hosting 에서는 Virtuozoo 가 절대 강자인데 이번에 그 이유를 알것같습니다.
VMWare는 VPS 보다는 Enterprise Market 에 관심이 있는 것 같습니다. 그러니까 기업의 전산환경이나 개발환경 전체를 가상으로 제공하는데 주력하고 있는 것으로 보입니다.
(더불어 이를 위한 컨설팅분야에도 많은 노력을 기울이고 있는것 같습니다.)

우리가 VPlex의 다음 단계로 생각하는 Datacenter Virtualization 에 가깝다는 느낌입니다. 그러다 보니 SAN, HA, Disaster Recovery, chargeback 등 high-value option 을 탑재하여 고가 시장위주로 영업을 하고 있습니다.마치 IBM이 메인프레임 시장에 주력하듯이 말입니다.


이번에 소개한 Lab Automation 도 VMWare를 이용하여 개발 타운을 쉽게 구성할 수 있도록 지원하는 솔루션입니다.
Lab Automation 을 이용하면 소프트웨어 개발에 필요한 시스템 환경을 쉽게 구축함으로써 개발 사이클을 줄일수 있고 시스템 환경차이에 따른 버그 추적을 용이하게 해준다는 군요.


http://www.vmware.com/products/beta/labmanager/

(<-자세한내용은 여기에...)

예를 들어 서버템플릿에 AD서버, Exchange 서버, www 서버, DB 서버, backup 등의 서버 리스트가 있으면 이중에서 필요한 서버를 선택하고 (발표자의 표현으로는 'like shopping') 각 서버별 구성탬플릿을 선택하면 자동으로 서버 타운이 구축된다고 합니다.
그리고 작동중인 서버들을 선택하고 구성탬플릿을 적용하면 모든 서버가 템플릿의 설정대로 한번에 업데이트가 되기도 한다는군요.
(데모가 있긴했지만 리얼시스템에 대한 데모 대신 UI 만 있는 플래쉬데모로 진행되서 실제로는 얼마나 잘되는지는 모르겠습니다.)


그 밖에 VM의 네트웍 설정이나 Account 관리, Application 배포 등 VM 내부의 리소스에 대한 관리를 Lab Manager를 통해서 웹상에서 할 수 있답니다. (Lab Manager 자체가 웹 인터페이스입니다.)


정리하면 VMWare는 Virtuozoo 이상의 기능을 제공하고 Package의 완성도가 높기는 하지만 컨셉이 VPS hosting이 아니라 Datacenter 가상화쪽이라서 현재의 VPlex와는 직접적인 비교대상은 아닌 듯합니다. 다만 부분적으로 많은 아이디어를 차용할 수는 있을 것으로 보입니다.


그리고 우리가 사용하고있는 Xen 이나 MS Virtual Server 와 상대적으로 제품화가 잘되어 있는 VMWare 및 Virtuozoo 와의 차이점을 얘기하자면 템플릿 베이스로 VM을 쉽게 생성, 변경할 수 있다는 점, VM 자체에 대한 관리외에 VM내부의 리소스에 대한 관리까지 기본으로 제공하며 자체적으로 쉽고 강력한 Management Interface를 제공한다는 점, 백업, 보안, 모니터링, OS/Appication Provisioning 등 실제 서비스에 필요한 관련 시스템까지 패키지로 완벽하게 갖추고 있다는 점등을 들 수가 있겠습니다.


우리가 Xen이나 MSVS를 기반으로 개발하고 있는 파트가 이러한 Advanced Feature 부분들인데 앞으로 가야할 길이 멀다는 느낌입니다.



Sunday, January 28, 2007

Days in Chicago

시카고에 온지도 어느덧 일주일이 지났다.

처음에는 시차적응도 안되고 불편한것도 많더니 이제는 어느 정도 적응이 되버린 것 같다.
여기도 사람사는 곳이고 크게 불편한 것 없이 지낼만하다는 생각이 든다.
(콘도가 건조해서 아침마다 목이 아프고 코가 막히고 머리도 띵하다는 것만 빼면 말이다... 그것도 아침에 10~20분쯤 욕조에 몸을 담구고 있으면 괜찮아진다.)

한 주동안은 교육이다 시스템 셋팅이다 해서 별로 해결해 놓은 것도 없이 후딱 지나가 버렸다.
VPlex 쪽에서는 해결해야할 새로운 문제들이 잔뜩 생겨 벼렸고 GMS는 아직 본격적인 회의는 시작하지도 못하고 메일로만 comment를 주고받고 있다.

그래도 주말이라고 숙소->회사->숙소의 쳇바퀴에서 벗어나 시내를 돌아다녀볼 계획을 세웠다.
마침 동현형이 집으로 점심식사 초대를 해줘서 간만에 제대로 된 음식으로 포식을 하고 다같이 아울렛으로 쇼핑을 갔다.

시카고에서 차로 한시간정도 거리에 있는 미시간 시티에 있는 대형 아울렛이였는데 역시 땅이 넓은 나라라서 그런지 창고처럼 생긴 1층짜리 매장이 브랜드 별로 수십개가 늘어서 있었다.



놀라운게 유명 브랜드 옷값이 한국의 1/3에서 1/8 정도 밖게는 되지 않는다. 한국의 브랜드 매장들이 자리값이나 로열티로 얼마나 많은 돈을 지불하고 있는건지 짐작이 갈것 같다.
특별히 살 마음이 있어서라기 보다는 그냥 구경삼아 따라갔는데 두시간쯤 돌아다니며 쇼핑을 하다 보니 다들 쇼핑백을 몇개씩 들고 있게 됐다.

쇼핑을 끝낸 후에는 시카고의 한국 식당에 가서 소갈비까지 뜯고 뿌듯한 하루를 보냈다. ^^;
(여기는 소고기 값이 돼지 고기 값이랑 차이가 없는 것 같다.)

Sunday, January 14, 2007

성공과 실패를 결정하는 1%의 네트워크 원리

성공과 실패를 결정하는 1%의 네트워크 원리

간만에 네트워크에 관한 좋은 책한권을 찾았다.
Application Level 에서 전기적 신호의 Physical Level 까지 네트웍이 실제로 어떻게 작동하는 지에 대한 모든 것을 쉽게 설명하고 있다.
예전에 데이터 통신을 첨 공부했을 땐 OSI 7 layer 나 LAN 에 대한 책을 읽으면서 온갖 수식과 그래프로 가득한 것을 보고 매우 어려워 했었던 기억이 나는데 이 책은 초보자라도 부담없이 읽을 만한 것 같다.
네트워크 전문가가 아니더라도 개발자나 시스템 엔지니어라면 꼭 한번쯤은 읽어볼만한 책이다.

Tuesday, January 02, 2007

웰빙

담배를 끊고
술을 마시지 마라.
채식을 하고
규칙적으로 운동을 하라.
뱃살을 빼고 근육을 늘려라.
일찍 자고 일찍 일어나라.
입에 단 것을 멀리하고
화를 내지 마라.
그리하면
실제로 건강하게 오래 살게 될지도 모른다.
하지만 누구도 확신할 수는 없다.
죽을 때까지 살아 봐야 안다.
그러나 그렇게 산다면
죽을 때까지 기다리지 않아도
한 가지는 분명할 것이다.
너무 지루해서 무척 오래 사는 것처럼 느끼게 될 것이다.

- '막시무스의 지구에서 인간으로 유쾌하게 사는 법' 중에서-
이 글을 읽다보니 이 문구가 생각난다.
"Life is Random!"
새로운 것, 의외의 상황, 변화를 두려워하지 말자.
그것이 좋은 일이든 나쁜 일이든...

2007년을 맞이하며...

2007년 새해를 일본의 눈덮힌 산속 노천온천에서 별을 보며 맞이했다.

그동안의 피로와 스트레스, 고민과 걱정을 모두 버리고 돌아왔다.

2007년에는 새로운 프로젝트와 새로운 역할을 맡아 좀더 바빠지게 될것 같다.
그러나 올해는 일에 끌려다니지 않고 시간을 잘 관리하며 보내고자 한다.

그러기 위해서는 일할 시간에 집중도를 높히고 쉴때는 집에서 빈둥거리기보단 확실히 휴식과 재충전의 기회가 될 수 있는 방법을 찾아야겠다.

올해의 목표
- 최소한 다음 2주간의 계획을 항상 짜둘것
- 여행을 많이 가볼것
- 봄이 되면 등산을 다시 시작하기
- 영어학원 등록하기

Thursday, December 21, 2006

국영수를 열심히..

난 가끔씩 주변 사람들에게 다음과 같은 질문들은 받게된다.

"컴퓨터를 잘하고 싶은데 무엇부터 공부해야 될까요?"
"우리 동생이/조카가 프로그래머가 되고 싶다고 하는데 뭘 준비해야 되지?"
"우리 아들한테 컴퓨터를 가르칠려고 하는데 어떻게 하는게 좋겠나?"

그럴때면 나는 먼저 "파워유져" 가 되려고 하는건지 아니면 "전문가"가 되려고 하는건지를 확인한다.
(전문가 = 프로그래머 + 엔지니어? 좀 모호한 용어지만 컴퓨터로 먹고 살것인가가 기준이 될 듯.)


목표가 "파워유져"라면 게임등을 통해서 컴퓨터를 즐기면서 친해지는 방법을 권유해 준다. (사실 별로 해줄 말이 없다.ㅋㅋ)

목표가 "전문가"라면 이렇게 말해준다.
컴퓨터는 나중에 시작해도 늦지 않으니 "국영수를 중심으로 열심히 공부하라고 하세요."

농담으로 하는 얘기가 아니다.
국어를 잘해야 주어진 문제를 잘 이해하고 자신의 output 을 문서화하거나 다른 사람들에게 설명을 잘 할 수 있다. 개발자들이 글을 쓰는 능력이 부족하거나 개발 문서 작성을 등한시 하는 경우를 많이 보게 되는데 혼자 기획하고 개발하고 결과물을 자기가 직접 사용하는 경우가 아니라면 원활한 커뮤니케이션을 위한 국어 능력은 프로그래밍 실력 못지 않게 중요한 요소이다.


그리고 모든 컴퓨터와 인터넷 용어는 영어이고 쓸만한 Techinal Reference 는 모두 영문자료라고 봐도 된다. 영어를 못하면 제대로 된 지식 습득이 매우 어렵다.

영어의 필요성은 외국계 회사에 다니는 지금 훨씬 더 절실하게 느끼고 있다. 예전에는 기술서적이나 인터넷 자료를 읽고 쓰는데 지장이 없는 정도면 충분하다고 생각했는데 본사와 메일을 주고 받다 보면 미묘한 의도 파악이 쉽지 않다. 게다가 영문 자료의 양이 많아지면 속도도 중요한 문제가 된다.


마지막으로 프로그래머가 알고리즘을 작성하고 코딩을 하는 일련의 과정은 수학적인 바탕위에서 진행된다. 수학적인 문제풀이 트레이닝이 부족하면 좋은 코드를 작성할 수 없다.

국영수는 대학입시에서만 중요한게 아니라 좋은 프로그래머가 되기 위해서도 필수적인 요소이다.