Media Log

[아름다운 명서(컴퓨터)]에 해당되는 글 38

  1. h 코딩 호러의 이펙티브 프로그래밍 - 제프 앳우드 (4) 2013.04.08
  2. h 읽기 좋은 코드가 좋은 코드다 (4) 2012.05.28
  3. h 조엘 온 소프트웨어 - 박재호 역 (4) 2012.02.12
  4. h Writing Solid Code(버그 안녕) - Steve Maguire 2011.10.23
  5. h 클린 코드 2011.09.27
  6. h Effective C++ 3판 -스캇 마이어스 (3) 2011.08.22
  7. h Effective STL -스캇 마이어스 (2) 2011.06.27
  8. h Effective TCP/IP Programming -존 스네이더 지음 (2) 2011.04.07
  9. h TCP/IP 소켓 프로그래밍 개정판 -윤성우 (4) 2011.03.08
  10. h Windows 시스템 프로그래밍 4판 -Johnson M. Hart 2011.03.06
  11. h 거의 모든 IT의 역사 -정지훈 지음 (1) 2011.01.23
  12. h 윈도우 개발 282 스토리 -레이몬드 첸 (4) 2010.08.01
  13. h 소프트웨어 개발의 모든 것 -전규현 (3) 2010.06.07
  14. h 실용주의 프로그래머 -앤드류 헌트 2010.05.22
  15. h Programming The Microsoft Windows Driver Model 2/E -월터 오니 (6) 2010.04.25
  16. h WinDbg로 쉽게 배우는 Windows Debugging -김성현 저 2010.03.06
  17. h Windows 시스템 실행파일의 구조와 원리 -이호동 저 2010.02.13
  18. h More Joel on Software -조엘 스폴스키 (1) 2010.01.07
  19. h 특이점이 온다 -레이 커즈와일 (4) 2009.06.21
  20. h 정규 표현식 완전 해부와 실습 -서환수 역 (2) 2009.02.19
  21. h 제프리 리처의 Windows via C/C++ (11) 2008.12.19
  22. h 리눅스 그냥 재미로 - 리누스 토발즈 (1) 2008.08.20
  23. h 웹 사이트 최적화 기법: UI 개발자를 위한 필수 지침서 -Steve Souders 2008.08.09
  24. h Writing Secure Code 2/E : 안전한 코드 작성 기술 -Michael Howard 2008.08.01
  25. h Taeyo's ASP - 김태영 (2) 2008.07.19
  26. h Art of UNIX Programming - Eric S. Raymond (1) 2008.06.28
  27. h Javascript The Definitive Guide 5/E -David Flanagan (2) 2008.06.15
  28. h Steve McConnell의 Code Complete 2/E (2) 2008.06.01
  29. h 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 2008.06.01
  30. h 웹 진화론 -우메다 모치오 (4) 2008.05.11
코딩 호러의 이펙티브 프로그래밍 - 10점
제프 앳우드 지음, 임백준 옮김/위키북스

내가 가장 좋아했던 프로그래밍 블로그는 단연 레이몬드 첸의 OldNewThing 이었는데, 최근에 윈도우즈와 동떨어져 사는 생활을 해서 그런지 1등 블로그가 바뀌어 버리게 되었는데 그것은 바로 스택 오버플로를 만들었던 제프 앳우드의 코딩 호러라는 블로그이다. -이전에도 두 블로그를 모두 구독했고 지금도 여전히 레이몬드의 글을 보지만 두 블로그들 중 제프 앳우드의 블로그에 새 글이 올라왔을 때 더 반가운 느낌을 받는 듯 하다.


6개월 쯤 전이었던가 이 책이 전자책으로 나온 것을 알았을 때 즉시 구입했던 기억이 난다. 아이패드에 넣어 다니며 조금씩 읽긴 했는데 영어책을 읽는 것은 시간과 에너지를 낭비하게 하고 스트레스를 가져다 줬다.

그래서 이번에 한글책이 나오자마자 기쁘게 다시 구입해서 주말 내내 폭풍처럼 읽어버렸다.(그렇지 않았으면 1년이 지나도 결국 못 읽은 책으로 남았을 것이다)


결론만 이야기 하면 이 책은 정말 재미있고 유익한 조언이 많이 담긴 책이다. 내가 지금까지 가장 즐겁고 행복하게 (몇 번씩이나) 읽었던 컴퓨터 책은 해커와 화가조엘 온 소프트웨어 정도가 떠오르는데 이제 이 책이 하나 더 추가될 것 같다.


프로그래밍을 사랑하고 좋은 프로그래머가 되기를 원한다면 꼭 한번 읽어보기를 권장한다.


저작자 표시 비영리 동일 조건 변경 허락
신고
  1. fullc0de at 2013.04.23 14:48 신고 [edit/del]

    저도 이거 나왔을 때 사서 읽어봤는데 역시나 좋은 내용이 많더군요. 요즘 팀에 신입사원들에게 읽어보라고 강요(?)하고 있다는;;;

    Reply
  2. fullc0de at 2013.04.24 16:29 신고 [edit/del]

    파트마다 각 한 명씩 들어왔어요~^^ 근데 유지보수가 대부분인 조직에 들어와서 좀 안쓰럽기는 함;;

    Reply

submit
읽기 좋은 코드가 좋은 코드다 - 10점
더스틴 보즈웰 & 트레버 파우커 지음, 임백준 옮김/한빛미디어

한빛미디어에서 새로 나온 신간이며 국내 개발자들에게 꽤 유명한 임백준씨가 내용을 옮겼다.
원서는 The Art of Readable Code라는 책인데 아마존에서도 그럭저럭 호평을 받고 있는 것으로 보여진다.


책 제목처럼 읽기 쉬운 코드를 쓰는 방법에 대해서 구체적으로 설명한다. 책 분량도 적당하고 내용도 어렵지 않다.

아주 깔끔하게 잘 나온 책이라고 생각한다.


하지만 새로운 지식이나 멋진 뭔가를 얻으려고 생각하면 안된다. 책을 읽어가다 보면 아마 기존에 자신이 코드를 작성하면서 대부분 한번씩 고민해 봤을 내용들일 것이다. 이 책의 저자들은 보통 사람들보다 조금 더 많이 고민해 본 것이 확실해 보인다.

책을 읽어 가면서 자신이 이전에 생각했던 내용들과 비교하면서, 읽기 좋은 코드를 작성하는 방법에 대해서 다시 한번 진지하게 생각해보는 계기를 가진다면 좋을 것이다.


아참, 책 내용 중에 이런 글이 있었다.

우리가 이 장에서 설명하는 건 헝가리언 표기법보다 더 넓고 비공식적인 시스템이다. 어떤 변수가 가지는 중요한 속성을 포착한 다음, 그 속성에 중요한 의미가 있으면 변수명에 포함시키는 방법이다. 원한다면 이 방법을 '잉글리쉬 표기법'이라고 불러도 좋다.


으음, 원하지 않는다.

변수 이름을 잘 지어야 한다고 노래를 부르더니 정작 본인들은 이름을 이렇게 밖에 못 짓나? 크크크.

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. binho at 2012.05.28 11:53 신고 [edit/del]

    좋은책소개 감사합니다. 재밌어보이네요.

    Reply
  2. mapark at 2012.10.22 09:53 신고 [edit/del]

    좋은 리뷰 감사히 잘 읽고 갑니당^^

    Reply
  3. Ashton at 2012.11.09 20:57 신고 [edit/del]

    평이 이렇게 좋은 김재호..잘 모르겠습니다. 너무도 당연한 내용과 때때로 뜬금없는.. 모든 실무에 동일하게 적용할수 있는 룰은 없다는 건 알지만.. 아쉽게도 이번 책 선택은 실패!

    Reply

submit
조엘 온 소프트웨어 - 10점
조엘 스폴스키 지음, 박재호.이해영 옮김/에이콘출판
2006년도에 이 책을 읽은 적이 있다. 사실 나는 그 때 조엘을 마이크로소프트에서 잠깐 일했던 평범한 엔지니어 정도로 알고 있어서 그랬는지 몰라도 이 책에서 별로 감동을 받지 못했다. 지금은 조엘이 얼마나 똑똑하고 대단한 사람인지 잘 아는데다가 얼마전에 레이몬드 첸의 블로그에서 링크된 조엘의 추상화의 함정에 대한 글을 따라가서 읽다가 예전에 이 책을 너무 대충 읽은 것이 아닌가하는 생각이 들어 다시 한번 읽기 시작했다.

책을 몇 페이지 읽은 순간부터 정말 그랬다는 것을 알았다. 당시에 나는 조엘의 프로그래밍과 소프트웨어 관리에 관한 철학, 농담 따먹기들을 이해하기에는 너무 햇병아리였다. 이번에 다시 읽을 때는 또 놓치고 지나가는 내용이 있을까봐 아주 주의 깊게 읽었다. 언젠가 조엘의 책 4권 중에 조엘이 엄선한 블로그 베스트 29선이 가장 재밌었다고 말한 적이 있는데 이제 그 말을 바꿔야겠다. 1등은 두말할 것도 없이 오리지날 조엘 온 소프트웨어라고 말하고 싶다.

이 책에 나오는 내용들은 10년쯤 전에 쓰여졌는데 모든 좋은 책들이 그렇지만 여전히 그 내용이 유효하다. 오히려 지금 다시 읽어보니 더욱 재미있는 것 같다. 어떤 기술들은 망한다 어떤 회사들은 망한다 했는데 지금 와서 보니 대부분 맞아 떨어졌으니 어찌 재미가 없겠는가.

조엘의 공격적인 성향에 대해서는 뭐라고 해야할지 모르겠다. 실명을 거론하면서 바보라고 말하는 것을 서슴치 않는데 상대방들은 얼마나 기분이 나쁠까. 그 바보들 중에는 진짜 stupid 들도 있겠지만 켄트 백이나 에릭 레이몬드 같은 유명하고 실력있는 해커들도 있다. 1,2년 전 쯤 언젠가는 조엘이 스택오버플로 팟캐스트에서 TDD 욕을 신나게 하다가 정말 켄트 백하고 심하게 싸움이 붙었던 적도 있다. 이런 성향을 좋다고 할 수는 없지만 이런 것들이 그의 책을 읽는 독자들을 더욱 즐겁게 해줬다는 것은 분명하다. 싸움 구경만큼 재밌는게 없다는 말이 있지 않는가.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 후니 at 2012.02.12 22:29 신고 [edit/del]

    조엘이 그렇게 뛰어난 사람이었나요? ㅎ 재호님 글을 읽고나니 다시 한번 보고 싶어지네요 ^_^

    Reply
  2. Favicon of http://blog.naver.com/empty_wagon BlogIcon 주의사신 at 2012.05.14 09:07 신고 [edit/del]

    그 책에 "차세대 Windows API는 HTML입니다"라는 내용이 있는데, 처음 읽을 때 설마 그럴라고 하면서 읽었지만, 지금 Windows 8에 HTML5로 앱 개발이 가능한 세상이 되어서 참 놀랐습니다...

    사무엘님 블로그 타고 왔습니다. 반갑습니다.

    Reply

submit
Writing Solid Code - 10점
Steve Maguire 지음, 나윤석 외 옮김/높이깊이

몇 일전 deview 2011 행사 중 한 세션에서 재미있는 이야기를 들었다.
 NHN 김정민 이사의 세션이었는데, 이런 말을 했다.
애플, 마이크로소프트, HP 같은 회사에서 15년 동안 일했던 (지금은 NHN에서 일하고 있는) 송창현 이사가 예전에 우리회사에 면접을 보러 왔을 때 잘하는 게 뭐냐고 물어봤더니,
"저는 meticulous code reader입니다. 남의 코드를 아주 꼼꼼하게 읽어줄 수 있습니다."
대부분의 경력을 많이 가진 사람들은, 저는 유닉스를 10년을 넘게 다뤄서 커널 구석 구석까지 깊게 알고 있습니다. 오라클 전문가입니다 라고 말하지 저런 식으로 말하지는 않는데, 김정민 이사는 그게 상당히 인상적이고 멋있어 보였다고 한다.

나 또한 그 말이 멋있어 보인다는데에 완전히 동의한다.
저는 자바스크립트만큼은 누구보다 잘할 자신이 있습니다, 라는 말(또는 뻥)보다 훨씬 멋지지 않은가?

직장 생활을 하다보면 Meticulous code reader가 거의 없다는 것을 쉽게 알게 된다. - 나는 이전에 다니던 직장에서 여태껏 그런 사람을 딱 1명 만나봤다.
여러분이 후임이 있다고 치자. 어떤 기능을 구현해달라고 일을 주고 후임이 나중에 다 만들었습니다 했을 때, 또는 만들고 있는 도중에, 코드를 한줄 한줄 다 꼼꼼하게 읽어주고 피드백 해준 적이 있다면, 당신은 좋은 Meticulous code reader가 될 수 있는 가능성이 있다. 거의 대부분의 사람들은 그렇게 하지 않는다.

갑자기 이런 이야기를 하는 이유는, 최근에 Writing Solid Code라는 책을 읽으면서 이 책의 저자인 Steve Maguire가 그런 Meticulous code reader 라는 생각이 들었기 때문이다.
이런 사람들은 회사에 꼭 필요하다. 마이크로소프트가 10년 넘게 황제의 자리를 차지할 수 있었던 이유는 이런 사람들이 많이 있었기 때문일 것이다.

이 책에서는 정교하고 튼튼한 프로그램을 짜기 위한 많은 기술들을 배울 수 있으며, 또한 프로그래머가 프로그램을 만든다는 것 대해서 가져야할 바람직한 자세를 배울 수 있다.
매 챕터가 끝날 때에는 '생각할 점'이 나오는데, 여기에도 좋은 내용들이 참 많다. 부록에 답까지 있으니 모두 꼼꼼하게 읽어보도록 하자.
인터넷 어딘가에서 번역이 최악이라는 평가를 본 것 같은데, 이 책의 번역은 정말 잘 되었다고 생각한다. 부분 부분 약간 어색한 단어 선정이 보였던 것 같긴 하지만, 나는 왜 최악의 번역이라고 하는건지 이해할 수가 없다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
Clean Code 클린 코드 - 9점
로버트 C. 마틴 지음, 박재호.이해영 옮김/케이앤피북스
언젠가 어떤 책을 읽다가 모든 디자인 패턴은 중복을 제거하려는 시도로부터 나왔다는 내용을 읽은 적이 있다. 중복을 제거하는데 집중하게 되면 결국 현재 잘 알려진 디자인 패턴 중 하나를 사용하게 된다는 내용이었는데 나는 그 말이 참 마음에 와닿았다. 그 이후로는 쓸데없이 여기는 이 패턴을 적용해야지 하는 생각들을 버리고 그냥 맘 편하게 중복을 제거하는데 집중해서 프로그래밍 하고는 했는데 그 방법이 훨씬 더 좋은 것도 같다. 어쨌거나 그 글을 이 책에서 읽은 줄 알았었는데, 다시보니 이 책이 아니었었나 보다. 어느 책에서 읽었는지 도대체 기억이 나지가 않는다. 다시 한 번 보고 싶은데. 혹시 알고 계신 분이 있으면 좀 가르쳐주세요.

이 책은 책 제목 그대로 어떻게 클린 코드를 작성하는지에 대해서 다룬다. 디자인 패턴하고도 밀접한 관계가 있고 리팩터링하고도 관련이 있다.
변수 이름을 짓는 간단한 방법부터 시작해서 어떻게 잘 설계된 클래스와 인터페이스를 만드는지, 어떻게 리팩터링을 하는지에 대한 훌륭한 지침들이 가득 담겨져 있다. 하나하나 읽으면서 음미할 수 있고 고민이 되는 잘쓰여진 좋은 책이다.

그런데 책 중간부터는 뭔가 실전처럼 보여주기 위해 남의 코드를 리팩터링 하는데 하필 그 중 한 코드가 도널드 커누스가 작성한 코드이다.
리팩터링할 코드는 찾아보면 쌔고 쌨을텐데 하필 커누스인가. 최고의 프로그래머에 대한 예의를 갖추는 것처럼 말은 조심스럽게 하지만 결국 당신 코드는 읽기는 참 어렵단 말이야, 내 코드가 더 낫지! 라고 말하는 것 같다.

..그래서 별 반 개 깍았다. -_-ㅋ
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
이펙티브 C++ - 10점
스콧 마이어스 지음, 곽용재 옮김/피어슨에듀케이션코리아

한 동안 계속 C로만 코드를 짜다가 최근 회사를 옮기면서 C++를 다시 하고 있는데 C++로 코딩하는게 그렇게 재미있을 수가 없다.

이 책은 2006년도에 회사에 갓 들어가서 한 번 읽었던 책인데, 최근 읽은 Effective STL이 너무 재미 있어서 5년여 만에 다시 꺼내어 읽어 본 책이다.
두번째로 읽었지만 그 당시 읽었던 것보다 더 재미있게 읽었고 정말 많은 부분을 놓치고 지나갔었다는 것을 알게 되었다.

이 세상에 스캇 마이어스처럼 C++를 재밌고 간결하게 설명할 수 있는 사람이 있을까? 있을수도 있지만 아마 비야네 스트롭은 아닐 것이다. 비야네의 책은 좋은 책임에는 분명하지만 정말 재미없고 어렵다. -.-

책을 읽다가 문득 궁금했다. 혹시 이제 C++11 버전 에디션을 하나 내지는 않을까? 어쩌면 이미 준비하고 있는 것은 아닐까?
그래서 한 번 메일을 보내서 물어봤는데, 맙소사 스캇 마이어스가 내게 답장을 해주다니.

안타깝게도 아직은 계획에 없다고 한다. 새 버전의 책은 분명히 쓸만한 가치가 있지만 C++11을 Effective하게 사용하는 법을 쓰기 위해서는 먼저 그에 대한 충분한 경험이 필요하기 때문이라고 한다.
뭔가 새 버전만 나오면 남에게 뒤질세라 대충 공부해서는 얼른 책 한권을 만들어 내는 요즘 세상에 참 멋진 해커가 아닌가?
아마도 스캇 마이어스가 말하는 충분한 경험이란 꼴랑 두세달 공부하는 것은 아닐 것이다.
오래 기다려야 할 것 같아서 안타깝긴 하지만 언젠가는 꼭 다음 에디션이 나오게 되지 않을까 싶다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. kwon at 2011.08.24 16:28 신고 [edit/del]

    저도 읽을 때마다 재미나게 읽고 놓쳤던 부분을 항상 찾게 되서 읽게 되는 책이예요~ 보물같은 책!!!ㅋ

    Reply
  2. 방문자 at 2013.07.01 00:51 신고 [edit/del]

    c++11버전을 준비중이라고 합니다.
    지나가던 길에 소식 전하고 갑니다.

    Reply

submit
이펙티브 STL - 10점
Scott Meyers 지음, 곽용재 외 엮어옮김/정보문화사
STL은 정말 잘 만들어진 라이브러리라고 생각한다. 어쩌면 C++로 만들어진 가장 아름다운 코드가 아닐까.
많은 사람들이 STL을 컨테이너를 위한 용도 정도로만 사용하는데 사실 STL의 컨테이너들은 알고리즘과 함수 객체와 함께 조합될 때 더 큰 위력을 발휘하고 바로 이것이 STL을 사용하는 재미가 아닌가 싶다.

스캇 마이어스의 책은 모두 다른 설명이 필요 없는 최고의 책이다. 몇 일동안 출근 길에서 이 책을 읽으면서 너무 즐거웠다. 스캇 마이어스가 C++를 설명하는 방식과 유머 감각은 정말 아무도 따라할 수 없을 것 같다.
Effective C++와 More Effective C++를 다시 한 번 읽고 싶은 마음이 생겼다.

번역 또한 완벽한데, 스캇 마이어스가 농담하는 것까지도 우리 말로 자연스럽게 잘 표현되어 매 챕터마다 나를 큭큭 웃게 만들었다.

STL을 배우기 위해서는 우선 컨테이너, 반복자, 함수객체에 대해서 개념적으로나 문법적으로 이해를 하는 것이 중요한데 이 책에서는 그런 내용을 자세하게 다루어주지 않는다.
아직 STL을 한 번도 접해본 적이 없다면 이 책을 읽기 전에 먼저 C++ Standard Library를 읽어보는 것을 추천한다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 고구마 at 2011.08.05 07:53 신고 [edit/del]

    안녕하세요. 저는 원래 다른 전공을 하다가 다시 프로그래머로 전향하게 된 사람입니다. 우선 감사하다는 말씀을 드리고 싶네요. 이 블로그를 통해 소개해 주신 좋은 책들을 알게 되어 얼마나 다행인지 모릅니다. 책은 무척 좋아하지만 아무래도 이쪽 전공이 아니다보니 아는 사람이 별로없어 무슨 책을 보고 어떻게 공부할지 무척이나 막막했기 때문입니다. 감사한 마음을 전하고 싶어 이렇게 글 남깁니다. 앞으로도 풍성한 블로그가 되길 바랍니다. 감사합니다 ^^

    Reply

submit
Effective TCP/IP Programming - 9점
존 C. 스네이더 지음, 김인우 외 옮김/야스미디어
Effective C++ 시리즈의 제목을 배낀 것(?)을 보면 알수 있듯이 스캇 마이어스의 Effective 시리즈와 똑같은 구성을 하고 있으며 C++이 아닌 TCP/IP 프로그래밍에 대한 내용을 다룬다는 것이 차이점이다.
Effective 시리즈가 워낙 잘 쓰여진 책이라 다른 Effective 아류작들을 읽으면 실망하곤 했는데, 이 책은 아주 만족스러웠다. 도서관에서 빌려보려 했는데 책이 없길래 그냥 한 권 구입했는데 사두길 참 잘했다는 생각이 든다.
 
  • TCP의 신뢰성 있는 전송이라는 것은 무슨 뜻인가. 어떻게 신뢰성을 보장하는가. 얼마나 신뢰할 수 있는가.
  • 데이터가 유실된줄 알고 TCP에서 재전송을 시도했는데 이미 보냈던 데이터가 그제야 잘 도착했다. 재전송한 데이터는 어떻게 처리되는가.
  • 소켓 API를 통해 상대방의 응용 프로그램에 내가 보낸 데이터가 잘 도착했는지 알 수 있을까?
  • send(혹은 write)함수가 성공적으로 리턴된다는 것은 무엇을 뜻하는가.
  • 통신 도중 응용 프로그램이 죽어버리거나 컴퓨터가 꺼져버리면 어떻게 되는가.
  • TIME_WAIT 상태는 무엇이고 왜 존재하는가.
  • scatter/gather I/O 혹은 Vectored I/O는 무엇이고 언제 사용하는가.

위와 같은 질문들에 대해서 고민해본 적이 있다면 이 책을 읽어보는 것이 큰 도움이 될 것이다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. fullc0de at 2011.06.18 16:17 신고 [edit/del]

    리처드 스티븐스 책 소개도 한번 해주세요 ^^

    Reply

submit
윤성우의 열혈 TCP/IP 소켓 프로그래밍 - 9점
윤성우 지음/오렌지미디어
이 책은 대학시절 네트워크 프로그래밍을 처음 공부하면서 봤던 책이다. 당시에도 그랬고 아직까지도 네트워크 프로그래밍 서적으로는 상당히 많이 팔린 책 중 하나인데, 작년쯤 개정판이 나왔다.
나오자마자 사놓고서는 여태껏 게으름 피우고 있다가 이제야 쭈욱 읽어봤다.

책의 표지도 그렇고 글쓴이의 문체 또한 조금 가벼운 느낌이 있어서 프로그래밍을 처음 시작하는 초보자들이나 읽어봐야할 책이라는 생각이 들수도 있다. 하지만 그렇지는 않다. 마치 어려운 내용은 다 빼고 쉬운 내용만을 설명한 것처럼 책이 술술 읽히는데, 저자가 설명을 쉽게 하는 재주가 있기 때문이지 중요한 내용들이 빠진 것은 아니다.
책장을 넘기는 내내 명불허전이라는 생각을 했다. 정말 좋은 책이다.

개정판에서는 epoll이 추가되어서 좋았다. 항상 말로만 들어보고 뭔가 너무 궁금했었다.
설명이 몇 페이지 없긴 하지만 처음부터 책을 잘 읽었으면 어렵지 않게 이해할 수 있다. IOCP를 사용해본 적이 있다면 더 쉽게 이해할 수 있을 것이다.
개인적으로 이 책의 IOCP의 설명보다는 제프리 리쳐의 Windows via C/C++의 설명이 훨씬 좋았다. 더 체계적이고 놓쳐서는 안될 세심한 부분들까지 완벽하게 다룬다. IOCP를 다루는 몇몇 책들 중에서는 제프리의 책이 가장 훌륭하다고 생각한다.

그동안 네트워크 프로그래밍을 꽤 오랫동안 안다루기는 했는가보다.
책을 읽다보니 기본적인 부분들을 포함해 많은 부분을 잊고 살고 있었는데, 이제 다시 머리 속이 채워진 느낌이다.
너무 재밌게 읽었고, 더 알고 싶은 부분도 많아서 또 다른 좋은 네트워크 책으로 보충할 생각이다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. keep at 2011.03.09 15:10 신고 [edit/del]

    이 책 정말 명저죠

    Reply
  2. fullc0de at 2011.06.18 16:14 신고 [edit/del]

    윤성우님도 책을 잘쓰시죠. 2003년에 이 분 책을 처음 접했는데 번역서에서 느끼지 못하는 자연스러움과 물흐르는 듯한 전개가 인상적이였죠 ㅎㅎ

    Reply
  3. BlogIcon kkkkjul at 2011.07.14 09:57 신고 [edit/del]

    저분 대단하신듯... 출판사까지 따로 차리셧던데.
    저 대학교 1학년때 열혈강의 c,c++인기가 높아서 책이 절판된것도 아닌데 없어서 못 팔았음.

    Reply

submit
Windows 시스템 프로그래밍 - 9점
Johnson M.Hart 지음, 류광 옮김/정보문화사

오래전부터 이 책이 좋은 책이라는 이야기를 많이 들었었는데, 여태까지 못보고 있다가 이번에 4판이 번역되어 나온 김에 하나 구입해서 며칠동안 재미있게 읽었다.

저자는 이 책을 리차드 스티븐스의 유명한 고전인 APUE에 대응하는 윈도우 버전이라고 말했지만 책을 읽는 내내 자꾸 비슷한 주제를 다루는 제프리 리처의 Windows via C/C++과 비교가 되는 것은 어쩔수가 없었다.

책 중간의 동기화 오브젝트를 다루는 부분에서는 이 책이 Windows via C/C++보다 훨씬 구체적이고 많은 실례들을 들어 설명을 하고 있으며(제프리보다 재밌게 설명하는 것은 아니지만) 그 이후에 나오는 소켓과 파이프, 윈도우즈 서비스 그리고 오브젝트 보안에 대한 내용들은 Windows via C/C++에서는 다루지 않는 내용이다.
맨 마지막 챕터에서 보안 디스크립터로 ACL을 조작하는 내용은 제프리의 책뿐 아니라 다른 책들에서도 쉽게 다루지 않는 보기 힘든 내용이다. 윈도의 파일들을 리눅스 스타일의 권한(rwx--로 관리되는)처럼 관리할 수 있게 하는 재미있고 실용적인 예제와 함께해서 더 좋았다.

간간히 유닉스 시스템과 비교해서 설명해주는 저자의 코멘트들 또한 이 책의 큰 장점이다.
부록에서는 윈도 API의 유닉스와 CRT 대안 함수들을 표로서 제공해주기도 한다.

제프리리처 책의 모든 챕터를 이제는 2-3번씩 읽어서 윈도우 시스템 프로그래밍에 대해 꽤 많이 알게 되었다고 생각했는데, 이 책을 읽으면서 아직도 많은 부분을 제대로 이해 못하고 있구나 하고 느꼈다. 속상한 일이다.

책에서 옮긴 단어중 신호, 일꾼쓰레드, 스택 위넘침 등은 약간 부자연스럽긴 하지만 내용을 이해하는데는 아무런 문제가 없었다. 하지만 딱 한가지 단어가 나를 힘들게 했는데 그것은 '회부' 라는 단어였다. 가상 메모리를 커밋한다고 할 때 바로 그 커밋을 뜻하는데, 잘 매치가 되지 않아서 머리 속으로 계속 Replace를 했다.

부록에는 여러가지 I/O 방식들에 대한 성능 테스트가 나와 있다.
나는 블로그나 잡지 같은 곳에서 프로그램 성능 테스트를 해봤더니 결과가 어떻더라라고 하면 의심을 하고 잘 믿지 않는 편인데, 그것은 많은 사람들이 페이지 폴트나 캐시 등의 잡음을 고려하지 않고 테스트를 하기 때문이고, 또 그런 것들을 미리 알고 있다 하더라도 완벽히 잡음을 제거하기가 힘들기 때문이다.

책을 읽는 동안 이 책의 저자가 상당히 부지런하고 꼼꼼한 사람이라는 느낌을 받아서 벤치마크 결과에 대해 믿음도 가고 기대를 많이 하고 있었는데, 이 저자 역시 실수를 범해 누군가가 이미 벤치마크의 오류를 지적했었나보다.
아래 페이지에서 저자의 코멘트를 볼 수 있다.
http://jmhartsoftware.com/comments_updates.html
램이 1.5기가가 달린 윈도 XP가 페이지 폴트의 영향 때문에 성능이 몹시 떨어져서 나왔는데,  나중에 다시 테스트해서 올리겠다고 한다. 이런, XP하고 비스타의 I/O 성능 비교가 가장 궁금했는데.
어쨌거나 이것들을 다시 테스트 해보는 일은 엄청 귀찮을텐데 5판을 낼 때쯤에나 다시 해보지 않을까 걱정이 되기도 한다.

제프리 리처의 책이 더 이상 새 버전이 안나오는 것은 정말 아쉬운 일인데, 이 책은 5판도 6판도 계속 해서 쓰여졌으면 좋겠다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
거의 모든 IT의 역사 - 10점
정지훈 지음/메디치

블로그 글들을 자주 읽는다면 하이컨셉 & 하이터치 혹은 애플, 마이크로소프트, 구글의 IT 삼국지를 한번 쯤 본 적이 있을지도 모르겠다.

이 책은 하이컨셉 & 하이터치라는 블로그에서 연재되고 있는 애플, 마이크로소프트, 구글의 IT 삼국지란 글들을 모아서 발행한 책이다. 책을 출간하면서 이름이 '거의 모든 IT의 역사'라고 바뀌게 된 것 같다.
'애플, 마이크로소프트, 구글의 IT 삼국지'라는 제목이 이 책의 내용을 더 잘 표현하는 것 같지만 '거의 모든 IT의 역사'라는 제목도 아주 흥미롭고 책을 읽어보고 싶어지도록 만든다.

위의 세 기업 말고도 IBM, 페이스북, 페이팔, 아마존, 트위터 등의 기업들에 대한 이야기도 짬짬히 등장한다.
국내의 이야기는 거의 언급되지 않는다.

책 중 가장 재미있었던 이야기는 게리 킬달의 에피소드였다. 뛰어난 천재 프로그래머의 이야기는 언제나 재밌다.
아래 링크에서 읽어볼 수 있다.
http://health20.kr/1524

폴 알렌의 이야기도 재미있었는데, 그의 이야기는 다른 블로그에서 더 재미있게 잘 다루었다.
폴 알렌의 놀라운 인생
MS 공동창업자 폴알렌 9조 6천억원을 날려버리다.

책을 읽으면서 이런 내용들을 어떻게 알고 있는 걸까 궁금했었는데, 위키피디아에서 대부분의 내용을 참고했다고 말하고 있다.
나는 주말동안 방구석에 누워서 이리 굴렀다 저리 굴렀다 하면서 편하게 읽었는데, 저자가 얼마나 많은 위키 페이지를 읽고서 정리했을까 상상하니 고마운 생각이 먼저 든다.

책을 읽는 중에 상당히 신선한 부분이 있었다.
이 책 여러 장에 걸쳐서 아래와 같은 QR코드를 볼 수 있다.

나는 스마트폰을 안써서 직접 확인해보지는 못했지만, 아마 웹페이지 URL을 담고 있을 것이라 예상된다.
기존의 책들은 책에 URL을 직접 인쇄했었는데, 나는 독자로서 그것이 너무나 불편했다. 그럼에도 불구하고 정말 궁금한 내용은 키보드로 직접 쳐서 따라가보기도 했었는데(야만스럽게!), 이 책의 QR코드들을 보고 이제는 그런 짓을 안해도 되는구나 생각하니 너무나 기뻤다.
앞으로 나오는 많은 책들이 따라했으면 좋겠다.

이 책의 내용은 저자의 블로그에서 아직 계속 연재중에 있고, 거의 대부분의 내용을 블로그에서도 볼 수 있다.

세 공룡들의 싸움은 점점 더 흥미진진해지고 앞으로도 많은 재미있는 일들이 생기게 될텐데, 꼭 2탄이 나오기를 바란다.
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 혜민아빠 at 2011.01.23 23:14 신고 [edit/del]

    제목 정말 잘 지었네요^^

    Reply

submit
레이몬드 첸의 윈도우 개발 282 스토리 - 10점
레이몬드 첸 지음, 손광수 옮김/ITC(아이티씨)
윈도우즈 프로그래머라면 꼭 구독해야 할 블로그로 하나를 꼽으라면 단연 레이몬드 첸의 The Old New Thing 일 것이다.

그의 블로그는 포스팅이 꽤나 자주 올라오는데, 보통 한번에 2개씩 올라오고 하나는 기술적인 이야기 다른 하나는 잡소리이다.

윈도우즈 프로그래머가 관심있어 할만한, 그리고 얻어갈만한 주제들로 글을 쓰는데다가 유머감각도 꽤 있기 때문에 그의 블로그는 재미있다.


이 책은 2006년에 그의 블로그의 글들을 모아서 발행되었으며, 2007년에 번역서가 출간되었다.
처음 이 책이 나왔을 때 나는 UI 프로그래밍에 관심이 많아서 그 쪽으로 많이 읽었는데, 이번에 다시 읽을 때는 파일 시스템이나 윈도우 시스템 내부의 이야기를 중심으로 읽었다.

물론 재밌기도 할 뿐더러, 그의 놀라운 지식과 통찰력들을 많이 배울 수 있어서 좋은 주말이었다.

기술적으로만 보면 NTFS의 터널링이나 디렉터리의 읽기 전용 속성에 대한 내용이 가장 기억에 남지만, 그보다도 더 인상 깊었던 것은 쉽게 지나칠뻔 했던 어떤 챕터에서 나온 다음 문장이었다.

만약 어떤 애플리케이션이 윈도우 95에서 실행되지 않는다면(애플리케이션의 버그로 인하여) 필자는 이를 개인적인 실패로 받아들였다. 그리고 수많은 밤을 새면서 이들이 윈도우 95에서 실행될 수 있도록 하기 위해 서드파티 프로그램들의 버그를 수정했다.

얼마나 많은 개발자들이 버그를 남의 탓으로 돌리는지를 잠깐만 생각해보면, 왜 마이크로소프트의 윈도우가 이렇게 성공할 수 있었는지, 그리고 그가 왜 세계 최고의 프로그래머라는 소리를 듣는지를 조금이나마 이해할 수 있다.

2007년 이후 그의 블로그에 엄청난 양의 포스팅이 쌓였는데, 이제 2권을 낼 때가 되지 않았나 싶기도 하다. 2권을 낸다는 글을 얼마전에 어디선가 본거 같기도 한데(그게 이 책을 다시 찾은 이유였지만) 꿈에서 봤는지 아무리 찾아봐도 찾을 수가 없었다.

이렇게 얻어갈 것도 많으면서 재밌게 읽히는 책은 많지 않다.
빨리 2권이 나와서 내게 또 하나의 즐거움을 줬으면 좋겠다.

신고
  1. Favicon of http://blogs.technet.com/sankim BlogIcon sankim at 2010.08.01 22:33 신고 [edit/del]

    제 블로그 방문해 주셔서 가사합니다.
    근데 허헉.. 한글번역본이 있군요? 번역 상태는 어떤가요?

    Reply
    • Favicon of http://www.petabytes.org BlogIcon 김재호 at 2010.08.01 22:50 신고 [edit/del]

      음 글쎄요. 다른 블로그들에는 번역이 엉망이라고 많이 쓰여있던데 저는 그렇게 나쁘지는 않았습니다. 단지 용어의 선택이 아쉬운 부분들이 많기는 했는데, 주의 깊게 읽으면 괜찮아요^^;

  2. fullc0de at 2011.06.18 16:16 신고 [edit/del]

    저도 번역본 읽다가 원서 사본 1인 ㅋㅋ

    Reply

submit
소프트웨어 개발의 모든 것 - 9점
김익환.전규현 지음/페가수스
소프트웨어 개발의 모든 것이라 제목이 붙긴 했다만 물론 제목은 뻥이다.
어떻게 이 얇은 책이 소프트웨어 개발의 모든 것을 다루겠는가.

사실은 소프트웨어 공학의 모든 것이 책 내용과 조금 더 어울리긴 하지만 그렇게 이름지었으면 난 죽을 때까지 이 책을 안 읽었을 것이다.

나는 컴퓨터 과학의 대부분의 분야가 아주 재밌고 흥미롭지만 소프트웨어 공학 만큼은 질색이다.
그럼에도 불구하고 이 책은 꽤나 재밌게 잘 쓰여졌다. 내가 읽은 -몇 권 안되긴 하지만- 소프트웨어 공학 책 중에서는 가장 재밌는 책이었다. 스티브 맥코넬의 책보다도 재밌다! -물론 Code Complete는 빼고.

이 책은 개발자뿐만이 아니라 프로젝트 매니저, 기획자, 테스터, 그리고 심지어 세일즈맨까지도 읽어보면 도움이 되는 책이다.

얼마 전에 저자의 블로그에서 재밌는 포스팅을 읽었다.

하수
소스코드관리시스템을 거의 제대로 쓰지 못하는 경우, 오늘 고치고 있는 소스코드를 수동으로 하나씩 지워서 원래 버전을 만들어냅니다. 이러한 경우는 믿기 힘들겠지만 제가 컨설팅을 하면서 많은 회사들이 이렇게 하고 있다는 것을 접했습니다. 이렇게 원래 버전을 만들어서 Hotfix를 만들어서 내보낸 후에 다시 재작업을 합니다.

중수
이보다 조금더 나은 경우, 원래 고치고 있던 소스코드의 디렉토리를 임시로 백업 받아 놓고 소스코드관리시스템에 있는 어제 버전의 소스코드를 다시 Check out합니다. 이렇게 Check out한 소스코드를 가지고 Hotfix를 만들어서 내보내고 오늘 작업하던 백업을 받아 놓은 소스코드와 Merge tool을 이용해서 Merge를 한 후에 정기 업데이트 버전을 만들어서 내보내는 방법입니다. 아까보다는 조금 나아 졌지만, 여전히 수작업에 많이 의존을 하고 귀찮은 작업들을 해줘야 합니다.

고수
Subversion등의 소스코드 관리시스템을 제대로 사용한다면 이보다 좀더 손쉽습니다.
우선 어제 릴리즈를 한 소스코드의 Baseline(Tag)에서 Hotfix용 브랜치를 만듭니다. 기존에 개발하고 있던 디렉터리는 그대로 놔두고 새로운 디렉터리에 Hotfix를 Check out 받습니다. 보고된 버그를 수정하여 자동화된 빌드스크립트를 이용해서 Hotfix를 만들어내고 업데이트에 올립니다. 정상적으로 Hotfix가 배포된 것을 확인하고 Hotfix 브랜치는 Trunk로 Merge를 합니다. 이때 3Way Merge 툴을 이용하면 됩니다.

나는 처음 회사에 들어갔을 때는 하수였고 지금은 중수이다.
저자는 하수가 하는 짓을 믿기 힘든 짓이라 말하지만, 형상관리툴 사용을 잘 모르는 입장에서 보면 사실 그리 믿기 힘든 일도 아니다. 똥줄이 바짝 타는 상황이 생기면 믿기 힘든 무식한 일도 하게 되는 법이다. -핫픽스를 만든다는 것이 바로 그 똥줄이 타들어가는 상황이기도 하다.

시간이 좀 흘러서 고수가 하는 저 방법을 알게 되었음에도 불구하고 계속 중수의 방법을 고수해 온 것은 전적으로 나의 게으름 때문이었다. 저렇게 핫픽스를 만들어내야 하는 상황은 자주 오지 않기 때문에 나중에 배워야지하고는 계속 미루고 있었는데, 위 글을 읽으면서 몹시 부끄러움을 느꼈다.

그래서 잠시 시간을 내서 이것 저것 실험해보며 테스트를 해봤는데, 그동안 왜 그토록 게으름을 부렸을까 싶을 정도로 쉽게 해낼 수 있었다. -Subversion과 KDiff3의 개발자들 그리고 전규현씨께 감사한다. :-)

처음에는 정말 재미있게 읽었다.
하지만 폭포수 모델하고 SRS(요구사항 명세)에 대해서 설명하기 시작할 때는 읽다가 읽다가 결국 포기해버렸다.
저자가 지금 이 글을 보면 아니 그 중요한 부분을 그냥 넘어가면 어떻하나 하고 안쓰러워 할 것이 눈에 훤할 정도로 SRS의 중요성에 대해 입에 침이 닳도록 설명하지만, 그래도 정말 어쩔 수 없었다.

이 책의 내용에서 아쉬운 점 하나는 내가 가장 궁금해하는 내용이 빠졌다는 것이다.

나는 마이크로소프트 같은 커다랗고 프로세스가 잘 정립된 회사의 형상 관리툴의 소스트리를 보고 싶다.
그들이 모듈을 어떤 식으로 분리하고 어떤 구조로 트리를 구성하는지, 중복되는 코드들을 어떤 식으로 제거하고 또 공유하는지, 체크인 되는 코드의 코멘팅은 어떤 규칙으로 하는지 등이 너무 너무 궁금하다. 1시간 만이라도 들어가서 차근차근 살펴볼 수 있다면 내 실력은 훨씬 나아질 것이다.

이 책의 저자 중 김익환 선생님께서는 마이크로소프트에 버금가는 훌륭한 회사들에서 일했었는데, 그런 내용도 함께 알려주었더라면 나는 이 책에 주저 없이 별 5개를 줬을 것이다!

...물론 그래도 SRS는 싫다.

신고
  1. Favicon of http://dol9.tistory.com BlogIcon 오산돌구 at 2010.06.16 16:22 신고 [edit/del]

    하수인 저로서는 잠시 시간을내어 핫픽스관련 테스트를 하셨다는 글귀에
    ㅎㄷㄷ 부러움이...ㅎ
    무엇을 하든 게으름이 가장 큰 적인것같습니다.
    좋은글 잘 읽었습니다.

    Reply
  2. BlogIcon 김용혁 at 2014.04.19 14:11 신고 [edit/del]

    어제 전규현님 세미나 들었어요 책은 안 읽어봤지만 한번 읽어봐야겠네요 소프트웨어공학에 관심이 생겨서 ㅋㅋ

    Reply

submit
실용주의 프로그래머 - 9점
앤드류 헌트 외 지음, 김창준 외 옮김/인사이트
최근 2주 정도를 이 책을 읽으면서 잠이 들곤 했다.
이 책은 아주 재밌고 잘 쓰여진 책이다.

이 책의 역자는 애자일 프로그래밍 블로그를 운영하고 있으며 다독가로도 유명하다.
책에는 역주가 상당히 많은데, 대부분 관련 부분에 대해서 더 많은 정보를 얻을 수 있는 책들을 소개하는 내용이다. -그가 정말로 얼마나 많은 책들을 읽었는지 알 수 있다.


어떻게 커플링이 없이 레이어를 잘 설계하는가.
어떻게 모듈 혹은 함수간의 커플링을 줄일 수 있는가.
어떻게 중복된 코드를 제거할 수 있는가.

이것들은 내가 코딩하면서 항상 고민해 왔던 것들이고, 지금도 또한 고민하는 내용들이다.

책에서 저런 내용들을 잘 설명해주는데, 뭔가 깨달음을 얻으려고 하면 내용이 탁 끝나버리곤 해서 너무 아쉬웠다. 아마 아직 내 경험이 부족하기 때문일 것이다.
이 책의 저자들은 위의 내용들에 대한 해답을 이미 잘 알고 있는 것 같은데, 조금만 더 자세히 써주었더라면 별 5개를 줬을 것이다. 별 반개는 그래서 빼버렸다.

우연에 맡기는 프로그래밍이나 깨진 유리창의 법칙을 읽으면서는 아주 부끄러웠다.

깨진 유리창 하나를 방치해 두면, 그 지점을 중심으로 범죄가 확산되기 시작한다는 이론으로, 사소한 무질서를 방치하면 큰 문제로 이어질 가능성이 높다는 의미를 담고 있다.
-깨진 유리창 이론, 위키피디아에서 발췌

이는 일상 생활의 많은 곳에서 볼 수 있는데 프로그래밍 세계에서도 마찬가지이다.

어떤 문제를 해결하는데 있어서 해법을 두개 찾았다고 하자.
Plan A는 정석으로 해결하는 방법이고(조금 더 까다롭고 조금 더 오래걸린다. 하지만 완벽하다),
Plan B는 꼼수로 대충 메꾸는 방법이다.(금방 할 수는 있지만 부작용이 있다)

이제 선택의 순간에 놓여서, 기존 프로젝트의 코드들이 무결하고 아름답게 잘 짜여져 있었다면 Plan A를 선택하게 되지만, 반대의 경우라면 Plan B를 선택하게 된다는 것이다.(똑같은 사람일지라도. 그리고 시간이 있음에도 불구하고. 심지어는 어떤 부작용이 있을지 알고 있음에도 불구하고!)

우리는 그동안 얼마나 많은 플랜 B를 선택해왔던가.

좀 더 훌륭한 프로그래머가 되고 싶다면 이 책에서 가르쳐주는 실용주의 프로그래머의 많은 기법과 정신들을 마음 속 깊이 각인하고 습관화 해야만 할 것이다.
신고

submit
Programming The Microsoft Windows Driver Model 2nd Edition - 10점
Walter Oney 지음, 소현우 옮김/정보문화사

드라이버 공부를 하기 위해 이런 저런 책들을 찾아봤는데 이 책 만큼 좋은 책은 없는 것 같다.

이 책은 WDM 드라이버를 만들기 위해서 알아야 할 모든 내용을 다루고 있는데, 2004년도에 국내에 번역이 되었고 Windows XP 까지 다루고 있으며, 현재는 절판되었다.

비스타나 Windows 7이 나왔다고해서 이 책의 3판이 나올 것 같지는 않다.
이제는 새 책이 나오더라도 WDF에 대한 책이나 몇 권 더 나오고 말지 않을까. 그나마 드라이버에 관한 새 책이 나오더라도 어디에서도 번역하려하지 않을까봐 두렵다.

이 책은 전체적으로 사람들이 궁금해할만한 내용들에 대해서 잘 설명해주고 있으며, 그 중 5장의 Irp의 처리과정은 이 책의 꽃이라 할 수 있다. 나는 이 챕터를 5번도 넘게 읽은 것 같다.
맨 처음 읽을 때는 도대체 무슨 소리인지 알수가 없었지만 한번씩 다시 읽을 때마다 점점 명확해져 가는 것을 느낀다.

책의 내용 중 설명이 부족하거나 잘 이해가 가지 않는 내용이 있으면 ReactOS의 코드를 함께 살펴보고는 하는데, 이는 아주 많은 도움이 된다.
물론 ReactOS의 구현이 윈도우즈의 구현과 완전히 같을 것이라 믿어서는 안되지만 참고용으로 보기에는 아주 훌륭하다.
ctags 같은 도구를 통해 전체 코드를 태깅 해놓고 필요할 때 빠르게 찾아갈 수 있도록 해두면 좋을 것이다.

재미있는 것은, ReactOS의 코드를 읽으면서 코드 작성자 중 눈에 익은 이름을 하나 발견했는데 바로 Windows Internals 5판의 공동저자로 참여한 Alex Ionescu 였다.

어느 날, 이런 ReactOS가 잘 돌아는갈까 갑자기 궁금해져서 이미지를 받아 설치해봤었는데, Windows 95보다도 못한 그 조잡함에 경악을 하며 동시에 마이크로소프트가 얼마나 대단한지 새삼 깨달았다.
ReactOS는 10년넘게 개발되면서 아직도 버전이 0.3인데, 얼른 얼른 발전해서 참고할 수 있는 코드들이 더 많아졌으면 좋겠다.

다음 글들은
osronline
osronline
과 msdn에서 찾은 윈도우즈의 Irp 처리 방식을 다루는 좋은 문서들이다.
이 책에서 이미 이 내용들을 다 설명하고 있지만, 함께 참고해서 읽다보면 이해를 도와줄 것이다.
신고
  1. at 2010.09.29 00:14 [edit/del]

    비밀댓글입니다

    Reply
  2. at 2011.01.07 12:14 [edit/del]

    비밀댓글입니다

    Reply
  3. at 2011.01.14 01:44 [edit/del]

    비밀댓글입니다

    Reply
  4. at 2012.08.27 20:27 [edit/del]

    비밀댓글입니다

    Reply

submit
WinDbg로 쉽게 배우는 Windows Debugging - 8점
김성현 외 지음/에이콘출판
회사에 처음 들어와서 윈도우즈 유저모드 애플리케이션들을 개발해온지 이제 3년이 조금 넘었다.
얼마전부터는 생전 처음으로 커널 레벨 코드를 작성하게 되었다.

3년이라는 시간은 길다면 길고 짧다면 짧은 시간이지만, 그동안 사용자 레벨 시스템에 대한 많은 부분을 배울 수 있었는데, 커널 레벨은 또 하나의 새로운 세계를 보여주는 느낌이다.

커널 레벨 프로그래밍을 하면서 윈도우즈 시스템의 깊숙한 부분들에 대해서 잘 몰랐던 부분들이 조금씩 명확해지는 기분은 아주 달콤하지만, 잘 설계된 하이레벨 언어들과 라이브러리들을 사용하지 못하고 또 사용자 레벨에서처럼 편하게 디버깅을 할 수 없다는 것은 많은 한숨이 나오게 하는 점이었다.

나는 마치 다시 신입사원 때로 돌아간 것만 같은 느낌인데, 당시에는 Win32 API도 거의 아는 것이 없어서 김상형님의 winapi.co.kr에서 Win32 API와 Window Messages들을 모두 출력해서 출퇴근길마다 읽고, 집에 들어가면 Windows API 정복이나 Windows via c/c++(당시에는 4판이었던), 디버깅 애플리케이션과 같은 좋은 책들을 읽으면서 지식을 쌓을 수 있었다.

반면에 불행히도 윈도우즈 디바이스 드라이버 프로그래밍을 다루는 책들은 그다지 많지 않다. 아니 거의 없다. 책을 쓰기도 어렵거니와, 수요가 워낙 적어서 잘 팔리지도 않을 것이기 때문이다.
그래서 가장 많이 참조하게 되는 것은 결국 MSDN인데, 나는 아직 영어를 정확하고 빠르게 읽을만한 수준이 되지 못해서 이런 한글 책이나 번역서에 항상 감사한다.

블루스크린이 뜨고 덤프를 보고도 문제를 찾아내지 못하면서, 나는 디버깅을 조금 더 잘 할 수 있어야겠다는 생각을 갖게되었는데, 이 책이 내게 아주 많은 도움을 주었다.

특히 Bug Check 0xCE는 바로 그저께 닥친 문제였는데, 이 책을 차근차근 읽으면서 어렵지 않게 해결할 수 있었다. 책을 읽지 않고 코드만 바라봤다면 계속 흰머리만 하나씩 늘어갔을 것이다.

나는 이 책을 이틀동안 읽었는데, 얇은 책이라고는 하지만 기술서적이 이틀동안에 읽혀진다는 것은 그만큼 읽기 편하게 쓰여졌다는 뜻이기도 하다. 물론 예전에 존로빈스의 디버깅 애플리케이션을 읽으면서 배웠던 지식들도 도움이 많이 되었다.

이 책은 대체적으로 쉽게 잘 쓰여졌다만 설명이 부족한 부분들이 몇몇 있고, 덤프 코드와 설명을 빨리 매치 시키기가 어려운 단점이 있다. 만약 덤프 코드 앞에 라인번호을 붙여놓고 라인 번호와 함께 설명했다면 훨씬 읽기가 좋았을 것이다. b0f128a4 어쩌구 하는 어지러운 주소값을 라인번호도 없이 눈으로 찾아야하는 것은 읽는이로 하여금 쓸데없는 집중력을 소비하게 만든다.

어쨌거나 이 책을 다 읽고나서 바로 이틀 전인 그저께 모습보다 나는 훨씬 많이 발전했는데, 이 책의 가격이 좀 비싼감이 들긴 하지만(500페이지 분량에 35000원이다) 내가 얻은 결과에 비하면 충분한 값어치를 하고도 많이 남은 셈이다.

2년여 동안 고생해서 좋은 책을 써주고, 내게 많은 지식을 얻게해준 저자들에게 감사를 표한다.
신고

submit
Windows 시스템 실행파일의 구조와 원리 - 9점
이호동 지음/한빛미디어

이 책은 PE(Portable Executable)라고도 불리우는 윈도우즈 실행 파일의 내부 구조에 대해서 다룬다.
EXE, DLL, OCX, SYS, DRV 확장자들로 된 파일들이 모두 PE파일이다.

이런 PE 파일들이 실행되는 순간에 메모리에 어떻게 매핑되고 그 자료구조는 어떻게 구성되는지가 바로 이 책이 다루는 내용이다.

이 책을 읽기 전에 제프리리처의 Windows Via C/C++

13장 윈도우 메모리의 구조
14장 가상 메모리 살펴보기
17장 메모리 맵 파일
19장 DLL의 기본
20장 DLL의 고급 기법

위 장들을 읽어보는 것이 이 책을 이해하는데 많은 도움을 줄 것이다.

나는 처음에는 헥사코드를 하나씩 따라가면서 정독해서 읽었는데, 관련 구조체들이 다 비슷비슷 하게 구성되어 있어서 중간쯤 부터는 그런 부분들을 제껴가면서 조금 더 편하게 읽을 수 있었다.

개인적으로 DLL의 깊숙한 부분에 대해서 많은 것을 얻을 수 있어서 좋았고, 또 리소스에 대해서는 거의 아는 것이 없었는데, 이 부분을 많이 다루어 주어서 특히 좋았다.

이 책의 단점을 꼽자면, 그림이나 코드들이 보기에 너무 조잡하다는 것이다.
또한 느낌표나 말줄임표를 잔뜩 붙여놓은 문장들이 곳곳에서 보이는데, 이는 잘 정제되지 못한 글의 느낌을 받게 한다. 마치 인터넷에 써서 올렸던 글을 추려서 책으로 낸듯이 말이다.
저자는 프로그래머이지 글쟁이가 아니므로 이런 것들은 출판사에서 신경을 써준다면 좋을 것이다.

이 책과 비슷한 경우로 김상형의 Windows API 정복이라는 명서가 있는데, 나는 이 책을 국내에서 출판된 가장 잘 쓰여진 프로그래밍 책이라고 생각하지만, 책 안의 그림들은 저자의 깔끔한 글솜씨에 비해 조잡하게 느껴진다.
이 책은 가남사에서 출판되었다가 한빛미디어에서 개정되었는데, 그림들이나 표는 아마도 그대로 옮긴 것 같다.

저자가 그린 그림을 출판사에 제출하면 편집없이 그대로 실는 것 같은 느낌인데, 만약 정말 그러고 있다면 출판사에서 좀 더 다듬어서 주기를 바란다.
오라일리 같은 출판사에서 발행하는 책들은 그림이나 표가 참 보기 좋게 그려져있다. 그 책을 쓰는 저자들이 모두 미술에까지 일가견이 있어서 그런 것은 분명 아닐 것이다.

다음은 내가 출판사에 바라는 점들이다.
1. 모든 코드 조각은 회색 박스로 둘러싼다.
2. 코드 폰트는 고정폭 폰트를(기왕이면 프로그래머가 많이 쓰는) 사용한다.
3. 지저분한 그림이나 표는 예쁘게 다시 그린다.

쓰다보니 단점의 내용이 길어져 버렸는데, 이 것은 이 책만이 아니라 국내에서 출판되는 모든 프로그래밍 서적에 대한 내용이다.

이런 자잘한 단점을 제외하면 이 책은 읽을만한 가치가 있는 아주 훌륭한 책이다.
이런 지식을 얻기위해서, Matt Pietrek이 쓴 다음과 같은 글 들을 눈이 빠지게 읽어야 하는데
보기만해도 질려버린다.




이미 이 책의 저자가 이 문서들을 잘 읽어본 후에 우리들에게 한글로 쉽게 설명해주고 있으니 그저 고마울 뿐이다.

이 책이 개정판이 또 나올 것 같지는 않지만 혹시 개정된다면, 위에서 말한 부분들의 교정과 함께 64bit PE나 Managed PE에 대해서도 살짝 다루어주면 좋겠다.

신고

submit
More Joel on Software - 8점
조엘 스폴스키 지음, 이해일 옮김/지&선(지앤선)
조엘 온 소프트웨어의 후속판 책이다.

아마도 이 책 이름은 스캇마이어스의 책 제목을 따라 했음이 분명하다.

전체적인 평은 괜찮다이다.
예전에 조엘 온 소프트웨어를 읽었을 때도 꼭 읽어야만 하는 책이다라는 생각은 하지 않았었는데 이 책도 역시 마찬가지이다. 그렇지만 분명히 재미는 있는 책이고, 심심풀이용 정도로만 읽으면 좋다.

책의 주제가 프로그래밍에만 한정된 것은 아니라서 경제학이나 디자인, 사용성 등의 이야기들이 튀어나오면 좀 지루해지기도 하는데, 그것은 읽는 사람에 따라서 다를 수 있을 것 같다.

어떤 내용들은 정말 재밌었는데,
빌게이츠 검토회,
마법사 책 수업과 예일 대학교 이야기.
IE 호환성에서 나왔던 이상주의자와 실용주의자 이야기들.

위 이야기들은 읽는 내내 너무 즐거웠다.

조엘의 이름으로 나온 책 4권을 모두 읽었는데, 그 중에서 가장 재미있었던 책은 조엘이 엄선한 소프트웨어 블로그 베스트 29선이었다. 가장 재밌었던 책이 조엘의 책이 아니라니 아이러니한 일이다.
물론 최악은 똑똑하고 100배 일 잘하는 개발자 모시기. 이 책은 거의 조엘 온 소프트웨어에 있는 내용을 옮기다시피 했다.

이 책에서도 그렇지만 아주 오래전에 썼던 글들도 많이 있고, 기존 책에 나와 있는 내용들과 중복되는 부분들이 있다. 심지어는 이 책 내에서도 부분적으로지만 두번씩 나오는 이야기들이 있다.

고차함수로서 코드의 중복을 제거하는 기법을 깔끔하게 설명한 것 처럼, 책도 좀 DRY하게 나왔으면 하는 바램이다.

어쨌거나 그의 글은 정말 재미있다. 번역 또한 그의 유머를 잘 담아냈고 만족스럽다. 역자가 역주를 아주 많이 달아 두어서 눈에 거슬리기도 했었는데, 역자의 친절함으로 좋게 생각하면 그 또한 이 책의 장점이라고 할 수도 있겠다. 페이지수가 늘어서 책 값이 오르지만 않았다면 말이다. ;)

신고
  1. Favicon of http://eslife.tistory.com BlogIcon eslife at 2010.01.08 07:57 신고 [edit/del]

    트랙백 타고 왔습니다.
    저보다 훨씬 꼼꼼히 읽으신 거 같네요
    저는 너무 대충 읽었나 봐요.. 저도 많은 재호님 쓰신 글과 공감 가는 내용이 많네요.
    새해에도 좋은 책 많이 소개 부탁드립니다~

    Reply

submit
특이점이 온다 - 8점
레이 커즈와일 지음, 김명남.장시형 옮김, 진대제 감수/김영사

회사에 과학을 아주 좋아하는 사람에게서 이 책의 이야기를 처음 들었다.
앞으로 변할 미래 세계의 모습을 담은 책인데, 그리 멀지 않은 미래임에도 불구하고 엄청난 변화를 예언하고 있어서 나는 사이비같은 이야기라 생각하고 한귀로 흘려들었다.

그러던 어느날 진대제의 열정을 경영하라라는 책을 아주 재미있게 읽고는, 그가 쓴 다른 책이 없을까 하고 찾아봤는데 이 책이 떡하니 나오는 것이 아니겠는가.(진대제는 감수만했다.)

책의 부제처럼 특이점이란 기술이 인간을 초월하는 순간이다.
특이점이 오게되면 기술 발전의 속도가 기하급수적으로(우리가 감히 상상도 할 수 없을 만큼) 빨라지게 되고 지금과는 전혀 다른 세상으로 변하게 되는데, 이 책에서 저자는 그 시기를(컴퓨터가 튜링테스트를 통과하게되는) 2020년대 중반 내지 후반일 것이라고 예측하고 있다.

특이점이 오게되면, 컴퓨터가 인간보다 똑똑해지고 그 컴퓨터들이 기술을 기하급수적인 속도로 발전시켜서 우리가 상상하던 모든 것들과 상상하지 못했던 일들 조차 이루어 질 것이다.

물론 당연히 여기에는 많은 의심이 있을 수밖에 없다. 기술 발전 속도가 현재도 빠르다고는 하지만, 90년대 초반 우리들이 어렸을 적에 머리속에 그려왔던 2010년의 모습은 자동차가 스스로 운전하고 심지어는 하늘을 날라 다니는 수준이었다. 하지만 지금 2010년의 도로를 살펴보면 조금 더 고급 자동차들이 달리는 것 말고 큰 변화는 없다.
전철역에서 노란 종이표를 집어 넣고 다시 빼가는 90년대 사람들의 행동은 지금까지도 이어져 오고 있다.

그런데도 불구하고 앞으로 20년이 지나면, 컴퓨터가 튜링테스트를 통과하게 된다니(너무 똑똑해서 사람인지 컴퓨터인지 구별조차 할 수 없게되는) 많은 사람들이 -전문가들 조차도 의심하고 돌을 던질만 하다.

하지만 지은이는 선형적으로 계산하면 안되고, 지수적으로 계산해야 한다고 입이 닳도록 설명하는데(아래 그림 참조) 이 책에서 보여주는 지은이의 엄청난 지식이 뒷받침된 견해들과 함께 읽어나가다보면, 엇 정말 그렇게 되는것 아냐? 하는 생각이 드는 것도 사실이다.

수확 가속의 법칙

수확 가속의 법칙



빌게이츠같은 최고 수준의 미래 예언가들조차 지은이를 찾아가서 의견을 구하는 모습들을 보면 우리는 이 사람의 말들을 그냥 한귀로 흘려버리는 것이 너무 어리석은 행동은 아닐까 라는 생각도 한 번쯤 해볼만하다.

이런 특이점이 오기 위해서는 컴퓨터 하드웨어와 인공지능 분야뿐만이 아니라, 나노공학이나 유전공학 등 많은 과학 분야의 기술이 함께 발전해야 하는데, 그 중에서 컴퓨터과학 분야가 중요한 위치를 차지하고 있다는 것은 우리들에게 있어 굉장히 고무적인 일이다.

나는 특히 사람의 뇌를 역공학하는 부분이 아주 재밌었는데 지구상에서 가장 훌륭한 발명품이라고 여겨지던 뇌가, 병렬처리 능력을 빼고는 컴퓨터보다 나은 것이 별로 없다는 사실은 충격적이었다.
뇌에 대한 분석이 완료되면 컴퓨터가 서로간에 데이터를 복사하듯이 우리 뇌에 들어있는 지식들도 다른 사람에게 복사될 수 있을 것이다.

지은이는 이런 특이점이 오기를 갈망하며, 하루에 영양제 200알씩을 먹어가면서 담당의사까지 두고 건강을 관리하고 있는데, 나는 그런 현실이 별로 기대되지 않아서 그렇게까지 할 필요가 있을까 하는 생각이 든다.

어렸을 적 놀이터의 흙냄새와 잔디밭의 풀냄새는 나에게 아주 좋은 추억으로 남아있다.
나는 30살이 가까워진 지금도 종종 집근처에 있는 놀이터와 공원에 가서 옛날처럼 캐치볼을 하며 놀고는 하는데, 앞으로 우리의 자식들이 컴퓨터의 가상현실 속에서 스포츠나 연애같은 모든 놀이들을 해결할 것을 상상하면 끔찍하다.

신고
  1. Favicon of http://kaistizen.net BlogIcon 최재훈 at 2009.06.23 11:17 신고 [edit/del]

    어릴 땐 21가 되면 우주나 해저에서 살거란 이야기도 있었죠. 그렇지만 컴퓨터 같은 경우엔 이전에 생각 못했던만큼 발전했단 생각도 듭니다. 어떻게 될지 두고 봐야죠.

    Reply
  2. at 2009.06.24 15:38 [edit/del]

    비밀댓글입니다

    Reply
  3. Favicon of http://naggingmachine.tistory.com BlogIcon ng at 2009.07.05 20:42 신고 [edit/del]

    오. 이책 읽어보셨군요. 도서관에 들러서 이책저책 뒤져보는 중에 우연히 발견하게 되었는데 책이 두꺼워서 그렇지 재밌는 책이었던 기억만(?) 남았네요. ^^;;

    Reply

submit
정규 표현식 완전 해부와 실습 - 10점
제프리 프리들 지음, 서환수 옮김/한빛미디어

최근 한 달여 동안 침대에서 이 책과 함께 잠이들곤 했다.

이 책은 정규표현식을 다루는 최고의 명서이다.

인터넷을 둘러보다 보면 정규 표현식을 설명하는 많은 문서들에서 언제나 빠짐없이 등장하는 단 한권의 책이다.
-거의 모든 문서들에서 많은 정규식 책들 중 오직 이 책만을 추천하고 있을 정도로 이 책의 위상은 독보적이다.

이 책은 3판(2006)까지 나와있는데, 우리말로 되어있는 것은 2판(2002)이다.
이 책의 저자는 정규 표현식 분야의 권위자이며, 실제로 정규 표현식의 발전에 많은 기여를 했다.

다음은 이 책(2판)의 목차이다. -3판에는 PHP가 추가되어있다.

1장. 정규 표현식 소개
2장. 기초 예제
3장. 정규 표현식의 기능과 종류
4장. 정규 표현식 처리 원리
5장. 실용 정규 표현식 기법
6장. 효율적인 정규 표현식 사용
7장. 펄
8장. 자바
9장. 닷넷

정규식을 처음 접하는 사람이 이 책의 1장과 2장을 보고 나면,
"이제 나는 정규 표현식의 달인이야. 이제 이 책은 더 이상 안봐도 되겠어. 나머지는 실전으로 익히자." 라는 욕망에 사로잡히게 될지도 모른다.
나는 실제로 그랬는데, 아마 저자는 이미 그런 마음을 잘 알고 있었나보다.
부디 책을 끝까지 정독하라는 충고를 곳곳에서 해주지 않았더라면 나는 분명히 이 책을 다 읽지 않았을 것이다.

그럼 이렇게 배워둔 정규 표현식을 어디에 써먹을 것인가?

정규식을 써야하는 곳은 수도 없이 많다. 아는만큼 보인다는 말이있다.
심지어 이 책의 저자는 책의 오류를 찾기 위해 정규식을 사용하기도 했는데, 이것은 정규식을 모르는 사람들은 상상도 할 수 없는 기발한 생각이다.

이런 유틸리티 목적만으로도 우리의 삶을 충분히 편하게 해주지만,
우리는 프로그램에서도 멋진 식들을 활용해보길 원한다.

프로그래밍 코드에서 정규식을 사용해야하는 가장 잦은 부분, 그리고 중요한 부분은 아마도 입력값 검증일 것이다.

Writing Secure Code에서 마이클 하워드는 입력값 검증의 중요성을 무던히도 강조하는데,
그는 항상 모든 입력값을 정규식으로 완벽하게 체크하는 좋은 습관을 보여주었다.

이 책에서 저자는 정규식을 테스트 하기위해 perl 과 egrep을 많이 사용하는데,
내가 좋아하는 툴은 바로 vim이다.

나는 그동안 vim에서 정규식으로 매치를 해보고 치환을 할 때, 매치했던 표현식을 다시 재사용하는 방법을 몰라서 다시 힘들게 타이핑 하곤했는데 오늘 KLDP에서 좋은 답변을 얻었다.

vim에서 정규식으로 문자열을 치환하기 위해

/^some[regular]expression(.*)$ 와 같은 식을 만들어 먼저 원하는 문자열이 잘 매치되는지 확인을 해봅니다.

이제 :%s/the expression/replace string/g 를 통해 문자열을 바꾸고 싶은데,
위에서 썼던 식을 복사하고 붙여넣는 방법을 몰라서 다시 머리를 싸매며 타이핑하곤 합니다.

간단하게 할 수 있는 방법이 있습니까?


:%s//replace string/g


이 책은 번역이 아주 잘되어 있고 꽤나 신경을 써서 만들어진 흔적이 엿보인다.
단지 흠이 있다면, 몇몇 정규표현식에서의 오타와 예제 문자열들에서 있어야할 밑줄이 상당수 빠져있는 것인데, 내용을 이해하는데 있어서 그렇게 불편한 정도는 아니다.

이런 부분들의 교정과 함께 3판 또한 출간된다면 나는 아주 기쁠 것 같다.

신고
  1. at 2009.05.12 18:29 [edit/del]

    비밀댓글입니다

    Reply
  2. at 2009.12.22 04:46 [edit/del]

    비밀댓글입니다

    Reply

submit
제프리 리처의 Windows via C/C++ - 10점
제프리 리처.크리스토프 나자르 지음, 김명신 옮김/한빛미디어


제프리 리처의 Windows via C/C++ 번역서가 나왔다.

김상형의 윈도우즈 API 정복이나 윤성우의 TCP/IP는 모두가 잘 알고 있는 반면에,
이 책은 -그리고 제프리 리처를 모르고 있는 사람들이 상당히 많다.

이 책은 99년도에 4판이 발행된 이 후 2008년 12월에 5판이 발행되었다.
간단히 설명하면, 이 책은 Microsoft Windows 프로그래머를 위한 최고의 책이다.

나는 이 책의 베타리딩을 했었는데, 처음 해보는 베타리딩은 꽤 괜찮은 경험이었다.
재밌는 경험을 하게 해준 역자님께 감사한다.
게다가 이런 훌륭한 책에 내 이름이 들어갔다는 것은 정말 기쁜 일이다.

제프리 리처는『Code Complete』를 10년 동안 읽고 있지만, 아직도 그 책에서 배우고 있다고 말했습니다. 나는 이 책 또한 모든 윈도우 개발자가 10년 동안 곁에 두고 살아야만 한다고 생각합니다. 점점 .NET의 시대로 접어 들어가고 있긴 하지만, 그것이 중요한 것은 아닙니다. 제프리 리처가 서문에서 말했다시피 정말 중요한 것은 윈도우 시스템 자체를 이해하는 것입니다. 관리 코드보다는 네이티브 코드가 시스템을 이해하기에 훨씬 더 적합합니다. 게다가 네이티브 애플리케이션들은 앞으로도 오랜 시간 동안 건재할 것입니다. 이 책은 제프리 리처의 네이티브 애플리케이션 개발을 다루는 마지막 에디션입니다. 이것은 이 5판이야말로 모든 윈도우 개발자에게 있어 불후의 명작이 될 것이라는 걸 의미합니다.
- 김재호 / 이스트소프트 비즈하드팀

한빛미디어에서 책을 보내줘서 오늘 받아볼 수 있었는데 생각보다 두께가 얇았다.
이 책의 원서는 하드커버에 돼지인데, 일반적으로 번역서는 원서보다 약간 더 두껍기 때문에 조금 이상했다.
책의 높이가 다른 책들보다 약간 더 길고, 여백을 줄여서 페이지 수를 상당히 아낄 수 있었던 것 같다.
어쨌거나 이 책의 두께가 원서의 부담스러운 두께보다 상당히 마음에 든다.

이 책의 정가는 42000원인데, 요즈음 오른 종이값과 다른 책들에 비하면 아주 싸게 책정되어 나왔다고 할 수 있다.
최근 나오는 신간 서적들, 800페이지 정도의 분량과 그저 그런 내용에도 40000 ~ 45000원 딱지를 달고 있는 여러 책들과 비교하면 말이다.

어째 쓴소리 하나 없이 칭찬만 하게 되는 것 같은데, 이 책은 충분히 그럴만한 가치가 있다.

오늘 강컴에 Windows API 정복을 저술한 김상형씨께서 이 책에 대한 서평을 남겨주셨는데 그 내용이 아주 재밌다.

 아직 읽어 보지 않았지만 감히 서평부터 쓴다. 왜냐하면 안 읽어 봐도 내용을 거의 다 알고 있으며 저자의 이름만으로도 품질을 능히 짐작할 수 있기 때문이다. 대부분 알고 있겠지만 이 책의 전판은 Programming Application for Microsoft WIndows이며 그야말로 전설같은 책이다. 한때 대림 출판사에서 황기태님에 의해 번역되었지만 지금은 완전히 절판되어 서점에서는 구할 방법이 없다. 하지만 아직까지 중고라도 좋으니 이 책을 구해 달라는 사람들이 얼마나 많은지 모른다. 강남 모 서점에서 재본된 책을 구할 수 있는데 그나마도 쉽게 구하기는 어렵다.
 
NT 4.0을 대상으로 하는 책이지만 지금 읽어도 실무에 적용하는데 큰 무리는 없다. 이 책을 읽어 보면 윈도우즈에 대한 저자의 내공에 감탄하게 되고 하나라도 더 상세하게 설명하기 위해 애쓰는 저자의 노력에 감동하게 된다. 멀티 스레드, 메모리, DLL, IPC 같은 고급 주제들을 아주 속속들이 정확하게 파헤쳐 놓았다. 예제들도 핵심의 정곡을 찌르는 주옥같은 명작들이다. 이 책을 읽으면 운영체제의 내부를 들여다 볼 수 있으며 여기 저기 숨어 있는 함정들도 잘 피해 다닐 수 있다.
 
이렇게 좋은 책을 구할 수 없어 못 읽는 사람들이 많고 또 시간이 많이 흐른만큼 아무래도 최신 운영체제에 대한 내용이 없어 아쉬웠었다. 그렇다고 원서를 구해 읽기는 사실 부담스럽다. 이런 차에 제프리 리처의 최신판이 번역되어 나왔으니 그 반가움을 어떻게 표현해야 할지 모르겠다. 나는 이 책을 열번 넘게 읽었는데 새로 출판된 책도 또 그만큼 읽고 싶다. 분명히 다 읽었는데도 새로 읽을 때마다 새로운 고급 기법들을 터득하게 된다.
 
이상의 서평은 사실 전편에 대한 평가이다. 새로 번역된 책은 아직 보지 못했으니 번역의 질이나 편집 상태같은 것은 평할 수 없다. 또 목차상으로 볼 때 비스타나 64비트에 대한 내용이 보이지 않아 조금 아쉽기도 하다. 조만간 이 책을 읽어 본 후 정확한 서평을 다시 올릴 것이되 아직 이 책을 모르는 사람들은 일단은 읽어 보기를 권한다.


 
이 책이 얼마나 훌륭한 책인지 알 수 있을 것이다.

나는 서평의 첫 머리에, 내용을 이미 거의 다 알고 있다고 자신있게 말하는데서 한 번 놀랐고, 말미에 이 책을 10번 넘게 읽었다는 부분에서 다시 놀랐는데, 저런 실력과 자신감을 갖게되려면 그 정도는 공부 해야 하는구나 하고 느꼈다.

자, 우리도 10번씩 읽어봅시다^^
신고
  1. Favicon of http://oseb.textcube.com BlogIcon oseb at 2008.12.18 15:48 신고 [edit/del]

    마소 사이트에 광고된 책이군요.

    오 맙소사! 4만원이 넘어갑니까? 요즘 win32 api 기초 볼려고 Windows Applications for examples 구해 놓았는데 저 책도 예제 중심인가 보군요.

    Reply
  2. Favicon of http://eslife.tistory.com BlogIcon eslife at 2008.12.23 12:53 신고 [edit/del]

    오늘 책을 받았는데 책 추천글에 있는 그 '분' 이시네요
    책 느낌이 아주 좋습니다. 추운 겨울에 열이 나게 해 줄 책일 듯 한데 벌써 부터 기대되네요

    Reply
  3. Favicon of http://archvista.net/ BlogIcon 아크몬드 at 2008.12.24 18:01 신고 [edit/del]

    오옷.. 저도 한 번 읽어 봐야 겠네요.

    Reply
  4. Favicon of http://hanb.co.kr BlogIcon 송성근 at 2009.01.07 14:12 신고 [edit/del]

    저는 본서를 기획한 한빛미디어 기획자입니다.
    먼저, 이렇게 블로그에 책을 소개해주셔서 감사합니다.
    다름이 아니라 포스팅하신 글을 보니 두 가지 사항을 궁금해하시는 것 같아서 이곳에 답변을 답니다.(^^)

    책 두께가 얇은 것은 여백을 줄인 편집에도 1차적인 원인이 있지만 또 하나, 얇은 종이를 사용한 것도 주요한 원인입니다. 보통 80g짜리 종이를 사용하는데 이 책은 70g을 사용했습니다. 책 두께를 줄이기 위해서 그런 것이고 아울러 비용절감의 효과도 있습니다.
    한편, 가격은 45,000원으로 잠정 책정했으나 비용상승으로 인한 부담을 전적으로 독자에게 지우는 것은 옳지 않다는 사장님의 의지가 있으셔서 42,000원으로 낮추었습니다.

    Reply
  5. 양재호 at 2009.10.08 10:53 신고 [edit/del]

    저는 Native Windows Programming 에 관한 지식이 없어서,

    읽으면서도 이게 뭔 뜻이지? 하고 좌절하곤 합니다.

    역시 닷넷(.Net) 같은 편한 프레임워크에 익숙해진 폐단이 아닐까 생각되네요. ㅠㅠ

    그나저나 이 책을 10번이나 읽는 다는 것은 어마어마한 내공의 소유자가 아닐까 생각합니다.

    어휴.. 한 챕터라도 제대로 읽을 수 있으면 좋겠는데 말이죠.

    Reply
  6. Favicon of http://wapi.springnote.com/pages/5625179 BlogIcon namo at 2011.01.20 08:39 신고 [edit/del]

    이 책 저도 좋아합니다... OS를 잘 알고 개발을 한다는 것은 연장 잘 아는 것을 넘어선 그 이하의 기초가 단단하다는 것을 의미하지 않을까 생각해봅니다.

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2011.01.20 10:25 신고 [edit/del]

      네. 정말 좋은 책이에요. 저는 필요할 때 마다 관련 챕터를 쭉 다시 읽어보고 있는데요, 김상형님이 말씀하신 것처럼 볼 때마다 새로운 것들을 배우네요. 정말 신기해요.

  7. 눈물나는 at 2011.08.11 14:51 신고 [edit/del]

    프로그래밍을 공부하고있는 대학생입니다.
    현재 제 수준이 More Effective 를 겨우 한번 정독한 정도의 수준인데,
    시작하기에 무리가 없는지 여쭤보고싶네요..

    염치 불구하고 답변 기다립니다 ㅠ_ㅠ

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2011.08.12 00:51 신고 [edit/del]

      More Effective C++는 이 책 하고는 거의 상관없는 내용이라 뭐라 말씀드리기가 그렇습니다. 언어 지식보다 윈도 플랫폼에 대한 이해가 더 중요합니다. 그런데 그런 것은 너무 신경쓰지 마시고 일단 그냥 도전 해보세요. 보다가 막히면 덮어놓고 다른 공부 좀 하면서 살다가 한참 후에 또 보면 이해가되고 그럴껍니다.

  8. 눈물나는 at 2011.08.12 10:45 신고 [edit/del]

    아... 그렇군요..
    멋모르고 어려운책들 사놓고 읽지못했던 기억이있어서
    두려움이 먼저 앞섰었나보네요ㅠ
    친절한 답장 감사합니다..

    제가 좋은 프로그래머가 되어 나중에 꼭, 감사인사드릴 날이 오길 바래요.
    주말엔 비가온다고 하니 날씨염두해두시고 주말보내세요.

    Reply
  9. aa at 2016.01.11 14:38 신고 [edit/del]

    서평 최고네요

    Reply

submit
리눅스*그냥 재미로 - 10점
리누스 토발즈 & 데이비드 다이아몬드 지음, 안진환 옮김/한겨레출판

나는 도서관에서 책을 고르는 시간을 매우 좋아한다.
우리 동네에 있는 도서관에서는 한번에 3권까지 책을 대여할 수 있다.
나는 보통 가볍게 읽을 수 있을 만한 책을 2권 고르고, 기술 서적을 1권 선택한다.

작년 봄에 도서관에서 책을 고르다가 이 책을 발견했다.
아주 낡은 책이었는데 그냥 제목에 끌려서 책을 꺼내서 훑어 봤다.
신기하게도 리누스 토발즈가 직접 쓴 책이었다.
정말 가볍게 읽을 생각으로 빌렸지만, 내용은 기대 이상이었다.

리누스처럼 무언가에 미쳐 있는 사람은 아름답다.
내가 내 자신에게 항상 가지고 있는 의문은 내가 정말 프로그래밍에 미쳐있는가였다.

고등학교 때 나는 책을 읽는 것에 미쳐있었다.
대학교 1학년 때 나는 스타크래프트와 당구에 미쳐있었다.
군대에 있는 동안은 축구에 빠져 잠자기 직전에도 축구하는 것을 생각하며 잠들었다.

복학하고 나서 어쩔 수 없이 프로그래밍을 시작하게 되었고, 나는 이미 과에서 훌륭하게 자리를 잡고 있던 내 친구들에게 지지않기 위해 억지로 프로그래밍을 공부했다.
그렇게 공부하다보니 참 재밌었다. 당구와 스타크래프트, 그리고 축구를 즐겼던 것 만큼 재밌었다. 다시 생각해도 정말 좋았던 행복한 시간들이었다.
프로그래밍에 대한 이야기만 나오면 오감이 꿈틀 거리는 것을 보면서 나는 아마도 지금 프로그래밍에 미쳐있다고 말할 수 있을 것 같다.

이 책을 읽으면서 리누스 토발즈에 열정에 감탄했다.

"그 해 여름 나는 단 두가지 일만 했다. '아무것도 하지 않는다.'와 '719페이지 분량의 '운영체제:디자인 및 실행'을 읽는다.' "

나는 항상 내가 열심히 공부했다고 자부 했지만, 리누스 토발즈에 비하면 내 열정은 너무나도 가벼웠다.

이 책을 읽으면서 많은 생각을 가졌었다.
삶에 있어서 가장 중요한 것은 무엇일까.
가족? 돈? 사랑?

바로 이 책의 제목처럼 just for fun 이다.
그냥 즐기자. 하루하루를.
신고
  1. sabaragi@empal.com at 2008.08.31 01:59 신고 [edit/del]

    나는 이미 과에서 훌륭하게 자리를 잡고 있던 내 친구들에게

    <-- 이거 나?? ㅋ

    Reply

submit
웹 사이트 최적화 기법 - 10점
스티브 사우더스 지음, 박경훈 옮김/ITC(아이티씨)


이 책의 원제는 High Performance Web Sites: Essential Knowledge for Frontend Engineers 이다.
번역서로 200여 페이지 밖에 안되는 작은 책이라 부담없이 읽기에도 아주 좋다.

이 책은 야후 엔지니어의 오랜 연구에 의한 10여가지의 수준 높은 팁들을 제공하는데, 책의 분량만 보고도 알 수 있지만, 근본적인 세세한 원리까지 하나하나 설명 해주지는 않는다.
이 책의 저자도 책의 초반부에 이야기 하듯이, HTTP The Definitive Guide를 읽어보는 것이 이 책의 팁들을 이해하는데에 많은 도움이 된다.

개인적으로 이런 좋은 팁을 제공하는 형식의 책들은 참 고맙다.
본인이 몇 년동안 연구한 노하우를 보는 사람 입장에서는 하루 내지 이틀만에 얻을 수 있으니 얼마나 고마운 일인가. - 물론 문제에 대해 실제로 많은 고민을 해본 것 보다는 못하겠지만.
이런 스타일의 다른 많은 책들이 돈벌이를 위해 제목과 목차만 그럴 듯하게 해서 부실한 내용으로 발행하는 반면에, 이 책에서 제공하는 팁들은 하나도 빠짐없이 쓸만하며, 저자의 정성이 녹아 들어가 있는 것을 느낄 수 있다.

내가 만일 야후 사장이었으면,
이런 빌어먹을 놈의 자식. 하라는 일은 안하고 쓸데없는 책 따위나 쓰고 말이야. 도대체 우리회사에서 몇 년동안 연구한 성과물을 왜 남 좋으라고 책으로 쓰고 지랄이야!?
라고 소리쳤을 지도 모르겠다.

뭐 어쨌든 책을 보는 우리 입장에서는 그저 고마운 일이다.

이 책의 번역자는 내 또래인데, 혹시나 번역이 부실하지 않을까 걱정했었는데 읽는 동안 불편함이 전혀 없을 정도로 번역 수준이 괜찮았다.

아... 빌어먹을. 영어 공부 해야겠다.
신고

submit
Writing Secure Code - 10점
Michael Howard 외 지음, 지정기 외 옮김/정보문화사

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

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

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

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

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

신고

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

신고
  1. 정진숙 at 2011.11.18 15:47 신고 [edit/del]

    태요의 책이좋다고 해서 구입할려다가 너무 오래된 책이라 어떻게 할까 고민하다 이 글을 읽게 되었어요...
    ASP를 배워보려고 하는 데요... 회사서버가 윈도 2006, asp, ms-sql을 쓰는데요... 어떤책이 좋을지 추천해주시겠어요?
    전 웹디자이너구요... 전혀 프로그램을 모릅니다... 초면에 부탁드려봅니다... ㅡ.ㅡ

    Reply

submit
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
좀더 나은 질문을 하기 위한 방법
에릭 레이몬드의 홈페이지



신고
  1. Favicon of http://bombfox.textcube.com BlogIcon bombfox at 2009.10.23 23:08 신고 [edit/del]

    전 읽어 볼려다 포기한책....ㅠㅠ

    Reply

submit
자바스크립트 완벽 가이드 - 전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    ( 위 마틴 파울러의 글을 번역 )
신고
  1. at 2008.06.18 21:17 [edit/del]

    비밀댓글입니다

    Reply
  2. H3TX at 2012.04.01 23:55 신고 [edit/del]

    신기하네요ㅋㅋ 재밌는거 잘보고 갑니다

    Reply

submit
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 더 많은 정보를 얻으려면


신고
  1. Favicon of http://nyolong.egloos.com/ BlogIcon 뇨릉 at 2010.08.11 20:14 신고 [edit/del]

    저도 이 책을 여러번 보고 있는데.. 읽을때마다 새로운 느낌입니다.
    저는 1판번역서를 힘들게 보고 2판을 보았는데 변역이 너무 좋았습니다.
    그리고 영어공부할겸 원서까지 사서 보고 있는 중입니다.

    Reply

submit


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

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

이 책은 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

신고

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


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

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

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

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

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

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

신고
  1. Favicon of http://pingen.myid.net/ BlogIcon myopenmaru at 2008.05.15 11:37 신고 [edit/del]

    음... 갑자기 이 과정 확 땡기는데요~~

    Reply
  2. Favicon of http://wearcom.tistory.com BlogIcon wearcom at 2009.01.13 08:46 신고 [edit/del]

    음. 저도 잘 쓰여진 책이라고 생각합니다. 6시간의 몰입이라~
    정말 푹 빠져서 읽으셨나보네요. 글 잘 읽었습니다.

    Reply
  3. Favicon of http://ponpen.textcube.com BlogIcon ponpen at 2009.07.09 23:45 신고 [edit/del]

    트랙백 감사합니다 ^_^

    Reply

submit