Review
-
Effective PythonReview 2017. 5. 30.
Effective Python 이펙티브 파이썬 : 파이썬 코딩의 기술 - 브렛 슬라킨 지음, 김형철 옮김/길벗 Python은 매력적인 언어이다. 언어가 주는 간결함 그리고 동적 타이핑, 다양한 내장 기능과 오픈소스 패키지들은 사용하지 않을 수 없게 한다. 하지만 알면 알수록 어려워지는 언어임은 틀림 없다. 모든 개발 언어가 그렇듯이 그 언어의 특성을 이해하고 코드를 "잘" 작성하기 위해서는 몰입과 경험이 필요하다. 어떻게 하면 그 언어스럽게 코드를 잘 작성할 수 있을까? 이에 대한 좋은 답은 Effective 시리즈의 책이라고 생각한다. 나에게 있어 Effective 시리즈의 책들은 그 언어를 더 깊게 이해하게 도와주는 경험의 모음집이다. 그래서 사용 언어에 있어서 Effective 시리즈 책이 새로 나..
-
그림으로 개념을 이해하는 알고리즘Review 2017. 5. 3.
Hello Coding 그림으로 개념을 이해하는 알고리즘 - 아디트야 바르가바 지음, 김도형 옮김/한빛미디어 컴퓨터 개발을 하면서 알고리즘을 학습하는 것은 매우 중요하다. 너무 오래전에 배워서 이미 잊혀진 것들이 있을 수 있지만 개발을 하다보면 다시 알고리즘을 학습해야하는 순간은 종종 찾아온다. 앱을 통해서 택시와 나를 연결해주고 싶다. 어떻게 현재 위치에서 가까운 기사들에게 알림을 보낼 수 있을까? 웹 브라우저의 뒤로가기/앞으로가기는 어떻게 구현해야 하는 걸까? 영화 추천 서비스는 어떻게 나에게 영화를 추천해주는 걸까? 이렇듯 꾸준히 학습을 해야하는 알고리즘은 시중에 책들이 많이 나와 있다. C/C++로 된 책부터 Java, Python까지 다양한 언어로 알고리즘에 대한 학습 서적이 이미 나와있다. 하..
-
하둡 완벽 가이드Review 2017. 4. 2.
빅 데이터(영어: big data)란 기존 데이터베이스 관리도구의 능력을 넘어서는 대량(수십 테라바이트)의 정형 또는 심지어 데이터베이스 형태가 아닌 비정형의 데이터 집합조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술이다. 위키피디아 몇년 전부터 빅데이터 키워드는 흔하게 사용되고 있다. 위 설명에서도 알겠지만 대량의 정형, 비정형 데이터로부터 분석을 할 수 있게하는 기술을 말한다. 사실 나는 데이터 처리에 대해서는 몇년 전부터 관심이 있었다. 가령 CPU 명령어 레벨부터 multi-core processing, GPGPU까지 관심을 넓혀나가고 있었지만 이런 기술들은 정보를 저장하고 분석하기 보다는 실시간으로 들어오는 데이터를 처리하기 위한 기술들이다. 의료계 활용 사례들에 대한 기사를 보면..
-
리모트(Remote)Review 2017. 1. 6.
리모트 - 제이슨 프리드 & 데이빗 하이네마이어 한슨 지음, 임정민 옮김/위키미디어 전세값 상승이라는 큰벽을 만나게 되었다. 게다가 원격 근무의 일종인 디지털 노마드까지 알게 되어 원격 근무에 대한 관심이 무척 높아진 상태였는데 상사이자 오랜 친구인 동료가 추천을 해주어서 책을 읽게 되었다. 이 책은 basecamp, campfire등의 프로젝트 관리 툴을 개발하고 서비스하는 37 signals의 제이슨 프리드, 데이빗 하이네마이어 한슨가 지은 책이다. 이 회사는 원격 근무를 지원하는 회사로도 유명하다. 사무실에서 일하는 것도 가능하지만, 놀라운점은 개인이 선택할 수 있다는 점이다. 저자는 다년간의 원격 업무를 계획하고 실제로 경험한 사례를 기반으로 책을 만들었다. 결론부터 이야기하자면 이 책은 나에게 ..
-
Effective Unit TestingReview 2016. 12. 11.
올해 하반기에 팀 동료들과 유지보수의 어려움에 대한 논의가 있었다. 그 중 유닛테스트 추가가 필요하다는 이야기가 나오게 되었다. 우리는 유닛 테스트를 일부 가지고 있었지만 추가 활용의 어려움이 있었다. 유닛 테스트 추가하기 위해서 우리에게 무엇을 필요한지에 대한 논의를 하게 되었다. 유닛 테스트를 추가함으로써 우리는 무엇을 얻게 되는가?유닛 테스트 추가를 방해하거나 어렵게하는 요인이 있는가? 우리는 유닛 테스트가 중요하고 코드 안정성 뿐만 아니라 개발 시간을 줄여주는데 도움을 준다는 것에 모두 동의하였다. 하지만 유닛 테스트 작성이 익숙하지 않으며 어떻게 작성하는게 잘 작성된 것인지를 잘 모른다라는 의견이 있었고 특히 네트워크나 DB 인터페이스를 활용하는 시스템 데몬들은 유닛 테스트 작성이 어렵다라는 의..
-
테스트 주도 개발Review 2016. 12. 8.
테스트 주도 개발(TDD, Test-Driven Development)은 동작하는 깔끔한 코드를 위해서 테스트를 먼저 작성하는 개발 방법론을 의미한다. 여기서 테스트란 유닛 테스트를 의미한다. 유닛테스트란 소스코드에 대한 개발자에게 함수와 모듈의 동작을 검증을 할 수 있게 도와주는 도구이다. 유닛 테스트는 개발된 코드의 사용 방법을 가이드 할 뿐만 아니라 여러 가지를 한번에 고민해야 하는 개발자에게 실수를 줄여주고 작성한 코드에 대한 테스트를 진행할 수 있어 견고한 수문장 역할을 한다고 말할 수 있다. 이미 많은 개발자들이 유닛테스트 활용이 중요하다는 것을 알고 있다고 생각한다. 팀이든 1인 개발이든 말이다. 테스트 주도 개발 - 켄트 벡 지음, 김창준 외 옮김/인사이트 이 책에서 다양한 유머들을 책 곳..
-
가장 쉬운 네트워크 가상화 입문Review 2016. 7. 11.
가장 쉬운 네트워크 가상화 입문 책 - 와타나베 카즈히코 외 지음, 신은화 옮김/비제이퍼블릭 클라우드 컴퓨팅이란 인터넷 등을 통해서 네트워크상에 존재하는 컴퓨터 자원을 이용하여 서비스를 제공하는 컴퓨팅 형태를 말한다. 사용자는 서비스를 제공 받을 뿐, 실제 컴퓨터가 어떻게 동작하는지, 네트워크가 어떻게 연결되어 있는지 등은 신경쓰지 않는다. 한편, 가상화란 하나의 물리적인 자원을 복수의 논리적인 자원으로 활용하거나 복수의 물리적인 자원을 하나의 논리적인 자원으로 활용하는등의 형태를 의미한다. 이와 같이 클라우드와 가상화의 개념은 그 목적이 다르다. 하지만 실제로는 클라우드 서비스를 제공하는 사업자가 시스템 자원의 효율적인 활용을 위하여 가상화 환경을 구축한다. 이 책은 가상화란 무엇인지 그리고 서버, 스..
-
TED 프레젠테이션Review 2016. 4. 27.
TED 프레젠테이션 - 제레미 도노반 지음, 김지향 옮김, 송상은 해제/인사이트앤뷰 대학시절 프리젠테이션을 할 때가 문득 떠올랐다. 긴장을 숨기기 위해 힘차게 자기 소개로 시작하지만 준비한 PPT 대본을 그대로 읽어내려가기 바쁘다. 말 실수를 줄이기 위해 내용들이 가득 차 있는 PPT 구성. 그럼에도 불구하고 흐름이 기억나지 않아 말 실수를 하고 나서 목소리가 점점 작아지는 모습. 지금은 그 때만큼 긴장하지 않고 목소리가 작아지는 일은 없지만 여전히 멋진 발표를 하고 있다는 생각하지는 않는다. 어느날 강남역에 있는 중고서점에서 시간을 잠시 보내고 있었는데 문득 이 책이 눈에 띄어서 바로 구매하게 되었다. 이 책은 어떻게 이야기를 할 것인가에 대한 가이드라인을 만난 기분이 들었고 그 동안 내가 프레젠테이션..