Categories 모아보기

Cpp

enum class를 자유롭게 사용해보자

1 분 소요

enum class enum은 원리 타입을 엄격하게 따지지 않는다. 참고로 타입을 엄격히 따지는 것을 스트롱 타입 (strong type) 이라 하고 타입에 안전하다고 표현한다. enum 타입은 항상 정수로 해석하기 때문에 선언한 형태에 관계없이 모든 enum 타입을 서로 비교할 ...

C++ string 다루기 4

1 분 소요

std::string_view 클래스 C++17 이전에는 읽기 전용 스트링을 받는 함수의 매개변수 타입을 쉽게 결정할 수 없었다. const char로 지정하면 std::string을 사용하는 클라이언트에서 c_str()나 data()를 이용하여 string을 const char로...

C++ string 다루기 3

2 분 소요

std::string 리터럴 코드에서 주로 사용하는 스트링 리터를은 const char*로 처리한다. 표준 사용자 정의 리터럴 ‘s’를 사용하면 스트링 리터럴을 std::string으로 만들 수 있다.

C++ string 다루기 2

최대 1 분 소요

로 스트링 리터럴 로 스트링 리터럴(raw string literal)이란 여러 줄에 걸쳐 작성할 스트링 리터럴이다. 로 스트링 리터럴은 R”(로 시작해서 )”로 끝난다. 로 스트링 에서 줄바꿈은 그냥 엔터를 입력하면 된다. const char *str = R"(Line 1 Lin...

C++ string 다루기 1

3 분 소요

std::string 프로그램을 작성하다 보면 스트링을 사용할 일이 생기기 마련이다. C 언어에서는 단순히 null로 끝나는 문자 배열로 스트링을 표현했다. 하지만 일허게 하면 buffer overflow를 비롯한 다양한 문제 때문에 보안 취약점이 드러날 수 있다. C++ 표준 라...

C++ casting

5 분 소요

casting C++는 const_cast(), static_cast(), reinterpret_cast(), dynamic_cast()라는 네가지 캐스팅 방법을 지원한다. ()을 이용하는 C스타일 캐스팅도 C++에서 계속 지원하고 있으며 현재까지도 여러 C++ 프로젝트에서 많이 ...

C++ interface, Impl 이디엄

2 분 소요

인터페이스 클래스와 구현 클래스 클래스는 c++의 기본 추상화 단위다. 클래스를 작성할 떄는 추상화 원칙을 적용하여 인터페이스와 구현을 최대한 분리하는 것이 좋다. 특히 데이터 멤버를 모두 private로 지정하고 getter와 setter를 제공하여 내부를 보호하는 것이 바람직하...

C++ method

3 분 소요

method C++에서 제공하는 메서드의 종류는 다양하다. static method 메서드도 데이터 멤버처럼 특정 객체 단위가 아닌 클래스 단위로 적용되는 것이 있다. 이를 static (정적, 스태틱) 메서드라 부르며 데이터 멤버를 정의하는 단계에 함꼐 작성한다. 객체 정보에 접...

C++ std::friend

1 분 소요

std::friend C++는 클래스 안에서 다른 클래스나 다른 클래스의 멤버 함수 또는 비멤버 함수를 friend로 선언하는 기능을 제공한다. friend로 지정한 대상은 이 클래스의 protected나 priate 데이터 멤버와 메서드에 접근할 수 있다. 예를 들어 Foo와 B...

C++ operator

3 분 소요

연산자 오버로딩 객체에 대해 +, - 등의 연산을 수행할 때가 있다. 객체끼리 더하거나, 파일에 객체를 스트림으로 전달하거나, 가져올 수도 있다.

C++ std::cout으로 콘솔 꾸미기

4 분 소요

뇌리에 스치는 불편함 본좌가 로봇 제어 프로그램을 개발할 때 뇌리에 스쳐 지나간 것이 있다. 메세지를 출력할 때 DEBUG, INFO, WARN, ERROR, CRITIAL 등을 출력하는데 모두 출력을 기본으로 했을때 너무 읽기 불편했다… 그래서 출력 시 색상, 필체, 배경 등을 ...

C++ 동적 메모리

6 분 소요

동적 메모리 C++는 C와 마찬가지로 프로그래머가 모든 상황을 잘 알고 있다고 여기고 자유를 최대한 보장한다. 언어 자체가 굉장이 유연하다. 그리고 안정성이 떨어지는 것을 감수하고 성능을 추구하기 때문에 심각한 문제가 발생할 가능성이 있는 일도 얼마든지 할 수 있다. 특히 메모...

c++ 유니폼 초기화

2 분 소요

유니폼 초기화 C++11 이전에는 타입의 초기화 방식이 일정하지 않았다. 예를 들어 다음과 같이 원을 정의할 때 한 번은 구조체로, 한 번은 클래스로 작성한 경우를 살펴보자

c++ std::atomic

3 분 소요

std::atomic 아토믹 타입(atomic type)을 사용하면 동기화 기법을 적용하지 않고 읽기와 쓰기를 동시에 처리하는 아토믹 접근(atomic access)이 가능하다. 아토믹 연산을 사용하지 않고 변수의 값을 증가시키면 스레드에 안전하지 않다. 컴파일러는 먼저 메모리...

c++ std::mutex

2 분 소요

std::mutex C++11 C++11 에서 std::thread가 등장하면서 std::mutex 가 추가되었다. std::mutex클래스는 여러 스레드가 동시에 액세스하는 공유 데이터를 보호하는 데 사용할 수 있는 동기화 기본 요소다. mutex는 독점적이...

c++ std::thread

3 분 소요

std::thread 윈도우와 리눅스에서 각각의 스레드 생성 방법이 있었지만, std::thread가 C++11 부터 등장하였다. thread는 오브젝트에 할당되자마자 즉시 실행된다. (OS의 scheduling delay 이후 실행된다.)

c/c++ 그리고 네임 맹글링

1 분 소요

extern "C" 임베디드코드를 짜다 보면 대부분의 기본 라이브러리들은 c로 만들어져 있다. 유심히 코드를 살펴봤다면 extern "C" { ~ } 형태의 코드를 확인 할 수 있는데 여기서 다음과 같은 오류를 발견 할 수 있다. 필자는 c와 c++를 동시에 사용하면서 에러가 발생...

Qt signal & slot

최대 1 분 소요

문제의 시작 Qt에서 gui를 간단히 만드는 경우가 있었다. gui는 QThread로 돌아가는데, 클래스 내에서 QThread 가 아닌 std::thread로 사용하고 ui에 접근할때 오류가 파바앙 나타나며 본좌를 흥분하게 만들었다. 무튼 난 통신때문에 std::thread를 사용...

Qt에 cmake로 resources 추가하기

최대 1 분 소요

어디에 사용? Qt widgets application 을 개발할때 resource 관리를 해줘야 할 필요가 있다. 이미지가 필요한 시점에 리소스 관리를 하게 된다. 아래 사진을 예를들어서 앱 아이콘을 변경하고자 할 때 Choose Resource... 로 불러올 수 있다. ...

vscode 단축키 추가하기

최대 1 분 소요

후.. 맥북을 사서 이것저것 다 설치해봤는데 단축키가 너무 어렵다.. 인간은 적응형 인간이기에 금방 적응 하겠지..? 리눅스나 윈도우에서는 ctrl+~ 을 입력하면 호로록 넘어갔는데.. 요놈은 안된다.

맨 위로 이동 ↑

Hardware

udev 설정으로 ttyUSB0 을 ttyS${num}으로 변경하기

최대 1 분 소요

필자는 maxon EPOS driver에 FTDI 장비로 통신 할 경우 해당 이슈가 발생하였다. maxon 모터의 RS232는 ttyS${num} 으로만 포트를 세팅하도록 되어 있는 것 같다. EPOS Linux Library (ARM/Intel 32/64-Bit) (en...

USB latency setting

최대 1 분 소요

USB serial 장치를 사용하다보면 통신이 중간중간 잘 안되는 경우가 있다. 필자는 Dynamixel usb2ttl 장비와 maxon EPOS driver 에 FTDI 장비로 통신 할 경우 해당 이슈가 발생하였다.

맨 위로 이동 ↑

STM32

vscode에서 stm32 세팅하기

최대 1 분 소요

START STM32 MCU를 vscode로 개발하기 위한 기본 환경 설정을 해보자. 사용해볼 보드는 nucleo-H723ZG.

맨 위로 이동 ↑

Qt

Qt signal & slot

최대 1 분 소요

문제의 시작 Qt에서 gui를 간단히 만드는 경우가 있었다. gui는 QThread로 돌아가는데, 클래스 내에서 QThread 가 아닌 std::thread로 사용하고 ui에 접근할때 오류가 파바앙 나타나며 본좌를 흥분하게 만들었다. 무튼 난 통신때문에 std::thread를 사용...

Qt에 cmake로 resources 추가하기

최대 1 분 소요

어디에 사용? Qt widgets application 을 개발할때 resource 관리를 해줘야 할 필요가 있다. 이미지가 필요한 시점에 리소스 관리를 하게 된다. 아래 사진을 예를들어서 앱 아이콘을 변경하고자 할 때 Choose Resource... 로 불러올 수 있다. ...

맨 위로 이동 ↑

HomeIoT

MQTT?

최대 1 분 소요

MQTT MQTT를 대충 알고 있었지만, 되새김질도 할 겸 서칭해 보았다. 나중에 HomeIoT 기기들을 직접 만들어 볼 예정인데 공부 삼아서 ㅇㅅㅇ

맨 위로 이동 ↑

Tresc3

모터 제어해보기-매운맛

3 분 소요

Intro Application using this post PID control based post 피지컬 컴퓨팅 MCU 기본 related post 엔코더 센서 Contents 예시 모터를 왜 제어할까요? 일상 생활에서 규...

모터 제어해보기 순한맛

1 분 소요

Intro Application using this post PID control based post 피지컬 컴퓨팅 MCU 기본 related post 엔코더 센서 Contents 예시 일상 생활에서 모터를 사용하는 장치들을 꽤 많이...

맨 위로 이동 ↑

Linux

맨 위로 이동 ↑

Markup

Markup: Image Alignment

3 분 소요

Welcome to image alignment! The best way to demonstrate the ebb and flow of the various image positioning options is to nestle them snuggly among an ocean of...

맨 위로 이동 ↑

Tensorflow

맨 위로 이동 ↑

Minimal Mistakes

VSCode 에서 Minimal-Mistakes 빌드하기

최대 1 분 소요

vscode Minimal-Mistakes 빌드해보기 Ruby 설치 Ruby 설치 확인 $ ruby -v # colson@colson:~$ ruby -v # ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu] 설치는...

맨 위로 이동 ↑

C

c/c++ 그리고 네임 맹글링

1 분 소요

extern "C" 임베디드코드를 짜다 보면 대부분의 기본 라이브러리들은 c로 만들어져 있다. 유심히 코드를 살펴봤다면 extern "C" { ~ } 형태의 코드를 확인 할 수 있는데 여기서 다음과 같은 오류를 발견 할 수 있다. 필자는 c와 c++를 동시에 사용하면서 에러가 발생...

맨 위로 이동 ↑