본문 바로가기

분류 전체보기221

스프링부트 filter에서 발생한 예외를 핸들링 해보자 어떤 문제를 해결했는가? RTR 전략을 위한 refreshToken을 재발급해 주기 위해서 기존 JWT가 만료가 되면 분기화된 에러 메세지를 사용자에게 전달해 주어야했다. 기존에 전역 에러 관리를 위한 글로벌 ExceptionHandler가 있었기에 JWT 예외가 사용자에게 전달될 것으로 생각했으나 필터에서 발생되는 예외를 처리하지 못하는 상황이 발생했다. 참고 (RTR) : https://auth0.com/docs/secure/tokens/refresh-tokens/refresh-token-rotation   그럼 ExceptionHandler는 왜 필터에서 발생된 예외를 처리하지 못했을까? 출처:https://justforchangesake.wordpress.com/2014/05/07/spring-m.. 2024. 8. 30.
스프링부트 JPA 모범 사례 - @ManyToMany 연관관계를 효과적으로 구성하는 방법 오늘은 양방향 @ManyToMany 연관관계를 효과적으로 구성하는 방법에 대해 알아보았다.먼저 양방향 @ManyToMany 연관관계는 양쪽으로부터 탐색할 수 있으므로 양쪽 모두 부모가 된다. 둘 다 부모이기 때문에 둘 중 누구도 외래 키를 보유하지 않고 연결 또는 조인 테이블로 알려진 별도의 테이블에 저장되는 2개의 외래 키를 갖는다. 이 연결 테이블은 숨겨져 있으며 자식 측 역할을 한다. 그럼 @ManyToMany 연관관계를 어떻게 하면 효과적으로 사용할 수 있을까?  1. 항상 List가 아닌 Set을 사용@ManyToMany의 대부분의  상황에서 List보다 Set의 성능이 뛰어나다. 특히 삭제 처리와 관련해 Set을 사용하고 List는 피하는 것이 좋다고 한다.  2. 연관관계의 양측 동기화 상태.. 2024. 8. 23.
소프티어 HCPC 2023 Lv2 X marks the Spot java 풀이 언어별 시간/메모리언어시간메모리C1초1024MBJava3초1024MBPython5초1024MBC++1초1024MBJavaScript5초1024MBKotlin3초1024MBSwift1초1024MB퍼즐을 좋아하는 하이비는 작년에 이어 올해에도 퍼즐과 관련된 문제를 내기로 했다. 이번에는 Indirect Indexing으로, 다음과 같은 방식을 따른다. 1. N개의 문자열 쌍 (S1,T1), (S2,T2),…, (SN,TN)이 주어진다. 각 쌍에 대해, Si의 길이와 Ti의 길이는 같다.2.  Si에서 글자 x 또는 X가 등장하는 위치를 Pi라고 하자. 이 위치는 항상 유일하다.3. 이때, Ti의 Pi번째 글자를 읽으면 된다. 단, 소문자는 대문자로 바꿔야 한다.4. 예를 들어, Si가 Indexing이고 T.. 2024. 6. 29.
소프티어 Lv3 나무섭지 java 풀이 언어시간메모리C++1초1024MBJavaScript2초1024MBC1초1024MBJava2초1024MBPython2초1024MB남우는 미로에 갇혔습니다. 미로는 n × m 크기의 격자로 이루어져 있고, 각 격자 칸은 남우, 출구, 유령, 빈 공간, 벽 중 하나로 이루어져 있습니다. 남우가 출구로 이동하면 미로를 탈출하게 되며, 출구로 이동하기 위해 시작 위치에서 상하 좌우로 인접한 칸 중 격자를 벗어나지 않으면서 벽이 아닌 칸을 골라 이동하는 것을 반복하게 됩니다. 만약 n 이 4이고, m 이 6인 격자가 다음과 같이 주어졌다면, 남우는 다음 경로로 탈출이 가능합니다.  이 미로 안에 유령이 있는 경우도 있습니다. 남우는 유령을 무서워 하기 때문에 유령을 마주치지 않고 탈출하고 싶습니다. 남우는 1초에 .. 2024. 6. 28.
소프티어 HSAT 기출 Lv3 순서대로 방문하기 java 풀이 - 문제 참고https://softeer.ai/practice/6246/history?questionType=ALGORITHM Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  - 풀이 간단한 백트래킹이었는데.. 오랜만에 풀기도 하고 자바로 풀다 보니 굉장히 헤맸다.백트래킹을 통해서 모든 경로를 계산하고 도착지점에 도착할 때마다 방문 순서가 주어진 순서와 일치하는지 검사하는 함수를 통해서 검사하고 카운트를 하나씩 올려준다.제약조건이 2  n 제곱이었기 때문에 충분히 시간복잡도를 만족하며 계산 가능하다고 판단하여 백트래킹으로 모든 경로를 계산하였다. + 문제를 잘못 이해하여 방문순서가 일치하여야 하는데 순서는 일치하지 않고 같은 곳을 방문했다면 카운트를 해주었더니 부분 점수를 받게 되.. 2024. 6. 28.
ubuntu 홈서버 구축기 feat. SK Broadband 들어가면서 ...  오늘은 최근에 진행한 ubuntu 홈서버 구축에 대한 내용을 기록하고자 한다.야심 차게 홈서버 구축에 도전하면서 많은 블로그들을 참고하며 고군분투했지만 실제 진행에 필요한 내용과 다른 부분들이 많아서 삽질을 하며 헤매게 되었다. 그러면서 얻게 된 해결책을 통해 나처럼 홈서버를 구축하는 데 어려움을 겪고 계신 분들에게 조금이나마 도움이 되었으면 하는 바람으로 글을 쓰게 되었다.    홈서버가 필요해진 이유 - 최근 AWS에 배포한 요양기관 차량 배치 프로젝트에서 CPU 성능과 RAM 성능은 낮아서 속도가 굉장히 느린데 비용은 너무 많이 나왔다. (로드밸런서, EC2 비용 등등), 비용을 절감할 수 있으면서 빠른 서버가 필요했다. - 새롭게 떠오른 아이디어를 구현해서 사람들에게 선보일 나.. 2024. 6. 14.