썸네일 [Kotlin] no-offset 방식을 통한 댓글 무한스크롤 구현 프로젝트에서 페이징 기능을 구현하기 위해 다양한 고민을 하고 있었다. Post(게시글)의 경우 페이지네이션 형태로 구현하여 진행하기로 하였으나, 내가 맡은 댓글 파트의 특성상 페이지네이션 형태로 구현할 경우 모바일에서 유저들이 페이지를 직접 클릭해서 넘기게 되는데, 이런 방식은 좋은 UX가 아니라고 생각한다. 실제로 많은 소셜 네트워크 서비스(인스타, 페이스북, 에타)들도 무한 스크롤 방식을 사용하고 있어서 많은 고민 끝에 댓글에서는 무한 스크롤을 구현해보기로 했다. 다른 분이 진행한 post api에서도 Querydsl을 사용하였고, 나 역시 no Offset 기능을 적용하기 위해 Querydsl을 사용하였다. 스프링 데이터 JPA의 Page 기능을 통해 구현할 수도 있지만, no offset을 적용..
[Spring] 소셜 로그인 3편: validate와 reissue
썸네일 [Spring] 소셜 로그인 2편: 로그인과 로그아웃 * 수정중인 글입니다. JWT를 통해 카카오 로그인을 구현해야 하는 상황이었다. 삽질 과정 아래는 노션에 작성해둔 백로그 내용중 일부이다. JWT에 대한 개념 이해 -> 자체 로그인 구현 -> 소셜 로그인 구현 의 과정으로 하나씩 진행해보았고, 어떻게든 짜긴 했으나 여전히 spring security와 소셜 로그인 구현 과정에서의 여러 어려운 부분들을 많이 느껴 좋은 코드는 확실히 아니라는 느낌이 든다. 특히 많은 블로그들의 글을 참조하여 구현하다 보니 코드가 엄청 헤진 느낌이다. 더 많은 공부를 하고 추후 리팩토링을 진행해보고 싶다. JWT 인증 로그인 Flow [프론트] [카카오 API server]에 인가코드 요청 [카카오 API server] 인가코드 발급 후 프론트로 return [프론트] 인가..
썸네일 [Spring] 네이버 지도 길찾기 URL 제공 API 유저가 지정한 장소에 대해 네이버 지도앱의 길찾기 redirect URL을 구현하였다. 먼저 네이버 지도앱의 길찾기 URL을 확인하였다. nmap://route/public?dlat={도착지 위도}&dlng={도착지 경도}dname={도착지 이름} 위 URL을 만들기 위해 위/경도를 가져와야 했는데, 이 부분은 네이버 지도 api 중 geocoding을 활용하였다. 자세한 설명은 아래 공식문서를 확인하자 https://api.ncloud-docs.com/docs/ai-naver-mapsgeocoding Geocoding 개요 api.ncloud-docs.com Geocoding 사용법 아래 내용은 위/경도 를 가져오기 위해 사용한 방법으로, URL을 만드는 것과는 연관성이 없다. 현재 네이버 지도 api..
썸네일 [Flask] 점프 투 플라스크 01. 환경 세팅하기 아래의 모든 내용은 [점프 투 플라스크] https://wikidocs.net/book/4542 를 참조하여 작성한 글입니다. 개요 새롭게 진행할 프로젝트에서 Flask를 통해 개발을 진행해야 하는 일이 발생하여 위 위키를 통해 Flask의 기초를 공부해보고자 한다. 필자는 하단의 모든 과정을 맥으로 진행하였으로 참고해주길 바란다. (Flask 사용 이유는 이전 글(링크) 참조.) 파이썬 설치 과정은 생략하였다. 1장 플라스크 개발준비! 1장의 내용은 대부분 이전에 진행한 FastAPI(링크)와 같았다. myapi 경로만 다음과 같이 변경하였다. (디렉 이름을 myproject로 변경) alias myproject='cd (본인 project dir 경로)/myproject;source (본인 venvs..
썸네일 [Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 정리 김영한 강사님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 정리를 완강 후 개념 위주로 재정리한 글이며 코드는 깃허브(링크) 에서 확인하실 수 있습니다. 배운내용 2. 서블릿 프로젝트 생성과 Hello 서블릿 스프링부트 환경에서 서블을 등록하고 사용. HttpServletRequest HttpServletResponse 역할 HTTP 응답 메시지 생성 HTTP 응답코드 지정 헤더 생성 바디 생성 Content 편의 메서드 / 쿠키 편의 메서드 / redirect 편의 메서드 생성 HTTP 요청 데이터 HTTP 요청 데이터 - GET 쿼리 파라미터 쿼리 파라미터는 URL에 다음과 같이?를 시작으로 보낼 수 있다. 추가 파라미터는 &로 구분하면 된다. HTTP 요청 데이터 - POST HTML For..
[점프 투 FastAPI] 02. 마지막 갑자기 마지막! 2-04-4 CRUD까지 학습을 완료하였으나, 이후 내용은 진행하지 않을 생각이다. 그 이유는 해당 라이브러리의 도입에 대해 다시 한번 생각보아야 할 이유들이 여럿 생겼기 때문이다. (더 자세한 내용은 링크 참조.) 또, 이 위키독스는 FastAPI의 내용만큼 스벨트에 대한 내용도 많이 다루고 있기 때문에 그다지 적절하지 않다고 판단하게 되었다. 이에 점프 투 FastAPI의 내용은 여기서 마친다..! 하지만 FastAPI는 여전히 매력적인 라이브러리라는 생각이 들어, 추후 진행할 작은 사이드 프로젝트에서 도입을 해볼 예정이다. 그때 이 시리즈에 이어 FastAPI를 다루어 볼 예정이다.
[점프 투 FastAPI] 01. 환경 세팅하기 아래의 모든 내용은 [점프 투 FastAPI] https://wikidocs.net/book/8531 를 참조하여 작성한 글입니다. 개요 새롭게 진행할 프로젝트에서 FastAPI를 통해 개발을 진행해야 하는 일이 발생하여 위 위키를 통해 FastAPI의 기초를 공부해보고자 한다. 필자는 하단의 모든 과정을 맥으로 진행하였으로 참고해주길 바란다. 파이썬 설치 과정은 생략하였다. 1-03 FastAPI 개발 환경 준비하기 하단 명령어를 통해 fastapi를 설치하였다. pip install fastapi 그 후 각 디렉토리의 경로를 복사하여 user에 위치한 .zshrc 내부에 아래와 같은 문구를 추가하였다. 참고로, .zshrc와 같은 숨김 폴더는 커멘드+shift+. 을 통해 확인할 수 있다. alias..
썸네일 [Spring] 스프링 핵심 원리 - 기본편 정리 김영한 강사님의 스프링 핵심 원리 - 기본편을 완강 후 개념 위주로 재정리한 글이며 코드는 깃허브(링크) 에서 확인하실 수 있습니다. 인텔리제이 단축키 (복습) 커멘드+옵션+v 컨트롤+쉬프트+r : 테스트 실행 커멘드+o : 전체 검색 커멘드+e : 히스토리 커멘드+[ : 이전 파일 커멘드+/ : 해당 줄 주석처리 iter+tab 으로 for문 생성 배운내용 1. 객체 지향 설계와 스프링 : 스프링의 역사 그리고 스프링 프레임워크에 대해 객체 지향의 특징 추상화 캡슐화 상속 다형성(중요) - 역할과 구현으로 세상을 구분 2. 스프링 핵심 원리 이해1 - 예제 만들기 비즈니스 요구사항과 설계 : 회원 도메인의 설계 및 개발 / 주문과 할인 도메인..