10 Jun
2010
Posted in: 코드
By    24 Comments

Visual C++ 파워풀 개발 테크닉


Visual C++ 파워풀 개발 테크닉
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaru, http://www.jiniya.net

 

생애 첫 책이 나왔습니다. 혼자 쓴 거는 아니구욤. 용브라더쓰(용현형, 용휘)와 같이 썼습니다. 그래서 다 썼지 아마 혼자 썼다면 포기했을 것 같네요. 어쨌든 그 책이 드디어 출간을 한다고 합니다. 참고로 책 표지는 제가 결정한 건 아닙니다. 책장에 빨간거 하나 채워두면 굉장히 자극적일 것 같군요. 전 xx 염색체를 가진 아름다운 지구 생명체가 책 표지를 장식하길 바랬는데… ㅎㅎ~ 444쪽이네요. 굳~ 아래 페이지에서 공구 한다고 합니다. 많이들 질러주세용. 목차가 궁금하신 분들은 이 파일 받으시면 됩니다. 출판하기전 속내용 pdf 파일입니다. 출판된 내용이랑 다소 다를 수 있습니다.

http://imaso.co.kr/?doc=v2/commerce/view.php&gid=239

책을 기획하시고 편집이 무엇인지를 제대로 보여주신 편집의 신, 전도영 기자님. 첨부터 끝까지 제일 고생한 용현형, 유학 준비하면서 바쁠텐데 꾸준히 글 쓴다고 고생한 용휘, 멋진 추천사를 써주신 병탁씨, 코드 버그 잡아준 일승이, 또 책이 나오기까지 힘써 주신 여러 관계자 분들에게 이 말을 전하고 싶네요. 고맙습니다. 정말 멋진 경험이었습니다.

아래는 온라인 서점에 올라온 링크입니당.
Yes24 => http://www.yes24.com/24/goods/3937763?scode=032&srank=1
알라딘 => http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=8901109107
강컴 => http://kangcom.com/sub/view.asp?sku=2010F1350789

[책 제목]
Visual C++ 파워풀 개발 테크닉

Effective Windows Programming

[책 정보]“Visual C++ MVP 3인의 실전 프로젝트 가이드”

윈도우 플랫폼과 비주얼 C++에 대한 심층적인 분석을 바탕으로, 초중급 C++ 개발자들이 더 완벽하고 효율적인 애플리케이션을 개발할 수 있는 방안을 제시한다.

권용휘·김용현·신영진 지음/ 웰북/ 444쪽/ 2만원

[책 소개]
『Visual C++ 파워풀 개발 테크닉』은 풍부한 개발 경험을 가진 비주얼 C++ MVP 3인의 지식과 노하우를 담은 윈도우 애플리케이션 개발 지침서로 초중급 개발자를 대상으로 한다.

‘Effective Windows Programming’이라는 부제에서 짐작할 수 있듯이, 윈도우 플랫폼과 비주얼 C++에 대한 심층적인 분석을 바탕으로 C++ 개발자들이 더 효율적이면서 안전한 윈도우 애플리케이션을 구현할 수 있도록 다양한 상황에서 고려해야 할 구체적인 노하우들을 제시한다.

중고급 개발자로 거듭나는 과정에서 불가피하게 겪어야 할 시행착오를 최대한 줄이는 데 중점을 둔 이 책은 기본적인 윈도우 프로그래밍 입문서를 보완할 수 있는 내용 가운데 직접적인 경험을 거쳐야만 얻을 수 있는 내용을 엄선해, 전체 6개 영역 52개의 이야기로 구성했다.

오해하기 쉬운 프로그래밍 관련 문법, 스펙이나 기능이 바뀐 윈도우 함수 정보, 프로그래머들의 잘못된 습관, 레퍼런스 학습 과정의 오해 등 개발자들이 한번쯤 맞닥뜨리게 될 여러 가지 프로그래밍 관련 이슈들을 이 책에서 만나볼 수 있다.

[책의 구성]
『Visual C++ 파워풀 개발 테크닉』은 총 6개의 영역으로 구성되어 있으며, 기본적인 윈도우 프로그래밍 입문서를 보완할 수 있는 내용 가운데 경험으로 얻을 수 있거나 경험을 통해야만 호기심이 생길 수 있는 내용을 주로 담았다.

Chapter 1. 윈도우 프로그래밍과 시스템 리소스

효율적인 윈도우 애플리케이션의 개발은 기본적으로 윈도우 시스템 리소스의 효율적인 이용을 전제로 하며 애플리케이션 성격에 따라 이 둘은 완전히 동일한 의미를 지니기도 한다.

윈도우 애플리케이션을 개발할 때 알아야 할 시스템 리소스의 기본적인 내용 중 메모리, 힙, 스택, 프로세스, 메니페스트 등에 대해 차례로 살펴보고 특히 주의해야 할 점이나 입문자들이 오해할 수 있는 부분들을 모아 설명한다.

Chapter 2. 윈도우 프로그래밍 메커니즘

윈도우는 버전이 올라갈수록 성능과 기능이 향상되면서 동시에 사용자 정보 보호를 위해 보안성을 강화하거나 반대로 사용성을 높이기 위해 보안 강도를 완화시키기도 한다.

이러한 정책 변경 속에서 자신이 만드는 애플리케이션에 도움이 될 수 있는 메커니즘적인 요소를 모아 소개한다.

DLL을 만들 때 지켜야 할 규칙과 같은 기본적인 것에서부터, 승인 받은 프로그램을 이용한 크래킹과 같이 경험을 통한 생각과 검색 끝에 정리할 수 있었던 자료까지 다양한 부분의 윈도우 프로그래밍 메커니즘을 살펴본다.

Chapter 3. 윈도우 프로그래밍 API와 라이브러리

윈도우 애플리케이션이 윈도우와 상호 소통하는 가장 기본적인 방법은 윈도우 API를 이용하는 것이다.

윈도우에는 수백 개의 API가 있고, 새로운 윈도우가 나올 때마다 많은 수의 API가 추가되며 이와 동시에 적지 않은 API가 없어지거나 그다지 사용되지 않기도 한다.

많은 윈도우 API 중 필자들이 사용하다가 시행착오를 겪은 몇 가지 API와 라이브러리를 선택해 관련된 지식과 경험을 소개한다.

Chapter 4. Visual C++의 기본 테크닉 활용

Visual C++는 C++ 언어를 사용하는 개발자들에게 있어서 매우 편리한 기능을 제공하면서 효율적인 디버깅 환경을 지원하는, 수년간의 개발자 지원 정책을 통해 만들어진 최고의 C++ 개발툴이다.

최신 버전의 Visual C++의 경우 상당히 많은 기능을 제공하고 있지만 애플리케이션 개발자들은 언어적인 부분과 윈도우 프로그래밍에 관련된 개발 지식을 선행 학습하므로 Visual C++ 자체에 대한 활용 학습의 우선순위는 상대적으로 낮은 것이 현실이다. 여기서는 Visual C++를 이용한 다양한 테크닉 중에서 특히 중요하다고 판단되는 부분을 엄선했으니, 충분히 이해하고 즐겁게 활용해 보자.

Chapter 5. C/C++ 구조의 올바른 이해와 활용

언어를 학습할 때 무작정 외워 보기도 하고 복잡한 부분은 나만의 방식으로 이해하기도 한다.

C 언어는 과연 어떻게 동작하고 포인터 선언을 쉽게 이해하는 방법은 무엇일까?

클래스는 내부적으로 어떻게 구조화되어 사용되고 있을까?

지금까지 무작정 외우고 이해했던 부분을 설명되는 내용과 견줘 보면서 자신의 프로그래밍 수준을 높여 보자.

Chapter 6. 시야를 넓힐 다양한 프로그래밍 이슈

마지막 순서로 필자들이 주고받았던 여러 가지 흥미로운 주제들 가운데 네 가지를 골라 소개한다.

주제에 따라서는 C++ 프로그래밍과 직접적인 연관성을 가지진 않지만, 윈도우 애플리케이션 개발이란 큰 틀에서 보면 네 가지 모두 독자들이 흥미를 느끼기에 충분한 이슈가 될 것이다.

[추천사]

typedef enum { POOR, GOOD, GREAT } BOOK_COST_TYPE;
typedef struct { char* title; short cost; } STR_BOOK;
char* MyChoice(STR_BOOK* thisBook){
     if ( !strcmp(thisBook->title, “C++”) ) {
           if ( thisBook->cost == GREAT ) {
                  if ( BuyBook(thisBook) ) {
                        if ( StudyHard(thisBook) ) return “SMART GUY!!”;
                        else return “GOOD BOY”;
                  }
                  else return “BAD”;
            }
      }
      return “FOOL!!”;
}
정희용 | 월간 마이크로소프트웨어 발행인

이 책은 기본에 충실하면서도 파워풀한 내용들로 채워져 실력 향상에 큰 도움을 줄 것으로 확신한다. C++ 초급자들에게는 다소 어려운 내용일 수 있지만 언젠가는 알고 있어야 하는 내용들인 터라 읽어보는 것만으로도 실력 향상에 도움이 될 것이다. 다년간 축적된 노하우를 바탕으로 늘 곁에 두고 참고할 만한 좋은 책을 만든 세 명의 저자에게 박수를 보낸다. 짝짝짝~
이광진 | SK커뮤니케이션즈 메신저개발팀 차장

각종 오류에 대한 상황 대처나 크리티컬한 원인 해결에 필요한 조언을 숙련된 경험자 입장에서 제공하는 이 책은 단순한 입문서나 원론적이며 기계적인 해설로 도배된 책들과 접근 방식 자체가 다르다. 즉, 사수에게나 배울 수 있는 여러 가지 지식을 내공 깊은 설명과 함께 전달해 독자들이 시스템 프로그래밍의 기반을 닦을 수 있도록 돕는다. 『Windows Internals』나 제프리 리처의 서적이 어려웠던 개발자, 그리고 시스템 프로그래밍을 사수 없이 연마하고 있는 독자들에게 이 책은 최고의 해답을 선물할 것이다.
강병탁 | 넥슨 보안팀 과장, Microsoft Developer Security MVP

동작의 원리를 모른 채 추상화 도구만 사용하는 개발자들은 곧 주어진 도구의 한계에 봉착하게 되고, 이것은 치명적인 약점이 되기 쉽다. 이런 점에서 윈도우 운영체제의 핵심을 제어할 수 있는 Visual C++는 개발자들이 반드시 알아야 하는 도구임이 분명하고, 이 책은 그런 개발자의 필요에 맞춰 개발 현장에서 발생하는 여러 문제들의 해결 방법과 그 배경 지식을 담았다. 입문서들이 주로 출간되는 시기에 개발자의 오랜 갈증을 확 풀어줄 만한 책이 나왔다.
우상정 | 삼성전자 DMC 연구소 SW 플랫폼팀 선임

이 책은 Visual C++를 이용해 윈도우 애플리케이션을 개발하는 초중급 프로그래머들에게 훌륭한 자극제다. 개발 과정에서 접하는 많은 궁금증과 문제점들이 각 장에서 속 시원히 설명되고 있으며 많은 시행착오를 통해 축적된 저자들의 노하우가 알기 쉽게 설명되고 있다. 특히, 윈도우 플랫폼 기반의 서버/클라이언트를 타깃으로 이뤄지는 온라인 게임 개발 프로젝트에서 이 책은 좋은 스터디 교재로 활용될 것이다.
최성기 | 엔씨소프트 개발7실 PLUG팀 과장


  • 트랙백 주소: http://www.jiniya.net/wp/archives/1404/trackback

관련 글

  • http://anyons.net/tc 어느용

    흠……….이책 어디서 살수 있나요…..
    아니면 언제쯤 살수 있나요…..ㅎㅎ

  • http://khmirage.tistory.com 환상경

    책 출간 축하드립니다 ^^

  • codewiz

    어느용// imaso 링크에서 구매하실 수 있습니다. 다음 주 쯤에 나온다는 것 같네요.
    환상경// 고맙습니다.

  • http://archvista.net/ 아크몬드

    축하합니다!!!

  • http://adept.egloos.com adept

    와우.. 제가 좋아하는 마소 쓰는 사람중에서 ㅎ
    windows31님에 이어서 영진님까지 ㅎㅎ
    바로 지르겠습니다 ^^ㅋㅋㅋ

  • http://adept.egloos.com adept

    이거 글 쓰기 수정이안되나요 ㅜㅜㅋ
    계속 이어서, 해킹/보안/프로그래밍 관련된거 계속 써주세요ㅋ
    (책값도 싸고 좋네요 ㅎㅎ… 근데 page수가 444라 ㄷㄷㄷ)

  • http://iam-hs.com HS

    오옷~~ +_+ 드디어 나왔나보군요~~ㅋㅋ
    질러야겠네용~~ ㅎㅎㅎ
    수고하셨구요~~ 출간 축하드립니다~~ : )

  • http://www.window31.com window31

    영진사마 축하해용~ ㅎㅎ 그동안 마음고생 심하게 하셨습니다 ㅎㅎ

  • http://sneeki.tistory.com sneeki

    구매했습니다. ^^

  • http://adept.egloos.com adept

    책이 인기가 아주 좋은가보네요..
    마소에서 메일온것이 예약판매시 너무많은 신청이 들어와서 배송이 지연되고있다는..
    축하드려여 ㅋㅋ (책아 빨리와라 ㄷㄷㄷ)

  • codewiz

    아크몬드, HS, window31, sneeki, adept // 감사합니당. ^^;;

  • 김현민

    오 영진… 책 냈구낭…ㅎㅎ

    책사서 찾아가면 싸인 해주남?? ㅋㅋㅋ

    난 씨더블뿔라스 개발 손 땐지 3년이 넘었네…

    내가 웹개발 하게 될거라곤 상상도 못했는데..ㅋㅋㅋ 분당에 놀러올 일 있으면 연락 하삼..ㅋㅋ

  • codewiz

    김현민// 현민 잘사낭? 싸인은 무쉰. ㅋ~ 접때 선화한테 NHN 다닌다는 소식은 들었는뎅… 시간나면 함보장…

  • 이재성

    책 내용중에 질문이 있습니다.
    21페이지 내용인데요,

    우선 메모리의 상태가
    0x10000 ~ 0x12000 : MEM_RESERVE 1번 영역
    0x12000 ~ 0x13000 : MEM_COMMIT 2번 영역
    0x13000 ~ 0x17000 : MEM_RESERVE 3번 영역
    0x17000 ~ 0x18000 : MEM_COMMIT 4번 영역
    0x18000 ~ 0x20000 : MEM_RESERVE 5번 영역

    VirtualFree(0x12000, 0x5000, MEM_DECOMMIT);
    함수를 호출하였을 경우 2, 4번 페이지를 모두 예약 상태로 만든다고 하셨습니다.

    그런데 0x12000 부터 사이즈가 0x5000 까지이면 0x16FFF 까지가 아닌지요..

    4번 영역은 그대로 할당 상태인 것 같은데 제가 잘못 이해하고 있는 것인가요..?
    베이스가 0x12000에서 사이즈 0x1을 할당하면 주소가 0x12000인 1바이트가 할당되는 것이 아닌지 궁금합니다.
    베이스 0x12000에서 0x1을 할당했는데 0x12000 ~ 0x12001이 할당되면 2바이트 할당된 것이니까 제 생각엔 베이스 + 사이즈 – 1 을 해 줘야 할 것 같아서 질문 올립니다.
    (아직 실험을 해 보지 않았는데 실험 해 보고 결과를 나중에 올리겠습니다…. 만 프로그래밍 실력이 얼마 되지 않아 언제가 될지 기약하기가 힘들 것 같습니다. ㅠㅠ)

    혹시 아시는 내용이면 답변 부탁드려요.

    ps. 책 내용 Very Good 입니다 ^^
    ps2. 만약 다른 곳에 질문 가능한 게시판이 있다면 알려주시면 감사하겠습니다.

  • codewiz

    이재성 // 지적하신 내용이 맞습니다. 제가 실수를 한 부분이네요. 그 부분 외에도 다시 살펴보던 중 그림이 잘못 그려진 내용이 있었습니다. 해당 부분에 대한 내용을 아래 페이지에 설명을 달아 두었습니다. 참고하시면 도움이 될 것 같습니다.

    http://jiniya.net/wp/archives/3577

    질문은 지금처럼 댓글로 해주셔도 되고, http://www.jiniya.net/zb/bbs/zboard.php?id=imaso 이곳 게시판에 올려주셔도 되고, 메일로(codewiz@gmail.com) 주셔도 됩니다.

    감사합니다.

  • 이재성

    답변 감사합니다.

    앞으로도 종종 궁금한 점이 있으면 질문 올리겠습니다 ^^

  • 이재성

    혹시 질문 답변 게시판 말고 정보 공유 게시판도 있나요??
    제가 게시판 이외엔 익숙하지 않아서 정보를 검색하기가 힘드네요 ㅠ_ㅠ
    알려주시면 감사하겠습니다.

  • codewiz

    이재성 // 죄송합니다. 책과 관련된 내용에 대해서만 따로 정보를 공유하는 게시판은 현재 준비된 곳이 없습니다. 이 블로그에서 해당 책과 관련된 정보는 아래 페이지를 보시면 지속적으로 관련 내용을 보실 수 있습니다.

    http://jiniya.net/wp/archives/tag/%ed%8c%8c%ec%9b%8c%ed%92%80

  • http://weyume@naver.com weyume

    와 오늘 처음들어왓는데 대단하시네요!
    책을 사서 꼭봐봐야겠습니다.

  • http://無 craw1019

    C++ 스터디 중인데 도움이 많이 될거라 확신합니다. ^^

  • codewiz

    craw1019 // 도움이 되셨으면 좋겠네욤. ㅎㅎ^^;;

  • promm

    책을 구매하려고 했는데 절판 된거 같네요.. 어디서 구입할 수 있는지요???

  • codewiz

    promm // 가까운 도서관을 한 번 찾아보시기를 권해 드리고 싶군요. ㅎ~

  • 견우

    늦게나마 추카추카