나는 나로 살기로 했다
김수현 지음 / 마음의숲 / 2016년 11월
평점 :
품절


어느날 문득 내 자신이 초라하고 무력하게 느껴졌다.
애매한 나이에 애매한 경력과 애매한 실력.
나는 제대로 갖춘것도 보장된 것도 없는 애매한 사람이었다.
어쩌다, 이렇게 애매한 어른으로 자라버렸을까.
.
.
.
나는 나를 존중하고,
나로서 당당하게 살아가도 되는 거였다.
이 책은 내가 느꼈던 초라함의 이유이자,
나를 초라하게 했던 모든 것들에 대한 나의 답변이다.

<프롤로그>

나는 점심을 먹고 근처 책방 근처를 서성이면서 가볍게 산책하는 일을 즐긴다. 여름이 시작하려고 할 때 나는 우연히 ˝나는 나로 살기로 했다˝ 책이 눈에 들어왔다. 책 옆는 ˝언어의 온도˝, ˝베리 심플˝이 함께 놓여 있었다. 책들을 살펴보다가 이 책의 표지를 보니 가장 쉽게 읽을 수 있을꺼 같아 제일 먼저 집어 들었고 가볍게 책을 읽었다. 올해 계획한 일들이 잘 풀리지 않아 자존감이 낮아졌다고 느끼고 있었는데 단비같은 내용이었다. 여담이지만 옆에 있는 두권의 책까지 고민없이 한번에 사버렸다.

이 책은 에세이 형식으로 한 페이지에서 많으면 다섯 페이지까지 저자의 생각을 정리한 이야기들로 구성되어 있다. 책을 끝까지 읽고 나서야 저자의 4번째 책임을 알게 되었다. 저자 김수현은 2009년도 ˝100% 스무살˝부터 시작하여 지금까지 4권의 책을 썼다. 이렇게 이야기를 쉽고 잘 풀어가다니!하고 감탄할 때가 많았는데 저자의 고민과 경험, 책을 쓰면서 정리된 생각들이 겹겹이 녹아들어간 것 같았다.

전체적 바라보면 자존감, 삶, 행복, 관계에 대한 이야기다. 그 중 절반 이상은 자존감에 대한 이야기다. 자존감이란 무엇인지 그리고 원리가 어떻게 되는지에 대해서 잘 서술하고 있다.

자존감의 원리를 최초로 규명한 심리학자 나디니엘 브랜든은
건강한 자존감을 위한 두 기둥을
자아 효능감과 자기 존중감이라고 이야기 했다.
자아 효능감이란 자신을 돌보며 현실적 문제에 대처할 수 있다는
자기 신뢰이자 자신감이고
자기 존중감은 스스로를 존중하며
사랑받을 가치가 있다고 여기는 마음이다.

<단단한 자존감을 가질 것>

좋은 글감들은 꽤 많지만 그 중에서 ˝단단한 자존감을 가질 것˝ 내용을 추천하고 싶다. 아무리 말로 해도 얻을 수 없는게 자존감이다. 혹시 자신감이 없어 보이는 사람에게 ˝자존감을 높여봐˝라는 하고 이야기를 한적이 있는가? 과거에 난 그런 이야기를 한적이 있다. 당연하게도 그 사람은 없었던 자신감이 샘솟지 않았다. 자존감이란 학습의 대상, 즉 지식을 말하는 것이 아니기 때문이다. 자존감을 위해서는 자기 신뢰가 필요하다. 스스로 판단하고 선택하면서 쌓아온 경험들 말이다. 단순히 말로써 해결될 문제가 아니다. 이 장은 자존감이란 무엇인지 다시 한번 생각하게 해주고 그 동안 나는 어떻게 행동하고 있는지 되돌아볼 수 있게 도와주었다.

그 외에도 자신을 되돌아보게 되는 내용들이 참 많다. 한번 읽고 넘어갈게 아니라 나중에 몇번이고 곱씹어볼만한 책이기도 하다.
* 부끄러워할 필요가 없는 일에 부끄러워하지 않을 것
* 나 다운 삶을 살 것
* 스스로에게 변명하지 않을 것
* 모든 이에게 이해받으려 애쓰지 않을 것
* ...

예전에 읽었던 ˝행복의 조건˝이란 책을 소개로 이야기를 풀어가는 부분이 있었는데 꽤 반가웠다. 개인의 생각을 존중하는 점에 있어서는 문득 법률 스님이 떠올랐다. 고민을 풀어놓은 사람들에게 따끔한 일침을 놓으시는 분이다. ˝모든 사람은 행복할 권리가 있다˝ 라고 말하며 말이다.

댓글(0) 먼댓글(0) 좋아요(5)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
손으로 익히며 배우는 생활 보안 첫걸음
마스이 토시가츠 지음, 손정도 옮김 / 한빛미디어 / 2017년 5월
평점 :
절판


일반적으로 "보안은 어려울거야" 인식이 있다. 옛날 바이러스만 있었던 시절, 안철수연구소의 V3 백신만 알면 되었던 수준에서 이제는 스파이웨어, 랜섬웨어와 같이 다양한 종류의 공격들이 생겨났고 개인에게 돈을 목적으로 광범위하게 공격을 하고 있어서 단순히 넘기기엔 어려운 상황이다. 주변 지인들의 랜섬웨어 사례들도 있어 다른 사람의 이야기로만 치부 하기도 어려워졌다.

하지만 보안을 고려하거나 학습하려면 컴퓨터 전반적인 지식을 가지고 있어야 한다. IT 시스템을 네트워크, 운영체제, 어플리케이션 이렇게 크게 3가지로 추상화하여 나눌 수 있는데 이를 이해하기 위해서는 전공자가 받는 교육이 필요하다고 생각한다. 물론 웹을 잘 찾아보면 간략한 요약은 충분히 얻을 수 있지만 어느정도 내부구조를 이해하고 있어야 보안이 어떻게 이루어지고 있는지 알 수 있다. 

생활 보안 첫걸음이란 책은 내부구조에 대한 자세한 설명을 해주는 책은 아니다. 다양한 보안 기술들을 쉽게 풀어내기 위해 노력한 책이다. 쉽게 작성한 책은 이해하기 좋다는 것이지 깊이가 있지는 않다. 오히려 각 챕터마다 책 1권은 따로 만들 수 있을꺼 같다는 생각이 들었다. 전반적으로 친절함이 여기저기에 묻어 있다. 다음에 보면 좋을 책부터 참고하면 좋을 만한 사이트까지 보안을 활용하거나 학습할 수 있도록 가이드 하는 점은 좋았다. 이해하기 좋은 친절한 그림, 요약 내용, 연습 문제들은 읽은 내용들을 잘 기억할 수 있도록 도와주었다. 

한번에 여러 권의 책을 동시에 읽는 것을 선호하는 편이라 내용을 나눠서 보는편인데 이 책은 유독 손이 잘 가지 않았다. 첫장부터 절반쯤까지 읽는데 꽤 오랜 시간이 걸렸다. 나머지 뒷 부분은 그래도 몰입해서 금방 읽을 수 있었는데 결국 끝까지 읽는데 끈기가 필요했고 꽤 긴 시간이 걸렸다. 왜 그럴까 생각을 해보니 책 중간까지는 보안에 대한 개념 설명과 최근 트렌드 이야기를 가볍게 풀어나가는데 내용적으로 기술적 몰입을 주지 않았기 때문인 것 같다. 나머지 뒷 부분은 Chapter4부터 Chapter6까지로 네트워크, 웹 보안, 암호화에 대한 내용이며 예시와 조금 더 자세한 설명이 많은 편이다.


<Chapter5 암호와 인증이란 무엇일까>

<Chapter6 웹 어플리케이션 보안을 공부하자> 

<Chapter6 웹 어플리케이션 보안을 공부하자>


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Effective Python 이펙티브 파이썬 : 파이썬 코딩의 기술
브렛 슬라킨 지음, 김형철 옮김 / 길벗 / 2016년 3월
평점 :
구판절판


Python은 매력적인 언어이다. 언어가 주는 간결함 그리고 동적 타이핑, 다양한 내장 기능과 오픈소스 패키지들은 사용하지 않을 수 없게 한다. 하지만 알면 알수록 어려워지는 언어임은 틀림 없다. 모든 개발 언어가 그렇듯이 그 언어의 특성을 이해하고 코드를 "잘" 작성하기 위해서는 몰입과 경험이 필요하다. 어떻게 하면 그 언어스럽게 코드를 잘 작성할 수 있을까? 이에 대한 좋은 답은 Effective 시리즈의 책이라고 생각한다.

나에게 있어 Effective 시리즈의 책들은 그 언어를 더 깊게 이해하게 도와주는 경험의 모음집이다. 그래서 사용 언어에 있어서 Effective 시리즈 책이 새로 나오면 일단 구매해서 보는편이다. 하지만 이 경험 모음집은 생각보다 진입장벽이 높다. 초보자용은 아니라 Python 코딩을 조금 해봐야 한다. 알고리즘 문제를 풀어보든 특정 오픈소스 코드를 자주 읽어보거나 간단한 개인 미니 프로젝트를 해서 그 언어에 대한 익숙함이 필요하다. 익숙함 없이 언어의 깊은 이해는 불가능하기 때문이다. 

이 책은 Python에 대한 59개의 팁과 테크닉을 설명하고 있다. 59개의 팁은 크게 8개의 장으로 나눠져 있다.

  • 1장 파이썬다운 생각
  • 2장 함수
  • 3장 클래스와 상속
  • 4장 메타클래스와 속성
  • 5장 병행성과 병렬성
  • 6장 내장 모듈
  • 7장 협력
  • 8장 제품화

개인적으로 가장 인상 깊었던 부분은 1장, 2장이다. Python 언어가 주는 기능과 간결함을 다시 알게 해주는 부분이다. pep8 규칙부터 시작하여, 리스트 컴프리헨션과 제너레이터 표현식, 병렬 이터레이터 처리를 위한 zip 활용등에 대해서 알 수 있다. 또한 함수 클로져, 제너레이터, 데코레이터까지 Python에서 제공하는 함수의 특징을 설명한다.

Python으로 알고리즘 문제를 풀이하다 보면, C/C++ 대비 메모리 사용량이 꽤 많아지는 것을 종종 경험했다. 그 때는 Python 자체가 메모리 사용이 많은건가 싶었는데 내가 코드를 그렇게 작성한것 같다. 제너레이터를 활용했다면 메모리 사용량이 충분히 줄일 수 있지 않았을까 싶다.

flask 웹프레임워크에서도 url 설정에 대해 데코레이터를 활용한 인터페이스를 제공한다. 데코레이터가 어떤 구조를 가지고 있는지 모른다면 flask에 대한 디버깅이 어려울지도 모른다.

각 항목마다 내용이 끝날 때 마다, "핵심 정리"를 따로 적어두어서 내용을 마무리 학습하는데 도움이 된다.

Python 성능 이야기에 빠지지 않는 GIL 이야기도 나온다. multithread는 메모리 사용면에서도 비싸고 성능도 GIL 공용 락 때문에 병렬성의 이득을 얻을 수도 없다. 

 

개인적으로 관심이 많은 유닛 테스트에 대한 이야기가 나온다. Python은 unittest가 내장이라 어떤 프로젝트를 시작하던간에 추가 설치 없이 즉시 테스트를 작성할 수 있다. 사실 C/C++로 코드를 작성하면 일단 개발 환경에 어떤 유닛테스트 프레임워크를 사용할지 선택하고 설치를 해야 하는 비용이 들기 때문이다. 특히 알고리즘 코드를 작성할 때는 꽤 편하다. 고민할게 없다. 테스트를 그냥 작성하면 되기 때문이다. 특히 스크립트 언어는 컴파일이 즉시 되지 않아 해당 로직이 실행되기 전까지 문법적인 문제점을 찾지 못할 수 있다. 문법 문제로 이상 동작한다면 그 만큼 허탈한 상황이 있을까. 모든 기능 테스트를 매번 직접할 것 아니라면 유닛테스트는 필수다.

59개의 팁들이 모두 공될만한 내용이라 생각하지는 않지만 대부분은 개인적으로 큰 도움을 받았다. 잘 모르는 부분은 Python 기술 문서를 찾아보는 수고스러움도 필요하지만 그 만큼 열정적으로 보게 된 책이다. 놀라운 점은 봐도 곧 까먹는다는 점이다. 2번 이상 책을 보고 연습하는 훈련시간이 필요하다. 아무래도 팁과 테크닉 위주로 책이 구성되어 있다 보니, 기본 기능들에 대해서는 설명이 부실한 편이다.


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Hello Coding 그림으로 개념을 이해하는 알고리즘 Hello Coding
아디트야 바르가바 지음, 김도형 옮김 / 한빛미디어 / 2017년 4월
평점 :
절판


컴퓨터 개발을 하면서 알고리즘을 학습하는 것은 매우 중요하다. 너무 오래전에 배워서 이미 잊혀진 것들이 있을 수 있지만 개발을 하다보면 다시 알고리즘을 학습해야하는 순간은 종종 찾아온다.

  1. 앱을 통해서 택시와 나를 연결해주고 싶다. 어떻게 현재 위치에서 가까운 기사들에게 알림을 보낼 수 있을까? 
  2. 웹 브라우저의 뒤로가기/앞으로가기는 어떻게 구현해야 하는 걸까?
  3. 영화 추천 서비스는 어떻게 나에게 영화를 추천해주는 걸까?

 

이렇듯 꾸준히 학습을 해야하는 알고리즘은 시중에 책들이 많이 나와 있다. C/C++로 된 책부터 Java, Python까지 다양한 언어로 알고리즘에 대한 학습 서적이 이미 나와있다. 하지만 이런 책들을 구매해서 끝까지 본 책은 얼마나 있을까? 알고리즘은 중요하지만 생각보다 쉽지는 않다.

 

이 책의 첫 페이지를 보면 책의 목표가 명확히 나와 있다. '쉽고', '재미있게', '끝까지' 책을 읽게 하는 것이다. 쉽고 재미있게 그리고 끝까지 책을 읽게 한다는 점에서 매우 공감한다. 내용은 쉽게 잘 풀어나갔고 기술적인 이야기 또한 잊지 않은 책이라고 말하고 싶다. 이 책은 그림을 통해서 쉽게 설명하고 있을 뿐 아니라 놓치기 쉬운 부분들을 잘 알려주고 있다.

 



 

 

예를 들어 빅오는 몇가지 사실을 알고 있어야 이상한 결론에 빠져들지 않게 된다. 아래 내용은 "4장 퀵정렬" 내용을 일부 요약한 것이다. 

  1. 빅오 표기법은 시간복잡도는 평균을 이야기할 수 있다.
    • 퀵 정렬은 최악의 경우 O(N 제곱)이니 느린편이잖아!라고 오해할 수 있겠지만 평균적으로는 O(NlogN)이다. 알고리즘에 따라서 best, worst, average 이렇게 3가지로 고민해볼 수 있음.
  2. 빅오 표기법은 가끔 상수가 중요해질수 있다.
    • O(N), O(logN) 에 대해서 코드로 작성하여 테스트 해보면 상수 때문에 성능이 비슷하게 보일 수 있다. 하지만 상수를 고려할 수 있는 수준은 데이터가 얼마 없을 때이다. 데이터가 100억개 가까이 된다고 가정을 해보면 정확한 알고리즘 성능을 보여준다.

 

공간 복잡도에 대한 이야기는 없지만 시간 복잡도만 따지고 본다면 초보자를 이해시키는데 부족함이 없다.

 

이 책의 장점 중에 1가지는 알고리즘 문제를 어떻게 활용해야 하는지 설명해주고 있다는 점이다. 사실 그렇다. 어떤 알고리즘이 있고 어떻게 구현하는지만 알게 되면 잘 활용할 수 없다. 이 책은 매 장마다 문제 상황을 설명하고 알고리즘(또는 자료구조)를 사용해서 어떤 장점을 얻어갈 수 있을지를 설명한다. 책을 몰입하여 읽을 수 있게 도와준다.


 

아래는 스택에 대한 그림 설명 부분. 마치 선생님이 칠판을 활용하여 직접 설명하고 있는 것처럼 느껴졌다.



 


 

매 장 끝부분에 가벼운 팁들이 나온다. 이런 팁들은 개발자들끼리 커뮤니케이션(말빨, 아는척)하는데 큰 도움이 된다고 생각한다. 내용 자체는 전문적이지 않지만 특히 초보자에게는 꽤 쏠쏠한 팁이 될 것이다.

 




책의 단점을 이야기하면 첫째로 그림과 글자색 때문에 몰입이 잘 되지 않는다. 배경을 빼고 보면 몽땅 파란색이다. 초보자들에게 거부감을 없게 하기 위함인가하는 생각도 들었지만 세련되지 않다고 생각한다. 저자 아디트야 바르가바가 쓴 책 느낌을 살렸으면 어땠을까 하는 생각이 든다.

 

두번째로 "추가로 공부해야할 것들" 내용이다. 장점에 가까운 내용이었지만 일부는 너무 수박 겉핥기 식으로 적어두었다. 조금 더 자세히 적어둔 내용이 있었으면 하는 아쉬움이 있다.

 

마지막으로 이 책은 이런 사람들에게 추천한다.

  • 알고리즘을 한번도 학습하지 않은 사람
  • 알고리즘 책을 사서 수집만 하고 끝까지 읽어본적이 없는 사람 
  • 알고리즘을 초보자에게 알려주고 싶은 사람



댓글(0) 먼댓글(0) 좋아요(2)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
하둡 완벽 가이드 - 데이터의 숨겨진 힘을 끌어내는 최고의 클라우드 컴퓨팅 기술, 4판
톰 화이트 지음, 임상배 외 옮김 / 한빛미디어 / 2017년 3월
평점 :
장바구니담기


몇년 전부터 빅데이터 키워드는 흔하게 사용되고 있다. 위 설명에서도 알겠지만 대량의 정형, 비정형 데이터로부터 분석을 할 수 있게하는 기술을 말한다. 사실 나는 데이터 처리에 대해서는 몇년 전부터 관심이 있었다. 가령 CPU 명령어 레벨부터 multi-core processing, GPGPU까지 관심을 넓혀나가고 있었지만 이런 기술들은 정보를 저장하고 분석하기 보다는 실시간으로 들어오는 데이터를 처리하기 위한 기술들이다. 의료계 활용 사례들에 대한 기사를 보면서 하둡에 대해서 알게 되었고 빅데이터 및 분산 처리에 대한 관심을 갖게 되었다.


이 책은 톰 화이트가 지었다. 톰 화이트는 하둡 커미터 역할과 프로젝트 관리 위원회 위원으로써 아마존의 EC2와 S3서비스에서도 제대로 동작하는 하둡을 만드는 전문적인 기술을 가진 사람이다. 우선 하둡을 만들어가고 있는 사람이 작성한 책으로써 가치가 있다. 알라딘이나 yes24등 온라인 서점에서 "하둡"이란 키워드를 검색하면 맨 처음 나올 정도로 인지도고 있는 책이기도 하다. 인지도나 저자면에서 책을 살만한 충분한 동기가 되지만 무지막지하게 비싼 가격은 큰 단점이다.


이 책은 크게 5부로 구성되어 있으며, 1~3부는 하둡의 핵심을, 4부에서는 하둡 에코시스템, 5부는 하둡 사례연구를 다룬다. 하둡에 대한 기본 내용만 따진다면 3부까지 400페이지가 된다.


"Part1 하둡 기초" 부분의 설명은 몇번이나 볼 정도로 괜찮다. 데이터 처리량이 증가되고 있는 현실부터 시작하여 단일 디스크의 한계점, 다른 시스템과의 비교(RDBMS, HPC) 비교, 맵 리듀스의 특징등을 잘 설명하고 있다.



아래는 맵 리듀스에 대한 책 내용 중 일부이다. 저장된 전 세계 기온 정보를 가지고 연도별 최고 기온을 찾는 예제를 기반으로 쉘로 작성한 것과 맵 리듀스로 작성한 것을 비교하여 설명한다. 실제로 예제 코드를 보여주고 아래와 같이 논리적 데이터 흐름을 그림으로 정리해주기 때문에 기술을 이해하기 좋다.



아래는 HDFS에 대한 파일 읽기와 쓰기에 대한 내용이다. 네임노드(메타데이터)와 데이터노드(데이터)가 어떻게 상호 작용하는지를 알기 좋게 그림으로 설명한다.





전반적으로 많은 예제들과 그림들이 포함되어 있어 읽는데 어려움은 없지만 약간의 팁을 적는다면 Part I을 읽고 Part III 하둡 운영, Part II 맵 리듀스 순서로 보는게 좋다. Part I에서 기본적인 개념의 감을 잡고, Part III 를 활용하여 실습 환경을 꾸민 뒤, Part II 내용을 실습하길 바란다. 


작년부터 머신러닝으로 인하여 인지도가 높아지고 있는 스파크에 대한 설명도 있다. 그외 하이브, 플룹등 다양한 관련 프로젝트에 대한 설명이 있으니 각각의 내용을 읽어보고 필요시 활용하면 좋을 듯 싶다.






이러 사람이 읽으면 좋다.

  • 빅데이터에 관심이 있고 하둡을 고려하고 있는 사람


이 책을 읽으려면, 아니 몰입을 하기 위해서는

  • CPU, 메모리, 디스크 I/O 등 컴퓨터 구조에 대한 기본 지식을 알고 있어야 한다.
  • 대부분의 예시는 자바로 작성되어 있다. 최소 객체 지향 언어에 대한 기본적인 이해가 필요하다.
  • 실습을 위해, 리눅스 배포판에서 패키지를 설치하고 설정할 수 잇어야 한다.
  • 실습을 위해, 분산 처리 구성을 해야 하니 네트워크에 대한 기본 지식을 가지고  있어야 한다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo