들어가기 전에 Getting Started | Spring Boot Docker The Spring Boot Maven and Gradle plugins use buildpacks in exactly the same way that the pack CLI does in the following examples. The resulting images are identical, given the same inputs. Cloud Foundry has used containers internally for many years now, an spring.io 이 글은 Spring 공식 문서의 Topical Guides - Spring Boot Docker를 번역하였습니다. 간단한 Dockerfile Spring..
JUnit에는 Parameterized Test라는 것이 있다. 이걸로 같은 테스트에 대해 여러 개의 input으로 테스트를 진행할 수 있다. Kotest에서는 어떻게 할까? https://kotest.io/docs/framework/datatesting/data-driven-testing.html Introduction | Kotest Before data-driven-testing can be used, you need to add the module kotest-framework-datatest to your build. kotest.io Data Driven Testing 이라는 이름으로 제공하고 있다. internal class EmailInfoTest : BehaviorSpec({ Given(..
지금껏 공부 & 개발을 해오며 고민하고 있는 것들이 많이 있다. 간간히 한번씩 쫙 나열을 해놓으면 공부 방향성을 재고해볼 수도 있고 나중에 봐도 재밌을 것 같다는 생각이 들어 짤막히 정리해본다. 고민 객체지향 & 도메인 주도적인 설계 여러 도메인을 아우르는 구현부의 패키지 위치 프로젝트의 유스케이스들을 코드로 옮겨내다보면, 여러 도메인을 가져와서 활용해야하는 상황이 많다. (예시: 게시글을 삭제하기 위해선, 해당 게시글의 정보 (게시글 도메인)와 요청자 (유저 도메인)의 정보를 확인해야 한다) 그렇다면 이런 로직을 담아낸 클래스는 이름을 어떻게 짓고, 어느 패키지에 위치해야 할까? '게시글 삭제'의 유스케이스니 ArticleService에 위치해야 하는걸까. 그런 식으로 구현하다보면 결국 이 Servic..
플라이웨이트 패턴의 개념플라이웨이트 패턴 (Flyweight Pattern)은 공유를 위해 사용되는 패턴으로, 객체를 재사용해서 메모리를 절약하기 위한 목적의 디자인 패턴이다. 이 때 객체는 재사용되어야 하므로 공유되는 객체는 불변이어야 한다. 불변 객체가 아니라면 어떤 코드가 플라이웨이트 객체를 임의로 수정했을 때 그 객체를 공유하고 있는 다른 코드에 영향을 미치기 때문이다. (이는 싱글톤과도 비슷하다) 시스템에 많은 수의 동일한 불변 객체가 있다면 이 패턴을 사용해서 객체를 플라이웨이트로 설계하고 메모리에 하나의 인스턴스만 보관하여 메모리를 절약할 수 있다. 꼭 동일한 객체가 아니더라도 유사도가 높은 객체에 대해 동일한 필드를 추출해서 플라이웨이트로 설계할 수도 있다. 이 때 변하지 않는 불변 속성은..
어댑터 패턴의 개념 한국에서 사용하던 플러그를 외국에서도 사용하려면 플러그 모양을 바꿔주는 어댑터가 필요하다. 이와 비슷하게, 디자인 패턴에서의 어댑터 패턴도 어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할을 한다. 어떤 새로운 라이브러리를 사용해야 하는데 그 인터페이스가 기존의 인터페이스와 다를 경우, 새 인터페이스를 기존의 인터페이스에 적응시켜주는 클래스를 만들면 된다. 클래스 어댑터와 객체 어댑터 어댑터 패턴에는 클래스 어댑터, 객체 어댑터라는 두 가지 방식이 있다. 클래스 어댑터는 상속 관계를 사용한 방식이고, 객체 어댑터는 합성 관계를 사용한 방식이다. 헤드퍼스트 디자인 패턴에도 나오는 유명한 예시인, Duck과 Turkey의 예제로 설명해보겠다. 합성 기반의 객체 어댑터 int..
느낌 벌써 3주차도 끝났고 마지막 4주차만 남았네요. 정말 많은 리뷰를 남겼고, 덕분에 깃허브 팔로우를 해주신 분도 ㅎㅎ 생겼습니다. 연속으로 저에게 리뷰를 부탁드리는 분들은 저도 뭐랄까 내적 동질감이 생겨서 최대한 더 열심히 리뷰해드리고 도움될만한 글들을 남기려고 노력하게 되네요. 서로 잘 됐으면 좋겠단 마음입니다. 우연한 만남 그리고 사실 제일 신기한 것이, 예에에엣날에 초등학생 때 (12년? 전) 블로그를 할 때 가장 친했던 서로이웃 분과 우테코에서 만났습니다. 헉! 사실 원래 코딩을 한다는건 언젠가 어렴풋이 봤었는데, 이렇게 우테코에서 만나게 될 줄은 몰랐습니다. 굉장히 굉장히 반가웠습니다. 우테코 프리코스 3주차 미션 3주차 미션은 로또입니다. 2주차는 확실히 쉬웠고, 덕분에 빨리 끝냈었는데 이..
우테코 3주차 미션 [로또]를 하다가 마주한 요구사항이었다. 사용자가 잘못된 값을 입력할 경우 `IllegalArgumentException`를 발생시키고, 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다. 예제와 함께 구현해보기 간단한 예제를 들어보자. 다음과 같은 함수들을 만들어야 한다고 하자. 0 이상의 양수를 입력받는 getTryCount() 1과 45 사이의 숫자를 중복 없이 6개 받고, 보너스 번호도 받는 getLottoNumber() 그 외 등등 다른 input 함수들 간단히 만들어보기 getTryCount 만들어보기 일단 올바른 값이 들어올 때까지 무한해서 입력을 다시 받아야하니, while + if - break의 조합으로 만들어야 할 것이다. 그리고 잘못된 값이 발생하면 에외를..
느낌 우테코 디스코드 2주차도 엄청 빠르게 지나갔습니다. 1주차를 완료한 이후, 우테코 디스코드에 참여하지 않았다는 사실을 알게되고 디스코드에 참가했습니다. 사람들 엄청 활발하더라구요. 지난 주차 과제를 서로 리뷰하는 활동들이 되게 활발하게 진행되고 있길래, 저도 참여했습니다 그리고.. 엄청나게 많은 리뷰를 하게 될 줄은 이 때는 몰랐습니다. 정말 메일이 엄청나게 왔습니다.. 리뷰 한 명치 하고 나면 메일이 10개 와있고.. 10개 메일 다 확인하면 또 5개 와있고.. 미친듯이 보느라 하루에 여유 시간이 없었네요. 하지만 그래도 이런 DM도 받아보고, 리뷰 받으신 분들이 좋은 말 해주셔서 좀 보람이 있었던 것 같습니다. TDD 우테코의 미션들은 정말 의식적으로 TDD로 작업하려고 마음을 먹고 있습니다. ..
들어가기 앞서 본 포스팅은 해당 글을 번역 한 글입니다. 어느 정도의 의역이 있을 수 있습니다. https://thenewstack.io/unit-tests-are-overrated-rethinking-testing-strategies/ Unit Tests Are Overrated: Rethinking Testing Strategies A successful and continuous testing strategy demands a careful balance between various types of tests. This article explains how. thenewstack.io 단위 테스트는 과대평가되었습니다: 테스트 전략 다시 생각하기 성공적이고 지속적인 테스트 전략을 위해서는 다양한 유형..
서론 예.. 어쩌다보니 우테코를 하게 되었습니다. 원래는 재직 경험이 있는 사람은 안 뽑는 거로 알고 있었는데, 이번에 보니까 재직 경험이 있는 사람도 뽑기는 하더라구요. 아직 3학년이니 졸업까지는 1년 남기는 했지만, 동기 분께서 올해도 내년도 안 될 수도 있는데 매년 도전해봐야지 라고 하셔서 저도 그 말에 확신을 얻고 지원했습니다. 좀 뭐하긴 하지만 우테코 분들이 짜시는 코드를 요새 많이 참고를 하고 있습니다. 우테코에선 이런 식으로 프로젝트를 진행하는데, 그 프로젝트의 코드들이 굉장히 수준급이더라구요. https://github.com/woowacourse-teams/2023-team-by-team/tree/develop GitHub - woowacourse-teams/2023-team-by-tea..