Nginx 413 Request Entity Too Large 오류 해결
·
TypeScript
** 가이드**413 오류는 클라이언트가 업로드하는 파일이나 요청 데이터가 Nginx에서 설정된 최대 허용 크기를 초과할 때 발생합니다. 이 문제를 효과적으로 해결하는 방법을 알아보겠습니다.오류의 주요 원인파일 업로드 크기 제한 초과POST 요청 데이터 크기 제한 초과클라이언트 요청 본문 버퍼 크기 제한Nginx 설정 수정하기http { # 클라이언트 요청 본문 최대 크기 설정 client_max_body_size 100M; # 클라이언트 요청 본문 버퍼 크기 client_body_buffer_size 128k; server { # 특정 위치에 대한 설정 location /upload { # 이 위치에 대한 특별한 크기 제한 ..
Enum을 넘어서 - const assertions의 장점과 Tree-shaking
·
TypeScript
Enum의 기본 개념과 한계TypeScript에서 Enum은 관련된 상수들을 그룹화하는 방법을 제공합니다.// 기본적인 Enum 사용enum UserRole { ADMIN = 'ADMIN', USER = 'USER', GUEST = 'GUEST'}// 사용 예시function checkAccess(role: UserRole) { if (role === UserRole.ADMIN) { return true; } return false;}하지만 Enum은 몇 가지 중요한 한계가 있습니다:Tree-shaking이 불가능컴파일 후 추가적인 런타임 코드 생성번들 크기 증가Tree-shaking이란?Tree-shaking은 사용하지 않는 코드를 제거하는 최적화 과정입니다..
pyinstrument : 성능 최적화를 위한 프로파일링
·
파이썬/Fast API
pyinstrument는 Python 코드의 성능을 프로파일링하는 강력한 도구입니다. 특히 FastAPI 애플리케이션에서 병목 현상을 찾고 성능을 최적화하는 데 매우 유용합니다. 기본 설정from fastapi import FastAPIfrom pyinstrument import Profilerfrom pyinstrument.middleware import ProfilerMiddlewareapp = FastAPI()# 전체 애플리케이션 프로파일링app.add_middleware(ProfilerMiddleware)# 특정 엔드포인트 프로파일링@app.get("/users/{user_id}")async def get_user(user_id: int): profiler = Profiler() pro..
Geopy : 지리 정보 다루기
·
파이썬/Basic
Geopy는 파이썬에서 지리 정보를 쉽게 다룰 수 있게 해주는 강력한 라이브러리입니다. 주소를 좌표로 변환하거나, 두 지점 간의 거리를 계산하는 등 다양한 지리 정보 처리가 가능합니다.기본 설치 및 설정# 설치pip install geopy# 기본 임포트from geopy.geocoders import Nominatimfrom geopy.distance import geodesicfrom geopy.exc import GeocoderTimedOut주소를 좌표로 변환하기 (Geocoding)from geopy.geocoders import Nominatimdef get_coordinates(address: str): # 지오코더 초기화 geolocator = Nominatim(user_agent..
FastAPI 쿼리 매개변수
·
파이썬/Fast API
쿼리 매개변수는 FastAPI에서 데이터를 전달받는 핵심적인 방법 중 하나입니다. 다양한 데이터 타입을 어떻게 처리하는지 자세히 알아보겠습니다.기본적인 쿼리 매개변수 사용from fastapi import FastAPI, Queryfrom typing import Optionalapp = FastAPI()@app.get("/items/")async def read_items( skip: Optional[int] = Query(default=0, ge=0), limit: int = Query(default=10, le=100), search: str = Query(default=None, min_length=3, max_length=50)): return { "skip":..
lru_cache : 캐싱 메모리
·
파이썬/Basic
lru_cache는 Python의 functools 모듈에서 제공하는 데코레이터로, Least Recently Used(LRU) 캐싱 메커니즘을 구현합니다. 함수의 호출 결과를 메모리에 캐싱하여 동일한 입력에 대한 반복 계산을 방지합니다.기본 사용법from functools import lru_cache@lru_cache(maxsize=128)def fibonacci(n): if n  캐시 크기와 성능 측정import timefrom functools import lru_cachedef measure_time(func, *args): start = time.time() result = func(*args) end = time.time() return result, end - s..
FastAPI와 Nginx : 웹 서버 구성
·
파이썬/Fast API
Nginx란 무엇인가?Nginx(엔진엑스)는 고성능 웹 서버이자 리버스 프록시, 로드 밸런서, HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 2004년 Igor Sysoev가 개발한 이후, 현재 전 세계 웹 서버 시장의 상당 부분을 차지하고 있습니다.주요 특징:비동기 이벤트 기반 아키텍처낮은 메모리 사용량높은 동시성 처리 능력정적 파일 서빙 최적화FastAPI에 Nginx가 필요한 이유리버스 프록시 기능# nginx.confserver { listen 80; server_name example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; prox..
Pydantic Field : 데이터 유효성 검사
·
파이썬
Pydantic의 Field는 모델 필드를 정의할 때 사용되는 핵심 기능입니다. Field를 통해 데이터 유효성 검사, 기본값 설정, 제약 조건 등을 세밀하게 제어할 수 있습니다.기본 Field 매개변수from pydantic import BaseModel, Fieldfrom typing import Optionalclass User(BaseModel): # 기본적인 Field 사용 name: str = Field( default="John Doe", # 기본값 설정 min_length=2, # 최소 길이 max_length=50, # 최대 길이 description="사..