Monad Programming with Scala Future

2016-03-03 KENNETH 0

Monad Programming with Scala Future 함수형 언어에 대해서 공부를 하다보면 언제나 Monad라는 녀석을 마주치게 됩니다. Category Theory의 수학적인 개념이 바탕이 되어 있는 Monad를 접하면 어렵고 난해해서, 많은 사람들이 Monad를 학습하는 과정에서 함수형 언어를 포기합니다. 하지만 Monad라는 장벽을 넘어서고 나면, 아니 조금만 이해하고 나면 함수형 언어를 개발하는데 있어서의 이해도와 생산성이 급속도로 높아지게 됩니다. Learning Curves (for different programming languages)라는 글에 보면 여러 언어의 학습과정에서 나타다는 다양한 특징을 그래프로 보여줍니다. 그 중에 Haskell의 경우 Monad의 대한 이해 과정을 거치기 전과 후가 확연하게 차이가 나는 것을 볼 수 있습니다. 이 글에서는, 필자가 Monad를 이해하기 위해 겪었던 방황 – 혼돈, 의문, 좌절 – 과 적응, 마침내 갖고놀기에 이르는 과정을 소개하고, Scala의 Future를 이용한 예제를 통해 Monad에 한발짝 다가가 보려고 합니다. Monad 방황기 Monad 공부의 시작은 늘 그랬듯이 구글링을 통한 검색이었습니다. 구글의 페이지 랭크 알고리즘이 추천해주는 링크를 따라서 생각없이 위키피디아의 Monad (category theory)로 첫 문을 [ more… ]

그래, 가끔 "Vim에서" GitHub을 보자!

2016-03-03 KENNETH 0

그래, 가끔 "Vim에서" GitHub을 보자! vimrc 건드리기 좋은 목요일입니다. ;) 기술 블로그 담당자가 글을 내놓으라고 닥달하니, 예전에 만들었던 플러그인이나 한번 꺼내볼까 합니다: https://github.com/junegunn/vim-github-dashboard Vim 상에서 GitHub API를 이용해 dashboard 페이지를 보여주는 플러그인입니다. 왜 멀쩡한 브라우저를 놔두고 이런 짓을 한 것이냐 물으신다면 … 그것 참 좋은 질문이네요. Vimscript 만 가지고는 API 결과를 받아오는 것이 불가능하므로 Ruby interface를 이용합니다만 (:help ruby) OS X 의 시스템 디폴트 Vim 에서 기본적으로 지원하기 때문에 사용하시는데 문제는 없을 겁니다. 제공하는 커맨드는 다음과 같습니다. GHDashboard[!] [user] 특정 유저의 dashboard 화면 GHActivity[!] [user|repo] 특정 유저 혹은 repository 의 활동 내역 Public GitHub 의 경우 조회만 하는 경우는 인증이 필요 없기 때문에 느낌표를 붙여서 실행하시면 되겠습니다. :GHD! junegunn CTRL-N / CTRL-P 로 링크 사이를 이동할 수 있고, Enter key 나 o를 누르면 해당 페이지가 브라우저에서 열립니다. 매번 본인의 ID 를 입력하는 것이 번거롭다면 다음과 같은 설정을 vimrc 에 추가하세요. [ more… ]

kakao의 오픈소스 Ep2 – MRTE(MySQL Realtime Traffic Emulator)

2016-02-16 KENNETH 0

kakao의 오픈소스 Ep2 – MRTE(MySQL Realtime Traffic Emulator) “카카오의 오픈소스를 소개합니다” 두번째는 matt.lee와 동료들이 개발한 MySQL Realtime Traffic Emulator(MRTE)입니다. MRTE는 실서비스용 MySQL 서버의 트래픽을 수집하는 MRTE-Collector와, 수집한 데이터를 테스트용 MySQL 서버에서 재현하는 MRTE-Player 두 개의 툴로 구성되어 있습니다. 카카오에서도 효율적인 MySQL 운영에 큰 도움이 되고 있는 유용한 소프트웨어입니다. 특히 MRTE-Collector는 Go로 작성되어 Go로 네트웍 프로그래밍을 하려는 개발자들에게 유용할 것입니다. MySQL 서버를 사용하면서, 가끔씩 실 서비스용 MySQL 서버(Production mysql server)로 유입되는 쿼리들을 똑같이 흉내낼 수 없을까 하는 생각들을 많이 했습니다. 실 서비스용 MySQL 서버에서는 MySQL 시스템 변수 하나도 조정해보기 어려운 경우가 많고, 때로는 업그레이드나 통합 또는 하드웨어 테스트를 하는 경우에는 이런 도구들이 절실했죠. 이를 위해서 MRTE (MySQL Real Traffic Emulator) 도구를 생각하기 시작했는데, 조금만 고민해보니 사실 이는 그다지 어려운 일이 아니었다. 여기에서는 MRTE에 대한 간략한 아키텍쳐와 사용법을 간단히 소개하도록 하겠습니다. MRTE는 크게 유저 트래픽을 수집하는 MRTE-Collector와 수집된 SQL을 재현하는 MRTE-Player로 구성되어 [ more… ]

카카오스토리 팀의 코드 리뷰 도입 사례 – 코드 리뷰, 어디까지 해봤니?

2016-02-04 KENNETH 0

카카오스토리 팀의 코드 리뷰 도입 사례 – 코드 리뷰, 어디까지 해봤니? 얼마 전, 렘(Realm)의 기술 블로그에 올라온 코드리뷰, Github로 바로 적용하기 – Realm에서의 코드리뷰 소개라는 글이 많이 회자되었죠. 카카오는 어떻게 하고 있을까~ 궁금해서 수소문을 했더니, 사내에서도 깃헙 잘 쓰기로 소문 난 카카오스토리 웹 클라이언트팀은 코드 리뷰도 잘하더군요 @[email protected] 그들의 코드 리뷰 경험을 “날 것” 그대로 공유합니다. 우리끼리 보려고 쓴 글이라, 표현은 조금 거칠지만 더 쉽게 와 닿네요. 웹 클라이언트 개발팀 내에선 코드 리뷰가 굉장히 활성화되어 있는데요, 얼마 전에 문득, 코드 리뷰를 도입하면서 경험했던 내용을 공유해보면 좋을 것 같단 생각이 들어서, 짬짬이 예전 기억을 되살리면서 노트에 정리했습니다. 지금은 리뷰 문화가 정착돼서 그저 당연한 거라고 생각하고 있었는데, 돌이켜보면 도입 과정에서 탈도 많았고 여러 이슈를 극복하려고 멤버들 모두 고생했던 게 떠오르더군요. 다른 팀이 어떻게 일하고 있는 지 모르고, 작은 조직 내에서의 얕은 경험일 수도 있겠지만, 개인적으론 코드 리뷰를 도입하고 유지하고 있는 게 굉장히 [ more… ]

kakao의 오픈소스 Ep1 – 대용량 분산 그래프DB "S2Graph"

2016-01-29 KENNETH 0

kakao의 오픈소스 Ep1 – 대용량 분산 그래프DB "S2Graph" “카카오의 오픈소스를 소개합니다” 첫번째는 shon.0와 동료들이 개발한 S2Graph입니다. S2Graph는 카카오에서 1년 여의 개발을 거쳐 카카오톡, 카카오스토리, 카카오뮤직, 선물하기, 다음앱, 다음뉴스, 다음쇼핑 등 20여개 이상의 서비스에 적용된 대용량 분산 그래프 데이터베이스입니다. Scala언어와 Play 프레임웍으로 작성된 그래프 API 서버와 HBase, Kafka, Spark 등 최근 가장 주목받는 기술들로 구성되어, 호기심으로 똘똘뭉친 개발자들에게 많은 도움이 될 것입니다. 그래프 데이터베이스 “그래프”라고 하면, 보고서나 발표자료에 막대 그래프, 파이 챠트,…를 떠올리지만, 이 글에서 언급하는 그래프는 수학자 오일러에서 시작된 그래프 이론의 그래프입니다. 그래프 이론은 “유한 개의 점들로 이루어진 집합과 점들 간의 연결(관계)를 다루는” 학문입니다. 예를 들면, “어떤 지역과 지역을 최단거리로 이동하려면 어떻게 해야 되는가? 어떤 지점들이 있는데 이 지점들을 중복으로 지나지 않고 한번에 이동할 수 있는가?” 같은 문제를 연구하는 거죠. 이런 “그래프 구조”를 저장하고 표현하기 위해 만들어진 도구가 그래프 데이터베이스 (graph database; 이하 그래프DB)입니다. 소셜 그래프 카카오의 많은 서비스들은 사용자 [ more… ]