ROS 자료형-ROS C++ 파이썬 비교 (c++ vs python) ROS 자료형과 소스를 보면 여러 언어로 구현 가능토록 제작사에서 배포합니다. 하나의 언어로만 구현하면 모르겠는데 왕왕 다른 언어를 사용할 일도 생겨요. 그러면 ROS 자료형에 C++ 파이썬까지 봐야 합니다. 아래 표는 ROS자료형과 ROS C++ 파이썬 자료형 비교표입니다. ROS 자료형은 표기가 좀 다르니 유의해서 보세요. ROS 자료형과 ROS C++ 파이썬 자료형 비교 Primitive type Serialization C++ Python bool unsigned 8-bit int uint8_t bool int8 signed 8-bit int int8_t int uint8 unsigned 8-bit int uint8_t int ..
C# 7세그먼트 디지털 시계, 숫자 (닷넷 UI 라이브러리) 참조 - Digital display control in C#.Net using GDI+예제 - digital_display_control.zip 아래 그림은 실행했을 때 보여질 화면입니다. 이쁘죠? 첨부된 예제 소스를 열어보면 아래와 같은 dll을 확인할 수 있습니다. 사용하고픈 프로젝트에 두 개의 dll을 참조 추가하면 사용할 수 있는데, 우선은 비주얼 스튜디오의 도구 상자에 dll을 드래그해서 해당 도구를 추가해주세요. 압축 파일을 풀면, ..\digital_display_control\Owf.Controls.DigitalDisplayControl\bin\Debug\Owf.Controls.DigitalDisplayControl.dll 파일..
C# 일반, static, sealed, abstract 클래스 차이점 Class 타입 일반 static sealed abstract 객체 생성 YES NO YES NO 상속 YES NO NO YES 상속 (다른곳) YES NO YES YES 그리고 sealed 클래스는 다른 클래스로 상속될 수 없습니다. 오로지 다른 클래스를 상속받는 것만 할 수 있습니다. 123sealed class MySealedClass : BaseClass // is ok class MyOtherClass : MySealedClass // won't compilecs 추신.위 표가 잘린다면 아래 그림을 보세요. C# 일반, static, sealed, abstract 클래스 차이점
비주얼스튜디오 Qt QWT 라이브러리 연동 (윈도우7, msvc2012) ㅂㅅ에서... 아니... QT에서 QWT를 Visual Studio를 이용하는 방법입니다. 아래의 글들을 읽어보신 이후에 진행해 보세요. 단, Qt Creator을 안 쓰고 Visual Studio만 사용할 경우엔 바로 비주얼스튜디오 연동 부분만 참조하세요(아래아래 아래 아래). 그리고 위의 포스팅을 참조할 때 명령어 입력 시 에러가 발생하면 아래 포스팅도 참조하세요. 참조 - Qwtのインストール・メモ :Qt:Qwt) 12qmake qwt.pro -spec win32-g++ -r CONFIG+=release mingw32-make release cs 정상적으로 설치 과정이 진행되면 아래의 사항을 참조합니다. Qwt를 컴파일할 때, ..
전역변수 문제점, 나쁜 객체지향 코드 (유지보수 망침) 전역변수의 문제점 비지역성, 비국지성(Non-Locality) 각각의 오브젝트들은 구현 범위가 좁을수록 이용하기 쉽습니다. 전역변수 문제점은 이와 정반대라 이해하기도 힘들고 사용하기도 힘듭니다. 접근 제어, 제약 조건 확인(No Access Control or Constraint Checking) 전역변수 문제점은 프로그램 내부의 어느 곳에서나 설정할 수 있습니다(Get, Set). 그렇지만 그 모든 설정을 기억하기도 힘들뿐더러 워낙에 많은 곳에서 다루다 보니 잘못된 접근 방법을 사용하여 에러를 유발합니다. 결과적으론 가독성과 신뢰성이 떨어지며, OOP에서 중요한 요소 중 하나인 은폐성을 갖추지 못합니다. 내포된 커플링(Implicit couplin..
PLC 기초 - 프로그래밍 용어, 약어 설명 (미쓰비시, 지멘스 공통) ROM(Read Only Memery), RAM(Random Access Memory) 롬은 읽기 전용으로, 메모리 내용을 변경할 수 없다. 따라서, 고정된 정보를 써넣는다. 이 영역의 정보는 전원이 끊어져도 기억시킨 정보 내용을 상실하는 휘발성 메모리이다. 램은 메모리에 정보를 수시로 읽고 쓰기가 가능하여 정보를 일시 저장하는 용도를 사용되나, 전원이 끊어지면 기억시킨 정보 내용을 상실하는 휘발성 메모리이다. 그러나 필요에 따라 RAM 영역 일부를 배터리 백업(back up) 때문에 부 휘발성 영역으로 사용할 수 있다. 사용자 프로그램 메모리 제어하고자 하는 시스템 사양에 따라 사용자가 작성한 프로그램이 저장되는 영역으로, 제어 내..
C# URL 웹페이지 존재 확인 (WebBrowser.Url - HTML) 회사 이윤 창출을 위해 손가락을 놀리던 중, 특정 페이지가 존재하는지 확인할 필요가 생겼습니다. (C# URL 웹페이지 존재 확인 (WebBrowser.Url)) 일명 URL이 깨졌는지 안 깨졌는지 확인하는 과정인데, 블로그를 예로 들어 특정 페이지가 삭제되었다면 그 주소를 사용자에게 알려주는 것이죠. 여러 웹사이트를 운영하는 관리자에겐 특정 URL이 접근하지 못한다거나 사이트가 없어졌다고 알려주는 겁니다. 즉, 웹페이지가 존재하지 않는다면 존재하지 않는다 알려주는 겁니다. 처음엔 어렵게 생각했는데 HttpWebRequest를 사용하면 쉽게 알아낼 수 있습니다. 아래 소스 보시죠. 123456789101112131415161718..
비주얼스튜디오2015 C2338 에러 해결 (msvs2015) error C2338: va_start argument must not have reference type and must not be parenthesized 작업하던 비주얼스튜디오 버전이 바뀌면 생기는 문제입니다. 이럴 땐, C/C++ - 전처리기 - _CRT_NO_VA_START_VALIDATION 추가하면 됩니다. 만약 비주얼스튜디오 버전이 바뀌고 여러 에러가 생긴다면 이 코드를 추가하세요. 비주얼스튜디오2015 C2338 에러 해결 (msvs2015)
MFC 엑셀에 그림 파일 추가, Excel import Picture 엑셀에 그림 파일 추가하는 소스인데 저는 함수 3개로 구현했습니다. 1. 기능 함수 : 그림 추가 함수 호출2. 실행 함수 : 실제 엑셀 시트에 그림 추가하는 함수3. 그림 파일 처리 함수 : BMP 파일 유효성 검사 함수 이렇게 3개 기능으로 구성했는데, 1번부터 살펴봅니다. 1. 첫 번째로 기능 함수입니다. 여기선 간단히 AddPicture()란 함수를 호출하는 정도입니다. 123456789101112CString img_path = "C:\abc.bmp"; int IMG_POS_LEFT = 0;int IMG_POS_TOP = 100;int IMG_WIDTH = 100;int IMG_HEIGHT = 100; Shapes shape ..
C# byte 배열 빠르게 합치기 (바이트 array) C#에서 바이트 배열 합치기를 시도할 때, System.Buffer.BlockCopy가 System.Array.Copy보다 빠릅니다. 아래는 10 바이트 배열 3개를 1백만 번 반복한 결과로 함수의 수행 시간을 측정한 결과입니다. 바이트 배열 : System.Array.Copy - 0.2187556초바이트 배열 : System.Buffer.BlockCopy - 0.1406286초IEnumerable : C# yield operator - 0.0781270초IEnumerable : LINQ's Concat - 0.0781270초 byte 배열 크기를 100개로 늘리고 다시 테스트한 결과는 아래. 바이트 배열 : System.Array.Copy - 0...
[Qt프로그래밍] 비트맵 QGuiApplication QPixmap 에러 해결 Qt5.6.2 : QPixmap: Must construct a QGuiApplication before a QPixmap 해결책 : Qt5Widgets -> Qt5Widgetsd Qt프로그래밍 도중 버전을 바꾸며 겪었던 에러입니다. Qt4에선 발생하지 않았는데 Qt5로 버전을 올리니 발생하네요. Qt프로그래밍은 Qt5 부터 규칙이 깐깐해지며 변화의 폭이 많았죠. 어쨌든 해결하려면 Qt5Widgets 대신 디버그에 사용하는 Qt5Widgetsd를 사용하면 됩니다. 큐트파이브위젯스디가 되는 것이죠. 디. 디. D. D. 다시 정리하면, Qt5Widgets -> Qt5Widgetsd 디버그에 사용되는 d가 붙어있는 파일이 따로 있..
C# string double 변환 7가지 방법 C# string double 변환 8가지 방법C#에서 float을 string 변환하는 방법입니다. String.Format 또는 double.ToString, float.ToString를 사용할 수 있습니다. 소수점 이하 자리수소수 자리수가 작으면 나머지는 0으로 채워지고 크면 반올림됩니다. 1234// 소수 둘째 자리String.Format("{0:0.00}", 123.4567); // "123.46"String.Format("{0:0.00}", 123.4); // "123.40"String.Format("{0:0.00}", 123.0); // "123.00"cs 1234// 두자리 소수점String.Format("{0:0.##}", 123.4567)..