일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Ingress Controller Fake
- 노드간 통신
- jar 배포
- Armeria
- RedirectService
- intellij
- 핀포인트
- UnsupportedOperationException
- 논블록킹 성능
- 티스토리챌린지
- 7879
- jsonMarshaller
- save/update
- reids
- formik
- nGinder
- pinpoint
- pinpoint 2.5.3
- 개발 어렵당.ㅠ
- 오블완
- ㅉ때
- fake jwt
- hbase 저장공간 설정
- OIDC
- Loki 로그
- LPOS
- 플루터
- 월급루팡 일지
- 애자일 싫타
- R2DBC Paging
- Today
- Total
목록개발이야기/개념 (36)
대머리개발자

스프링 시큐리티를 이용하면 쉽게(?) 적용 가능하다.http.csrf().disable().authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN") // Only ADMIN users can access /admin/**.antMatchers("/user/**").hasAnyRole("ADMIN", "USER") // ADMIN and USER can access /user/**.anyRequest().authenticated() // Any other req... 나름 인증서버를 구축해서 사용하기 때문에...비지니스 로직에서 녹여야 한다. 아르메리아 프레임워크를 적용해 인증서버를 구축했기 때문에 쉽게(?) 적용할 수 있다. @Beanpublic Ar..

내가 만든것이 아닌 다른 분들의 프로젝트를 분석하면 재미진다.같은 목적을 품고 있지만 가는 길은 다르다. 때문에 찐으로 많은 것들을 배울수 있다. 생각지도 못한!! 1. 올만에 메이븐을 반갑다. 그래들에 쭈욱 밀렸지만 그래도 덕분에 많이 편했어 고맙데이! 니들이 Ant를 아러? ㅠ 2. 프로젝트는 스프링 멀티모듈이다. 사실 최근 프로젝트도 스프링 멀티모듈을 구성하기 위해 고민했던 부분이다.But 진행하지 않았다. 여러 이유가 있었지만 모든 부분이 "공통"으로 처리 될 것 같았고 (정리가 안 되니ㅋ)MSA는 진짜 독립적으로 !! fastify.js두, 코프링두, 스프링두, 장고두...진짜 MSA이다...그래서...포기s! 3. 스프링 시큐리티 깔끔하게 적용. 멀티모듈별 클라이언트도 설정하규.. 와우..
map 구독이 안 되고Flux.just("SMS", "EMAIL").map(it -> userRoleRepository.save(UserRole.builder().userUid(userUid).type("MARKETING") .roleName(it).build())).subscribeOn(Schedulers.boundedElastic()).subscribe(); flatMap은 구독이 된다.Flux.just("SMS", "EMAIL").flatMap(it -> userRoleRepository.save(UserRole.builder().userUid(userUid).type("MARKETING") ..

비동기와 논블로킹은 나는 같은 녀석이라고 본다.둘의 목표가 동일하기 때문이다.병렬처리하기 위함이다. 딱 끝!!! 그리고 모든 블로그가 같은 그림으로 동일한 설명을 하고 있다.되지도 않는 설명을.. 안타깝다. 의미를 몰라도 코딩하는데 전혀 문제가 없다.나의 절친AI에게 정중히 물어 봤다.그래 도전하지 말자!앞서 이야기 했지만 몰러두 코딩할 수 있다. 지금껏 그래 왔듯이 모든 프로그래밍은 기본적으로 순차적 진행 되도록 설계 되어 있다.그리고 또한 순차적으로 해도 무리 없다!! 그럼 언제 써야 하냐? 그 부분에 대해서만 언급해보자! 모든 함수는 동일한 인자값을 던졌을 때 동일한 결과값이 나와야 한다. 다실 말해 결괏값y에 영향을 미치지 않는다고 하면 병렬처리 한다.병렬처리 안 해도 빠르다면 긁어서 부스럼 ..
몇 명 사용하지 않는 시스템이긴 하지만 ㅋ앞으로의 미래를 위해서 미리미리!!미리뽕 하나의 프로세스에서 부가(추가)적인 작업을 해야하는 경우가 종종있다.아니 많이 있다. ㅎㅎ 메인 프로세스와 별개로 작업하는 경우 병렬적으로 처리한다면 너무나도 효율적!!이다. 예를들어 로그인 과정에서1. "로그인에 대한 이력"2. "마켓팅 여부 확인"3. "로그인에 대한 포인트 적립 처리"4. ...5. ...기본적인 사용자 정보를 Return 하는 부분하고는 연관성이 없기 때문에. 모든 과정을 처리하는 동안 wait 할 필요가 없다.0.05초의 과정이지만 ㅋ.. 티끌ms가 모여서 초로 바뀐다. 어플리케이션 로그인 속도 1초를 줄이기 위한 연간 과제도 있다고 하는데..이런 요소들을 찾아서 병렬로 처리한다면 굳굳!! 로그..

JWT가 만료되는시점에 페이지가 새로고침되어 페이지 내에 속한 모든 API가 호출되면모든 API에 대해서 토큰 갱신 작업을 진행한다. 3번의 리프레쉬 토큰 갱신 API가 콜된다. ㅜㅜ 최초의 요청이 토큰이 만료되면두번째, 세번째, .. 요청은 대기를 하고 순차적으로 처리한다. 즉 직렬화 한다! 최초 요청에 토큰을 갱신하고 갱신한 값으로 두번째, 세번째, .. 요청을 처리 할 수 있도록 한다!! 방법은 큐와 인터셉터를 이용한다. request, response 둘 중 하나의 인터셉터를 이용 하면 된다.request를 이용하기로 했다. 응답으로 온 401 결과를 처리하는 것보다는 request를 이용해서 "보내기 전"에 만료 체크를해서애초에 요청을 보내지 않으면 한 번이라도 네트워크 비용을 cut 할 ..

실상 Map 안에 Map으로 생각해도 된다.근데 문제는 실제 등록된 데이터를 확인해 보면 지저분하다. 우웩 더 나은 설계 방식은 Json 안에 Json을 저장하는 대신에,복합 객체에 이값을 저장하고 전체 객체를 Json으로 직렬화하는 것이다. ⭐⭐AS-ISval mainConfig = mutableMapOf( "xxx.status" to jsonStatus)Mono.zip( RedisConfig.getCache( "xxx:main:recommend"), RedisConfig.getCache( "xxx:tags"),).publishOn(Schedulers.boundedElastic()).doOnNext { it -> mainConfig["recommend"] = it.t1 mai..
개발함에 있어.. 네이밍이 제일 힘들다 기본적인 컨벤션이 있다고 해도 매한가지다. 창작의 고통처럼 느껴진다.(안해봤지만 ㅋ) 삭제를 위한 URI 네이밍은 단순하다. @DeleteMapping("/boards/{boardId}") 근데 여기서 추가적으로 삭제는 삭제인데 특정 사용자의 모든 게시글을 지우는 URI 네이밍은 어찌해야할까? ... ... ... 창작이 힘들면 회피해야 한다. 피할수 없으면 즐기라고 하지만...아니다. 피할수 있을때까지 피해야 한다. 회피기술(꼼수) ⭐⭐ @DeleteMapping("/boards/{boardId}") 엥? 똑같지 않은가? 맞다. 똑같다 ㅋ 새로운 URI 네이밍을 파는 것이 아니라. 특정 boardId의 값을 체크하고 로직을 분기하는것이다. if (boardId =..