5. PySide6
9강. build.sh로 배포 자동화하기
9강. build.sh로 배포 자동화하기
2026.06.020. 학습 목표→ Ubuntu에서 build.sh 하나로 PyInstaller 빌드, .desktop 생성, 압축 배포 파일 생성을 자동화합니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 7강과 8강에서 수동으로 진행했던 배포 과정을 build.sh 스크립트 하나로 자동화합니다.기존에는 PyInstaller 명령어를 직접 입력하고, .desktop 파일을 직접 만들고, 실행 권한을 직접 부여했습니다.이번에는 이 과정을 Bash 스크립트에 정리해 같은 방식으로 반복 실행할 수 있게 만듭니다.구분내용핵심 개념Bash 스크립트, PyInstaller 자동 빌드, qrc 자동 변환, .desktop 자동 생성, zip 압축 배포실습 준비7강 PyInstaller 배포 구조와 8강 .desktop 바로가기 ..
8강. Ubuntu .desktop 파일로 앱 바로가기 만들기
8강. Ubuntu .desktop 파일로 앱 바로가기 만들기
2026.06.020. 학습 목표→ Ubuntu에서 PyInstaller로 만든 앱을 .desktop 바로가기로 실행할 수 있게 만듭니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 7강에서 PyInstaller로 만든 LocalMemoAI 실행 파일을 Ubuntu에서 앱처럼 실행할 수 있도록 .desktop 바로가기를 만듭니다.터미널에서 ./LocalMemoAI를 직접 실행하는 대신, 바탕화면이나 앱 메뉴에서 클릭해서 실행하는 구조로 바꿉니다.이번 실습은 Ubuntu Linux 환경을 기준으로 진행합니다.구분내용핵심 개념.desktop 파일, Exec, Icon, Terminal=false, 실행 권한실습 준비7강에서 만든 dist/LocalMemoAI/LocalMemoAI 실행 파일최종 목표Ubuntu에서 터미널 ..
7강 PyInstaller로 PySide6 앱 배포하기
7강 PyInstaller로 PySide6 앱 배포하기
2026.06.020. 학습 목표→ Ubuntu Linux 환경에서 PyInstaller로 PySide6 메모 요약 앱을 실행 파일 형태로 배포합니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 6강까지 만든 PySide6 로컬 AI 메모 요약 앱을 PyInstaller로 배포용 실행 파일로 만듭니다.현재 사용 환경은 Ubuntu Linux입니다. 따라서 이번 강의에서 만드는 결과물은 Linux에서 실행할 수 있는 파일입니다.PyInstaller는 Python 코드, PySide6, 필요한 모듈, 설정 파일을 묶어 dist 폴더 안에 실행 가능한 앱 형태로 만들어 줍니다.구분내용핵심 개념PyInstaller, onedir 배포, settings.json 포함, Linux 실행 파일실습 준비6강까지 만든 PySide6 ..
6강 settings.json과 qrc 리소스 정리하기
6강 settings.json과 qrc 리소스 정리하기
2026.06.020. 학습 목표→ 메모 요약 앱의 설정값은 settings.json으로 분리하고, 아이콘 같은 리소스는 qrc 파일로 정리합니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 5강까지 만든 메모 요약 앱에 설정 파일과 리소스 관리 구조를 추가합니다.모델 이름, API 주소, 창 제목 같은 설정값은 코드 안에 직접 쓰지 않고 settings.json 파일로 분리합니다.아이콘 파일은 resources.qrc에 등록한 뒤, Python 코드에서 :/icons/app_icon.png 같은 경로로 사용할 수 있게 정리합니다.구분내용핵심 개념settings.json, 설정 로딩, qrc 리소스, 아이콘 적용실습 준비5강에서 만든 메모 요약 기록 앱최종 목표설정값과 리소스를 코드 밖에서 관리하는 PySide6 앱 ..
5강 요약 기록 목록 만들기
5강 요약 기록 목록 만들기
2026.06.020. 학습 목표→ 메모 요약 결과를 한 번 출력하고 끝내지 않고, 요약 기록 목록에 계속 쌓이도록 만듭니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 4강에서 만든 메모 요약 앱에 요약 기록 목록을 추가합니다.사용자가 메모를 입력하고 요약하기 버튼을 누르면, 요약 결과가 출력창에 표시되는 동시에 아래쪽 기록 목록에도 추가됩니다.구분내용핵심 개념요약 결과 누적, QListWidget, 기록 선택, 기록 삭제실습 준비4강에서 만든 QThread 기반 메모 요약 앱최종 목표요약 결과를 화면에 표시하고, 기록 목록에도 누적해서 보여주기이번 단계의 핵심: 요약 결과를 summary_output에 보여주는 것에서 끝내지 않고, history_list에도 기록으로 추가합니다. 0.2 프로젝트 파일 1. 요약 기..
4강 메모 요약 앱으로 바꾸기
4강 메모 요약 앱으로 바꾸기
2026.06.020. 학습 목표→ 기존 PySide6 대화 앱을 메모 요약 앱으로 바꾸고, 입력한 메모를 Ollama로 요약해 화면에 표시합니다.더보기0.1 이번 강의에서 다룰 내용이번 강의에서는 3강에서 만든 QThread 기반 PySide6 앱을 메모 요약 앱으로 바꿉니다.사용자가 긴 메모를 입력하고 요약하기 버튼을 누르면, Ollama가 메모 내용을 짧게 요약하고 결과를 화면에 표시합니다.QThread와 Worker 구조는 그대로 유지하고, LLM에게 전달하는 요청 내용을 대화 질문에서 요약 요청으로 바꿉니다.구분내용핵심 개념메모 입력, 요약 프롬프트, 요약 결과 출력, QThread 재사용실습 준비3강에서 만든 QThread 기반 PySide6 대화 앱최종 목표메모를 입력하면 로컬 LLM이 요약해 주는 PySid..
3강 QThread로 응답 대기 중 화면 멈춤 방지하기
3강 QThread로 응답 대기 중 화면 멈춤 방지하기
2026.06.020. 학습 목표→ PySide6 앱에서 Ollama 응답을 기다리는 동안 화면이 멈추지 않도록 QThread로 LLM 요청을 분리합니다.더보기0.1 이번 강의에서 다룰 내용이번 강의에서는 2강에서 만든 PySide6 대화 앱에 QThread를 적용합니다.현재 구조에서는 전송 버튼을 누르면 ask_ollama()가 바로 실행됩니다.이때 Ollama 응답이 늦어지면 화면도 같이 멈춘 것처럼 보일 수 있습니다.이번 강의에서는 LLM 요청 작업을 별도 Worker로 분리하고, QThread에서 실행한 뒤, 결과만 다시 화면에 표시합니다.구분내용핵심 개념QThread, Worker, Signal, Slot, 비동기 요청 처리실습 준비2강에서 만든 PySide6 대화 앱, Ollama 실행 상태, llama3.2:..
2강 GUI에서 Ollama 응답 표시하기
2강 GUI에서 Ollama 응답 표시하기
2026.06.020. 학습 목표→ PyCharm에서 PySide6 대화 화면을 만들고, 입력한 질문을 Ollama API로 보내 로컬 LLM 응답을 화면에 표시합니다.더보기0.1 이번 강의에서 다룰 내용이번 글에서는 PySide6 기반 GUI 화면을 만들고, 1강에서 확인한 Ollama API 호출 흐름을 GUI 화면에 구현합니다. 파일은 역할별로 분리합니다.main.py는 앱 실행,windows/main_window.py는 창 화면,services/llm_service.py는 Ollama 호출을 담당합니다. 구분내용핵심 개념PySide6 화면 구성, 창 클래스 분리, 짧은 import, 버튼 이벤트, Ollama 응답 표시실습 준비PyCharm, 1강에서 만든 프로젝트 폴더, Ollama 실행 상태, llama3.2:..
1강. Ollama 설치하고 로컬 LLM 호출 테스트
1강. Ollama 설치하고 로컬 LLM 호출 테스트
2026.06.020. 학습 목표→ Ubuntu에서 Ollama를 설치하고, 로컬 LLM 모델을 실행한 뒤, curl과 Python requests로 호출 테스트까지 진행합니다.더보기0.1 이번 강의에서 다룰 내용이번 강의에서는 Ubuntu에서 로컬 LLM 호출 환경을 준비하는 과정을 학습합니다.Ollama를 설치하고, 실습용 모델을 내려받은 뒤, 터미널과 Python 코드에서 로컬 LLM 응답을 확인합니다.이번 강의가 끝나면 다음 강의에서 PySide6 화면과 Ollama 호출 코드를 연결할 준비가 됩니다.구분내용핵심 개념Ollama, 로컬 LLM 모델, API 호출, Python requests실습 준비Ubuntu 터미널, Python, 인터넷 연결, 저장 공간최종 목표Python 코드에서 로컬 LLM 응답을 받아오는..
9강. 회원가입 과제 구현
9강. 회원가입 과제 구현
2026.06.010. 학습 목표→ 8강 회원가입 과제를 실제 코드로 구현하고, 회원가입부터 로그인, 프로필 수정까지 전체 흐름을 확인합니다.더보기이번 글에서 다룰 내용이번 글에서는 8강 과제였던 회원가입 기능을 실제 코드로 구현합니다.회원가입 View에서 새 회원 정보를 입력하면, 비밀번호는 그대로 저장하지 않고 password_hash로 변환해 저장합니다.또한 회원 정보를 한 명만 저장하는 구조가 아니라, members 리스트에 여러 회원을 저장하는 구조로 만듭니다.구분내용핵심 개념회원가입 정보를 member.json에 저장하고, 비밀번호는 password_hash로 관리합니다.구현 파일main.py, password_utils.py, member_storage.py, member_model.py, tab_window..
8강. 회원가입 과제
8강. 회원가입 과제
2026.06.010. 학습 목표→ 회원가입 정보를 JSON 파일에 저장하고, 비밀번호는 해시값으로 관리하는 과제를 이해합니다.더보기이번 과제에서 할 일이번 과제에서는 기존 로그인 프로그램에 회원가입 View를 추가합니다.사용자가 회원가입 화면에서 아이디, 비밀번호, 이름, 이메일, 전화번호를 입력하면 새 회원 정보가 member.json 파일에 저장되어야 합니다.중요한 점은 비밀번호를 그대로 저장하지 않는 것입니다.비밀번호는 password_hash 형태로 변환해서 저장해야 합니다.구분내용핵심 개념회원가입 정보를 파일에 저장하고, 비밀번호는 해시값으로 관리합니다.실습 준비PySide6, QTabWidget, QLineEdit, QPushButton, QLabel, JSON 파일, hashlib를 사용합니다.최종 목표회원..
7강. 비밀번호를 해시로 저장하고 로그인 검증하기
7강. 비밀번호를 해시로 저장하고 로그인 검증하기
2026.06.010. 학습 목표→ 비밀번호를 평문으로 저장하지 않고, 해시값으로 저장한 뒤 로그인할 때 안전하게 비교하는 구조를 학습합니다.더보기이번 글에서 다룰 내용이번 글에서는 로그인 회원 정보 중 비밀번호를 그대로 저장하지 않는 방법을 학습합니다.6강에서는 회원 정보를 member.json 파일에 저장하고 다시 불러오는 구조를 만들었습니다.하지만 비밀번호가 1234처럼 그대로 파일에 저장되면 누구나 파일을 열어 비밀번호를 확인할 수 있습니다.그래서 이번 강의에서는 비밀번호를 Hash해시 값으로 바꾼 뒤 저장합니다.구분내용핵심 개념비밀번호를 평문으로 저장하지 않고 해시값으로 저장합니다.실습 준비Python의 hashlib 모듈, 기존 member.json 저장 구조, PySide6 로그인 화면최종 목표member.j..