분류 전체보기 476

How to Resolve Warning Messages When Adding Header Files in Qt 6.8.1

Hello,  I'd like to share how to resolve the persistent warning messages that appear when adding header files while using Qt 6.8.1. 1. Warning Message Even when creating a basic Qt widget project, the following warning message appeared (with QMake configuration): D:\project\02_qt\01_error_test01\widget.cpp:2:warning: Included header ui_widget.h is not used directly (fix available)    I thought i..

Programming/Qt 00:04:29

[C++] 가상 함수에서 조금 알아두면 좋은 간단한 읽을거리(vtable, pure virtual function 포함)

안녕하세요.  C++ 가상 함수에 대해서 조금 알아보려고 합니다. 뭐 virtual 만 붙이면 되는 거 아니야?라고 할 수 있지만, 간단한 원리, vtable 구조, 장단점 등을 조금 알아보겠습니다.  C++에서 가상 함수(virtual function)는 객체 지향 프로그래밍의 다형성(polymorphism)을 구현하는 핵심 개념입니다. 이를 통해 기본 클래스 포인터 또는 참조를 사용하더라도, 런타임에 실제 객체의 타입에 따라 적절한 함수가 호출되도록 만들 수 있습니다.   1. 가상 함수란? — 런타임 다형성의 시작  가상 함수는 기본 클래스에서 virtual 키워드로 선언되며, 파생 클래스에서 재정의(override)할 수 있습니다. 가상 함수 호출은 정적 바인딩(static binding)이 아닌..

Programming/C, C++ 2025.04.05

작은 기부 문화 만들기 14 - 2025 울산.경북.경남 등 산불피해 긴급모금

안녕하세요.  안타깝게도 이번 산불로 인해 많은 사람과 자연에 큰 피해가 발생했습니다.그리고 이재민과 살던 집과 문화재, 가축 등 큰 손해까지 발생한 것으로 알고 있습니다.  작은 기부지만 어려울 때 서로 도와줄 수 있어야 진정한 나눔이 되지 않을까 합니다. 언제 개인에게도 재해가 닥칠지 알 수 없기 때문에, 가능할 때 합력하여 선을 이루어야 하지 않을까 합니다. 시간이 지난 후에, 나쁜 기억은 잊고 함께 웃음을 되찾는 시간 되었으면 합니다.  1. 모금함 소개   쓰라린 봄, 삶을 잃은 사람들2025년 3월, 봄의 시작과 함께 경남 산청을 비롯한 전국 곳곳에서 대형 산불이 동시다발적으로 발생했습니다. 울산 울주, 경북 의성, 경남 하동 등 4개 지역이 특별재난지역으로 선포될 만큼 피해는 심각했고, 불은..

[C++] 복사 생성자에서 조금 알아두면 좋은 간단한 읽을거리 (깊이 있는 이해)

안녕하세요.   생성자에도 몇 가지 종류가 있는데 그중에 복사 생성자에 대해서 조금 더 알아보겠습니다.  C++에서 복사 생성자는 객체를 복사하여 새로운 객체를 생성할 때 호출되는 특별한 멤버 함수입니다. 복사 생성자를 적절히 사용하는 것은 C++ 프로그래밍의 핵심이며, 특히 객체의 메모리 관리를 이해하는 데 중요합니다. 이 글에서는 복사 생성자의 기본 개념부터 고급 활용 부분까지 살펴보겠습니다.  1. 변수 초기화에 스타일  변수 초기화할 때 C++ 에는 C와 조금 다른 방식이 추가되어 있습니다. 바로 ( ) 괄호입니다. 여기서 명시적(직접) 초기화 방식과 묵시적(암시적) 방식에 따라 조금 차이가 있어서 미리 조금 알고 있으면 도움 될 것이 있어서 적어보았습니다.  int count = 0;int &r..

Programming/C, C++ 2025.04.03

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 13 - 커널 스레드

안녕하세요.   이전 글에서는 유저공간에서 실행되는 프로세스를 봤습니다. 이제 커널 공간에서 실행하는 프로세스에 대해 알아보는 시간입니다.   1. 커널 스레드  커널 프로세스는 커널 공간에서만 실행되는 프로세스이며 대부분 커널 스레드 형태로 동작합니다. 리눅스 시스템 프로그래밍에서 데몬과 비슷한 처리를 하는데 데몬과 커널 스레드는 백그라운드 작업을 실행하면서 시스템 메모리, 전원 제어동작 수행합니다. 커널 스레드 특징  커널 공간에서만 실행함  유저 영역과 시스템 콜을 받지 않고 동작하는 것이 데몬과 차이  실행, 휴면 등 모든 동작을 커널에서 직접 제어 관리  대부분 커널 스레드는 시스템이 부팅할 때 생성하고 종료할 때까지 백그라운드로 실행  2. 커널 스레드 종류 1) 커널 스레드 항목 확인  ps..

IT/Linux Kernel 2025.04.02

[C++] 생성자(Constructor)에서 조금 알아두면 좋은 읽을거리

안녕하세요.  C++언어를 알고 있는 분이라면, 생성자와 소멸자에 대해서 기본적인 것은 다 잘 알고 있을 거라고 생각합니다. 그중에서 한 번쯤 다시 기억하고 있으면 좋은 것에 대해서 공유해 보겠습니다.   1. 생성자(Constructor)에 관해  생성자(Constructor)라고 하면 기본적으로 객체가 생성될 때 자동으로 호출되는 특수한 멤버 함수입니다. 아래와 같은 기본적인 특징을 가지고 있습니다.  클래스와 같은 이름을 가지며 반환형이 없다. 객체 초기화를 담당한다. 매개변수를 받을 수 있으며, 여러 개의 생성자를 오버로딩할 수 있다.  1) 생성자 인자  생성자 인자가 다르면 디폴트 생성자의 형태도 같아야 합니다. 함수 오버로딩과 비슷할 수 있는데 객체 생성할 때 생성자도 이것을 지켜야 합니다...

Programming/C, C++ 2025.04.01

한 시간 만에 게임 만들기, 독서후기

안녕하세요.  1. 책 선택 이유  C++ 학습하면서 재미있게 응용해 볼 것을 찾는 중에, 한 시간 만에 게임을 만들 수 있고, 콘솔 화면에서 고전 게임을 테스트해 볼 수 있다고 나와서 확인해 보았습니다.  2. 간략한 내용 소개  간단한 C언어 지식 만으로 만드는 7가지 클래식 게임 게임 엔진의 대중화 이후 게임 개발은 예전보다 매우 쉬워졌지만, 여전히 초보자에게는 높은 벽으로 느껴진다. 그 이유는 여러 가지가 있지만 가장 큰 이유를 하나 꼽자면 ‘추가로 배워야 할 것이 너무 많다’ 일 것이다. 대부분의 작업을 도와주는 엔진을 사용하더라도 엔진의 사용법을 추가로 익혀야만 하며 그것만으로도 별도의 도서가 만들어질 정도이다. 이 도서는 이러한 사전 지식 없이, 오직 간단한 C언어 지식만으로 게임 개발에 도..

Book Report 2025.03.30

Visual Studio(VC++)에서 빌드 시 한글 때문에 에러가 발생과 콘솔(디버깅) 창에 한글이 깨져 나올 경우

안녕하세요.  최근에 Qt로 작업하다가 다시 Visual Studio 2022(VC++)로 확인할 것이 있어 설치해서 소스코드를  확인하다가 한글 출력에 이슈가 있어서 확인한 내용을 남깁니다.  이미 다른 분들도 올린 내용이 있지만, 한글 처리 부분에도 여러 가지 경우가 있다 보니 그중에 이와 유사한 경우가 있지 않을까 해서 정리해 보았습니다.  1. 문제 되는 부분 1   VC++ 코딩 중에 간단하게 printf로 한글을 출력을 출력하려고 간단하게 코드를 작성합니다.    확인 삼아 컴파일을 해보니, 아래와 같이 에러가 발생했습니다. 한글만 없으면 문제없이 컴파일이 되었습니다.  "파일에 0x64 오프셋에서 시작하는 문자가 포함되어 있습니다. 이 문자는 현재 원본 문자 집합에서 잘못된 문자입니다(코드 ..

Programming/C, C++ 2025.03.29

[C++] struct와 class 차이

안녕하세요.    AI가 코딩을 대신해 주고 편리함을 주고 있어 긍정적인 일이기도 하지만, 개발자라서 기본을 놓이고 너무 의존만 하는 것 같아서 다시 기본으로 돌아가보자는 생각으로 기초적인 다시 내용들을 정리해보려고 합니다.   프로그램 언어는 어떤 곳에서 사용하느냐에 따라서 Python, Java, Ruby, R 등 여러 가지 언어가 있지만, 임베디드를 개발하는 곳에서는 아직 C와 C++ 이 상당 부분 차지하고 있습니다.   그중에 C언어에서 C++로 넘어왔다면 클래스와 객체지향 등 여러가지 용어를 들어 보았을 것입니다. Class는 C++에서 중요한 역할을 하고 있습니다.  그런데 한번쯤 C++에서 struct와 class가 무슨 차이가 있을까 생각을 했을 수도 있습니다. 왜냐하면, struct 안에..

Programming/C, C++ 2025.03.28

쓰지 않으면 아이디어는 사라진다, 최상의 아이디어를 끌어내는 메모 발상법, 독서후기

안녕하세요.  1. 책 선택 이유    최근 이런저런 생각이 나서 아이디어 기록하는 방법에 대한 것은 없을까 하다가 읽어보았습니다.  2. 간략한 내용 소개  “연봉 1억 이상, 에이스 직원에게는 아이디어 노트가 있다!” 최상의 아이디어를 끌어내는 메모 발상법  레오나르도 다 빈치, 토머스 에디슨, 스티브 잡스의 공통점은? 짐작하다시피 생존했던 시대는 달랐지만 셋 다 지독한 메모광이었다는 사실이다. 인류 역사상 가장 유명한 셀럽인 다 빈치는 항상 주머니에 수첩을 넣고 다니면서 무엇이든 기록한 것으로 유명하고, 그를 본받아 항상 노트를 들고 다녔다는 발명가 에디슨은 3500권에 이르는 메모장을 남겼다고 한다. 스티브 잡스 역시 매일 자신의 모든 것을 기록할 정도의 메모광이었던 것으로 널리 알려져 있다. (..

Book Report 2025.03.27

Raspberry pi CM4(Bullseye) OpenCV에서 gstreamer를 통해 카메라 영상 출력

안녕하세요.   이전 글(아래링크 창고)을 따라 OpenCV 4.6.0을 설치했다면,  Raspberry pi CM4에 OpenCV 4.6.0과 Contrib 모듈 설치해보기안녕하세요.   에지 컴퓨팅이라고 해서 단말 장치에서 가까운 위치에서 컴퓨팅을 하는 것을 말합니다. 그래서 라즈베리 파이가 단말장치가 되고 여기서 컴퓨팅, 분석까지 하는 것으로 생각해remnant24c1.tistory.com   Bullseyes 32bit에서 libcamerasrc를 사용할 생각으로 gstreamer 최신 버전(1.9.2 혹은 1.20.x)을 다운로드하여서 컴파일할 경우 아래와 같은 컴파일 에러가 발생했습니다.  현재 상황에서는 gstreamer최신 버전을 사용하고자 한다면, Buster OS 버전 혹은 64bit ..

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 12 - 4_4_user_process생성과 종료 과정 분석

안녕하세요.  이전 글에서 4_4_user_process라는 사용자 프로그램을 만들어 ftrace 메시지까지 만들어 봤습니다. 책에서는 raspbian_proc로 만들어 테스트한 내용입니다. 내용은 거의 동일합니다.   ftrace 메시지를 바탕으로 프로세스가 어떻게 생성되고 종료하는지 과정을 분석하는 내용입니다.  1. ftrace_log.c 분석 준비  분석할 내용은 get_ftrace.sh를 실행 디렉터리에 ftrace_log.c 파일로 되어 있을 것입니다.파일을 열어 확인합니다.  이전에 봤던 메시지 형태입니다. 그런데 얼마 실행하지 않은 것 같은데 많은 양의 메시지가 저장되어 있습니다. 전체 다 보는 것은 아니고 실행했던 파일 부분을 찾아서 보겠습니다.  rpi_kernel_src $ vim f..

IT/Linux Kernel 2025.03.23

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 11 - _do_fork() 흐름 파악과 ftrace 메시지 추출

안녕하세요.    _do_fork() 함수를 알아보기 위한 사전 정보가 조금 필요에 _do_fork() 마무리하지 못해서 추가 부분을 정리해 봅니다.  1. 유저 레벨 프로세스 생성 시 _do_fork() 함수처리 흐름  유저 레벨 프로세서 생성할 때 흐름은 아래와 같이 fork() 함수 호출하면 glibc 통해 시스템콜을 발생하고 이에 대응하는 sys_clone() 함수 호출합니다. 이후 호출을 따라가면 _do_fork() 함수를 호출합니다.  1) sys_clone 함수  sys_clone() 함수 내부를 보면 return 값(PID)을 받기 위해 _do_fork() 함수를 호출합니다.  SYSCALL_DEFINE5 매크로와 함께 커널 소스 빌드하는 과정에서 sys_ 접두사가 붙여 sys_clone으..

IT/Linux Kernel 2025.03.20

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 10 - 프로세스 생성

안녕하세요.   프로세스와 스레드에 대해 보았고, 이번에 생성하는 과정을 확인을 알아보겠습니다.  진행하기 앞서서 유저 모드와 커널 모드 부분을 먼저 알고 시작해야 할 것 같아서 앞쪽 내용에 추가해 보았습니다. 알고 있는 내용이면 이 부분은 넘어가고 아래쪽 2. 프로세스 생성부터 보면 됩니다.  1. 유저 모드와 커널 모드 그리고 영역  유저 모드와 커널 모드가 나오면, 권한에 관한 것이라고 알 수 있는데, 공간에 대한 개념이 같이 나오기 때문에 혼돈이 있을 것 같아서 나눠서 생각해 보면 좋을 것 같아서 추가해 보았습니다. 1) 유저 모드와 커널 모드 (1) 유저 모드(User Mode)  - 권한 수준: 제한된 권한을 가진 모드입니다. 응용 프로그램(예: 웹 브라우저, 문서 편집기)이 주로 유저 모드에..

IT/Linux Kernel 2025.03.17

요즘 어른을 위한 최소한의 인공지능 이야기, 도서후기

1. 책 선택 이유   AI 관련 지식을 소홀히 하고 있는 것 같아서 조금 빠르게 읽어 볼 만한 책을 찾다가 읽어보았습니다.   2. 간략한 내용 소개   인공지능 기원부터 미래까지,현재 인공지능에 관해 알 수 있는 모든 것! 연일 인공지능에 관한 새로운 소식이 쏟아진다. 업데이트 속도도 빠르다. 잠깐만 소식을 놓쳐도 뒤처진 느낌이 들 정도다. 인공지능이 뭔지 찬찬히 이해할 틈도 없이 말이다. 찬찬하고 친절한인공지능 입문서이자 교양서 이 책은 인공지능에 관심은 많지만 잘 모르는 이들을 대상으로 쓴 인공지능 입문서다. 인공지능 기원부터 미래까지 친절하게 설명한다. 책은 독자들이 접근하기 쉽게 질답 형식으로 구성되어 있다. 저자는 IT 분야 기자로 오래 일했고, 양육자이기도 하다. 기자로 일하면서 받은 질문..

Book Report 2025.03.15

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 9 - 프로세서란

안녕하세요.   드디어 디버깅의 영역에서 벗어나 프로세스의 영역으로 들어오게 되었습니다. 프로세스 부분도 양이 많아서, 배워야 할 것이 적지 않을 것으로 생각됩니다.  책 내용을 천천히 정리해 가는 것으로 생각하면 좋을 것 같습니다.  1. 프로세스란?  리눅스 개발자 입장에서 프로세스는 리눅스 시스템 메모리에 적재되어 실행을 대기하거나 실행하는 실행 흐름을 의미합니다.  프로세스를 관리하는 자료구조이자 객체를 태스크 디스크립터(task descriptor)라고 부르고 task_struct구조체로 표현합니다. 이 구조체에 프로세스가 사용하는 메모리 리소스, 프로세스 이름, 실행 시각, 프로세스 아이디(PID), 프로세스 최상단 주소와 같은 속성정보가 지정되어 있습니다. 그러나 이것만으로 프로세스의 흐름까..

IT/Linux Kernel 2025.03.12