본문 바로가기
728x90
반응형

분류 전체보기333

PySide6로 이해하기 1편: QMainWindow와 화면 뼈대 잡기 PySide6 UI 코드를 하나씩 이해해보려 한다.PySide6를 처음 보면 위젯 이름이 많이 나온다. QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QSplitter, QTabWidget, QTableWidget 같은 이름이 한꺼번에 등장한다. 처음에는 이것들이 각각 무엇을 하는지보다, 화면이 어떤 순서로 조립되는지 감을 잡는 것이 더 중요하다.이번 글에서는 앱이 켜지는 지점부터 MainWindow가 화면의 큰 뼈대를 만드는 과정까지 살펴본다.PySide6 앱은 어디서 시작될까이 프로젝트의 시작점은 main.py다.import sysfrom PySide6.QtWidgets import QApplicationfrom app.ui.main_window import M.. 2026. 6. 5.
PySide6 리팩토링 5편 : 매핑 UI를 다시 만들어도 선택값 지키기 4편에서는 헤더 적용 흐름에서 컬럼명 정리 규칙을 ExcelService로 옮기고, 헤더 적용 성공 후 화면 갱신을 _apply_header_data()로 묶었다. 그 결과 apply_selected_header()는 “선택한 헤더로 읽기 → 컬럼명 정리 → 화면에 적용”이라는 흐름을 보여주는 메서드가 되었다.이번에는 그 다음 단계인 build_mapping_ui()를 살펴봤다.헤더가 적용되면 프로그램은 원본 데이터의 컬럼을 Darwin Core 필드에 연결할 수 있는 매핑 UI를 만든다. 각 필드마다 설명을 보여주고, 원본 컬럼을 선택할 콤보박스를 만들고, 일부 필드는 직접 입력값도 받을 수 있게 한다. 여기에 자동 매핑과 기존 입력값 복원까지 더해지면서 build_mapping_ui()는 단순한 화면.. 2026. 6. 5.
PySide6 리팩토링 4편 : 헤더 적용과 컬럼명 정리 분리하기 3편에서는 Excel 파일을 처음 불러오는 흐름을 “파일 선택 → 시트 선택 → 원본 읽기 → 화면 반영” 단계로 나눴다. 그 작업을 마친 뒤 다음 리팩토링 후보로 apply_selected_header()를 남겨두었다.사용자가 원본 미리보기에서 헤더 행을 선택하고 버튼을 누르면, 프로그램은 선택한 행을 실제 컬럼명으로 사용해 파일을 다시 읽는다. 기존 메서드는 이 작업뿐 아니라 컬럼명 정리와 화면 갱신까지 모두 직접 처리하고 있었다.이번에는 헤더 적용 흐름에서 데이터 처리와 UI 반영의 경계를 찾아 분리해봤다.기존 apply_selected_header()가 하던 일기존 메서드의 작업을 순서대로 펼치면 다음과 같다.파일과 원본 데이터가 로드되었는지 확인한다.사용자가 헤더 행을 선택했는지 확인한다.선택한.. 2026. 6. 4.
PySide6 리팩토링 3편: Excel 파일 읽기 흐름을 단계별로 나누기 앞선 작업에서는 load_excel() 안에 한꺼번에 들어 있던 상태 초기화와 UI 초기화를 메서드로 분리했다. 코드를 나누고 나니 각각 무엇을 하는지는 이전보다 잘 보였다. 하지만 파일 하나를 불러오는 전체 흐름은 여전히 한 메서드 안에서 여러 단계가 섞여 있었고, 분리한 메서드를 잘못 호출하는 문제도 생겼다.이번에는 메서드 수를 늘리는 것 자체보다, 파일 읽기 흐름을 위에서 아래로 읽을 수 있게 만드는 데 집중했다.2편 이후의 load_excel()파일 업로드 버튼을 누르면 프로그램은 다음 일을 처리해야 한다.파일 선택 창을 연다.선택한 파일의 시트 목록을 읽는다.사용할 시트를 사용자에게 묻는다.헤더가 없는 원본 데이터를 읽는다.이전 파일의 상태와 화면을 초기화한다.새 원본 데이터를 미리보기에 표시한.. 2026. 6. 4.
돈 주고 QR 코드 만들지 마세요! 무료로 QR 코드 생성하기! 돈 주고 QR 코드 만들지 마세요! URL만 있으면 무료로 QR 코드 만드는 Python 파일요즘 명함, 모바일 청첩장, 블로그, 유튜브 채널, 설문조사 링크 등을 공유할 때 QR 코드를 많이 사용합니다.저도 URL을 QR 코드로 바꿔야 하는 일이 있어서 처음에는 무료 QR 코드 생성 사이트를 찾아봤습니다. 그런데 막상 사용해보면 고해상도 다운로드, 디자인 변경, 사용 기간 제한, 워터마크 제거 등의 이유로 유료 결제를 유도하는 경우가 있었습니다.물론 디자인이 화려한 QR 코드나 통계 기능이 필요한 경우라면 유료 서비스를 사용할 수도 있습니다. 하지만 단순히 URL을 QR 코드 이미지로 변환하는 정도라면 굳이 돈을 낼 필요가 없습니다.Python을 이용하면 URL 하나만 입력해서 QR 코드 이미지를 직접.. 2026. 5. 28.
PySide6 기본 정리: QWidget, Layout, StyleSheet 이해하기 PySide6 기본 정리: QWidget, Layout, StyleSheet 이해하기PySide6로 데스크톱 GUI 프로그램을 만들 때 가장 먼저 만나게 되는 개념은 QWidget, Layout, StyleSheet다.처음에는 버튼, 라벨, 입력창을 화면에 올리는 것만 생각하기 쉽다. 하지만 조금만 기능이 늘어나면 “이 위젯을 어디에 배치할지”, “화면 크기가 바뀌어도 자연스럽게 정렬되게 할지”, “버튼과 테이블의 디자인을 어떻게 통일할지”를 함께 고민하게 된다.이 글에서는 PySide6를 처음 보는 사람도 이해할 수 있도록 다음 세 가지를 중심으로 정리한다.QWidget이 무엇인지화면 배치를 Layout으로 어떻게 구성하는지CSS처럼 보이는 StyleSheet를 어떻게 적용하는지1. PySide6에서 .. 2026. 5. 28.
PySide6 리팩토링 2편: Excel 파일 읽기 흐름 분리하기 PySide6 리팩토링 2편: Excel 파일 읽기 흐름 분리하기1편에서는 프로젝트 전체 구조를 살펴보면서 MainWindow가 너무 많은 책임을 갖고 있다는 점을 확인했다.화면을 구성하고 버튼 이벤트를 연결하는 역할뿐 아니라, 파일을 읽고, 데이터를 변환하고, 좌표를 검증하고, 결과를 저장하는 흐름까지 MainWindow 안에 많이 모여 있었다.그래서 이번 편에서는 그중에서도 가장 경계가 분명한 기능부터 다시 읽어보려고 한다.바로 Excel/CSV 파일 읽기와 결과 Excel 저장이다.이 기능은 현재 app/services/excel\_service.py의 ExcelService가 담당하고 있다.ExcelService는 어떤 역할을 하는가ExcelService를 한 문장으로 정리하면 이렇다.Excel .. 2026. 5. 28.
PySide6 리팩토링 1편: 프로젝트 구조 다시 읽기 처음 만든 파이썬 프로젝트 리팩토링하기 1편: 기능별로 나누지 못했던 코드를 다시 읽기이 프로젝트는 내가 처음으로 만들어본 파이썬 프로젝트에 가깝다. 처음에는 기능을 완성하는 것이 가장 중요했다. 버튼을 만들고, 클릭 이벤트를 연결하고, Excel 파일을 읽고, 결과를 테이블에 보여주는 흐름을 하나씩 붙이다 보니 일단 동작하는 프로그램은 만들 수 있었다.하지만 기능이 늘어날수록 코드가 점점 읽기 어려워졌다. 특히 PySide6로 만든 데스크톱 GUI 프로그램에서는 화면 코드, 버튼 이벤트, 파일 처리, 데이터 변환 로직이 자연스럽게 한 클래스 안으로 모이기 쉬웠다. 그 결과 MainWindow가 앱의 거의 모든 일을 알고 있는 상태가 되었다.이번 글은 “처음부터 잘 나누지 못했던 코드”를 다시 읽으면서,.. 2026. 5. 27.
[Apache/Tomcat] 웹 서버 에러 페이지 처리(ErrorDocument) 시 로그인 세션이 끊기는 문제 해결기 1. 개요 (문제 상황)최근 주요 웹 시스템 보안 점검 항목 중 하나인 "웹 서버 및 WAS 정보 노출 차단"을 위해, 잘못된 URL(400, 404, 500 등) 요청 시 http 코드가 아예 알 수 없도록 커스텀 에러 페이지(error.html)를 보여주는 작업을 전산팀에서 진행했다.전산팀 공유에 따르면, 처음에는 Tomcat단에서 처리하려 했으나 톰캣에 설정해준 error 페이지가 제대로 적용되지 않아서, 이를 해결하기 위해 전산팀에서는 앞단 웹 서버(Apache)에서 에러를 가로채도록 ProxyErrorOverride On 설정을 적용했다는 답변을 받았다. 문제는 이 인프라 설정이 적용된 후, 애플리케이션 단에서 잘 되던 로그인 세션이 유지되지 않고 자꾸 튕기는 사이드 이펙트가 발생한 점이다. 2.. 2026. 5. 26.
[R] R기초_R을 이용한 데이터 분석기초 1. R을 이용한 데이터 분석 기초 1) 데이터 사이언스란?=> 통계학, 컴퓨터 공학, 도메인 지식을 활용해 방대한 데이터에서 인사이트를 추출하고, 이를 기반으로 문제 해결 및 의사결정을 지원하는 학제간 연구 분야입니다. 데이터 수집, 전처리, 분석, 시각화, 머신러닝/딥러닝 모델 개발을 통해 미래를 예측하거나 현상을 객관적으로 이해하는 것이 주된 목적즉, 데이터를 수집하고 분석하고 활용하기 위한 모든 기술의 집합 이 데이터 사이언스를 하려면 필요한 것은 무엇일까? 여러 데이터들이 존재하겠지만 정제된 데이터가 필요합니다.사진이 있지만 정제되지 않은 사진으로만 딥러닝 시킬땐, 인식률이 현저하게 떨어지게됩니다. 데이터사이언티스트란? 정제된 데이터를 수집을 잘 할 수 있는것이 데이터 사이언티스트의 역할 중 .. 2026. 4. 9.
728x90
반응형