일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조공부
- 스프링부트공부
- Kafka
- 프로그래머스
- querydsl
- JPA
- JPA예제
- K8S
- 코테공부
- JPA공부
- DDD
- 스프링 공부
- Flutter
- 스프링부트
- 스프링
- 코테준비
- Axon framework
- 알고리즘공부
- 플러터 공부
- 스프링공부
- 기술면접공부
- 카프카
- JPA스터디
- 플러터 개발
- 자바공부
- nestjs공부
- JPA 공부
- nestjs스터디
- 기술공부
- nestjs
- Today
- Total
목록Develop (322)
DevBoi
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/JyD8V/btsL5kqu2L8/bJJG44H6w70kuwQNVi7WJ0/img.png)
AWS 세팅을 자동화 해보자자동화라기 보다는 Iac 도구로 형상을 유지한다고 보면 될 것 같다.테라폼 사용을 위한 로컬 세팅은 아래 글에서 참고해서 진행하자https://devboi.tistory.com/777 1. AWS 계정 accesskey생성* IAM 을 접속하면, root 계정 정보를 볼수 있다.* 액세스 키를 생성한다. 개인적으로 루트 사용자에게 활성 액세스키를 등록하여, 해당 액세스키로 연결한다.IAM에서 서브 계정을 생성, 정책연결을 하고, 해당 계정의 액세스키를 생성하여 접속 해도되지만 귀찮으니 루트로 한다.1-1. 결제 및 비용 관리 클릭한다1-2. 액세스키를 생성 하고, 정보를 잘 저장해둔다. 2. AWS 계정 연결2-1. aws configure2-2. 1번에서 생성한 액세스 키 ..
JPA는 엔티티를 생성하면 자동으로 테이블을 만들어준다.별다른 설정 없이 엔티티만을 만든다면, 테이블 + seq테이블의 구조로 생성이 된다. 1. Person, Person_seq 테이블이 된다.만약에 Person테이블에 데이터를 강제로 업데이트를 치거나, 데이터를 삽입하면해당 key에 대한 에러가 발생한다.duplicate key가 된다. 왜이럴까? Person_seq는 1을 보고있으나, Person에는 이미 1이 들어가 있는 경우가 되기 때문이다."이러한 경우에는 seq 테이블을 새로 만들거나, 시퀀스를 새로만들어 줘야한다" 아래처럼 하자, 참고로 이미 만들어진 시퀀스는 initvalue를 변경한다고해도, 값이 반영 되지 않는다즉, 덮어씌우지 않는다는 말이다. @Entity@Getter@Setter..
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 ~/...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfCJ3k/btsBcRZXut4/XxFlp4DPrsopBCooy4p0TK/img.png)
필요에 의해서 알림을 메일로 전송해야하는 기능을 개발해야해서 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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cQ313k/btszlmOUjhu/KciykMhlMXAWmKbC0z3EF0/img.png)
최근 진행 작업중, 특정 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..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vBgXA/btsv7TwsE3O/arRQyr6R2i9OqjpRvhbkJ0/img.png)
타임존이 이상하게 되어있어서, 실제 쿼리를 수행할 때 다르게 결과를 보여준다. 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 ..