2022-02-21-TIL TIL Today I Learned 레거시에서 리팩토링 및 Hotfix 수정하기 아주 복잡하게 짜여진 레거시에서 hotfix를 수정한다거나 리팩토링을 한다는 것은 거의 폭탄제거 혹은 수술 집도와 같은 일이다. 테스트가 없는 코드는 어디를 건드렸을 때 무엇이 깨지는지 알 수 없기 때문이다. 그래서 hotfix는 변경 범위를 최소로 잡고, 리팩토링은 동작을 ... 2022/02/21 2022-TIL
2022-02-19-TIL TIL 2022-02-19-TIL Today I Learned 실무에서 외래키를 사용하지 않는 이유 외래키 사용 안 하는 이유는 여러가지 있을 수 있는데, 성능면에서도 불리하고 안정성 측면에서도 불리하다. 최신의 애플리케이션에서는 제약조건 관련해서 검증하는 로직을 이미 수행하므로 DB에서 굳이 걸어놓지 않고 애플리케이션에서 코드로 관리한다. 이전에는 ... 2022/02/19 2022-TIL
2022-02-18-TIL TIL 2022-02-18-TIL Today I Learned e.printStackTrace() 하는것이 바람직한가? Foreign Key 를 두지 않는것의 장단점 장점 테이블 구조변경이나 여러가지 작업이 쉽다. (외래키 제약조건 때문에 테이블 구조변경이 까다로워질 수 있다.) 표면상으로는 데이터 제약조건 관련 에러가 발생하지 않는다. 단점 ERD... 2022/02/18 2022-TIL
2022-02-17-TIL TIL 2022-02-17-TIL Today I Learned Test Coverage 테스트 커버리지는 소프트웨어의 기능적인 품질을 보장하는 테스트 타입이다. 이는 요구사항 명세서나 다른 요구되는 문서들을 포함한다. 테스트 커버리지도 코드 커버리지와 마찬가지로 몇가지 테스팅 메커니즘이 있다. 그러나 어떤 테스트 적용 범위가 중요한지는 비즈니스 제안서를... 2022/02/17 2022-TIL
2022-02-16-TIL TIL 2022-02-16-TIL Today I Learned jdk.incubator.httpclient -> java.net.http 자바 11버전 이후부터는 http 관련 모듈의 패키지 네이밍이 바뀌었다. 정확히는 JEP 321이 Java 11에서 HTTP Client API를 표준으로 만든 것이다. JDK 9(JEP 110)에서 인큐베이터... 2022/02/16 2022-TIL
2022-02-15-TIL TIL Today I Learned UPSERT (없으면 INSERT 있으면 UPDATE) UPSERT는 UPDATE와 INSERT를 합친 말로, 같은 키의 행이 없으면 새로 넣고 있으면 고치는 동작이다. 구현 방법은 크게 세 가지다. 단일 쿼리 쿼리 하나로 다음과 같이 구현할 수 있다. MySQL의 INSERT ... ON DUPLICATE KEY ... 2022/02/15 2022-TIL
2022-02-14-TIL TIL 2022-02-14-TIL Today I Learned Diagram 설계를 설명할 때 쓰는 UML 다이어그램의 종류를 정리한 글이다. 사용자와 시스템이 주고받는 기능을 보여 주는 유스케이스 다이어그램, 클래스와 그 관계(상속, 연관, 의존)를 보여 주는 클래스 다이어그램, 처리 흐름과 분기를 보여 주는 액티비티 다이어그램, 객체 사이의 메시지 ... 2022/02/14 2022-TIL
2022-02-13-TIL TIL Today I Learned Helper Class Wikipedia의 정의에 따르면 헬퍼 클래스는 애플리케이션이나 그 클래스의 주목적은 아니지만 필요한 기능을 도와주기 위해 만드는 클래스다. 모든 메서드가 static이면 유틸리티 클래스라고 부르고, 이는 헬퍼 클래스의 특수한 경우다. 헬퍼 클래스는 인스턴스 변수를 가질 수 있고 여러 인스턴스가 ... 2022/02/13 2022-TIL
2022-02-11-TIL TIL 2022-02-11-TIL Today I Learned Java Logging 어느 부분에 로그를 남기는 것이 좋을까? 주로 예외나 에러가 발생할만한 곳, 크리티컬한 곳, 입출력을 받는 곳 등이 있을 것이다. 링크된 글들이 공통으로 권하는 원칙은 다음과 같다. 구현체에 직접 의존하지 않고 SLF4J 같은 로깅 퍼사드를 쓴다. Spring... 2022/02/11 2022-TIL
2022-02-10-TIL TIL Today I Learned 시퀀스 다이어그램 시퀀스 다이어그램은 UML 다이어그램 중 하나로, 객체(참여자)들이 시간 순서대로 어떤 메시지를 주고받는지를 그린다. 가로축에 참여자를 나열하고, 세로축을 시간으로 삼아 위에서 아래로 메시지를 화살표로 잇는다. 클래스 다이어그램이 “무엇이 있는가”를 보여 준다면 시퀀스 다이어그램은 “어떤 순서로 호출되... 2022/02/10 2022-TIL