AWS를 이용하다 보면 ECR을 사용하는 경우가 있다.보통 CI/CD로 ECR에 배포하지만 가끔 수동으로 ECR에 배포하고 싶은 경우가 있다. 수동으로 ECR에 배포하려고 하면 어떻게 하면 되는지 알아보자 일단 ECR에 Repository부터 만들자. test-repo라고 만들어보자 ECR에 배포하기 위해서는 이미지가 있어야 하는데 도커 이미지를 사용해 보겠다.일단 아래 명령어로 도커 이미지부터 생성해 보자.docker build --build-arg SPRING_PROFILE=test -t xxx.dkr.ecr.ap-northeast-2.amazonaws.com/test-repo:test .스프링 환경을 test로 실행하기 위해 SPRING_PROFILE 환경 변수 값을 test로 설정해 준다-t..
특정 API에 대해서 호출 가능한 IP를 제한하고 싶을 때 Spring Security의 hasIpAddress를 사용하면 제한 할 수 있다. 등록할 수 있는 방법은 2가지가 있다고 나온다 @PreAuthorize 어노테이션 사용 SecurityFilterChain 에 등록 그러나 현재 Spring Security 5.7.6 을 사용중인데 1번 방법인 @PreAuthorize에는 존재하지 않아서 2번째 방법인 SecurityFilterChain을 생성하면서 해당 설정을 등록해봤다. /member 하위 API에 대해 만약 특정 IP(192.168.0.32)의 요청만 허용한다가 가정하면 아래와 같이 작성할 수 있다. @Bean public SecurityFilterChain filterChain(HttpSe..
순환하지 않는 유향 그래프를 방향성에 거스르지 않도록 순서대로 배열하는 방법 말 그대로 순환하지 않는 유향 그래프에서 순서가 정해져 있을 때 그 순서대로 방문을 하고 싶을 때 사용할 수 있는 알고리즘이다. 그림을 통해서 예시를 하나 들어보겠다. 만약 아래와 같은 그래프가 있다고 가정해 보자 처음으로 진입점이 존재하지 않는 1부터 시작해 보자. (1을 큐에 넣는다) 현재 큐에는 1만 있으므로 큐에서 1을 꺼내면 1이 가리키고 있는 2, 3이 후보가 된다. 2, 3 모두 앞의 순서가 1밖에 없다. 그러므로 2, 3 모두 방문이 가능하므로 큐에 2, 3을 넣는다. 다시 큐에서 2를 꺼내 2가 가리키고 있는 4, 5에 대해서 확인해 보면 5는 2 이외에도 3이 앞 순서로 있기 때문에 현재 작업할 수 없는 상태이..
AWS의 EC2를 사용하다 보면은 용량이 부족할 때가 있다. 이때 EC2의 용량을 늘리는 방법을 매번 찾아봐서 이번에 확실히 정리하려고 한다. 먼저 EC2에서 현재 용량을 알아보는 방법은 2가지가 있다. 1. AWS EC2의 대시보드에서 확인할 수 있다. 해당 인스턴스의 스토리지 탭으로 들어간다. 그러면 블록 디바이스 섹션에서 볼륨을 볼 수 있는데 여기에서 볼륨 크기 정보를 볼 수 있다 2. EC2에 접속해서 확인할 수 있다. EC2에 접속해서 df -h 명령어를 실행하면 Filesystem이 /dev/root인 부분에서 전체 크기와(size) 현재 사용량(Used) 남아 있는 용량(Avail)을 확인할 수 있다. df 명령어 리눅스 시스템 전체의 디스크 사용량을 확인할 수 있는 명령어이다 h 옵션 따로..
데이터를 수정하던 중에 이 모든 변경사항을 관리하는 방법은 없을까? 라는 의문이 들었다. 그래서 Aop, EventListener 등 생각을 해보고 관련 정보를 찾아보던 중 Hibernate의 envers라는 모듈을 알게 됐다. 정확히는 김영한님의 envers 모듈 세션을 듣게 됐고 해당 내용을 간략히 정리하려고 한다. 방법은 간단하다. 의존성을 추가하고 이력관리를 하고 싶은 Entity 위에 @Audited 어노테이션을 추가하면 된다. 예제를 통해서 좀 더 자세히 알아보자. Member 정보는 아래와 같다 create table member ( id serial primary key, name varchar ); @Entity @Builder @Getter @NoArgsConstructor(access..
업무를 진행하던 도중 QueryDsl에서 윈도우 함수(row_number)를 사용하려고 했다. 각 테이블의 정보는 아래와 같다 create table member ( id serial primary key, name varchar, team_id integer references team, created_at timestamp default now(), deleted_at timestamp ); create table team ( id serial primary key, name varchar ); 이때 QueryDsl에서 아래와 같은 코드를 실행하면 에러가 발생한다 public List getTeamMemberRows() { SimpleExpression rowNumber = SQLExpressions..
commit의 amend 옵션으로 마지막 커밋을 수정할 수 있다. 목표 이전 포스팅에서 했던 요청 사항을 이번엔 rebase -i 명령어가 아닌 cherry-pick으로 해결해 보자 $git checkout main $git cherry-pick C2 $git commit --amend #C2 커밋 내용을 수정한다 $git cherry-pick C3 커밋들 갖고 놀기 https://while-programming.tistory.com/138 https://while-programming.tistory.com/142 ref https://learngitbranching.js.org/?locale=ko
스프링에서는 트랜잭션을 사용할 때 @Transactional 어노테이션을 사용한다. @Transactional 어노테이션의 속성 중 propagation(전파) 이라는 것이 있는데, 이미 트랜잭션이 진행중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것이 전파 속성(Propagation)이다. 전파 속성에는 총 7가지가 옵션이 있는데 이에 대한 자세한 내용은 https://mangkyu.tistory.com/269 해당 블로그에 자세히 나와 있으니 참고하면 되겠다. 오늘은 이 중 Nested라는 옵션을 사용해보도록 하겠다. 위의 블로그에 나와 있듯이 Nested 옵션은 JPA에서 지원하지 않는다. 따라서 Jpa를 사용하지 않고 단순히 JdbcTemplate을 사용하면 될 것 같지만, 따로 설정을 해주..
- Total
- Today
- Yesterday