분류 전체보기 1187

[프로그래머스] 예상 대진표

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12985 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행하는 게임대회가 개최되었다. 참가자는 각각 1부터 N번을 배정받고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행한다. 각 게임에서 이긴 사람은 다음 라운드에 진출하는데, 다음 라운드에 진출할 참가자는 1번부터 N/2번을 다시 차례대로 배정받습니다. 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받는다. 게임은 최종 한 명이 남을 때까지 진행된다. 이때, 처음 라운드에서 A번을 가진 참가자..

Algorithm 2023.09.21

[AWS] Transit VPC 란

개요 신규 시스템 구성을 위해 VPC/Subnet 구성을 진행하면서 Transit VPC라는 개념을 보게 되었다. 개념만 간단히 정리한다. Transit VPC 데이터 센터나 온프레미스와 AWS VPC를 연결하는 일반적인 방법은 모든 VPC에 가상 회선을 할당해 상호 간의 라우팅이 가능하도록 구성하는 Direct Connect이다. 다만 복수 리전에 걸쳐 구성하기 어렵기 때문에 대안으로 Transit VPC를 사용할 수 있다. Transit VPC는 글로벌 네트워크를 구현하는 방법 중 하나로, 지리적으로 분산되어 있거나 다른 AWS 계정에서 구축된 VPC를 연결한다. Transit VPC를 사용하면 네트워크 관리를 단순화할 수 있고, 여러 VPC와 네트워크를 연결하는데 필요한 연결 수를 최소화할 수 있다..

AWS 2023.09.20

[MySQL] SHOW GRANTS - 계정 권한 확인

개요 Airflow와 같은 서비스의 버전을 업그레이드하다 보면 서비스가 사용하는 RDB의 스키마가 변경되는 경우가 있어 DB에 대한 DDL (CREATE, ALTER, DROP, TRUNCATE) 권한이 필요할 수 있다. 현재 DB 계정에게 부여된 권한을 확인해본다. 사용자 조회 권한을 확인할 사용자를 확인한다. SELECT host, user FROM mysql.user; | host | user | | --------- | ---------------- | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | | localhost | test | test@lo..

Database 2023.09.19

[프로그래머스] 구명보트

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42885 구명보트를 이용해 무인도에 갇힌 사람들을 구출하려고 한다. 구명보트는 최대 2명까지 탈 수 있고, 무게 제한도 있다. 예로 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이면 2/4번째 사람은 같이 탈 수 있지만 1/3번째 사람은 같이 탈 수 없다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 반환하는 함수를 작성한다. 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출..

Algorithm 2023.09.18

[Linux] root 영역 디렉터리 (proc/sys/dev)

개요 이 글에서는 https://mug896.github.io/bash-shell/etc.html 에서 설명하고 있는 / 영역 아래 일부 디렉터리에 대해 간단히 정리한다. /proc 현재 시스템에서 실행되는 프로세스에 대한 정보를 제공하기 위한 가상의 파일 시스템이다. 사용자가 커널이 가지고 있는 정보를 쉽게 사용할 수 있도록 메모리 상에 가상의 파일 시스템을 만들어 구조적으로 제공하는 것으로, 실제 파일이 존재하는 것이 아니다. 각 파일은 커널 내의 특정 함수와 연결되어 있어 실시간으로 read 하여 정보를 확인할 수 있다. 또한 프로세스 정보뿐만 아니라 커널이 가진 여러 시스템 관련 정보도 제공하고 있으며, write 하여 값을 변경할 수도 있다. 즉, 파일 시스템을 통해 직접 커널 옵션 설정을 변경..

Linux 2023.09.15

[Shell Script] Login Shell VS Non-Login Shell

개요 2023.09.13 - [Shell Script] 대화형 VS 비대화형 쉘에서 쉘의 종류를 대화형과 비대화형으로 구분해 봤는데, 이 글에서는 관점을 달리하여 Login Shell과 Non-Login Shell로 쉘의 실행 환경을 구분해 본다. Login Shell Login Shell은 원격 서버에 SSH나 Telnet으로 접속해 login 과정을 거쳐 사용하는 환경이다. 프롬프트 상에서 아래 명령을 실행했을 때, 첫 문자가 '-'이면 로그인 쉘임을 나타낸다. echo $0 또는 아래 명령을 통해 알아볼 수 있다. shopt -q login_shell; echo $? # -q : 나열된 옵션이 모두 활성화되어 있으면 0을 반환한다. Login Shell을 시작할 때는 아래의 파일을 순서대로 읽어 들..

Linux/Shell Script 2023.09.14

[Shell Script] 대화형 VS 비대화형 쉘

쉘 실행 환경 Shell이 실행되는 환경은 크게 두 가지로 구분할 수 있다. 대화형 (Interactive) : 프롬포트를 통해 사용자로부터 직접 명령을 입력받아 실행한다. 비대화형 (Non-Interactive) : 스크립트 파일 등을 실행한다. history, alias, job control과 같은 기능은 기본적으로 대화형 쉘에서 사용하기 위한 기능이므로 비대화형 쉘에서는 비활성화된다. 쉘 실행 환경 확인 아래 명령을 통해 실행 중인 쉘이 대화형인지, 비대화형인지 확인할 수 있다. case $- in *i*) echo interactive shell ;; *) echo non-interactive shell ;; esac set 명령에 의해 설정된 option flags를 저장하고 있는 $- 변수의..

Linux/Shell Script 2023.09.13

[Airflow] celery control - Celery Worker 원격 제어

개요 일반적으로 Airflow Celery Worker는 워커 프로세스를 실행한 서버에서 제어할 수 있다. 하지만 필요에 따라 원격으로 제어해야 하는 경우가 생기는데, 이런 경우에는 Celery CLI를 이용할 수 있다. celery control celery CLI 중 control 명령은 worker를 원격 제어하는 기능을 제공한다. Celery Worker 가이드에서 확인할 수 있는 명령 대부분은 control 명령을 통해 원격으로 제어할 수 있는 것 같다. celery control [OPTIONS] {revoke|revoke_by_stamped_headers|terminate|rate_limit| time_limit|election|enable_events|disable_events|heartb..

Apache Airflow 2023.09.12

[프로그래머스] 다음 큰 숫자

문제 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12911 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의한다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 개수가 같다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수이다. 예를 들어 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 반환하는 함수를 작성하라. 접근 자연수 n을 이진수로 변환한 뒤, 덧셈 연산에 의해 자리값이 01에서 10으로 바뀌는 지점을 찾는다. 남은 오른쪽 자리값은..

Algorithm 2023.09.11

[Airflow] OS 업그레이드 작업 기록 - 서비스 이관

개요 2023.08.29 - [Airflow] OS 업그레이드 작업 기록 - 서비스 검증 환경 구성 고민 2023.09.04 - [Airflow] OS 업그레이드 작업 기록 - 서비스 검증 위 두 개 글에서 Airflow OS 업그레이드 작업 중 서비스 계정의 UID:GID 변경을 위한 검증 환경을 어떻게 구성할지, 그리고 서비스 검증 방법에 대해 고민하고 진행한 내용을 정리했다. 이 글은 서비스 검증까지 완료한 상태에서 서비스 이관을 위해 고민했던 점을 적어둔다. 이슈 사항 현재 구성도는 대략 아래 사진과 같다. 인스턴스에 _NEW가 붙은 리소스가 신규 OS 서버이다. 그리고 작업하고 있는 Airflow는 CeleryExecutor를 사용하는 만큼 Worker를 scalable 하게 사용한다. 보통 A..