분류 전체보기154 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. [MockK] 인자 값 그대로 리턴하기 Mock 객체를 사용하다보면 JpaRepository.saveAll과 같이 입력값을 그대로 리턴해주고 싶은 경우가 생길 수 있다. 이 경우 returnsArgument를 사용하면 된다. interface TestTarget { fun function(arg1: Any, arg2: Any): Any } internal class MyRepositoryMockTest : DescribeSpec({ it(" returnsArgument 0은 첫번째 인자를 리턴한다") { // given val testTargetMock= mockk() // when every { testTargetMock.function(any(), any()) } returnsArgument 0 // then testTargetMock.f.. 2022. 4. 14. jabba global JDK 설정하기 jabba를 통해 설치한 JDK들 중 특정 버전을 사용할 때는 jabba use 커맨드를 사용하면 되지만 global JDK를 설정하기 위해서는 default alias를 걸어주어야 한다. 아래와 같이 openjdk 17, 11 버전이 설치되어있다고 했을 때 $ jabba ls openjdk@1.17.0 openjdk@1.11.0-2 17 버전의 JDK를 global JDK로 설정하고자 한다면 아래와 같이 default alias를 설정해주면 된다. $ jabba alias default openjdk@1.17.0 $ jabba current openjdk@1.17.0 $ java --version openjdk 17 2021-09-14 OpenJDK Runtime Environment (build 17.. 2022. 4. 9. 구글은 어떻게 일하는가를 읽고... 지금과 같이 소프트웨어가 세상에 영향을 미치는 영향이 큰 시기에 제품을 만드는, 특히 스타트업에서 제품을 만드는 소프트웨어 개발자로서 구글이라는 성공한 빅테크 기업의 방식을 엿보는 것은 매우 흥미로웠다. 책에서 다루는 주제가 매우 넓기도하고(심지어 퇴사 희망자를 다루는 방법까지...) 내용도 많다보니 모든 내용을 여기에 적을 순 없지만, 책 뒤표지에 있는 목록(긍정의 문화를 세워라, 폐쇄보다는 공개를 기본으로 설정하라, 배움을 멈추지 않는 사람을 채용하라, 고개만 끄덕이는 인형을 조심해라, 계급이 아니라 관계를 형성하라, 일단 내어놓은 다음 개선하라)만 보더라도 충분히 흥미롭고 우리 조직은 어떤지 생각해볼만한 내용들이고 구글이라는 기업이 어떻게 일하고 있고 어떤 사람을 뽑으며 어떤 정책을 가지고 있는지를.. 2022. 3. 20. Kafka의 정확히 한 번 전달(exactly-once delivery) 분산 시스템 환경에서는 특히 EDA(Event-Driven Architecture)를 갖는 시스템 환경이라면 Message Broker를 사이에 두고 각 서비스가 메세지를 주고 받을 것이다. 이러한 아키텍처는 결합도를 낮추는 측면에서 엔지니어링에 장점을 갖지만 그와 동시에 여러가지 풀기 힘든 숙제들이 생기게된다. 분산 시스템에서는 오직 2가지 문제 밖에 없다. 2. 정확히 한 번 전달 1. 보장된 메세지 순서 2. 정확히 한 번 전달 이 글에서 말하고 싶은 내용은 Exactly-once delivery, 즉 정확히 한 번 전달이다. 분산 시스템 환경에서는 정확히 한 번 전달은 불가능하다라는 주장의 글이 있다. https://bravenewgeek.com/you-cannot-have-exactly-once.. 2022. 3. 19. 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. 이전 1 ··· 11 12 13 14 15 16 17 ··· 26 다음