책표지를 클릭하시면 창을 닫습니다.


[도서내용] 
마이크로소프트 윈도우를 제대로 익히려면 가장 기본이 되는 하부구조부터 착실히 이해하는 것이 중요하다. 기본적인 내용을 이해하고 나면 운영체제를 구성하는 다른 특성들을 점진적으로 익혀나가는 것이 어렵지 않다. 그래서 이 책은 윈도우의 가장 기본이 되는 하부구조와 윈도우용 소프트웨어를 설계하고 구현할 때 반드시 알아야 하는 핵심 개념들에 중점을 두고 있다. 이 책은 독자에게 다양한 윈도우의 기능을 알려주고, C/C++ 언어를 통해 그러한 기능을 어떻게 사용할 수 있는지를 설명한다.

이 책의 특징과 장점
-. Windows XP, Windows Vista, Windows Server 2008에 대한 내용을 반영한 8년만의 개정판
-. 기반기술과 응용기술에 대한 균형감 있는 접근
-. 64비트 윈도우용 애플리케이션 개발을 위한 고려사항, 32비트/64비트 윈도우에서 동일하게 사용할 수 있는 단일 소스 코드 작성 지침과 노하우
-. 운영체제의 핵심 기능이라 할 수 있는 프로세스, 스레드, 동기화 오브젝트, 메모리 관리 등에 대한 업그레이드된 내용
-. 동작 원리를 상세히 기술한 DLL의 동작 방식, 인젝션, 구조적 예외 처리의 동작 방식, 예외 처리 방법
-. 다른 책에서는 찾아보기 힘든 보안 문자열 함수, 완전히 다시 작성된 스레드 풀 관련 함수, 윈도우 비스타에서 새롭게 등장한 오류 보고와 애플리케이션 복구 등의 최신 기술 수록

어떤 독자를 위한 책인가?
-. C/C++로 윈도우 애플리케이션을 개발하는 프로그래머
-. 윈도우의 하부구조에 대한 이해를 갖추고자 하는 프로그래머


[도서특징]
 

윈도우 프로그래머를 위한 최고의 책, 윈도우 시스템의 근원을 파헤친다.

Visual C++로 복잡한 애플리케이션을 개발하는 프로그래머라면 이 책의 조언이 매우 큰 도움이 될 것이다. 제프리 리처는 Windows XP, Windows Vista, Windows Server 2008에 대한 내용을 반영하여 8년만에 이 책을 개정하였다. 이 책에 포함된 깊이 있고 폭넓은 지침, 향상된 기법, 개선된 코드 예제는 당신을 윈도우 애플리케이션 개발 전문가로 이끌어줄 것이다.

[주요내용]
-. 32비트와 64비트 윈도우에서 동작하는 애플리케이션의 구조와 구현
-. 프로세스와 잡의 생성과 사용
-. 스레드의 생성, 관리, 동기화, 파괴
-. I/O 컴플리션 포트를 이용한 동기, 비동기 I/O의 수행
-. 가상 메모리, 메모리 맵 파일, 힙을 아우르는 다양한 메모리 관리
-. 스레드 스택의 물리적 저장소 확보 기법
-. 지연 로딩을 위한 DLL 생성, API 후킹, 프로세스 인젝션
-. 구조화된 예외 처리의 사용, 윈도우 에러 복구, 애플리케이션 재구동

“이 책은 창의력을 길러줄 수 있는 책도 아니고, 장인정신을 길러줄 수 있는 책은 더더욱 아니다. 이 책은 윈도우를 기반으로 프로그램을 개발하는 개발자들에게 소위 기본이 무엇인지를 가르쳐 주는 책이다. 유행하는 기술은 생명주기가 짧다. 작년에 나온 신기술이 지금은 더 이상 신기술이 아니다. 그래서 많은 개발자들은 끊임없이 공부해야 한다고 역설한다. 일면 맞는 말이다. 하지만 그 대상이 유행에 민감한 기술들을 신기루마냥 쫓아서 익히는 것이라면 방향을 잘못 설정한 것이다. 기반기술과 응용기술에 대한 균형감 있는 접근이 필요하다는 것이다. 이 책이 5번째 개정판이 나오는 동안 꾸준히 사랑받아온 이유는 바로 이러한 균형감에서 오는 것이 아닐까 생각한다. 태고적 윈도우로부터 전해 내려오는 변하지 않는 윈도우의 모습과 새로운 운영체제에 새롭게 추가된 기능들을 조화롭게 풀어내기 때문이다. 이 책의 이전 판인『Programming Application for Microsoft Windows』가 출간된 지 8년이 지났다. 그동안 윈도우 운영체제도 많이 발전하였으며, 새로운 기술도 많이 포함되었다. 이제 8년 전에 공부했던 내용을 업그레이드할 시점이 되었다.”


[추천평]
 
『제프리 리처의 Windows via C/C++』는 C/C++ 언어를 이용하여 마이크로소프트 윈도우용 애플리케이션을 개발하고자 하는 사람들에게는 바이블과도 같은 책이다. 새로운 언어와 새로운 기술을 빠르게 습득하고 활용하여 현장의 문제를 정확하고 신속하게 해결하는 것에 못지않게 기초와 기본 기술을 충실히 습득하는 것은 개발자로서 그 분야의 진정한 전문가로 거듭나기 위해 필수 불가결한 요소다. 특히 마이크로소프트의 윈도우 운영체제를 개발 플랫폼으로 삼고 있는 개발자라면 윈도우의 기본적인 특성과 운용 원리, 더불어 운영체제를 지배하고 있는 기본 철학을 이해하고 있어야 차별화된 개발을 할 수 있다. 윈도우는 C/C++ 언어에서 사용할 수 있는 형태로 API를 제공하고 있는데, 이는 윈도우의 상당 부분이 C/C++로 작성되었기 때문이기도 하다. C/C++를 이용하게 되면 윈도우가 제공하는 기능을 거의 무제한적으로 사용할 수 있으며, 더불어 윈도우의 내부 구조를 더 잘 이해할 수 있다. 따라서 C/C++를 이용하여 윈도우의 내부 구조를 조명하고 동작 원리를 이해하는 것은 가장 직접적이면서도 효과적인 학습 방법이라 할 수 있겠다. 이 책은 그런 의미에서 개발자들에게 필독을 권하고 싶은 책 중에 하나다. 단순한 활용 방법에만 치우치거나 혹은 너무 현실과 동떨어진 이론만을 나열한 책이 아니라, 서로 상충되는 두 가지 주제에 대해 균형을 유지하고 있는 것이 이 책의 최고의 장점이다. 또한 이 책의 이전 판이 1999년도에 출간되었고 윈도우 2000까지의 내용 위주였다면, 이번 5판에서는 윈도우 XP/2003/Vista/2008까지의 최신 내용을 포함하여 개정되었다. 특히 소프트웨어의 안정성을 향상시키려 포함한 보안 문자열 함수, 완전히 다시 작성된 스레드 풀 관련 함수, 윈도우 비스타에서 새롭게 등장한 오류 보고와 애플리케이션 복구 관련 부분은 다른 책에서는 찾아보기 힘든 내용이다. 또한 운영체제의 핵심 기능이라 할 수 있는 프로세스, 스레드, 동기화 오브젝트, 메모리 관리 부분에서도 그 내용이 상당히 많이 개선, 확충되었으며, DLL의 동작 방식과 인젝션에 대해서도 기본에 충실한 동작 원리를 상세히 기술하고 있다. 특히 윈도우 운영체제의 최대 강점이라고 볼 수 있는 구조적 예외 처리의 동작 방식과 예외 처리 방법 및 디버깅과 관련된 부분은 이 책의 또 다른 백미라 하겠다. 이러한 책을 오랜 기간 동안 개발 현장에서 다양한 경험을 취득하고, 마이크로소프트의 기술에 정통한 역자가 한글판으로 소개할 수 있게 된 것은 매우 다행스러운 일이라 생각한다. 원저의 분량이 상당하고 기술적인 난이도가 낮지 않음을 감안할 때 역자의 노고에 다시 한 번 감사의 뜻을 전하는 바이다.
- 김명호 박사 / 한국마이크로소프트 최고기술임원(NTONational Technology Officer)

윈도우 플랫폼 위에서 개발하는 개발자라면, 특히 시스템 프로그래밍에 관심이 있는 개발자라면 『Programming Applications for Windows』라는 제목의 책을 한 번쯤 들어보았을 겁니다. 이 책은『Programming Applications for Windows』의 최신 개정판으로, 윈도우 2000 이후 계속 발전해온 기술들에 대해 깊고 상세한 설명을 담고 있습니다. 필독서 중에서도 손꼽히는 이 책을 깊은 내공을 가진 분의 번역을 통해 접할 수 있다는 건 매우 유쾌한 일이 아닐 수 없습니다. 딱딱한 MSDN 문서만으로는 부족함을 느끼는 분, 이미 알고 있는 윈도우 플랫폼에 대한 경험적인 지식을 명확하게 정리할 필요를 느끼는 분, 윈도우 플랫폼을 처음 접하는 분 등 윈도우 플랫폼을 깊이 이해하고자 하는 분들에게 꼭 필요한 책이라고 생각합니다.

- 정재필 / Software Architect, nPluto Corporation 

운영체제나 Win32 API를 알지 못하더라도 소프트웨어를 만드는 데는 지장이 없습니다. 하지만 보다 성능 좋은 소프트웨어를 만들거나 상용제품을 만들어야 하는 경우에는 운영체제와 Win32 API를 잘 알고 있어야 합니다. 실제로 CString에 Append를 5,000번 정도 수행하는 코드와 미리 버퍼를 할당해 놓고 copy를 수행하는 코드 중 어느 것이 더 성능이 좋을까요? 산술계산 함수를 구현하면서 CPU가 하나라고 가정할 때 다수의 스레드를 사용하는 것이 성능 향상에 도움을 줄 수 있을까요? 이러한 질문에 대해 이 책을 통해 힙 메모리의 내부와 스레드 스케줄을 알게 된 개발자라면 답을 찾을 수 있을 것입니다. 많은 개발자들이 이 책을 통해 윈도우 구조를 이해하고 고성능의 소프트웨어를 작성하실 수 있을 것입니다.
- 이태화 / Support Engineer, 한국 마이크로소프트

프로그래밍을 처음 접했을 때가 생각이 납니다. 이제는 먼 추억이 되어버린 GW-BASIC을 배우고 있었죠. 그때는 언어에 대한 문법과 사용하는 함수들을 알고 있는 것이 프로그래밍의 전부라고 믿고 있었습니다. 사실 문법과 API는 프로그래밍의 기초일 뿐입니다. 좀 더 나은 프로그램을 위해서는 감추어져 있는 깊숙한 곳에서 무슨 일이 일어나는지를 알아야 합니다. 마이크로소프트 윈도우에서 돌아가는 프로그램을 개발하는 사람이라면 윈도우에서 무슨 일을 하고 있는지 좀 더 자세히 알아야 합니다. 윈도우 밑에 감추어진 블랙박스를 화이트박스로 바꿔주는 데 이 책이 큰 도움이 될 거라 믿습니다.
- 유민호 / 스마트카드 개발자, http://paromix.egloos.com

윈도우가 어떻게 돌아가는지를 알고 싶으시다면 이 책을 펼치세요. 윈도우 개발자의 로망을 이룰
수 있을 테니까요.
- 강효관

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

2부. 목표 달성
4장 프로세스
5장 잡
6장 스레드의 기본
7장 스레드 스케줄링, 우선순위, 그리고 선호도
8장 유저 모드에서의 스레드 동기화
9장 커널 오브젝트를 이용한 스레드 동기화
10장 동기 및 비동기 장치 I/O
11장 윈도우 스레드 풀
12장 파이버

3부. 메모리 관리
13장 윈도우 메모리의 구조
14장 가상 메모리 살펴보기
15장 애플리케이션에서 가상 메모리 사용 방법
16장 스레드 스택
17장 메모리 맵 파일
18장 힙

4부. 다이내믹 링크 라이브러리(DLL)
19장 DLL의 기본
20장 DLL의 고급 기법
21장 스레드 지역 저장소(TLS)
22장 DLL 인젝션과 API 후킹

5부. 구조적 예외 처리
23장 종료 처리기
24장 예외 처리기와 소프트웨어 예외
25장 처리되지 않은 예외, 벡터화된 예외 처리, 그리고 C++ 예외
26장 에러 보고와 애플리케이션 복구

부록 A 빌드 환경
부록 B 메시지 크래커, 차일드 컨트롤 매크로, 그리고 API 매크로
제프리 리처 (Jeffrey Richter)
제프리 리처는 더 좋은 소프트웨어, 더욱 빠른 소프트웨어를 개발하고자 하는 회사들을 위해 교육, 디버깅, 컨설팅을 수행하는 Wintellect(www.wintellect.com)의 공동 창업자이다. 그는『CLR via C#』(MS-Press, 2005)을 포함하여 다수의 책을 집필하였다. MSDN 매거진의 기고 편집자인 동시에 컬럼리스트이며 VSLive!, 마이크로소프트 TechEd, PDC 등 IT 분야 컨퍼런스의 유명 스피커이기도 하다. 제프리 리처는 AT&T, 드림웍스, 제너럴 일렉트로닉스, 휴렛 패커드, IBM, 인텔 등 다양한 회사에서 컨설팅을 수행했고 마이크로소프트의 테라 서버, Visual Studio, .NET 프레임워크, 오피스, 여러 버전의 윈도우 등에서 그가 개발한 코드가 사용되고 있다. 그가 개인적으로는 원하는 만큼 자주 비행을 하지는 못하지만 비행기와 헬리콥터 비행 자격증을 가지고 있다. 국제 마술사 협회의 회원이고 이따금 친구들에게 트럼프 마술을 보여주는 것을 즐긴다. 또 다른 취미로는 음악, 드럼 연주, 모형 철도 만들기, 보트 타기, 여행, 영화보기다. 그와 그의 가족은 워싱턴 커클런드에 살고 있다.

크리스토프 나자르 (Christophe Nasarre)
크리스토프 나자르는 소프트웨어 아키텍트로서 비즈니스 지능화 솔루션을 이용하여, 자신의 분야에서 더 나은 통찰력을 가지고 올바른 의사 결정과 기업의 업무 능력 향상을 도모하는 다국적 소프트웨어 회사의 비즈니스 오브젝트 개발을 이끌고 있다. 그는 Addison Wesley, A-Press, MS-Press, MSDN 매거진 등에서 기술 편집자로서 일해왔다.

[역자소개]
김명신
himskim@gmail.com
STI와 NHN을 거쳐 현재는 마이크로소프트에서 개발자 지원 업무를 수행하고 있다. 다년간 Microsoft C/C++과 C# 분야의 MVP로 활동하였으며, 『Effective C#: 강력한 C# 코드를 구현하는 개발지침 50가지』(한빛미디어, 2007)를 번역했다. 분산 컴퓨팅 아키텍처, 네트워킹, 프로그래밍 방법론, 소프트웨어 공학 등에 두루 관심이 많으며, 최근에는 닷넷 프레임워크의 내구 구조를 집중적으로 연구하고 있다.

안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,