순환 참조(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..
MongoDB 쿼리 작성법과 최적화
·
DataBase/MongoDB
소개MongoDB는 강력한 쿼리 기능을 제공하는 NoSQL 데이터베이스입니다. 이번 글에서는 MongoDB의 다양한 쿼리 작성법과 실전 활용 방법을 자세히 알아보겠습니다.기본 CRUD 쿼리데이터 조회 (Read)// 기본 조회db.users.find() // 모든 사용자 조회db.users.findOne() // 첫 번째 사용자 조회// 조건 조회db.users.find({ age: 30 }) // 나이가 30인 사용자db.users.find({ name: "John" }) // 이름이 John인 사용자// 특정 필드만 조회db.users.find( { age: 30 }, { name: 1, email: 1, _id: 0 } // name과 email만 조회 (_id 제외))데이터 생..
[Python 프로파일링] py-spy와 yappi로 파이썬 코드 성능 분석하기
·
파이썬
소개파이썬 프로그램의 성능을 분석하고 최적화하기 위해서는 프로파일링 도구가 필수적입니다. py-spy와 yappi는 각각 다른 특징을 가진 강력한 프로파일링 도구입니다. 이번 글에서는 두 도구의 사용법과 활용 방법을 자세히 알아보겠습니다.py-spy 란?py-spy는 파이썬 프로그램을 중단하지 않고도 실시간으로 프로파일링할 수 있는 샘플링 프로파일러입니다.설치 방법pip install py-spy기본 사용법# 프로파일링할 예제 코드# example.pyimport timedef slow_function(): time.sleep(2) return "Done"def main(): for _ in range(3): slow_function()if __name__ == "__main..
VPN과 프록시 서버
·
파이썬/크롤링
소개인터넷을 사용하다 보면 VPN과 프록시 서버라는 용어를 자주 접하게 됩니다. 이 둘은 비슷해 보이지만 작동 방식과 용도에 중요한 차이가 있습니다. 이번 글에서는 VPN과 프록시 서버의 차이점을 이해하고, Python의 aiohttp를 사용한 구현 방법까지 자세히 알아보겠습니다.VPN(Virtual Private Network)의 이해VPN은 공용 네트워크를 통해 사설 네트워크처럼 안전한 연결을 만드는 기술입니다. VPN의 주요 특징 전체 네트워크 트래픽을 암호화운영체제 수준에서 작동IP 주소 완전 변경모든 애플리케이션에 적용프록시 서버의 이해프록시 서버는 클라이언트와 목적지 서버 사이에서 중계 역할을 하는 서버입니다.프록시 서버의 종류Forward Proxy (포워드 프록시) 클라이언트 -> 프록시 ..
[Python MongoDB] pymongo - CRUD 작업
·
파이썬/Package
소개MongoDB는 강력한 NoSQL 데이터베이스이며, pymongo는 Python에서 MongoDB를 사용할 수 있게 해주는 공식 드라이버입니다. 이번 글에서는 pymongo를 사용하여 데이터를 다루는 다양한 방법을 자세히 알아보겠습니다.MongoDB 연결 설정from pymongo import MongoClientfrom pymongo.collection import Collectionfrom pymongo.database import Databasefrom typing import Optional, Dict, Listclass MongoDBManager: def __init__(self, uri: str, db_name: str): """ MongoDB 연결 관리자 ..
FastAPI 애플리케이션 성능 최적화와 캐싱
·
파이썬/Fast API
소개FastAPI는 이미 높은 성능을 제공하지만, 적절한 최적화와 캐싱 전략을 통해 더 나은 성능을 얻을 수 있습니다. 이번 글에서는 FastAPI 애플리케이션의 성능을 극대화하는 다양한 전략과 캐싱 구현 방법을 알아보겠습니다.데이터베이스 최적화SQLAlchemy 세션 관리# database.pyfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmaker, Sessionfrom contextlib import contextmanagerclass DatabaseManager: def __init__(self, url: str): self.engine = create_engine( url, ..