[Git] 파일 내용 비교하기 (git diff) Git diff : Working Directory와 Staging Area간의 비교 commit간의 비교, branch간의 비교도 가능 Git diff 명령어 commit된 파일 상태와 현재 수정중인 상태 비교 git diff commit된 파일 상태와 add된 파일 상태 비교 git diff --staged commit간의 상태 비교 1 (commit hash) git diff [커밋 해쉬 1] [커밋 해쉬 2] 🔎 commit hash : git에서는 commit id로 hash값을 사용 commit hash는 git log를 통해서 확인 가능 commit 간의 상태 비교 2 (HEAD) : 가장 최근의 커밋과 그 전의 커밋을 비교 git diff ..
[Git] Branch 생성, 삭제, 가져오기 Branch 생성 git branch git branch 생성한 브랜치로 이동 git checkout 생성과 동시에 이동 git checkout -b Branch 변경 git branch -m Branch 삭제 git branch -D 원격 저장소에서 Branch 가져오기 원격 저장소 업데이트 git pull 원격 저장소의 브랜치 리스트 확인 git branch -r 원격 저장소의 branch 가져오기 git checkout -t origin/ 원격 저장소와 로컬 저장소에 동일한 branch 명이 있을 때, 강제로 가져오기 git checkout -f -t origin/
[Git] Pull과 Fetch의 차이 Pull : 원격 저장소에서 변경된 메타 데이터 정보를 확인할 뿐만 아니라, 최신 데이터를 복사하여 로컬 Git에 가져옴 git pull 원격저장소 브랜치 Fetch : 로컬 Git에게 원격 저장소에서 최신 메타데이터 정보를 확인하라는 명령어를 전달 원격 저장소에 변경 사항이 있는지 확인만 하고, 변경된 데이터를 로컬 Git에 실제로 가져오지 않음 git fetch 원격저장소 브랜치가 여러개라면 git fetch후 변경이 있는 브랜치로 가서 확인 git brach -r git checkout 브랜치 git log를 사용해 commit 내역 확인 git log ✔ git fetch를 사용하면 마지막 pull 이후 원격 저장소 또는 브랜치에 적용된 변경 사항을 확인 할..
[Git] 충돌 (Conflict) 1. Merge 과정에서 발생하는 충돌 Merge 과정 중 충돌이 발생했을 때 1️⃣ Merge 취소 --abort 옵션으로 취소 후 status로 상태 확인 git merge --abort git status 2️⃣ 충돌이 난 파일 수정 충돌이 난 파일의 이름이 myfile일 때, myfile을 확인 후 수정 파일을 열어보면 어느부분에서 충돌이 났는지 확인 할 수 있고, 수정하면 됨 > master hello world 3️⃣ 충돌이 난 파일 add 후 다시 commit git add myfile git commit -m "resolve coflict!" 2. Rebase 과정에서 발생하는 충돌 Rebase 과정에서 충돌이 일어날 경우, Rebase가 진행되지도 끝나..
[AWS] Elasticache Redis 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어 데이터베이스(NOSQL DBMS)로 분류가 되기도 하고 Memcached와 같이 인메모리 솔루션으로 분류되기도 함 가장 단순한 키-밸류 타입을 사용하고 있으며, 데이터 모델을 복잡할수록 성능이 떨어지므로 redis는 단순한 구조를 통해 높은 성능을 보장 ❓ 인 메모리 DB 컴퓨터의 주 메모리에 모든 조직 또는 개인의 데이터를 저장 보조 기억 장치를 사용하는 기존 데이터베이스에 비해 빠름 Memcached 오픈소스이며 분산 메모리 캐싱 시스템, 사용이 간편한 고성능 인 메모리 데이터 스토어 데이터 베이스의 부하를 줄여 동적 웹 어플리케이션의 속도개선을 위해 사용됨 DB나 API 호출에 대한 횟수를 줄일 수 있음..
[Git] Rebase Git에서 한 브랜치에서 다른 브랜치로 합치는 방법에는 두가지가 있음 하나는 Merge고 하나는 Rebase Merge 브랜치가 experiment와 master로 나누어진 경우 두 브랜치를 합치는 가장 쉬운 방법은 Merge 명령어를 사용하는 것 커밋 두개 (C3, C4) 와 공통 조상 (C2)를 사용하는 3-way Merge로 새로운 커밋 (C5) 을 만들어냄 Rebase C3에서 변경된 사항을 Patch로 만들고 이를 다시 C4에 적용하는 방법이 있음 이와 같은 방식을 Rebase라고 함 🔎 Git Patch : Commit을 하나의 Patch 파일로 만들 수 있음 패치를 이메일로 보내거나 여러개의 커밋을 하나의 패치로 만들 수 있음 아래와 같은 명령어로 rebase git ..
[Pandas] 결측치 제거 & 교체 데이터를 merge하는 등 가공을 할 때, 결측치 때문에 결과가 제대로 나오지 않는 경우가 있음 Dataframe에서 결측치를 제거하거나 교체하는 방법을 찾아봄 데이터 A컬럼과 B컬럼에 결측치가 있음 import pandas as pd df = pd.DataFrame({'A': [1, 2, None, 4, 5], 'B': [None, 2, 3, None, 5], 'C': [1, 2, 3, 4, 5]}) A B C 0 1.0 NaN 1 1 2.0 2.0 2 2 NaN 3.0 3 3 4.0 NaN 4 4 5.0 5.0 5 결측치 제거 결측치가 있는 행이 모두 제거됨 df.dropna(inplace=True) print(df) A B C 1 2.0 2.0 2 결측치 교체 ..
[Airflow] Xcom Xcom : DAG 내의 task 사이에서 데이터를 전달하기 위해서 사용 각각의 task 끼리 작은 정보를 주고 받을 수 있게하는 방법 ✔ key Xcom에 저장된 객체를 불러오기 위해 알아야할 요소 중 하나 따로 지정해주지 않으면 default로 return_value로 설정 ✔ task_id Xcom에 저장된 객체를 불러오기 위해 알아야할 요소 해당 task에서 발생되는 Xcom에 자연스럽게 매핑 ✔ value Xcom에 저장된 객체 또는 값 해당 value를 불러오기 위해서는 key, task_id가 필요하다. Example 🔎 XCom을 사용하여 작업 간에 데이터를 전달하는 예 Operator Import from airflow import DAG from airflow..
[Airflow] 조건에 따라 분기 (Branch) BranchPythonOperator 분기를 위한 워크플로가 필요하거나, 임의의 조건에 따라 분기를 할 때 사용 반환된 task_id를 따르고 다른 모든 경로를 건너뜀 Operator Import import random from datetime import datetime from airflow import DAG from airflow.operators.python import PythonOperator from airflow.operators.python import BranchPythonOperator from airflow.operators.dummy_operator import DummyOperator 함수 정의 분기에 사용될 조건을 정의 b..
[INFRA] 배포 전략 1. 롤링 (Rolling) : 서버가 점진적으로 교체되면서 모든 서버가 교체될 때까지 진행 관리가 간편하고 상황에 따라 손쉽게 롤백이 가능 사용중인 인스턴스에 트래픽이 몰릴 수 있음 호환성 문제 발생 가능 2. 블루 그린 (Blue-Green) : 기존 버전을 유지한 채로 새 버전을 배포하고 일제히 한번에 전환 운영 환경에 영향을 주지 않고 새로운 버전을 테스트 할 수 있음 자원이 두배로 필요 -> 비용이 많이 듦 3. 카나리 (Canary) : 기존 버전을 유지 한 채로 일부 버전만 신규 버전으로 배포 신규 버전에 버그나 이상은 없는지 확인 가능 네트워크 트래픽 제어가 부담 될 수 있음
[Linux] 리눅스 파일 압축 tar Archiving : 원본의 속성을 그대로 보존하면서 여러개의 파일/디렉토리 묶어서 보존(Backup) tar 특정 디렉토리 안의 파일을 하나의 Archive 파일로 묶어 보관 tar -f file 새롭게 만들 아카이브 파일의 이름을 지정할 때 사용 (기본 옵션) -c create 새로운 아카이브를 생성, 기존 아카이브 덮어쓰기 (파일 묶을 때 사용) -t list 아카이브 파일에 포함된 내용 출력 -v verbose 처리되는 과정(파일 정보)를 자세히 나열 -x extract 아카이브 파일을 해제 zip Compression : 큰 사이즈의 파일을 작은 사이즈로 압축해서 보존 zip 하나의 파일로 묶어주고(Archiving) 무손실 압축(Compression)을 ..
[Docker] 도커 이미지 빌드 (Docker Image Build) 도커 파일 (Dockerfile) : 컨테이너 빌드를 위한 명령어의 집합, 다양한 인스트럭션을 지원하고 대소문자를 구분하지 않음 ❗ 베이스 이미지는 필수 FROM 컨테이너의 베이스 이미지 (OS) LABEL 컨테이너 빌더의 정보, 버전과 같은 부가정보 제공 RUN 컨테이너 빌드를 위해 base image에서 실행 할 Command ADD 컨테이너 빌드 시 호스트의 파일을(tar, url 포함) 컨테이너로 푸시 COPY 컨테이너 빌드 시 호스트의 파일을 컨테이너로 복사 WORKDIR 컨테이너 빌드 시 명령이 실행될 작업 디렉토리 설정 ENV 환경 변수 지정 USER 명령 및 컨테이너 실행 시 적용할 유저 설정 EXPOSE 컨테이너 동작..