[오류 해결] SQL ERROR 1406: Data too long for column at row 1

2024년 3월 11일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.문제 상황GPT-4 응답 결과와 토큰 사용량에 대해 데이터베이스에 저장하려고 얼마 전에 코드를 수정했다. 수정 전에는 GPT-4에 대한 응답 결과를 따로 저장하지 않고 바로 응답 값을 출력하도록 해두었으나, 수정 후에 갑자기 500(Internal Server Error)가 발생한다는 소식에 확인을 시작했다.백엔드 코드를 확인해 보니 아래 오류가 발생한 것을 확인할 수 있었다.2024-03-10 10:49:04.949 ERROR 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : (conn=605) Data too long fo..

Backend/Java

Spring, 테스트 코드는 왜 작성할까?

2024년 3월 8일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.원래 필자는 PHP와 그 프레임워크인 Laravel을 이용하여 개발을 해왔다. 하지만, PHP의 인기도가 점점 낮아져가는 것도 사실이고, 다른 언어를 접해 보고자 PHP에서 Java와 Spring Boot로 주 개발 언어를 변경하였다. Spring Boot에 익숙해지고, 여러 커뮤니티를 보며 '테스트 코드'라는 게시글을 많이 접하게 되었다. 그래서 나도 원래는 테스트 코드를 작성하지 않았지만 사실 귀찮아서.. 테스트 코드를 작성하는 방법과 그 이유에 대해서는 꼭 알고 넘어가고 싶기에 이 글을 작성했다.테스트 코드를 왜 작성할까?1. 서버를 시작하여 직접 테스트하는 것 보다 시간을 단축시킬 수 있다..

Backend/Java

Spring Boot에서 ChatGPT 활용하기 #2: API로 GPT 응답 값 가져오기

2024년 2월 27일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.Spring Boot에서 ChatGPT 활용하기 #1: API 연결 테스트에 이어 이 글에서는 Spring Boot에서 만든 API 호출을 통해 GPT의 응답 값을 가져오는 코드를 작성해 볼 것이다.구조gptㄴ controller ㄴ GptController.javaㄴ service ㄴ Impl ㄴ GptServiceImpl.java GptService.java application.propertiesapplication.propertieshttps://platform.openai.com/api-keys 여기에서 발급받은 Secret Key는 저장소에 올라가거나 공유되면 안 되..

Backend/Java

Spring Boot에서 ChatGPT 활용하기 #1: API 연결 테스트

2024년 2월 20일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.들어가며OpenAI의 ChatGPT는 현재 전 세계에서 가장 주목받고 있는 기술이다. ChatGPT에 대한 이해가 깊어지면서, 이를 활용한 API 개발에 대한 생각이 점점 커졌다. 또한, 최근에 릴리즈된 Spring Boot 3.0을 아직 제대로 활용해보지 않았던 점을 고려하여, 이번 프로젝트는 Spring Boot 3.0 기반으로 진행하기로 결정했다.ChatGPT API 호출ChatGPT 공식 문서에 따라 Spring Boot에서 본격적으로 활용하기 전 Postman을 통해 API 호출을 먼저 해보았다. 이 글을 쓰는 오늘(2024년 2월 19일) 기준, GPT 모델에 따른 엔드포인트는 다음과..

Backend/Java

Spring Security: There is no PasswordEncoder mapped for the id "null" 오류 해결

2023년 1월 10일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.문제 상황비밀번호 재설정 API를 개발하는 도중, 변경할 새로운 비밀번호가 기존 비밀번호와 일치하면 변경할 수 없도록 예외 처리를 진행하는 과정에서 There is no PasswordEncoder mapped for the id "null" 에러를 맞닥뜨렸다. 오류가 지시하고 있는 곳은 SignServiceImpl에서의 passwordEncoder.matches() 해당 부분이었다.원인if(passwordEncoder.matches(user.get().getPassword(), resetPasswordRequestDto.getPassword())) { ...}기존 등록된 사용자가 있다면 해당 ..

Backend/Java

Cookie, Session, Token(JWT) 정리하기

2023년 10월 13일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.프로젝트를 진행하면서 백엔드(Spring Boot)에서는 유효 기간이 존재하는 접근 토큰을 발급하고, React에서는 그 토큰을 받아 클라이언트의 localStorage에 저장하여 특정 행위를 할 때 사용자임을 인증하는 방식으로 JWT 방법을 사용했었는데, 사용을 하기만 할 뿐 개념이나 쿠키, 세션 방식과의 차이점은 정확히 이해하지 못 했다. 이 글에서는 사용자 인증 방식 중 쿠키, 세션, 토큰 방식의 차이점에 대해 이해하고 공부하면서 정리한 것들을 적어보려 한다.HTTP의 특성HTTP: 인터넷 상에서 데이터를 주고 받기 위해 서버 또는 클라이언트 모델을 따르는 프로토콜HTTP는 위 사진과 같..

Backend/Java

'Spring Boot + React' 카카오 소셜 로그인 도입하기 (2)

2023년 10월 11일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.지난 글에 이어서 이번 글에서는 Spring Boot에서 카카오 소셜 로그인을 위해 어떤 작업을 해야하는지에 대해 적어보려 한다. Spring Boot에서 카카오 소셜 로그인을 구현하려면 아래와 같은 간단한 과정만 구현하면 된다.프론트엔드에서 전달받은 인가코드로, 접근 토큰 받아오기 (카카오 API 사용)접근 토큰으로 카카오 계정 정보 불러오기 (카카오 API 사용)불러온 카카오 계정 정보로 우리 서비스 회원에 등록하기위 과정에서 2번까지만 구현한다면, 3번의 과정은 기존 JWT를 이용한 회원가입 과정과 동일하다.인가코드로 접근 토큰 받아오기프론트엔드에서 인가코드를 받아올 수 있는 카카오 로그..

Backend/Java

'Spring Boot + React' 카카오 소셜 로그인 도입하기 (1)

2023년 9월 27일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.해커톤에서 진행하던 프로젝트를 이어서 개발하고 있는데, 소셜 로그인을 구현하기로 계획했다. 소셜 로그인 같은 경우에는 처음 개발해 보기 때문에 어떤 과정으로 개발을 해야하는지 처음에는 이해가 잘 되지 않았다. 그래서 정리도 할 겸,, 백엔드는 Spring Boot, 프론트엔드는 React를 사용하고 로그인 방식은 JWT 인증 방식을 사용하는 과정에서 카카오 소셜 로그인을 구현한 방법에 대해 적어보려 한다.Spring Boot: 2.5.6Java 11, JDK 11Flow 이해하기처음에 카카오 소셜 로그인을 도입하기 위해서 Kakao Developer에서 확인했던 사진이다. 지금 보면 어떤 과정을..

Backend/Java

[오류 해결] SQL ERROR 1406: Data too long for column at row 1

2024년 3월 11일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.문제 상황GPT-4 응답 결과와 토큰 사용량에 대해 데이터베이스에 저장하려고 얼마 전에 코드를 수정했다. 수정 전에는 GPT-4에 대한 응답 결과를 따로 저장하지 않고 바로 응답 값을 출력하도록 해두었으나, 수정 후에 갑자기 500(Internal Server Error)가 발생한다는 소식에 확인을 시작했다.백엔드 코드를 확인해 보니 아래 오류가 발생한 것을 확인할 수 있었다.2024-03-10 10:49:04.949 ERROR 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : (conn=605) Data too long fo..

Backend/Java

Spring, 테스트 코드는 왜 작성할까?

2024년 3월 8일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.원래 필자는 PHP와 그 프레임워크인 Laravel을 이용하여 개발을 해왔다. 하지만, PHP의 인기도가 점점 낮아져가는 것도 사실이고, 다른 언어를 접해 보고자 PHP에서 Java와 Spring Boot로 주 개발 언어를 변경하였다. Spring Boot에 익숙해지고, 여러 커뮤니티를 보며 '테스트 코드'라는 게시글을 많이 접하게 되었다. 그래서 나도 원래는 테스트 코드를 작성하지 않았지만 사실 귀찮아서.. 테스트 코드를 작성하는 방법과 그 이유에 대해서는 꼭 알고 넘어가고 싶기에 이 글을 작성했다.테스트 코드를 왜 작성할까?1. 서버를 시작하여 직접 테스트하는 것 보다 시간을 단축시킬 수 있다..

Backend/Java

Spring Boot에서 ChatGPT 활용하기 #2: API로 GPT 응답 값 가져오기

2024년 2월 27일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.Spring Boot에서 ChatGPT 활용하기 #1: API 연결 테스트에 이어 이 글에서는 Spring Boot에서 만든 API 호출을 통해 GPT의 응답 값을 가져오는 코드를 작성해 볼 것이다.구조gptㄴ controller ㄴ GptController.javaㄴ service ㄴ Impl ㄴ GptServiceImpl.java GptService.java application.propertiesapplication.propertieshttps://platform.openai.com/api-keys 여기에서 발급받은 Secret Key는 저장소에 올라가거나 공유되면 안 되..

Backend/Java

Spring Boot에서 ChatGPT 활용하기 #1: API 연결 테스트

2024년 2월 20일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.들어가며OpenAI의 ChatGPT는 현재 전 세계에서 가장 주목받고 있는 기술이다. ChatGPT에 대한 이해가 깊어지면서, 이를 활용한 API 개발에 대한 생각이 점점 커졌다. 또한, 최근에 릴리즈된 Spring Boot 3.0을 아직 제대로 활용해보지 않았던 점을 고려하여, 이번 프로젝트는 Spring Boot 3.0 기반으로 진행하기로 결정했다.ChatGPT API 호출ChatGPT 공식 문서에 따라 Spring Boot에서 본격적으로 활용하기 전 Postman을 통해 API 호출을 먼저 해보았다. 이 글을 쓰는 오늘(2024년 2월 19일) 기준, GPT 모델에 따른 엔드포인트는 다음과..

Backend/Java

Spring Security: There is no PasswordEncoder mapped for the id "null" 오류 해결

2023년 1월 10일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.문제 상황비밀번호 재설정 API를 개발하는 도중, 변경할 새로운 비밀번호가 기존 비밀번호와 일치하면 변경할 수 없도록 예외 처리를 진행하는 과정에서 There is no PasswordEncoder mapped for the id "null" 에러를 맞닥뜨렸다. 오류가 지시하고 있는 곳은 SignServiceImpl에서의 passwordEncoder.matches() 해당 부분이었다.원인if(passwordEncoder.matches(user.get().getPassword(), resetPasswordRequestDto.getPassword())) { ...}기존 등록된 사용자가 있다면 해당 ..

Backend/Java

Cookie, Session, Token(JWT) 정리하기

2023년 10월 13일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.프로젝트를 진행하면서 백엔드(Spring Boot)에서는 유효 기간이 존재하는 접근 토큰을 발급하고, React에서는 그 토큰을 받아 클라이언트의 localStorage에 저장하여 특정 행위를 할 때 사용자임을 인증하는 방식으로 JWT 방법을 사용했었는데, 사용을 하기만 할 뿐 개념이나 쿠키, 세션 방식과의 차이점은 정확히 이해하지 못 했다. 이 글에서는 사용자 인증 방식 중 쿠키, 세션, 토큰 방식의 차이점에 대해 이해하고 공부하면서 정리한 것들을 적어보려 한다.HTTP의 특성HTTP: 인터넷 상에서 데이터를 주고 받기 위해 서버 또는 클라이언트 모델을 따르는 프로토콜HTTP는 위 사진과 같..

Backend/Java

'Spring Boot + React' 카카오 소셜 로그인 도입하기 (2)

2023년 10월 11일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.지난 글에 이어서 이번 글에서는 Spring Boot에서 카카오 소셜 로그인을 위해 어떤 작업을 해야하는지에 대해 적어보려 한다. Spring Boot에서 카카오 소셜 로그인을 구현하려면 아래와 같은 간단한 과정만 구현하면 된다.프론트엔드에서 전달받은 인가코드로, 접근 토큰 받아오기 (카카오 API 사용)접근 토큰으로 카카오 계정 정보 불러오기 (카카오 API 사용)불러온 카카오 계정 정보로 우리 서비스 회원에 등록하기위 과정에서 2번까지만 구현한다면, 3번의 과정은 기존 JWT를 이용한 회원가입 과정과 동일하다.인가코드로 접근 토큰 받아오기프론트엔드에서 인가코드를 받아올 수 있는 카카오 로그..

Backend/Java

'Spring Boot + React' 카카오 소셜 로그인 도입하기 (1)

2023년 9월 27일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.여기에서 원본을 확인할 수 있습니다.해커톤에서 진행하던 프로젝트를 이어서 개발하고 있는데, 소셜 로그인을 구현하기로 계획했다. 소셜 로그인 같은 경우에는 처음 개발해 보기 때문에 어떤 과정으로 개발을 해야하는지 처음에는 이해가 잘 되지 않았다. 그래서 정리도 할 겸,, 백엔드는 Spring Boot, 프론트엔드는 React를 사용하고 로그인 방식은 JWT 인증 방식을 사용하는 과정에서 카카오 소셜 로그인을 구현한 방법에 대해 적어보려 한다.Spring Boot: 2.5.6Java 11, JDK 11Flow 이해하기처음에 카카오 소셜 로그인을 도입하기 위해서 Kakao Developer에서 확인했던 사진이다. 지금 보면 어떤 과정을..

Backend/Java