분류 전체보기 1187

[프로그래머스] 옹알이(2)

문제 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/133499 머쓱이가 돌보는 조카는 "aya", "ye", "woo", "ma", 그리고 이 네 가지 발음을 조합해 만들 수 있는 발음 밖에 하지 못한다. 그리고 연속해서 같은 발음을 하는 것을 어려워한다. 입력으로 문자열 배열 babbling이 주어지면 머쓱이의 조카가 발음할 수 있는 단어의 개수는 몇 개인가? 내 풀이 단순하게 접근했다. 1. 문자열 b이 조카가 발음할 수 있는 문자열 defi로 시작하는지 확인한다. 단, 이전에 발음한 문자열 pre이 아니어야 한다. 2. 만약 조건에 맞으면 발음한 문자열 pre을 갱신하고, 문자열 b를 문자열 defi 길이만큼 앞에서 자른다. 3. ..

Algorithm 2023.08.10

[알고리즘] 어떤 수의 모든 약수 구하기

개요 수학에서 약수(divisior)란 어떤 수를 나누어 떨어지게 하는 수를 말한다. 알고리즘 문제를 풀다 보면 약수를 다룰 일이 많다. 보통 어떤 수의 모든 약수를 찾는다던가, 약수의 개수를 찾게 되는데 이 글에서는 어떤 수의 모든 약수를 찾는 방법을 적어둔다. 일반적인 방법 약수를 찾을 때 가장 단순하게 접근하는 방법은 반복문을 활용하는 것이다. 예로 들어 100의 모든 약수를 찾는다고 가정할 때 1부터 100까지의 모든 수에 대해 100을 나누어 떨어지게 하는 수를 찾는 것이다. def get_divisior(num): result = [] for i in range(1, num + 1): if num % i == 0: result.append(i) return result if __name__ =..

Algorithm 2023.08.09

[Airflow] DB Clean

개요 Airflow는 서비스 동작에 필요한 데이터를 MySQL이나 PostgreSQL과 같은 RDB에 저장한다. 서비스 시간이 길어질수록 dag_run, task_instance 등의 정보가 누적되면서 용량을 차지하는데 이러한 부분은 어떻게 관리해야 할까? 일반적으로 특정 보관주기를 정해두고 주기적으로 오래된 데이터를 삭제할 것이다. Airflow에서는 어떻게 관리하는지 적어둔다. 참고로 GCP에서는 30일 정도의 보관주기를 권하고 있고, 대개 log, task_instance, dag_run, xcom 테이블이 용량을 많이 차지한다고 한다. (참고 : Airflow 데이터베이스 삭제 ) teamclairvoyant - db-cleanup 보통 teamclairvoyant의 airflow-maintena..

Apache Airflow 2023.08.08

[Git] 원격 저장소 주소 변경

개요 회사의 전사 GitLab 주소가 변경되어 로컬 저장소에서 원격 저장소의 주소를 변경해야 한다. 방법을 적어둔다. 원격 저장소 정보 확인 git remote -v로 저장소 이름과 주소를 확인할 수 있다. 등록된 주소가 여러 개라면 등록된 저장소를 전부 출력한다. git remote -v 원격 저장소 주소 확인 원격 저장소의 URL을 확인할 때는 remote get-url 명령을 사용할 수 있다. git remote get-url remote set-url 원격 저장소의 URL을 변경한다. 을 지정하지 않으면 첫 번째 URL을 로 변경한다. --add 옵션을 사용하면 새 URL을 추가한다. usage: git remote set-url [--push] [] or: git remote set-url --..

Git | GitLab 2023.08.07

[Linux] sed - 파일의 특정 범위 출력

개요 crontab 설정 등 파일의 행 수가 너무 길어서 특정 행 범위만큼만 출력하여 확인하고자 한다. 방법을 정리해 둔다. 기존 sed 명령어 사용법을 정리한 글은 아래와 같다. 2021.08.24 - sed - 문자열 치환 2021.07.26 - sed - 쉘에서 파일 내용 일부 삭제 명령어 파일이나 표준 입력의 특정 행 범위를 출력할 때는 -n 옵션에 p 패턴을 사용한다. 패턴 p는 현재 패턴 공간을 인쇄하라는 명령이다. sed -n ', p' # 예시 man sed | sed -n '10, 20p' 만약 특정 행부터 마지막 행까지 출력하고 싶을 때는 아래와 같이 사용한다. sed -n ', \$p' # 예시 man sed | sed -n '200, \$p' 참고 문서 https://jhnyang...

Linux 2023.08.04

[Linux] SSH 접속 시 WARNING: UNPROTECTED PRIVATE KEY FILE! 에러

현상 pem 키를 이용해 서버에 SSH 접속 시도 시 아래와 같은 에러가 발생하면서 연결에 실패했다. 해결해보자. 원인 Public key로 SSH 인증을 시도하면 SSH Client는 Private Key가 위치한 디렉터리와 Private Key 파일의 권한을 확인한다. SSH Private Key 파일은 민감한 정보이기 때문에 소유자 이외의 다른 사용자가 읽을 수 있으면 위에 같은 UNPROTECTED PRIVATE KEY FILE! 에러가 발생하면서 동작하지 않는다. 해결 파일을 소유자만 읽을 수 있도록 group, other 권한을 제거하면 된다. 600 또는 400 정도로 설정하면 된다. cd ~/.ssh chmod 600 *.pem chmod 400 *.pem 권한을 정리한 후에 SSH 접속을..

Linux 2023.08.03

[AWS] CloudShell 이란

CloudShell 브라우저 기반의 사전 인증된 Shell로, AWS Management Console에서 사용할 수 있다. CloudShell을 시작하면 Amazon Linux 2 기반의 컴퓨팅 환경이 생성되고 Bash, PowerShell, Z shell 등의 원하는 쉘을 이용해 AWS CLI를 사용할 수 있다. 즉, 별도의 설치 없이 AWS CLI를 수행할 수 있다. 단, CloudShell을 이용하기 위해서는 AWSCloudShellFullAccess와 같은 권한이 필요하다. 이 글에서는 간단히 CloudShell에서 제공하는 기능을 살펴보고 직접 사용해보려고 한다. 기능 CloudShell은 다음과 같은 기능을 지원한다. AWS CLI AWS 콘솔에 로그인한 자격증명으로 Shell을 시작한다. ..

AWS 2023.08.02

[Superset] URL 하이퍼링크 사용하기

개요 Superset Chart의 값을 클릭하면 적절한 페이지로 이동하는 하이퍼링크를 사용하고 싶다. 하지만 Superset 2.0에서는 지원하지 않는 것으로 보인다. 다만 Table Chart에서 HTML를 적용할 수 있는 것 같아 방법을 정리한다. 다만 Pivot Table이나 다른 Chart에서는 사용할 수 없어 보인다. 방법 하이퍼링크를 사용할 수 있는지 정도만 확인하고자 별도 데이터세트 없이 테스트한다. 1. 아무 데이터세트를 이용해 Table Chart 생성 페이지로 이동한다. 2. Chart 설정에서 간단히 단순 문자열 URL 값을 추가해 본다. UPDATE CHART 버튼을 눌러 Chart를 확인해 보면 단순히 문자열로 표시되는 것을 확인할 수 있다. 3. 값을 입력하면 원하는 페이지로 이..

Apache Superset 2023.08.01

[MySQL] NOT NULL 날짜 데이터 조회 시 NULL로 보이는 경우

현상 다음과 같이 정의된 테이블이 있다고 하자. CREATE TABLE test ( id int NOT NULL, diagnosis_date datetime NOT NULL DEFAULT current_timestamp, PRIMARY KEY (id, diagnosis_date) ); 스키마에 의하면 diagnosis_date가 NOT NULL인데 데이터를 조회하면 아래와 같이 NULL로 세팅된 데이터가 존재했다. SELECT diagnosis_date FROM test WHERE diagnosis_date IS NULL; 원인 사용하고 있는 Tool이 유효하지 않은 날짜 데이터를 처리하는 방식에 의한 결과일 수 있다. 이런 경우 mysql client를 이용하면 좀더 명확하게 확인할 수 있다. mysq..

Database 2023.07.31

[AWS cli] s3 sync/cp - An error occurred () when calling the GetObjectTagging operation: Access Denied

개요 Ubuntu 14.04 LTS에서 사용하고 있던 aws s3 sync, cp 명령이 동일하게 구성한 Ubuntu 22.04 LTS에서 아래와 같은 에러를 발생시키며 동작하지 않았다. 실행 명령어 aws s3 cp \ --profile=dev \ s3://prd-bucket/test/parser-v1.parquet s3://dev-bucket/test/parser-v1.parquet 발생 오류 메시지 copy failed: s3://s3://prd-bucket/test/parser-v1.parquet to s3://dev-bucket/test/parser-v1.parquet An error occurred (AccessDenied) when calling the GetObjectTagging oper..

AWS 2023.07.28