Author Archives: skpark

[서평] 러닝파이썬과 함께하는 중급자 입문

러닝파이썬

2009년 학부시절, 친구들과 함께 새로운 프로그래밍 언어를 공부해보려고 알아보던 중, 당시 공개된지 몇 달 되지 않았던 파이썬3를 알게 되었다. 이 때부터 파이썬3로 여러 토이 프로젝트도 진행해보고, 대학원에 진학해서는 지금까지 데이터 분석이나 웹 개발 등으로 아주 유용하게 써먹고 있다. 계속해서 파이썬에 관심을 갖고 공부하다보니 현재 파이썬 관련 책만 20여권 정도 소유하고 있다. 이렇게 파이썬을 자주 사용하고 공부하면서도 내가 파이썬에 대해 깊이 이해하고 있다는 생각이 들지 않았다. 뭔가 더 공부해보고 싶어도, 시중에 나온 중급자를 위한 책이라고는 파이썬을 활용한 데이터분석이나 웹개발 관련 책들이 대부분이고, 파이썬 언어자체를 좀 더 깊이 이해해보고자 하는 중급자를 위한 파이썬 책은 매우 드물었다. 가지고 있는 책들 중엔 Effective Python(한글 번역판 제목: 파이썬 코딩의 기술) 이나 파이썬 완벽가이드 정도가 그나마 내가 원하는 책인 것 같다. 이 와중에 O'Reilly사의 Learning Python 국내 번역판이 나왔다는 소식을 들었다. 책의 두께가 무려 2,000페이지 (상/하권 각 1,000페이지). 그 두께의 압박에 구매를 망설이던 중, 운 좋게 제이펍의 이벤트에 당첨되어 책을 받아보게 되었다. 무료로 받은 책이긴 하지만, 워낙에 보고 싶었던 책이고 내용의 깊이도 만족스러웠기에 예제 소스까지 책 내용을 나름 꼼꼼하게 챙겨보았다 (하루에 1-2시간 정도씩 읽었는데도 1달 좀 넘게 걸렸다).

책의 두께에서 짐작할 수 있듯, 이 책은 파이썬에 대해 매우 방대한 양을 아주 깊게 다루고 있다. 특히 마음에 들었던 점은 외부 라이브러리보다는 파이썬의 언어 자체에 대해 아주 깊이 다루고 있다는 점이다. 예를 들면, 파이썬의 표준 출력 메커니즘이나 이터레이터/제너레이터의 상세 동작 원리, 쿨래스 등, 시중에 쏟아지는 파이썬 입문자용 책에선 다루지 않는 매우 중요한 내용들에 깊이 깊이있게 설명하고 있다. 보통 프로그래밍 언어 입문자용 책이 300-500 페이지 정도 되는 편인데, 이 책에서는 try/except를 활용한 예외처리 설명만해도 이미 100페이지에 달할 정도이다. 데코레이터는 일반 입문자용 책에서는 설명 자체를 하지 않는 경우가 많은데, 이 책에서는 약 100페이지 정도를 할애하여 상세하게 설명한다. 클로저에 대한 설명도 상당히 재밌었다. 단순히 변수의 스코프 설명 수준을 넘어, 클로저가 왜 필요하며 어떻게 동작하는지 다양한 예제를 이용하여 상세하고 친절하게 설명하고 있다. 클래스를 설명하는데는 무려 300페이지 이상 할애하였다. 이 책의 깊이가 어느 정도인지 이정도면 상상이 가는가?!

이런 점이 큰 장점이긴 하지만, 초보자에게는 큰 장벽일 수도 있겠다는 생각이 들었다. 특히 다른 프로그래밍에 대한 경험이 없는 파이썬 입문자에게는 이해가 불가능 한 수준이니, 파이썬을 처음 공부해보고자 하는 사람은 이 책으로 파이썬에 입문할 생각은 말아야겠다. 초보자에게 이 책을 추천하지 않는 다른 이유가 한가지 더 있다. 이 책의 초반부에서 파이썬의 기초적인 문법들을 간단하게 언급하기는 하지만, 파이썬을 공부해 본 사람들을 위한 워밍업으로 간단히 언급하는 수준이다. 특히, 뭔가를 설명할 때, 아직 앞부분에서 설명하지 않은 내용을 자꾸 미리 언급한다. 예를 들면, 변수 타입 설명하는데 벌써부터 연산자 오버로딩, 다형성에 대해 언급하고, For문도 제대로 배우지 않았는데 컴프레헨션식을 언급한다. 이러면서, "좀 더 자세한 내용은 뒷 장의 XX장에서 살펴보겠지만” 이런 식이니, 초보자는 당췌 무슨 말인지 혼란스러울 것이다. 단언컨데, 입문자는 절.대.로. 이 책을 제대로 이해할 수 없다. 파이썬 경험이 없더라도 최소한 C++이나 JAVA 와 같은 객체지향 프로그래밍 지식이 반드시 필요하다. 이 책의 서문에서는 입문자도 고려했다고 이야기하지만... 차라리 처음부터 이 책의 컨셉을 중급자를 위한 책으로 잡았어야 하지 않았을까라는 생각이 든다.

파이썬에 대한 깊은 이해를 제공한다는 점에서 개인적으로는 매우 만족스럽지만 몇가지 아쉬웠던 점이 있다.

첫번째로 과도한 버전별 차이 설명이다. 이 책에서는 각 기능들을 설명할 때, 해당 기능이 파이썬2와 3에서 어떻게 다르게 동작하는지도 친절하게 설명하고 있다. 심지어 같은 파이썬3 내에서도 3.2에서는 되지만 그 이후로는 다르게 써야한다 등의 하위 버전별 차이까지 상세하게 설명하고 있다. 파이썬의 발전과정을 이해하는데 도움을 줄 수도 있고, 파이썬의 다양한 버전을 관리하는 사람들에게는 큰 도움이 될수도 있겠지만, 개인적으로는 그냥 파이썬3.6 기준으로만 설명했어도 파이썬의 동작 원리에 대해 이해하는데 충분했을 것 같다. 이런 버전별 차이까지, 너무 많은 것을 담으려하다보니 간혹 머리가 혼란스러웠다.

또한 종종 보이는 오타와 자연스럽지 못한 번역들이 책을 읽는 내내 거슬렸다. 그나마 다행인건 파이썬에 대한 기본 이해가 있는 사람이 예제소스까지 차근차근 읽으면서 공부하면 틀린 부분을 찾아낼 수 있을 정도의 수준이다. 오타야 정오표가 나오면 참고하면 되겠지만, 문제는 번역인데, 번역의 특성상 아주 자연스럽게 번역한다는건 어렵다는 것을 알고 있다. 하지만 독자가 어떻게 이해할 것인가를 생각하기보다는 어떻게 직역을 할 것인가에 초점을 맞춘 듯 한 아주 부자연스러운 번역은 이 책의 최대 단점이다.

결론적으로, 이 책의 깊이는 이런 몇몇 단점들을 덮기에 충분하다. 써드파티 라이브러리 설명없이, 순수하게 파이썬 언어 그 자체에 대한 설명으로 약 2,000페이지 분량이다. 파이썬 입문 수준을 넘어, 파이썬 언어에 대해 깊은 이해가 필요한 초중급 이상의 개발자에게 이 책을 강력 추천한다. 두께에 쫄지말고, 강력한 의지로 이 책에 도전한다면 확실히 달라진 자기 자신을 볼 수 있을 것이다.

[서평] 바지 벗고 일하면 안 되나요?

"바지 벗고 일하면 안 되나요?" 이 제목을 보고, 이건 도대체 무슨 책인가 싶었다. 하지만 부제를 보니 그제서야 제목이 이해가 간다.

"워드프레스닷컴과 미래의 노동." 그래, 워드프레스라면 바지 벗고 일 할 수 있지.

워드프레스는 워낙에 유명한 오픈소스 기반의 블로깅 툴이라 그 명성은 익히 들어 알고 있었다. 심지어 내 블로그도 워드프레스로 운영하고 있고, 창립자도 나와 나이가 비슷해서 관심있게 지켜보던 회사이다. 이 책은 마이크로스프트에서 무려 10년간 관리자로 일한 저자가 워드프레스에서 1년간 일한 경험을 바탕으로 리더십, 생산성 등에 대해 이야기한다. 마이크로소프트라면 뭔가 관료적이고 체계적일 것 같은 대기업인데, 이런 곳에서 관리자로서 오랜 경험을 쌓은 저자가, 자유롭고 수평적인 워드프레스에서 일하게 된 것 자체가 파격적이다. 과연 저자는 정반대 성향의 회사에서도 역량을 펼칠 수 있을 것인가. 이 궁금증만으로도 이 책을 읽어보기에는 충분했다. 사실 이 책이 처음 나오자마자 관심목록에 넣어두긴 했는데 어영부영 벌써 4년이나 흐른 후에야 읽게되었다.

워드프레스의 특이한 점은 원격으로 일한다는 점이다. 직원들이 각 세계 곳곳에서 일하고 있기 때문에 따로 사무실로 출근하는 개념이 없다. 물론 팀별로 원한다면 출근해서 일 할 수 있는 사무공간을 지원하기도 하는데, 대부분이 자유롭게 근무하고 있다. 일하는 곳이 집이든 카페든 캠핑장이든 중요하지 않다. 자신이 속한 팀의 팀원들과 무엇을 할지 정하고 정한 일을 일정에 맞게 잘 해내기만 한다면 그 외의 것들은 문제가 되지 않는다. 회의가 필요할 때는 음성/영상 채팅으로 회의를 하면 된다. 이것이 바로 워드프레스 직원들이 바지 벗고 일할 수 있는 이유이자, 저자가 바지 벗고 일한 1년(The Year Without Pants)을 보낼 수 있었던 이유다.

나도 전형적인 한국 교육 시스템 아래에서 커온 탓인지 스스로 규정에 얽매여 이를 지키면서 희열을 느끼는 경우가 많았다. 남중-남고-공대-군대의 코스에서 잔뜩 관료적으로 생활하다가, 대학원에 오면서 외국인, 전문연구요원으로 현역 복무를 대체받은 학생들, 여학생들과 같이 지내다보니 자연스럽게 관료적 시스템의 문제를 인식하고 이를 깨기위해 부단히도 노력했던 것 같다. 이 책에서, 저자가 직접 일하며 겪은 에피소드와 함께 풀어내는 리더십과 생산성 관련 이야기들 중 주옥같은 말이 무수히 많았다. 그 중 몇가지만 나열하자면,

문제 해결 과정을 살펴보면 조직도에 뭐라고 적혀 있든 상관없이 실제 권력이 누구에게 있을지 알 수 있다.

어떤 조직이 왜 현재와 같은 모습인지 알고 싶다면 먼저 윗사람을 살펴보라. 그 조직에서 가장 힘이 센 사람이 날마다 어떻게 행동하느냐에 따라 그 조직의 문화가 달라진다.

사업 목표보다 특정한 원칙이나 기능을 중심으로 자기 업무를 규정하는 조직은 관료적으로 변하기 십상이다.내가 맡은 임무가 감자튀김이라고 회사에서 규정한다면 나는 감자튀김의 존재를 위협하는 모든 것에 저아할 것이다. 감자튀김이 사라지면 내 일자리도 사라지기 때문이다. 하지만 고객을 위해 곁들임 요리를 만드는 것이 내 임무라고 규정한다면, 감자튀김 말고 양파링이나 다른 신메뉴를 개발하자는 제안에 반대할 이유가 없다.

관리자 중에는 자기 자존심을 만족하게 하는 수단으로 회의 시간을 이용하는 이들이 있다. 이들은 나머지 구성원들이 시간만 낭비했다고 생각할 정도로 형편없는 회의를 했어도 장시간 회의를 끝내고 나면 자기가 무대를 장악했다는 생각에 스스로 흡족해한다.

사람들은 대부분 온라인 회의가 과연 효과가 있을까에 대해 의심하지만, 대면 회의 역시 효과가 없기는 매한가지라는 사실은 간과한다. 요즘 기업에서 하는 회의를 살펴보면 노트북을 열어놓고 회의가 얼마나 지루한지 메신저로 잡담을 주고받는 사람들이 한둘이 아니다. 논의 중인 내용이 중요하면 사람들은 집중한다. 지구 상에서 가장 따분한 일을 하는 회사라도, 만일 내가 50% 임금 인상을 적용받을 사람을 정하는 회의를 연다면 모두가 내 말을 경청할 것이다.

불필요한 전통을 제거하는 관리자는 진보한다. 제약을 걷어내 업무성과가 향상되어도 좋은 일이고, 업무성과에 변화가 없더라도 사기가 진작된다면 모두에게 좋은 일이다. 전통이라는 이유로 계속 붙을고 가는 것은 비합리적이다. 그렇다면 지금으로부터 5천 년이 지나도 여전히 정장에 넥타이를 매고 아침 9시까지 출근하려고 꽉 막힌 도로에서 사투를 벌이며 살아갈 것이라고 간주해야 한다.

나는 주로 출근하는 것을 좋아한다. 대학원생이다보니 지도교수님과 이것저것 이야기할 일이 많은데, 이메일이나 문자보다는 직접 얼굴을 맞대고 이야기하는 것이 훨씬 빠르고 정확하게 소통할 수 있기 때문이다. 이 책에서도 저자가 그냥 전화로 했다면 금방 끝낼 회의를 채팅으로 하느라 시간을 많이 썻다는 내용들이 나온다. 일과 사적인 시간을 분리하기 위해. 하지만 대학원생 신분에 그런 것이 어디있으랴. 몸은 퇴근했지만 두뇌는 퇴근이 없다.

이 책이 나온게 2014년이라, 이 책에서의 워드프레스 문화가 지금도 똑같이 유지되고 있을 것 같지는 않다. 직원도 훨씬 더 늘어났을 테고, 이런 직원 관리를 위해 어느 정도는 수직적인 인사 관리가 생기지 않았을까 싶은데. 심지어 지금은 워드프레스가 아니더라도 다른 여러 블로깅 툴들이 많다. 블로그 툴 뿐만 아니라 Medium이나 Steamit 같은 다양한 버전의 글쓰기 툴이 인기를 끌고 있다. 하지만 워드프레스는 여전히 최고 인기있는 블로그 툴 중 하나이고, 이런 자유로운 분위기 속에서 직원들은 최대한 창의력을 발휘하여, 수많은 경쟁 시스템들 사이에서도 잘 살아남으리라 생각된다.

자, 나는 이제 어떻게 이 책을 통해 배운 리더십과 생산성을 내 생활에 적용할 수 있을 것인가. 개인적으로는 원격 근무보다는 직접 출근해서 일하는 것을 좋아한다. 일과 개인 시간을 분리하고, 일 하는 시간에는 딱 일만 하는 것이 더 좋은 것 같고, 회의도 화상채팅보다는 직접 대면해서 회의를 빠르고 정확하게 끝내는 것을 좋아하는 편이다. 대신, 다른 사람도 나처럼 직접 출근하고 오프라인으로 회의를 해야한다는 생각은 덜 갖게 되었다. 어디서든 나와 소통하는데 큰 지장이 없고, 생산성을 높이는데 문제가 없다면 내가 바지에 셔츠를 입고 일한들, 다른 사람이 바지 벗고 일하든 내가 신경쓸 바가 아닌 것이다.

[서평] 자료구조와 함께 배우는 알고리즘 입문 자바편

자료구조와 함께 배우는 알고리즘 입문 자바편

처음 자료구조를 배운 것은 대학교 3학년 1학기 전공수업이다. 2학년 1학기에 C++과 JAVA를 배웠고, 2학년 2학기 때 C#으로 혼자 개인프로젝트 삼아 GUI 프로그래밍을 해 본 직후라 뭔가 코딩에 대한 초보의 열정이 솟구치던 때다. 자료구조를 배우지 않은 상태에서도 내가 필요한 윈도우 프로그램을 뚝딱뚝닥 만들어낼 수 있었기에, 처음 자료구조를 배우면서 이런걸 왜 배워야하나 싶은 생각을 했었다. 스택과 값 삽입/삭제/검색 등... 응? 이건 다 ArrayList에 이미 다 구현되어있는데? 왜 배워야하지? 이런 안일함에 파묻혀 있었다.

스택이나 큐, 정렬, 트리 등의 기본 자료구조는 이미 모든 언어에서 매우 잘 구현되어 있기 때문에 굳이 내가 새로 구현할 필요는 없지만, 시간이 지나면서 자료구조를 잘 이해하고 활용하는 능력, 그리고 이것에 기반하여 내가 필요한 알고리즘을 잘 구현해내는 그 능력이 부족함을 느끼기 시작했다. 뭔가 개발을 하면서도 더 좋은 방법이 있을 텐데라는 생각이 드는 것이다. 지금 내가 구현한 것이 최선인가? 더 좋은 알고리즘을 생각하는 능력은 어떻게 기를 수 있을까? 어디서부터 다시 공부해야하는 것일까? 라는 의문을 갖게 된 것이다.

10년이 지난 지금, 개발자는 아니지만 웹이든 앱이든 개발은 계속해왔음에도 불구하고, 누군가 내게 연습장과 펜을 주고 스택/큐 구현해봐, 또는 퀵소트 구현해보라고 하면 쉽게 슥삭슥삭 구현해낼 수 자신이 없다. 이런 불안감 탓인지, 항상 자료구조 다시 한번 공부해야지 마음만 먹으면서 옛날에 공부할 때 쓰던 자료구조 책은 내 책장 눈에 잘 띄는 곳에 항상 꽂아두었다.

마침 [자료구조와 함께 배우는 알고리즘 입문 자바편] 책이 나왔고, 이 책으로 다시 한번 자료구조/알고리즘을 공부해보기로 했다. 일본 공학교육협회에서 저작상을 수상한 프로그래밍 교육서라니. 일단 일본에서 쓰여진 책이라는 점이 크게 마음에 들었다. 다른 건 몰라도 IT관련 책들은 그림등을 곁들여서 (심지어 만화를 동원하기도!) 일본 서적이 초보가 이해하기 쉽게 쓰여진 책들이 많기 때문이다. 이 책도 그렇다. 책 표지에도 자신있게 적혀있다. "220개의 그림과 표로 쉽게 배우자!" 라고.

일단, 이 책의 제목이 [자료구조와 함께 배우는 알고리즘 입문]인데, 내 생각엔 알고리즘 입문이라기보다는 알고리즘을 곁들인 자료구조 입문이라는 제목이 더 어울리는 것 같다. 이 책에서는 크게 기본 자료구조인 스택/큐, 연결리스트, 트리, 그리고 여러 정렬 알고리즘 정도를 다루고 있다. 각 자료구조에 대한 상세한 설명과 이를 구현한 JAVA 소스코드 및 코드. 일본 번역서 답게, 각 자료구조들의 원리를 그림으로 한단계 한단계씩 아주 상세하게 설명하고 있어서 이해하기가 매우 쉬웠다. 사실 자료구조나 알고리즘등이 궁금할 때는 블로그를 찾아보는 편인데, 열정적인 블로거분들이 자료구조나 알고리즘의 동작 원리를 한땀한땀 그림을 그려가며 매우 친절하게 설명해놨기 때문이다. 이 책은 이미 그런 그림 설명을 매우 잘 포함하고 있어서 굳이 블로그를 찾아볼 필요 없이 책 하나로 쉽게 이해할 수 있었다. 당연히 풀소스코드를 제공하고 있지만, 설명된 자료구조/알고리즘을 더 나은 방향으로 직접 개선해볼 수 있도록 연습문제 제공하고 있다. 연습문제를 다 풀어보지는 못했지만, 해당 자료구조/알고리즘을 확실히 이해했는지 스스로 테스트 해 볼수 있는 적절한 수준의 난이도였다.

한가지 아쉬운 점으로는, 책 중반부부터 (연결리스트, 트리, 해시 등) 예제소스에 제네릭을 쓰고 있다. 그냥 스택/큐 예제에서 처럼 int형 값들을 가지고 설명하고 예제 소스코드를 작성해도 충분히 자료구조를 이해하는데 지장이 없는데, 굳이 제네릭을 사용했어야 했나 싶은 생각이 들었다. 이 책을 보는 정도의 독자는 JAVA에 능숙하기보다는 이제 막 JAVA 문법을 익히고 다음 단계로 나아가는 수준이 대부분일 것 같은데, 제네릭을 사용하고... 그냥 Integer 값들만 갖고 데이터 삽입/삭제를 설명해도 될텐데 로 데이터를 더 복잡하게 만든 부분이 좀 아쉬웠다. 갑자기 뒤로 갈 수록 예제코드 수준이 처음보다 확 복잡해지는 느낌. 괜히 막 Comparable 인터페이스 구현하고... 그래도 뭐 제네릭을 잘 이해하고 있는 독자라면 전혀 문제될 게 없다.

이제 막 JAVA 문법서(?)를 하나 떼고, 그 다음 단계 도약을 생각하고 있는 독자라면 이 책을 추천하고 싶다. JAVA와 함께 알고리즘과 자료구조의 기초를 한번에!

PS. 몇몇 오타를 찾았는데 책 내용을 이해하는데 크게 지장있는 것은 아니었다. 내용만 잘 이해했다면, 엇 요부분 잘못되었네! 하고 찾을 수 있는 정도? 이지스퍼블리싱 홈페이지에 수정 요청을 보내놨으니 곧 정오표가 나오지 않을까 기대한다.

PS2. 정렬 파트에서 도수 정렬이라는 말이 있어서 이건 뭐지 싶었는데, 알고보니 계수 정렬(count sort)이다. 일본어를 번역하면서 이렇게 번역한건지...

Category:

늦은밤, 잠 못 드는 아이들 & 얘들아, 너희가 나쁜 게 아니야

늦음밤_잠_못_드는_아이들

페이스북에서 우연히 [얘들아, 너희가 나쁜 게 아니야] 책 광고를 보고, 이 책을 찾아보지 않을 수 없었다.

밤(夜)의 선생님 미즈타니.
제자를 구해내기 위해 직접 폭력조직 두목과 맞서고, 제자를 빼내기 위한 조건으로 손가락 하나를 희생했다.

"저, 도둑질한 적 있어요."
괜찮아.

"저, 원조교제했어요."
괜찮아.

"저, 친구 왕따 시키고 괴롭힌 적 있어요."
괜찮아.

"저, 폭주족이었어요."
괜찮아.

"저, 죽으려고 했어요."
괜찮아.

"저, 공갈한 적 있어요."
괜찮아.

"저 학교에도 안 가고 집에만 처박혀 있었어요."
괜찮아.

"죽어 버리고 싶어요."
하지만 얘들아, 그것만은 절대 안 돼.

오늘부터 나랑 같이 생각을 해보자.

2017년에 개정판이 나왔지만, 도서관에 검색해보니 2004년에 나온 구버전의 책이 있어서 이 책을 빌리러 갔다. 책장에 꽂혀있는 [얘들아, 너희가 나쁜 게 아니야] 책 바로 옆에 미즈타니 오사무 선생님이 2005년에 쓴 [늦은밤, 잠 못 드는 아이들]이란 책이 함께 있었다. 두 책을 같이 빌려 나왔다.

야간고등학교 교사로 근무하면서, 10년 넘게 밤거리를 돌아다니며 청소년들에게 말을 건네는 선생님, 미즈타니 오사무. [얘들아, 너희가 나쁜 게 아니야]와 [늦은밤, 잠 못 드는 아이들] 두 권 모두, 그동안 선생님이 만난 학생들의 이야기를 엮은 책이다. 마약하는 아이, 폭력을 휘두른 아읻, 원조교제를 한 아이... 이런 방황하는 아이들을 만나 바른 길로 인도한 좋은 내용의 책인가 했는데, 자신이 챙기려했지만 결국 자살해버린 아이, 도우려 했지만 잠적해버린 아이 등, 다시 떠올리기엔 가슴이 미어질만한 과거지만 담담하게 글로 풀어내고 있다. 어쩌면 책으로 그들에게 쓰는 편지인지도 모른다. 책의 두께도 두껍지 않고, 글도 길지 않아서 두 권 모두 순식간에 읽어치울 수 있었다.

미즈타니 선생님이 학생들을 대하는 자세에 대한 인상 깊은 구절이 있다.
"나는 학생을 절대 야단치지 않는다.
아이들은 모두 '꽃을 피우는 씨앗'이라고 생각하기 때문이다.
어떤 꽃씨라도 심는 사람이 제대로 심고, 시간을 들여서 정성스레 가꾸면 반드시 꽃을 피운다."

선생님은 폭력조직으로부터 이런 꽃을 피우는 씨앗 한명 꺼내오기 위해 손가락 하나를 희생하기도 했다.
"손가락 하나를 잃은 아픔은 매우 컸다.
그러나 소년의 미래를 위해서
손가락 하나쯤은 희생할 수 있었다."

내가 학교 다니던 때를 떠올려보면, 그 누가 학생들을 이런 시선으로 바라봐줬던가. 되짚어봐도, 꽃씨들을 짓밟던 선생들만 여럿 떠오를 뿐이다. 나도 누군가를 가르치는 직업을 갖게 될 수도 있다. 그게 정식 선생님은 아닐지라도 어떤 방법으로든 다른 이들을 지도할 일은 있을 수 있다. 내가 지도할 대상이 청소년이 아니어도 좋다. 그 때가 되었을 때, 나는 미즈타니 선생님 처럼 될 수 있을까? 꽃을 피우는 씨앗을 제대로 심고, 시간을 들여 정성스레 가꿀 수 있는 사람이 될 수 있을까? 쉽지 않을 것이다. 쉽지 않은 일인 것을 알기에 모두가 미즈타니 선생님을 존경하고 있는 것일테다.

지금도 이 책을 썼을 때 처럼 밤거리를 다니고 계신지 궁금해서 찾아보다가 공식 블로그를 발견했다. 구글번역기를 통해 블로그에 접속해서 몇몇 포스트를 읽어보았다 (https://translate.google.com/translate?hl=&sl=ja&tl=ko&u=http%3A%2F%2Fwww.mizutaniosamu.com%2Fblog%2F&sandbox=1). 놀랍게도, 지금까지 밤거리를 다니며 청소년들에게 말을 걸고 계신다. 그 때 그 때 일들을 조금씩 블로그에 올리고 있다.

내게는 미즈타니 선생님이 없으니 나 스스로라도 스스로를 위로해야겠다.

"괜찮아"

[서평] TensorFlow를 이용한 <딥러닝의 정석>

딥러닝의정석

학부때부터 현재 대학원과정까지 10여년을 컴퓨터 관련 전공에 몸담고 있다. 몇년주기로 계속해서 트렌드가 바뀌고 있는데, 스마트폰 개발 열풍이 불었다가, 빅데이터가 유행하더니, 지금은 머신러닝/딥러닝이 IT분야에서는 최고의 화두이다. 10년쯤 전, 학부 4학년때 전공 수업으로 기계학습이라는 과목을 수강하면서 신경망이라는 개념을 처음 접했었는데 지금 이렇게 화제가 될 줄 알았으면 그 때부터 미리 공부해놓을걸 하는 아쉬움이 크다. 늦었다 싶을때가 늦은것이라는 박명수의 명언도 있지만, 당장 쓸 일은 없어도 어느 정도 기본 지식은 있어야 하지 않을까 하는 생각에, 코세라에서 스탠포드 교수인 Andrew Ng의 머신러닝 강의를 들어보기도 하고, 홍콩과학기술대학교 교수였던 김성 교수님의 머신러닝/딥러닝 강의를 들어보기도 했다. 두 강의 모두 끝까지 듣지는 못했지만 Andrew Ng 교수님의 강의로 대략적인 이론에 대해서 공부하고, 김성 교수님의 강의로 머신러닝 기반지식과 Tensorflow 기본에 대해 공부했다. 마침 한빛미디어를 통해 O'REILLY의 [딥러닝의 정석]이 번역/출간되었기에, 머신러닝 기초 이론과 Tensorflow 기초를 배웠으니 이 책을 통해 기반 지식을 업그레이드 할 수 있겠다는 생각이 들었다.

이 책의 서두에서는 미적분, 행렬, 파이썬 프로그래밍에 대한 기본적 이해가 있는 독자를 대상으로 한다고 밝히고 있다. 하지만 막상 이 책을 읽기 시작하면서 서두가 조금 수정되어야 할 것 같다는 느낌이 들었다. 이 책은 미적분, 행렬 파이썬 프로그래밍에 대한 기본적 이해와 머신러닝 이론 기본 및 TensorFlow 기초 개념에 대해 이까지 하고 있는 독자가 대상이라고 해야 적절할 것 같다. 그럴것이, 이 책에은 한권 안에 신경망 기초부터 강화학습 활용까지 머신 러닝 전반의 다양한 기술을 다루고 있다. 한권 안에 많은 내용을 꾹꾹 담아내다보니 이 부분에서 호불호가 크게 갈릴 것 같다. 책의 초반부에서는 신경망에 대해 설명하고 있는데, 나는 다행히 선행 지식이 있으니 따라갈 수 있지만 머신 러닝을 처음 접하는 독자라면 이정도 설명으로 이해가 가능할까하는 의문이 들었다. 아마존 웹사이트에서 책 원서를 검색해보니 별점을 낮게 준 사람들 대부분의 리뷰가 not enough explanation and unexplained terms 와 관련되어 있는 것을 보면, 확실히 이 책의 대상은 머신러닝 초보는 아닌 것 같다.

머신러닝 기본 및 TensorFlow 기본 지식이 있다면, 책의 초반부까지 가볍게 잊고 있던 개념들을 다시 떠올린다는 느낌으로 읽을 수 있을 것 같다. 개념을 넘어 본격적으로 딥러닝 응용레벨에서 다루는 것은 중반부에서 CNN을 TensorFlow 코드를 이용하여 설명하는 부분부터이다. 여기서부터 TensorFlow 코드가 책의 상당 부분을 차지한다. 지면 한계상 Full source code보다는 함수레벨 정도의 코드만 지면에 할애하고, Full sorcue code는 깃헙 저장소를 통해 접할 수 있었다. 책의 소스코드만 따라치면서 책 내용을 실습해보려니 책에 나온 코드로는 실행이 어려워서 깃헙 저장소를 찾아봤는데, 코드를 챕터별로 관리하지 않고 그냥 한 폴더에 때려박은 식으로 관리를 하고 있어서 찾기가 힘들었다. (책의 코드를 어떤 파이썬 파일에서 찾을 수 있는지 안내가 없다보니 많이 불편했다) 다행히 TensorFlow야 워낙 유명하고 커뮤니티 활성화도 잘 되어있으니, 모르는 용어나 코드 구현 방법에 대해 검색하면 금방금방 찾을 수 있다.

책의 중반까지 MINST 손글씨 데이터를 다룰때까지는 볼만했는데, 책의 후반부에서 시퀀스 분석과 강화학습 내용이 나오면서 낯설고 어려워 이해하기가 힘들었다. 나름 자연어처리에 대한 기본 지식도 있으니 금방이해하지 싶었는데, 책의 설명만으로는 힘들어서 TensorFlow 공식문서나 다른 블로그를 많이 참조했다. 결국 코드까지 돌려보지는 못했는데, 이 부분은 다시 복습하면서 봐야겠다.

[딥러닝의 정석]을 TensorFlow 기본 지식이 있는 사람이 TensorFlow를 이용하여 머신러닝 기본을 다시 한번 되새겨보고, 시퀀스 분석부터 강화학습까지 활용해보고 싶은 분에게 추천한다.

입문자는 아래 링크를 참고하여, 머신러닝과 TensorFlow의 기본을 다지고 이 책을 보도록 하자 (본인이 공부할 때 직접 참고 한 자료들이다)

- 텐서플로우 문서 한글 번역 문서: https://legacy.gitbook.com/book/tensorflowkorea/tensorflow-kr/details
- 신경망 첫걸음: http://www.yes24.com/24/goods/37883845?scode=032&OzSrank=3
- 텐서플로우 첫걸음: http://www.yes24.com/24/goods/30547754?scode=032&OzSrank=6
- Andrew Ng 교수님의 머신러닝 강의: https://www.coursera.org/learn/machine-learning
- 김성 교수님의 머신러닝/딥러닝 강의: https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm

Do it! 프런트엔드 웹 디자인 입문

프런트엔드 웹 디자인 입문

프런트엔드 웹 디자인 입문

처음 웹개발에 입문한 것이 99년도, 중학생 시절 부모님께서 사주신 비싼 컴퓨터를 게임용도로만 사용하는 것이 죄송스러워 컴퓨터공부를 한답시고 HTML, Javascript라는 것을 공부했었다. 깊이 공부한 것도 아니고, 편집기로 기본 HTML소스에 여기저기 다른 사람들이 올려놓은 Javascript 소스들을 베껴 개인홈페이지도 만들어 봤었는데, 지금까지도 확실히 기억나는 것은 나는 웹 "디자인"에는 감각이 없다는 사실이다. 대학에서도 컴퓨터과학을 전공하고, 지금은 대학원까지 진학하면서 10년 넘게 컴퓨터 관련 전공으로 학교에 남아있엇지만, 그 "디자인" 감각은 쉽사리 늘질 않는다. 계속해서 학교에서만 지낸터라 웹 개발을 전문적으로 하지는 않았지만, 지금은 나름 연구목적 또는 취미로 웹서버 기반으로 동적으로 동작하는 간단한 웹사이트들을 만들고 있다. Flask 프레임워크에 제일 친숙하고, 최근에는 ReactJS를 이용하여 간단한 사진 브라우징 웹서비스를 만들어봤다. 그래도 이정도면 웹개발에서는 초급 딱지는 뗏지 않았을까 싶은데... 디자인은 확실히 젬병이다. 그래서다. 프런트엔드 웹 디자인 입문은 내가 프런트엔드 웹 디자인에 "입문"하는데 큰 도움이 되었다.

책의 초반부에서는 웹디자인 트렌드를 설명하면서, 반응형웹과 요즘 많이 쓰이는 디자인 기법 및 이론에 대해 설명한다. 미디어 쿼리란 무엇인지부터, 그리드 시스템, 패러랙스 스크롤링, 캐러셀 등. 이런 디자인 기본 이론에 별 관심이 없었는데, 여기서 많은 사실을 새롭게 알았다. 미디어 쿼리가 무엇인지는 대충 알고 있었지만, 그냥 Bootstrap의 그리드시스템의 사용법만 익히고 적절히 갖다쓰기만하는 정도였기때문에, 이를 입맛에 맞게 커스터마이징 할 엄두도 내지 못했다. 이 책에서는 미디어 쿼리의 기본부터 예시를 들어가며 잘 설명해주고 있어서 쉽게 이해할 수 있었다. 이제 필요에 따라 직접 커스터마이징해서 쓸 수 있다. 부끄럽다, 이런 기본도 모르고 있었다니.

책 중반부는 실습이다. 초반부에서 배운 이론들을 토대로, 여러가지 프론트엔드 디자인 기법들을 구현하는 방법을 소개한다. 그리드 레이아웃, 풀스크린 랜딩, 캐러셀, 웹폰트 등의 다양한 기법들을 직접 구현하거나 유명한 플러그인을 사용하는 방법 등에 대해 잘 설명하고 있다. 저자가 깃헙에 실습 소스를 다 공개하고 있고, 실습 코드들은 효과 적용 전/후 별로 따로 파일들을 제공하고 있어서 내가 하나하나씩 따라하면서 최종 결과와 비교해볼 수 있도록 준비되어있어 책 예제를 실습하기가 굉장히 편했다. HTML/CSS 기본지식만 있으면 따라하는데 지장이 없고, 각 예제도 5분안에 다 해볼 수 있을 정도로 쉽고, 유용하게 써먹을 수 있도록 예제가 좋다.

후반부는 지금까지 배운 내용을 바탕으로 실전에 돌입한다. 개발자도구를 이용한 웹사이트를 분석 하는 방법, Bootstrap을 이용한 프런트엔드 디자인구현 등이 준비되어있다. 있다. 부끄럽지만 크롬 개발자도구를 아주 오래동안 써왔음에도 불구하고, 이 책을 읽기 전까지 크롬 개발자도구에 device toolbar가 존재하는지도 모르고 있엇다. 웹사이트를 개발하면서 Responsive를 테스트 하기위해서 브라우저를 직접 크기조절해가면서 확인했었는데, 각 device 크기별로 맞춰서 볼 수 있는 device toolbar가 이미 제공되고 있었을줄이야. Bootstrap은 워낙 오래전부터 써왔던 터라 이미 익숙해서 따로 실습을 따라해보지는 않았다.

터미널/콘솔이나 좋아하고 편집기는 Vim 즐겨쓰는 탓인지 디자인 감각이 매우 부족하다. 이런 나의 디자인 감각 이슈를 해결하기 위해, 직접 웹사이트를 꾸미기보다는 이미 잘 정리된 Bootstrap을 오래동안 써왔다. 특히 Bootstrap에서 기본으로 Responsive를 구현하고 있으니 내가 직접 구현할 필요가 없어서 기반 지식에 대해 관심을 갖지 않게되고, 디자인 요소를 고려할 때도 Bootstrap에서 제공하는 기능에만 한정하여 웹사이트를 디자인해왔다. 다행히도 내가 만드는 웹사이트들이 상업적인 서비스들도 아니고, 소소하게 연구목적으로 쓰이는 경우가 대부분이라 디자인이 크게 중요하지는 않았지만, 항상 내가 이쪽에 부족하다는 생각은 갖고 있었다. 다행히도, 이 책이 나의 프런트엔드디자인 능력 확장에 큰 도움을 주었다. 여러 기본 이론들도 습득할 수 있었고, 다른 웹사이트들에서나 보던 다양한 기법들도 예제코드를 따라 직접 실습하면서, 나도 구현할 수 있다는 자신감이 생겼다. 사실 이 책 개정판이 나오기 전, 2015년도에 이 책이 나온것을 알고 장바구니에 넣어뒀었는데 나중에 보려고 게속 미루던 것이 이제까지 와버렸다. 진작에 이 책을 읽어봤다면, 내가 만들었던 웹사이트들 디자인이 훨씬 이뻐졌을텐데하는 아쉬움이 생긴다. 이제라도 이 책을 통해 업그레이드 된 디자인 내공으로 내 웹사이트들을 손봐야겠다.

웹개발 입문자들에게, HTML/CSS, 그리고 Javascript (jQuery까지 알면 금상첨화)를 어느 정도 이해했다면 이 책을 강력추천한다.

[서평] HTTP/2의 깊은 이해를 위한 필독서 <러닝 HTTP/2>

러닝 HTTP/2

http://www.hanbit.co.kr/media/books/book_view.html?p_code=B1303249964

학부와 석사과정을 컴퓨터 관련 전공으로 마쳤고, 지금은 컴퓨터관련 전공의 박사과정에 재학중이다. 계속해서 학계에 있어온 터라 웹 개발을 전문적으로 하지는 않았지만, 웹서버 기반으로 동적으로 동작하는 연구목적 또는 취미로 간단한 웹사이트들을 만든 경험이 있다. 특히 Flask 프레임워크에 제일 친숙하고, 최근에는 ReactJS를 이용하여 간단한 사진 브라우징 웹서비스를 만들어봤다.

웹개발에 관심이 있는 사람이라면 HTTP가 무엇인지는 누구나 알고있다. 하지만 HTTP/1.1과 HTTP/2에 대해서는? 막연하게 HTTP/2가 HTTP/1.1을 개선하기 위해 나온 것이며, 속도가 더 빠르거 보안이 좋다 정도로만 알고 있었지, 정확하게 HTTP/2가 무엇인지는 모르고 있었다. 최근에 HTTPS로 웹서비스를 제공하면서 조금 관심이 가긴 했었는데, 그래도 HTTPS와 HTTP/2가 정확히 어떻게 다른지도 몰랐다. HTTPS를 적용하였으니 이제 내 웹서비스는 HTTP/2를 지원하는 것인가 라고 생각했을 정도다.

최근 한빛미디어에서 O'RELLY의 Learning HTTP/2 라는 책을 번역/출간했다는 소식을 듣고, 나중에 시간날 때 사보려고 온라인서점 장바구니에 넣어뒀는데, 운좋게 한빛미디어의 나는리뷰어다 이벤트를 통해 <러닝 HTTP/2>를 지원받았다. 나는 150 페이지 분량의 이 책을 통해 HTTP/2가 무엇인지, 어떻게 동작하는지, 그리고 내가 궁금했던 HTTPS와 HTTP/2는 어떻게 다른 것인지 명쾌하게 이해할 수 있었다.

1. HTTP 발전 과정과 HTTP/2의 이점
2. HTTP/2로 전환하기 전 고려해야 할 항목
3. 웹 성능 향상을 위한 모범 사례 및 안티패턴
4. 브라우저, 서버, 프락시, 콘텐츠 전송 네트워크에 대한 HTTP/2의 지원
5. HTTP/2 vs HTTP/1.1 성능 비교
6. 지연 시간, 패킷 손실, TTFB 등에 대한 HTTP/2의 영향
7. 다양한 웹 브라우저 개발자 도구로 디버깅하는 방법
8. QUIC, TLS 1.3 등 HTTP/2 이후를 대비하며 살펴볼 기술

위와 같이, 이 책은 기존의 HTTP/1.1는 무엇이며, 문제가 무엇인지, 이를 개선하기 위해 어떻게 HTTP가 발전되어 HTTP/2까지 이르렀는지 아주 명쾌하게 설명되어있다. 뿐만아니라 상세 내부 동작 원리에 대해 적절한 예제와 함께 알기쉽게 설명하고 있다 (간간히 나도 생소한 내용이 나오긴했는데, 전체적으로 HTTP/2의 개념을 이해하는데는 크게 지장이 없었다).

사실 나처럼 연구 목적이나 취미 목적의 간단한 웹서비스를 만드는 사람은 HTTP/2를 당장 도입하지 않아도 크게 지장이 없다. 하지만 일정 규모 이상의 서비스를 개발할 때는 HTTP/2에 대한 이해와 구현이 필수다. 이미 대부분의 알려진 브라우저, 웹서버들은 HTTP/2를 지원하고 있으니, 구현하는데 큰 어려움이 들지 않을 것 같다. 이 책에서는 HTTP/2 구현이 신경써야 할 점들에 대해서도 자세히 설명하고 있기 때문에 크게 도움이 될 것 같다.

나는 이 책을 읽고 나서야 정확히 이해했다. HTTPS는 HTTP/2구현의 필요조건일 뿐이라는 것을. HTTPS만 적용한다고해서 자동으로 HTTP/2가 적용되는 것은 아니었다. 특히 최근에 HTTPS를 도입한 내 웹서비스는 Flask 웹프레임워크 기반으로 만들면서, 따로 Apache나 Nginx를 연동하지 않았던터라 HTTP/2를 지원하지 않았다. 이 책을 보고나니 Apache와 연동해서 HTTP/2로 동작하는 모습을 보고어서 추가적인 작업을 하려고 계획중이다. 에서는 HTTP/2 디버깅도 방법에 대해서도 설명하고 있어서 따라하기 좋다. (간단한 웹사이트라 HTTP/2를 지원한다고해서 큰 속도향상이 있을 것 같지는 않지만...)

웹개발 입문자라면(Header, TCP등에 대한 지식이 없다면) 인사이트의 O'RELLY 번역책인 HTTP 완벽가이드(http://www.insightbook.co.kr/book/programming-insight/http-the-definitive-guide)를 먼저 읽고, 이 책을 읽기를 추천한다. 그런 기본 지식이 없으면 이 책을 전혀 이해할 수 없다 (나도 이 책의 몇몇 부분에서는 전문적 지식이 부족하여 이해하지 못하고 그냥 넘긴 부분이 몇몇있다). 하지만 HTTP에 대한 기본적인 이해가 있고, 웹개발에 관심이 있는 사람이라면 바로 이 책을 봐도 좋을 것 같다. HTTP에 대한 깊은 이해의 지름길이자 바른길, <러닝 HTTP/2>를 강력 추천한다 (심지어 가격도 싸다. 약 15,000원!).

이 책을 읽으면서, HTTP/2에 대한 관심이 더 커서 여기저기 자료들을 찾아보던 중, HTTP/2에 대해 잘 설명하고 있는 자료들을 찾아 아래에 정리하였다. 아래 자료들을 보고 <러닝 HTTP/2>를 읽는다면 훨씬 이해하기가 쉬울 것이다.

블로그 포스트
http://www.popit.kr/나만-모르고-있던-http2/
http://americanopeople.tistory.com/115
http://d2.naver.com/helloworld/140351

2014년 10월 17일, 한국 웹 20주년 컨퍼런스, "더 빠른 웹을 위해: HTTP/2" 발표자료, 발표자: 네이버랩스 이응준
https://www.slideshare.net/eungjun/http2-40582114

기술문서
https://developer.mozilla.org/ko/docs/Web/HTTP

[파이썬 데이터 분석 입문] 으로 파이썬 & 데이터 분석 동시 입문하기

파이썬데이터분석입문

한빛미디어의 나는 리뷰어다 이벤트로 "파이썬 데이터 분석 입문(Foundations for Analytics with Python)"을 리뷰하게 되었다.

2011년, 대학생 때 친구들과 스크립트언어 하나를 공부하기로 하면서 파이썬을 처음 접한 이후로 지금까지 파이썬을 매우 유용하게 사용해오고 있다. 처음에는 간단한 웹 프로그램을 만들면서 시작했고, 대학원에 와서는 Flask를 이용한 연구용 웹 프로토타입 개발이나 데이터 분석을 위해 사용중이다. 파이썬 이외에도 데이터 분석을 위해 R도 가끔 쓰고, ggplot을 이용하여 그래프도 그리는 수준이라, 분명 이 책에서 대상으로 하는 데이터 분석 초보는 아니다. 그래도 당장 눈앞에 닥친 과제를 해결을 위해서 초급부터 한단계씩 오르기보다는 온 몸으로 부딪혀가며 거칠게 배워온터라 데이터 분석 입문시 반드시 알아야 할 기본기가 부족한 것은 아닐까라는 생각은 항상 하고 있었는데 우연한 기회에 이 책을 접하게 되었다.

파이썬데이터분석입문_1

이 책은 책 제목을 잘 따르고 있다. "Foundations." 일단은 데이터 분석이전에 파이썬의 기초부터 시작한다. 실제로 책 전체 350페이지 중 첫 100페이지가 파이썬 설명에 할애되었다. 단 100페이지로 파이썬을 전부 다루는 것은 당연히 불가능하므로, 데이터 처리에 필수적인 부분만 집중적으로 공략한다. 그리고 CSV/Panda를 이용한 데이터 분석, 엑셀 데이터 분석, 그리고 SQLite3/MySQL를 이용한 데이터베이스 기반 데이터 분석 등을 하나씩 다루고 있다. 데이터 분석 입문으로 필수적인 내용들이다. 하나하나 예제소스와 출력 결과를 보여주고 있기 때문에 이해하기도 쉽다. 단, 이 책을 통해 데이터 분석에 입문하고자 하는 사람은 반.드.시. 예제를 다 따라쳐보길 권한다. 그리고 이 책을 읽으면서 놀란 점은 번역이 매우 깔끔하다. O'REILLY 표지만 아니었다면 국내에서 새로 낸 책인줄 알았을 정도다.

아쉬운 점으로는, 이 책에서 csv 라이브러리 이외에 Pandas까지 같이 언급하고 있는데, 이제 프로그래밍도 처음 접하는 초보에게 pandas까지 가르치는게 맞는지 잘 모르겠다. 어차피 여기서는 csv로도 할 수 있는 일을 판다스로도 해보는 수준이라. Pandas의 강력함이 전혀 보여지지 않는다. 또한 좀 더 실전적인 예제들이 들어있었다면 좋았을 것 같다. 카테고리별 평균구하기 정도의 예제가 아니라 실제로 독자들이 읽으면서 공감할만한 예제, 예를 들면, 고객 구매 데이터에서 가장 많이 구매된 항목순으로 랭킹 보여준다던가, 특정 물품과 함께 구매될 때 가장 많이 같이 구매된 물품 예상하기 등의 예제였다면 더 재미있게 따라할 수 있지 않았을까 싶다.

"이 책은 데이터 분석을 위해 스프레드시트를 자주 이용하지만 프로그래밍 경험은 전혀 없는 독자를 대상으로 한다." p9

여기서 "스프레드시트를 자주 이용하지만"이 포인트인 것 같다. 특히 주위에 엑셀을 계속 써오던 사람은 엑셀만으로도 데이터 분석과 그래프 그리기가 충분하다고 말하지만, 데이터 양이 엑셀에서 커버할 수 있는 범위를 넘어서기 시작하면 엑셀만으로는 다루기 힘들다. 엑셀에서 다양한 함수를 제공한다하지만, R이나 파이썬 패키지에 비할 바도 아니다. 결국 데이터 분석을 해야하는 사람이라면, 엑셀로 다 할 수 있다고 혼자 끙끙앓지말고 당장 R이든 파이썬이든 이용해서 본격적인 데이터 분석으로 들어와야한다. 진입장벽이 좀 높긴하지만, 그 진입장벽을 낮추는데 이 책이 도움을 줄 수 있을 것 같다.

특정 언어를 활용한 뭔가 해내기 종류의 책을 볼 때마다 느끼는 것이지만, 그 책을 10번 읽어도 소용없다. 추가적인 공부가 더 필요하다. 처음 프로그래밍을 하는 사람이 이 책을 통해 100페이지 분량의 파이썬 설명을 공부한다고해서 파이썬을 이해하기는 굉장히 어렵다. 이 책을 읽고나면 이제 말 그대로 데이터 분석에 "입문" 한 수준이다. 이 책에서 배운 내용들을 더 잘 활용하기 위해서 다음과 같은 내용들을 추가로 공부해보길 권한다.

  • 점프 투 파이썬: 파이썬 분야의 베스트셀러 책이다. 책을 구입해도 좋고, 책 내용이 온라인에 완전 무료로 공개되어있으니 https://wikidocs.net/book/1로 접속해서 하나씩 보면서 공부해도 좋다.
  • 데이터베이스: 이 책에서 데이터베이스로 SQLite3와 MySQL을 다루고 있다. MySQL은 "Head First MySQL"이 데이터분석을 처음 접하는 사람에게 적합한 책으로 권한다. 나도 MySQL을 막연하게 알고 있을 때, 이 책을 통해 기본을 다졌다. 책사는게 싫다면 생활코딩에서 MySQL 기본 강의가 있으니 참고해도 좋다: https://opentutorials.org/course/195
  • R: R은 데이터 분석 및 통계를 위한 언어이다. 이 책에서 다루고 있는 파이썬용 ggplot 라이브러리 등은 사실 R에서 먼저 쓰였던 것들이다. 데이터 분석에 본격적으로 뛰어들면 결국 R과 만나게 될 것이다. 코세라에서 무료로 공개되어있는 R강의를 추천한다: https://www.coursera.org/learn/r-programming

<파이썬 데이터 분석 입문>의 자세한 내용은 한빛미디어 홈페이지에서 확인 하실 수 있습니다."

[NodeJS] npm run setup 또는 npm run start 윈도우 에러 문제 해결

ReactJS 관련 패키지들을 이것저것 설치해보려는데 아래와 같은 에러가 자꾸 발생했다.

npm ERR! Windows NT 7.x xxxx
npm ERR! ...
npm ERR! ...

이럴 땐 다음 명령어로 해결가능하다. 뭔가 마구 설치를 하면서 정상 해결된다! 해결은 했지만 이유는 아직 잘 모르겠음.

npm install --registry http://registry.npmjs.org/

nodejs_Error

[신경망 첫걸음]과 함께하는 신경망으로의 첫걸음

신경망첫걸음알파고 이후로 인공지능과 관련된 책이 쏟아지고 있다. 기계학습, 딥러닝, 강화학습...

처음 인공지능을 접한 것은 2009년 학부 3학년 때, 4학년 전공과목으로 열린 기계학습이라는 수업을 들었을때다. 당시 수업 이름이 왜 인공지능이 아니라 기계학습이라는 희안한 이름일까라고 생각했는데... 지금 기계학습이 이렇게 폭발적인 인기를 끌 것이라고는 생각하지도 못했다. 수업 내용은 [신경망 첫걸음]과 매우 비슷했던 것 같다. 인공지능의 기본에 대해서 배우고, 신경망 알고리즘의 동작원리. 그리고 프로그래밍으로 간단하게 신경망 알고리즘 동작을 실습. (아마도 C언어로 실습했던 것 같다.) 거~의 10년 정도가 지난 지금, 현재 컴퓨터과학과 관련된 전공으로 박사과정을 하고 있지만 신경망 알고리즘의 상세 동작 원리는 이미 잊은지 오래였다. 이 책을 통해 다시 신경망 알고리즘의 기본에 대해 다시 복습해보고, 실제 실습까지 해보기 위해 이 책을 선택했다.

이 책은, 제목 그대로 신경망 알고리즘의 기본 동작원리에 대해 아주 상세하게 다룬다. 신경망 알고리즘이 왜 생겼으며, 신경망 알고리즘이 무엇인고 어떻게 동작하는지 처음부터 아주 차근차근 가르쳐주고 있다. 학부 수업 때는 에러보정과정까지는 배우지 않았던 것 같은데, 이 책에서는 어떻게 신경망 알고리즘이 동작해서 결과값을 예측하며, 틀린 경우에 어떻게 에러를 스스로 보정해나가는지 차근차근 알려줘서 흥미있게 읽을 수 있었다. 이해하기 매우 어려울 수도 있는 부분들을 수학적인 내용도 아주 자세하게 설명해줘서, 끊기지 않고 읽을 수 있었다. 신경망 알고리즘을 이해하고 나서는 파이썬을 이용하여 손글씨 데이터를 스스로 학습하고 예측하는 프로그램을 실습한다. 다행히 나는 파이썬에 매우 익숙해서 코드를 이해하는데는 전혀 지장이 없었다. 하지만 파이썬을 잘 몰라도 걱정할 필요는 없어보인다. 파이썬을 잘 모르는 사람들도 일단 실습에 사용된느 프로그래밍 코드는 적당히, 신경망 알고리즘이 우리가 배운대로 동작한다는 것 정도는 이해할 수 있을 정도로 파이썬의 기초에 대해 한 챕터를 할애하여 잘 설명해주고 있다. 다만, 프로그래밍에 대한 기초가 아예 없다면 이해하기 힘들수도...

책이 300페이지가 채 되지 않고, 크기도 작아서 휴대하기도 편하다. 첫걸음이라는 제목에 걸맞게, 전공 관련 책을 봤을 때 느껴지는 무게감은 전혀 없다. 표지에서부터, 수포자도 이해하는 신경망 동작원리와 딥러닝 기초라는 말이 있어서 더 다가가기 쉽도록 해준다. 괜히 쓸데없이 두꺼우면서, 초급로 시작해서 책 말미에는 어려운 내용으로 가득한 책보다, 이렇게 가벼우면서 처음 입문하는데 충분한 수준의 내용을 적절하게 다뤄주는 것이 훨씬 좋다고 본다. 이제 인공지능의 기초 첫걸음을 내딛었으니, 다음은 텐서플로 첫걸음을 사봐야겠다. 텐서플로 첫걸음도 이렇게 부담없이 쉽게 이해할 수 있기를 바라면서.

본 리뷰는 "한빛미디어 나도리뷰어 이벤트"를 통해 [신경망 첫걸음] 도서를 지원받아 작성되었습니다.

Category: