분류 전체보기 70

[Kubernetes] 클러스터 운영 시 고려 사항

1. 상용 쿠버네티스 클러스터를 프로비저닝하기 전에 필요한 노드 수와 크기를 고려하자. 2. 마스터 노드는 최소한 3개가 필요하며(관리형 서비스를 사용한다면 필요하지 않다.) 워커 노드는 최소한 2개(이상적으로는 3개)가 필요하다. 초기에 적은 양의 워크로드를 실행할 때는 이러한 쿠버네티스 클러스터의 비용이 비싸 보일 수 있다. 그러나 쿠버네티스의 장점인 복구와 확장 기능을 잊지 말자. 3. 쿠버네티스 클러스터는 수천 개의 노드와 수십만 개의 컨테이너로 확장할 수 있다. 4. 그 이상으로 확장이 필요하다면 멀티 클러스터를 사용하자(경우에 따라 보안이나 규제 준수를 위해 필요할 수 있다.). 여러 클러스터에 걸친 워크로드의 레플리카가 필요하다면 페더레이션을 사용하여 클러스터를 하나로 통합할 수 있다. 5...

Kubernetes 2024.04.03

[Algorithm] 백준 - 5397번 키로거 (파이썬/Python)

문제 (링크) 알고리즘 분류 - 자료 구조, 스택, 연결 리스트 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페이스, 화살표이다. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길..

Algorithm 2024.01.02

[Algorithm] 백준 - 1966번 프린터 큐 (파이썬/Python)

문제 (링크) 알고리즘 분류 - 구현, 자료 구조, 시뮬레이션, 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 1. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 2. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한..

Algorithm 2023.12.25

[Algorithm] 백준 - 1874번 스택 수열 (파이썬/Python)

문제 (링크) 알고리즘 분류 - 자료 구조, 스택 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 ..

Algorithm 2023.12.25

[Algorithm] 백준 - 2798번 블랙잭 (파이썬/Python)

문제 (링크) 알고리즘 분류 - 브루트포스 알고리즘 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한..

Algorithm 2023.12.23

[Algorithm] 백준 - 2920번 음계 (파이썬/Python)

문제 (링크) 알고리즘 분류 - 구현 문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다. 출력 첫째 줄에 ascending, descending, mixed 중 하나를 출력한다..

Algorithm 2023.12.23

[Java] REST API URI 디자인을 위한 7가지 규칙

URI RFC 3986은 다음과 같이 일반 URI 구문을 정의합니다. URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragment ]​ 1. URI 구성요소 API 내에서 사용되는 URL의 구조는 소비자에게 의미가 있어야 하며, URL은 이해 가능성과 사용성을 높이기 위해 예측 가능한 계층적 구조를 따라야 합니다. URL은 다음과 같이 표준 명명 규칙을 따라야 합니다. https://gw.api.gov.au/namespace/project-name/v1/collection?fields=startDate,endDate \___/ \___________/ \__________________________________/ \_______________..

Java 2023.10.10

[Docker] 도커에 Jenkins 설치

사전 준비 1. Docker Desktop 설치 2. Docker 사전 지식 Jenkins 설치 docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 --restart=on-failure --name jenkins-server jenkins/jenkins:lts-jdk17 1. -d: 백그라운드 모드 2. -v: 데이터 바인딩 3. -p: 외부 접속 8080 포트 바인딩 4. --restart: 비정상 종료 시 컨테이너를 재실행 5. --name: 컨테이너 이름 6. image: jenkins/jenkins:lts-jdk17 Jenkins 접속 확인 * http://localhost:8080 접속 $ docker exec -it $CONTAINER_..

Docker 2023.10.10

[Spring] JUnit5 테스트 코드 작성

테스트 코드를 작성해야 하는 이유 코드 테스트는 소프트웨어 개발 과정에서 매우 중요한 부분입니다. 아래는 코드 테스트를 실시해야하는 이유 몇 가지입니다. 1. 버그 발견: 코드 테스트를 통해 프로그램 내의 버그와 오류를 식별할 수 있습니다. 이렇게 발견된 버그를 수정하면 소프트웨어의 안정성과 신뢰성을 높일 수 있습니다. 2. 기능 검증: 코드 테스트는 소프트웨어의 기능을 확인하는 데 사용됩니다. 시스템이 기대대로 작동하는지 확인하고, 모든 기능이 올바르게 구현되었는지 확인할 수 있습니다. 3. 코드 변경 관리: 코드를 수정하거나 업데이트할 때, 테스트를 통해 변경된 코드가 이전 버전과 호환되는지 확인할 수 있습니다. 이를 통해 새로운 기능 추가나 버그 수정을 안정적으로 수행할 수 있습니다. 4. 코드 문..

Spring 2023.10.06

[DB] MySQL IN과 EXISTS 차이

MySQL IN과 EXISTS 차이 MySQL에서 `IN`과 `EXISTS`는 서로 다른 방식으로 데이터를 비교하는 데 사용되는 두 가지 다른 조건절입니다. 각각의 차이점과 어떤 상황에서 사용해야 하는지에 대해 설명하겠습니다. 1. IN 조건절은 지정된 값 목록과 비교하여 결과를 필터링하는 데 사용됩니다. 일반적으로 하나 이상의 값을 비교할 때 사용됩니다. 예를 들어, 다음 쿼리는 customers 테이블에서 customer_id가 1 또는 2 또는 3인 고객을 선택합니다. SELECT * FROM customers WHERE customer_id IN (1, 2, 3);​ 명시적인 값 목록을 비교하기 때문에 간단하고 직관적입니다. 2. EXISTS 조건절은 하위 쿼리의 결과에 따라 조건을 평가합니다. ..

DB 2023.09.24