Qt Creator 기반 C++개발환경 구축

이미지
개요 안녕하세요. 저는 C++ 개발툴( IDE )을  MS Visual Studio (이하 VS) or VS Code ,  Qt의 Qt Creator (이하 QC) 를 사용 목적에 따라 모두 사용하고 있습니다. GUI가 필요없는 경우는 VS Code, GUI가 필요한 경우는 Qt or MFC 인지 판단해 VS와 QC를 적절히 사용합니다. 오늘은 이 중 Qt Creator 의 설치방법 (Open Source)에 대해 정리해 두고자 합니다.   Qt Creator는 Windows 뿐 아니라 macOS에서도 사용가능 하지만 MS VS에 비해 사용하는 개발자가 적은 듯 합니다. (참고로 MS VS도 macOS에서 사용가능합니다)   Qt Creator 설치 방법 1. Qt 홈페이지 접속 ( 링크 클릭 ) Qt 회원가입 필수 우 상단 Download Try 클릭   2. "Go Open Source" 클릭 설치 전 Qt 라이선스 규칙에 대해 숙지 (GPL, LGPL, Commericial)   3. "Download the Qt Online Installer" 클릭 4. "Download" 클릭   5. 온라인 인스톨러 다운로드 완료 6. 온라인 인스톨러 실행 Qt 회원가입이 되어 있지 않다면 진행 7. 설치 진행 저는 이미 설치해 두어서 유지보수 메뉴가 보입니다 처음 설치한다면 그냥 다음으로 진행   8. 설치 선택 Preview는 향후에 출시될 정식버전을 의미 Qt 정식 버전 중 현재 가장 최신버전인 6.4 선택 컴파일러는 기호에 따라 MSVC, MinGW 중 선택 부가적으로 Android 등 다른 Platfo...

Matplotlib 마우스 이벤트 처리하기

이미지
개요 이번 주제는 Matplotlib 의 마우스 이벤트 처리 에 대해 살펴보겠습니다. 차트를 그리는 예제는 많은데 그려진 차트에 마우스, 키보드 등 이벤트를 처리하는 코드는 찾기가 어려워 공부삼아 만들어 보았습니다. 먼저 완성된 결과물은 아래와 같습니다.   이 예제에서 다루는 Matplotlib Mouse Event 는 다음과 같습니다. Pressed           (Matplitlib callback 이용) Released         (Matplitlib callback 이용) Move             (Matplitlib callback 이용) ContextMenu   (PyQt5 callback 이용) 아래와 같이 차트위 마우스 이벤트 발생시 해당 좌표가 출력되며, 수직선을 변경된 위치로 옮겨 그려주도록 구성하였습니다. [예제 프로그램 실행화면]

파이썬의 멀티프로세싱(multiprocessing) vs Thread

이미지
개요 안녕하세요. 오늘은 파이썬의 multiprocessing (프로세스 기반 병렬처리) 에 대해 살펴보려고 합니다. 아시다시피 파이썬은 GIL ( G lobal I nterperter L ock) 메커니즘으로 구현되어 있으며, 이로인해 얻은 이점도 ( Thread-Safe ) 있지만, Multi-Thread 기반 병렬처리에서 많은 손해를 봅니다.   잠깐 상상해 볼까요. 만약 1부터 1억까지 모든 수가 나열된 수열이 있고, 이를 모두 더한 합을 구하고 싶습니다. 싱글쓰레드, 멀티쓰레드, 멀티프로세싱 모두 답은 얻을 수 있지만 무엇이 가장 빠를까요? 자세한 내용은 뒤에 소개하겠습니다.   우선 이해를 돕기위해 Application , Proecss, Thread 개념을 간단히 살펴보고 진행하겠습니다. Application (앱) 줄여서 앱(App) 이라고 부르며, 어떤 목적을 가지고 실행중인 프로그램 입니다. 하나 이상의 Proecss 로 구성됩니다. 아래 그림 예시에서 게임앱은 2개의 프로세스 가 서로 통신 ( IPC , 프로세스간 통신) 하며 실행되고 있고 엑셀앱은 단일 프로세스 로 실행중인 모습입니다. 앱은 1개이상의 프로세스로 구성될 수 있습니다. 그리고 프로세스는 1개의 메인쓰레드를 (실행흐름) 갖지만, 별도로 N개의 쓰레드를 생성해 구성할 수도 있습니다. [App, Process, Thread 관계] Process (프로세스) 실행중인 앱을 구성하는 단위(Task) 이며, 1개 이상의 프로세스가 모여 앱을 구성합니다. 하나의 앱은 꼭 1개의 프로세스가 아니라 다수의 프로세스로 구성될 수도 있다는 의미입니다. 예를 들어 게임이라면 아군이동, 적군이...

QWidget 의 전역 이벤트(installEventFilter) 처리방법

이미지
개요 Qt 의 Class를 이용 앱 제작시,  QWidget 에서 상속받은 컨트롤 ( QListWidget, QTableWidget, QLineEdit 등) 클래스의 이벤트 처리를 위해 서브 클래싱 (Subclassing) 을 자주 사용하게 됩니다. 예를 들면, 화면위젯에 생성된 리스트위젯에 키보드가 눌러졌는지 등을 체크하기 위해서 말이죠. 하지만, 매번 컨트롤의 이벤트를 감지하기 위해 서브클래싱을 이용하는 것은 피곤한 절차입니다. 왜냐하면 상속받은 클래스를 따로 만들고, 해당 이벤트 처리 함수를 매번 오버라이딩 (Overriding) 하는 소모적인 작업이 뒤따르기 때문입니다.

Qt6 기반의 T-Rex 게임 만들기

이미지
개요 이전 게시물인 파이썬기반 T-Rex 게임의 C++ 버전 입니다. 동작방식은 기존의 파이썬 버전 (PyQt) 과 동일하며, Qt 기반으로 작성되어 있습니다. [ C++로 만든 T-Rex Game ]  

PyQt5 기반의 T-Rex 게임 만들기

이미지
개요 안녕하세요. 요즘 자전거 타는 재미에 빠져 오랜만에 글을 올리는것 같네요. 이번시간에는 구글 크롬 웹브라우저 에 내장되어 인터넷 연결이 원활하지 않을때 실행되는 T-Rex Game 을 파이썬으로 만들어 보았습니다. 심화반 수업을 듣는 학원생 중, 이 게임을 주제로 진행하는 친구들이 많은데 참조바랍니다. [ T-Rex Game 실행화면 ] 실행화면은 아래 동영상 참조 바랍니다.  

Qt Designer 설치하기

이미지
개요 오늘은 Qt Designer 설치방법에 대해 설명하고자 합니다. Qt Designer는 Qt앱 생성시 GUI ( G raphic U ser I nterface) 를 쉽게 구성하고 배치하는 것을 도와주는 도구 입니다. [Qt Designer 실행화면] C++언어로 Qt를 사용하는 경우는 Qt Creator 설치시 같이 설치되어 바로 사용이 가능하지만 파이썬의 경우 별도 패키지를 설치 후 사용가능합니다. 그럼 파이썬에서 Qt Designer를 설치하는 방법을 살펴보겠습니다.

파이썬 설치 with PyCharm

이미지
개요 오늘은 파이썬 개발툴 중 개인적으로 가장 선호하는 파이참(PyCharm) 설치방법 및 파이썬(Python) 과 연동 하는 방법을 설명하려 합니다. 저는 Windows 운영체제에서 설치를 진행했지만 파이썬, 파이참은 macOS, Linux 에서도 설치가능합니다. 파이썬은 프로그래밍 언어의 한 종류이며, 파이참은 파이썬을 이용한 프로그래밍을 편리하게 진행하도록 도와주는 도구, 툴입니다. 그림판으로도 얼마든지 그림을 그릴 수 있지만 (파이참이 없더라도 파이썬 IDLE로 개발 가능하지만), 포토샵 같은 전문가용 툴을 쓴다면 수준 높은 결과물을 만들어 내기가 좀 더 수월합니다. 이 게시물은 파이썬 설치, 파이참 설치, 파이썬 패키지 설치 3가지 과정으로 진행됩니다.  그럼 설치를 진행해 보겠습니다.

재귀호출을 활용한 GUI 랜덤미로 생성

이미지
개요 이번엔 Python, PyQt5를 이용해 랜덤 미로 생성기 (Maze Generator) 를 만들어 보았습니다.  자세한 내용은 소스코드 분석을 참조하기 바라며, 동작방식은 아래와 같습니다. 화면에 표시되는 위젯(윈도우)을 15x15 크기로 잘라, 작은 격자 사각형을 2차원 리스트에 저장 해 둡니다. 미로 생성이 시작되면 현재 격자의 행,열에서 이동가능한 방향 (상, 하, 좌, 우)을 랜덤으로 선택해 이동합니다. (단, 이미 방문한 곳이 아닌 경우, 재귀호출 , Push Stack ) 만약 더 이상 이동가능한 방향이 없는 경우는 재귀호출의 스택이 풀리며 ( Pop Stack ) 퇴각 검색 ( Backtrack )이 진행되고, 이동가능한 방향이 있는지 다시 찾는 원리로 모든 격자를 방문하게 됩니다.   15 X 15 크기의 랜덤 미로 생성. (사이즈 변경가능) DFS (Depth First Search), 재귀호출을 이용해 구현. 미로 진행 방향에 따른 벽 생성 및 벽 삭제. (상,하,좌,우)  

SW 마이스터고 입학을 축하합니다.

안녕하세요. 오션코딩학원장 김주원 입니다.    저희 학원에는 입시반(SW특기자 전형등)을 운영하지 않지만, 고입, 대입, 편입 등을 준비하기 위해 수업을 듣는 학원생은 계십니다. 왜냐하면 프로그래밍을 공부하는 수업내용이 곧 입학시 면접이나 시험문제와 연관되기 때문입니다. 올해도 3명의 중3 학원생이 2022학년도 SW마이스터고 입학을 지원했었습니다. 이 중 2명의 학원생은 각각 대덕, 부산 소프트웨어 마이스터고 에 합격했습니다. 정말 축하드리고, 앞으로 더욱 성장하여 큰 꿈을 펼치길 기대합니다. 저는 학원 수업만 집중해 진행했는데 두 학생 다 여러가지 스스로 잘 준비해 좋은 결과가 있었습니다. 다만, 1명은 서류전형에서 탈락해 아직도 너무 아쉬운 마음이 듭니다. 봄부터 무더운 여름에도 꾸준히 저와 공부하며 실기면접도 준비해온 학생인데, 면접의 기회조차 주어지지 않아 아쉬움이 더욱 큽니다. 하지만, 프로그래밍에 관심이 있다면 얼마든지 수시, 정시를 준비해 원하는 대학의 컴퓨터 공학부에 지원하면 됩니다.   마지막으로, 미래에 프로그래밍을 직업 으로 삼고자 하는 분들께 몇 가지 조언을 하고 싶습니다.  개인적인 의견이므로 참조만 해주세요.   1. 좋아하는 일이 맞는지 잘 생각해 보세요. (세상은 넓고 할 일은 많습니다.) 2. C++은 꼭 공부하세요. (파이썬을 쓰더라도) 3. 영어, 수학은 개발자의 당연한 기초 지식입니다. 여담으로 제가 프로그래밍을 좋아하는 이유 중 하나는 역사가 짧고, 변화가 빠른 학문이기 때문입니다. 수학, 과학 등은 기원전부터도 존재해 왔지만 (이미 기본이 완성, 큰 변화 X) 인류가 컴퓨터를 본격적으로 활용하기 시작한 시기는 불과 30~40년 전 입니다. 하지만 그 짧은 기간동안 엄청난 변화와 혁신을 이끌어 왔으며, 현재 진행형이기 때문에 더욱 매력적이 아닌가 합니다. 감사합니다.

이 블로그의 인기 게시물

Qt Designer 설치하기

PyQt5 기반 동영상 플레이어앱 만들기