편집자노트 2011. 12. 12. 14:13


웹 디자이너를 위한 jQuery의 원서를 소개합니다.

원서명은 다음과 같습니다.

Web制作の現場で使う jQueryデザイン入門 

클릭하시면, 아마존재팬의 도서 소개 사이트를 볼 수 있습니다.

원서는 2010년에 출간되었습니다. 원서 검토 결과 jQuery 라이브러리 버전이 1.3 버전대더군요. 하지만, 해당 내용의 정교한 구성에 깜짝 놀랬습니다. 번역 과정에서는 버전업을 해서 내용을 추가한 것은 아니지만, 기본기를 탄탄하게 알려주기 때문에 버전업이 되어도 해당 라이브러리를 찾아서 쓸 수 있는 응용력을 확실하게 길러주는 책이라는 인상을 받았습니다.

jQuery 라이브러리는 아직도 계속 추가되고 있으며 현재는 1.6 버전입니다. jQuery는 서버에 저장해놓고 해당 페이지에 불러와서 쓸 수도 있고 구글 서버 페이지를 링크해서 쓸 수도 있습니다. 항상 최신 버전을 쓰겠다는 옵션을 넣어두면 어떤 jQuery 버전의 라이브러리를 쓰더라도 문제 없습니다.

이 책은 일본의 최대 온라인 서점인 아마존 재팬의 IT/컴퓨터 분야에서 1년이 지났어도 아직도 20위 안에 랭크되어 있는 초베스트셀러입니다.

독자 서평을 한번 살펴볼까요.


17개의 최고평점이 달려 있습니다.

대표적인 서평을 한번 요약해보았습니다.

1. 프로그래밍 초보자에게 추천한다.
2. 정말 웹 제작 현장에서 사용할 만한 책이다.
3. jQuery의 교과서라 볼 수 있다.
4. jQuery를 처음 시작하는 사람은 이 책을 읽어야 한다.
5. HTML과 CSS를 어느 정도 이해한다면 충분히 쓸 수 있다.
6. 실용 예제가 포함되어 있어 "나도 할 수 있다"는 자신감을 얻을 수 있다.
....


편집자로서 제가 느낀 점입니다.

1. 처음부터 다시 배우는 HTML5&CSS3를 이미 진행해본 경험이 있어서인지, 상당히 재밌게 작업을 할 수 있었습니다.

2. jQuery는 디자인을 사용자 요구에 따라 시시각각 변화시켜주기 위한 용도로 만든 자바스크립트 라이브러리입니다. HTML과 CSS로 정적인 디자인을 만들었다 하더라도 사용자가 어떤 요청을 했을 경우 디자인을 동적으로 변경해주어야 하는데, 이것을 자바스크립트로 짜게 되면 엄청나 노동이 필요합니다. 진짜 프로그래밍 영역이 되는거죠. 그런데, jQuery는 CSS의 대표적인 개념인 셀렉터를 이용해서 멋지게 디자인을 마법처럼 바꿔준다는 것이죠. 이게 정말 매력적이었습니다.

3. 인터넷에 엄청나게 많은 플러그인이 제작되어 기본적인 원리를 이 책을 통해 배운다면 정말 무궁무진하게 웹사이트의 디자인적 유연성을 높일 수 있을 것이라고 생각합니다.


번역서 소개만으로는 부족할 것 같아, 간단하게 위와 같이 원서를 한 번 소개하였습니다. 책 선택시 참고가 되었으면 좋겠습니다.
posted by 로드북
:
IT 포스팅 2011. 12. 7. 14:36
로드북의 두 번째 책 <거꾸로 배우는 소프트웨어 개발>에서 테스트 자동화 관련 내용의 일부를 발췌하였습니다. 아래 삽화는 아래 카피라잇만 포함한다면 상업적 용도외에 모든 곳에 사용할 수 있습니다. 회사에서 프레젠테이션을 재미있게 해본다든지 할 때 활용해보세요.

ⓒ 로드북, <거꾸로 배우는 소프트웨어 개발>(이호종 저, 2011)

-----------------------------------------------------------
참고로, 이 책은 <사람과 프로그래머> 시리즈 두 번째입니다. 소프트웨어 개발에 관해 인문학적으로 접근하고 있습니다.
-----------------------------------------------------------

구제역이 발생하면 발생 농가로부터 반경 3Km를 위험지역으로 분류하고 출입 통제와 함께 차단 방역을 실시한다. 소프트웨어 버그도 마찬가지로 대처할 수 있다. 버그 발생 구역을 집중 감시 구역으로 설정하고, 버그 구제/퇴치 작업을 진행하는 도중에 새로운 버그가 생겨나지 않도록 차단막을 설치 가동해야 한다. 그게 바로 ‘단위 테스트’이고 ‘테스트 자동화 Test Automation’이다.


물론, 가난한 유기농 농가(?)에서는 이런 자동화 설비를 구축하기 어려운 게 사실이다. 하지만 형편이 좀 나은 곳에서도 그다지 필요성을 잘 못 느끼는 경우가 많다. 어떻게 하면 좋을까?
 
먼저 인식 전환이 필요하다. 소프트웨어 결함에 너무 안일해지지 않아야 한다. 어쩔 수 없는 것이라고 체념하지 말자. 극복하고 돌파해야 할 과제라고 인식을 바꿔야 한다. 또한, 효과적인 결함 관리를 위해서는 쉽게 피로해지는 사람의 손과 눈을 어느 정도 보완해줄 수 있는 ‘자동화 기계’가 필요하다는 공감이 개발조직에 확산되어야 한다.

사실 ‘자동화 기계’라고 했지만, 이것을 마련하고 가동하는 데 엄청난 비용이 드는 건 아니다. 알고 보면, 저렴하게 이용할 수 있는 ‘기계’가 많다. 단위 테스트 도구인 xUnit 을 권한다. 대부분 프로그래밍 언어마다 xUnit 패키지가 있다. 뭘 새로 많이 개발해야 하는 게 아니다. 그냥 xUnit 사용법을 익히면 된다. 세균과의 전쟁을 맨 몸으로 하지 않아도 된다. 프로그래머의 뇌를 매개체로 증식하는 세균 같은 소프트웨어 버그에 대처하기 위한 체계적이고 안전한 방호법이다. 버그의 유충까지 섬멸할 수 있는 자동 화염 방사기다. 디버깅하느라 ‘삽질’을 하고 있었다면, 이젠 삽 대신 xUnit을 사용해보자. 개발이 달라진다.
posted by 로드북
:
신간소개 2011. 11. 15. 14:41



l  저자: Nishihata Kazuma

l  역자: 박건태, 신대호 

  l  페이지: 360

  l  판형: 4x6배변형(190x244)

  l  도수: 2

  l  정가: 25,000

  l 발행일: 2011년 11월 28일

  l  ISBN: 978-89-966598-5-3

 




[강컴] [교보]
 [리브로] [반디] [11번가] [알라딘] [예스24] [인터파크]

Sample.pdf


jQuery 주요 디자인 레시피 살펴보기클릭하세요 
이 책의 원서 소개 페이지 ※ 클릭하세요 

_도서 내용
"간결하고 정교한 입문서"로 정의하고 싶은 책입니다.
jQuery는 웹 디자인을 편리하게 하기 위해 등장하였습니다. HTML과 CSS를 조작해서 어떤 동적인 움직임을 주려면 과거엔 자바스크립트를 이용해서 상당히 난이도 있는 작업을 하였는데, 지금은 기본적인 명령(jQuery 메서드)의 원리와 사용 방법만 알면 웬만한 건 개발자의 손을 빌리지 않고도 디자이너가 처리할 수 있게 되었습니다. 바로 이 책은 프로그래밍에 약한 디자이너가 jQuery를 잘 쓸 수 있도록 도와주는 책입니다.
전반부는 아주 기본기를 탄탄히 해줄 수 있는 내용을 다루고 후반부에는 책의 절반 이상을 할애하여 13가지 레시피를 구체적으로 다루고 있습니다.

_대상 독자
프로그래밍이라면 그냥 개발자에게 맡겨버리는 웹 디자이너
HTML과 CSS를 활용한 디자인의 동적 움직임을 파악하고자 하는 웹 개발자
웹 표준을 공부하고 있는 실무 웹 디자이너

_목차
1장. 간단히 살펴보는 jQuery에 관한 기초지식
1-1 jQuery란?
압도적인 인기를 자랑하는 JavaScript 라이브러리, jQuery
샘플 코드로 보는 jQuery의 편리함
가볍다! 그리고 크로스브라우징을 지원한다!

1-2 jQuery 활용 준비
jQuery 다운로드
jQuery를 읽어 들이는 부분
Column01_Google 서버에서 jQuery 사용하기


2장. 간단 예제로 jQuery 기초 다지기
2-1 jQuery 기초와 셀렉터(Selector)의 사용법
JavaScript와 HTML/CSS의 관계
JavaScript의 실행 타이밍과 jQuery의 ready 함수
HTML의 태그를 지정하는 “셀렉터”
1. CSS에서 자주 이용되는 셀렉터
2. CSS2 셀렉터
3. CSS3 셀렉터
4. CSS 속성 셀렉터
5. jQuery 자체 필터
Jquery 셀렉터 정리

2-2 기본 명령을 이용한 HTML/CSS의 조작
HTML/CSS를 마음대로 조작할 수 있는 jQuery 명령
1. 텍스트 변경과 가져오기
2. HTML 변경과 가져오기
3. HTML 삽입
4. HTML 이동
5. 다른 태그로 감싸기
6. 태그 변경
7. 태그 제거
8. 속성값 변경과 가져오기
9. class 속성 추가와 제거
10. CSS 제어
복수의 명령을 조합하는 “메서드체인”
HTML/CSS를 조작하는 jQuery 명령어 정리

2-3 ‘이벤트’로 타이밍을 설정하자 - Ajax 사용하기
처리 타이밍을 결정하는 “이벤트”
HTML을 읽어 들이는 타이밍에 실행되는 ready()
다른 이벤트 처리에도 ready()는 필수 항목
이벤트의 기본을 click()으로 배우자
더블 클릭 이벤트를 감지하는 dbclick()
마우스의 버튼 조작을 감지하는 mousedown()/mouseup()
클릭될 때마다 다른 처리를 실행하는 toggle()
마우스오버/마우스아웃을 감지하는 mouseover()/mouseout()
마우스의 움직임에 맞춰서 처리를 실행하는 mousemove()
이벤트 발생시에 한 번만 처리를 실행하는 one()
설정되어 있는 이벤트 처리를 취소하는 unbind()
앞으로 추가될 태그에 이벤트 처리를 설정할 수 있는 live()
jQuery 이벤트 정리
[실무에서 자주 나타나는 함정] a 태그에 설정한 click 이벤트 처리가 동작하지 않는다!
[실무에서 자주 나타나는 함정] a 태그에 설정한 dbclick()이 동작하지 않아!
[JavaScript 원포인트 레슨] JavaScript로 텍스트 결합하기

2-4 폼 태그의 기능을 익혀보자
폼 태그의 기능을 충실히 제공하는 jQuery
1. 폼 태그의 값을 가져오고 변경하는 명령
2. 폼 태그에 관한 이벤트 처리
3. 폼 태그를 선택하는 셀렉터
[실무에서 자주 나타나는 함정] change()가 동작하지 않는다?
[JavaScript 원포인트 레슨] 조건에 따라 다른 처리를 가능하게 하는 if문

2-5 웹 페이지의 편리성을 높인다.
이미 잘 알려져 있는 “Ajax”란 무엇인가?
웹 페이지에 텍스트를 삽입하는 load()
load()를 이용하여 외부의 HTML 표시하기
XML 데이터를 가져와서 변환하여 표시하기
[실무에서 자주 나타나는 함정] “글자가 깨지는 경우 또는 읽어 들이지 않는 경우”
– Ajax를 사용할 때의 주의점
[jQuery 원포인트 레슨] 셀렉터로 지정된 태그에 반복 처리를 수행하는 each()



_주요 내용
난 편하게! 빠르게! 멋지게! 디자인한다
웹 디자이너, jQuery로 업그레이드합시다!

디자이너, 개발자에게 의존하지 말고 조금만 공부합시다.
HTML과 CSS로 아무리 사이트를 멋지게 만들었다 해도 사용자의 요구에 따라 시시각각 디자인을 바꾸기 위해서는 프로그래밍 영역이 필요합니다. jQuery는 이것을 쉽게 해주는 JavaScript 라이브러리이며 이 책은 디자이너도 쉽고 빠르게 배울 수 있도록 기초부터 설명하고 있습니다.

이젠 HTML과 CSS만 잘해서는 안 됩니다.
웹 표준에서는 구조와 표현을 분리하여 사이트를 설계하고 사용하는 능력이 중요합니다.  여기에 디자이너가 조금만 수고해서 jQuery를 배우고 활용한다면 디자인에 대한 유연성을 높이고 훨씬 큰 안목을 갖출 수 있습니다.

크로스 브라우징이 가능한 jQuery, 이젠 대세입니다.
크로스 브라우징은 모든 브라우저에서 똑같이 정보를 표현해줄 수 있다는 것을 의미합니다. 웹 표준과도 그 맥을 같이 합니다. 기존의 플래시로 디자인을 했다면 이젠 jQuery를 배워보세요.

실무에서 바로 활용할 수 있는 13가지 디자인 레시피 제공
스트라이프 테이블, 아코디언 패널, 마우스 롤링 등 다양한 기법을 적용한 jQuery 디자인 레시피를 상세한 설명과 함께 보여줍니다. 조금만 응용해도 독창적이고 멋진 UI를 만들 수 있습니다.

_편집자 코멘트
이 책을 진행하면서 진짜 웹 디자이너도 볼 수 있을까? 하는 의구심이 들었던 게 사실입니다. 아무리 jQuery가 사용하기 쉬운 라이브러리라도 자바스크립트라는 프로그래밍 언어니까요. 하지만, 몇 가지 기본 패턴만 익히면 금새 익숙해질 수가 있습니다. 복잡한 프로그래밍 지식은 감추고 예제 위주로 설명하기 때문에 쉽게 이해할 수 있습니다. 특히 HTML5와 CSS3를 이용해서 웹 표준 개발 방식으로 개발해야 하는 웹 디자이너나 개발자는 짧은 기간에 쉽게 익히고 아주 큰 효과를 볼 수 있을 것으로 기대합니다.

_저자 소개
Nishihata  Kazuma
to-R(http://www.to-r.net/) 대표, 웹 크리에이터. 
PHP 시스템 개발이나 CMS를 이용한 웹사이트 제작, SEO 등의 마케팅, 컨설팅, 웹 크리에이터를 위한 강좌 등의 활동을 하고 있다. 블로그 「to-R」(http://blog.webcreativepark.net/)에서는 JavaScript나 SEO, CSS, Movable Type 등의 웹 제작과 관계된 다양한 정보를 제공하고 있다.

_역자 소개
박건태
시스템 프로그래머이다. 현재 클라우드 컴퓨팅(Cloud Computing)과 콘텐츠 딜리버리 네트워크(CDN) 전문기업 ㈜솔루션 박스에서 Iass 기반 Cloud를 개발 중이다. 일본에서 임베디드 리눅스 기반의 다양한 어플리케이션을 개발했고 SI 업체에서 다수의 시스템을 개발했다. MVC를 확장한 경량 프레임워크를 개발해 오픈 소스로 제공한 뒤 귀국했다.

저서 <Jlet으로 배우는 위피 프로그래밍>(한빛미디어, 2005), 역서 <Java 언어로 배우는 리팩토링 입문>(한빛미디어, 2007), <프로그래밍 콘테스트 챌린징>(로드북, 2011)이 있다.

신대호
웹 프로그래머이다. 일본에서 웹 솔루션 관련 SI 업체에서 다수의 프로젝트를 진행하였고 스크립트 언어를 중점적으로 다루고 있다. 현재 게임 업체의 웹 서비스 개발을 하고 있다.  

posted by 로드북
:
IT 포스팅 2011. 11. 15. 02:39
ⓒ 손은영 & 로드북(www.roadbook.co.kr)
(2011년 12월 출간 예정인 <빅데이터 시대를 준비하는 NoSQL 핵심 가이드(가제)>의 실행 환경 구축을 실었습니다)

먼저 CentOS 5.4 설치방법입니다. 
 
1. CentOS 5.4 파일을 다운로드 받습니다.
 
5.7 버전 이후의 CentOS를 다운받으려면 아래 사이트에 가서 자신에게 가까운 지역을 고르면 됩니다.
 

하지만 CentOS 5.4는 아래 사이트를 통해 다운받으셔야 합니다.

위 주소에서 본인의 컴퓨터에 따라 i386과 x86_64 중 하나를 선택하여 ‘CentOS-5.4-i386-bin-1of6.iso’와 같은 .iso 파일을 클릭하여 받으시면 됩니다. 6개로 나뉘어져 있는데 기본적인 설치에는 1번 ~ 3번 파일만 받으셔도 됩니다. iso 파일을 다 받으면 CentOS를 설치합니다.

2. CentOS 설치
가상컴퓨터에 CentOS를 설치해 보도록 하겠습니다. VMware Player 4.0 버전을 사용하였습니다. VMware 홈페이지에서 30일 무료버전을 받으실 수 있습니다. 아니면 다음이나 네이버에서도 쉐어웨어를 받으실 수 있습니다. 편한 곳에서 받아서 설치하시면 됩니다.
 

설치한 VMware Player를 열고 CentOS를 설치하겠습니다. 먼저 VMware Player를 실행합니다. 


오른쪽 제일 위의 ‘Create a New Virtual Machine’옆의 그림을 클릭합니다.
 

 
여기서 ‘Installer disc image file(iso)’를 선택하고 Browser를 클릭하여 위에서 받은 CentOS 5.4 1번 파일을 찾아서 클릭한 후 Next 버튼을 누릅니다.
Linux 정보를 넣는 화면입니다. 사용하실 Full name과 User name 및 Password를 입력해주시면 됩니다. 여기서 입력한 패스워드가 사용자의 password 및 시스템 root 아이디의 패스워드가 됩니다.
 


posted by 로드북
:
자료실 2011. 11. 14. 19:44

jquery_sample.zip
6.27MB

<웹 디자이너를 위한 jQuery> 본문 예제소스입니다.

 
----------------------------------
chapter02/04/sample8.html은 아래 소스를 활용하세요~~. 댓글 참고.
sample8.html
다운로드

 

posted by 로드북
:
오탈자 정보 2011. 11. 14. 19:41
(오탈자 신고: chief@roadbook.co.kr 또는 댓글로 남겨주세요)

2012년 1월 1일 현재

-------- p.36(아래에서 4째줄, color 속성)_1쇄--------
(데벨님 제공) 

오류: read
수정: red
--------------------------------------  

-------- p.40(sample5.html 4째줄)_1쇄--------

오류: <sapn>
수정: <span>
-------------------------------------- 

-------- p.35(2번째 소스 박스)_1쇄--------
오류: funcition
수정: function
-------------------------------------- 

posted by 로드북
:
출간예정도서 2011. 11. 8. 22:41
안녕하세요. 로드북의 신간 예정 소식입니다.
jQuery에 관한 책으로 "간결하고 정교한 입문서"로 표현하고 싶습니다.

사실, jQuery는 웹 디자이너를 위해 나온 느낌입니다. HTML과 CSS를 조작해서 어떤 동적인 움직임을 주려면 과거엔 자바스크립트를 이용해서 상당히 난이도 있는 작업을 하였는데, 지금은 기본적인 명령(jQuery 함수)의 원리와 사용 방법을 알면 웬만한 건 개발자의 손을 빌리지 않고도 디자이너가 처리할 수 있게 된 것 같습니다.

이 책은 전반부는 아주 기본기를 탄탄히 해줄 수 있는 내용을 다루고 후반부에는 책의 절반 이상을 할해하여 13가지 레시피를 구체적으로 다루고 있습니다. 이중 몇가지를 소개합니다.

 1. 아코디언 패널 클릭해보세요! 


2. 툴팁 클릭해보세요!


3. 동적인 서브 메뉴 만들기 클릭해보세요!


4. 플로우팅 윈도우 표시하기 클릭해보세요!


5. 모달 윈도우 만들기 클릭해보세요!


6. 모달 윈도우에 종료표시를 달아보세요. 클릭해보세요!


7. 온라인 아마존 서점 따라해보기 클릭해보세요.
(5초 간격으로 자동으로 움직입니다)


8. 플로그인을 찾아서 활용해보세요. 클릭해보세요.



 Coming Soon!!

 
posted by 로드북
:
신간소개 2011. 10. 11. 12:10



제목: 프로그래밍 콘테스트 챌린징
지은이:Takuya Akiba, Yoichi  Iwata, Masatoshi Kitagawa
옮긴이: 박건태, 김승엽
페이지: 448
판형: 4x6배변형(188x235)
도수: 1도
정가: 25,000원
발행일: 2011년 10월 24일
ISBN: 978-89-966598-4-6



[절판된 도서입니다!!]


[강컴] [교보] [리브로] [반디] [11번가] [알라딘] [예스24] [인터파크]

Sample.pdf


_
도서 내용

국제/국내 프로그래밍 콘테스트를 준비하기 위한 책입니다. 하지만 프로그래머가 되고자 하는 학생이나 프로그래머도 "프로그래밍 뇌"를 강화하기 위해 학습할 수 있는 내용입니다.

문제들은 그렇게 어렵지는 않습니다. 주어지는 입력이 단순하기 때문에 손으로 그림을 그려가면서 풀어보면 대부분 풀리는 문제들입니다. 하지만, 이것을 (주어진 제한조건하에) 일반화하기 위해서는 상당히 많은 알고리즘 지식이 필요합니다. 바로 이러한 알고리즘을 제한 시간과 제한 조건에 맞게 프로그래밍할 수 있도록 도와주는 책입니다.

_대상 독자

프로그래머가 되고자 하는 학생

각종 프로그래밍 경시대회를 준비하는 학생

프로그래밍 뇌가 조금씩 작아지고 있다고 생각하는 프로그래머

알고리즘 면접을 보는 국제/국내 유수의 IT 기업 취업을 준비하고 있는 예비 프로그래머 

_목차

CHAPTER 1 프로그래밍 콘테스트 (초급편)

   1-1 프로그래밍 콘테스트란 무엇인가요?

   1-2 어떤 콘테스트가 있나요?

      세계적인 규모의 콘테스트 - Google Code Jam(GCJ)

      상위 랭크를 목표로! - TopCoder

      역사 깊은 콘테스트 - ACM/ICPC

      중학생, 고등학생을 위한 정보 올림피아드 - KOI/IOI

      웹에서 자동 채점 - online judge

   1-3 이 책은?

      다루는 내용

      사용하는 언어

      문제를 다루는 방법

      프로그램은

      이 책을 다 읽은 후

   1-4 어떻게 해답을 제출하나요?

      POJ에 제출하는 방법

      GCJ에 제출하는 방법

   1-5 효율적인 알고리즘을 목표로!

      계산량이란?

      실행시간이란?

   1-6 가볍게 워밍업

      먼저 간단한 문제부터

      POJ 문제 [Ants]

      허들이 높아진 [제비 뽑기]

_주요 내용

최고의 알고리즘을 찾을 때까지 당신의 뇌를 뛰게 하라!

극한의 알고리즘 트레이닝, 최고의 프로그래머를 꿈꾼다!


문제 해결 능력을 겨룬다!

성능, 문제 해결, 아이디어 등을 겨루는 다양한 프로그래밍 콘테스트(경시대회)가 있습니다. 이 책은 그 중에서 문제 해결을 겨루는 콘테스트를 다룹니다.

프로그래머로서 기초체력을 튼튼히!

프로그래밍 콘테스트에서는 효율적인 알고리즘을 생각하고 정확하게 구현해야 합니다. 다양한 문제에 대해 유연한 발상이 필요하고 기초적인 알고리즘 지식을 갖추어야 합니다. 말 그대로 콘테스트 준비를 함으로써 프로그래머로서 기초체력을 튼튼히 할 수 있습니다.

‘프로그래밍 뇌의 증강을 위해!

프로그래머가 되고자 하는 학생뿐만 아니라 현업 프로그래머도프로그래밍 뇌의 증강을 위해 한 번쯤 도전해볼 만합니다. 자신의 알고리즘 능력을 점검해볼 수 있고 응시자와 선의의 경쟁을 통해 실력을 가늠하고 학습 모티브를 얻을 수 있습니다.

다양한 콘테스트에 대비한다!

세계적인 규모의 콘테스트: Google Code Jam(GCJ)

상위 랭크를 목표로: TopCoder

역사 깊은 콘테스트: ACM/ICPC

중학생, 고등학생을 위한 정보 올림피아드:  KOI/IOI

유수 IT 기업의 면접에 대비한다!

구글, MS, 국내 유수의 IT 기업 등의 알고리즘 능력 점검을 위한 면접 시험에 대비할 수 있습니다.

 _편집자 코멘트

이 책에서 주어진 문제는 눈으로 풀어도 출력값은 구할 수 있습니다. 하지만 이것을 일반화하기 위해서는 특수한 알고리즘 기법이 필요합니다. 수많은 알고리즘을 책으로 무진장 많이 학습했다고 해서 쉽게 그러한 알고리즘 기법을 떠올리지는 못하겠죠? 이 책은 바로 이론으로만 알고 있는 알고리즘 지식을 어떤 상황에서도 생각해내서 응용할 수 있게 해주는 책입니다. 물론, 간단하게 이론을 정리해서 설명해주기도 합니다.

이 책이 여러 유용한 점이 있기는 하지만, 시험만을 준비하기 위해 문제 유형과 해법을 달달 외우기만 한다면, 프로그래밍 능력에서 중요한 요소인 창의력과 끈질기게 해법에 도전하는 지구력은 결코 얻을 수 없을 것입니다.

이 책을 학습할 때 생각의 깊이를 좀더 깊게 파고 창의적 사고의 너비를 좀더 넓게 두었으면 좋겠습니다. 누구에게는 힘든 정신적 노동일 수 있고 누구에게는 뇌에서 우러나는 소리 없는 땀이 주는 맛을 크게 맛볼 수 있는 계기가 될 것으로 생각합니다. 한번 도전해보세요!

, 알고리즘 면접을 치르는 IT 기업의 취업 준비에도 도움이 될 수 있습니다.

"최고의 알고리즘을 찾을 때까지 당신의 뇌를 뛰게 하라!"

_저자 소개

[지은이]

Takuya Akiba

1988년 출생. 2007년 동경대학 입학. 프로그래밍 콘테스트에서는 아이디 iwi로 활약 중. 주요 전적은 Topcoder Open 2009에서 9.

Yoichi Iwata

1988년 출생. 2007년 동경대학 입학. 프로그래밍 콘테스트에서는 아이디 wata로 활약 중. 주요 전적은 Google Code Jam 2009에서 3.

Masatoshi Kitagawa

1988년 출생. 2007년 동경대학 입학. 프로그래밍 콘테스트서는 아이디 kita_masa로 활약 중. 주요 전적은 ICPC World Finals 2010에서 16.

[옮긴이]

박건태

시스템 프로그래머이다. 현재 클라우드 컴퓨팅(Cloud Computing)과 콘텐츠 딜리버리 네트워크(CDN) 전문기업 ㈜솔루션 박스에서 Iass 기반 Cloud를 개발 중이다. 일본에서 임베디드 리눅스 기반의 다양한 어플리케이션을 개발했고 SI 업체에서 다수의 시스템을 개발했다. MVC를 확장한 경량 프레임워크를 개발해 오픈 소스로 제공한 뒤 귀국했다.

저서 <Jlet으로 배우는 위피 프로그래밍>(한빛미디어, 2005), 역서 <Java 언어로 배우는 리팩토링 입문>(한빛미디어, 2007)이 있다.

김승엽

일본에서 시스템 프로그래머로 시작하여, 일본 기업의 임베디드 시스템 개발센터 소장직을 역임했고 한국으로 돌아와서 현재 ㈜디지털크래프트 코리아의 대표이사를 맡고 있다. 일본에서 RTOS 분야와 임베디드 컴포넌트 시스템 분야에서 활동했고 일본의 비영리 법인단체인 TOPPERS 프로젝트에서 많은 성과물을 오픈 소스로 제공하고 있다. 현재는 TOPPERS 프로젝트의 한국보급WG에서 활동하고 있다.

posted by 로드북
:
오탈자 정보 2011. 10. 11. 12:09
(오탈자 신고: chief@roadbook.co.kr 또는 댓글로 남겨주세요)


2011년 11월 7일 현재

-------- p.30(1째줄)_1쇄--------
오류: Lcm
수정: L cm
--------------------------------------

-------- p.31(표에서)_1쇄--------
(ChanMin Kim님 제보)
오류: 1048567
수정: 1048576
--------------------------------------

-------- p.52(15째줄)_1쇄--------
오류: d[iㄴ][j]
수정: d[i][j]
--------------------------------------

-------- p.57(아래에서 3째줄)_1쇄 --------
오류: 6(500원짜리 1개, 50원짜리 2개, 5원짜리 2개 합계 6개)
수정: 6(500원짜리 1개, 50원짜리 2개, 10원짜리 1개, 5원짜리 2개 합계 6개)
---------------------------------------------------------------------

-------- p.64(그림 정정)_1쇄 --------
오류 : 맨 오른쪽 좌표값 50 누락


수정:


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

-------- p.71_1쇄--------
(정현환님 제보)
"동적 설계법(dynamic programming)"이라는 용어와 241페이지의 "동적 계획법"은 같은 용어입니다. "동적 계획법으로 통일합니다.
--------------------------------------

-------- p.74_1쇄----------------------------------------------------
(정현환님 제보)
memset을 이용하지 못하는 경우는 "int 배열과 같은 각 원소에 할당된 크기가 1byte보다 큰 배열일 경우다."로 좀더 구체적으로 표현하겠습니다.
----------------------------------------------------------------------

-------- p.74 & p.88_1쇄---------------------------------------------
(정현환님 제보)
74페이지의 LCS(최장 공통 부분열)은 <최장 공통 부분 서열(혹은 수열)>이라는 용어도 함께 쓰임을 알려드립니다.
88페이지의 LIS(최장 증가 부분열) 역시 <최장 증가 부분 서열>이라는 표현도 함께 쓰임을 알려드립니다.
------------------------------------------------------------
-------- p.74(마지막 줄 수식에서)_1쇄 ---------------------------------------------
오류: max(dp[i+1][j], dp[i+1][j-w[i]+v[i]) (그외) 
수정: max(dp[i+1][j], dp[i+1][j-w[i]]+v[i]) (그외) 
--------------------------------------

-------- p.79_1쇄(DP 테이블에서)--------------------------------------
(장원영님, 궁금님 제보)
오류: j/i
수정: i/j
---------------------------------------------------------------------- 

-------- p.86(마지막 소스 바로 위)_1쇄--------
(ChanMin Kim님 제보)
오류: dp[i+1][j] = (0 <= k <= m_i 그리고 k x a_i<=j에서 dp[i][j-k x a_i]가 참이 되는 k가 존재한다. 
수정:  dp[i+1][j] = (0 <= k <= m_i 그리고 k x a_i<=j에서) dp[i][j-k x a_i]가 참이 되는 k가 존재한다. 
--------------------------------------

-------- p.86(아래 수식 바로 윗단락 2째줄)_1쇄--------
(장원영님 제보)
오류: K(>0)
수정: k(>0)
-------------------------------------- 

-------- p.87(마지막 수식)_1쇄--------
(ChanMin Kim님 제보)
오류: -1(j<a) 또는 dp[i+1][j-a_i]<= 0
수정: -1 (j<a_i 또는 dp[i+1][j-a_i] ≦ 0)
--------------------------------------

-------- p.100(소스 9번째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: heap[i]=x;
수정: 인덴트 오류입니다. 들여쓰기가 한번 더 되어야 합니다.
--------------------------------------

-------- p.107_1쇄--------
(ChanMin Kim님 제보)
오류: p108의 bool타입의 find 함수명 부분  
수정: 인덴트 오류입니다. 들여쓰기가 한칸 빠져야 합니다.
오류: p109의 마지막 else 부분  
수정: 인덴트 오류입니다. 들여쓰기가 한칸 추가되어야 합니다.
--------------------------------------

-------- p.107_1쇄--------
(ChanMin Kim님 제보)
오류: 자식 노드 11과 17이 길을 잃습니다.  
수정: 자식 노드 10과 17이 길을 잃습니다.
--------------------------------------

-------- p.110(소스 아래에서 5째줄, 2째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: printf("%d\n", *ite);  과  return 0;
수정: 인덴트 오류입니다. 들여쓰기가 한칸 추가되어야 합니다.
--------------------------------------

-------- p.134(본문 3째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: d[i]=d[i]+(i부터 j의 변(edge)의 코스트)
수정: d[j]=d[i]+(i부터 j의 변(edge)의 코스트)
--------------------------------------
 
-------- p.137(소스 위 2째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: 음의 폐로가 있는지 없는지는 d[i][j]가 
수정: 음의 폐로가 있는지 없는지는 d[i][i]가
--------------------------------------

-------- p.137(8째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: d[O][i] 
수정: d[0][i]
--------------------------------------

-------- p.137(13째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: d[k][[i] 
수정: d[k][i]
--------------------------------------

-------- p.148(3째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: d[i+1]+O>=d[i] 
수정: d[i+1]+0>=d[i]
--------------------------------------

-------- p.150(small과 Large 제약조건_1쇄--------
(ChanMin Kim님 제보)
오류: x_1, y_1   x_1, y_1
수정: x_i, y_i     x_i, y_i
--------------------------------------

-------- p.151(아래에서 10째줄_1쇄--------
(ChanMin Kim님 제보)
오류: v_2가 내림차순으로 정렬되어 있지 않으면 y_1 < y_2 이 되는
수정: v_2가 내림차순으로 정렬되어 있지 않으면 y_i < y_j 이 되는
--------------------------------------
 
-------- p.154(4째줄_1쇄--------
(ChanMin Kim님 제보)
오류: 00...010...0
수정: 00...0, 10...0
--------------------------------------

-------- p.155(아래에서 5째줄_1쇄--------
(ChanMin Kim님 제보)
오류: a_1,a_2,a_Q
수정: a_1, a_2, ..., a_Q
--------------------------------------

-------- p.157(소스  중간의 for문 인덴트 오류)_1쇄--------
(ChanMin Kim님 제보)
오류: dp[q][q + 1] = 0;
수정: 들여쓰기 해야 함
--------------------------------------

-------- p.164(마지막줄)_1쇄--------
(ChanMin Kim님 제보)
오류: |y1-y2=0
수정: |y1-y2|=0
--------------------------------------

-------- p.173_1쇄--------
(정현환님 제보)
오류: 제곱승
수정: 거듭제곱
--------------------------------------

-------- p.173(아래에서 4째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: Biginteger
수정: BigInteger
--------------------------------------

-------- p.178(박스안 1째줄)_1쇄--------
(ChanMin Kim님 제보)
오류: a_1 >= k
수정: a_i >= k
--------------------------------------

-------- p.165(아래에서 3째줄)_1쇄 --------
오류 : O와 c의 최대공약수는
수정: 0와 c의 최대공약수는
-----------------------------------------  

-------- p.182(Column 4째줄)_1쇄 --------
오류 : 10-30배가 되어
수정: 10^-30배가 되어
-----------------------------------------  

-------- p.185(수식 설명 부분)_1쇄 --------
(ChanMin Kim님 제보) 
오류


수정

 
-----------------------------------------  
 
-------- p.242 외_1쇄 --------
(정현환님 제보)
오류 : 메모화
수정: 메모이제이션
-----------------------------------------   

-------- p.315_1쇄 --------
(정현환님 제보)
오류 : 지금까지 소개한 기법을 이용해서, GCJ에 의해 발전된 문제를 실제로 해결해봅시다.
수정:  GCJ 문제 중 지금까지 공부한 것을 이용해서 좀 더 어려운 문제를 해결해봅시다.
-----------------------------------------    

-------- p.327(박스 안 1째줄)_1쇄 -------------
(정현환님 제보)
오류 : 기하의 문제
수정:  기하 문제
-----------------------------------------  

-------- p.348_1쇄 --------
(정현환님 제보)
포제원리는 '포함-배제 원리' 라는 용어와 같습니다.
-----------------------------------------  

-------- p.428_1쇄 --------
(정현환님 제보)
'다배장 연산(bignum arithmetic)'은 '큰수 연산(big-number arithmetic)'이라는 표현과 같습니다.
-----------------------------------------  

--------계산량이라는 용어에 대해--------
(정현환님 제보)
"계산량은 O(X)다" 라는 표현이 많이 보이는데, 보통 big-Oh notation에 대해서는 "시간 복잡도(time complexity)"로 표기를 합니다만, 계산량이라는 용어를 일부러 계속 넣은 것은, 알고리즘 용어보다는 계산하는 양이라는 의미로 이해할 수 있도록 사용되었습니다. 시간 복잡도라고 했다면 책이 조금 무거워질 것 같아 계산량이라는 표현 그대로 사용했으니 참고 바랍니다.
-----------------------------------------------------

--------하프만이라는 용어에 대해--------
(ChanMin Kim님 제보)
"하프만"은 "허프만" 또는 Huffman이라는 용어가 많이 사용됩니다. 
(근거: http://word.tta.or.kr/index.jsp 에서 허프만 포함하는 결과 검색)
------------------------------------------------------ 



posted by 로드북
:
출간예정도서 2011. 10. 4. 13:04
부제는 아래와 같습니다.
 for GCJ, TopCoder, ACM/ICPC, KOI/IOI

부제 그대로 국제/국내 프로그래밍 콘테스트를 준비하기 위한 책입니다. 현업 프로그래머도 "생각의 뇌"를 강화하기 위해 학습해볼 만하다고 생각합니다.

문제들은 그렇게 어렵지는 않습니다. 주어지는 입력이 단순하기 때문에 손으로 그림을 그려가면서 풀어보면 대부분 풀리는 문제들입니다. 하지만, 이것을 일반화하기 위해서는 (즉, 주어진 제한조건하에) 상당히 많은 알고리즘 지식이 필요합니다.

이 책이 여러 유용한 점이 있기는 하지만, 시험만을 준비하기 위해 문제유형와 해법을 달달 외우기만 한다면, 프로그래밍 능력에서 중요한 요소인 창의력과 끈질기게 해법에 도전하는 지구력은 결코 얻을 수 없을 것입니다.

이 책을 학습할 때 생각의 깊이를 좀더 깊게 파고 창의적 사고의 너비를 좀더 넓게 두었으면 좋겠습니다. 누구에게는 힘든 정신적 노동일 수 있고 누구에게는 뇌속에서 우러나는 소리없는 땀이 주는 맛을 크게 맛볼 수 있는 계기가 될 것으로 생각합니다. 한 번 도전해보세요!

다음 그림은 이 책의 예제 중 하나입니다.

 
보면 아시겠지만, 눈으로 풀어도 출력값은 구할 수 있습니다. 하지만, 이것을 일반화하기 위해서는 '너비우선탐색'이라는 특수한 알고리즘 기법이 필요합니다. 너비우선탐색을 알고리즘 책으로 무진장 많이 학습했다고 해서 쉽게 그러한 알고리즘 기법을 떠올리지는 못하겠죠?

이 책은 바로 이론적으로만 알고있는 알고리즘 지식을 어떤 상황에서도 생각해내서 응용할 수 있게 해주는 책입니다. 물론, 간단하게 이론을 정리해서 설명해주기도 합니다.

표지를 첨부합니다. 한번 살펴보세요. 약간 강하게 헤드카피를 적어보았습니다." 참, 올 겨울 방학때 대학생이라면 한번 이 책에 도전해보는 것도 좋을 것 같습니다. 그리고 알고리즘 시험을 치르는 IT 기업의 취업 준비에도 도움이 될 수 있습니다.

"최고의 알고리즘을 찾을 때까지 당신의 뇌를 뛰게 하라!!"

 

posted by 로드북
: