← 홈

🌀

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

CLI 명령어

기본 명령어

airflow db init 데이터베이스 초기화
airflow webserver -p 8080 웹 서버 시작
airflow scheduler 스케줄러 시작
airflow users create --username admin --role Admin 사용자 생성
airflow dags list DAG 목록
airflow dags trigger dag_id DAG 트리거
airflow tasks test dag_id task_id 2024-01-01 태스크 테스트
airflow dags backfill -s 2024-01-01 -e 2024-01-31 dag_id 백필

DAG 정의

DAG 생성

기본 DAG
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta

default_args = {
    "owner": "airflow",
    "depends_on_past": False,
    "email_on_failure": False,
    "retries": 1,
    "retry_delay": timedelta(minutes=5),
}

with DAG(
    dag_id="my_dag",
    default_args=default_args,
    description="My first DAG",
    schedule="0 0 * * *",  # Daily at midnight
    start_date=datetime(2024, 1, 1),
    catchup=False,
    tags=["example"],
) as dag:
    pass
TaskFlow API
from airflow.decorators import dag, task
from datetime import datetime

@dag(
    schedule="@daily",
    start_date=datetime(2024, 1, 1),
    catchup=False,
)
def my_dag():
    @task()
    def extract():
        return {"data": [1, 2, 3]}
    
    @task()
    def transform(data: dict):
        return [x * 2 for x in data["data"]]
    
    @task()
    def load(data: list):
        print(f"Loading: {data}")
    
    # Define dependencies
    data = extract()
    transformed = transform(data)
    load(transformed)

my_dag()

오퍼레이터

일반 오퍼레이터

Python & Bash
from airflow.operators.python import PythonOperator
from airflow.operators.bash import BashOperator

def my_function(**context):
    print(context["ds"])  # Execution date
    return "result"

python_task = PythonOperator(
    task_id="python_task",
    python_callable=my_function,
)

bash_task = BashOperator(
    task_id="bash_task",
    bash_command="echo Hello {{ ds }}",
)
분기
from airflow.operators.python import BranchPythonOperator
from airflow.operators.empty import EmptyOperator

def choose_branch(**context):
    if context["ds_nodash"] > "20240101":
        return "branch_a"
    return "branch_b"

branch = BranchPythonOperator(
    task_id="branch",
    python_callable=choose_branch,
)

branch_a = EmptyOperator(task_id="branch_a")
branch_b = EmptyOperator(task_id="branch_b")
join = EmptyOperator(task_id="join", trigger_rule="none_failed_min_one_success")

branch >> [branch_a, branch_b] >> join

센서

파일 & HTTP 센서
from airflow.sensors.filesystem import FileSensor
from airflow.providers.http.sensors.http import HttpSensor

file_sensor = FileSensor(
    task_id="wait_for_file",
    filepath="/path/to/file.csv",
    poke_interval=60,  # Check every 60 seconds
    timeout=3600,      # Timeout after 1 hour
    mode="poke",       # or "reschedule"
)

http_sensor = HttpSensor(
    task_id="wait_for_api",
    http_conn_id="api_conn",
    endpoint="/health",
    response_check=lambda response: response.status_code == 200,
)

의존성

태스크 의존성

의존성 설정
# Using >> and <<
task1 >> task2 >> task3
task1 >> [task2, task3] >> task4

# Using set_upstream/downstream
task2.set_upstream(task1)
task2.set_downstream(task3)

# Cross-dependencies
from airflow.models.baseoperator import cross_downstream
cross_downstream([task1, task2], [task3, task4])

# Chain
from airflow.models.baseoperator import chain
chain(task1, [task2, task3], task4)

XCom

XCom 사용

Push & Pull
def push_function(**context):
    # Automatic push via return
    return {"key": "value"}
    
    # Or explicit push
    context["ti"].xcom_push(key="my_key", value="my_value")

def pull_function(**context):
    # Pull by task_id
    value = context["ti"].xcom_pull(task_ids="push_task")
    
    # Pull by key
    value = context["ti"].xcom_pull(task_ids="push_task", key="my_key")

# In templates
bash_task = BashOperator(
    task_id="bash_task",
    bash_command='echo {{ ti.xcom_pull(task_ids="push_task") }}',
)

연결

데이터베이스 연결

훅 사용
from airflow.providers.postgres.hooks.postgres import PostgresHook
from airflow.providers.amazon.aws.hooks.s3 import S3Hook

def query_postgres(**context):
    hook = PostgresHook(postgres_conn_id="my_postgres")
    records = hook.get_records("SELECT * FROM table")
    return records

def upload_to_s3(**context):
    hook = S3Hook(aws_conn_id="my_aws")
    hook.load_string(
        string_data="data",
        key="my-key",
        bucket_name="my-bucket",
    )