전체 글 (5) 썸네일형 리스트형 커밋 메시지의 test는 왜 '누락된' 테스트일까? (feat. TDD) AngularJS Git Commit Message Conventions을 보면 commit 메시지의 type에 대한 설명에서, test에 대해 when adding missing tests 라고 설명한다. 왜 그냥 테스트를 추가할 때가 아니라, 놓친, '누락된' 테스트를 커밋할 때 쓰라는 걸까? 이 의문은 처음 본 순간부터 계속되어 왔지만, 많은 사람들이 여전히 test를 그냥 써오기에, 의문을 해결하진 못했다. 하지만 최근에 켄트 벡의 「 Test-Driven Development: By Example」을 읽으며 이 진짜 의미를 알게 되었다. 아직 완독하진 못했지만, TDD의 고전인 이 책을 읽으며 느낀 TDD의 진정한 의미에 대해 이야기를 해볼까 한다.TDD가 뭔데? 그냥 테스트 먼저 짜는 거 아냐.. [Java] 정규 표현식을 알아보자 들어가기 전에, 이 글에서 쓰고 있는 용어를 잠시 정리하겠다.매칭, 매치: 문자열의 일치를 검사하는 것메타문자: 그 문자 자체가 아니라 별도의 의미를 가지는 문자 (ex) . → 임의의 한 문자, * → 0회 이상 반복)이스케이프 문자: 메타문자나 특수 문자를 그 자체 문자로 쓰게 하거나, 직접 입력하기 어려운 문자를 쓰게 해주는 문자 → \ 라고 보면 된다.그럼 바로 가보자.java.util.regex정규 표현식으로 지정된 패턴을 기준으로 문자 시퀀스를 매칭하기 위한 클래스들을 모은 패키지이다.말이 한번에 와닿진 않지만, 각 클래스에서 자세히 알아보면 이해가 될 것이니 이해가 안 된다고 너무 걱정 말자. Java에서 정규식을 사용하면 많이 보게 되는 Pattern 클래스와 Matcher 클래스가 이 패.. [AWS] RDS 프리티어로 과금 없이 배포하기 최근 AWS 프리티어로 배포를 하여 프로젝트를 진행하고 있는데, 자꾸 어디선가 과금이 나왔다. 청구서를 확인해보니, VPC에서 나오는데 원인을 알 수 없었다. 나중에 구글링으로 알아낸 결과 RDS의 퍼블릭 IP를 사용하면 해당 요금이 나올 수 있단다. EC2는 퍼블릭 IP에 대해서 프리티어 지원이 되지만, RDS는 그렇지 않았던 것... 그럼 원인을 알았으니 이제 진짜 과금 없는 RDS 배포를 해보자. RDS 생성하기 원하는 데이터베이스 선택해주고, 프리티어 선택해준다. db 이름 설정해주고, 자체 관리를 선택한 후 db 접속할 때 암호를 설정해준다. 여기의 경우 스토리지 자동 조정 활성화를 꺼서 과금이 나올 가능성을 차단하기도 하던데, 과금을 없게 하는 게 목표이긴 하지만, 서버가 먹통이 되느니 .. [AWS] EC2 + ALB + Route 53으로 HTTPS 배포하기 개인적으로 뜻 맞는 사람끼리 모여 프로젝트를 하다 보면 백엔드는 직접 자신이 개발한 서비스를 배포해야 하는 일이 생긴다. 특히 HTTPS는 쿠키를 사용할 때 필수인데, 처음 하는 과정에서 많이 헤맨 기억이 있어서 초보자들에게 도움이 조금이나마 되길 바라며 이 글을 적어본다. 따라서 이 글의 최종 목표는 이렇다.1. AWS의 프리티어를 최대한 활용해서 과금 최소로 만들기2. EC2 + ALB + Route 53 + Docker를 사용하였을 때 헷갈릴 수 있는 부분(이라고 적고 내가 헤맨 부분이라 읽는)들을 세세히 담기3. 안 되면 될 때까지 다시 하자! 마인드 갖기 Route 53에 구매한 도메인 등록하기 우선 도메인을 가장 먼저 사준다. 도메인의 경우 DNS 전파 때문에 모든 셋팅을 하고도 2일 정도 걸.. [JPA] N+1 문제 해결 여정(feat. @OneToOne 매핑 관계) 문제 상황도서를 관리하고 예약하는 시스템이었고, S3를 사용해서 모든 이미지를 관리했기 때문에 BookImage 엔티티와 Book 엔티티가 1:1 관계임에도 테이블을 분리하고, 양방향 매핑을 했다. Book 엔티티 내의 BookImage 엔티티 연결@OneToOne(mappedBy = "book", cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = false)private BookImage bookImage; BookImage 엔티티 내의 Book 엔티티 연결@OneToOne(fetch = FetchType.LAZY)@JoinColumn(name = "book_id")private Book book; 그리고 예약 조회 api를 만드는데, N+.. 이전 1 다음