본문 바로가기

전체 글

백준 - 1707 이분 그래프(Java) https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net bfs 문제입니다. 이분 그래프는 아래 그림과 같이 두 가지의 집합으로 구분할 수 있어야 합니다. 때문에, bfs로 완전 탐색을 하면서 두 가지 집합으로 구분하시면 됩니다. 아직 방문을 하지 않았다면 0(default), 1번 집합인 경우 2, 2번 집합인 경우 1로 구분하시면 됩니다. if(visited[nn] == 0){ qu.add(nn); visited[nn] = 3 - visited[cn.. 더보기
엘라스틱서치 데이터 삽입, 조회, 수정, 삭제, _bulk API 1. 개요 엘라스틱서치에 데이터를 삽입, 수정, 삭제를 해 보도록 하겠습니다. 참고로, 엘라스틱서치의 모든 요청은 REST API를 사용합니다. 엘라스틱서치의 경우 버전마다 변경사항이 매우 큽니다. 때문에, 버전을 잘 확인해보시기 바랍니다. 💡 이 글은 7.0 ~ 8.X 사이의 버전을 타켓으로 하고 있습니다. 추가로, 제 엘라스틱서치의 버전은 8.7입니다. 엘라스틱 8.0이후 버전은 Security로 인해 모든 요청에 사용자 인증이 필요합니다. 때문에 저와 같이 Postman을 쓰시는 분들은 아래 그림과 같이 인증 셋팅이 필요합니다. 💡 자세한 인증 사항은 https://ksb-dev.tistory.com/309 에서 알 수 있습니다. 2. 삽입 엘라스틱서치에 데이터를 삽입하기 위해서는 PUT 요청으로 .. 더보기
docker container shell 관리자 접근 지금까지 docker contaienr shell에 접근할 때, 아래와 같은 방법을 사용했습니다. docker exec -it '컨테이너ID' sh vim을 다운받기 위해서 우선 apt update를 입력하니 아래와 같이 권한 거부가 발생했습니다. sudo를 사용해도 해당 명령어를 차증ㄹ 수 없다는 말만 나왔습니다. su 명령어를 치니 Password를 입력하라는데, 제가 아는 모든 비빌번호를 입력해도 인증 실패가 뜹니다. 구글링 결과 쉘 접근에서 관리자로 접근하는 방법을 찾았습니다. 명령어는 아래와 같습니다. docker exec -itu0 '컨테이너ID' sh 이후에 apt update를 하니 잘 되었습니다. 더보기
엘라스틱서치 8.X 도커로 무작성 실행해보기 1. 개요 검색엔진으로 유명한 엘라스틱 서치(Elastic Search)를 도커로 실행해 볼 것입니다. 엘라스틱 서치 버전 8 부터 Security가 default로 설정되어 있기 때문에, 이전 버전과 달리 비밀번호를 설정해야 합니다. 이제부터 그 과정에 대해 설명하도록 하겠습니다. 💡 기본적으로 도커가 깔려있어야 합니다. 2. 실행하기 우선 엘라스틱 서치의 도커 이미지를 다운로드 받아야 합니다. 제가 다운로드 받은 버전은 가장 최신 버전인 8.7.0 입니다. docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0 다운로드 받은 이미지를 실행하는 코드는 아래와 같습니다. # -p 9200:9200 -> 엘라스틱 서치에 접속하는 포트입니다. # -.. 더보기
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 6 3.6 파드를 안전하게 종료하기 위해 고려해야 할 사항 정상 혹은 비정상저긍로 종료되는 어떤 경우이든 쿠버네티스 입장에서 종료 요청이 오면 비동기적으로 종료 처리를 시작하고 Terminating 상태로 변경시키는 흐름으로 동작한다. 종료 처리는 SIGTERM 처리, SIGKILL 처리 순서로 실행된다. 또 이와 병행하여 서비스에서 제외되는 처리가 이루어진다. SIGTERM 처리, SIGKILL 처리와 서비스에서 제외되는 처리가 비동기로 이루어진다는 것은 파드를 종료할 때 서비스에서 제외되기 전 SIGTERM 처리를 할 수 있다는 의미다. 결국 서비스에서 제외되기 전에 파드가 클라이언트 요청에 정상적으로 응답될 수 없는 상태가 될 수 있다는 의미다. 파드는 그 특성상 자주 동작과 종료를 반복하기 때문에 이.. 더보기
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 5 3.5 파드를 안전하게 외부로 공개하기 위한 헬스 체크 서비스를 통해 파드가 공개되면서 요청에 대해 정상적으로 응답하지 못하는 에러가 발생할 수 있다. 여기서는 이러한 경우를 방지하기 위한 두 가지 헬스 체크에대해 설명한다. 3.5.1 Readiness Probe로 파드와 연결된 서비스 모니터링하기 Readiness Probe는 애플리케이션이 공개 가능한지의 여부를 확인하고 정상이라고 판단된 경우 처음으로 서비스를 통해 트래픽을 수신한다. 예를 들어 헬스체크용 응답 페이지를 생성해두고, 해당 페이지에 접속해 상태 코드가 200으로 돌아오면 서비스를 통해 접속하는 방법을 사용할 수 있다. 예제 애플리케이션의 디플로이먼트용 매니페스트인 22_deployment_backend-app_k8s.yaml.templ.. 더보기
프로그래머스 - 미로 탈출(Java) bfs 문제입니다. 시작 지점이 레버를 거쳐 종료 지점 까지 가는 최단거리를 구해야 합니다. 이는 각각 시작 -> 레버, 레버 -> 종료 경로의 최단 거리를 각각 구해서 그 결과를 합치면 됩니다. [구현 코드] class Solution { final int[] dx = {1, -1, 0, 0}; final int[] dy = {0, 0, -1, 1}; int n, m; public int solution(String[] maps) { int answer = -1; n = maps.length; m = maps[0].length(); Road start = null; Road lever = null; Road exit = null; char[][] map = new char[n][m]; for(int i.. 더보기
프로그래머스 - 혼자서 하는 틱택토(Java) 구현 문제입니다. 3*3 보드에 'O', 'X', '.'이 주어질 때, 해당 보드의 말판들이 틱택토 게임 규칙에 벗어나지 않는지 확인해야 합니다. 틱택토 게임 규칙은 다음과 같습니다. 'O'와 'X'를 번갈아 가면서 '.'위치에 놓는다. ('O'가 선공) 'O' 또는 'X'의 직선 길이가 3이되면 게임이 종료된다. 즉, 두 번째 조건에 의해 말판의 개수와 길이가 3인 직선의 유무를 확인하여 판단하면 됩니다. 'O'와 'X'의 말판 개수 차이는 무조건 1이내여야 합니다. 직선 판단의 조건은 아래와 같이 하면 됩니다. 'O'와 'X'의 직선이 모두 만들어질 때 하나의 직선이 만들어지면 게임이 종료되기 때문에 불가능하다. 'O'의 직선만 만들어질 때 선공이 'O'이기 때문에, 'X'와 개수가 같아질 수 없다... 더보기