커버 불가능한 코드

테스트 커버리지를 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을 사용하는 이유 계속 읽기