분류 전체보기 1191

[Python] 2차원 배열을 1차원 배열로 변환

2차원 배열을 1차원 배열로 변환 프로그래밍을 하다 보면 2차원 배열을 1차원 배열로 변환해야 할 때가 있다. 보통 아래와 같이 반복문을 사용해서 리스트를 누적시키는데, 이 외의 방법을 정리한다. my_list = [[1, 2], [3, 4], [5, 6]] answer = [] for element in my_list: answer += element sum(iterable, start) sum 함수는 매개변수로 전달받은 start에 iterable의 모든 데이터를 더한다. list1 = [[1, 10], [2, 22], [3, 19], [4, 7]] list2 = sum(list1, []) print(list2) 위 코드에서 sum(list1, [])은 [] + [1, 10] + [2, 22] + [..

Python 2022.07.01

[Docker] 이미지/컨테이너 파일로 저장/로드

docker commit 도커는 일반적으로 build, commit 명령으로 만든 이미지를 저장소에 업로드하고, 업로드한 이미지를 내려받아 사용한다. 다만 간혹 저장소를 거치지 않고 도커 이미지를 옮겨야 할 때가 존재하는데, 이 경우에는 도커 이미지와 컨테이너를 tar 형식으로 저장할 수 있다. 도커 이미지를 tar로 저장 도커 이미지를 tar 형식으로 저장한다. save 시 도커 이미지 태그를 지정하지 않으면, 이름이 같고 태그가 다른 모든 이미지를 저장한다. docker save [OPTIONS] IMAGE [IMAGE...] # -o : --output. 표준 출력 대신 파일로 저장한다. # 예시 docker save ubuntu -o ubuntu.tar 또는 아래와 같이 파일 리다이렉션으로도 실행..

Docker 2022.06.30

[tar] 압축/해제

tar Tape ARchiver의 준말로 여러 파일을 하나의 파일로 묶거나 풀 때 사용한다. 💡 아카이버 (Archiver) 여러 개의 파일을 하나로 파일로 합치는 프로그램 파일을 저장 장치에 저장하거나 전송할 때 파일이 많으면 관리하기 힘들기 때문에, 하나의 파일로 처리하기 위한 목적으로 만들어졌다. tar는 여러 파일을 하나의 파일로 묶기만 할 뿐, 데이터 크기를 줄이기 위한 압축을 수행하지는 않는다. 대신 gzip, bzip2 등의 방식으로 압축할 수 있는데, 이는 tar 명령의 옵션으로 처리할 수 있다. tar 명령에 의해 만들어지는 파일은 .tar 확장자를 사용한다. gzip으로 압축된 경우에는 .targz, tgz을, bzip2로 압축된 경우에는 .tar.bz2, .tb2, tbz, tbz2 ..

Linux 2022.06.29

[Shell Script] Variables - 2

Variables 2022.06.27 - [Shell Script] Variables - 1 글에 이어서 작성한다. Variable states 변수는 3가지 상태를 가질 수 있다. 1. 변수 없음 또는 unset 변수에 값을 대입한 적이 없는 상태로 아래 명령어로 선언만 했거나 unset 명령을 사용한 경우에 해당된다. declare local 2. 값이 NULL인 경우 = ="" ='' 3. 값이 NULL 이외인 경우 =123 =" " ='hello, world' 값 구분하기 조건문 if를 사용하면 값을 가진 상태와 가지지 않은 상태를 구분할 수 있다. 값이 없는 경우 test -v ; echo $?; 💡 test 명령 파일 형식 또는 값을 비교한다. 값이 없거나 NULL인 경우 test -z ; e..

Linux/Shell Script 2022.06.28

[Shell Script] Variables - 1

Variables 변수명은 알파벳, 숫자, _로 구성되며, 숫자는 맨 처음에 올 수 없다. 변수 이름을 대문자로 사용할 때는 환경 변수와 중복되지 않도록 주의해야 하며, 자식 프로세스에서도 생성한 변수를 사용할 때는 export해야 한다. 현재 Shell에 정의된 모든 변수 확인 compgen -A variable 또는 $ 를 입력하고 tab을 입력하여 변수 목록을 확인할 수도 있다. 정의된 변수 삭제 unset -v # 예시 unset -v num 특징 같은 줄에 여러 변수를 생성할 수 있다. ;로 구분하지 않아도 된다. 단 local, declare, export 명령을 사용하는 경우에는 적용되지 않는다. foo=100 bar=$foo zoo=$bar echo $foo $bar $zoo 변수명으로 명..

Linux/Shell Script 2022.06.27

[Git] git config 설정 확인/초기화

git config 2021.08.14 - git 사용자 설정에서는 git 사용 환경, 그중에서도 사용자 설정하는 방법에 대해 정리해두었다. 이 글에서는 설정을 수정하기 위해 초기화하는 방법을 정리해둔다. git config 설정 확인 현재 설정은 --list 옵션 또는 --get 옵션을 통해서 확인할 수 있다. 로컬 저장소마다 설정이 다를 수 있으므로, 확인할 로컬 저장소로 이동하여 확인하는 것이 좋다. 모든 설정 확인 --list 옵션을 이용해 모든 설정을 확인한다. git config -l # -l : --list. 모든 설정 확인 특정 설정 확인 --get 옵션을 이용해 특정 설정값을 확인한다. --get은 생략할 수 있다. git config -get # 또는 git config 설정 초기화 -..

Git | GitLab 2022.06.26

[Shell Script] Escape Sequences

Escape 문자 Escape 문자는 아래의 경우에서 처리된다. echo -e " " 또는 echo -e ' ' $ ' ' printf "" 또는 printf ' ' printf %b sh에서의 echo " ", echo ' ' 모두 이스케이프 문자를 처리한다. 따라서 -e 옵션이 없다. Quotes에 따른 escape 문자 처리 비교 echo 명령의 -e 옵션에 따른 escape 문자 처리 해석 시에는 -e 옵션을 제거한 후 명령을 실행해보고 비교하면 된다. sh와 bash에서 8진수, 16진수 처리 sh에서는 echo, printf에서 16진수를 사용할 수 없다. bash는 echo, printf, $ ' ' 모두 처리가 조금 다르다. sh, bash 모두 사용하려면 8진수를 사용해야 한다. 8진수,..

Linux/Shell Script 2022.06.26

[AWS cli] S3 sync

S3 sync 디렉터리와 S3 경로를 동기화한다. 원본 디렉터리에서 지정한 타깃 경로로 새 파일 및 업데이트된 파일을 재귀적으로 복사한다. 즉, 원본 디렉터리와 타깃 경로에 존재하는 파일의 차이(변경일, 해시값, 파일 크기) 등을 비교하여 차이가 있는 파일만을 업데이트한다. 리눅스의 rsync 명령어와 유사하다. sync 명령은 S3 버킷에 푸시하는 데이터 양을 줄임으로써 비용을 절감할 수 있다. 사용법 aws s3 sync / / /ORIGIN_PATH와 /TARGET_PATH 각각이 로컬 디렉터리인지 s3 경로인지에 따라 업로드, 다운로드, 버킷 간 동기화가 가능하다. 로컬 디렉터리에서 S3 버킷으로 동기화 (업로드) aws s3 /PATH/LOCAL s3://TARGET/PREFIX # 예시 aws..

AWS 2022.06.25

[BOJ] 9546 - 3000번 버스

문제 https://www.acmicpc.net/problem/9546 n명의 승객을 태우고 있는 3000번 버스는 버스 정류장마다 문을 연다. 정류장마다 타고 있는 승개의 수의 절반과 반 명의 승객이 내린다. k개의 정류장에서 승객이 내렸고, 마지막 정류장에서 승객이 없었다면 맨 처음 타고 있던 승객이 몇 명인지 구하여라. 풀이 t번째 정류장에서의 승객의 수를 \( n_t \)라고 하자. 정류장마다 내리고 남은 승객의 수는 아래와 같이 계산할 수 있다. $$ \begin{matrix} n_t - (0.5n_t + 0.5) = n_{t+1} \\ 0.5n_t - 0.5 = n_{t+1} \end{matrix} $$ 마지막 정류장에서의 승객이 0명이므로, 정류장이 1개인 경우, 2개인 경우, 3개인 경우…..

Algorithm/백준 2022.06.24

[k8s] drain

drain kubectl drain 영어로 배수구, 물 빠짐 등의 의미로, 노드에 존재하는 모든 Pod를 제거하고, Pod를 다른 노드에 스케쥴링하도록 한다. drain 한 node는 cordon을 실행한 것과 동일하게 SchedulingDisabled 상태가 되기 때문에 신규 Pod를 스케쥴링하지 않는다. drain은 커널 업그레이드, 하드웨어 유지 보수 등의 노드 관리를 위해 노드에서 포드를 안전하게 제거할 때 사용한다. 동작 순서 1. 새 포드가 노드에 스케쥴링되지 않도록 한다. (cordon) 2. 노드에서 실행 중이던 포드를 삭제한다. 이 때 Daemonset으로 실행된 포드가 존재하면 drain에 실패한다. 3. ReplicationController, ReplicaSet, Job, Daemo..

Kubernetes 2022.06.23