#python
노트 43개
Backend
DjangoModel·Template·View 구조와 ORM·Admin·인증을 기본 제공하는 Python 웹 프레임워크.
Backend › Django
Django 시작하기와 MTV 패턴Django 프로젝트와 앱을 만들고, Model·Template·View가 요청을 나눠 처리하는 MTV 구조를 이해한다.
Backend › Django
Django Form과 ModelFormDjango Form으로 입력 폼 렌더링과 유효성 검사를 자동화하고, ModelForm으로 모델 필드를 재사용해 생성·수정 로직을 단순화한다.
Backend › Django
Django Model, Migration과 Adminmodels.py의 클래스로 DB 테이블 구조를 정의하고, makemigrations·migrate로 그 변경을 데이터베이스에 반영하며, admin.py에 모델을 등록해 관리자 페이지에서 데이터를 확인·편집하는 방법.
Backend › Django
Django Template과 Static 파일DTL의 변수·필터·태그와 템플릿 상속으로 화면을 구성하고, CSS·이미지 같은 정적 파일을 연결하는 방법.
Backend › Django
Django URL과 Viewurls.py가 요청 주소를 view 함수로 연결하고, view가 render로 응답을 만드는 흐름과 URL 분리·이름·namespace.
Backend › Django
Django User와 인증django.contrib.auth의 User 모델로 회원가입·로그인을 구현하고, 템플릿에서 현재 사용자 정보를 쓰는 방법.
Computer Science › Programming Languages
Python 언어 기본: 객체와 가변성, 함수, 데코레이터, 클래스, 타입 힌트, importPython 문법이 실제로 어떻게 동작하는지 주제별로 정리한다. 이름과 객체, 가변·불변 타입과 is·==, 얕은 복사와 깊은 복사, *args·**kwargs와 인자 종류, 일급 함수와 LEGB 스코프·클로저·nonlocal, 람다의 제약, 데코레이터, 컴프리헨션과 제너레이터 식, 컨텍스트 매니저, 클래스 변수와 인스턴스 변수, 이름 맹글링, 매직 메서드, 프로퍼티와 디스크립터, 타입 힌트와 mypy, import 시스템과 __init__.py, Python 2와 3의 차이.
Computer Science › Programming Languages
Python 언어 동작: 제너레이터, MRO, 메모리 관리, 동시성, 성능Python의 런타임 동작을 정리한다. 이터러블·이터레이터·제너레이터의 관계와 지연 평가, 다중 상속의 MRO(C3 선형화)와 super(), CPython의 참조 카운팅·세대별 순환 수집과 메모리 누수 패턴, threading·multiprocessing·asyncio 비교와 이벤트 루프·TaskGroup, 측정에서 런타임 교체까지의 성능 최적화, CPython·PyPy(추적 JIT)·Jython(JVM, GIL 없음) 구현체 비교, 덕 타이핑과 Protocol.
Algorithm
자료구조, 탐색, 그래프, 알고리즘 설계 패러다임, 정렬, 복잡도 분석과 코딩 테스트 전략을 모은 알고리즘 노트.
Algorithm › Data Structure
서로소 집합 (Union-Find)원소들이 어떤 집합에 속하는지 관리하며, 두 집합을 합치고 대표를 찾는 연산을 빠르게 처리하는 자료구조.
Algorithm › Data Structure
세그먼트 트리배열을 구간별로 나눠 각 구간의 합·최솟값 같은 요약을 이진 트리에 저장해, 값이 바뀌는 배열에서도 구간 질의와 갱신을 모두 O(log n)에 처리하는 자료구조. 배열 크기 잡기, 재귀 구현, 지연 전파와 펜윅 트리 비교까지 정리한다.
Algorithm › Data Structure
스택한쪽 끝에서만 넣고 빼는 후입선출(LIFO) 자료구조와 언어별 구현, 다음 큰 원소를 O(n)에 구하는 단조 스택.
Algorithm › Data Structure
큐와 덱먼저 넣은 것을 먼저 꺼내는 큐(FIFO)와 양쪽 끝에서 넣고 뺄 수 있는 덱, 스택 두 개로 큐·큐로 스택 만들기, 구현에 따라 달라지는 덱의 임의 접근 비용.
Algorithm › Data Structure
힙과 우선순위 큐우선순위가 가장 높은 원소를 O(log n)에 넣고 꺼낼 수 있게 해 주는 완전 이진 트리 기반 자료구조, 편향되지 않는 이유와 힙 정렬, 크기 k짜리 힙으로 상위 k개를 O(n log k)에 구하는 방법.
Algorithm › Graph
위상 정렬방향 비순환 그래프(DAG)의 정점을 모든 간선 u→v에서 u가 앞에 오도록 나열하는 위상 정렬. 진입 차수와 큐를 쓰는 칸 알고리즘, DFS 후위 순서를 뒤집는 방법, 사이클 판별, 사전순 최소 순서를 정리한다.
Algorithm › Math
미분과 적분 기초극한과 연속, 순간변화율로서의 도함수와 미분 규칙(곱·몫·연쇄 법칙), 지수·로그·삼각함수의 도함수, 증감과 극값을 이용한 최적화, 누적으로서의 적분과 미적분학의 기본 정리를 정리하고 수치 미분·경사 하강·수치 적분 코드로 연결한다.
Algorithm › Math
비트 연산 기법정수의 비트를 직접 다루는 연산자와 관용구. k번째 비트 검사·설정·끄기·뒤집기, 2의 거듭제곱 판별, 최하위 1비트, XOR의 성질, 비트마스크로 집합 표현하기, 언어별 정수 폭과 음수 처리 차이.
Algorithm › Math
순열과 조합순서를 따지는 순열과 따지지 않는 조합의 공식을 재귀적으로 유도하고, 파스칼 점화식과 이항 정리, 중복 순열·중복 조합, 완전 탐색의 경우의 수 추정과 파이썬 구현을 정리한다.
Algorithm › Paradigm
동적 계획법 (DP)겹치는 하위 문제의 답을 한 번만 계산해 저장하고 재사용하여 큰 문제를 효율적으로 푸는 기법. 하위 문제를 찾는 연습(타일링)과 구간 DP(연쇄 행렬 곱셈)를 함께 다룬다.
Algorithm › Paradigm
재귀 함수자기 자신을 다시 호출해 문제를 더 작은 같은 문제로 줄여 가는 함수와 그 종료 조건. 예제로 팩토리얼과 유클리드 호제법(최대공약수·최소공배수)을 다룬다.
Algorithm › Paradigm
최장 증가 부분 수열 (LIS)수열에서 순서를 지키며 고른 증가 부분 수열 중 가장 긴 것을 구하는 문제. O(n²) DP, 이분 탐색으로 길이를 구하는 O(n log n) 방법, 실제 수열까지 복원하는 방법.
Algorithm › Paradigm
투 포인터와 슬라이딩 윈도우인덱스 두 개를 규칙에 따라 움직여 이중 반복문 O(n²)을 O(n)으로 줄이는 기법. 양 끝에서 좁히기, 같은 방향 윈도우, 두 배열 병합·교집합, 빠른·느린 포인터의 네 가지 모양과 회문 판정·중심 확장을 정리한다.
Algorithm › Search
완전 탐색과 백트래킹가능한 모든 경우를 나열해 답을 찾는 방법과, 가망 없는 경로를 일찍 잘라내는 백트래킹.
Algorithm › Search
이분 탐색정렬된 데이터에서 탐색 범위를 절반씩 줄여 O(log n)에 원하는 값을 찾는 방법과 그 복잡도 증명, lower bound·upper bound, 경계 조건 실수, 삼분할이 빠르지 않은 이유, 순차 탐색과 어느 쪽을 고를지.
Algorithm › Sorting
기본 정렬: 버블·선택·삽입·셸·계수·기수 정렬구현이 단순한 O(n²) 비교 정렬 세 가지와 입력 상태에 따른 실제 속도 비교, 간격을 줄여 가며 삽입 정렬하는 셸 정렬, 비교 없이 정렬하는 계수 정렬·기수 정렬(LSD·MSD).
Algorithm › Sorting
병합 정렬과 퀵 정렬분할 정복으로 평균 O(n log n)에 정렬하는 두 대표 알고리즘과 상향식 병합 정렬, 퀵 셀렉트, 정렬 알고리즘 복잡도·안정성 비교, 언어별 표준 정렬, 메모리보다 큰 데이터의 외부 정렬.
Algorithm
구간 합과 접두사 합앞에서부터의 누적 합을 미리 구해 두고, 임의 구간의 합을 뺄셈 한 번으로 구하는 기법. 접미사·곱 변형과 해시를 곁들여 합이 k인 부분 배열을 세는 방법.
Algorithm
코딩 테스트 접근법주석으로 설계하고 테스트 케이스를 먼저 적는 문제 풀이 순서, 출제 빈도별 알고리즘 우선순위, 막혔을 때 풀이를 볼 시점을 정하는 연습법과 그 방식이 자기기만이 되는 함정, 랜덤 비교 테스트로 반례 찾기, 막혔을 때 접근을 찾는 관점과 이론상 최선 복잡도(BTTC)를 기준으로 시간·공간을 줄이는 최적화 기법, 파이썬·자바스크립트 실전 팁.
Algorithm
KMP 문자열 검색 알고리즘텍스트에서 패턴을 찾을 때 불일치가 나도 텍스트 포인터를 되돌리지 않는 KMP 알고리즘. 패턴의 접두사이자 접미사인 가장 긴 부분의 길이를 담은 실패 함수(pi 배열)로 점프할 위치를 정해 O(N + M)에 검색한다. 롤링 해시로 창을 비교하는 라빈-카프와 다른 문자열 검색 알고리즘도 비교한다.
AI-Data
LLM·에이전트 도구(Claude Code, 스킬, 루프 엔지니어링)와 AI 활용법, 머신 러닝·딥러닝·강화 학습·자연어 처리의 기초 개념, 파이썬 데이터 분석·Jupyter 같은 데이터 도구에 관한 노트.
AI & Data
결정 트리와 앙상블: 랜덤 포레스트와 부스팅표 형태(정형) 데이터에서는 딥러닝보다 트리 기반 모델이 강할 때가 많다. 지니 불순도로 가지를 나누는 결정 트리, 여러 트리를 투표시키는 배깅·랜덤 포레스트, 앞 모델의 실수를 이어 고치는 부스팅(AdaBoost, XGBoost·LightGBM·CatBoost)을 비교한다. 두 계열이 쓰는 트리 깊이와 하이퍼파라미터의 차이, 정형 데이터에서 그레이디언트 부스팅이 이기는 이유, 큰 트리 하나보다 작은 트리 여러 개가 나은 이유(상관과 분산)를 다루고, 학습한 모델을 서버나 기기에 배포하는 방식을 정리한다.
AI & Data
네이버 블로그 크롤링네이버 검색 API로 키워드별 블로그 글 URL·제목·작성일을 모으고, iframe 안의 본문은 PostView 주소나 Selenium으로 받아 BeautifulSoup으로 추출해 CSV로 저장하는 흐름. API 한도, iframe 구조, 선택자 변경, 예외 처리 함정을 정리한다.
AI & Data
데이터 시각화: 인코딩, 차트 고르기, 디자인 원칙시각화는 데이터의 각 열을 위치·길이·색 같은 시각 채널에 대응시키는 일이다. 그래픽 문법의 일곱 요소로 차트를 분해하고, 데이터 유형과 지각 특성으로 채널을 고르고, 크기·분포·비율·관계·시간 변화라는 질문으로 차트를 고른 뒤, 잉크 비례·겹침 풀기·적고 의미 있는 색·직접 레이블·옅은 맥락 요소로 다듬고 3차원은 피한다.
AI & Data
데이터의 위치 추정: 평균·절사평균·가중평균·중앙값수치 데이터를 값 하나로 대표하는 위치 추정(대푯값)을 정리한다. 산술평균은 이상치 하나에 크게 흔들리므로, 양 끝을 잘라 내는 절사평균, 데이터마다 중요도를 주는 가중평균, 순서의 가운데를 쓰는 중앙값을 상황에 맞게 고른다.
AI & Data
머신 러닝 기초: 네 단계 추상화머신 러닝은 데이터의 분포를 배워 예측하는 일이다. 문제를 데이터 → 모델 → 최적화 목표(손실 함수) → 최적화 알고리즘의 네 단계로 나눠 보면 어떤 기법이든 자리를 찾을 수 있다. 최소제곱법과 그 행렬 풀이(정규 방정식)를 예로 들고, K-겹 교차 검증과 데이터 누수, 과적합·과소적합, 확률과 우도의 차이와 MLE·MAP, 특징화, 규제(L1·L2)와 특징 스케일링의 구분, 차원의 저주와 PCA를 정리한다. 소프트웨어 엔지니어가 다시 초보자가 되어 머신 러닝 실무자로 넘어가는 법도 다룬다.
AI & Data
문자열·문서 유사도: 편집 거리와 코사인 유사도검색어와 제목처럼 짧은 문자열은 편집 거리·Jaro-Winkler로, 키워드 묶음처럼 긴 문서는 벡터화 후 코사인 유사도로 비교한다. L1·L2·L∞ 거리와 자카드 유사도, 희소 벡터의 한계, 문서가 많을 때의 역색인·LSH와 k-means 군집도 다룬다. 영화 검색·추천 기능에 적용한 파이썬 예제와 함께 정리.
AI & Data
시계열 분석: 정상성·분해·ARIMA에서 Prophet과 딥러닝 예측까지시간 순서로 관측한 데이터를 다루는 시계열 분석을 정리한다. 추세·계절성·주기 성분, 정상성과 ACF·PACF·단위근 검정, 로그 변환과 차분, 고전 분해와 STL, 기준 예측과 지수평활, ARIMA·SARIMAX와 GARCH 같은 확장, Prophet의 성분 모델과 주요 파라미터, 윈도 지도 학습·seq2seq·인과 합성곱 같은 딥러닝 예측, 시간 순서를 지키는 평가, DTW 거리로 하는 시계열 분류·군집까지 다룬다.
AI & Data
웹 크롤링 전략: 정적·동적 판별과 수집 방식 고르기크롤링은 먼저 페이지가 정적인지 동적인지 판별하고, 공식 API → 숨은 데이터 엔드포인트 직접 호출(네트워크 리버싱) → 헤드리스 브라우저 순으로 가벼운 방식을 고른다. 브라우저 자동화는 편하지만 느리고 무거우며, 엔드포인트를 찾으면 훨씬 가볍고 빨라진다. 로그인 페이지의 쿠키·세션·CSRF 토큰, 브라우저 자동화의 암묵적·명시적 대기, 멀티프로세싱·스레드·비동기로 병렬 수집하는 법도 다룬다.
AI & Data
파이썬 데이터 분석 프로세스데이터를 구하고 NumPy·pandas로 처리한 뒤 탐색적 데이터 분석(EDA)과 시각화로 패턴을 찾고, 필요하면 성능을 개선하는 파이썬 데이터 분석의 흐름.
AI & Data
Jupyter Notebook코드·실행 결과·마크다운 문서·시각화를 한 파일에 담는 웹 기반 인터랙티브 개발 환경으로, 데이터 과학의 사실상 표준 도구.
AI & Data
newspaper로 기사 본문 추출하기사이트별 파서 없이 뉴스·블로그 기사에서 제목·작성자·발행일·본문·이미지를 뽑는 파이썬 라이브러리 newspaper. 관리가 멈춘 newspaper3k 대신 같은 API의 newspaper4k를 쓰고, download → parse → nlp 순서, Source로 사이트 기사 URL 모으기, Configuration으로 언어·헤더·프록시 다루기를 정리한다.
Tools › Dev Environment
macOS에서 pyenv로 Python 환경 잡기macOS의 시스템 Python을 건드리지 않고 pyenv로 원하는 버전을 설치·지정하는 순서와, VSCode에서 그 인터프리터를 고르고 프로젝트별 venv로 패키지를 분리하는 방법. 버전·가상환경·패키지를 한 번에 다루는 uv도 함께 정리했다.