커버 불가능한 코드

테스트 커버리지를 100%까지 끌어올리면서 테스트로 커버하기가 굉장히 어려운 코드를 종종 만나곤 했다. 다음과 같은 코틀린 코드가 그렇다. fun isYes(answer: String): Boolean { return when(answer) { "yes" -> true else -> false } } 주어진 문자열이 "yes"면 true를 반환하고 아니면 false를 반환할뿐인 지극히 단순한 함수다. 그런데 이 코드를 빠짐없이 테스트로 커버하려고 하면 상당히 어렵다. 그냥 얼핏 … 커버 불가능한 코드 계속 읽기

테스트 커버리지 100%

2019년 1월쯤에 회사에서 만들고 있는 서버 애플리케이션의 테스트 커버리지를 100% 까지 올렸다. 그리고 1년동안 100%를 계속 유지했다. 테스트 커버리지 100%를 달성한 서버 애플리케이션은 코틀린으로 작성되어있으며, 90% 이상의 코드를 내가 작성했다. 테스트 커버리지는 jacoco로 측정했으며, branch coverage와 instruction coverage 모두 100% 를 유지했다. 다만 전체 코드 중 일부(약 2%)는 kotlin 혹은 jacoco의 한계 등의 이유로 커버리지 … 테스트 커버리지 100% 계속 읽기

REST의 representation이란 무엇인가

사실 서버가 보내준 것은 리소스가 아니다. 다음과 같은 HTTP GET 요청을 서버에 보내서 GET https://example.org/greeting Host: example.org Accept: text/plain, text/html; q=0.9 *; q=0.1 Accept-Language: en, ko; q=0.9, *; q=0.1 "hello"라는 메시지를 응답으로 받았다고 해 보자. HTTP/1.1 200 OK Content-Length: 6 Date: Sun, 19 Mar 2017 10:20:47 GMT Last-Modified: Sun, 19 Mar 2017 08:00:00 GMT Content-Type: text/plain Content-Language: … REST의 representation이란 무엇인가 계속 읽기

바쁜 개발자들을 위한 REST 논문 요약

REST란 무엇인가? REST는 Representational State Transfer의 줄임말로, 웹을 위한 네트워크 기반 아키텍처 스타일이다. REST는 Roy T. Fielding이 그의 박사학위 논문 "Architectural Styles and the Design of Network-based Software Architectures" 에서 처음 소개하였다. 그의 논문을 읽고 매우 간략히 요약해보았다. 논문의 모든 부분을 동등하게 요약하지는 않았고, REST가 무엇인가를 이해하는데 초점을 맞추어 차별적으로 요약하였다. 논문 요약 1장: Software … 바쁜 개발자들을 위한 REST 논문 요약 계속 읽기

비바 리퍼블리카로 이직한 이야기

2016년 11월 20일, 나는 8년 10개월간 근무한 네이버를 퇴사하고, 그 바로 다음날인 21일 스마트폰 송금 서비스 토스를 만드는 비바 리퍼블리카에 입사했다. 입사를 결정하게 된 계기 작년 즈음부터 스타트업에서 일해보는 것도 괜찮을 것 같다는 생각을 하게 되었는데, 그 와중에 비바 리퍼블리카에서 보낸 구인 메일을 받고서 이직을 생각하게 되었다. 2주일 정도 생각을 해보다가 한번 면접을 보기로 결정하고 … 비바 리퍼블리카로 이직한 이야기 계속 읽기

wordpress.com로 이사

원래 cafe24 가상 호스팅에 설치형 워드프레스를 쓰고 있었는데, 때때로 서버가 죽어서 좋지 않았다. 죽어도 알려주지도 않는다는 점은 더욱 나빴다. 그래서 서비스형 워드프레스로 이사왔다. 도메인 연결비용 연 13달러만 내면 되고 서버가 잘 죽지도 않을 것 같고 죽더라도 알아서 살려낼테니. disqus로 댓글 단 건 옮겨오지 못하고 백업만 했다. xml로 export를 하기는 했는데, 여기로 import 하는 방법은 모르겠다.

구글 크롬으로 구글에 접속하면 HTTP/2가 아닌 SPDY/3.1을 사용하는 이유

구글 크롬을 이용해서 구글 사이트에 접속하면 HTTP/2가 아닌 QUIC+SPDY/3.1로 동작하게 된다. 왜 HTTP/2가 아닌 SPDY/3.1을 사용하는 것일까? 내 생각엔 명세상 QUIC과 HTTP/2를 동시에 사용할 수 없어서가 아닐까 싶다. HTTP 명세를 살펴보자. 우선 HTTP/1.1은 TCP를 강제하지 않는다. 신뢰할 수 있는 transport layer 위에서 구현되어 있기만 하면 된다. HTTP is a stateless request/response protocol that operates by … 구글 크롬으로 구글에 접속하면 HTTP/2가 아닌 SPDY/3.1을 사용하는 이유 계속 읽기

gnome에서 hidpi 1.5배 스케일

요새 hidpi 지원하는 모니터/노트북들이 많은데, 이런 디스플레이의 경우 gnome은 자동으로 2배로 스케일을 해 준다. 하지만 솔직히 2배는 너무 크다. 1.5배 정도가 적당할 것 같은데, 스케일은 오직 정수 단위로만 지원된다. 하지만 다음과 같이 스케일은 1배로 하고, 텍스트만 1.5배로 하는 걸로 어느정도 흉내는 낼 수 있다. gsettings set org.gnome.desktop.interface scaling-factor 1 gsettings set org.gnome.desktop.interface text-scaling-factor 1.5 그럭저럭 … gnome에서 hidpi 1.5배 스케일 계속 읽기

웹 프로그래머를 위한 HTTP 완벽 가이드 읽는 법

HTTP 완벽가이드는 이름 그대로 HTTP를 매우 자세히 다루고 있는 책이다. HTTP를 이해해야 하는 사람은 웹 프로그래머만은 아니므로, 이 책은 웹 프로그래머만을 위해 쓰여진 책이 아니다. 따라서 웹 프로그래머가 이 책의 내용을 모두 다 완전히 이해해야 하는 것은 아니며, 중요도가 장 마다 크게 다르다. 웹 프로그래머의 시간은 유한한데 반해 공부해야 할 내용은 어마어마하게 많으므로, 중요한 것만 … 웹 프로그래머를 위한 HTTP 완벽 가이드 읽는 법 계속 읽기

프로 Git 읽는 법

Git은 서브버전보다 사용하기 어렵다. 아마 대중적인 버전관리도구 중 가장 어려울 것이다. 서브버전은 따로 공부하지 않고 썼던 개발자라도, Git을 쓰려면 공부를 해야한다. Git을 공부하는 최고의 방법은 책 '프로 Git'을 읽는 것이다. 프로 Git을 처음 읽는 순간 그것을 확신했으며, 이후 사용자로서 Git을 익히고, 부분적으로 Git을 구현해보기도 하고, 사내에 Git 교육과정을 만들어 진행해본 이후에도 그 생각은 변하지 않았다. … 프로 Git 읽는 법 계속 읽기