목록전체 글 (149)
IT 성장일기
[JPA] Cannot invoke "" because "entity" is null나 제발 네이티브 쿼리랑 마이바티스 사용하게 해 줘🥲JPA 사용 중 마주친 NullPointException 해결 과정을 정리했습니다.문제아직 개발 초기단계라 처음엔 단순히 고객의 활동 이력만 데이터베이스에서 조회해서 가져오는 부분까지만 구현해 둔 상태였습니다.하지만 활동 이력에 포함된 속성 중 가맹점 ID를 조인 조건으로 고객이 방문한 가맹점 정보를 함께 조회해야 했습니다.@Entity@Table(name = "TB_HISTORY")public class History { @Id private Long id; @OneToOne @JoinColumn(name = "MEMBERSHIP_ID") ..

URL Shortner 개발하기 (2)담당하고 있는 서비스에는 간소화된 URL을 사용해 컨텐츠를 공유하는 기능이 있었습니다.얼마 전 네이버 단축 URL 서비스가 종료됨에 따라 대체재로 사용할 URL 단축 서비스를 사이드 프로젝트로 개발하게 되었습니다. URL Shortner 개발하기는 두 편으로 나뉩니다.이번 포스팅에서는 URL 단축에 있어 실제적으로 사용된 기술과 예제 코드를 포스팅합니다.1. 개요개발 환경스프링, 자바, 마리아DB를 사용합니다.로직 자체는 굉장히 단순해서 언어와 플랫폼에 크게 구애받지 않고 응용할 수 있을 것이라고 생각합니다.URL 단축 방식원본 URL에 대한 ID를 생성하고, 생성된 ID를 BASE62 문자셋을 이용해 인코딩합니다.인코딩된 ID를 사용자에게 전달하는 방식으로 URL ..

URL Shortner 개발하기 (1)담당하고 있는 서비스에는 간소화된 URL을 사용해 컨텐츠를 공유하는 기능이 있었습니다.얼마 전 네이버 단축 URL 서비스가 종료됨에 따라 대체재로 사용할 URL 단축 서비스를 사이드 프로젝트로 개발하게 되었습니다. URL Shortner 개발하기는 두 편으로 나뉩니다.이번 포스팅에서는 단축 URL이란 무엇이며 어떤 과정을 거쳐 URL을 단축하는지 알아보겠습니다.1. 단축 URL원본 URL을 짧게 줄인 형태의 URL을 의미합니다.이때 단축 URL은 원본 URL과 같은 위치를 가리킵니다.단축 URL의 필요성문장도 그렇듯 URL도 너무 길면 전달하기도 읽기에도 쉽지 않겠죠. 조금 과장해서 비유하자면, '소금간 된 익힌 쌀에 볶은 당근, 채 썬 오이, 지단, 맛살과 부드러운..

DTO를 이용해 중첩된 구조의 JSON 객체 전달 받기객체 안에 또 객체가 들어있는, 중첩된 구조의 객체를 JSON과 DTO를 이용해 주고받는 예제입니다.예제ClientJSON 객체는 아래와 같은 구조로 이루어져 있습니다.let dto = { master : { title , description , } , url : { id , url , } , location : { id , lat , lon , }}ServerJSON과 매핑시키기 위해 동일한 구조로 dto를 작성해야합니다. (롬복 애너테이션 등은 생략하겠습니다.)public class Dto { private Master m..

한글 받침 유무 파악하기담당하고 있는 서비스에 사용자가 현재 열람하고 있는 컨텐츠와 유사한 컨텐츠를 추천해주는 큐레이션 영역이 있었습니다."현재 여행지 명와(과) 유사한 여행지"가 큐레이션의 타이틀인데, 조사를 와(과)로 표시하고 있는 부분이 조금 어색했습니다.컨텐츠명의 마지막 글자의 받침 유무를 판단해 조사를 결정지어서 표시하면 어떨까? 라는 생각으로 이어졌고,구글을 뒤져본 결과 어렵지 않게 다양한 예제코드를 발견할 수 있었습니다.예제 코드아래는 완성된 함수입니다.function hasJongseong(str) { if (!str || typeof str !== 'string') return false; const lastChar = str.charAt(str.length - 1); c..

There is no getter for property named 'url' in 'class java.lang.String'문제MyBatis 사용 중 아래와 같은 오류가 발생했습니다.ReflectionException: There is no getter for property named 'url' in 'class java.lang.String'원인이 예외는 MyBatis가 #{url}과 같이 프로퍼티를 처리하는 과정에서 String 타입의 url 변수에 대한 getter를 찾으려 하기 때문에 발생한다고 합니다. MyBatis는 프로퍼티를 매핑하는 표현식을 사용할 때, 해당 프로퍼티가 객체의 필드라고 가정하고 getter 메서드를 찾습니다.그런데 매개변수로 전달한 url은 단순한 String 타입이고..
종이 자르기문제 설명정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.제한사항0 종이를 겹쳐서 자를 수 없습니다.풀이function solution(M, N) { return (M * N) - 1;}
2차원으로 만들기문제 설명정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.제한사항num_list의 길이는 n의 배 수개입니다.0 ≤ num_list의 길이 ≤ 1502 ≤ n 내 그지같은 풀이function solution(num_list, n) { if ( !validListDividedByNumber(num_list, n) ..