작년 이맘 때도 원서 무료 배포 이벤트를 시행했었는데, 근 1년 만에 다시 또 시행하게 됩니다. 작년보다 책이 좀 늘었네요. 이 책들은 출판사 책장에서 너무 오랫동안 사람의 손길을 기다리고 있던 책들입니다. 이제서라도 개발자의 책장으로 옮길 수 있게 되어 정말 다행입니다! ^^*
안녕하세요^^
이런 좋은 이벤트를 열어주셔서 감사해요~~
제가 맘에 드는 책이 몇 권 있는데
혹시 서평 하나 당 원서 한 권인가요? 아니면 무조건 한 명 당 한 권만 신청할 수 있나요? ?
제이펍 서적을 몇 개 가지고 있어서 이런 질문도 해볼 수 있고 너무 좋네요(_ _*)
출판사 제이펍 원출판사 Manning 원서명 Spring in Action(3rd Edition)(원서 ISBN: 9781935182351) 저자명 크레이그 월즈(Craig Walls) 역자명 홍영표 출판일 2012년 2월 10일 페이지 544쪽 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 30,000원 ISBN 978-89-94506-07-4 부가기호: 13560 분 야 프로그래밍 / 자바 키워드 빈 / 와이어링 / AOP / 애스펙트 지향 / 하이버네이트 / 스프링 MVC / 트랜잭션 / 스프링 웹 플로 / 스프링 시큐리티 / REST / JMS / POJO
도서 소개 100,000명이 넘는 개발자가 이 책을 통해 스프링에 눈떴다!
아마존 No. 1 스프링 서적!
이제 스프링 프레임워크는 자바 개발자의 필수 지식이 되었으며, 스프링 3에서는 SpEL(Spring Expression Language), IoC 컨테이너를 위한 새로운 애너테이션, 그리고 REST를 위한 유용한 지원 기능 등이 추가됐다. 스프링을 알고 싶거나 스프링 3.0의 새로운 기능을 파악하고 싶다면 이 책이 최선의 선택이 될 것이다.
『스프링 인 액션 제3판』 역시 베스트셀러인 1, 2판의 실용적이고 실습 위주의 구성방식을 따르고 있다. 저자인 크레이그 월즈는 실용적인 기술과 기능에 대한 설명을 재미있고 유쾌하게 풀어내는 재능이 있다. 제3판에서는 스프링 3.0의 가장 중요한 측면이라 할 수 있는 REST, 원격 서비스, 메시징, 보안, MVC, 웹 플로 등을 집중적으로 다룬다.
이 책의 주요 내용은 다음과 같다.
• 애너테이션을 이용한 설정 작업의 간소화
• RESTful 리소스 작업
• SpEL(Spring Expression Language)
• 보안, 웹 플로 등
대상 독자 이 책은 모든 자바 개발자를 대상으로 하지만 엔터프라이즈 개발자에게 특히 유용하다. 각 장을 거치면서 코드 예제의 복잡도를 서서히 늘려가겠지만, 스프링의 진정한 힘은 엔터프라이즈 애플리케이션 개발을 더 쉽게 하는 데 있다. 따라서 엔터프라이즈 개발자들은 이 책에 있는 예제들의 진가를 알 수 있을 것이다.
이 책의 구성
1부에서는 스프링 프레임워크의 가장 핵심적인 두 개의 기능인 종속객체 주입(DI: Dependency Injection)과 애스펙트 지향 프로그래밍(AOP: Aspect-Oriented Programming)을 알아본다. 이 둘은 이 책에서 계속 사용되는 스프링의 기본개념으로 잘 이해해야 한다.
1장에서는 DI 및 AOP를 소개하고, 느슨하게 결합된 자바 애플리케이션을 개발하는 데 이들이 어떤 역할을 하는지 살펴본다.
2장에서는 DI를 이용해 애플리케이션 객체를 구성하고 연관 짓는 방법을 좀 더 자세히 살펴본다. 또한 느슨하게 결합된 컴포넌트를 작성하는 방법과 XML을 이용해 스프링 컨테이너 내에서 종속객체와 프로퍼티를 연결하는 방법을 배운다.
스프링 XML 설정의 기본 사항에 익숙해졌다면, 3장에서는 XML 설정을 애너테이션 기반의 방식으로 나타내는 방법을 알아본다.
4장에서는 스프링 AOP를 이용해 서비스하는 객체에서 횡단관심사(cross-cutting concerns)를 서로 분리하는 방법을 살펴본다. 또한 4장 이후에서는 스프링 AOP를 이용해 트랜잭션이나 보안, 캐시 등의 서비스를 선언적 방식으로 개발하는 방법을 설명하는데, 4장은 이러한 내용의 토대가 되는 중요한 장이다.
2부에서는 1부에서 소개한 DI와 AOP 기능을 바탕으로 구성되는데, 애플리케이션의 공통적인 요소를 구성하기 위해 이와 같은 개념을 어떻게 적용하는지 알아본다.
5장에서는 데이터 영속성에 대한 스프링 지원사항을 다룬다. 우선 JDBC와 관련된 수많은 상투적인 코드를 제거하는 데 도움을 주는 스프링의 JDBC 지원사항을 소개한다. 그리고 스프링이 하이버네이트(Hibernate)나 자바 퍼시스턴스 API(JPA: Java Persistence API)와 같은 퍼시스턴스 프레임워크와 어떻게 통합하는지 살펴본다.
6장에서는 5장의 부족한 부분을 채워준다. 6장의 주제는 트랜잭션으로, 데이터베이스에서 무결성을 보장하기 위해 스프링의 트랜잭션 지원사항을 활용하는 방법을 보여준다. 또한 AOP를 이용해 간단한 애플리케이션 객체에 선언적 트랜잭션의 능력을 부여하는 방법을 배운다.
7장에서는 스프링의 MVC 웹 프레임워크를 소개한다. 스프링이 웹 파라미터를 비즈니스 객체에 투명하게 반인드하고 동시에 유효성 검증과 에러 처리를 제공하는 방법을 살펴본다. 또한 스프링 MVC 컨트롤러를 이용해 웹 애플리케이션에 기능을 추가하는 작업이 얼마나 쉬운지도 알게 된다.
8장에서는 스프링 웹 플로(Web Flow)를 살펴본다. 스프링 웹 플로는 스프링 MVC의 확장판으로, 대화형 웹 애플리케이션의 개발을 가능하게 한다. 그리고 특정 흐름을 통해 사용자를 안내하는 웹 애플리케이션을 어떻게 구성하는지 알아본다.
9장에서는 스프링 시큐리티(Spring Security)를 이용해 애플리케이션에 보안을 적용하는 방법을 알아본다. 스프링 시큐리티가 서블릿 필터를 이용한 웹 요청 레벨과 스프링 AOP를 이용한 메소드 레벨에서 어떻게 애플리케이션을 보호하는지 알아본다.
2부에서 배운 내용을 통해 애플리케이션을 만든 후에 다른 애플리케이션이나 서비스와 통합해본다. 3부에서는 이를 수행하는 방법을 배운다.
10장에서는 애플리케이션 객체를 원격 서비스로 노출하는 방법을 살펴본다. 또한 원격 서비스를 마치 같은 애플리케이션에 있는 일반 객체와 다름없이 사용할 수 있는 방법을 다룬다. 이 장에서 다루는 리모팅 기술에는 RMI, Hessian과 Burlap, SOAP 기반의 웹 서비스, 그리고 스프링 고유의 HttpInvoker가 포함된다.
11장에서는 스프링 MVC로 다시 돌아와 스프링 MVC를 이용해 애플리케이션 데이터를 RESTful 리소스로 노출하는 방법을 알아본다. 이외에도 스프링의 RestTemplate으로 REST 클라이언트를 개발하는 방법을 배운다.
12장에서는 JMS로 비동기식 메시지를 송신하고 수신하기 위한 스프링 활용법을 살펴본다. 스프링을 이용한 기본적인 JMS 작업 외에도 오픈 소스인 링고(Lingo) 프로젝트를 이용해 JMS를 통해 비동기식 서비스를 노출하고 사용하는 방법을 배운다.
13장에서는 스프링을 이용해 JMX를 이용한 스프링 빈 관리를 알아본다. 관리 빈으로 스프링 빈을 노출하는 방법, 스프링 빈을 원격으로 관리하는 방법, 그리고 JMX 통지를 처리하는 방법에 대해 알아본다.
추천사
“사실상 스프링에 대한 참조문서다!” _ Dan Dobrin, CIBC
“빌려줄 수 없는 유일한 책. 항상 옆에 두고 읽는 책!” _ Josh Devins, Nokia
“스프링의 기본 개념과 방대한 내용을 모두 다룬 책!” _ Chad Davis, 『Struts 2 in Action』 저자
“훌륭한 저자와 훌륭한 내용!” _ Robert Hanson, 『GWT in Action』 저자
“기술과 유머의 완벽한 조합!” _ Valentin Crettaz, Goomzee
“독보적인 책이다. 훌륭한 집필이다. 예제는 매우 명확하고 따라하기 쉽다.” _ Sunil Parikh, DZone
“별 다섯 개 만점에 별 다섯 개다. 최고의 안내서다.” _ Nicola Pedot, Java User Group Trento
“스프링을 통해 더 단순하고 유지보수가 쉬운 코드를 작성하면 핵심 비즈니스 니즈에 집중할 수 있다.” _ Springframework.org
“대단히 읽기 쉬운 백과사전. 모든 부분 별 다섯 개!” _ JavaLobby.org
“뛰어난 구성과 유창한 설명!” _ Internet Bookwatch
“읽기 쉽다. 재미도 있다.” _ Books-On-Line
“희귀 도서!” _ Computing Reviews
“스프링에 대한 최고의 안내서!” _ Taruvai Subramaniam, Amazon 독자
“정말로 스프링에 뛰어들 수 있게 되었다.” _ Patrick Steger, Zühlke Engineering
“재미와 함께 빠져들게 만든다. 개발자가 알아야 하는 필수 내용을 상세히 다룬다.” _ Doug Warren, Java Web Services
저자 소개 크레이그 월즈(Craig Walls)
경력 15년의 소프트웨어 개발자로서 『XDoclet in Action』(Manning, 2003)과 『Spring in Action 1, 2판』(Manning, 2005와 2007), 『Modular Java』(Pragmatic Bookshelf, 2009)를 집필하였다. 그는 스프링 프레임워크의 열렬한 지지자이자 프로모터로서 지역 사용자 그룹과 컨퍼런스에서 강연을 하고, 그의 블로그에 스프링에 관한 글을 쓰면서 바쁜 나날을 보내고 있다. 여가 시간에는 그의 아내와 두 딸, 여섯 마리의 새, 네 마리의 개, 두 마리의 고양이, 그리고 열대어들과 함께 시간을 보낸다. 크레이그는 텍사스 주 플래노에 거주하고 있다. http://www.jroller.com/habuma/
역자 소개 홍영표 전자전기공학을 전공하다 컴퓨터 프로그램에 빠져 이 길을 평생 업으로 삼게 됐다. LG CNS에서 개발자와 아키텍트로 근무하면서 다양한 프로젝트 경험을 통해 IT에 눈을 뜨게 됐다. 지금은 한 금융회사 정보시스템부에서 근무하고 있으며, 차세대시스템 구축 시 애플리케이션 아키텍트로서 시스템 성능과 튜닝을 담당했었다. 현재는 모바일 시스템 구축을 비롯해 신기술 연구개발(R&D)을 담당하고 있다. 애플의 철학과 스티브 잡스의 카리스마를 좋아하며, 엔지니어를 넘어 아티스트가 되기 위해 고군분투 중이다. 옮긴 책으로는 『아이폰&아이패드 인 액션』 『Professional iPhone and iPad Database Application Programming 한국어판』이 있다.
차 례 제1부 스프링 핵심 개념
1장 스프링 속으로 1.1 자바 개발 간소화 5
1.1.1 POJO의 힘 6
1.1.2 종속객체 주입 8
1.1.3 애스펙트 적용 13
1.1.4 템플릿을 이용한 상투적인 코드 제거 19
1.2 빈을 담는 그릇, 컨테이너 22
1.2.1 또 하나의 컨테이너, 애플리케이션 컨텍스트 23
1.2.2 빈의 일생 24
1.3 스프링 현황 26
1.3.1 스프링 모듈 27
1.3.2 스프링 포트폴리오 30
1.4 스프링의 새로운 기능 35
1.4.1 스프링 2.5에서 새로워진 기능 35
1.4.2 스프링 3.0에서 새로워진 기능 36
1.4.3 스프링 포트폴리오에서 새로워진 기능 37
1.5 요약 38
더보기
2장 빈 와이어링
2.1 빈 선언 40
2.1.1 스프링 설정 41
2.1.2 간단한 빈 선언 42
2.1.3 생성자를 이용한 주입 44
2.1.4 빈 유효범위 지정 49
2.1.5 빈의 초기화와 정리 작업 51
2.2 빈 프로퍼티에 주입하기 53
2.2.1 단순 프로퍼티 값 주입하기 54
2.2.2 다른 빈 참조 55
2.2.3 스프링의 p 네임스페이스를 이용한 프로퍼티 와이어링 59
2.2.4 컬렉션 와이어링 60
2.2.5 널 와이어링 66
2.3 표현식 와이어링 67
2.3.1 SpEL 표현식의 기초 68
2.3.2 SpEL 값의 연산 수행 72
2.3.3 SpEL에서 컬렉션을 통한 선별 77
2.4 요약 82
3장 XML 설정 최소화
3.1 빈 프로퍼티 오토와이어링 84
3.1.1 네 종류의 오토와이어링 84
3.1.2 기본 오토와이어링 89
3.1.3 명시적 와이어링과 혼용 89
3.2 애너테이션을 이용한 와이어링 90
3.2.1 @Autowired 사용 91
3.2.2 @Inject를 이용한 표준 기반의 오토와이어링 적용 97
3.2.3 애너테이션 주입을 이용한 표현식 사용 99
3.3 자동으로 빈 발견하기 100
3.3.1 오토디스커버리를 위한 빈 애너테이션 101
3.3.2 컴포넌트-스캔 필터링 103
3.4 스프링의 자바 기반 설정 사용 105
3.4.1 자바 기반의 설정 셋업 105
3.4.2 설정 클래스 정의 106
3.4.3 간단한 빈 선언 106
3.4.4 스프링의 자바 기반 설정을 이용한 주입 107
3.5 요약 108
4장 애스펙트 지향 스프링
4.1 AOP란 무엇인가? 113
4.1.1 AOP 용어 정리 114
4.1.2 스프링의 AOP 지원 117
4.2 포인트컷을 이용한 조인포인트 선택 121
4.2.1 포인트컷 작성 122
4.2.2 스프링의 bean() 지정자 사용 123
4.3 XML에 애스펙트 선언 123
4.3.1 Before와 After 어드바이스 선언 125
4.3.2 Around 어드바이스 선언 128
4.3.3 어드바이스에 파라미터 전달 130
4.3.4 애스펙트를 이용한 새로운 기능 도입 133
4.4 애스펙트 애너테이션 135
4.4.1 Around 어드바이스 애너테이션 139
4.4.2 애너테이션이 적용된 어드바이스에 인자 전달 140
4.4.3 인트로덕션 애너테이션 141
4.5 AspectJ 애스펙트와 종속객체 주입 142
4.6 요약 146
제2부 스프링 애플리케이션 필수 요소
5장 데이터베이스 공략
5.1 스프링의 데이터 액세스 철학 150
5.1.1 스프링의 데이터 액세스 예외 계층구조 152
5.1.2 데이터 액세스 템플릿화 155
5.1.3 DAO 지원 클래스 사용하기 158
5.2 데이터 소스 설정 159
5.2.1 JNDI 데이터 소스 이용 160
5.2.2 풀링 기능이 있는 데이터 소스 사용하기 160
5.2.3 JDBC 드라이버 기반 데이터 소스 162
5.3 스프링과 JDBC 163
5.3.1 지저분한 JDBC 코드 해결 164
5.3.2 JDBC 템플릿과 놀아 보자 168
5.4 스프링과 하이버네이트 통합 176
5.4.1 하이버네이트 개요 178
5.4.2 하이버네이트 세션 팩토리 선언 179
5.4.3 스프링으로부터 해방된 하이버네이트 구성 181
5.5 스프링과 자바 퍼시스턴스 API 183
5.5.1 엔티티 관리자 팩토리 설정 184
5.5.2 JPA 기반 DAO 작성 190
5.6 요약 192
6장 트랜잭션 관리
6.1 트랜잭션이란 무엇인가? 196
6.1.1 네 단어로 설명하는 트랜잭션 197
6.1.2 스프링의 트랜잭션 관리 지원 198
6.2 트랜잭션 관리자 선택 199
6.2.1 JDBC 트랜잭션 201
6.2.2 하이버네이트 트랜잭션 202
6.2.3 JPA 트랜잭션 203
6.2.4 JTA 트랜잭션 204
6.3 스프링 트랜잭션 프로그래밍 204
6.4 트랜잭션 선언 207
6.4.1 트랜잭션 특성 정의 207
6.4.2 XML에서의 트랜잭션 선언 213
6.4.3 애너테이션 기반 트랜잭션 정의 215
6.5 요약 217
7장 스프링 MVC를 이용한 웹 애플리케이션 개발
7.1 스프링 MVC 개요 220
7.1.1 스프링 MVC를 통한 요청 추적 220
7.1.2 스프링 MVC 설정 222
7.2 기본 컨트롤러 작성 224
7.2.1 애너테이션 기반의 스프링 MVC 설정 225
7.2.2 홈페이지 컨트롤러 정의 227
7.2.3 뷰 리졸빙 231
7.2.4 홈페이지 뷰 정의 236
7.2.5 스프링 애플리케이션 컨텍스트 완성 238
7.3 컨트롤러 입력 처리 240
7.3.1 입력 처리 컨트롤러 작성 240
7.3.2 뷰 렌더링 243
7.4 폼 처리 246
7.4.1 등록 폼 표시 246
7.4.2 폼 입력 처리 249
7.4.3 입력 유효성 검증 251
7.5 파일 업로드 처리 256
7.5.1 폼에 파일 업로드 필드 추가 257
7.5.2 업로드 파일 수신 258
7.5.3 파일 업로드를 위한 스프링 설정 262
7.6 요약 263
8장 스프링 웹 플로
8.1 스프링 웹 플로 설치 265
8.1.1 스프링에서 웹 플로 설정하기 266
8.2 흐름의 구성요소 269
8.2.1 상태 269
8.2.2 전이 273
8.2.3 흐름 데이터 274
8.3 통합: pizza 흐름 276
8.3.1 기본 흐름 정의 277
8.3.2 고객정보 수집 282
8.3.3 주문 289
8.3.4 결제 292
8.4 웹 플로 보안 295
8.5 요약 296
9장 스프링 시큐리티
9.1 스프링 시큐리티 소개 298
9.1.1 스프링 시큐리티 시작하기 299
9.1.2 스프링 시큐리티 설정 네임스페이스 300
9.2 웹 요청 보안 301
9.2.1 서블릿 필터 프록싱 302
9.2.2 최소 웹 보안 설정 303
9.2.3 요청 가로채기 308
9.3 뷰 레벨의 보안 311
9.3.1 인증정보 접근 312
9.3.2 권한별 렌더링 313
9.4 사용자 인증 315
9.4.1 인메모리 사용자 리포지터리 설정 316
9.4.2 데이터베이스 인증 318
9.4.3 LDAP 인증 320
9.4.4 기억하기 기능 324
9.5 메소드 보안 325
9.5.1 @Secure를 이용한 메소드 보안 326
9.5.2 JSR-250의 @RolesAllowed 사용 327
9.5.3 SpEL을 이용한 선/후 호출 보안 327
9.5.4 메소드 레벨의 보안 포인트컷 선언 333
9.6 요약 333
제3부 스프링 통합
10장 원격 서비스
10.1 스프링 리모팅 개요 338
10.2 RMI 활용 341
10.2.1 RMI 서비스 익스포트 341
10.2.2 RMI 서비스 와이어링 344
10.3 Hessian과 Burlap을 이용한 리모트 서비스 노출 348
10.3.1 Hessian과 Burlap을 이용한 빈 기능 노출 348
10.3.2 Hessian/Burlap 서비스에 액세스하기 352
10.4 스프링의 HttpInvoker 사용하기 353
10.4.1 빈을 HTTP 서비스로 익스포트하기 354
10.4.2 HTTP를 거쳐 서비스에 액세스하기 356
10.5 웹 서비스의 발행과 소비 357
10.5.1 스프링을 사용할 수 있는 JAX-WS 엔드포인트 생성 358
10.5.2 클라이언트 측에서 JAX-WS 서비스 프록시하기 363
10.6 요약 365
11장 스프링에게 약간의 휴식(REST)을
11.1 휴식(REST)을 취하다 368
11.1.1 REST의 기본 개념 368
11.1.2 스프링이 REST를 지원하는 방법 369
11.2 리소스 지향 컨트롤러 작성 370
11.2.1 RESTless 컨트롤러 분석 370
11.2.2 RESTful URL의 처리 371
11.2.3 REST 동사 수행 376
11.3 리소스 표현 380
11.3.1 리소스 표현 협상 381
11.3.2 HTTP 메시지 변환기 사용 384
11.4 REST 클라이언트 작성 388
11.4.1 RestTemplate의 작업 검토 390
11.4.2 리소스 GET하기 391
11.4.3 리소스 PUT하기 395
11.4.4 리소스 DELETE하기 397
11.4.5 리소스 데이터 POST하기 398
11.4.6 리소스 교환 401
11.5 RESTful 폼 전송 403
11.5.1 JSP에서 숨김 메소드 필드 렌더링 404
11.5.2 실제 요청 파악 405
11.6 요약 407
12장 스프링 메시징
12.1 JMS에 대한 간략한 소개 410
12.1.1 JMS 아키텍처 411
12.1.2 JMS의 장점 414
12.2 스프링에서 ActiveMQ 구성하기 416
12.2.1 커넥션 팩토리 생성 417
12.2.2 ActiveMQ 메시지 목적지 선언 418
12.3 스프링의 JMS 템플릿 사용 419
12.3.1 지저분한 JMS 코드 공략 419
12.3.2 JMS 템플릿 활용 421
12.4 메시지 드리븐 POJO 작성 428
12.4.1 메시지 리스너 생성 429
12.4.2 메시지 리스너 설정 430
12.5 메시지 기반의 RPC 활용 431
12.5.1 스프링 메시지 기반 RPC와의 작업 432
12.5.2 링고를 이용한 비동기식 RPC 435
12.6 요약 438
13장 JMX를 이용한 스프링 빈 관리
13.1 스프링 빈을 MBean으로 익스포트하기 440
13.1.1 이름으로 메소드 노출시키기 444
13.1.2 인터페이스를 이용한 MBean 오퍼레이션과 애트리뷰트 정의 446
13.1.3 애너테이션 기반의 MBean을 이용한 작업 447
13.1.4 MBean 객체 이름 충돌 처리 449
13.2 MBean 리모팅 451
13.2.1 원격 MBean 노출하기 451
13.2.2 원격 MBean에 액세스하기 452
13.2.3 MBean 프록시 만들기 454
13.3 통지 처리 455
13.3.1 통지 듣기 458
13.4 요약 459
14장 기타 주요사항
14.1 설정 외부화 462
14.1.1 프로퍼티 대치 변수 대체 463
14.1.2 프로퍼티 오버라이딩 466
14.1.3 외부 프로퍼티 암호화 468
14.2 JNDI 객체 와이어링 470
14.2.1 일반적인 JNDI를 이용한 작업 470
14.2.2 JNDI 객체 주입하기 473
14.2.3 스프링에서 EJB 와이어링 477
14.3 이메일 전송하기 478
14.3.1 메일 발송자 구성하기 478
14.3.2 이메일 생성하기 481
14.4 스케줄링과 백그라운드 태스크 488
14.4.1 스케줄링된 메소드 선언 488
14.4.2 비동기식 메소드 선언 490
14.5 요약 492
14.6 끝? 493
출간을 앞둔 지금 원서를 처음 받았을 때가 생각납니다. 뒷표지에 다음과 같은 문구가 쓰여져 깜짝 놀랐었는데요.
Nearly 100,000 developers have used this book to learn Spring!
[스프링 인 액션]의 1판과 2판의 영어 원서를 포함하여 세계 각국에서 번역된 서적까지 모두 포함한 수치이겠지만, 프로그래밍 서적이 10만부 판매란 것은 거의 초초초 베스트셀러입니다. 그만큼 스프링 개발자들로부터 큰 호응을 받았던 책일 겁니다. 국내에서도 이 책의 1판은 에이콘 출판사에서 번역 출간되었고, 2판은 ITC 출판사에서 번역되어 제법 많이 판매된 것으로 알고 있습니다. 지금 서점에서 보니 1판이 아직도 판매되고 있네요. 에이콘 출판사에 살짝 미안하네요..
아무튼 이제 스프링 3.0을 반영(책의 예제 코드들은 스프링 3.1에서도 모두 실행됨)한 3판이 2월 10일 출간을 목표로 최종 마무리 작업을 진행 중에 있고, 현재 인터넷서점에서 예약판매를 진행 중에 있습니다. 미리 살펴보고자 하는 분들을 위해 차례 등이 있는 앞부속물과 본문 1장을 PDF로 공개해드립니다.
한 권의 책으로 모든 내용을 다룰 수 없었으므로 3판에 추가할 주제를 선별했다. 대부분의 스프링 개발자가 알아야 하는 스프링 핵심 주제라고 생각되는 내용에 초점을 맞췄다. 이는 다른 주제가 중요하지 않다는 말이 아니라 이들 주제가 스프링 개발에 있어 필수요소라는 의미다.
사실 3판이 더 얇아진 다른 이유는 스프링의 범위는 계속 늘어나는 반면, 새로운 버전이 출시될수록 더 간소해졌기 때문이다. 풍부한 설정 네임스페이스 집합, 애너테이션 기반의 프로그래밍 모델 채택, 그리고 합리적인 규약과 기본값의 활용으로 스프링의 설정을 몇 페이지에 걸친 XML에서 단 몇 개의 엘리먼트로 줄일 수 있었다.
하지만 문제없다. 페이지는 줄어들었지만 여전히 수많은 새로운 스프링의 장점을 활용할 수 있다.
======================================================================================================
그리고 3판에서 달라진 주요 내용으로는 다음과 같이 언급하고 있습니다.
======================================================================================================
스프링이 오랜 기간 제공하는 DI, AOP, 그리고 선언적인 트랜잭션과 함께 3판에서 배울, 2판 이후로 변경됐거나 새로워진 내용은 다음과 같다.
스프링의 XML 설정의 양을 극적으로 줄여주는 애너테이션 기반의 빈 와이어링
빈 프로퍼티에 와이어링되는 값을 런타임에 동적으로 평가하는 새로운 표현식 언어
이전의 계층적인 컨트롤러 프레임워크보다 훨씬 더 유연한 스프링의 완전히 새로운 애너테이션 기반의 스프링 MVC 프레임워크
새로운 설정 네임스페이스, 편리한 기본값, 그리고 표현식 기반의 시큐리티 규칙으로 인해 더욱 단순해진 스프링 시큐리티를 이용한 스프링 애플리케이션 보호
출간 후에 책의 찾아보기 부분을 PDF로도 공개해드리겠지만, 이 책의 찾아보기 단어는 2,600여 개에 이릅니다. 원서의 인덱스 하나하나를 모두 번역하여 번역된 PDF에서 일일히 찾아 옮기는 고된 노동을 역자이신 홍영표 님께서 수고해주셨습니다. 이번 설 명절을 아무도 없는 회사 사무실에서 모두 헌납한 결과, 보다 질 높은 책으로 독자 여러분을 찾아뵐 수 있을 것 같습니다. 이 자리를 빌어 홍영표 역자에게 감사의 말씀을 드립니다.
출간 후에 다시 자세한 내용으로 포스팅해드리도록 하고, 출간하자마자 받아보고 싶은 독자님들은 아래 인터넷서점에서 예약주문을 하시면 됩니다.
출판사 제이펍 원출판사 Thomas Dunne Books 원서명 Zero Day(원서 ISBN 9780312612467) 저자명 마크 러시노비치(Mark Russinovich) 역자명 김지량 출판일 2012년 1월 11일 페이지 444쪽 판 형 신국판 변형(152*215) 반양장(Soft Cover) 정 가 14,800원 ISBN 978-89-94506-32-6 부가기호: 03800 키워드 Zero Day / 해커 / 크래커 / 테러 / 보안 / 사이버 전쟁 분야 소설 / 사이버 스릴러 컴퓨터 / IT 교양 / 보안
도서 소개 윈도우 운영체제의 구루 개발자, 마크 러시노비치의 첫 장편소설!
아마존 평점 4.5점의 그의 첫 소설은 전문 소설가들의 위치를 단박에 위협했다!
컴퓨터에 모든 걸 의존하게 된 21세기, 바이러스 하나로 시작된 사이버 테러는 전 세계를 대재앙으로 몰아넣는데... 전자동 시스템으로 완전무결한 운항을 보이던 보잉787기. 갑자기 시스템이 다운되면서 고도 42,000피트에서 대서양의 푸른 바다로 추락할 위기에 처한다. 자동차 조립고장에서 완벽한 설계를 자랑하던 14대의 조립 로봇이 미친 듯이 회전하며 관리자를 집어 던져버린다. 아이오아 켈로그 스컹크강 원자력 발전소. 냉각수가 분출되면서 원자로의 온도가 급격하게 상승하여 통제 불능의 상태에 빠지게 된다. 머시 병원의 컴퓨터 오작동으로 인해 환자의 처방전이 서로 바뀌게 되어 목숨을 잃는 사고가 발생한다. 이 모든 것들이 자가복제를 수행하는 컴퓨터 바이러스의 침투에서 비롯된다.
무슬림의 부활을 꿈꾸며 사이버 테러를 감행했던 건 거대한 조직이 아니라 단 두 명의 형제였다.
이복형제인 파제르와 라비브. 폭발물로 건물을 파괴하는 식의 물리적 테러가 아닌, 거미줄처럼 촘촘히 얽힌 인터넷을 통해 서방세계의 컴퓨터 시스템을 파괴하여 그들의 목적을 이루려 한다. 거대한 조직이나 막대한 자금이 아닌, 악의를 품은 소수와 비교적 적은 자금으로도 범지구적인 대혼란은 언제든지 발생할 수 있는 현실의 이야기임을 보여준다.
기술적 사실, 그리고 발생 가능한 현실에 대한 공포는 할리우드 영화보다 재미있는 보안 이야기를 들려준다.
보안에 관한 해박한 지식으로 무장한 저자의 자신감은 전문 소설가보다 더 치밀한 구성과 숨 막히는 전개로 이어진다. ‘프로그래머가 웬 소설?’이란 선입견은 첫 세 쪽을 읽자마자 사라져버릴 것이다. ‘나의 컴퓨터에는, 우리의 시스템에는 설마 문제가 없겠지...’와 같은 안일한 보안의식을 가진 우리에게 이 책은 스릴러물을 읽는 재미와 동시에 사이버 보안에 대한 경각심을 높여준다.
줄거리
9/11 테러로 사랑하는 애인을 잃은 컴퓨터 보안 전문가 제프. 애인을 지키지 못한 자괴감과 공직 사회에 대한 혐오로 정부기관에 사직서를 내고 민간 보안업체를 운영하고 있던 어느 날, 한 로펌으로부터 회사 컴퓨터 시스템의 다운 현상 해결을 의뢰받는다. 며칠을 고생하며 얻은 단서와 오랜 동료인 대릴에게서 전해들은 정보를 통해 이건 단순한 바이러스나 해킹 문제가 아닌, 제2의 9/11로 이어질 것이라 확신한다. 무슬림의 부활, 서방세계의 파괴를 꿈꾸는 두 명의 아랍 형제는 전 세계에 흩어져 있는 해커들을 동원하여 더욱 비밀스럽고 파괴적인 바이러스를 제작하여 유포한다. 목숨을 건 제프와 대릴의 사투는 과연 인류를 사이버 테러에서 구해낼 수 있을까?
책속으로
“전원 꺼.” 매킨타이어의 얼굴은 땀으로 뒤덮여 있었다. “어서. 시간이 없어!”
존스는 오른편을 보며 디스플레이를 손으로 쓸어 마스터 스위치를 찾은 후 전원을 꺼버렸다. PFD 화면이 검게 변했다.
“기다려!” 매킨타이어가 재빨리 외쳤다. “잠시만 둬 봐. 오케이, 지금 켜!”
존스는 스위치를 켰다. “켰습니다!” 그리고 잠시 후 그들 앞의 눈금판이 다시 켜졌다.
뒤편에서는 공포의 고함소리가 계속되고, 중간 중간 시끄러운 소음도 들려왔다. 머리 위 선반에 넣어둔 승객들의 짐과 노트북이 날아다니며 이곳저곳 닥치는 대로 부딪히고 있었다.
P.10
대릴은 식당 내부를 한 번 훑어보고는 앞으로 몸을 기울였다. 그녀의 목소리는 낮지만 단호했다. “왜냐하면 지금까지 열 개 이상의 변종 코드를 발견했는데, 그 중 복제된 코드는 하나도 없었거든요. 이것들은 각기 다른 크래커가 작성한 것처럼 서로 완전히 다른 코드로 쓰여 있지만, 결국 모두가 아주 파괴적인 행위를 하고 있어요. 게다가 얼마나 많은 변종 코드가 존재하는지 알 수가 없어요. 알 수가 없으니 오싹해요.”
P.96
에스트라다는 고개를 돌렸다. “하지 마. 네가 저 안에서 뭘 했는지 다 알아.”
로사는 스물여섯의 나이에 코스트리카인들 사이에서 흔히 볼 수 있는 북유럽풍의 외모를 지니고 있었다. 그녀와 에스트라다가 만난 지는 3개월이 되었다.
“내가 뭘 했다고 그래?”
“알잖아.”
“난 마사지를 하는 거야, 미구엘. 그게 다야. 난 매춘부가 아니라고. 그게 싫으면 이리로 오지를 마.”
P.172
맨필드는 클립마다 총알을 집어넣어 용량만큼 꽉 채웠다. 하나는 재킷 오른쪽 주머니에 넣고, 다른 하나는 피스톨의 개머리판에 넣었다. 그는 슬라이드를 한 번 당겨 보고, 다시 빼서 날카로운 찰카닥 소리를 내며 약실에 총알을 넣었다. 그리고 해머를 내리고 탄창을 빼낸 후, 총에 들어 있는 총알을 빼고 탄창을 다시 총에 집어넣었다. 언제라도 총을 발사할 수 있도록 안전장치가 해제된 것을 확인하고, 피스톨을 허리 뒤쪽 바지춤에 꽂았다.
P.268
추천사 “보안이라는 다소 딱딱한 주제를 소설의 형태를 빌어 재미있고 설득력 있게 풀어내고 있다. 이 책이 일반인들에게 보안의 중요성을 일깨우는 계기가 되었으면 한다.”
_ 김장중(이스트소프트 대표)
“마크는 2006년 윈도우즈의 기술 성능을 높이기 위해 마이크로소프트로 왔다. 그리고 지금은 설득력 있는 사이버 스릴러 소설을 통해 사이버테러리즘에 대한 경각심을 높이고 있다.”
_ 빌 게이츠(마이크로소프트 공동창업자)
“사이버테러리즘. 이 단어에 익숙해지고 그 의미를 이해해야 한다. 머지 않은 미래에 뉴스와 신문에서 자주 등장하게 될 말이기 때문이다. 사이버보안 전문가인 마크 러시노비치는 자신의 방대한 지식을 아주 무시무시하고도 너무나도 현실성 있는 소설로 바꾸어 놓았다. 『제로데이』는 SF 소설이 아니다. 과학적 사실이다. 그리고 ‘최후 심판의 날’에 대한 분명한 경고다. 우리의 안전과 생존을 책임지고 있는 모든 사람들은 더더욱 읽어야 할 책이다.”
_ 넬슨 드밀(『라이언스 게임』 저자)
“마크가 쓴 것은 소설이지만, 그가 이야기하는 위험은 오늘날 벌어지고 있는 여러 상황들을 섬뜩하리만치 생생하게 반영하고 있다.”
_ 하워드 A. 슈미트(백악관 사이버보안 코디네이터)
“가장 최신의 상황을 배경으로 하는 숨가쁜 스릴러 『제로데이』는 무섭지만 너무나 현실적으로 제2의 9/11을 그려낸다. 마크 러시노비치는 보안전문가로서의 지식과 열정으로 사이버테러리즘을 이야기한다. 나는 이 책에 완전히 빠져 있었다.”
_ 윌리엄 랜데이(『미션 플래츠』 저자)
저자 소개
마크 러시노비치(Mark Russinovich) 마크 러시노비치는 마이크로소프트에서 기술 부문 최고 직책인 테크니컬 펠로우로 근무하고 있다. 그가 1996년 공동 창립한 윈터널즈 소프트웨어를 마이크로소프트가 인수하면서 마이크로소프트에서 일하게 되었다. 마크는 시스템 모니터링 툴로 널리 사용되고 있는 시스인터널즈를 직접 개발하기도 하였다. 또한 마이크로소프트 윈도우 커널 공식 가이드인 『Windows Internals』의 공동 저자이자 『테크넷 매거진』의 기고편집자이며, 『윈도우 IT 프로 매거진』의 책임 기고편집자다. 현재 미국 워싱턴주에 거주하고 있다.
더 많은 정보는 www.zerodaythebook.com에서 확인할 수 있다.
역자 소개
김지량
한국외국어대학교 통번역대학원 한영과를 졸업하였다. 현재 전문번역가로 활동하고 있으며, 옮긴 책으로는 『33M 소셜 네트워크 성공 스토리』(제이펍), 『이것은 자전거 이야기가 아닙니다』(체온365), 『영어 글쓰기의 기본』(인간희극), 『마크 슈미트의 이상한 대중문화 읽기』(인간희극) 등이 있다.
제이펍의 첫 소설, 아니 앞으로 소설을 꾸준히 낼 건 아니니 첫 책이란 표현은 어울리지 않는군요. 이번에 출간예정인 도서는 지난 번 포스팅에서도 언급했듯이 소설책입니다. 전문 소설가가 쓴 소설이 아닌, 개발자가 쓴 소설!!!
《Windows Internlsl》의 저자로 잘 알려지고, 윈도우 기반 프로그래밍의 구루로 알려진 마크 러시노비치(Mark Russinovich)가 본업을 살짝 뒤로 하고 소설책을 펴냈습니다. 아래 사진이 저자입니다. 영화배우 뺨치게 생겼군요.
마크 러시노비치(Mark Russinovich)
그의 첫 소설임에도 불구하고 책이 너무 재밌네요. 자신의 주전공인 사이버 세계, 특히 해박한 보안관련 지식을 바탕으로 긴박감 넘치는 전개가 일품인 소설입니다. 밥벌이 소설가들 위치가 불안할 정도로 스릴 있게 잘 썼습니다. 아마존 독자들의 평가도 이와 다르지 않고요. ==> 아마존 독자 서평 보기
제로데이(Zero Day) 원서 표지
원서 표지는 위와 같이 생겨먹었는데요. 번역서는 어떻게 변신했을까요.
제로데이(Zero Day) 번역서 표지
분위기는 조금 비슷하죠? 대형 망치가 건물을 파괴하는, 다소 강한 임팩트로 디자인되었습니다. 아마존에 이 책에 대한 소개 동영상이 있어 번역한 후 자막을 입혀 봤습니다. 마치 할리우드 영화 소개와 같이 만들어졌네요.
지난 번에 약속한 것처럼 최종 편집된 파일에서 처음부터 3장까지의 본문을 공개해 드립니다. 책 내용이 궁금하신 분들은 미리 살펴보시기 바랍니다. 보다 자세한 내용은 출간 후 다시 포스팅해 드리겠습니다.
제이펍이 출판사 등록을 한 지가 만 3년이 지났습니다. 첫 책이 나온 후로 계산하면 2년 8개월 정도 지났군요. 2009년 4월에 [서버/인프라를 지탱하는 기술]을 첫 책으로 출간하였고, 최근 출간서적인 [핵심만 골라 배우는 iOS 5 프로그래밍]까지 41종을 출간하였네요. 여기까지 올 수 있었고, 또 2012년에 선보일 수 있는 여러 책들을 준비할 수 있는 건 모두 독자 여러분들의 관심과 사랑이 있었기에 가능했습니다.
연말연시를 맞아, 그리고 창립 3주년을 자축하고 독자 여러분들에게 자그마하나마 감사의 뜻으로 쿠폰 제공 이벤트를 준비하였습니다. 필요하신 책이 있으시다면 이번 기회에 쿠폰으로 추가 할인을 받으셔서 구매하시기 바랍니다.
쫄지마 책값! _ 제이펍 창립 3주년 기념 쿠폰 이벤트
기간: 2011년 12월 12일 - 1212년 1월 13일 내용: 도서별 1,000원-10,000원 할인쿠폰 제공 이벤트 진행 서점: 예스24, 인터파크, 알라딘, 대교리브로
제로 데이 공격(또는제로 데이 위협)은 컴퓨터 소프트웨어의 취약점을 공격하는 기술적 위협으로, 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는 공격을 말한다. 이러한 시점에서 만들어진 취약점 공격(익스플로잇)을 제로 데이 취약점 공격이라고도 한다.
제로 데이 공격 대상물이 되는 프로그램은 공식적으로 패치가 배포되기 전에 감행된다. 이런 프로그램들은 보통 대중들에게 공개되기 전 공격자들에게로 배포된다. 단어의 어원은 공격이 감행되는 시점에서 유래한 것이다. 제로 데이 공격 대상물은 대중과 프로그램 배포자들이 잘 모르는 것이 보통이다.
“제로 데이”라는 단어는 와레즈에서 공개일 이전 혹은 당일날 배포되는 해적판 소프트웨어를 지칭하기도 한다.
저희도 《제로데이》를 계약하면서 이 용어를 처음 접하였는데요. 어떤 소프트웨어가 배포되면서 소프트웨어의 결함이 있을 수 있는데, 이에 대한 보안 패치가 나오기 전의 상태를 노려 공격하는 기법으로 보시면 될 것 같습니다. 우리가 모르는 사이 제로데이 공격으로 인한 많은 꽤 피해가 있었던 것 같습니다.
제로데이 공격을 받게 되면 보안 패치가 만들어지기 전이므로 그 취약점을 통해 악성코드가 무차별적으로 유입될 수 있는 있습니다. PC의 다운은 물론 악의를 품은 해커에 의해 자신의 PC가 농락당할 수도 있는 끔찍한 일들이 벌어질 수가 있는 것입니다.
저희가 계약하여 곧 번역출간될 《제로데이》는 이러한 위험 상황을 긴박하고 박진감 넘치는 소설로 잘 표현하고 있습니다. 《Windows Internals》의 저자이자 윈도우즈 운영체제의 구루로 알려진 마크 러시노비치(Mark Russinovich)가 대필작가 없이 직접 썼다는 점에 처음에 적잖이 놀랐습니다. 이야기를 풀어나가는 기술적 오류는 물론 찾을 수 없겠지만, 과연 전공영역이 아닌 소설을 통해 제대로 담아낼 수 있을까 하는 의문은 있었습니다. 그러나 아마존에 등록된 170여 개의 서평이 5점 만점에 평균 4.5점을 줄 정도로 구성과 전개가 밥벌이 소설가 못지않은 평가를 내리고 있었고, 책을 샘플번역을 해본 결과 할리우드 영화를 보는 듯한 느낌을 받아서 그런 걱정은 단박에 사라졌습니다.
그래서 개발에 찌든 개발자의 머리도 쉬게 할 겸 그리고 일반 독자들의 보안의식을 높여보자는 취지에서 계약하여 국내에 소개하게 되었는데요. 오늘은 편집 전 원고 일부와 아마존에 등록된 소개 동영상을 올려 드리겠습니다. 다음 포스트에는 국내 번역되어 나오는 책의 표지와 최종 편집된 파일 일부도 공개해드리도록 하겠습니다.
총 68개의 섹션으로 나누어져 있는데, 그 중 처음 3개 섹션을 올려드립니다(편집 전 원고 파일이므로 맞춤법이나 띄어쓰기 등의 오류가 있을 수 있습니다).
출판사 제이펍 원출판사 Payload Media 원서명 iPhone iOS 5 Development Essentials 저자명 닐 스미스(Neil Smyth) 역자명 조재유 출판일 2011년 12월 21일 페이지 520쪽 시리즈 I♥Mobile 16 (아이러브모바일 16) 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 28,000원 ISBN 978-89-94506-30-2 부가기호: 13560 분 야 모바일 프로그래밍 / iOS 키워드 아이폰 / 아이패드 / 맥 OS / Xcode / 아이클라우드 / iCloud / 트위터 연동 / 쿼츠 / Automatic Reference Counting
도서 소개 iOS 5 SDK 쾌속 학습 가이드!
개발자를 위한 국내 최초의 iOS 5 서적!
아이폰 애플리케이션 개발의 시작, 그것은 바로 iOS 5 SDK를 습득하는 일일 것이다. Xcode와 Interface Builder라는 강력한 도구와 객체지향적인 오브젝티브-C 언어를 사용하여 아이폰 애플리케이션을 개발하지만, 아이폰의 다양한 기능을 이용하기 위해서는 iOS 5 SDK에 대한 이해가 반드시 필요하다.
이 책은 최신 Xcode 4.2 및 iOS 5 SDK에 대한 내용을 다양한 예제와 함께 다루고 있다. 아이폰4S에 대한 기본적인 소개, iOS 5 SDK 개요, 애플 개발자 프로그램 가입하기, 오브젝티브-C, 뷰를 이용한 유저 인터페이스, 테이블 뷰, 디렉터리 및 파일 다루기, SQLite, 코어 데이터, 터치스크린 다루기, 쿼츠를 이용한 드로잉, 로케이션 및 미디어 관리, 앱 스토어에 애플리케이션 제출하기에 대한 설명과 예제를 제공한다. 이 책을 통해 처음 iOS 5 SDK를 접하는 개발자들이 아이폰 애플리케이션 개발을 빠르게 착수할 수 있는 가이드 역할을 충실히 해줄 것이다.
이 책은 기본적인 iOS SDK 외에 다음과 같은 새로운 iOS 5 SDK의 내용을 포함하고 있다.
• 스토리보딩을 이용한 화면 전환
• UIPageViewController 클래스를 이용한 iBooks UI 구현
• iCloud 지원
• UIDocument 클래스를 이용한 데이터 처리
• 트위터 연동
저자 소개 닐 스미스(Neil Smyth)
닐 스미스는 20년 이상의 IT 개발 경력을 가지고 있다. 특히 프로그래밍 언어와 기업용 개발 도구, 그리고 사용자 인터페이스 디자인을 전문으로 해왔으며, 시스템 프로그래밍과 웹 개발, 그리고 마케팅을 담당했었다. 닐은 IT 학사 학위를 가지고 있고, Network+와 Project+, 그리고 자바와 마이크로소프트 MCP 자격증들을 가지고 있다. 또한 그는 12종의 기술 관련 서적을 집필하였으며, 현재는 미국에 위치한 인터넷 출판과 모바일 애플리케이션 개발 회사인 Payload Media의 공동 창업자이자 CEO로 재직 중이다.
역자 소개
조재유
대학교 때 처음 XT PC를 접하면서 프로그래밍의 매력에 빠졌다. 어셈블리어, C 언어를 좋아하며, 통신, 그래픽 등에도 관심이 많다. 인터넷 서비스, 방송, 통신 관련 경험이 많으며, 최근에 모바일, TV, 3스크린, 차세대 PC 환경 등을 핵심 아이템으로 한 관련 사업을 시작하였다.
차 례 CHAPTER 1 이 책에 대하여 _ 1
1.1 예제 소스 코드 2
1.2 피드백 2
CHAPTER 2 아이폰 4S 해부해보기 _ 3
2.1 iOS 5 4
2.2 화면 4
2.3 무선 연결 4
2.4 유선 연결 5
2.5 메모리 5
2.6 카메라 5
2.7 센서 5
2.8 위치 인식 6
2.9 중앙처리장치(CPU) 6
2.10 스피커와 마이크로폰 6
2.11 진동 6
2.12 요약 6
더보기
CHAPTER 3 iOS 5 아키텍처와 SDK 프레임워크 _ 7 3.1 iPhone OS가 iOS로 7
3.2 iOS 5 아키텍처 개요 8
3.3 코코아 터치 계층 9
3.4 게임 Kit 프레임워크 11
3.5 iOS 미디어 계층 12
3.6 iOS 코어 서비스 계층 16
3.7 파운데이션 프레임워크 17
3.8 iOS 코어 OS 계층 19
CHAPTER 4 Apple iOS 개발자 프로그램에 가입하기 _ 21 4.1 등록된 애플 개발자 21
4.2 iOS 개발자 프로그램 22
4.3 언제 iOS 개발자 프로그램에 가입할까? 23
4.4 iOS 개발자 프로그램에 가입하기 23
4.5 요약 25
CHAPTER 5 Xcode 4와 iOS 5 SDK 설치하기 _ 26
5.1 Intel 기반 혹은 PowerPC 기반 맥을 확인하는 방법 26
5.2 Xcode 4와 iOS 5 SDK 설치하기 27
5.3 Xcode 시작하기 29
CHAPTER 7 아이폰에서 iOS 5 앱 테스트하기 - 개발자 인증서 및 프로비저닝 프로파일 _ 42
7.1 iOS 개발 인증서 서명 요청 만들기 43
7.2 iOS 개발 인증서 서명 요청 제출하기 45
7.3 iOS 개발 인증서 설치하기 47
7.4 기기 할당하기 48
7.5 App ID 만들기 49
7.6 iOS 개발 프로비저닝 프로파일 만들기 50
7.7 개발을 위해 아이폰 기기 활성화하기 52
7.8 앱에 App ID 연결하기 52
7.9 iOS와 SDK 버전 호환성 53
7.10 앱을 기기에 설치하기 53
7.11 요약 54
CHAPTER 8 오브젝티브-C 프로그래밍 기초 _ 55
8.1 오브젝티브-C 데이터 타입 및 변수 55
8.2 오브젝티브-C 표현식 56
8.3 if와 else로 오브젝티브-C 흐름 제어하기 61
8.4 for 문을 이용한 반복 63
8.5 do와 while을 이용한 반복 64
8.6 오브젝티브-C do ... while 반복 64
CHAPTER 9 오브젝티브-C로 개발하는 객체지향 프로그래밍 기초 _ 66
9.1 오브젝트란? 66
9.2 클래스란? 67
9.3 오브젝티브-C 클래스 인터페이스 선언 67
9.4 클래스에 인스턴스 변수 추가하기 68
9.5 클래스 메서드 정의하기 68
9.6 오브젝티브-C 클래스 구현 선언하기 70
9.7 클래스 인스턴스 선언 및 초기화하기 71
9.8 Automatic Reference Counting(ARC) 72
9.9 메서드 호출과 인스턴스 데이터 접근하기 73
9.10 프로그램 영역 만들기 73
9.11 하나로 합치기 74
9.12 객체지향 오브젝티브-C 코드 구조잡기 76
CHAPTER 11 상호작용하는 iOS 아이폰 앱 만들기 _ 83
11.1 새 프로젝트 만들기 83
11.2 유저 인터페이스 만들기 84
11.3 예제 애플리케이션 빌드하고 실행하기 86
11.4 액션과 아웃렛 추가하기 86
11.5 액션과 아웃렛을 유저 인터페이스에 연결하기 91
11.6 완성된 애플리케이션 빌드 및 실행하기 94
11.7 요약 95
CHAPTER 12 아이폰 키보드를 감추는 iOS 5 코드 만들기 _ 96
12.1 예제 앱 만들기 96
12.2 사용자가 리턴키를 터치할 때 키보드 감추기 97
12.3 사용자가 백그라운드를 터치했을 때 키보드 감추기 99
12.4 요약 101
CHAPTER 13 아이폰 iOS 5 뷰, 윈도우와 뷰 계층 이해하기 _ 102
13.1 뷰에 대해 102
13.2 UIWindow 클래스 103
13.3 뷰 계층 구조 103
13.4 뷰의 형 105
13.5 요약 107
CHAPTER 14 iOS 5 아이폰 회전, 뷰 크기 변경과 화면배치 처리하기 _ 108
14.1 예제 설정하기 109
14.2 회전 활성화 및 비활성화하기 109
14.3 회전 테스트하기 110
14.4 뷰 자동 크기 변경 설정하기 111
14.5 화면 배치와 크기 변화 코딩하기 114
CHAPTER 15 탭 바를 이용한 iOS 5 아이폰 멀티뷰 애플리케이션 만들기 _ 118
15.1 탭 바 개요 118
15.2 멀티뷰 애플리케이션의 뷰 컨트롤러 이해하기 119
15.3 탭 바 예제 애플리케이션 설정하기 119
15.4 루트 컨트롤러 위치 120
15.5 콘텐트 뷰 컨트롤러 리뷰하기 120
15.6 루트 컨트롤러 초기화하기 122
15.7 애플리케이션 빌드 및 실행하기 124
15.8 컨텐트 뷰 추가하기 125
CHAPTER 16 iOS 5 아이폰 테이블 뷰 애플리케이션 만들기 _ 128
16.1 테이블 뷰 128
16.2 테이블 뷰 델리게이트와 데이터소스 129
16.3 테이블 뷰 스타일 129
16.4 테이블 뷰 셀 스타일 130
16.5 프로젝트 설정하기 131
16.6 테이블 뷰 컴포넌트 추가하기 131
16.7 델리게이트와 데이터소스 연결 만들기 132
16.8 데이터소스 구현하기 132
16.9 애플리케이션 빌드 및 실행하기 135
16.10 테이블 뷰 이미지 추가 및 셀 스타일 변경하기 136
16.11 요약 139
CHAPTER 17 테이블 뷰를 시용한 내비게이션 기반 아이폰 애플리케이션 만들기 _ 140
17.1 내비게이션 컨트롤러 이해하기 140
17.2 예제에 대해 141
17.3 프로젝트 설정하기 142
17.4 프로젝트 파일 리뷰하기 143
17.5 루트 뷰 컨트롤러 추가하기 143
17.6 내비게이션 컨트롤러 만들기 144
17.7 루트 뷰 컨트롤러의 데이터 설정하기 146
17.8 테이블 뷰에 데이터 표시하는 코드 작성하기 147
17.9 두 번째 뷰 컨트롤러 만들기 149
17.10 두 번째 뷰 컨트롤러를 루트 뷰 컨트롤러에 연결하기 150
17.11 두 번째 뷰 컨트롤러 기능 구현하기 152
17.12 내비게이션 코드 추가하기 155
17.13 내비게이션 컨트롤러 스택을 프로그래밍으로 제어하기 156
17.14 요약 157
CHAPTER 18 Xcode 스토리보딩 사용하기 _ 158
18.1 Xcode 스토리보딩 158
18.2 스토리보드 예제 프로젝트 만들기 159
18.3 스토리보드 접근하기 159
18.4 스토리보드에 Scenes 추가하기 161
18.5 스토리보드 Segues 구성하기 162
18.6 스토리보드 전환 구성하기 163
18.7 Scene과 뷰 컨트롤러 연결하기 163
18.8 프로그램으로 스토리보드 Segue 호출하기 165
18.9 segue를 위해 수행할 작업 166
18.10 요약 166
CHAPTER 19 UIPageViewController를 이용한 페이지 기반의 iOS 5 아이폰 애플리케이션 구현하기 _ 167
19.1 UIPageViewController 클래스 167
19.2 UIPageViewController 데이터소스 168
19.3 내비게이션 방향 168
19.4 스파인 위치 169
19.5 UIPageViewController 델리게이트 프로토콜 169
19.6 요약 170
CHAPTER 20 iOS 5 아이폰 UIPageViewController 예제 애플리케이션 _ 171
20.1 Xcode 페이지 기반 애플리케이션 템플릿 171
20.2 프로젝트 만들기 172
20.3 콘텐트 뷰 컨트롤러 추가하기 172
20.4 데이터 모델 만들기 174
20.5 UIPageViewController 초기화하기 178
20.6 UIPageVIewController 애플리케이션 실행하기 180
20.7 요약 181
CHAPTER 21 UIPickerView와 UIDatePicker 컴포넌트 사용하기 _ 182
21.1 DatePicker와 PickerView 컴포넌트 182
21.2 DatePicker 예제 183
21.3 유저 인터페이스 디자인하기 184
21.4 Date Picker 예제 기능 구현하기 185
21.5 메모리 해제하기 186
21.6 아이폰 Date Picker 애플리케이션 빌드 및 실행하기 187
CHAPTER 22 iOS 5 아이폰 UIPickerView 예제 _ 188
22.1 iOS 5 PickerView 프로젝트 만들기 188
22.2 UIPickerView 델리게이트와 데이터소스 188
22.3 pickerViewController.h 파일 189
22.4 유저 인터페이스 디자인하기 190
22.5 배열 초기화하기 191
22.6 데이터소스 프로토콜 구현하기 192
22.7 델리게이트 구현하기 193
22.8 키보드 감추기 194
22.9 메모리 관리 194
22.10 애플리케이션 테스트하기 195
CHAPTER 23 iOS 5에서 디렉터리 다루기 _ 196
23.1 애플리케이션 Documents 디렉터리 197
23.2 오브젝티브-C NSFileManager, NSFileHandle와 NSData 클래스 197
23.3 오브젝티브-C의 경로명 이해하기 198
23.4 NSFileManager 인스턴스 오브젝트 만들기 198
23.5 현재 작업 디렉터리 확인하기 198
23.6 Documents 디렉터리 확인하기 199
23.7 Temporary 디렉터리 확인하기 200
23.8 디렉터리 변경하기 201
23.9 새로운 디렉터리 만들기 202
23.10 디렉터리 삭제하기 203
23.11 디렉터리 내용 목록 표시하기 203
23.12 파일이나 디렉터리 속성 구하기 204
CHAPTER 24 iOS 5의 아이폰 파일 다루기 _ 206
24.1 NSFileManager 인스턴스 만들기 206
24.2 파일이 존재하는지 확인하기 207
24.3 두 파일의 내용 비교하기 207
24.4 파일의 Readable/Writable/Executable/Deletable 상태 확인하기 208
24.5 파일 옮기기와 이름 바꾸기 209
24.6 파일 복사하기 209
24.7 파일 제거하기 210
24.8 Symbolic Link 만들기 210
24.9 NSFileManager로 파일 읽고 쓰기 211
24.10 NSFileHandle 클래스로 파일 작업하기 212
24.11 NSFileHandle 오브젝트 만들기 212
24.12 NSFileHandle 파일 Offsets과 Seeking 212
24.13 파일에서 데이터 읽기 213
24.14 파일에 데이터 쓰기 214
24.15 파일 자르기 215
24.16 요약 215
CHAPTER 25 iOS 5 아이폰 디렉터리 관리 및 파일 입출력 예제 _ 216
25.1 예제 아이폰 애플리케이션 216
25.2 애플리케이션 프로젝트 설정하기 216
25.3 액션과 아웃렛 정의하기 217
25.4 유저 인터페이스 디자인하기 218
25.5 애플리케이션 시작 시 데이터 파일 체크하기 219
25.6 액션 메서드 구현하기 221
25.7 예제 빌드 및 실행하기 222
CHAPTER 26 iOS 5 앱에서 iCloud Storage 사용 준비하기 _ 223
26.1 iCloud란? 223
26.2 iCloud Data Storage 서비스 224
26.3 iCloud Storage를 사용하는 애플리케이션 준비하기 224
26.4 iOS 5 iCloud 활성화된 App ID 만들기 225
26.5 iCloud 활성화된 프로비저닝 프로파일 생성 및 설치하기 226
26.6 iCloud Entitlements 파일 생성하기 226
26.7 수작업으로 Entitlements 파일 생성하기 228
26.8 Ubiquity Container URL 정의하기 229
26.9 요약 229
CHAPTER 27 iOS 5 UIDocument 클래스로 파일 관리하기 _ 230
27.1 UIDocument 클래스 230
27.2 UIDocument 클래스 서브클래싱 231
27.3 충돌 해결과 도큐먼트 상태 231
27.4 UIDocument 예제 애플리케이션 232
27.5 UIDocument 서브클래스 만들기 232
27.6 아웃렛과 액션 선언하기 233
27.7 유저 인터페이스 디자인하기 234
27.8 애플리케이션 데이터 구조 구현하기 235
27.9 contentsForType 메서드 구현하기 236
27.10 loadFromContents 메서드 구현하기 237
27.11 앱 시작 시 도큐먼트 로드하기 238
27.12 도큐먼트 콘텐트 저장하기 242
27.13 애플리케이션 테스트하기 243
27.14 요약 243
CHAPTER 28 iOS 5 아이폰 애플리케이션에서 iCloud Storage 사용하기 _244
28.1 iCloud Usage 사용지침 244
28.2 iCloud 접근을 위해 iCloudStore 애플리케이션 준비하기 245
28.3 뷰 컨트롤러 구성하기 246
28.4 UBUIQUITY_CONTAINER_URL 상수 선언하기 247
28.5 viewDidLoad 메서드 구현하기 248
28.6 metadataQueryDidFinishGathering: 메서드 구현하기 252
28.7 saveDocument 메서드 구현하기 255
28.8 아이폰에서 iCloud Document와 Data Storage 활성화하기 256
28.9 iCloud 애플리케이션 실행하기 256
28.10 iCloud 기반 도큐먼트 리뷰 및 삭제하기 257
28.11 로컬 파일을 어디서나 사용할 수 있게 만들기 257
28.12 요약 258
CHAPTER 29 iCloud를 이용한 아이폰 iOS 5 Key-Value Data 동기화하기 _ 259
29.1 iCloud Key-Value Data Storage 259
29.2 애플리케이션 간 데이터 공유하기 261
29.3 Data Storage 제약점 261
29.4 충돌 해결 261
29.5 Key-Value 변경 시 노티피케이션 받기 261
29.6 iCloud Key-Value Data Storage 예제 262
29.7 iCloud Key Value Data Storage를 위해 애플리케이션 활성화하기 262
29.8 뷰 컨트롤러 구현하기 263
29.9 viewDidLoad 메서드 수정하기 263
29.10 노티피케이션 메서드 구현하기 265
29.11 saveData 메서드 구현하기 265
29.12 유저 인터페이스 디자인하기 266
29.13 애플리케이션 테스트하기 266
CHAPTER 30 아카이빙을 이용한 iOS 5 아이폰 데이터 영구 저장 _ 268
30.1 아카이빙 268
30.2 아카이빙 예제 애플리케이션 269
30.3 액션 및 아웃렛 구현하기 270
30.4 메모리 관리 271
30.5 유저 인터페이스 디자인하기 271
30.6 시작 시 아카이브 파일 존재 확인하기 272
30.7 액션 메서드에서 오브젝트 데이터 아카이빙하기 274
30.8 애플리케이션 테스트하기 275
30.9 요약 275
CHAPTER 31 SQLite를 사용한 iOS 5 아이폰 데이터베이스 구현 _ 276
31.1 SQLite란? 276
31.2 구조적 질의 언어(SQL) 277
31.3 맥 OS X에서 SQLite 사용하기 277
31.4 SQLite 연동을 위한 아이폰 애플리케이션 프로젝트 준비하기 279
31.5 주요 SQLite 기능들 280
31.6 SQLite 데이터베이스 선언하기 281
31.7 데이터베이스 열기 및 생성하기 281
31.8 SQL 문 준비 및 실행하기 282
31.9 데이터베이스 테이블 생성하기 283
31.10 데이터베이스 테이블에서 데이터 가져오기 284
31.11 SQLite 데이터베이스 닫기 285
31.12 요약 285
CHAPTER 32 SQLite 기반 iOS 5 아이폰 애플리케이션 예제 _ 286
32.1 SQLite 아이폰 애플리케이션 예제에 대해 286
32.2 SQLite 애플리케이션 프로젝트 준비 및 생성하기 286
32.3 sqlite3.h 임포트 및 데이터베이스 참조 선언하기 287
32.4 아웃렛 및 액션 만들기 288
32.5 메모리 해제하기 289
32.6 데이터베이스와 테이블 만들기 290
32.7 SQLite 데이터베이스에 데이터를 저장하는 코드 구현하기 291
32.8 SQLite 데이터베이스에서 데이터를 가져오는 코드 구현하기 292
32.9 유저 인터페이스 디자인하기 294
32.10 애플리케이션 빌드 및 실행하기 295
32.11 요약 296
CHAPTER 33 코어 데이터를 이용한 iOS 5 아이폰 데이터베이스 작업 _ 297
33.1 코어 데이터 스택 297
33.2 매니지드 오브젝트 298
33.3 매니지드 오브젝트 콘텍스트 299
33.4 매니지드 오브젝트 모델 299
33.5 영구 저장소 코디네이터 300
33.6 영구 오브젝트 저장소 300
33.7 엔티티 디스크립션 정의 300
33.8 매니지드 오브젝트 콘텍스트 얻기 302
33.9 엔티티 디스크립션 얻기 302
33.10 매니지드 오브젝트 만들기 303
33.11 매니지드 오브젝트 속성 읽기 및 쓰기 303
33.12 매니지드 오브젝트 구해오기 304
33.13 조건에 따른 매니지드 오브젝트 가져오기 304
33.14 요약 305
CHAPTER 34 iOS 5 아이폰 코어 데이터 사용지침 _ 306
34.1 아이폰 코어 데이터 예제 애플리케이션 306
34.2 코어 데이터 기반의 아이폰 애플리케이션 만들기 306
34.3 엔티티 디스크립션 만들기 307
34.4 뷰 컨트롤러 추가하기 308
34.5 뷰 컨트롤러에 액션 및 아웃렛 추가하기 310
34.6 유저 인터페이스 디자인하기 311
34.7 코어 데이터를 이용하여 영구 저장소에 데이터 저장하기 312
34.8 코어 데이터를 이용하여 영구 저장소에서 데이터 가져오기 313
34.9 메모리 해제하기 315
34.10 예제 애플리케이션 빌드 및 실행하기 315
34.11 요약 316
CHAPTER 38 iOS 5 Gesture Recognizers를 통한 제스처 인식 _ 333
38.1 UIGestureRecognizer 클래스 333
38.2 인식기 액션 메시지 334
38.3 불연속 및 연속된 제스처 335
38.4 제스처에서 데이터 얻기 335
38.5 탭 제스처 인식하기 335
38.6 핀치 제스처 인식하기 336
38.7 회전 제스처 인식하기 336
38.8 팬과 드래깅 제스처 인식하기 336
38.9 스와이프 제스처 인식하기 337
38.10 롱 터치(터치와 홀드) 제스처 인식하기 338
38.11 요약 338
CHAPTER 39 아이폰 iOS 5 제스처 인식 사용지침 _ 339
39.1 제스처 인식 프로젝트 만들기 339
39.2 라벨 아웃렛 설정하기 339
39.3 유저 인터페이스 디자인하기 340
39.4 제스처 인식기 구성하기 341
39.5 액션 메서드 추가하기 342
39.6 제스처 인식 애플리케이션 테스트하기 343
CHAPTER 40 쿼츠로 iOS 5 아이폰 2D 그래픽 그리기 _ 344
40.1 코어 그래픽과 쿼츠 2D 소개 344
40.2 drawRect 메서드 345
40.3 점, 좌표와 픽셀 345
40.4 그래픽 콘텍스트 346
40.5 쿼츠 2D에서 색 작업하기 346
40.6 요약 348
CHAPTER 41 쿼츠 2D와 코어 이미지를 사용하는 iOS 5 아이폰 그래픽 사용지침 _ 349
41.1 iOS 아이폰 드로잉 예제 애플리케이션 349
41.2 새로운 프로젝트 만들기 349
41.3 UIView 서브클래스 만들기 350
41.4 UIView 서브클래스에 drawRect 메서드 위치시키기 350
41.5 선 그리기 351
41.6 경로 그리기 354
41.7 사각형 그리기 355
41.8 타원 및 원 그리기 355
41.9 색으로 경로 채우기 356
41.10 호 그리기 358
41.11 3차 베지어 곡선 그리기 359
41.12 2차 베지어 곡선 그리기 360
41.13 점선 그리기 361
41.14 그래픽 콘텍스트에 이미지 그리기 362
41.15 코어 이미지 프레임워크를 통한 이미지 필터링 363
41.16 요약 365
CHAPTER 42 코어 애니메이션을 이용한 iOS 5 아이폰 애니메이션 기초 _ 366
42.1 UIView 코어 애니메이션 블록 366
42.2 애니메이션 커브 이해하기 368
42.3 애니메이션 종료 시 노티피케이션 받기 368
42.4 아핀 변환 수행하기 369
42.5 동시에 수행되는 변환 370
42.6 애니메이션 예제 애플리케이션 만들기 370
42.7 인터페이스 파일 구현하기 370
42.8 UIView에서 그리기 371
42.9 화면 터치 인식 및 애니메이션 수행하기 372
42.10 애니메이션 애플리케이션 빌드 및 실행하기 374
42.11 요약 374
CHAPTER 43 iOS 5 아이폰 앱에 iAds 연동하기 _ 375
43.1 iOS 아이폰 광고 옵션들 376
43.2 iAds 광고 포맷 376
43.3 iAds를 표시하는 기본 규칙 377
43.4 iAds 아이폰 예제 애플리케이션 만들기 377
43.5 Xcode 프로젝트에 iAds 프레임워크 추가하기 378
43.6 뷰 컨트롤러 구성하기 378
43.7 유저 인터페이스 디자인하기 379
43.8 Banner Ad 만들기 379
43.9 광고 표시하기 380
43.10 기기 방향에 따라 광고 포맷 변경하기 382
43.11 델리게이트 메서드 구현하기 383
43.12 요약 384
CHAPTER 44 iOS 5 아이폰 멀티태스킹 개요 _ 385
44.1 iOS 애플리케이션 상태 이해하기 385
44.2 멀티태스킹 애플리케이션의 수명주기에 대한 개념 386
44.3 iOS 애플리케이션에서 멀티태스킹 비활성화하기 387
44.4 멀티태스킹 지원 체크하기 389
44.5 지원되는 백그라운드 실행 형태 389
44.6 백그라운드 실행 규칙 390
44.7 로컬 노티피케이션 예약하기 391
CHAPTER 45 iOS 5 아이폰 로컬 노티피케이션 예약하기 _ 392
45.1 로컬 노티피케이션 아이폰 앱 프로젝트 만들기 392
45.2 애플리케이션 델리게이트 메서드 위치시키기 393
45.3 프로젝트에 사운드 파일 추가하기 393
45.4 로컬 노티피케이션 예약하기 394
45.5 애플리케이션 테스트하기 394
45.6 예약된 노티피케이션 취소하기 395
45.7 즉시 로컬 노티피케이션 호출하기 396
45.8 요약 396
CHAPTER 46 iOS 5 코어 로케이션 프레임워크를 이용하여 아이폰 위치 정보 얻기 _ 397
46.1 코어 로케이션의 기초 397
46.2 로케이션 정확도 설정하기 398
46.3 거리 필터 구성하기 399
46.4 로케이션 매니저 델리게이트 399
46.5 CLLocation 오브젝트에서 위치 정보 얻기 400
46.6 거리 계산하기 401
46.7 위치 정보와 멀티태스킹 401
46.8 요약 401
CHAPTER 47 iOS 5 아이폰 로케이션 예제 애플리케이션 _ 402
47.1 iOS 5 아이폰 로케이션 예제 애플리케이션 만들기 402
47.2 프로젝트에 코어 로케이션 프레임워크 추가하기 402
47.3 뷰 컨트롤러 구성하기 403
47.4 유저 인터페이스 디자인하기 404
47.5 CLLocationManager 오브젝트 만들기 405
47.6 액션 메서드 구현하기 406
47.7 애플리케이션 델리게이트 메서드 구현하기 406
47.8 메모리 해제하기 408
47.9 아이폰 로케이션 애플리케이션 빌드 및 실행하기 409
CHAPTER 48 MapKit과 MKMapView 클래스를 이용하여 아이폰에서 지도 다루기 _ 411
48.1 MapKit 프레임워크에 대해 411
48.2 Map Regions 412
48.3 아이폰 MKMapView 사용지침 412
48.4 아이폰 지도 사용지침 만들기 412
48.5 Xcode 프로젝트에 MapKit 프레임워크 추가하기 413
48.6 MapView를 위한 아웃렛 선언하기 413
48.7 MKView를 만들고 아웃렛 연결하기 414
48.8 툴바 아이템 추가하기 415
48.9 MapView 영역 변경하기 416
48.10 지도 형식 변경하기 417
48.11 아이폰 MapView 애플리케이션 테스트하기 418
48.12 사용자 이동에 따른 Map View 갱신하기 419
48.13 맵 뷰에 기본적인 주석 추가하기 420
CHAPTER 50 iOS 5 아이폰 카메라 예제 애플리케이션 _ 429
50.1 예제 애플리케이션에 대해 429
50.2 카메라 프로젝트 만들기 430
50.3 프레임워크 추가하기 430
50.4 프로토콜, 아웃렛, 액션 구성하기 430
50.5 유저 인터페이스 디자인하기 431
50.6 액션 메서드 구현하기 432
50.7 델리게이트 메서드 구현하기 434
50.8 메모리 해제하기 435
50.9 애플리케이션 빌드 및 실행하기 435
CHAPTER 51 iOS 5 아이폰 애플리케이션에서 비디오 재생하기 _ 437
51.1 MPMoviePlayerController 클래스에 대해 437
51.2 지원하는 비디오 포맷 438
51.3 아이폰 무비 플레이어 예제 애플리케이션 438
51.4 MediaPlayer 프레임워크 추가하기 438
51.5 액션 메서드와 MoviePlayer 인스턴스 선언하기 438
51.6 유저 인터페이스 디자인하기 439
51.7 프로젝트 리소스에 비디오 파일 추가하기 440
51.8 액션 메서드 구현하기 440
51.9 타깃-액션 노티피케이션 메서드 441
51.10 애플리케이션 빌드 및 실행하기 441
51.11 네트워크에 있는 비디오 파일 접근하기 442
CHAPTER 52 AVAudioPlayer를 이용하여 아이폰에서 오디오 재생하기 _443
52.1 지원하는 오디오 포맷 443
52.2 재생 노티피케이션 받기 444
52.3 재생 모니터링 및 제어하기 445
52.4 아이폰 오디오 예제 애플리케이션 만들기 445
52.5 AVFoundation 프레임워크 추가하기 445
52.6 프로젝트 리소스에 오디오 파일 추가하기 446
52.7 액션과 아웃렛 만들기 446
52.8 액션 메서드 구현하기 447
52.9 AVAudioPlayer 오브젝트 만들고 초기화하기 447
52.10 AVAudioPlayerDelegate 프로토콜 메서드 구현하기 448
52.11 유저 인터페이스 디자인하기 449
52.12 메모리 해제하기 450
52.13 애플리케이션 빌드 및 실행하기 450
CHAPTER 53 AVAudioRecorder로 아이폰에서 오디오 녹음하기 _ 451
53.1 아이폰 AVAudioRecorder에 대해 451
53.2 프로젝트 만들기 452
53.3 액션과 아웃렛 선언하기 452
53.4 AVAudioRecorder 인스턴스 만들기 453
53.5 액션 메서드 구현하기 454
53.6 델리게이트 메서드 구현하기 456
53.7 유저 인터페이스 디자인하기 457
53.8 메모리 해제하기 458
53.9 애플리케이션 테스트하기 458
출판사 제이펍 원출판사 기술평론사(技術評論社) 원서명 良いコードを書く技術(ISBN: 9784774145969) 저자명 아가타 토시타카(Agata Toshitaka) 역자명 정인식 출판일 2011년 12월 9일 페이지 256쪽 판 형 크라운판 변형(170*225) 반양장(Soft Cover) 정 가 20,000원 ISBN 978-89-94506-31-9 부가기호: 13560 분 야 프로그래밍 / 프로그래밍 일반 키워드 자바 / 루비 / 자바스크립트 / 명명하기 / 스코프 / 추상화 / 단위 테스트 메타프로그래밍 / DSL / 프레임워크
도서 소개 초보 프로그래머를 위한 레벨 업 가이드!
유연하고 효율적인 소프트웨어를 얼마나 잘 구현할 것인가?
좋은 코드로의 여행을 시작합니다!
이 책은 읽기 쉽고 유지보수하기 쉬운 “좋은 코드”의 작성법을 설명하고 있는 프로그래밍 입문서다.
좋은 코드를 작성하는 관례에서 네이밍 방법, 코드 분할 및 통합하는 방법, 프로그래밍의 파워를 최대화하는 추상화 방법, 코드의 성능을 높이는 방법과 효율적인 알고리즘 작성법, 단위 테스트와 메타프로그래밍까지 프로그래머로서의 튼튼한 기초를 높여줄 수 있는 모든 것들을 다루고 있다.
이 책에는 다양한 소스 코드가 예로 등장한다. 예제의 메인 언어는 자바(Java)이지만, 루비(Ruby)나 자바스크립트(JavaScript) 등의 언어로도 설명하고 있다. 그러나 한 언어에 특화된 이야기는 거의 없으므로 다른 언어를 사용하는 프로그래머들에게도 충분히 참고가 될 수 있는 구성으로 되어 있다. 책의 곳곳에는 초보 프로그래머와 중급 프로그래머가 궁금해 하는 부분들에 대해서 전문 프로그래머의 답변을 캐리커처와 함께 대화체로 풀어놓아 이해하기 쉽고 재미있게 학습할 수 있도록 하였다.
이 책의 대상 독자
• 좋은 코드를 작성하고 싶지만 어디부터 손을 대면 좋을지 모르는 분들
• 읽기 쉽고 유지보수하기 쉬운 코드를 작성하고 싶은 분들
• 프로그래밍의 세계에 발을 갓 들여놓은 학생들
• 코딩을 전문으로 하고 있는 현업의 1-2년차 프로그래머들
• 베테랑 프로그래머를 목표로 중급 프로그래머들이
책 속으로
이 책은 일을 잘해 보고 싶은 초보 프로그래머가 좋은 코드를 작성할 수 있도록 하기 위한 해설서다. 엔지니어로서 좋은 코드를 작성할 수 있는 프로그래머는 (어디까지나 내 생각이지만) 업계에서 20% 정도뿐이다. 나머지 80%는 이른바 초보 프로그래머들인 셈이다. 그 80% 정도의 프로그래머 중에는 일을 잘해 보고 싶긴 하지만 좀처럼 요령을 터득하지 못했거나 또는 무엇부터 착수해야 하는지를 모르는 사람들이 많은 것 같다.
프로그래밍은 매우 창조적이고 흥미진진하며 즐거운 일이지만, 이런 식이라면 참 으로 아깝다는 생각이 든다. 내가 좋은 코드를 작성할 수 있게 된 것은 좋은 스승과 서적을 만나게 된 덕분이다. 이 책이 일을 잘 해 보고 싶은 초보 프로그래머들에게 좋은 지침서로 활용되길 바란다. _ 저자 머리말 중에서
• 제1장 좋은 코드란 무엇인가?
• 제2장 좋은 코드를 작성하기 위한 5가지 습관
• 제3장 명명하기
• 제4장 스코프
• 제5장 코드의 분할
• 제6장 코드의 집약
• 제7장 코드의 성능
• 제8장 단위 테스트
• 제9장 추상화
• 제10장 메타 프로그래밍
• 제11장 프레임워크 만들기
저자 소개 아가타 토시타카(Agata Toshitaka)
학창시절 MSX라는 8비트 컴퓨터로 인해 프로그래밍의 즐거움을 알았으며, 오픈 소스인 Wiki로 구현한 MobWiki의 개발 업무를 시작으로 프로그래밍의 세계에 발을 들여놓았다. 현재는 프로젝트 관리툴인 Backlog, 이미지 드로우 툴인 Cacoo 등 협업형 웹 서비스의 기획 및 제품 개발을 하고 있다. 또한 웹 애플리케이션 프레임워크인 Cubby의 커미터(Committer)를 맡고 있다. 현재 후쿠오카에 거주하고 있으며, 주식회사 누라보에 소속되어 있다.
역자 소개 정인식
숭실대학교에서 전자계산학을 전공하였다. 사회 초년생 시절 자바에 심취해 현대정보기술에서 웹 애플리케이션 개발을 하였고, 그 후 이동통신단말기 분야로 전직하여 KTF, SKT 등 국내향 휴대전화단말기의 부가서비스 개발업무를 담당하였다. 현재는 일본 키스코㈜에서 시스템 엔지니어로서 임베디드 시스템 사업부 팀장으로 근무하고 있다. 주로 산요전기 및 교세라의 북미향 휴대전화기를 개발하고 있으며, 담당분야는 BREW와 안드로이드에서의 브라우저 기능 개발이다. 옮긴 책으로는 『자바스크립트 마스터 북』(제이펍)이 있다.
차례
CHAPTER 1 좋은 코드란 무엇인가? _ 1
1.1 좋은 코드의 정의와 가치2
1.2 좋은 코드의 정의 2
1.3 좋은 코드의 가치 5
1.4 각 대표자들의 이야기 6
1.5 정리 7
CHAPTER 2 좋은 코드를 작성하기 위한 5가지 습관_ 9
2.1 좋은 코드는 하루아침에 되는 것이 아니다 10
2.2 습관 그 첫 번째 - 읽기
코드를 읽고 또 읽어라! 10
2.3 습관 그 두 번째 - 쓰기
어쨌든 코드를 작성해 보자 12
2.4 습관 그 세 번째 - 도구의 연마
사용하는 도구는 항상 갈고 닦아두자 13
2.5 습관 그 네 번째 - 알기
좋은 지식을 얻자 16
2.6 습관 그 다섯 번째 - 듣기
코드 등의 결과물과 사람들로부터의 피드백으로 더욱 성장하자 18
2.7 정리 20
CHAPTER 3 명명하기_ 21 3.1 좋은 코드는 좋은 이름에서 나온다 22
3.2 각 대표자들의 이야기 22
3.3 좋은 이름의 조건 23
3.4 변수명 29
3.5 메소드명 36
3.6 클래스명 38
3.7 패키지/네임스페이스명 40
3.8 프로젝트명 42
3.9 정리 42
CHAPTER 4 스코프_ 45
4.1 스코프를 의식하고 있는가? 46
4.2 스코프란 무엇인가? 46
4.3 스코프를 작게 해서 기억해 둘 것을 줄이자! 47
4.4 각 대표자들의 이야기 48
4.5 변수의 스코프 49
4.6 메소드의 스코프 58
4.7 클래스의 스코프 61
4.8 캐스트를 사용한 가시성의 제어 65
4.9 보다 큰 영역의 스코프 66
4.10 정리 67
CHAPTER 5 코드의 분할_ 69
5.1 적절한 크기로 코드를 분할하기 70
5.2 왜 코드를 분할하는가? 70
5.3 각 대표자들의 이야기 71
5.4 두 가지 방향으로의 분할 72
5.5 예제: 클라이언트에 XML을 반환하는 웹 API 처리의 분할 76
5.6 단계 1: 일단 코드를 작성해 보기 77
5.7 단계 2: 공통 처리를 메소드로 추출하여 분할하기 80
5.8 단계 3: 처리 단위로 분할하기 83
5.9 단계 4: 상태를 가진 처리를 클래스로 추출하여 분할하기 87
5.10 정리 93
CHAPTER 7 코드의 성능_ 109
7.1 성능을 의식하고 있는가? 110
7.2 각 대표자들의 이야기 110
7.3 성능은 계산량으로 결정된다 111
7.4 성능 개선의 순서 118
7.5 알고리즘 선택 이외의 성능 개선 121
7.6 성능 개선의 지침 123
7.7 정리 125
CHAPTER 8 단위테스트_ 127 8.1 테스트를 좋아하는가? 128
8.2 단위 테스트란 무엇인가? 128
8.3 각 대표자들의 이야기 130
8.4 단위 테스트의 효능 131
8.5 예제: 웹 애플리케이션의 보안 테스트 132
8.6 단계 1: 데이터베이스에 테스트 데이터 등록하기 133
8.7 단계 2: 화면의 구현 134
8.8 단계 3: 화면의 단위 테스트(정상계) 135
8.9 단계 4: 화면의 단위 테스트(이상계) 136
8.10 단위 테스트의 지침 137
8.11 정리 141
CHAPTER 9 추상화_ 143
9.1 추상화는 프로그래밍의 파워를 최대화한다 144
9.2 배열/컬렉션이란? 144
9.3 배열/컬렉션을 이용한 추상화 146
9.4 각 대표자들의 이야기 147
9.5 예제: 이미지 파일의 리스트를 표시하는 웹 애플리케이션 148
9.6 단계 1: 일단 코드를 대충 작성해 보기 149
9.7 단계 2: 가독성을 높이기 위한 메소드 추출 153
9.8 단계 3: 관련 데이터의 데이터 구조 정리 156
9.9 단계 4: 배열/컬렉션을 이용한 추상화 158
9.10 추상화의 지침 161
9.11 정리 162
CHAPTER 10 메타프로그래밍_ 163 10.1 프로그래밍을 프로그램하기 164
10.2 각 대표자들의 이야기 164
10.3 메타프로그래밍이란 무엇인가? 165
10.4 예제: Excel을 사용한 외부 DSL 171
10.5 단계 1: 일단 코드 작성해 보기 173
10.6 단계 2: 메타데이터를 Excel로 이동하기 176
10.7 단계 3: 리플렉션 API로 변환 규칙을 동적으로 적용하기 179
10.8 정리 187
CHAPTER 11 프레임워크를 만들자_ 189
11.1 프레임워크의 동작 원리 이해하기 190
11.2 각 대표자들의 이야기 190
11.3 예제: 웹 애플리케이션 프레임워크 만들기 191
11.4 단계 1: 기본이 되는 서블릿으로 작성해 보기 193
11.5 단계 2: 프런트 컨트롤러와 액션 클래스의 도입 196
11.6 단계 3: 라우팅 정보의 외부 파일화 201
11.7 단계 4: 자주 사용하는 처리를 간단하게 실행할 수 있도록 공통화하기 203
11.8 단계 5: 프레임워크를 패키지화한다 208
11.9 정리 210
APPENDIX A 코드 리딩 방법_212
A.1 코드에는 동적인 리딩 방법과 정적인 리딩 방법이 있다 212
A.2 Apache Commons IO의 코드 읽기 212
A.3 단계 1: 대상의 코드를 다운로드(체크 아웃)한다 213
A.4 단계 2: 정적인 방법으로 코드 읽기 214
A.5 단계 3: 동적인 방법으로 코드 읽기 219
A.6 정리 221
iOS 5에 관한 원서들도 대부분 빨라야 12월부터 출간되기 시작하는데, 이번에 저희가 출간하는 iOS 5 서적은 번역서임에도 불구하고 다른 원서들과 거의 같은 시기에 나올 수 있었던 건 미국의 전자책을 계약했기 때문입니다. 어제 국내에 출간된 [핵심만 골라 배우는 오브젝티브-C 2.0]의 저자인 닐 스미스(Neil Smyth)는 지난 번 포스트에서도 말씀했듯이 다작을 하며 책을 아마존에서 전자책으로 판매하고 있었는데요, 그의 책들 중 [iPhone iOS 4 Development Essentials - Xcode 4 Edition]이 있습니다. 아마존에서도 좋은 평을 받고 있는 이 책을 구매하여 검토해본 결과 iOS 의 핵심 기능들을 간단한 예제를 통해 간결하게 설명하고 있는 것이 인상적이었습니다.
그래서 곧 iOS 5 버전이 출시될 텐데 혹시 업그레이드 계획이 없느냐고 물어보았고, 있다고 하여 그럼 iOS 5 버전으로 계약을 하자고 하여 진행했던 것입니다. 저자 머리말에서도 밝히고 있듯이 이 책이 이렇게 빨리 나올 수 있었던 이유는 iOS 5 베타 테스터들과 애플의 iOS 개발팀의 노력을 공로로 돌리고 있습니다.
"이 책에서 설명하는 많은 새로운 내용들은 새로운 기능에 대한 문서가 거의 없는 상태에서도 열심히 테스트를 수행한 iOS 5 베타 테스터들과 베타 SDK 버그에 대한 Apple iOS 개발팀의 신속한 응답이 없었으면 출간이 불가능했을 것이다."
그래서 거의 iOS 5 정식 버전이 발표되자 마자 이 책의 원고를 받아 번역에 들어갔습니다. 이번 책은 저희와 처음 함께 작업하게 되신 조재유 님께서 맡아주셨습니다. 직장을 그만두시고 새로운 사업을 시작하시는 아주 중요한 순간인데도, 국내 최초로 iOS 5 서적을 출간하고 싶다는 출판사의 요청에 밤낮없이 열심히 번역해주셨답니다. 다시 한 번 좋은 번역, 빠른 번역에 고마움을 전합니다.
이 책은 기존 책들의 형식과는 달리 무려 56개의 장으로 되어 있습니다. 사실 장(Chapter)이란 개념보다는 topic이나 thema와 같은 개념이 맞을 듯합니다. 이 책은 하나의 주제에 대해 간단한 예제를 통해 빨리 이해할 수 있도록 한 것이 가장 큰 특징입니다. 백문이 불여일견이니 직접 검토하실 수 있도록 일부 파일을 아래에 공개해드립니다.
11장 상호작용하는 iOS 아이폰 앱 만들기 / 12장 아이폰 키보드를 감추는 iOS 5 코드 만들기
안녕하세요? ^^
PDF기반의 아이패드용 앱북을 만들어 현재 애플의 심사를 기다리고 있는 중입니다. 빠르면 이번 주부터 앱스토어에서 구매하실 수 있을 것 같습니다. 안드로이드 버전은 봄이나 되어야 가능할 것 같습니다. 등록되면 공지를 통해 다시 안내해드리도록 하겠습니다.
출판사 제이펍 원출판사 Payload Media 원서명Objective-C 2.0 Essentials, second edition 저자명 닐 스미스(Neil Smyth) 역자명 황반석 출판일 2011년 12월 6일 페이지 248쪽 시리즈 I♥Mobile 15 (아이러브모바일 15) 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 22,000원 ISBN 978-89-94506-29-6 부가기호: 13560 분 야 프로그래밍 언어 / 오브젝티브-C 키워드 아이폰 / 아이패드 / 맥 OS / Xcode / GNUstep / 데이터 타입 / 연산자 / 표현식 / 객체지향 / Foundation 프레임워크 / 문자열 /
관련 사이트
■ 아마존 도서소개페이지(저희가 계약한 책은 현재 링크의 개정판임을 밝혀 드립니다)
■ 저자가 운영하는 전자책 출판사의 책들
iOS와 Mac 개발의 시작, 그것은 바로 오브젝티브-C 언어를 정확하게 배우고 습득하는 일일 것이다. Xcode와 Interface Builder라는 강력한 도구들을 애플이 제공하지만, 애플리케이션에 생명을 불어넣는 것은 결국 오브젝티브-C 언어로 된 프로그래밍이다. 여러분이 꿈꾸는 킬러 앱(Killer Application)을 현실화해 줄 그 출발은 바로 이 책, 『핵심만 골라 배우는 오브젝티브-C 2.0』이 될 것이다.
이 책은 아이폰(아이팟 터치) 그리고 아이패드뿐만 아니라 맥용 애플리케이션 개발에 사용되는 오브젝티브-C에 대하여 핵심적인 내용을 다양한 예제와 함께 다루고 있다. 방대한 오브젝티브-C 2.0 내용들 중 가장 많이, 그리고 필수적으로 사용되는 것들에 대해 일목요연한 구성을 통해 설명하고 있는 이 책은 변수와 루프, 흐름 제어와 같은 오브젝티브-C의 기초들을 포함할 뿐만 아니라 오브젝티브-C Foundation 프레임워크와 메모리 파일 등을 이용한 객체지향 프로그래밍의 세부사항들도 다루고 있다. 더불어 프로그래밍에 필요한 배경 지식들도 제공한다. 오브젝티브-C 2.0의 핵심 문법을 빠르게 습득할 수 있도록 따라 하기 쉬운 34개의 장으로 구성된 이 책은 개발을 처음 시작하는 프로그래머들뿐만 아니라 다른 개발 경험이 많은 개발자에게도 아이폰(아이팟 터치), 아이패드, 그리고 맥용 애플리케이션 개발을 빠르게 착수할 수 있는 가이드 역할을 해줄 것이다.
이 책은 다음과 같은 내용을 다루고 있다.
• 다양한 플랫폼에 오브젝티브-C를 설치하는 방법들을 설명한다.
• 오브젝티브-C 프로그래밍의 기본 문법들을 설명한다.
• 객체지향 프로그래밍에 대한 개념과 오브젝티브-C 2.0의 특징들을 설명한다.
• 오브젝티브-C에서의 클래스와 함수를 선언하고 호출하는 방법을 설명한다.
• NSString과 NSMutableString으로 오브젝티브-C의 문자열 객체를 다루는 방법을 배운다.
• NSArray와 NSMutableArray를 가지고 배열 객체로 작업하는 방법들을 배운다.
• NSDictionary와 NSMutableDictionary 등의 주요 클래스들에 대해 설명한다.
• 파일, 디렉터리들을 생성하고 이용하는 방법들을 설명한다.
• #define과 #undef, 그리고 #import 등 전치리 지시자를 사용하는 방법을 설명한다.
저자 소개
닐 스미스(Neil Smyth)
닐 스미스는 20년 이상의 IT 개발 경력을 가지고 있다. 특히 프로그래밍 언어와 기업용 개발 도구, 그리고 사용자 인터페이스 디자인을 전문으로 해왔으며, 시스템 프로그래밍과 웹 개발, 그리고 마케팅을 담당했었다. 닐은 IT 학사 학위를 가지고 있고, Network+와 Project+, 그리고 자바와 마이크로소프트 MCP 자격증들을 가지고 있다. 또한 그는 12종의 기술 관련 서적을 집필하였으며, 현재는 미국에 위치한 인터넷 출판과 모바일 애플리케이션 개발 회사인 Payload Media의 공동 창업자이자 CEO로 재직 중이다.
역자 소개
황반석
한양대학교에서 컴퓨터 공학을 전공한 이후 한결같이 개발자의 길을 걷고 있다. 현재는 트렌디앱(http://www.trendyapp.co.kr)의 공동창업자로 폭넓은 모바일 세계를 개척하고 펼치겠다는 푸른 꿈을 꾸고 있다. 옮긴 책으로는 『렛츠 고! iOS 4 애플리케이션 개발』(2011, 제이펍), 『입문자를 위한 아이폰 게임 개발』(2011, 제이펍), 『맥과 아이폰 개발자를 위한 Xcode』(2010, 제이펍)가 있다.
차례
Chapter 01 이 책에 대하여 _ 1
1.1 이 책을 읽고 있는 이유가 무엇인가? 1
1.2 지원되는 플랫폼 2
Chapter 02 오브젝티브-C의 역사 _ 3 2.1 C 언어 3
2.2 Smalltalk 언어 4
2.3 C 언어, Smalltalk를 만나다 4
2.4 오브젝티브-C와 애플 4
Chapter 03 Mac OS X에서의 Xcode 설치와 오브젝티브-C 컴파일하기 _ 6
3.1 Mac OS X에서의 Xcode 설치하기 7
3.2 Xcode 시작하기 8
3.3 Xcode로 오브젝티브-C 애플리케이션 개발하기 10
3.4 커맨드 라인에서 오브젝티브-C 컴파일하기 11
더보기
Chapter 04 윈도우즈에 GNUstep과 오브젝티브-C 설치하고 사용하기_ 13
4.1 GNUstep 패키지 다운로드하기 13
4.2 윈도우즈용 MinGW와 GNUstep 설치하기 14
4.3 GNUstep Shell 실행하기 14
4.4 설치된 것 테스트하기 15
Chapter 05 리눅스에 GNUstep과 오브젝티브-C 설치하고 사용하기 _ 17
5.1 우분투에 GNUstep 설치하기 18
5.2 오브젝티브-C 코드 컴파일하기 19
Chapter 06 리눅스에서 GNUstep 빌드하고 설치하기 _ 21
6.1 리눅스에 gcc와 오브젝티브-C 지원 설치하기 21
6.2 패키지 의존성 22
6.3 GNUstep 소스 코드 얻기 22
6.4 빌드 과정 설정하기 23
6.5 GNUstep 빌드하기 24
6.6 설치된 오브젝티브-C와 GNUstep 테스트하기 25
6.7 오브젝티브-C 코드 컴파일하기 26
Chapter 07 오브젝티브-C 2.0의 데이터 타입 _ 28
7.1 int 데이터 타입 29
7.2 char 데이터 타입 30
7.2.1 특수 문자/이스케이프 문자 31
7.3 float 데이터 타입 32
7.4 double 데이터 타입 32
7.5 id 데이터 타입 32
7.6 BOOL 데이터 타입 33
7.7 오브젝티브-C 데이터 타입 수식자들 33
7.7.1 long 33
7.7.2 long long 34
7.7.3 short 34
7.7.4 signed/unsigned 34
7.8 요약 35
Chapter 11 오브젝티브-C 2.0 코드 주석달기 _ 57
11.1 왜 코드에 주석을 달까? 57
11.2 한 줄 주석 58
11.3 여러 줄 주석 59
11.4 요약 60
Chapter 12 if와 else를 이용한 오브젝티브-C 흐름 제어 _ 61
12.1 if 문 사용하기 61
12.2 if ... else ... 문 사용하기 63
12.3 if ... else if ... 문 사용하기 63
12.4 요약 64
Chapter 13 오브젝티브-C의 switch 문 _ 65
13.1 switch 문을 왜 사용할까? 65
13.2 switch 문 문법 사용하기 66
13.3 switch 문 예제 67
13.4 예제 살펴보기 68
13.5 혼합된 case 문 69
Chapter 14 오브젝티브-C의 반복 - for 문 _ 70
14.1 왜 반복문을 사용할까? 70
14.2 오브젝티브-C 반복문 변수의 범위 73
14.3 무한 반복문 생성하기 73
14.4 for 문에서 빠져 나오기 74
14.5 중첩 반복문 75
14.6 중첩 반복문에서 빠져 나오기 75
14.7 반복문 재개하기 76
14.8 여러 변수들을 가진 for 문 사용하기 77
Chapter 15 오브젝티브-C의 반복 - do 그리고 while 문 _ 79
15.1 while 문 79
15.2 do ... while 문 80
15.3 반복문에서 빠져 나오기 81
15.4 continue 문 81
Chapter 16 오브젝티브-C 객체지향 프로그래밍의 개요 _ 83
16.1 객체란 무엇인가? 84
16.2 클래스란 무엇인가? 84
16.3 오브젝티브-C 클래스 인터페이스 선언하기 84
16.4 클래스에 인스턴스 변수 추가하기 85
16.5 클래스 메서드 정의하기 86
16.6 오브젝티브-C 클래스 구현체 선언하기 88
16.7 클래스 인스턴스의 선언과 초기화, 그리고 해제 89
16.8 메서드를 호출하여 인스턴스 데이터 접근하기 90
16.9 프로그램 부분 만들기 91
16.10 모두 합치기 92
16.11 객체지향 오브젝티브-C 코드 구조화하기 94
Chapter 17 오브젝티브-C의 클래스 메서드 만들기 _ 98
17.1 인스턴스 메서드와 클래스 메서드 98
17.2 새로운 클래스 메서드 생성하기 99
17.3 @interface 부분 99
17.4 @implementation 부분 100
17.5 main() 함수 101
Chapter 18 오브젝티브-C의 데이터 캡슐화, 통합된 접근자, 그리고 점 표기법 _ 103
18.1 데이터 캡슐화 103
18.2 통합된 접근자 메서드들 103
18.3 캡슐화된 데이터에 직접 접근 105
18.4 오브젝티브-C와 점 표기법 106
18.5 인스턴스 변수에 대한 접근 제어 107
Chapter 19 오브젝티브-C의 상속 _ 109
19.1 상속과 클래스, 그리고 자식 클래스 109
19.2 오브젝티브-C의 상속 예제 110
19.3 하위 클래스의 기능 확장하기 112
19.4 상속받은 메서드를 오버라이딩하기 113
Chapter 21 id 타입을 이용한 오브젝티브-C의 동적 결합과 선언 _ 122
21.1 정적 선언 vs 동적 선언 122
21.2 동적 결합 123
21.3 다형성 125
Chapter 22 오브젝티브-C의 변수 범위와 기억 영역 분류_ 126 22.1 변수 범위 126
22.2 블록 범위 127
22.3 함수 범위 129
22.4 전역 범위 131
22.5 파일 범위 133
22.6 변수 기억 영역 분류 134
Chapter 23 오브젝티브-C 함수의 개요_ 135
23.1 함수란 무엇인가? 135
23.2 오브젝티브-C 함수를 선언하는 방법 136
23.3 main() 함수 137
23.4 오브젝티브 함수 호출하기 137
23.5 함수 프로토타입 138
23.6 함수의 범위와 static 지정자 141
23.7 함수의 정적 변수 142
Chapter 30 오브젝티브-C에서 디렉터리 작업하기_ 183
30.1 NSFileManager와 NSFileHandle, 그리고 NSData 클래스 183
30.2 오브젝티브-C에서의 경로명 이해하기 184
30.3 NSFileManager 인스턴스 객체 생성하기 184
30.4 현재 작업 중인 디렉터리 식별하기 185
30.5 다른 디렉터리로 바꾸기 185
30.6 새로운 디렉터리 생성하기 186
30.7 디렉터리 삭제하기 187
30.8 디렉터리 이름 바꾸기와 이동하기 187
30.9 디렉터리에 있는 파일 목록 얻기 187
30.10 파일 또는 디렉터리의 속성 얻기 188
Chapter 31 오브젝티브-C에서 파일 작업하기_ 190
31.1 NSFileManager 인스턴스 생성하기 190
31.2 파일이 있는지 검사하기 191
31.3 두 개의 파일 내용 비교하기 191
31.4 읽기 가능/쓰기 가능/실행 가능/삭제 가능인지 검사하기 192
31.5 파일 이동하기/이름 바꾸기 192
31.6 파일 복사하기 193
31.7 파일 제거하기 193
31.8 심볼릭 링크 생성하기 194
31.9 NSFileManager로 파일 읽기와 쓰기 194
31.10 NSFileHandle 클래스를 이용하여 파일 작업하기 195
31.11 NSFileHandle 객체 생성하기 195
31.12 NSFileHandle 파일 오프셋과 검색 196
31.13 파일에서 데이터 읽기 197
31.14 파일에 데이터 쓰기 198
31.15 파일 잘라내기 199
Chapter 32 NSPathUtilities로 경로를 만들고 처리하기_ 200 32.1 경로의 구조 200
32.2 임시 디렉터리 찾기 201
32.3 현재 사용자의 홈 디렉터리 얻기 201
32.4 특정 사용자의 홈 디렉터리 얻기 202
32.5 경로에서 파일명 추출하기 202
32.6 파일 확장자 추출하기 203
32.7 경로 표준화하기 203
32.8 경로의 요소들 추출하기 204
Chapter 33 오브젝티브-C에서 객체 복사하기_ 205
33.1 객체와 포인터 205
33.2 <NSCopying> 프로토콜을 이용하여 오브젝티브-C의 객체 복사하기 206
33.3 <NSCopying> 프로토콜과 copyWithZone 메서드 구현하기 207
33.4 깊은 복사 실행하기 209
출판사 제이펍 원출판사 기술평론사(技術評論社) 원서명 プロセッサを支える技術(원서 ISBN 9784774145211) 저자명 안도 히사(Hisa Ando) 역자명 진명조 출판일 2011년 11월 18일 페이지 428쪽 판 형 크라운판 변형(170*225) 반양장(Soft Cover) 정 가 27,000원 ISBN 978-89-94506-24-1 부가기호: 93560 분 야 컴퓨터 및 전기전자공학 / 하드웨어 / 프로세서
프로그래밍 / 소프트웨어 개발 키워드 멀티코어화/64비트 CPU/스레드/파이프라인/RISC/CISC/캐시/슈퍼스칼라/비순차 실행/분기예측/GPGPU/초병렬처리/가상화 기구/저전력
도서 소개 200만 배의 성능 향상은 어떻게 실현되었나?
프로세서 개발경력 40년 저자 직필!
시스템 성능을 최대로 이끌어내는 비법!
아마존 재팬 베스트셀러 ★★★★★
이 책은 프로그램을 직접 작성하고 컴퓨터 시스템을 보다 효율적으로 사용하고 싶어하는 독자를 대상으로 한 프로세서에 관한 해설서다. 프로세서에 탑재되어 있는 고성능화 기술 및 내부구조, 기능을 중심으로 설명하고, 프로그램은 어떻게 작성해야 프로세서의 성능을 끌어낼 수 있을지에 대해서도 설명하고 있다. 또한 프로세서의 설계라고 하면 AND, OR 등의 논리회로를 이용한 논리회로 레벨의 하드웨어 설계를 연상할지 모르지만, 이 책에서는 논리회로보다는 상위레벨인, 프로그래머와의 인터페이스가 되는 「마이크로아키텍처」와 「명령 아키텍처」에 초점을 맞추고 있다.
바야흐로 휴대기기부터 사회기반 시스템에 이르기까지 다양한 컴퓨터의 핵심부에 위치해서 중요한 역할을 다하고 있는 프로세서. 독자 여러분이 다이나믹한 진화를 계속하는 프로세서를 이해하고 한층 더 제대로 사용하는 데 일조할 수 있기를 바라며, 그런 생각을 담아서 집필한 것이 바로 이 책이다.
제1장 • 프로세서와 컴퓨터 시스템 기초
제2장 • 프로세서의 변천
제3장 • 프로그래머를 위한 프로세서 아키텍처
제4장 • 가상화 지원
제5장 • 멀티프로세서의 출현과 보급
제6장 • 프로세서 주변기술
제7장 • GPGPU와 초병렬처리
제8장 • 프로세서는 앞으로 어떻게 변해갈 것인가?
이 책의 대상 독자 - 최신 프로세서의 작동 방식과 고속화 기술에 관심있는 분들
- 컴퓨터를 보다 빠르고 효율적으로 운영하고 프로그래머들
- 컴퓨터 아키텍처의 기초를 배우고 싶은 학생들
이 책은 프로그램을 직접 작성하고 컴퓨터 시스템을 보다 효율적으로 사용하고 싶어하는 독자를 대상으로 한 프로세서에 관한 해설서다. 프로세서에 탑재되어 있는 고성능화 기술 및 내부구조, 기능을 중심으로 설명하고, 프로그램을 어떻게 작성해야 프로세서의 성능을 끌어낼 수 있을지에 대해서도 설명하고 있다. 또한 프로세서의 설계라고 하면 AND, OR 등의 논리회로를 이용한 논리회로 레벨의 하드웨어 설계를 연상할지 모르지만, 이 책에서는 논리회로보다는 상위레벨인, 프로그래머와의 인터페이스가 되는 ‘마이크로아키텍처’와 ‘명령 아키텍처’에 초점을 맞추고 있다.
이책의 구성
이 책에서는 프로그램을 작성하는 독자들을 주요 대상으로 해서 프로세서의 구조와 능숙한 사용법을 알기 쉽게 설명하고 있다. 각 장은 아래와 같은 내용이다.
제1장 프로세서와 컴퓨터 시스템 기초
제1장은 소개에 해당하는 장으로, 프로세서나 이를 사용하는 컴퓨터의 개요 및 용어를 소개하여 프로세서나 컴퓨터 하드웨어 초심자에게도 이후의 내용을 이해할 수 있도록 알기 쉽게 설명하고 있다.
제2장 프로세서의 변천
제2장에서는 계산기가 어떻게 발전해왔는지 그리고 프로세서의 고성능화나 사용 편의성 개선을 위해 어떤 기술이 개발되어 왔는지에 대해 설명한다. 현재 프로세서가 출현하기까지의 과정과 사용되고 있는 기술에 대한 개요를 이해할 수 있도록 하는 것이 목적이다.
제3장 프로그래머를 위한 프로세서 아키텍처
제4장 가상화 지원
제5장 멀티프로세서의 출현과 보급
제3장에서 제5장은 이 책의 중심이 되는 장들이다. 제3장에서는 파이프라인 처리나 캐시, 비순차(Out-of-Order) 처리와 같은 프로세서 고속화 기술이나 메모리 관리, 가상화, 멀티미디어 처리 등의 프로세서의 적용범위를 넓히는 기술에 대해 구체적으로 설명한다. 아울러 프로그램 등의 예를 들어 프로그래머로서 어떻게 사용해야 효율이 높아질 수 있는지에 대해서도 알기 쉽게 설명한다. 또한 제3장에서는 PC나 서버에 널리 사용되고 있는 인텔 프로세서의 구조도 설명하고 있다.
제4장에서는 최근에 클라우드 시스템 등에서 필수 요소인 가상화에 대해 이를 실현하는 메커니즘이나 가상화 시스템을 효율적으로 운용하기 위해 주의할 점에 대해 설명한다.
제5장에서는 역시 최신 트렌드인 멀티스레드와 멀티코어 프로세서에 대해 그 출현배경부터 사용되고 있는 기술을 설명하고 멀티코어 프로세서를 잘 활용하기 위한 주의점을 설명한다.
제6장 프로세서 주변기술
제6장은 프로세서와 함께 컴퓨터 시스템의 중요한 구성요소인 주변기술을 다루고 기억을 담당하는 메모리와 프로세서에서 입출력장치로 연결되는 구조와 동작에 대해 설명한다.
제7장 GPGPU와 초병렬처리
제7장에서는 최근 뛰어난 계산처리 능력으로 주목 받고 있는 GPU(Graphic Processing Unit), GPGPU(General Purpose GPU)에 주목해서 그 구조나 연산 엔진으로서의 사용상 주의점을 설명한다.
제8장 프로세서는 앞으로 어떻게 변해갈 것인가?
마지막 제8장에서는 프로세서가 앞으로 어떻게 발전해나갈 것인지에 초점을 맞춰 기술적인 발전 방향성과 프로세서의 용도별 발전 방향성에 대해 생각해본다.
저자 소개 안도 히사(Hisa Ando)
첨단 프로세서 개발에 40여 년간 종사하고 있다. SPARC 아키텍처 위원회의 위원으로 SPARC V9 아키텍처 개발에 참가하였고, HAL사 부사장 겸 프로세서 개발부문 총괄 매니저로서 SPARC64 프로세서를 개발하였다. 그 후 ㈜후지쯔 컴퓨터 사업부문 지사장 등을 역임하였다. 현재는 테크니컬 라이터로서 프로세서와 슈퍼컴퓨터 관련 보도나 해설을 다양한 매체에 기고하고 있으며, 몇몇 대학에서 컴퓨터 아키텍처 강의를 담당하고 있다. 공학박사 학위를 갖고 있다.
저자 추가 정보: http://www.geocities.jp/andosprocinfo/
역자 소개 진명조
㈜오늘과내일 연구소의 책임연구원을 거쳐 현재는 씨디네트웍스에서 근무하고 있다. 옮긴 책으로는 『대규모 서비스를 지탱하는 기술』(제이펍), 『클라우드의 충격』(제이펍), 『서버/인프라를 지탱하는 기술』(제이펍), 『DEBUG HACKS』(와우북스), 『입문자를 위한 루비』(아이티씨), 『Binary Hacks』(아이티씨), 『C언어로 배우는 알고리즘 입문』(한빛미디어) 등이 있다. IT 산업의 미시적인 영역과 거시적인 영역을 아우르는 통찰력을 갖게 되기를 꿈꾸고 있고, 최근 모바일 생태계를 향해 작은 보폭으로 한걸음씩 내딛고 있다.
차 례 1장 프로세서와 컴퓨터 시스템 기초
1.1 컴퓨터의 구조 3
컴퓨터의 구성요소 ─ 프로세서, 메모리, 입출력장치 3
컴퓨터는 2진법으로 계산한다 5
프로세서 ─ 프로그램을 해석하는 컴퓨터의 두뇌 6
메모리 ─ 컴퓨터의 ‘명령’과 ‘데이터’를 기억한다 14
입출력장치 ─ 컴퓨터의 눈, 귀, 입 20
노스브리지와 사우스브리지 ─ 희미해져 가는 호칭 23
1.2 컴퓨터의 고속화를 지탱하는 반도체 기술 26
무어의 법칙 ─ 보다 많은 트랜지스터. 병렬도를 높이는 방향으로 26
방대한 개발투자가 뒷받침하는 반도체의 미세화 ─ 미세화 추세는 앞으로 당분간은 계속 28
Dennard Scaling ─ 트랜지스터의 성능 향상 28
성능 향상의 세 축 ─ 클럭 향상, 병렬 처리, 기능 확장 29
1.3 컴퓨터와 데이터의 표현 30
바이트, 하프워드, 워드… ─ 비트의 그룹과 용도 30
문자 코드 31
부호 없는 정수와 부호 있는 정수, 1의 보수표현과 2의 보수표현 33
부동소수점 수 ─ IEEE 754 규격 35
빅 엔디언과 리틀 엔디언 37
1.4 프로세서와 명령 39
명령 집합 아키텍처 입문 39
기계어 명령 ─ 프로세서로의 명령 41
어드레스 공간 42
1.5 기계어 명령 프로그램 작성법 45
어셈블러에 의한 프로그래밍 45
컴파일러를 사용하는 고급언어에 의한 프로그래밍 47
인터프리터에 의한 프로그래밍 48
1.6 정리 51
더보기
2장 프로세서의 변천 2.1 컴퓨터 이전의 계산장치 57
주판 ─ 계산을 하기 위한 최초의 도구 57
네이피어의 뼈 ─ 곱셈 보조도구 58
기계식 계산기 ─ 시카드의 계산기, Pascaline 60
배비지의 차분기관 ─ 톱니바퀴를 사용한 슈퍼컴퓨터 61
2.2 초기 전자식 컴퓨터 63
초기 전자식 컴퓨터 ─ ABC와 ENIAC 63
FUJIC ─ 일본 최초의 전자식 컴퓨터 64
2.3 프로세서를 구성하는 소자의 변천 65
주요 부품을 기반으로 한 컴퓨터의 세대 분류 65
제1세대: 진공관 65
제2세대: 트랜지스터 67
제3세대: 집적회로(IC, LSI) 68
제4세대: 대규모 집적회로(VLSI) 69
VLSI 프로세서의 소자 개수, 클럭 주파수의 트렌드 72
2.4 명령 집합 아키텍처의 변천 74
명령 집합 아키텍처 발전의 길 74
컴퓨터의 구성요소 ─ 프로세서, 메모리, 입출력장치 75
가상 메모리 ─ 보다 윤택하게. 메모리를 많이 사용하고 싶다 76
TSS와 메모리 관리 기구의 등장 79
메모리 관리기구, 특권상태 ─ 멀티유저에서는 보안문제를 해결할 필요가 있다 80
ISA 확장 ─ 명령 집합 아키텍처의 확립과 명령 상호성의 실현 82
2.5 마이크로아키텍처의 발전 84
마이크로아키텍처 발전의 길 84
파이프라인 처리 ─ 파이프라인 레지스터를 사용해서 하드웨어를 유효하게 이용한다 86
연산기의 고속화 ─ 정수 연산기, 부동소수점 연산기 87
캐시 ─ ‘메모리 액세스’ 문제에 대처하는 비밀의 상자 88
RISC의 출현 ─ RISC와 CISC 90
슈퍼스칼라 실행 ─ 복수 명령을 1사이클에 실행한다 92
비순차 실행 ─ 명령의 순서를 변경해서 성능을 높인다 94
분기예측과 투기실행 ─ ‘조건분기명령’ 대책 95
멀티코어 ─ 소비전력의 제약이 멀티코어화를 이끌다 96
2.6 용도가 확대되는 프로세서 99
다양한 무대에서 활약하는 프로세서 99
저전력, 높은 신뢰기술, 실시간성 ─ 다양한 요건 100
2.7 정리 101
3장 프로그래머를 위한 프로세서 아키텍처
3.1 마이크로아키텍처를 지탱하는 기술 105
파이프라인 실행의 원리 ─ ‘병렬’로 명령을 처리한다 105
캐시의 원리 ─ 메모리 액세스를 가속한다 118
RISC와 CISC ─ 고정길이 명령과 가변길이 명령 135
연산기의 고속화 ─ 프로세서 내에서 처리가 복잡해서 시간이 걸리는 부분 중 하나 139
슈퍼스칼라 실행의 원리 ─ 1사이클에 복수 명령을 병렬실행 151
비순차 실행의 원리 ─ 데이터 해저드의 영향을 줄인다 153
분기예측의 원리 ─ 제어 해저드에 의한 손실을 줄인다 160
현대의 프로세서는 각종 해저드를 해소, 경감해서 성능을 높이고 있다 167
메모리, I/O와 입출력 인터페이스 168
성능 카운터 ─ 프로파일러, 프로세서 내부의 실행상황에 대한 정보 175
3.2 프로세서의 이용범위를 넓히는 아키텍처 확장 178
멀티프로그래밍과 메모리 관리 구조 178
인터럽트 처리 구조 185
가상화 지원 ─ 메모리 액세스와 메모리 관리 구조 191
멀티미디어, 암호 등에 대한 지원 ─ 대량 데이터를 다루는 계산 처리 194
3.3 x86 네할렘 아키텍처 프로세서 201
x86의 명령체계, 인텔 64 아키텍처에 대해 201
Core i7 프로세서의 구성 210
메모리 관리는 4계층 테이블을 사용 210
새로운 프로세서 인터페이스 QPI 221
3.4 정리 224
4장 가상화 지원 4.1 가상화의 목적, 장/단점 229
가상화의 기초지식(복습) 229
유저 간 분리를 견고하게 실현 ─ 가상화의 장점 1 230
가상화의 목적 230
VMM의 실행 오버헤드 ─ 가상화의 단점, 주의점 233
여러 서버를 모아서 가동률을 개선 ─ 가상화의 장점 2 232
4.2 가상화를 실현하기 위해 236
OS에 독립된 (가상) 하드웨어를 제공하는 VMM 236
4.3 가상화를 지원하는 하드웨어 구조 239
하드웨어 조작명령 검출 239
하드웨어 상태의 회피, 복원 ─ 가상머신의 전환 240
이중 어드레스 변환, TLB 242
I/O 가상화 247
라이브 마이그레이션 252
4.4 정리 254
5장 멀티프로세서의 출현과 보급
5.1 멀티스레드 프로세서 259
스레드, 멀티스레드의 범람(!?) ─ 우선 용어 복습부터 259
멀티스레드의 두 가지 방식 260
VMT의 원리 ─ 단시간에 스레드를 전환한다 262
SMT의 원리 ─ 복수의 스레드의 명령을 섞는다 264
SMT에 필요한 메커니즘 265
멀티스레드의 효과는 얼마나? ─ 윈도 작업관리자에서 보는 예 267
5.2 멀티프로세서 시스템 271
멀티프로세서, 멀티코어란 무엇인가? 271
멀티코어 프로세서의 구조 272
캐시 정합성 제어 ─ 멀티프로세서의 캐시간 정합성 275
멀티소켓 시스템 282
멀티프로세서 시스템의 성능 향상 ─ 문제와 대책 289
공유메모리 시스템과 분산메모리 시스템 296
5.3 정리 300
6장 프로세서 주변기술 6.1 메인 메모리 기술 305
메인 메모리의 역사 복습 305
DRAM의 동작원리 ─ 전하로 정보를 기억한다 306
DRAM 칩과 메모리 DIMM 309
DRAM 칩의 내부구조 ─ 셀 어레이, 행/열 디코더, 센스 앰프, 뱅크 312
프로세서와 DIMM의 연결 314
메모리 시스템의 에러 대책 316
6.2 입출력장치 연결 322
프로세서의 I/O 연결 322
PCI 버스 324
인텔 Core i 시리즈 프로세서의 I/O 구조 330
인텔 PCH의 I/O 제어구조 331
6.3 정리 333
7장 GPGPU와 초병렬처리
7.1 GPGPU의 구조 337
3D 그래픽스와 GPU ─ 대량의 계산이 필요 337
GPU에서 GPGPU로 341
GPU 시스템 340
‘초병렬 SIMD 프로세서’로서의 GPGPU 342
‘초멀티스레드 프로세서’로서의 GPGPU 345
GPGPU의 메모리 계층 346
GPGPU의 멀티스레드는 범용 레지스터를 분할 사용한다 348
CPU와 GPGPU의 주요 차이점 350
7.2 GPGPU 프로그래밍 352
GPGPU 프로그래밍의 현재 352
CUDA의 실행 모델 ─ 스레드 블록, 그리드 352
CUDA에서의 함수 선언, 변수 선언 355
OpenCL 프로그래밍 356
GPGPU의 성능을 끌어내려면 358
7.3 정리 369
8장 프로세서는 앞으로 어떻게 변해갈 것인가?
8.1 소비전력이 모든 것을 지배한다 373
프로세서는 왜 전력을 소비하는가? 373
저전력기술의 발전 377
8.2 고성능, 다기능화 381
반도체의 미세화 기술 381
증가하는 트랜지스터를 잘 사용하려면? 382
일부 트랜지스터를 비용절감을 위해 사용한다 384
일부 블록이 불량인 칩을 유효하게 이용한다 386
8.3 더 신뢰할 수 있고 안전한 프로세서 설계 389
프로세서는 왜 오작동하는가? ─ 고장, 노이즈 389
오작동을 막아서 안전하게 작동하도록 한다 392
8.4 프로세서의 앞으로의 방향성은? 394
다양한 시스템에서 사용되는 프로세서 394
가전용 프로세서 394
자동차용 프로세서 395
PC용 프로세서 395
스마트폰용 프로세서 396
서버용 프로세서 398
8.5 정리 401
구매 감사합니다.
곧 나올 책을 살짝 얘기하자면, iOS 5 개발서적, 그리고 해킹관련한 사이버 스릴러 소설(원작자 마크 러시노비치), 그리고 스프링 인 액션(3판)이 12월과 1월 초에 출간될 것 같습니다. 그 중에도 맘에 들 만한 것들이 없으면 이전 책들에서 골라주세요..ㅎㅎ
과연 어떤 책이 나올까요? 이번에 소개해드릴 책은 SPARC V9 아키텍처 개발에 참가하였고, SPARC64 프로세서를 개발하였으며, ㈜후지쯔 컴퓨터 사업부문 지사장 등을 역임한 안도 히사(hisa Ando)란 분이 쓰신 책입니다. 한 업종에서, 그것도 프로세서 개발 분야에서만 40여년 간 종사해온 분의 책이라, 비록 번역서이긴 하지만 IT 출판사로서의 작은 소임 중 하나를 수행하는 것 같아 흐믓합니다! 더불어 독자 여러분의 평가도 기다려집니다!
일본의 기술평론사에서 출간하는 [~를 지탱하는 기술] 시리즈 중 하나인 이 책은 저희 제이펍의 첫 책이었던 [24시간 365일 서버/인프라를 지탱하는 기술]과 지탱하는 기술 두 번째 책인 [웹 개발자를 위한 대규모 서비스를 지탱하는 기술]과 함께 국내 많은 독자들에게 주목할 만한 또 하나의 책이 되었으면 합니다. 이번 [프로세서를 지탱하는 기술: 끝없이 스피드를 추구하는 세계]는 컴퓨터 시스템을 보다 효율적으로 사용하고 싶어하는 프로그래머들을 대상으로 한 프로세서에 관한 해설서입니다. 프로세서에 탑재되어 있는 고성능화 기술 및 내부구조, 기능을 중심으로 설명하고, 프로그램은 어떻게 작성해야 프로세서의 성능을 끌어낼 수 있을지에 대해서 잘 설명하고 있습니다. 또한 최근 경향에 맞게 클라우드 개발과 관련된 가상화 지원 방법, 멀티프로세서에서의 활용 방법, 모바일용 프로세서 등에 대해서도 자세히 다루고 있습니다.
지금은 인기가 좀 떨어지긴 했지만, 일본에서 출간 당시 많은 화제를 뿌리며 IT서적 베스트셀러로 판매되기도 하였습니다[プロセッサを支える技術]. 아마존 재팬에 올라와 있는 서평들의 주요 내용을 잠깐 살펴보자면 다음과 같습니다.
Intel x86 시리즈를 채용하고 있는 CPU 기술을 이해하여 소프트웨어 개발자가 높은 성능을 얻을 수 있는 방법에 대해 설명하고있는 책!
컴퓨터공학과의 컴퓨터구조 강의의 부교재로 사용되고 있는 책!
무어의 법칙, 암달의 법칙, Denardo 확장 규칙 등에 대한 해설과 프로세서의 미래 동향도 담고 있어서 교양서로서도 최적!
프로세서의 전문가인 저자는 알기 쉬운 용어와 기술에 대한 상세 설명을 하고 있어 프로세서 전반을 알기 쉽게 설명하고있는 것에 매우 감명을 받았습니다!
하드웨어 기술자의 교양 서적, 엔지니어 초보자가 읽기에 딱 좋은 책!
다소 아쉬운 점은 최근 모바일에서 많이 사용되고 있는 AMD 프로세서에 관한 설명이 다른 것들에 비해 부족한 감이 있습니다. 하지만, 프로세서 기술에 대해 관심이 많은 독자나 현재 개발하고 있는 프로그램의 성능을 보다 향상시키고 싶은 개발자라면 한 번 눈여겨 볼 책이 아닐까 싶습니다.
출판사 제이펍 원출판사 Apress 원서명 Pro Android Media: Developing Graphics, Music, Video, and Rich Media Apps for Smartphones and Tablets (원서 ISBN 9781430232674) 저자명 숀 밴 에버리(Shawn Van Every) 역자명 배장열 출판일 2011년 10월 26일 페이지 452쪽 시리즈 I♥Mobile 14 (아이러브모바일 14) 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 27,000원 ISBN 978-89-94506-27-2 부가기호: 13560 분 야 모바일 프로그래밍 / 안드로이드 / 멀티미디어 키워드 이미지 에디팅 / 카메라 애플리케이션 / 그래픽 / 오디오 / 비디오 / 멀티미디어
도서 소개
역동적인 모바일 앱의 완성, 그 시작은 안드로이드 미디어 API!
최신 안드로이드 SDK(2.3.3)에서 테스트 완료!
『프로 안드로이드 미디어』에서는 안드로이드 SDK에 포함된 리치 미디어 기능을 다룬다. 명확하게 핵심을 끄집어내는 예제들로 채워진 이 책으로 미디어의 생성, 재생, 공유가 가능한 대박 안드로이드 애플리케이션을 골머리를 썩지 않고도 만들어낼 수 있다. 안드로이드 기기들은 어느 것 하나 예외 없이 카메라도 됐다가 사진 앨범도 됐다가 자유자재로 변신한다. 물론 캠코더로도, 비디오 플레이어로도, 음악 플레이어로도, 받아쓰기 기계로도 무한 변신하는데, 이런 기능들이 어우러지는 앱을 만드는 것은 어찌 보면 당연하다. 이런 환상적인 가능성이 앱과 융합하면 밋밋한 기능을 뛰어넘어 화려하고 새로운 가능성을 열어줄 것이다.
이 책은 카메라를 포함한 이미지 기능으로 시작하여 오디오 캡처, 처리, 합성을 거쳐 비디오를 마지막으로 다루다 미디어를 공유하기 위한 온라인 서비스에서 막을 내린다. 개발자라면 필요한 기능이 설명된 곳으로 곧장 뛰어들어 그곳에 제시된 예제들을 활용하여 환상적인 기능을 앱에 담아낼 수 있을 것이다. 음파의 시각화에 관심이 있든, 터치스크린 기반 그리기 애플리케이션 제작에 관심이 있든 이 책에서 제시하는 정보 하나하나는 쓸모도 많고, 세련미도 넘치며, 깜짝 놀랍기까지 하다.
모바일 기기용 미디어 애플리케이션의 미래는 지금보다 더 흥미로울 것이다. 『프로 안드로이드 미디어』가 바로 그 미래를 만드는 데 큰 역할을 할 것이다.
대상 독자 초급 및 중급 안드로이드 개발자
책 속으로
『프로 안드로이드 미디어』는 이런 미디어를 어떻게 사용해야 하는지 체계적인 설명과 풍부한 그림을 갖추고 독자들이 쉽게 배울 수 있도록 하고 있습니다. 관련 분야에서 오랫동안 개발을 담당한 저자의 쉽고 깔끔한 설명이 돋보이는 책입니다. 이 책은 카메라(이미지) 다루기, 오디오 다루기, 비디오 다루기 등 크게 세 부분으로 나뉘어져 있는데, 함께 제공되는 소스 코드는 조금만 수정하면 얼마든지 개발 작업에 바로 적용할 수 있을 만큼 구체적입니다. 군더더기를 빼고 미디어에만 집중하고 있는 프로 안드로이드 미디어는 초보 개발자에게도, 경력이 있는 개발자에게도 보석과 같은 책이라고 생각합니다. _ 역자 머리말 중에서
저자 소개 숀 밴 에버리(Shawn Van Every)
숀은 모바일 스트리밍 미디어 컨설팅 회사를 운영하고 있다. 그는 모바일 및 스트리밍 애플리케이션에 초점을 맞추고 고객들이 오디오와 비디오에 관련된 신기술을 잘 활용할 수 있도록 지원하고 있다. 에버리의 고객은 19 Entertainment, MoMA, 디즈니(Disney)를 비롯하여 모건 스탠리(Morgan Stanley), 리만 브라더스(Lehman Brothers), NYU 의대(NYU Medical School) 등 다양한 분야에 걸쳐 있으며, 갓 창업한 회사나 소규모 회사까지 포함하면 셀 수 없이 많은 고객이 그를 찾고 있다.
숀은 NYU에서 ITP(Interactive Telecommunications Program)의 겸임 부교수이기도 하다. 그가 담당하는 과목은 소셜 미디어, 프로그래밍, 모바일 기술, 인터랙티브 텔리포니(interactive telephony) 등이다. 숀은 2008년 탁월한 교수법으로 David Payne Carter 상을 받기도 하였다.
또한 각종 컨퍼런스와 텔리포니 시연회에 과제를 제출하고 발표하는 등 활발히 활동하고 있다. 대표적으로 오라일리(O'Reilly)의 Emerging Telephony, 오라일리의 Emerging Technology, ACM Multimedia, Vloggercon, Strong Angel II 등에서 활동했다. 그는 Open Media Developers Summit, Beyond Broadcast(2006), iPhoneDevCamp NYC의 공동 조직위원이기도 하다.
숀은 NYU에서 Interactive Telecommunications 석사, SUNY 버펄로에서 Media Study 학사 학위를 취득했다.
역자 소개 배장열
현재 교육용 스마트폰 앱 기획, 개발에 몰두하고 있는 옮긴이는 대학에서 기계를, 대학원에서 컴퓨터를 전공했다. 학교를 졸업하고 Software Localization을 몇 년간 했고, 몇 군데 대학에서 시간강사를 했다. 그러다 가르치는 일에 재미가 들려 한동안 강사 일을 했다. 지금은 좋은 책을 소개하는 데 조금이나마 도움이 되고자 번역 일에도 많은 정성을 기울이고 있다. 옮긴 책으로는 『아이폰과 안드로이드 기반의 크로스 플랫폼 앱 개발』(2011년)이 있다.
차 례 CHAPTER 1 :: 안드로이드의 이미지 1
내장 Camera 애플리케이션을 사용하여 이미지 캡처하기 1
Camera 앱에서 데이터 리턴하기 3
큰 이미지 캡처하기 7
큰 이미지 표시하기 8
이미지 저장과 메타데이터 14
이미지의 URI 얻기 14
MediaStore를 이미지 저장용으로 사용하고 메타데이터를 연결할 수 있도록 CameraActivity 업데이트하기 17
MediaStore를 사용하여 이미지 검색하기 23
이미지 뷰어 애플리케이션 만들기 25
내부 메타데이터 29
정리 30
더보기
CHAPTER 2 :: 커스텀 Camera 애플리케이션 빌드하기 33
Camera 클래스 사용하기 34
Camera 권한 34
미리 보기 Surface 34
Camera 클래스 구현하기 37
전부 합치기 50
커스텀 카메라 애플리케이션 확장하기 55
타이머 기반 카메라 앱 빌드하기 55
저속도 촬영 사진 앱 빌드하기 63
정리 66
CHAPTER 3 :: 이미지 에디팅과 이미지 프로세싱 67
내장 갤러리 애플리케이션으로 이미지 선택하기 67
비트맵 위에 비트맵 그리기 74
기본적인 이미지 확대/축소와 회전 77
매트릭스로 들어가다 77
매트릭스 메소드들 82
그리기 이외의 방법 89
이미지 프로세싱 90
ColorMatrix 90
콘트라스트와 밝기 변경하기 93
채도 변경하기 96
이미지 합성하기 96
정리 107
CHAPTER 4 :: 그래픽과 터치 이벤트 109
캔버스 그리기 109
비트맵 생성 110
비트맵 구성 정보 110
캔버스 생성하기 112
Paint로 작업하기 113
모양 그리기 114
텍스트 그리기 120
손가락으로 그리기 127
터치 이벤트 127
이미지 위에 그리기 131
비트맵 기반 캔버스 그림을 저장하기 137
정리 142
CHAPTER 5 :: 안드로이드의 오디오 143
오디오 재생 143
지원되는 오디오 형식 144
인텐트로 내장 오디오 플레이어 사용하기 145
커스텀 오디오 재생 애플리케이션 만들기 149
오디오를 위한 MediaStore 156
정리 169
CHAPTER 6 :: 백그라운드 오디오와 네트워크 오디오 171
백그라운드 오디오 재생 171
서비스 172
로컬 서비스와 MediaPlayer 177
서비스에서 MediaPlayer 컨트롤하기 182
네트워크 오디오 189
HTTP 오디오 재생 190
HTPP를 통해 오디오 스트리밍하기 198
RTSP 오디오 스트리밍 210
정리 210
CHAPTER 7 :: 오디오 캡처 211
인텐트로 오디오 캡처하기 211
커스텀 오디오 캡처 216
MediaRecorder 오디오 소스 217
MediaRecorder 출력 형식 217
MediaRecorder 오디오 인코더 218
MediaRecorder 출력 및 녹음 218
MediaRecorder 상태 머신 219
MediaRecorder 연습 220
MediaRecorder의 다른 메소드들 227
MediaStore에 오디오 집어넣기 235
AudioRecord로 원시 오디오 녹음하기 236
AudioTrack을 사용한 원시 오디오 재생 240
원시 오디오 캡처와 재생 연습 242
정리 250
CHAPTER 8 :: 오디오 합성과 분석 251
디지털 오디오 합성 251
합성된 소리를 재생하기 252
샘플 생성하기 256
오디오 분석 263
소리를 캡처하여 분석하기 263
주파수를 시각화하기 265
정리 272
CHAPTER 9 :: 비디오 273
비디오 재생 273
지원 형식 274
인텐트를 사용하여 비디오 재생하기 275
VideoView를 사용하여 재생하기 277
MediaController로 컨트롤 추가하기 279
MediaPlayer를 사용하여 재생하기 281
정리 296
CHAPTER 10 :: 비디오 고급 297
비디오 검색용 MediaStore 297
MediaStore의 비디오 썸네일 299
MediaStore 비디오 예제 299
네트워크 비디오 308
지원되는 네트워크 비디오 종류 309
네트워크 비디오 재생 312
정리 322
CHAPTER 11 :: 비디오 캡처 323
인텐트를 사용하여 비디오 녹화하기 323
비디오 메타데이터 추가하기 327
커스텀 비디오 캡처 332
MediaRecorder의 비디오 333
커스텀 비디오 캡처 예제 전체 코드 347
정리 354
CHAPTER 12 :: 웹 서비스를 이용한 미디어 소비와 퍼블리싱 355
웹 서비스 356
HTTP 요청 356
JSON 360
제이슨을 사용하여 플리커 이미지 끄집어내기 364
위치 375
제이슨과 위치를 사용하여 플리커에서 이미지 끄집어내기 380
REST 389
데이터를 XML로 표현하기 390
SAX 파싱 391
HTTP 파일 업로드 398
HTTP 요청하기 399
블립TV에 비디오 업로드하기 401
정리 417
APPENDIX :: TIPS 419
TIP 1 안드로이드 SDK 설치 오류 및 AVD 생성 오류 419
TIP 2 에뮬레이터에 파일 넣기 423
가을은 독서의 계절이라고 그 누가 말했나요? 출판 종사자로서 느끼는 독서의 계절은 단연 겨울과 여름 휴가철인 것 같습니다. 봄, 가을은 아마 야외 활동하기 좋은 계절이라 그런지 서점가의 매출이 떨어지는데요.. 아마도 그런 이유로 독서를 권장하기 위해 나온 말이 아닌가 싶습니다!
판매 비수기를 맞이하여 서점가에서는 다양한 이벤트를 진행하고 있는데요. 저희 제이펍도 다음 달 거래처 제작비를 지급하기 위해 눈물을 머금고 이벤트를 같이 진행하고 있습니다. ㅠㅠ 서점과 출판사가 같이 출혈을 감수해야 하는데, 어째 출판사만 감수하는 게 영 찝찝한 갑과 을 신세인 것 같습니다. ^^;
아래 각 서점에서 진행하고 있는 이벤트들을 안내해드리니, 이 기회에 필요했던 책이 있으면 구매 버튼을 과감히 눌러주세요!!
예스24 이벤트 컴퓨터 대표출판사 No.7: 10-20% 할인 및 구매자 중 추첨하여 다양한 선물 증정 이벤트
모바일과 함께 자주 거론되는 키워드는 클라우드입니다. 스마트폰과 테블릿 PC로 대변되는 모바일은 이미 성장기를 지나 성숙기에 접어든 듯해 보입니다. 하지만 클라우드가 우리 귀에 익숙해진 것 불과 1-2년 사이일 겁니다. 향후 10년 이내 모든 컴퓨터 서비스는 클라우드 기반으로 변해갈 것이라는 뉴스도 나오고 있습니다. 이 혁명적 변화의 주도권을 쟁탈하기 위한 거인 기업들의 싸움도 점점 더 치열해져 갑니다. 아마존, 구글, 세일즈포스닷컴, 마이크로소프트 등 글로벌 거인 기업들의 클라우드 행보를 지켜 보는 것도 재미있을 것 같습니다.
오늘 소개해드릴 책은 이 클라우드 개발에 새로 뛰어드는 개발자들을 위한 입문서입니다. (10월 28일 출간예정)
클라우드 기반 애플리케이션 개발: 개념, 패턴, 그리고 프로젝트
엄밀하게 말하면, 입문서가 아닐 수도 있습니다. 클라우드에 대한 기본 개념을 설명한 후에 기존에 사용하던 애플리케이션을 아마존 웹 서비스(AWS)에 적용시키기 위한 다양한 디자인 패턴들에 대해 설명을 하고 있고, 후반부에서는 2개의 프로젝트를 통해 실제 개발 방법을 보여주고 있습니다. 아마존 웹 서비스를 이용하신다면 옆에 두고 짬짬이 참고할 수 있는 책이 아닐까 합니다.
책에 대한 보다 정확한 이해를 위해 머리말에 있는 이 책의 목적 부분을 옮겨봅니다.
이 책의 목적 이 책은 코드를 설명하기 위한 입문서가 아니다. 또한 ‘클라우드에서 어떻게 애플리케이션을 개발해야 한다’라고 정의를 하고 있지도 않다. 이 책은 여러분이 클라우드에서 애플리케이션을 개발할 때 발생 가능한 특수한 상황들에 대한 참고를 목적으로 한다. 사장이나 팀장이 어느 날 “새로운 프로젝트를 클라우드에서 확장 가능하게 개발하라.”라는 지령을 내렸을 때, 여러분은 이 책에서 설명하고 있는 여러 가지 패턴들 중 어떤 것이 개발하려는 서비스에 가장 적합한지 논의해 볼 수 있게 될 것이다. 만약 프로젝트 수행 중 도무지 어떻게 해결해야 할지 모르는 문제에 직면하거나, 좋은 비즈니스 아이디어를 가지고 프로젝트를 시작하긴 하였지만 이를 어떻게 확장해야 하는지에 대한 개념이 부족할 때, 또는 기존의 서비스를 클라우드에 어떻게 확장하여 적용해야 하는지에 대한 의문이 들 때 이 책을 참고하면 된다. 또는 클라우드에서 어떤 형태의 애플리케이션을 사용할 수 있는지 궁금한 경우에도 참고할 수 있다.
이번 책의 번역은 지난 5월 넥스컴2011]구름속에 숨은 클라우드, 실체를 보다에서 '클라우드 자동화'란 주제로 발표하신 스팍 앤 어소시에이트(SPARK & ASSOCIATES)의 정윤진 매니저 님이 맡아주셨는데, 이 책을 읽는 독자들께서 아마 짜증(?)을 낼 정도의 어마어마한 역주를 달아주셨습니다. 관련 용어나 기술 혹은 상황을 알고 계신 분들에게는 다소 거스릴 수도 있지만, 이 책을 제대로 이해하고 싶은 개발자들에게는 많은 도움이 되리라 봅니다.
이 책은 0장 소개(아래에 PDF로 샘플 제공)에 이어 크게 세 파트로 나눠져 있습니다. 간략하게 각 장별 내용은 아래와 같습니다.
파트 I, “개념”
클라우드에서 어떻게 애플리케이션을 개발해야 하는지에 대한 개념을 설명한다. 이 파트의 각 장은 순서대로 읽기 편하도록 구성하였으며, 중요한 개념을 설명하는 포인트에서는 필요한 경우 다른 장의 내용 참조가 쉽도록 하였다.
더보기
1장, “클라우드 서비스의 기본” - 클라우드 기반의 솔루션에 대한 기본 개념을 소개한다. 이 책을 읽는 독자라면 반드시 읽어야 하는 부분이다. 2장, “SaaS 만들기” - 소프트웨어를 서비스로 제공하기 위해 필요한 기본 개념을 소개한다. 3장, “클라우드 서비스 공급자” - 각각의 클라우드 서비스 공급자가 제안하는 서비스 모델에 대해 설명한다.
파트 II, “패턴”
구조적인 문제의 해결을 위한 디자인 패턴들을 소개하고 참고하도록 하는 형태로 구성되었다.
4장, “이미지 디자인” - 애플리케이션이 동작하기 위한 컴퓨트 클라우드에서의 기본 이미지 구성 패턴을 소개한다. 5장, “아키텍처 디자인” - 클라우드 서비스 공급자가 제공하는 서비스를 사용하지 않고 외부 시스템들과 상호작용할 때의 패턴들을 소개한다. 6장, “데이터의 처리” - 데이터를 처리하기 위한 코드 각 부분의 실행에 관한 패턴들을 소개한다. 7장, “클러스터링” - 다수의 서버를 사용한 분산에 관련된 기본적인 프레임워크 디자인 패턴에 대해 소개한다.
파트 III, “프로젝트”
세 번째 파트는 실제 필드에서 사용하고 있는 애플리케이션 패턴의 샘플을 소개한다. 다른 많은 개발서적들과 같이 “Hello World” 애플리케이션의 가이드와 비슷하지만, 다음의 두 가지가 다르다.
8장, “간단한 웹블로그” - 웹블로그 서비스의 구현에 기존의 프레임워크를 사용하지 않고 개발하는 방법을 소개한다. 9장, “Marajo를 사용한 웹블로그” - 웹블로그 서비스의 구현에 Marajo라는 클라우드 기반 웹 프레임워크를 사용하여 개발하는 방법을 소개한다.
출판사 제이펍 저자명 장영남 출판일 2011년 10월 17일 페이지 224쪽 시리즈I♥Mobile 13 (아이러브모바일 13) 판 형 크라운판 변형(170*225) 반양장(Soft Cover) 정 가 20,000원 ISBN 978-89-94506-26-5 부가기호: 13560 분 야 모바일 프로그래밍 / 안드로이드 키워드 Android / 모바일 앱 / 지하철도착정보 / 광고플랫폼 / 안드로이드사이드
도서 소개 우리나라 최초의 안드로이드 지하철 애플리케이션인 “지하철정보” 앱 개발자가 직접 전수하는 지하철정보 프로그래밍!
하나의 앱을 기획부터 완성까지 따라하면서 익히는 실전 안드로이드 개발 기술!
어떤 일이든지 첫 걸음을 떼는 것이 가장 중요하다. 첫 걸음을 내디뎠다면 당연히 두 번째 걸음도 걸을 수 있기 때문이다. 애플리케이션 개발도 마찬가지다. 하나의 앱을 개발하는 일은 너무나 어려운 일이다. 하지만 첫 애플리케이션을 완성했다면 그 경험과 자신감으로 두 번째, 세 번째의 앱도 완성할 수 있게 되는 것이다. 이 책은 저자가 애플리케이션 개발을 시작하면서부터 마켓에 런칭하기까지의 개발의 전 과정을 자세하게 풀어놓았다. 따라서 누구든지 책에 있는 내용을 따라하기만 하면 간단하게나마 지하철정보 애플리케이션을 개발할 수 있으며, 이를 토대로 안드로이드 개발에 자신감을 얻을 수 있을 것이다.
이 책에서 배우게 될 핵심 내용은 다음과 같다.
•앱 개발하는 순서를 알 수 있다.
•애플리케이션 개발을 기획할 수 있다.
•정규식과 파서를 이용하여 HTML에서 원하는 정보를 수집할 수 있다.
•SQLite3 데이터베이스를 만들 수 있다.
•SQLite3 데이터베이스를 애플리케이션으로 배포할 수 있다.
•광고플랫폼에 대해 알 수 있다.
•개발한 애플리케이션에 광고플랫폼을 적용할 수 있다.
•앱을 개발하면서 익힌 기술로 다양한 새로운 앱을 만들 수 있다.
대상 독자
이 책은 초급자부터 중급자까지 볼 수 있도록 집필하였다. 이 책은 전반적인 개발방법과 기술을 설명하는 개발서적이 아니라 하나의 프로젝트를 시작하여 완전한 애플리케이션을 개발하는 방법을 제공하는 책이기 때문에 다양한 기술적 배경을 설명하지 않고 지하철정보 애플리케이션을 개발하는 데 필요한 기술만을 선별하여 구성하였다.
선수 지식
이 책으로 학습하기 위한 기본 선수 지식으로는 자바 기본 문법이 있다. 그렇다고 자바 책을 미리 보고 이 책을 볼 필요는 없다. 이 책을 학습하면서 이해가 안 되는 자바 문법에 대해서는 책을 통해 살펴보면 될 것이다.
저자 소개 장영남 브이트론주식회사에 재직 중이며, “지하철정보” 앱을 개발하게 되면서 안드로이드와 인연을 맺게 되었다. 국내 대표 안드로이드 커뮤니티인 안드로이드사이드에서 ‘Zerosouth’라는 닉네임으로 활동하고 있으며, 책을 집필하고 번역하는 모임인 북그래퍼의 회원이기도 하다. 제5회 안드로이드사이드 세미나에서 발표를 하였고, 공개소프트웨어협회에서 주관하는 공개SW개발자대회의 멘토로 참여 중이다. 개발한 대표 애플리케이션으로는 “지하철정보”, “택배조회”가 있다.
차 례 1장 지하철정보 애플리케이션의 기획 및 설계
1.1 기획하기
1.2 제공할 정보 확인하기
1.3 정보수집
1.4 레이아웃 설계
2장 Java Project로 데이터베이스 구성하기 2.1 Java Application 프로젝트 생성하기
2.2 SQLite3 DB 테이블 만들기
2.3 역 리스트 만들기
2.4 네이버 역 조회 화면에서 CID, LID, SID 읽기
2.5 이전역, 다음역 조회하기
2.6 역정보(주소, 전화번호) 수집하기
2.7 출구정보 수집하기
2.8 첫차/막차 시간 수집하기
2.9 모바일서울 URL 수집하기
3장 지하철정보 안드로이드 애플리케이션 만들기
3.1 안드로이드 프로젝트 만들기
3.2 레이아웃 구현
3.3 DB 파일 Assets에서 외장메모리로 복사하기
3.4 AutoCompleteTextView 구현하기
3.5 실시간정보 받아오기
3.6 메인화면 구현하기
3.7 탭 구성하기
3.8 도착정보 데이터 보여주기
3.9 출구정보 데이터 보여주기
3.10 역정보 데이터 보여주기
안녕하세요?
어느 정도라고 정확하게는 말씀을 드릴 수는 없지만, 자바 언어에 대해 알고 있고, 안드로이드 기본서 1-2권 정도 독파한 수준이라면 충분히 따라하실 수 있을 것 같습니다!
중간에 모르시는 부분들은 저자 Q&A 게시판을 통해 해결해나가시면 되고요!
서점에서 한 번 살펴보시기를 권해 드립니다. ^^
이번에 소개할 책은 아이러브모바일 시리즈인 [프로 안드로이드 미디어: 그래픽, 오디오, 비디오를 비롯한 리치 미디어 앱 개발하기]란 책입니다. 현재 국내에 출간된 안드로이드 관련 서적만 곧 100여 종에 이를 텐데, 중급 개발자들을 위한 서적들은 아직 많이 부족한 것 같습니다. 아무래도 입문서 서적들이 시장이 넓다 보니 대부분의 출판사들이 거기에 집중한 이유일 듯싶습니다. 제이펍에서는 독자 규모가 다소 적더라도 국내 개발자들이 필요하다고 판단되는 분야라면 꾸준히 출간할 계획을 갖고 있습니다. 국내에 소개하고 싶은 원서나 직접 써보고 싶은 분야가 있으면 언제든지 연락주세요. 적!극! 검토하겠습니다!
이 책은 제목에서도 알 수 있듯이, 안드로이드 앱 개발을 하면서 필연적으로 사용할 수밖에 없는 그래픽, 오디오, 비디오 기능들을 다루고 있습니다. Camera 애플리케이션을 이용하여 이미지를 캡처하는 방법, Camera 애플리케이션 빌드하는 방법, 만들어진 이미지를 편집하고 프로세싱하는 방법, 그리고 손으로 그리기와 같은 터치 이벤트들을 포함한, 그 어떤 책에서도 볼 수 없었던 그래픽 기능들을 자세히 다루고 있습니다. 말씀드린 것처럼 오디와 비디오 기능들에 대해서도 관련 분야에서 오랫동안 개발을 담당한 저자의 쉽고 깔끔한 설명이 돋보이는 책입니다.
이번 책의 번역도 [아이폰과 안드로이드 개발을 위한 크로스 플랫폼 앱 개발]을 번역하신 배장열 님께서 맡아주셨습니다. 매끄러운 번역이라는 평판을 받았던 지난 번 책처럼 이번 책도 군더더기 없는 깔끔하고 이해하기 쉽게 번역을 해주셨습니다. 그리고 국내 독자들을 위해 "안드로이드 SDK 설치 오류 및 AVD 생성 오류"와 "에뮬레이터에 파일 넣기"를 새로 작성하셔서 책 뒤에 부록으로 실었습니다.
안드로이드 SDK 1.6 이상이면 이 책으로 학습하는 데 문제가 없을 것입니다. 번역을 하면서 최신 버전인 2.3.3에서 모두 테스트를 마쳤고, 이후 발표되는 아이스크림 샌드위치(4.0) 버전에서도 별 문제가 없으리라 봅니다. 혹시라도 문제가 생기는 부분이 있다면 역자와 협의하여 제이펍의 블로그에 그 해결 방법을 올려드리도록 하겠습니다.
이번 달 안으로 시내 주요 서점에서 만나실 수 있으며, 시내 서점에서보다 먼저 받아보고 싶으신 분은 아래 인터넷서점에서 예약하시면 됩니다. 역자 머리말의 일부를 옮겨 드리며, 출간 후 다시 자세한 내용으로 포스팅해드리도록 하겠습니다.
『프로 안드로이드 미디어』는 이런 미디어를 어떻게 사용해야 하는지 체계적인 설명과 풍부한 그림을 갖추고 독자들이 쉽게 배울 수 있도록 하고 있습니다. 관련 분야에서 오랫동안 개발을 담당한 저자의 쉽고 깔끔한 설명이 돋보이는 책입니다. 이 책은 카메라(이미지) 다루기, 오디오 다루기, 비디오 다루기 등 크게 세 부분으로 나뉘어져 있는데, 함께 제공되는 소스 코드는 조금만 수정하면 얼마든지 개발 작업에 바로 적용할 수 있을 만큼 구체적입니다. 군더더기를 빼고 미디어에만 집중하고 있는 프로 안드로이드 미디어는 초보 개발자에게도, 경력이 있는 개발자에게도 보석과 같은 책이라고 생각합니다. _ 역자 머리말 중에서
안드로이드사이드와 함께 개발하고 있는 실전앱프로젝트 시리즈 그 두 번째로, 이번에는 지하철 어플 개발 노하우를 공개합니다.
실전앱프로젝트 첫 번째 책인 [실전 앱 프로젝트 안드로이드 게임 개발편]은 안드로이드 게임 개발 중급자들에게 어필하며 많은 독자분들로부터 사랑을 받았었는데요, 이번에는 Zerosouth란 필명으로 안드로이사이드에서 운영진으로 활동하고 계신 장영남 님의 책입니다. 국내 최초 안드로이드용 지하철도착정보 앱을 개발한 분이시기도 하죠.
지금까지 누적 다운로드 수가 160만 회를 넘어서는 국내 대표 무료 앱 중 하나입니다. 그 개발 노하우를 이번에 책으로 엮었습니다. 다만, 현재 안드로이드 마켓에서 사용할 수 있는 앱과 동일하지는 않습니다. 책이라는 지면 한계상 이번 책에는 Mini 버전으로 설명하고 있지만, 실제 앱의 핵심 부분을 그대로 구현할 수 있게 구성하였습니다.
아이디어에서 시작해 기획서는 어떻게 만들고, 개발 준비는 어떤 것들이 필요한지, 그리고 실제 개발 전 과정을 코드와 스크린샷을 통해 이해하기 쉽게 설명하고 있습니다. 그리고 마지막으로 개발한 앱을 갖고 어떻게 수익을 거둬야 할지에 대한 고민과 그에 대한 방법으로 국내에서 사용할 수 있는 광고플랫폼에 대해 자세하게 다루고 있습니다. 대표 광고 플랫폼에 대한 사용방법과 수익비율, 정산 등에 대한 안내는 국내 관련 서적에서 처음 소개하는 내용이라 필요한 분들이 많으리라 생각됩니다.
지하철 도착정보(혹은 지하철정보) 앱 이외에도 저자이신 장영남 님이 개발하여 공개하신 앱은 택배조회, 위조지폐조회, 카울리수익금조회 등이 있기도 합니다.
안드로이드보이군이 테블릿PC양과 함께 밤 지하철을 타고 어디론가 가는 표지 디자인입니다. 그들은 어디로 갈까요? ^^
책은 10월 14일에 출간될 것 같습니다. 미리 구매하실 분들은 아래 인터넷서점들을 이용해주세요! 먼저 살펴볼 수 있는 샘플 PDF는 다음 주초에 올려놓도록 하겠습니다!
이번에 새로 나오는 신간도 살짝 외도(?)를 한 책인데요, 뭐 따져 보면 외도라고 얘기할 것까지는 아닌 것 같습니다.
마케팅 서적이긴 하지만, 프로그래밍 기술과 인문학/사회학이 결합하여 만든 SNS, 즉 소셜 네트워크를 기업이나 개인이 어떻게 활용할 것인가를 다룬 책이니까요. 제이펍의 모토인 0과 1이 꿈꾸는 세상과 다른 세상은 아니겠죠? ^^
이전에 저희 출판사에서 출간한 [33M 소셜 네트워크 성공 스토리]와 유사한 서적이지만, 이번 책은 전 세계인들이 가장 많이 사용하는 소셜 미디어인 트위터, 페이스북, 링크드인에 대한 간단한 사용법과 이들에 대한 활용, 그리고 임팩트가 강한 동영상을 소셜 미디어에 활용할 수 있는 방법들을 소개하고 있습니다.
원제는 [The Zen of Social Media Marketing]입니다. 비즈니스위크가 선정한 북미 혁신 기업가 25인에 선정된 저자가 이 책을 통해 보여주는 전략은 제목에서 말하는 것처럼 젠(열반)에 가깝습니다. 저자 1인 기업으로 시작한 회사가 현재는 세계적인 그룹의 소셜 미디어 마케팅 전략을 기획하고 진행하는 경지에 이른 것도 어쩌면 젠이라고 불러도 손색 없을 것 같습니다. 세계 유수의 기업들 외에도 규모에 상관 없이 수많은 회사들의 소셜 미디어 마케팅을 도와주고 있는 저자는 그 노하우를 그녀의 첫 책을 통해 풀어 놓았고, 이 책은 미국에서 출간 당시 잭팟을 터뜨렸습니다. 출간 1년 반이 지난 지금도 인터넷 마케팅 분야에서 꾸준히 상위권에 랭크되어 있습니다.
원서는 Zen 느낌이 물씬 풍기는 표지입니다. 저자의 간결하고 명쾌한 강의 외에 소셜 미디어를 잘 활용하고 있는 기업이나 단체 20여 곳에 근무하는 실무자들의 사례들도 들어 있어 이해가 더 빨리 될 것이라 생각합니다.
아래는 책 뒷표지에 소개되어 있는 내용인데, 이 책이 담긴 내용을 가장 잘 설명해주고 있어 옮겨와 봅니다.
• 소셜 미디어가 효과 있는 이유와 방법, 그리고 소셜 미디어를 이용해서 당신의 웹사이트로 트래픽을 유입하는 방법
• 트위터, 페이스북, 링크드인 활용과 효과적인 웹 동영상에 대한 단계별 안내
• 선구적인 온라인 마케터와 혁신기업가 20여 명의 핵심 노하우
• 당신의 시간은 줄여주고 효과는 높여주는 다양한 조언, 그리고 비즈니스에서 성공적으로 입증한 샤마의 전략들
아래는 본문의 1-2장 PDF입니다. 300페이지가 채 안 되는 본문의 6/1에 해당하는 48페이지나 됩니다. ^^* 서점에서 살펴볼 시간이 없으신 분들은 아래 내용을 먼저 살펴 보시고 구매에 참고하시기 바랍니다.
안녕하세요?
이번에는 빠른가요? 저희는 오히려 좀 늦어서 출간을 포기할까도 했었는데.. 그래서 고민 끝에 최신 내용으로 수정을 한 후에야 출간을 하게 되었답니다.
아무튼 마케팅 종사자나 관심 있는 분들에게 좋은 책으로 기억되었으면 좋겠습니다.
응원 항상 감사드립니다!!!
얼마 전에 저희 제이펍에서 펴낸 [웹으로 배운다]에 소개된 오픈코스웨어와 관련된 주요 기관과 회사, 단체, 대학 등의 사이트 주소를 공개합니다. 오픈코스웨어로 배움을 확대해나가고자 하는 분들에게 작은 도움이 되기를 바라면서 올려드립니다.
그리고 바로 아래는 책에 소개된 내용 외에 저희 출판사에서 따로 정리한 국내외 주요 OCW 사이트들입니다. 이 사이트들은 신문 기사나 블로그 등에서 발췌한 것들임을 밝힙니다.
혹시 잘못된 정보나 링크가 깨져 새로 등록할 정보들이 있으며 댓글로 안내해주세요. 확인 후 즉시 반영하도록 하겠습니다!
========================== 국내 주요 오픈코스웨어 사이트
========================== • KOCW(Korea Open CourseWare):www.kocw.net
우리나라의 한국교육학술정보원에서 국내 OCW를 총괄하는 대표 사이트
• 펭귄스텝: http://www.penguinstep.net/
숙명여대 김형률 교수가 운영. 미국 아이비리그 대학 강의, 세계 각국의 주요 뉴스, 외국인을 위한 영어공부 동영상, 유명인의 특강과 인터뷰까지 다양한 동영상으로 채워져 있다.
• 한국오픈코스웨어콘소시엄(KOCWC): www.kocwc.org
고려대, 부산대, 서울산업대, 인하대, 한동대 등 국내 17개 대학 참여.
• 숙명여자대학교 스노우:www.snow.or.kr
해외 대학을 비롯해 TED 강의, 국내 강의까지 아우른다.
출판사 제이펍 원출판사 筑摩書房 원서명 ウェブで学ぶ(원서 ISBN 9784480065674) 저자명 우메다 모치오(梅田望夫), 이이요시 토오루(飯吉 透) 역자명 김주란 출판일 2011년 7월 18일 페이지 236쪽 판 형 신국판 변형(152*215) 반양장(Soft Cover) 정 가 15,000원 ISBN 978-89-94506-21-0 부가기호: 03370 키워드 OCW / 오픈코스웨어 / OER / 오픈에듀케이션 / 전자책 / 웹 분 야 교양일반 / 교육 / 인터넷 비즈니스 / 전자책
도서 소개
하버드대 교수의 명강의가, 스티브 잡스의 명연설이,
알랭 드 보통의 명강연이 무료로 펼쳐지다!
아이비리그 재학생이 되는 가장 빠른 방법!
2010년 최고의 베스트셀러 『정의란 무엇인가』의 저자 마이클 샌델(Michael J. Sandel) 교수, 그의 하버드대 수업 ‘정의론’을 인터넷을 통해 무료로 볼 수 있다. OCW에서뿐만 아니라 숙명여대가 제공하는 강의공개 사이트인 SNOW에서는 한글 자막도 제공하고 있다.
록스타처럼 교단 위를 종횡무진하며 “봤지? 이것이 물리다!”라고 외치는 MIT의 월터 르윈(Walter Lewin) 교수, 그의 ‘물리학 개론’ 강의 비디오 접속 횟수는 수십만 회를 기록했고, 아이튠즈 유(iTunes U)에서는 한때 다운로드 순위 정상을 차지했다.
월터 르윈 교수의 물리학 강의의 한 장면
47세의 젊은 나이에 췌장암으로 사망한 미국 카네기멜론 대학 교수였던 랜디 포시(Randolph Frederick Pausch)의 이야기도 유명하다. 사망 10개월 전, 이미 죽음을 각오하고 있던 그는 ‘마지막 강의’에서 컴퓨터 과학자로서 자신이 걸어온 길과 어린 시절의 꿈을 자신의 인생에서 어떻게 실현시켜 왔는지에 대해서 이야기했다. 전 세계 수백만 명이 인터넷을 통해 그 강의를 통해 진한 감동을 받았다.
이 외에도 미국 아이비리그의 대학을 비롯한 전 세계 유명 대학들의 강의, 스티브 잡스나 오프라 윈프리의 특강, 도정일 경희대 명예교수와 소설가 김훈, 영화감독 이명세 등 국내외 유명인사들의 강의 또한 인터넷 연결이 가능한 곳이라면 언제, 어디서나 무료로 볼 수 있다.
이는 미국을 중심으로 전 세계로 확산되고 있는 교육자료공개(OCW, 오픈코스웨어) 운동으로 인해 가능해졌다.
이 책은 일본의 대표 IT 칼럼니스트인 우메다 모치오와 미국에서 교육 전문가로 활동하고 있는 일본인 이이요시 토오루가 웹의 미래와 교육을 대담 형식을 빌려 고찰하고 있다. 우메다 모치오는 그의 베스트셀러 『웹 진화론』(재인)에서 웹을 기반으로 누구나 정보를 생산, 가공, 유통할 수 있는 현재의 모습을 정확하게 예측한 인물이다. 이이요시 토오루는 가장 먼저 OCW 운동을 시작한 MIT에서 교육 이노베이션 전문가로 활동하고 있다.
먼저 우메다 모치오가 웹의 발전 및 진화가 인생을 어떻게 변화시키는지, 우리는 웹을 통해 무엇을 할 수 있는지, 글로벌 웹은 어디로 가고 있는지에 대해 전문가적인 견해를 보여준다. 뒤이어 오픈 에듀케이션의 탄생 배경과 현재의 모습, 미국에서의 오픈 에듀케이션의 실제 사례들을 보여주는 건 이이요시 토오루가 담당하고 있다. 그리고서 이들의 대담을 통해 오픈 에듀케이션의 진화 과정, 교육 시스템이 변화할 수밖에 없는 이유, 전 세계에서 나타나고 있는 오픈 에듀케이션의 모습, 그리고 마지막으로 왜 오픈 에듀케이션을 도입할 수밖에 없는지 그 당위성과 오픈 에듀케이션의 미래를 실제 사례와 통계들을 통해 전달하고 있다.
이 책의 독자 대상
일선 교육기관의 미래를 설계하는 교육 행정가, 교육의 현장에서 고민하는 교사와 교수, 보다 수준 높은 교육을 받고 싶어 하는 대학생, 새로운 정보와 무료 교육의 기회를 찾고 있는 일반인들에게 권하고 싶은 책이다.
추천사
참여•공유•개방•협력으로 표현되는 웹2.0의 사상은 우리 사회 모든 분야에 보이지 않는 혁명을 가져오고 있다. 이와 같은 변화는 디지털 세대가 주류인 교육계에서는 더욱 심하다. 위키를 중심으로 집단지성이 출현하고, 탑다운 방식의 전통적인 교수․학습법이 변화하고, MIT의 OCW를 기폭제로 OER 운동이 확산되면서 캠퍼스의 벽은 무너지고, 교육의 사이버화 및 글로벌화가 이루어지고 있다. 기술 혁신의 빠른 변화로 교육의 앞날을 예측하기 어려운 이즈음에 『웹으로 배운다』는 우리 대학의 미래 모습을 짐작하고 대비할 수 있는 아주 다양한 내용들을 담고 있다. 책을 읽는 내내 계속 고개를 끄덕이게 하는 힘을 갖고 있다.
조순영 _ 한국교육학술정보원 본부장, 문학박사
21세기 들어 오픈(Open) 패러다임은 그 누구도 간과할 수 없는 새로운 가치로 인지되고 있다. 이 책은 오픈 패러다임 중에서도 오픈 에듀케이션에 대한 내용을 담고 있으며, 두 저자의 경험을 체계화하여 오픈 에듀케이션의 진화와 발전방향, 그리고 미래에 대해 기술하고 있다. 다수의 거대 글로벌 기업들이 왜 오픈 에듀케이션에 막대한 후원을 하고 있을까? 미래세대의 교육과 오픈 사상에 관심이 있는 분들이라면 반드시 한 번은 탐독해야 할 도서로 강력히 추천한다.
김태용 _ 한국리눅스유저그룹(http://www.lug.or.kr) 회장
웹은 기존의 어떤 통신 수단보다 짧은 기간에 폭발적으로 성장하고 있다. 웹의 발전에 따라 정보의 생산 주체 또한 기하급수적으로 증가하고 있으며, 이에 따라 정보 제공의 흐름이 일부에 의한 일방적 전달에서 정보 생산 주체 간의 공유라는 개념으로 변화하고 있다. 과거에는 인생의 나침반이자 조력자가 아날로그적인 인쇄 매체와 사람이었다면, 이제는 웹이 강력한 가르침의 도구이자 멘토가 되고 있다. 지금 이 책을 손에 들었다면, 여러분은 지식 전달 방식의 혁명에서 눈을 뗄 수 없을 것이다. 내 심장을 다시 뛰게 한 이 변화의 움직임이 여러분에게도 새로운 배움의 출발선이 될 것임을 자신한다.
정관진 _ 안철수연구소 책임연구원, 패킷인사이드(PacketInside.com) 블로그 운영자
저자 소개
우메다 모치오 _ 梅田望夫
일본의 대표 IT 칼럼니스트이자 블로그 운영자, 그리고 베스트셀러 작가로서 젊은 세대로부터 큰 지지를 얻고 있다. 1960년생으로 게이오 대학 공학부를 졸업하고 도쿄 대학교 대학원 정보과학과 석사과정을 수료하였다. 1994년부터 미국 실리콘밸리에 거주하고 있으며, 1997년에 컨설팅회사인 ‘뮤즈 어소시에이츠’를 창업하였다. 버블 붕괴로 실리콘밸리 최악의 해이던 2002년에는 ‘Japan Technology Professionals Association’이라는 비영리기구를 발족시켜 일본의 젊은이 1만 명을 실리콘밸리에 이주시키는 프로젝트를 진행하였다. 저서로는 『웹 진화론』(재인), 『웹 시대를 가다』(치쿠마신서), 『웹 시대 5가지 정리』(문예춘추) 『실리콘밸리 정신』(치쿠마문고), 『아이패드(iPad)가 오면 한 번 더 웹 이야기를 합시다』(산케이 신문 출판) 등이 있다.
이이요시 토오루 _ 飯吉 透
매사추세츠 공과대학교(MIT) 교육 이노베이션 테크놀로지국의 선임 전략가. 1964년 도쿄 출생으로 국제 기독교대학교, 동 대학원 교육학 연구과를 거쳐 플로리다 주립대학 대학원에서 박사학위(교수 시스템학)를 받았다. 카네기재단 지식미디어 연구소 소장, 도쿄대학 대학원 정보학환(情報學環) 객원교수, 추부대학(中部大學) 고등학 연구소 객원교수, 호쿠리쿠(北陸) 첨단과학기술 대학원대학 객원교수 등을 역임했다. 주요 저서로는 『오프닝 업 에듀케이션(Opening Up Education)』(MIT Press)가 있다.
역자 소개 김주란
대학에서 일본어를 전공했다. 일본에서 1년간 어학연수를 마치고 돌아온 후 IT 업체에서 기술번역을 해왔으며, 바른번역 아카데미를 수료하고 출판 전문 번역가의 길을 걷고 있다. 글에 진정성을 담아 독자와 소통하는 번역가가 되고자 한다.
차 례
1장 웹 진화가 인생을 넓힌다 _ 1
인생을 개척하기 위한 강력한 도구 _ 2
‘지식의 보고’ 웹 _ 6
‘스승’이나 ‘동료’와의 만남 _ 9
직업을 얻고 생계를 꾸리는 과정 _ 11
‘경제 게임’과 ‘지식•정보 게임’ _ 14
구글과 중국 _ 17
세계화에 대한 강렬한 의지 _ 21
글로벌 웹을 이끄는 세 가지 힘 _ 24
글로벌 웹과 오픈 에듀케이션 _ 27
2장 오픈 에듀케이션의 현재 _ 29
웹으로 다시 태어난 오픈 에듀케이션 _ 30
오픈 테크놀로지, 오픈 콘텐츠, 오픈 놀리지 _ 33
로컬에서 글로벌로 _ 36
오픈 에듀케이션이 잇달아 만들어 내는 교육계의 ‘웹 스타들’ _ 38
카네기멜론 대학의 도전 _ 41
초•중등교육에 침투 _ 45
‘격차 극복 장치’, 오픈 에듀케이션 _ 47
오바마 대통령의 오픈 에듀케이션 선언 _ 49
‘오픈 텍스트북’에 의한 교과서의 무료화•저가화 _ 51
‘더욱 개방된 21세기 대학’의 새로운 모습 _ 53
견인차 역할을 하는 민간재단의 존재와 사회공헌 정신 _ 56
교육의 개화•심화•진화 _ 59
Column 메타 유니버시티와 클라우드 칼리지 _ 62
3장 진화와 발전의 원동력 _ 63
발상의 전환에서 시작된 MIT 오픈코스웨어 _ 64
상부상조 정신, 프론티어 정신, 장난기, 종교적 신념 _ 70
캘리포니아 이데올로기와 미국 동부 주류파 _ 74
오픈 에듀케이션은 독선적? _ 78
유럽의 오픈 에듀케이션 _ 80
수업료가 무료인 글로벌 인터넷 대학 _ 83
개인의 ‘광기’가 돌파구를 만든다 _ 89
성장단계 가설 _ 92
오바마 정부와 오픈 에듀케이션 _ 98
영리형 온라인 대학 _ 101
국내 격차 해소, 글로벌 격차 해소 _ 104
오픈 리서치·오픈 사이언스 _ 113
진화하는 교과서, 오픈 텍스트북 _ 116
초•중등교육에서도 시작된 오픈 텍스트화 _ 121
교과서 출판사업의 새로운 움직임 _ 123
Column 크리에이티브 코먼스와 오픈 에듀케이션 _ 127
4장 학습과 교육을 분석한다 _ 129
오픈코스웨어는 누가, 어떻게 사용하고 있는가? _ 130
미국의 대학과 울타리 시스템 _ 133
독학자는 어떻게 배우고 있는가? _ 137
Column 오픈코스웨어(OCW)로 배운 츠치야 마사루 씨 _ 140
교육과 ‘강제 시스템’ _ 143
웹과 능동성 _ 147
‘테크놀로지’와 ‘놀리지’가 왜 필요한가? _ 152
스승이나 동료는 어떻게 만날 수 있는가? _ 157
학습 커뮤니티 _ 160
배운 것을 직업으로 _ 165
전문적인 지식을 살려 사회에 공헌한다 _ 168
사회적 안전망으로서의 오픈 에듀케이션 _ 171
Column 아르헨티나의 지방에서 세계로: 산루이스•디지털 구상 _ 173
5장 오픈 에듀케이션의 미래 _ 175
나머지 모든 사람을 위한 교육? 176
영어권과 비영어권의 차이는 있는가? 181
롱테일화하는 교육 184
일본에서 움트는 오픈 에듀케이션 187
영어로 배우기 위해 영어를 배운다 192
따라잡기 식의 학습을 넘어 199
글로벌 플랫폼 진화의 강력한 영향 202
수혜자로서의 디지털 원주민 206
예측 불가능한 미래를 살기 위해 209
출판사 제이펍 원출판사 Apress 원서명 Cracking iPhone and Android Native Development: Cross-Platform Mobile Apps Without the Kludge (원서 ISBN 9781430231981) 저자명 매튜 박스터 레이놀즈(Matthew Baxter-Reynolds) 역자명 배장열 출판일 2011년 7월 11일 페이지 516쪽 시리즈I♥Mobile 12 (아이러브모바일 12) 판 형 4*6배판 변형(188*245) 반양장(Soft Cover) 정 가 28,000원 ISBN 978-89-94506-20-3 부가기호: 13560 분 야 모바일 프로그래밍 / iOS / 안드로이드 키워드 iOS 4 / 진저브레드 / Xcode 4 / 멀티모바일 / RESTful / Six Bookmarks /
SQLite / 모노터치 / 네이티브 앱
도서 소개 iOS와 안드로이드 앱 동시 개발자를 위한 필수 서적!
안드로이드 2.3, Xcode 4, iOS SDK 4.3, 모노터치 4.0.3 버전
『아이폰과 안드로이드 기반의 크로스 플랫폼 앱 개발』은 iOS와 안드로이드를 겨냥해 개발하는 과정이 고스란히 녹아있는 필독서라 할 만하다. 이 책에는 동일한 애플리케이션을 두 플랫폼에서 어떻게 빌드하는지 그 과정이 펼쳐져 있고, 각 플랫폼의 강점 및 약점을 비롯한 서로의 차이가 설명되어 있다. 또한 개발자라면 누구나 궁금해 하는 내용들이 설명되어 있으며, 늘 생각으로만 가지고 있던 아이디어가 실현될 수 있도록 두 플랫폼에 대한 이해도를 한층 높여줄 수 있는 내용이 담겨 있다.
아이폰과 안드로이드에 사용할 툴셋을 설치하고, 몸풀기 과정인 “Hello, World” 애플리케이션 개발을 시작으로 각 플랫폼에 접근한다. 뒤이어 HTTP를 통한 공용 클라우드 기반 서비스를 사용하여 실제 애플리케이션을 개발한다. 또한 SQLite를 사용한 로컬 저장, ORM, 각 플랫폼 전용 사용자 인터페이스도 다룬다. 각 플랫폼 전용 애플리케이션을 만들기에 앞서 클라우드 기반 서비스를 세부적으로 다루며, 더불어 애플리케이션의 구조와 기능 명세서를 상세하게 다룬다. 마지막 장에는 보너스로 모노터치에 대한 내용도 다루고 있다.
이 책의 학습 목표는 다음과 같다.
• 아이폰과 안드로이드 플랫폼용으로 동일한 최종 사용자 애플리케이션을 개발한다.
• 각 플랫폼에서 사용할 수 있는 저장, 통신, 보안과 관련한 서비스 구조의 차이를 이해한다.
• 다양한 플랫폼에서 애플리케이션을 배치하고 관리하는 과정이 어떻게 다른지를 배운다.
• 한 플랫폼에서 쌓은 경험을 다른 플랫폼에 어떻게 적용하는지를 배운다.
이 책에서 배울 주요 내용은 다음과 같다. • 에뮬레이터나 디바이스에서 애플리케이션을 컴파일하고 실행하기
• 사용자 인터페이스 작성하기. 가령 폼 사이로 이동하기, 이벤트 처리하기, 데이터를 화면에 출력하기, 입력을 캡처하기 등
• HTTP 기반의 자원에 연결하여 클라우드 서비스 이용하기
• 데이터를 로컬 디바이스에 저장 또는 캐시하여 성능을 높이거나 오프라인으로 사용하기
• 단순하지만 구색을 갖춘 애플리케이션 작성하기
이 책의 구성 이 책은 크게 세 가지 섹션으로 나뉜다. 실제 제작해볼 두 가지 애플리케이션의 배경 지식을 다루는 소개가 첫 번째고, 두 번째 섹션에서는 안드로이드를, 마지막으로 세 번째 섹션에서는 iOS를 집중적으로 다룬다. 또한 보너스 장에서 iOS의 MonoTouch를 다룬다.
각 섹션은 사용하려고 하는 플랫폼의 툴셋을 설치하는 법부터 시작한다. 설치하기 쉬운 툴셋도 있지만 머뭇거리게 하는 경우도 있다. 따라서 툴셋 설치 장에서는 설치 도중 겪게 될 ‘아하!’를 주로 다룬다.
그 다음 이어지는 세 개의 장에서는 “Six Bookmarks”라는 애플리케이션을 작성한다. Six Bookmarks는 매우 간단한 애플리케이션으로 화면에 버튼 여섯 개를 보여 주고, 버튼마다 특정 URL을 설정하여 디바이스의 기본 브라우저로 연결하도록 한다. 이 애플리케이션의 목적은 멋진 UI를 구현하는 것이 아니다. 일종의 “매개체”가 되어 이 애플리케이션을 이루는 각 구성요소가 어떤 식으로 어우러져 기능을 발휘하는지 이해를 돕는 것이 그 목적이다.
저자 소개 매튜 박스터 레이놀즈 Matthew Baxter-Reynolds
매튜 박스터 레이놀즈는 소프트웨어 개발 컨설턴트로서 현재 팀 구조에서 최대의 성과를 끌어낼 수 있도록 컨설팅하고 있다. 공개 표준, 마이크로소프트 서버, 모바일 플랫폼의 “빅 4”에 특별히 관심이 많다. 강사로서 다수의 개발 관련 책을 집필한 저자이기도 하다. 현재 영국에 거주하며, 모바일 기술 솔루션을 주 업무로 하고 있다. LinkedIn 사이트인 www.linkedin.com/in/mbrit로 연락을 주고받을 수 있으며, 이 책과 관련된 이야기는 http://www.multimobiledevelopment.com/을 통해 나누고 있다.
역자 소개
배장열
현재 교육용 스마트폰 앱 기획, 개발에 몰두하고 있는 옮긴이는 대학에서 기계를, 대학원에서 컴퓨터를 전공했다. 학교를 졸업하고 Software Localization을 몇 년간 했고, 몇 군데 대학에서 시간강사를 했다. 그러다 가르치는 일에 재미가 들려 한동안 강사 일을 했다. 지금은 좋은 책을 소개하는 데 조금이나마 도움이 되고자 번역 일에도 많은 정성을 기울이고 있다.
차 례 1장 소개 1
이 책의 목적 3
이 책의 구성 4
도움을 받을 수 있는 곳 6
정리 6
2장 Six Bookmarks의 서버 서비스 7
API 계정 만들기 8
사용자 만들기 9
Users 서비스 11
RESTful 웹 서비스 12
호출 테스트하기 12
로그온 작업 검사하기 12
Bookmarks 서비스 16
테스트 데이터 추가하기 17
OData로 작업하기 18
OData 쿼리 22
OData를 사용하여 업데이트 알리기 23
로그온한 사용자에게 데이터를 제한하기 23
정리 23
더보기
3장 애플리케이션 아키텍처와 기능 명세서 25
태블릿? 슬레이트? 25
기능 명세서 26
로그온하기 26
동기화하기 27
내비게이터 28
즐겨찾기 구성하기 29
즐겨찾기 하나를 구성하기(“싱글턴 구성”) 30
구현하지 않는 기능들 31
애플리케이션 아키텍처와 기술 명세서 31
접근법 31
ORM 33
서버 통신 39
플랫폼별 기술적 접근 과정 40
정리 43
4장 안드로이드: 툴셋 설치하기 45
왜 안드로이드가 먼저인가? 45
툴셋 설치하기 46
자바 설치하기 46
이클립스 설치하기 46
안드로이드 설치하기 47
이클립스에 ADT 설치하기 50
에뮬레이터 구성하기 54
안드로이드용 “Hello, World” 애플리케이션 작성하기 57
“Hello, World” 인사하기 60
선언적 레이아웃 61
버튼에 액티비티 연결하기 63
정리 68
5장 안드로이드: 로그온 폼 만들기와 REST 서비스 소비하기 69
프로젝트 생성하기 69
코드 표현 규칙 71
RESTful 서비스 호출하기 71
웹 요청하기 72
API 계정 인증하기 77
UsersService를 통해 사용자 인증하기 89
인터넷 액세스 허용으로 권한 설정하기 90
로그온 폼 생성하기 91
모델/뷰/컨트롤러 95
로그온하기 103
“나를 기억해주세요”, 자동 로그인 106
정리 109
6장 안드로이드: SQLite의 ORM 레이어 111
안드로이드용 SQLite 111
엔터티 112
EntityType 112
Entity 기본 클래스 생성하기 119
엔터티에 값 설정하기 121
Bookmark 빌드하기 127
EntityType 등록하기 129
짝퉁 즐겨찾기 표시하기 131
폼 생성하기 131
즐겨찾기 표시하기 137
즐겨찾기 연결하기 142
Sync 클래스 빌드하기 144
서버의 Bookmarks OData 서비스 호출하기 145
데이터베이스 관리하기 153
SqlStatement 클래스와 ISqlStatementSource 인터페이스 156
테이블 생성하기 158
Sqliteman으로 데이터베이스 검사하기 161
데이터베이스에 즐겨찾기 쓰기 165
즐겨찾기 읽기와 내비게이터에 표시하기 171
정리 177
7장 안드로이드: 변경 내용을 서버로 푸시하기 179
로컬의 변경 내용 캡처하기 180
SQL 필터를 제한하기 180
삭제된 엔터티를 뷰에서 제외하기 186
즐겨찾기를 오디널별로 가져오기 187
구성 폼 빌드하기 188
싱글턴 구성하기 212
변경 내용을 서버로 푸시하기 221
로컬의 변경 내용 파악하기 221
삽입, 업데이트, 삭제를 서버에 요청하기 226
HTTP MERGE로 업데이트하기와 HTTP POST로 삽입하기 227
필드를 서버에서 사용할 수 있도록 표시하기 227
정리 238
8장 iOS: 툴셋 설치하기 239
아이패드 개발 239
Xcode 설치하기 239
닷넷 및 자바 개발자를 위한 오브젝티브-C 입문 과정 240
오브젝티브-C의 문제점들 241
메서드 호출하기(일명 “메시지 보내기”) 242
프로퍼티(그리고 간략히 언급하는 메모리 관리) 245
메서드 252
네임스페이스 254
오브젝티브-C에서 가장 골치 아픈 점 254
아이폰용 “Hello, World” 255
사용자 인터페이스 구성하기 257
윈도우 생성하기와 뷰 보여주기 264
정리 267
9장 iOS: 로그온 폼 작성하기와 REST 서비스 소비하기 269
프로젝트 생성하기 269
로그온 폼 270
로그온 폼 사용자 인터페이스 생성하기 271
로그온 폼 보여주기 275
그룹화 뷰에 관한 특강 278
코드 표현 규칙 279
서비스 호출하기 280
로그온 요청 캡처하기 280
API 서비스 호출하기 286
프록시 클래스 작성하기 287
Users 서비스 호출하기 318
진행 중임을 알리기 325
정리 327
10장 iOS: SQLite의 ORM 레이어 329
잠시 짚고 넘어가야 할 이야기 330
엔터티 330
SBEntityType 클래스 330
SBEntity 클래스 339
엔터티에 값 설정하기 342
SBBookmark 작성하기 347
SBEntityType 인스턴스 생성하기 350
짝퉁 즐겨찾기 표시하기 352
뷰 생성하기 352
뷰 엔진 빌드하기 357
즐겨찾기 표시하기 362
내비게이션 처리하기 365
Sync 클래스 빌드하기 367
서버의 Bookmarks OData 서비스 호출하기 367
데이터베이스 작업 384
SBDBHelper 빌드하기와 오류 처리 구현하기 386
데이터베이스에 즐겨찾기 쓰기 401
정리 421
11장 iOS: 변경 내용을 서버로 푸시하기 423
즐겨찾기 구성하기 423
데이터를 테이블에 넣기 426
즐겨찾기 정렬하기 430
싱글턴 뷰 431
즐겨찾기 편집하기 437
삭제 메서드 구현하기 444
즐겨찾기 추가하기 445
즐겨찾기 삭제하기 447
수동으로 동기화하기 451
변경 내용을 서버로 푸시하기 452
작업 항목 455
OData 변경 요청하기 460
“서버에 없음”으로 필드 지정하기 462
요청 생성하기 463
processWorkItems 수정하기 470
정리 472
12장 iOS: 모노터치 473
큰 틀에서 본 모노 474
이 장의 구성 475
모노터치 설치하기 475
“Hello, World” 476
코드 비하인드 검사하기 480
버튼 연결하기 481
프로젝트 실행하기 483
Six Bookmarks API의 RESTful 서비스 호출하기 484
프로젝트 생성하기 484
ServiceProxy 등등을 빌드하기 484
서비스 메서드 호출하기 490
정리 494
보통 번역서가 나오기까지는 6개월 안팎으로 걸리는데, 이번 책은 좀 늦게 나오게 되었습니다. (원서는 작년 9월말에 출간) 원서와 번역서 출간 사이에 많은 변화가 있었던 것은 모두들 아실 겁니다. iOS도, 안드로이드도 모두 업데이트되었고, Xcode 및 이 책에서 한 개의 장으로 할애하고 있는 모노터치(MonoTouch)도 많은 변화가 있었습니다. 이번에 저희 출판사와 처음 작업을 하게 된 배장열 님께서 틈틈이 앱 개발을 하면서도 변경된 사항들을 테스트하고 책에 적용하느라 정말 많은 고생을 하셨습니다. 이 자리를 빌어 다시 한번 감사드립니다.
이 책의 구성을 잠깐 살펴보자면, Bookmark Services란 애플리케이션을 안드로이드와 iOS에서 각각 어떻게 개발하는지를 보여줍니다. 그래서 세부 코드의 내용에 관심이 많은 독자는 4-7장까지 안드로이드 편과 8-11장까지의 iOS 편을 비교하며 살펴볼 수 있습니다. 하지만 앱 개발의 방향과 접근 방식을 이해하고 학습하고자 한다면 2장 'Six Bookmarks의 서버 서비스'와 3장 '애플리케이션 아키텍처와 기능 명세서'를 꼭 먼저 읽어보기를 권합니다.
2장 Six Bookmarks의 서버 서비스 7
API 계정 만들기 8
사용자 만들기 9
Users 서비스 11
RESTful 웹 서비스 12
호출 테스트하기 12
로그온 작업 검사하기 12
Bookmarks 서비스 16
테스트 데이터 추가하기 17
OData로 작업하기 18
OData 쿼리 22
OData를 사용하여 업데이트 알리기 23
로그온한 사용자에게 데이터를 제한하기 23
정리 23
3장 애플리케이션 아키텍처와 기능 명세서 25
태블릿? 슬레이트? 25
기능 명세서 26
로그온하기 26
동기화하기 27
내비게이터 28
즐겨찾기 구성하기 29
즐겨찾기 하나를 구성하기(“싱글턴 구성”) 30
구현하지 않는 기능들 31
애플리케이션 아키텍처와 기술 명세서 31
접근법 31
ORM 33
서버 통신 39
플랫폼별 기술적 접근 과정 40
정리 43
5장 안드로이드: 로그온 폼 만들기와 REST 서비스 소비하기 69
프로젝트 생성하기 69
코드 표현 규칙 71
RESTful 서비스 호출하기 71
웹 요청하기 72
API 계정 인증하기 77
UsersService를 통해 사용자 인증하기 89
인터넷 액세스 허용으로 권한 설정하기 90
로그온 폼 생성하기 91
모델/뷰/컨트롤러 95
로그온하기 103
“나를 기억해주세요”, 자동 로그인 106
정리 109
6장 안드로이드: SQLite의 ORM 레이어 111
안드로이드용 SQLite 111
엔터티 112
EntityType 112
Entity 기본 클래스 생성하기 119
엔터티에 값 설정하기 121
Bookmark 빌드하기 127
EntityType 등록하기 129
짝퉁 즐겨찾기 표시하기 131
폼 생성하기 131
즐겨찾기 표시하기 137
즐겨찾기 연결하기 142
Sync 클래스 빌드하기 144
서버의 Bookmarks OData 서비스 호출하기 145
데이터베이스 관리하기 153
SqlStatement 클래스와 ISqlStatementSource 인터페이스 156
테이블 생성하기 158
Sqliteman으로 데이터베이스 검사하기 161
데이터베이스에 즐겨찾기 쓰기 165
즐겨찾기 읽기와 내비게이터에 표시하기 171
정리 177
7장 안드로이드: 변경 내용을 서버로 푸시하기 179
로컬의 변경 내용 캡처하기 180
SQL 필터를 제한하기 180
삭제된 엔터티를 뷰에서 제외하기 186
즐겨찾기를 오디널별로 가져오기 187
구성 폼 빌드하기 188
싱글턴 구성하기 212
변경 내용을 서버로 푸시하기 221
로컬의 변경 내용 파악하기 221
삽입, 업데이트, 삭제를 서버에 요청하기 226
HTTP MERGE로 업데이트하기와 HTTP POST로 삽입하기 227
필드를 서버에서 사용할 수 있도록 표시하기 227
정리 238
8장 iOS: 툴셋 설치하기 239
아이패드 개발 239
Xcode 설치하기 239
닷넷 및 자바 개발자를 위한 오브젝티브-C 입문 과정 240
오브젝티브-C의 문제점들 241
메서드 호출하기(일명 “메시지 보내기”) 242
프로퍼티(그리고 간략히 언급하는 메모리 관리) 245
메서드 252
네임스페이스 254
오브젝티브-C에서 가장 골치 아픈 점 254
아이폰용 “Hello, World” 255
사용자 인터페이스 구성하기 257
윈도우 생성하기와 뷰 보여주기 264
정리 267
9장 iOS: 로그온 폼 작성하기와 REST 서비스 소비하기 269
프로젝트 생성하기 269
로그온 폼 270
로그온 폼 사용자 인터페이스 생성하기 271
로그온 폼 보여주기 275
그룹화 뷰에 관한 특강 278
코드 표현 규칙 279
서비스 호출하기 280
로그온 요청 캡처하기 280
API 서비스 호출하기 286
프록시 클래스 작성하기 287
Users 서비스 호출하기 318
진행 중임을 알리기 325
정리 327
10장 iOS: SQLite의 ORM 레이어 329
잠시 짚고 넘어가야 할 이야기 330
엔터티 330
SBEntityType 클래스 330
SBEntity 클래스 339
엔터티에 값 설정하기 342
SBBookmark 작성하기 347
SBEntityType 인스턴스 생성하기 350
짝퉁 즐겨찾기 표시하기 352
뷰 생성하기 352
뷰 엔진 빌드하기 357
즐겨찾기 표시하기 362
내비게이션 처리하기 365
Sync 클래스 빌드하기 367
서버의 Bookmarks OData 서비스 호출하기 367
데이터베이스 작업 384
SBDBHelper 빌드하기와 오류 처리 구현하기 386
데이터베이스에 즐겨찾기 쓰기 401
정리 421
11장 iOS: 변경 내용을 서버로 푸시하기 423 즐겨찾기 구성하기 423
데이터를 테이블에 넣기 426
즐겨찾기 정렬하기 430
싱글턴 뷰 431
즐겨찾기 편집하기 437
삭제 메서드 구현하기 444
즐겨찾기 추가하기 445
즐겨찾기 삭제하기 447
수동으로 동기화하기 451
변경 내용을 서버로 푸시하기 452
작업 항목 455
OData 변경 요청하기 460
“서버에 없음”으로 필드 지정하기 462
요청 생성하기 463
processWorkItems 수정하기 470
정리 472
12장 iOS: 모노터치 473
큰 틀에서 본 모노 474
이 장의 구성 475
모노터치 설치하기 475
“Hello, World” 476
코드 비하인드 검사하기 480
버튼 연결하기 481
프로젝트 실행하기 483
Six Bookmarks API의 RESTful 서비스 호출하기 484
프로젝트 생성하기 484
ServiceProxy 등등을 빌드하기 484
서비스 메서드 호출하기 490
정리 494
이 분이 오라클의 대부로 불리는 토마스 카이트(Thomas Kyte)입니다. 미드에 나올 법한 수더분한 인상의 옆집 아저씨처럼 생겼네요. 오라클 5.1.5c 버전 때부터 현재에 이르기까지 오라클의 발전사와 함께 해온 분이죠. 그리고 『오라클 매거진(Oracle Magazine)』에서 운영하는 ‘Ask Tom’ 코너(http://asktom.oracle.com)를 통해 좌절하는 오라클 개발자, DBA들에게 광명을 제공하고 있기도 합니다.
원서도 800여 페이지가 넘지만, 번역서는 본문 포인트를 작게 했는데도 1,000페이지가 넘는 오라클 바이블로 출간이 됩니다. 페이지가 많다고 해서 바이블이 아니라, 아래 내용들을 보시면 오라클을 업무에 사용하시는 분은 누구나 한 권씩 준비하여 수시로 참고할 만한 내용이 가득한 것에 수긍할 것입니다.
번역과 편집 작업에만에도 근 1년 가까운 시간이 흘렀네요. 좋은 책을 내기 위해 오랜 인고의 시간을 보내고 이제 독자 여러분에게 다가가는데, 많은 사랑으로 아껴 주셨으면 합니다. 이 책의 번역은 국내 IT종합컨설팅 분야에서 좋은 평판을 받고 있는 (주)비투엔컨설팅의 컨설턴트 다섯 분이 바쁜 회사 업무와 병행해주시느라 정말 많은 수고를 해주셨습니다. 번역이라는 특성과 지식 전달 사이에서 용어에 대한 고민을 많이 하셨다고 합니다. 그리고 내용이 어려운 부분은 풀어 쓰거나 부연 설명을 통해 국내 독자들의 이해를 높이기 위해 많이 애써주셨습니다. 출간 후 맛있는 식사라도 대접하기 전에 먼저 노고에 박수를 보내봅니다. 짝!짝!짝!
각 장별 주요 내용은 아래에 정리해드립니다. 책은 6월 28일 출간될 예정이며, 현재 아래 서점들에서 예약판매 중입니다.
각 장의 주요 내용 1장: 성공적인 오라클 애플리케이션 개발
이 장에서는 데이터베이스 프로그래밍에서 필요한 주요 접근 방법을 설명하고 있다. 모든 데이터베이스가 똑같지 않기 때문에, 데이터베이스를 이용하는 애플리케이션을 주어진 기간 안에 성공적으로 개발하기 위해서는 사용하는 데이터베이스가 어떤 기능을 가졌는지 정확하게 이해해야 하며, 또한 어떻게 수행하는지 알고 있어야 한다. 데이터베이스가 무엇을 할 수 있는지 알지 못한다면, 데이터베이스가 이미 제공하는 기능을 애플리케이션으로 개발하기 위해 쓸데없이 시간을 낭비할 수 있다. 또한 데이터베이스가 어떻게 수행하는지 알지 못한다면, 오류를 발생시키거나 제대로 동작하지 않는 애플리케이션을 개발할 수 있다.
이 장에서는 데이터베이스에 대한 이해부족으로 말미암은 프로젝트 실패 사례에서 볼 수 있는 몇몇 애플리케이션을 살펴볼 것이다. 예제를 살펴보면서 개발자로서 이해할 필요가 있는 기본적인 특징과 기능에 대해 알아볼 것이다. 결론적으로 말하면, 데이터베이스를 단지 결과를 뱉어내는 블랙박스처럼 다루지 말아야 하며, 확장성과 성능에 관하여 관심을 기울여야 한다.
2장: 아키텍처 개요
이 장에서는 오라클 아키텍처의 기본 개념을 알아본다. 먼저 오라클 데이터베이스에서 자주 잘못 이해되고 있는 ‘인스턴스’와 ‘데이터베이스’ 두 가지 용어에 대해 정확하게 정의한다. 또한 오라클 인스턴스를 구성하는 SGA(System Global Area)와 프로세스에 대해 빠르게 살펴보고 있으며, 간단한 오라클의 접속 방식에 대해서도 살펴본다.
더보기
3장: 파일 이 장에서는 오라클 데이터베이스와 인스턴스를 구성하는 8가지 파일 유형을 자세히 살펴본다. 파라미터 파일부터 데이터 파일, 리두 로그 파일까지 각 파일이 어떤 파일인지 살펴보고, 존재하는 이유와 어떻게 다루어야 하는지에 대해 살펴본다.
4장: 메모리 구조
이 장에서는 오라클이 메모리를 어떻게 사용하는지를 살펴본다. 사용자 레벨에서 사용하는 PGA(Process Global Area) 메모리와 데이터베이스 전체적으로 사용하는 SGA(Shared memory)에 대해 알아본다. 오라클 10g에서 PGA 및 SGA를 수동으로 관리하는 방법과 자동으로 관리하는 방식 간의 차이점을 살펴보고, 각각이 어느 경우에 유리한지 살펴본다. 이 장을 읽고 나면 오라클이 메모리를 어떻게 사용하고 관리하는지 정확하게 이해할 수 있을 것이다.
5장: 오라클 프로세스
이 장은 오라클의 서버 프로세스와 백그라운드 프로세스의 유형에 대해 전반적으로 살펴본다. 또한 shared server 프로세스를 통한 접속 방식과 dedicated server 프로세스를 통한 접속 방식 간의 차이점을 자세히 설명하고 있다. 또한 오라클 인스턴스가 구동할 때 생성되는 백그라운드 프로세스(LGWR, DBWR, PMON, SMON 등)의 대부분을 살펴보고 있으며, 각각의 역할에 대해 언급하고 있다.
6장: 락킹과 래칭
데이터베이스는 데이터베이스만의 고유한 방식을 가지고 있기 때문에(SQL Server는 오라클과 같은 방식으로 수행하지 않는다), 오라클이 락킹과 동시성 제어를 어떻게 구현하는지 이해하는 것은 성공적인 애플리케이션 구현을 위해서 반드시 필요한 주제다. 이 장에서는 이러한 주제에 접근하는 기본적인 접근 방법을 설명하고 있고, DML, DDL, 래치에 따라 적용될 수 있는 락의 유형에 대해 알아보고, 락킹을 주의 깊게 구현하지 않았을 때에 발생할 수 있는 데드락킹(deadlocking), 블로킹(blocking), 락 상승(escalation) 등과 같은 문제점에 대해 살펴본다.
7장: 동시성과 멀티버저닝
이 장에서는 필자가 선호하는 오라클의 특징인 멀티버저닝과 동시성 제어를 살펴보고, 애플리케이션의 올바른 설계에 어떠한 영향을 미치는지 알아볼 것이다. 모든 데이터베이스가 동일하게 생성되지 않았기 때문에 데이터베이스마다의 작동 방법은 애플리케이션 설계에 영향을 미친다. 먼저 ANSI SQL에 기본적으로 정의되는 다양한 트랜잭션 고립화 수준에 대해 살펴보고, 오라클 구현 방식과 어떻게 연결되는지 알아본다. 또한 다른 데이터베이스에서도 이 표준과 어떻게 대응되는지 살펴본다. 그리고 오라클이 제공하는 멀티버저닝이 무엇인지 알아보고, 이 기능으로 인해 데이터베이스에서 non-blockng 읽기가 어떻게 가능한지 알아볼 것이다.
8장: 트랜잭션
트랜잭션은 모든 데이터베이스의 기본 개념으로 파일 시스템과 구별되는 데이터베이스의 특징 중 하나지만, 아직도 트랜잭션을 잘못 이해하고 있는 것을 종종 볼 수 있으며, 많은 개발자가 실수로 트랜잭션을 이용하지 않고 있다는 것조차 모르는 경우도 있다. 이 장에서는 오라클에서 트랜잭션을 어떻게 사용해야 하는지를 살펴보고, 다른 데이터베이스에서 사용하는 방식으로 잘못 사용하는 경우에 대해서도 알아볼 것이다. 특히 트랜잭션의 특징 중 하나인 원자성(atomicity)에 대해 알아보고, 오라클 명령문에 어떻게 영향을 미치는지도 살펴볼 것이다. 그리고 트랜잭션 제어 명령문인 COMMIT, SAVEPOINT, ROLLBACK에 대해서 알아보고, 무결성 제약조건(integrity constraints), 분산 트랜잭션(two-phase commit, 2PC)을 알아보고, 마지막으로 자율 트랜잭션에 대해 살펴볼 것이다.
9장: 리두와 언두
개발자들은 DBA만큼 리두와 언두에 대해 자세히 알 필요는 없지만, 개발자들도 데이터베이스에서 리두와 언두의 역할에 대해서는 알아야 한다. 제일 먼저 리두를 정의하고, COMMIT 명령문이 정확하게 무엇을 하는지 조사한다. 그리고 얼마만큼의 리두가 생성되는지를 확인하는 방법을 알아보고, 어떤 오퍼레이션에 의해 생성된 대량의 리두를 줄이기 위해 NOLOGGING 절을 사용하는 방법에 대해 살펴본다. 또한 블록 클린아웃(cleancout)과 로그 경합과 같은 이슈와 관련된 리두 생성에 관하여 알아본다.
언두 절에서는 언두 데이터의 필요성을 알아보고, 언두 데이터를 최대로 발생시키는 오퍼레이션과 최소로 발생시키는 오퍼레이션을 알아본다. 마지막으로, ORA-01555: snapshot too old error가 어떤 경우에 발생하는지 알아보고 피할 수 있는 방법을 살펴본다.
10장: 데이터베이스 테이블
오라클은 다양한 테이블 유형을 지원하고 있다. 이 장에서는 힙 구조 테이블(기본으로 생성되는 일반적인 테이블), 인덱스 구조 테이블, 인덱스 클러스터 테이블, 해시 클러스터 테이블, 중첩 테이블, 템포러리 테이블, 객체 테이블의 다양한 테이블 유형을 알아본다, 그리고 이 테이블이 언제 사용하는 것이 유리한가, 어떻게 사용해야 하는가, 왜 사용하는가를 알아볼 것이다. 대부분은 힙 구조 테이블로 구현해도 문제가 없지만, 이 장을 통해 다른 테이블 유형이 어떤 환경에서는 더 유리한 구조라는 것을 알게 될 것이다.
11장: 인덱스
인덱스는 애플리케이션 설계에 있어서 중요한 역할을 한다. 올바른 구현을 위해서는 데이터를 깊이 이해할 필요가 있고, 데이터를 어떻게 분산하는지, 어떻게 사용할 것인지에 대한 이해가 필요하다. 인덱스는 애플리케이션의 최종 마무리 단계에서 다뤄지는 경우가 대부분이어서 성능에 문제를 겪게 된다.
이 장에서는 B*Tree, 비트맵, 함수 기반과 애플리케이션 인덱스에 관한 다양한 인덱스 유형을 자세히 살펴보고, 인덱스 유형별로 어떤 경우에 사용해야 하고 사용하지 않아야 하는지 살펴본다. ‘뷰에서도 인덱스가 사용되는가?’, ‘해당 인덱스를 왜 사용하지 않을까?’ 등과 같은 인덱스에 관한 잦은 질문에 대해 살펴보고, 몇 가지 오해에 대해서도 알아본다.
12장: 데이터 타입
오라클에는 다양한 데이터 타입이 존재한다. 이 장에서는 22개 내장형 데이터 타입에 대해 살펴보고, 데이터 타입별로 어떤 특징이 있는지 알아보고, 언제 어떻게 어떤 데이터 타입을 선택해야 하는지 살펴본다. 먼저 NLS(National Language Support)에 대해 간단하게 살펴보고, 오라클에서 문자 타입을 충분히 이해하기 위한 기본 지식을 자세히 살펴본다. 그리고 익숙한 NUMBER 타입에 대해 살펴보고, 오라클 10g 버전에서 제공하는 숫자의 저장방식에 대해서도 살펴본다. 다음으로, 이제는 잘 사용하지 않는 LONG과 LONG RAW 데이터 타입에 대해 알아본다. 애플리케이션에서 과거의 LONG 컬럼을 어떻게 다뤄야 할지 보여주고, LOB 타입으로 이전하는 방법에 대해 설명한다. 다음으로, 일자와 시간을 다루는 다양한 데이터 타입을 살펴보고, 원하는 결과를 얻기 위해 다양한 데이터 타입을 다루는 방법에 대해서도 살펴보고 있으며, 타임 존(time zone)을 지원하는 방식에 대해서도 다루고 있다.
또한 LOB 데이터 타입을 살펴보고 있으며, 어떻게 저장하는지 알아보고 IN ROW, CHUNK, RETENTION, CACHE와 같은 다양한 설정의 의미에 대해 알아본다. LOB 데이터 타입을 다루기 위해 기본적으로 어떻게 구현되고 어떻게 저장되는지를 이해하는 것은 중요하며, 특히 추출결과와 저장공간의 활용방식을 이해하는 것이 중요하다. 마지막으로 ROWID와 UROWID 타입을 살펴보며, 이는 오라클에 국한된 특별한 데이터 타입으로서 로우의 주소를 의미한다. 테이블에서 데이터 타입으로 언제 사용해야 하는지 알아보고, 결과적으로 사용하지 않아야 한다는 결론을 얻게 된다.
13장: 파티셔닝
파티셔닝은 대용량 테이블과 인덱스를 분할정복(divide-and-conquer) 방식으로 관리하는 도구로서 고안되었고, 논리적인 단위로 테이블을 쪼개거나 관리할 수 있는 더 작은 조각으로 인덱스를 나누어 관리할 수 있게 한다. DBA와 개발자는 애플리케이션의 유용성과 성능 향상을 최대화하기 위해 협력해야 한다. 이 장에서는 테이블과 인덱스 파티셔닝에 대해 다루고 있으며, 데이터 웨어하우스에서 주로 사용하는 로컬 인덱스 파티셔닝과 주로 OLTP 환경에서 사용하는 글로벌 인덱스 파티셔닝에 대해 살펴본다.
14장: 병렬 처리
이 장에서는 오라클에서 병렬 처리의 개념과 처리방식에 대해 살펴본다. 먼저 언제 병렬 처리방식이 유용한가에 대해 살펴보고, 언제 사용해야 하는지, 또한 언제 사용하지 않아야 하는지를 살펴본다. 그리고 병렬 처리 메커니즘을 살펴보고, 병렬 처리와 관련된 기능을 알아본다. 다음으로, 병렬 처리 방식으로 수정을 처리하는 병렬 DML(PDML)에 대해 살펴보고, PDML이 물리적으로 어떻게 구현되는가와 PDML에 관련된 일련의 제한이 존재하는 이유에 대해 살펴본다.
또한 병렬 DDL을 살펴보는데, 필자가 생각하기에 병렬 DDL이야말로 병렬 처리의 백미라고 생각한다. 일반적으로 DBA는 거대한 작업을 관리하는 작은 단위 작업을 가지고 있게 마련인데, 병렬 DDL은 DBA가 사용 가능한 최대한의 시스템 자원을 이용하여 거대하고 복잡한 작업을 단일 프로세스로 처리했을 때보다 극적으로 짧은 시간에 마무리할 수 있게 한다.
마지막으로 애플리케이션을 병렬로 실행하는 방식으로 이해되는 프로시저 병렬 처리 방식에 대해 설명하며, 이를 구현하기 위한 두 가지 방식을 다룬다. 하나는 파이프라인 함수 또는 다이내믹 병렬을 구현하는 스토어드 함수로 구현하는 방식이고, 또 하나는 애플리케이션을 동시에 수행하도록 하는 ‘do it yourself(DIY)’ 병렬 처리 방식이다.
15장 데이터 로딩과 언로딩
전반부는 SQL*Loader(SQLLDR)를 설명하고, 이 툴을 이용하여 데이터를 로드하고 수정하는 다양한 방식에 대해 알아본다. 구분자를 가진 데이터를 로딩하고, 기존에 존재하는 데이터를 수정하고, 새로운 로우를 삽입하고, 데이터를 언로딩하고, 저장 프로시저에서 SQLLDR을 호출하는 방식에 대해 살펴본다. SQLLDR은 매우 훌륭하고 유용한 툴이지만, 실제 사용해보면 많은 질문이 생기는 툴이기도 하다. 후반부는 External 테이블에 집중적으로 살펴보며, 벌크 데이터를 로드하고 언로드하는 데는 의심의 여지가 없는 가장 강력한 수단이라는 것을 알 수 있을 것이다.
16장: 데이터 암호화
이 장은 오라클 데이터베이스에서 데이터 암호화를 위한 방법을 살펴본다. DBMS_CRYPTO 패키지를 이용하여 수동으로 설정하는 ‘do it yourself’ 암호화 방식으로 중요하게 다루지는 않는다. 오히려 패키지를 이용하는 암호화 방식을 왜 사용하지 않아야 하는지를 설명하고 있다. 이 장의 주요 관심사는 오라클 데이터베이스에서 TDE(Transparent Data Encryption) 방식에 대해 자세히 살펴보고 있다. 컬럼 수준과 테이블스페이스 수준에서 어떻게 암호화를 구현하는지 알아보고, 개발자 또는 DBA에게 어떤 의미가 있는지를 설명한다. 가능한 모든 설정 방법을 설명하지는 않고(이것은 오라클 도큐먼트를 참조하면 된다), 실제적인 구현을 위한 세부사항을 살펴보고 어떻게 사용자에게 영향을 주는지를 알아본다.
댓글을 달아 주세요
우와~ 이거 또 하시는군요 ^^ 좋은 책들이 많네요 광고해야쥐
네. 또 합니다. 보고싶은 책 딴 품으로 떠나기 전에 서둘러 주세요. ^^
가운뎃줄은 취소선을 말씀하시는 거겠죠?
네. 이벤트 참가자가 원하시는 책에는 가운뎃줄(취소선)이 그어집니다. 그래서 다른 분이 선택할 수 없게 됩니다.
안녕하세요^^
이런 좋은 이벤트를 열어주셔서 감사해요~~
제가 맘에 드는 책이 몇 권 있는데
혹시 서평 하나 당 원서 한 권인가요? 아니면 무조건 한 명 당 한 권만 신청할 수 있나요? ?
제이펍 서적을 몇 개 가지고 있어서 이런 질문도 해볼 수 있고 너무 좋네요(_ _*)
반갑습니다. 알라콩 님! ^^ 서평 하나당 한 권씩 하는 게 형평성에 맞겠죠. 독자들에게 도움이 되는 좋은 서평 부탁드립니다!