[React Query] QueryClient : 효율적인 상태관리와 데이터 캐싱
·
TypeScript
소개React Query는 React 애플리케이션에서 서버 상태를 관리하기 위한 강력한 도구입니다. 이번 글에서는 QueryClient의 핵심 기능과 활용 방법을 자세히 알아보겠습니다.설치# npm을 사용하는 경우npm install @tanstack/react-query# yarn을 사용하는 경우yarn add @tanstack/react-query# pnpm을 사용하는 경우pnpm add @tanstack/react-queryQueryClient 기본 설정import { QueryClient } from '@tanstack/react-query';// 기본 QueryClient 생성const queryClient = new QueryClient({ defaultOptions: { queries..
자료구조 : deque, Queue, heapq
·
파이썬/Basic
소개Python에서 제공하는 자료구조인 collections.deque, queue.Queue, heapq의 특징과 활용법을 자세히 알아보겠습니다. 각 자료구조의 성능 특성과 적합한 사용 사례를 살펴보겠습니다.collections.dequedeque(double-ended queue)는 양쪽 끝에서 빠른 삽입과 삭제가 가능한 자료구조입니다.시간 복잡도연산시간 복잡도앞/뒤 삽입/삭제O(1)임의 접근O(n)길이 확인O(1)예시from collections import deque# 기본 사용법d = deque([1, 2, 3, 4, 5])d.append(6) # 오른쪽 끝에 추가d.appendleft(0) # 왼쪽 끝에 추가d.pop() # 오른쪽 끝에서 제거d.pople..
next()와 제너레이터 표현식
·
파이썬/Basic
소개Python의 next()와 제너레이터 표현식은 메모리 효율적인 데이터 처리를 위한 강력한 도구입니다. 이번 글에서는 이들의 사용법과 실제 활용 사례를 살펴보겠습니다.next() 함수 이해하기기본 사용법# 간단한 이터레이터 생성numbers = iter([1, 2, 3])# next() 사용first = next(numbers) # 1second = next(numbers) # 2third = next(numbers) # 3# StopIteration 예외 발생try: next(numbers) # StopIteration 발생except StopIteration: print("더 이상 요소가 없습니다")next()의 기본값 활용numbers = iter([1, 2, 3])# 기본값 ..
데이터 클래스 비교: dataclass vs Pydantic BaseModel
·
파이썬
소개Python에서 데이터를 구조화할 때 주로 사용되는 두 가지 방식인 dataclass와 Pydantic의 BaseModel에 대해 알아보겠습니다. 각각의 특징과 사용법, 그리고 언제 어떤 것을 사용해야 하는지 살펴보겠습니다.Dataclass기본 사용법from dataclasses import dataclassfrom typing import List, Optional@dataclassclass User: name: str age: int email: Optional[str] = None friends: List[str] = None# 사용 예시user = User(name="John", age=30)print(user.name) # "John"고급 기능 활용from datacl..
프론트엔드와 백엔드 간 Enum 동기화
·
TypeScript
소개프론트엔드와 백엔드에서 동일한 Enum을 사용해야 할 때, 이를 효과적으로 관리하고 동기화하는 것은 중요한 과제입니다. 이번 글에서는 FastAPI와 React 환경에서 Enum을 일관성 있게 관리하는 다양한 방법을 알아보겠습니다.1. OpenAPI Specification을 활용한 방법FastAPI 백엔드 설정# backend/enums.pyfrom enum import Enumclass UserRole(str, Enum): ADMIN = "ADMIN" USER = "USER" GUEST = "GUEST"# backend/models.pyfrom pydantic import BaseModelfrom .enums import UserRoleclass User(BaseModel): ..
순환 참조(Circular Import) 이해하기와 해결 방법
·
파이썬/Basic
소개Python 개발을 하다 보면 "most likely due to a circular import" 라는 에러를 자주 만나게 됩니다. 이는 모듈 간 순환 참조로 인해 발생하는 문제입니다. 이번 글에서는 순환 참조가 무엇인지, 어떤 문제를 일으키는지, 그리고 해결 방법에 대해 알아보겠습니다.순환 참조란?순환 참조는 두 개 이상의 모듈이 서로를 import할 때 발생합니다.문제가 되는 코드 예시# user.pyfrom post import Postclass User: def __init__(self, name): self.name = name self.posts = [] def create_post(self, content): post = Post(cont..
React 환경 변수 : .env
·
TypeScript
소개React 애플리케이션을 개발할 때 API 키, 서버 URL 등의 민감한 정보나 환경별 설정을 관리해야 할 때가 있습니다. 이럴 때 .env 파일을 사용하면 효과적으로 환경 변수를 관리할 수 있습니다.환경 변수 기본 설정.env 파일 생성# .env 파일은 프로젝트 루트 디렉토리에 생성합니다.REACT_APP_API_URL=https://api.example.comREACT_APP_API_KEY=your_api_key_hereREACT_APP_ENV=development주의사항모든 환경 변수는 REACT_APP_ 접두사로 시작해야 합니다..env 파일은 .gitignore에 추가하여 버전 관리에서 제외해야 합니다.변수 값에 따옴표를 사용하지 않습니다.환경별 .env 파일 관리# .env.develop..
FastAPI : 병렬 처리로 API 성능 최적화
·
파이썬/Fast API
소개FastAPI 서버에서 여러 API 요청을 동시에 처리할 때, 요청 간 간섭이 발생하지 않도록 하는 것이 중요합니다. 이번 글에서는 FastAPI에서 병렬 처리를 구현하는 다양한 방법과 각각의 장단점을 알아보겠습니다.asyncio를 활용한 기본 병렬 처리asyncio는 파이썬의 기본 비동기 프로그래밍 라이브러리입니다. FastAPI는 내부적으로 해당 라이브러리를 사용하여 비동기 처리를 구현합니다.from fastapi import FastAPIimport asynciofrom typing import Listapp = FastAPI()async def process_data(data: dict) -> dict: """시간이 걸리는 작업을 시뮬레이션하는 함수""" await asyncio.s..