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년여 동안 고생해서 좋은 책을 써주고, 내게 많은 지식을 얻게해준 저자들에게 감사를 표한다.
트랙백 주소 :: http://www.crazytazo.com/118/trackback/
옵션
댓글 달기
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에 대해서도 살짝 다루어주면 좋겠다.

트랙백 주소 :: http://www.crazytazo.com/117/trackback/
옵션
댓글 달기
삼성을 생각한다 - 8점
김용철 지음/사회평론

원래 이런 종류의 책들은 집근처 도서관에 신청한 뒤에 빌려서 보는 편인데, 다른 블로그들에 쓰여진 리뷰들을 읽다보니 너무 재밌을 것 같아서 참지 못하고 주문해버리고 말았다. 알라딘은 책을 주문하면 바로 다음날 배송이 되는 점이 아주 마음에 든다.

나는 평소에 정치와 경제에 전혀 관심이 없고 기반지식 또한 없어서 책을 읽는데 애를 먹은 부분들이 많다. 예를 들어 신정아, 한나라당 차떼기. 뭐 이런 말들이 나올 때마다 예전에 한번쯤 들어본 것은 같은데, 당최 무슨 일이었는지 하나도 모르겠는 것이다. 이런 궁금증들은 위키피디아에서 풀 수 있었다. 그 곳에서는 원하는 모든 정보를 얻을 수 있다. 나는 위키피디아를 정말 너무너무 좋아한다.
이미 정치, 경제에 관심을 많이 가지고 있었다면 당시 사건들을 떠올려 보면서 이 책을 더 재밌게 읽을 수 있을 것이다.

이 책은 삼성의 비리들을 고발하는 내용으로 이루어져있고, 삼성의 장점에 대해서는 단 한마디도 없다.
책이 상당히 두꺼워서 읽는데 애를 먹었는데, 했던 얘기 또 하고 또 하는 부분이 많았다.
처음에는 충격적인 내용들에 푹 빠져서 미친듯이 재밌게 읽다가, 2/3 이상 읽다보니 점점 무디어져서 집중력이 떨어져버렸다.

이 책에서 다루는 주인공은 이건희, 이학수 그리고 김인주라고 할 수 있는데, 실제로 그들의 얘기가 나올 때 가장 집중이되고 재미있다.


나는 재벌들의 생활과 생각은 일반적인 사람들과 어느 정도나 다를까 궁금했었다.
예전에 누군가가 정몽준씨에게 버스비가 얼만줄 아냐고 물어봤는데, 70원이라고 대답했다길래 경악을 한 적이 있었다.
당시에는 설마 싶었는데, 이 책을 읽고나니 그럴수도 있었겠구나 싶다.
이건희의 부인인 홍라희씨는 100만원 짜리 옷을 대체 어느 누가 사가겠냐라는 말을 했었는데, 우리의 생각과는 반대로, 그런 싸구려 옷은 아무도 안사간다라는 뜻으로 한 말이다.
씀씀이가 워낙 크기 때문에, 버스비 같은 아주 작은 돈의 단위에 대해서는 짐작 조차 못하는 것이다.

또한 이건희의 생일 파티와 그의 전세기 내부 광경에 대해 쓴 장에서는 그들이 일반인과(그리고 2류 부자들과도) 얼마나 다른 세상에 살고있는지를 잘 보여준다.


물론 돈을 많이 벌고 많이 쓰는 것은 좋은 일이다.
하지만 그들이 쓰는 모든 돈은 그들의 돈이 아니라 회사 돈인 것이 문제라고 김용철은 지적한다.
나는 책을 읽으면서 살짝 계산해봤는데 지금까지 삼성 제품을 산 돈 중 한 5만원 정도는 그들의 비자금으로 들어가서, 이건희가 생일날 마시는 1000만원짜리 와인의 한 모금 정도 기여했겠구나 싶었다.

이건희와, 이학수 그리고 김인주를 보면서 군대 시절 생각이 자꾸 떠올랐는데, 그것은 이 책에 나타난 삼성의 모습이 군대의 모습과 너무도 흡사했기 때문이다.
삼성공화국이라고 불리기도 하는 것은 이런 이유일 것이다.

이건희는 별 5개(원수)
이학수는 별 4개(대장)
김인주는 별 3개(중장)
김용철은 별 1개(준장)

아마 이 정도가 아니었을까?

이건희는 거의 회사에 출근하지 않는데, 출근한 날에는 그가 탄 엘레베이터가 중간에 멈추지 않도록 특별히 신경을 써야만 한다.
군대에서 사단장급을 맞이하게되면, 사병들은 길거리에 먼지하나 없이 청소하고 간부들은 뭐가 그리 분주한지 전화 통화를 하면서 정신나간 사람들처럼 뛰어다녔었는데 아마 그 광경하고 참 비슷했을 것이다. 머리 속에 그려지지 않는가?

나머지 일반 임원들은 영관급이다(대령, 중령, 소령)
예를 들어 예전에 진대제사장 같은 경우는 중령 정도나 되었을 것 같다.
윤종용 사장 정도나 특별히 2스타 정도의 장관급 대우를 받았을 것 같은데, 김용철이 그에 대해서는 나쁜 말이 없는 것으로 보아 깨끗하고 강직한 사람이었던 것 같다.

책 중에, 김용철이가 양심고백이후 이학수가 문자메세지를 보내왔는데, 김용철이 그조차 언론에 공개해버려서 이학수가 마음을 꽤나 상했을 것이라며 살짝 미안해 하는 내용이 있었는데, 무슨 내용인지 궁금해져서 찾아봤다.

"김 변호사 우리 서로 좋았을 때를 생각해봅시다. 나는 김 변호사와 이렇게 될 만한 문제가 없다고 생각합니다. 만나서 뭐든지 풀어보면 서로 유익할 것입니다. 긍정적인 판단을 기대합니다."

번역하면 이쯤 되겠다.

"이보게, 예전에 내가 당신을 얼마나 아꼈고, 또 날 인간적으로 잘 따르기도 했지 않는가. 돈은 원하는대로 줄테니 이쯤에서 입 다물고 끝내자. 부탁이다."

실제로 김용철의 아들이 결혼할 때 이건희와 이재용은 100만원씩 축의금을 낸 반면에 이학수는 500만원을 냈는데, 당시 둘의 관계를 짐작해볼 수 있는 대목이다.


위키피디아에 보면 책의 내용들이 좀 더 자세히 기록되어져 있다.



이건희를 생각하면서 김우중이라는 예전 대우 회장 생각이 떠올랐다.
세계는 넓고 할일은 많다 라는 책은 20년동안 읽히고 있는 그의 스테디셀러인데, 젊은이들에게 희망과 열정을 가져다주는 아주 훌륭한 책이었다. -내가 지금까지 읽은 책 중 가장 감동적이고 열정적인 자서전이었다.
지금은 잘 기억이 나지 않지만, 책 내용 중에 그는 자신이 죽고나면 젊은이들에게 깨끗한 기업가로 기억되고 싶다는 말을 특별히 많이 했었는데 안타깝게도 이미 그렇게 되기는 틀려버린 것 같다.
만일 그가 이것을 보게 된다면 그는 펑펑 눈물 흘리게 될지도 모르겠다.
그 당시 무슨 일이 있었고 어떤 상황이 그 멋진 남자를 이렇게 변하게 만들었는지는 잘 모르겠지만, 수 많은 젊은이들의 우상이었던 사람이 한 순간에 이렇게 될 수 있구나 하는 것을 배울 수 있었다.


이건희 역시 훌륭한 기업가라는 얘기를 듣기에는 너무 많이 와버린 것 같다. 이제부터 열심히 노력하더라도 그의 평판을 다시 좋게 돌리기는 힘들 것이다.

어쨌거나 이 책을 사서 아주 재밌게 읽기는 했다만, 이 책이 좋은 책이라는 것은 아니다. 그냥 재밌는 책일 뿐이다. 또한 나는 이 책에 나오는 이야기들을 다 믿지도 않는다. 이런 류의 책들은 과장이 섞이기 마련이다.

진대제는 똑같이 삼성 임원을 지내고 나와서 젊은이들에게 열정을 불러 일으키는 훌륭한 책을 쓰는데, 이 책은 우리들에게 에너지를 건네주지는 않는다. 그렇다고 우리나라 최고의 기업에게 채찍을 가하는 이 책이 전혀 가치가 없다고 할 수는 없다만, 나는 그래도 진대제의 책이 훨씬 긍정적이고 읽은만한 책이라고 생각한다.

삼성은 정말 대단히 큰 기업이며, 내가 좋아하는 기업이기도 하다.
그들은 남들을 따라잡는 것에 아주 익숙하다. 남들보다 늦게 시작해서 빠른 속도로 성장한 후 1등까지 따라잡는 것이 바로 삼성의 방식이다.
반면에 그들은 남들보다 먼저 혁신적인 제품을 내놓지는 못하는데, 바로 이렇게 군대처럼 돌아가는 그들의 조직문화 때문인 것은 아닌가하는 생각을 했다.

좋게 말하면 '일사불란하게 집중해서 움직이는 조직' 이지만,
나쁘게 말하면 '마누라와 자식만 빼고 다 바꿔야할 썩어빠진 조직' 이다.

  1. 믿기 힘든 이야기 - 삼성을 생각한다

    Tracked from 생각과 생각과 생각을 2010/02/17 09:37

    #1 한 가정집이라는 배경, 10명 정도의 출연자, 전혀 없는 특수효과, 80분의 Running Time 동안 지루하게대화만 나누는 영화 <The Man from Earth> 라는 영화를 보고 충격에 빠졌었습니다. 10년 마다 거주를 옮기는 남자의 이야기 입니다. 10년 동안 살던 집을 떠나면서 대부분의 짐은 버리거나 기증을 하고 최소한의 짐만 싣고 떠납니다. 이 남자가 매 10년을 주기로 거주를 옮겨야 하는 사연은 특이합니다. 무려 1만4천살이 넘..

  2. 책 광고에 동참합니다 - &lt;삼성을 생각한다&gt; 김용철 저 / 책은 읽혀질 의무가 있다!

    Tracked from 새우깡소년, Day of Blog 2010/02/17 09:39

    시대적 아픔도 있지만, 기업의 탄압에 힘들어 하는 한권의 책이 있습니다. 불과 몇마디, 몇글자를 통해서 사회에 진실을 말했던 한명의 "고백 성자"였던 한 사람. 그가 결국에는 책을 통해서 전국민에게 한 기업에 대해 실랄하게 말하고자 하는 것이 밝혀졌습니다. 누구라고 말할 수는 없지만 분명 어디선가는 이 책의 "세상을 향한 빛"을 차단하려 할 것입니다. 이제는 누구가 나서지 않는 일에 블로거 스스로, 자발적으로 도우려 합니다. 오늘 아침, 2010년..

  3. <범죄의 재구성>보다 더 재밌는 <삼성을 생각한다>

    Tracked from 가슴 뛰는 현장을 꿈꾸다 2010/02/21 18:51

    내 인생에서 내 생각을 뒤엎어버린 책이 몇 권 있다. 첫째로 초등학교 시절, 친구 집에서 봤던 포르노 책이다. 제목이 기억나지 않는 그 책에는 옷을 홀딱 벗은 여체의 사진이 있었다. 그날 친구가 동영상 교육까지 병행했던 터라 내 의식은 그날 재탄생했으리라. 두 번째는 리처드 도킨스의 <이기적 유전자>와 <만들어진 신>. 종교를 믿지 않는 내게, 참 많은 친구들이 나를 전도하려 따라다녔다. 심지어는 친구의 누나까지 나선 경우도 있었다(그 누나가 정말..

  4. 가슴 뛰는 현장 2010/02/21 18:56 답글수정삭제

    제 글에 트랙백 엮어주셔서 감사합니다. 이스트소프트 다니시나봐요? 알 시리즈 잘 쓰고 있습니다.^^ 글 잘 봤습니다. 저는 아무래도 기자를 하다보니, 우리 사회에 미치는 영향에 대해서 많이 생각을 하게 됩니다. 그렇게 생각하면 우리사회의 절대권력이 된 삼성은 이제 견제를 받아야 하지만 그렇지 못해서, 삼성과 우리 사회 모두 위험에 빠드리고 있다고 생각해요. 책에도 나와있듯 젊은이들에게 정의가 이기는 게 아니라, 이기는 게 정의라는 우리사회의 아픈 부분을 알릴 수 있다면, 충분히 의미가 있다고 생각하네요. 물론, 저도 삼성은 잘못한 부분을 털고, 다시한번 도약하길 바랍니다. 앞으로도 좋은 글 많이 기대하겠습니다.^^

  5. 세상끝에서 2010/03/01 17:00 답글수정삭제

    3년전쯤이던가...삼성의 두뇌에 해당하는 구조본부의 팀장으로 지냈던 한 변호사의 양심고백..그때의 충격은 나로 하여금 한나라의 1순위로 꼽히던 대기업의 실체에 가슴이 요동칠수 밖에 없었던거 같다.
    기업은 영리를 목적으로 하기 때문에 각종 비리와 사적인 욕심으로 운영 될 소지가 다분히 많을수 밖에 없는 곳일 것이다.
    아시아에서 맹주를 자처하는 나라중에 하나인 대한민국이라는 곳이 있다. 그리고 같은 나라안에 대한민국의 머리 위에 자리 잡고 있는 또 하나의 나라가 있다 바로 '삼성공화국' 세계 일류기업으로써 입지를 다져가고 그 위세 또한 그 어느 누구도 침범하지 못할 기업 아니 국가가 되어 버렸다. 한 나라가 어느 특정 기업에 의해 운영 될 정도라면 그 국가의 미래는 불을 보듯 뻔할수 밖에 없다.
    대한민국이라는 나라...내가 정말 자부심을 가지고 살아 갈만한 곳인가...곰곰히 다시 한번 생각해 보게 되지만 딱히 이거다 라는 답은 나오지 않음에 가슴이 먹먹해져 온다.
    책의 내용에 대한 내용은 굳이 열거하고 싶지 않다. 백번 듣는것 보다
    한번 읽어 보는게 훨씬 더 전달력이 뛰어날 거라 생각하기 때문이다.
    지금 이 사회를 살아가는 사람들의 화두중에 중심에 있는 민주주의 퇴보가 많이 제기 되고 있는데,이런 혼탁한 모습들이 어쩌면 우리나라의 후진적 모습을 대표해 주는 일등공신중에 하나가 아닐까 싶다.
    오늘따라 아침부터 하늘에 먹구름이 잔뜩 보이더니 비가 추적추적 내린다.각자가 자신의 일선에서 최선을 다해 살아가는 모습속에서 희망의 빛을 꿈꿀수 있는 대한민국은 언제 우리 앞에 모습을 보일지.....

  6. 신선 2010/03/10 17:24 답글수정삭제

    팔은 권력으로 굽네요.

트랙백 주소 :: http://www.crazytazo.com/116/trackback/
옵션
댓글 달기
능률적인 프로그래머 - 8점
닐 포드 지음/지&선(지앤선)

이 책은 아주 재미있고, 가볍게 읽을 수 있을만한 책이다.
프로그래머를 위한 책이지만 프로그래밍 기술에 대한 이야기는 없으며, 오직 어떻게 해야 작업능률을 올릴 수 있을지에 대해 초점이 맞추어져 있다.

능률적인 프로그래머란,
같은 작업에 대해서 다른 사람보다 더 쉽고 빠르게 할 수 있는 능력을 가진 프로그래머라고 할 수 있겠다.

똑같은 프로그램을 남보다 더 빨리 짤 수 있는 프로그래머 역시 능률적인 프로그래머라고 할 수 있지만, 이 책에서는 그런 프로그래머가 되는 방법을 다루지는 않는다.
그것보다는 '똑같은 코드를 어떻게 더 빨리 입력 할 수 있는가'와 같은 주제가 이 책에서 말하고자 하는 내용이다.

예를 들어, 마이크로소프트 워드 프로그램을 띄우는데 어떤 사람은 시작 프로그램에서 찾아서 실행시키고, 어떤 사람은 바탕화면에서 더블클릭해서 실행하고, 또 어떤 사람은 단축키로 등록해놓고 실행시킬수도 있을 것이다.

이 책에서는 마지막 사람을 능률적인 프로그래머라고 부르며, 능률적인 프로그래머가 되기 위한 여러 방법들, 그리고 그것을 도와주는 많은 애플리케이션들을 덤으로 배울 수 있다.

나는 이 책에서 가르쳐주는 많은 유용한 애플리케이션들의 웹사이트를 다 찾아가봤는데, 조금 불만이었던 것은 책에서 설명한 것만큼의 기대에 못미치는 조잡한 프로젝트들이 많았다는 것이다. 물론 Subversion이나 Vim같이 이미 널리 쓰이는 메이저 프로덕트들은 제외하고 말이다.
이 책은 원서가 2008년에 발행되었는데, 그 훨씬 이전부터 개발이 중단된 오픈소스들이 많이 소개되고 있고, 실제로 써먹을만한 애플리케이션은 거의 없었다.

애플리케이션은 하나도 못 건졌지만, 그래도 이 책에서 아주 중요한 것 하나를 건졌는데 그것은 능률적인(DRY한) 프로그래머가 되어야겠다는 마음가짐이다.

나는 지금까지 2년여 정도 vim 에디터를 써오고 있었는데, 가만 돌아보니 그동안 꽤 오랫동안 vim만 써왔음에도 불구하고, 제대로 쓸줄 아는 기술이 거의 없음을 깨닫고는 부끄러움을 느꼈다.

에디팅을 하다가 불편한 점이 생기더라도
'어딘가 쉬운 방법이 있긴 할텐데 나중에 찾아보지 뭐'
이런 썩은 마음가짐으로 여태까지 시간을 흘러보냈던 탓이다.

작년 12월 말에 이 책을 보면서, 2010년에는 vim의 달인이 되자는 생각을 가졌는데, 1월 한달 동안 조금씩 노력한 결과 2년 동안 할 수 있던 것 보다 더 많은 것을 할 수 있게 되었다.

책 내용 중에 이런 내용이 있었던 것 같다.
편집을 하다가 마우스에 손이 간다면, 그 작업을 취소하게 하고 단축키를 이용해서 똑같은 작업을 2회 반복해서 다시 하도록 한다.
이런 식으로 가르친다면 배우는 사람의 실력이 부쩍부쩍 좋아진다는 것이다.

하지만 우리는 지금 군대에서 고참에게 아래 한글을 배우는 중이 아니다. 회사에서 저런 방식으로 가르쳐주는 사람은 많지 않다. 오직 혼자서 머리속에 각인 시킨채 노력해야만 하는데, 이것이 참 어렵다.

하지만 아마도 이 책을 읽고 나면 다들 능률적인 프로그래머가 되기 위해 노력하고 싶어질 것이라 생각한다.
트랙백 주소 :: http://www.crazytazo.com/115/trackback/
옵션
댓글 달기
Jeffrey RichterWindows via C/C++ 예제 코드에는 공통 헤더파일이 있는데, 이 곳을 살펴보면 유용하게 사용할 수 있을만한 팁들이 많이 있다.

그 중 가장 쉽고 편하게 쓸 수 있는 기능 하나를 소개하고자 한다.

코드를 작성하다가, '이 부분은 나중에 고쳐야지' 하고 주석으로 마킹해 놓은 뒤에 나중에 잊어버리고 그대로 릴리즈했던 경험이 있는 사람이라면 이 매크로를 아주 좋아하게 될 것이다.

그의 예제코드 중 CmnHdr.h 라는 파일을 보면 다음과 같은 코드가 있다.

//// Pragma message helper macro ////


/* 
When the compiler sees a line like this:
   #pragma chMSG(Fix this later)

it outputs a line like this:

  c:\CD\CmnHdr.h(82):Fix this later

You can easily jump directly to this line and 
 examine the surrounding code.
*/

#define chSTR2(x) #x
#define chSTR(x)  chSTR2(x)
#define chMSG(desc) message(__FILE__ "(" chSTR(__LINE__) "):" #desc)


주석에 잘 쓰여 있듯이 Pragma 지시어를 이용해서 코드 어떤 부분에,
#pragma chMSG(나중에 고칠 것)
int c = a + b;
이런 식으로 주석 대신 적어두는 것이다.

이제 빌드를 하게 되면, Output 창에 이 메세지가 나타나게 되므로 실수를 줄일수 있다.
또한 에러나 경고 메세지와 같이, 더블 클릭 하게되면 해당라인으로 바로 이동하게 된다. 이것은 pragma message의 기능이 아니라, Jeffry가 매크로에 파일과 라인수를 Output창이 알아볼 수 있는 형태로 잘 정의해두었기 때문이다.

하지만 그럼에도 불구하고, 빌드 되는 동안 다른 경고들이 화면 가득 나와서 아예 경고 메세지를 쳐다보지 않는 사람들에게는 혜택이 없다.

이 지시어는 아주 유용하긴 하지만 나는 조금 더 쓰기 편하도록 다음과 같이 매크로로 고쳐서 사용하고 있다.
 
#define chSTR2(x) #x
#define chSTR(x)  chSTR2(x)

#define chMSG(desc) message(__FILE__ "(" chSTR(__LINE__) "): --------" #desc "--------")
#define chFixLater message(__FILE__ "(" chSTR(__LINE__) "): --------Fix this later--------")

#define FixLater \
    do { \
    __pragma(chFixLater) \
    __pragma (warning(push)) \
    __pragma (warning(disable:4127)) \
    } while(0) \
    __pragma (warning(pop))

#define MSG(desc) \
    do { \
    __pragma(chMSG(desc)) \
    __pragma (warning(push)) \
    __pragma (warning(disable:4127)) \
    } while(0) \
    __pragma (warning(pop))



우선은 코드 중간 중간에 #pragma를 쑤셔넣는 것이 보기가 싫었는데, 이 pragma를 매크로 안으로 넣어버렸다. MSVC에는 __pragma라는 키워드를 사용할 수 있는데, 매크로 안에서 pragma 지시어을 사용하기 위해 고안되었다.
만일 예전에 매크로를 만들다가 매크로 안에 #pragma 지시어까지 넣을 수 없을까 고민했던 적이 있던 사람에게는 아주 좋은 소식일 것이다.

또 하나는 코드 맨 끝에 세미콜론을 붙여야 컴파일 되도록 강제하였다. #pragma 지시어는 C문법이 아니므로 세미콜론을 써줄 필요가 없는데, 코드 중간 중간에 들어갈 매크로인만큼 세미콜론이 없으면 미관상에도 안좋고, 복사해서 붙여넣기 등을 할 때 들여쓰기가 깨져버리는 문제가 있다.

그래서 보통 매크로를 만들 때는 세미콜론을 꼭 붙여야 정상적으로 컴파일 되도록 작성하는 것이 좋은데, 위 매크로에서는 do while 얍삽이를 통해서 세미콜론을 강제하고 있다.
저 얍삽이는 Ace 프레임워크의 ACE_DEBUG 매크로를 살펴보다가 알게 된 것인데, 세상에는 참 얍삽하게 머리 좋은 사람들이 많구나 하는 생각을 했다.
농담이다.

do while 얍삽이를 쓰게되면, while(0) 때문에 경고가 발생하는데, 이 역시 __pragma로 감싸버려서 없앨 수 있다.

마지막으로 앞뒤로 ----를 붙여서 좀 더 눈에 띄기 쉽도록 하였다.

이제 다음과 같이 사용할 수 있다.

#pragma chMSG(블라블라블라)
int main()
{
    FixLater;
    int a;

    MSG(나중에 고칠 것);
    return 0;
}

  1. [C/C++]유용한 #pragma directive

    Tracked from 사진찍는 프로그래머 2010/01/14 23:26

    ※ 주의 : 아래에서 기술하는 내용은 Visual C++ 컴파일러에서만 확인된 내용입니다. 지난번 #define 팁 에 이어 이번에는 필수는 아니지만 사용할 경우 아주 편리한 #pragma 지시자를 간단하게 소개하려고 합니다. 1. 헤더 파일을 한번만 읽어 들이기 아마도 이 경우가 #pragma를 가장 널리 사용하게 된 이유 중에 하나라고 생각되는데요 저도 언제나 헤더 파일을 새로 코딩 할 때 이 한 줄을 먼저 적게 됩니다. (아주 짧고 멋집니다)..

  2. eslife 2010/01/14 23:28 답글수정삭제

    재호님 글 잘 봤습니다.
    저도 가끔씩 이용하는 방식인데.. 재호님처럼 매크로와 얍샵이 방법까지 활용할 생각은 못해 봤습니다. 좋은 방법 배우고 갑니다 ^^

  3. 김태정 2010/01/21 00:43 답글수정삭제

    오호~ 오랜만에 글?? ㅎㅎ

트랙백 주소 :: http://www.crazytazo.com/113/trackback/
옵션
댓글 달기