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

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 =..
실상 예외는 아니고 경고다. 개발서버에서 해당 로그가 계속 로깅되고 있어서 확인!s DB의 wait_timeout 보다 짧게 설정하면 된다고 하는데 계속해서 해당 로그가 발생한다. 설정을 시도 하는 과정에서 몇 가지 삽질.. 히카리의 maxLifeTime은 아래와 같이 5분 미만이면 기본값으로 설정된다. : HikariPool-1 - maxLifetime is less than 30000ms, setting to default 1800000ms. 빠른 테스트를 하려고 설정을 낮게 해보려다...왜 설정이 안 먹는지 부터해서 삽질 작렬!! wait_timeout을 전역으로 설정할수 없다면 세션으로 설정 가능!! hikari: max-lifetime: 305000 ##idle-timeout: 10000 con..
Parameter 0 of method mysqlEntityManagerFactory in com.config.MysqlConfig required a bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' that could not be found. 이미 1.마리아DB와 2.mysql를 설정해서 사용하고 있었다. 기존 사용하던 마리아DB를 제거하고 mysql 두 개를 설정하는 과정에서 이슈가 발생했다. @Primary 어노테이션은 반드시 주 DB 구성에만 포함시켜야 한다. 그렇지 않을 경우 충돌이 발생해서 아래와 같은 오류가 발생한다 사실 이미 최초 설정할 때 기억은 나지 않지만 마주 했던것 같은 느낌이다. 기록하자 ㅎ 삽..
fun create(targetId: Long, userId:String? = "loginId", ..){ .. } userId가 할당되지 않으면 초기값으로 "loginId"를 바인딩한다. 그럼 당연히 userId는 Null일 수가 없다고 생각하지만 null 값이 바인딩 될 수 있다.!! 그렇기 때문에 비지니스로직에서 userId를 사용할 때는 userId가 명백히 널이 아님을 다시 명시해야 한다. fun create(targetId: Long, userId:String? = "loginId", ..){ .. userId!! ...existByTargetIdAndUserId(targetId, userId, ..) ...updateTargetIdAndUserId(targetId, userId, ..) } ..