MFC 멀티바이트에서 유니코드 변환 (c++, Char, CString) 『기본적으로 유니코드 환경』에선 wchar_t를 사용하셔야 됩니다. Char -> CString1. char* to LPWSTR 참조 - 스택 오버플로우 : Convert char * to LPWSTR [클릭] 12345char text[] = "something";wchar_t wtext[20]; mbstowcs(wtext, text, strlen(text)+1);//Plus nullLPWSTR ptr = wtext;cs 2. char* data -> cstring 1(LPSTR)datacs 3. const char * -> const CString & 1CString str= _T("asdf");cs 또는, 12wchar_t *..
[Qt 프로그래밍] Qwt 소멸자 코드 (그래픽 라이브러리) Qwt Plot를 사용한 뒤 메모리 해제를 완벽히 하려면 detachItems() 함수를 이용해야 합니다. Qwt User's Guide 6.1.2의 QwtPlotItem Class Reference 문서를 참조해 보면, plot 내부에 많은 아이템 클래스가 존재하는 것을 확인할 수 있습니다. 보시다시피 저 수많은 아이템 중, 실제 사용하셨던 아이템들은 detachItems()로 해제해 줘야 합니다. 그래야 메모리 누수가 발생하지 않아요. 해제 코드는 꽤 간단합니다. 해제할 아이템을 선택하고 true를 인자로 넘기면 됩니다. 12345678910111213141516171819202122plot_->detachItems(QwtPlotItem::..
C++ 메모리 해제 접근 할당 에러 (malloc, delete, free) C++ 메모리 에러 종류1. 메모리 해제 에러메모리 릭시간이 갈수록 메모리 사용량이 계속 증가한다. 시간이 갈수록 프로세스가 느리게 동작한다.종국적으로 『메모리가 부족』하여 프로그램의 작업과 시스템 콜들이 실패한다. 123456void memoryLeak(){ int* p = new int[1000]; return; // 버그! p를 해제하지 않음}cs 메모리 할당, 해제의 잘못된 매칭 보통 프로그램을 즉시 크래시시키지 않는다. 어떤 플랫폼에서는 메모리를 손상할 수 있고 나중에 프로그램 크래시(세그먼테이션 오류)로 나타난다. 1234567891011void mismatchedFree(){ int* p1 = (int*)malloc..
전문가 시스템(Expert System), 엑스퍼트 시스템이란? 전문가 시스템(엑스퍼트 시스템(Expert System))이란 일종의 인공지능(AI)과 관련된 것이라 막연하게 생각해 왔다. 어디서도 상세하게 이해할 만한 글을 접해보지 못했기에 머릿속으로도 정립되지 않은 개념이었다. 펀드용어 사전 - Expert System [클릭]엑스퍼트 시스템 의사 등 특정 분야 전문가들의 지식이나 추론 방법을 컴퓨터로 옮겨 넣어서 전문가 이외의 사람들도 이와 같은 지혜를 이용할 수 있도록 만든 인공지능 시스템의 일종. 지식 베이스라 불리는 데이터베이스에 전문가의 지식을 넣어두어 추론 기능을 사용, 일정한 판단을 내리는 장치이다. 아... 정말 막연하지 않은가? 전문가 시스템이 뭔지 모르는 사람들은 저 글만 봐선 결코..
모터 원리, 선정 방법 [리니어 모터를 중심으로] Motor 종류모터- 전기 에너지를 기계 에너지로 바꾸는 기계.- 대부분이 회전운동을 하나 직선 운동을 하는 것도 있음. 모터의 종류 DC MotorAC MotorStepping Motor기타 DC 모터- 고정자로 영구자석을 사용하고, 회전자(전기자)로 코일을 사용하여 구성한 것으로, 전기자에 흐르는 전류의 방향을 전환함으로써 자력의 반발, 흡인력으로 회전력을 생성시키는 모터이다. DC 모터의 특징- 기동 토크가 크다- 인가전압에 대하여 회전특성이 직선적으로 비례한다- 입력전류에 대하여 출력 토크가 직선적으로 비례하며, 출력 효율이 양호하다- 가격이 저렴하다 『AC Motor』- 동기기형 ( Synchronous Type )- 유도기형 ( Inductio..
윈도우 CE 애플리케이션 영역과 커널 공간 [메모리 이해] WinCE 애플리케이션 영역아래 그림은 윈도우 CE 애플리케이션 주소 영역을 나타낸다. 프로그램 영역은 각기 정해진 목적에 따라 다수의 영역으로 나뉜다. 첫 번째 영역은 프로그램 코드와 모든 메모리 할당을 담고 있는 하위 1GB의 주소 영역이다. 다른 윈도우 운영체제처럼 『프로그램 코드는 0001 0000의 베이스 주소』에서 상향으로 로드된다. 운영체제는 코드 위에서부터 프로그램이 사용할 정적 데이터 영역, 리소스 데이터, 로컬 힙을 위치시킨다. 여기에는 프로그램 주 스레드가 사용할 스택이 적어도 하나 이상 존재하고, 그 뒤에 보조 스레드용 스택이 온다. WinCE에서 스택, 힙, 직접 가상 할당 등 모든 메모리 할당은 프로그램 주소 영역의 최초..
윈도우 Path API - 경로 함수와 API 정리 출처1 - 알고 있어야 도움이 되는 몇 가지 API들출처2 - Windows Shell Path Handling API 거의 모든 윈도우 애플리케이션에는 파일을 다루는 로직이 들어가게 된다. 미리 설정된 환경설정 파일을 읽어 내거나, 작업하기 위한 데이터가 있는 파일을 읽기도 하고, 현재 Windows 애플리케이션의 환경 설정 파일을 보조 저장장치에 저장하거나, 작업하고 있는 파일 내용을 저장하는 등의 동적은 기본적인 애플리케이션의 기능이다. 보통 이러한 작업은 기존에 재활용을 위하여 잘 정의를 해놓은 MFC의 Windows CFile과 같은 클래스를 이용하지만, 기존 준비해 놓은 클래스에는 없는 기능을 구현하고 싶거나, 클래스 기능을 확장하고 싶을 때..
#ifndef, #define 사용법, 헤더 파일 중복 컴파일, 꼬임 방지 헤더 파일은 서브 시스템이나 다른 코드에 추상화된 인터페이스를 전달하는 메커니즘이다. 한 가지 까다로운 부분은 여러 헤더 파일을 이용할 때 순환 참조나 중복 인크루드되는 경우를 피하는 것이다. 이때 『#ifndef, #define』 사용법으로 해결할 수 있다. 이 두가지를 혼합해 헤더 파일이 중복 컴파일되는, 일명 헤더 파일 꼬임 방지도 할 수 있다. 예를 들어 Logger 클래스를 작성해서 모든 오류 메시지를 로깅해야 할 때, 사용자 설정 정보를 받기 위해 Preferences 클래스를 사용해야 할 수 있다. 그런데 Preferences 클래스가 사용하는 헤더 중에서 의도하지 않게 Logger 클래스를 인클루드 해버릴 수 있다...
안드로이드 Savitzky-Golay Filter 오픈 소스, 사용 방법 출처 - savitzky-golay-filter in Java [링크]소스 - Source Download link [링크] Savitzky-Golay Filter(사비츠키 고레이 필터) 알고리즘의 소스 코드(안드로이드 자바)입니다.이 알고리즘은 스무딩 효과로 유명하며, C++ java c# 등 다양한 오픈 소스 형태로 제공되고 있습니다. 사용하기엔 간단하게 구현되어 있어서 아래처럼 사용하시면 됩니다. 123float[] data = new float[] { 8916.81f, 8934.24f, 9027.06f, 9160.79f, 7509.14f };float[] leftPad = new float[] { 8915.06f, 8845...
MFC 스크롤바, 다이얼로그 예제 (동적 Scroll Bar) 오른쪽, 아래쪽의 스크롤바 scrollbar를 이용해 GDI로 구현된 도형을 움직이는 프로그램인데 버그가 많군요. 회사 소스를 그대로 올릴 순 없으니 『버그는 스크롤바 참조할 분』들이 알아서 고치면 될 듯. 동적으로 생성하는 막대기 만들기 소스입니다. MFC로 만들기 방법은 아래 참조 사이트들을 자세히 살펴보세요. Test_GDI_SCROLL MFC Scrollbar 첨부 파일 MFC 스크롤바 만들기 핵심 코드는 아래에 있습니다. 창의 크기가 변할 때마다 스크롤 바의 정보를 계속 갱신해주는 것이죠. 123456789101112131415161718192021222324252627282930313233343536373839404142434445..
C# ref, out - 두 한정자의 차이점 참조로 전달 Java와 C# 모두에서 개체를 참조하는 메서드 『매개 변수는 항상 참조로 전달』되는 반면 기본 데이터 형식 매개 변수(C#의 값 형식)는 값으로 전달됩니다. C#에서 값 형식을 참조로 전달하려면 ref 또는 out 키워드 중 하나를 지정해야 합니다. 이 두 키워드 사이의 차이점은 매개 변수 초기화에 있습니다. 중요! ref 매개 변수는 사용하기 전에 초기화.out 매개 변수는 이를 전달하기 전에 명시적으로 초기화할 필요가 없고 이전의 값은 모두 무시. ref 키워드 호출되는 메서드에서 매개 변수로 사용되는 변수의 값을 영구적으로 변경하려면 값 형식 매개 변수에 이 키워드를 지정합니다. 호출에 사용되는 변수의 값을 전달하는 대신 이 키워드를 지정하..
안드로이드 에러 Activity not started, its current task has been brought to the front Activity not started, its current task has been brought to the front 안드로이드에서 발생할 수 있는 위의 에러에 대한 해결 방안입니다. 이미 디바이스 상에서 실행된 상태이기 때문에, Eclipse에서 새롭게 디바이스로 빌드하지 못한다는 의미로, 3.4와 3.5에서의 해결책이 약간 다릅니다. 일단, 제일 간단한 해결책은 강제 종료입니다. 응용프로그램 정보로 들어가 안드로이드 앱을 강제로 종료하거나, 제거 후 다시 빌드하면 잘 될 겁니다. 근데, 구글의 android developers에서도 언급하듯, 이클립스 3.5..