전체글139 돈(Money) 타입 1. 돈(Money) 타입으로 BigDecimal 사용 주문서 프로젝트에서는 돈(Money) 과 관련된 필드를 BigDecimal 타입으로 통일시켰다. 실제론 정수값이라 해도 돈은 중요하니까 별도의 타입으로 표현하고자 하는 의도가 담겨 있다. 또한 예전에 라인 서비스와 연동할 때 환전과 관련된 스펙이 있었는데 기존에는 Long 타입으로 돈을 다루고 있다 보니 소수점 화폐를 처리하기 위한 수정 범위가 너무 커 진행하지 못한 히스토리도 있었다. 그래서 이후에라도 비슷한 요구가 왔을때를 대비해 BigDecimal 타입으로 하는게 좋겠다는 의견도 반영된거다. BigDecimal 타입으로 금액을 비교하고 계산하기 위해서는 유틸리티 클래스를 만들어 사용하는게 좋다. 아래 코드는 0.0 과 0 을 비교하는 로직이다... 2023. 4. 29. DB mid 정리 logical data independence 에 대한 설명으로 적합하지 않는 것은? 1 1) Concerned with internal schema (v) 2) Concerned with conceptual schema 3) It is mainly concerned with the structure or changing the data definition 4) Modification at the logical levels is significant whenever the logical structures of the database are changed Conceptual schema 에 대한 설명으로 적절하지 않는 것은? 4 1) 전체적으로 통합된 데이터 구조이다. 2) 해당 기관이 필요로 하는 모든.. 2023. 4. 16. EDA 에서 NullPointerException 조심하기 spring application 내부에서 메세지를 직접 주고받지 않고, event 기반으로 kafka 를 통해 메세지를 주고받는다면 NullPointerException 을 특히 신경써야한다. 아래 그림은, onStartOrder 에서 주문이 시작되서 포인트적립 Command message를 kafka 에 발행하고 onReservePoint 에서 포인트적립 Command message 를 받아서 처리하는 프로세스다. 포인트적립 Command message 에는 pointReserveDto 가 담겨있다. 스펙이 변경되서 새로운 필드가 필요해졌다. 그래서 newObject 를 만들어서 추가로 전달해주고, 포인트적립을 수행하는 onReservePoint 에서 get 해서 사용하게 수정하고 배포했다. 여기서 .. 2023. 4. 15. java stream 으로 Map 다루는 방법 이전글 에서 java stream 으로 Grouping 하는 방법을 설명하면 중간에 map 을 이용하는 방법을 공유했다. 이 글에서는 다른 예제로 설명을 해보려고 한다. 먼저 product 와 item 구조는 아래와 같다. product 안에 item 들을 리스트로 가질 수 있다. @Value @Builder public class Product { long productId; List items; @Value @Builder public static class Item { long itemId; } } 외부 api 를 호출해서 여러개의 product 들을 가져온다고 해보자. 이때 item 을 다루기 위해선 이중 for 문이 필요하다. product 도 여러개인데 각 product 마다 item 들도 여.. 2023. 4. 6. 자기만의 트랙 예전에 인상깊게 읽었던 페북 글이 있었다. 회사 네임벨류가 내 실력이 아님을 꼬집는 글이었다. 나는 네이버라는 회사를 다닌다고 안주한적 없고 꾸준히 공부하며 나를 발전시켜왔다. 그럼에도 부족함을 계속 느껴 2년간 개인 수학과외도 받아보고, 새로운 팀으로 옮겨보는 등 다양한 경험들을 시도했다. 그래서 페북 글을 읽었을 때, 회사 간판에 취해있지 않았다는 자부심?은 있었다. 그러나 '나의 일을 나만의 언어로 설명' 할 수 있냐는 질문엔 자신있게 대답하지 못했다. 그래서 그때부터 더 열심히 회사에서 경험한 것들을 블로그에 정리하고 기록하고 있다. 정해진 기한을 맞추기 위해 빠르게 일을 쳐내다 보면, 전체를 보고 또 비즈니스 임팩트와 구조를 보면서 일하는것을 놓치기 쉽기 때문이다. 그리고 한번 정리한것으로 끝.. 2023. 3. 27. DID 스터디 3회차(kotlin let/run/also/apply/with) DID 안드로이드 앱개발을 위해 kotlin 을 다시 공부하는 중이다. let 확장함수 코드를 보고 이전에 배웠던 let/run/apply/also/with 들을 다시 정리했다. 그전에 코틀린에서 많이 보이는 함수 패턴 중 하나를 간단히 살펴보자. 아래 func 함수는 두개의 인자를 받는다. 1. Int 타입의 age 2. Int 를 받아 Unit 을 리턴(Void 리턴) 하는 process(함수 타입) process 변수에 담길 함수는 전달받은 age 만 출력하는 단순한 로직이지만 확장성 있는 구조를 보여준다. preProcess 와 postProcess 를 계속 재활용하면서 process 부분만 새롭게 바꿀 수 있다. @Test fun test1() { // 코틀린에서 많이 보이는 패턴 func(34.. 2023. 3. 18. 이전 1 2 3 4 5 6 7 ··· 24 다음