분류 전체보기
-
[Git] Branch 전략 - merge, rebase, squash란저장소/git 2022. 2. 27. 16:52
git에서 브랜치를 합치는 전략으로 merge, rebase, squash가 있습니다. merge merge는 가장 간단한 병합 방법으로 크게 2가지의 방식이 많이 사용됩니다. Fast-forward develop 브랜치에서 test-child라는 브랜치를 생성했다고 가정합니다. test-child 브랜치에서 작업을 하고 서버에 푸시까지 완료가 됐다면 아래와 같이 develop 브랜치보다 커밋 포인터가 한칸 위로 올라가있는 것을 볼 수 있습니다. * commit af320b4bc8b555b23e1340db4604958992be9836 (HEAD -> test-child, origin/test-child) | Author: brownbear | Date: Sun Feb 27 15:23:40 2022 +09..
-
[Bigquery] 시간, 숫자, 날짜 생성하기DB/Bigquery 2022. 2. 20. 17:17
PostgreSQL의 시간, 숫자, 날짜 생성하기와 마찬가지로 bigquery에서도 동일한 함수가 존재합니다. postgresql과 차이점은 오버로딩 개념으로 동일한 함수명으로 여러 타입을 받아서 처리했다면 bigquery는 각 타입마다 함수명이 다릅니다. generate_array(start, end [, step]) int타입의 숫자를 입력하여 생성할 때 사용하는 함수입니다. SELECT GENERATE_ARRAY(1, 5) AS example_array; +-----------------+ | example_array | +-----------------+ | [1, 2, 3, 4, 5] | +-----------------+ SELECT GENERATE_ARRAY(0, 10, 3) AS examp..
-
[PostgreSQL] 시간, 숫자, 날짜 생성하기 (generate_series)DB/PostgreSQL 2022. 2. 20. 16:40
파이썬과 같은 프로그래밍 언어에서 1~10까지의 수를 생성하거나 2022-01-01 ~ 2022-01-10 까지의 날짜를 생성하는 것은 반복문을 통해 쉽게 만들 수 있습니다. postgresql에서도 generate_series 함수를 사용하면 이러한 문제를 쉽게 해결할 수 있습니다. generate_series(start, stop, [step 또는 interval)) 3번째 인자는 입력된 타입이 int인지 timestamp인지에 따라서 step 이거나 inteval을 줄 수 있습니다. SELECT * FROM generate_series(2,4); generate_series ----------------- 2 3 4 (3 rows) SELECT * FROM generate_series(5,1,-2)..
-
[Airflow] TriggerDagRunOperator execution_delta, execution_date_fn 사용하기공부/데이터 2022. 2. 20. 01:14
TriggerDagRunOperator는 여기에서 설명이 되어 있습니다. TriggerDagRunOperator를 사용하기 위해선 참조할 dag의 schedule interval과 동일해야 합니다. 만약 참조할 dag와 다른 schedule interval을 사용할 경우 execution_delta 와 execution_date_fn 둘 중 1개를 사용해야 합니다. execution_delta 옵션은 datetime 모듈의 timedelta 클래스를 사용하는 옵션이고 execution_date_fn 은 함수를 입력하여 함수식을 작성하는 옵션입니다. 예시 참조할 dag의 속성이 아래와 같이 설정되어 있다고 가정합니다. DAG( schedule_interval="0 * * * *", dag_id="paren..
-
[Python] pre-commit, black, flake8 적용하기언어/파이썬 & 장고 2022. 2. 6. 15:36
git hook을 사용하여 커밋하기 전에 code style chek, formmatter, test 등등과 같은 사용자가 원하는 동작을 처리할 수 있습니다. 사용자가 추가한 단계에서 실패가 되면 커밋은 이뤄지지 않기 때문에 프로젝트의 품질을 올릴 수 있는 좋은 도구입니다. 여기서는 pre-commit을 사용하여 flake8로 코드 스타일을 체크하고 black으로 자동으로 코드 포매팅을 하도록 설정하도록 합니다. 아래는 변경된 파일부터 pre-commit, commit 의 과정을 설명하는 예시입니다. pre-commit 설치 $ pip install pre-commit # 또는 $ brew install pre-commit $ pre-commit --v pre-commit 2.17.0 설정 pre-com..
-
[Git] 체리픽 (Cherry-pick)저장소/git 2022. 2. 5. 19:49
git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다. rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다. cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다. 커밋 체리픽 아래와 같이 있다고 가정할 때, feature/#1 브랜치의 커밋 중 34b4cab 와 13f03ab 를 현재 master 브랜치에서 적용한다고 하면 다음과 같이 진행할 수 있습니다. # git cherry-pick {커밋 해시} git cherry-pick 34b4c..
-
[Git] 브랜치 전략 - GitLab Flow저장소/git 2022. 2. 5. 18:50
Github flow는 너무 간단해서 배포, 릴리즈 등의 조금 복잡한 이슈를 보완하기 위해 나온 전략입니다. Gitlab flow의 브랜치는 아래와 같이 사용을 합니다. 브랜치 설명 feature 모든 기능 구현은 feature 브랜치에서 시작합니다. feature 브랜치는 master 브랜치에서 분기되고 머지됩니다. master gitlab flow의 master 브랜치 역할은 git flow의 develop 브랜치와 동일합니다. master 브랜치는 feature 브랜치에서 병합된 기능에 대해 test를 진행합니다. 전체적인 테스트가 진행되어 기능에 대한 보장이 되었다면 production 브랜치로 머지합니다. 만약 staging 단계를 원한다면 pre-production 브랜치로 머지를 진행합니다...
-
[Git] 여러 커밋 revert 하기저장소/git 2022. 2. 5. 17:59
1개의 브랜치에서 여러 커밋을 진행한 후, master에 머지를 했다가 해당 작업물에 문제가 생겼다면 머지 이전으로 되돌아가야 합니다. 하지만 이 때, 커밋 내용이 여러개이므로 squash를 진행하지 않았다면 당황하게 됩니다. 여기서는 여러 커밋 내용을 1번에 revert 하는 방법을 설명하겠습니다. merge가 완료된 상태에서 revert 하기 먼저 아래와 같은 형태로 브랜치 그래프가 있다고 가정합니다. * commit 9aed3a99358ccc5bbfd2dd99d29a82273115801a (HEAD -> master) |\ Merge: ccdd474 9796ce6 | | Author: brownbear | | Date: Sat Feb 5 16:13:16 2022 +0900 | | | | Merge ..
-
[Git] 브랜치 전략 - Github flow저장소/git 2022. 2. 2. 02:16
브랜치 전략이란? 브랜치 전략이란 여러 개발자가 1개의 저장소를 사용하는 환경에서 효과적으로 활용하기 위해 나온 개념입니다. 브랜치 생성, 병합 등의 git 구조를 활용해 보다 효율적으로 소스를 관리하고 협업을 원활하게 할 수 있도록 도와줍니다. 브랜치 전략은 Git flow, GitLab flow, Github flow 3개로 보통 사용하고 있습니다. Github flow github flow는 git flow가 github에서는 사용하기가 복잡하다고 하여 나온 전략으로 위 3개의 전략 중 가장 간단한 전략입니다. 위의 flow가 단순한 만큼 사용법도 단순합니다. master 브랜치의 역할만 확실히 지켜진다면 다른 브랜치에 대해 관여를 하지 않습니다. 즉, master 브랜치를 제외하고 feature,..
-
[Github Action] GCS(Google Cloud Storage)에 코드 배포하기저장소/git 2022. 2. 1. 21:31
GCS는 AWS의 S3와 동일한 개념으로 보면 됩니다. 여기서는 github action을 사용하여 특정 브랜치에 코드가 푸시됐을 때, GCS에 자동으로 배포하는 프로세스를 설명합니다. 배포를 위해선 gcloud / gutil CLI를 사용해야 합니다. github action에서는 우리가 직접 설치할 필요 없이 마켓 플레이스에 있는 버전을 사용하면 됩니다. Set up gcloud Cloud SDK environment - GitHub Marketplace 현재 bq 나 gutil 에서는 워크로드 아이덴티티 제휴를 사용하지 못하고 기존 방식인 json key file을 매핑해야 합니다. GitHub - google-github-actions/auth: GitHub Action for authentica..