[Spring] AOP로 편리하게 jwt token 검증하기
·
JAVA/Application
🪄 발단카카오 로그인을 구현하면서 클라이언트로부터 token 값을 넘겨받는 api가 많이 생겼다. 현황은 이 token을 검증하지 않고 있었다. 그러나 안전한 서비스를 제공하기 위하여 우리가 가진 jwt secret key로 token을 검증할 필요가 있어보였다. 그래서 오늘 실행에 옮겼다. 사실 지금처럼 검증하지 않더라도 유효하지 않은 token이 넘어올 경우 그냥 개인정보를 제공하지 않도록 처리되어있어서 현재 우리 서비스에 token 검증은 필요하지 않을 수 있다고 생각할 수 있다. 그렇지만, 유효하지 않은 토큰이 넘어올 경우에 대한 관리를 일관된 장소에서 할 수 있다는 장점이 있다고 보았다. 더 나아가, 유효하지 않은 token일 경우에 수행되지 않아도 될 불필요한 비즈니스 로직, 디버깅 비용을 ..
[OS] 터미널을 종료하면 프로세스도 종료된다 -- background로 실행하여 SIGHUP 시그널 피하기
·
컴퓨터구조 & OS
🪄 문제점ssh 접속한 터미널을 종료시키면, 터미널에서 실행한 프로그램도 함께 종료된다. 예를 들어 ssh 접속 후 python3 test.py로 py를 돌려놓은 뒤 터미널을 끄면 py 프로그램도 꺼진다. 🪄 이유SIGHUP(signal hang up) 때문이다. 이는 hang up 즉 접속을 끊을 때, 터미널과 연결이 끊어졌을 때의 시그널이다. 그래서 현재 세션 종료를 통해 SIGHUP 시그널을 쭈루룩 전달받은 프로세스는 종료된다. 다음은 해결 방법이다. 🪄 SIGHUP 시그널 피하기! (백그라운드로 실행)백그라운드로 실행하여 내가 원하는 프로세스가 SIGHUP을 받지 않도록 하면 된다. 그러한 명령어인 nohup가 있다. 나는 bert_server.py가 SIGHUP을 받지 않도록 백그라운드로 실행하..
[Java] 시스템 환경변수는 System.getProperty가 아니라 System.getenv로 가져온다
·
JAVA/Application
🪄 문제점: ACCESS_KEY와 SECRET_KEY가 컨테이너 환경변수 지정까지는 문제 없이 되어있으나 스프링부트에서 System.getProperty("ACCESS_KEY")로 가져오지 못한다. 🪄 해결: System.getenv()는 JVM이 실행되는 OS의 환경변수를 가져오고, System.getProperty()는 JAVA 시스템 즉 JVM에서 가져오는 것이다. 다시 말해 JVM에 국한되며, 또 다시말해 플랫폼 독립적이다. 즉 이것은 시스템 환경변수를 가져오는 메서드가 아니다. 환경변수가 Java의 시스템 속성으로서 존재하는 경우만 getProperty()로 가져올 수 있다. 그러나 우리 상황에서는 Java의 변수가 아닌 OS의 환경변수를 가져오는 것이기 때문에 System.getenv()를 써..
Docker Container에 환경변수 등록하기: ENV 명령 사용
·
미분류글
🪄 ENV 키워드 Docker Container에 환경변수를 두고 싶을 때에는 Dockerfile에 ENV 키워드를 사용한다. 그래서 만약 시스템 환경변수를 Docker Container의 환경변수로 설정하고 싶을 때는 다음 예시와 같이 명령줄을 추가한다. ENV ACCESS_KEY $ACCESS_KEY ENV SECRET_KEY $SECRET_KEY 이렇게 하면 시스템 환경변수를 $ACCESS_KEY, $SECRET_KEY로 가져오고, ENV 키워드를 통하여, 생성할 Docker Container에 ACCESS_KEY와 SECRET_KEY라는 환경변수가 등록된다. 🪄 ARG 키워드 ARG 키워드는 빌드타임에 인수를 전달하는 것이다. 즉 ARG 키워드는 이미지를 빌드할 때 값을 유동적으로 전달하여 빌드하..
모각코_6회차
·
기타
https://www.acmicpc.net/problem/1976 1976번: 여행 가자동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인www.acmicpc.net 여행 가자... 입니다. 결국 그 경로들이 이어져 있으면 되는 문제라 BFS를 처음에 떠올렸다. 근데 빠르게 플로이드 와샬로 풀었다. 제출하고 다른 사람들 코드 보니까 Union-Find 로도 많이 풀었다. 다시 여러방법으로 해봐도 좋을 문제일듯! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR..
[혼공컴운] 6주차_미션
·
기타
🪄 기본 미션 다음의 메모리 할당 방식 쓰기 - 최초 적합: 최초로 발견한 적재 가능한 빈 공간에 프로세스 배치 - 최적 적합: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스 배치 - 최악 적합: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스 배치 🪄 가상 메모리 가상 메모리와 페이징 페이징 페이지 잘 관리 방법 + 🪄 선택 미션 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423'일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는가? * 페이지 초기 적재시 페이지폴트는 고려하지 않음 [답: 3번❗️❗️❗️] 2 --- 2 3 --- 2 3 1 --- 2 3 1 3 --- 2 3 1 5 --- 5 3 1 ❗️ 2 -..
모각코_5회차
·
기타
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 🪄 풀이 과정 투 포인터 문제다. 정렬을 곁들인! 만약 for문 완탐 으로 접근하다가 시간초과가 난다! (80억번) 첨에는 sum에 대한 hashMap으로 해결할 수 있을 것 같아서 sum을 키로 하고 sumIdx를 값으로 하는 map을 만들었다. 그래서 sum = nums[idx1] + nums[idx2]로 sumIdx 가져와서 idx1, idx2가 아니어야함을 체크하는 방식으로 했다가 큰 결함을 발견했는데, 어떤 sumI..
모각코_4회차
·
기타
https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 문제 요약 플로이드와샬로 풀었다. 그치만 가중치 양수니까 다익스트라로 푸는게 시간적으로 좋겠으며, 다른 코드들을 보니까 그렇게들 많이 풀었다. 최단거리 알고리즘을 연습하기 좋은 문제였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public c..
[혼공컴운] 5주차_미션
·
기타
✨기본 미션 1번: 뮤텍스 락과 세마포에 대한 설명으로 옳지 않은 것을 고르세요. (답 ④) ① 뮤텍스 락은 임계 구역을 잠근 뒤 임계 구역에 진입함으로써 상호 배제를 위한 동기화를 이룹니다. ② 세마포는 공유 자원이 여러 개 있는 상황에서도 이용할 수 있습니다. ③ 세마포를 이용해 프로세스 실행 순서 제어를 위한 동기화도 이룰 수 있습니다. ④ 세마포를 이용하면 반드시 바쁜 대기를 해야 합니다 ← 아닙니다. 그냥 대기상태 해도 됩니다.
[혼공컴운] 4주차_미션
·
기타
4주차는 운영체제의 역할, 프로세스 & 스레드 개념, 그리고 프로세스를 효율적으로 CPU에 할당하기 위한 CPU 스케줄링 아이디어들... 이 학습 범위였다. 자료를 보지 않고 말로 설명할 수 있을 정도로 공부해두면 좋을 것 같다! ✨ 기본 미션304p 1번 🪄 운영체제 시작하기운영체제를 알아야 하는 이유 / 운영체제의 큰 그림 🪄 프로세스와 스레드프로세스 개요*PCB(Process Control Block) 프로세스 상태와 계층 구조 프로세스 상태 [운영체제] 프로세스 상태도Intro 각 프로세스는 우리의 RAM에서 이런 구성으로 할당이 되어 돌아간다. * 참고(논외): 프로세스가 new상태일 때 값들이 세팅된다. 보조기억장치 내부에 Virtual Address Space(VAS, 가상 주소 공간)이 생..