분류 전체보기

    AWS | 고가용성 구성에서 세션을 유지하는 3가지 방법

    AWS에서 고가용성 구성에서 세션을 유지하는법 sticky session 옵션을 사용하여 체결된 App Server와만 연결을 유도한다. DocumentDB에 세션정보를 저장하여 세션을 영구적으로 남긴다. ElastiCache for redis를 이용하여 세션 정보를 캐싱하여 사용한다. 고가용성 환경에서 세션 유지 문제점 1번째 요청에서 App Server 1과의 세션이 체결되었다. 로드밸런서의 트래픽이 두번째 요청을 App Server 2로 보내게 된다면, 1번째 요청에서 체결한 세션을 찾을 수 없는 문제점이 생기게 된다. 유지되지 않는 세션 테스트 고가용성 환경 으로 App Server1, 2를 구성하였습니다. 5A로 시작하는 세션키로 유저 정보 저장. 5A를 세션키로 세젼정보 ( 유저 정보 ) 불러..

    [ SQL ] LIKE 조회에서 escape문자( %, _, \ ) 처리하기

    AND UPPER(SYS_CD) LIKE '%' || UPPER(REPLACE(REPLACE(REPLACE(#{sysCd},'\','\\'),'_','\_'), '%', '\%')) || '%' ESCAPE '\'

    [ Spring Authorization Server ] 일반 Request로 client id가져오기

    - OAuth2 Authorization Server에서는 Redirection을 통해 주고받은 데이터 ( clientId, nonce, redirect_uri, response_type, scope, state )의 정보를 SavedRequest에 저장한다. /** * Redirect로 주고받은 데이터 中 client id 가져오기 * - OAuth2 Authorization Server에서는 clientId, nonce, redirect_uri, response_type, scope, state를 SavedRequest에 저장한다. * * @param request * @param response * @return * @author ys5318.kim * @since 22.07.29 */ privat..

    [ Intellij ] google-java-format 플러그인 적용하기

    Intellij 에서 기본적으로 제공해주는 formatter( cmd + option + L )를 함수형 코드에 적용하면 일렬로 나열되는 것이 디폴드이다. 일정 길이가 넘어가면 인텐트를 바꾸어주는 것은 이 코드처럼 콜백함수를 넣는 코드에 적용하기에는 보기 좋은 형태가 아니다. 이를 수정하기 위해 Preferences의 코드 스타일을 하나하나 맞춰줄 수도 있지만, google-java-format 플러그인을 설치하여 전체코드에 일관되게 좋은 프렉티스를 적용해볼 수 있다. Preferences > Plugins > Marketplace 에서 "google-java-format"을 검색하여 설치한다. Intellij 재시작후 플러그인을 활성화 시켜서 formatter를 적용시켜 본다. ( cmd + optio..

    [ Python ] 폴더내 파일명 일괄 변경하기

    AWS 실습을 하면서 이를 기록하기 위해 스크린샷을 많이 찍어두었는데 찍어두기만 하고 정리를 하지 못해서 골치였다. 맘먹고 파일 정리하려고 하나보니 1000개가 훌쩍 넘는 양에 일일히 손으로 할 수 없어 만들게 되었다. 프로그램을 만들면서 또 다른 오버헤드가 생기지 않도록 최소한의 기능으로 동작하게 작성하였다. 기능 목록 1. 시간 순서대로 채번하도록 하기. 2. 파일 이름의 공통적으로 들어갈 prefix와 postfix를 지정하도록 하기. 3. 폴더의 위치를 받아서 해당 폴더내의 파일에 대해 일괄 적용하기. 파라미터 받아오기 argparse 라이브러리를 사용하여 각각 폴더위치, 접두사, 접미사에 해당하는 dir_path, prefix, postfix의 값을 받아올수 있도록 했다. import argpa..

    2018 KAKAO BLIND RECRUITMENT | [1차]추석 트래픽 풀이 ( Java )

    문제 2018 KAKAO BLIND RECRUITMENT > [1차] 추석 트래픽 해설 이번 문제는 탐욕법 ( Greedy ) 알고리즘을 알고있는지를 묻는 문제였습니다. 왜 탐욕법 ( Greedy ) 알고리즘 일까요? 이 문제는 탐욕법 중에서도 전형적인 "활동 선택 문제"에 포함된다고, 볼수있습니다. "활동 선택 문제"의 특징은 시작시간과 끝시간이 있는 활동들의 리스트와 이 활동을 진행할수 있는 공간이 있습니다. 그리고 특정시간에 가장 많은 활동을 할수 있는 경우를 고르는 것입니다. 가장 대표적인 활동 선택 문제로는 boj에 있는 회의실 문제가 있습니다. 현재 문제에서는 트래픽은 활동에 해당하고, 처리하는 서버는 활동을 진행할수 있는 공간입니다. 문제에서 친절하게 회의실 문제를 설명할때, 가장 많이 사용..

    2021-카카오 인턴쉽 | 표편집 풀이 ( Java )

    문제 2021 카카오 채용연계형 인턴십 > 표 편집 해설 이번 문제는 자료구조 중에서 Array 와 List의 차이를 알고 사용할 수 있는지 묻는 문제 였습니다. 그 중에서도 List (LinkedList)의 특징을 이용해서 최적화를 할수있는지 물어보는 문제였습니다. Array와 List의 차이 Array는 임의 조회에 유리하고, List는 순차적 조회에서 삭제와 삽입에 유리합니다. 예를 들어, 2번째에 있는 어피치에 있는 정보를 가지고 오는것은 Array에 경우 O(1)의 속도로 조회할 수 있습니다. 하지만 List의 경우 O(N)의 속도가 걸려 조회가 가능합니다. Array에서의 조회 Node apeach = array[2]; List에서의 조회 Node apeach = linkedlist; whil..

    [ tech.io ] Reactive Programming with Reactor 3 답지

    tech.io 2. Flux instances 2-1 Return an empty Flux Flux emptyFlux() { return Flux.empty(); } 2-2 Return a Flux that contains 2 values "foo" and "bar" without using an array or a collection Flux fooBarFluxFromValues() { return Flux.just("foo", "bar"); } 2-3 Create a Flux from a List that contains 2 values "foo" and "bar" Flux fooBarFluxFromList() { return Flux.fromIterable(Arrays.asList(new Strin..