들어가며
REST API 서버를 java언어에서 사용되는 대표적인 json(또는 xml, yaml, etc…) 라이브러리인 jackson 은 kotlin에서도 사용이 가능하다. JPA를 사용하다보면 entity를 json형식으로 반환할 때 해당 entity가 다른 entity를 필드로 참조하고 있을 경우 참조하는 entity의 id값만을 반환하고 싶을 경우가 있다. 이 문제를 jackson을 이용해 json형식으로 이쁘게 변환하는 법을 알아보자.
appengine + springboot + kotlin + jpa + cloudsql 연동하기
회사에서 새로 시작하는 API 서버 개발에 아래와 같은 환경을 적용하기로 했다.
- 구동환경 : Google App Engine Standard Environment
- 언어 : kotlin 1.3
- framework : Spring Boot 2.0.2.RELEASE
- DB : cloud sql(MySQL 5.7)
- ORM : hibernate/JPA
- IDE: IntelliJ Ultimate
각각 놓고보면 다들 유명하고 널리 쓰이는 기술들이지만 얘들을 한꺼번에 적용한 가이드라인이 없어서 내가 직접 가이드를 작성해볼까 한다. A to Z 형식의 가이드는 아니고 셋팅 중 삽질을 크게 했던 부분 위주로 작성해보도록 하겠다.
emacs에서 커서이동 없이 buffer 전체 복사하기
보편적인 현대 에디터에서 ctrl-a
ctrl-c
, 그러니까 현재 편집중인 파일의 모든 내용을 선택해서 복사하는 방법을 이맥스에서 사용하는 방법을 알아보자.
원래는 어떻게 쓰고 있었어요?
내가 원래 쓰던 방법은 커서를 버퍼 최상단으로 이동시킨 뒤 마크 세팅, 그리고 커서를 버퍼 마지막으로 이동시킨 뒤 복사하는 방법을 사용했었다. 단축키로 표현하자면 아래와 같다.
emacs에서 tslint 이용하기
S2 library를 이용하여 가까운 위치의 사용자 찾기
구글에서 제공하는 S2 라이브러리를 이용하여 현재 내 위치에서 가장 가까운 사용자 목록을 추출해보자. 서버 환경은 GAE, golang standard environment 이다. 이 글을 참고했다.
S2 라이브러리란?
S2 라이브러리는 구글에서 비공식적으로(not an official) 제공하는 구(球)형상 라이브러리이다(번역기 발췌). 기존의 대다수 라이브러리는 2차원 평면을 기준으로 좌표시스템을 구축하였지만 S2 라이브러리는 3차원 구를 기준으로 좌표계를 사용한다. 실제 지구는 평면보단 구(球)에 훨씬 가깝기 때문에 좀 더 정교하고 왜곡없는 지리 데이터베이스를 구축할 수 있다(이 역시 번역기 발췌).