본문 바로가기

분류 전체보기

.SVN 폴더 삭제하기 .SVN 폴더 삭제하기 배포하려는데 .svn 폴더까지 배포할 수 없으니 .svn 폴더를 수동으로 지웠는데,이렇게 좋은게 있다! 1. 메모장을 열고 아래 copy & pasteWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] @="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\".. 더보기
[Visual C++ ] GUID로 재배포 패키지 설치되어 있는지 확인 [Visual C++ ] GUID로 재배포 패키지 설치되어 있는지 확인 아래의 GUDI를 확인하여 Visual C++ 재배포 패키지가 설치되어 있는지 알 수 있다. Visual C++ 2005 runtime files* VC 8.0 (x86) - {A49F249F-0C91-497F-86DF-B2585E8E76B7} * VC 8.0 (x64) - {6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A} * VC 8.0 (ia64) - {03ED71EA-F531-4927-AABD-1C31BCE8E187} Visual C++ 2005 SP1 runtime files* VC 8.0 SP1 (x86) - {7299052B-02A4-4627-81F2-1818DA5D550D} * VC 8.0 SP1 (x.. 더보기
Cairo 사용법 Cairo 사용법 cairo 관련 api들의 레퍼런스는 http://cairographics.org/manual/ 를 참조한다. 출력 일반cairo는 cairo_line_to, cairo_move_to, cairo_rectangle 등과 같은 함수를 호출하여 path를 지정하고 cairo_stroke(선), cairo_fill(면), cairo_paint(전체 면) 함수 호출시 surface에 출력된다.이 출력 함수들이 호출된 후에는 이전에 정의된 path들이 제거된다. path를 보존하기 위해서는 cairo_stroke_preserve, cairo_fill_preserve 함수를 호출한다. 출력되는 색상은 cairo_set_source_rgb, cairo_set_source_rgba 함수에 의해 결정된.. 더보기
Visual Studio ‘찾기 및 바꾸기’ 에서 정규표현식 사용하기 Visual Studio ‘찾기 및 바꾸기’ 에서 정규표현식 사용하기 정규표현식은 사용하기 다소 껄끄럽지만, 적절히 잘 사용하면 상당히 편리하다.특정 문자열이 아닌 패턴을 찾거나, 검색의 범위를 좁히거나 할 때 등이다. 그러나, 일반 정규식과 visual studio에서 사용하는 정규식은 약간 다르다.예를 들어, 10진수를 찾을 경우, [0-9]와 같이 표현하나, visual studio에서는 :d 라고 표현한다. 사용 방법 :Visual studio에서 ‘찾기’버튼을 누르면 아래와 같이 나오고, 그림처럼 사용한다.‘찾기 옵션’에서 정규식 사용(E)에 체크하고, ‘▶’ 화살표가 활성화되며 이를 클릭하면 약간의 도움말을 보여준다.그리고 정규표현식을 사용하면 된다. 위 그림의 정규식 :b+:z 는 공백이나 .. 더보기
[svn] ssh를 이용하여 svn 사용하기 ssh를 사용하여 svn 사용하기 회사내부에서 svn을 사용하다가 회사 외부에서 작업해야 될 때가 있습니다.그때 보안을 위해 ssh를 사용하기도 합니다.어쨋든 ssh를 사용하여 svn을 사용하는 방법은 [1]의 링크를 따라가면 됩니다. 1. 서버 설정 (이건 직접 해보지 않았음)2. PuTTY 설치 : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html3. PuTTY 설정 : 첨부한 개인키 포캣 파일을 다운받아 임의의 경로에 저장 : PuTTY ssh 클라이언트를 실행하고 아래와 같이 설정 Session -> Host Name(or IP address) : 123.123.123.123 Session -> Connection type : SSH.. 더보기
pImpl idiom [펌] - http://yesarang.tistory.com/316 이전 글에서 비가상인터페이스(NVI)를 활용하여 사용자용 인터페이스와 개발자용 인터페이스를 분리하여 관점을 잘 분리하는 방법을 설명해 드렸습니다. 그리고, 글 마지막에는 다음 글로 "특정 클래스 내부 구현을 바꾸더라도 그 클래스를 사용한 Application 재컴파일이 필요 없게 만들 수는 없을까요 ?"라는 화두를 던졌었지요. 그럼 이제부터 그 화두에 대한 답변을 해 보도록 하지요. 지난글 예제로 제시됐던 ImageDecoder 헤더 파일을 다시 한 번 살펴 보도록 하겠습니다. /// @file ImageDecoder.h // forward declaration class ImageValidator; class ImageBuffer; c.. 더보기
[펌] 비가상인터페이스(NVI) 패턴 스물한번째 이야기로 비가상인터페이스(Non-Virtual Interface; NVI) 패턴에 대해 소개드릴까 합니다. 보통 C++에서 자바의 인터페이스와 동일한 역할을 해주는 걸 추상 클래스라고들 말합니다. 추상 클래스를 정의할 때는 순수 가상 함수로 정의를 합니다. 그러니, 인터페이스를 정의할 때는 당연히 가상 메소드를 정의하게 되는데, 가상이 아닌 인터페이스를 정의한다는 게 말이 안되는 것 같지 않으세요 ? 예를 들어, 여러분이 이미지 디코딩 라이브러리를 개발하는데, 여러 가지 종류의 이미지를 지원하려고 이미지 디코더의 인터페이스를 제공한다고 상상해 보시죠. 그럼 당연히 다음과 같이 인터페이스를 정의하게 되지 않을까요 ? /// @file ImageDecoder.h class RGBImageBuffe.. 더보기
Singleton Pattern Singleton(싱클턴) Pattern 책의 Story 16 - ‘오직 하나뿐인 그대’의 내용을 토대로 재 작성한 것입니다. 프린터를 사용하려면 어떤 코드를 만드는 것이 좋을까요?시스템을 통틀어서 한대 밖에 없는 자원이니까 객체 역시 하나만 존재해야 합니다.먼저 떠오르는 건, 프린터를 전역(global) 변수로 사용하는 것입니다.그러나 전역 변수 사용은 흔히 나쁜 습관이라고 합니다. 아래와 같은 코드처럼 말이죠 먼저 선언을 하고,mainCPrinter* g_pPrinter;// 프린터객체는필요할때NULL 검사를한뒤생성해서사용하세요 int main(){ ...} 아래와 같이 사용할 수 있겠죠…CDocument.cpp / CImageViewer.cppvoid CDocument::Print(){ if (!g.. 더보기
union에서의 객체 사용 union에서의 객체 사용 표준 C++에서는 union에서 사용할 수 있는 객체에 제한이 있었나보다. [1] 아래와 같은 코드를 컴파일 했더니, struct Point { int _x; Point(); Point(int x):_x(x){};};typedef struct { CStr strUserInput; union { double dValue; bool bValue; int32 nValue; Point p; }value;}Prop;error C2620: member '::p' of union '::' has user-defined constructor or non-trivial default constructor위와 같은 에러가 난다. 사용자 정의 생성자나 non-trivial 기본 생성자를 사용하는 .. 더보기
[C++] 클래스에서 사용되는 static 멤버 변수 및 함수 클래스에서 사용되는 static 멤버 변수 및 함수 static 멤버 변수를 이해하기 위해서 먼저 알아야 하는 개념은 일반 static 변수이다.다음 코드는 함수 내에서 static을 선언하는 경우이다. 이 것이 우선 이해가 되어야 클래스에서 사용되는static을 이해할 수 있을 것이다. // 첫 번째 예제#include void func1( void ) { static int count = 0; printf( "%d \n", ++count ); } void main( void ) { func1(); // count = 9; , 컴파일 에러, func1()의 지역 변수에 접근이 불가능 func1(); } 위 코드를 실행하면 결과는 다음과 같다. count = 1 count = 2 위 코드를 설명하자면, .. 더보기