메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

JavaScript Cookbook : 한 권으로 끝내는 문제 해결

JavaScript Cookbook : 한 권으로 끝내는 문제 해결

한빛미디어

번역서

절판

  • 저자 : 셸리 파워즈
  • 번역 : 김태곤
  • 출간 : 2011-12-16
  • 페이지 : 624 쪽
  • ISBN : 9788979148725
  • 물류코드 :1872
  • 초급 초중급 중급 중고급 고급
4.5점 (8명)
좋아요 : 19

바퀴를 재발명할 필요는 없습니다!

문제가 생길 때마다 바퀴를 다시 만들 필요가 없습니다. 찾고자 하는 해결책이 가득 들어 있습니다. 일반적인 프로그래밍 작업, 크로스 브라우저 프로그램을 만드는 방법 등의 코드 레시피가 수록되어 있습니다. 프로젝트에 바로 적용할 수 있는 예제 코드를 제공합니다.

최신 기술 반영

ECMAScript 5와 HTML5에 새로 추가된 기술도 다루고 있습니다. 크로스 도메인 위젯 통신 기술, HTML5의 audio/video 요소, canvas 요소 등을 사용하는 방법은 물론 이를 활용한 높은 품질의 프로그램 인터페이스 작성 방법을 여러 레시피에 걸쳐 설명합니다.

  • 인터랙티브한 웹/데스크톱 프로그램 작성
  • String, Array, Number, Math 등 자바스크립트 객체 다루기
  • 자바스크립트를 사용한 SVG, 캔버스 처리
  • 간단한 방법부터 복잡한 방법까지 다양한 방식으로 데이터를 저장하는 방법
  • HTML5에 새로 추가된 audio, video 요소 사용
  • Web Worker를 사용한 동시성 프로그래밍 구현
  • jQuery 플러그인 작성 및 사용
  • ARIA와 자바스크립트를 사용해 웹 프로그램에 접근성 더하기

추천사

"코딩 퍼즐에서 빠져 나오기 위한 자바스크립트 해결책이나 영감을 얻기가 무척 쉬워졌다. 셸리 파워즈가 단 한 권의 책에 모아놓은 훌륭한 해결책과 각종 기법은 웹 디자이너에게 큰 도움이 될 것이다."
- 크리스토퍼 슈미트, 『CSS Cookbook』의 저자

셸리 파워즈 저자

셸리 파워즈

셸리 파워즈는 웹 기술 분야에 종사하며 그와 관련된 저술 활동을 해 왔습니다. 최초의 저작이었던 자바스크립트 관련 서적부터 최근의 그래픽/디자인 도구 관련 서적까지 15년간 다양한 분야에 대한 책을 출간해 왔으며 얼마 전에는 시맨틱 웹, Ajax, 자바스크립트, 웹 그래픽과 관련한 책을 집필했습니다. 그녀는 또한 꽤 열성적인 아마추어 사진작가이자 웹 개발 마니아입니다.

김태곤 역자

김태곤

2002년부터 웹 개발자로 지내다가 자바스크립트의 매력에 빠진 후 2006년 NHN에 자바스크립트 개발자로 입사하여 네이버 블로그, 스마트 에디터, 진도 자바스크립트 프레임워크, 네이버 지도 등의 프로젝트에 참여했고, 오픈소스 프로젝트인 XpressEngine(구 제로보드)에서 자바스크립트 개발을 전담했었다. 현재는 미국의 스타트업 기업인 ThingD에서 프런트엔드 엔지니어로 일하고 있다. HTML5를 비롯한 웹에서 사용하는 자바스크립트는 물론 NodeJS, 모바일 앱, 브라우저 확장 기능, 데스크톱 애플리케이션 등 웹 브라우저를 벗어난 자바스크립트에도 많은 관심을 가지고 있다.

CHAPTER 1 자바스크립트 문자열 다루기
  00 들어가며 
  01 두 개 이상의 문자열 합치기 
  02 문자열과 다른 자료형 합치기 
  03 문자열 비교하기
  04 문자열에서 부분 문자열 검색하기 
  05 문자열에서 부분 문자열 추출하기 
  06 문자열이 존재하는지 또는 빈 문자열인지 확인하기 
  07 키워드 문자열을 여러 개의 키워드로 나누기 
  08 특수 문자 삽입하기 
  09 textarea를 줄별로 처리하기 
  10 문자열 끝 공백 제거하기 
  11 문자열 왼쪽 또는 오른쪽에 문자열 채워 넣기 

CHAPTER 2 정규표현식 사용하기
  00 들어가며 
  01 검색하는 문자열이 존재하는지 확인하기 
  02 대소문자를 구분하지 않고 문자열 검색하기 
  03 사회보장번호 유효성 검사하기 
  04 패턴과 일치하는 모든 부분을 찾고 강조하기 
  05 패턴을 새로운 문자열로 치환하기 
  06 캡처 괄호를 사용하여 문자열 안의 단어 교환하기
  07 정규표현식을 사용해서 양끝 공백 제거하기 
  08 HTML 태그를 명명된 엔티티로 치환하기 
  09 특수 문자 검색하기 

CHAPTER 3 날짜, 시간, 그리고 타이머
  00 들어가며 
  01 오늘 날짜 출력 
  02 UTC 날짜 및 시간 출력하기 
  03 ISO 8601 형식으로 날짜 출력하기 
  04 ISO 8601 형식의 날짜를 Date 객체로 변환하기 
  05 특정 날짜로 객체 생성하기 
  06 미래 날짜 만들기 
  07 경과 시간 구하기 
  08 타임아웃 만들기
  09 반복 타이머 만들기 
  10 함수 클로저를 타이머와 함께 사용하기 

CHAPTER 4 숫자와 수학 연산 다루기
  00 들어가며 
  01 증분 카운터 
  02 10진수를 16진수로 변환하기 
  03 랜덤 숫자 생성기 작성하기 
  04 랜덤 색상 만들기 
  05 테이블에 있는 문자열을 숫자로 변환하기 
  06 테이블에서 같은 열에 있는 모든 숫자 합산하기 
  07 각도와 라디안 변환하기 
  08 페이지 요소 안에 딱 맞는 원의 반지름과 중심 구하기 
  09 원호 길이 구하기 

CHAPTER 5 배열과 반복문 다루기
  00 들어가며 
  01 반복문에서 배열 사용하기 
  02 다중 배열 작성하기 
  03 배열에서 문자열 만들기 
  04 배열 정렬하기 
  05 값에 순차적으로 저장하고 접근하기 
  06 값을 저장하고 역순으로 접근하기 
  07 기존 배열의 부분 집합으로 새 배열 작성하기 
  08 배열 탐색하기 
  09 다차원 배열을 평평하게 만들기 
  10 배열 원소를 검색하여 없애거나 바꾸기 
  11 각 배열 원소에 함수 적용하기 
  12 배열의 모든 원소에 함수를 적용하고 새로운 배열 반환하기 
  13 값을 걸러낸 배열 작성하기 
  14 배열 콘텐츠 유효성 검사하기 
  15 연관 배열을 사용해서 폼 요소의 이름과 값 저장하기 

CHAPTER 6 재사용 가능한 자바스크립트 함수 작성하기
  00 들어가며 
  01 재사용 가능한 코드 블록 작성 
  02 함수에 데이터를 전달하고 값 받기 
  03 함수에 복잡한 데이터 객체 전달하기 
  04 실행 시간에 함수를 동적으로 작성하기 
  05 함수를 다른 함수의 인수로 전달하기 
  06 재귀 알고리즘 구현하기 
  07 상태를 기억하는 함수 작성 
  08 일반화된 커링 함수로 프로그램 성능 개선하기 
  09 메모이제이션을 통한 프로그램 성능 개선 
  10 익명 함수를 사용해서 전역 변수 감싸기 

CHAPTER 7 이벤트 다루기
  00 들어가며 
  01 페이지를 완전히 읽어 들인 순간을 탐지하기 
  02 이벤트 객체를 사용해서 마우스가 클릭된 위치 캡처하기 
  03 일반적이고 재사용 가능한 이벤트 처리 함수 작성하기 
  04 변화된 환경에서 이벤트 취소하기 
  05 중첩된 요소로 이벤트 전파 방지하기 
  06 키보드 동작 캡처하기 
  07 HTML5 드래그 앤 드롭 사용하기 
  08 사파리의 방향 전환 이벤트와 다른 모바일 개발 환경 사용하기 

CHAPTER 8 브라우저 객체
  00 들어가며 
  01 웹 페이지 방문자에게 동작 확인하기 
  02 단순한 모양의 새 브라우저 창 만들기 
  03 웹 페이지에 접근한 브라우저의 정보 확인하기 
  04 페이지를 떠날 때 경고하기 
  05 색상 지원에 따라 스타일시트 변경하기 
  06 페이지 크기에 따라 이미지 크기 조정하기 
  07 CMS 템플릿 페이지에 빵 부스러기 만들기 
  08 동적인 페이지에서 북마크하기 
  09 뒤로 버튼, 페이지 새로 고침 후 상태 보존하기 

CHAPTER 9 폼 요소와 유효성 검사
  00 들어가며 
  01 폼 입력값에 접근하기 
  02 동적으로 폼 요소를 사용 가능 또는 불가능하게 만들기 
  03 이벤트에 따라 폼 요소에서 정보 가져오기 
  04 라디오 버튼을 클릭하면 동작하기 
  05 올바른 전화번호인지 확인하기 
  06 폼 전송 취소하기 
  07 폼 반복 전송 방지하기 
  08 폼 요소를 숨기거나 표시하기 
  09 다른 폼에서 선택한 값에 따라 선택 목록 수정하기 

CHAPTER 10 디버깅과 에러 처리
  00 들어가며 
  01 자바스크립트를 지원하지 않는 환경 처리 
  02 함수에서 에러 확인하기 
  03 경고창을 사용한 간단한 디버깅 
  04 에러를 잡아내고 적절하게 처리하기 
  05 에러 메시지 보내기 
  06 파이어폭스의 파이어버그 사용하기 
  07 파이어버그로 중단점을 설정하고 데이터 조사하기 
  08 파이어폭스와 콘솔 
  09 IE 내장 디버거 사용 
  10 IE 개발자 도구에서 중단점 설정 
  11 오페라의 드래곤플라이 
  12 드래곤플라이로 중단점 설정하기 
  13 사파리 개발자 도구 사용 
  14 사파리 디버거에서 중단점 설정하기 
  15 크롬에서 디버깅하기 

CHAPTER 11 페이지 요소에 접근하기
  00 들어가며 
  01 주어진 요소에 접근하여 부모와 자식 요소 찾기 
  02 웹 페이지의 모든 이미지에 접근하기 
  03 게시물의 모든 이미지 찾기 
  04 선택자 API를 사용한 게시물 내 모든 이미지 찾기 
  05 그룹 요소의 부모 요소 찾기 
  06 모든 요소 내부의 첫 번째 문단 강조하기 
  07 무순서 목록을 줄무늬로 만들기 
  08 주어진 클래스를 가진 모든 요소의 배열 만들기 
  09 속성이 같은 요소 모두 찾기 
  10 체크된 항목 모두 찾기 
  11 테이블의 한 행에 있는 모든 값 합산하기 
  12 요소 속성 가져오기 
  13 요소의 스타일 정보 가져오기 

CHAPTER 12 요소와 속성 생성 및 제거
  00 들어가며 
  01 innerHTML: 콘텐츠를 추가하는 빠르고 쉬운 방법 
  02 페이지 요소 앞에 새 요소 삽입하기 
  03 새로운 요소를 페이지 끝에 추가하기 
  04 HTML5 요소를 구버전의 IE에서 사용하기 
  05 새 문단 추가하기 
  06 새 문단에 텍스트 추가하기 
  07 기존 요소에 속성 추가하기 
  08 불리언 속성 테스트하기 
  09 속성 제거하기 
  10 문단 이동 
  11 링크를 각주 기호로 바꾸기 
  12 테이블에 행 추가하기 
  13 div 요소에서 문단 제거하기 
  14 HTML 테이블에서 행 제거하기 
  15 요소의 CSS 스타일 속성 바꾸기 

CHAPTER 13 웹 페이지 공간 다루기
  00 들어가며 
  01 웹 페이지 영역의 크기 
  02 요소 크기 측정하기 
  03 요소의 위치 정하기 
  04 페이지 영역 감추기 
  05 접었다 펼 수 있는 영역 만들기 
  06 페이지 오버레이 추가 
  07 탭 페이지 작성 
  08 팝업 정보창 만들기 
  09 사이드바의 크기를 변경하거나 접기 

CHAPTER 14 자바스크립트, CSS, ARIA를 사용해서 접근성 있는 인러택티브 효과 만들기
  00 들어가며 
  01 숨겨진 페이지 영역 표시하기 
  02 경고 메시지 만들기 
  03 입력하지 않았거나 잘못 입력한 폼 필드 강조하기 
  04 페이지 오버레이에 키보드 접근성 추가하기 
  05 접히는 폼 영역 만들기 
  06 색상 번쩍임으로 동작의 결과 알려 주기 
  07 탭 페이지 프로그램에 ARIA 속성 추가하기 
  08 라이브 영역 

CHAPTER 15 미디어와 인터랙티브 애플리케이션 작성하기
  00 들어가며 
  01 캔버스에서 간단한 도형 그리기 
  02 IE에서 캔버스 사용하기 
  03 캔버스에 동적인 라인 차트 그리기 
  04 SVG 파일에 자바스크립트 추가하기 
  05 자바스크립트에서 SVG에 접근하기 
  06 인터넷 익스플로러에서 SVG 사용하기 
  07 HTML에 포함된 SVG를 인터랙티브하게 다루기 
  08 수학 함수를 사용해서 아날로그 SVG 시계 만들기 
  09 SVG와 캔버스 요소의 통합 
  10 파이어폭스, 웹킷/사파리에서 WebGL 사용하기 
  11 오디오 파일이 재생을 시작할 때 코드 실행하기 
  12 자바스크립트와 video 요소로 동영상 재생하기 

CHAPTER 16 자바스크립트 객체
  00 들어가며 
  01 기본 자바스크립트 객체 정의하기 
  02 객체 멤버를 비공개로 만들기 
  03 프로토타입으로 객체 확장하기 
  04 객체에 Getter/Setter 추가하기 
  05 객체의 기능 상속하기 
  06 새로운 속성을 정의하여 객체 확장하기 
  07 객체 속성 열거하기 
  08 객체 확장 방지하기 
  09 속성 추가 및 속성 서술자 변경 금지 
  10 속성 불변 객체 만들기 
  11 일회성 객체와 네임스페이스 
  12 Prototypebind 사용 
  13 객체 메서드 체이닝 

CHAPTER 17 자바스크립트 라이브러리
  00 들어가며 
  01 코드 패키징하기 
  02 JsUnit을 사용해서 코드 테스트하기 
  03 라이브러리 최소화하기 
  04 라이브러리 호스팅하기 
  05 외부 라이브러리 사용하기: jQuery 기반 프로그램 만들기 
  06 jQuery 플러그인 사용하기 
  07 jQuery 플러그인 만들기 
  08 여러 개의 라이브러리를 안전하게 사용하기 

CHAPTER 18 통신
  00 들어가며 
  01 XMLHttpRequest 객체에 접근하기 
  02 데이터 전송을 위한 준비 
  03 Ajax 전송 타입 고르기 
  04 Ajax 요청에 콜백 함수 추가하기 
  05 에러 확인하기 
  06 텍스트 결과 처리 
  07 Ajax를 다른 도메인으로 요청하기(JSONP 사용) 
  08 서버 데이터를 기반으로 선택 목록 만들기 
  09 타이머를 사용해서 페이지를 자동으로 업데이트하기 
  10 postMessage로 창을 가로질러 통신하기 

CHAPTER 19 구조적인 데이터 다루기
  00 들어가며 
  01 Ajax 호출에서 반환받은 XML 문서 처리하기
  02 XML 트리에서 적절한 데이터 추출하기 
  03 JSON으로 자바스크립트 객체 만들기 - 오랜 방식 
  04 JSON 형식 문자열 해석하기 
  05 객체를 JSON 문자열로 변환하기 
  06 hCalendar 마이크로포맷을 캔버스 기반 그래프로 변환하기 
  07 rdfQuery를 사용한 RDFa 수집 및 JSON 변환 그리고 jQuery RDF 플러그인 

CHAPTER 20 데이터 저장
  00 들어가며 
  01 URL을 사용한 정보 보존 
  02 쿠키로 정보 보존하기 
  03 historypushState 메서드와 windowonpopevent를 사용한 정보 보존 
  04 sessionStorage 사용하기 
  05 로컬 저장소에 클라이언트 데이터 저장하기 
  06 관계형 데이터베이스에 데이터 저장하기 

CHAPTER 21 브라우저를 벗어난 자바스크립트
  00 들어가며 
  01 브라우저 플러그인, 확장 기능 만들기 
  02 데스크톱과 모바일 위젯 만들기 
  03 폰갭으로 아이폰, 안드로이드, 블랙베리 앱 만들기 
  04 자바스크립트로 기능 확장하기 
  05 Web Worker와 File API를 사용해서 효율적인 데스크톱 애플리케이션 만들기

안녕하세요
답변 감사드립니다.

말씀하신대로 전역 플래그를 빼고 실행시켜보니 무한루프에 빠지는 걸 확인했습니다.
감사합니다.

정규 표현식의 결과에 대해서는 아직도 의문이 많아 추가 질문드리고자 합니다.

1. 정규 표현식 결과의 input이나 index같은 property는 어디서 나오는지 의문입니다. 그 속성들은 배열과는 상관없는 속성 아닌지요?

2. 해당 예제를 테스트해보면 length가 늘 1입니다. length가 1인 배열을 반환할거라면 배열을 반환하는 이유를 이해하기 어렵습니다.

3. exec 메소드의 결과물이 aaa라면 aaa[0], aaa[1] 이런 식으로 접근해야 배열의 값을 가져올수 있다고 저는 생각하는데 그냥 aaa를 찍어도 aaa[0]의 값과 동일한 결과를 보여줍니다.

제가 자바스크립트의 배열을 잘못 알고 있어서 그런 건지는 모르지만 참 이해하기 어렵습니다. 그래서 정규표현식의 결과물은 배열이 아니라 특정한 객체가 아닌가 하는 의문이 드는 겁니다.

자꾸 번거롭게 해서 죄송합니다.

제가 테스트한 소스입니다.

function aaa() {

var searchString = "Now is the time and this is the time and that is the time";
var pattern = /t\w*e/g;
var matchArray;

var str = "";
while( (matchArray = pattern.exec(searchString)) != null)
{
alert(typeof matchArray);
alert(matchArray.input);
alert(matchArray.length);
alert(matchArray[0]);
alert(matchArray[1]); // undefined
alert(matchArray);

str += "at " + matchArray.index + " we found " + matchArray + ".
";
}

alert(str);


}

window.onload = aaa();

역자의 답변입니다.

----------------------------------------------
안녕하세요, 자바스크립트 쿡북 번역자 김태곤입니다.

우선 질문하신 내용을 두 가지로 이해했습니다.

1. RegExp.exec에서 배열을 반환한다는 내용이 이상하다.
2. while문을 사용할 것이라면 어째서 "전역 플래그"를 사용했나?

먼저 1번 질문에 대해서 답변을 드리면, exec 메소드에서 반환하는 값은 책에 나와있는대로 항상 배열(또는 null)이 맞습니다.
일반적으로 정규표현식에서 0번은 "패턴과 일치하는 부분 전체"가 되고, 1번 이후는 서브 패턴(subpattern, 책에서는 "부분 문자열"라는 용어도 비슷하게 사용했습니다)으로 묶은 부분에 해당합니다. 예를 들어, 정규표현식 패턴을 /t(\w*)e/g로 바꾸면 이 정규표현식을 실행(exec)한 결과는 항상 크기가 2인 배열이 될 것이고 반환된 배열의 두 번째 원소는 t와 e 사이의 문자열이 될 것입니다.

두 번째 질문의 내용은 올려주신 코드를 다시 한 번 실행해보시라는 대답부터 드리고 싶습니다.
정규표현식이 스펙대로 작동했다면 분명 무한루프에 빠져야 하는 것이 맞습니다. 정규표현식에 전역 플래그를 설정하지 않으면 exec 메소드는 "항상 처음부터" 일치하는 부분을 찾기 때문입니다. 반면, 전역 플래그를 설정해두면 대상 문자열에서 주어진 패턴을 더 이상 찾을 수 없을 때까지는 항상 "일치했던 문자열 끝"에서 시작합니다. 실제로 저 역시 올려주신 코드를 실행한 후 무한루프를 경험할 수 있었습니다.

제가 질문을 잘 이해하고 적절한 답변을 드렸는지 모르겠습니다.
혹 부족한 부분이 있다면 말씀해주세요. 보충 설명을 해드리도록 하겠습니다.

감사합니다.

질문할 공간이 없어서
리뷰란에 질문을 올립니다.
죄송합니다.

p.64의 exec 메소드가 배열을 반환한다는 내용이 이상합니다.
배열을 반환한다면서
예제 소소에서 matchArray[0]으로 각 값을 가져온다는 게 이상합니다.
exec 결과의 length는 늘 1입니다.
배열이라면 length 1의 배열을 반환하는 겁니다.
그리고 while문을 돌릴거라면 "전역" 플래그가 왜 필요한지도 의문입니다.
while문에서 매번 새로운 1개 짜리 배열을 반환하는 메소드라니..
이해하기가 어렵네요.

제가 전역 플래그 제외하고 문자열 취급해서 while문으로 배열에 넣어봤습니다.
책의 소스와 결과는 동일합니다.
function aaa() {
var searchString = "Now is the time and this is the time and that is the time";
var pattern = /t\w*e/;
var matchArray = new Array();
var matchStr = "";

while( (matchStr = pattern.exec(searchString)) != null)
{
matchArray.push(matchStr);
}

for(var i=0 ; i {
document.getElementById("results").innerHTML += "at " + matchArray[i].index + " we found [" + matchArray[i] + "]
";
}
}

window.onload = aaa();

exec가 배열을 반환한다는 책의 설명과 소스는 서로 어긋나는 설명 아닌가요?
저로서는 이해하기가 어렵네요.

번역자님의 답변을 들을 수 있다면 감사하겠습니다.
답변을 해주신 후에
이 글을 삭제하면 감사하겠습니다.

독자 리뷰에 이런 글 올려 죄송합니다.

처음으로 접해본 오라일리의 쿡북 시리즈 였습니다.

가장 먼저 보게 되는 목차를 보면 사용자가 필요에 의해 책을 펼쳤을 때 어느 부분을 봐야 할 지 쉽게 찾을 수 있도록 잘 인덱싱되어 있다고 생각합니다.

실제 파트에 들어가면 내용은 매우 간결하게 설명되어 있습니다. 질답형식으로 간단한 문제가 있고 그것에 대한 해결. 그리고 어떻게 동작하는 지에 대해 설명해 줍니다.

개인적으로 자바스크립트에 대한 실제 경험이 없지만 책을 보는데 있어 어려움은 없었습니다. 그만큼 초보자가 보기 편하게 쓰여 졌다고 말할 수 있을 것 같습니다.


초보자가 이 책을 통해 접근한다고 했을 때 가장 맘에 드는 부분은 10장 디버깅에 대한 부분이었던 것 같습니다. 내가 어떻게 이것을 시작할 수 있을지 문제에 부딛혔을 때 어떻게 해결할 수 있는지에 대해 알게 될 수 있어 맘에 들었습니다.


처음 목차를 볼 때 부터 의문이 들었던 1장과 2장은 굳이 "장"을 따로 나눌 필요가 있었나 싶습니다.


자바스크립트에 대한 개념이 전혀 없는데 갑자기 개발에 투입되게 된다면 가이드가 될 수 있는 책인 것 같습니다. 어떻게 시작해야 하는 지와 문제해결을 어떻게 해야 하는 지에 도움을 얻을 수 있는 책이었습니다.

요즘은 "구글이 대신 코딩해준다"는 말을 할 정도로 인터넷에는 유용한 프로그래밍 정보들이 가득합니다. 프로그래밍 중에 난관에 봉착하면 책보다는 인터넷에서 먼저 그 해답을 찾아보게 되고 대부분 인터넷에서 적합한 답을 찾는 경우가 많습니다.
그래서 이런 쿡북류의 책을 요즘엔 선뜻 구입하기가 망설여집니다. 인터넷에서 잘 검색하면 얻을 수 있는 내용이고, 책을 뒤적이는 것보다 검색어만 잘 입력하면 뚝딱 바로 알 수 있습니다. 게다가 공짜입니다.
그런데 자바스크립트 쿡북을 읽으면서 쿡북에 대해서 다시금 생각하게 되었습니다. 레시피를 찾아가며 읽을 수도 있지만, 원하는 레시피를 찾아보다 앞뒤로 읽게 되는 관련 레시피들과 유기적으로 구성된 챕터들을 따라가다 보면 깊이 있는 자바스크립트의 기술들을 발견하게 됩니다. 가끔 인터넷 검색으로 해결책을 찾을 때 왠지 모를 공허함을 느낄 때가 많았는데, 이것이 책과 인터넷의 차이점이 아닌가 하는 생각이 드네요.
이 책을 읽기 전에 제가 알고 싶었던 것은 자바스크립트로 객체지향 프로그래밍을 하는 올바른 방법과 HTML5 활용법이었는데요. 이 책을 통해서 약간의 깨달음(?)을 얻었던 것 같습니다. 그리고 어느 정도는 jQuery 같은 자바스크립트 라이브러리도 볼 수 있겠단 생각이 듭니다. 책 중간에 인상깊었던 구절이 있었습니다.

"사실 Dojo, Ample SDK, Prototype, jQuery와 같은 프레임워크를 사옹하면 되는데 왜 그냥 자바스크립트를 다루는 책을 봐야 하는지 의문이 들 수도 있습니다... 이 물음에 대한 대답으로는 "jQuery 같은 프레임워크 라이브러리의 능력을 최고로 이끌어내려면 그 안에서 무슨 일이 일어나는지 이해할 필요가 있기 때문"이라고 하겠습니다."

자바스크립트의 경우 특히 필요에 의해서 해답을 찾고 동작하기만 하면 이해할 필요없이 그대로 써버리는 때가 많았는데요. 이 책은 그런 동작 원리를 볼 수 있는 배경 지식을 제공해줍니다.

자바스크립트에 어느 정도 익숙한 독자를 대상으로 하고 있기 때문에 개인적으로 "자바스크립트 핵심 가이드(한빛미디어)"를 먼저 읽으시면 도움이 될 것 같습니다. 그리고 UI쪽에 관심이 있으시다면 "에릭 마이어의 CSS 노하우(인사이트)"와 같이 읽으시는 것도 좋을 것 같습니다.

번역도 매끄럽고 편집도 깔끔합니다. 자바스크립트 내공을 레벨업하고 싶은 분께 추천합니다. ^^

자바스크립트를 배우기 원하는 개발자가 있다면 추천하고 싶은 책입니다. 기초부터 실무에서 응용 가능한 내용까지 모두 다루고 있으며,자바스크립트를 사용하면서 발생할 수 있는 다양한 문제 사례와 그 헤결방법을 제시하는 구성은 학습 효과를 높이는데 도움을 줄 수 있다고 생각하기 때문입니다.

하지만 웹 프로그래밍 경험이나 지식이 부족한 상태에서 보기에는 이 책의 내용이 다소 어렵게 느껴질 만한 부분도 있는 것 같습니다. 따라서 그런 분들에게는 이 책을 추천하기가 어려울 것 같기도 합니다.

전체적으로 산만하지 않게 차분하고 깔끔한 디자인과 본문 구성이 마음에 듭니다. O"RELLIY 시리즈 책의 특징인것 같습니다.

이 책에서 설명하고 있는 내용을 잘 이해하고, 활용할 수 있다면 실무에서도 꽤 유용하게 자바스크립트를 활용할 수 있을 것이라고 믿습니다.

이 책은 자바스크립트를 이용해 개발할 때 발생하는 다양한 문제점 들에 대한 해결책들을 모아논 레시피 책입니다. (그래서 책 제목이 자바스크립트 쿡북인가요? ^^;). 그래서 자바스크립트 바이블이라기 보다는 각종 레시피(문제해결 코드)를 모아 놓은 레퍼런스 북에 가깝습니다.

이책의 장점은 다양한 팁에 대해 개요부터 제세한 설명을 따라해보며, 실제 예제를 간단하게 만들어 볼 수가 있다는 것 입니다. 덧붙여 기본적인 객체 핸들링 부터 개발 중 쉽게 접할 수 있는 문자열, RegExp, 이벤트, 폼, DOM, media, 통신, 디버깅 등 다양한 부분을 커버하고 있어 개발 도중 옆에두고 참고하기에 유용할 것 같습니다. 다만, 차근차근 지식을 쌓는 용도로는 적합해 보이지 않습니다.

마지막으로 책자체는 편집도 잘 되어 있고, 번역도 거부감 없이 무난하여 보기좋습니다. 요새 한빛에서 나오는 번역서들은 옛날과 비교해 볼때 종이 재질도 좋고, 원서 못지 않은 퀄리티를 보여주는것 같아 참 만족스럽습니다.

자바스크립트 쿡북... 왜 쿡북이라고 했을까요? 저자는 책을 주제별로 각 챕터로 구성하고 챕터는 문제와 해결방법을 나열하는 식으로 본문을 구성하였습니다. 실제로 본문 곳곳에 레시피라는 용어가 등장합니다. 레시피 2.1에서 어떤 내용을 다루고 있다 식으로 말입니다. 참고로 레시피 x.y 의 의미를 직접적으로 설명하고 있지는 않습니다만, x 챕터의 y번째 문제라는 뜻으로 해석하셔서 원하는 레시피를 찾으시면 될듯 합니다.

일반적인 요리(음식) 레시피는 사진과 지시사항만 간략하게 기술되어 있습니다. 정해진 재료를 가지고 그대로 따라하면 될 것 같지만, 원하는 요리는 쉽게 되지 않습니다. 여러가지 시도를 해보면서 사진과 동일한 결과를 내기 위해 진땀을 빼야할 것입니다. 요리 레시피를 다룬 책과 이 자바스크립트를 다룬 쿡북(!) 책의 주된 차이점은 다음과 같습니다. 이 책에는 원리에 기반한 정말 자세하고 친절한 설명이 있다는 점이 가장 큰 특징입니다.

웹프로그래밍을 하면서 접할 수 있는 다양한 상황을 문제로 정리하여 풀이하고 있습니다. 문제를 선정함에 있어서 특정 상황을 콕콕 찝어서 정리한것 같네요. 본문 곳곳에 눈에띄는 참조에서는 한 레시피에서 사용된 문법적인 요소나 메소드들에 대한 설명이 어느 레시피에 존재하는지, 같은 결과를 내더라도 다른 방법으로 해결한 어느 레시피가 있는지 언급해줍니다.

ECMAScript5에는 유용한 메소드들이 많이 추가되었습니다. 그러나 다양한 버전의 전체 웹브라우저 중에서 일부만이 이들을 완벽하게 지원합니다. 저자는 이를 위해 해당 메소드를 다른 방식으로 구현하여 지원하지 않는 다른 브라우저에서도 동일한 기능을 제공할 수 있도록 방법을 제시합니다. 공백제거나 날짜형식의 변환 등이 그 예입니다. 개인적인 경험이지만 trim 메소드는 직접 만들어서 사용한 경험도 있어서 정말 공감한 부분입니다.

개발자에게 꼭 필요한 디버깅 툴인 웹브라우저의 종류에 따른 자바스크립트의 디버깅 방법도 제시합니다. 파이어폭스의 파이어버그, IE8의 개발자 도구, 오페라의 드래곤플라이, 사파리의 개발자 도구, 구글 크롬의 개발자도구와 콘솔모드에 대하여 알려줍니다.

자바스크립트를 사용한 웹프로그래밍을 막 시작한 초급자분들에게도 적극 추천해드리고 싶습니다. 인터넷 검색 못지않은 방대한 사례가 담겨있습니다. ^^

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
JavaScript Cookbook : 한 권으로 끝내는 문제 해결
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
JavaScript Cookbook : 한 권으로 끝내는 문제 해결
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
JavaScript Cookbook : 한 권으로 끝내는 문제 해결
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0