일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링공부
- 자료구조공부
- querydsl
- 프로그래머스
- DDD
- 스프링 공부
- nestjs스터디
- JPA스터디
- 코테준비
- 스프링
- Flutter
- Kafka
- 코테공부
- 기술공부
- K8S
- 알고리즘공부
- nestjs공부
- 스프링부트
- 플러터 공부
- JPA예제
- 플러터 개발
- JPA 공부
- Axon framework
- nestjs
- 스프링부트공부
- JPA
- 자바공부
- 기술면접공부
- JPA공부
- 카프카
- Today
- Total
목록Develop (320)
DevBoi
1. 설정terraform 설치 (mac기준)brew install terraform aws-terraform 설정 1) aws cli 설치curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"sudo installer -pkg AWSCLIV2.pkg -target /aws --version 오류 발생시 (파이썬 환경세팅)brew install --build-from-source python@3.12 2) aws 설정aws configure aws > console > 사용자root 권한으로 accessKey,secretKey 생성 terraform 로컬 공개키 생성 및 저장ssh-keygen -t rsa -b 2048 -f ~/...
필요에 의해서 알림을 메일로 전송해야하는 기능을 개발해야해서 gmail smtp 서버를 연동해보려고한다. 1. Google 보안 설정 진행 하기, 2단계 인증하기 https://myaccount.google.com/u/0/security?pli=1 Google 계정 myaccount.google.com 2. 앱 비밀번호 설정 3. 앱만들기를 하면 자동으로 비밀번호를 알려준다. 의존성 주입 implementation 'org.springframework.boot:spring-boot-starter-mail' 설정 파일 spring: mail: host: smtp.gmail.com port: 587 username: ${MAIL_USERNAME} password: ${MAIL_PASSWORD} propert..
최근 진행 작업중, 특정 autorization path를 설정해도, 전체 path에 적용되어 모든 인가처리를 하게 되어 성능이 낮아지고 오류가 난적이있다. 그래서 해결한 방법 중 하나를 기록하려고한다. @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .authorizeHttpRequests((authorize) -> authorize .requestMatchers("/api/public").permitAll() .requestMatchers("/api/private").authenticated() .re..
상속 적으로 Response가 필요한 경우가 있다. 부모 DTO가 있고 해당 디티오는 하위의 디티오 리스트를 가지고 있다. 해당 케이스는 아래와 같이 처리한다. package com.boiler.core.backend.normaladmin.reservation.dto; import com.boiler.core.backend.entity.Gym; import com.boiler.core.backend.entity.Member; import com.boiler.core.backend.entity.Reservation; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Sett..
타임존이 이상하게 되어있어서, 실제 쿼리를 수행할 때 다르게 결과를 보여준다. 1. DB timezone 설정 2. JPA 내 타임존 설정 위의 두가지를 크게 변경해주어야 한다. JPA 내 타임존 변경 jpa: open-in-view: false show-sql: true hibernate: ddl-auto: update jdbc: time_zone: Asia/Seoul properties: hibernate: show_sql: true format_sql: true package com.boiler.core.backend; import jakarta.annotation.PostConstruct; import org.springframework.boot.SpringApplication; import or..
로깅에서 실제 동작하는 쿼리 로깅찍는 법 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' logging: level: p6spy: info org: hibernate: type: descriptor: sql: trace package com.boiler.core.backend.config; import com.p6spy.engine.logging.Category; import com.p6spy.engine.spy.P6SpyOptions; import com.p6spy.engine.spy.appender.MessageFormattingStrategy; import jakarta.annotation.PostConstruct;..
Querydsl 처리 중 페이징처리 관련 정리 컨트롤러 @GetMapping("/member") @Operation(description = "회원 상세 조회") public PageImpl getAllMember( MemberReadDto memberReadDto,PageRequest pageRequest) { Pageable pageable = pageRequest.of(); PageImpl result = memberService.getAllMember(memberReadDto,pageable); return result; } 커스텀 페이징 객체 구현 package com.boiler.core.backend.member.dto.paging; import org.springframework.data...
귀찮기도 하지만, 여러개 만드는 것보다 널처리해서 선택적 동적 쿼리를 생성 public Long patchMember(MemberDto tMember) { JPAUpdateClause clause = queryFactory.update(member); clause = MemberUpdateClause(clause,tMember); return clause.execute(); } JPAUpdateClause MemberUpdateClause(JPAUpdateClause jpaUpdateClause,MemberDto tMember){ if(member.address != null) jpaUpdateClause.set(member.address,tMember.address()); if(member.birth ..
QueryDsl 프로젝트를 빌드할때 오류가 났다. 사유는 Qclass의 중복 생성시도로 인한 오류이다. 아래와 같이 세팅해서 해결했다. 별건아니고 그냥 의존성 주입과 그래들 과정에서 번거롭게 또 삽질 싫어서 남겨둔다. 나는 쿼리 팩토리를 별도 빈으로 생성해서 서비스에서 주입 받아서 사용했다. 별도 레포지토리는 비즈니스 로직이 복잡할때만 ...할까 하다가 파일이 많아지면 신규 모듈 개발할때 귀찮아서 우선 서비스에서 끝냈다. plugins { id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' id 'java' } group = 'com.boiler.core' version = '0...
프로듀서 에서는 파티셔너를 제일 많이 쓴다. 총 2개의 파티셔너에 대한 지원을 해준다. UniformStickyPartitioner, RoundRobinPartitioner 2개의 파티셔너를 제공한다. 카프카 클라이언트 라이브러리에서 파티셔너를 지정하지 않는 경우, UniformStickyPartioner가 파티셔너로 기본 설정된다. 1. 메시지 키가 있을 경우 동작 UniformStickyPartioner와 RoundRobinPartitioner 둘다 메시지 키가 있을때는 메시지 키의 해시값과 파티션을 매칭하여 레코드를 전송한다. 동일한 메시지키가 존재하는 레코드는 동일한 파티션 번호에 전달 된다. 만약 파티션 개수가 변경되는 경우,메시지키와 파티션 번호 매칭은 깨지게 된다. 즉 메시지키가 있는 경우,..