🐍 Python
-
이펙티브 파이썬 8장 - 강건성과 성능
Better way 65 try/except/else/finally의 각 블록을 잘 활용하라블록용도try예외가 발생할 수 있는 최소한의 코드만 포함except예외 처리else예외 없이 성공한 경우의 처리 (except으로 빠진 경우 실행 X)finally예외 여부와 무관하게 반드시 실행되어야 하는 부분 (파일 닫는 등) 안 좋은 예시 - try문 안에 예외 발생 코드 & 안하는 코드가 섞여 있음import threadinglock = threading.Lock()def critical_section_basic(): lock.acquire() try: result = 10 / 0 # ❗ 예외 발생 가능 print("✅ 작업 성공:", result) except ..
2025.04.09
-
이펙티브 파이썬 7장 - 동시성과 병렬성
동시성 vs 병렬성구분동시성 (Concurrency)병렬성 (Parallelism)의미여러 작업을 번갈아가며 처리 (겉으로는 동시에)여러 작업을 실제로 동시에 처리처리 방식하나의 코어가 작업을 빠르게 전환하며 처리여러 코어가 각 작업을 동시에 실행예시카페에서 혼자 주문 받고, 계산하고, 음료 만들기카페에서 세 명이 각각 주문, 계산, 음료 만들기목적응답성 향상, I/O 대기 시간 활용처리 속도 향상파이썬스레드, 코루틴 (asyncio)하위 프로세스, C 확장, 시스템 콜자바스크립트이벤트 루프, 프로미스, async/await Web Workers, Node.js의 Worker Threads GIL (Global Interupt Lock)파이썬에는 GIL이라는 전역 인터프리터 락이 존재함하나의 스레드만 파..
2025.04.01
-
이펙티브 파이썬 6장 - 메타클래스와 애트리뷰트
Better way 44 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라 setter, getter 메서드 활용이 아닌 애트리뷰트를 직접 활용하자# 안 좋은 예시 - getter, setter 활용class Person: def __init__(self): self._name = '' def get_name(self): return self._name def set_name(self, value): self._name = valuep = Person()p.set_name('Sungchan')print(p.get_name()) # 좋은 예시 - 애트리뷰트 활용class Person: def __init__(self): self.n..
2025.03.30
🚀 Backend
-
[Swift + Supabase] OAuth - Sign in with Apple
Swift에서 Supabase 를 활용해서 Apple OAuth 구현 방법(삽질 후기) 1. Apple Developer Console 설정Service ID 생성Apple Developer -> Certificates, Identifiers & ProfilesSign in with Apple 활성화Key 생성 Certificates -> Key + 버튼"Sign in with Apple" .p8 파일 다운로드Redirect URI 등록2.Supabase 에서 만들어진 redirect URL 추가 .p8 파일에서 Secret Key 뽑기왜인지는 모르지만 secret Key 를 내가 뽑아야한다# Pythonimport jwtimport datetimeTEAM_ID = ''CLIENT_ID = ''KEY_I..
2025.04.28
-
[FastAPI] Middleware 미들웨어 (CORS, Logging)
1. 미들웨어란?FastAPI의 미들웨어는 클라이언트의 요청(Request)와 응답(Response) 사이에 실행되는 가로채기 함수주로 인증, 로깅, 성능 측정, 에러 처리, 보안 등 공통 기능을 구현하는데 사용 가능비즈니스 & 도메인 로직을 분리할 수 있어, 가독성과 유지보수성 향상 2. FastAPI 예시import timefrom fastapi import FastAPI, Requestapp = FastAPI()@app.middleware("http")async def add_process_time_header(request: Request, call_next): start_time = time.perf_counter() # 실제 라우터 함수 호출 전 response = await ca..
2025.04.20
-
[FastAPI] SSE (Server-Sent Events)
1. Server-Sent EventsSSE(Server-Sent Events) 클라이언트가 서버에 연결을 유지한 채, 서버에서 발생하는 실시간 이벤트를 지속적으로 전달받는 방식📌 “서버가 클라이언트에게 한 번 연결로 여러 번 응답을 보낼 수 있는 HTTP 기반 기술” 2. SSE 구조클라이언트는 EventSource 객체를 통해 서버에 요청을 보냅니다.서버는 text/event-stream 타입으로 응답을 보내고 연결을 유지한 채 여러 메시지를 전송합니다.클라이언트는 서버로부터 받은 각 메시지를 실시간으로 처리합니다.# ClientGET /stream HTTP/1.1Accept: text/event-stream # Responseevent: datadata: Hello, world!event: fin..
2025.04.16