RSS 리더로 나는 KLDP Geek forum 을 보곤 한다.
보다보면 재밌는 것들이 많단 말이지.. 글들에 글들을 따라가다보면 몰랐던 혹은 어렴풋이 알았던, 애매한 것들에 대해서 다시한번 생각해보게 되고 알게 된다. 언젠가 적었듯이 이게 KLDP의 묘미가 아닌가 한다.
그 중 하나로 오늘은 cinsk님의 “포인터 이해란 글에 대해.“란 글을 보게 되었다. 글들에 링크되어 있는 글들의 덧글들을 보라.
세상은 넓고, 난 너무 미약하다.
RSS 리더로 나는 KLDP Geek forum 을 보곤 한다.
보다보면 재밌는 것들이 많단 말이지.. 글들에 글들을 따라가다보면 몰랐던 혹은 어렴풋이 알았던, 애매한 것들에 대해서 다시한번 생각해보게 되고 알게 된다. 언젠가 적었듯이 이게 KLDP의 묘미가 아닌가 한다.
그 중 하나로 오늘은 cinsk님의 “포인터 이해란 글에 대해.“란 글을 보게 되었다. 글들에 링크되어 있는 글들의 덧글들을 보라.
세상은 넓고, 난 너무 미약하다.
시작은
STDIN 입력은 간단히 <>
입력에서 마지막 \n 없애기
문자열을 나눠서 리스트로 만들기
파일을 쓰기 모드로 열기
그냥은 filename, 추가 쓰기는 >>
파일에 뭘 쓰고 싶을 때는
파일 닫기는
sprintf
printf
찾을 문자열의 시작 인덱스 구하기
시간 구하기
시간 만들기
문자열 연결은 ‘.’ 으로..
환경변수 접근은
ascii <-> character
$ascii_value = ord(“e”); # now 101
$character = chr(101); # now “e”
더 많은 정보는 http://perldoc.perl.org
SET 에서 /P 옵션을 주면 환경변수에 입력값을 넣을 수 있다.
형식은 다음과 같다.
실행 예제
IF 문에서 수식을 사용하고 싶을 때, 예를 들면, 에러 체크를 위해 루프를 도는 개수등을 카운트하고 싶다면 SET 에서 /A 옵션을 사용하고 IF에서 비교 연산자를 사용하면 된다. IF 문의 비교 연산자는 다음과 같다
다음은 start 로 3가지 일을 동시에 처리한 후 goto와 label을 이용, cygwin의 delay로 일정 시간 체크한 후 그 후 에러로 처리하는 bat 파일의 예다.
rem WORK1, 2, 3를 동시에 돌린다. 다음 작업에 dependency 가 있는 작업에
rem start의 /W 옵션을 주어 기다리도록 한다.
start WORK1.bat
start WORK2.bat
start /W WORK3.bat
goto CHECK
:DELAY
rem if LOOP_COUNT >= LOOP_MAX_COUNT
IF %LOOP_COUNT% GEQ %LOOP_MAX_COUNT% (
rem LOOP_COUNT += 1
SET /A LOOP_COUNT+=1
:CHECK
echo Checking…
IF [WORK1 실패조건] (
call WORK4.bat
java.lang.OutOfMemoryError: Java heap space 에러 시 다음 두 부분 중 원인이 되는 부분을 고친다.
MSDN : Creating Shell Extension Handlers
The Complete Idiot’s Guide to Writing Shell Extensions
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Shell Extension Context Menu Sample
Registry에 등록하는 건 Post-Build Step 에서 Regsvr32를 이용해서 등록한다. 커맨드는 다음과 같다.
Registry에 등록을 해제하는 건 다음과 같은 커맨드로 가능하다.
Registry 등록 관련 절차는 ShellExtReg.cpp 내의 RegisterFileMenu() 와 UnregisterFileMenu() 내부를 참고하면 좋다.
1. WideCharToMultiByte() API를 호출하는 방법
2. CRT 함수 wcstombs() 를 호출하는 방법
3. CString 생성자나 assign을 통한 방법(MFC만 가능)
4. ATL string 변환 매크로를 이용하는 방법
WideCharToMultiByte
WideCharToMultiByte ( CP_ACP, // ANSI code page
WC_COMPOSITECHECK, // Check for accented characters
wszSomeString, // Source Unicode string
-1, // -1 means string is zero-terminated
szANSIString, // Destination char string
sizeof(szANSIString), // Size of buffer
NULL, // No default character
NULL ); // Don’t care about this flag
wcstombs
CString
CString str1 ( wszSomeString ); // Convert with a constructor.
CString str2;
str2 = wszSomeString; // Convert with an assignment operator.
ATL Macro
// Again assuming we have wszSomeString…
{
char szANSIString [MAX_PATH];
USES_CONVERSION; // Declare local variable used by the macros.
lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}
참고 : Introduction
to COM – What It Is and How to Use It. by Michael Dunn
Windows의 Batch 파일에서 Exit code를 원하는 값으로 설정하고 종료하고 싶다면..
perl을 이용해서 파일 내부의 특정 문자열을 한번에 바꿀 수 있다.
작은 따옴표와 큰 따옴표 사용에 관한 차이를 알고 싶다면 http://kldp.org/node/98639#comment-460800 를 참고!
NMake를 사용할 때 Makefile 내부에 파일을 내장해서(인라인 파일) 사용할 수 있다.
형식은 다음과 같다.
위와 같은 내용을 Makefile 내부에 써놓으면 << 들 사이의 내용이 파일로 저장되어 사용가능하게 된다. Filename 을 적으면 해당파일명으로 파일이 생성되고 적지 않으면 임의의 이름으로 임시파일이 생성된다. 또한, Make 세션 사용 후에 파일을 남겨두고 싶다면 KEEP을, 아니라면 NOKEEP 또는 아무것도 쓰지 않으면 된다.
파일 내용 안에는 $(변수) 등을 써두면 써둔 “$(변수)”가 아닌 변수로 치환되는 내용이 그대로 들어가므로 편리하다.
참고 : http://msdn.microsoft.com/ko-kr/library/seaaew50(VS.80).aspx