2024/06 20

[백준] 1966 - 프린터 큐

문제문제 : https://www.acmicpc.net/problem/1966일반적으로 프린터 기기는 인쇄 명령을 받은 순서대로 문서를 인쇄한다. 그런데 최근 상근은 다음과 같이 동작하는 새 프린터 소프트웨어를 개발했다.1. 프린터 큐 내 맨 앞에 있는 문서의 중요도를 확인한다.2. 나머지 문서 중 현재 문서보다 높은 중요도의 문서가 있으면, 이 문서는 인쇄하지 않고 큐의 맨 뒤로 재배치한다. 그렇지 않으면 현재 문서를 인쇄한다.프린터 소프트웨어를 사용하여 프린터 큐에 있는 문서의 수와 중요도가 주어졌을 때, 임의 문서가 몇 번째에 인쇄되는지 반환하는 프로그램을 작성하라. 첫줄에는 테스트 케이스의 수가 주어지고, 각 테스트케이스는 두 줄로 이루어져 있다.테스트케이스의 첫번째 줄에는 문서의 개수 n과 인쇄..

[Python] youtube-transcript-api - 동영상 자막 내용 가져오기

개요회사 스터디에서 Youtube를 주제로 사이드 프로젝트를 진행하려고 한다. 관련하여 Youtube에 업로드되어 있는 영상 정보, 예로 들어 제목, 좋아요 수, 싫어요 수, 디스크립션, 자막 등의 정보를 API 등을 통해서 받아오려고 한다. 참고 : 2024.05.27-[YouTube] API로 Youtube 동영상 정보 요청하기 다만, Youtube Data API Videos 공식 문서를 확인해 보면 자막과 같은 스크립트 정보는 응답에 포함되어 있지 않은 것 같다. API나 다른 방식으로 정보를 받아올 방법을 찾다가 해당 기능을 지원해 주는 Python 라이브러리가 있는 것을 확인했다.마침 사용할 언어도 Python이므로, 사용 방법을 적어둔다.  youtube-transcript-apiURL : ..

Python 2024.06.13

[YouTube] API로 Youtube 동영상 정보 요청하기

개요API를 통해 Youtube에 업로드된 비디오나 채널의 정보를 얻으려고 한다.Youtube API 사용 방법에 대해 적어둔다.  프로젝트 생성Youtube 관련 API를 사용하기 위해서는 GCP 프로젝트를 사용해야 한다. 1. GCP 접근 https://console.cloud.google.com/ 로 이동한다. 2. 새 프로젝트 생성 페이지로 이동 상단 메뉴에서 프로젝트 선택 드롭다운을 선택한다.프로젝트 선택 팝업창의 오른쪽 상단의 새 프로젝트를 클릭한다. 3. 프로젝트 생성프로젝트 이름 등을 지정하고 만들기 버튼을 클릭한다. 이상이 없으면 잠깐 대기한 뒤 생성된 프로젝트를 확인할 수 있다.  Youtube API 활성화 1.  API 및 서비스 접근프로젝트의 대시보드에서 바로 접근할 수 있다. 2..

기타 2024.06.12

[K8s] 네트워크 유형 - 외부와 Service 간 통신

개요2024.05.22-[K8s] 네트워크 유형 - Pod와 Service 간 통신에서는 Service의 개념과 동작 방식에 대해서 알아보았다. 다만 Service는 기본적으로 ClusterIP 유형으로 생성되어 클러스터 내부에서만 통신이 가능하도록 되어있다. 그렇다면 외부와 통신을 주고받아야 할 때는 어떻게 해야 할까? 쿠버네티스에서는 NodePort 유형의 Service, Load Balancer 유형의 Service 그리고 Ingress를 통해 외부와의 통신을 가능하게 한다.각각에 대해서 정리해 둔다.   NodePortNodePort 유형의 Service는 기본적으로 Cluster IP 유형과 비슷하지만, Node 네트워크의 IP를 통한 접근을 허용하는 등의 몇 가지 기능을 더 갖고 있다. 즉, ..

Kubernetes 2024.06.11

[K8s] 네트워크 유형 - Pod와 Service 간 통신

개요2024.05.18-[K8s] 네트워크 유형 - 컨테이너 간 통신, 2024.05.19-[K8s] 네트워크 유형 - Pod 간 통신에서 쿠버네티스의 4가지 통신 유형 중 2가지 유형을 살펴보았다. 이번 글에서는 Service의 개념과 Pod과 Service 간 통신에 대해 적어두려고 한다.  ServicePod는 각각의 고유한 주소를 가지기 때문에 어떤 애플리케이션의 엔드포인트로 설정할 수도 있다. 하지만 쿠버네티스에서 Pod는 쉽게 대체되기 때문에 새로 생성된 Pod의 주소가 기존 Pod와 동일함을 보장하지 않는다.이러한 문제를 해결하기 위해 애플리케이션 앞에 서버의 목록을 관리하며 서비스 중인 서버에게 트래픽을 전달하는 reverse-proxy나 load balancer를 구성할 수 있다. 이러한..

Kubernetes 2024.06.10

[K8s] 네트워크 유형 - Pod 간 통신

개요2024.05.18-[K8s] 네트워크 유형 - 컨테이너 간 통신에서는 도커, 쿠버네티스 환경에서의 컨테이너 간 통신에 대해서 정리했다.이번 글에서는 Pod 간 통신에 대한 내용을 적어두려고 한다. Pod 간 통신은 단일 노드에서의 통신 그리고 멀티 노드에서의 통신으로 구분할 수 있다.  단일 노드에서의 Pod쿠버네티스의 Pod는 고유한 IP 주소(veth)를 가지므로, IP 주소로 서로 통신할 수 있다.쿠버네티스는 kubenet이라는 기본적이고 간단한 네트워크 플러그인을 제공한다. 다만 kubenet에는 노드 간 네트워킹, 네트워크 정책 설정과 같은 고급 기능은 구현되어 있지 않기 때문에 Calico, Flannel 등과 같은 CNI 기반 네트워크 플러그인 사용을 권장하고 있다. 일례로 kudead..

Kubernetes 2024.06.07

[K8s] 네트워크 유형 - 컨테이너 간 통신

개요쿠버네티스에서 네트워크는 크게 컨테이너 간 통신, Pod 간 통신, Pod와 서비스 간 통신, 외부와 서비스 간 통신으로 나누어진다.쿠버네티스 환경에서 작업하다 보면 네트워크 관련으로 항상 헤매게 되는 것 같아서 정리해두려고 하는데, 그전에 먼저 네트워크 유형에 대해 정리해보려고 한다.   도커먼제 도커 환경에서 기본적인 네트워크 동작을 알아본다.도커 환경에서 같은 호스트에 존재하는 컨테이너 간의 통신은 docker0이라는 가상 네트워크 인터페이스를 통해 이루어진다. docker0은 호스트 네트워크 인터페이스 또는 디폴트 네트워크 네임스페이스라고 칭해진다.그리고 각 컨테이너는 veth라는 고유한 가상 네트워크 인터페이스를 가지기 때문에 각각의 veth IP주소로 통신한다.컨테이너 내에서는 네트워크 네..

Kubernetes 2024.06.06

[GitLab] 브랜치/TAG 간 비교

개요저장소 내에서 버전 관리를 하면서 태그나 브랜치 간에 차이점을 비교하려고 한다. 예로 들어 v0.4과 v0.5 간의 차이가 발생하는 commit 목록을 확인하고 싶다.확인하는 방법에는 여러 가지가 존재하겠지만, 이 글에서는 GitLab 웹에서 확인하는 방법을 적어두려고 한다.  Compare revisionsGitLab에서느 Compare revisions(Git 리비전 비교) 기능을 사용하여 저장소 내 브랜치나 태그를 기준으로 비교할 수 있다.GitLab 공식 레포지터리를 예로 들어 최신 버전과 직전 버전을 비교해보자. 1. 레포지터리 메뉴 > Code > Compare revisions 클릭GitLab 서버 버전에 따라 메뉴 접근 경로는 달라질 수 있는 것 같다. Code가 아니라 Reposito..

Git | GitLab 2024.06.05

[백준] 2667 - 단지 번호 붙이기

문제문제 : https://www.acmicpc.net/problem/2667그림 1과 같이 정사각형 모양의 지도에서 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 이 지도에서 상하좌우 방향으로 인접한 집의 모임을 단지로 정의하고, 단지에 번호를 붙이려고 한다.그림 2는 그림 1을 단지별로 번호를 붙인 뒤 색을 달리하여 표시한 것이다.지도를 입력받아 단지의 수와 단지 별 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하라.   접근그래프 탐색 방법인 DFS나 BFS를 사용하여 풀어낼 수 있다. 최단 경로를 요구하지 않으므로 DFS, BFS 중 편한 방법으로 구현하면 될 것 같다.다만 지도 내 단지가 하나 이상이므로 테이블 전체를 순회하면서 그래프 탐색을 수행해야 한다. 아무 조건 없이 ..

카테고리 없음 2024.06.04

[알고리즘] 깊이 우선 탐색(DFS) 이란

깊이 우선 탐색깊이 우선 탐색(Depth First Search)이란 그래프 탐색 방법 중 하나로, 최근에 방문한 정점을 선택한 뒤, 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법이다. 주로 깊이 우선 탐색과 같이 언급되는 알고리즘이다.단순 검색 속도는 BFS보다 느리기 때문에 검색이 아닌 순회할 때 많이 사용한다. 즉, 방문할 수 있는 모든 정점을 확인해야 할 때 깊이 우선 탐색을 사용한다. 또한 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법인 백트래킹, 그리고 자동 미로 생성에서 많이 사용한다. 참고로 깊이 우선 탐색으로 찾은 결과는 최단 경로가 된다는 보장은 없다. 또한 해가 없을 경우를 고려하여 탐색할 깊이를 미리 지정할 필요가 있다.   동작 방식임의..

Algorithm 2024.06.03
1 2