전체 글

다양한 경험을 기록해요
· TIL
오늘 한 일 알고리즘 문제 1개 풀었다. Spring boot에서 redis를 사용하는 방법을 공부했다. 조금 더 공부하고 정리해서 글을 써야겠다. 데이터 중심 애플리케이션 설계 책을 샀다. 이제 CRUD는 좀 익숙해진 것 같아서 다른 기술들과 더불어 설계 방법도 배워야 할 필요성이 느껴졌다. 이 책도 읽으면서 인상깊은 내용은 블로그에 공유해야지.
· Tool/Spring
Bean validation에서 기본적으로 제공하는 기능 이상으로 유효성 검증을 해야한다면 커스텀 어노테이션을 만들어서 검증할 수 있다. 커스텀 어노테이션 이외에 검증하는 방법은 여러가지가 있지만, 나는 컨트롤러나 서비스 레이어에서 검증 메서드를 계속 호출하는 것이 메서드의 핵심 코드를 읽기 불편하게 만든다고 생각하기 때문에 DTO의 검증은 DTO 레이어에서 처리하는게 좋다고 생각했다. 나와 비슷한 생각이신 분들을 위해 커스텀 어노테이션과 검증 클래스로 분리해서 DTO 유효성을 검사한 방법을 공유한다. 회원가입 DTO 코드 @NoArgsConstructor @AllArgsConstructor @Getter @ValidSignUpRequest // Dto에 대한 검증은 Dto에서 처리하자 public cl..
· Tool
Docker 사용하면서 기록하는 명령어 복기용 메모장. docker run -p 5432:5432 -e POSTGRES_PASSWORD=비밀번호 -e POSTGRES_USER=유저이름 -e POSTGRES_DB=DB이름 --name 컨테이너이름 -d postgres docker exec -i -t postgres_boot bash su - postgres psql --username 유저이름 --dbname DB이름 \list (데이터 베이스 조회) \dt (테이블 조회) docker run docker run => 새로운 Docker 컨테이너를 생성하고 실행한다 -p 5432:5432 => 호스트의 5432 포트와 컨테이너의 5432 포트를 연결한다 -e => 환경변수를 설정한다. 뒤에 따라오는 POS..
· Tool
M1 Mac에 Docker Desktop 설치하고 환경 변수에 추가했다. 공식 홈페이지에서 Docker.dmg 파일을 다운로드 받아서 설치했는데, 환경 변수는 자동으로 안 잡아주더라~ 좀 찾아보니 /Applications/Docker.app/Contents/Resources/bin 경로에 있었다. 스크립트로 환경 변수에 추가해주자. echo 'export PATH="/Applications/Docker.app/Contents/Resources/bin:$PATH"' >> ~/.zshrc source ~/.zshrc 아래와 같이 실행된다.
· TIL
어제 깜박하고 한 일 정리를 안했다 ㅋㅋ... ㅠㅠ 오늘 한 일 DBMS의 트랜잭션은 어떻게 구현되었는지 공부했다. 정리해서 글 써야지.. 알고리즘 문제 1개 풀었다.
· Tool/Spring
멀티미디어 파일을 포함한 글 작성 요청을 처리하는 서버를 개발할 때, 파일 저장소로 AWS S3를 사용하고 있다고 가정하자. 만약 글 작성 요청을 처리하는 중에 서버에 장애가 발생하여 요청이 중단될 경우, 트랜잭션이 실행 결과를 롤백할 때 외부 서비스인 S3의 작업은 함께 롤백되지 않는다. 그렇다면 어떻게 S3의 작업을 롤백해야 할까? 고민하고 검색해서 여러 가지 방법을 찾아봤다. 내가 작성한 메서드의 초기 형태는 아래와 같은 형식이다. S3에 이미지 파일을 올리는게 비즈니스 로직 사이에 있다. @Transactional public PostResponseDto createPost( MultipartFile[] images ) { // 불필요한 코드 지움 Post savedPost = postReposi..
도_유
대도유서관