본문 바로가기

개발62

ktor을 통해 택배 배송상태 조회 시스템을 만들어보자 Kotlin을 주로 사용하고 있는 BE 개발자로서, 항상 ktor 프레임워크에 관심을 가지고 있습니다. 그러던 와중, 전자책 기기를 샀는데 배송이 언제 오는지 궁금해하다가, 택배 배송상태를 조회하는 API를 호출하고 응답을 보여주는 시스템을 만들어 보면 어떨까 싶었습니다. 그래서? 개발해 봤습니다 ㅎ 목차 0. 택배사 조회 API 선정 1. 만드는 시스템 소개 2. ktor로 만들어보자! 3. 결과 0. 택배사 조회 API 선정 일단 각 택배사에서 배송상태 조회 사이트를 제공하고 있긴 한데, 이걸 open API 형태로 제공하고 있는 것은 아닙니다. 다행히도 택배사 상관 없이 조회할 수 있는 서비스가 몇 개 있습니다. 스마트택배 API Delivery Tracker 스마트택배 API는 무료 플랜이 있지만.. 2023. 6. 4.
JSON을 통째로 RDB에 넣어버리기 회사 업무 중에 겪은 일이 꽤 재밌는 경험이었다고 생각하여, 글로 기록하여 남깁니다. 모든 코드 및 내용은 예시를 위해 별도로 작성하였습니다. 목차 0. 개요 1. 1:N 구조가 과연 최선인가? 2. JSON을 테이블에 그대로 넣는다면? 3. 코드로 작성해보자 4. jacksonObjectMapper 5. 마무리 및 테스트 6. 요약 0. 개요 어떤 계층형 데이터 구조를 설계해야 한다고 칩시다. 예를 들어서, LOL 프로게이머 한 명에 대해, n명의 평가자가 남긴 코멘트를 기록하는 구조를 만든다고 가정해 보겠습니다. 즉 1명의 선수에 대해 n개의 코멘트가 따라올 수 있는, 1:N 구조입니다. 선수는 아래 정보를 가집니다. 이름 닉네임 소속 팀 최근 수상 내역 우승 횟수 평가자의 코멘트는 아래 정보를 가집.. 2023. 3. 26.
Kotlin + Spring 튜토리얼 따라하기 많은 Java + Spring 기반으로 웹 백엔드 개발을 하던 회사들이 하나둘 언어를 Kotlin으로 전환하고 있습니다. 저 역시 예외는 아니라서, 새로 합류한 팀에서는 Kotlin + Spring으로 서비스를 구성하고 있네요. 예전에는 개인 공부의 성격으로만 Java + Spring 5를 공부했다면, 이젠 생존형(?)으로 Kotlin + Spring 5를 공부하게 되었습니다. 간단하면서도 하나의 flow를 따라서 Kotlin + Spring 개발을 해 보고자, Spring 공식 튜토리얼을 따라해보게 되었습니다. Spring Boot + Kotlin 튜토리얼 GitHub 링크 다만 공식 문서가 작성된 시점은 Spring 2.3.0이 최신 버전이던 시점이라... Gradle 등 여러 환경이 조금 오래 됐습.. 2023. 1. 7.
H2 Database를 이용하여 간단하게 개발 시작하기 백엔드 개발을 할 때, DB의 사용은 필수적입니다. 단순한 CRUD 게시판을 만든다고 해도, DB가 있어야 글을 저장하고, 조회하고, 수정하고, 삭제하는 기능을 이용할 수 있습니다. 하지만 처음부터 냅다 MySQL 같이 규모 있는 DB 환경을 셋업하고 시작하기엔 무리가 가는 것이 사실입니다. 이를 위해 간단하게 사용할 수 있는 메모리 기반의 RDBMS가 존재합니다. H2 Database라고 하는데요. 예전에 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 따라서 개발하면서 언급한 바 있습니다. 메모리 상에 DB가 생성되고, 따라서 애플리케이션이 시작할 때마다 초기화되므로 개발을 진행하며 사용하기에 아주 좋습니다. 실무 환경에서도, 개발/운영 DB에 직접 데이터를 쓰고 지우기에는 부담이 될 때 활용할.. 2022. 12. 30.
[Java] 비교 연산 Java에는 다양한 비교 연산 방법이 있습니다. 다른 언어처럼 == 연산자를 비교하는 방법에서부터, Object로부터 상속 받은 equals() 메소드, Object를 상속 받은 Objects 클래스의 equals()를 이용하는 방법을 소개해 보고자 합니다. 목차 1. == 2. String.equals() 3. Objects.equals() 1. == == 연산자는 '비교하려는 두 대상의 주소값'을 비교합니다. Java에는 기본 자료형과 참조 자료형이 존재하는데요. 기본 자료형은 call by value 형태로, == 연산자를 통해 비교하는데 무리가 없습니다. 참조 자료형의 경우 call by reference의 형태로, 생성 시 메모리 내에 주소값이 부여되는데요. == 는 이 메모리 주소를 비교합니다.. 2022. 10. 14.
어떻게 하면 호출한 API의 처리 완료 시점을 알 수 있을까? (부제: socket 삽질기) 글 쓰기에 앞서, 이 문제는 결국 해결하지 못하였음을 밝힙니다. 아직 제가 발견하지 못한 적절한 해결법이 있을 것이라고 생각합니다. 나중에라도 제가 해당 방법을 찾는다면 별도 글로 작성 후 링크를 달아 두도록 하겠습니다. 목차 0. 개요 1. API 및 로직 소개 2. Socket 연결을 사용하여 예쁘게 구현했다 3. 문제점 발생, 해결법 고민 4. 정리 0. 개요 해당 내용은 업무 중 개발하다가 경험한 내용을 재구성한 것입니다. 따라서 예시에 사용되는 코드 및 구체적인 로직은 실제 업무와는 무관함을 미리 알립니다. 웹 서비스를 사용하다 보면, 파일을 올리면 해당 파일을 분석 후 결과를 보여 주는 식의 서비스가 있습니다. 문서를 올리면 내용을 인식해 주거나, 이미지를 올리면 고해상도로 업스케일링 해 주는.. 2022. 10. 9.