본문 바로가기

ETC28

다양한 Application Service 설계 방식들 한 서브 도메인의 기능을 담당하는 하나의 Service 클래스 가장 일반적인 방법으로 서브 도메인 관련 기능을 하나의 Service 클래스에서 처리하는 것이다. @Service class PostingService( private val postingRepository: PostingRepository, ) { @Transactional fun postPosting(command: PostPostingCommand): Posting { val posting: Posting = command.toEntity() return this.postingRepository.save(entity = posting) } @Transactional fun modifyPosting(command: ModifyPosting.. 2022. 8. 14.
직접적인 테스트와 간접적인 테스트 협업 중에 생긴 일화를 바탕으로 직접적인 테스트와 간접적인 테스트에 대한 개인적인 소견에 대해 적어본다. 테스트 코드를 작성하다보면 코드에 대한 테스트가 중복적으로 발생할 여지가 생길 때가 있다. 이 때 테스트를 어디에 짜는 것이 좋을까? 말로만 하면 애매하니 간단한 예제를 들어보자. 우리가 쓰는 신용카드, 체크카드는 유효기간(년, 월)을 갖고 있다. 그리고 해당 유효기간과 동일한 년, 월 까지는 카드가 유효하다. (e.g. 유효기간이 2022년 1월 이라면, 2022년 1월 31일 까지는 해당 카드는 유효하며, 2월 1일 부터는 만료된 것이다) 이 정보를 간단한 엔티티와 엔티티에 대한 정보를 담는 DTO 코드로 옮겨보자. import java.time.LocalDateTime import java.ti.. 2022. 5. 8.
Github Actions actions/setup-java /usr/bin/tar 실행 오류 Java/Kotlin 프로젝트를 빌드할 때 사용하는 Java 환경을 셋업하기 위해 사용되는 Github Actions의 actions/setup-java 사용 중에 다음과 같은 오류를 만났다. 이 오류는 붉은 색으로 칠해진 Error 로그를 볼게 아니라 그 위에를 봐야한다. 29번 째 라인을 보면 checksum이 맞지 않다는 오류 로그를 확인할 수 있는데, actions/setup-java의 cache 기능과 관련하여 발생한 오류이다. 관련하여 actions/setup-jave Github issue가 올라온 것을 확인할 수 있었다. https://github.com/actions/setup-java/issues/305 Fail to setup java in PR checks due to bad che.. 2022. 4. 15.
Double Dispatch를 통해 유연하게 확장하기 (해당 내용은 토비님의 유튜브영상을 정리한 것임을 알립니다) GoF Design Pattern 에 행동 관련(Behavioral) 패턴 중 Visitor Pattern이 있는데 이 패턴을 알기 위해서 Double Dispatch 기법을 알면 보다 쉽게 이해할 수 있다. (사실 상 Visitor Pattern의 기반이 Double Dispatch 기법이다) Double Dispatch 기법은 말 그대로 디스패치를 두 번 한다는 것인데, 다형성을 통한 유연성은 높이되 각 구현체에 대해 특화된 로직을 적용해야하는 경우에 사용할 수 있다. 코드로 Double Dispatch에 대해 알아보자. 예제 코드 예제는 SNS에 Post를 올리는 간단한 코드이다. interface SNS { fun getName(): .. 2022. 2. 10.
Arrow Core: Tutorials - Functional Error Handling (작성 중) Functional Error Handling 함수형 에러 핸들링 https://arrow-kt.io/docs/patterns/error_handling/ Λrrow Functional companion to Kotlin's Standard Library arrow-kt.io When dealing with errors in a purely functional way, we try as much as we can to avoid exceptions. 순수한 함수형 방식으로 에러를 처리할 때, 예외들을 피할 수 있게 최대한 노력한다. Exceptions break referential transparency and lead to bugs when callers are unaware that they may.. 2021. 12. 31.
Graph Number of Islands 이 문제는 크게 2가지 흐름으로 처리한다. 첫 번째는 grid의 모든 cell을 scan 하면서 땅(1)을 찾는 것이다. 그리고 땅이 나오면 인접한 땅이 있는지를 확인하고 해당 땅이 속한 섬을 확인한다. 아래 좀 더 자세하게 설명한다. 먼저 땅을 발견하면 확인한 땅이라고 체크를 하기 위해 해당 cell의 값을 2로 변경한다. 그리고 해당 cell과 인접한 cell에 땅이 있는지를 확인한다. 이를 상좌하우 순으로 확인한다고하면 위쪽 cell은 grid 범위를 벗어나고, 왼쪽 cell은 땅이 아니다. 아래 cell은 땅이므로 해당 cell을 확인된 땅이라고 체크한다. 그리고 새로 확인된 땅이라고 체크해놓은 cell 인접 해당 cell의 윗 cell은 확인된 땅이므로 다시 작업.. 2021. 6. 4.