Jost Do It.

그냥 IT해.

반응형

서버 및 환경 58

conda run의 의미와 사용방법

[chatGPT와의 대화 내용] (1번 질문) `conda run`은 무슨 명령어야? `conda run`은 Conda 환경 안에서 실행할 수 있는 명령어입니다. `conda run` 명령어를 사용하면 Conda 환경 내에서 명령어를 실행하며, Conda 환경 외부의 패키지와 충돌하지 않도록 보호됩니다. `conda run` 명령어의 일반적인 사용법은 다음과 같습니다. conda run [OPTIONS] COMMAND [ARGS] 여기서 `OPTIONS`는 conda run 명령어의 옵션을 나타내며, `COMMAND`와 `ARGS`는 실행할 명령어와 인수입니다. 예를 들어, 다음 명령어는 myenv라는 Conda 환경에서 python 명령어를 실행합니다. conda run -n myenv python m..

[Airflow] 에어플로우 `trigger_rule` 정의 및 파라미터 종류

너무좋다 챗지피티... 갓갓 [ChatGPT와의 대화내용] airflow의 trigger_rule에 대해 알려줘 Airflow의 trigger_rule은 DAG 내의 작업(Task)간 종속성(Dependency)을 정의하는데 사용됩니다. trigger_rule은 이전 Task의 실행 결과를 기반으로 다음 Task의 실행 여부를 결정하는 규칙(rule)입니다. trigger_rule은 Task 객체의 인수로 설정됩니다. 기본값은 all_success입니다. 다음은 trigger_rule의 종류와 각각의 의미입니다. all_success: 이전 Task가 모두 성공했을 때 실행합니다. 이전 Task 중 하나라도 실패하면 실행하지 않습니다. all_failed: 이전 Task가 모두 실패했을 때 실행합니다. ..

[Airflow] 파이썬에서 Error 로그가 airflow에서는 INFO로 뜨는 이유

[아래는 ChatGPT와 나눈 대화내용] 파이썬에서 에러 로그가 airflow에서는 INFO정보로 뜨는데 왜그래? Airflow는 기본적으로 로그 레벨이 INFO로 설정되어 있기 때문에, 파이썬에서 발생한 에러 로그도 INFO 레벨로 출력됩니다. 이는 Airflow가 파이썬 코드를 실행하는 방식 때문입니다. Airflow는 DAG(Directed Acyclic Graph)을 기반으로 작업을 스케줄링하며, 각 작업은 PythonOperator, BashOperator, DockerOperator 등의 Operator를 통해 실행됩니다. 이 때, Operator 내부에서 파이썬 코드를 실행하면서 발생하는 에러 로그도 Airflow에서 INFO 레벨의 로그로 처리됩니다. 하지만, 이러한 로그 레벨을 변경할 수..

[Airflow] 에어플로우 BashOperator 에러 발생 안할 때 해결 방법

문제 상황 에어플로우 BashOperator를 통해 작업을 dag에 걸어줬을 때, 에러가 발생했음에도 정상적으로 작동됐다고 체크된 경우가 있었다. 위 경우도 원래 4초짜리 task가 절대 아님에도 4초만에 정상적으로 작동이 완료됐다고 나와 에러 발생이 의심되는 상황이었다. 그래서 로그를 살펴보니 특정 라이브러리 로드를 안해줘서 에러가 발생함을 알 수 있었다. 그럼 왜 Airflow는 해당 dag에서 에러가 발생했음에도 정상적으로 작동했다고 결과를 출력한 것일까? 문제 발생 이유 파이썬같이 우리가 익숙한 프로그래밍 코드는 순차적으로 코드를 실행하다가 특정 line에서 에러가 발생하면 해당 line에서 에러를 발생시키고 실행을 멈추게 된다. 즉, 뒷 line은 실행하지 않는다. 하지만 Bash shell에서..

[Git] 깃 브랜치 만들기 / 변경 / 삭제 (git branch / checkout / -d)

깃은 디폴트(메인) 브랜치에서 여러 브랜치를 파생할 수 있다. 여러 브랜치로 파생하여 메인 브랜치의 내용들과 충돌 없이 파생된 브랜치에 코드 내용을 수정할 수 있다. 그리고 수정된 코드 내용들을 메인 브랜치와 통합할 때는 PR을 요청하여 깃헙 관리자가 이를 허용/거절하는 구조로 이루어진다. 그러면 이 브랜치를 어떻게 파생할 수 있을까? 깃 브랜치 생성 로컬에서 깃 브랜치를 생성하는 방법은 다음과 같다. 아래 명령어를 쉘의 로컬 깃저장소 위치에서 입력한다. git branch {생성할 브랜치명} 한편 메인 브랜치와의 충돌을 피하려면 메인브랜치의 최신 내용을 pull한 상태여야 한다. 이후에 브랜치에 커밋을 하여야 메인 브랜치와 충돌을 피할 수 있다. 깃 브랜치 변경 위 명령어는 로컬 깃 저장소에 새로운 브..

[Github] refusing to allow a Personal Access Token to create or update workflow 에러 해결

에러 내용 깃헙에서 workflow 내용을 수정하고 github 저장소에 push하니까 위 에러가 떴다. 내용은 다음과 같다. ! [remote rejected] {원격저장소 branch명} -> {원격저장소 branch명} (refusing to allow a Personal Access Token to create or update workflow `.github/workflows/code-style-check.yaml` without `workflow` scope) error: failed to push some refs to 'https://github.com/{원격저장소 링크}' 메세지 내용을 살펴보면 github에서 발급받은 개인 access token이 workflow를 수정할 수 있는 권한..

[Github] Pull Request (PR) 요청

보통 회사에서 코드 작성을 마치면 바로 디폴트 브랜치에 코드 내용을 merge하지 않는다. 동료에게 먼저 코드 리뷰를 받는데, 보통은 1명 ~ 3명 내지의 동료들에게 코드 리뷰를 받는다. 코드 리뷰를 통해 내 코드에 이슈가 없는지, 수정하면 좋은 부분이 있는지 검토를 받고 문제가 없으면 디폴트 브랜치에 merge 하는 것을 승인 받는다. 위 과정을 Pull Request (PR)이라고 한다. 그럼 Github에서 PR을 하는 방법에 대해 알아보자. Github에서 Pull Request (PR) 요청 하기 PR전에 변경한 코드 내용들은 별도의 브랜치에 push된 상태여야 한다. 다음으로 PR을 할 Repository에 들어간다. 그리고 아래의 Pull Request 를 클릭한다. 그럼 아래의 화면이 뜬다..

[Linux] 특정 파일의 변수 리스트를 환경변수로 설정하기

문제 변수명과 변수값이 각각 지정된 .env 파일이 있다고 하자. # .env file ID=smart-hinj PWD=8191 export 명령어를 통해 변수 하나씩 환경변수로 선언할 수 있겠지만, .env 파일 내 변수의 수가 많아지면 변수 하나씩 export 하기에는 비효율적이다. 이 파일에 존재하는 변수 리스트를 환경변수로 바로 전달하는 방법은 없을까? 해결 아래 명령어를 통해 .env 파일 내 변수 리스트를 환경변수로 한번에 전달할 수 있다. 아래 명령어를 shell에서 실행하자. set -a # automatically export all variables source .env set +a 참조 https://stackoverflow.com/questions/43267413/shell-how-..

[PostgreSQL] 쌍콜론 (::, double colon) 의 의미와 CAST 함수

최근 인수인계 받은 코드를 정리 중인데, SQL문에 처음보는 쌍콜론이 있어서 내용을 정리한다. 우리회사에서는 postgreSQL을 사용 중인데, postgreSQL에서는 쌍콜론이 CAST와 같은 역할을 한다고 한다. 바로 예시와 함께 알아보자. 코드는 아래의 예시처럼 되어있었다. SELECT 1.2::integer 코드를 통해 유추 가능하듯이, 어떤 표현식(값, 칼럼, 표현 등)의 데이터 타입을 쌍콜론 뒤에 타입으로 변형해주는 내용이다. 위 코드에서는 1.2의 값을 integer로 표현하게 된다. 1.2는 float형인데 이를 정수형인 integer로 변환해 표현하기 때문에 결과 값은 1로 출력된다. CAST를 써서 위 코드를 표현하면 다음과 같다. SELECT CAST(1.2 AS integer) 결과..

[Git] git에 add / commit / push 하기 (파일 등록부터 업로드까지)

[Git] Git 로컬 저장소 생성 및 원격 저장소와의 연결, 복제 (git init / git remote / git pull / git clone) Git은 가장 먼저 해야할 일이 있다. git 저장소를 생성하는 일인데, git 저장소는 파일의 생성, 변경 내용, 삭제 등을 기록하게 된다. 그러면 사용자가 commit한 지점마다의 파일들의 생성 / 변경 / 삭 jost-do-it.tistory.com 지난번 글에서 git 저장소 생성과 원격 저장소와 연결하는 방법을 알아보았다. 이번 글에서는 git 저장소에 파일들의 변경 이력을 추가하고, 이를 로컬 저장소에 등록하고 원격 저장소에 업로드하는 방법을 알아보자. git 저장소에 파일 변경 이력 추가 (git add) 먼저 파일 내용이 변경되거나 추가, ..

반응형