[Shell Script] While문에서 횟수 제한하기 bash 쉘에서 로그인을 하는 스크립트를 생성했는데, 로그인 실패 시 무한으로 retry가 되는 스크립트가 생성이 됐다 😅 While문에서 횟수 제한을 하는 방법은 매우 간단하다. ((n++)) && ((c==4)) && echo "Login Failed" && exit 9 다음과 같이 로그인 시도 횟수가 3회를 넘어가면 스크립트를 종료시켰다. n은 미리 정의해주지 않아도 된다. 전체 코드는 다음과 같다. command_to_run="" while true; do output=$(eval $command_to_run 2>&1) ((c++)) && ((c==4)) && echo "Login Failed" && exit 9 if [[ $output =..
[K8s] Job, CronJob https://heywantodo.tistory.com/35 [K8s] 쿠버네티스(Kubernetes) 컨트롤러 (2) 쿠버네티스 (Kubernetes) 컨트롤러 (2) DaemonSet DaemonSet 전체 노드에서 Pod가 한 개씩 실행되도록 보장 log 수집기, 모니터링 에이전트와 같은 프로그램 실행 시 적용 apiVersion: apps/v1 kind: DaemonSet metadata: n heywantodo.tistory.com 앞선 컨트롤러 포스팅에서 job과 cronjob을 짤막하게 설명했는데, 내용이 헷갈리는 부분이 있어 따로 정리해보고자 한다. Job 파드의 애플리케이션 실행이 완료/종료되는 것에 초점을 맞춘 컨트롤러 https://kubernetes..
[Git] Stash git stash는 파일의 변경 내용을 일시적으로 기록해두는 영역이다. commit을 하기 이전에 작업을 진행 중일 때, git stash로 현재 변경했던 내용들을 일시적으로 저장을 할 수 있다. 작업을 처리 후 임시 저장한 내용들을 다시 불러와 작업을 이어서 할 수 있다. stash 저장 git status를 통해 확인되는 변경된 내용들을 저장 할 수 있다. git stash push -m "message" git stash save "message" #save 생략 가능 git stash 변경 내용을 임시 저장을 하는 것이기 때문에 새롭게 추가된 파일(untracked file)인 경우는 stash를 통해 저장되지 않는다. stash 목록 조회 stash는 stack 형태로 최근..
[Git] switch/restore Git 2.23에서 checkout을 대신 할 switch, restore가 도입되었다고 한다. checkout이 대체된 이유는 하나의 명령어가 가진 기능이 너무 많기 때문이라고 한다. 명령어 설명 checkout Switch branches or restore working tree files switch Switch branches restore Restore working tree files git switch switch는 checkout에서 브랜치를 변경하는 부분만 담당한다. git switch master checkout의 -b 옵션처럼 -c 옵션으로 브랜치 생성 후 바로 전환이 가능하다. git switch -c new-branch 특정 브랜치나 거밋에서..
[Python] CSV 파일 변환할 때 쌍 따옴표(double quotation) 추가하기 데이터 프레임의 전체 컬럼에 쌍 따옴표를 추가하고 싶을 땐, quoting=csv.QUOTE_ALL 옵션을 사용하면 된다. import csv df.to_csv(df, quoting=csv.QUOTE_ALL) 하지만 나는 특정 컬럼에 쌍 따옴표를 추가 후 csv 파일로 변환을 하고 싶었는데, 추가 후 변환을 하면 자꾸 쌍따옴표가 3쌍이 되서 나왔다 😭😭 이렇게 apply를 통해서 컬럼 데이터에 쌍따옴표를 추가 후 df를 출력하면 쌍따옴표가 잘 붙어있지만 import pandas as pd df = pd.DataFrame({'학번':[1, 2, 3, 4], '키':[163, 153, 175, 180], '몸무게':[..
[Numpy] 조건을 만족하는 위치의 인덱스 찾기 (np.where) pandas의 loc처럼 numpy의 np.where() 함수를 사용하면 배열 내의 특정 조건을 만족하는 원소의 index를 찾아낼 수 있다. 만약 배열 내에서 짝수인 요소의 인덱스를 찾으려면 다음과 같이 할 수 있다. import numpy as np arr = np.array([2,3,6,7,10,13,14]) np.where(arr%2==0) loc처럼 특정 조건을 만족했을 때, 대체하는 것 또한 가능하다. 요소가 짝수면 2를 반환하고 홀수면 1을 반환해 보자 arr2 = np.where(arr%2==0, 2, 1) 다음과 같이 조건에 맞는 인덱스를 찾아 수정할 수 있다. 참고 https://jimmy-ai.tistory.com/..
[Git] Merge Request command Line으로 생성하기 자동으로 MR 생성을 해야하는 과제가 있었다. 찾아보니 gitlab 11.10 부터 git 2.10 이상을 사용하는 경우, 다음과 같이 CLI로 Merge Request를 생성할 수 있었다. git push -o merge_request.create 함께 사용할 수 있는 옵션들은 다음과 같다. git push \ -o merge_request.create \ -o merge_request.remove_source_branch \ -o merge_request.title="[Title]" -o merge_request.description="[Description]" -o merge_request.targe=[target branch ..
[Airflow] 조건에 따라 Task 실행 조건에 따라 task가 실행되도록 구성을 하고 싶어, airflow에서 사용할 수 있는 operator를 찾아보니 활용할 수 있는 두가지 방업이 있었다. BranchPythonOperator task_id를 output으로하는 python callable을 통해 다음에 이어지는 작업 요소를 결정한다. 보통 선행 작업의 상황에 따라 다른 작업으로 이어져야 하는 경우에 사용한다. https://heywantodo.tistory.com/57 [Airflow] 조건에 따라 분기 (Branch) [Airflow] 조건에 따라 분기 (Branch) BranchPythonOperator 분기를 위한 워크플로가 필요하거나, 임의의 조건에 따라 분기를 할 때 사용 반환된 ta..
[Pandas] Apply 조건에 맞는 컬럼에서 여러 데이터를 변경하고 싶을 때, loc로 조건을 찾은 후 for문으로 변경하는 방법은 데이터가 많을 때, 시간이 많이 소요되기때문에 비효율적이다. 이 때 pandas에서 제공하는 apply를 사용하면, 열별 혹은 행별로 함수를 적용할 수 있기때문에, 수행 시간이 훨씬 짧고 효율적이다. 다음과 같은 데이터 프레임을 생성 후 df = pd.DataFrame({'학번':[1, 2, 3, 4], '키':[163, 153, 175, 180], '몸무게':[50, 46, 70, 68]}) '키' 컬럼 값에 'cm' 단위를 붙이고 싶으면 다음과 같이 적용이 가능하다. df['키'] = df['키'].apply(lambda x:str(x)+'cm') 적용하고 싶은 함수..
[AWS] profile 확인 AWS 자격 증명을 구성할 때, role이나 access key같은 방법 등을 사용해서 자격 증명을 구성하게 되는데, 구성한 자격 증명은 .aws/credentials에서 프로필을 지정 후 --profile=프로필명으로 구성이 사용이 가능하다. 다만 어떤 자격 증명이 우선 순위에 있는지, 현재 어떤 자격증명이 default로 사용이 되는지 확인을 하고 싶을땐 아래 명령어로 확인이 가능하다 aws sts get-caller-identity 실행 결과 { "UserId": "AIDASAMPLEUSERID", "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/DevAdmin" } 참고 https://passwd...
[AWS Cli] 리전에서 사용가능한 인스턴스 유형 확인하기 인스턴스 타입을 리스트형태로 가져오고 싶었는데, 하드 코딩하기에 양이 많을 때 aws cli를 통해서 지정한 리전에서 사용가능한 인스턴스 유형을 확인할 수 있는 방법이 있었다. ec2 describe-instance-type-offerings를 사용하면 된다. aws ec2 describe-instance-type-offerings \ --filters Name=instance-type,Values=[type] \ --query "InstanceTypeOfferings[].InstanceType" \ --region [region name] 만약 한국 리전에서 사용할 수 있는 R5의 인스턴스 유형을 확인하고 싶을땐, 다음과 같이 명령어를 사용해..