목록전체 글 (67)
The Boxer
pydantic 모델 파싱시 주의 사항 request나 response로 넘어온 body data를 pydantic이 model로 파싱하는 과정에서 정의된 필드가 비어있는 경우 에러를 던진다. 에러가 발생하는 예시 from pydantic import BaseModel class Foo(BaseModel): id: int name: str def service_method() -> dict: return { "name": "testing" } def controller_method() -> Foo: result = service_method() return Foo(**result) controller_method() pydantic은 모델로 데이터를 파싱하는 과정에서 파싱이 불가능한 값이 ..
fastapi를 공부하면서 의존성을 주입할 때 어떻게 처리되는지 궁금하여 공부한 내용을 정리한다. 의존성 관리 기존에 내가 사용하던 nestjs 프레임워크는 프레임워크 자체에서 DI container를 내장하고 있었고, provider를 통해 container 등록하여 사용하던 방식이었다. fastapi는 조금 다른것으로 보인다. 따로 DI container는 존재하지 않으며, 요청이 들어오면 요청에 대한 처리를 위해 필요한 의존성만 주입받는다. 의존성 주입이 가능한 객체는 callable한 객체이며, 실행을 통해 리소스를 반환해야 한다. 기본 작동 원리 main.py from typing import Union from fastapi import FastAPI,Depends from service im..
druid 오픈소스 분산 데이터 저장소 핵심 디자인: 데이터 웨어하우스, 시계열 DB, 검색 시스템으로 부터 고성능 실시간 분석 DB 제공 다차원 데이터: 1차원 정보(row)를 지정된 필드(dimension)을 통해 지표(metric)로 표현한 데이터 Usecase 주로 전반적인 지표 흐름을 조회하는 용도로 사용 클릭 스트림 분석 부정 분석 시스템 네트워크 성능 모니터링 서버 성능 분석 공급망 분석 어플리케이션 성능 분석... 사용하면 안되는 경우 정확한 데이터를 조회하는 경우 1차원 데이터(row) 에 대한 정확한 데이터 조회 인덱싱 방식 다차원 데이터에 대한 빠른 쿼리 결과 제공을 위해 세그먼트(time interval) 단위로 인덱싱 쿼리를 수행하는 시점이 아니라 데이터를 저장하는 시점에 인덱싱 ..
의존 관계 객체 B의 기능이 추가 변경되었을 때 객체 A에 영향이 미치면 A가 B를 의존한다고 한다. class Service: def __init__(self): self.repository = UserRepository() 위 예시에서 Service 클래스는 UserRepository 클래스를 사용하고 있다. 여기서 UserRepository 의 기능이 바뀌거나 추가되면, Service 가 영향을 받는다. 정리하자면 하나의 객체가 다른 객체를 사용하면 의존 관계가 있다고 표현한다. 의존성 주입 토비의 스프링에서는 다음의 세가지 조건을 충족하는 작업을 의존성 주입으로 정의한다. - 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공(주입)해줌으로써 만들어진다. - 런타임 시점의 의존관계는 컨테이..
python에서 클래스 python에서는 클래스를 객체로 취급한다. class Foo: pass 이렇게 클래스를 선언하는건 Foo 라는 이름의 객체가 메모리에 올라갔다는 것을 의미한다. foo = Foo() 위에서 말했던 것 처럼 python에서는 클래스도 객체이기 때문에 Foo 라는 객체가 생성됨과 동시에, Foo 클래스를 통해 foo 라는 객체를 생성했다는 의미가 된다. 클래스도 객체이므로 변수 할당, 메서드 인자로 전달 등이 가능하다. class Foo: pass def print_object(v): print(v) print_object(Foo) var = Foo print(var) type type은 2가지 기능을 갖고 있다. 자료형 확인 일반적으로 우리가 아는 기능인 자료형 확인이다. type..