Pale Blue Dot

It all starts with a pale blue dot.

Pale Blue Dot
·
공지
전체 글 목록    rvrols@naver.comeuuns    항상 공부하고 있습니다.완벽하지 않으니 피드백은 언제나 환영합니다.   Icons by fontawesome

contents

[Spring Boot] Toss Payments로 '가상계좌' 결제 기능 구현 (2) 요청과 응답 주고 받기
·
카테고리 없음
이전 글. Toss Payments로 '가상계좌' 결제 기능 구현 (1) 연동하기 ✔️ 흐름 이미지구매자가 주문서를 작성하면 우리 서버는 결제 정보(구매자, 금액 등등)를 담아 토스에게 렌더링을 요청한다.그리고 토스에서 위젯을 제공하면, 구매자는 [카드, 계좌이체, 가상계좌 등] 결제 수단을 선택하고, 우리 서버는 중간에서 연결하는 역할을 하는 것이다. 위 화살표를 보면 가운데에서 전달하는 역할을 하며, 실제로 요청과 응답 등 데이터의 이동은 구매자와 토스에서 이루어진다.중간에서 데이터를 받아 저장하며 올바른 곳으로 연결할 수 있도록 하는 역할을 하게 된다. ✔️ 샘플 코드를 사용해서 view 구성 연동하기 | 토스페이먼츠 개발자센터토스페이먼츠의 간편한 결제 연동 과정을 한눈에 볼 수 있습니다..
[Spring Boot] Toss Payments로 '가상계좌' 결제 기능 구현 (1) 연동하기
·
SpringBoot
프로젝트 진행 중 '결제' 담당을 맡아 처음으로 PG와 연동하여 결제에 도전해보기로 했다.결제를 위한 방법은 여러가지가 있었고, 그 중에서 Toss Payments로 [가상계좌 + 에스크로]를 선택하였다. ✅ Toss, Virtual Account, Escrow 왜 골랐을까?먼저 결제 기능을 구현할 때 어떤 순서로 동작하는지 알아보았다. 주 흐름은 아래와 같다.요구 사항 정리결제 서비스 종류 — 카드, 계좌 이체, 간편 결제 등결제 대행 PG 선택 및 연동 방식 이해Spring Boot로 BE 기능 구성테스트 결제 구현 PG 종류Iamport (portone)다양한 결제 수단 통합 관리 가능기본적인 결제 flow 이해에 도움UI 없이 빠르게 연동 가능 KG Inicis높은 안정성 보유, 전자 결제 ..
[QueryDSL] 동적 쿼리를 적용해 다중 조건 조회하는 과정 기록
·
JPA
요구사항검색 조건은 [제목, 날짜 기간, 매니저] 이렇게 3가지였고, 날짜 기간은 startedAt과 endedAt으로 구분했다.\1. 제목이 조건으로 들어오면 제목에 '포함되는' 글을 조회한다.2. 날짜가 조건으로 들어오면 '작성된 글'이 해당 기간 안에 있는 글을 조회한다.3. 매니저가 조건으로 들어오면 '글을 관리하는 매니저가 포함된 글'을 조회한다.  구현: 조건 별로 method를 모두 구현Controller @GetMapping("/search/todos") public ResponseEntity> searchTodo(@RequestParam(defaultValue = "1") int page, ..
[QueryDSL] config 파일 작성 시 build 실패 문제
·
error
문제 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at ConstructorResolver.java:804Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException at DefaultListableBeanFactory.java:2207 QueryDSL을 사용하기 위해 config 파일을 작성했다.build를 할 때마다 위와 같은 오류가 발생했다.   원인 분석@Configurationpublic class QueryDslConfig { @PersistenceContext private EntityManager entityManager; @B..
[SpringBoot] Redis 적용 시 @Indexed 사용 문제점
·
SpringBoot
🩸 문제redis에 refresh token을 저장 중 → idx가 붙은 것과, value이름과 함께 토큰 값이 여러 개가 한번에 나오고 있다. redis:filed:value 형태가 옳게 나오는 걸까?    🩺 원인 value를 이용해 검색할 수 있는 @Indexed를 이용하면 인덱스 처리가 된다.@Getter@RedisHash(value = "refresh_token", timeToLive = 86400)public class RefreshToken { @Id private String userId; @Indexed private String token; public RefreshToken(String userId, String token) { this.userId = userId; this...
[SpringBoot] 테스트 코드 작성 시 Mock과 Spy, 그리고 BCryptPasswordEncoder의 encode
·
SpringBoot
첫번째 이슈: BCryptPasswordEncoder 동작  1. 문제Mock으로 BCryptPasswordEncoder 를 주입 받아 proxy로 생성돼 비밀번호가 제대로 저장되지 않는 문제 발생비밀번호가 인코딩되어 저장되지 않고, 비밀번호 검증도 하지 못해 예외가 발생하고 있다.  2. 원인 @Mock private BCryptPasswordEncoder passwordEncoder; 테스트 주체는 UserService니 BCryptPasswordEncoder는 Mock으로 지정하였다.그로 인해 matches()와 encode()가 동작하지 않았고, password를 제대로 검증하지 못하고 있었다.  3. 해결 방안 given - willReturn 이용given(passwordEncoder.matc..
[프로그래머스] 서버 증설 횟수 -java
·
programmers
문제 설명 당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 m명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다. 하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다. 모든 게임 이용자를 감당하기 위해 최소 7..
[SpringBoot/JPA] 조회 성능 개선하기 - FULLTEXT Index 사용
·
JPA
부트캠프 과제 구현 중 기록100만 건의 데이터를 생성해 저장하고, 목록을 조회 하기목록 조회 시 성능을 개선하기 위한 방법 기록대용량 데이터 생성 후 저장: https://rvrlo.tistory.com/entry/SpringBootJPA-JDBC-Batch-Insert를-통해-대용량-데이터-저장하기      🔎 과제 분석저번 글에서 대용량 데이터를 생성하여 테이블에 저장했으니, 이번에는 조회 성능을 개선해보기로 한다.조회 속도를 개선하기 위해 여러 방법을 고려해보라고 했고, 제일 먼저 떠오른 것은 인덱스를 이용하는 것이었다.   ✨ MySQL - Searchall, index: 테이블 전체 스캔(인덱스x)range: 인덱스를 사용한 범위 검색fulltext: MATCH .. AGAINST 구문을 사..
[SpringBoot/JPA] JDBC Batch Insert를 통해 대용량 데이터 저장하기
·
JPA
부트캠프 과제 구현 중 기록100만 건의 데이터를 생성해 저장하고, 목록을 조회 하기대용량 데이터를 저장하기 위한 방법 기록데이터 조회 성능 개선: https://rvrlo.tistory.com/entry/SpringBootJPA-조회-성능-개선하기-FULLTEXT-Index-사용      🔎 과제 분석100만 건의 데이터를 저장하기 위해 랜덤한 값을 생성해야 했다.먼저 목표인 users 테이블은 pk인 id와 unique로 지정된 email이 존재한다.id는 auto_increment로 지정되어 상관없지만, 공통된 값이 나오면 곤란할 email을 랜덤하게 생성해야 했다. 그리고 과제에 주어진 조건은 → 닉네임은 랜덤으로 지정하고, 동일한 닉네임이 들어가지 않도록 하는 것  결국 email과 nickn..