처음 처음 | 이전 이전 | 1 | 2 | 3 | 4 |다음 다음 | 마지막 마지막
사토시의 서 - 비트코인 창시자 사토시 나카모토의 철학을 보다
필 샴페인 지음, 조진수 옮김 / 한빛미디어 / 2021년 2월
평점 :
장바구니담기


1. 들어가며


비트코인(Bitcoin, 세계 최초의 성공적인 탈중앙화 가상 화폐)부터 알트코인(Alternative Coin, 비트코인 외의 다른 코인을 지칭)까지 가상화폐가 세상을 흔들고 있다. 1 BTC 의 가치는 2018년에 최대 1800만원, 2021년에는 최대 7100만원까지 치솟았다. 비트코인 옹호론자들은 1 BTC 가 최대 4억까지 오를 것이라는 주장과 함께 이를 디지털 금(Digital Gold)라고도 부른다.


비트코인을 구현한 기반이 되는 기술을 블록체인(Blockchain)이라고 하는데, 이러한 기술을 설명한 책이 쏟아져 나오고 있다. 흔히들 주식시장은 예측하는 게 아니라 대응하는 것이라는 말을 한다. 마찬가지로 세상의 변화 또한, 예측하는 게 아니라 (직접 만들거나) 대응하는 것이 가장 현실적인 방법이다. 변화에 대응해야 하는 이유는 다른 사람보다 더 많은 이득을 얻거나, 손해를 최소화 하기 위해서다.


하지만 비트코인 혹은 이를 구현하는데 사용한 블록체인(Blockchain)이라는 기술을 우리가 굳이 알아야 할까? 24시간 살기에도 빠듯한데 말이다. 만약 이러한 것들이 순간적인 유행(fad)으로 끝나지 않고, 우리 삶에 영향을 준다면 이에 대해 이해하는 것은 불확실한 인생을 살아가는 데 도움이 될 것임이 자명하다.


개인적으로는 비트코인이 망할 수는 있어도 블록체인 기술을 기반으로 하는 디지털 화폐(Digital Currency)는 우리가 현재 사용하는 명목 화폐(Fiat Money)를 대체할 것이라고 생각한다. 전 세계적으로 중앙은행 디지털화폐(Central Bank Digital Currency, CBDC) 도입 논의가 활발하게 진행되고 있으며, 캐나다와 브라질에서는 비트코인 ETF가 주식 시장이라는 제도권에서 거래가 가능하다(링크1, 링크2). 미국의 금융감독원인 SEC 에도 비트코인 ETF 승인요청이 지속적으로 들어오고 있다. 이 뿐만 아니라 세계 최대 자산 운용사인 블랙록(Blackrock)은 비트코인 투자를 긍정적으로 평가했다.


2. 책 소개


무언가를 진정으로 이해하려면 그와 관련된 역사(History)를 돌아보는 것이 굉장히 유익하다. 이러한 역사를 파악하기 위해 인터넷에 공개된 자료를 하나씩 찾아갈 수도 있겠지만, 이미 이를 정리한 책이 있어 소개한다.


<사토시의 서>(한빛미디어)는 사토시 나카모토(Satoshi Nakamoto)라는 정체불명의 인물이 The Cryptography Mailing List 에 올렸던 첫 번째 메일(2008.10.31, 비트코인 백서 공개)부터 약 2년 동안의 주요 기록을 정리한 책이다. 이 책을 통해 왜 비트코인이 만들어졌으며, 그것이 어떻게 발전했는지 확인할 수 있다.


이 책은 총 72개의 장으로 구성되어 있으며, 각 장은 아래와 같이 다시 나눌 수 있다. (각 장은 길지 않고 짧아 빠르게 읽을 수 있다.)

  • (1~2장) 서론 및 비트코인 소개
  • (3~70장) 사토시 나카모토와 주고받은 주요 메일링 리스트 소개
  • (71장) 비트코인에 깊이 관여한 할 피니의 기록
  • (72장) 결론 및 비트코인 백서 전문 소개

3. 이 책을 추천하는 이유


어떤 개념을 정확히 이해하는 유용한 방법 중 하나는 그 개념이 등장한 배경을 아는 것이다. 이 책은 비트코인 혹은 블록체인을 설명하는 책에서 다루는 여러 가지 개념들이 어떠한 논의를 거치며 발전했는지 소개한다. 메일링 리스트를 직접 찾아가며 이를 읽을 수도 있겠지만, <사토시의 서>(한빛미디어)와 같은 책을 활용하면 가장 소중한 시간을 절약할 수 있다.


이 책을 읽으면서 건전한 토론 문화에 대해서도 어깨넘어 살펴볼 수 있어서 좋았다. 전 세계 스마트폰 사용자 10명 중 7.5명이 사용하는 안드로이드(Android)는 오픈 소스 운영체제인 리눅스(Linux)를 기반으로 하는데, 이 리눅스(Linux) 또한 메일링 리스트를 통해 최초로 공개가 되었고, 여러 사람들과 함께 논의를 거치면서 발전했다. 현재 우리가 사용하는 웹 기술 또한 온라인이라는 공간에서 함께 논의하며 발전했다. 대한민국에서도 나이와 직급에 관계없이 순수하게 논의 내용 자체만으로 치열하게 토론할 수 있는 날이 왔으면 한다. 토론하다 불리해지면 "너 몇 살이야? 어린 놈이... XXX" 와 같은 말도 안되는 이야기를 하는 그런 세상은 하루 빨리 없어져야 한다.


이 책의 한 가지 아쉬운 점을 굳이 말하자면, 이 책을 통해서는 비트코인의 과거에 대해서만 알 수 있다. 에필로그와 같은 부분에 비트코인 혹은 블록체인에 대해 더 알고 싶은 사람들을 위해 간략하게 나마 관련 정보를 제공하면 더 좋지 않았을까 싶다.


4. 마치면서


2009년 1월 3일 오후 6시 15분 5초. 첫 번째 비트코인 블록(=Genesis Block)이 추가되며 50BTC 가 채굴되었다. 2021년 3월 22일 오전 6시 9분 39초. 675,676 번째 비트코인 블록이 추가되었으며, 지금까지 18,660,285 BTC 가 채굴되었다. 비트코인은 최대 2,100만개까지 채굴이 가능한데, 시간이 지날수록 채굴 난이도가 상승하여 전문가들은 2140년쯤에 모든 비트코인이 채굴될 것이라 예상한다.


비트코인 혹은 블록체인에 대해 전문가는 아니더라도 기본적인 교양을 갖춘다면, 급변하는 세상의 흐름을 조금이나마 더 잘 이해할 수 있지 않을까? AI + X 라고 하여 모든 산업에 인공지능(Artificial Intelligence, AI)을 도입하는 시대에 AI를 교양 수준에서다로 알면 세상을 사는 것이 덜 두려운 것처럼 말이다.


끝으로 블록체인 관련하여 논의를 계속 follow-up 할 수 있는 사이트 및 자료를 소개하며 리뷰를 마친다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
사토시의 서 - 비트코인 창시자 사토시 나카모토의 철학을 보다
필 샴페인 지음, 조진수 옮김 / 한빛미디어 / 2021년 2월
평점 :
장바구니담기


블록체인의 시작과 발전 과정을 빠르게 파악할 수 있어서 좋았어요.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
자바스크립트는 모든 곳에 존재한다 - 그래프QL, 리액트, 리액트 네이티브, 일렉트론으로 크로스플랫폼 앱 만들기
애덤 스콧 지음, 임지순 옮김 / 한빛미디어 / 2021년 2월
평점 :
장바구니담기


요약

자바스크립트라는 하나의 언어로 프론트엔드와 백엔드를 아우르며 웹 애프리케이션과 아이폰 및 안드로이드 스마트폰 앱까지 만들 수 있다는 것을 직접 보여주는 책이다. (사용하는 기술: Node.js, MongoDB, Mongoose, Express.js, React, React Native, Electron, GraphQL, Apollo Server, CSS-in-JS, Expo 등 다수)


이 책은 Notedly라는 노트앱을 사용자가 직접 개발할 수 있도록 안내한다. 독자는 Notedly를 위한 API 와 사용자 인터페이스(User Interface, UI)를 직접 개발한다. 그리고 최종적으로는 Notedly의 웹 애플리케이션, 클라이언트 앱 그리고 아이폰(iPhone)과 안드로이드(Android) 앱을 만든다.


만약 자바스크립트(JavaScript)로 개발한다는 것이 무엇인지 최신 근황을 빠르게 살펴보고자 한다면, <자바스크립트는 모든 곳에 존재한다 JavaScript Everywhere>를 읽는 것을 추천한다.


책 구성

이 책은 개발환경을 다루는 1장, API 서버를 개발하는 2~10장, 웹 애플리케이션을 개발하는 11~17장, Client 프로그램을 개발하는 18~20장, 스마트폰 앱을 개발하는 21~25장으로 구성된다. 간략히 다시 정리하면 아래와 같다.

  • [1장] (환경설정) 자바스크립트 개발환경 설정
  • [2-10장] (API 개발) Node, Express.js, MongoDB, Apollo Server를 통한 API 개발
  • [11-17장] (웹 앱 개발) React, Apollo Clinet, CSS-in-JS를 통한 웹 애플리케이션 개발
  • [18-20장] (Client 프로그램 개발) Electron 애플리케이션 개발
  • [21-25장] (스마트폰 앱 개발) React Native, Expo를 통한 iOS, 안드로이드 모바일 앱 개발

책을 추천하는 이유

  • 자바스크립트를 활용한 다양한 기술을 직접 개발을 하며 배울 수 있다. 요즘 대세는 하면서 배우는 거, 즉 learning by doing 아닌가?
  • 최신 기술의 핵심 개념을 빠르게 습득하기 좋다. 설명이 간결하고 각 챕터 페이지 수가 통상 10~20쪽 밖에 되지 않기 때문이다.
  • 단순히 기술을 사용하는 방법이 아니라 왜 필요한지를 설명하여 실무적인 감각을 기를 수 있다. (예: 페이지네이션에 대한 개념과 구현 방법 두 가지 - offset pagination, cursor-based pagination - 관련 외부 블로그 포스트)

현재 우리의 notes 및 users 쿼리는 데이터베이스에 있는 전체 노트 및 사용자 목록을 반환한다. 이것은 로컬 개발에서는 잘 동작하지만, 애플리케이션이 커지면 수백 또는 수천 개의 노트를 반환하는 고비용의 쿼리가 발생할 수 있으며 그로 인해 데이터베이스, 서버, 네트워크 속도가 느려지므로 지속성이 떨어진다. 대신 이러한 쿼리를 페이지네이션(pagination)하여 정해진 수의 결과만 반환하게 할 수 있다.

- 127쪽, 9장 디테일, <자바스크립트는 모든 곳에 존재한다>

단점 아닌 단점

  • 30개가 넘는 다양한 기술을 활용하다 보니 각 기술에 대해 상세히 설명하지 않는다. 그러나 그 덕분에 여러 가지 기술을 빠르게 훑을 수 있다.
  • 가끔 사용하는 기술의 소개가 지나치게 간략하여 책을 읽는 것을 중단하고 구글링을 해야 하는 경우가 종종 있었다.
  • 책 초반부(2장 ~ 10장 까지)에 사소한 오타가 있었다. 한빛미디어에서 정오표(Errata)를 깔끔하게 제공했으면 한다.

기타잡설

CRUD

1980년대 초 영국의 테크니컬 라이터인 제임스 마틴(James Martin)이 데이터를 쓰기(create), 읽기(read), 업데이트(update), 삭제(delete)하는 애플리케이션과 관련된 용어로 사용하면서 처음 대중화 됨 (참고 : Wikipedia, MelroseLABS)

테스트에 대한 저자의 사과

테스트는 소프트웨어 개발 단계 중 점점 더 중요성이 강조되고 있다. 이는 SW 기반의 전기차, 중요한 판단을 하는 AI 알고리즘 등의 안전성과 신뢰성 그리고 무엇보다 사용자 요구사항 달성여부를 알려주는 척도이기 때문이다. 하지만 <자바스크립트는 모든 곳에 존재한다>에서 저자는 테스트를 다루지 않았고, 아래와 같이 독자들에게 미안함을 표현한다.

솔직히 인정한다. 이 책에 테스트에 대한 분량을 할당하지 않은 것에 죄책감을 느낀다. 코드 테스트는 변경 사항을 편안하게 적용하고 다른 개발자와의 협업을 향상시키기 위한 중요한 요소이다.

- 131쪽, 9장 디테일, <자바스크립트는 모든 곳에 존재한다>

페브리즈(Febreze)

지금은 고유 명사처럼 받아들여지는 방향제인 페브리즈(Febreze)의 초기 광고는 담배 연기와 같은 특정 악취를 제거하는 사람들의 모습을 보여주었고, 그 덕택에 매출은 바닥을 찍었다. 그러나 페브리즈를 '마감용' 방향제로 사용하는 광고, 즉 누군가 방을 청소하고 베개를 털고 마지막에 페브리즈를 뿌리는 식으로 광고를 바꾸자 판매가 급증했다.

P&G는 페브리즈 출시 초기에 냄새 제거 기능을 알리는 데 초점을 맞췄다. 이 때문인지 대부분의 소비자는 나쁜 냄새가 날 때만 페브리즈를 사용했다. 그러나 이 기능만으로는 판매에 큰 도움이 되지 못했다. 한국P&G 관계자는 "소비자들은 나쁜 냄새가 발생할 때만 간헐적으로 페브리즈를 사용할 것이라고 생각했는데 실제로는 냄새 제거 외에 상쾌함이 더해졌을 때 페브리즈를 더 자주 사용한다는 사실을 발견했다"고 말했다.

출처: 조선비즈 | 흡연 과학자가 개발한 P&G 페브리즈 (2019.5.18)

옷(Clothing)

‘개발자는 옷을 잘 못 입는다.’는 사실에 가까운 편견이 만연해있는데, 신경을 좀 쓸 필요가 있다. (나부터 실천하자!)

스타일은 인간 문화의 중요한 일부이며, 우리는 모두 이러한 뼈, 치아, 열매, 돌을 가지고 목걸이와 팔찌를 만들었다는 것을 발견했다. 우리의 옷은 신체를 보호하는 기능적 목적을 제공할 뿐만 아니라 우리의 문화, 사회적 지위, 관심사 등에 대한 정보를 다른 사람들에게 전달할 수도 있다.

- 167쪽, 13장 애플리케이션에 스타일 입히기, <자바스크립트는 모든 곳에 존재한다>



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
자바 최적화 - 가장 빠른 성능을 구현하는 검증된 10가지 기법
벤저민 J. 에번스 외 지음, 이일웅 옮김 / 한빛미디어 / 2019년 4월
평점 :
장바구니담기


자바(Java)에 대해 좀 더 깊은 내공을 쌓고 싶은 개발자에게 이 책을 추천합니다. JVM이 어떻게 동작하는지, GC 로깅 분석 방법, 자바 Collection 제대로 사용하기 등 유용한 내용을 배울 수 있습니다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
자바 최적화 - 가장 빠른 성능을 구현하는 검증된 10가지 기법
벤저민 J. 에번스 외 지음, 이일웅 옮김 / 한빛미디어 / 2019년 4월
평점 :
장바구니담기


지난 달 말에 한빛미디어에서 리뷰할 책으로 O’REILLY 사의 Optimizing Java를 번역한 자바 최적화 라는 책을 받았습니다. 회사에서 사용하는 대부분의 업무처리가 자바(Java)로 되어 있다보니 이 책을 읽고 싶었기에 속으로 ‘아싸’를 외쳤습니다.


자바(Java)는 자바 가상 머신(Java Virtual Machine, 이하 JVM)에서 실행됩니다. 자바 소스 코드를 컴파일 하면 Java Intermediate Language(이하 JIL)라는 일종의 Intermediate Representation(이하 IR) 형식의 파일을 만듭니다. 그리고 JVM은 이 JIL을 읽어서 CPU가 이해할 수 있는 기계어 코드로 변환을 합니다. 즉, 기계어와 소스 코드 사이에 IR이라는 추상층(Abstract Layer)을 하나 더 만들어 언어의 유연성(Flexibility)을 살렸습니다. Microsoft의 .NET Framework 도 OS에 관계없이 프로그램을 실행할 수 있는데 이 또한 C#이 IR을 사용하기 때문입니다.


하지만 세상에는 100% 좋기만 한 것은 없습니다. 모든 선택에는 장점과 단점이 혼합되어 있으니까요. C/C++ 같은 언어는 컴파일을 하면 CPU 명령어(=기계어)와 1:1 매칭되는 어셈블리어 코드를 생성하기 때문에 JVM 같은 별도의 프로그램 없이 OS에서 바로 실행할 수 있습니다. 즉, 실행환경이 자바(Java)보다 간단합니다. 그러나 자바(Java)로 만들어진 프로그램은 (앞에서 언급했듯이) 실행을 하려면 JVM이 필요합니다. 이러한 이유로 자바(Java)의 실행환경은 C/C++ 로 만들어진 프로그램보다 상대적으로 복잡합니다. 결국, 자바(Java)로 만들어진 프로그램을 잘 이해하려면 OS 뿐만 아니라 JVM에 대해서도 이해할 필요가 있습니다.


한빛미디어의 <자바 최적화>는 JVM에 대한 상세한 설명을 토대로 어떻게 자바 프로그램의 성능을 측정하고 개선할 수 있는지 소개합니다. 쉽게 읽히는 책은 아닙니다. 그러나 훌륭한 자바 프로그래머로서 성장하는데 필요한 내공을 쌓을 수 있는 훌륭한 책입니다.




특별히 책을 읽으며 유용했던 것은 6~7장의 쓰레기 수집기(Garbage Collector, 이하 GC) 작동 원리, 8장의 GC 로깅 분석 방법 그리고 11장의 자바 언어의 성능 향상 기법이었습니다. 예를 들어 8장에서는 아래와 같은 조언이 나옵니다.

GC로그는 더 없이 훌륭한 원천 정보입니다. 특히, 시스템이 내려간 원인의 단서를 찾는 ‘콜드 케이스(cold case)’ 분석을 할 때 매우 유용합니다. 파일에 씌여진 로그를 분석하는 작업이므로 애플리케이션 프로세스가 살아 있지 않아도 됩니다.


모든 중요한 애플리케이션에는 다음 두 가지를 설정해야 합니다.


* CG 로그를 생성한다.
* 애플리케이션 출력과는 별도로 특정 파일에 GC 로그를 보관한다.

223쪽, CHAPTER 8 GC 로깅, 모니터링, 튜닝, 툴 <자바 최적화>

프로그램이 단순히 돌아가는 것으로 만족하면 놓치는 게 많습니다. 문제가 발생하기 전에 미리 손을 써야 합니다. 예를 들어, 자바(Java) 프로그램을 실행할 때 GC 로그를 항상 남기도록 설정하여 실제 런타임에서 어떤 일이 발생하고 있는지 파악하고 이를 개선할 수 있는 방법이 있는지 검토해야 합니다.


11장에서 저자는 평범한 개발자와 고급 개발자를 구분할 수 있는 중요한 잣대를 소개합니다. 그리고 주요 자바 Collection 객체를 어떻게 최적화할 수 있는지 소개합니다.

자료 구조가 어떤 원리로 조회되고 수정되는지 모른 채 자료 구조를 선택하는 것처럼 위험한 일도 없습니다. 평소 즐겨 쓰는 클래스를 별생각 없이 바로 갖다 쓰는 개발자들이 참 많지요. 사려 깊은 개발자라면 데이터가 어떻게 질의 되고, 어떤 알고리즘이 가장 효율적인지 신중히 살펴볼 것입니다.


326쪽, CHAPTER 11 자바 언어의 성능 향상 기법 <자바 최적화>

이 책을 읽으면서 기본의 중요성을 절실히 깨달을 수 있었습니다. 저는 단순히 돌아가는 프로그램을 만들고 싶지 않습니다. 잘 돌아갈 뿐만 아니라 내부적으로 아름다운 프로그램을 만들고 싶습니다. 다루는 데이터의 특성을 고려하여 적절한 자료 구조를 선택하고, JVM의 작동원리와 OS가 프로그램을 실행하는 원리를 고려하여 프로그램을 작성하고 싶습니다.


한빛미디어의 <자바 최적화>는 처음 읽을 때는 뇌에 부하를 줍니다. 읽는 게 다소 고생스럽습니다. 그러나 운동을 편하게 하면 성장이 없는 것처럼 공부도 그렇다는 걸 생각해야 합니다. 어려움을 맞닥뜨릴 때 진정한 성장이 있습니다. 자바(Java)를 좀 더 깊이 이해하여 내공을 쌓고 싶은 개발자에게 이 책을 추천합니다.



댓글(0) 먼댓글(0) 좋아요(2)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 | 3 | 4 |다음 다음 | 마지막 마지막