🐍 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 .. 댓글 0 2025.04.09 이펙티브 파이썬 7장 - 동시성과 병렬성 동시성 vs 병렬성구분동시성 (Concurrency)병렬성 (Parallelism)의미여러 작업을 번갈아가며 처리 (겉으로는 동시에)여러 작업을 실제로 동시에 처리처리 방식하나의 코어가 작업을 빠르게 전환하며 처리여러 코어가 각 작업을 동시에 실행예시카페에서 혼자 주문 받고, 계산하고, 음료 만들기카페에서 세 명이 각각 주문, 계산, 음료 만들기목적응답성 향상, I/O 대기 시간 활용처리 속도 향상파이썬스레드, 코루틴 (asyncio)하위 프로세스, C 확장, 시스템 콜자바스크립트이벤트 루프, 프로미스, async/await Web Workers, Node.js의 Worker Threads GIL (Global Interupt Lock)파이썬에는 GIL이라는 전역 인터프리터 락이 존재함하나의 스레드만 파.. 댓글 0 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.. 댓글 0 2025.03.30 이전다음 🚀 Backend [FastAPI] SQLModel 1. SQLModel이란?기존 Python SQL ORM 구현체인 SQLAlchemy와 검증 패키지 Pydantic을 결합한 Python 라이브러리이다.데이터베이스 작업을 보다 간결하고 직관적으로 수행할 수 있다.SQLAlchemy의 ORM 기능을 유지하면서도 Pydantic의 데이터 검증 기능을 제공하는 것이 특징이다. 2. SQLAlchemy vs SQLModelSQLAlchemy는 두 가지 주요 API 스타일을 제공한다.SQLAlchemy Core: 저수준 SQL 표현을 사용하여 SQL을 직접 다룰 수 있도록 설계됨SQLAlchemy ORM: 객체-관계 매핑(Object-Relational Mapping)을 통해 Python 클래스로 DB 모델을 다룰 수 있음SQLModel은 SQLAlchemy .. 댓글 0 2025.03.14 [FastAPI] Best Practices - Project Structure Project StructureFastAPI 프로젝트 구조 설계 할때 참고하기 좋다.Netflaix/Dipatch를 참조하여 수정한 자료이다.fastapi-project├── alembic/├── app # 원본은 src 이지만 본인은 app 선호함.│ ├── auth│ │ ├── router.py│ │ ├── schemas.py # pydantic models│ │ ├── models.py # db models│ │ ├── dependencies.py│ │ ├── config.py # local configs│ │ ├── constants.py│ │ ├── exceptions.py│ │ ├── service.py│ │ └── ut.. 댓글 0 2025.02.14 [SQL] SELECT 관련 함수 집계 함수 (Aggregate Functions)AVG(): 평균값 계산SUM(): 합계 구하기COUNT(): 전체 행 개수COUNT(*): 모든 행의 개수COUNT(컬럼명): NULL이 아닌 값의 개수MAX() / MIN(): 최대값과 최소값GROUP_CONCAT(): 문자열 합치기ROUND() / CEIL() / FLOOR(): 반올림, 올림, 내림 두번째 인자로 어느 자리까지 표현 정함TRUNCATE(): 지정한 자리수까지 버림상위 N개 데이터 추출 (LIMIT)LIMIT N: 결과에서 상위 N개만 출력 날짜 다루기# 날짜 범위 조회WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31'또는WHERE YEAR(JOINED) = 2021 # 날짜 포맷 변경DATE_F.. 댓글 0 2025.02.05 이전다음 💻 Computer Science 백준 21279번 광부 호석 - Python 문제https://www.acmicpc.net/problem/21279 시도했지만 실패한 방법BFS(?) 방법으로 mines[x][y] = mines[x-1][y] + mines[x][y-1] - mines[x-1][y-1] + mineral[x][y] -> O(W*H)로 실패모든 포인트를 반복해서 넣어서 처리 -> O(N^2)로 실패 마지막은 투포인터 + set을 활용했다. import sysfrom collections import defaultdictinput = sys.stdin.readlinen, cash = map(int, input().split())x_gems = defaultdict(list) # x좌표에 있는 보석들y_gems = defaultdict(list) # y좌표에 있는 보석.. 댓글 0 2025.03.29 HTTP 정리 및 질문 리스트 (feat.RESTful) 1. HTTP 정리📌 주요 상태 코드 요약 정리표 상태 코드 의미사용예시200 OK성공일반적인 요청 성공201 Created리소스 생성됨POST로 새로운 리소스 생성204 No Content성공했지만 응답 본문 없음DELETE, PATCH 등 후에 본문 불필요할 때400 Bad Request클라이언트 요청 오류잘못된 파라미터, JSON 파싱 실패401 Unauthorized인증 실패로그인/토큰 없음, 만료403 Forbidden권한 없음로그인은 됐지만 권한 없음404 Not Found리소스 없음경로 또는 리소스 존재하지 않음405 Method Not Allowed메서드 허용 안됨GET만 지원하는 API에 POST 요청 등409 Conflict리소스 충돌중복 요청, 버전 충돌 등429 Too Many R.. 댓글 0 2025.03.22 로드 밸런서 (Load Balancer) 1. 로드 밸런서란?로드 밸런서(Load Balancer)는 여러 서버로 들어오는 네트워크 트래픽을 효율적으로 분산하는 장치 또는 소프트웨어를 의미한다. 이는 특정 서버에 과부하가 걸리는 것을 방지하고, 성능을 최적화하며, 고가용성을 보장하는 역할을 한다. 2. 로드 밸런서의 필요성부하 분산: 다수의 서버에 트래픽을 고르게 분산하여 특정 서버의 과부하를 방지고가용성(High Availability): 일부 서버가 장애가 나더라도 서비스가 지속 가능하도록 보장확장성(Scalability): 서버를 추가하여 더 많은 트래픽을 처리할 수 있도록 지원보안 강화: 특정 서버의 직접적인 접근을 차단하여 보안을 강화할 수 있음 3. 로드 밸런서의 작동 방식로드 밸런서는 클라이언트의 요청을 여러 서버로 나누어 전달하며.. 댓글 0 2025.03.10 이전다음