본문 바로가기

분류 전체보기65

[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. 4. 28.
[Python] type hint & generic 1. 타입 힌트(type hint) 1. 필요성파이썬은 동적 타입 언어로 변수의 타입을 명시하지 않아도 실행 가능하다.하지만 프로젝트 규모가 커지고 협업 인원이 많아질수록 타입 불확실성으로 인한 오류가 발생할 가능성이 커진다.def total(price, count): return price * counttotal("1000", 3) # → '100010001000' 예를 들어, 위의 코드는 int * int 를 예상했지만, 문자열이 들어오면 개발자의 의도와 다르게 함수가 동작할 수 있다.타입 힌트를 사용하면, 타입에 대한 오류를 줄일 수 있다. 2. 문법1. 기본 타입변수_이름: 변수_타입 으로 선언한다.함수 인자에도 동일하게 설정하며, 반환 값은 -> 뒤에 표시한다.name: str = "p.. 2025. 4. 23.
[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. 4. 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. 4. 16.
macOS 그림판 만들기 + @Swift UI 상태 관리, redo & undo 가끔 디스코드나 화상회의를 할 때 완전 간단한 그림판이 필요한데, 맥북에선 기본 그림판 프로그램이 안보여 만들었다. 1. 주요 기능기본 색상 팔레트 8개 + 최근 사용 색상 8개자유롭게 선 그리기Undo / Redo (⌘Z / ⇧⌘Z)ColorPicker로 사용자 지정 색상 추가Clear 버튼으로 전체 초기화2. 구조Paint/├── PaintApp.swift # 앱 시작점├── ContentView.swift # 메인 뷰├── CanvasView.swift # 그림 그리는 로직이 들어있는 하위 뷰├── DrawingPath.swift # 선을 구성하는 모델├── DrawingViewModel.. 2025. 4. 14.
이펙티브 파이썬 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. 4. 9.