[이북 리뷰] 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

빅데이터 컴퓨팅 기술 리뷰

_m_4114m “빅데이터 컴퓨팅 기술”  책은 일반적인 기술 개발서적은 아니다. 이 책은 빅데이터라는 큰 개념을 잘개 쪼개서 현재 기술들을 아주 상세하게 리뷰해 놓은 개론서이다.

한빛리더스 8기 5번째 미션도서 첫인상

책 자체가 한빛아카데미의 IT Cookbook 시리즈로 나와서 사실상 대학생 교재 및 참고도서라 봐도 무방하다.  그래서인지 총 6분의 공저자 모두 현직 대학교수들로 이루어져 있다. 또한 매 챕터마다 간단한 내용확인 수준의 연습문제가 제공되고 레퍼런스가 꼼꼼하게 달려있다. 레퍼런스가 잘 달려 있어서 관심있는 부분을 자세하게 찾아볼 수 있다는 점이 마음에 든다.

내용은 크게는 다음의 3개의 파트로 구분된다.

  1. 빅데이터 개요
  2. 빅데이터 컴퓨팅 기술
  3. 빅데이터 기술 개발현황과 실제 구현예

목차를 보고 책을 읽으면 각 파트별로 세부적으로 현재 나와 있는 거의 모든 기술 들에 대해서 조사해서 담았다는 것을 알 수 있다.  현재 석사생으로 이 책을 읽으며 가장 먼저 들었던 느낌은 과제 제안서에 넣을 키워드가 소스가 풍부한 책이라는 점이다. 빅데이터가 뭔지, 어디서부터 조사를 시작할지 잘 모르겠다면 이 책은 빅데이터에 대한 숲을 보여주는데 제 몫을 한다.

한빛리더스 8기 5번째 미션도서 첫인상

그런데, 이 점이 단점으로 작용하기도 한다. 이유는 단순한 기술과 정보의 나열이다 보니 책이 좀 지루하다. 계속 읽게끔 하는 매력이 별로 없다. 챕터마다 다음 챕터로 넘어가게끔하는 내용의 재미가 느껴지지 않는다. 조금 더아쉬운 점을 이야기하면, 단순히 현재 기술을 나열한 것 이상의 통찰을 주지는 못하는 것 같다.

정리하면, 빅데이터라는 주제를 백과사전식으로 잘 종합한 것은 좋은 점수를 줄 수 있으나 다소 내용이 평면적이고 딱딱하다는 점이 아쉽다.

풀컬러 내용

그러나  내용이 지루할 것을 편집자들이 이미 예견했다는 듯이 화려한 풀컬러로 독자들을 조금 더 책에 붙든다. 십중팔구 내용까지 단조로운 모노톤이었다면 읽기 쉽지 않았을 것이다. 지루하기 쉬울 내용을 풀컬러의 화려한 장표와 그림으로 채운 것에는 플러스 점수를 줄 수 있다.
풀컬러 내용

요약하면, 빅데이터와 연관이 있는 거의 모든 키워드들을 잘 짜여진 틀 안에 차곡 차곡 쌓아놓은 기술백서이다. 그래서 책에서 느껴지는 장단점도 보통의 white paper 같은 느낌이 드는 책이다.

책 첫머리에서 설명하는대로 빅데이터를 입문할 때 간단하게 살펴보기에 적절한 책이며 심화학습 및 내용을 위한 길라잡이라고 볼 수 있다.

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

한빛리더스 8기

드림팀의 악몽 애자일로 뒤엎기 리뷰

한빛리더스 8기 4번째 미션도서로 선택한 책  “드림티의 악몽 애자일로 뒤엎기“에 대한 리뷰입니다.

14395177215_1993b93173_z

제목에서 알 수 있듯이 기본적으로 “애자일”을 다루는 책입니다. 그동안 피상적으로 애자일에 대해서 들어만 보았을 뿐 자세한 내용을 모르기도 하고, 아직 학생의 신분이기에 프로젝트의 프로세스를 제대로 경험해 본 적이 없는 상태에서 이 책을 읽었습니다.

이 책은 소설의 형식을 빌려서 애자일이 어떻게 프로젝트를 변화시키는지를 보여줍니다. “애자일은 이런 것이다. 스프린트는 무엇이고 스크럼 마스터의 역할은 무엇이다. “와 같은 전달 방식이 아니라 하나의 이야기의 흐름 속에서 자연스럽게 애자일의 개념을 익히도록 도와주는 서술적인 구조입니다.

책의 두께는 조금 있는 듯 하지만, 여유로운 편집으로 넓은 문장 여백을 갖고 있어 출퇴근시  하루 1-2시간 오고가면서 읽으면 1-2일이면 “애자일”스럽게 “애자일”에 대해서 알 수 있습니다.

구체적인 내용은, 애자일을 적용해 왔지만 점점 이상한 방향으로 프로젝트가 흘러가는 “드림팀”이라는 가상의 팀을 두고 “짐”이라는 컨설턴트가 5일 동안 코칭하는 과정을 담고 있습니다.

읽기 시작하면 한 꼭지가 끝날 때마다 “모험은 XX페이지에서 계속”이라는 문구를 만나게 됩니다. 그렇습니다. 이 책은 순차적으로 읽는 책이 아니라 그 때 그 때 상황적 판단에 따라 내용이 여러 갈래로 나뉘어집니다.  저는 처음에 그런 줄도 모르고 읽다가 여러번 “끝”을 만나 다시 돌아가서 다른 선택으로 여정을 계속해 나갔습니다. 혹시라도 잘못된 선택으로 “끝”을 만나더라도 당황하지 말고 다시 돌아가면 “끝”;;

image

책을 다 읽고 나서 뒤 표지를 보니 책의 주제와 구성을 아주 효과적으로 압축해 놓으셨더군요. 저는 뒤 표지를 안 보았더니 중간에 갈림길이 있는 것도 모르고 당황을 했었습니다. 지금까지 본 많은 책의 뒤 표지 중에서 책을 아주 명쾌하게 요약설명해 주는 것 같습니다.

드림팀의 악몽 애자일로 기뒤엎기

이 책은 뒤쪽에 총 4개의 부록을 제공합니다. 첫 번째 부록은 책에서 등장하는 인물의 역할을 설명해주는 Who’s Who인데요. 저도 읽으면서 벤, 로저, 카산드라,  등등 익숙치 않은 영미식 이름의 여러 인물들이 나오니까 자꾸 헷갈려서 다시 돌아가서 누가 누구였는지 확인 했었는데요. 이렇게 명쾌하게 정리된 부록이 있다는 것은 책을 다 읽고 나서 알았습니다.

두 번째 부록은 책에서 코칭을 담당하는 컨설턴트 “짐”이라는 가상의 인물의 링크드인 프로필을 제공하고, 세 번째는 책에서 언급된 애자일 관련 전문 용어 설명이 있습니다.

그리고 이 책의 마지막 네 번째 부록은 깊게 애자일에 대해서 알아보고 싶은 분들을 위한 참고목록을 제공합니다.

책의 구성부터 부록까지 깔끔하고, 충실하게 애자일을 부담없이 입문할 수 있게 해주는 좋은 길라잡이라는 느낌을 받았습니다.

정리하면,
애자일이 무엇인지, 애자일을 프로젝트에 적용하면 무엇을 하고 , 어떤 변화가 생길 수 있는지 알고 싶은 개발자나 기획자 혹은 이런 호기심을 갖고 있는 사람들은 가볍게 읽을 수 있는 책입니다.

Java 객체 지향 디자인 패턴 리뷰

개발과 관련된 학습정보는 웹을 통해서 풍성하게 얻을 수 있다. 디자인 패턴 또한  위키피디아부터 시작해서 블로그에 잘 정리된 양질의 컨텐츠들이 참 많다. 더욱이 디자인 패턴은 케이스별로 다룰 수 있어 웹에서 관심 있는 패턴들을 검색해서 학습하기도 용이하다. 그런데 문제는 웹 상의 컨텐츠에는 대부분 “왜”가 빠져 있다는 점이다 . 컨텐츠의 작성자들은 대부분 “왜”를 가정하고 내용을 설명하고 있기 때문이다.

한빛미디어 리더스 8기 세 번째 미션!~

최근에 출판된 한빛미디어의  “Java 객체 지향 디자인 패턴“은  “왜 이 패턴이 필요한가?”에 질문에 답과 함께 패턴의 내용을 설명한 책이다.  패턴이란 것이 원래부터 있던 정형화된 이론이라기 보다는 시간이 지나면서 쌓여진 노하우이기 때문에 책만 읽는다고 해서 쉽게 내 것이 되지는 않는다.  다행히도  두 저자는 오랜 강의 경력을 바탕으로 이러한 문제를 충분히 절감하고 최대한 상세하게 패턴의 필요성을 피력하고 있음을 이 책에서 볼 수 있다.

한빛미디어 리더스 8기 세 번째 미션!~

책의 내용은 총14장으로 이루어져 있고, 이 중 1-4장은 디자인 패턴과 관련된 기본적인 내용 설명을 다루고 5장부터 14장까지 다음의총 10개의 디자인 패턴에 대해서 설명한다.

[책에서 설명하는 10가지 패턴]

  1. 스트래티지 패턴
  2. 싱글턴 패턴
  3. 스테이트 패턴
  4. 커맨드 패턴
  5. 옵서버 패턴
  6. 데커레이터 패턴
  7. 템플릿 메서드 패턴
  8. 팩토리 메서드 패턴
  9. 추상 팩토리 패턴
  10. 컴퍼지트 패턴

디자인 패턴 후면

각 디자인 패턴에 대한 설명은 그림과 같이 패턴이 적용되지 않은 일반적인 코드를 통한 문제 사례와 함께 문제를 인식하는 단계, 패턴을 도입하여 해결책을 제시하고,  패턴에 대한 설명과 함께 효과를 입증하는 순서로 반복 진행된다.

더불어 책의 부제에서 알 수 있듯이 이 책은 10가지 패턴을 “UML”의 클래스 다이어그램과 컬래보래이션 다이어그램을 가지고  설명하면서 자연스럽게 UML을 눈으로 익히고 보는데 큰 도움을 준다.

디자인 패턴 컬래보레이션 다이어그램

큰 장점이 될 수 있는 점은 부분은 모든 예제 문제와 연습문제에 해답을 제공하고 있다는 점이다. 문제는 제공하지만 해답을 제공하지 않거나 일부만 제공하는 책들과 비교했을때 저자의 세심한 배려가 눈에 띄는 부분이다.

다만, 역으로 생각하면 해답으로 제공되는 내용이 전체 책의 약 1/5이 된다는 점을 고려할 때 해답은 따로 PDF 형식으로 제공하고 책을 좀 더 가볍게 만들었으면 어떨까하는 아쉬움이 드는 부분이기도 하다.

한 가지 더 아쉬운 점은 들자면 이 책은 예제 소스를 제공하지 않는다.요즘 프로그래밍 서적 대부분이 예제 코드를 Github이든  zip 형태이든 어떤 방법으로든 제공하고 있다는 점을 고려할 때 조금 아쉽다는 생각이다.

요약하면, 이 책은 각 디자인 패턴의 필요성, 내용, 실제 적용과정 및 결과를 일관된 순서로  설명한다. 모든 챕터에 연습문제와 해답을 제공함으로 책 한권으로 혼자서 학습하기에 부족함이 없는 책이다.

본 리뷰는 한빛 리더스 8기 활동의 일환으로 작성한 것입니다.

한빛리더스 8기

프로그래밍 면접 이렇게 준비한다 리뷰: 한빛미디어

개발하는 사람이라면 한 번쯤 인터넷 상에서 “구글 면접 문제” 식의 글을 보고 문제도 풀어봤을 것이다. 그리고 아마 문제의 난이도 때문에 심한 좌절감(?)을 맛보았을지도 모르겠다. 실제로 구글 뿐 아니라 거의 모든 IT기업들은 개발자를 찾을 때 반드시 기술면접을 본다. 따라서 취업 또는 이직을 준비한다면 적절하게 기술면접을 준비할 필요가 있다. 왜냐하면, 기술면접은 바로 옆에 구글신과 스택오버플로우를 끼고서 할 수 없기 때문이다. 이렇게 구직을 위해 기술면접을 앞두고 있는 사람들을 위해 어떻게 기술면접을 준비할 것인가에 대한 내용을 담은 것이 “프로그래밍 면접 이렇게 준비한다”이다. 일단 당장 석사를 마치면 나도 구직을 준비해야 한다는 점에서 책을 꼼꼼히 읽어 나갔다. 한빛리더스 8기 2차 리뷰 도서 책의 원제는  “Programming Interviews Exposed”이고 부제로 “Secrets to Landing Your Next Job”이다.  원서의 제목에서 “Next Job”이 눈에 들어왔다. 원서의 부제 “Next Job” 이 말해주는 바와 같이 “기술 면접”은 인생에 단 한번 지나가는 통과의례라기보다는 주기적으로 접하게 될 확률이 높다. 따라서 이 책은 한번의 구직을 위한 일회성 책이 아니라는 점이 중요하다. 재판도 아니고 3판까지 책이 이어져 왔다는 것에서 이미 이 책의 가치는 어느 정도 검증되었다고 볼 수 있다. 책은 총 17장의 챕터와 이력서 작성을 돕는 부록으로 구성된다. 책에서 구분하고 있지는 않지만 각 챕터는 내용상 크게 5파트로 나누어 볼 수 있을 것 같다.

  • 1-2장: 구직과 관련된 일반적인 내용
  • 3-8장: 알고리즘 관련 내용
  • 9-13, 16장: 학부에서 다루는 컴퓨터 사이언스 관련 전반적인 지식
  • 14-15장: 문제해결능력과 연관된 퍼즐
  • 17장, appendix: 기타

먼저 이 책의 장점은  내용외적으로 깔끔한 편집 디자인이 가져다 주는 높은 가독성을 들 수 있다. 특히 내용의 핵심이나 코드 예제 중에서 중요한 부분의 볼드 처리가 마음에 든다. 프로그래밍 면접 책 안 또 다른 세심한 배려는 책의 가로 길이이다. 보통의 IT 서적들이 교과서와 같이 가로 길이가 길어서 휴대성이 떨어진다. 그러나 이 책은 들고 다니기 편한 소설책 정도의 가로 길이와 두께를 가지고 있다. 고로 휴대하고 다니면서 읽기에 좋다. 실제로도 나는 이 책을 아침 저녁 지하철에서 2주 동안 다 읽었다. 한빛리더스 8기 2차 리뷰 도서 표지 내용적인 측면에서도 훌륭하다. 3판까지 어어져 오면서 저자들이 더 날카롭고 예리하게 기술면접에 필요한 핵심적인 내용들을 망라해 놓았다는 것을 느낄 수 있다. 굳이 기술면접을 위해서가 아니더라도 한권 안에 빠르게 컴퓨터 사이언스의 주요 핵심들을 훑기에도 적절하다. 3-8장에 이어지는 알고리즘 설명은 분량면에서는 당연히 알고리즘 도서와 비교할 수 없지만 기술면접에 특화된 핵심을 족집게처럼 집어서 요약해 주어 유익하다. 특별히 8장 “정렬”은  적은 분량 안에 다양한 정렬 알고리즘의 장단점을 분석해 놓고 있어 빠르게 복습하기에 용이하다. 늘상 혼동하기 쉬운 부분들에 대한 설명도 마음에 든다. 예를 들면 책 16장 “인자전달” 문제 중에서 다음과 같은 것이다.

아마 C 계열의 언어를 접해 본 사람은 위와 같이 함수의 인자로 전달되는 포인터 타입이 은근히 헷갈린다는 것을 공감할 것이다. 이처럼 책에서는 포인트를 잘 집어서 밀도 있게 내용들을 담고 있다. 물론, 이 책의 아쉬운 점도 있다. 기본적으로 책이 쓰여진 맥락이 미국상황이라는 점이다.  국내 IT 기업들도 기술면접을 보긴 하지만 미국과는 절차나 방법이 다소 차이가 있다. 이런 부분들을 감안하면서 읽어야 한다. 부록에서 제시하는 이력서도 마찬가지다. 물론 부록의 내용이 국내상황에 맞지 않는다는 점을 저자도 밝히고 있다. 이러한 부분은 번역서로의 한계라고 느껴진다. 결론적으로, 이 책은 기술면접에 대한 경험이 없는 사람이라도 책을 읽고 나면 문제가 어떤 식으로 나올지, 어떻게 준비할 지에 대한 감을 충분히 쌓을 수 있다고 생각한다. 구직이나 이직을 준비하는 것은 결국 개발자 자신의 역량을 쌓는 일이라고 생각한다. 따라서 이 책은 일회성으로 기술면접을 대비하는 용도를 넘어서 다양한 알고리즘을 분석적으로 활용하고 사용하는 언어의 특성들에 대해서 이해하는 등의 사고를 키우는데도 도움이 될 것이다.

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

한빛리더스 8기

함수형 자바스크립트 리뷰

함수형 자바스크립트 도서

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

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

Untitled

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

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

Untitled

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

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

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

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

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

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

한빛리더스 8기

인사이드 자바스크립트 리뷰

인사이드 자바스크립트

이 책 “인사이드 자바스크립트”는 자바스크립트에 대한 기본적인 원리와 내부 구조를 자세하게 설명한 책이다. 모든 책들이 그렇겠지만 이 책과 같은 프로그래밍 언어를 설명한 책 역시 선택할 때 유의할 점이 있다. 그것은 저자가 책을 쓰면서 기대하는 독자의 대상에 읽는 이인 자신이 부합하는 지 여부이다. 이 책은 이런 점에서 더욱 각별한 주의가 필요하다.

왜냐하면 이 책은 프로그래밍을 해본 적이 없거나, 개발을 학습해 본 경험이 없는 이들을 위해서 처음부터 끝까지 모든 것을 알려주는 책이 아니기 때문이다. 이런 분들이 읽으면 무슨 이야기인지 도무지 모르겠다 하실 수도 있다.[자바스크립트에 대한 모든 것을 알기 원한다면 같은 출판사에서 나온 “모던 웹을 위한 Javascript + jQuery 입문”을 권장한다.] 책의 두께도 여느 자바스크립트 교재와 달리 상당히 가볍고, 날씬하다. 적절한 독자의 대상은 자바스크립트를 사용해 본 경험이 있는 초급 개발자에 해당한다고 볼 수 있다.

인사이드 자바스크립트-표

이 책의 장점은 첫 번째로 번역본이 아니라는 점이다. 역서는 역자가 아무리 훌륭하거나 내용이 출중해도 국내 개발자가 국내 정서에 맞게 쓴 책에 비해 약점을 갖기 마련이다. 더욱이 이 책은 번역서가 아니면서 내용 또한 알차다. 가장 마음에 드는 부분은 거의 모든 예제 코드의 구조나 플로우를 그림으로 설명한다는 점이다. 또한 DOM 활용으로 자주 쓰면서도 제대로 내부원리에 대해서 알지도 못했던 jQuery까지 간략하게나마 설명하고 있다. 책의 내용이 핵심만 밀도 있게 담고 있어 가볍기 때문에 휴대도 편리하다는 점은 부가적인 장점이기도 하다.

요약하면, 이 책은 자바스크립트의 기본원리를 자세히 살펴보기 원하는 사람들에게 딱 필요한 내용을 담고 있는 책이다. C나 자바와 같은 언어를 공부하는 느낌으로 자세하게 원리를 배울 수 있는 좋은 기회가 될 것 같다.

좋은 코딩 나쁜 코딩 리뷰

좋은 코딩 나쁜 코딩(2판)은 어떻게 프로그램을 짜는 것이 좋은 지 즉, “코딩 스타일”에 대한 실제적인 내용들을 설명하는 책이다. 이 책은 “~하라”는 제안 형태의 128가지 주제를 관련성 있는 내용들끼리 묶어 총 16개의 챕터로 구성되어 있다.

좋은 코딩 나쁜 코딩

책을 처음부터 순차적으로 끝까지 읽었지만 각 주제별 내용이 독립적이기 때문에 목차를 보고 관심 있는 내용을 먼저보아도 무방하다. 각 내용은 회사에서 직속 사수가 어떻게 코드를 짜야 되는지 알려주는 것 같은 느낌으로 설명해준다. 마치 이전에 읽었던 책 중 “프로그래머의 길 멘토에게 묻다“와 비슷한 느낌이 들고 비교를 하게 된다.

제안하는 내용들은 아주 기초적인 것들부터 아 이런 부분은 미처 몰랐네 하는 것들까지 상당히 세밀하게 코드를 잘 짜는 법에 대해서 설명해 준다. “코드를 잘 짠다.”하는 것의 기준을 어디다 두느냐에 따라 다르겠지만 기본적으로 가독성, 관습적 용례, 퍼포먼스 등을 고려하여 저자는 상당히 다양한 조언을 던져준다. 다만 코딩스타일이란 것이 정답이 있는 것이 아니기 때문에 저자가 조언하는 것을 모두 무조건 따를 필요도 없고 저자 또한 서문에서 그렇게 밝히고 있다.

코딩 스타일을 아직 접해보지 못한 학생이나 개발 초년생들에게는 이 책이 코딩 스타일이란 어떤 것인지 감을 잡는데 의미가 있을 것 같다. 다만 나를 포함한 주변인들을 보고 느낀 주관적인 경험상 코딩스타일이나 코드컨벤션은 실제 프로젝트를 하면서 스스로 그 필요성을 몸으로 느끼는 것이 더 중요한 것 같다.

프로그램 언어가 다양하고 최근엔 스크립트 류의 언어들이 호황을 누리고 있는 것을 감안할 때, 책에서 제안하는 내용들중 적용하기 어려운 부분들도 분명 있다는 점도 감안해야 한다. 또한 설마 이렇게 코딩하는 사람이 있겠나? 싶을 정도의 사례들이 간혹 공감이 잘 안될 때도 있긴했다.

좋은 코딩 나쁜 코딩

결론적으로는 저자가 말하는 바와 같이 코더로 머물고 싶지 않다면 코딩 스타일에 대해서 알고 있어야 하고 나름의 기준과 철학들이 필요하다고 생각하다. 이 책이 그러한 생각을 자라게 해주는 마중물이 되줄 수 있을 것 같다. 대학에서 처음 소프트웨어 개발을 배우는 학부생들이라면 소프트웨어공학 시간에 참고도서격으로 읽어보면 좋을 듯 싶다.

R로 하는 데이터 시각화 이북 리뷰

R로 하는 데이터 시각화

R로 하는 데이터 시각화는 한빛미디어의 리얼타임 시리즈로 출간된 이북입니다. 데이터 분석 및 시각화에 대한 관심이 있었기에  R 언어를 한번도 경험해 보지 않았음에도 불구하고 겁 없이 이 책을 선택해서 읽었습니다. 다행히 큰 어려움 없이 책을 읽을 수 있었고 이렇게 리뷰를 남깁니다.

이 책은 제목 그대로 정직하게 R을 통해서 데이터 결과물을 어떻게 시각화 할 수 있는지를 알려줍니다. 다행인 것은 저처럼 R을 처음 경험하는 사람들도 읽을 수 있게 2장 “R 프로그래밍 기본”에서 기초부터 차근차근 설명합니다. 물론 책의 주 목적이 R 설명이 아니기 때문에 자세하지는 않습니다.

또한 이 책을 읽으려면 최소한 기본적인 프로그래밍 지식을 가지고 있어야 합니다. 예를 들면 객체, 벡터, 리스트, Call by value나 Call by reference의 용어를 자연스럽게 사용합니다. 따라서 프로그래밍 경험이 없는 분들이 읽기에는 다소 어려움이 있을 수 있습니다. 

R 시각화

이 책의 핵심은 3장부터 소개하는 R을 통해 데이터를 시각화하는 부분입니다. 구체적으로는 ggplot2라는 패키지를 어떻게 다루는 지를 설명합니다. 설명을 위한 모든 예제에 코드가 제공되며 위의 그림처럼 간단히 책의 코드를 Copy&Paste해서 그대로 따라해 볼 수 있습니다.

데이터를 시각화 하는 R의 소스코드는 R을 처음 접하지만 그리 어렵지는 않습니다. 시각화하는 R의 코드는 논리적으로 프로그래밍하는 개념보다는 예를 들자면 MS오피스의 엑셀에서 차트를 그리는 일련의 과정을 GUI로 쉽게하는 것을 R에서 CLI형태로 하는 듯한 느낌일 뿐입니다.

따라서 여러가지 색상, 그래프 형태와 패턴등을 다루는 옵션들이 많기에 한번에 책의 내용을 다 소화할 수도 없습니다. 그때 그때 책의 예제에 소스를 참고로 다른 옵션들을 적용하면서 어떻게 결과가 나오는지를 보면서 학습하면 좋습니다.

책의 예제를 따라하면서 약간 아쉬운 점은 이북의 장점이기도 한 코드를 그대로 Copy&Paste하는 부분이 가끔 에러가 난다는 점입니다.

R 소스 오류

이는 타이포의 문제가 아니라 코드의 내용이 길어 한줄 내려 쓰기 할 때 문법에 맞지 않는 띄어쓰기가 들어있기 때문입니다. 따라서 제대로 실행하려면 R 문법에 맞지 않는 띄어쓰기를 지워야 정상적으로 명령이 실행됩니다. 이북으로 리얼타임시리즈가 갖는 장점이 바로 바로 코드를 옮겨 붙여 실행을 확인해 볼 수 있다는 측면에서 볼 때 약간 아쉬운 점입니다.

전반적인 총평을 하자면,  이 책은 ggplot2 패키지를 활용하여 어떻게 데이터를 시각화하는지에 대한 상세한 설명이 녹아든 책입니다. 더불어 R을 처음 접하는 독자도 감히 도전할 수 있는 책입니다. 다만 처음 R을 하는 사람들은 데이터를 시각화 하기 위한 전처리 작업, 즉 데이터 멍잉에 대한 부분은 좀 더 많은 연습과 준비가 필요한데 이 부분은 이 책의 목적과 거리가 멀어 많이 다루지 않기에 다른 자료나 교재를 통해 추가적인 예제 및 실습을 통한 학습이 요구됩니다.

방 안에서 R과 함께 따듯한 연말과 겨울을 보내봅시다!

R로 하는 데이터 시각화_리뷰

 

만들면서 배우는 CodeIgniter 프레임워크 리뷰

코드이그나이터 표지3년 째 워드프레스를 다루다 보니 정식으로 공부하지 않았지만 PHP 코딩이 편해졌습니다. 물론 PHP가 가지고 있는 단순한 문법 떄문인지 모르겠습니다만, 이러한 배경하에 PHP를 가지고 좀 더 진지하게 웹서비스를 구현해 볼까 하는 마음이 늘 있었고 때 마침 “만들면서 배우는 CodeIgniter 프레임워크” 책을 선택해서 읽게 되었습니다.

최근의 웹서비스 구현은 거의 예외없이 개발 편의 및 생산성 향상 등의 목적으로 프레임워크를 사용하고 있으며 CodeIgniter역시 대표적인 PHP기반 프레임워크입니다. 제목에서 드러내듯이 “만들면서 배우는 CodeIgniter”(이하 CodeIgniter) 책은 프로젝트 기반으로 기능을 하나씩 구현하면서 CodeIgniter 프레임워크 학습을 도와줍니다.

책은 11개의 챕터로 구성되어 있지만 실습 프로젝트 주제에 따라  Todo, 게시판, SNS의 3가지로 나눌 수 있습니다. 3개의 주제는 각각의 챕터 내에서 점진적 개발을 통해서 CodeIgniter의 기능을 맛 볼 수 있도록 도와줍니다.

책의 소스코드를 직접 다운 받을 수 있지만, 저는 일일이 소스코드를 처읍부터 타이핑하면서 읽어나갔습니다. 그러다보니 예상 밖의 코드오류들이 심심찮게 보였습니다. 타이포도 있었지만 제가 만난 대부분의 코드오류는 점진적인 기능 추가에 따라 코드 변경된 부분이 제대로 적용되지 않아 발생한 것들이었습니다. 예를 들면, 라이브러리 사용을 위한 선언 코드가  빠져있다든지, 기능이 개선되면서 함수의 매개변수가 바뀐 부분들이 적용이 안 된채로 남아 있다든지 하는 코드 오류들이 종종 보였습니다. 따라서 유의깊게 보지 않으면 책에 있는 소스대로 실행이 되지 않는 부분을 볼 수 있습니다.

그러나, 위와 같은 문제를 보완할 수 있는 방법들이 다행이 있습니다. 우선은 코드이그나이터 한국 커뮤니티의 존재입니다. 이 책의 저자분께서 코드이그나이터 커뮤니티에서 활동중이시며 궁금한 질문들을 책 전용 게시판에 올리면 빠르게 저자로부터 직접 답변들이 올라오며, 이미 비슷한 문제들에 대해서 검색을 통해서 해결방법들을 확인할 수 있습니다. 또한 다음 그림처럼 책의 방대한 코드에서 중요한 라인에 일일이 넘버링을 하고 설명을 하고 있어 길을 헤매지 않고 차근히 이해하는데 도움을 주고 있습니다.

코드이그나이터 코드예제

이 책에서 제대로 설명해주지 않는 부수적 효과(장점)은 트위터 부트스트랩의 활용입니다. 책 전반에서 트위터 부트스트랩을 사용하기 때문에 부트스트랩에 경험이 없는 분들도 자연스럽게 트위터 부트스트랩에 익숙해 질 수 있습니다. 다만 책에서 사용하는 부트스트랩은 버전이 2.x이므로 최근에 개편되 버전3와는 코드 호환이 되지 않습니다.

결론적으로, 이 책은 PHP에 대한 기본적인 이해와 웹서비스(HTML, javascript, ajax)에 대한 어느정도의 지식을 가지고 있어야 읽는데 지장이 없습니다. PHP를 가지고 한번 웹서비스를 제대로 구현해 보고 싶으신 분들께 실제적인 학습을 위한 도구로서 이 책을 주저없이 추천할 만 합니다.