개요 PyQt6 와 PySide6 은 API ( A pplication P rogramming I nterface)가 90% 이상 똑같습니다. import 경로 정도만 바꾸면 대부분의 코드가 그대로 돌아갈 정도죠. 그런데 딱 하나, 라이선스만큼은 절대 똑같지 않습니다. 그리고 이 차이는 "취향" 문제가 아니라, 여러분이 만든 앱을 배포할 수 있느냐 없느냐를 가르는 현실적인 문제 입니다.
개요 이전 글 에서 "XOR 문제" 를 순수 numpy 를 활용, 직접 순전파 (Forward), 역전파 (Back Propagation)를 구현해 풀어보았다. 가중치(W), 편향(b)의 업데이트 수식을 손으로 직접 유도하고 코드로 옮겨봤으니, 이제 머신러닝의 원리는 어느 정도 몸에 익었을 것이다.
개요 이전 글 에서 XOR 문제 는 단층퍼셉트론 으로 풀 수 없다는 것을 확인했다. (단층신경망은 은닉층이 없는 신경망, 즉 입, 출력만 존재) 직선 하나로는 아래 네 점을 절대 두 그룹으로 나눌 수 없기 때문이다. x1 x2 y (XOR) 0 0 0 0 1 1 1 0 1 1 1 0 여기서 XOR(배타적 논리합)은 두 개의 입력값 중 하나는 참(1) 이고 하나는 거짓(0) 일 때만 참(1)을 반환하는 논리연산이다. 이번 글에서는 단층신경망으로 분리 불가능했던 XOR 문제 를 두 가지 방법으로 직접 해결해본다.
개요 이전 글에서 다뤘던 Logistic Regression 은 선형 결정 경계(직선 하나)로 두 클래스를 나누는 모델이었다. 그렇다면 아래처럼 직선 하나로는 절대 나눌 수 없는 데이터는 어떻게 해야 할까? x1 x2 y (XOR) 0 0 0 0 1 1 1 0 1 1 1 0 이것이 바로 유명한 XOR 문제 다. XOR(배타적 논리합) 은 두 입력이 다를 때 1(참) , 같을 때 0(거짓) 을 출력한다.
개요 Python 과 PyQt6 , 그리고 소켓 통신 으로 두 플레이어가 네트워크를 통해 즐길 수 있는 오목 게임 입니다. 소스코드 전체를 구조별로 설명하니, 처음 보는 분도 흐름을 따라가는데 문제없으리라 생각합니다. 코드를 짜는 즐거움은 직접 😁, 일부 설명을 돕는 그림, 표는 클로드AI 를 활용하였습니다.
개요 2026년 현재, 누구나 A.I Agent 사용이 일상화, 대중화 되었습니다. 사실 일상화라고 하지만 본격적인 시작은 2022년 11월 30일 chatGPT의 등장 이후로 불과 5년이 😧 채 지나지 않았습니다. 과거 터미네이터 영화에서 등장했던 인류를 위협하는 인공지능이 가까운 현실이 되는 세상입니다.
개요 [Google NotebookLM] 요즘 “바이브 코딩(vibe coding)”이라는 말이 자주 쓰입니다. 감각적으로, 빠르게, AI 도구의 도움을 받아 결과를 만들어내는 개발 방식이죠. 특히 LLM(대형 언어 모델)과 코드 에이전트 덕분에 “굳이 프로그래밍 언어를 깊이 배워야 하나?”라는 질문도 자연스럽게 따라옵니다.
개요 오늘은 Qt Designer 설치방법에 대해 설명하고자 합니다. Qt Designer는 Qt앱 생성시 GUI ( G raphic U ser I nterface) 를 쉽게 구성하고 배치하는 것을 도와주는 도구 입니다. [Qt Designer 실행화면] C++언어로 Qt를 사용하는 경우는 Qt Creator 설치시 같이 설치되어 바로 사용이 가능하지만 파이썬의 경우 별도 패키지를 설치 후 사용가능합니다. 그럼 파이썬에서 Qt Designer를 설치하는 방법을 살펴보겠습니다.
이번에 만든 주제는 '화면 캡쳐' (Screen Capture)프로그램 입니다. 물론 더 우수한 화면 캡쳐 프로그램도 이미 많이 있지만, 우리의 목적은 늘 그렇듯이 프로그래밍 공부이죠. 공부를 위한 예제로서, 복잡한 개념은 제외하고 캡쳐와 이미지 저장에 포커스 를 맞춰 만들어 보았습니다. MFC 대화상자 기반의 화면 캡쳐 프로그램의 기능 은 아래와 같습니다. 1. 현재 스크린(화면전체) 캡쳐 2. 특정 윈도우만 캡쳐 3. 캡쳐된 이미지를 JPG, BMP 로 저장 그럼 그 설계 과정 을 한번 살펴볼까요. 1. 대화상자 프로젝트를 만들어 컨트롤을 배치 합니다. - 전체화면, 특정윈도우 선택 라디오 버튼 - 저장 옵션 JPG, BMP 라디오 버튼 - 전체화면 캡쳐 시 현재 캡쳐 스크린을 보여줄 픽쳐 컨트롤 - 특정 윈도우 선택 캡쳐 시 모든 윈도우를 표시할 리스트 박스 2. 캡쳐 대상 윈도우 DC 얻기 전체 화면(스크린 윈도우)을 캡쳐 하기 위해 윈도우 DC 얻기는 쉽습니다. GetDC()함수의 전달인자를 NULL로 넣어주면 전체 윈도우 DC를 얻을 수 있습니다. HDC hdc = ::GetDC(NULL); 나중에 이 hdc를 이용해 이미지를 복사해 저장만 하면 끝이죠. 특정 윈도우만 캡쳐 하기는 이 보다 조금 복잡합니다. 먼저 현재 내 컴퓨터의 모든 윈도우 를 가져와야 합니다. 왜냐하면 어떤 특정 윈도우를 캡쳐할지 알 수 없기 때문에 모든 윈도우를 다 표시하고 사용자가 선택하게 만들기 위함입니다. 바로 아래 API 함수를 호출하면 모든 윈도우의 핸들(HWND)을 가져올 수 있습니다. BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ); 첫 전달인자는 콜백함수의 포인터 입니다. 두번째 전달인자는 콜백함수에 전달할 값입니다. 따라서 EnumWidn...
들어가며 이번 시간에는 PID 제어기를 Python, PyQt5, Matplotlib 를 이용해 만들어 보았습니다. 결과물을 먼저 살펴보면 아래와 같습니다. [완성 결과물] 개발환경 코드가 작성된 개발환경은 아래와 같습니다. Python 3.8.8 (64bit), Pycharm 2020.3.4 PyQt5 5.15.3, Matplotlib 3.3.4