Media Log

[분류 전체보기]에 해당되는 글 275

  1. h Writing Secure Code 2/E : 안전한 코드 작성 기술 -Michael Howard 2008.08.01
  2. h Taeyo's ASP - 김태영 2 2008.07.19
  3. h Python Essential Reference -David M. Beazley 2008.06.29
  4. h Learning Python - Mark Lutz 2008.06.28
  5. h Art of UNIX Programming - Eric S. Raymond 1 2008.06.28
  6. h Learn Visual Basic 6.0 -Lou Tylee 2008.06.24
  7. h Javascript The Definitive Guide 5/E -David Flanagan 2 2008.06.15
  8. h Steve McConnell의 Code Complete 2/E 2 2008.06.01
  9. h 이태준의 문장강화 5 2008.06.01
  10. h 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 2008.06.01
  11. h Visual C++ 경고 없는 코드 작성 팁. - CRT 문자열 함수 8 2008.05.24
  12. h 재미로 보는 프로그래밍 언어 순위 8 2008.05.19
  13. h Firefox 3.0과 오픈소스 3 2008.05.18
  14. h 전방선언과 컴파일 의존성 1 2008.05.16
  15. h 게임 개발자를 위한 C++ -서진택 2 2008.05.11
  16. h 웹 진화론 -우메다 모치오 4 2008.05.11
  17. h 집에 오는 길. 7 2008.05.10
  18. h 구충남대 서버에서 가졌던 스타크래프트의 추억 38 2008.05.06
  19. h The Internet Book - by Douglas E.Comer 2008.05.03
  20. h 화성행궁의 장용영 수위의식 5 2008.04.19
  21. h Visual Studio 2008과 IronPython 2008.04.12
  22. h Debugging Applications for Microsoft .NET and Microsoft Windows By John Robbins 1 2008.04.06
  23. h The Practice Of Programming by Brian W. Kernighan 2008.03.30
  24. h Paul Graham의 해커와 화가 1 2008.03.23
  25. h 이스트소프트의 비즈하드 2008.03.23
  26. h 이재규의 C로 배우는 알고리즘 5 2008.03.18
  27. h 오랜만에 다시 찾은 야구장 1 2008.03.16
  28. h 처음 마음가짐을 잊지마 2008.03.16
  29. h 아주 조금씩 2008.03.16
  30. h 인내 2008.03.16
Writing Secure Code - 10점
Michael Howard 외 지음, 지정기 외 옮김/정보문화사

요즈음 계속 가벼운 책들만 읽어보다가 오랫만에 명서를 하나 골라 잡아 읽었다.
그저 그런 책을 읽는 것보다 좋은 기술 서적을 읽을 때에는 훨씬 더 많은 집중력이 필요하고 그만큼 몸도 지치게 되는데, 사실 그래서 이런 좋은 책들을 집어 들기 위해선 큰 각오와 용기가 필요하다.
강컴에 꽤 오랫동안 좋은 책들도 안나오고 해서, 이번엔 맘을 다 잡고 몇 일간 이 책을 쭉 읽었는데, 내용이 꽤나 어려워서 많은 부분을 이해하지 못하고 넘어가버렸다.
명서를 완독하게 되면 힘든 만큼 가슴이 뿌듯해야 하는데 너무 많은 것을 모르고 넘어가서 큰 기쁨을 느낄 수 없었다.
조금 더 실력을 쌓아서 내년 쯤 되면 다시 읽어봐야 할 것 같다.

이 책은 보안에 관련된 거의 모든 분야를 자세히 다루고 있으므로, 개발 플랫폼이나 분야에 상관없이 누구에게라도 많은 도움이 될 것이다.

이 책의 저자인 마이클 하워드는 마이크로 소프트에서 일하고 있는 유명한 수석 보안 관리자인데, 가장 최근에는 Writing Secure Code for Windows Vista 라는 책을 저술 했다.

비스타에만 집중해서 쓴 이 얇은 책은, 나오자 마자 회사에 신청했었는데 빌어먹을 영어 실력 때문에 몇 장 깨작거리다가 덮어 버렸다.
그 후에 곧 한글판이 번역되어 나왔고, 또 회사에 신청했는데 아직도 못 읽고 있다.

이제 다음 타자는 Writing Secure Code for Windows Vista ^^

TAEYO'S ASP - 8점
김태영 지음/삼양출판사

내가 이 책을 처음 알게 된 것은 2001년도 였다.
그 때는 그냥 ASP라는게 다 있구나, 이 빨간 책이 유명한책인가보다. 태요? 이름이 특이해서 왠지 끌리네 하는 느낌 정도 였었다.

군대를 다녀와서 복학한 후 연구실에 들어가서 공부를 한지 1년 쯤 지났을 때, 아마 그러니깐 2005년도 겨울 방학 때였다.

방학 때마다 항상 뭔가를 하나씩 만들었었는데, 그 방학때 만들기로 한 것은 연구실 홈페이지였다.

당시 우리는 웹 프로그래밍의 기본에 대해서 전혀 모르고 있었고, 단지 C/C++ 을 사용하여 고만고만한 응용 프로그램을 만들 수 있는 수준 정도 였었다.

홈페이지의 목적이나 레이아웃, 어떤 컨텐츠를 넣을 지에 대해서는 화이트 보드 앞에 모여 앉아서 지금 생각해도 제법 그럴 듯하게 회의를 하면서 잘 결론을 지어냈다.
나머지는 어떤 언어를 사용해서 만들까였는데,  나는 그 당시 C#을 공부하고 있었기 때문에 ASP.NET으로 한번 해보자고 주장했지만, 다른 모든 사람들은 ASP로 하길 원했다.

결국 ASP로 하기로 결정하고는, 옛날의 기억을 살려 이 책을 빌려서 공부하기 시작했다.
이 책은 99년도에 나온 책이다. 이 책을 볼 당시인 2005년도 겨울은 슬슬 AJAX란 말이 들려오기 시작 할 때 였는데, 나는 너무 옛날 책을 보고 있는 것 아닌가 하는 걱정을 했지만, 그렇다고 딱히 ASP에 대한 다른 볼만한 책도 없었다. 이 책 내용 중에 저자가 추천하는 Wrox의 책을 선택했다면 아마 프로젝트를 중간에 포기했을지도 모르겠다.

이 책은 정말 재미있었고 쉬웠지만 지금 다시 곰곰히 생각해보면 이 책의 설명은 정확하고 수준 높은 지식을 전달해주지는 못했다.
아마 웹 프로그래밍에 어느 정도 익숙한 사람이 지금  이 책을 보게 된다면, 뭐 이런 쓰레기 같은 구시대 책이 다 있어 하고는 집어 던져버릴지도 모르겠다.
이 때 이 책을 보고 만든 홈페이지만 해도 공격당하기 쉬운 코드 투성이었으며 파이어폭스로 들어가면 괴물 형상으로 변해버리고 말았다.-물론 파이어폭스 문제는 드림위버로 만들어진 떡코드를 그대로 사용한 우리의 잘못이다. :)

회사에 들어오고 나서 재밌는 에피소드가 하나 있는데, 그것은 우리 팀장님이 연구실 홈페이지를 해킹한 것이다.
어느날 옆에 오셔서는,
"재호씨 학교에서 숙제가 나왔는데 홈페이지를 해킹해야해요."
"근데요?"
"요즘 만든 페이지들은 다 너무 잘만들어져 있어서 공격하기 쉽지가 않더라구요. 재호씨가 예전에 학교 다닐 때 만든 연구실 홈페이지에다가 좀 해보면 안될까요?"
"네........................"

최고의 굴욕적인 순간이었다. ;)

결국 팀장님은 우리 연구실 사람들의 주민등록 번호랑 개인정보들을 쉽게 빼낼 수 있었고, 아마 그걸로 A+을 받았을지는 잘 모르겠다.

음 어쨌든, 다시 돌아와서.
이 책의 예제코드는 구식이고, HTTP 프로토콜이나 웹프로그래밍 기술에 대해서 수준높게 다루지도 않는다.
하지만 그럼에도 불구하고, Server Side codes에 대해서 전혀 지식이 없는 사람들에게 이 책은 아주 많은 도움이 된다.
아마도 그것은 김태영씨가 초보자에게 쉽게 설명하는 훌륭한 능력을 가지고 있고, 또 둘째가라면 서러울만한 유머센스를 겸비하고 있기 때문일 것이다.

나는 현재 책을 쓰고 있는 국내 저자 중에서 김상형, 윤성우, 김태영씨를 특히 좋아하는데, 김태영씨는 다른 두 사람만큼의 깊은 내공을 갖고 있지는 않다고 생각한다.
하지만 김상형과 윤성우의 책들은 몇 몇 책들만을 훌륭하다고 생각하는데 반해 김태영의 모든 책들은 다 훌륭하다고 생각한다.
그것은 김태영의 책이 더 읽기 쉽고 재밌기 때문이다.
다른 두명의 책이 내용만 좋고 재미없다는 뜻은 아니다. 이 사람들 역시 읽기 쉽고 재밌게 글을 쓴다. 하지만 김태영의 책은 더 읽기 좋고 더 재밌다^^

내 친한 친구가 그 때 당시 선물해준 Aron 기계식 키보드와, 비주얼 스튜디오가 아닌 에디트 플러스에서 작성되는 분홍색 코드들. 처음 만나보는 괄호 없는 VB 문법. 그리고 김태영의 유머러스한 글.
이 모든 것들이 조합되어 한줄 한줄 코딩을 할 때마다 뇌에서 엔돌핀이 솟아 나오는 느낌이었다.

얼마전인 5월 스승의날에 졸업생들이 모여 연구실을 찾았을 때, 후배 중 하나가 연구실 홈페이지가 너무 낡았다며 새로 만들겠다고 했다.
우리들의 추억이 없어져 버리는 것 같아 조금 마음이 아프기도 했지만, 마치 몇 년전 우리들의 모습을 보는 것 같아 기분이 좋았다.
그나저나 그 때 프리젠테이션 했던 이 빌어먹을 후배녀석은 아무래도 아직까지 한줄도 코딩을 안하고 있는 것 같다, :(
이 녀석들의 방학이 끝날 때 쯤엔 이쁘고 새로운 우리의 공간을 볼 수 있었으면 좋겠다.^^

Python Essential Reference (4th, Paperback) - 8점
Beazley, David M./Addison-Wesley


그다지 두껍지도 않으면서 아주 간결하게 파이썬을 잘 설명해주고 있는 책이다.

다음은 이 책 2판의 목차인데, 레퍼런스 용 책 답게 문법 설명은 최대한 간결하게 하고 다양한 부록을 절반 이상이나 할애하고 있다.

1 A Tutorial Introduction 1
2 Lexical Conventions and Syntax 13
3 Types and Objects 19
4 Operators and Expressions 43
5 Control Flow 55
6 Functions and Functional Programming 63
7 Classes and Object-Oriented Programming 71
8 Modules and Packages 77
9 Input and Output 83
10 Execution Environment 93
A The Python Library 99
B Extending and Embedding Python 297
C: Summary of Changes 331

문법 설명이 너무나 간결해서 프로그래밍 언어를 처음 배우려는 사용자에게는 좋지않다.
아직까지도 대부분의 사람들은 파이썬을 자신의 첫 언어로 배우지 않는다.
이 책은 다른 언어를 좀 공부했다가 Python을 배워보려는 프로그래머들에게 효율적으로 파이썬을 가르켜주는 아주 좋은 책이다.
이 책을 보면서 마치 Learn Visual Basic 6.0을 읽을 때와 비슷한 기분이 들었다.
아직까지 읽어본 파이썬 책은 그다지 많지 않지만, 그 중에서 가장 깔끔했다.

2001년에 이 책의 2판이 발행되었고, 비교적 최근인 2006년에 3판이 발행되었다.
파이썬은 버전이 바뀔 때마다 문법이 조금씩 달라지기도 하고 변화되는 부분이 많으므로 최신 에디션으로 구해보는 것이 좋다.
이 책의 저자처럼 파이썬 책을 쓰는 사람이나, 기존 프로젝트를 포팅해야 하는 사람들에게 이런 변화는 어쩌면 울화통 치밀게 짜증나는 일 일지도 모르겠다.( 물론 즐겁게 받아들일꺼라 생각한다. )
나는 파이썬의 이런 발 빠르고 과감한 변화를 너무나도 좋아한다. 사실 파이썬으로 이미 커다란 프로젝트를 만들어 놨다면 귀도 반 로섬을 빌어먹을 개자식이라며 욕할지도 모르겠지만, 뭐 만들어 놓은 것이 없으니깐^^
그저 파이썬 3000이 두근두근 기다려질 뿐이다.

파이썬 시작하기 - 8점
마크 루츠 & 데이비드 애셔 지음, 이강성 옮김/한빛미디어


이 책은 파이썬의 기본서이다.
2007년 10월에 이 책의 3번째 에디션이 나왔는데, 이제 곧 파이썬 3.0이 나오고 나면 금방 4판을 내지 않을까 싶다.
파이썬은 국내 저자가 쓴 책도 별로 없지만, 번역서 또한 거의 없는 것이 슬픈 현실이다.

이 책은 다행히도 번역서가 있다. 이강성 교수가 번역해서 국내에는 '파이썬 시작하기'라는 이름으로 소개되었는데, 아마도 1판일 것이다. 1판은 너무 오래된 책이긴 하지만, 그래도 이 번역서가 파이썬 자체를 공부하는데는 우리말로 된 책 중에서 가장 좋은 책이라고 생각한다.

이 책은 인터넷 스크립팅이나 시스템 프로그래밍을 파이썬으로 어떻게 하는가 같은 내용은 전혀 없으며 오직 파이썬 언어 자체만을 이야기 한다.
파이썬을 좀 더 공부하고 싶다면 같은 저자가 쓴 Programming Python을 참고하면 될 것이다. 이 책도 역시 최근에 3번째 에디션이 나왔고, 파이썬의 거의 모든 부분을 다루며 예제 코드도 엄청 많다.( 하지만 번역본이 없다. )

파이썬을 좀 잘해보고 싶은데, 빌어먹을 영어와 자꾸 부딪히게 되니 죽을 맛이다.
빨리 파이썬이 널리 알려져서 좋은 책들을 많이 번역되었으면 좋겠다.

목차는 다음과 같다.

1부. 핵심 언어1장. 시작
2장. 자료형과 연산자
3장. 기본문
4장. 함수
5장. 모듈
6장. 클래스
7장. 예외

2부. 바깥 층8장. 내장 도구
9장. 파이썬으로 하는 공통 작업
10장. 프레임워크와 응용 프로그램

3부. 부록
A. 파이썬 자원
B. 플랫폼에 따른 자원
C. 연습문제의 해답

Art of UNIX Programming - 8점
Eric S. Raymond 지음, 김희석 옮김/정보문화사


오픈소스나 유닉스 계열에서 꽤나 유명한 에릭 레이몬드가 쓴 책이다.
이 책의 제목만 봐서는 유닉스 프로그래밍에 대한 고급 기법들을 다룰 것 같지만, 단지 유닉스 철학만을 이야기한다. 도날드 커누스의 Art of Computer Programming의 이름을 본 따서 지었다는데, 책 주제와 상관없는데도 제목을 이렇게 지은 걸 보면 어지간히도 커누스의 Art of 시리즈가 감명 깊었는가보다.( 책 이름이던지 내용이던지 아니면 커누스 그 자체던지간에 )

책의 목차를 한번 살펴보자. 소주제들은 제외했다.

Part 1 UNIX의 오늘
Chapter 1 철학 : 중요한 것은 철학이다
Chapter 2 역사 : 두 문화에 대한 이야기
Chapter 3 대조 : UNIX 철학과 다른 것을 비교하기

Part 2 설계
Chapter 4 모듈화 : 간단하게, 단순하게!
Chapter 5 텍스트화 : 우수한 프로토콜은 우수한 습관을 만든다
Chapter 6 투명성 : 빛이 있으라!
Chapter 7 멀티프로그래밍 : 서로 다른 작업을 위한 프로세스들
Chapter 8 미니언어 : 노래하는 기호를 찾아
Chapter 9 생성 : 명세를 한 단계 높게
Chapter 10 구성 : 순조롭게 출발하기
Chapter 11 인터페이스 : UNIX 환경의 사용자 인터페이스 디자인 패턴
Chapter 12 최적화
Chapter 13 복잡함 : 되도록 단순하게 그러나 지나치지 않게

Part 3 구현
Chapter 14 언어 : C 언어이어야 하는가? 아닌가?
Chapter 15 툴 : 개발의 용병들
Chapter 16 재사용 : 바퀴를 다시 발명하지 않기 위해서

Part 4 공동체
Chapter 17 이식 가능성 : 소프트웨어의 이식성과 표준 따르기
Chapter 18 문서화 : 소프트웨어를 종이-중심의 세계로 설명하기
Chapter 19 오픈소스 : 신 UNIX 공동체의 프로그래밍
Chapter 20 미래 : 위험 그리고 기회


vi와 emacs를 비롯한 편집기에 대한 평가와 c, java, python, lisp등 여러 언어에 대한 평가가 특히 재밌다.

편집기나 언어에 대한 평가는 언제나 인터넷을 뜨겁게 달구는 주제이다.
Effective C++의 스캇마이어스도 Effective 시리즈 중 어떤 책에서 편집기에 관한 이야기를 잠깐 언급했는데, 그 때 최고의 편집기는 바로 emacs라고 했다. 나는 그 글을 읽고 바로 Emacs를 설치하고 연습해봤는데, 몇 일 못가서 바로 포기했다. ;)

에릭 레이몬드 역시 그렇지만, 리눅스 계통의 해커들은 c, java, C#보다는 perl 이나 python, LISP 같은 언어들을 높게 평가하는 경향이 있다.
하지만, 조엘 온 소프트웨어의 조엘 같은 경우에는 자기 주위의 해커들( 아마도 마이크로소프트의 천재들 )은 그렇지 않다며 반박하는 것도 재밌다.

에릭 레이몬드는 윈도우즈를 정말 더럽게도 싫어하는데, 윈도우즈를 욕하는 내용 또한 역시 재밌는 볼거리이다.

이런 내용들 말고도 재밌게 읽은 만한 내용들이 많이 들어있다.
꼭 유닉스 프로그래머가 아니더라도 가볍게 읽어보기 좋을 것이다.

에릭 레이몬드의 글 중 이 책에 없고 인터넷에 올려진( 어딘가에서 한번씩은 읽어봤을만한 ) 재밌는 글들 또한 많다.

다음 링크들에서 볼 수 있다.
How To Become A Hacker
해커가 되는 방법
Why Python
How To Ask Questions The Smart Way
좀더 나은 질문을 하기 위한 방법
에릭 레이몬드의 홈페이지



돌아보니 회사에 들어와서 MFC로 윈도우 애플리케이션을 만드는 일이 아직까지는 가장 많이 했던 일이었던 것 같다.
5달 쯤 전에, C++로 프로그래밍하는 것이 너무 지겹고 또 어려워서 좀 더 쉬운 방법이 없을까 하고 고민을 많이 했었는데, 그 때 시도해봤던 방편 하나가 Visual Basic 6 이었다.
서버 애플리케이션이 아니라 고객들에게 배포해야 하는 애플리케이션들이었기 때문에 선택의 폭은 그렇게 넓지 않았다. C#이나 VB.NET으로 윈폼을 작성해서 배포하려면 아마 윈도우7이 나올 때 쯤 까지는 기다려야 하지 않을까?

새로운 언어를 배운 다는 것은 어쩌면 프로그래밍을 하면서 가장 신나는 일 일지도 모른다.
뭐 어쨌든 VB6의 사고 방식을 접해보고 싶어서 이 책 저 책 많이도 빌려봤다.
그 때 아쉬웠던 점은 잘 쓰여진 VB6 책을 찾기가 너무 힘들었다는 것이다. 거의 대부분의 국내 책들이 문법조차 얼렁 뚱땅 넘어가고 Visual Studio에서 자동화된 코드를 어떻게 생성하는지에 대한 부분만을 설명하고 있었다.

지금 소개하는 이 책은 우연히 발견했는데, 너무 간결해서 좋았다.
'필수적인', '간결함'. 그것이 이 책을 표현하기 가장 좋은 단어들 이다.

나는 On Error 구문이 어떻게 동작하는지, 그리고 문법은 어떻게 되는지가 궁금 했었는데 이 책에서는 깔끔하게 잘 설명이 되어있다.  -다른 책들에는 On Error에 설명이 전혀 없는 책들도 많다. :(
문법 부터 예제까지 필수적인 것들만 간결하게 설명하고 넘어가는 것이 이 책의 가장 큰 매력이다.

어쩌면 윈도우 프로그래밍을 조금은 해봤기 때문에 이 책의 간결함이 더 읽기 쉽고 좋게 느껴졌는지도 모르겠다.
하지만, 완전 초보자가 VB6을 배운다고 하더라도 이 책이 그저 그런 다른 책들 보다는 훨씬 도움이 될 것 같다.

이 때 VB6으로 간단한 애플리케이션을 만들어 보면서 내가 배웠던 가장 큰 한가지는, 아직까지 배포용 윈도우 애플리케이션을 만드는데 있어서 최고의 선택은 바로 MFC라는 것.
간단한 애플리케이션이라면 문제 없겠지만, 좀 더 정교하고 구조화된 프로그램을 원한다면  VB6은 좋은 선택이 아닌 듯 하다.^^

이 책은 실제로 판매되는 것 같지는 않고, ebook으로만 제공되는 것 같다. -아마존에서 찾아볼래도 나오질 않는다.
아래 링크에서 pdf를 볼 수 있다.
http://www.scribd.com/doc/3488620/ebook-Learn-Visual-Basic-6-0

나는 pdf를 인쇄해서 책으로 이쁘게 만들어서 책장에 꼽아두었다.
책장이 하나씩 차는 것은 나의 행복.^_^
자바스크립트 완벽 가이드 - 전2권 - 10점
데이비드 플래너건 지음, 송인철 외 옮김/인사이트


지난달에 신청해 두었던 책들이 오늘 도서관에 도착했다.
제일 기대했던 책은 JavaScript The Definitive Guide라는 책이었는데, 워낙 유명한 책이라서 Javasciprt를 쓸 일이 거의 없긴 하지만 꼭 한번 읽어보고 싶었다.

나는 예전 부터 궁금했던 Closure에 대한 부분만을 읽어봤는데 꽤 많은 도움이 되었다.

python이나 ruby에 익숙하다면 아마도 Closure를 사용해서 프로그램을 작성하는 방법에 익숙하겠지만, C/C++, Java, C# 같은 언어를 사용한다면 대부분이 그렇지 않을 것이다.

내가 처음 Closure를 알게 된 것은 폴 그레이험의 해커와 화가라는 책에서였다.
그는 LISP가 좋은 이유를 설명하면서 누산기 함수를 여러 언어로 작성해서 비교했었는데, 그때 자바 스크립트 코드가 다음과 같았다.

function foo( n ) {
    return function( i ) {
        return n += i } }

아니 뭐 이렇게 생긴 코드가 다있어!  라고 생각했었고, 그 때부터 python이나 다른 언어에서 제공 되는 lamda 표현식에 조심씩 관심을 갖기 시작했다.

이 책에서는 10pages 정도만이 Closure를 설명하고 있는데 이해하기가 쉽지 않았다.

<html>
<head>
<script language="javascript">
var f, g;
function foo()
{
  var x = 0;
  f = function() { return ++x; };
  g = function() { return --x; };
  x = 1;
  alert(f());// "2"
}

var uniqueID1 = (function()
{
        var id = 0;
        return function() { return id++; };
})();

var uniqueID2 = (function()
{
        var id = 0;
        return function() { return id++; };
})();
</script>
</head>

<body>
        <input value = "foo" type="button" OnClick="foo();"></input>
        <input value = "+" type="button" OnClick="alert(f());"></input>
        <input value = "-" type="button" OnClick="alert(g());"></input>
        <input value = "uniqueid1" type="button" OnClick="alert(uniqueID1());"></input>
        <input value = "uniqueid2" type="button" OnClick="alert(uniqueID2());"></input>
</body>
</html>

foo 함수는 f()와 g()를 전역참조에 저장하기 때문에 f()와 g()는 같은 호출 객체를 공유한다.
따라서 상태변수 x 역시 공유된다.

uniqueID 함수는 호출될 때 마다 1씩 증가된 고유한 값을 리턴한다.
전역 변수를 하나 둔 채로 다음과 같이 작성하는 거랑 뭐가 틀리지? 하고 생각할 수도 있을 것이다.

var i = 0;
function unique()
{
    return ++i;
}

하지만 위의 전역변수는 다른 곳에서 언제든지 바뀔 수 있기 때문에 고유한 값임을 보장하지 못한다.

var uniqueID1 = (function()
{
        var id = 0;
        return function() { return id++; };
})();

반면에 위의 클로저 예제 에서는 데이터는 id라는 지역 변수안에 가지고 있고 이 변수는 다른 곳에서는 절대로 접근할 수가 없다.

uniqueID2는 새로운 호출 객체를 생성하여 그 호출 객체와 매핑된다. 따라서 uniqueID1과 uniqueID2는 서로 독립적으로 상태를 유지하는 함수 객체들이 된다.

클로저에 익숙하지 않다면 위 코드를 실행시켜보는 것이 이해하는데 도움이 될 것이다.

아래에 링크된 페이지들도 역시 유용하다.
http://en.wikipedia.org/wiki/Closure_(computer_science)
http://martinfowler.com/bliki/Closure.html
http://newlord.egloos.com/1978181    ( 위 마틴 파울러의 글을 번역 )
Code Complete - 10점
스티브 맥코넬 지음, 서우석 옮김/정보문화사

이 책은 말이 필요 없는 프로그래머들의 필독서이다. 좋은 코드를 작성하기 위해서 필요한 정보들을 내용으로 담고 있다.책의 난이도는 초급이면서 동시에 초고급이다.
초급자에게는 그 나름대로 좋은 지침을 주고, 고급 개발자에게는 고급 개발자들만이 보이는
문장이 있다.

신입사원 때 이 책을 조금 읽다가 딱딱하고 지루해서 그만두었었는데, 회사에서 개발을 꾸준히 하다가 1년 쯤 지나서 다시 이 책을 뒤적거렸을 때에는 예전에는 보이지 않던 아름다운 지침들이 조금씩 눈에 들어오는 것을 느꼈다.

아직도 많은 부분을 이해하지 못하고 넘어가지만, 어쩌면 이 책에 있는 모든 문장  하나하나가 그런 좋은 지침일지도 모른다.
단지, 아직 경험이 미숙해 의미가 와닿지 않고 스쳐지나가게 될 뿐. 조금 더 경험을 쌓고 다시 읽을 때 마다 새로운 느낌을 갖게 될 것 이다.

1년에 한 번 정도는 새로 읽어보는 것도 좋지 않을까?

실제로 Jeffrey Richter도 이 책을 가장 먼저 추천하는데, 그 역시 10년동안이나 이 책을 읽고 있지만 아직도 이 책에서 많은 것을 배운다고 말한다.

번역은 내가 너무 좋아하는 서우석씨가 했으며, 역시 훌륭하다.

목차는 다음과 같다.

Part 1 기초 수립
Chapter 1 소프트웨어 구현으로의 초대
Chapter 2 소프트웨어 개발의 이해를 돕기 위한 비유
Chapter 3 준비는 철저하게 : 선행 조건
Chapter 4 구현 시 결정해야 할 핵심적인 사항들

Part 2 고급 코드 생성하기
Chapter 5 구현 설계
Chapter 6 클래스 다루기
Chapter 7 고급 루틴
Chapter 8 방어적인 프로그래밍
Chapter 9 의사코드 프로그래밍 프로세스

Part 3 변수
Chapter 10 변수 사용 시 일반적인 문제
Chapter 11 변수 이름의 효과
Chapter 12 기본 데이터 형
Chapter 13 특이한 데이터 형

Part 4 명령문
Chapter 14 직선형 코드 구성하기
Chapter 15 조건문 사용
Chapter 16 루프 제어
Chapter 17 특이한 제어 구조들
Chapter 18 테이블을 활용하는 방법
Chapter 19 제어와 관련된 일반적인 문제

Part 5 코드 향상
Chapter 20 소프트웨어의 품질에 대한 조망
Chapter 21 협력적인 구현
Chapter 22 개발자 테스트
Chapter 23 디버깅
Chapter 24 리팩토링
Chapter 25 코드 최적화 전략
Chapter 26 코드 최적화 기법

Part 6 시스템 고려사항
Chapter 27 프로그램의 크기가 구현에 미치는 영향
Chapter 28 구현 관리
Chapter 29 통합
Chapter 30 프로그래밍 도구들

Part 7 소프트웨어 장인정신
Chapter 31 배치와 방식
Chapter 32 스스로를 설명하는 코드
Chapter 33 개인 성격
Chapter 34 소프트웨어 장인(匠人)에 대한 주제
Chapter 35 더 많은 정보를 얻으려면


문장강화 - 8점
이태준 지음, 임형택 해제/창비(창작과비평사)
고등 학교 1학년 때 까지 나는 내가 수학을 꽤 잘 한다고 생각했었다.
학원에서도 선생님들에게 수학에 소질이 있다는 소리를 종종 들었기 때문에 그냥 그렇구나 했다.
고등학교 2학년이 될 때 당연히 나는 이과를 선택했고, 수학1을 배우면서 미적분을 배우기 시작했을 때, 나는 도서관에서 아무리 정석책을 봐도 미분을 이해할 수가 없었고 옛날에 듣던 소리는 다 속셈 학원에서 장사하기 위해 사탕발림 소리를 한 것이었다는 것을 깨닫게 되었다.

하지만 또 바로 그 때 즈음 나는 문학이라는 과목을 접하면서, 내가 문학을 너무 좋아한다는 것을 알았다. 황순원의 단편소설들이나 윤동주의 아름다운 시들은 나를 울리곤 했다.

이문열의 젋은날의 초상 에서 였던가, 아무튼 이문열의 책이었는데 책 내용 중에 주인공이( 이문열 자신이다. ) 친구에게서 문장을 쓸 때에 도움이 되는 몇 가지 조언들을 얻었는데 그 부분이 다른 어떤 설명보다도 도움이 되었다는 뭐 그런 내용이 있었다.

나는 그 부분을 읽고서 바로 그런 조언들을 묶어 놓은 책이 없을까 해서 찾아 해맸었는데  이 책이 가장 비슷한 내용을 담고 있다는 것을 알고는 바로 구입했다.

아주 작고 얇은 책인데, 고등학교 때 내가 좋아했던 많은 작품들이 인용 되어 있고 그 글들의 좋은 점과 나쁜 점을 설명 하는 방식으로 구성되어 있다.

이 책을 읽으면서 글쓰는 것에 어느 정도 도움이 되었다. 생각 날 때마다 가끔씩 펼쳐 읽어보곤 했었는데, 요 몇 년간은 컴퓨터 공부를 하면서 한번도 보지 않았었다.

몇 일전에 회사에서 누군가가 문장 작법에 관심을 가지고 있길래 이 책을 먼지속에서 꺼내서 빌려주었는데, 오랜만에 다시 보게 되니 감회가 새로웠다. 되돌려 받으면 나도 다시 한번 읽어봐야겠다.

여담이지만 영어 작문에도 이와 비슷한 종류의 책이 있다.
Strunk and White의 The Elements Of Style 이라는 책인데, 아마도 이 책은 이태준의 문장강화보다도 훨씬 잘 알려진 책일 것이다.
프로그래밍 서적 중에 다음과 같은 이름의 책들은 모두 이 책의 이름을 흉내내서 지은 책들이다.
The Elements of Java Style
The Elements of C++ Style

나는 작년에 영어를 잘하고 싶은 마음에 이 책을 구입했었는데, 그것은 완전히 실패로 돌아갔다.
아니 영어를 제대로 읽지도 못하는데 어떻게 작문법을 영어로 배운다는 말인가! 아이러니다.
그래서 이 책은 몇 장 끄적끄적 거리다가 책장에 꽂혀 버렸다.
하지만 나중에 영어에 어느 정도 익숙해 질 때 즈음엔 꼭 읽어보리라. 빌어먹을 놈의 영어.

'기타 책' 카테고리의 다른 글

신 -베르나르 베르베르  (4) 2008.12.19
보랏빛 소가 온다 -세스 고딘  (0) 2008.12.11
신화는 없다 -이명박  (1) 2008.11.29
마케팅 불변의 법칙 -박길부 역  (0) 2008.10.05
H2 -아다치 미츠루  (7) 2008.08.15


국내에 좋아하는 프로그래밍 서적 집필자들이 몇 명 있는데 그들은 김상형, 이재규, 김태영 그리고 윤성우이다.
이들의 공통점은 국내의 몇 안되는 베스트 셀러 및 스테디 셀러 작가라는 점이다.
아마도 그 이유는 글로써 어려운 내용을 쉽고 재밌게 전달하는 능력을 갖추고 있기 때문일 것이다.

작년에 이 책이 나오자 마자 책 주제와 저자 이름만 보고 바로 구해서 읽었었는데, 그 이름 값은 충분히 했다. 책을 다 읽고 감동해서 윤성우씨한테 고맙다는 메일을 보냈는데 답장이 와서 좋아했던 기억이 난다.

이 책은 Jeffrey Richter의 Programming Application 의 내용과 흡사한데, Jeffrey Richter의 책 만큼 깊게 접근 하지는 않지만 본질들을 잘 다루고 있고, 재미있게 쓰여져 있어서 읽는 내내 너무 좋았다.

특히 커널 오브젝트와 핸들 테이블에 대한 내용은 이 책의 백미인데, Jeffrey의 책에서도 잘 다루고 있지만 나는 오히려 우리말로 쓰여진 이 책에서 훨씬 더 많은 내용을 이해할 수 있었다.

-Jeffrey Richter의 책은 4판이 번역서가 있긴 하지만 읽기가 힘들어서 5판의 번역서가 어서 나오길 기대하고 있다.

이 책의 목차는 다음과 같다.

1부. 컴퓨터 구조와 프로그래밍 모델
1장. 컴퓨터 구조에 대한 첫 번째 이야기
2장. 아스키코드 vs 유니코드
3장. 64비트 기반 프로그래밍

2부. 프로세스와 IPC
4장. 컴퓨터 구조에 대한 두 번째 이야기
5장. 프로세스의 생성과 소멸
6장. 커널 오브젝트와 오브젝트 핸들
7장. 프로세스간 통신(IPC) 1
8장. 프로세스간 통신(IPC) 2
9장. 스케줄링 알고리즘과 우선순위

3부. 멀티 쓰레드와 동기화
10장. 컴퓨터 구조에 대한 세 번째 이야기
11장. 쓰레드의 이해
12장. 쓰레드의 생성과 소멸
13장. 쓰레드 동기화 기법 1
14장. 쓰레드 동기화 기법 2
15장. 쓰레드 풀링(Pooling)

4부. 메모리 관리와 I/O
16장. 컴퓨터 구조에 대한 네 번째 이야기
17장. 구조적 예외처리(SHE) 기법
18장. 파일 I/O와 디렉터리 컨트롤
19장. 비동기 I/O와 APC
20장. 메모리 관리(Virtual Memory, Heap, MMF)
21장. Dynamic Linking Library

'Programming' 카테고리의 다른 글

Python 3.0 Released  (5) 2008.12.04
자바 버전 히스토리  (3) 2008.11.25
재미로 보는 프로그래밍 언어 순위  (8) 2008.05.19
전방선언과 컴파일 의존성  (1) 2008.05.16
Visual Studio 2008과 IronPython  (0) 2008.04.12
사용자 삽입 이미지
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
위 사이트에서는 프로그래밍 언어 순위에 대한 선호도를 매달 업데이트 한다.
가끔씩 들어가서 보는데 심심풀이 용으로 보기에 썩 좋다.
개인적으로는 C++이 하락세인 것이 마음이 아프지만 파이썬 같은 관심있는 언어들이 꾸준히 상위에 랭크되어 있는 것은 기분 좋은 일이다.

사용자 삽입 이미지
Basic은 닷넷 프레임워크로 들어가면서 C#에 밀려 안쓰일꺼라 생각했지만 여전히 많이 쓰이고 있나보다.

파이썬은 2004년도에 그래프가 엄청 높았던 것이 눈에 띄는데, 그 때 나는 프로그래밍에 문외한이었기 때문에 무슨일이 있었던 것인지 모르겠다. -누가 알면 좀 가르켜주십쇼.

아래는 20위 이하 랭크의 언어들.

사용자 삽입 이미지
그냥 재미로만 봅시다.^^

'Programming' 카테고리의 다른 글

Python 3.0 Released  (5) 2008.12.04
자바 버전 히스토리  (3) 2008.11.25
Visual C++ 경고 없는 코드 작성 팁. - CRT 문자열 함수  (8) 2008.05.24
전방선언과 컴파일 의존성  (1) 2008.05.16
Visual Studio 2008과 IronPython  (0) 2008.04.12

Firefox 3.0과 오픈소스

2008. 5. 18. 18:40 | Softwares
사용자 삽입 이미지

요즘은 오픈소스가 참 좋아지고 있다.

내가 즐겨 사용하는 것들이 몇 가지 있는데, 그것들은
vim, Firefox, 그리고 텍스트큐브이다.
- gSoap이나 otl 같은 개발 라이브러리들도 사용하곤 하는데, 별로 좋아하진 않는다 :(

오픈 소스 프로젝트들은 대부분 플랫폼이 윈도우즈이건 리눅스이건
또는 비스타이건 XP이건 상관없이 다 잘 동작한다.
쉽게 다운로드 받을 수 있고, 불법적으로 시디키를 구해서 입력하지 않아도 된다.
- 사실 이런 부수적인 것들 말고 프로그램 자체도 훌륭하지만.

하지만 사용자 입장에서의 오픈소스의 장점은 뭐니뭐니해도 따끈따끈한 최신 업데이트물을 자주 맛볼 수 있는 점일 것이다. -그것도 무료로!

vim같은 경우에는 너무 예전부터 만들어진 프로젝트이기 때문에 업데이트가 덜하지만, Firefox나 텍스트큐브 같은 경우는 아주 자주 업데이트 된다.
Firefox는 2.0대 버전과 3.0대 버전을 동시에 개발하고 있었는데, 얼마전까지 3.0 beta가 진행되다가 오늘 문득 들어가보니 딱지를 beta에서 rc1 으로 바꿨길래 다운로드 받아서 설치해봤다. -rc 버전 같은 경우는 출시용하고 거의 별반 다름없다.

외관이 2.0 하고 조금 바뀌었는데, 새로운 디자인과 프로그램 인터페이스를 보는 것은 언제나 신선한 느낌을 갖게한다. -너무 많이 바뀌어 있지만 않다면.

속도가 3배 정도 빨라졌다고 하는데, 익스플로러나 파폭 2.0보다 확실히 빨라진 것 같긴 하다.

아래 release note에 보면 개선 사항들에 대한 목록을 볼 수 있다.

하지만 오타쿠처럼 너무 꼼꼼하게 하나씩 다 읽어보진 말도록 하자. 단지 새로 올라온 따끈따끈한 프로그램을 설치해서 쓴다는 것 만으로 좋은거니까 ;-)
release note 보러 가기
firefox 3.0 다운로드 하러가기

게임 개발자를 위한 C++ - 8점
서진택 지음/민프레스(민커뮤니케이션)

대학교 2학년 2학기 때, C언어에 어느 정도 익숙해지고 C++을 혼자서 조금씩 공부해 가던 때에, 친구의 추천으로 이 책을 읽었다.

당시 C++을 잘 모르던 내게 이 책은 너무나 버겨웠는데, 그럼에도 불구하고 이 정도 고급 주제를 다룬 국내 서적은 찾아 보기 힘들었기 때문에, 이해 될 때까지 연구실 책상에서 보고 또 보고 했던 기억이 난다.

그렇게 여러번 보다 보니 처음에는 전혀 모르겠던 내용들도 어렴풋이 이해하게 되고 나는 C++에 조금씩 익숙해져 갔다.

이 책은 내용은 괜찮았지만, 편집이 엉터리였다. 인쇄가 아마 -> 연산자가 모두 공백으로 나왔었언가? 그런 류의 심각한 결함이 있었다.

하지만 이 책에서 C++의 여러 문법들과, 오버로딩 오버라이딩, 상속 관계에서의 생성자와 소멸자의 호출 순서, 복사 생성자, this 포인터, 가상함수와 가상함수 테이블, 연산자 오버로딩등을 배울 수 있었다.

지금도 기억에 강하게 남아있는 부분은 복사 생성자인데, 이 책의 저자는 복사생성자를 참 중요하게 강조했던 것 같다.

복사 생성자란, 말 그대로 객체가 복사 될 때 호출되는 생성자이다.
CString s1(_T("string"));
CString s2( s1 ); // 또는 CString s2 = s1;


두번째 줄에서 s1을 s2에 복사하면서 복사 생성자가 호출 된다.
그냥 생성자가 아니라 CString::CString( const CString& ) 의 시그내쳐를 가진 복사 생성자 말이다.

하지만 코드를 이렇게 작성한다면,
CString s1(_T("string"));
CString s2;
s2 = s1;


위와 같은 경우에는 s2를 기본 생성자를 통해 객체를 생성한 뒤 operator=() 을 통해서 s1을 s2에 복사한다. 그러므로 위 코드에서는 복사 생성자가 호출 되지 않는다.

간단한 내용이지만, 생성자에서 멤버를 new하고 소멸자에서 그 멤버를 delete하는 경우에 복사 생성자를 정의해주지 않으면 복사 될 때 프로그램은 죽는다.
복사 생성자를 정의하지 않았을 때 컴파일러가 알아서 복사 생성자를 만들어 주지만 멤버에 포인터가 있다면 그 포인터 값을 그대로 복사하도록 코드를 생성한다.

이런 식으로 말이다.
class A
{
public:
    //somemethod();
private:
    int* pPointer;
};

A::A( const A& copy )
{
    this->pPointer = copy.pPointer;
}// 컴파일러는 이런식으로 복사생성자 코드를 만들어준다.


근데 A 클래스 생성자와 소멸자가 다음과 같았다고 하면,
A::A()
{
    this->pPointer = new int();
}

A::~A()
{
    delete this->pPointer;
}


이 클래스를 이런식으로 사용할 때,
{
    A obj1;
    A obj2 = obj1;
}


블락이 끝날 때에 프로그램은 죽는다.
- 사실 죽는다는 표현 보다는 정의되지 않은 동작을 수행한다. 라고 하는 것이 좀 더 정확하다. 하지만 일반적으로 거의 모든 경우에 뒤진다. :)

왜냐하면 obj1을 생성 할 때 불리는 기본 생성자에서 멤버 변수에 메모리를 동적 할당했고,
obj1을 obj2에 복사하면서는 복사생성자를 통해 obj2를 생성했는데, 이때는 pPointer에 새로운 메모리를 할당한 것이 아니라 obj1의 멤버 변수 pPointer의 주소만을 복사했기 때문이다.
블락이 끝나면서 소멸자가 호출 될 때는 각 객체의 소멸자가 모두 호출 되면서 pPointer를 해제하려고 한다.
하지만 2번째 delete할 때 이미 해제한 포인터를 다시 delete하려고 하므로 오류.

이럴 때는 복사 생성자를 컴파일러에 맡기지 말고 다음처럼 직접 작성해주어야 한다.
A::A( const A& copy )
{
    this->pPointer = new int( *copy.pPointer );
}


복사 될 때도 메모리를 동적으로 할당하고 복사본의 값을 가져오면서 deep copy가 되었다.

복사 생성자가 언제 호출되는지 아는 것도 중요하다.
첫번째 경우는 위 코드에서 설명했고,
두번째 경우는 함수 파라메터로 넘길 때이다.
void SomeMethod( A obj );

이런 함수가 있다면,
A obj;
SomeMethod( obj );

이렇게 호출 할때에 객체가 복사되면서 복사 생성자가 호출된다.

만일 함수가 void SomeMethod( A& obj ) 이렇게 참조를 받도록 정의되어 있다면, 이런 함수들은 물론 호출 할때 객체가 복사되지 않으므로 복사생성자도 호출되지 않는다.

마지막은 객체를 리턴할 때이다.
{
    A obj;
    // some codes...
    return obj;
}


이 때 역시 객체를 복사하므로 복사생성자가 호출 된다.

물론 C#이나 자바 등의 언어에서는 참조자만 사용되고 garbage collector 가 자원 해제 몫을 처리해 주기 때문에 이런 종류의 고민은 하지 않아도 된다.

웹 진화론 - 10점
우메다 모치오 지음, 이우광 옮김/재인


몇 달 전에 회사에서 booksmba.com 이라는 곳의 무료 독서 프로그램을 수강해보라고 해서 웹 2.0에 대해 쓴 책들을 무더기로 읽게 될 기회가 있었다.

사실 여러 수강 과목들이 있었지만 다른 과목들은 다 경제니 마케팅이니 하는 것들 밖에 없어서 나는 별 고민 없이 웹 2.0 이라는 과목을 선택했다.

다음 3권의 책이 내게 전해졌다.
- 대한민국 웹 2.0 트렌드 -김상범
- 웹 2.0 경제학 -김국현
- 웹진화론 -우메다 모치오
맨 처음에는 대한민국 웹 2.0 트렌드라는 책을 읽었는데, 사실 이 때야 블로그가 뭔지 제대로 알게 되었고, 그 빌어먹을 놈의 트랙백 보내기라는 말도 알게 되었다. -나는 개발팀에서 일하지만 종종 우리 기획팀 사람들에게 컴맹이라는 소리를 많이 듣는다. 제기랄.
이 때 처음으로 나도 블로그가 해보고 싶다는 욕구를 느꼈고, 그래서 지금 이 블로그를 만들게 되었다.

두 번째로 읽은 책이 바로 웹 진화론 이라는 책이었는데, 엄청 잘 쓰여진 책이었다.
전혀 기대하지 않고 보게되는 책들 중 이런 명서를 발견하게 되는 것은 기억에 남는 일이다.

내 침대 옆에는 책이 10권 정도가 널부러져있는데, 자기 전에 보고 싶은 것들을 집어서 읽다가 잠들곤 한다.
아마도 금요일 날이었을 것이다. 술을 마시고 집에 들어가서 침대에 누워 이 책을 펴서 조금 깨작거리다가 그대로 떡실신을 해버렸다.
다음 날에 눈을 뜨니 일어나기도 귀찮고 해서 책이나 좀 읽을까 하고 이 책을 집어 들었는데, 나는 6시간 동안 꼼짝 않고 누운 자리에서 이 책을 다 읽었다. 배고픈 걸 참는게 조금 힘들긴 했지만 이 책은 그만큼 나를 몰입시켰다.

다른 웹 2.0 책들과 마찬가지로 구글이니 아마존이니 롱테일이 어쩌구 저쩌구 하는 전체적인 줄거리는 같지만, 다른 책들에서는 미처 깨달을 수 없었던 많은 부분들을 이 책에서 얻을 수 있을 것이다.

집에 오는 길.

2008. 5. 10. 01:14 | 에세이
사용자 삽입 이미지

너무 속상했던 오늘.

술에 잔뜩 취해서 집에 오는 길에,
나를 달래줬던 향긋한 풀 냄새.

"힘내."
꼭 그렇게 말하는 것 같았어.


사용자 삽입 이미지

내가 스타크래프트를 처음 접했던 것은 99년도 고등학교 3학년 때 였다.
98년도에 이미 많은 친구들이 피씨방을 찾고 있었지만, 그 때 나는 오직 당구만을 좋아했을 때였다.

고3, 수능이라는 단어에 민감한 시절 몇 번 피씨방에 들락날락 하다보니 야자시간에 스타하러 가자는 친구들의 말이 마치 악마의 유혹처럼 너무나도 달콤하게 다가오던 그런 시절이었다.

친구들하고 피씨방에서 배틀넷으로 4:4를 하는 것도 너무 즐거웠지만, 2000년 가을 즈음 gamepds라는 구 충남대 프리베틀넷 서버를 알고 나서부터 나는 스타크래프트를 좀 더 진지하게 하기 시작했다.

울랄라 서버라고도 불리던 구충남대 서버는 정말 잊을 수 없는 곳 이었다. 시디키가 없었던 우리들은 정식배틀넷이 아니라 이 곳만을 찾았었는데, 3000명 정도만을 수용할 수 있는 작은 서버 였지만 이 곳에서 사람들을 하나씩 알아가는 것이 너무나 행복했다.
게임크래프트였던가? 스타크래프트를 런칭시켜주는 툴이 하나 있었는데, 그 때 나오는 음악소리는 지금 들어도 가슴이 두근거린다. -배경 음악으로 한 번 넣어봤다.
내 단짝 친구 하나와 둘이서 게임을 즐기곤 했는데, 어느 날 어떤 두명이 다가와 우리에게 게임을 하자고 제안했다. 아마 nogada 길드라는 이름이었던 것 같다.

그 둘의 실력은 엄청났고, 우리는 우리가 얼마나 형편없었는지 깨닫게 되었다.

그 날 처음으로 길드를 만들기로 결심했다. 아마 2001년 1월 3일 이었을 것이다.
내 친구 한명, 그리고 내 여자친구 한명. 3명이서 같이 만든 길드 이름은 Crazy길드.
당시 멋을 부린다고 ]CRazY[= 라는 prefix를 달았었고 -지금 다시보니 정말 촌스럽다. 내 아이디는 ]CRazY[=Tazo, 친구는 ]CRazY[=1004, 여자친구의 아이디는 ]CRazY[=Lover 였었다. 그 때부터 지금까지 내 아이디는 쭉 crazytazo이다. 아마 앞으로도 :)

아마도 여자친구 때문이었을 것이다. 스타크래프트를 하던 여자는 많지 않았으니깐. 우리길드는 그 날부터 사람들이 엄청 많이 가입을 했다.
아직도 아이디가 기억나는 녀석들이 몇 명 있다.
]CRazY[=Arena
]CRazY[=sARaNg
]CRazY[=Zealot
]CRazY[=Random
]CRazY[=Protoss

]CRazY[=sARaNg 이라는 녀석이 우리의 에이스였는데, 이 녀석은 진짜배기였다.
나는 그렇게 스타를 잘하는 녀석을 당시에는 정말 처음 겪어 봤다.
또 이 녀석은 스타만 잘하는게 아니라 우리 길드의 홈페이지도 만들어 줬었는데, 아마 도메인이 crazyguild.com.ne.kr인가 그랬었던 것 같다.
지금 생각해보니 그냥 cgi를 사용한 간단한 게시판과 사진첩 등이 있었는데, 그 때는 너무 훌륭해보였다. -사실 그 때 나는 컴퓨터학과 1학년이었지만 150명 중 140등을 할 때 였고, 홈페이지 만드는 것이 세상에서 제일 어렵게 느껴졌었다.

길드를 만들고 나서부터, 우리의 실력은 눈에 띄게 좋아졌다.
길드원들끼리 모여서 채널에서 대화 하다가 4:4나 3:3 게임을 하러 들어가곤 했는데, 그 느낌은 정말 말로 표현하기 힘들 만큼 좋았다.

또 다른 즐거움이 하나 있었는데, 그것은 바로 길드전.
당시 우리는 niceguy라는 길드하고 친하게 지냈었는데, 종종 길드전을 하곤 했다.
niceguy는 충남대 서버에서 핑클 길드와 함께 가장 오래되고 유명한 길드 중 하나였다.
[Niceguy]^King^
[Niceguy]biz
[Niceguy]milk
[Niceguy]kissme 등등 오프라인에서도 가끔 봤던 그리운 아이디들이 기억이 난다.

그 중 역시 최고는 [Niceguy]NaDa!!라는 아이디를 쓰던 지금은 아주 유명한 프로게이머가 된 이윤열이었는데, 핑클 길드의 LEEJIN 이라는 녀석과 함께 당시 충남대서버 최고수로 이미 유명했었다.

나이스가이들과 5:5 팀배틀을 처음 하던 날, 우리는 에이스인 사랑이가 1번으로 나가서 그 무서운 나이스가이들을 3명이나 잡아버렸다. 당시 우리는 신생길드라서 전적이 다들 200승 300승 할 때 였는데, 나이스가이들은 1000승이 안넘는 사람들이 없었다.
나이스가이 4번째 주자는 이윤열. 사랑이가 거의 다 잡은 경기를 이윤열의 무시무시한 저력으로 역전 당해 진 이후로 우리들은 남은 4명이 모두 허무하게 졌었던 것 같다.

그렇게 즐겁게 게임을 하며 1년 가까운 시간을 보냈다. 오후 5시에 일어나 물 한잔 마시면서 담배 한대 피우고 컴퓨터 앞에 앉아 스타크래프트를 하다가 새벽 5시 6시에 해가 떠오르고 다시 잠을 자는 생활의 반복.

지금은 상상도 할 수 없는 일이지만, 공부 하나도 안하고 놀았던 저 때가 이상하게도 후회 되지는 않는다.

그리고 나는 군대를 가게 되었고, 2003년 겨울 제대 했을 때에 이미 충남대서버는 사라져버리고 없었다.

나는 옛 생각을 하면서 가끔 WEST 서버에 들어가곤 했는데, 길드원 없이 혼자 스타크래프트를 한다는 것이 얼마나 외로운 것인지 깨닫게 되었다.

그 때 부터는 게임을 하지 않는다. 나중에 스타크래프트2가 나오게 되면 옛 생각을 하면서 다시 한 번 해볼까 하는 생각이 가끔 들긴 하지만, 역시 저녀석들이 없다면 의미가 없을 것 같다.

지금은 다들 뭐하고 있을까. 가끔씩 그 때가 너무나 그립다.

'에세이' 카테고리의 다른 글

내 블로그의 방문자 경향을 확인하기  (8) 2008.10.05
집에 오는 길.  (7) 2008.05.10
화성행궁의 장용영 수위의식  (5) 2008.04.19
오랜만에 다시 찾은 야구장  (1) 2008.03.16
처음 마음가짐을 잊지마  (0) 2008.03.16
The Internet Book - 10점
Douglas E. Comer 지음, 박준철 옮김/지&선(지앤선)

언제부터인가 강컴에 하루에 3번 정도 들어가서 오늘은 무슨 책이 나왔나 훑어 보는 습관이 생겼다. -아마 회사에 입사하고 나서 부터였던 것 같다.

관심이 가는 책들은 항상 우리집 옆에 있는 금천 구립 도서관에 신청을 한다.
웹페이지는 버그 투성이에 형편 없지만, 그래도 작고 사랑스러운 나의 도서관이기 때문에 눈감아 줄 수 있다. :-)
( 한달에 3권씩 신청 할 수 있고, 신청한 책들은 원서이거나 오래된 책이 아니라면 대부분 승인된다. 만일 금천구에 살고 있다면 이 곳에서 많은 책을 신청해가며 읽어보고 작은 행복을 느끼길 바란다. 하하하. )

최근 2달여간 괜찮은 책들이 별로 안나왔었는데, 이 책이 눈에 띄여서 신청을 했다.
이 책의 저자는 'TCP/IP 인터네트워킹 : Principles, Protocols, and Architectures'
이라는 책을 저술한 유명한 사람이다.

'TCP/IP 인터네트워킹'과는 다르게 이 책은 독자들의 수준을 엄청 낮게 잡았다는 점이 주목할 만 하다. 과연 같은 저자가 맞는지 의심이 갈 정도로 기술적으로 얻을 수 있는 것은 별로 없다.

그럼에도 불구하고 이 책의 장점은, 기술적인 설명이 전혀 없이도 인터넷 전반적인 내용에 대해 잘 이해할 수 있도록 쓰여졌다는 점이다.

내가 3학년 때에 데이터 통신이란 과목을 통해서 처음 네트워크를 접하게되기 직전에,
나는 C언어로 자료구조를 구현하는 것이라던지 MFC로 그저 그런 프로그램을 만들 수 있는 수준 정도 였었다.
프로그램에 대해서 어느정도 자신감을 얻었을 때 였는데, 당시 선배였던 형과 자취방에서 대화했던 기억이 난다.

"형 랩실에 있는 내 컴퓨터에 연결하면 될꺼에요."
"그래? 아이피가 뭔데"
"10.x.x.x 요"

그래서 그 형은 마구 웃었고, 설명을 듣고나서 나는 너무 부끄러웠다.
왜 도대체 그런 것을 대학교 3학년이 되어서야 가르쳐준단 말인가!

이 책은 학부 1학년들이 보기에 아주 적합하다고 생각된다.
NAT Box, 서버 사이드 스크립팅, HTTP, VPN 에 대한 설명은 특히 좋았다.

대학 1학년 때, 이런 책으로 인터넷 개론을 다져놓기만 해도 나중에 고급 네트워크 수업을 들을 때 -혹은 일상생활에도 많은 도움이 될 것이다.

학교 교수님들께 편지라도 써서 꼭 후배들이 1학년 때 공부할 수 있게 만들고 싶은 책이다.


얼마전에는 문득 옛 추억들을 생각해 보다가, 좋았던 시절의 사진이 거의 없는 것을 깨달았다. -물론 일기는 꾸준히 써왔기 때문에 글은 남아있기는 한 것이 다행이다만, 사진하고는 또 다르지 않은가.
지금이라도 젊은 시절의 좋은 장면들을 담아 놓기 위해 디지털 기기를 그렇게도 싫어하는 내가 큰마음을 먹고 디지털 카메라를 하나 샀다.
사진찍는게 습관이 되어 있지 않아 아직도 많은 사진을 찍지는 못했지만, 그중 하나를 소개 해볼까 한다.

바로 일요일마다 내가 하는 일인 장용영 수위의식이라는 행사.
2005년도 대학 3학년 때, 용돈벌이로 시작한 일이었었는데, 이제는 내 삶의 일부가 되어 회사에 취직하고 나서도 계속 일을 하고 있다.

화성 행궁은 예전에 정조가 자주 들러서 쉬고 가던 장소였다.
또 장용영이라는 것은 당시 정조의 친위 부대를 말하는데, 우리가 하는 행사는 그 당시 정조 대왕과 장용영 군사들의 모습을 재현하는 것이다.

매주 일요일 2시에 화성 행궁 신풍루 앞 광장에서 행사를 하니 관심이 있다면 남녀노소 할 것 없이 한 번쯤 찾아 보는 것도 분명 가치 있는 일 일것이다.

그럼 나의 첫 사진기인 Nikon COOLPIX L14로 담은 화성 행궁의 행사 모습들을 한번 소개해 본다.


사용자 삽입 이미지
배부르게 밥먹고 행사 시작전 리허설 중.


사용자 삽입 이미지
외교관이 꿈인 우리 막둥이 지일이. 사회자 역할을 맡고 있다.
중국어 전공이지만 영어도 잘한다. -얼마전 토익을 봤는데 900점이 넘었단다.
열심히 공부하는 모습을 보면 이뻐 죽겠다.


사용자 삽입 이미지
오후 2시 정각. 행사가 진행되고 취타대가 음악을 울리며 등장하고 있다.


사용자 삽입 이미지
날씨가 좋아지니 점점 사람들이 많이 모인다.


사용자 삽입 이미지
신풍루 위. 이 곳에서 교련관이 개식 타고를 하면서 행사가 시작된다. 행사 중에 정조대왕이 앉아서 장용영 수위의식을 지켜보는 장소이기도 하다.


사용자 삽입 이미지
병조판서가 관기들에게 지시사항을 전달하고 있다.


사용자 삽입 이미지
북군영 장교들의 등장.


사용자 삽입 이미지



사용자 삽입 이미지
성문이 열리고 정조대왕이 나오는 것을 모두 기다리고 있다.


사용자 삽입 이미지
왕의 등장.
저 연기는 내가 뿌리는 것이다. 훗.


사용자 삽입 이미지
정조대왕이 백성들에게 인사를 하고 있다. 예전에 어떤 할아버지는 연신 꾸벅꾸벅 하시며 눈물을 흘리신 적도 있었다.



사용자 삽입 이미지
정조대왕이 신풍루 위 용상에 자리를 앉은 후, 조총수들이 시범을 보이기 위해 입장하고 있다.


사용자 삽입 이미지
가끔씩 총이 안나갈 때가 있는데, 그럴 땐 정말 난감하다.


사용자 삽입 이미지
매번 초등학생 아이들 3명을 선착순으로 그 자리에서 모집해서 함께 사격을 한다.


사용자 삽입 이미지
이번엔 궁수들.


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지
자세들이 좋다. 개인적으로도 정말 좋아하는 아저씨들이다.


사용자 삽입 이미지
행사가 끝나면 정조대왕과 함께 사진을 찍을 수 있는 포토이벤트가 있다.
물론 무료이며, 장용영 수위의식 홈페이지에서 다운로드 받을 수 있다.


사용자 삽입 이미지
행사가 끝나고 남군영에 앉아 찍은 하늘. 참 좋다.


사용자 삽입 이미지
수원의 맛집 진미통닭. 내가 가장 좋아하는 통닭집이다.
이 날도 어김없이 통닭과 맥주를 잔뜩 먹은채 즐거운 시간을 보냈다.
회사를 다니면서 피곤하더라도 이 일을 포기 할 수 밖에 없는 이유는 바로 이 녀석들과의 만남이다.


사용자 삽입 이미지
집에 가는 길.
장안문. 북문이라고도 부른다.
술을 마셔 내 눈은 핑핑 돌았는데 사진기는 어지럽지 않았나보다.


사용자 삽입 이미지
저 위의 길을 쭉 따라가면 창룡문까지 갈 수 있다.
수원성 전체가 연결되어 있는데, 모든 길을 다 걸어보지는 못했다.
사랑하는 사람과 산책해보고 싶은 내 맘속의 코스 1위인 길^^


지금 소개한 것은 매주 일요일 2시에 하는 장용영 수위의식이고, 매년 10월에는 화성 문화 축제가 있다.
3일 동안 진행되는데 그 때는 과거시험, 혜경궁 홍씨와 함께하는 진찬연, 북문에서 부터 남문까지 차량을 통제하고 정조대왕이 지나가는 능행차 등 정말 재밌는 공연들이 많이 있다.

디지털보다 아날로그를 사랑하는 사람들이여,
화성행궁으로 오세요.^^

'에세이' 카테고리의 다른 글

집에 오는 길.  (7) 2008.05.10
구충남대 서버에서 가졌던 스타크래프트의 추억  (38) 2008.05.06
오랜만에 다시 찾은 야구장  (1) 2008.03.16
처음 마음가짐을 잊지마  (0) 2008.03.16
아주 조금씩  (0) 2008.03.16

사용자 삽입 이미지


python 언어 자체는 너무나 재미있지만, 몇가지 간단한 스크립트를 작성 해보면서, 비주얼 스튜디오에 익숙해 있는 내게 편리한 디버깅 인터페이스와 자동으로 메소드 목록을 보여주는 기능이 없는 환경은 너무나 불편하게 느껴졌다.

이클립스에서 사용할 수 있긴 하지만, 이클립스는 내게 익숙하지 않으므로 패스하고.
Visual Studio에서 파이썬을 붙여서 사용할 수 있다는 것은 이전부터 알고 있었지만 그다지 관심있게 보지는 않았었다.
왜냐하면 IronPython이라는 것은 닷넷 프레임워크 기반에서 동작하기 때문이었다.

어제는 리눅스에서 간단한 파이썬 스크립트를 작성하다가, vim에 그다지 익숙하지 않고 print로 밖에 디버깅 할 수 없는 나에게 조금은 화가 났었다.

곰곰히 생각을 해봤는데 이런 방법이 떠올랐다.
VS2008에 IronPython이라는 것을 붙여서, 닷넷 라이브러리를 사용하지 않은 순수 파이썬 코드만을 편하게 작성하고 리눅스나 다른 환경으로 옮겨서 실행하면 어떨까.

예상은 그럭저럭 들어맞았다.
설치 방법은 생각보다 간단하다.

1. VS2008 설치

2. Visual Studio 2008 Shell Isolated Mode Redistributable package 혹은
Visual Studio 2008 Shell Integrated Mode Redistributable package 다운로드

3. VS2008 SDK 설치

4. http://www.codeplex.com/IronPythonStudio에서 최신 설치 버전 다운로드.
 -  IronPythonStudioIsolatedSetup 혹은  IronPythonStudioIntegratedSetup

isolated 모드와 integrated 모드가 있는데 나는 isolated모드로 설치했다.
사실 잘 이해 못하고 사람들이 더 다운로드 많이 받았으므로 이걸 골랐었다. :(

설치 완료 후 비주얼 스튜디오를 켜니 python 프로젝트가 없길래 역시 쉽게 안되나 생각했었는데, 시작 -> 모든 프로그램에 보니 IronPython Studio라는게 생겨있었다.
아마도 이 부분이 isolated와 integrated에 따라 달라지는 것 같다.
intergrated를 선택해서 설치했다면 아마도 비주얼 스튜디오를 실행 하고 새 프로젝트를 눌렀을 때, C#, C++, 이 밑에 Python프로젝트가 같이 나올 것으로 예상된다.
따라서 저 옵션은 아마 비주얼 스튜디오에 독립적으로, 또는 통합적으로 라는 말이 아니었을까?

어쨌뜬 실행 화면을 보자.

사용자 삽입 이미지
사용자 삽입 이미지
디버깅은 아주 잘된다.
자동으로 메소드 목록이 나타나지 않는 것은 조금 유감이지만 이 정도만으로도 만족한다.
앞으로 좀 더 개선 될 것을 기대한다. :)

프로그래밍 수련법 - 10점
브라이언 W. 커니핸.롭 파이크 지음, 장혜식.신성국.김정민 옮김/인사이트


회사에 처음 들어왔을 때 쯤, 이런 저런 명서들을 찾아서 구해 볼 때에 이 책을 알게 되었다.

원서로 가지고 있긴 하지만, 앞 부분만 깨작깨작 거리다가 결국 못 읽고 있었는데, 얼마전에 '프로그래밍 수련법' 이란 이름으로 번역서가 출간 되었다.


이미 훨씬 이전에도 '프로그래밍의 모든 것' 이라는 이름으로 번역서가 있기는 했는데, 책 표지에서 80년대 냄새를 잔뜩 풍겨 번역 또한 엉성할 것만 같아 구해 보지는 않았다.

이 책의 목차는 다음과 같다.

Capter 1: Style
Chapter 2: Algorithms and Data Structures
Chapter 3: Design and Implementation
Chapter 4: Interfaces
Chapter 5: Debugging
Chapter 6: Testing
Chapter 7: Performance
Chapter 8: Portability
Chapter 9: Notation

프로그래밍의 전반적인 내용들을 주제로 삼고 있으며, 이 책을 보면서 스티브맥코넬의 Code Complete와 너무 닮았다는 느낌을 받았다.

물론 Code Complete는 2004년도에 2판이 다시 쓰여진 반면에 이 책은 1999년도에 쓰여졌다. 또한 Code Complete는 1000 페이지에 달하는 분량이고 이 책은 300여 페이지의 정도의 내용을 담고 있기 때문에 깊이 면에서는 이 책이 Code Complete를 따라 갈 수 없는게 당연하다.

Code Complete가 이 책보다 훨씬 낫다! 라고 말을 하는 꼴이 되어 버렸지만 그렇지는 않다. 타겟으로 하는 독자 수준이 다르기 때문이다.
Code Complete는 Jeffrey Richter가 10년이나 읽고 있지만 아직도 이 책에서 배운다고 말할 정도로 깊이 있고 수준 있게 작성되었지만,
The Practice of Programming은 프로그래밍에 처음 입문 하는 사람들을 목적으로 작성 되었다.

저자가 의도한 바에 맞게 책을 골라서 읽으면 될 것이다.

모든 사람들이 읽을 수 있도록 언어는 C로만(브라이언 커니건의 주무기인) 작성된 것이 아니라, C++ 과 Java를 섞어서 타겟층을 넒게 잡았다.

어쩌다 보니 Code Complete 이야기를 너무 많이 하게 되었는데, 비슷한 주제를 담고 있어서 비교를 안할 수가 없었던 것 같다.

다음 주에는 Code Complete에 대해서도 한 번 써봐야겠다.

아참, 이책의 번역서 모습이다.^^
좋은 책을 힘들여 번역해 주신 분들께 진심으로 감사드립니다.

비즈하드는 기업들의 편리한 업무 환경을 제공하기 위한 서비스이다.

일정 기간 동안 사용자들이 모든 서비스를 무료로 체험해 볼 수 있도록 제공하기 때문에 관심이 있다면 이 곳에서 가입 후 바로 사용해 볼 수도 있다.
중소 기업 환경의 편의를 중점으로 개발되었기 때문에 개인이 혼자 사용하는 것보다는 여러명이서 함께 사용할 때에 더욱 많은 가치를 느낄 수 있을 것이다.

주요 기능으로는 전용탐색기, 웹탐색기, 메신저, 웹메일 서비스가 있다.
하나씩 간단하게만 살펴보자.

클릭하면 큰 그림으로 볼 수 있다.

사용자 삽입 이미지

비즈하드 전용탐색기

데이터 공유를 위한 비즈하드 데스크탑 어플리케이션으로 Windows 2000, XP, Vista 에서 구동 가능하다.
회사내에서 데이터 공유는 물론이고, 사내 조직별로 그룹디스크를 만들어 그룹별 공유도 할 수 있다.
게스트 폴더는 외부 협력사와 자료를 교환할 때 유용하게 사용된다.
웹링크와 대용량 메일 또한 아주 유용한 기능 중 하나다.
웹링크는 업로드된 파일의 URL을 얻어와서 오픈 마켓이나 자신의 웹페이지서 활용할 수 있다. 또한 익명의 누군가에게 파일을 전달하고 싶을 때 주소만 보내주면 클릭 한번으로 쉽게 다운로드가 가능하다.
대용량 메일은 무제한 용량의 커다란 파일을 메일로 전송하는 기능이다.
메일을 받는 입장에서는 ActiveX를 설치해야 한다는 것이 단점이긴 하지만, 외부 업체나 거래처에 쉽게 파일을 전달 할 수 있는 방법 중 하나다.




사용자 삽입 이미지

웹탐색기


이번엔 웹탐색기이다. 웹브라우저만 있다면 운영체제에 상관없이 어떤 환경에서건 설치 없이 쉽게 실행 할 수 있다는 장점이 있다.
보안폴더와 대용량 메일을 제외하곤 전용탐색기와 거의 같은 기능을 제공한다.





사용자 삽입 이미지

비즈 메신저

사내에서 가장 유용하게 쓸 수 있는 기능이다.
원격제어, 파일전송, 그림판, 대화내용 저장 등 업무하기에 편리한 여러 기능 등이 있다.
또한 비즈하드 디스크와 홈페이지등을 바로 실행할 수 있게 연동되어 있고, 관리자가 사용자를 따로 등록하지 않아도 대화상대 목록에 자동으로 추가되기 때문에 입사/퇴사 시에도 범용 메신저처럼 일일히 등록할 필요가 없어 편리하다.




사용자 삽입 이미지

웹메일 서비스

이번엔 웹메일 서비스이다.
명함에 포탈사이트로 된 이메일 주소가 적혀 있다면 웹메일 서비스 신청을 고려해 볼 만하다. 자신의 회사 이름으로된 메일 계정을 무료로 얻을 수 있다.






사용자 삽입 이미지


15년 여 만에 다시 찾은 야구장은

푸른잔디는 그대로였지만
예전보다 작아져 있었고, 내 가슴도 더 이상 두근 거리지 않았다.

어렸을 적에, 혼자와서 얼큰히 취한채 야구를 보던 아저씨들을
이제는 이해할 수 있었다.

그것은 바로 외로움이었다.


'에세이' 카테고리의 다른 글

구충남대 서버에서 가졌던 스타크래프트의 추억  (38) 2008.05.06
화성행궁의 장용영 수위의식  (5) 2008.04.19
처음 마음가짐을 잊지마  (0) 2008.03.16
아주 조금씩  (0) 2008.03.16
인내  (0) 2008.03.16
사용자 삽입 이미지


살랑 살랑 불어오는 바람을 맞으며 여러 생각을 갖는다.

2년 전에 처음 복학하여 공부하던 때가 자꾸 생각이 난다.

내게 그 때 그 열정이 지금도 변하지 않았다는 것에 감사하며 더욱 열심히 살아야하겠다.

'에세이' 카테고리의 다른 글

화성행궁의 장용영 수위의식  (5) 2008.04.19
오랜만에 다시 찾은 야구장  (1) 2008.03.16
아주 조금씩  (0) 2008.03.16
인내  (0) 2008.03.16
Practice makes perfect.  (6) 2008.03.16

아주 조금씩

2008. 3. 16. 22:38 | 에세이
사용자 삽입 이미지



어떤 면에서는 예전보다 못해진 점도 있지만,
또 어떤 면에서는 예전보다 나아졌습니다.

전체적으로 나는 예전보다 발전하고 있습니다.

'에세이' 카테고리의 다른 글

오랜만에 다시 찾은 야구장  (1) 2008.03.16
처음 마음가짐을 잊지마  (0) 2008.03.16
인내  (0) 2008.03.16
Practice makes perfect.  (6) 2008.03.16
Programming.  (0) 2008.03.09

인내

2008. 3. 16. 22:37 | 에세이
사용자 삽입 이미지


참는자는 아름답다.

'에세이' 카테고리의 다른 글

오랜만에 다시 찾은 야구장  (1) 2008.03.16
처음 마음가짐을 잊지마  (0) 2008.03.16
아주 조금씩  (0) 2008.03.16
Practice makes perfect.  (6) 2008.03.16
Programming.  (0) 2008.03.09