Study

· Study/Etc
들어가며 이미 많은 개발자들이 알고, 사용해보고 있을 ChatGPT. Open AI에서 만든 ChatGPT는 API로도 사용이 가능하다. 모델마다 토큰 당 가격에 일부 차이가 있지만 단순한 프로젝트에 적용하기에는 부담되는 비용이 아니기 때문에 사이드프로젝트에 도입을 해보면 좋을 것 같다는 생각이 들어 간단하게 사용법을 작성해보고자 한다. 자세한 내용은 OpenAI의 ChatGPT API Docs를 참고하도록 하자 ChatGPT API Docs OpenAI Platform Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform. platform.openai.com..
· Study/Etc
들어가며 개발을 하다보면 사진처럼 주석을 하이라이팅 하거나 한눈에 모아보고 싶은 경우가 있다. Intellij에서 제공하는 테마를 살짝 손봐서 주석 색상을 변경하는 방법도 있고, Javadoc 주석(/** content */)을 사용는 방법도 있 지만 Intellij 자체에서 주석을 모아보는 TODO 기능이 존재한다. 오늘은 Intellij에서 제공하는 TODO 코드 태그(Code Tag)기능을 알아보자! TODO 기능 사용하기 기본 사용법 TODO 기능의 사용방법은 간단하다. 주석 코드와 함께 대문자로 TODO를 입력하면 자동으로 주석이 하이라이팅이 된다. (!) 이때 TODO와 작성하고자하는 내용은 한칸의 공백(space)가 있어야 한다. 이렇게 멀티라인으로도 사용할 수 있다! 멀티라인 TODO는 T..
· Study/TIL
“사회적 교통약자도 편하게 식사하세요” 배슐랭은 사회적 교통 약자가 보다 쉽게 이용할 수 있는 배리어 프리 식당이나 카페 등 가게 정보를 알려주고 사용자 위치 맞춤 추천 서비스를 제공합니다. 사회적 교통 약자분들 위한 음식점 정보와 유저들의 생생한 방문 경험이 담긴 리뷰들로 편하게 방문해보세요! 배슐랭이 사회적 교통약자분들이 편하게 살아갈 수 있도록 한 걸음 나아가겠습니다. 👩‍🦼 배슐랭 바로가기 Background 배리어 프리 (Barrier-free)는 사회적 약자가 생활하기에 불편함을 주는 물리전, 제도적 장벽을 제거하자는 운동입니다. 생활공간에서 장애인과 비장애인 간의 장벽을 없애자는 움직임이 증가하고 있지만 아직도 사회적 교통약자는 행복을 추구할 기본적인 권리를 보장받지 못하고 있습니다. 배슐랭..
· Study/TIL
들어가며 프로젝트에 음식점 검색 기능을 구현해야했다. 초반에는 Elasticsearch를 이용해서 구현을 해보려고 목표를 잡아두었었는데, Elasticsearch의 러닝커브가 높고 리소스도 많이 드는 기술이기 때문에 다른 방법을 찾다가 FullText Search에 대해 알게 되었다. 오늘의 TIL은 Elasticsearch에 대해 간단하게 알아보고, MySQL에서 제공하는 FullText Search에 대해 정리하고자 한다. 검색 기능을 구현하기 위한 몇가지 방안 1. 검색 엔진 Elasticsearch Elasticsearch란? Elasticsearch는 루씬(Lucene)을 기반으로 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진이다..
· Study/TIL
들어가며 지난 번 삽질로그에서 배포 후 cookie를 넘겨주는 문제를 해결했었다. 그런데 이번에는 그렇게 넘겨준 cookie가 삭제되지 않는 문제가 발생했다. 소셜 로그인 시 redirect_uri 등등 잠시 사용할 목적의 쿠키를 저장해두었다가 로그인 완료 후 token 발급 시에 해당 쿠키를 삭제하는 방식으로 구현이 되어있어 최종적으로 refresh_token만 쿠키 안에 담겨있어야하는데 필요없는 쿠키들이 삭제되고있지 않았다. 오늘의 TIL은 이 문제에 대한 트러블 슈팅을 해보고자 한다. 배포 후, cookie가 삭제되지 않는 문제 기존의 cookie 삭제 로직은 다음과 같다 public static void deleteCookie(HttpServletRequest request, HttpServlet..
· Study/TIL
들어가며 JWT를 구현하고 있는데, 이번에는 에러 처리가 문제이다! 자꾸 토큰이 유효하지 않은데도 권한 에러인 401이 아니라 500 NullPointerException을 던져준다. 원인은 JWT의 플로우를 제대로 이해하지 못하고 있어서였다. 따라서 오늘의 TIL은 이 문제에 대한 트러블슈팅을 하고자 한다. JWT 401에러 보내기 우선 예외가 발생하는 클래스를 디버깅으로 찾아보았다. 원인은 AuthToken 클래스에서 Claim을 가져오는 메소드가 문제였다. 지금까지는 AuthToken 클래스에서 Claim을 가져올 때 예외가 발생하면 try-catch 문으로 예외처리를 해주고 있었다. AuthToken.java public Claims getTokenClaims() { try { return Jwt..
· Study/TIL
들어가며 Postman은 ui도 깔끔하고, 잘 사용할 줄만 안다면 최강의 시너지를 발휘하는 프로그램이다. 잘 사용하지 못하면 이번처럼 삽질도 하겠지만... 오늘의 TIL은 postman을 사용하면서 새롭게 알게된 postman에서 cookie를 사용하는 방법을 정리한 글을 첨부하는 걸로 간단하게 끝내고자 한다. Postman cookie 설정 [Postman] postman에서 cookie 설정 [Postman] postman에서 cookie 설정 들어가며 소셜로그인을 구현하면서 postman으로는 소셜 로그인창으로는 redirect가 되지 않아 브라우저에서 로그인을 진행하고, refresh token을 쿠키로 받아왔다. 그리고나서 refresh token을 cookie에서 뽑 annajin.tistor..
· Study/Etc
들어가며 소셜로그인을 구현하면서 postman으로는 소셜 로그인창으로는 redirect가 되지 않아 브라우저에서 로그인을 진행하고, refresh token을 쿠키로 받아왔다. 그리고나서 refresh token을 cookie에서 뽑아와서 access token을 재발급 받는 api를 호출했는데, refresh token이 존재하지 않는다고 나오고 있었다. 코드가 잘못된 줄로만 알고 계속 구글링하고 고민하고 있었는데, 그 전까지는 눈에 들어오지 않았던 response의 cookie 탭... 애초에 쿠키는 브라우저에서만 받아왔으면서 postman에서 테스트를 하려니 cookie에는 아무것도 존재하지 않았다. 이번에는 postman에 cookie를 설정하는 방법을 알아보도록 하자. Postman에 cooki..
· Study/TIL
들어가며 spring security + jwt + OAuth2.0 조합은 정말 쉽지가 않다. 특히 security랑 jwt가 가장 어렵다..!! 오늘의 TIL은 소셜 로그인을 구현하면서 겪었던 트러블 슈팅을 작성해보고자 한다! 트러블 슈팅 문제 - 카카오 로그인에서 이메일이 넘어오지 않는 문제 카카오로 로그인을 시도했을 때, 이메일이 넘어오지 않아 DB에 default 값인 NO_EMAIL이 들어오고 있었다. 디버깅을 돌려보니 kakaoOAuth2UserInfo클래스에서 getEmail() 메소드로 이메일을 불러올 때 이메일을 받아오고 있지 못해서 생기는 문제였는데, 해당 메소드의 코드를 보면 key값이 kakao가 제공하는 response의 key값과 다르다. 문제의 코드 @Override publi..
· Study/WIL
들어가며 실전프로젝트 4주차도 막을 내렸다. 일주일동안 끝나지 않는 소셜로그인, JWT와의 싸움을 하기도 했고 에러 코드를 만들거나 예외처리, 응답값 통일 등등 여러가지 코드를 작성했다. 프로젝트가 점점 모습을 갖춰 갈 수록 욕심이 생기기도 하고 아쉬운 부분들이 눈에 보이기도 해서 남은 한 주동안 목표한 부분을 빨리 만들고 완성도를 높이는 작업을 하고 싶어진다. 오늘의 WIL은 지난 일주일 동안 작성한 삽질로그와 정리한 내용을 간단하게 되짚어보고, 한 주간의 회고록을 작성하고자 한다. OAuth2.0 [개발지식] OAuth2.0 [개발지식] OAuth2.0 들어가며 소셜 로그인을 구현하면서 OAuth2.0에 대해 공부를 하게 되었다. 사실 각 소셜로그인이 제공하는 API를 호출하기만 하면 간단하게 해결되..