파이썬

PySide6 실전 강좌 #8 배포와 마무리 — 아이콘·버전 정보, 서명, GitHub Actions
5 분 소요

PySide6 실전 강좌 #8 배포와 마무리 — 아이콘·버전 정보, 서명, GitHub Actions

시리즈 마지막 편으로 앱을 남에게 건넬 수 있는 상태로 마감합니다. PyInstaller spec 파일로 아이콘·이름·리소스를 관리하는 법, 버전을 한 곳에서 정의해 앱과 빌드에 공급하는 법, 서명 없는 앱이 다운로드 직후 차단되는 이유와 macOS 공증·Windows 서명의 지형, GitHub Actions 매트릭스로 3개 운영체제 빌드를 자동화하는 워크플로, 그리고 시리즈 전체의 회고까지 다룹니다.

PySide6 실전 강좌 #7 테스트 — pytest-qt와 층별 테스트 전략
5 분 소요

PySide6 실전 강좌 #7 테스트 — pytest-qt와 층별 테스트 전략

GUI 앱은 테스트하기 어렵다는 통념을 층 구조로 해체합니다. Qt 없이 도는 core 테스트가 가장 많아야 하는 이유, 임시 DB 파일로 리포지토리를 검증하는 법, qtbot이 QApplication과 이벤트 루프를 대신 관리해 주는 pytest-qt의 동작 방식, 모델의 계약(rowCount·data·setData)을 검증하는 테스트, 시그널 대기(waitSignal)와 위젯 상호작용 테스트, 그리고 CI에서 화면 없이 Qt 테스트를 돌리는 방법까지 다룹니다.

PySide6 실전 강좌 #6 설정 화면 — QSettings, 다크 테마, 데이터 백업
4 분 소요

PySide6 실전 강좌 #6 설정 화면 — QSettings, 다크 테마, 데이터 백업

하드코딩되어 있던 값들을 사용자에게 넘깁니다. 플랫폼별 표준 위치에 설정을 저장해 주는 QSettings의 사용법과 타입 함정, 설정 화면과 실제 동작(리마인더 시각, 닫기 버튼 동작)의 연결, 스타일시트 교체로 구현하는 다크·라이트 테마와 시스템 테마 감지, 그리고 사용자 데이터를 존중하는 마지막 조각인 CSV 내보내기와 DB 백업까지 다룹니다.

PySide6 실전 강좌 #5 트레이 상주와 리마인더 — 닫아도 죽지 않는 앱
5 분 소요

PySide6 실전 강좌 #5 트레이 상주와 리마인더 — 닫아도 죽지 않는 앱

습관 트래커를 진짜 도구로 만드는 조건, 상주를 구현합니다. QSystemTrayIcon으로 시스템 트레이에 아이콘과 메뉴를 띄우는 법, 창 닫기를 종료가 아니라 숨기기로 바꾸는 closeEvent 처리와 그 UX 논쟁, QTimer로 매일 정해진 시각에 리마인더 알림을 보내는 법, 트레이 알림의 한계와 운영체제별 차이, 그리고 앱이 두 개 떠 버리는 것을 막는 단일 인스턴스 처리까지 다룹니다.

PySide6 실전 강좌 #4 통계 화면 — QPainter로 잔디 히트맵 그리기
4 분 소요

PySide6 실전 강좌 #4 통계 화면 — QPainter로 잔디 히트맵 그리기

기성 위젯이 없는 화면을 직접 그립니다. 달성률 계산과 연속 기록 같은 통계 로직을 Qt 없는 core 층에 두고 테스트 가능하게 만드는 법, paintEvent와 QPainter로 깃허브 잔디 스타일의 히트맵 위젯을 그리는 법, 좌표 계산과 크기 대응(resizeEvent, sizeHint), 마우스 위치의 칸을 찾아 툴팁을 띄우는 히트 테스트, 그리고 다시 그리기는 update() 호출로 요청한다는 커스텀 위젯의 규칙까지 다룹니다.

PySide6 실전 강좌 #3 오늘 화면 — 커스텀 모델과 체크 토글
4 분 소요

PySide6 실전 강좌 #3 오늘 화면 — 커스텀 모델과 체크 토글

앱의 첫 실제 화면을 만듭니다. 리스트 위젯에 직접 아이템을 넣는 방식이 실전에서 금방 한계에 부딪히는 이유, QAbstractListModel을 상속해 리포지토리를 뷰에 연결하는 커스텀 모델, 역할(role)로 데이터의 여러 얼굴을 노출하는 법, 체크 상태 토글이 모델을 거쳐 DB까지 흐르는 경로, dataChanged 시그널로 뷰를 정확히 갱신하는 법, 습관 추가 다이얼로그까지 다룹니다.

PySide6 실전 강좌 #2 SQLite 데이터 층 — 리포지토리 패턴과 마이그레이션
5 분 소요

PySide6 실전 강좌 #2 SQLite 데이터 층 — 리포지토리 패턴과 마이그레이션

앱의 기억을 담당하는 데이터 층을 만듭니다. 데스크톱 앱에 SQLite가 기본값인 이유, 운영체제마다 다른 앱 데이터 폴더를 올바르게 찾는 법, 습관과 체크 기록의 스키마 설계, SQL을 한곳에 모으는 리포지토리 패턴, 그리고 앱 업데이트 후에도 사용자 데이터가 깨지지 않게 하는 user_version 기반의 초간단 마이그레이션까지 다룹니다.

PySide6 실전 강좌 #1 프로젝트 설계 — 습관 트래커를 만들며 배우는 앱 구조
5 분 소요

PySide6 실전 강좌 #1 프로젝트 설계 — 습관 트래커를 만들며 배우는 앱 구조

PySide6 입문을 마친 사람이 실제 앱 하나를 완성까지 끌고 가는 실전 시리즈의 첫 편입니다. 무엇을 만들지(로컬 습관 트래커)와 왜 이 소재인지, 기능 요구를 화면 단위로 쪼개는 법, UI·코어·데이터의 3층으로 코드를 나누는 구조와 그 이유, uv 기반 프로젝트 셋업, 그리고 앞으로 8편을 지탱할 메인 윈도우 뼈대까지 만듭니다.

NumPy 입문: 배열이 파이썬 리스트보다 빠른 이유와 기본 사용법
6 분 소요

NumPy 입문: 배열이 파이썬 리스트보다 빠른 이유와 기본 사용법

데이터 작업의 기반 라이브러리 NumPy를 원리부터 정리합니다. 파이썬 리스트가 느릴 수밖에 없는 메모리 구조와 ndarray가 그것을 해결하는 방식, 루프를 없애는 벡터화 연산, 모양이 다른 배열끼리 계산되는 브로드캐스팅의 규칙, 슬라이스가 복사가 아니라 뷰라서 생기는 함정, axis 개념으로 읽는 집계, 그리고 NumPy를 쓰지 않는 것이 나은 경우까지 다룹니다.

파이썬 3.14 새 기능 정리: t-string, 지연 어노테이션, 프리스레딩 공식 지원
5 분 소요

파이썬 3.14 새 기능 정리: t-string, 지연 어노테이션, 프리스레딩 공식 지원

2025년 10월 릴리스된 파이썬 3.14의 실무 관점 변화를 정리합니다. f-string과 닮았지만 템플릿 객체를 만드는 t-string, 기본 동작이 된 어노테이션 지연 평가, 실험 딱지를 뗀 프리스레딩(GIL 제거) 빌드의 의미, 표준 라이브러리에 들어온 다중 인터프리터와 Zstandard 압축, 괄호 없는 except 문법, 원격 디버깅 인터페이스까지, 업그레이드 전에 알아둘 것들을 다룹니다.

파이썬 웹 앱 프로덕션 배포: gunicorn, uvicorn, systemd, Docker
5 분 소요

파이썬 웹 앱 프로덕션 배포: gunicorn, uvicorn, systemd, Docker

개발 서버를 그대로 운영에 쓰면 안 되는 이유부터, 프로덕션 배포의 표준 구성을 정리합니다. WSGI와 ASGI의 구분, gunicorn과 uvicorn 워커의 조합, 워커 수를 정하는 기준, systemd 서비스로 프로세스를 관리하는 법, nginx 리버스 프록시가 맡는 일, Docker 이미지로 배포할 때의 기본형, 로그와 헬스체크, graceful shutdown까지 체크리스트로 다룹니다.

Celery로 파이썬 비동기 작업 처리: 큐, 워커, 운영 체크리스트
5 분 소요

Celery로 파이썬 비동기 작업 처리: 큐, 워커, 운영 체크리스트

웹 요청 안에서 처리하면 안 되는 무거운 작업을 Celery로 분리하는 법을 정리합니다. 브로커·워커·결과 백엔드로 이루어진 작업 큐의 구조, 태스크 정의와 delay 호출, 재시도와 지수 백오프 설정, 최소 한 번 실행이라는 전제에서 나오는 멱등성 원칙, acks_late와 시간 제한 같은 운영 설정, Flower 모니터링, 그리고 FastAPI BackgroundTasks나 RQ로 충분한 경우의 구분까지 다룹니다.