[이북 리뷰] this와 객체 프로토타입

this와 객체 프로토타입

이 책은 You don’t know JS 시리즈 중에 하나로 이 시리즈의 내용은 사실  Github에서 읽을 수도 있고 심지어 참여(?)도 할 수 있도록 공개되어 있다. 하지만 우리말로 좀 더 쉽게 읽을 수 있도록 한빛미디어에서 리얼타임 시리즈로 번역하여 이북으로 내놓고 있으며 이 책 “this와 객체 프로토타입”은 세 번째 책에 해당한다. 다른 두 책은 You Don’t Know JS: 스코프와 클로저You Don’t Know JS: 타입과 문법이다.

참고로, 세 번째 책의 원문은 다음의 링크에서 직접 읽어볼 수 있다.

https://github.com/getify/You-Dont-Know-JS/tree/master/this%20%26%20object%20prototypes

this 바인딩의 진실

jQuery나 Angular를 쓰든 아니면 날 것으로  getElementById()를 사용하든 자바스크립트를 쓰다 보면 가장 헷갈리는 부분 중 하나가 this 바인딩이다. 책에서는 깔끔하게 this 바인딩의 4가지 규칙을 2장에서 잘 설명하고 있어 큰 도움이 된다. 적어도 앞으로는 this 바인딩으로 헷갈릴 일이 없을 것 같다. 규칙을 잊어버렸다면 2장의 정리만 읽으면 읽었던 내용이 잘 드러난다.

Class인 척 하는 Javascript ([[prototype]])

이 책에서 저자가 힘을 주어 이야기 하는 부분이 바로 자바스크립트에서 OOP를 따라하려다 보니 오해가 많아지고 있다는 점이다. 동의하는 부분이다. 자바스크립트는 OOP처럼 class에서 객체로 복사하는 타입이 아니라 reference로 위임한다는 내용은 자바스크립트를 사용하려면 꼭 숙지하고 넘어가야할 내용이다.

OLOO (Objects Linked to Other Objects)

저자는 자바스크립트가 여타의 OOP언어와 동일한 것처럼 말하지 말라고 한다. 자바스크립트와 prototype을 통해서 class 기반의 디자인 패턴을 적용하는 것은 OK! 그러나 내부의 동작원리가 위임기반이라는 것을 제대로 알기!를 강조한다. 그래서 저자는 자바스크립트를 OLOO라고 부르기를 권하고 있는데 일리있는 말이라고 생각한다.

리뷰

원문을 Github에서 볼 수도 있지만 이 책이 가지고 있는 장점이 더 있다. 한글로 쉽게 읽을 수 있다는 장점도 무시 못하지만 역자가 이해를 돕기 위해 많은 내용을 더해서 설명하고 있다는 점이다. 물론 역자가 추가한 내용은 따로 잘 구분되어 있어서 원문의 내용을 해치지 않는다.

ref

이 책을 리뷰하면서 번역된 다른 두권도 사보게 될 만큼 추천할 만한 내용이다. 자바스크립트의 입문서를 떼고 이 시리즈를 읽거나, 개발 경험을 갖춘 사람들이 읽으면 도움이 될 것 같다.

readers_emblem_250

함수형 자바스크립트 리뷰

함수형 자바스크립트 도서

함수형 자바스크립트는 함수형 프로그래밍 과 자바스크립트를 다루는 책이다. 하지만 내용은 자바스크립트로 “함수형 프로그램을 작성하는 방법”에 대해서 중점적으로 설명하는 책이다.

이 책에서는 자신의 라이브러리와 애플리케이션을 단순화할 때 자바스크립트의 복잡성이라는 괴물을 길들이는 데 함수형 스타일의 프로그래밍이 어떻게 도움이 되는지 설명한다. 27p

Untitled

항상 책을 읽고 리뷰를 하면서 강조하는 부분은 읽는 사람의 수준과 기본 지식에 대한 부분이다. 이 책은 “함수형 프로그래밍”에 대해서 자세하게 설명하지만 그렇다고 바닥부터 모든 것을 다루는 책은 아니다. 자바스크립트도 처음이고 함수형 프로그래밍에 대해서 들어본 적이 없다면 이 책은 일단 내려놓자. 

이 책은 난이도가 있다. 자바스크립트에 대한 선이해가 필수이다. 자바스크립트의 동작원리에 대해서 애매한 부분은 다른 책들을 다시 들춰 보면서 읽어나갔다. 자바스크립트에 대한 선이해와 경험이 충분해야 책 속의 내용을 깊이 이해할 수 있다.

Untitled

일급함수, 추상화와 클로저, 체이닝 등 한번 읽고 이해할 수 있다면 좋겠지만 적어도 리뷰하는 나는 그렇지가 못했다. 익숙했던 절차적 프로그램, 객체지향적 사고와는 다른 “함수형 프로그래밍”이란 새로운 관점을 배우고 익혀야 하기 때문이다. 그래서 이 책은 기본적으로 개념 설명이 본질이고 개념이해를 돕기 위한 수단으로 Underscore.js를 기반으로 예제를 보여준다. 

책을 읽고 예제를 따라하다 보니 아쉬운 점이 좀 있다. 책의 앞 부분에서 구현한 함수들을 자연스럽게 뒤에서 사용하고 있다. 즉 한번 읽는 흐름을 놓치면 책의 앞뒤를 왔다갔다하며 내용의 의미를 잘 찾아가야 한다. 

의외의 혜택은 책 끝 부분에 있는 “참고문헌”이다.  함수형 프로그래밍과 관련된 알짜같은 책목록이 있으니 서점에 가서 꼭 살펴보기를 권한다.

옮긴 분도 몇 번이나 읽는 수고를 반복해야 이해할 수 있었다는 데 욺긴이보다도 지식과 경험도 없는 사람이 겨우 한번 읽고 리뷰를 쓴다는게 어불성설이긴 하다.

그래도 요약해보면, 자바스크립트를 통한 함수형 프로그래밍에 대해서 제대로 공부하려면 이 책을 곱씹고 봐야 한다는 점이다.

이 글은 한빛 리더스 8기 활동의 일환으로 작성한 것입니다.

한빛리더스 8기

DOM을 깨우치다 리뷰

Bj퍼블릭 출판사 리뷰 도서

이 책은 자바스크립트를 가지고 DOM을 어떻게 제어하고 다룰 것인지에 대해서 자세하게 설명하고 있는 책이다. 자바스크립트 프레임워크 홍수의 시대 속에 자바스크립트로 DOM을 직접 다루는 것을 배우는 것이 의미가 있는지가 아마 이 책을 읽어야 하는 지를 결정지을 것이다. 역자도 서두에 밝히고 있듯이 jQuery로 손쉽게 DOM을 다룰 수 있는데 굳이 자바스크립트로 DOM을 다루는 이 책이 의미가 있을까 질문을 던지고 있다.

따라서 jQuery로 DOM을 다루는 데 만족할 사람이라면 굳이 이 책을 들쳐보라고 권하고 싶지 않다. 그러나 jQuery 의 동작원리와 함께 자바스크립트에서 DOM을 어떻게 제어하는지를 알고 싶은 궁금함이 가시지 않는 사람이라면 이 책은 탁월한 선택이 될 것이다.

개인적으로는 프론트쪽 웹개발을 주업으로 하지 않지만  종종 웹사이트 개발을 할 때가 많다. 이럴 때마다 자바스크립트에 대한 지식이 부족해서 jQuery 를 가지고 땜방식 코딩을 해온 것이 사실이다. 그러나 이 책을 읽으면서 DOM의 구성이 어떻게 이루어지는지 브라우저가 어떻게 HTML 코드를 파싱하여 메모리 상에서 객체로 쌓아두는지에 대한 명료하게 알 수 있었다. 그래서 책의 영문명 “DOM Enlightenment”와 한글명 “DOM을 깨우치다”가 모두 책 내용을 잘 반영한 제목이라는 생각이 든다.

이 책이 가지고 있는 좋은 점을 구체적으로 하나 들자면 모든 코드를 jsfiddle에 올려두어 링크를 제공한다는 점이다. 프로그래밍을 공부하는 방법은 일단은 묻지도 따지도 않고 책에 있는 코드를 다 따라 쳐보는 것이 상당히 효과적인 방법이기는 하다. 하지만 DOM을 이해하기 위한 목적으로는 이 방법이 그다지 효율적이라고 볼 수 없다. 이 책의 목적은 어디까지나 자바스크립트가 DOM을 어떻게 다루는지를 명확하게 설명하는 것이기 때문이다.

Bj퍼블릭 리뷰도서 DOM을 깨우치다

모든 예제의 링크가 그림과 같이 소스코드 상단에 적혀 있지만 출판사인  비제이퍼블릭 홈페이지에 가서 모든 링크정보가 있는 워드파일을 직접 받을 수도 있기 때문에 굳이 일일이 타이핑 할 필요도 없다. 카피앤페이스트로 모든 예제를 눈으로 확인할 수 있다.

개인적으로 나중에 확인해 둘 요량으로 OneDrive에 파일을 올려서 다음의 링크로 공개를 해 놓았다.

http://1drv.ms/NU0VAj

요약하면, 자바스크립트 코드를 간단히 사용하고 읽을 줄 알지만 DOM에 대한 원리가 궁금하다면 이 책은 적절한 해답이 되어 줄 것이다.

Angular JS 기초편 eBook 리뷰

제목: Angular JS 기초편

한빛미디어에서 받은 Angular JS 기초편 eBook을 읽고 난 뒤에 느낌을 먼저 한 문장으로 요약해 보겠습니다.

요약: Angular JS 기초편은 마실 겸 뒷동산에 올랐다가 가파른 경사와 언덕을 만나 탈진할 수도 있는 책

AngularJS기초편 표지

책은 총 4장으로 구성되어 있습니다. 1장은  몇 가지 짧은 코드의 예제를 통해서 Angular JS만의 장점을 보여주는데 그다지 어렵지 않게 Angular JS의 기능들을 맛볼 수 있습니다. 짧은 1장의 내용에서 다음 장에 대한 기대를 주지요. 기존에 웹 프레임워크를 활용해서 개발해 본 적이 없는 분들도 1장은 쉽게 따라하실 수 있습니다.

2장에서 좀 더 깊게 Angular JS만의 기능들을 설명합니다. 데이터 바인딩, 지시어와 같이 Angular JS의 멋진 기능들을 설명하는데요. 이 부분은 다소 내용이 어렵습니다. 기능에 대한 설명보다 Angular JS의 장점을 설명하는데 포커스가 있다는 듯한 느낌이 강합니다. 저처럼 웹프레임워크를 이용한 개발이 익숙치 않은 분들에게는 조금 어려운 내용들이 많습니다. ajax나 자바스크립트에 대한 선이해도 필요합니다. 그래도 2장까지는 집중해서 여러 번 읽으면 Angular JS를 맛보는데는 좋은 역할을 합니다.

3장에서 본격적으로 anuglar를 활용해서 웹 어플리케이션을 개발하기 위한 도구와 방법을 안내합니다.  그러나 여기서부터 문제가 발생합니다. ㅠ 일단 이 책에서는 angular를 활용하기 위해서 yeoman이라는 툴을 사용합니다. 그런데 책이 쓰여진 시점 이후로 yeoman이 상당히 많이 바뀌었습니다. 따라서 책의 쉘명령어가 작동하지를 않습니다.

우선 yeoman을 설치하려면 107쪽에 나와있는 curl을 통한 설치는 더이상 제공되지 않고 npm이 필요하므로 Node.js를 먼저 설치해야 합니다. 자세한 설치 방법은 공식사이트를 참고해야 합니다. yeoman을 설치하고 나서 책과 달라진 명령어를 몇 개 소개하면 다음과 같습니다.

  • (angular 프로젝트 생성) yeoman init angular -> yo angular
  • (루트 추가) yeoman init angular:route home -> yo angular:route home
  • (테스트 실행) yeoman test -> grunt test
  • (프로젝트 빌드)yeoman build -> grunt build

마지막으로 4장에서는 하나의 예제를 통해서 angular JS를 활용한 앱의 숲을 볼 수 있도록 해줍니다. 하지만 역시 아쉽게도 1~3장에서 angular에 대해서 수박 겉핡기 식으로 훑고 나서 갑자기 4장에서 앱 하나를 통쨰로 설명하는 내용이 나타나니 이 역시 조금 버거운 느낌입니다.

본래 이 책은 Angular JS 원서를 두 번에 나누어 1~4장은 기초편으로 5~8장은 활용편으로 분리되어 국내에 출판된 것으로 압니다. 기초편에서는 angular JS에 대한 이해를 돕는데 초점을 두고 자세한 설명은 활용편으로  넘기고 있습니다. 따라서 기초편만 가지고는 angular JS를 온전하게 이해하는 데는 어려움이 다소 따릅니다. 따라서 이 책 하나로 angular JS를 이해하려는 기대는 조금 접어두시기를 부탁드립니다. 대신 angular에 대해서 잘 설명해 준 블로그 하나를 안내합니다.(클릭!)

개인적으로 웹에 관심이 없다가 최근에 웹 프레임워크가 다양해지고 발전하게 된 것을 보면서 조금씩 다시 배우고 있는데, angular는 최근 웹 프레임워크의 경향을 이해하는데 도움을 주었습니다. 물론 제가 위에서 평한대로 이 책 하나로는 angular를 온전하게 이해할 수 없습니다. 제안드리는 것은 한글로 먼저 이 책을 빠르게 훑어보고 angular의 공식 사이트의 튜토리얼을 차근히 따라가는 것을 제안해 봅니다. 마지막으로 대우정보통신 블로그에서 정리한 angular JS를 활용한 대규모 웹 개발 관련 블로그도 함께 링크를 남깁니다.(클릭!)

[한빛리더스 7기 활동] Angular JS 기초편 Ebook 받다!

한빛미디어에서 수행하는 한빛리더스 7기 활동을 이번 가을에 하게 되었습니다.
oakley protective eyewear
이전에도 한빛미디어에서 이북을 두권 구매해서 읽은 경험이 있어서 그런지, 이번에 “스마트 미디어 그룹”에 소속되어 한빛미디어에서 출판되는 이북을 읽고 리뷰를 남길 수 있는 기회를 얻었네요 ^^
air max 90s
AngularJS기초편 표지
prescription oakley sunglasses
첫 번째 미션도서로 받은 이북은 바로 “Angular JS 기초편“입니다. 이 책을 선택한 이유는 첫째는 웹프레임워크에 대한 관심 때문이었고, 둘째는 어떻게 하면 생산성 높은 개발을 할 수 있을지에 대한 고민 때문입니다.
air max 95
이전에도 한빛미디어의 Realtime 시리즈 이북을 구매했을 때와 같이 이북으로 보기 적절한 분량과 시원시원한 폰트 구성 등 이북에 최적화된 출판이 맘에 듭니다. 오라일리 출판사하면 떠오르는 특유의 온갖 생물체(?) 표지 디자인처럼  Realtime 시리즈가 표지디자인이 통일성을 갖추고 있어서 소유욕도 불러 일으키네요.
oakley script sunglasses
자 이제 앞으로 AngularJS 기초편을 차근 차근히 읽어보면서 학습 겸 리뷰를 진행해 보고자 합니다.