본문 바로가기

ETC33

직접적인 테스트와 간접적인 테스트 협업 중에 생긴 일화를 바탕으로 직접적인 테스트와 간접적인 테스트에 대한 개인적인 소견에 대해 적어본다. 테스트 코드를 작성하다보면 코드에 대한 테스트가 중복적으로 발생할 여지가 생길 때가 있다. 이 때 테스트를 어디에 짜는 것이 좋을까? 말로만 하면 애매하니 간단한 예제를 들어보자. 우리가 쓰는 신용카드, 체크카드는 유효기간(년, 월)을 갖고 있다. 그리고 해당 유효기간과 동일한 년, 월 까지는 카드가 유효하다. (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.
MSA 기반 환경에서의 인증과 인가 - 3. 토큰 탈취 대처 Session이 아닌 JWT 기반의 토큰을 사용하여 보안을 처리하는 경우 토큰 탈취에 대한 이슈에 민감하며 이에 대해 충분한 대처가 필요하다. (단지 토큰 사용 시 뿐만아니라 모든 보안 이슈는 민감하게 다뤄져야한다) 이번 포스팅에서는 서버 입장에서 토큰 탈취 시 어떤 식으로 보안 이슈를 최소화할 수 있을 지에 대해 고민하고 적용한 것에 대해 정리해본다. Access Token 탈취 Access Token을 통해 직접적으로 요청에 대한 인가 처리를 수행하기 때문에 이 토큰이 탈취되면 꽤나 치명적이다. 또한 서버에서는 왠만하면 인증(로그인)이 완료되면 Access Token을 발급은 해주지만, 발급된 Access Token의 유효성을 관리하기 위해 DB에 저장하지 않을 것이다. (사용자 보안에 대해 하나하나.. 2021. 5. 29.