태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

도서출판 ITC

블로그 이미지
도서출판 ITC와 체온365의 블로그입니다. 031-955-4353
ITCnCHAEON365

Article Category

분류 전체보기 (220)
근간안내 (0)
ITC대학교재 (104)
IT단행본 (31)
수입원서 (10)
체온365 (12)
체온365통신 (5)
극장전이야기 (47)
고실장다이어리 (11)

Recent Comment

Recent Trackback

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Archive

  • Total61,437
  • Today56
  • Yesterday59
  1. 2010/11/05
    HTML5 차세대 웹 표준, 기술 (1)
  2. 2010/11/04
    HTML, CSS, JavaSript로 iPhone Apps 개발하기
  3. 2010/10/12
    기본 원리를 완전 분석한 자바스크립트 정규표현식
  4. 2010/10/11
    헬로, 안드로이드 2.1판: 구글의 모바일 개발 플랫폼 소개하기
  5. 2009/12/24
    한국어판 Network Warrior: 완벽한 네트워크 인프라를 위한 실용 지침서
  6. 2009/08/19
    IT 개발자가 쓴 통쾌한 인간관리 이야기
  7. 2009/05/04
    한국어판 Programming .NET 3.5
  8. 2009/03/25
    한국어판 Programming Flex3 : RIA 개발을 위한 완벽 가이드 (3)
  9. 2009/03/19
    ARM Cortex-M3 완벽 가이드
  10. 2009/03/19
    QT 4를 이용한 C++ GUI 프로그래밍(제2판)
사용자 삽입 이미지


도서분류 : IT 단행본 >> 프로그래밍 일반   
저자명 : 김영보   
역자명 :   
출판사 : 도서출판 ITC  
정 가  : 35,000원  
ISBN : 978-89-6351-020-0  
출간년월 : 2010 년 6 월   
페이지 : 764 쪽   
크기 : 세로 : 245, 가로 : 188, 반양장 

HTML5! Next Generation!

웹의 새로운 세대가 우리 앞에 성큼 다가오고 있다.

이제 가야 할 길이 정해졌다.

다른 대안은 없다.

이제 남은 것은 내 것으로 만드는 것이다.

 

HTML5는 구성을 요구한다.

비디오, 오디오, 캔버스도 중요하지만 하나의 기능이다. 따라서 이는 책을 보면 되고, 책은 예제와 더불어 즉시 사용할 수 있도록 자세하게 설명되어 있으면 된다.

HTML4는 엘리먼트(태그)를 기능적으로 구조적으로 접근하면 된다. 하지만 HTML5는 구성을 요구한다. 즉, 사상의 이해를 요구하고 시나리오를 요구한다. 바로 이 점이 HTML4와 HTML5의 차이다.

이 책은 HTML5를 보다 완전하게 사용하기 위한 사상을 다루고 있다. 물론, 예제와 더불어 즉시 사용할 수 있도록 기능적, 표준적인 측면을 아주 자세하게 다루고 있다.

 

이 책의 구성

-HTML5의 모든 API에 대해 설명했으며 예제 소스를 제공한다.
-HTML5의 모든 엘리먼트를 하나도 빠짐없이 예제와 더불어 상세하게 설명했으며 예제 소스를 제공한다.
-엘리먼트 단위로 추가, 폐지, CSS 스타일로 대체된 속성을 제시하고 예제와 함께 자세하게 설명했다. 따라서 (X)HTML 책으로도 사용할 수 있으며 자연스럽게 HTML5까지 배울 수 있다.

 

이 책의 독자

초보자, 중급자, 고급자를 대상으로 한다.

초보자는 기능, 표준 중심으로 볼 것이고 중급자와 고급자는 사상, 시나리오, 접근성 관점에서 볼 것으로 예상한다.

 

추천사

HTML5에는 다양한 API들이 추가되었지만 이와 함께 콘텐츠를 표시하는 각종 요소와 구성도 매우 중요하다. 콘텐츠를 효과적으로 기술하는 발전된 HTML5의 기능들이 스펙을 잘 살려서 기술이 되어 있다.

-신현석 Opera Software 책임연구원-



저자 머리말


HTML5는 크게 콘텐츠에 관한 것과 API에 관한 것으로 분류할 수 있다. 콘텐츠는 다시 HTML5에 새로 추가된 부분과 HTML4를 재정의한 부분으로 나눌 수 있다. HTML5에 새로 추가된 부분은 콘텐츠 모델과 같이 도큐멘트 구성에 관한 것과 비디오, 캔버스와 같이 기능에 관한 것으로 분류할 수 있다. HTML4 재정의 부분은 div, em, strong 엘리먼트와 같이 엘리먼트의 기능을 재정의한 것과 alt 속성 작성 방법, CSS 스타일로 대체와 같이 속성을 재정의한 것으로 분류할 수 있다.

HTML5 스펙 기준

책 제목을 HTML5라고 한 것은 HTML5 스펙을 기준으로 다룬다는 의미다. 즉 API, HTML5에 추가된 내용, HTML4를 재정의한 내용을 다룬다. HTML4를 재정의했다고 해서 이 책에서 HTML4와 HTML5를 비교해서 다루지 않는다. 왜냐하면 비교하려면 기준이 있어야 하는데 HTML4에 대한 독자의 기준과 필자의 기준이 다를 수 있기 때문이다. 한편 HTML4를 생각하지 말고 HTML5를 대하는 것이 더 쉽게 다가갈 수 있다고 생각한다. 이는 언어를 바꿀 때마다 느꼈던 필자의 경험에서 나온 생각이다. 이 시점에서 분명한 것은 HTML4에서 HTML5로 숫자가 바뀐 것만은 아니라는 것이다.

과거 경험의 압박

이 책을 쓰는 내내 필자에게 가장 압박을 준 것은 과거의 경험이다. HTML4를 잘못 사용하는 이면에는 초창기에 나왔던 책의 부실함으로 인한 면도 없지 않았다고 생각하기 때문이며 다시 이와 같은 전철을 밟지 않을까 하는 걱정이 앞섰기 때문이다. 현재에 이르기까지 수험료로 내야 했던 시행착오, 시간, 노력이 머릿속에서 떠나지 않았기 때문이다.

예를 들어 이 책에 테이블을 레이아웃 용도로 사용하지 않는다는 글이 나온다. 이 글이 초창기 책에 있었다면 테이블을 레이아웃에 사용하지 말자는 캠페인, 테이블을 걷어내는 변환 작업 등으로 인한 경제적, 시간적 낭비가 없었을 것이다. 웹 표준도 빠질 수 없는 사항이다.

HTML5 사상 제시

이와 같은 쓰라린 경험을 최대한 반영하려고 노력했지만 다시 이런 모습이 발생하지 않는다고 보장할 수는 없다. 아니 보장한다는 그 자체가 모순이다. 이를 알고 있기에 다시는 이런 일이 발생하지 않도록 하기 위해 최선을 다했다고 말할 수는 있다. 이를 위해 HTML5 기능은 물론이고, HTML5 사상을 제시하려고 노력했으며 기본적으로 원론적으로 접근하여 기초, 기반이 다져지도록 하는 것에 최선을 다했다.

이 책의 4장과 9장을 이해하는 것이 중요하다. 여기서 HTML5의 사상과 방향을 이해할 수 있다. 엘리먼트를 작성하는 것은 어렵지 않다. 속성을 작성하는 것이므로 어떨 때 쓴다는 것을 알고 있으면 된다. 하지만 사상의 이해는, 개념 정리는 그렇지 않다. 독자 자신이 정확하게 이해하고 있어야 자신감 있는 행보를 할 수 있다. 특히 확신을 갖고 독자 자신이 작성한 것을 스스로 검증할 수 있다.

HTML4 재정의

이 책에서 가장 많은 페이지를 차지하는 속성이 <img> 엘리먼트의 alt 속성으로 이 책 기준으로 23페이지나 된다. 무엇이?, 아니? 라는 의아심이 들 것이다. 이미지가 표시되지 않는 경우의 수를 제시하고 이에 따라 alt 속성을 작성하는 형태가 기술되어 있다. 그렇다고 alt 속성이 HTML5에서 새로 나온 속성도 아니며 기능이 변경된 것도 아니다. 그런데도 이렇게 자세하게 작성한 것은 HTML4에서 두루뭉술하게 사용한 것을 재정의한 것이다. 이외에도 명확하지 않았던 엘리먼트와 속성의 목적, 기능, 범위를 재정의했다. HTML5는 기능이 추가된 것이 전부가 아니다. 굳이 비율을 매긴다면 관점에 따라 다를 수 있지만 추가와 재정의가 50 대 50이라고 할 수 있다.


장/절/항 분류 기준

이 책은 HTML5 스펙을 기준으로 장/절/항으로 분류했다. 일부 순서가 바뀌거나 통합하여 작성한 것도 있지만 대부분 틀에서 벗어나지 않았다. 엘리먼트는 물론이고 속성까지도 순서를 따르고 있다. 이는 필자의 주관적인 해석을 최소화하기 위한 것에서 비롯된다. 만약 독자의 생각과 책 내용이 다르다고 할 때 HTML5 원문 스펙과 맞추어 보기 쉽도록 하기 위한 것이다. 특히 개정된 HTML5 스펙이 나왔을 때 이 책의 내용과 다를 수 있다. 이때 순서가 비슷하면 맞추어 보기 쉽다.

이 책의 주요 구성

이 책은 5부 20장으로 구성되어 있으며 부록이 있다.

1부 HTML5 개요
HTML5의 전반적인 개요를 살펴본다. HTML5는 다양한 API를 제공하며 이를 통해 보다 강력한 애플리케이션을 구현할 수 있다. HTML5에 추가, 변경, 폐지된 엘리먼트와 속성을 개념적으로 살펴본다. 이는 다시 이 책에서 상세하게 다룬다.

2부 콘텐츠 모델, 글로벌 속성
HTML5에서 중요한 개념이 콘텐츠 모델이다. 엘리먼트를 카테고리로 분류하고 관련성을 갖게 했다. 이 개념을 이해해야 보다 완전하게 엘리먼트를 사용할 수 있다. HTML5에는 100여 개의 엘리먼트가 있으며 이에 공통으로 설정되는 속성을 글로벌 속성이라고 한다. 콘텐츠 모델과 글로벌 속성에 대해 살펴본다.

3부 HTML 콘텐츠
엘리먼트에 직접 콘텐츠를 작성하는 엘리먼트를 살펴본다. 다큐먼트의 루트가 되는 엘리먼트, 메타데이터를 표현하는 엘리먼트, 스크립팅을 위한 엘리먼트, 섹션을 정의하는 엘리먼트, 콘텐츠를 그룹화하는 엘리먼트, 텍스트 레벨 시맨틱을 표현하는 엘리먼트, 콘텐츠의 추가/삭제를 표현하는 엘리먼트를 살펴본다.

4부 임베디드 콘텐츠, 캔버스, 테이블
외부 자원을 엘리먼트에 추가하여 콘텐츠를 표현하는 엘리먼트를 살펴본다. HTML5의 이슈인 비디오, 오디오, 캔버스 엘리먼트를 알아본다. 접근성 관점에서 강한 메시지를 보내는 alt 속성 작성 형태를 살펴보고 테이블 관련 엘리먼트의 기능과 접근성을 위한 형태를 살펴본다.

5부 폼 컨트롤
폼 컨트롤은 데이터 입력/수정/삭제가 발생하는 엘리먼트를 총칭한다. HTML5에 타입 속성이 많이 추가되었으며 다양한 형태로 데이터를 입력할 수 있게 되었다. 아직 모든 브라우저에서 지원하지 않아 실제로 사용할 수는 없지만 웹이 나아가는 방향을 이해할 수 있다. 폼(form) 엘리먼트와 폼에 포함되는 엘리먼트에 대해서 살펴본다.

부록에 다음과 같은 일람표가 작성되어 있다.
-엘리먼트 유지/신규/폐지 일람표
-속성/엘리먼트 매트릭스
-엘리먼트/인터페이스 일람표


1장 개요
HTML5 현재 상태와 HTML/XHTML의 발자취를 살펴본다. HTML5 스펙의 중심 역할을 하는 WHATWG와 HTML5 범위에 대해 살펴본다.

2장 HTML5 API
HTML5의 양대 산맥은 콘텐츠와 API다. API는 애플리케이션 개발을 지원한다. 서버와 통신하고 데이터베이스를 사용할 수 있으며 쿠키가 아닌 스토리지를 사용할 수 있다. 클라이언트의 파일을 직접 읽을 수도 있다. 캔버스 API 개념도 같이 살펴본다.

3장 HTML4와 HTML5 차이
HTML4와 HTML5 차이를 개념적으로 살펴보고 MathML 개념과 SVG 개념을 살펴본다. HTML5에 추가, 변경, 폐지된 엘리먼트와 속성을 살펴본다. 엘리먼트와 속성은 이 책에서 다시 상세하게 다룬다.

4장 콘텐츠 모델
콘텐츠 모델은 HTML5에 새로 추가된 개념이다. 모든 단어와 개념이 생소하다. 엘리먼트를 그룹화하여 카테고리로 분류하고 이들의 관계를 정의해서 콘텐츠를 표현하도록 하고 있다. HTML5를 보다 정확하게 이해하려면 콘텐츠 모델을 이해해야 한다.

5장 글로벌 속성
글로벌 속성이란 100여 개의 엘리먼트에 공통으로 적용되는 속성이다. HTML5에서 새로 추가된 속성도 있으며 title 속성과 tabindex 속성은 엘리먼트 속성에서 글로벌 속성으로 변경되었다.

6장 루트 엘리먼트
6장에서 다루는 엘리먼트는 단 하나 <html> 엘리먼트다. 그런데 별도의 장으로 분리한 것은 HTML5 스펙과 분류 기준을 맞추기 위한 것이다.

7장 메타데이터
메타데이터는 <head> 엘리먼트에 작성하는 엘리먼트를 총칭한다. 이 장에서 다루는 엘리먼트는 HTML4에 있는 엘리먼트이며 명확하게 목적, 기능을 정의하는데 의미가 있다.

8장 스크립팅
스크립팅은 자바스크립트 코드를 작성할 수 있는 엘리먼트를 분류한 것이다.

9장 섹션
섹션으로 분류되는 엘리먼트는 대부분 HTML5에 새로 추가된 엘리먼트다. HTML4가 구조 중심이었다면 HTML5는 구성이 중심이다. 이 장에서 다루는 엘리먼트가 다큐먼트를 구성하게 된다. 섹션 개념, 아웃라인 개념, 섹셔닝 루트 카테고리 개념을 다루고 있다.

10장 콘텐츠 그룹화
콘텐츠를 그룹화하는 엘리먼트를 다룬다. 문단을 그룹화하고 엘리먼트를 그룹화하지만 궁극적으로 이는 콘텐츠를 그룹화하기 위한 것이다. HTML4에서 사용하는 엘리먼트가 대부분이지만 개념, 목적을 재정의했다는 것에 의미가 있다.

11장 텍스트 레벨 시맨틱
텍스트 형태로 콘텐츠를 표현하기 위한 엘리먼트를 다룬다. HTML5에 새로 추가된 트랜스패어런트 콘텐츠 모델을 살펴 본다. HTML5에 새로 추가된 엘리먼트도 있다.

12장 편집
콘텐츠가 추가, 삭제된 것을 나타내기 위한 <ins>, <del> 엘리먼트를 다룬다. 두 개밖에 안 되는 것을 장으로 분류한 것은 HTML5 스펙 분류를 따르기 위한 것이다.

13장 임베디드 콘텐츠
이미지와 같이 외부 자원을 엘리먼트에 포함시켜 콘텐츠로 표현하는 엘리먼트를 다룬다. 대표적으로 <img>, <iframe>, <object>가 이에 속한다. alt 속성 작성 형태를 다룬다. HTML5 스펙에서 비디오, 오디오, 캔버스 엘리먼트를 임베디드 콘텐츠로 분류하지만 별도의 장으로 떼어내어 다룬다.

14장 비디오, 오디오
세간의 이목이 집중된 비디오, 오디오를 다룬다. 자바스크립트로 비디오, 오디오를 제어하는 형태, 방법을 다룬다.

15장 캔버스
캔버스는 2차원 그래픽, 게임과 같이 시각적인 이미지를 동적으로 구현할 수 있는 API다. 이를 잘 활용하면 보다 한 차원 높은 콘텐츠를 표현할 수 있다. 필자 나름 역점을 두고 기본적인 사항을 하나도 빠짐없이 자세하게 다루었다.

16장 테이블
<table> 관련 엘리먼트를 다룬다. 테이블 속성으로 사용했던 스타일 관련 속성이 CSS 스타일로 대체되었다는 점이 특징이다. 접근성 관점에서 테이블을 작성하는 방법, 형태를 정의했다는 것에 의미가 있다.

17장 폼 컨트롤, input 엘리먼트 공통 속성
폼 컨트롤과 <input> 엘리먼트의 공통 속성을 다룬다. HTML5에 추가된 속성도 있으며 아직 브라우저에서 지원하지 않는 속성도 있다.

18장 input 엘리먼트
<input> 엘리먼트에 type이 많이 추가되었으며 대부분이 자바스크립트로 구현해서 사용하고 있는 타입이다. 오페라 브라우저가 대부분 지원하는 반면 다른 브라우저는 일부만 지원하므로 실제로 사용할 수는 없지만, 눈 여겨 볼 것은 자바스크립트를 사용하지 않고 엘리먼트 자체로 유저 인터페이스를 제공한다는 점이다.

19장 폼
폼 관련 엘리먼트를 다룬다. 기능도 약하고 아직 사용할 수 없지만 서제스트 기능이 HTML5에 추가되었다. 그런데, 이를 자바스크립트가 아닌 엘리먼트만으로 제공할 수 있다는 점이 눈 여겨 볼 사항이다. 앞으로 이를 발전시킨다면 매우 유용한 유저 인터페이스를 제공할 수 있을 것이다. 시각적인 유저 인터페이스는 다른 관점이다.

20장 인터랙티브
위젯, 메뉴에 관한 엘리먼트가 포함된다. 아직 브라우저에서 제공하지 않지만 이 또한 자바스크립트를 사용하지 않고 엘리먼트만으로 메뉴와 위젯을 구현할 수 있다.



2010년 5월 마지막 날
김 영보


차례

1부 HTML5 개요

1장 개요
1.1 HTML5 현재상태
1.2 HTML, XHTML의 발자취
1.3 WHATWG 태동
1.4 2022년 개발 완료?
1.5 HTML5 범위

2장 HTML5 API
2.1 Canvas 2D Context
2.2 Microdata
2.3 Microdata vocabularies
2.4 Communications
2.5 Web Workers
2.6 Web Storage
2.7 Web Sockets
2.8 Server-sent Events
2.9 Web SQL Database
2.10 Indexed Database API
2.11 Geolocation
2.12 File

3장 HTML4와 HTML5 차이
3.1 DOCTYPE
3.2 HTML5 구문
3.3 MathML
3.4 SVG
3.5 신규 엘리먼트
3.6 변경 엘리먼트
3.7 폐지 엘리먼트
3.8 신규 속성
3.9 변경 속성
3.10 폐지 속성
3.11 HTMLDocument 확장
3.12 HTMLElement 확장

2부 콘텐츠 모델, 글로벌 속성

4장 콘텐츠 모델
4.1 카테고리
4.2 콘텐츠 모델이란?
4.3 메타데이터 콘텐츠
4.4 플로우 콘텐츠
4.5 섹셔닝 콘텐츠
4.6 헤딩 콘텐츠
4.7 파싱 콘텐츠
4.8 임베디드 콘텐츠
4.9 인터랙티브 콘텐츠

5장 글로벌 속성
5.1 글로벌 속성 리스트
5.2 accesskey: 단축 키
5.3 class: 클래스
5.4 contenteditable: 텍스트 편집
5.5 contextmenu: 콘텍스트 메뉴
5.6 dataset: 커스텀 데이터
5.7 dir: 텍스트 방향 형식
5.8 draggable: 드래그 여부
5.9 hidden: 엘리먼트의 다큐먼트 반영
5.10 id: 엘리먼트 식별자
5.11 lang: 엘리먼트의 주된 언어
5.12 spellcheck: 맞춤법, 문법 검사
5.13 style: CSS 스타일
5.14 tabindex: 네비게이션 순서
5.15 title: 엘리먼트 추가 정보

3부 HTML 콘텐츠

6장 루트 엘리먼트
6.1 <html> 루트 엘리먼트

7장 메타데이터
7.1 <head> 다큐먼트 메타데이터
7.2 <title> 다큐먼트 제목
7.3 <base> 링크 기준 URL
7.4 <link> 외부 파일 링크
7.5 <meta> 메타데이터
7.6 charset: 문자 인코딩
7.7 http-equiv: pragma 지시문
7.8. name: 메타데이터 이름
7.9 <style> 스타일

8장 스크립팅
8.1 <script> 스크립트
8.2 <noscript> 스크립트 사용 불가에서 실행

9장 섹션
9.1 구조와 구성
9.2 <body> 메인 콘텐츠
9.3 <section> 섹션
9.4 <h1>~<h6> 섹션 제목
9.5 <hgroup> 제목 그룹
9.6 아웃라인 생성
9.7 섹셔닝 루트 카테고리
9.8 헤딩과 섹션
9.9 <header> 헤더
9.10 <footer> 푸터
9.11 <nav> 네비게이션 링크 리스트
9.12 <article> 독립적인 콘텐츠
9.13 <aside> 간접적인 콘텐츠
9.14 <address> 연락처

10장 콘텐츠 그룹화
10.1 <p> 문단
10.2 <div> 엘리먼트 그룹
10.3 <hr> 문단 구분
10.4 <br> 라인 분리
10.5 <pre> 정의된 텍스트 블록
10.6 <blockquote> 인용문 섹션
10.7 <ol> 순서 의미가 있는 항목 리스트
10.8 <ul> 순서 의미가 없는 항목 리스트
10.9 <li> 항목 리스트
10.10 <dl> 기술 목록
10.11 <dt> 용어, 이름
10.12 <dd> 용어 설명, 값
10.13 <figure> 도해
10.14 <figcaption> 도해 캡션

11장 텍스트 레벨 시맨틱
11.1 <a> 앵커
11.2 트랜스패어런트 콘텐츠 모델
11.3 <em> 의미 강조
11.4 <strong> 중요성 강조
11.5 <small> 주석
11.6 <cite> 결과물의 타이틀
11.7 <q> 인용문
11.8 <abbr> 약어
11.9 <dfn> 용어 정의
11.10 <time> 일시
11.11 <code> 코드
11.12 <var> 변수
11.13 <kbd> 사용자 입력
11.14 <samp> 출력
11.15 <sup> 위첨자
11.16 <sub> 아래첨자
11.17 <i> 이태릭체
11.18 <b> 볼드체
11.19 <mark> 하이라이트
11.20 <ruby> 루비
11.21 <rt> 루비 텍스트
11.22 <rp> 루비 괄호
11.23 <bdo> 방향 형식
11.24 <span> 인라인 그룹

12장 편집
12.1. <ins> 컨텐츠 추가
12.2 <del> 컨텐츠 삭제
12.3 편집과 <p> 엘리먼트
12.4 편집과 리스트

4부 임베디드 콘텐츠, 캔버스, 테이블

13장 임베디드 콘텐츠
13.1 <img> 이미지
13.2 alt 속성 작성 형태
13.3 <iframe> 인라인 프레임
13.4 <embed> 플러그인
13.5 <object> 외부 콘텐츠
13.6 <param> 플러그인 파라미터
13.7 <map> 이미지 맵
13.8 <area> 이미지 맵 하이퍼링크

14장 비디오, 오디오
14.1 <video> 비디오
14.2 <audio> 오디오 스트림
14.3 <source> 미디어 소스
14.4 자바스크립트로 비디오, 오디오 제어
14.5 미디어 파일 제어 시나리오
14.6 미디어 소스 로드
14.7 미디어 파일 다운로드
14.8 미디어 파일 다운로드 상태
14.9 에러 상태
14.10 비디오 재생, 멈춤
14.11 미디어 재생 위치 지정
14.12 재생 속도 조정
14.13 볼륨 제어
14.14 재생 위치 찾기
14.15 타임라인

15장 캔버스
15.1 <canvas> 엘리먼트
15.2 캔버스 인터페이스
15.3 사각형
15.4 투명도
15.5 삼각형
15.6 원
15.7 서브패스 사용 사각형
15.8 베지어 곡선
15.9 이미지 표현
15.10 라인 스타일
15.11 그라데이션
15.12 패턴 정의
15.13 그림자
15.14 도형 상태의 저장, 복원
15.15 변환 매트릭스
15.16 이미지 합성
15.17 클립
15.18 패스에 좌표 포함 체크
15.19 픽셀 제어
15.20 텍스트

16장 테이블
16.1 테이블 모델
16.2 <table> 테이블
16.3 <caption> table 제목
16.4 <colgroup> 테이블 칼럼 그룹
16.5 <col> 테이블 칼럼
16.6 <thead> 테이블 헤딩 그룹
16.7 <tbody> 테이블 행 그룹
16.8 <tfoot> 테이블 푸터 그룹
16.9 <tr> 테이블 행
16.10 <td> 테이블 셀
16.11 <th>, <td> 공통 속성
16.12 <th> 테이블 헤더 셀
16.13 테이블 설명 작성 형태


5부 폼 컨트롤

17장 폼 컨트롤, input 엘리먼트 공통 속성
17.1 name: 컨트롤 이름
17.2 disabled: 컨트롤 비활성화
17.3 value: 컨트롤 값
17.4 autofocus: 자동 포커스
17.5 <input> 엘리먼트 속성 리스트
17.6 autocomplete: 자동 완성
17.7 list: 서제스트 리스트
17.8 readonly: 편집 여부
17.9 size: 넓이
17.10 required: 필수 입력
17.11 multiple: 다수 값 입력
17.12 maxlength: 최대 입력 문자 수
17.13 pattern: 정규 표현식 패턴
17.14 min: 최소 값
17.15 max: 최대 값
17.16 step: 증가 단위 값
17.17 placeholder: 힌트

18장 input 엘리먼트
18.1 <input> 엘리먼트
18.2 <input> type 일람표
18.3 콘텐츠 속성, type 일람표
18.4 IDL 속성, type 일람표
18.5 text: 텍스트
18.6 search: 검색 필드
18.7 hidden: 히든
18.8 tel: 전화번호
18.9 url: URL
18.10 email: E-Mail 주소
18.11 password: 패스워드
18.12 date: 일자
18.13 month: 연월
18.14 time: 시간
18.15 datetime: UTC 일자, 시간
18.16 datetime-local: 지역화 일자, 시간
18.17 week: 주
18.18 number: 숫자
18.19 range: 숫자 범위
18.20 color: 칼라 피커
18.21 checkbox: 체크박스
18.22 radio: 라디오 버튼
18.23 file: 파일 업로드
18.24 submit: 전송 버튼
18.25 image: 이미지 버튼
18.26 reset: 리셋 버튼
18.27 button: 버튼

19장 폼
19.1 <form> 폼
19.2 form 관련 엘리먼트
19.3 <fieldset> 폼 컨트롤 세트
19.4 <legend> fieldset 캡션
19.5 <label> 폼 컨트롤 캡션
19.6 <button> 버튼
19.7 <select> 옵션 선택 컨트롤
19.8 <option> 선택
19.9 <optgroup> option 그룹
19.10 <datalist> option 세트
19.11 <textarea> 멀티라인 텍스트
19.12 <keygen> 비밀 키, 공개 키 생성
19.13 <output> 계산 결과
19.14 <progress> 태스크 진척도
19.15 <meter> 척도

20장 인터랙티브
20.1<details> 디스클로저 위젯
20.2 <summary> 디스클로저 위젯 캡션
20.3 <menu> 커맨드 리스트
20.4 <command> 커맨드

부록
-엘리먼트 유지/신규/폐지 일람표
-속성/엘리먼트 매트릭스
-엘리먼트/인터페이스 일람표

크리에이티브 커먼즈 라이선스
Creative Commons License

'IT단행본' 카테고리의 다른 글

HTML5 차세대 웹 표준, 기술  (1) 2010/11/05
HTML, CSS, JavaSript로 iPhone Apps 개발하기  (0) 2010/11/04
기본 원리를 완전 분석한 자바스크립트 정규표현식  (0) 2010/10/12
헬로, 안드로이드 2.1판: 구글의 모바일 개발 플랫폼 소개하기  (0) 2010/10/11
한국어판 Network Warrior: 완벽한 네트워크 인프라를 위한 실용 지침서  (0) 2009/12/24
IT 개발자가 쓴 통쾌한 인간관리 이야기  (0) 2009/08/19
Trackback 0 and Comment 1

사용자 삽입 이미지


도서분류 : IT 단행본 >> 프로그래밍 일반   
저자명 : 조나단 스타크(Jonathan Stark)   
역자명 : 성윤정, 황연주  
출판사 : 도서출판 ITC  
정 가  : 18,000원  
ISBN : 978-89-6351-018-7  
원서명 : Building iPhone Apps with HTML, CSS, and JavaSript   
출간년월 : 2010 년 6 월   
페이지 : 212 쪽   
크기 : 세로 : 245, 가로 : 188, 반양장 


HTML, CSS, JavaScript를 안다면 아이폰 애플리케이션 개발을 위해 필요한 툴을 이미 다룰 수 있는 것이다. 이 책을 통해 여러분은 Objective-C나 Cocoa를 사용하지 않고 플랫폼 위에서 아이폰과 아이팟 터치를 위한 애플리케이션을 디자인하고 작성할 수 있는 오픈 소스 웹 기술들을 사용하는 방법을 배울 것이다.

장치에 구애받지 않는 애플리케이션이 미래의 흐름이고, 이 책에서 여러 플랫폼에 대한 하나의 제품을 생성하는 방법을 여러분에게 보여줄 것이다. 무료인 PhoneGap 프레임워크를 이용하여 여러분의 제품을 native 아이폰 애플리케이션으로 바꾸기 위한 가이드라인을 발견할 것이다. 그리고 버그를 찾아 수정하고 테스트하기 위해서는 여러분의 제품을 우선 웹 애플리케이션으로 출시하는 것이 Apple이 제공하는 툴을 이용하여 App Store에 바로 올리는 것보다 훨씬 빠르다는 것을 알게 될 것이다.

■ 이미 다룰 수 있는 툴을 이용하여 아이폰 애플리케이션을 작성한다.
■ 아이폰 애플리케이션처럼 보이고 또 그렇게 동작하는 기존의 웹사이트를 만드는 방법을 배운다.
■ 웹 애플리케이션에 애니메이션을 추가하기 위해 jQTouch를 사용한다.
■ 아이폰이 오프라인 상태일 때에도 애플리케이션이 작동하도록 Client-Side 데이터 기억장치를 활용한다.
■ JavaScript를 이용하여 accelerometer, geolocation, vibration과 같은 향상된 아이폰 기능에 빠져본다.
■ 애플리케이션을 Xcode로 App Store에 올린다.

“모바일 개발의 미래는 CSS, HTML, JavaScript이다. Jonathan은 이 기술들을 이용하여 native 아이폰 애플리케이션을 작성하는 방법을 여러분에게 보여줄 것이다.”
- John Allsopp (Web Directions의 저자이자 설립자)

“Jonathan의 책은 모바일 Safari에서 웹 애플리케이션을 가능하게 하는 가장 포괄적인 문서이다.” - Brian LeRoux (Nitobi Software)


저자 머리말

대다수의 많은 사람들처럼 나도 아이폰을 접한 즉시 아이폰에 매료되었다. 나는 웹 개발자이기 때문에 처음에는 wep apps만이 장치에 사용자 정의 애플리케이션을 올리는 유일한 방법이었다. 몇 개월 후 App Store가 공지를 했을 때 매우 흥분된 마음으로 서점에 가서 Objective-C에 관한 모든 책을 구입했다. 내가 만든 web apps의 일부는 이미 어느 정도 인기가 있었기 때문에 그것들을 단지 native apps로 재작성하여 App Store에 올리면 그야말로 돈방석에 오르는 건 시간문제라고 생각했다.

하지만 Objective-C를 배우는 데 어려움이 있었고 언어가 Mac 프로그래밍 밖에서 약간만 사용된다는 사실에 환멸을 느꼈다. Xcode와 Interface Builder는 꽤 매끄러웠지만 주로 개발하던 환경이 아니었기 때문에 익숙하지 않았다. 테스트를 위해 애플리케이션과 아이폰에 설정만을 위해서도 뛰어넘어야 할 난관이 많다는 것에 격분했다. App Store에 애플리케이션을 올리는 과정은 더욱 복잡했다. 한두 주 이러한 변수와 사투를 벌인 후 내가 왜 이러한 문제들 속에서 허우적대고 있는지에 대한 의문을 가지게 되었다. 어쨌든 내가 만든 web apps는 이미 전 세계적으로 웹상에서 사용되고 있는데 왜 꼭 App Store에 올려야만 한다고 생각했을까?

이 모든 상황 위에는 Apple이 애플리케이션을 거부할 수 있고 이미 그러고 있다는 것이다. 이것은 확실히 그들의 특권이고 아마도 그들은 그럴만한 이유를 가지고 있을 것이다. 그러나 외부에서 보기에는 변덕스럽고 독단적인 횡포로 보인다. 실제 상황을 들어 생각해보면, 여러분은 Objective-C를 배우기 위해 약 100 시간을 사용하고 native 아이폰 애플리케이션을 만드는데 또 100 시간을 보낸다. 결국 애플리케이션은 황금시간이 투자되어 준비되고 여러분은 App Store에 올리는 과정을 성공적으로 마쳤다. 다음은 무슨 일이 일어날까?

여러분은 기다리고 또 기다린다. 우리는 몇 주, 때로는 몇 달을 기다린 후 마침내 회신을 받는다. “당신의 애플리케이션은 거부되었습니다.” 이젠 어떻게 하면 좋을까? 더 이상 여러분이 들인 노력을 아무데도 보요주지 못하고 결국 물거품이 되고 마는 것이다.

그러나 상황은 더 나빠질 수도 있다. 애플리케이션이 승인을 받았다고 치자. 수백만 또는 수천만의 사람들이 애플리케이션을 다운로드 받았고 아직 요금을 지급받지 못한 상황에서 버그 보고서가 오기 시작한다. 몇 분 안에 버그를 찾아내어 수정한 후 iTunes에 수정한 애플리케이션을 올린다. Apple이 교정을 승인하는 동안 기다리고 또 기다려야 한다. 그 사이 화가 난 고객들은 App Store에 지독한 평가와 재검토를 요청할 것이다. 여러분은 화난 고객들에게 반품을 제안하고 싶겠지만 App Store를 통해 이 방법도 제공되지 않는다. 그래서 몇 일 또는 몇 주 전에 버그가 이미 수정되었음에도 불구하고 애플리케이션에 대한 평점이 바닥으로 떨어지는 것을 앉아서 볼 수밖에 없게 되는 것이다.

물론, 이 이야기는 한 개발자의 경험을 바탕으로 한 것이다. 어쩌면 이는 주변의 예이고 실제 데이터는 이러한 이론을 확증하지는 않을지도 모른다. 그러나 문제는 여전히 남아있다. 개발자들은 Apple의 데이터나 App Store의 승인 절차의 실제 세부사항에 접근할 수 없다. 이러한 변화가 올 때까지 Objective-C로 native 애플리케이션을 만드는 것은 위험한 제안이라고 생각한다.

다행히 선택의 여지는 남아있다. 오픈 소스와 표준기반 웹 기술을 이용하여 웹 애플리케이션을 만들 수 있고 이를 실제 사용자가 로드한 상황에서 디버그하고 테스트할 수 있다. 일단 준비되면 웹 애플리케이션을 native 아이폰 애플리케이션으로 변경하고 App Store에 올린다. 궁극적으로 거부되더라도 여전히 웹 애플리케이션을 제안할 수 있기 때문에 물거품이 되어버리지는 않는다. 승인될 경우에는 장치에 알맞은 하드웨어 특징을 이용해서 웹 애플리케이션을 향상시키기 위한 기능을 추가하기 시작할 수 있다. 두 경우 모두 최고의 선택이 아닌가?

이 책의 대상 독자

이 책을 읽는 독자는 HTML, CSS, JavaScript(특히 jQuery)를 읽고 쓰는 기본 경험이 있다고 가정한다. 5장과 6장에서는 약간의 기본적인 SQL 코드를 포함하고 있기 때문에 SQL 문법을 잘 알고 있다면 도움이 되겠지만 필수 사항은 아니다.

이 책을 읽기 위해 필요한 도구

이 책은 가급적 아이폰 SDK의 사용을 자제할 것이다. 대부분의 예제들을 따라하기 위해서는 텍스트 에디터, 최신버전의 Safari (또는 아직은 더 나은 Webkit: Mac과 Windows 모두에서 사용 가능한 최첨단 버전이고 http://webkit.org에서 구할 수 있다)가 필요하다. 7장에서는 PhoneGap을 위해 Mac이 필요하며 여기서는 web app를 native app로 바꾸는 방법을 설명하고 App Store에 올릴 것이다.

Jonathan Stark
는 웹에 데스크톱 데이터를 출간하는 전문가로 Wall Street Journal에 의해 알려진 모바일과 웹 애플리케이션 컨설턴트이다. 그는 웹 애플리케이션 프로그래밍에 관한 두 권의 책을 썼고 phparchitect와 Advisor 잡지의 편집자이다.


역자 머리말

모바일 폰이 스마트폰으로 발전하면서 데스크톱 애플리케이션 위주에서 이제는 모바일 애플리케이션의 시대로 가고 있음을 많이 실감하게 된다. 모바일 애플리케이션의 요구가 많음에도 불구하고 지금까지 개발자들에게 큰 호응을 얻지 못한 이유는 프로그램이 장치 독립적이지 못했기 때문일 것이다. 개발자에게 새로운 환경과 또다른 언어의 습득은 큰 부담이 아닐 수 없다. 모바일 개발을 고려하는 대부분의 개발자들은 아이폰 또한 Mac환경에서 Object-C를 배워야 한다고 알고 있을 것이다. 이 책은 제목에서 알 수 있듯이 이러한 편견과 부담감을 여실히 깨주는 가뭄의 단비와 같은 책이 될 것을 확신한다. 사용자는 늘 개발자가 만든 것 이상의 기능을 요구하고 그리 오래 기다려주지 않는다. 이에 Apple은 편리하고 합리적인 환경을 제공해주지 못한다. 이 때 개발자가 발휘할 수 있는 융통성을 이 책에서 알려주고 있다. 이 책은 웹 개발자라면 누구라도 쉽게 아이폰 애플리케이션 개발자가 될 수 있도록 도와주는 친절한 안내서가 될 것이다.

성윤정
동국대학교 컴퓨터 교육학에서 개인 역량 평가에 따른 동적 컨텐츠를 이용한 웹기반 교육 시스템의 설계로 석사 논문 학위를 취득하였으며 삼성 SDS 모바일 아카데미 교육 기획을 위한 리서치 및 컨설팅을 하고 있다.
  저서로는 'C++ 쿡 북', '클릭하세요 오라클 10g', '클릭하세요 자바 2', '초보 개발자를 위한 JSP', '서버 사이드 ajax', '초보 개발자를 위한 MFC', '행복해지는 HTML', 'Dynamic 스트럿츠', 'Dynamic 오라클 11g', '스프링', 'Visual C++ MFC 윈도우 프로그래밍', '한 번에 이해하는 C로 쓴 자료구조', '한 번에 이해하는 SQL Server 2008', '한 번에 이해하는 안드로이드'가 있고 번역서로는 '서버 사이드 ajax', '안드로이드 매력에 빠지다' 등이 있다.

황연주
수년간의 프로그래머 경력을 가졌으며 이를 바탕으로 현재 강의를 하고 있다. 연세대학교 교육대학원에서 컴퓨터교육을 전공했으며 교육을 통해 모바일 관련 프로젝트를 진행하였다.


차례

1장 시작하기
Web Apps VS. Native Apps
Web Programming 특강

2장 기본 아이폰 스타일링
첫 번째 단계
아이폰 CSS 추가하기
아이폰에 모양과 느낌 추가하기
jQuery와 기본적인 동작 추가하기
이 장을 마치며

3장 향상된 아이폰 스타일링
Ajax의 터치 추가하기
교통경찰 역할을 하는 iphone.html 작성하기
간단한 부가기능 추가하기
‘back' 버튼으로 되돌리기
Home Screen에 Icon 추가하기
Full Screen Mode
이 장을 마치며

4장 Animation
친구로부터 약간의 도움을 얻다.
Dates 패널 추가하기
Date 패널 추가하기
New Entry 패널 추가하기
Settings 패널 추가하기
하나의 HTML로 완성하기
jQTouch 사용자 정의에 맞추기
이 장을 마치며

5장 Client-Side 데이터 기억장치
localStorage와 sessionStorage
사용자 설정을 localStorage에 저장하기
Client-Side Database
이 장을 마치며

6장 Offline
Offline Application Cache의 기본
Online Whitelist와 Fallback 옵션
동적 Manifest 파일 생성하기
Debugging
이 장을 마치며

7장 Native
PhoneGap 소개
아이폰에 우리가 만든 애플리케이션 인스톨하기
JavaScript로 아이폰 제어하기
이 장을 마치며

8장 iTunes에 애플리케이션 올리기
아이폰 Distribution Provisioning Profile 만들기
아이폰 Distribution Provisioning Profile 인스톨하기
프로젝트명 변경하기
애플리케이션 바이너리 준비하기
애플리케이션 올리기
기다리는 동안
참고할 사이트

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
사용자 삽입 이미지


정규 표현식은 왜 어려운가?

어떤 언어도 마찬가지이지만 기초가 약하면 어렵게 느껴진다. 기초가 튼튼하면 자신감을 갖게 되며 도전 정신이 생기고 창의력이 발동한다. 이는 소프트웨어 개발을 30년 넘게 해온 노병의 경험에서 나온 결론이다. 모두 떠난 자리를 외롭게 지키고 있는 옹고집 개발자의 신념이다.

어떻게 하면 기초를 쌓을 수 있는가?

이에 대한 대답은 한마디로 기본을 완전하게 이해해야 한다는 것이다. 삽질은 결단코 기초가 쌓이지 않는다. 적어도 완벽을 추구하는 개발자라면 기본을 파고 들어야 한다. 물고 늘어져야 한다. 이런 가운데 자연스럽게 기초가 쌓이고 다져진다. 개발한 프로그램에 대해 확신을 갖게 된다. 뒤돌아 섰을 때 성취감과 자신감이 남는다.

이 책은 이런 점에 주안점을 두었다.

독자가 기본을 이해할 수 있도록 분해하고 또 분해했다. 이렇게 하고 싶어서 한 것이 아니라 소프트웨어 개발이 필자의 체질을 이렇게 만들었기 때문에 어쩔 수 없다. 더 이상도 더 이하도 아니다. 이 책의 마지막 페이지를 넘길 때 어렵게 느껴졌던 정규 표현식에 자신감을 갖게 될 것으로 확신한다.

대상 독자

/^[\w][ \w-_\.]+@[ \w]+( \.[A-Za-z0-9]+)*( \.[A-Za-z]{2,3})$/i;

위 코드는 E-Mail 주소를 체크하는 정규 표현식 패턴이다. 이를 분석할 수 있다면 이 책의 대상 독자가 아니다. 한편 이를 분석할 수 없다면 이 책의 대상 독자다.

이 책은 정규 표현식을 만들어 가는 기본을 다루며, 기본을 조합하면 위와 같은 정규 표현식이 나온다. 이를 통해 보다 적극적으로 개발에 임할 수 있으며 정규 표현식으로 구현할 수 있는 것을 창출해 낼 수 있다.

이 책의 중심

정규 표현식의 3대 요소는 매치 대상, 패턴, 메소드다. 매치 대상은 모든 언어가 같으며 패턴은 자바스크립트와 다른 언어가 거의 같다. 하지만 메소드는 자바스크립트와 다른 언어가 다르며, 자바스크립트 자체도 사용하는 메소드에 따라 결과가 다르다.


이 책은 자바스크립트의 정규 표현식을 중심으로 다룬다. 따라서 특화된 전문성을 갖고 있다. 정규 표현식 하나하나의 패턴 문자에 대한 설명과 예제를 제시하고 근거를 분석했다. 실제로 사용하는 정규 표현식과 자바스크립트가 통합한 코드를 제시하고 분석했다.


머리말

예전에는 정규 표현식을 만나면 피하거나 돌아서 갔다. 그런 날들이 이어지면서 가슴 어딘가에 응어리가 남는 것을 느끼며 이건 아니라고 혼잣말을 되뇌었지만 그런 모습은 계속되었다. 답답한 시간들이 흐른 후 정규 표현식에 대해 자신감을 갖게 된 날부터 보다 더 적극적으로 개발에 임할 수 있게 되었다. 이 책은 바로 이런 필자의 어려웠던 과거 경험을 바탕으로 썼다.

▶ 자바스크립트 정규 표현식의 중심

이 책은 자바스크립트의 정규 표현식을 중점적으로 다룬다. 정규 표현식은 자바스크립트 이외의 다른 언어에서도 지원하지만 언어마다 조금씩 차이가 있다. 물론 전체를 망라하여 포괄적으로 다루면 좋겠지만 이는 전문성이 떨어지므로 자칫 잘못하면 남는 것이 없게 된다.

필자의 오랜 경험에 의하면 하나라도 완전하게 접근해야 한다. 그래야 내 것이 되고 실전에 적용할 수 있다. 어설프게 접근하면 이도 저도 아닌 허사가 되고 만다. 점(.) 하나만 잘못 찍어도 다르게 구현되는 것이 프로그램(program)이다. 특히 문장이 아닌 기호 중심으로 구성된 정규 표현식은 더욱 세심한 전문성이 요구된다. 이런 이유로 이 책에서는 자바스크립트의 정규 표현식만 집중적으로 다루었다.

▶ 문자열 처리에 최적

자바스크립트 애플리케이션(application)에서 정규 표현식은 약방의 감초다. 그렇게 두드러지게 표시가 나지는 않지만 정규 표현식이 없으면 어딘가 부족함을 느낀다. 특히 문자열을 처리할 때 필요성을 절실하게 느낀다. 복잡하게 작성할 코드를 단 몇 줄로 끝낼 수 있으며 때로는 정규 표현식이 아니면 구현할 수 없는 문자열도 있기 때문이다. 값을 검색하고 일치된 값을 지정한 값으로 바꾸는 것은 정규 표현식의 백미이며 아름다움의 극치다.

▶ 선행 필요 지식

일단 이 책을 읽는 독자는 자바스크립트의 기본 문법을 이해하고 있어야 한다. 만약 독자가 자바스크립트를 전혀 모른다면 이 책을 보기 전에 자바스크립트 책을 먼저 볼 것을 권한다. 정규 표현식은 그 자체로도 실행되지만 자바스크립트와 같이 사용하면 더욱 완전한 형태가 된다.

이 책에서는 정규 표현식과 관련된 자바스크립트를 약간 다루고 있는데, 정규 표현식을 더 명확하게 설명하기 위해 자바스크립트 코드를 포함시켰다. 정규 표현식을 다루려면 어쩔 수 없이 자바스크립트가 동반되어야 한다. 정규 표현식은 독립된 클래스(Class)이지만 이를 실질적으로 사용하는 클래스는 String(문자열) 클래스이며 자바스크립트는 정규 표현식만 단독으로 다룰 수 없는 구조로 되어 있기 때문이다.

▶ 예제 분류

예제를 되도록 간단하게 하려고 노력했다. 필자의 경험에서 볼 때 코드를 길게 작성하면 그냥 넘어가고 싶은 충동이 일어날 수도 있기 때문이다. 따라서 기본 사항을 중심으로 간단하게 하면서 다양한 각도에서 예제를 다루었다.

기본 사항을 다룬 후에 몇 개의 정규 표현식이 포함된 실제 사용 가능한 코드를 제시하였으며 이를 설명하고 분석하였다. 각 장에서 다룬 내용이 기본 단계라고 한다면 이는 중간 단계에 속한다. 맨 끝의 10장은 마지막 단계로 정규 표현식과 자바스크립트를 통합한 실제로 사용할 수 있는 코드를 중점적으로 게재하고 이를 설명, 분석하였다. 즉 3단계로 나누어 접근하였다.

▶ 기본이 중요

정규 표현식은 디버깅이 어렵다. 자바스크립트로 작성한 코드는 단계마다 결과를 볼 수 있는 방법이 있지만 정규 표현식은 과정이 아닌 결과밖에 볼 수 없으므로 디버깅이 어렵다. 정규 표현식을 분리하는 것이 유일한 방법이지만 때로는 분리하지 못하는 형태도 있다.

이에 대처하기 위한 가장 근본적인 해결 방법은 기초, 기본을 튼튼하게 하는 것이다. 우선 간단한 것부터 접근해서 기본 사항을 이해하고, 점진적으로 어려운 것에 접근해야 스트레스를 받지 않으면서 실력을 향상시킬 수 있다.

책을 한 페이지씩 넘기면서 기본을 탄탄하게 잡아가면 조금씩 자신감이 생길 것이다. 예제가 간단하므로 직접 작성해 보면서 기본을 이해하고 내 것으로 만든다면, 마지막 페이지를 넘길 때 어렵기만 한 정규 표현식에 자신감을 갖게 될 것으로 확신한다.


이 책의 구성

이 책은 총 10장으로 구성되어 있으며 각 장의 주요 내용은 다음과 같다. 이처럼 상세하게 장을 나눈 것은 정규 표현식 패턴 문자 하나하나가 기능을 갖고 있으므로 이에 집중하기 위함이다. 슬슬 넘겨가면서 보는 형태가 아니라 세밀하게 분석하는 형태이기 때문이다.

정규 표현식의 가장 기본적인 형태를 통해 정규 표현식의 3대 요소와 자바스크립트에서 정규 표현식의 역할을 알아본다. 이 책의 예제를 실행하기 위한 환경과 본문의 기준 형태가 작성되어 있다.

모든 언어는 나름대로 작성 방법이 있으며 정규 표현식 또한 작성 방법이 있으므로 이를 작성하는 방법을 알아본다. 정규 표현식 메커니즘과 자바스크립트 메커니즘을 비교하여 차이점을 정리하였다. 객체지향 관점에서 보면 함수와 메소드는 차이가 있다. 무엇에 차이가 있는지, 정규 표현식에서 사용하는 메소드와 클래스를 알아본다.

정규 표현식에서 가장 단순한 형태는 문자열로 매치하는 형태다. 이를 통해 정규 표현식을 매치하는 기본 형태와 매치되었을 때 반환되는 형태를 알아본다. 정규 표현식에서 자주 사용하는 대체(|), 앞뒤 문자에 매치하는 점(.), 공백 문자, 줄 분리자를 살펴 본다.

자바스크립트의 정규 표현식과 다른 언어의 정규 표현식이 다른 점은 메소드다. 또한 자바스크립트 정규 표현식은 메소드에 따라 매치 결과가 달라진다. 따라서 자바스크립트로 정규 표현식을 구현하려면 반드시 메소드를 이해해야 한다. 자바스크립트에 익숙한 독자라면 익히 알고 있는 메소드이지만 정규 표현식 중심으로 살펴 볼 필요가 있다.

매치할 위치를 지정하여 매치할 수 있다. 이 장부터 본격적으로 정규 표현식 패턴 중심으로 접어든다. 문자열 처음부터 매치(^), 문자열 끝에 매치($), 단어 경계 매치(\b), 63개 문자 매치(\B)가 이에 속한다.

매치 수를 지정하여 매치할 수 있다. 매치 수에 관계없이 모두를 매치하는 패턴, 범위를 지정하여 매치하는 패턴, 욕심 없는 매치를 행하는 패턴을 알아본다. *, +, ?, {숫자} {숫자,}, {숫자,숫자}, *?, +?, ??와 같은 패턴 문자가 이에 해당된다.

범위 또는 집합을 지정하여 매치할 수 있다. 집합에 지정한 문자 단위로 매치하고 패턴 문자를 일반 문자로 인식하는 대괄호[ ], 63개 이외 문자에 매치하는 [\b], 매치 구간을 지정하는 하이픈(-), 지정한 문자를 제외하고 매치하는 [^]에 대해 알아본다. CSS 프로퍼티 이름을 변경하는 사례와 스크립트 형태에서 텍스트를 추출하는 사례를 분석한다.

역슬래시(\)에 연이어 문자를 작성한 형태를 이스케이프 문자 클래스라고 하며 이는 수한 기능을 갖는다. 일반 문자로 인식하는 \^, 숫자만 매치하는 \d, 숫자 이외에 매치하는 \D, 보이지 않는 문자에 매치하는 \s, 보이는 문자에 매치하는 \S, 63개 문자에 매치하는 \w, 63개 이외 문자에 매치하는 \W, 유니코드에 매치하는 \u, 16진수 값으로 매치하는 \x, 제어 문자를 매치하는 \c에 대해 알아본다. 공백을 체크하는 패턴 사례, 문자열 앞뒤의 공백을 삭제하는 사례, E-Mail 주소를 체크하는 사례를 분석한다.

정규 표현식에서 가장 돋보이는 패턴 문자를 꼽는다면 괄호( )라고 할 수 있다. 매치 결과를 캡처하는 ( ), 캡처하지 않는 (?:), 전방에 매치하는 (?=), 전방 부정에 매치하는 (?!)가 이에 속한다. 다수의 괄호를 사용하면서 괄호 안에 패턴을 작성했을 때 어려움이 가중되지만 그만큼 탁월하게 기능을 구사할 수 있다.

백래퍼런스인 \숫자 형태, 캡처된 값을 참조하는 RegExp.$숫자 형태를 사용해서 괄호( )로 캡처한 값을 참조할 수 있다. 괄호( )와 대체(|) 패턴 문자가 어울린 사례를 통해 최대로 매치하려는 정규 표현식의 메커니즘을 다룬다. 캡처된 값을 활용하여 숫자와 숫자 사이에 콤마를 삽입하는 사례를 분석한다.

자바스크립트는 RegExp 클래스를 통해 정규 표현식을 구현하며 이 클래스에는 두 개의 메소드가 있다. RegExp가 클래스이므로 이를 인스턴스로 생성할 수 있으며 이에 속한 메소드를 호출할 수 있다. 또한 인스턴스에서 제공하는 프로퍼티를 사용할 수 있다.

정규 표현식을 활용하는 사례 중심으로 자바스크립트와 정규 표현식을 설명하고 분석한다. 사례 코드는 필자가 개발한 자바스크립트 라이브러리인 MethodChain에서 발췌한 것으로 즉시 사용할 수 있다. 아울러 역동적으로 정규 표현식 패턴을 만들어 사용하는 개념을 다룬다.


실행 기준 브라우저

이 책의 예제는 다음과 같은 브라우저에 실행했다. 정규 표현식 몇몇 기능에 크로스 브라우저 문제가 있다.

- IE 7.0
- Firefox 3.0.5
- Chrome 3.0
- Safari 3.2.1
- Opera 10.10


소스 코드와 정오표

이 책에 포함된 소스 코드는 예제를 제시하여 설명하기 위함이다. 이를 독자의 소프트웨어에 적용하여 발생하는 문제에 대해서는 필자가 책임을 지지 않는다. 또한 소스 코드 자체를 판매하거나 다른 책에 포함시키는 것과 같은 상업적인 목적에 사용할 수 없다.

이 책을 출판한 후 발견된 정오표는 필자가 운영하는 카페(http://cafe.naver.com/ requirements.cafe)에 게재할 것이며 이 책의 내용에 대한 문의도 카페를 이용할 수 있다.


김 영 보

1979년 주)코오롱 전산실에 입사한 후 31년 동안 오직 소프트웨어만 개발해 온 옹고집 베테랑 개발자이며 분석가다. 수많은 프로젝트를 수행했으며 산전수전 다 겪은 역전 노장이다. 이런 노하우를 바탕으로 자바스크립트 라이브러리인 MethodChain을 개발, 발표하였으며 지속적으로 발전시켜 나가고 있다. MethodChain은 http://www.methodchain.com에서 만날 수 있으며 라이브러리 소스 파일을 다운받을 수도 있다.

그에게 있어 소프트웨어 개발은 삶 자체다. 한시도 노트북 앞을 떠나지 않는다. 그에게는 소프트웨어 개발의 매 순간순간이 행복인 것 같다. 그는 스포츠를 매우 좋아한다. 때로는 경기장을 찾아 목소리 높여 응원하기도 한다.

[저서]

- Ajax DOM 스크립팅, 2008.05, 도서출판 ITC
- Ajax prototype.js: 프로토타입 완전분석, 2007.03, 위키북스
- Ajax 활용, 2006.04, 가메 출판사
- 요구분석을 위한 Event Process 모델링, 2005.11, 가메 출판사

카페 http://cafe.naver.com/requirements.cafe




차례 보기 및 구매 사이트 가기


http://search.naver.com/search.naver?where=nexearch&query=%C1%A4%B1%D4%C7%A5%C7%F6%BD%C4&sm=top_hty&fbm=1

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0

사용자 삽입 이미지


안드로이드는 왜 특별한가?

• 리눅스와 오픈 소스 기반의 진정한 의미의 개방적 무료 개발 플랫폼

휴대폰 제조사들은 로열티를 지불하지 않고 플랫폼을 이용할 수 있으며 자유롭게 커스터마이징할 수 있다는 이유로 안드로이드를 좋아하며, 개발자들은 파산하거나 인수될지 모를 특정 공급업체에 발이 묶여 있지 않고 유동성이 있어 좋아한다.

• 인터넷 매시업에 영감받은 구성 요소 기반의 아키텍처

응용프로그램의 한 부분은 다른 곳에 개발자들이 미처 생각하지도 못했던 방식으로 쓰일 수 있다. 기본적으로 제공되는 내장 구성요소를 자신만의 버전으로 대체할 수 있다. 이것은 모바일 공간에서 창조의 새로운 장을 열어 줄 것이다.

• 격이 다른 수많은 기본 제공 서비스

위치 기반 서비스는 여러분이 위치에 따라, GPS 또는 휴대전화 기지국을 이용하며 사용자가 자신의 경험을 직접 정의하게 해 준다. SQL 데이터베이스는 최대 전원으로 가동되는데, 지속적이지 않은 인터넷 연결성과 동기화에 개별 로컬 저장소의 이점을 이용한다. 브라우저와 지도 보기가 응용프로그램에 직접 임베딩될 수 있다. 이와 같이 다양한 내장 기능은 성능의 기준은 높이며 개발비용은 낮춰 준다.

• 응용프로그램 수명주기의 자동 관리

프로그램은 여러 보안층으로 서로 격리되어, 스마트폰에서는 여태껏 볼 수 없던 수준의 시스템 안정성을 제공한다. 어떤 응용프로그램이 활성화되어 있으며 다른 프로그램을 실행시키기 위해 무엇을 종료시켜야 하는지 등을 더 이상 걱정하지 않아도 된다. 안드로이드는 낮은 전력과 낮은 메모리 장치에 최적화되어 있는데, 이전 어느 플랫폼도 시도해보지 못한 수준이다.

• 고품질의 그래픽과 음향

플래시에 영감 받은 부드럽고 앤티엘리어싱된 2D 벡터 그래픽과 애니메이션은 3D로 가속된 OpenGL 그래픽과 합쳐져 신종의 게임과 비즈니스 응용프로그램들을 창조해내고 있다. 오디오와 비디오의 가장 흔한 산업 표준인 H.264(AVC), MP3, AAC 등의 형식을 위한 코덱이 내장되어 있다.

• 현재와 미래의 광범위한 하드웨어를 넘나드는 휴대성

모든 프로그램은 자바로 작성되고, 안드로이드의 달빅 가상 머신에서 실행되므로 ARM, x86 및 여러 아키텍처에 걸쳐 모두 사용될 수 있다. 키보드, 터치, 기울임, 카메라, 음성, 트랙 볼 등의 다양한 입력 방식의 지원. 사용자 인터페이스는 어떤 화면 해상도나 화면 방향에 맞춰서도 정의될 수 있다.


이 책의 구성

이 책은 세 부분으로 나뉘어 있다. 대략적으로 말하자면, 쉬운 주제에서 어려운 주제로, 또는 일반적인 부분에서부터 덜 흔한 내용 쪽으로 진행된다고 볼 수 있다.

여러 장에서 공통된 스도쿠 게임 예제가 사용된다. 점차적으로 게임에 기능을 추가함으로써, 사용자 인터페이스, 멀티미디어, 안드로이드의 수명주기 등을 포함한 안드로이드 프로그래밍의 다양한 면을 배우게 된다.

제1부는 안드로이드에 대한 소개로 시작한다. 안드로이드 에뮬레이터를 설치하는 방법과 통합 개발 환경(IDE)을 사용하는 방법을 배우고 나서 안드로이드 수명주기와 같은 개념을 배워 본다. 안드로이드 개발은 조금 낯설 수 있으므로 다음 주제로 넘어가기 전, 이러한 개념을 확실히 알고 넘어간다.

제2부에서는 안드로이드 사용자 인터페이스, 2차원 그래픽, 멀티미디어 구성요소 및 간단한 데이터 액세스를 다뤄 본다. 이러한 기능은 여러분이 만들 대부분의 프로그램에 사용될 것이다.

제3부는 안드로이드 플랫폼에 대해 더욱 깊이 들어간다. 여기서는 외부 세상에 연결하는 법, 위치 기반 서비스, 내장된 SQLite 데이터베이스 및 3차원 그래픽에 관해 배워 본다.

이 책 마지막의 부록에는 안드로이드와 자바 표준 에디션(SE: Standard Edition)의 차이점, 안드로이드 위젯, 안드로이드 마켓에 대한 내용이 있다.



이 책의 대상 독자

이 책의 유일한 요구사항은 자바 또는 다른 객체 지향 프로그래밍 언어(C# 정도면 충분하다)에 대한 기본적인 이해다. 모바일 기기 소프트웨어 개발에 관한 사전 경험은 필요하지 않다. 개발 경험이 있다면 그 경험을 잊는 게 나을 것이다.



저자 소개

에드 버넷(Ed Burnette)

프로그래머이자 저자로서, 그리고 연설자로서 25년 이상의 경험을 갖고 있는 소프트웨어 업계의 베테랑이다. 상업용 컴퓨터 게임에서 고성능 그리드 컴퓨팅 시스템에 이르기까지 다양한 개발을 두루 섭렵하였다. 에드는 SAS 고급 컴퓨팅 연구소(SAS Advanced Computing Lab)의 창립 멤버이자 수석 연구원이며, 『Google Web Toolkit: Taking the Pain out of Ajax』와『Eclipse IDE Pocket Guide』를 포함한 많은 기술 관련 기사 및 서적을 집필하였다. ZDNet의 개발 커넥션(Dev Connection) 블로그를 담당하고 플래닛 안드로이드(http://www.planetandroid.com)를 만들어 운영중에 있다.



역자 소개

한정민


미국 카네기 멜론 대학Carnegie Mellon University에서 정보 시스템Information Systems과 휴먼 컴퓨터 인터랙션HCI, Human-Computer Interaction을 전공으로, 그리고 커뮤니케이션 디자인Communication Design을 부전공으로 공부하였다. 웹2.0, UX, 사용성, 모바일, SNS 등에 관심이 많으며 최근 SK C&C의 mobile commerce 사업추진단에 합류하였다. SK C&C에 합류하기 전에는 삼성 전자 모바일 및 웹 서비스 전략과 기획을 위한 리서치 및 컨설팅을 하였다.

모바일과의 인연은 아이폰의 첫 출시에 맞춰 애플리케이션을 선보이기 위해 애플과 함께 일하던 샌프란시스코의 IT 회사에서 시작되었다. 여행을 좋아해 유럽, 하와이, 팔라우(태평양의 섬)의 정부와 비영리 단체에서 일한 경험이 있으며 미국 샌프란시스코에서 직장 생활을 하다 귀국했다. 번역 서적으로는 ‘헬로, 안드로이드’, ‘IT 개발자가 쓴 통쾌한 인간관리 이야기’, ‘고성능 MySQL(공역)’, ‘웹 접근성(공역)’, ‘웹 표준(진행 중)’ 등이 있다.




목차보기 및 구매


http://book.naver.com/bookdb/book_detail.nhn?bid=6264911


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0

사용자 삽입 이미지

도서분류 : IT 단행본 >> 네트워크/보안   
저자명 : 게리 A. 도나휴   
역자명 : 최용호  
출판사 : 도서출판 ITC  
정 가  : 35,000원  
ISBN : 978-89-6351-012-5  
원서명 : Network Warrior   
출간년월 : 2009 년 12 월   
페이지 : 704 쪽   
크기 : 세로 : 245, 가로 : 188, 반양장    

______________________________________

내용 및 특징
             
이 책에서는 자격증 시험에서 다루지 않지만 실무에서 업무를 볼 때 필요한 내용들을 다루고 있다. 네트워크 인프라 분야의 완벽한 실용 지침서를 지향하는 이 책을 읽으면 CCNA와 같은 시험에 나오는 가상의 상황이 아닌 실제 시스코 네트워크를 관리할 수 있는 능력을 갖출 수 있을 것이다.

이 책을 읽으면 라우터, 스위치, 방화벽의 세계에 무엇이 있는지, 혼잡한 네트워크에서 발생한 장애를 어떻게 처리하는지, 네트워크의 업그레이드 시점과 이유가 무엇인지를 단계별로 알 수 있다. 또한 이더넷이 어떻게 발전해 왔는지를 포함하여 다양한 네트워킹 특징을 역사적인 관점에서 배울 수 있다. 이 책에 사용된 예제는 저자의 실제 경험 속에서 우러나온 생생한 실무 예제로서, 이들 예제를 이해하고 활용하면 복잡한 기술들이 네트워크에서 어떤 기능을 하는지, 이 기술들을 네트워크에서 어떻게 설정할 수 있는지를 알 수 있다. 이 책에서 다루는 주제는 다음과 같다.

• 현재 사용되고 있는 네트워크 종류인 LAN, WAN, MAN, CAN 등
• 자동 협상의 특징과 자동 협상이 네트워크 속도 저하의 원인이 되는 이유
• 텔레콤 전문 용어, 데이터 네트워크와 텔레콤 전문 용어가 다른 이유
• 방화벽 이론, 설계, 설정. 시스코 PIX 방화벽 사용
• 시스코 장비에서 경로 맵과 액세스 리스트를 설계하는 방법
• 네트워크 계획 수립 및 장비 배치
• 변경 통제를 이용한 네트워크 관리
• 경영자에게 엔지니어의 생각을 전달하는 방법
• IP 설계와 서브네팅을 쉽게 처리하는 방법
• 서버 로드 밸런싱 기술
• QoS를 실제로 적용하는 방법(QoS로 할 수 있는 일과 할 수 없는 일)
• T1과 DS3 심층 설명

이 책에 제시된 전략과 예제를 적절하게 사용하면 독자 여러분의 업무를 원활하게 처리할 수 있을 뿐더러 매일 펼쳐지는 복잡한 전투에서 승리할 수 있을 것이다.

지은이 소개

게리 A. 도나휴(Gary A. Donahue)는 프로그래머, 메인프레임 관리자, 기술지원센터 엔지니어, 네트워크 관리자, 네트워크 아키텍트와 컨설턴트로서 지난 25년 동안 컴퓨터 업계에서 일해 왔으며, 지금도 현역 컨설턴트로서 일하고 있다. 그는 미국 전역을 포괄하는 한 컨설팅 회사에서 네트워크 인프라 담당 이사로 재직하다 현재는 뉴저지를 기반으로 활동하는 컨설팅 회사인 GAD Technologies를 설립하여 대표이사로 재직하고 있다.

-----------------------------------------

차례

Part 1 허브, 스위치, 스위칭 1

제1장   네트워크란 무엇인가?  3

제2장   허브와 스위치  7
           허브  7
           스위치  12

제3장   자동 협상  22
          자동 협상이란 무엇인가?  22
          자동 협상의 작동 원리  23
          자동 협상 실패 시점  24
          자동 협상 베스트 프랙티스  26
          자동 협상 설정  27

제4장   VLAN  28
          VLAN 연결  28
          VLAN 설정  32

제5장   트렁킹  40
          트렁크의 작동 원리  41
          트렁크 설정  46

제6장   VTP  53
          VTP 가지치기  57
          VTP 사용 시 주의할 점  59
          VTP 설정  60

제7장   이더채널  68
          로드 밸런싱  70
          이더채널 설정과 관리  74

제8장   스패닝 트리  82
          브로드캐스트 폭풍  84
          MAC 주소 테이블 불안정성  89
          스패닝 트리로 루프 방지  91
          스패닝 트리 관리  95
          스패닝 트리의 추가 기능  99
          스패닝 트리의 공통된 문제  105
          스패닝 트리 문제를 막기 위한 설계  108


Part 2  라우터와 라우팅  111

제9장   라우팅과 라우터  113
          라우팅 테이블  115
          경로 종류  118
          IP 라우팅 테이블  119

제10장  라우팅 프로토콜  127
           라우터 사이의 통신  128
           메트릭과 프로토콜 종류  132
           관리 거리  135
           특수한 라우팅 프로토콜  136

제11장  재분배  162
           RIP로 재분배  165
           EIGRP로 재분배  169
           OSPF로 재분배  172
           상호 재분배  174
           재분배 루프  175
           재분배 제한  178

제12장  터널  188
           GRE 터널  189
           GRE 터널과 라우팅 프로토콜  196
           GRE와 액세스 리스트  202

제13장  탄력적인 이더넷  204
           HSRP  205
           HSRP 인터페이스 추적  208
           HSRP로 충분치 않은 상황  210

제14장  경로 맵  214
           경로 맵 만들기  216
           정책 라우팅 예제  218

제15장  시스코 라우터의 스위칭 알고리즘  226
           프로세스 스위칭  228
           인터럽트 컨텍스트 스위칭  230
           스위칭 경로 설정 및 관리  237


Part 3  멀티레이어 스위치  245

제16장  멀티레이어 스위치  247
           SVI 설정  249
           멀티레이어 스위치 모델  255

제17장  시스코 6500 멀티레이어 스위치  256
           아키텍처  259
           CatOS와 IOS  277

제18장  카탈리스트 3750 소개  283
           스태킹  284
           인터페이스 범위  285
           매크로  286
           플렉스 링크  291
           폭풍 제어  292
           포트 보안  297
           SPAN  301
           음성 VLAN  306
           QoS   308


Part 4  텔레콤  313

제19장  텔레콤 전문 용어  315
           소개 및 역사  315
           텔레콤 용어집  316

제20장  T1  332
           T1 듀플렉스 이해  333
           T1의 종류  334
           인코딩  335
           프레이밍   338
           성능 모니터링  340
           알람  342
           T1 트러블슈팅  346
           T1 설정  351

제21장  DS3  357
           프레이밍  358
           라인 코딩   362
           DS3 설정  362

제22장  프레임 릴레이  370
           프레임 릴레이 서비스 주문  374
           프레임 릴레이 네트워크 설계  375
           과다 신청  378
           LMI  379
           프레임 릴레이 설정  381
           세 노드가 있는 프레임 릴레이  384
           프레임 릴레이 트러블슈팅  391


Part 5  보안과 방화벽  397

제23장  액세스 리스트  399
           액세스 리스트 설계  399
           멀티레이어 스위치의 ACL  413
           리플렉시브 액세스 리스트  418

제24장  시스코 장비의 인증  425       
          기본 인증  425
          AAA 인증  438

제25장  방화벽 이론  448
           베스트 프랙티스  449
           DMZ  451
           대체 설계  456

제26장  PIX 방화벽 설정  458
           인터페이스와 우선권  459
           이름  461
           오브젝트 그룹  462
           픽스업  466
           페일오버  468
           NAT  476
           기타  482
           트러블슈팅  485


Part 6  서버 로드 밸런싱  489

제27장  SLB 기술  491
           로드 밸런싱 유형  492
           로드 밸런싱 구현 방법  495
           서버 로드 밸런싱 설정  496

제28장  CSM 활용  504
           명령어 입력하기  507
           CSM 업그레이드  511


Part 7  QoS  515

제29장  QoS 소개  517
           QoS 유형  522
           QoS 메커니즘  524
           잘못된 QoS 상식  530

제30장  QoS 체계 설계  534
           요구사항 결정  534
           라우터 설정  540

제31장  혼잡한 네트워크  546
           네트워크의 혼잡 여부 파악  546
           문제 해결  553

제32장  통합 네트워크  555
           설정  556
           QoS 모니터링  557
           통합 네트워크 트러블슈팅  561


Part 7  QoS  571

제33장  네트워크 설계  573
           문서화  573
           장비 명명 규약  585
           네트워크 설계  587

제34장  IP 설계  599
           공인 IP 공간과 사설 IP 공간  600
           VLSM  603
           CIDR  605
           IP 네트워크 공간 할당  607
           IP 서브넷 할당  610
           IP 서브네팅 쉽게 하기  615

제35장  NTP  624
           정확한 시간  625
           NTP 설계  626
           NTP 설정  628

제36장  장애  632
           사람의 실수  632
           여러 구성요소의 장애  634
           재난 체인  634
           페일오버 테스트  636
           트러블슈팅  637

제37장  필자의 격언  642
           격언 1  642
           격언 2  645
           격언 3  647

제38장  좌절을 피하는 법  652
           모든 것이 엉망인 이유  652
           경영진을 설득하는 법  656
           업그레이드를 해야 하는 시점과 그 이유  662
           변경 제어의 중요성  666
           컴퓨터 얼간이가 되지 않는 법  668

           찾아보기  673

________________________________________

저자 머리말

이 책에 사용된 예제는 필자와 필자의 동료들이 실제 업무에서 사용하던 것들이다. 물론 법적인 이유나 명예 때문에 개인이나 조직의 신원이 들어간 세부적인 내용과 일부 정보를 변경한 후에 사용하였다.

이 책의 예제에는 일부 경로를 제외하고 주로 시스코 장비를 사용하였으며, 프로토콜은 TCP/IP를 기반으로 하였다. 이러한 종류의 책에서는 여러 벤더의 다양한 프로토콜과 장비를 사용한 예제를 포함시켜야 한다고 이야기할 수 있고, 그런 지적이 어느 정도 합당하다. 그러나 이 책에서 많은 기술을 소개하면서, 여러 벤더의 관점에서 이들 기술의 예제까지 모두 보여주려면 책은 매우 두꺼워질 것이며, 이는 현실적으로 바람직하지 않다고 판단하였다.

경쟁사들은 동의하지 않겠지만 필자가 보기에 시스코 시스템즈는 네트워킹 분야의 선도 업체가 분명하다. 또한 TCP/IP는 인터넷 프로토콜로서 대부분의 네트워크 장비에 사용된다. TCP/IP가 실제 최고의 프로토콜인가? 아마 아닐 것이다. 그러나 TCP/IP는 현재 널리 통용되고 있는 프로토콜이므로 이 책의 예제에서 이를 사용했다. 얼마 전까지만 해도 시스코 CCIE 시험에서 토큰 링, 애플토크, IPX를 사용했었다. 물론 지금은 아니다. 이것은 시스코도 TCP/IP가 대세가 되었다는 것을 인정하고 있는 증거다.

WAN 기술에는 다이얼업 모뎀, ISDN, T1, DS3, SONET들이 포함된다. 이 책에서는 이들 주제를 많이 다룰 것이다. 그러나 너무 깊게 들어가지는 않는다. 왜냐하면 이들 주제 하나하나가 한 권의 책으로 나와야 될 정도로 분량이 방대하며, 또한 오라일리에서 이들 주제를 다룬 책들을 이미 많이 출간했기 때문이다.

이 책에 사용된 모든 예제는 실무 경험에서 나온 것으로서 대부분은 필자가 네트워크 엔지니어, 컨설턴트, 매니저, 강사로 일할 때 확보한 것이다. 필자는 회사를 운영하고 있고, 업계에서 최고인 엔지니어들과 함께 일하는 기쁨을 누리고 있으며, 본문에 제시되어 있는 솔루션들은 필자와 함께 팀으로 움직이는 동료들이 직면했던 문제들을 해결하는 과정 중에 발견하고 배운 것들이다.

이 책의 독자

이 책은 데이터 네트워킹 분야의 초급 자격증에 준하는 지식을 갖춘 이들을 주 독자층으로 기획되었다. CCNA나 이에 준하는(혹은 이보다 높은) 수준의 자격증을 가지고 있는 이들이 이 책을 읽는다면 분명 많은 도움이 될 것이다. 이 책을 쓰면서 복잡한 내용을 이해하기 쉽게 설명하려고 노력하였다. 본문에서 많은 주제를 소개하고 있지만 단순히 소개가 아니라 해당 주제에 관련된 일반적인 작업을 처리하기 위한 참고 정보로서도 충분한 가치를 지니고 있다. 필자는 마음속으로 가르치는 사람이라고 생각하며, 이 책을 통해서 많은 사람에게 가르칠 수 있게 되었다. 한 가지 바람이 있다면 이 책에 논의된 내용을 통해 독자 여러분이 원하는 정보를 얻고 또한 즐거움까지 얻는 것이다.

필자는 컴퓨터, 네트워킹, 텔레콤 산업 분야에서 일하는 엔지니어들이 기본 개념에 관해 잘못 알고 있다는 이야기를 지난 수 년 동안 해 왔다. 대부분의 경우에 그 주된 이유는 가르치는 사람들이 잘못 가르쳤기 때문이다. 즉, 복잡한 개념을 제대로 전달하지 못하는 참고 자료들을 사용했기 때문이라는 것이 필자의 생각이다. 바라건대, 컴퓨터, 네트워킹, 텔레콤 분야의 복잡해 보이는 개념이 얼마나 쉬운지 이 책을 읽으면서 알아가기를 바란다. 물론 필자가 자주 하는 말대로, “언젠가 방법을 아는 것은 쉽다.” 그래서 필자는 저술함에 있어서, 이 책을 집어든 모든 사람이 이 책에서 다루는 내용을 이해하는 데 도움을 주기 위해서  혼신의 힘을 기울였다.

추측컨대, 이 책을 읽고 있는 독자는 네트워킹에 관해 더 많이 알고 싶어 하는 사람일 것이다. 배움은 끝이 없는 모험으로, 독자 여러분의 여행에 필자가 동참하게 된 것을 영광으로 생각한다. 필자도 지난 24년 동안 컴퓨터, 네트워킹, 텔레콤에 관한 공부를 계속해 오고 있으며, 배움에 대한 이 여행은 끝이 없을 것이다.

이 책은 실제 업무에서 알아야 될 것을 가르치고자 한다. ‘2계층 스위치’ 대신 ‘3계층 스위치’를 선택해야 하는 시점을 알고 있는가? 관리하고 있는 네트워크가 그 역할을 제대로 수행하고 있는지 설명할 수 있는가? 브로드캐스트 폭풍 문제를 해결할 수 있는가? 어떤 문제점이 있는지 알 수 있는가? 스패닝 트리 루프가 있는지 어떻게 확인하며, 또한 이 문제가 있다면 어떻게 해결해야 하는가? T1과 DS3가 무엇이며, 이것이 어떻게 작동하는가? 이 모든 질문의 답, 아니 그 이상을 이 책에서 얻을 수 있다. 이 책에 들어 있는 설정 예제는 실제 상황과 설계에서 나온 것들이며, 필자의 실무 경험에서 우러나온 것들이다. 독자 여러분은 이 모든 것을 한껏 누리기를 바란다.

----------------------------------------

도서 구매정보

http://book.naver.com/bookdb/book_detail.nhn?bid=6194510






크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0

사용자 삽입 이미지

저자명 : Michael Lopp   
역자명 : 한정민  
출판사 : 도서출판 ITC  
정 가  : 15,000원  
ISBN : 978-89-6351-009-5  
원서명 : Managing Humans: Biting and Humorous Tales of a Software Engineering Manager   
출간년월 : 2009 년 7 월   
페이지 : 336 쪽   
크기 : 세로 : 205, 가로 : 140, 반양장 


이 책의 내용

이 책의 저자인 마이클 롭(Michael Lopp)은 실리콘 벨리의 베테랑 엔지니어 관리자다. 소프트웨어를 개발하면서 15년간 애플 컴퓨터, 넷스케이프, 시만텍, 볼랜드 등의 굴지의 IT 기업과 이름도 없이 사라져 버린 여러 벤처 기업 등의 다양한 회사에 몸을 담았다.

그는 여기에서 얻은 경험을 바탕으로 가상의 인물들을 내세워 IT기업에서 있어왔던 실수와 오류 등을 지적하며, 또 그 속에서 일하는 IT 개발자와 관리자들을 그만의 목소리로 조롱하기도 한다.

그는 블로그(www.randsinrepose.com)를 통하여 이 통쾌한 이야기를 담아내었고, 비로소 책으로까지 출간하게 되었다. 그의 블로그에서는 테크놀로지와 경영 및 관리 등에 대한 내용을 찾아볼 수 있으며, 경영 방법, 조직과 사회와 관련성을 유지하는 방법 등을 논하고 있다.

마이크는 바다와 가까운 캘리포니아 북쪽에 살고 있으며, 짬을 내어 여행하기를 희망한다.


차례

part 1 관리의 화살집
1장 비열한 놈이 되지 말자 2
2장 관리자는 나쁜 놈이 아니다 8
3장 월요일의 광분 28
4장 의제 감지 34
5장 명령 해부학 43
6장 정보 기근 51
7장 세심함, 속임수 그리고 침묵 59
8장 관리자 풍의 화법 67
9장 전문성 73
10장 페즈가 되지 말자 82
11장 퇴사 행동강령 95
12장 No라고 말하기 103


part 2 프로세스가 제품이다
13장 버전 1.0 114
14장 생각할 시간 갖기 130
15장 몰입 141
16장 말콤 사건 149
17장 상황 포착하기 159
18장 상태 보고서 2.0 165
19장 파급 이론 173


part 3 여러 버전의 당신
20장 인상과 관심 186
21장 전화 면접 성공시키기 195
22장 90일 동안 202
23장 주도자 209
24장 NADD 217
25장 동굴 속의 컴퓨터광 225
26장 회의에 참석하는 성격들 232
27장 점진주의자와 완벽주의자 241
28장 유기농과 기계공 248
29장 내향적인, 외향적인 그리고 전체론적인 257
30장 자유 전자 264
31장 조직을 정비하는 규칙 270
32장 해외 하청 위험 요소 278
33장 안내원 죠 286
34장 비밀 직함 295

용어집 302


머리말

이 책은 반 가상의 이야기이다.

사람을 관리하는 것에 대한 통찰력, 방법, 의견 등으로 가득 차 있다. 이 모든 내용은 내가 아는 사람들과의 실제 경험을 바탕으로 한다. 나의 관리자로서의 경험이 모두 긍정적이었다고 말하고 싶지만 사실 그렇지는 못했다. 이성을 잃었던 적도 있고 목격자들도 있다. 그 목격자들은 내가 정신을 차리도록 도와줬고 이 책에 또 한 장 쓰는 것을 가능케 해줬다.
이 책에서 언급된 사람들의 이름은 모두 가명이다.

내가 아는 모든 사람들을 떠올려 큰 가상의 주머니에 넣고 섞은 후, 페즈(Fez)라는 이름을 뽑고, 필(Phil)을 뽑고, 프랭크(Frank)라는 이름을 뽑았다. 이렇게 설정된 인물에 내가 몸담았기에 익숙한 넷스케이프나 볼랜드 등의 회사를 설정으로 해 이야기를 만들어 내가 설명하고자 하는 관리의 요점을 풀어냈다. 인물들과 마찬가지로 이야기들도 모두 꾸며낸 것이다. 가상의 이야기이지만 실제 경험을 바탕으로 한 것이며 당신에게 현실적으로 다가왔으면 하는 바람이다.

이 반 가상의 이야기의 하이라이트는 바로 랜즈다. 내가 90년대 중반 경영과 관리에 대한 블로그를 시작하면서 가상의 나에게 붙인 이름이다. 랜즈를, 관련성 있는 대단한 경험을 한(그러나 가상인), 가상의 사람들의, 가상의 이야기를 들려주는 사람으로 생각해보라. 랜즈는 나와 마찬가지로 약간의 고약한 성미를 갖고 있다.


옮긴이의 글

‘IT 개발자가 쓴 통쾌한 인간관리 이야기’는 가상의 인물 랜즈가 들려주는 가상의 인물들에 대한 가상의, 그러나 그럴 법한 이야기다. 누군가의 관리를 받는 개발자로서, 그리고 누군가를 관리하는 관리자로서의 경험을 바탕으로 진술되는 그의 이야기들은 유쾌하기 그지없다. 너무나도 통쾌하고 신랄한 전 상사에 대한 비판(2장)에서부터 회의를 빠져나가는 방법(4장), 사내에서 헛소문이 번져나가는 과정(6장), 문젯거리 부하 직원(10장) 이야기 등을 읽다 보면 맞장구를 치지 않을 수 없다.

그러나 랜즈는 그 유쾌함 속에서 날카로운 시선으로 현실을 그려낸다.

한 때 IT 개발자였던 관리자들이라면 고민하는 프로그래밍 작업에 대한 그리움과 욕망, 그리고 그 작업을 맡는 데 따르는 주변의 시선과 부담감(9장). 개발 배경이 없는 IT 관리자들에 대한 의견(2장)과 다양한 성향의 동료와 상사를 파악하는 법(26, 27, 28, 29장) 등은 여러분이 주위를 다시 둘러보게 할 것이다.

1부는 관리에 대한 주제를 다루는데 관리자들의 목표, 일반적인 성향, 습관, 배경들을 언급하며 그들에 대한 이해를 돕는다. 2부는 팀 내에서 일어나는 여러 프로세스에 대한 내용으로 팀 내의 마찰이나 프로젝트 진행과정 중에 흔히 일어나는 사건을 다룬다. 마지막 3부는 문젯거리 팀원 등의 일화를 다루며 팀에 있을 수 있는 다양한 성격과 구성원을 소개한다.

저자의 많은 문화적인 비유와 은유법의 구사로 많은 주석을 달아야 했다. 독자의 이해를 돕고자 블로그에 문화적 배경 지식에 관련한 정보를 올린다(http://managing-humans.blogspot.com/). 추가적인 이해가 필요하거나 의견이 있으면 주저하지 말고 블로그에 글을 남겨주길 바란다.  냉소적이고 비판적이기까지 하지만 그의 인간다움에 왠지 모르게 정이 가는 랜즈의 인간 관리 이야기를 여러분도 나만큼 즐기길 바라는 마음이다.

옮긴이 한정민은...
미국 카네기멜론 대학(Carnegie Mellon University) 에서 경영 정보 시스템(Information Systems)과 인간-컴퓨터 상호작용(Human-Computer Interactions)을 전공했고 부전공으로 커뮤니케이션 디자인(Communication Design)을 공부했다. CMU 대학의 웹사이트 분석 및 재편 사용자 경험 컨설팅, HCI 대학원 ‘스마트 홈’ 리서치 등의 프로젝트에 프로젝트 관리자(PM)로 참여했다.  최근에는 미국 타임워너 AOL의 동영상 검색 엔진 Truveo에서 웹 테크놀로지스트로 활동했으며 사용자 경험, 사용성 분석, UI, 인터랙션, 디자인, 웹 2.0 등 웹의 전반적인 분야에 두루 관심을 갖고 있다.



 

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0

사용자 삽입 이미지

저자명 : 제시 리버티, 알렉스 호로비츠   
역자명 : 한용희  
출판사 : 도서출판 ITC  
정 가  : 29,000원  
ISBN : 978-89-6351-006-4  
원서명 : Programming .NET 3.5   
출간년월 : 2009 년 4 월   
페이지 : 628 쪽   
크기 : 세로 : 188, 가로 : 235, 반양장


이 책의 특징

“마이크로소프트는 최근 몇 번의 릴리즈를 통해서 개발자의 개발패턴을 획기적으로 바꿀 수 있도록 닷넷 프레임워크의 중요한 진보를 소개했다. 이 책은 닷넷 프레임워크 3.5와 비주얼 스튜디오 2008의 진정한 강력함을 배우는 데 필요한 모든 지식을 제공한다.”

_팀 스니스Tim Sneath

마이크로소프트 클라이언트 플랫폼 에반젤리스트 총 책임자

[한국어판 Programming .NET 3.5]는 개발자가 마이크로소프트의 최신 프레임워크를 이용해서 윈도우즈와 웹 프로그램을 개발할 때 얼마나 많은 도움을 받을 수 있는지 잘 보여주고 있다. 아울러, 이미 널리 공유되고 있는 구조 패턴과 도구 프로그램들을 사용하는 최선의 예제를 통해서 닷넷 3.5가 얼마나 다양한 기능을 소화하고 있는지에 대해서도 잘 설명하고 있다.

이 책의 저자인 제시 리버티Jesse Liberty와 알렉스 호로비츠Alex Horovitz는 닷넷 3.5의 대부분의 내용에 대해 자세히 다룬다. 특히, 네 가지 핵심적인 중요 기술인 WPF, WCF, WF, CardSpace가 어떻게 상호 연동해서 현대적인 n-티어와 SOA 프로그램을 만드는지 설명하고 있다. 이 책의 모든 예제는 C#으로 작성되었고, 다운로드받아 직접 테스트해볼 수 있다.

이 책의 핵심적인 내용은 다음과 같다.

- WPF : WPF와 그래픽기술을 이용하면 비스타와 비슷한 효과를 얻는다.
- WCF : 네트워크 상에 존재하는 프로그램들과 통신하도록 도와주는 산업 표준을 지원하는 WCF를 사용한다.
- WF : 시스템에서 사용되는 워크플로(업무흐름)를 정의, 실행, 관리할 수 있다.
- CardSpace : 사용자의 인증을 사용할 수 있는 새로운 ID를 만들고 관리할 수 있다.
- XAML : WPF에서 사용자 UI를 만들기 위해서 사용하는 XML 기반의 마크업 언어를 사용한다.
- AJAX : 클라이언트에서 개발되는 기능을 구현할 수 있는 ASP.NET 확장 시스템을 배울 수 있다.

닷넷 3.5는 개발자들이 이전 버전을 통해서 구현하는 데 어려움을 겪던 구조 패턴들을 이용할 수 있도록 해준다. 이 책은 이를 배우려는 개발자들이 직접 실행하면서 배울 수 있도록 충분한 예제와 간략하면서도 핵심적인 설명으로 구성되어 있다. 아울러, 이 책에 인용된 예제 소스들은 기업 솔루션에 적용할 수 있을 만큼 가용성과 안정성을 보장하며, 실제 업무환경에 가까운 예제들을 사용하고 있다.



저자 머리말

이 책은 닷넷 3.5를 다루고 있다. 이 프레임워크가 왜 대단하고 얼마나 생산적인지 그리고 이 기술들을 왜 배워야 하고 기업들은 통합적인 기술에 투자해야 하는 그 이유를 설명하고 있다. 하지만, 단순히 이 책을 판매하기 위한 목적은 아니다. 마이크로소프트에는 닷넷 3.5의 전문가들이 많이 있고, 그들의 실력은 뛰어나기 때문에 판매는 그들의 몫으로 남겨 둘 것이다. 또한, 이 책은 마이크로소프트가 제공하는 문서를 그대로 반복하지도 않을 것이다. 그러한 내용들은 인터넷에서 얼마든지 공짜로 구할 수 있다. 결론을 말하면, 이 책을 반복하면서 유용한 참고서로서 사용되기를 희망한다. 이 책은 개론적인 내용을 제공하지는 않지만 프로그래머로서 알아야 할 닷넷3.5의 내용은 간단히 짚고 넘어간다.

개인용 컴퓨터가 등장한 초기에는, 출판되는 책들이 거의 없었기 때문에 자신에게 필요한 정보를 찾는 것이 어려운 부분이었지만, 오늘날에는 정보의 홍수 속에서 쓸 만한 알맹이를 구별해 내는 것이 어려운 부분이 되었다. 이러한 정보들은 도서, 기사, 웹사이트, 블로그, 동영상, 광고들을 통해서 쏟아지지만, 이들 중에서 정확한 정보를 가려내야 한다. 이 책을 쓰는 목적은 필요로 하는 핵심 정보를 제공하고 어디로 향하고 있는지 알려주는 것이다. 그래서, 독자들이 좀 더 생산적인 것을 배우고 좀 더 좋은 프로그램을 만들 수 있는 발판을 제공하고자 한다.

닷넷 3.5와 실버라이트는 지난 십여 년간 마이크로소프트에서 제공되었던 어떤 것보다 의미 있는 프로그래밍의 변화를 가져올 것이라고 생각한다.

닷넷 3.5의 발표는 프로그래밍에 접근하는 방법의 전환점이 될 것이며 일부에서는 아주 적극적으로 환영받는다. 다른 시각에서 보면 닷넷 3.5는 다음과 같이 개별적으로 분산되어 있는 기술들의 집합체로 볼 수도 있다.

• 윈도우즈 응용프로그램을 작성할 수 있는 WPF(Windows Presentation Foundation)
•  플랫폼의 경계를 넘어 웹을 통해 RIA(Rich Interactive Application) 프로그램를 작성할 있는 실버라이트
• 서비스 기반 아키텍쳐(SOA)와 계약 기반 웹서비스를 구현하고 구축할 수 있는 WCF(Windows Communication
Foundation)
• 프로그램의 흐름을 정의할 수 있는 WF(Windows WorkFlow Foundation)
• 웹에서 사용자 자격인증을 만들 수 있는 카드스페이스(CardSpace)
• 기존 웹 환경보다 훨씬 편리한 기능을 제공할 수 있는 ASP.NET/AJAX

이러한 기술들을 개별적으로 다루는 많은 책들을 볼 수 있지만, 이 책은 통합적인 접근법을 선택했다. 이 책은 두 가지 목적을 가지고 있다. 우선, 기존에 익숙한 방식처럼 단순히 문서에 나와 있는 내용을 반복하기보다는 닷넷 3.5의 실제적인 내용을 다룬다. 이전에 언급했던 기술들 모두를 안정적이고 실용적이며 신뢰할 수 있는 방법으로 사용할 수 있도록 필수적인 정보를 제공할 것이다. 또한, 각 기술들이 단독 혹은 함께 사용되어 문제를 해결하는 명확한 과정을 설명한다.

두 번째 목적은 독립적인 기술보다는 닷넷 3.5라는 대전제의 한 분야로서 이 기술들이 다음과 같은 공통된 테마를 가지고 있다는 것을 보여줄 것이다.

• 닷넷 3.5는 좀 더 훌륭한 구조적인 프로그램의 개발을 돕는다. 이때, 기존 산업에서 인정받은 MVC, n-티어 SOA나 다른 패턴들을 사용한다.
• 닷넷 3.5는 선언형 프로그래밍의 도입을 통해서 객체지향 프로그래밍을 향상시킬 수 있다.

이와 함께, 선언형 확장 마크업 언어(XAML) 등을 사용해서 좀 더 구조적인 프로그램을 만들도록 도와주는 이러한 변화들은 기존의 전통적인 플랫폼의 영역을 벗어나 확장과 수정, 유지보수가 더 쉽고 빠른 프로그램을 만들 수 있도록 해준다.

이제 안전벨트를 꽉 매고, 달려보자!!

이 책을 서로의 마음을 열고 이야기를 경청하는 놀랍도록 어려운 과정을 거쳐야만 얻을 수 있는 단순하면서도 어려운 이상(理想)인 인간 존중(human respect)에 바친다
_ Jesse Liberty

내 아내인 Torri와 사랑하는 세 아이들, Daniel, Zachary, Jason에게 이 책을 바친다. 언제나 즐거운 모험을 계속 될 것이고, 매일 매일이 어제보다 더 훌륭한 하루를 만들 수 있는 기회가 될 것이다. 그리고, 최선의 하루가 되도록 노력하는 삶을 멈추지 말자.
_ Alex Horovitz



지은이 소개

제시 리버티(Jesse Liberty)
는 마이크로소프트의 실버라이트 개발 파트의 선임 개발자이며, 오라일리의 『Programming Silverlight 2』와 베스트셀러인 『Programming C# 3.0』를 비롯한 여러 권의 책을 집필했다.

알렉스 호로비츠(Alex Horovitz)
는 MVC 패턴과 재사용 가능한 프레임워크를 기반으로 기업형 프로그램을 만들고 설계하는 브룩클린 그룹이란 회사에서 CTO로 재직중이다.




역자 머리말

2008년을 훌쩍 넘어 벌써 2009년이 여러 달 지났다. 이 시각이 닷넷 프레임워크 3.5의 내용이 어느덧 새로운 것이 아닐지 모른다는 생각을 갖게 하지만, 현재까지 새롭게 발표된 기술들을 하나로 통합했다는 커다란 의미는 닷넷 3.5 발표 후 흐른 시간을 상쇄하고도 남을 것이다. 최근 몇 년간 저자들의 말처럼 쏟아지는 기술들과 이슈들은 개발자들이 마음을 졸이면서 “그 많은 것들을 언제 다 하지!”하는 조급함을 갖게 만들기도 하고, 한편으로는 마이크로소프트라는 기업의 혁신성에 놀라움을 갖도록 만들었다.

이 책은 그런 개발자들의 마음을 헤아려주는 책이다. 각각의 기술들이 내용이 두꺼운 책 한 권을 채우고도 모자랄 수 있지만, 이 책은 그 내용들을 아주 자세히 다루진 않으면서도 내용을 비교적 잘 녹여 놓았다. 이러한 과정을 우리말로 바꾸는 과정에 참여한 것을 개인적으로 좋은 경험으로 생각하며, 이 경험을 다른 개발자들과 함께 공유하길 바라면서 작업을 진행했다. 이를 통해서 원서의 내용을 쉽게 접할 수 있는 기회가 있기를 바란다.

닷넷 3.5에서 닷넷 3.5 SP1을 거친 후, 앞으로 나올 닷넷 4.0 버전까지 개발자들이 알아야 하는 내용들은 너무도 많이 나올 것이다. 어떻게 보면, 이것은 닷넷 진영에서만 새로울 뿐 다른 언어에서는 공개적으로 개발되던 것을 너무 한꺼번에 쏟아내기 때문에 많아 보일지도 모른다. 새로운 것을 항상 쫓아가는 것이 최선은 아닐 테지만 앞으로 진행될 닷넷 프레임워크의 내용을 이해하는데 이 책이 도움이 되길 바란다.

이 책을 우리말로 옮기면서 언제나 그렇듯이 인내로 기다려주신 ITC 출판사와 편집과 교정을 해주신 분께 감사를 드린다. 또한, 언제나 기술적 조언을 아끼지 않는 한발(http://www.hanbal.net)의 동료들에게 고마움을 전한다. 마지막으로, 신혼임에도 함께하지 못했던 남편을 사랑으로 기다려 준 아내에게 미안함과 고마움을 전하고 싶다. 그래서, 이 책이 출판되는 시점부터는 미안하지 않는 남편이 되고자 한다.

2009년 4월
한용희



역자 소개

한용희

경희대학교 영어교육과를 졸업하고 개발 프리랜서로 활동하고 있다. KT, 현대기아차, 국민은행, SK 에너지, 삼성SDS, KTF 등에서 다수의 프로젝트를 수행하였다. '보기 좋은 프로그램, 사용하기 좋은 프로그램'이 무엇인지 고민하기를 좋아하며, 사용자 인터페이스 기술분야에 관심이 많다.



감수자의 글

2002년 .NET Framework 1.0이 발표된 지도 벌써 7년이라는 시간이 지났다. 그동안 .NET Framework 2.0까지는 기존에 사용되어 오던 많은 기술들을 닷넷이라는 환경에 맞게 변환 발전시켜 왔다. 하지만, 2006년 .NET Framework 3.0이 발표 되면서 지금까지와는 다르게 한 단계 더 나아가 WPF, WCF, WF, Card-Space 등 지금까지 접해보지 못한 새로운 형태의 환경을 제공하였고, 2007년 말 .NET Framework 3.5가 발표되면서 .NET Framework 3.0의 업그레이드 및 Linq, Ajax, Silverlight 등 다양한 기능이 포함되었다. 

이 책을 먼저 접하면서 .NET Framework 2.0 이후의 3.0과 3.5 등 해마다 발표되며 개발자들을 긴장시키는 .NET의 환경 및 기능들을 살펴볼 수 있는 책이라고 생각한다. 이 책은 개발자가 .NET에 새로 추가된 기능들, 무엇이 새롭고 내게 필요한 것들이 무엇인지 빠르게 검토해서 자신에 맞게 적용해 보려고 할 때 좋은 참고가 될 수 있다. 책을 감수한 평을 한 마디로 말하자면, 깊은 내용을 깊게 파는 것도 중요하지만 어디에 무엇이 있는지를 가르쳐 줘서 개발자들이 적시적소에 어떤 기술을 사용할지를 알려주는 명쾌한 책이라는 인상을 받았다. 개인적으로 많은 닷넷 프로젝트를 컨설팅하면서 느낀 점은 제대로 알고 있어야 제대로 사용할 수 있다는 것이다. 성경의 구절처럼 “눈먼 사람이 눈먼 사람을 인도하면 안 되는 것처럼....” 말이다.

감수평을 쓰는 저처럼 많은 분들도 이 책을 통해서 닷넷이 제시하는 기술의 올바른 길을 찾는 데 도음을 받기 바란다. 개인적으로 이 책을 번역해준 번역자와 ITC 출판사에 닷넷의 발전을 바라는 한 사람으로서 감사를 드린다.

이윤복



감수자 소개

이윤복
닷넷 컨설팅을 주업무로 하고 있으며, 국내 다수의 대기업 컨설팅을 진행하였다. (주)닷넷익스퍼트를 거쳐, 현재는 ㈜드원 테크놀로지의 선임 컨설턴트로 재직하고 있다. 닷넷 이야기만 나오면 기운이 없다가도 활력이 솟을 정도로 닷넷 기술에 열정적이다.



차 례

part 1. 프리젠테이션을 위한 선택

chapter 01 닷넷 3.5: MVC, N-티어, SOA를 위한 보다 나은 선택  3
통합 vs 격리  4
이 한 권의 책에 모든 내용이?  6

chapter 02 XAML: 윈도우즈 UI를 만드는 선언형 언어  7

XAML 101  8
간단한 예제로 가볍게 시작하는 XAML  11
수준을 높여 좀 더 멋진 내용을!  27
살아있는 화면! (어떻게 멈추는지 고민하지 말고 그냥 즐기자)  39

chapter 03 WPF의 소개: 데스크탑 UI의 새로운 경험  55

첫걸음: 패널들  56
엘리먼트 간의 포함관계  80
리소스  81
형태 변형  83
애니메이션  84
데이터 바인딩  93

chapter 04 WPF 적용: 실제 프로그램 작성  109
프로그램을 부분별로 나누기  110
비즈니스 클래스  117
첫 번째 페이지 - 장바구니에 선택 항목 추가하기  122
두 번째 페이지 - 신용카드 검증하기  156

chapter 05 Ajax 소개: 데스크탑 UI를 웹으로…  173

웹 프로그램이 훨씬 빨라졌다.  173
시작하면서  175
AJAX를 이용해서 제시어 기능 만들기  179
ScriptManager  192
이제 다음은?  202

chapter 06 AJAX 실전: ListMania  203

To-Do 목록 관리자 만들기  204
To-Do 목록를 개인화하기  227

chapter 07 실버라이트 소개: 리치 인터넷 UI 플랫폼  245

이번 장만으로 실버라이트를 정복할 수 있을까?  246
실버라이트의 범위  246
본격적인 프로그램 만들기  247
Control  249
이벤트와 이벤트 처리기  260
동적으로 컨트롤을 생성하기  265
데이터 바인딩  270
스타일을 적용한 컨트롤  278


part 2. 디자인 패턴을 위한 준비

chapter 08 닷넷 3.5를 이용한 디자인 패턴의 구현  285
닷넷 3.5는 좋은 설계 디자인을 발전시킨다.  286
N-티어 패턴  290
MVC 패턴  291
Observer 패턴 / 출판과 구독  311
Factory Method 패턴  323
Chain-of-Command 패턴  332
Singleton 패턴  343


part 3. 비즈니스 계층 구현

chapter 09 LINQ의 이해: 구조화된 최상의 질의언어  353
LINQ 쿼리를 정의하고 실행하기  354
확장 메소드  371
AdventureWorksLT 데이터베이스 추가하기  382
LINQ to SQL 기본  385
비주얼 스튜디오 LINQ to SQL 디자이너 사용하기  390
데이터 가져오기  396

chapter 10 WCF의 소개: 접근하기 쉬운 SOA  409

상세한 서비스의 정의  410
웹서비스 구현  415
UDDI: 거기에 누가 있고, 이들이 나를 위해 무엇을 할 수 있을까?  421
어떻게 실행되는가?  423
WCF로 SOA 구현  424
이제 실제로 구현을 해보자!!  430

chapter 11 WCF 실전: YahooQuotes  433

웹서비스 작성과 실행  433
웹서비스 사용하기  445

chapter 12 WF 소개  457

WF 이전의 사용하던 흐름 제어  458
윈도우즈 워크플로우(WF) 사용하기  465
WF 실행과정의 이해  479
워크플로우 서비스들  480

chapter 13 WF 실전: 상태 시스템 제작  483

WF와 상태 시스템  484
사건 지원 상태 시스템 만들기  484

chapter 14 CardSpace의 사용과 적용  509

CardSpace의 개요  510
CardSpace ID 만들기  515
CardSpace를 지원하는 기능 추가하기  521
요 약  544


Appendix. 부 록

Appendix A XAML의 중요 개념  549
XAML 네임스페이스  549
Type Converter  551
Property Element와 Content 프로퍼티  552
Markup Extension  553
XamlReader와 XamlWriter  556
Tools  559

Appendix B WPF  563

WPF Toolkit  563
닷넷 3.5 SP1에서의 새로운 기능  566

Appendix C ASP.NET AJAX SP1과 ASP.NET Routing  573

ASP.NET AJAX History  573
Script Combine  576
ASP.NET Routing  581
이전 ASP 인텔리센스와 디버깅  583
기타  587

Appendix D ADO.NET 2.0 ~ 3.5까지  589

System.Data.Common 네임스페이스와 DbProviderFactory  590
데이터베이스 연결  591
대용량 복사  594
DataSet과 DataTable  596
기타  602




가격비교





크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0

사용자 삽입 이미지


저자명 : 체이픽 커준, 조이 로트   
역자명 : 김지원  
출판사 : 도서출판 ITC  
정 가  : 35,000원  
ISBN : 978-89-6351-005-7  
원서명 : Programming Flex3 : The Comprehensive Guide to Creating Rich Internet Applications with Adobe Flex   
출간년월 : 2009 년 3 월   
페이지 : 772 쪽   
크기 : 세로 : 254, 가로 : 188, 반양장 


“체이픽과 조이는 진정한 플렉스 전문가로서 개발에 필요한 귀중한 신구 자료를 이 책에 담았다”
- 매트 코틴, 어도비 시스템즈 선임 Flex 마케팅 과장


어도비 플렉스 3로 리치 인터넷 애플리케이션(RIA)을 개발해 보려는 사람에게 이 책은 좋은 길잡이가 된다. 이 책을 정독하고 실습해 보면 플렉스 3의 핵심 개념을 확실히 이해할 수 있으며, 특정 플렉스 기능들의 사용 적기와 그 이유를 간파하게 된다. 무료 플렉스 SDK를 이용하여 완벽하고 기능적인 웹 애플리케이션을 제작하고 어도비 AIR를 이용한 데스크탑 RIA를 제작하는 방법들을 보이는 다수의 예제와 샘플 코드가 들어 있다. 이 책을 어도비 플렉스 3 공식 참고문서와 병용한다면 매우 이상적인 학습 효과를 거둘 수 있다. 이 책에서 다루는 내용은 다음과 같다.


• 플렉스 프레임워크에 대한 기본 개념
• MXML과 액션스크립트를 사용한 프로그래밍
• UI 컴포넌트의 구조와 레이아웃
• 미디어 활용의 다양한 정석
• 애플리케이션과 컴포넌트의 스테이트 관리
• 전이와 이펙트 사용 비법
• 플렉스 애플리케이션 디버깅
• 웹 브라우저에 플렉스 애플리케이션 삽입
• 데스크탑용 AIR 애플리케이션 제작


플렉스 3 하나로 개발자는 RIA 개발에 있어 웹과 데스크탑이라는 두 마리 토끼를 잡을 수 있다. 이 책의 내용을 체계적으로 이해하고 훈련하면 위에 나열한 복합적이고 강력한 기술을 완벽에 가깝게 섭렵할 수 있다.


***********************************************************


차례


Chapter 1 플렉스 기초
플렉스 애플리케이션 기술         1
플렉스 구성요소 이용하기         8
데이터 서비스 작업(런타임에 데이터 로딩)         10
기존 HTML과 플렉스 웹 애플리케이션의 차이        11
플렉스 애플리케이션의 원리       13
플렉스와 플래시 저작의 개념      14
플렉스 1.5와 플렉스 2에 대하여   15
핵심정리         17


Chapter 2 플렉스 프레임워크로 애플리케이션 제작
플렉스 도구 모음 이용    19
프로젝트 생성    22
애플리케이션 빌드        26
애플리케이션 디플로이    41
핵심정리         42


Chapter 3 MXML
MXML 문법과 구조         43
MXML을 양방향화하기      53
핵심정리         56


Chapter 4 액션스크립트
액션스크립트 사용법      59
MXML과 액션스크립트의 상호 관계          63
액션스크립트 문법        66
변수와 프로퍼티          69
상속     85
인터페이스       86
이벤트 처리      88
에러 처리        90
XML 사용하기     94
투영     98
핵심정리         102


Chapter 5 프레임워크 기초
플렉스 애플리케이션의 구조       104
플렉스 애플리케이션 로드와 초기화        107
컴포넌트 수명주기        110
플렉스 애플리케이션을 다른 플렉스 애플리케이션에서 로드하기      112
플래시 플레이어와 플렉스 프레임워크의 차이       114
프레임워크 캐싱          116
애플리케이션 도메인      117
지역화   120
핵심정리         132


Chapter 6 레이아웃 관리
플렉스 레이아웃 개요     133
유동 인터페이스 제작     158
전부 종합하기    159
핵심정리         163


Chapter 7 UI 컴포넌트를 이용한 작업
UI 컴포넌트      166
버튼     174
값 실렉터        175
텍스트 컴포넌트          178
리스트 기반 컨트롤       179
팝업 컨트롤      199
컨트롤 바        208
핵심정리         210


Chapter 8 애플리케이션 외형 사용자 정의하기
스타일 사용하기          212
컴포넌트에 스킨 입히기   234
프리로더 사용자 정의하기         247
테마     252
런타임 CSS       256
핵심정리         260


Chapter 9 애플리케이션 컴포넌트
애플리케이션 컴포넌트의 중요성   262
MXML 컴포넌트 기초       264
컴포넌트 스타일          276
핵심정리         280


Chapter 10 프레임워크 유틸리티와 고급 컴포넌트 개념
툴팁     281
팝업     289
커서 관리        298
드래그 앤 드롭   300
리스트 기반 컨트롤 사용자 정의   310
포커스 관리와 키보드 제어        323
핵심정리         330


Chapter 11 미디어 작업
미디어에 대한 이해       331
미디어 삽입      335
다양한 미디어로 작업하기         342
핵심정리         358


Chapter 12 스테이트 관리
스테이트 생성    360
스테이트 적용    361
기존 스테이트의 하위 스테이트 정의       363
컴포넌트 추가와 제거     365
프로퍼티 지정    369
스타일 지정      369
이벤트 핸들러 지정       371
액션스크립트로 스테이트 정의     372
객체 생성 방식 관리(객체 프리로딩)       385
스테이트 이벤트 처리     388
스테이트 수명주기        389
핵심정리         396


Chapter 13 이펙트와 전환
이펙트 사용하기          398
사용자 정의 이펙트 생성          419
전환 사용하기    427
사용자 정의 전환 생성    434
핵심정리         434


Chapter 14 데이터 작업
데이터 모델 이용         436
데이터 바인딩    451
사용자 정의 클래스에 데이터 바인딩 가용화        463
데이터 바인딩 사례       468
데이터 바인딩 프락시 클래스 제작하기     472
핵심정리         476


Chapter 15 데이터의 유효성 검사와 형식화
사용자 입력 내용 검사    477
유효검사기 사용          478
표준 프레임워크 유효검사기 사용하기      494
사용자 정의 유효검사기 작성하기          500
데이터 형식화    502
NumberFormatter          503
DateFormatter    505
CurrencyFormatter        506
PhoneFormatter   506
ZipCodeFormatter         507
사용자 정의 포매터 작성하기      507
핵심정리         509


Chapter 16 클라이언트 데이터 통신
로컬 연결        512
영구 데이터      518
호스트 애플리케이션과 통신하기   533
핵심정리         539


Chapter 17 원격 데이터 통신
다양한 데이터 송수신 기법        542
요청/응답 데이터 통신 기법       544
웹 서비스        560
실시간 연결과 소켓 연결          573
파일 업로드와 다운로드   574
핵심정리         576


Chapter 18 디버깅
플래시 디버그 플레이어   577
FDB 사용         582
플렉스 빌더로 디버깅     584
원격 디버깅      588
trace()를 이용한 로그 기록       590
로깅 프레임워크          592
원격 데이터 디버깅       597
핵심정리         599


Chapter 19 사용자 정의 컴포넌트 제작
컴포넌트 프레임워크 개요         601
컴포넌트 수명주기        603
컴포넌트 구현상속        607
사용자 정의 프로퍼티와 이벤트 넣기       617
스타일 지정 기능 넣기    620
핵심정리         624


Chapter 20 브라우저에 플렉스 애플리케이션 삽입
HTML에 플렉스 애플리케이션 삽입          625
브라우저 버튼 통합과 딥 링크     639
플래시 플레이어 보안     654
런타임 공유 라이브러리 이용하기          657
핵심정리         666


Chapter 21 AIR 애플리케이션 제작
AIR 기초         667
AIR 애플리케이션 제작    668
AIR의 각종 기능 이용하기         672
AIR 애플리케이션 배포    700
핵심정리         704


Chapter 22 플렉스 애플리케이션 제작
샘플 애플리케이션 소개   705
새 프로젝트 설정         709
청사진과 마이크로아키텍처 이용   716
공통적 패턴 뽑아내기     718
핵심정리         732


찾아보기         733


***********************************************************


추천사


2004년도가 떠오른다. 그 해는 그리스에서 올림픽이 개최됐던 때다. 유가는 배럴당 50달러 넘게 상승했으며, <왕의 귀환>이 오스카상을 휩쓸었다. 레드삭스가 월드 시리즈에서 우승했고, 세렌디브 소쩍새가 스리랑카에서 처음 발견됐다. 끝내주는 해였구만! 음, 뭐 나도 이건 최근에 위키피디아에서 베낀 거지만. 아무튼 2004년은 그 소쩍새들에겐 굉장한 한 해였지 싶고, 나 또한 인터넷 애플리케이션에 있어 굉장한 한 해였다. 2004년이 바로 플렉스가 탄생한 해니까.


그 엄청 짧은 몇 해 만에 수많은 것이 바뀌었다. 플렉스 1은 매우 배타적이며 플렉스 1로 작성한 애플리케이션은 서버에 구속됐다. 값비싼 라이선스가 필요했으며 유용한 자료가 매우 희귀했다. 플렉스 1.5는 애플리케이션과 서버 간의 굴레를 끊었다. 문득 주요 플렉스 애플리케이션을 작성하거나 디플로이할 수 있는 사람도 있었겠지만 그 당시 대부분의 사람은 아직 플렉스의 존재조차 들어 본 적이 없는 상태였다. 플렉스 2가 출시되자 업계가 기를 쓰고 RIA 개발자의 정의를 정립하려 했던 시점임에도 실제로 리치 인터넷 애플리케이션(RIA) 개발자들의 플렉스에 대한 인지도가 약간 향상됐다. 플렉스의 인지도는 갈수록 높아졌고 급기야는 SDK를 무료로 배포했다. 업데이트 버전 2.0.1이 출시될 무렵 플렉스는 디자이너, 개발자, 소위 디바이너(디자이너 겸 개발자), 그 희귀하다는 세렌디브 개발자들로부터 지지받기에 이르렀다.


이제 플렉스 3가 나와 있고 이는 지금껏 가장 완전하고 사용성이 높은 버전이다. 프로파일러, OLAP, CS3 통합, 리팩터링, 프레임워크 RSL, 딥 링크, 에이잭스 브리지, 서버용 코드 생성, 자동화, 그 외에도 여러분이 꿈꿔 온 모든 것이 가능해졌다. 그리고 혹시 그 선물상자 안에 없는 것이 있더라도 프레임워크, 3D 라이브러리, 맵, 매시업, 설정자, 대시보드, 모니터, 위젯 등 커뮤니티에 구하면 모든 것을 얻을 수 있다.


하지만 그 모든 새로운 특징과 기능들 중 플렉스 3에 들어서 가장 크게 변한 것은 무엇일까?


뭐 그게 비록 새로운 기능이라든지 리팩터링된 API랄 순 없지만, 휘황찬란하거나 싸구려인 것은 아니다. 멋진 새 ‘입문 경험 쌓기’도 역시 아니다. 플렉스 3의 가장 큰 변화를 진짜로 확인하려면, 자리에서 일어서서 거실을 지나 화장실로 간 후 벽에 붙은 거울을 바라봐야 한다(물론 화장실 들어가기 전엔 얌전히 노크도 해야 할 테고). 플렉스 3에서의 가장 큰 변화는 바로 여러분이다. 그게 정답인 걸. 플렉스 3에서는 여러분과 나 또는 오픈소스인 플렉스 SDK에 기여할 수 있는 모든 이들이 가장 큰 변화다. 짐승의 배를 찌를 수도 있고, 비장을 꼬아버릴 수도 있으며, 꿰매버리거나 전혀 다른 새 짐승으로 탈바꿈시킬 수도 있다. 이 모든 게 여러분 손에 달려 있다. 텍스트 편집기와 인터넷 접속만으로도 충분히 플렉스라는 선도적인 RIA 기술에 동참할 수 있는 것이다.


그렇다면 이 책의 적합한 용도는 무엇일까? 내가 기존 플렉스 3 제품의 문서를 보니 2,300페이지가 넘는 분량의 내용과 거의 1,200개 가까이 되는 예제 애플리케이션이 들어 있다. 그중 내가 작성해 본 코드는 몇 개밖에 안 되며, 혹시 여러분이 컴파일러 오류가 난다고 나를 들볶더라도 난 발뺌하겠다. 더군다나 이 책에는 개발자 문서에 추가로 들어 있는 실 페이지 수천 장 분량의 언어 참고서도 포함돼 있지 않다. 그렇다면 그 많은 참고 콘텐트가 이미 존재하는데 굳이 따로 이 플렉스 3 서적을 봐야 하는 이유는 무엇일까?


필자들이 이 책의 전서인 『Programming Flex 2』를 집필하던 당시, 체이픽과 조이는 플렉스 2 사용법을 완벽히 익혔다. 이때는 아직 소스코드가 공개되지도 않았던 시기였다. 두 필자는 원격 데이터를 이용한 작업, 복잡한 플렉스 레이아웃 스키마들의 탐색, 멋진 사용자 정의 컴포넌트 제작 등을 수행하는 방법을 힘겹게 알아냈다. 이들은 실질적 문제들을 해결하고 실무적인 코드를 작성하는 진정한 개발자들이었다. 그 책에서 나는 수많은 주제를 보고 ‘내가 저 책을 집필했더라면 좋았을 걸’이라고 속으로 되뇌었다. 이 필자들은 상당히 복잡한 주제들을 채집한 후 개발자에게 필요한 정보로 다듬었다.


그 플렉스 2 서적을 쓰기 위해 체이픽과 조이는 제품을 면밀히 조사했다. 차세대 웹 애플리케이션을 정의하게 될 동적 프레임워크의 피부를 들어내어 튼튼한 뼈대를 살폈다. 이 책에는 비디오 플레이어를 설계하고자 하는 사람을 위한 내용도 들어 있고, 엔화용 통화 포매터를 설계하고자 하는 사람을 위한 내용도 들어 있다. 애플리케이션 수명주기에 관해 처리하고자 하는 사람에게도 이 책은 제격이다.


아무튼 이 책은 여러분에게 플렉스 3가 무엇인지를 알려준다. 이 책을 끝까지 읽고 나면 플렉스 3라고 할 수 없는 문제점들이 발견될 수도 있지만, 그때는 그런 문제점에 대한 대책을 세울 수도 있게 된다. 만약 모두가 잠든 늦은 시각에 영감이 떠오른다면 여러분은 용기를 얻어 경험을 쌓고 http://opensource.adobe.com/flex에 가입해서 플렉스 분야에 발을 들여놓게 될지도 모른다.


매트 혼
어도비(Adobe)



머리말


말 그대로 이 책의 전서인 『Programming Flex 2』를 집필하는 데는 수년이 걸렸다. 필자들은 그 책에 심혈을 기울였고 탈고와 편집과 교정이 완료되어 마침내 프린터에서 벗어날 수 있었을 때 우린 긴 한숨을 내쉬며 이제 드디어 플렉스 집필에서 해방되는구나 하며 좋아했다. 하지만 플렉스 2가 나오고 얼마 되지도 않은 찰나에 플렉스 3가 순식간에 출시돼 버려서 피로한 심신에 휴식을 줄 수 없게 됐다. 그래서 우린 다시금 키보드 앞에 붙어 앉아 플렉스 3 버전에 맞게 기존 집필을 수정하기에 이르렀다. 그 결과로 이 책은 이렇게 여러분 손에 들려 있는 것이다. 이 책의 내용은 그저 간단한 수정에 불과한 것이 아니다.


우리는 『Programming Flex 2』가 플렉스 2에 관한 서적들 중 최고의 책이라고 생각했었다. 그러나 미흡한 점도 없지 않았다. 그 책의 내용 중에서 시간을 많이 할애하지 못한 주제도 있었다. 『Programming Flex 3』를 집필하면서 우리는 플렉스 3에 관한 책으로 내용을 업데이트했을 뿐만 아니라 전서에 수록되지 않았던 내용도 포함해서 다뤘다. 우린 소기의 목적을 달성해냈다는 생각이 든다.


이 책에 추가된 부분 중 일단 눈에 확 띄는 장이 20, 21, 22장이다. 20장에서는 플렉스 애플리케이션을 웹 페이지에 넣기 위해 알아야 하는 모든 내용을 상세히 설명했다. 이 내용이 플렉스의 최고 핵심은 아닐지라도 꽤 중요하다고 생각한다. 21장에는 플렉스를 이용한 AIR 데스크탑 애플리케이션 제작법에 관해 설명했으며, 22장에는 이 책의 전반에 걸쳐 설명했던 모든 주제를 융합해 하나의 완전체를 만드는 내용을 넣었다. 22장이 바로 우리가 생각하는 가장 중요한 장이라 할 수 있다. 왜냐하면 플렉스에 관해 앞 장들에서 설명했던 모든 것을 습득할 수 있는 방법이 설명돼 있고, 그 방법을 실무 애플리케이션 제작에 활용할 수 있기 때문이다.


하지만 이 책이 오로지 전서를 기반으로 그 3개의 장만 추가한 것일 뿐이냐고 묻는다면 대답은 ‘아니오’다. 이 책의 모든 장의 내용을 검토해서 수정했다. 몇 개의 장은 플렉스 2에서 3로의 변경사항이 미미해서 거의 수정이 불필요했지만, 나머지 장은 상당량의 수정과 추가가 이뤄졌다. 만일 여러분이 『Programming Flex 2』를 읽게 된다면 이 책에 새로 추가됐거나 수정된 내용을 굉장히 많이 발견할 수 있을 것이다.


플렉스 3는 플렉스 2에 비하면 말할 것도 없이 매우 광범위하다. 물론 깊이 들어갈수록 내용이 점점 어려워지기는 하지만(사실상 플렉스 3 애플리케이션 제작의 초반은 매우 쉽다), 이렇듯 길고 예리한 학습곡선을 갖는 이유는 단순히 프레임워크에 패키징된 기능의 양이 어마어마하기 때문이다. 공식 플렉스 문서는 이러한 기능들 중 뭔가를 찾기 쉽도록 잘 구성돼 있다. 그 덕분에 우리는 목표한 대로 여러분이 그 공식 문서에서 얻을 수 없던 지식의 갭을 메우고 곧장 시작할 수 있게끔 플렉스에 익숙해지게 해 주는 역할의 책을 집필해낼 수 있었다. 이 책을 쓰면서 필자들이 의도한 바는, 플렉스를 배움에 있어 플래시 플랫폼 기술을 사용해 우리가 리치 인터넷 애플리케이션을 제작해 온 장기간의 경험을 바탕으로 실무적 조언을 제공하는 것이다.


진심으로 우린 플렉스 3가 애플리케이션 제작에 이상적인 제품이라 생각한다. 이 책은 비록 기술서지만, 집필 내내 모든 열정을 쏟아 부었으며 이 책을 읽는 독자 여러분도 우리의 그러한 열정을 공유하게 되리라 믿는다. 플렉스 3는 리치 인터넷 애플리케이션을 제작하는 데 있어 시중의 다른 어느 것보다 훨씬 좋은 도구라고 생각하며 여러분도 아마 책을 읽으면서 이에 동의하리라 생각한다. 플렉스를 이용하면 브라우저 간 호환성 문제도 거의 없고, 네트워크 데이터 통신이 신속하며, 프레임워크가 견고한 객체 지향 원칙과 표준을 기반으로 제작돼 있어 좋다. 가장 세련되면서도 안정적인 애플리케이션 제작에는 플렉스 3만한 것도 없다는 생각이 든다.


/대상 독자

이 책은 플렉스 3에 관해 배우고자 하는 모든 이를 겨냥해서 집필됐다. 우리는 이 책의 독자가 다양한 배경을 가진 매우 다양한 그룹의 사람들이라는 점을 알고 있다. 수년간 플래시 플랫폼 기반의 기술을 이용해서 작업해 온 사람도 있겠고, 플래시 플레이어에서 돌아가는 콘텐트 제작이 아예 처음인 사람도 있을지 모른다. 컴퓨터과학 학위를 보유한 사람이 있을 수도 있겠고, 소프트웨어 업계에서 수년간 종사한 사람도 있을 수 있다. 물론 독학으로 공부한 사람도 있을 것이다. 우린 이러한 다양한 독자들의 요구에 부합하는 내용을 다루기 위해 최선을 다했다.


하지만 이 책을 최대한 활용하려면, 여러분은 객체 지향 원칙을 탄탄히 이해하고 런타임 환경, 바이트 코드, 컴파일러 등의 개념을 파악해야만 한다. 추가로, 혹시 여러분이 이미 액션스크립트, 자바, C, C#이나 그 밖의 비슷한 문법을 사용하는 언어를 알고 있다면 이 책을 좀 더 능률적으로 활용할 수 있을 것이다. 이 책에도 액션스크립트(플렉스 애플리케이션이 이용하는 프로그래밍 언어) 기초에 대해서 한 개의 장을 할애해 다루기는 했으나, 핵심 API에 대해서는 이 책에서 자세히 설명하지 않는다. 혹시 액션스크립트 언어를 체계적으로 공부하고 싶은 사람은 『Essential ActionScript 3』나 『ActionScript 3 Cookbook』 등의 액션스크립트 3.0 전문서를 읽으라고 권하고 싶다.


/책의 구성

이 책의 목차를 구성하고 또 재구성하는 데 많은 시간을 할애했다. 모든 독자에게 안성맞춤이 되도록 목차를 표현할 방법은 전혀 없는 것 같지만, 우리 나름대로 최선을 다해서 합리적이라 여기는 순서대로 표현했다.


1장, 플렉스 기초
플렉스란 무엇인가? RIA(리치 인터넷 애플리케이션)는 또 무엇인가? 이러한 의문들에 답을 주며 이 책의 나머지 부분을 이해하기 위한 기본 지식을 설명해 놓은 장이다.


2장, 플렉스 프레임워크로 애플리케이션 제작
다양한 엘리먼트와 플렉스 애플리케이션 제작 단계에 대해 설명한다. 컴파일러 사용법, 스크립트 제작, 플래시 플레이어 보안, 애플리케이션 디플로이법 등을 다룬다.


3장, MXML
MXML은 플렉스가 사용하는 선언형 언어다. 이 장에선 MXML의 기초 내용을 설명한다.


4장, 액션스크립트
액션스크립트는 플렉스가 사용하는 객체 지향 프로그래밍 언어다. 이 장에서는 액션스크립트 3.0의 기초적인 내용을 공부한다.


5장, 프레임워크 기초
플렉스는 애플리케이션 제작의 여러 측면을 대단히 간소화해 준다. 여러분이 내부적인 원리까지 자세히 알아야 할 경우는 별로 없지만, 프레임워크의 동작 원리에 대해 기초적인 사항을 이해하고 있으면 나중에 쓸모가 있다. 이 장에서는 플렉스 애플리케이션의 수명주기, 부트스트래핑 등에 관해서 설명한다.


6장, 레이아웃 관리
플렉스에는 여러분이 제작하게 될 애플리케이션 내에 모든 종류의 레이아웃을 쉽고 빠르게 작성할 수 있게 해 주는 다양한 레이아웃 컨테이너가 있다. 그러한 컨테이너들을 가지고 작업하는 방법을 설명한다.


7장, UI 컴포넌트를 이용한 작업
플렉스 프레임워크의 일부분인 사용자 인터페이스 컴포넌트(버튼, 목록, 메뉴 등)에 관해 살펴보겠다.


8장, 애플리케이션 외형 사용자 정의하기
공동 스타일 지침이라든지 창의적 시각에 충실한 애플리케이션을 제작할 수 있다는 점에서, 플렉스 애플리케이션의 외형을 개발자가 맞춤화하는 것은 중요한 일이다. 플렉스 애플리케이션의 외형을 바꾸는 방법에 대해 공부하겠다.


9장, 애플리케이션 컴포넌트
플렉스 애플리케이션 개발을 다루기 쉽게 하려면 애플리케이션을 각각의 부분들로 분해하는 방법을 알아야 한다. 이러한 개별 요소들로의 분해 방법을 설명한다.


10장, 프레임워크 유틸리티와 고급 컴포넌트 개념
먼저 컴포넌트를 이용한 작업의 기초에 대해 이해했다면, 그 지식을 확장하는 방법을 알아야 한다. 이 장에서는 툴팁, 목록 맞춤화, 팝업창 등을 살펴보겠다.


11장, 미디어 작업
플렉스에서는 개발자가 작성하는 애플리케이션에 각종 애셋이나 애니메이팅되는 이미지에서부터 비디오나 오디오에 이르기까지 다양한 미디어를 포함시킬 수 있다. 이러한 엘리먼트들을 가지고 작업하는 방법을 이 장에서 설명한다.


12장, 스테이트 관리
플렉스 애플리케이션과 그 애플리케이션에 들어 있는 컴포넌트들은 하나의 뷰에서 다른 뷰로 전환될 수 있다. 플렉스에서는 이러한 변화를 ‘스테이트’라고 한다. 스테이트는 폼에 새 컴포넌트를 추가하는 것만큼 간단할 때도 있지만, 어떨 땐 화면에 있는 전체 콘텐트가 변경돼야 하는 경우도 있다. 이 장의 주제는 스테이트 관리 방법이다.


13장, 이펙트와 전환
플렉스에는 ‘전환’과 ‘이펙트’라는 기능이 있어서, 스테이트들 간에 또는 사용자에 대한 응답과 시스템 이벤트 간에 활기찬 변화를 줄 수가 있다. 이 장에서는 그러한 전환과 이펙트에 대해서 다룬다.


14장, 데이터 작업
플렉스 애플리케이션 내의 데이터를 모델링하는 방법을 설명하며, 데이터 값이 변경되면 컴포넌트들이 자동으로 업데이트되도록 컴포넌트들을 연결하는 방법에 대해서도 설명한다.


15장, 데이터의 유효성 검사와 형식화
사용자 입력 내용을 검증하는 방법과 숫자, 전화번호 같은 데이터의 형식을 정의하는 방법을 다룬다.


16장, 클라이언트 데이터 통신
클라이언트 데이터 통신이란 데이터가 클라이언트 측 컴퓨터에 잔존하는 플래시 플레이어에 출입하는 모든 데이터 전송을 총칭한 것이다. 이에 대한 예로 동일한 한 대의 컴퓨터에서 실행되고 그 컴퓨터에 영구 데이터를 저장하는 둘 이상의 플렉스 애플리케이션들 간의 통신을 들 수 있다. 15장에서 다루는 주제는 이러한 것들이다.


17장, 원격 데이터 통신
클라이언트 컴퓨터에서 돌아가는 플렉스 애플리케이션에서 원격 데이터 서비스로 통신하는 방법에 대해 설명한다. 이 장에선 XML, SOAP, AMF 등의 사용법을 공부하게 된다.


18장, 디버깅
애플리케이션의 버그를 바로잡는 것은 애플리케이션을 작성하는 것만큼이나 중요하다. 에러 없는 애플리케이션을 작성한다는 것은 드문 일이며, 그렇기 때문에 그러한 에러를 효과적으로 추적해내는 것은 중요한 일이다. 이 장에서는 플렉스의 디버깅 도구 사용법을 알아보겠다.


19장, 사용자 정의 컴포넌트 제작
개발자가 사용, 맞춤화, 배포가 가능한 엘리먼트를 제작할 수 있다는 점에서 사용자 정의 컴포넌트는 플렉스 애플리케이션의 중요한 부분이다. 이 장에서는 플렉스 프레임워크를 이용해 사용자 정의 컴포넌트를 제작하는 데 필요한 단계를 설명한다.


20장, 브라우저에 플렉스 애플리케이션 삽입
대부분이라 할 순 없지만 많은 플렉스 애플리케이션이 웹상에 디플로이된다. 이를 위해선 플렉스 애플리케이션을 웹 브라우저에 삽입해야 한다. 이 장에서는 브라우저에 플렉스 애플리케이션을 삽입하는 방법에 대해 설명하고 뒤로/앞으로 버튼의 기능과 딥 링크 기능을 구현하기 위해 플렉스 애플리케이션을 브라우저에 통합하는 방법에 대해 설명하겠다.


21장, AIR 애플리케이션 제작
플렉스로 어도비 AIR 런타임 환경에서 돌아가는 데스크탑 애플리케이션을 제작하는 방법에 대해 다룬다. 이를 통해 개발자는 플렉스 기술을 사용해서 로컬 파일 시스템이나 시스템 수준의 드래그 앤 드롭 같은 데스크탑에서만 가능한 기능에 접근할 수 있는 애플리케이션을 제작할 수 있다.


22장, 플렉스 애플리케이션 제작
완전한 플렉스 애플리케이션을 제작하고 작업함에 있어 난점들을 살펴본다. 이 장에선 각종 아키텍처 과제 및 그에 대한 각종 해법을 배우게 된다.


/감사의 글

이 책에는 많은 이들의 노력과 기여가 담겨 있다. 다음에 나열한 사람들에게 감사를 표하고 싶다.

이 책이 나올 수 있게 해 준 오라일리 임직원들께 큰 감사를 드린다. 스티브 바이스(Steve Weiss)와 오드리 도일(Audrey Doyle)에게 이 책의 집필과 편집 내내 끊임없이 수고해 주고 인내해 준 데 대해 특별한 감사를 전한다. 둘은 지속적으로 각자의 임무를 초월해 수고해 줬다.


플렉스 2 같은 훌륭한 제품을 제작해 준 데 대해서만이 아니라 우리의 문의에 답해 주고 우리가 놓치고 있었을지도 모르는 사항에 대해 알려 준 많은 어도비 가족들에게도 감사를 전하고 싶다. 그 밖에도 우리의 질문에 답해 줬을 뿐만 아니라 시간을 할애해 집필한 장들을 검토해 주고 소중한 의견을 제시해 준 매트 초틴(Matt Chotin), 알렉스 하루이(Alex Harui), 앤드류 스폴딩(Andrew Spaulding), 매니시 제서니(Manish Jethani)에게 특히 감사하고 싶다. 또한 이 책의 추천사를 써달라는 우리의 제의를 수락해 준 어도비의 매트 혼(Matt Horn)에게도 감사를 전한다.


이 책의 기술적 퀄리티는 필자들만의 업적은 아니다. 환상적인 그룹의 기술 감수자 분들이 몇 시간씩 들여서 잘못된 점을 최종 수정하도록 지적해 줬기에 이러한 퀄리티가 나올 수 있었다. 이 책에 들어 있는 코드가 제대로 작동하는 것이 다 기술 감수자 로민 이라니(Romin Irani)와 데렉 위스추센(Derek Wischusen) 덕택이다.


체이픽의 인사

뛰어난 공동 저자가 되어준 데 대해 조이 로트에게 사의를 표하고 싶다. 기술 영역과 출판이라는 양 업계에서의 조이의 경험 덕분에 이 책을 집필하는 긴 과정을 타개해 나갈 수 있었다. 집필 경험 내내 뒷받침해 준 나의 가족, 친구들과 더불어 아텔리스(Atellis)의 팀에게도 고마움을 표하고 싶다. 드디어 해냈다! 끝으로 집필 경험이 처음인 나를 믿어준 오라일리 팀과 이 책에 고마움을 전달하고 싶다.


조이의 인사

이 책을 집필할 수 있게 나를 섭외해 준 체이픽에게 진심으로 고맙게 생각한다. 체이픽과의 작업은 영광이었으며, 최상의 완벽주의를 통해 그는 이 책에서 내가 보여주려 의도한 최대한의 것들을 이끌어낼 수 있게 했다. ‘더 몰픽 그룹(The Morphic Group)’에서 근무하는 동료들에게도 이 책에 도움되는 조언들을 해 준 데 대해 감사를 전한다. 더불어 관대한 마음으로 뒤치다꺼리를 해 준 나의 가족과 친구들에게도 감사와 사랑을 전한다.



저자 소개


체이픽 커준(Chafic Kazoun)
체이픽 커준은 이 책의 공동 저자이자 Atellis의 수석 소프트웨어 설계사다. 1998년부터 플래시 기술 관련 업무를 해 왔으며 처음부터 플렉스를 병행했다.


조이 로트(Joey Lott)
조이 로트는 The Morphic Group(www.themorphicgroup.com)의 공동 설립자며, 플렉스 애플리케이션 개발이 주력 업무다. 오라일리의 『ActionScript 3 Cookbook』을 비롯한 플렉스 및 플래시 기술에 관한 유수의 서적들을 집필했다.


***********************************************************


역자 머리말


약 7년 전 플래시를 처음 접해서 뭔가 만들어 보려고 했던 때가 생각난다. 그때는 액션스크립트라고 해봐야 거의 언어적인 측면이 미미해서 별도로 액션스크립트라는 존재나 개념을 정립하지 못한 채 프레임 간의 이동이나 버튼 제어 등에 간략한 스크립트를 사용했었다. 처음 액션스크립트 2가 등장해서 접했을 때는, 내가 기존에 플래시 파일을 제작할 때 사용했던 그 간략한 스크립트 명령들을 이런 식으로 다른 언어처럼 길게 작성해서 상당한 것들을 제어할 수 있다는 점에 조금 놀랐다. 당시에 플래시 툴을 이용해서 액션스크립트 2를 작성하고 각종 세련된 사용자 정의 컴포넌트를 만들어내는 전문가 분들의 소스코드를 살펴보면서 이런 식으로 컴포넌트들을 이용해 커다란 애플리케이션을 제작한다면 참 유용하겠다는 생각을 했었다. 하지만 당시 액션스크립트 2를 능숙하게 프로그래밍하는 분들을 많이 접하지 못해서 개인적으로는 과연 이러한 액션스크립트가 대중화되어 널리 활용될지에 대해서는 회의를 갖고 있었다. 내가 플래시나 액션스크립트 전문가라든지 심지어 툴에 익숙한 플래시 디자이너인 것도 아니지만, 그래도 액션스크립트 2가 아직 여타의 구조적 언어들에 비해서는 뭔가 약간의 체계성이 부족한 것 같다는 생각이 들었다. 그 후 액션스크립트에 대한 나의 관심이 식어갈 무렵 액션스크립트 3가 공식 발표됐고 많은 변화를 발견했다. 무엇보다 기존에 접한 다른 언어와 상당히 비슷해졌고 엄격해진 객체 지향 개념의 첨가로 훨씬 더 체계화된 느낌이었다.


사실 내가 플렉스를 접하게 된 것은 그리 오래되지 않았다. 액션스크립트 3 등장 직후, 플래시 툴에서 직접 그리고 프레임을 제어하는 디자인과 애니메이션 기반의 제작을 탈피해서 이제는 뭔가 액션스크립트 3를 적극 활용해서 간편한 방식으로 애플리케이션을 만들 수 있다면 좋지 않을까 생각하게 됐고 그 무렵 국내에서 플렉스 2의 인기도 때마침 높아지고 있는 시점이어서 나도 손쉽게 플렉스 2의 존재를 감지하게 됐다. 예전 학창 시절에 MFC 수업을 듣고 처음 실습했을 때의 그 편의적인 느낌이 다가왔다. 단순히 몇 줄 되지 않는 코드 작성만으로 간단하게 애플리케이션이 완성되고 실행해 볼 수 있다는 점에서 전율을 느꼈다.


이 책에도 이미 충분히 설명돼 있기에 플렉스 3에 관한 추가적인 언급을 할 필요성은 느끼지 못하지만 플렉스 3는 계속된 진화 과정을 거쳐서 이제 표준, 객체 지향, 호환성 등이 지원되는 간결하고 세련되면서도 강력한 기능의 각종 RIA를 제작하는 데 있어선 더할 나위 없는 도구로 자리 잡으리라 예견한다.


이 책에 수록된 무수한 부분 예제들을 직접 작성해서 플렉스 프레임워크나 명령줄 툴을 이용해서 컴파일하고 결과를 본다면 그 각각의 한 단계를 밟을 때마다 각자의 실력과 경험이 누적돼 갈 것이라 생각한다. 특히 맨 끝의 22장엔 그 앞의 장들에서 다룬 모든 내용을 총괄 적용해 완성 애플리케이션을 제작하는 과정까지 설명하고 있으니 종합적 응용 방법을 손쉽게 주워 담을 수 있다. 플렉스 2 서적 번역 중 그 짧은 시차에 플렉스 3가 발표되는 바람에 재번역을 해야 했지만 그를 통해 짤막한 코드를 반복 실행해 봄으로써 내 별 볼일 없는 플렉스 경험도 조금이나마 쌓였고 플렉스에 대한 애정도 커졌다. 이 툴을 활용한다면 아직까지 우리가 상상하지 못하는 무한한 잠재 가능성을 웹 또는 데스크탑에서 실현해낼 수도 있지 않을까 싶다. 플렉스 3라는 편리하고 발전적인 도구가 마련돼 있으니 이 도구의 사용법을 효과적으로 터득해서 이제 각자의 상상 속 아이디어를 실제로 적용한 호화로운 애플리케이션을 무한한 크기의 백지 위에 자유롭게 구현해 보자.


김지원(www.gtport.com)
프로그래밍과 새로운 웹 기술에 항상 관심을 갖고 공학 용어의 명확성에 대해 고민하고 있다. 기술 문서, 매뉴얼, IT 관련 논문을 주로 번역했으며 해외 기술 논문 한글화 작업에도 참여했다. 번역서로는 『CSS 비밀 매뉴얼』, 『Ajax 디자인 패턴』, 『시스템 관리자를 위한 시간관리 전략』, 『웹 2.0 프로그래밍』이 있다.


***********************************************************


구매하러 가기





크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 1 and Comment 3
사용자 삽입 이미지

저자명 : 조셉 위(Joseph Yiu)   
역자명 : 임희연  
출판사 : 도서출판 ITC  
정 가  : 25,000원  
ISBN : 978-89-90758-21-7  
원서명 : The Definitive Guide to the ARM Cortex-M3   
출간년월 : 2009 년 3 월   
페이지 : 472 쪽   
크기 : 세로 : 245, 가로 : 188, 반양장 

새로운 ARM Cortex-M3 프로세서의 프로그래밍 및 구현을 위한 유일한 가이드!

  Cortex-M3는 주목받고 있는 최신의 임베디드 32-비트 프로세서이다. 이 프로세서는 비용과 전력 소모는 낮고, 재구성은 비교적 자유롭게 할 수 있다는 장점을 갖고 있다. 이 책은 임베디드 하드웨어와 소프트웨어 엔지니어들에게 Cortex-M3에 대한 전반적인 개요를 제공할 뿐 아니라 이를 사용할 때 얻을 수 있는 모든 장점들에 대해 상세히 설명하고 있다. 새로운 아키텍처에 대한 소개, 명령어 세트 요약, 하드웨어 특징, 디버깅 시스템에 대한 전반적인 설명이 모두 포함되어 있다. 또한 ARM 툴 및 GNU 툴 체인을 사용하여 소프트웨어 개발을 할 때의 기본 단계들을 포함하는 어플리케이션 예제들도 충분히 제공하고 있다.

  이 책에는 ARM Cortex-M3에 대한 모든 것이 담겨져 있다.

• ARM 아키텍처의 배경
• Cortex-M3 기본 사항들
• 동작 모드
• 익셉션과 인터럽트
• 어셈블리 기초
• 16-비트 및 32-비트 데이터 처리 명령어
• 메모리 시스템
• 구현에 대한 개요
• 어셈블리어와 C를 사용한 Cortex-M3 프로그래밍
• 개발 흐름
• 전력 관리
• 멀티프로세서 통신
• 개발 툴
• 디버깅
• KEIL RealView MDK를 이용한 시작 설명서


이 책의 대상 독자
  ARM사의 Cotex-M3 프로세서에 관심이 있는 하드웨어 엔지니어와 소프트웨어 엔지니어 모두를 위한 책이다. 마이크로컨트롤러 또는 마이크로프로세서에 대한 경험을 가지고 Cortex-M3 프로세서에 대해 조사하고 있는 프로그래머, 임베디드 제품 설계자, SoC 엔지니어, 연구원 등의 사람들이 좀 더 가볍고 이해하기 쉽게 읽을 수 있도록 만들어졌다.


저자 소개
Joseph Yiu(조셉 위)
ARM사의 주임 엔지니어

역자 소개
임희연
  대학원 인턴 시절 ARM을 처음 접하고 그 매력에 빠져서, 현재까지도 ARM 기반의 임베디드 시스템 개발을 전문으로 하는 전자 공학도로 일하고 있다. 대학원 졸업 후, 삼성전자에서 시스템 소프트웨어 엔지니어로 일하다가, 현재는 ㈜씨랩시스에서 삼성 ARM 기반의 범용 하드웨어 플랫폼 개발을 전담하고 있다. 역서로는 《ARM System Developer's Guide 한국어판》(사이텍미디어, 2005), 《임베디드 시스템 아키텍처》(ITC, 2007)가 있다.

감수자 소개
이종수
  IT/BT 벤처 붐이 일고 ARM 프로세서가 생소하던 그 시절, 엔지니어로서 기술적인 매력을 느껴 이를 보급하고자 기술 강의를 시작한 것이 인연을 맺은 지 벌써 10여 년을 훌쩍 넘겨버린 베테랑 엔지니어이자 강사이다. 삼성전자와 LG전자를 필두로 대기업, 중소기업, 교육기관에서 다수의 ARM 교육과정을 만들고 강의를 진행해왔으며, ARM 관련서적의 번역 및 감수, 잡지 기고 등의 왕성한 활동을 하고 있다. 국내 ARM 대리점이자 공인교육기관으로서, 그리고 최적화된 ARM 솔루션 등을 공급하는 임베디드 ARM 전문업체인 ㈜씨랩시스의 대표이사를 거쳐 현재는 연구소장 직을 맡고 있다. 최근에는 국내보다 해외시장에서의 시장점유율을 높이기 위해 최신기술을 적용한 전문화된 솔루션 구축을 위해 힘쓰고 있다.

***********************************************************

차례

제1장 소개 1
ARM Cortex-M3 프로세서란 무엇인가? 2
ARM과 ARM 아키텍처의 배경지식 4
명령어 세트 개발 9
Thumb-2 명령어 세트 아키텍처(ISA) 11
Cortex-M3 프로세서 어플리케이션 12
이 책의 구조 13
심화학습 14

제2장 Cortex-M3의 개요 15
Cortex-M3 기초 16
레지스터 16
동작 모드 19
내장된 중첩 벡터 인터럽트 컨트롤러 21
메모리 맵 23
버스 인터페이스 24
메모리 보호 장치 24
명령어 세트 25
인터럽트와 익셉션 27
디버깅 지원 29
특징 요약 30

제3장 Cortex-M3 기본 33
레지스터 34
특별한 레지스터 38
동작 모드 43
익셉션과 인터럽트 45
벡터 테이블 47
스택 메모리 동작 48
리셋 시퀀스 53

제4장 명령어 세트 57
어셈블리 기초 58
명령어 리스트 62
명령어 설명 69
Cortex-M3에서의 몇 가지 유용한 명령어 93

제5장 메모리 시스템 105
메모리 시스템 특징 개요 106
메모리 맵 106
메모리 접근 속성 109
디폴트 메모리 접근 허용 111
비트-대역 동작 112
비정렬 전송 122
배타적 접근 124
엔디안 모드 126

제6장 Cortex-M3 구현 개요 129
파이프라인 130
상세한 블록 다이어그램 131
Cortex-M3에서의 버스 인터페이스 136
Cortex-M3에서의 다른 인터페이스 137
외부 전용 주변장치 버스 138
전형적인 연결 140
리셋 신호 141

제7장 익셉션 143
익셉션 유형 144
우선순위 정의 146
벡터 테이블 153
인터럽트 입력 및 펜딩 동작 155
결함 익셉션 159
SVC와 PendSV 166

제8장 NVIC와 인터럽트 제어 171
NVIC 개요 172
기본적인 인터럽트 설정 172
인터럽트 활성화 및 클리어 활성화 173
인터럽트 펜딩 및 클리어 펜딩 173
인터럽트를 셋업하는 과정의 예 181
소프트웨어 인터럽트 183
SYSTICK 타이머 184

제9장 인터럽트 동작 187
인터럽트/익셉션 시퀀스 188
익셉션 종료 190
중첩 인터럽트 191
테일-체인 인터럽트 192
늦은 도착 192
익셉션 리턴값에 대한 보다 상세한 사항 193
인터럽트 지연 194
인터럽트와 관련된 결함 196

제10장 Cortex-M3 프로그래밍 199
개요 200
어셈블리와 C 간의 인터페이스 202
전형적인 개발 흐름 203
첫 번째 단계 204
출력물 생성하기 205
데이터 메모리 사용하기 211
세마포어를 위한 배타적 접근 사용하기 212
세마포어를 위한 비트 대역 사용하기 215
비트 영역 추출 및 테이블 분기 사용하기 216

제11장 익셉션 프로그래밍 219
인터럽트 사용하기 220
익셉션/인터럽트 핸들러 225
소프트웨어 인터럽트 226
익셉션 핸들러를 가진 예제 227
SVC 사용하기 231
SVC 예제: 출력함수 사용 233
C에서 SVC 사용하기 236

제12장 진보한 프로그래밍 특징과 시스템 동작 241
두 개의 분리된 스택을 가지고 있는 시스템 동작시키기 242
더블워드 스택 정렬 245
Nonbase 쓰레드 활성화 246
성능 고려 248
락업 상황 251

제13장 메모리 보호 장치 255
개요 256
MPU 레지스터 257
MPU 셋업하기 263
전형적인 셋업 방법 269

제14장 다른 Cortex-M3 특징 275
SYSTICK 타이머 276
전력 관리 280
멀티프로세서 통신 283
셀프-리셋 제어 286

제15장 디버그 아키텍처 289
디버깅 특징 개요 290
CoreSight 개요 290
디버그 모드 296
디버깅 이벤트 300
Cortex-M3에서의 브레이크포인트 302
디버그 상태에서 레지스터 내용에 접근하기 303
다른 코어 디버깅 특징 305

제16장 디버깅 컴포넌트 307
소개 308
트레이스 컴포넌트: 데이터 와치포인트 및 트레이스 309
트레이스 컴포넌트: 인스트루먼트 트레이스 매크로셀 311
트레이스 컴포넌트: 임베디드 트레이스 매크로셀 313
트레이스 컴포넌트: 트레이스 포트 인터페이스 장치 314
플래시 패치 및 브레이크포인트 장치 315
AHB 접근 포트 318
ROM 테이블 319

제17장 Cortex-M3 개발 시작하기 323
Cortex-M3 제품 선택 324
Cortex-M3 버전 0과 버전 1의 차이점 324
개발 툴 327

제18장 ARM7에서 Cortex-M3로 어플리케이션 포팅하기 331
개요 332
시스템 특징 332
어셈블리어 파일 336
C 프로그램 파일 339
미리 컴파일된 오브젝트 파일들 339
최적화 339

제19장 GNU 툴 체인을 사용하여 Cortex-M3 시작하기 343
배경 344
GNU 툴 체인 구하기 344
개발 플로우 345
예제 346
특별한 레지스터로의 접근 360
지원하지 않는 명령어 사용하기 360
GNU C 컴파일러 내의 인라인 어셈블러 361

제20장 KEIL RealView MDK를 이용하여 개발 시작하기 363
개요 364
μision으로 시작하기 365
UART를 통해 “Hello World” 메시지 출력하기 371
소프트웨어 테스트하기 375
디버거 사용하기 378
명령어 세트 시뮬레이터 382
벡터 테이블 수정하기 384
인터럽트를 가진 스톱워치 예제 385

부록 A Cortex-M3 명령어 요약 395
지원되는 16비트 Thumb 명령어 396
지원되는 32비트 Thumb-2 명령어 400

부록 B 16비트 Thumb 명령어와 아키텍처 버전 409

부록 C Cortex-M3 익셉션 퀵 레퍼런스 411
익셉션 유형 및 활성화 412
익셉션 스태킹 후의 스택 내용 413

부록 D NVIC 레지스터 퀵 레퍼런스 415

부록 E Cortex-M3 문제해결 가이드 433
개요 434
결함 핸들러의 개발 435
결함의 원인 이해하기 438
다른 가능한 문제점들 442

찾아보기 443

***********************************************************

추천의 글

  마이크로컨트롤러 프로그래머들은 선천적으로 정말 기질이 뛰어난 사람들이다. 그들은 고정된 설계를 가지고 매우 독창적인 방법으로 마이크로컨트롤러를 구현함으로써 아주 놀랍고도 새로운 제품들을 만든다. 그들은 보통 매우 빈약한 시스템으로부터 상당히 효율적인 컴퓨팅을 요구한다. 이러한 마법을 수행하기 위해 사용되는 기본적인 요소는 툴 체인 환경이다. ARM7TDMI 프로세서 설계를 이론적으로 설명하고 단순화하여 개선할 팀을 구성할 때, ARM사의 툴 체인 부서에 있는 엔지니어들이 CPU 설계자들과 힘을 합친 것도 바로 이런 이유이다. 이것의 통합 결과인 ARM Cortex-M3는 기존의 ARM 아키텍처에 가까운 개발 결과물을 보여주고 있다. 이 소자는 32비트 ARM 아키텍처로부터 가장 좋은 특징들을 상당히 성공적인 Thumb-2 명령어 세트 설계와 혼합하고, 여기에 몇 가지 새로운 기능들을 추가하였다. 이러한 변화에도 불구하고, Cortex-M3는 모든 기존 ARM 애호가들이 쉽게 인식할 수 있는 단순화된 프로그래머 모델을 유지하고 있다.

Wayne Lyons(웨인 라이온스) ARM사의 임베디드 솔루션팀 이사


머리말

  이 책은 ARM사의 Cotex-M3 프로세서에 관심이 있는 하드웨어 엔지니어와 소프트웨어 엔지니어 모두를 위한 책이다. Cortex-M3 Technical Reference Manual (TRM)과 ARMv7-M Architecture Application Level Reference Manual은 이미 이 새로운 프로세서에 대한 많은 정보들을 제공하고 있다. 하지만, 그것들은 너무 상세하기 때문에 초보자들이 읽기에는 도전적인 작업이 될 수 있다. 이 책은 마이크로컨트롤러 또는 마이크로프로세서에 대한 경험을 가지고 Cortex-M3 프로세서에 대해 조사하고 있는 프로그래머, 임베디드 제품 설계자, SoC 엔지니어, 연구원 등의 전문가들이 좀 더 가볍고 이해하기 쉽게 읽을 수 있도록 만들어졌다. 여기에는 새로운 아키텍처에 대한 소개, 명령어 세트 요약, 몇 가지 명령어들의 예, 하드웨어 특징들에 대한 정보, 프로세서의 진보된 디버그 시스템의 개요가 포함되어 있다. 또한 GNU 툴 체인과 ARM 툴을 사용하여 Cortex-M3 프로세서를 위한 소프트웨어를 개발할 때의 기본적인 단계들을 포함하며, 어플리케이션 예들도 제공한다. 이 책은 ARM7TDMI 프로세서에 익숙하며, Cortex-M3 프로세서로 전환하고자 하는 엔지니어들을 타깃으로 하고 있다. 이것은 프로세서들 간의 차이점과 ARM7TDMI에서 Cortex-M3로 어플리케이션 소프트웨어를 포팅하는 내용에 대해 다루고 있기 때문이다. 이 책을 리뷰하고 조언과 피드백을 제공해 준 다음의 사람들에게 감사를 전하고 싶다. Alan Tringham, Dan Brook, David Brash, Haydn Povey, Gary Campbell, Kevin McDermott, Richard Earnshaw, Samin Ishtiaq, Shyam Sadasivan, Simon Axford, Simon Craske, Simon Smith, Stephen Theobald and Wayne Lyons. 기술적인 지원을 해준 CodeSourcery와 이 책의 표지 이미지를 제공해 준 루미너리 마이크로에도 감사하고 싶다. 그리고 이 책의 출판 전문 작업을 해준 Elsevier의 팀원들에게도 감사한다. 마지막으로 나에게 이 책을 쓰라고 용기를 준 Peter Cole과 Ivan Yardley에게 특히 감사를 드린다.

Joseph Yiu(조셉 위) ARM사의 주임 엔지니어

***********************************************************

감수자의 글

  급속도로 발전하는 기술 성장 속도와 100년에 한 번 일어날까말까라고 하는 현재의 금융 위기 같은 경제 현실이, 예전에는 서로 전혀 다른 영역으로 보였지만 이제는 아주 긴밀히 연계되어 상호작용을 하고 있습니다. Apple과 같이 새로운 기술과 마케팅으로 짧은 시간 내에 급속하게 성장하는 기업이 있는가 하면, 변화에 보수적이고 느린 반응으로 경쟁력을 잃어버린 업체의 경우 불과 몇 개월 만에 문을 닫게 되는 사례를 국내외에서 흔히 찾아볼 수 있습니다. 그만큼 빠른 속도로 기술, 고객, 기업이 유기적인 반응을 한다고 할 수 있겠습니다.

  개인 혹은 단체 모두 경기가 어려울 때에는 고가의 전자 제품보다는 저가의 실용적인 제품을 찾으며, 이를 반영하여 제조회사들은 평상시보다도 훨씬 강력한 단가 인하 방법을 모색하게 됩니다. 단가를 줄이기 위한 고전적인 방법으로 물량을 키우는 규모의 전쟁이 있습니다. 최근에는 이러한 규모 이외에도 신기술로 가격장벽을 뛰어넘는 제품을 쉽게 찾아볼 수 있습니다. 이 방법은 단지 단가 인하뿐만 아니라 제품의 차별화, 신기술의 마케팅 등의 장점을 얻을 수 있어서 더욱 효과적입니다.

  이 책은 ARM사의 최신 코어인 Cortex-M3에 관련된 기술적인 내용을 다루고 있습니다. 그리 멀지 않은 지난 10년 전과 비교하면 임베디드 프로세서는 비약적인 발전을 하고 있습니다. 올해 출시되는 스마트 폰은 본인이 대학교 시절 개발용으로 사용하던 PC의 성능을 능가하고 있습니다. Full-HD 화질의 동영상을 감상하고, 인터넷과 같은 무선 네트워크가 가능하며, 가정에 있는 대형 LCD-TV와 연결되어 시청하거나 심지어 프로젝션 기능까지 가능한 제품들이 출시되는 상황입니다.

  최근 인기 급상승중인 소형 노트북에서도 프로세서 주도권 싸움이 한창입니다. 가격이 낮은 만큼 파급력이 높은 넷북은 전통적인 x86계열 프로세서를 주력으로 하는 Intel, AMD, VIA 등의 회사뿐만 아니라, 고성능 RISC를 앞세워 가격/성능/전력 소모의 우수성을 강조하는 ARM까지 혼재된 양상을 보이고 있습니다. PC 시장과 임베디드 시장이 분리되어 있던 과거와는 사뭇 다른 상황입니다.

  예를 들어, 고성능 스마트 폰, 넷북에 사용될 임베디드 프로세서로 ARM사의 Cortex 코어가 많이 채택되고 있습니다. 뿐만 아니라 간단한 기능으로 인해 주로 마이컴을 사용하던 백색가전, 생활가전 분야에서도 변화의 바람이 점차 거세어지고 있습니다. 보다 다양한 기능과 사용자 인터페이스를 고려한 신제품에서 ARM 프로세서의 채택이 증가하고 있습니다.

  기술적인 측면에서 Cortex 코어를 세부적으로 살펴보면, 고성능 멀티미디어를 위한 Cortex-A8 코어, 실시간 제어용 코어, 그리고 마이컴을 대체하기 위한 Cortex-M3 코어와 같이 크게 세 가지 형태로 분류되며 각각 약간의 차이점들을 가지고 있습니다. 그러나 기본 Cortex 명령어는 동일하며, 각각의 목적에 맞도록 추가되는 형태를 지니고 있습니다. 따라서 이 책은 기존의 ARM7/9/11의 뒤를 이은 Cortex 코어에 대한 이해와 학습을 위해 좋은 지침이 되리라고 생각합니다. PDF 문서를 제외하고 전 세계적으로 Cortex에 대한 내용만 다루는 전문서적이 없는 상황에서 국내 개발자들에게 더욱 힘이 되리라고 생각합니다.

  이 책을 통해 2009년 새해를 무섭게 변화하는 기술 변화 속에서 금융 위기가 아닌 기회의 한 해로 만들어가기를 소망합니다.

이종수
(주)씨랩시스 연구소장

감수자 소개
이종수(aron.lee앳clabsys.com)
  IT/BT 벤처 붐이 일고 ARM 프로세서가 생소하던 그 시절, 엔지니어로서 기술적인 매력을 느껴 이를 보급하고자 기술 강의를 시작한 지 벌써 10여 년을 훌쩍 넘겨버린 베테랑 엔지니어이자 강사이다. 삼성전자와 LG전자를 필두로 대기업, 중소기업, 교육기관에서 다수의 ARM 교육과정을 만들고 강의를 진행해 왔으며, ARM 관련서적의 번역 및 감수, 잡지 기고 등의 왕성한 활동을 하고 있다. 국내 ARM 대리점이자 공인교육기관으로서, 그리고 최적화된 ARM 솔루션 등을 공급하는 임베디드 ARM 전문업체인 (주)씨랩시스의 대표이사를 거쳐 현재는 연구소장직을 맡고 있다. 최근에는 국내보다 해외시장에서의 시장점유율을 높이기 위해 최신 기술을 적용한 전문화된 솔루션 구축을 위해 힘쓰고 있다.


역자 머리말

  ARM은 휴대폰, 스마트 폰, PDA 등 각종 휴대형 기기에 내장되어 우리 생활 전반에 걸쳐 알게 모르게 영향력을 미치고 있다. ARM7의 성공에 이어 ARM사의 고성능 설계 기술을 이용한 ARM9 프로세서들이 출시되자, 저전력을 요하는 기존의 휴대형 기기뿐만 아니라 TV, 냉장고, 디지털 카메라, 네비게이션 등 산업 전반에 걸쳐 앞다투어 ARM 프로세서로 제품을 개발하기 시작하였다. 프로세서의 성능이 점점 좋아지게 됨에 따라, 동영상 등의 고성능 멀티미디어 기능 구현이 가능해졌고, 이러한 멀티미디어 기능이 디폴트로 지원되면서 다양한 시장들이 하나로 통합되기 시작하였다.

  ARM11 프로세서가 막 출시될 즈음에 필자는 ARM사에 대한 걱정이 들기 시작하였다. ARM9 기술만으로도 웬만한 제품 개발이 가능한 상황에서, 더 좋은 프로세서가 나온다고 해서 새로운 시장이 창출될 것 같지도 않고, 이러다가 기존의 고성능 프로세서를 요하는 시장이 포화상태가 되면 ARM사는 그 수명을 다하게 되는 게 아닐까 하는 생각이 들었기 때문이다.

  처음 ‘Cortex’라는 이름의 새로운 제품군이 발표되었을 때, 필자는 ARM사가 ARM12라는 기존의 직관적이고도 쉬운 이름 체계를 버리고, Cortex라고 하는 새로운 이름을 사용하려고 하는지 정말 궁금했었다. 물론 Cortex라고 하니 뭔가 색다르고 멋있어 보이기는 했지만, 왠지 어려운 기술처럼 느껴져 접근이 꺼려졌기 때문이다. 하지만, 그 상세 내용을 확인하고 나서는 크게 놀라지 않을 수 없었다. 아시다시피, ARM Cortex 시리즈는 다음과 같은 세 가지 제품군으로 구분된다.

▶ ARM Cortex-A 시리즈: 고성능 어플리케이션 플랫폼
▶ ARM Cortex-R 시리즈: 실시간 어플리케이션 플랫폼
▶ ARM Cortex-M 시리즈: 저가 마이크로컨트롤러 플랫폼

  Cortex-A 시리즈는 예상한 바와 같이 ARM12에 해당되는 고성능 어플리케이션을 위한 아키텍처이며, Cortex-R 시리즈는 RTOS가 많이 사용되는 실시간 어플리케이션을 위한 아키텍처이다. 그리고, Cortex-M 시리즈는 저가 마이크로컨트롤러가 주로 사용되는 산업 제어기기들을 위한 아키텍처이다. 위에서 알 수 있듯이, A/R/M의 각 분야는 임베디드 시장 전체를 의미한다.

  이 중에서 독자들이 집중적으로 살펴보아야 할 분야가 바로 대부분 마이크로컨트롤러(마이컴)가 장악하고 있는 M 시장이다. 사실, ARM 프로세서는 A/R 영역에서는 큰 영향력을 미치고 있었으나, M 분야에서는 그다지 영향력이 없었다. 이는 8/16비트에 비해 32비트 프로세서의 가격이 비싸다는 이유도 있겠지만, 그보다는 개발 환경 셋업 비용이 상대적으로 많이 비쌌기 때문이다. 하지만, ARM은 Cortex-M 시리즈를 통해 이러한 개발 환경에 대해 개발자들이 쉽고 저렴하게 접근할 수 있도록 세심하게 배려하였다. 이런 이유로, 필자는 ARM이 마이컴 시장에서 영향력을 행사할 때가 멀지 않았다고 본다. Cortex 시리즈의 이름 또한 임베디드 시장 전반에서 A/R/M이라는 이름이 완성하고자 하는 ARM사의 의지를 담은 듯하다.

  이 책은 ARM Cortex-M3에 기반한 시스템을 개발할 때 꼭 필요한 기본서로, ARM Cortex-M3 아키텍처에 대한 전반적인 이해를 추구하였으며, 시스템 설계시 고려해야 하는 개발 환경, 프로그래밍 방법 등에 대해 상세히 설명하고 있다. 아무쪼록 본 교재가 Cortex-M3 프로세서를 이용하여 개발을 검토하는 독자들에게 훌륭한 길잡이가 되기를 바란다.

임희연

역자 소개
임희연(kelly.lim앳clabsys.com)
  대학원 인턴 시절 ARM을 처음 접하고 그 매력에 빠져서, 현재까지도 ARM 기반의 임베디드 시스템 개발을 전문으로 하는 전자 공학도로 일하고 있다. 대학원 졸업 후, 삼성전자에서 시스템 소프트웨어 엔지니어로 일하다가, 현재에는 (주)씨랩시스에서 삼성 ARM 기반의 범용 하드웨어 플랫폼 개발을 전담하고 있다. 역서로는 《ARM System Developer? Guide 한국어판(사이텍미디어, 2005)》, 《임베디드 시스템 아키텍처(ITC, 2007)》가 있다.


 



크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
사용자 삽입 이미지

저자명 : 자스민 블랑쉐(Jasmin Blanchette), 마크 서머필드(Mark Summerfield)   
역자명 : 조성만  
출판사 : 도서출판 ITC  
정 가  : 42,000원  
ISBN : 978-89-6351-000-2  
원서명 : C++ GUI Programming with Qt 4(2/e)   
출간년월 : 2009 년 3 월   
페이지 : 960 쪽   
크기 : 세로 : 245, 가로 : 188, 반양장 

  트롤테크의 Qt를 사용하면 윈도우, 리눅스/유닉스, 맥 OS X, 그리고 임베디드 리눅스상에서 동작하는 고성능 C++ 응용프로그램을 소스코드 변경 없이 만들어낼 수 있다. 트롤테크의 두 전문가가 내놓은 이 책은 Qt의 최신 버전인 Qt 4.3을 이용해 사용자가 최고의 결과를 낼 수 있도록 처음부터 끝까지 Qt의 모든 것을 다루고 있다.

  현실적인 예제와 전문가의 깊은 조언이 담긴 이 책은 트롤테크의 신입사원 교육에 사용되고 있는 Qt 교재다. 이번에 선보이는 제2판은 그 내용이 크게 개정되고 확장되어, 모델/뷰 응용프로그램의 제작에서부터 새로운 그래픽스 뷰 클래스의 사용에 이르기까지, 모든 부분에 있어 최고의 Qt 프로그래밍 패턴들을 담아내고 있다. 사실상 모든 GUI 개발 업무에 대한 해결책과 더불어, 데이터베이스 접근, XML 통합, 커스텀 위젯 제작 등과 같은 수많은 고급 기법들을 만나볼 수 있는 이 책은, Qt를 처음 배우는 사용자나 경험 있는 사용자 모두에게 Qt 4.3의 모든 것을 알려줄 것이다.

• 데이터베이스, XML, 큐토피아 임베디드 프로그래밍 관련 내용 전면 개정
• QDialogButtonBox 사용법, 윈도우 비스타 지원, 위젯 스타일링을 위한 CSS 지원 등, Qt 4.2와 4.3의 모든 변경사항 총 망라
• 2D 및 3D 그래픽스 관련 내용 분리 수록, Qt의 새로운 그래픽스 뷰 클래스와 QPainter의 OpenGL 백엔드 기능 소개
• CSS 및 QStyle 서브클래싱을 통한 룩앤필 커스터마이징, ECMAScript를 사용한 응용프로그램 스크립팅 관련 내용 추가
• Qt 4의 모델/뷰 구조, 플러그인 지원, 레이아웃 관리, 이벤트 처리, 컨테이너 클래스 등에 대한 세부설명 수록
• 플러그인 제작에서부터 네이티브 API 연동에 이르기까지, 다른 책에서는 찾아볼 수 없는 고급 기법 수록
• 새롭게 선보이는 Qt 잠비를 다룬 부록 추가

www.trolltech.com
 

지은이 소개

자스민 블랑쉐Jasmin Blanchette

  자스민 블랑쉐는 2001년 캐나다 퀘벡Quebec의 셔브룩 대학교University of Sherbrooke에서 컴퓨터 과학 학사학위를 받았다. 2000년 여름, 트롤테크의 소프트웨어 엔지니어 인턴십work term을 밟았으며, 이것을 인연으로 2001년 초부터 지금까지 트롤테크에 몸담고 있다. Qt 4의 컨테이너 클래스 및 레이아웃 시스템을 담당한 핵심적인 인물로, 『C++ GUI Programming with Qt 3』(2003)와 『C++ GUI Programming with Qt 4』(2005)를 공동 집필했다. 현재 트롤테크의 선임 소프트웨어 엔지니어로 근무하고 있으며, 노르웨이의 오슬로 대학교University of Oslo에서 컴퓨터 과학 석사과정을 밟고 있다.

마크 서머필드Mark Summerfield

  마크 서머필드는 1993년 영국 웨일즈 스완지 대학교University of Wales Swansea에서 컴퓨터 과학 학사학위를 받았다. 대학졸업 후 1년간 대학원 연구과정postgraduate research을 밟았으며, 트롤테크에 입사하기 전까지 다양한 회사에서 소프트웨어 엔지니어로 근무했다. 3년 가까이 트롤테크의 다큐멘테이션 매니저documentation manager로 근무하면서 Qt 쿼터리Qt Quarterly를 발행했으며, 『C++ GUI Programming with Qt 3』(2003)와 『C++ GUI Programming with Qt 4』(2005)를 공동 집필했고, 최근에는 『Rapid GUI Programming with Python and Qt』(2007)를 집필했다. 현재 교육 및 컨설팅 업체인 Qtrac (Quality Training Research and Consultancy, http://www.qtrac.eu/)을 운영하고 있으며, C++, Qt, Python, PyQt에 대한 전문 트레이너 및 컨설턴트로 활동하고 있다.


옮긴이 소개

조성만 mann@chosungmann.org

  옮긴이 조성만은 단국대학교에서 컴퓨터과학을 공부했다. 클라우드 컴퓨팅Cloud Computing 기술에 기반을 둔 소프트웨어 퍼블리싱Software Publishing과 서로 다른 컴퓨팅 환경을 넘나드는 크로스 플랫폼Cross Platform 영역 그리고 모바일 컴퓨팅 환경에서의 사용자 경험User Experience에 관심 있다. 현재 ㈜인프라웨어Infraware에서 근무하고 있으며, 오픈 모바일 환경인 안드로이드Android와 오픈모코Openmoko에 푹 빠져 지내고 있다. 운영하고 있는 홈페이지는 다음과 같다. http://www.chosungmann.org

***********************************************************

지은이의 글

  Qt는 크로스 플랫폼 GUI 응용프로그램 제작을 위한 전방위적인 C++ 응용프로그램 개발 프레임워크이다. “Write Once, Compile Anywhere”를 모토로 갖는 Qt는, 프로그래머들이 한 벌의 소스 코드만을 가지고 윈도우 98 이상의 계열과, 맥 OS X, 리눅스, 솔라리스, HP-UX, 그리고 X11이 탑재된 수많은 유닉스 버전상에서 동작하는 응용프로그램을 만들 수 있도록 해준다. 이러한 Qt 라이브러리와 도구들은, 임베디드 리눅스상에서 독자적인 윈도우 시스템을 제공하는 제품인 Qt/임베디드 리눅스Qt/Embedded Linux에도 포함되어 있다.

  이 책의 목적은 Qt 4를 이용한 GUI 프로그램의 제작방법을 가르쳐주는 것으로써, 그 내용은 “Hello Qt”로부터 시작하여, 커스텀 위젯의 제작 및 드래그 앤 드롭의 구현과 같은 고급 토픽으로 빠르게 나아간다. 본문에 수록된 예제들의 소스 코드는 이 책의 웹사이트인 http://www.informit.com/title/0132354160에서 다운로드받을 수 있으며, 본문의 내용을 실습하기 위한 소프트웨어의 다운로드 및 설치방법은 부록 1에 설명되어 있다.

  이 책은 크게 세 부분으로 구성되어 있다. 1부에서는 Qt를 사용한 GUI 응용프로그램 프로그래밍에 필수적인 모든 기본 개념들과 예제들을 다루는데, 이 1부에서 다루는 내용만으로도 충분히 유용한 GUI 응용프로그램을 만들 수 있다. 2부에서는 Qt의 핵심 주제들을 심도 있게 다루며, 3부에서는 좀더 특화된 고급주제들을 다룬다. 2부와 3부의 내용은 여러분이 필요한 주제에 맞게 원하는 순서대로 읽을 수 있도록 구성되어 있지만, 각각의 장들은 독자들이 이미 1부의 내용을 잘 이해하고 있다고 가정한 채 기술되어 있다. 또한 이 책은 몇 가지 부록을 수록하고 있는데, 부록 2에서는 Qt 응용프로그램의 빌드 방법을, 부록 3에서는 Qt의 자바 버전인 Qt 잠비를 소개한다.

  이 책의 제1판인 『C++ GUI Programming with Qt 4』는, Qt 4의 독특한 프로그래밍 테크닉이 반영되도록 그 내용이 전면 개정되었고, 또한 Qt 4의 모델/뷰 구조model/view architecture, 새로운 플러그인 프레임워크plugin framework, Qt/임베디드 리눅스를 사용한 임베디드 프로그래밍 등 몇 가지 새로운 내용과 부록을 포함하고 있었지만, 책 내용 대부분이 『C++ GUI Programming with Qt 3』를 기반으로 하고 있었다. 이번 제2판에서는 Qt 4.2와 4.3에서 소개된 특징들에 대한 장점을 취하도록 그 내용이 완전히 새롭게 업데이트 되었으며, 룩앤필 커스터마이징look and feel customization 및 응용프로그램 스크립팅application scripting에 대한 내용과 더불어 두 개의 부록이 새롭게 추가되었다. 한 개의 장을 통해 다루어졌었던 그래픽스 부분은 이제 2D와 3D 부분으로 각각 나뉘어졌으며, 이를 통해 새로운 그래픽 뷰 클래스graphics view classes와 QPainter의 OpenGL 백엔드OpenGL back-end 기능을 소개하고 있다. 뿐만 아니라, 데이터베이스, XML, 그리고 임베디드 프로그래밍에 대한 내용이 새롭게 보강되었다.

  이번 제2판에서는 이전 판에서 지향했던 바와 마찬가지로, Qt 온라인 문서를 단순히 개작하여 재탕하거나 요약하는 것이 아닌, 현실적인 예제의 제공과 Qt 프로그래밍의 알기 쉬운 해설을 강조한다. 또한 Qt 4 프로그래밍의 견고한 원리와 경험을 가르쳐주고 있기 때문에, Qt 4.4나 Qt 4.5 등 앞으로 발표될 Qt 4.x 버전에 새롭게 추가되는 Qt 모듈들 역시 마찬가지로 쉽게 익힐 수 있을 것이다. 여러분이 앞으로 발표될 Qt 버전을 사용하게 된다면, 반드시 레퍼런스 문서의 “What’s New in Qt 4.x”를 숙지하여 새로운 기능에 대한 정보를 얻기 바란다.

  우리는 C++이나 자바 또는 C#에 대한 기본 지식이 있는 독자들을 대상으로 이 책을 집필했다. 이 책의 예제들은 C++의 많은 기능들 중 Qt 프로그래밍에 거의 사용되지 않는 것들을 제외한 C++의 일부만을 사용해 작성되었다. 하지만 몇몇 예제들의 경우 고급 C++ 구조의 사용이 불가피했는데, 이러한 경우에는 그에 대해 충분히 설명해 놓았다. 자바나 C#에는 익숙하지만 C++에 대한 경험이 전혀 없거나 부족하다고 생각되는 독자들은 부록 4의 내용을 먼저 읽어볼 것을 권한다. 부록 4에서는 여러분이 이 책을 읽어나갈 수 있을 정도의 C++에 대한 내용을 다루고 있다. C++을 사용한 객체지향 프로그래밍에 대해 좀 더 살펴보길 원한다면, P. J. Deitel과 H. M. Deitel이 지은 『C++ How to Program』(Prentice Hall)과 Stanley B. Lippman, Josée Lajoie, Barbara E. Moo가 공동 집필한 『C++ Primer』(Addison-Wesley)를 추천한다.

  Qt가 크로스 플랫폼 프레임워크이긴 하지만, 그의 직관적이고 강력한 API 덕분에 단일 플랫폼을 위한 소프트웨어 개발에도 많이 사용되고 있다. 어도비 포토샵 앨범Adobe Photoshop Album은 시장에 출시되어 있는 Qt로 작성된 윈도우 응용프로그램의 한 가지 예에 지나지 않는다. 3D 애니메이션 툴을 비롯해 디지털 영상처리, 반도체 칩 설계, 석유 및 가스 탐사, 금융 서비스, 의료 영상과 같은 분야의 시장에 출시되어 있는 복잡한 많은 소프트웨어 시스템들이 Qt로 구축되어 있다. 혹 여러분이 지금 Qt로 작성된 윈도우 응용 제품으로 수입을 벌어들이고 있다면, 이를 단순히 재컴파일함으로써 맥 OS X와 리눅스 진영에도 새로운 시장을 창출해낼 수 있게 되는 것이다.

  Qt는 다양한 라이선스를 통해 사용될 수 있다. 상용 응용프로그램을 개발하고자 하는 경우에는 반드시 트롤테크로부터 상용 Qt 라이선스를 구입해야만 하며, 오픈 소스 프로그램을 개발하고자 하는 경우에는 Qt 오픈 소스 (GPL) 에디션을 사용하면 된다. KDEK Desktop Environment를 비롯하여, KDE상에서 동작하는 대부분의 오픈 소스 응용프로그램들이 바로 Qt를 사용해 제작되었다.

  Qt가 가진 수 백여 가지의 클래스들과 더불어, Qt의 기능과 능력을 확장해주는 많은 애드온add-ons 제품들이 존재한다. 이러한 제품들 중에는 Qt 솔루션Qt Solutions 컴포넌트와 같이 트롤테크를 통해 제공되는 것이 있는가 하면, 다른 회사들이나 오픈 소스 커뮤니티에 의해 제공되기도 하는데, 사용 가능한 이들 애드온 제품의 목록은 http://www.trolltech.com/products/qt/3rdparty/를 통해 확인해볼 수 있다. 한편 트롤테크의 개발자들은 트롤테크 랩Trolltech Labs(http://labs.trolltech.com/)이라는 그들만의 웹사이트를 가지고 있는데, 이곳에는 그들이 작성한 비공식적인 코드가 올려지게 된다. 또한 Qt는 qt-interest 메일링 리스트를 사용하는 잘 구축된 사용자 커뮤니티를 가지고 있는데, 이에 대한 보다 자세한 내용은 http://lists.trolltech.com/을 참고하도록 하자.

제작과정에 대하여

  저자들은 NEdit과 Vim을 사용해 원고를 작성했다. 저자들이 직접 본문을 조판typeset하고 색인을 붙였으며, 이들을 수정된 Lout 구문modified Lout syntax으로 표기한 뒤, 파이썬Python으로 작성한 전처리기를 사용해 본래의 순수한 Lout로 변환했다. 이 책에 사용된 모든 다이어그램은 Lout로 제작되었으며, 스크린 샷은 ImageMagick과 KView를 사용해 포스트스크립트PostScript로 변환되었다. 저자들은 모든 편집 및 처리과정을 KDE가 설치된 페도라Fedora와 쿠분투Kubuntu상에서 수행했으며, 예제 프로그램은 윈도우, 리눅스, 맥 OS X에서 테스트되었다.

  이 책에서 발견된 오류나, 우리에게 제안하고자 하는 내용이 있다면 qt-book@trolltech.com을 통해 보내주길 바란다. 정오표는 이 책의 웹사이트(http://www.prenhallprofessional.com/title/0132354160)를 통해 공지될 것이다.

감사의 글

  제일 먼저 트롤테크의 두 설립자 중 한 명이자 우리의 두목 트롤Chief Troll Eirik Chambe-Eng에게 감사의 말을 전합니다. Eirik은 이 책의 Qt 3 에디션이었던 『C++ GUI Programming with Qt 3』를 집필하도록 우리를 열정적으로 격려했을 뿐만 아니라, 실제로 책을 쓰는 데 필요로 했던 상당한량의 시간을 할애해 주었습니다. Eirik과 더불어 트롤테크의 CEO인 Haavard Nord는 이 책의 원고를 검토해주었으며, 귀중한 조언을 아끼지 않았습니다. 이 두 분의 관대함과 선견지명에 힘입어, Matthias Ettrich는 우리가 이 책을 쓰느라 소홀할 수 밖에 없었던 본연의 업무에 대해 흔쾌히 이해해 주었고, 또한 좋은 Qt 프로그래밍 스타일에 대한 충고를 아끼지 않았습니다.

  이전에 출간되었던 이 책의 Qt 3 에디션의 경우에는 우리의 두 고객인 Paul Curtis와 Klaus Schmidinger가 검토를 맡아 주었었습니다. 이 두 분은 모두 기술적인 세부사항에 조예가 깊은 Qt 전문가로서, 우리의 원고에 있었던 매우 미묘한 몇 가지 오류들을 지적하고 그에 대한 다양한 개선점들을 제안해 주었습니다. 또한 트롤테크 내에서는 Matthias와 더불어 믿음직스럽고 듬직한 Reginald Stadlbauer가 검토에 참여해 주었습니다. 그의 기술적인 통찰력은 값을 매길 수 없을 만큼 훌륭했으며, 심지어 우리조차 가능하리라 생각지 못했던 일들을 Qt로 가능하게 하는 방법에 대해 가르쳐주었습니다.

  Eirik, Haavard, Matthias의 무한한 도움과 지원은 이번 Qt 4 에디션에서도 계속되었습니다. Klaus Schmidinger는 계속해서 우리에게 값진 피드백을 주었으며, 또한 새롭게 추가된 부분들에 대해서는 우리의 고객인 Paul Floyd가 면밀하게 검토해주었습니다. 부록 2에서 다루고 있는 SCons에 대해 도움을 준 David García Garzón과, 트롤테크내의 핵심 리뷰어 Carlos Manuel Duclos Vergara, Andreas Aardal Hanssen, Henrik Hartz, Martin Jones, Vivi Glückstad Karlsen, Trond Kjernåsen, Trenton Schulz, Andy Shaw, Gunnar Sletta, Pål de Vibe에게도 감사의 말을 전합니다.

  위에 언급한 분들 외에도 우리는 Eskil Abrahamsen Blomfeldt (Qt 잠비), Frans Englich (XML), Harald Fernengel (데이터베이스), Kent Hansen (애플리케이션 스크립팅), Volker Hilsheimer (ActiveX), Bradley Hughes (멀티스레딩), Lars Knoll (2D 그래픽스와 국제화), Anders Larsen (데이터베이스), Sam Magnuson (qmake), Marius Bugge Monsen (아이템 뷰 클래스), Dimitri Papadopoulos (Qt/X11), Girish Ramakrishnan (스타일시트), Samuel Rødal (3D 그래픽스), Rainer Schmid (네트워크킹과 XML), Amrit Pal Singh (C++의 소개), Paul Olav Tvete (커스텀 위젯과 임베디드 프로그래밍), Geir Vattekar (Qt 잠비), Thomas Zander (빌드 시스템)의 전문적인 도움을 받았습니다.

  특별히 이 책을 쓰는 과정에서 상당한 시간을 차지했던 문서와 관련된 많은 이슈들을 다뤄준 트롤테크의 문서 팀과 지원 팀, 그리고 프로젝트기간 내내 우리의 컴퓨터와 네트워크가 잘 동작될 수 있도록 신경 써준 트롤테크의 시스템 관리자 여러분들께 이 자리를 빌어 감사하다는 말을 전합니다.

  이 책의 제작과정에 있어서, 조판 도구typesetting tool인 Lout 의 제작자 Jeff Kingston은 우리의 건의사항을 수용해 Lout의 많은 기능들을 향상시켜 주었으며, James Cloos는 이 책에서 사용된 고정폭 글꼴인 DejaVu Mono의 좁은폭 버전을 제공해주었습니다. 또한 우리를 대신해 계약 및 법적 의무에 관한 업무를 처리해준 트롤테크의 Cathrine Bore와, 트롤 일러스트를 담당한 Nathan Clement, 교정을 위해 수고한 Audrey Doyle에게도 감사의 말을 전합니다. 마지막으로 이 책을 만드는 과정 가운데 아낌없는 지원과 배려로 함께해 준 편집자 Debra Williams-Cauley와 제작과정의 실무를 훌륭히 처리해준 Lara Wysong에게 감사드립니다.

자스민 블랑쉐, 마크 서머필드

***********************************************************

옮긴이의 글

  윈도우와 리눅스 그리고 맥 OS, 이 세 가지 운영체제 모두에서 실행될 수 있는 프로그램 개발을 꿈꾸셨나요? 자바를 사용하기로 마음 먹었지만, 프로그램을 실행할 운영체제에 자바 런타임 환경JRE(Java Runtime Environment)을 반드시 설치해야 하는 번거로움과, 배보다 배꼽이 더 큰 격일 수 있는 자바 런타임 환경의 부담스러운 크기, 그리고 자바 가상 머신JVM(Java Virtual Machine)에서의 수행 속도가 걱정되신다고요? 네, 여러분의 마음 모두 충분히 이해합니다. 설마 그렇다고 개발팀 세 개를 운영하실 생각은 아니시죠?

  Qt 는 소스 코드 한 벌만으로 이와 같이 다양한 운영체제 환경에서 실행 가능한 어플리케이션을 만들 수 있도록 해주는 크로스 플랫폼 응용프로그램 프레임워크cross-platform application framework입니다. 노르웨이에 있는 트롤테크Trolltech에서 처음 개발된 Qt는, 2008년 세계적인 휴대폰 제조사인 노키아Nokia가 트롤테크를 인수하면서, 현재 모바일 및 데스크톱 소프트웨어에 관한 노키아의 크로스 플랫폼 소프트웨어 전략에서 핵심적인 역할을 해내고 있습니다.

  Qt의 특징을 한 문장으로 요약하자면, “Write Once, Compile Anywhere!” 라고 말할 수 있습니다. 즉, 소스 코드는 한 벌만 만들고 이를 원하는 운영체제 환경에서 컴파일하기만 하면 해당 환경에서 실행될 수 있는 실행이미지가 만들어진다는 말이죠. 어때요, 멋지죠? Qt는 현재 가장 널리 사용되고 있는 3대 운영체제인 윈도우, 리눅스, 맥 OS를 완벽히 지원합니다. 따라서, 여러분이 Qt를 사용해 만든 소스 코드를 윈도우에서 컴파일하면 윈도우 응용프로그램이, 리눅스에서 컴파일하면 리눅스 응용프로그램이, 맥 OS에서 컴파일하면 맥 OS 응용프로그램이 되는 것이죠. 이게 전부가 아니랍니다. 오지랖 넓게도 Qt는 임베디드 리눅스와 윈도우 CE를 지원합니다. 이게 무슨 의미인지 감이 오시나요? 그렇습니다. Qt를 사용해 만든 여러분의 응용프로그램은 윈도우, 리눅스, 맥 OS뿐만 아니라, 임베디드 리눅스나 윈도우 CE가 탑재된 휴대폰 및 모바일 장치에서도 실행될 수 있습니다. 내가 만든 응용프로그램이 내 휴대폰과 친구들의 휴대폰, 심지어 세계 방방곡곡에 살고 있는 수많은 이들의 휴대폰에서 실행될 수 있다니, 그것도 소스 코드 한 줄 바꾸지 않은 채 말이죠. 정말 짜릿하지 않나요?

  구글 어스Google Earth, 어도비 포토샵 앨범Adobe Photoshop Album, 스카이프Skype, 메스메티카Mathematica, KDE, KOffice. 모두 익숙한 이름들이죠? 네, 이 것들이 바로 Qt를 사용해 만들어진 제품들입니다. 하지만 이는 여러분이 익히 들어 알고 계실법한 것들만을 나열했을 뿐이랍니다. 이외에도 소니Sony, 루카스 필름Lucas Film, 볼보Volvo 등 수많은 회사와 다양한 오픈 소스 프로젝트에서 이미 Qt가 사용되었고 지금도 많은 곳에서 사용되고 있지요. 앞서 말씀 드린 Qt의 갖가지 장점들을 대하면서, “음... 온갖 감언이설은 다 적어놨군. 소스 코드를 단 한 줄 아니 단 한 글자도 바꾸지 않고 저렇게나 다양한 운영체제 위에서 동작할 수 있다는 걸 믿을 사람이 대체 몇이나 된다고. 난 절대로 속아넘어가지 않겠어!”라며 굳은 결의를 다지셨거나, “정말 저 다양한 운영체제에서 아무런 문제 없이 매끄럽게 동작될 수 있을까? 남들이 쓰는 걸 좀 더 지켜보고 결정해야겠어!”라며 의심의 눈초리를 가지신 분들. 이 정도면 고민이 좀 해결되셨나요?

  하지만 모든 병을 낫게 하는 만병통치약이 없는 것처럼, 팔방미인 원더걸스도 매력만점 소녀시대도 어느 누군가에게는 아무런 감흥이 되지 못할 수도 있는 것처럼(하지만 몇이나 될까요 ^^), Qt도 만능일 수만은 없으며 흠 없이 완벽할 수만도 없습니다. 이 점에 대해서는 다양한 의견이 있을 수 있는데요, 이러한 관점에서 볼 때 Qt가 오픈 소스로 배포되고 있다는 점은 정말 다행스러운 일이 아닐 수 없습니다. 더 기쁜 소식은 2009년 3월에 발표될 4.5 버전을 시작으로 Qt에 LGPL 라이선스가 추가되었다는 사실입니다. 이제 소스를 공개하기 어려운 상용 제품 개발에도 라이선스 비용 걱정 없이 Qt를 마음껏 활용할 수 있게 되었을 뿐만 아니라, Qt의 저변 확대에도 한몫 톡톡히 해낼 뜻있는 결정이 내려진 것이죠.

  악기를 처음 배울 때는 먼저 악기를 쥐는 법과 소리 내는 법 그리고 음을 바꾸는 법 등을 배운 다음 곧바로 쉬운 연습곡을 통해 연주하는 법을 익힙니다. 시간이 지남에 따라 다양한 곡들을 연주할 줄 알게 되면서, 점차 악기에 대한 이해가 깊어지고 그 곡에 담긴 화성을 통해 보다 풍부한 감성과 표현력을 배우게 되지요. 프로그래밍을 배우는 것도 매한가지라고 생각합니다. 물론 하나에서부터 열까지 해당 분야의 프로그래밍에 관한 모든 것을 담은 방대한 책으로도 얼마든지 원하는 바를 이룰 수 있겠지만 대개 효율적이지 못하죠. 화성학이라든가 악식론 같은 책들은 어느 정도 악기를 연주할 줄 알고 음악에 대한 이해가 쌓인 뒤에야 읽을 수 있고 또 그래야만 완전한 내 것이 되듯, 프로그래밍 역시 처음부터 방대한 레퍼런스를 끼고 책상 앞에서 씨름하기보다는, 예제가 풍부한 책을 하나 골라 직접 따라 해보는 편이 훨씬 기억에도 오래 남고 더 효율적이지 않을까요?

  이 책은 Qt라는 악기를 배우기 위해 필요한 ‘악보’와도 같은 책입니다. 누군가에게 악기를 이야기하기 보다는 실제로 그 악기를 연주해 보이는 것이 훨씬 더 많은 것을 말해줄 수 있듯이, 이 책에 담긴 수많은 예제를 통해 여러분은 Qt를 아는 것뿐만 아니라 실제로 여러분의 현장에서 ‘연주’할 수 있게 될 것입니다. 게다가 이 책은 Qt를 만든 트롤테크의 사내 교육 교재로 사용되고 있는 유일한 공식도서이기 때문에, 적어도 책을 잘못 만나 시간을 버리는 일 역시 없을 겁니다.

  이제 약간의 변명을 늘어놓아야 할 타이밍이군요. 이 책을 옮기면서 마음만은 언제나 철저히 독자의 편에 서서 최선을 다했다고 감히 말씀드리고 싶지만 그 결과에 대해서는 한없이 겸손할 수 밖에 없습니다. 출간 직전 원고를 다시 한번 정독하면서 드는 아쉬움이 이만저만 아니네요. 이 책을 읽으면서 갸우뚱하거나 어색하게 느껴지는 부분이 있다면 모두 역자의 부족함 탓임을 미리 말씀드리고 싶습니다. 이 책에서 접하게 될 우리말로 된 전문 용어는 마이크로소프트 용어집 2007년 1월 30일자와, IT 분야에서 가장 탁월한 번역가로 손꼽히는 곽용재 님과 류광 님께서 정리하신 용어대역을 최대한 참고했습니다. 이 분야에서 선구적인 일을 하고 계시는 두 분께 지면을 빌어 감사와 고마움의 마음을 전해드립니다.

  자, 이제 그럼 출발해 볼까요? 그 이름도 깜찍한 Qt와 함께 즐거운 프로그래밍을 하세요!

감사드리고 싶은 분들

  이 책이 우리말로 옮겨지기까지 너무나도 많은 분들의 시간과 헌신적인 노력 그리고 격려가 필요했습니다. 이 책의 번역 제안을 흔쾌히 받아주시고, 번번히 예정된 시간을 넘기기 일쑤였던 못난 역자에게 밥 사주시며 용기주신 ITC 장성두 실장님(드디어 책이 나오는군요!!!), 원서보다 더 멋지게 편집해주신 성은경 님(와우, 책이 너무 예쁜데요?), 어색하기 짝없는 서툰 글을 깔끔하게 다듬어주신 김경희 님(덕분에 읽을 만한 글이 되었어요)께 진심으로 감사의 말씀을 드립니다.

  눈코 뜰 새 없이 바쁜 일정 중에도 제자의 부족한 글을 기꺼이 검토해주신 ㈜아임구루의 강석민 선생님. C++를 너무나도 사랑한 나머지 이젠 외모까지도 비야네 스트롭스트룹을 닮아버린 그의 예술강의가 아니었다면 이 책은 세상 밖으로 나올 수 없었을 것입니다. 또한 우리네 IT 교육 현장 최전방에서 혼이 담긴 강의와 감동이 있는 코딩을 몸소 실천하고 계시면서 아낌없는 격려와 후원으로 용기주신 영혼의 프로그래머, ㈜아임구루의 김정인 선생님께도 감사 드립니다.

  이 책의 기술적인 오류와 내용을 검토해준 멋진 친구들, 화끈한 정렬의 남자 종철이(보고픈 녀석!)와 팀 구루 팩토리Guru Factory의 잘생긴 꽃미남 삼인방 오태(이젠 장가만 가면 되겠구나), 찬식이(올해는 사랑하는 사람 꼭 만나기를), 도광이(마커스를 뛰어넘을 그날까지 파이팅)에게 다시 한번 고마움과 사랑의 마음을 전하며, 팀 멤버 전원 삼성소프트웨어 멤버십 합격을 축하하고 싶습니다. 또 조류독감 시즌마다 집중적으로 치킨을 함께 먹어준 닭사마 영선이, 지난 겨우내 프로젝트로 함께 고생했던 팀 ING의 정훈이, 영원이, 승표, 경민이, 번역 작업을 응원해준 쾌남 명진이, /잉/ 혁이, 만나면 늘 즐거운 다담패밀리 민찬 형님(보고 싶어요 행님), 종운이(건강해라! 꼭!), 귀염둥이 경택이, 말썽꾸러기 종하, 까칠한 하나에게도 감사와 고마움의 말을 전합니다.

번역 작업이 지루하지 않도록 음악을 무한 공급해준 DJ 엘리사Alyssa(은선이), 멀리 있어도 늘 가족 같은 미수누이와 은진이(이승호-조미수, 이대성-이은진 커플의 결혼을 축하하며), 이들의 응원은 늘 큰 힘이 됐습니다(다들 정말 고마워!). 그리고 2009년 한해 신나는 여행을 함께하게 된 사랑하는 예닮 BTB, 전상현 전도사님(목사님 되신 것 축하해요!), 깜찍한 인희, 듬직한 영현이, 박력 있는 민애, 물개를 꿈꾸는 현우, 간지남 윤수, 하늘을 날게 된 예신이, 잘생기고 멋진 지후, 이영애 뺨치는 선영이, 귀여운 예령이에게 사랑과 감사의 말을 전하며(모두 파이팅!), 마지막으로 늘 든든한 우리 가족, 그리고 사랑하는 나의 하나님께 감사 드립니다.

2009년 2월
조성만


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
prev Prev : [1] : [2] : [3] : [4] : Next next