프로그래밍 104

[윈도우] FindFirstFileA를 사용한 MBCS 문자열 탐지

FindFirstFileA를 사용한 MBCS 문자열 탐지 표준 C프로그래밍과 Window 프로그래밍을 섞어서 사용할때 발생하는 디렉토링 리스팅 해결 방법 FindFirstFileA 를 사용하면 char형 배열로 찾아쓸수 있다. FindFirstFileW 또는 FindFirstFile 를 사용시 Unicode로 되기때문에 사용할수 없다. int Check_File_Name(const char *sDir) { WIN32_FIND_DATA fdFile; HANDLE hFind = NULL; char sPath[2048]; char fine_name[2048]; //Specify a file mask. *.* = We want everything! memset(sPath, '\0', sizeof(sPath));..

[윈도우] window 프로그래밍에서 표준 C/C++를 동시에 하용할 시 발생하는 문자열 문제점 해결

출처: http://icartsh.tistory.com/13 1. 유니코드 -> 멀티바이트 wchar_t strUnicode[256] = {0,}; char strMultibyte[256] = {0,}; wcscpy_s(strUnicode,256,L"유니코드"); int len = WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, NULL, 0, NULL, NULL ); WideCharToMultiByte( CP_ACP, 0, strUnicode, -1, strMultibyte, len, NULL, NULL ); STL이용 wstring strUni = L"유니코드"; int len = WideCharToMultiByte( CP_ACP, 0, &strUni[0], -1..

[윈도우] 문자열의 Encoding 방식

윈도우에서 제공하는 문자열의 Encoding 방식 출처 : http://eunchul.com/database/board/cat.php?data=Win32_API&board_group=D45ef8ac8c01d4 C++ 문법을 배우고 Win32 프로그래밍을 시작 할 때, 가장 어려운 것중 하나는 엄청난 수의 Win32 DataType들과 생소한 Macro들이었다. 생전 처음 보는 그 녀석들을 이해하려면 상당한 범위를 돌아다녀야 했고, 이해하기 보다는 대충 이렇게 쓰면 오류없이 컴파일 되더라 정도로 사용하는게 현실이었다. 그 중에서도 문자열부분은 꽤나 두통을 유발하는 것들인데 유니코드고 멀티바이트고 신경안쓰고 대충 만들고 싶어도 어디에서건 꼭 발목을 잡히게 된다. 그렇다고 아주 해결이 안되는것도 아닌데, 그 ..

SourceTree 한글 깨짐 해결( EUC-KR로 설정)

sourcetree에 대한 euc-kr로 인코딩 맞추는 방법 1. 저장소 기본 편집 인코딩 맞추기 - 도구 -> 옵션 -> 일반에서 기본 텍스트 인코딩 을 euc-kr로 변경 2. Log 관련 euc-kr 처리 - 맨 우축 상단의 설정 선택 - 서정 파일 편집 - 기본 설정에서 아래 빨간색 설정을 추가 [i18n] logOutputEncoding = euc-kr commitEncoding = UTF-8[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true[remote "origin"]url = git-repo@10.0.8.220:RulesManagem..

프로그래밍 2017.01.31

리눅스 프로세스별 메모리 사용량 확인법

리눅스 프로세스별 메모리 사용량 확인법 간단 root@localhost] # ps -o pid,pcpu,pmem,rss,vsz,cmd -p `pidof nginx` PID %CPU %MEM RSS VSZ CMD 1370 0.0 0.0 2304 141128 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; pid %CPU %MEM rss (kb) vsz (kb) cmd process id 시스템 전체 cpu사용량 시스템 전체 메모리 사용량 물리 메모리 가상 메모리 실행 명령어 프로세스 상세 리눅스 환경에서 프로세스별 메모리 사용량을 간단하게 확인할 수 있는 명령어입니다. ps -eo user,pid,ppid,rss,size,vsi..

Linux 분할 컴파일시 유의 사항.

분할 컴파일시 유의사항. 사전 지식 compile의 전체 과정 전처리(Preprocessing): 이 단계에서는 #include, #define, #if 등과 같은 전처리 지시어가 처리됩니다. #include 지시어를 통해 헤더 파일이 소스 코드 파일에 포함되며, #define 지시어는 매크로를 정의하고, #if 지시어는 조건 컴파일을 수행합니다. 컴파일(Compilation): 이 단계에서는 전처리된 소스 코드가 컴파일러에 의해 기계 독립적인 중간 코드(어셈블리 코드)로 변환됩니다. 컴파일러는 이 단계에서 소스 코드의 문법적 오류를 검사하며, 타입 체크와 최적화를 수행합니다. 어셈블리(Assembly): 이 단계에서는 컴파일러가 생성한 어셈블리 코드가 기계어로 변환됩니다. 이 과정에서 생성되는 기계어 ..

Thread에대 대한 고찰

Thread에대 대한 고찰 [1]. Multi Thread를 이용한 개발시 확인 필요사항. 1. OS에서 지원하는 Thread의 최대 갯수 2. Process당 허용가능한 최대 Thread 갯수 3. Process당 적정 수준의 Thread 갯수 4. Thread 생성 에러가 나는 경우 [2]. 위 3가지에 대한 확인 방법(Linux 기준) 1. OS에서 지원하는 Thread의 최대 갯수(OS 전체에서 사용가능한 Threa갯수이다) - cat /proc/sys/kernel/threads-max 2. Process당 허용가능한 최대 Thread 갯수 - Linux는 프로세스당 Thread를 제한 하는 것이 아니라. 단지 전체 Thread 갯수만 관리한다. 3. Process당 적정 수준의 Thread 갯수..

프로그래밍 2017.01.02

인코딩 통일 하기

인코딩 통일 하기 - Linux에서 인코딩을 통일하기위해서 3가지(vim, linux consol, 접속프로그램) 를 맞춰야 한다-다음 예제는 UTF-8로 통일 하는 예제이다. 1. vim 설정set fileencodings=utf-8,euc-kr 2. Linux Console 설정영구 적용(CentOS 6이 전 버전)수정 파일vi /etc/sysconfig/i18nvi /etc/profile/etc/sysconfig/i18n 파일에 추가LANG="ko_KR.UTF-8"SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"SYSFONT="latarcyrheb-sun16"SYSFONTACM="8859-15"/etc/profile 에 추가export LC_ALL="k..

프로그래밍 2016.12.27

Doxygen을 활용한 코드 문서화

Doxygen을 활용한 코드 문서화 Chapter - 1 주석주석의 중요성 큰 프로젝트에서는 소스코드를 분석하는데 있어 주석이 없으면 효율성이 떨어진다.(물론 가독성이 좋고 잘짜여진 소스코드면 주석이 따로 필요없다 ,-.- 이런 코드 단 한번도 못봄...)코드에 대한 빠른 이해를 돕니다.한달이 지난 코드는 새로운 코드 처럼 느껴진다. 유지 보수를 위해서 꼭 필요하다. 주석이 없는 코드는 다른 사람들이 보기가 힘들다.주석의 유의사항 너무 과하게 달지만 말아라.주석은 코드의 이해를 돕는거지 코드를 자세하게 설명하는게 아니다.Chapter - 2 문서화 도구 Doxygen코드 문서화를 위한 도구(doxygen + graphviz)doxygen: 소스코드 문서화 도구지원 언어 C, C++, C#, Objecti..

최고의 코딩을 위하여 지켜야 할 사항.

최적을 코딩을 위하여 지켜야 할 사항. 설계서 부터 작성해라.모듈화를 해라스택을 통한 메모리 접근 신경쓰지 마라 컴파일러가 최적화 다해준다함수는 한가지의 동작만 해야한다. 함수는 모니터 한페이지를 넘으면 안된다.전역 변수 사용하지 마라전역 변수는 컴파일러가 최적화를 못한다.전역변수는 소프트웨어 유지보수에도 않좋다.레지스터에 미리 로딩이 안되는 아키텍쳐가 많아서 로레벨에서도 최적화가 안되니 쓰리마라. GCC 코딩 최적화https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html멀티 쓰레딩시 Task의 starvation을 신경 써라. Task의 우선 순위를 정하는게 좋다.주석은 Doxygen 형태로 달아라그래야 문서화 하기 쉽다. 페이스북 질문 실타래 - 질문 C ..