🛠 WSL에서 PyCharm 디버깅 경로 매핑 완전 정리
·
기술블로그-Fastapi편
🛠 WSL에서 PyCharm 디버깅 경로 매핑 완전 정리 ✅ 문제 상황 요약PyCharm에서 WSL 환경으로 디버깅할 때 다음과 같은 오류가 발생할 수 있습니다:원격 파일에 경로 매핑을 적용할 수 없습니다./home/rainsos/.../base62.py 를 찾을 수 없습니다.이는 WSL 내부 경로와 PyCharm이 인식하는 UNC 경로 간의 불일치 때문입니다.✅ 해결 순서 요약1️⃣ WSL 터미널에서 현재 경로 확인pwd예시 결과:/home/rainsos/PycharmProjects/when2meet_vod➡️ 이 경로가 실제로 소스 파일이 위치한 디렉토리입니다.2️⃣ PyCharm에서 배포 설정(Deployment) 열기메뉴: File > Settings > Build, Execution, Depl..
✅ 왜 Base62 인코딩을 사용하는가?
·
기술블로그-Fastapi편
✅ 왜 Base62 인코딩을 사용하는가?1. 🎯 목적 요약"DB에서 생성된 숫자 ID나 긴 문자열을 짧고 예쁘게 바꿔서 URL이나 코드에 사용하기 위해"2. 📌 Base62 인코딩이란?09, az, A~Z 총 62개의 문자로 구성된 인코딩 방식숫자나 UUID를 짧은 문자열로 변환하는 데 사용URL-safe 하며, 사람이 읽고 입력하기 편함3. 🔍 왜 바꾸는가? (실전 이유)✅ 1) 너무 길고 보기 안 좋기 때문DB ID: 12345678901234UUID: 550e8400-e29b-41d4-a716-446655440000➡ Base62 인코딩 시 → 8FaX9📦 사용자가 복사·공유·입력하기 훨씬 쉬움✅ 2) 보안을 위해 (ID 유추 방지)https://myapp.com/user/102https:/..
✅ Base62의 encode() 메서드 완전 정리
·
기술블로그-Fastapi편
✅ Base62의 encode() 메서드 완전 정리1. 🎯 목적: 숫자를 짧고 고유한 문자열로 변환하기긴 숫자(예: 125, 123456789)를 사람이 읽기 쉬운 짧은 문자열로 바꾸기 위한 함수입니다.단축 URL, 초대코드, 고유 ID 등에 활용됩니다.이때 사용하는 인코딩 방식이 바로 Base62입니다.Base62는 az, AZ, 0~9 총 62개의 문자 집합을 활용한 인코딩 방식입니다.✅ encode 기본 개념문자 → 다른 형식(숫자, 이진수, 특정 문자셋 등) 으로 바꾸는 함수 또는 과정2. 📦 전체 코드 구조@classmethoddef encode(cls, num: int) -> str: if num 3. 🔍 코드 단계별 설명✅ 1) @classmethod + cls클래스 레벨에서 호출..
✅ 클래스 변수 vs 인스턴스 변수 vs ClassVar 완벽 정리
·
기술블로그-Fastapi편
✅ 클래스 변수 vs 인스턴스 변수 vs ClassVar 완벽 정리1. 🎯 개념 요약항목 클래스 변수 (Class Variable) 인스턴스 변수 (Instance Variable) ClassVar정의 위치클래스 안, 메서드 밖메서드 내부 (self. 사용)클래스 안에서 타입 힌트로 사용값 공유 여부✅ 모든 인스턴스에서 공유❌ 인스턴스마다 별도로 존재✅ 클래스 전체 공유 (명시 목적)수정 시 영향전체 인스턴스에 영향해당 인스턴스에만 영향타입 검사기용 (실행에는 영향 없음)주 사용 목적공통 설정값, 상수 등개별 속성 저장정적 타입 분석 정확도 향상2. 📌 코드 예시 비교✅ 클래스 변수class Dog: species = "Canine" # 클래스 변수 def __init__(self, na..
✅ Python의 Final 키워드 완벽 정리
·
기술블로그-Fastapi편
✅ Python의 Final 키워드 완벽 정리1. 🎯 Final이란?Final은 **"재할당 불가"**를 의도적으로 표시하는 타입 힌트입니다.from typing import Final을 통해 사용하며, **정적 분석 도구(mypy, pyright)**가 이를 체크합니다.런타임에는 영향을 주지 않습니다. (실행 시 에러는 없음)✅ "이 변수는 더 이상 다른 값으로 바뀌지 않아야 해요"라는 개발자 의도 표시2. 📌 기본 사용법from typing import FinalPI: Final = 3.14PI = 3.14159 # ❌ mypy에서 에러 발생 (재할당 금지)Final로 지정된 변수는 재할당이 금지됩니다.단, mutable 객체의 경우 내부 값은 여전히 변경 가능!3. 🧪 mutable 객체와 ..
✅ Python / FastAPI Annotated + Field 문법 정리: 실행에 영향이 있을까?
·
기술블로그-Fastapi편
✅ Python / FastAPI Annotated + Field 문법 정리: 실행에 영향이 있을까?1. 📌 질문 요약url_code: Annotated[str, Field(description="회의 URL 코드. unique 합니다.")]이 코드는 실제로 기능 실행에 영향을 주는가? 아니면 단지 Swagger 문서용, 타입 검사용 힌트인가?🎯 결론 먼저✅ Annotated[...] + Field(...)는 실제 실행 로직에는 거의 영향을 주지 않습니다.이 코드는 Swagger 문서 자동 생성, 유효성 검사, 타입 힌트/IDE 자동완성 용도로만 작동합니다.실제 API 로직에는 아무런 동작 변화 없이 응답/리턴값은 그대로 동작합니다.2. 🔍 구성 요소별 상세 설명🟡 url_code: str기본적인..
✅ FastAPI 접속 주소 정리: 0.0.0.0 vs 127.0.0.1
·
기술블로그-Fastapi편
✅ FastAPI 접속 주소 정리: 0.0.0.0 vs 127.0.0.11. 📌 상황 설명FastAPI 앱을 실행하면 아래와 같은 메시지가 출력됩니다:Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)이때, 브라우저 주소창에 http://0.0.0.0:8000/docs로 접속하면 작동하지 않습니다. ❌2. ✅ 올바른 접속 주소는?사용 위치 주소브라우저에서 접속할 때http://127.0.0.1:8000/docs 또는 http://localhost:8000/docs즉, 브라우저에서는 반드시 localhost나 127.0.0.1로 접속해야 합니다.3. 🧠 0.0.0.0의 의미는?서버 입장에서 "모든 IP에서 요청을 받을 준비를 하겠다"는 의미입니..
✅ FastAPI 핵심 용어 정리: path operation function
·
기술블로그-Fastapi편
✅ FastAPI 핵심 용어 정리: path operation function1. 📌 용어 정의path operation function은 FastAPI에서 API 요청을 처리하는 함수를 말합니다.클라이언트가 특정 URL에 요청을 보내면,FastAPI는 해당 요청에 맞는 함수를 실행합니다.이때 실행되는 함수가 바로 path operation function입니다.2. 🔍 구성 용어 해석용어 의미path경로 (예: /items, /meetings/{id})operationHTTP 메서드 (GET, POST, PUT, DELETE 등)function실제 요청을 처리하는 Python 함수3. ✅ 코드 예시로 이해하기from fastapi import APIRouterrouter = APIRouter()@r..