반응형

분류 전체보기 78

[Airflow] PythonOperator에 arugments 넘기기

op_kwargs 와 op_args 이용 두 개의 차이는 op_kwargs는 dict이고 op_args는 list이다. PythonOperator def __init__( self, *, python_callable: Callable, op_args: Optional[List] = None, op_kwargs: Optional[Dict] = None, templates_dict: Optional[Dict] = None, templates_exts: Optional[List[str]] = None, **kwargs, ) op_args 이용 from datetime import datetime from airflow import DAG from airflow.operators.dummy import Dumm..

Airflow 2021.08.07

[leetcode] 15. 3Sum

문제 풀이 a + b + c = 0 인 경우를 찾는 문제이다. 투 포인터를 이용해서 풀었다. 우선 정렬을 한 다음에 for 루프를 돌면서 nums[index] 가 a 라고 할 때 포인터를 이동하면서 b 와 c 값을 찾았다. 문제에서 답에 중복을 허용하지 않기 때문에 중복인 경우는 다시 계산하지 않게 처리했다. [0, 0, 0, 0, 0, 0] 와 같은 인풋이 들어왔을 때 한 번만 계산하고 스킵하게 된다. 시간복잡도는 O(N^2) 이 된다. => 정렬하는 데 O(NlogN) + for 루프 돌면서 b와 c값 찾는 데 O(N^2) 코드 fun threeSum(nums: IntArray): List { nums.sort() val result: MutableList = mutableListOf() for (i..

알고리즘 2021.08.07

[Airflow] Task 재실행하기

Airflow 이용하다 보면 특정 task를 다시 실행하고 싶은 경우들이 있다. Task를 재실행하는 법에 대해서 알아보자. Airflow UI 이용 Airflow UI에 접속해서 재실행할 DAG를 클릭하자. Graph View를 클릭하자. 재실행할 Task 클릭하자. Task를 클릭하면 아래와 같은 창이 뜬다. 원하는 옵션을 선택하고 Clear를 클릭하자. Clear를 클릭하면 재실행할 Task를 확인할 수 있다. 맞으면 OK를 클릭해서 Task를 재실행하자. Airflow CLI 이용 command line 이용해서도 동일하게 할 수 있다. airflow tasks clear command를 이용하면 된다. 옵션을 잘 모르겠으면 help 명령어로 사용법을 확인해보자. airflow tasks clea..

Airflow 2021.08.06

[Java] CountDownLatch를 이용해 thread 대기하기

Main 스레드에서 3개의 스레드(하나의 Producer 스레드와 두 개의 Consumer 스레드)를 생성하고 작업을 수행한 다음에 수행 시간을 출력해보자. Main public class Main { public static void main(String[] args) { Instant start = Instant.now(); System.out.println("Start"); int totalNumberOfTasks = 3; BlockingQueue queue = new LinkedBlockingQueue(200); ExecutorService executorService = Executors.newFixedThreadPool(totalNumberOfTasks); executorService.subm..

Java 2021.07.11

Intellij에서 Kotlin을 Java로 변환하는 방법

코틀린 코드가 자바 코드로는 어떻게 동작하는지 확인해보고 싶을 때가 있다. 코틀린을 자바 코드로 변환하려면 코틀린 바이트코드(.class)를 자바로 decompile 하면 된다. Intellij IDE 에서는 이를 간단하게 변환해볼 수 있다. Bytecode 보기 Shift + Shift 클릭 하거나 Cmd + Shift + A 클릭 "Kotlin Bytecode" 입력 아래와 같이 바이트코드를 확인할 수 있다. 자바 코드 보기 바이트코드를 자바코드로 변환하기 위해서는 DECOMPILE 버튼을 클릭하면 된다. 아래와 같이 DECOMPILE 버튼이 보이지 않을 수가 있다. 이런 경우는 Java Bytecode Decompiler plugin를 설치해주고 enable 해주면 된다.

Kotlin 2021.07.03

[leetcode] 937. Reorder Data in Log Files

문제 인풋으로 주어진 로그는 식별자와 내용으로 구성되어 있다. 로그의 타입은 숫자로만 이뤄진 숫자 로그와 알파벳으로만 이뤄진 문자 로그로 구분된다. 로그의 순서는 다음과 같아야 한다. 숫자 로그는 문자 로그의 뒤에 와야 한다. 문자 로그 간의 순서는 내용의 사전식 순서여야 한다. 문자 로그의 내용이 같다면 식별자의 사전식 순서로 정렬한다. 숫자 로그 간 순서는 유지해야 한다. 풀이 로그가 숫자 로그인지 문자 로그인지를 구분하는 함수를 만들었다. 그리고 문자 로그 리스트를 아래 조건대로 정렬한 다음 숫자 로그 리스트를 덧 붙여서 해결했다. 식별자를 제외한 로그의 알파벳 순서 비교 만약 같다면 식별자의 알파벳 순서 비교 코드 그냥 생각의 흐름대로 풀었다. 나중에 solution이랑 discuss 확인해서 더..

알고리즘 2021.06.28
반응형