분류 전체보기 1305

파이썬 - 비동기 컨텍스트 매니저 async with .. as ..

async with 와 as 자세한 설명 및 예제 (Python Async)async with 와 as는 파이썬의 비동기 프로그래밍 (asyncio)에서 비동기 컨텍스트 관리자를 사용할 때 핵심적인 역할을 합니다. 일반적인 with 구문과 비슷하지만, 비동기 작업에 특화되어 리소스 관리를 더욱 강력하고 효율적으로 만들어줍니다.1. 컨텍스트 관리자 (Context Manager) 복습: with 구문과 as 절 (동기)먼저, 일반적인 (동기) 컨텍스트 관리자를 이해하는 것이 중요합니다. with 구문은 특정 리소스 (파일, 연결 등)를 안전하게 사용하고, 사용 후 자동으로 정리 (close, release 등)하도록 보장하는 메커니즘입니다.# 일반적인 with 구문 (동기 파일 I/O)with open("..

파이썬 - Function annotation ("->")

Python Function Annotations (100줄 이내 설명)Python Function Annotations는 함수 매개변수와 반환 값에 대한 타입 힌트 및 메타데이터를 제공하는 기능입니다. Python 3.5+ 부터 사용 가능하며, def 키워드 함수 정의 시 콜론 : 뒤에 표현식을 사용하여 어노테이션을 추가합니다.핵심은 리턴 타입을 강제하는 것이 아니라, 개발자나 IDE 와 같은 도구에게 가독성을 높이기 위한 방법이다.  문법:def function_name(param1: type_hint, param2: type_hint = default_value) -> return_type_hint: # 함수 내용 return valueparam1: type_hint: 매개변수 param..

파이썬 - Coroutine과 await

Python 코루틴 (Coroutine) 상세 설명코루틴은 프로그래밍의 패러다임 중 하나로, 서브루틴(함수)을 일반화한 개념입니다. 단순히 순차적으로 실행되는 함수와 달리, 코루틴은 실행을 일시 중단(pause)했다가 나중에 다시 재개(resume)할 수 있는 능력을 핵심으로 가집니다. 이러한 특징 덕분에 코루틴은 비동기 프로그래밍과 동시성 프로그래밍에서 매우 강력한 도구로 활용됩니다.1. 코루틴이란 무엇인가? (서브루틴과의 비교)서브루틴 (Subroutine, 일반 함수):단방향 진입/탈출 (Single entry point/exit point): 함수는 시작점에서 진입하여, 종료점에서 탈출합니다.호출자-피호출자 관계 (Caller-Callee): 함수를 호출하는 쪽(caller)과 호출되는 쪽(cal..

파이썬 - Generator & Iterator

제너레이터(Generator)와 이터레이터(Iterator) 비교: 장단점제너레이터와 이터레이터는 모두 파이썬에서 값을 순차적으로 생성하는 데 사용되는 객체입니다. 하지만 구현 방식과 사용 사례에서 차이가 있습니다.이터레이터 (Iterator)정의:이터레이터는 __iter__() 와 __next__() 라는 두 개의 특별한 메서드(매직 메서드 또는 던더 메서드)를 구현하여 값을 순차적으로 꺼낼 수 있도록 하는 객체입니다.__iter__() 메서드는 이터레이터 객체 자신을 반환합니다.__next__() 메서드는 다음 값을 반환하거나, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킵니다.구현 예:class MyIterator: def __init__(self, data): ..

파이썬 - yield 키워드

yield 키워드 설명yield 키워드는 Python에서 제너레이터(Generator) 함수를 정의할 때 사용되는 특별한 키워드입니다. 제너레이터는 이터레이터(Iterator)의 한 종류로, 값을 한 번에 모두 메모리에 저장하는 대신, 필요할 때마다 하나씩 생성하여 반환합니다.1. 제너레이터 (Generator)이터레이터(Iterator): __iter__() 와 __next__() 메서드를 구현하여 값을 순차적으로 꺼낼 수 있는 객체입니다. 리스트, 튜플, 문자열 등이 이터레이터의 예입니다.제너레이터(Generator): yield 키워드를 사용하여 이터레이터를 간단하게 생성하는 방법입니다. 함수 내에서 yield를 만나면, 해당 값을 반환하고 함수의 실행을 일시 중지합니다. 다음에 다시 호출되면, 중..

파이썬 - pass 키워드

pass 문의 의미와 Python 프로그래밍에서의 사용 용도pass 문의 의미pass 문은 Python에서 아무런 동작도 하지 않는 문장입니다. 즉, 문법적으로는 문장이 필요하지만, 실제로 어떤 코드도 실행하고 싶지 않을 때 사용합니다. pass는 일종의 자리 표시자(placeholder) 역할을 합니다.Python 프로그래밍에서 pass 문의 사용 용도빈 클래스 또는 함수 정의:클래스나 함수의 골격만 먼저 작성하고, 나중에 내용을 채우고 싶을 때 pass를 사용하여 빈 블록을 만듭니다.이는 특히 코드를 설계하는 초기 단계나, 다른 사람과의 협업 시 인터페이스를 먼저 정의할 때 유용합니다.class MyClass: # 클래스 정의는 필요하지만 내용은 나중에 작성 passdef my_function..

파이썬 - 클래스 개념

파이썬 클래스 개념다른 언어와 마찬가지로 인스턴스 변수와 메소드가 있고, 클래스 변수와 메소드가 있다. class Circle: # 클래스 변수: 원주율 pi = 3.14159 def __init__(self, radius): # 인스턴스 변수: 반지름 self.radius = radius # 인스턴스 메서드: 원의 넓이 계산 def area(self): return Circle.pi * (self.radius ** 2) # 인스턴스 메서드: 원의 둘레 계산 def circumference(self): return 2 * Circle.pi * self.radius # 클래스 메서드: 원주율 변경 @class..

빅데이터 분석을 위한 메달리온 아키텍처

빅데이터 분석을 위한 메달리온 아키텍처조대협 (http://bcho.tistory.com) 메달리온 아키텍처는 데이터를 품질에 따라서 계층별로 나눠서 저장하는 데이터 분석 아키텍처이다. Databricks에서 데이터 엔지니어링과 분석 워크플로우를 단순화하기 위해서 소개된 개념으로 데이터 레이크 기반 시스템에서 데이터의 품질과 정제 수준을 체계적으로 관리하기 위해서 등장했다. 데이타를 품질에 따라서, 올림픽 메달처럼 Bronze ⇒ Silver ⇒ Gold 등급으로 나눠서 저장한다. 특히 데이터 레이크 (하둡과 같은 파일 시스템 기반)과 데이터 웨어하우스(빅쿼리,오라클,스노우플레이크와 같은 SQL 기반)을 통합하여, 데이터 정제 단계를 계층화 하였다.  이해를 돕기 위해서 아래 그림을 보자. 먼저 데이터 ..

빅데이터 분석을 위한 ELT 플랫폼 BQ Workflow vs Dataform

빅데이터 분석을 위한 ELT 플랫폼 BQ Workflow vs Dataform조대협 (http://bcho.tistory.com) 빅데이터 분석에 시스템에서 데이터 분석에 앞서서, 데이터 수집 (Ingestion),데이터 변환(Transformation) 과정이 있고, 이 과정은 여러개의 스텝으로 구성이 된다. 그래서 이런 스탭들을 관리하기 위해서 오케스트레이션 솔루션이 사용되는데, 오픈소스로 가장 많이 사용되는 솔루션 중의 하나는 Apache Airflow이다. Airflow는 재처리 로직, 병렬처리, 외부 컴포넌트 호출등 많은 기능을 폭넓게 지원하지만 문제는 그만큼 복잡도가 높다는 문제이다. (Airflow에 대한 설명 : https://bcho.tistory.com/1184 )현재의 빅데이터 분석은..

Nest.JS 살펴보기 - 2. Hello World

Nest.JS 살펴보기 - 2. Hello World조대협 (http://bcho.tistory.com)1. 프로젝트 생성:터미널을 열고 다음 명령어를 실행하여 hello-world라는 이름의 Nest.js 프로젝트를 생성한다.nest new hello-world프로젝트 생성 과정에서 패키지 매니저를 선택하라는 메시지가 나타나면 npm을 선택한다. 프로젝트 생성이 완료되면 hello-world 디렉토리로 이동한다. cd hello-world2. 주요 파일 설명:생성된 프로젝트에는 다음과 같은 주요 파일들이 있다.src/app.controller.ts: 애플리케이션의 컨트롤러를 정의하는 파일이다. 컨트롤러는 클라이언트로부터 들어오는 요청을 처리하고, 그에 대한 응답을 반환하는 역할을 수행한다. 라우팅 로직..