본문 바로가기

분류 전체보기

(26)
Effective Java in Kotlin [item 1]. Consider static factory methods instead of constructors 꽑하~ 오랬만입니다~ 요즘 많은 일들이 있어서 블로깅과 공부가 많이 늦춰졌습니다. 미뤄진 공부들이 많군요.. 명서인 [이펙티브 자바]를 코틀린과 관계를 정리한 흥미로운 블로그를 엉덩이로 번역해보았습니다.(발번역 주의) Kotlin In Action이나 빨리 정리할 것이지... Companion factory method 코틀린에서는 static 메서드를 허용하지 않는다. 코틀린에서 자바의 static factory method와 비슷한 것은 일반적으로 companion factory method로 불려진다. companion 객체로 바뀐 factory method를 보자 사용법은 static factory method와 같다. (Under the hood - 자동차 후드 아래에서 벌어지는 일이라는 의미...
코틀린 + 스부 validation feat. messages.properties setting Spring Boot 는 “src/main/resources/messages.properties” 를 찾았을 때 자동으로 MessageSource를 구성해준다. 프로퍼티를 찾아서 빈으로 등록해주지만, Validation메세지 설정은 해주지 않는다. @Configuration 클래스에서 아래 설정으로 빈등록해줘야함 코틀린에서 생성자에 validation 어노테이션을 사용할 때, @field:~, @get:~ 로 접근해야 한다. → @field:~ 컴파일 후 어노테이션이 붙는 위치는 = 필드 → @get:~ 컴파일 후 어노테이션이 붙는 위치는 = Getter 코틀린은 자동으로 생성해주는 코드들(field, getter/setter, ~Contructor)를 자동으로 만들어주는 동작을 하면서 어디에 어노테이션..
DDD(DataBase Driven Development) 에서 DD(Domain Driven Development) 아무것도 모르는 꽑꽑이의 좌충우돌 우당탕탕 DDD MSA와 DDD는 같이 소개가 많이 된다. 'DDD는 복잡한 마이크로 서비스를 구현할 때만 적용한다. CRUD 서비스처럼 더 간단한 업무는 더 간단한 벙법으로 관리할 수 있다'(https://ducktyping.tistory.com/14) 라고 DDD를 소개하는 글도 있지만, DDD는 MSA뿐만아니라, OOP를 사용하는 프로그램에서도 가치있다고 생각한다. 여기서 잠깐 그렇다면 OOP에서 이제까지 아무 생각없이 뚜둘겼던 그 디자인은 무엇일까? DDD랑 무슨 차이일까? OOP 하면서(제대로 한지도 모르겠지만,..) 내가 그래왔고, 내가 일해왔던 회사들도 그렇고, DDD를 빠삭하게 이해하고 도입하지 않은 대부분의 회사에서 코드들은 Strategic Design..
이벤트 스토밍과 DDD(Domain Driven Design) 참고 사이트 - https://engineering-skcc.github.io/microservice%20modeling/Event-Storming/ 마이크로서비스 모델링 ④ : 이벤트 스토밍을 통한 마이크로서비스 도출 DDD의 전략적 설계를 쉽고 빠르게 진행할 수 있는 이벤트 스토밍을 통한 마이크로서비스 도출 워크샵에 대해 알아보자. engineering-skcc.github.io - https://ducktyping.tistory.com/14 DDD 지향 마이크로 서비스 디자인 DDD를 배우기 시작한 꽑꽑이가 정리한 우당탕탕 정리입니다. 글 아래에 참고 사이트, 문서를 정리해두었으니 참고해주세요. DDD(Domain Driven Development)는 사용 사례와 관련하여 현실의 비즈니스에 duck..
숫자계산은 BigDecimal로 하라구욧! feat. Kotlin Java와 내용은 일맥 상통합니다! 예제코드는 코틀린 - Gradle - JUnit5를 사용했습니다 BigDecimal을 사용해야 하는 이유 소수점을 저장하는 float과 double은 소수점의 정밀도가 완벽하지 않아 값의 오차가 생길 수 있다. 그 이유는 내부적으로 수를 저장할 때 이진수의 근사치를 저장하기 때문이다. 그렇기 때문에 미세한 숫자의 변동도 허용하지 않는 돈계산과 소수점을 다룬다면 BigDecimal을 사용해야 한다. BigDecimal은 속도는 느리지만 숫자가 어긋날 가능성을 미연에 방지할 수 있다. BigDecimal 사용하기 BigDecimal을 사용핼 땐, 문자열을 인자값으로 넘겨줘여 한다. double을 넘겨주면 double의 이상한 근사치값을 그대로 사용한다. BigDecimal..
Git Basic - Local Life Cycle Git... 잘씁시다.. https://git-scm.com/book/en/v2 Git - Book git-scm.com git 공홈에서 무료로 제공되는 Pro Git 읽기 📖 https://opentutorials.org/module/2676/15242 버전관리의 본질 - 지옥에서 온 Git 저는 기술에는 본질과 혁신이 있다고 생각합니다. 그 기술의 모든 제품이 공통적으로 가지고 있는 특성이 본질이고, 특정 제품이 가지고 온 변화가 혁신이라고 생각합니다. 본 토픽의 하위에서 opentutorials.org 오픈튜토리얼스 강의를 듣기 꽑꽑이의 저세상 정리 시작 Git Life Cycle working space 개념 .git 이있는 폴더를 기준으로 working space로 잡힌다. .git은 커밋, 캐..
Mocks Aren't Stubs! Mock과 Stub 에대하여 class OrderStateTester... public void testOrderSendsMailIfUnfilled() { Order order = new Order(TALISKER, 51); MailServiceStub mailer = new MailServiceStub(); order.setMailer(mailer); order.fill(warehouse); assertEquals(1, mailer.numberSent()); } 마팅 파울러 아저씨의 Mocks Aren't Stubs 기준으로 엉덩이로 정리해봤습니다. (영어 못해요) 맨 아래 원문 사이트를 참고해주세요 Mock 객체가 어떻게 동작하는지, 동작 검증을 기반으로 테스트를 이끄는 방법, Mock 객체를 이용해 다른 스타일의 테스트와 함께..
JPA/Hibernate Cascade Types JPA/Hibernate에서 Cascade가 무엇인지 알아보자! Cascading 이란? 엔티티 관계는 종종 다른 엔터티의 존재에 의존한다. 예를 들어, Person 엔티티 없이, PersonInfo 엔티티는 어떤 의미가 없다. Person 엔티티를 지울 때, PersonInfo 엔티티 역시 지워져야한다. 캐스케이딩은 이것을 위한 방법이다. 특정 엔티티에 어떤 작업을할 때, 같은 작업이 관련 엔티티에도 적용된다. JPA Cascade Type 모든 JPA 구현체들의 캐스케이드 연산자는 javax.persistence.CascadeType 이넘으로 표현된다. 항목은 다음과 같다. ALL PERSIST MERGE REMOVE REFRESH DETACH Hibernate Cascade Type Hibernat..