넷플릭스 마이크로 서비스 가이드

우린 계속 같은 문제의 해결을 반복하고 있다.
하나의 거대한 코드베이스를 클래스들로 쪼개어 내고
하나의 svn리파지터리에 몽땅들어있는 제품들을 각각의 git리파지터리로 분리했듯
하나의 거대한 웹서비스를 개별 서비스들로 분리해내고 있다.

다루는 내용이 많아 두고두고 봐야할 듯

안드로이드 epub 리더 앱 개발

작년에 썼던 글들을 한데 모아 epub포맷으로 전자책을 만들었다. 딱히 공개할만한 퀄리티를 가진 것은 아니지만 작년 초에 세웠던 계획이 어떻게든 이루어졌다는 점에서 의미가 있었다. 그리고 이번에 이 전자책을 안드로이드 공부삼아 개발한 eBook리더 앱에 Embed하여 앱스토어에 공개하였다.

현재 두 개의 앱을 배포했다. 하나는 내가 작년에 쓴 글 모음이고, 하나는 다른 프로젝트 그룹에서 함께 작성한 릴레이 소설이다.

eBook리더 앱의 소스는 Github에 공개되어 있다. Embed된 전자책을 교체하고 프로젝트 패키지이름만 바꾸면 따로 스토어에 출시할 수 있다.

1주일 정도 집중해서 만들었는데 기능이랄 것은 별로 없고 기본에만 충실했다. ePub포맷이 단순히 html파일을 내장한 형태라 쉽게 될거라 생각했는데 의외로 신경쓸 것이 많다. Readium SDK가 아니었으면 이렇게 단시간에 이뤄지진 않았을 것이다.

요새 글쓰기가 열풍이라고 한다. 개인적으로 참여하고 있는 글쓰기 모임에는 관련 주제로 KBS에서 취재차 다녀갔다. 내가 글을 좋아하는 사람을 곁에 많이 두어서인지 정말로 열풍인 것인지 나는 모르겠으나 분명 많은 사람들이 자신의 글을 쓰고 책을 내는 것에 관심이 많은 것 같다. 여기에 내가 무언가 기여해볼 수 있을까.

 

함수형 사고 (Functional Thinking) – 닐 포드

1.
객체지향의 틀안에서 느꼈던 갈증을 해결해 준는 책. 이 책만 읽는 다면 함수형 프로그래밍이 마침내 찾아낸 유토피아 같겠지만 모든 것에는 장단점이 있는법. 모든 문제를 하나의 언어로 해결 할 필요가 없는 것처럼 하나의 패러다임 만으로 문제를 해결할 필요도 없는 것이겠지.

2.
객체지향은 매번 새로운 자료구조(상태)를 만들어내지만 이는 각 상태에 대한 별도의 조작함수를 매번 제공해야 하므로 복잡도가 높아진다. 함수형은 리스트, 맵과 같은 보편적인 자료구조를 기반으로 이를 조작할 수 있는 다양한 함수를 만드는 방식으로 접근하여 재사용이 쉽다.

3.
객체지향에서 상속으로 추상화된 한계로 인해 특정기능을 다룰 수 없게되는 경우가 얼마나 많던가, 섣부른 추상화로 인해 다시 구조를 바꾸겠다고 리펙토링을 하며 새로이 만들어낸 추상화는 또다른 한계를 결정짓곤 한다. (조엘이 말하는 허술한 추상화의 법칙) 구성(Composition)을 기반으로 한 함수형 접근 방식에서 이 문제 해결의 실마리를 보는 것 같다.

4.
함수형 접근방법이 해결한 3가지 갈증

a. 오류 처리: 예외도 맘에 들지 않았고, 리턴값처리도 맘에 들지 않았다. Either나 optional이 그 대안이 될 것
b. TDD에 쓰기 유용하다는 점: TDD에서는 다른 객체와의 연관성을 끊고 테스트 하기 위해 DI와 Mock을 사용한다. 이게 여간 번거로운 것이 아니다. Functional에서는 애초에 주입할 state가 없다. 가급적 파급효과가 없는 함수들을 작성한다.
c. 도메인 특화 언어 사용의 편리함: 간단한 배치 스크립트를 대체하려던 파이썬 스크립트 조차도 루프가들어가고 자료형이 나오면 한눈에 들어오지 않는다. 연산자 오버로딩, 상속을 사용하지 않는 다형성(이를 통한 디스패치)들을 통해 구현이 간단해진다.

더 보기 “함수형 사고 (Functional Thinking) – 닐 포드”

Dev Issues #3

코딩으로 이미지를 만들어내는 툴

TCP스택을 대체할 구글의 UDP기반의 QUIC프로토콜

크롬에서 옵션을 활성화하면 실제 사용 가능하다. 물론 서버측에서 해당 프로토콜을 활용하고 있어야 하니 현재는 구글 서비스에 대해서만 활용 가능.

음주 코딩 방지용 ㅋㅋㅋㅋ

음주측정용으로 쓸수 있는 아두이노 센서를 이용해 음주량 측정을 통과 못하면 Git커밋 불가능

Vim찬양

Vim은 또하나의 프로그래밍 랭귀지다. Vim은 참 매력적이긴 하다. 나도 지난 몇년간 vim에 익숙해지려 노력해오고 있지만 여전히 어렵다.

Cube게임으로 함수형 프로그래밍을 배워볼까

라고는 하지만 이게 어떻게 함수형 프로그래밍과 매치되는지는 잘 모르겠다.