1. Rx에 대한 공부 일단 중지! 최근 약 한달 가량 틈틈히 Rx에 대한 공부를 지속해왔다. 결론부터 말하자면 당분간은 Rx가 아닌 다른 공부에 집중해야 할거 같다. 물론 Rx 자체도 쓰임새가 무척 좋은 생태계라는 점은 부정 할 수 없다. 하지만, 당장 모자란 기본에 대한 공부나 업무와 관련된 학습에 좀 더 투자하는 것이 앞으로 더 크게 도움이 되리라 생각했다. 그만 두는 이유를 간단하게 써보면 아래와 같다. RDB에 대한 지원 부실, 추후에 R2DBC에 대한 생태계가 충분하게 확보되면 그때 시작해도 늦지 않다고 생각했다. Kotlin Coroutine으로도 Rx에서의 처리를 충분히 보완할 수 있다! 역시 비동기와 관련된 코드는 async~await가 최고가 아닐까라고 생각한다. coroutine 자체..
mapStruct Summary & Why? 타입 세이프하게 bean 매핑을 도와주는 어노테이션 프로세서 보통 JPA 기반의 어플리케이션을 개발하게 되면 만나게 되는 DTO 변환 작업은 대부분이 반복적인 작업이 대부분 ModelMapper와 같은 매핑 구현체가 존재하지만, ModelMapper의 경우 리플렉션 기반으로 동작하기도 하고 퍼포먼스에 대한 이슈가 많은편 도메인 객체를 풍부하게 사용하면서, 반환 데이터가 달라지게 될 경우 이를 적절하고 큰 힘을 들이지 않고 매핑할 수 있도록 도와주는 것이 바로 mapStruct mapStruct 역시 메뉴얼에서 확인할 수 있듯이, 편하게 사용하려면 어느정도의 학습 기간을 거쳐야 편하게 사용할 수 있는듯하다. Simple Usage 개발 환경 Kotlin 1.3...
1. RxJava 리액티브 프로그래밍 읽기/실습 4장, RxJava 연산자 RxJava와 RxKotlin는 Reactive Stream 구현체에 해당하는 Flowable과 Observable을 생성할 수 있는 다양한 연산자를 제공하고 있는데, 생성하는 연산자뿐만 아니라 변환, 필터, 결합, 상태 통지, 집계 등의 다양한 연산자를 제공하고 있다. 다양한 연산자는 메서드 체인(MethodChain) 혹은 FluentAPI 방식으로 실제 소비자에게 전달해야 하는 최종 형태의 데이터로 쉽게 변환이 가능하다. 연산자의 종류별로 기본적으로 실행하는 스레드가 달라질 수 있으며, 이에 대한 지정은 별도 스캐줄러 지정을 통하여 변경이 가능하다. 1~3장을 통하여 Flowable/Observable을 생성하는 연산자 예제..
Reactive Programming 데이터가 통지되면 이에 반응하여 데이터를 처리 하는 방식의 프로그래밍 모델. 즉, 프로그램에서 필요한 데이터를 직접 가지고와서 처리하는 방식(pull)이 아닌 데이터를 받은 시점에 처리하는 방식(push). 이를 구현하기 위해 데이터를 만들어내는 생산자와 이를 소비하게 되는 소비자로 역할을 나눠 처리하는 프로세스를 가지게 된다. 소비자와 생산자의 역할이 분리되어 있으므로, 생산자는 데이터를 생산하여 전달하는 역할까지 수행하며, 소비자는 데이터를 받아서 처리하는 역할만을 수행한다. 즉, 생산자와 소비자는 각각의 역할만 충실하게 수행하면 되고, 반대편에서 어떤 처리를 하는지에 대해서는 관심 밖의 일이다. 이처럼, 역할이 분리됨에 따라 쉽게 비동기 구현이 가능 Reacti..
1. RxJava 리액티브 프로그래밍 읽기/실습 3장, RxJava 메커니즘 에러처리에 대한 부분부터 배압(Backpressure)까지 학습을 하였고, 에러 처리에 대한 매커니즘부터 배압까지 자연스럽게 내용이 연결되어 있어서 이해하는데에는 크게 무리가 없었다. 다만, 책을 읽으면 읽을수록 봐야 할 API와 구현체에 대한 개수가 늘어나는거 같아서, 책에서만 제공해주는 예제 외에도 실제 구현을 어떻게 하는지에 대해서는 깃헙을 돌아다니면서 코드를 좀 살펴봐야 좀 더 이해가 높아질 수 있을거 같았다. 여러개의 생산자와 소비자가 공유 객체를 가질 경우에는? merge 연산자를 사용하여 다수의 생산자/소비자가 순차접근을 할 수 있도록 동기화 처리 해야 한다. 에러처리 에러처리에 대한 통보 재시도(retryXX Me..
1. 유럽여행 3월 중순부터 4월 초까지 여행을 다녀왔었다. 1년 가까이 쌓였던 업무 관련 스트레스 때문에 쉴 타이밍이라고 생각했고, 과감하게 20여 일의 시간을 유럽여행으로 시간을 보냈다. 직업병인지는 몰라도 여행을 다니면서도 공부를 안 하면 생기는 일종의 불안한 감정 같은게 없진 않았으나, 그래도 재충전의 시간을 보내고 돌아오니 한결 마음이 가볍다. 2. RxJava, RxKotlin 여행을 다녀오고 공부의 방향성에 대해 생각을 해봤다. 부족한 기본기에 대한 공부도 중요하지만, 내가 흥미를 가지고 지속적으로 할 수 있는 공부 역시 중요하다고 생각했다. 그래서 흥미를 가질 수 있는 주제에 대해 고민을 해보다 Reactive 관련 공부를 해보는 게 좋을 거 같아서 책을 바로 구매했다. RxJava 리액티..
SpringBoot Logger 사내에서 최근 ELK 도입을 준비하고 있는 과정에서 로깅 포맷을 지정하고 사용해야 하는 Needs가 생겨서 이번 작업을 시작하게 되었다. 스프링 부트에서는 로깅 설정을 프로파일별로 다르게 지정 할 수 있으며, 또한 로깅 구현체에 대한 유연한 변경(log4j2 등)이 가능하므로 작업 자체의 난이도가 높지는 않다고 할 수 있다. 다시 보는 로깅 레벨 출처: 구글 이미지 검색 Hibernate Logging 관련 이슈 로깅 작업 중 Hibernate 관련 로깅이 slf4j에 제대로 적용이 안되는 이슈가 생겼었다. 이와 관련된 문서를 뒤져보다 링크를 통하여 해당 문제를 해결 할 수 있었다. 링크의 내용을 요약하자면, 하이버네이트 로깅 설정이 초기화 되는 구간에서 실제 slf4j에..
같이 근무했던 시니어 개발자분께서 내용이 좋다면서 추천해주셔서 링크를 통하여 동영상을 시청했다. 분량은 대충 1시간 가량 되는데, JPA를 사용하면서도 하이버네이트에 대한 충분한 학습을 하지 못해서 겪었던 지난 1년간의 많은 시행착오들이 생각이 났고, Kotlin을 메인으로 사용했을때의 다양한 선택지에 대해서 고민을 해볼 수 있었던거 같아서 매우 유익했다고 할 수 있다. Alternatives to JPA 데이터를 표현하는 관점에 따라 달라 질 수 있다. Relational OOP 두 가지 관점 중 어디를 중점으로 설계 하느냐에 따라 방향이 크게 달라질 수 있다. 데이터 중심(data-centric)의 경우, OOP적인 설계가 크게 맞지 않을 수 있고, 요즘 ORM을 사용하는 것이 유행인것 마냥 흘러가고..
- Total
- Today
- Yesterday
- Til
- EJS
- HTTP
- Spring MVC
- cluster
- Kotlin
- Handlebars
- Prototype
- package.js
- 스프링
- springboot
- implicit prototype chain
- Package Control
- jade
- node.js
- tomcat
- Spring
- maven
- ecma
- SideBarEnhancements
- http method
- Express.js
- WebFlux
- Sublime Text 2
- Sublime Text 3
- Spring Boot
- pm2
- HttpClient
- RestTemplate
- Squelize.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |