본문 바로가기

개발/기타18

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.
어떻게 하면 호출한 API의 처리 완료 시점을 알 수 있을까? (부제: socket 삽질기) 글 쓰기에 앞서, 이 문제는 결국 해결하지 못하였음을 밝힙니다. 아직 제가 발견하지 못한 적절한 해결법이 있을 것이라고 생각합니다. 나중에라도 제가 해당 방법을 찾는다면 별도 글로 작성 후 링크를 달아 두도록 하겠습니다. 목차 0. 개요 1. API 및 로직 소개 2. Socket 연결을 사용하여 예쁘게 구현했다 3. 문제점 발생, 해결법 고민 4. 정리 0. 개요 해당 내용은 업무 중 개발하다가 경험한 내용을 재구성한 것입니다. 따라서 예시에 사용되는 코드 및 구체적인 로직은 실제 업무와는 무관함을 미리 알립니다. 웹 서비스를 사용하다 보면, 파일을 올리면 해당 파일을 분석 후 결과를 보여 주는 식의 서비스가 있습니다. 문서를 올리면 내용을 인식해 주거나, 이미지를 올리면 고해상도로 업스케일링 해 주는.. 2022. 10. 9.
[CS Study] 4. 데이터베이스 (2) # 본 글은 인하대학교 단풍나무숲 CS 스터디에 작성한 내용을 그대로 가져온 글입니다. 4. 데이터베이스 목차 ERD와 정규화 과정 트랜잭션과 무결성 2. ERD와 정규화 과정 1. ERD Entity-Relation Diagram의 약자로, DB를 설계할 때 가장 기본적인 테이블 (relation) 간 관계를 정의하는 다이어그램입니다. 관계형 DB를 표시하기에 매우 유리 비정형 DB (NoSQL)에는 적합하지 않다. 2. 정규화 (Normalisation) 정의: 릴레이션 간의 종속 관계를 바로잡아 중복 데이터를 제거하고, 데이터 정합성 (integrity)을 만족하도록 릴레이션을 여러 개로 나누는 과정을 뜻합니다. 예를 들어, 회원 정보 테이블도 사용자 닉네임을 가지고 있고, 게시글 테이블, 댓글 테.. 2022. 9. 22.
[CS Study] 4. 데이터베이스 (1) # 본 글은 인하대학교 단풍나무숲 CS 스터디에 작성한 내용을 그대로 가져온 글입니다. 4. 데이터베이스 목차 데이터베이스의 기본 1. 데이터베이스의 기본 정의 데이터베이스 (database, DB)는 일정한 규칙/규약에 따라 데이터를 구조화 하여 저장하는 데이터의 모음입니다. DB를 관리하는 시스템을 DBMS (Database Management System)이라고 하며, RDBMS, NoSQL 등이 존재합니다. 각 DBMS는 각자의 질의문 (query language; query)을 통해 DB 내에 자료를 삽입, 수정, 조회, 삭제 등을 할 수 있습니다. DB, DBMS, Application의 관계도는 여기를 참고하세요. 엔티티 (Entity) 정의: 여러 개의 속성을 지닌 명사를 엔티티라고 부릅니.. 2022. 9. 21.
[CS Study] 3. 운영체제 (2) # 본 글은 인하대학교 단풍나무숲 CS 스터디에 작성한 내용을 그대로 가져온 글입니다. 3. 운영체제 목차 프로세스와 스레드 컴퓨터에 설치된 '프로그램' 이 실행되면, 코드가 스토리지에서 메모리로 옮겨지고, CPU 등의 자원이 할당됩니다. 이렇게 실행 중인 상태의 프로그램을 '프로세스'라고 부릅니다. Task라고도 합니다. 프로세스 내에 존재하는 1개 이상의 작업 흐름을 스레드 (thread)라고 부릅니다. 한 프로세스 내의 여러 스레드는 메모리 공간을 공유하며, 각 프로세스는 고유의 메모리 공간을 가집니다. 1. 프로세스와 컴파일 과정 2. 프로세스의 상태 프로세스는 아래와 같은 상태를 가집니다. 생성 (create): fork() 또는 exec() 함수를 통해 프로세스가 신규로 생성된 상태를 가리킵니.. 2022. 9. 6.