이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

가격
24,000원
10 21,600
YES포인트?
240원 (1%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

책소개

목차

Chapter 01 사용자 인터페이스 설계의 초기 진출 1
컴퓨터를 끄기 위해 왜 시작 버튼을 눌러야만 하는가? 2
왜 윈도우에는 ‘전문가 모드’가 없는가? 3
모든 대화상자에서 기본 응답은 ‘취소’이다 3
최선의 설정은 느끼지는 못하지만 존재하고, 예상대로 작동하는 것이다 6
우리의 탁월한 지성미를 증명하기 위해 당신이 답변할 수 없는 질문을 할 것이다 6
설치할 때 더 새로운 운영체제 파일을 유지하겠느냐고 왜 묻지 않는가? 7
기능에 관한 생각 9
옵션 비활성화시키며, 언제 제거할 것인가? 11
버튼이나 메뉴에 ‘...’를 언제 넣을 것인가? 12
자동판매기를 위한 사용자 인터페이스 설계 13
실내 도어 락을 위한 사용자 인터페이스 설계 14
윈도우 UI에서의 마스카라의 발전 15

Chapter 02 윈도우 95에 대한 몇 가지 추억 17
내 시간대는 왜 세계 지도에 표시되지 않는가? 18
윈도우 95는 메모리가 1GB를 넘을 때 왜 부팅할 수 없었나? 19
윈도우 95에는 왜 곰, 토끼, 아기돼지라는 함수가 있나? 20
BOZOSLIVEHERE와 TABTHETEXTOUTFORWIMPS가 무엇인가? 21
윈도우 95 특수 판의 상자에는 무엇이 있었나? 23
윈도우는 모든 사람에게 로르샤흐 검사를 실시한다 23
무술 로그온 그림 24
왜 정말 큰 사전은 좋지 않은가 25
윈도우 95의 시작 소리에 관한 고찰 26
정확성을 고려하지 않는다면 칼럼을 쓰기가 훨씬 쉽다 27
시스템 속성 페이지는 왜 메모리 크기를 반올림하는가? 27
하드 디스크 표시등은 왜 몇 초마다 깜박이는가? 28
더 빠른 syscall 트랩에 대한 검토 29
1바이트는 1달러이다 30
제품 지원 요청은 판매비용을 가중시킨다 30
트윅 UI가 윈도우 CD에 왜 포함되지 않는가? 31
xcopy로는 윈도우를 설치할 수 없다는 사실을 밝히다 32
에그헤드 소프트웨어 상점 전체를 사다 33
윈도우 파워 토이의 역사 34
윈도우는 최종 빌드 번호를 어떻게 선택했는가? 36
서비스 팩에서는 왜 빌드 번호를 증가시키지 않는가? 38

Chapter 03 GetWindowText의 비밀 이력 39
윈도우는 텍스트를 어떻게 다루는가 40
GetWindowText 들어가기 40
이 규칙들이 마음에 들지 않을 때는 어떻게 할 것인가? 41
어떤 차이가 있는지 예를 들 수 있는가? 42
GetWindowText를 위한 규칙은 왜 이렇게 이상한가? 43

Chapter 04 작업 표시줄과 알림 영역 45
왜 어떤 사람들은 작업 표시줄을 ‘트레이’라고 부를까? 46
작업 표시줄은 왜 기본적으로 화면 아래쪽에 위치하는가? 47
작업 표시줄의 시계는 왜 초를 표시하지 않는가? 48
작업 표시줄은 왜 아날로그 시계를 표시하지 않는가? 49
작업 표시줄을 수직으로 고정시키면 왜 ‘시작’이 나타나지 않는가? 49
사용자가 ‘X’ 버튼을 클릭할 때 알림 아이콘은 왜 메시지를 받지 않는가? 50

Chapter 05 헷갈리는 인터페이스 문제 51
이 작은 중첩 아이콘들은 무엇인가? 52
로그 온할 때 원하지 않는 파일이나 폴더가 왜 열리는가? 52
파일 라벨 색상은 무엇을 의미하는가? 55
고급 옵션 대화상자는 왜 각 옵션에 ON 또는 OFF를 표시하는가? 56
Alt+Tab 목록에 나타나는 아이콘 순서는 어떻게 결정되는가? 56
폴더의 읽기전용 속성은 왜 그렇게 이상한가? 57
작업 표시줄의 빈 버튼을 클릭하면 왜 사라지는가? 58
모두 최소화와 바탕화면 보기의 차이점은 무엇인가? 59
메뉴의 굵은 활자는 무엇을 의미하는가? 60
개인화된 웹 사이트 아이콘들은 어디서 오는가? 60
작업 관리자의 탭과 버튼들은 어디로 갔나? 61
파일을 드래그하면 이동이 될까, 복사가 될까? 62
연결 폴더는 왜 자동으로 재생성되는가? 63
문서를 여러 개 선택하고 인쇄할 때 순서가 왜 바뀌는가? 64
레이몬드, 제품 지원으로 하루를 보내다 65
커넥터에 먼지 불기 65
윈도우에서 기가바이트는 정확히 얼마 만큼인가? 67
‘테스트/검토 목적으로만 사용’이라는 꼬리표를 왜 제거할 수 없는가? 67

Chapter 06 GlobalAlloc 함수의 이력 69
초창기 70
선택자 72
Win32로의 전이 73
구현에 대한 간단한 언급 74

Chapter 07 Windows 프로그래밍의 짤막한 주제들 77
임시용 프로그램 78
제목 아이콘을 위한 오른쪽 클릭 상황 메뉴 만들기 83
CreateMenu와 CreatePopupMenu의 차이점은 무엇인가? 85
창 관리자는 메뉴들을 언제 자동으로 제거하는가? 87
창이 화면에 보일 때만 그리기 87
창이 덮였는지 판단하기 91
바둑판식 배열 효과를 위한 비트맵 브러시 93
DC 브러시는 언제 쓸모가 있는가? 96
고정된 직사각형을 그리는 데 ExtTextOut 사용하기 98
고정된 직사각형을 그리는 데 StretchBlt 사용하기 100
흉측한 상자 없이 문자열 출력하기 101
세마포어는 소유자가 없다 109
자동 리셋 이벤트는 단지 어리석은 세마포어일 뿐이다 111

Chapter 08 창 관리 113
왜 가짜 WM_MOUSEMOVE 메시지를 받는가? 114
WM_MOUSEENTER 메시지 는 왜 없는가? 116
흰 플래시 117
빈 브러시의 용도는? 117
바탕화면 창은 무엇이 그렇게 특별한가? 118
창을 비활성화하고 활성화하는 올바른 순서 119
이전 창 위치를 복원할 때의 미묘함 120
UI 모달성과 코드 모달성 121
WM_QUIT 메시지와 모달성 124
모달 UI의 올바른 소유자 설정의 중요성 127
모달이 된 프로그램과 상호작용하기 130
시한 MessageBox - 간단한 버전 130
임시용 창 133
GWLP_USERDATA의 보너스 창 바이트들 134
시한 MessageBox - 더 나은 버전 134
시한 상황 메뉴 137
왜 창은 파괴된 후에 메시지를 받는가? 138

Chapter 09 하드웨어에 대한 회고담 139
하드웨어 과거 호환성 140
유령 CD-ROM 드라이브 141
마이크로소프트 회사 네트워크는 지옥보다 1.7배 나쁘다 141
제조업체가 그들 자신을 모욕할 때 143
WHQL 드라이버 인증 절차 속이기 143
6미터짜리 컴퓨터 144
죽음의 USB 카트 145
새 장치가 인식되었습니다 - 보잉 747 145
엄청나게 많은 오버클로킹이 있었다 146

Chapter 10 대화상자 관리자의 내부 처리 149
대화상자 프로시저에 대해 150
대화상자 템플릿의 발전 161
도대체 대화상자 템플릿은 왜 사용하는가? 195
대화상자는 어떻게 생성되는가 197
모달 대화상자 루프 205
중첩 대화상자와 DS_CONTROL 217
도대체 왜 대화상자 루프가 필요한가? 225
대화상자 편집기는 왜 컨트롤 ID를 100부터 할당하기 시작하는가? 226
DefDlgProc 안에서 어떤 일이 벌어지는가? 227
비활성화된 컨트롤로부터 초점을 이동시키지 말 것 229
IsDialogMessage 안에서 어떤 일이 벌어지는가? 230
메시지 상자의 X 버튼은 왜 비활성화되는가? 237

Chapter 11 일반적인 소프트웨어 문제 239
일광 절약 시간제는 왜 직관적이지 않은가 240
파일을 플로피에 복사할 때 타임스탬프가 왜 바뀌는가? 241
반환 주소를 믿지 말라 242
정렬 비교 함수 작성하기 243
다른 편에서 계약서를 읽을 수 있다 245
실용주의와 순수주의 사이의 전쟁 249
최적화는 종종 직관에 반한다 250
서버에서 페이징 = 죽음 253
재계산할 수 있는 것은 저장하지 말라 254
성능은 다른 구성요소의 희생으로 얻어진다 255
폴링에 대한 성능적 결과 257
메모리 누수를 식별하기 위한 가난한 사람의 방법 258
나쁜 정책을 가진 캐시는 메모리 누수의 또 다른 이름이다 259

Chapter 12 비주얼 C++ 컴파일러에 대한 집중 탐구 267
소멸자가 언제 실행되는지 아는가? 268
COM 개체의 레이아웃 272
조정자 썽크 275
__purecall은 무엇인가? 280

Chapter 13 과거 호환성 283
종종 애플리케이션은 단지 중단시키기를 원한다 284
프로그램이 문서화되지 않은 구조에 굴복할 때 284
문서화되지 않은 특성에 의존하는 애플리케이션들을 왜 단순히 차단하지 않는가? 286
16비트 DOS와 윈도우는 왜 아직도 존재하는가 288
NUL이나 CON과 같은 예약 파일명에 대한 정책은 무엇인가? 290
UNC 경로의 앞에 (가끔) 왜 드라이브 문자가 허용되는가? 292
게임 디어 헌터의 위력을 과소평가하지 말라 293
버그는 종종 게임의 후반까지 드러나지 않는다 293
셸 폴더 키에 관한 길고 슬픈 이야기 294
오류 코드 과거 호환성의 중요성 296
그럼요, 할 수 있어요 297
프로그램이 운영체제를 패치하고 손상시킬 때 299
호환성은 내부의 부수적인 작업에까지 제약을 가한다 300
윈도우는 왜 BIOS 시계를 지역 시간으로 유지하는가? 301
잘못된 버전 번호 확인 302
사람들이 IUnknown::QueryInterface를 망치는 방법 302
시스템이 결코 바뀌지 않을 것이라고 프로그램이 가정할 때 - 에피소드 1 304
시스템이 결코 바뀌지 않을 것이라고 프로그램이 가정할 때 - 에피소드 2 305
위장 디스플레이 제어판 306
위장 시각 스타일 307

Chapter 14 어원과 역사 309
WPARAM과 LPARAM의 W와 L은 무엇을 나타내는가? 310
윈도우 98에서 최대 모니터 개수는 왜 9개였는가? 310
레지스트리 파일은 왜 하이브라고 불리는가? 311
16비트 윈도우 내의 자원을 위한 메모리 관리 311
HINSTANCE와 HMODULE의 차이점은 무엇인가? 312
WinMain의 hPrevInstance 매개변수의 목적은 무엇인가? 314
GlobalWire 함수는 왜 그렇게 불리는가? 316
LocalAlloc과 GlobalAlloc의 차이점은 무엇인가? 316
GMEM_SHARE 플래그의 요점은 무엇인가? 318
LPARAM으로 캐스트하기 전에 왜 중복된 캐스트를 종종 보게 되는가? 319
왜 레지스트리 함수 이름은 가끔씩 Ex로 끝나는가? 320
SHGetMalloc, SHAlloc, CoGetMalloc, CoTaskMemAlloc 사이의 차이점은 무엇인가? 322
윈도우 오류 보고는 왜 닥터 왓슨이란 별명을 가지는가? 327
다이렉트엑스 4에 무슨 일이 있었나? 328
HANDLE 반환 값은 왜 그렇게 일관성이 없는가? 329
텍스트 파일은 왜 Ctrl+Z로 끝나는가? 331
행 종결자는 왜 CR+LF인가? 332
TEXT와 _TEXT와 _T, 그리고 UNICODE와 _UNICODE 333
대화상자는 왜 처음에 숨긴 채 만들어지는가? 333
내부를 바꾸면 아무도 눈치 채지 못한다 334
FlushInstructionCache가 아무 것도 하지 않는데 왜 호출해야 하는가? 335
InterlockedIncrement/Decrement는 왜 결과의 부호만 반환하는가? 336
WSASetLastError 함수는 왜 존재하는가? 337
윈도우에는 왜 방송 기반의 메커니즘이 있는가? 338
작업 표시줄이 만들어지기 전에는 창들이 어디로 최소화되었나? 339
바탕화면 창은 왜 작업 표시줄을 제외하도록 축소되지 않았는가? 340
Alt 키를 눌렀다 놓을 때 캐럿은 왜 깜박임을 멈추는가? 341
ES_OEMCONVERT 플래그는 무엇인가? 342
파일 시스템 터널링의 배경 역사 343
NTFS와 탐색기는 왜 파일명 정렬에서 일치하지 않는가? 345
날짜 및 시간 제어판은 달력이 아니다 347
윈도우 95는 어떻게 DLL의 기본 주소를 변경했나? 348
SYSTEM_FONT와 DEFAULT_GUI_FONT는 무엇인가? 350
상하 컨트롤의 화살표들은 왜 거꾸로 되어 있는가? 351
윈도우 95 발표회 입장권 352

Chapter 15 창 메시지는 어떻게 전달되고 추출되는가 355
전송 메시지와 게시된 메시지 356
전송 메시지의 수명 361
게시 메시지의 수명 362
생성된 게시 메시지 363
SendMessageCallback은 언제 여러분을 다시 호출하는가? 366
메시지가 시간제한이 될 때 SendMessageTimeout에서 어떤 일이 벌어지는가? 367
여러분이 배운 것을 몇 가지 메시지 처리 신화에 적용하기 367
누가 메시지를 전송 또는 게시했는지 어떻게 알 수 있는가? 368
PostMessage로 키보드 입력을 흉내낼 수 없다 369

Chapter 16 국제적 프로그래밍 371
유니코드에서 대소문자 매핑은 어렵다 372
부적절한 대소문자 매핑에 관한 일화 373
왜 텍스트를 회전시킬 수 없는가 374
0409와 1033이라고 불리는 디렉토리들은 무엇인가? 376
코드 페이지를 계속 주시하라 377
기본 8비트 코드 페이지는 왜 ‘ANSI’라고 불리는가? 386
기본 콘솔 코드 페이지는 왜 ‘OEM’이라고 불리는가? 386
OEM 코드 페이지는 왜 종종 ANSI라고 불리는가? 387
유니코드와 ANSI 사이의 변환에 대한, 논리적이지만 다소 놀라운 결과 388

Chapter 17 보안 391
모든 사람이 쓸 수 있는 파일 392
탐색기로부터 파일 감추기 393
패스워드 훔치기 394
비인증 드라이버의 조용한 설치 395
디버깅 코드가 보안 취약점이 될 수 있다 396
공유 영역은 왜 보안 취약점인가 397
인터넷 익스플로러의 고급 보안 구성은 인트라넷을 신뢰하지 않는다 400

Chapter 18 Windows 2000과 Windows XP 403
새 시작 메뉴는 모든 프로그램 목록에서 왜 즐겨쓰는 메뉴를 사용하지 않는가? 404
시작 메뉴 고정 목록에는 왜 프로그램으로 액세스할 수 없는가 405
윈도우 XP 서비스 팩 2는 왜 종종 CD 자동실행 설정을 잊어버리는가? 406
안전하지 않은 장치 제거 대화상자 407
윈도우 XP의 코멘트? 버튼에 대한 두 가지 회고담 408
CD를 구운 후에 탐색기는 왜 그것을 꺼내는가? 409
윈도우를 설치할 때 왜 새 부트 섹터를 저장하는가? 409
심적인 디버깅 : 왜 값비싼 4 CPU 컴퓨터에서 세 개를 무시하는가 410
심적인 디버깅 : CPU 사용량이 왜 50%로 올라가는가 411
DS_SHELLFONT 플래그는 무엇인가? 412
왜 DS_SHELLFONT = DS_FIXEDSYS | DS_SETFONT인가? 413
DS_SHELLFONT는 속성 시트 페이지에서 어떤 다른 효과를 가지는가? 414

Chapter 19 Win32 설계 문제 417
가져오기가 해결되지 않으면 왜 Win32의 모듈을 로드할 수 없는가? 418
왜 구조체의 크기는 엄격하게 점검되는가? 419
WM_DEVICECHANGE를 위해서 왜 이런 이상한 값을 반환해야 하는가? 422
프로그램과 사용자 간의 무기 경쟁 423
TerminateProcess는 왜 가로채지 못하는가? 424
어떤 프로세스는 죽고 난 후에 왜 작업 관리자에 남아있는가? 425
WAIT_ABANDONED의 결과 이해하기 426
알림 아이콘 풍선 팁 내 하이퍼링크를 넣을 수 없는가? 428
같은 트리 항목 여러 번 사용할 수 없는가? 429
괴상한 STRRET 구조체 430
UTF-8을 왜 ANSI 코드 페이지로 설정할 수 없는가? 431
가라앉은 클라이언트 영역은 언제 사용해야 하는가? 432
모두 포함하는 윈도우 상위 집합 버전이 왜 없는가? 433
바탕화면을 비활성화하는 것이 어떻게 가능하단 말인가? 434
창과 메뉴의 중첩 한계는 무엇인가? 435
HWND_TOP과 HWND_TOPMOST 사이의 차이점은 무엇인가? 435

Chapter 20 부담 437
계층적 저장소 관리 438
지정학 439
원격 데스크톱 연결과 그리기 440
빠른 사용자 전환과 터미널 서비스 443
다중 사용자 444
로밍 사용자 프로필 445
전환된 폴더 447
내 문서와 Application Data 450
대규모 주소 공간 451
전원 관리와 배터리 전원 감지하기 455
간헐적인 네트워크 연결 457
안티 앨리어스 글꼴과 클리어타입 459
고해상도 디스플레이 462
다중 모니터 466
작업 영역 469
팝업 창을 정확한 장소에 표시하기 470
접근성 471

Chapter 21 어리석은 짓 481
많이 오해되는 ‘없는(nop)’행동 481
마케팅이 슬라이드를 망치지 못하게 하라 482
별난 버그 보고서 482
예제 URL을 조심하라 483
독립된 코드는 없다 484
그러나 나는 비주얼 베이직 프로페셔널을 가지고 있다 485
이는 모두 반투명의 플라스틱 때문이다 485
필자의 첫 번째 살해 위협 486
AOL CD로부터 벗어날 수 없다 487
컴퓨터를 전원에 연결하기 전에 충분한 경고 주기 488
스파이더 솔리테르가 인기 있는 챔피언을 내쫓다 489
랫 포커에는 무엇인가가 있다 489
제품 그룹의 이름을 지을 때 조심하라 490
내부 배포 목록 이름을 부여할 때의 심리학 491
관리자와 프로그래머 사이의 차이점 491
플로피 디스크를 세마포어 토큰으로 사용하기 492
토큰이 중간에 의미를 바꿀 때 493
부드러운 형태의 질책인 별난 골칫거리 494
물리적 개체를 상기자로 사용하기 494
사무실 디스코 파티 495
할로윈 주제의 로비 496

인덱스 497

저자 소개

저자 : 레이몬드 첸(Raymond Chen)
마이크로소프트의 윈도우 개발팀의 프로그래머이다. 그의 웹 사이트인 ‘The Old New Thing’(http://blogs.msdn.com/oldnewthing/)은 윈도우의 역사와 Win32 프로그래밍을 다루고 있다. 그는 또 테크넷 매거진(TechNet Magazine)의 ‘윈도우 기밀(Windows Confidential)’ 칼럼을 쓰고 있다.
역자 : 손광수
ksshon1@hanafos.com
한국과학기술원을 졸업하고 LG전자와 삼성SDS 등에서 근무를 하였으며, 현재는 프리랜서로 수십 건의 컨설팅 및 개발 등을 수행해오고 있다. 기업 및 학원에서 데이터베이스와 관련된 강의를 진행하였으며, 주요 컨설팅 및 개발 분야는 데이터베이스와 시스템 복구 등이다.
『데이터베이스 관리와 실습(MS SQL 서버)』(한빛미디어)의 저서와 『운명적 존재를 위한 데이터베이스 설계(제2판)』(사이텍미디어), 『Windows Server 2003 델타 가이드』(사이텍미디어) 등의 역서가 있으며, 지금은 폐간된 월간 「프로그램세계」에 다수의 글이 실리기도 하였다.

품목정보

발행일
2007년 09월 10일
쪽수, 무게, 크기
532쪽 | 1058g | 188*235*35mm
ISBN13
9788990758804

책 속으로

마이크로소프트의 베테랑 개발자인 저자가 그동안 윈도우 개발과 관련하여 직접 경험하거나 전해들은 에피소드들을 특유의 유머러스한 필체로 맛깔 나게 썼기 때문에, 소설책이나 만화책보다 더 재미있고 유쾌한 책이다. 번역을 하면서도 박장대소를 한 적이 한두 번이 아니었으며, 이것은 역자가 처음 경험하는 일이었다.

그러나 이 책은 재미만 있는 것은 아니다. 그동안 윈도우를 사용하면서 궁금하게 생각했던 각종 기능들이 왜 그렇게밖에 될 수 없었는지에 대한 비밀스러운 역사를 속 시원하게 알려주므로, 이 책을 다 읽으면 윈도우에 대해서 훨씬 더 잘 알게 되고, 따라서 윈도우를 더 잘 쓸 수 있게 된다.

이 책은 무엇을 해야 하는지를 설명하는 것이 아니라(그러나 실제로는 이것도 많이 포함되어 있다), 왜 이렇게 되었는지를 이해하는 데 도움이 되는 지식을 담자는 취지로 집필되었다. 윈도우의 역사와 철학을 알게 되면 더 효과적인 윈도우 프로그래머가 될 수 있을 것이다.

--- 역자 머리말 중에서

추천평

“윈도우의 역사, 그 특유의 복잡성과 이상함, 그리고 왜 이렇게 구현되었는지를 이해하기 위한 필독서이자 개발자들에게는 재미있는 교양서이다.”
_ 매트 피트렉, MSDN 매거진의 ‘언더 더 후드’ 컬럼니스트

“레이몬드 첸은 윈도우의 원조 이야기꾼이다.”
_ 스코트 한셀만, ComputerZen.com

“레이몬드는 오랫동안 마이크로소프트에 근무해왔고, 따라서 다른 사람은 얼핏 구경이라도 하고 싶어하는 윈도우의 많은 뉘앙스를 자세히 관찰해 왔다. 이 책으로 레이몬드는 자신의 지식, 경험, 그리고 일화적 얘기들을 공유하여, 매일 수백만의 사람들에게 영향을 미치는 운영체제에 대해 독자들이 더 잘 이해할 수 있도록 해준다. 이 책에는 모든 사람들을 위한 무언가가 있으며 부담 없이 읽을 수 있기 때문에, 적극적으로 추천한다!”
_ 제프리 리히터, 저자/컨설턴트, 윈텔렉트(Wintellect)의 공동 창업자

“매우 흥미로운 읽을거리이다. 레이몬드는 윈도우가 왜 현재의 모습이 되었는지에 대한 내밀한 이야기를 들려준다.”
_ 에릭 거너슨, 프로그램 관리자, 마이크로소프트

“레이몬드 첸은 소프트웨어 업계에서 신화적 존재가 되어가고 있는데, 이 책에서 그 이유를 알 수 있을 것이다. Windows 시작 버튼 설계에 관한 수준 높은 회고담부터 GlobalAlloc에 관한 저수준의 설명에 이르기까지, 골고루 독자들의 흥미를 유발할 것이다. 이 책은 고품질의 소프트웨어를 설계하고 개발하는 데 수반되는 어려움을 진정으로 파악할 수 있도록 도와주는 주옥같은 일화집이다.”
_ 스티븐 터브, 기술 편집자, MSDN 매거진

첫번째 리뷰어가 되어주세요.

첫번째 한줄평을 남겨주세요.

사락 별점0

혜택 및 유의사항

첫번째 별점을 남겨주세요.

첫번째 밑줄을 남겨주세요.