목록전체 글 (35)
JPEEL | Be Developer aspirant
병원검색 API 를 구현하면서 문득 그런생각이 들었다. '특정 병원을 조회할때마다 조회수를 업데이트 하기위해 DB에 접근 하는건 비효율적이지 않나?' 해결책을 찾던중 캐싱을 이용해서 조회성능을 높히는 방법을 찾게되었다. 글로벌 캐싱 과 로컬 캐싱 전략중 나는 로컬 캐싱을 사용하기로 했다. (속도가 더 빠르고, 내가 개발중인 프로젝트에선 서버와 서버간의 데이터 공유가 필요없기 때문) 내가 지금 진행중인 프로젝트에 적용해보았다. -주의 1/Caffeine cache 를 사용하기로했음 (Ehcache 는 xml 설정등 사용하기 번거로워서 채택) 2/내가 구현한 코드가 정답이 아닐수있음 (높은 확률) 최초 설정 우선 build.gradle 에 의존성 주입 implementation 'org.springframe..
Spring Security 를 배우는 중... 사용자 Authentication (인증) 에 대한 실습 중에, Spring Security 에서 제공하는 UserDetails 라는 인터페이스를 알게됐습니다. 이는 사용자의 인증에 관한 메서드들을 담은 인터페이스였습니다. 인터페이스 구현체를 정의하면 생성되는 메서드 들입니다. 전부 인증인가에 관련된 메서드 임을 확인할 수 있습니다. 이 메서드를 구현할 구현체를 생성해 인증과 관련된 이슈를 처리하면 되는 것이었습니다. 실습 도중에는 CustomUserDetails 라고 정의하고 이를 구현체로 정의했습니다. 처음에 저는 생각했습니다. "엥? Entity 를 그냥 UserDetails 의 구현체로 처음부터 만들어서 DB 등록에 인증 처리까지 한꺼번에 시키면 되..
JWT 에 대해 같이 알아봅시다 JWT ( Json Web Token ) 상품권.. 교환권.. 저는 처음 보고 지하철 승차권 생각났습니다. 돈을 지불하고 승차권을 얻어 지하철을 이용하지요. Web Token 은 직역하면 어떤 웹 이용권 정도로 해석이 됩니다. Json Web Token , 직역하면 Json 형태의 웹 이용권이 되겠습니다. GPT 님에게 조금더 상세한 답변을 요구해봤습니다. JWT(JSON Web Token)는 웹 통신에서 사용되는 토큰 기반의 인증 방식입니다. JWT는 간결하고 자가수용적인(JSON-based) 형식을 가지며, 클라이언트와 서버 간의 정보를 안전하게 전송하기 위해 사용됩니다. 정리하면 JWT 는 웹 상에서 사용되는 인증(Authentication)방식 중 하나인 '토큰 기..
WebSocket 은 왜 쓰는건가? 보통 HTTP 통신을 할 때는 클라이언트 > 서버 요청에서 통신이 시작됩니다. 이건 다시 말하면 클라이언트가 서버에 요청을 보내지 않는다면, 클라이언트에게 어떤 전달을 할 방법이 없다는 뜻입니다. 서비스 개발 시에 HTTP 통신 만으로는 '채팅' 등 서버에서 발생한 데이터를 클라이언트에게 전달하는 기능을 만들기는 어렵습니다. WebSocket 뜻 클라이언트와 서버의 연결을 길게 유지하고, 연결 내에서 양방향 데이터 전송을 가능케 해주는 통신 규약의 일종입니다. 요청이 없어도 서버 > 클라이언트 로 데이터를 전송할 수 있다. 이는 채팅 or 알람 기능등을 제공하기 위해 활용합니다. WebSocket 연결 과정 클라이언트가 서버에게 HTTP 요청을 보내면서, WebSock..
레포지토리 , 서비스 구현 데이터베이스에 user 를 추가할 수 있는 로직을 구현해줍시다. 그렇게 하기 위해서 우선 저번시간에 미리 만들어뒀던 UserDetailsManager 의 구현체인 UserService의 createUser 메서드를 만져줘야합니다. 회원가입 form 에서 클라이언트가 username 과 password 를 보냅니다. 서버에선 이 username과 password 를 받아와서 db에 저장할 수 있는지 먼저 확인하는 과정이 있어야합니다. 이는 username ( 계정 ) 이 db에 이미 존재하는지를 알아보는 것입니다. 이를 위해 UserRepository에서 메서드를 만들어 줄겁니다. public interface UserRepository extends JpaRepository {..
프로젝트 설명 스프링 시큐리티를 사용해서 로그인을 구현해보는 프로젝트입니다. jwt 토큰 인증 까지 사용해볼 계획입니다 필요한 의존성 및 yaml 파일 설정은 제가 올리겠습니당 springboot version : 3.1.1 dependencies : Spring Data JPA , Spring web , Spring Security , ThymeLeaf , Lombok , Devtools , jjwt db : sqlite 사전 세팅 (복붙하세용) build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.1.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'co..
미니프로젝트 후기 데이터 CRUD 를 구현하는데에 중점을 둔 미니프로젝트 였습니다. 제대로 완성된 API 는 아니지만, 요구사항에 맞춰 restful 하게 만들어본 저의 첫 결과물 이었습니다. 서비스 설명 ㅇㅇ마켓은 유저간 중고거래를 도와주는 서비스. 크게 물품작성 , 댓글작성 , 구매제안작성 으로 기능을 나눠볼 수 있습니다. 서비스 ERD 서비스 기능 물품(sales_item) 처리 API 1. 물품 판매글 등록 2. 물품 판매글 조회 3. 물품 판매글 수정 4. 물품 판매글 이미지 등록 5. 물품 판매글 페이징 처리 6. 물품 판매글 삭제 댓글(comment) 처리 API 1. 댓글 등록 2. 댓글 수정 3. 답글 등록 4. 댓글 삭제 5. 댓글 페이징 처리 구매제안(negotiation) 처리 AP..
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 조건 1.정수 N과 N x N 크기의 "R" "G" "B" 맵을 입력받는다. 2.출력값은 일반사람이 볼 수 있는 구역의 개수 , 색맹인 사람이 볼 수 있는 구역의 개수이다. 3.색맹은 "R" 빨간색과 "G" 초록색을 구분하지 못한다. 저는 이렇게 접근했습니다 1.DFS 를 이용할것인데, R을 탐색하는 DFS, G를 탐색하는 DFS , B를 탐색하는 DFS , 색맹전용(R과 G 일경우) DF..