들어가는말 N/A 요약 observer 가 관찰자라서 능동인 것처럼 느껴지지만 결국 행위를 수신하는 피동적 대상이다. (이벤트 구독) 능동적으로 observer 들을 관리하고 통보하는 행위는 observable (이벤트 발생) 이 수행한다. observable 이 observer 들을 관리하는 건 deprecated 된 java.util.Observable에 의존할 수도 있고 list 로도 사용할 수 있다 사족: depreacated 된 이유는 Observable이 Serializable를 implements 하지 않은 것이랑 thread safety 가 보장되지 않는다는 것이다 (이건 잘 안 와닿기는 하는데) 뭐 거기다 9 에서는 Flow API 가 나오기도 했고 https://stackoverflow..
들어가는 말 jackson 관련 내용을 훑어보면서 확인했던 문서들을 기록 최근에 타이핑을 너무 했더니 손가락을 쉬게 해줘야 할 것 같아서, 상세한 기록이나 분석은 다음 기회에..... 기본적으로는 readme 나 아티클을 위주로 접근 주의사항 혹시나 이 문서를 보시는 분이 계실... 지도 모르겠지만 문서를 통해서는 유익한 정보를 얻기 힘들수도 있습니다. 분석 작업에 대한 이정표를 남기는 느낌의 문서입니다. 왜? 근 몇년간 typeless 한 node.js 를 주로 만지다보니 감떨어짐 jackson (정확히는 jackson databind) 에 꽤 많이 의존을 해야하는 상황이 기대되지만 지금까지 주로 써왔던 기본적인 사항만 인지하고 있음 앞으로 봐야 할 코드를 보다보니 다형성을 jackson 에 의존해서 ..
들어가는 말 백엔드, 프런트엔드, 그 외 연관된 기능의 코드 스켈레톤을 자동으로 말아서 주는 힙한? 플랫폼 DSL로 모델 정의해놓으면 도메인 관련 로직들까지 다 만들어준다. (jdl-studio) 말로만 들어보던 JHipster를 받아서 돌려 봄 (그냥) 어렵지는 않고 관련 아티클들도 많으니 한번 해보는 걸 추천한다. 소견 프로덕션 레벨에서 쓸 수 있을지는 모르겠다. 어드민 툴 정도는 이걸로 날먹할 수도 있을 것 같.... 지만 어림도 없겠지 JHipster 부트스트레핑 한 다음에 일부분 걷어내고 추가 구현하고 이런 식으로 풀 수도 있겠지만 그런건 재미가 없.... 그럼에도 불구하고 생각보다는 재미있는 프로젝트이다. 굉장히 재미있는 프로젝트다. 프로젝트 초반에 스켈레톤을 구성하는 건 정답이 없는 문제라고..
배경 java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 재현 spring data mongodb 이슈는 아니고 java regex 자체 targetValue 에 '*' 인 문자열이 들어가 있으면 문제 발생 Criteria searchTitleCriteria = new Criteria().where("targetField").regex(targetValue);Pattern.compile(someString) 에서 터짐 원인 regex meta character 이 들어가 있어서 문제 발생 해결 Pattern.quote 로 감싸놓음 ( \Q & \E) Criteria searchTitleC..
요약 및 개요 groupedFlux에서 tracking 할 수 있는 키의 개수 제한은 256개 인 것처럼 동작 아래 테스트 코드는 트러블슈팅 중 원본 로직을 흉내내며 따라가는 터미 코드 import lombok.Data; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; import reactor.core.publisher.GroupedFlux; import java.util.ArrayList; import java.util.List; import java.util.function.Function; public class GroupedFluxTest { @Data static class Dummy { private String ..
배경 CompletableFuture 에서 whenComplete 랑 whenCompleteAsync 의 차이가 어떤건지 궁금해서 기록 whenComplete: Returns a new CompletionStage with the same result or exception as this stage, that executes the given action when this stage completes. whenCompleteAsync Returns a new CompletionStage with the same result or exception as this stage, that executes the given action using this stage's default asynchronous exe..
accesslog 포맷 x.x.x.x - - [04/Apr/2021:00:00:00 +0900] "POST /x/x HTTP/1.1" 200 84 "-" "-" "x.x.x.x" "elapsed=0.532"s "request_length=1031879" 원하는 동작 request length 가 특정 값 이상 요청 추출 추출 cat http-access.log.XXXXXXX | awk '{ split($0,a,"request_length="); b = substr(a[2], 1, length(a[2])-1) if(b+0 > 1000000) { print b; print $0 } }' 기타 useragent 는 따로 빼는게 맞는것 같다. 지정된 포맷이니 레이블은 필요하지 않다. 그냥 promethues 에..
- Total
- Today
- Yesterday
- Generic
- kafka 2.8.0
- jhipster
- COMMIT
- percolate
- 기술사이트
- AWS
- flush
- 기술블로그
- Async
- Dangling
- 기술센싱
- 전설로떠나는월가의영웅
- Kafka
- meta character
- Spring
- opensearch
- 에픽테토스
- WebSocket
- pecs
- completablefuture
- 말의품격
- elasticsearch
- 사기꾼증후군
- PatternSyntaxException
- fsync
- Java
- 클린 아키텍처
- 만들면서 배우는 클린 아키텍처
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |