분류 전체보기
-
[Airflow] Task공부/데이터 2021. 10. 31. 19:11
task는 airflow의 기본 실행 단위입니다. DAG 안에 task들을 나열한 다음, upstream, downstream으로 종속성을 정렬합니다. task는 3가지가 존재합니다. Operator: DAG를 구축하는데 자주 사용하는 작업 템플릿 클래스입니다. Sensor: 외부 이벤트가 발생할 때까지 대기하는 오퍼레이터의 하위 클래스입니다. TaskFlow: @task 데코레이터를 사용하여 사용자가 작성한 함수 코드를 task로 인식하게 만드는 기능입니다. 이 기능들은 전부 BaseOperator 클래스를 상속받아 구현되었으며 task와 operator는 기능이 유사하지만 별도로 구분하는 것이 좋습니다. operator와 sensor는 템플릿이고 task는 DAG 파일이 호출될 때 만들어 지는 개념입..
-
[Airflow] DAGs공부/데이터 2021. 10. 31. 19:08
DAG 선언 방법 context manager with DAG("my_dag_name") as dag: op = DummyOperator(task_id="task") class my_dag = DAG("my_dag_name") op = DummyOperator(task_id="task", dag=my_dag) decorator 2.0 이후 버전 @dag(start_date=days_ago(2)) def generate_dag(): op = DummyOperator(task_id="task") dag = generate_dag() @task 데코레이터와 함께 사용하면 코드가 깔끔해집니다. DAGS는 task없이 실행할 수 없습니다. task 의존성 표현 방법 task는 일반적으로 다른 task들과 의존성을..
-
마케팅 기본 용어 모음공부 2021. 10. 30. 19:49
마케팅에서 사용하는 기본 용어를 매일 찾기 힘들어서 정리한 페이지 Key Performance Indicator (KPI) - 핵심 목표 지표 기업이 달성해야 할 목표를 나타내는 수치 Return On Investment (ROI) - 투자 대비 수익률 투자 대비 수익률 Return On Advertising Spend (ROAS) - 광고비 대비 수익률 광고비 대비 수익률 Contents Marketing - 콘텐츠 마케팅 특정 고객에게 가치있고 일관되면서 연관성 높은 콘텐츠를 만들어 확산시키는 방법. 고객들에게 도움이 될 만한 정보를 제공하거나 공감을 이끌어내는 콘텐츠를 통해 자발적으로 공유하도록 유도 Performance Marketing - 퍼포먼스 마케팅 온라인에서 다양한 경로로 노출한 커뮤니케..
-
[PostgreSQL] limit과 offset의 성능 저하 줄이기DB/PostgreSQL 2021. 10. 30. 18:30
보통 pagination을 구현할 때, SQL의 limit과 offset을 많이 사용합니다. 테이블의 레코드 수가 크지 않다면 문제가 되진 않지만 몇십만건 이상일 경우, 성능 저하가 올 수 있습니다. 아래는 1200만건 정도의 레코드가 있는 테이블에서 limit, offset으로 특정 구간을 pagination한 쿼리입니다. select * from orders limit 10000 offset 10000000; offset으로 10,000,000을 주었기 때문에,1000만건을 full scan 후 limit으로 주어진 10,000건을 조회하여 보여주고 있습니다. 위의 쿼리는 정렬순서가 없어서 테이블에 저장되어 있는 순서대로 추출했지만 아래와 같이 pk나 다른 키로 정렬을 준다면 수행시간이 더 늘어나는 ..
-
[SOLID] 의존 관계 역전 원칙이란 (Dependency Inversion Principle, DIP)공부 2021. 8. 29. 19:48
의존 관계 역전 원칙에선 고수준의 모듈은 저수준 모듈의 구현에 의존해선 안됩니다. 다시 말해 의존 관계를 맺을 때, 변하기가 어려운 것에 의존해야 합니다. 즉, 구체화된 클래스에 직접적인 의존 관계를 맺지 않고 인터페이스나 추상 클래스에 의존관계를 맺는 것입니다. 사용자가 티켓을 예매한다고 가정합니다. 해당 원칙을 적용하지 않고 구현을 한다면 사용자 → 티켓 이라는 관계를 맺어 고수준 모듈인 사용자가 저수준 모듈 티켓을 의존하는 형태가 나옵니다. from dataclasses import dataclass class Ticket: def book(self): print('티켓을 예약한다.') @dataclass class User: ticket: Ticket def buy(self): self.ticke..
-
[SOLID] 인터페이스 분리 원칙이란 (Interface Segregation Principle, ISP)공부 2021. 8. 29. 18:21
인터페이스 분리 원칙은 인터페이스를 사용하는 클라이언트 기준으로 분리해야 되는 원칙입니다. 다시 말해서, 클라이언트(자신)이 사용하지 않는 메소드와는 의존 관계를 가지면 안됩니다. 사용하지 않는 인터페이스의 메소드 때문에 영향을 받아 구현을 하면 안되고 영향을 받는다면 인터페이스를 나눠야 하는 원칙입니다. 아래와 같은 예시 코드가 있다고 가정합니다. from abc import ABCMeta, abstractmethod class Vehicle(metaclass=ABCMeta): @abstractmethod def drive(self): pass @abstractmethod def fly(self): pass @abstractmethod def ride(self): pass class Car(Vehicl..
-
[SOLID] 리스코프 원칙 법칙이란 (Liskov Substitution Principle, LSP)공부 2021. 8. 16. 18:43
리스코프 치환 법칙은 SOLID 원칙에서 L에 해당하는 법칙입니다. 해당 법칙은 상위 타입의 객체를 하위 타입의 객체로 치환해도 동작에 문제가 없어야 합니다. 즉, B가 A의 자식일 때, A 타입을 사용하는 부분에서 B로 치환해도 문제없이 동작이 되어야 합니다. 아래에서 정사각형과 직사각형 예를 들어 설명합니다. 정사각형은 직사각형이 될 수 있지만 직사각형은 정사각형이 될 수 없습니다. 즉, 정사각형은 직사각형의 자식이라고 판단한 다음, 아래와 같이 코드를 작성합니다. from dataclasses import dataclass, field @dataclass() class Rectangle: _width: int = field(init=False) _height: int = field(init=Fals..
-
[DB] 함수를 사용하지 않고 만 나이 쉽게 계산하기DB 2021. 8. 15. 20:41
만 나이를 계산하려면 생일이 지났는지, 지나지 않았는지에 따라 계산이 달라집니다. 하지만 아래에서 설명하는 수식을 사용하면 아주 쉽게 만 나이를 구할 수 있습니다. floor((현재 연월일 - 생년월일) / 10000) 현재 날짜: 20210815 생년월일1: 20001225 select floor((20210815 - 20001225) / 10000); -- 20 현재 날짜: 20211225 생년월일1: 20001225 select floor((20211225 - 20001225) / 10000); -- 21 위 식이 성립하는 이유는 구하고자 하는 연도 - 생일 연도 를 하게 되면 한국 나이 - 1 의 값이 나오게 됩니다. 여기서 구하고자 하는 월, 일이 생일 월, 일보다 적다면 앞에서 구한 값에서 1..
-
[UML] 클래스 다이어그램 (Class Diagram)공부 2021. 8. 15. 20:04
클래스 다이어그램은 구조 다이어그램으로 클래스 내부 구성요소 및 클래스 간의 관계를 도식화하여 시스템의 특정 모듈이나 일부 및 전체를 구조화 합니다. 개발 하기 전, 클래스 다이어그램을 그리게 되면 시스템 내 클래스 간의 의존성 파악과 팀원들 간 의사소통이 편리합니다. 클래스 다이어그램의 목적에 따라 개념, 명세, 구현 단계로 나눌 수 있습니다. 개념 단계에서는 클래스만 도출하고 관계를 단순화하는 것이 목적입니다. 명세와 구현 단계에서는 개발 직전 설계나 구현 이후 설명 목적으로 사용되고 이 다이어그램을 기반으로 코드로 구현하거나 코드를 기반으로 다이어그램을 그리기 때문에 코드와 연관이 깊습니다. 요소 (element) 클래스 클래스 다이어그램에서 클래스는 이름, 속성(변수), 메소드 순으로 나열합니다...
-
[Python] 데코레이터 만들기언어/파이썬 & 장고 2021. 8. 8. 19:33
파이썬에서 데코레이터란 @staticmethod와 같은 형태로 클래스나 함수 위에 선언하여 사용하는 것을 말합니다. 데코레이터는 기존 함수 내부의 코드를 수정하지 않고 시작과 끝에 추가 기능을 구현할 수 있습니다. class Test: @staticmethod def test(): pass 또한 데코레이터는 1개 이상 추가할 수도 있습니다. from abc import abstractmethod class Test: @staticmethod @abstractmethod def test(): pass 아래에서는 함수와 클래스로 데코레이터를 만드는 방법을 소개합니다. 함수로 데코레이터 만들기 함수로 데코레이터를 만드는 방법은 아래와 같습니다. def deco1(func): def wrapper(*args, ..