본문 바로가기
반응형

분류 전체보기135

Mac Airflow local 설치 📌 로컬 환경에서 Airflow 설치하기 1) 일단 airflow 설치할 가상환경을 세팅해준다. 나같은 경우 python venv 가상환경으로 생성했다. $ python3 -m venv ~/{directory_name}/{myenv} 2) airflow의 홈 디렉토리 디폴트값은 ~/airflow이다. 따라서 airflow를 다른 디렉토리 안에서 실행시키고 싶으면 환경변수를 세팅해주어야 한다. $ export airflow=~/{directory_name}/airflow 나같은 경우 airflow_test 라는 디렉토리 하위에서 airflow 를 실행시켰다. 3) 가상환경 활성화 $ source {myenv}/bin/activate 4) airflow 설치 (공식 document: https://airfl.. 2022. 5. 14.
[Airflow] Datetime (feat. 자동실행 방지) 📌 Airflow 실행날짜 실행 날짜는 batch job 의 특성을 가진 Airflow에서 매우 중요하다. Airflow에서 start_date 는 실행 시작 날짜가 아니라 스케줄이 시작되는 날짜라는 것을 기억해야한다. 예를 들어서 오늘 날짜가 datetime(2022, 5, 14) 이다. 하지만 Airflow에 start_date를 (2022, 1, 1) 로 적게되면 1월 1일 부터 5월 13일까지의 job이 생기게 된다. 이처럼 Airflow에서 start_date는 실행 시작이 아닌 스케줄에 올라가는 날짜라는 것을 기억하자 📌 catchup 위와 같이 과거 날짜로 start_date 를 설정하면 Airflow는 과거의 Task를 차례대로 실행하는 Backfill을 실행하게 된다. 하지만 보통 이런 .. 2022. 5. 14.
[Algorithm] 다익스트라 알고리즘 | LIM 다익스트라 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. 다익스트라 알고리즘은 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다. 알고리즘의 원리는 다음과 같다. 1. 출발 노드를 설정한다(start) 2. 최단 거리 테이블을 초기화한다.([0,0,0,...]) 3. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 4. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다. 5. 위 과정에서 3번과 4번을 반복한다. 다익스트라 알고리즘을 구현하는 방법 2가지를 소개한다. 방법1. 구현하기 쉽지만 느리게 동작하는 코드 방법2. 구현하기에 조금 더 까다롭.. 2021. 10. 11.
인프라 아키텍처 이번 하반기 동안 인프라에 대해 공부를 할 예정이고 이 책을 토대로 이 곳에 정리하려고 한다. http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791190665209&orderClick=LEa&Kc= 그림으로 공부하는 IT 인프라 구조 - 교보문고 IT에 몸담은 이들을 위한 필독서 | IT에 종사하는 사람이라면 반드시 읽어야 할 책!IT 인프라 전반에 대한 상식을 그림으로 쉽게 이해한다!이 책은 ‘IT 인프라’ 전반을 충실히, 그리고 이해하기 www.kyobobook.co.kr 1.1 인프라란 무엇인가 인프라는 '기반'이라는 뜻으로, 우리의 생활을 지탱하는 바탕이나 토대라는 의미이다. IT 인프라도 예를 .. 2021. 9. 17.
[백준] 14888번: 연산자 끼워넣기 Python (DFS, BFS) | LIM 이 문제의 경우는 순서대로 연산자에 상관없이 계산해야하기 때문에 연산자를 하나씩 뽑아서 즉, popleft를 사용하여 구현해야 한다고 생각했다. 즉 BFS를 사용하여 문제를 해결하였다. 1. 숫자는 순서의 바뀌지 않고 연산자의 순서만 바뀌기 때문에 연산자의 조합이 어떻게 올 지 부터 먼저 구해야 한다. (조합은 permutation을 이용하여 구했다. 다만, permutation의 경우 ['+','+','+','+']의 경우 모두 다르게 인식하여 경우의 수를 많이 만들기 때문에 set을 사용하여 조합을 unique한 상태로 변경해야 한다.) 2. 연산자의 특성 중 나눗셈 부분이 기존 나눗셈의 개념과는 다르기 때문에 나같은 경우 함수로 사칙연산을 구현해주었다. (생각보다 시간이 오래 걸리지 않았다..) 3.. 2021. 9. 12.
[백준] 18405번: 경쟁적 전염 Python (DFS, BFS) | LIM 이 문제는 BFS를 이용하여 풀었다. 생각보다 이 문제는 간단하게 풀 수 있었다. 먼저, 바이러스가 존재하는 위치와 그 위치에 바이러스 값을 저장했다. 또한, 바이러스 숫자가 작을수록 우선수위를 갖기 때문에 바이러스 숫자가 작은 순서대로 sorting 해주었다. popleft()를 통해 앞에 있는 것(바이러스 숫자가 작은것)부터 뽑아내며 상하좌우로 퍼지게 하였다. 퍼지게 한 후 바이러스가 전염된 부분의 바이러스 값과 인덱스를 기존 virusIndex에다가 뒤로 저장하였다. 맨 처음에 순서대로 sorting 해주었기 때문에 추후에 저장되는 바이러스 값은 자동으로 정렬이 되어 있다. 기존에 있던 바이러스가 모두 popleft()를 통해 사라지고 그 바이러스를 통해 전염된 바이러스와 인덱스만 남게 되면 시간을.. 2021. 8. 31.
반응형