
— InvalidCoordinateException, NotFoundException, CustomException 무엇이 다를까?개발을 하다 보면 필연적으로 예외 처리를 하게 된다.최근 공간 정보 기반 POI 프로젝트를 진행하면서 다양한 예외를 처리해야 했는데,이 과정에서 "도메인별 예외"와 "공통 예외 처리 방식"의 차이를 깊게 이해하게 되었다.이번 포스팅에서는 개별 예외 클래스(InvalidCoordinateException, NotFoundException)와 통합 예외 처리 방식(CustomException 패턴)의 차이를 비교하고, 어떤 상황에서 어떤 스타일이 적합한지 정리해보았다. 💥 문제 상황: 좌표가 잘못 들어왔을 때예를 들어 사용자가 잘못된 위도를 입력한 경우:{ "latitude"..

Kotlin에서 Double 타입은 기본적으로 null이 들어올 수 없지만, JSON → DTO 변환 시 생각보다 큰 함정이 있다. 이번 글에선 Double? + @Field NotNull 조합이 언제 꼭 필요한지 정리해봤다. 🤔 문제의 시작: JSON 필드 누락예를 들어, 아래와 같은 API 요청 DTO가 있다고 하자.data class CreatePoiRequest( val latitude: Double, val longitude: Double) 클라이언트가 아래처럼 요청을 보낸다면?{ "longitude": 126.9769}→ latitude 필드가 빠져 있다. Kotlin primitive 타입(Double)은 절대 null이 안 들어온다.Kotlin에서 Double은 primiti..

“POI 생성 API를 개발하다가 이런 고민이 들었다.생성 후 ID만 반환할까? 아니면 방금 생성한 POI 데이터를 그대로 돌려줄까?상황별로 어떤 방식이 더 적합할지 정리해봤다.”1. 고민의 시작최근 공간 기반 서비스 개발을 하면서, POI(장소) 생성 API를 만들었다.그런데 여기서 고민이 생겼다.옵션 1 → ID만 반환옵션 2 → DTO(엔티티 데이터) 반환두 방식 모두 많이 쓰인다.하지만 상황에 따라 장단점이 분명히 갈린다고 판단했다. 2. ID만 반환하는 방식✅ 예시 @PostMappingfun createPoi(@RequestBody request: CreatePoiRequest): ResponseEntity { val poiId = poiService.createPoi(request) ..

오늘은 2023 KAKAO BLIND RECRUITMENT 기출 문제를 풀어보려한다.문제 링크는 다음과 같다.나는 코틀린으로 문제를 풀었다. 문제를 정리해보자.✅ 문제 핵심개인정보 수집일과 약관 유효기간이 주어진다.모든 달은 28일까지 있다고 가정 → 1개월 = 28일개인정보는 수집일 + 약관 유효기간(월 수)만큼 지난 다음 날부터 파기해야 한다.오늘 날짜(today)가 파기 시작일(= 수집일 + 유효기간)과 같거나 이후라면 해당 개인정보를 파기 대상에 포함시킨다.결과는 파기 대상 개인정보 번호(1번부터 시작)를 오름차순으로 반환한다. ✅ 자료구조 설계terms 정보:"A 6", "B 12"처럼 약관 종류와 유효기간(월)을 문자열 배열로 받음.이를 쉽게 조회하기 위해 Map 으로 변환 (약관 종류 -..

오늘은 2024 카카오 WINTER INTERNSHIP 기출 문제를 풀어보려한다.문제 링크는 다음과 같다.나는 코틀린으로 문제를 풀었다.문제를 정리해보자.✅ 문제 핵심각 친구쌍 A-B에 대해A가 B에게 더 많이 선물 줬으면 → B는 A에게 1개 받는다.같거나 주고받은 기록이 없으면 → 선물지수가 높은 쪽이 1개 받는다.선물지수도 같으면 아무 일도 없다.✅ 자료구조 설계nameToIndex: 이름 → 인덱스 변환 (빠른 조회용)giftMatrix[i][j]: i번 사람이 j번 사람에게 준 선물 수giftGiven[i]: i번 사람이 총 준 선물 수giftReceived[i]: i번 사람이 총 받은 선물 수nextMonthGifts[i]: i번 사람이 다음 달에 받을 선물 수 처음 작성한 코드는 다음과 같다..

도커로 PostgreSQL을 설치하려고 아래의 명령어를 입력했더니 이런 에러가 발생했다.docker run -d \ --name poi-postgres \ -e POSTGRES_USER=poiuser \ -e POSTGRES_PASSWORD=poipass \ -e POSTGRES_DB=poidb \ -p 5432:5432 \ postgis/postgis 에러 메시지:docker: Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found 내가 사용하는 Mac이 ARM 아키텍처(M1/M2/M3) 기반..

처음 이 문장을 읽었을 때 auto_increment 속성이 설정된 관계형 데이터베이스의 기본 키를 쓰면 되지 않을까?하고 생각했다.하지만 분산 환경에서 이 접근법은 데이터베이스 서버 한 대로는 요구를 감당할 수 없을 뿐더러, 여러 데이터베이스 서버를 쓰는 경우에는 지연시간(delay)를 낮추기가 힘들기 때문에 통하지 않는다는 것을 깨달았다. 역시 대규모 시스템 설계시엔 고려해야할 부분이 많은 것 같다. 요구사항이 다음과 같을 때 ID는 유일해야 한다.ID는 숫자로만 구성되어야 한다.ID는 64비트로 표현될 수 있는 값이어야 한다.ID는 발급 날짜에 따라 정렬 가능해야 한다.초당 10,000개의 ID를 만들 수 있어야 한다.분산 시스템에서 유일성이 보장되는 ID를 만드는 방법들에 대해 알아보자. 1. 다..

네트워크 시스템에서는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 처리율 제한 장치(rate limiter)가 필요한데, 처리율 제한 장치와 처리율 제한 알고리즘에 대해 알아보자. 1. 토큰 버킷 알고리즘 (token bucket)지정된 용량을 갖는 컨테이너이 버킷에는 사전 설정된 양의 토큰이 주기적으로 채워짐. 토큰이 꽉 찬 버킷에는 더 이상의 토큰은 추가되지 않는데, 토큰 공급기가 이 버킷에 매초 2개의 토큰을 추가하고, 버킷이 가득 차면 추가로 공급된 토큰은 버려지는 구조각 요청이 처리될 때마다 하나의 토큰을 사용하고 요청이 도착하면 버킷에 충분한 토큰이 있는지 검사하고, 충분한 토큰이 있는 경우 버킷에서 토큰 하나를 꺼낸 후 요청을 시스템에 전달한다. 충분한 토큰이 없는 경우,..

이 포스팅은 이전 포스팅과 이어지므로 이전 포스팅을 먼저 보기를 권장한다.이번 포스팅에서는 현재 프로젝트의 구조와 MSA로 전환하기 위해 어떤 과정이 필요한지 알아보자. ✨ 시리즈 구성1. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 1 시스템 아키텍처 및 3단계 인증 흐름 2. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 2 인증 서버를 구현해보자.3. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 3 비즈니스 논리 서버를 구현해보자.4. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 4 인증 서버와 비즈니스 논리 서버가 잘 동작하는지 확인해보자.5. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 5 멀티 모듈 구조를 MSA 구조로 리팩토링해보자. 5-1. 현재 프로..

이 포스팅은 이전 포스팅과 이어지므로 이전 포스팅을 먼저 보기를 권장한다.이번 포스팅에서는 현재 프로젝트의 구조와 MSA로 전환하기 위해 어떤 과정이 필요한지 알아보자. ✨ 시리즈 구성1. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 1 시스템 아키텍처 및 3단계 인증 흐름 2. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 2 인증 서버를 구현해보자.3. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 3 비즈니스 논리 서버를 구현해보자.4. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 4 인증 서버와 비즈니스 논리 서버가 잘 동작하는지 확인해보자.5. OTP 기반 2단계 인증 시스템 직접 구현해보기 - 5 멀티 모듈 구조를 MSA 구조로 리팩토링해보자. 5-1. 현재 프로..
- Total
- Today
- Yesterday
- 코드
- 소스코드
- 22 정보처리 산업기사
- 이코테
- hackerrank
- 정보처리산업기사
- JPA
- ORM
- 백준
- 정보처리 산업기사
- 디버깅
- 자바의 정석
- 해커랭크 자바 챌린지
- 풀이
- 정보처리산업기사 공부법
- 코틀린
- 해커랭크 챌린지
- challenges
- Java
- 강의
- 그리디
- 22 정보처리산업기사
- 알고리즘
- hackerrank challenges
- 해커랭크 자바
- 챌린지
- 해커랭크
- Spring Security
- 자바
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |