2022의 게시물 표시

C++ 동적메모리 할당으로 런타임메모리 관리

이미지
개요 C++ 배열을 이용한 동적메모리 할당 (Dynamic Allocation) 구현 예제 입니다. 런타임 에 메모리를 어떻게 관리하는지 공부해 봅시다. 최초 5개의 정수형 배열을 Heap 영역에 동적할당하고, 저장공간이 부족한 경우 2배로 배열의 크기를 늘려가는 방식입니다. [배열의 동적할당] 동작 순서 1. 처음 배열 5개를 생성하고, 데이터를 삽입 2. 데이터가 5개를 초과하면 새로운 배열을 2배 크기(10개)로 동적할당     3. 기존 배열의 데이터를 새 배열로 복사 후 신규 데이터는 새 배열에 저장 4. 기존 배열 (5개) 을 삭제하고 새 배열의 주소를 포인터에 저장 소스코드 #include <iostream> #include <cstring> using namespace std; int main() { int size = 5; int pos = 0; int *p = new int[size]; memset(p, 0, sizeof(int)*size); while (true) { cout << "Input number(Exit:0): "; int n; cin >> n; if (n==0) break; if(pos>=size) { size *= 2; int *p2 = new int[size]; memset(p2, 0, sizeof(int)*size); for(int i=0; i<size/2; i++) ...

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가지 과정으로 진행됩니다.  그럼 설치를 진행해 보겠습니다.

이 블로그의 인기 게시물

Qt Designer 설치하기

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