no image
Netbeans에서 assert 구문을 사용하기
Flower프로젝트를 마무리하고 개인적으로 리펙토링을 진행하고 있습니다.(코드를 작성하면서 해야 하지만.. 그래도 안하는 것 보단 낫다고 생각해서 하고 있습니다.) 오늘은 prototype patter을 이용하여 clone함수를 구현하기 위해 생성자를 추가 하였습니다. 여기에 assert구문을 넣어 주고 싶어서 넣었는데 netbeans에서는 assert를 바로 지원하지는 않더군요.. assert는 jdk 1.4이후부터 지원이 되었다고 하기 때문에 하위 호환성을 유지 하기 위해 실행 할때 옵션을 통해 사용여부를 지정해야 하더라구요.. 그에 대한 것은 알게 되었는데(구글링하면 쉽게 나옵니다.) 정작 netbeans에서 쓰려고 하니까 어떻게 해야 할 지 한참 찾았습니다. 프로젝트 속성에 들어가서 Run이라는 ..
2010.01.18
[Java] jar파일에 이미지를 넣을때 주의 하세요..
오늘 프로젝트를 정리 하면서 이미지를 jar안에 넣는 작업을 했습니다. netbeans에서 프로젝트를 하고 있었으므로 jar파일 만드는 것은 알아서 해주지만, 이미지를 넣기 위해서 .class파일들이 모여 있는 곳에 이미지를 옮기고 코드를 수정했습니다. 하지만!!! 동작을 하지 않는 것입니다.. jar파일에 있는 리소스를 가져 오기 위해서 ClassLoader의 getResource 메소드를 사용해야 합니다. 기존에 직접 파일의 경로로 가서 파일을 직접 읽어 왔던 코드를 jar파일에 있는 것을 classloader를 통해 읽어 오는 코드로 변경했는데 동작을 하지 않아서 고생을 하고 원인을 찾아 해매 두시간을 헤매고 있었습니다. 결국 일일이 어디서 문제가 있는지 디버깅 코드를 넣어 가면서 테스트를 하는데 ..
2010.01.05
[C++이야기] Pointers and Contants
우리가 보통 포인터를 사용할때는 두가지가 관계가 있다. 하나는, 포인터 자신이고, 다른 하나는 포인팅 되는 오브젝트 이다. 그럼 포인터에 const키워드를 붙이면 어느 것이 상수화 될까? 답은 const키 워드를 붙이는 위치에 따라서 결정되는 것이다. 기준은 * 이다. *앞에 const키워드를 붙이면(prefixing) 포인팅 되는 오브젝트가 상수화 되는 것이고, * 뒤에 const키워드를 붙이면(postfixing) 포인터가 상수화 되는 것이다. 예를 들어보도록 한다. void f1(char* p){ char s[] = "Gorm"; const char* pc = s; //pointer to constant pc[3] = 'g'; // error: pc points to constant pc = p; ..
2010.01.03
[CodeComplete CH15] 조건문 사용하기
1. If 문 - 일반적인 경우에 대한 코드를 먼저 작성한 다음 특별한 경우를 작성한다. - 동치에 대해서 정확하게 이동하도록 한다. - 정상적인 경우를 else가 아니라 if문 다음에 입력한다. 수많은 오류를 아무렇게나 처리하는 비주얼 베이직 예제 OpenFile( inputFile, status ) If (status = Status_Error) Then errorType = FileOpenError Else ReadFile( inputfile, fileData, status ) If( status = Status_Success ) Then SummarizeFileData( fileData, summaryData, status) If( status = Status_Error ) Then errorTy..
2009.10.21
[CodeComplete CH14]직선형 코드 구성하기
1. 순서가 중요한 명령문 명령문의 순서가 중요한 자바 예제 Data = ReadData(); Result = CalculateResultsFromData( date ); PrintResults( results ); 명령문의 순서가 중요하지만 덜 분명한 자바 예제 revenue.ComputeMonthly(); revenue.ComputeQuarterly(); revenue.ComputeAnnual(); 명령문의 순서가 중요한 자바 예제 Data = ReadData(); Result = CalculateResultsFromData( date ); PrintResults( results ); 명령문의 순서 의존성이 감추어져 있는 비주얼 베이직 예제 ComputeMarketingExpense ComputeSa..
2009.10.21
[C컴파일러]이상한 컴파일러...
오늘 과제를 열심히 하다가 다른 소스에서는 잘 되는데 내가 만든 소스에서는 계속 컴파일 에러가 나는 구문이 있었습니다. void function( char *path ) { static char *full = path; } 어떤 함수에 스태틱 캐릭터 포인터가 있고 함수의 인자로 오는 캐릭터 포인저의 값을 저장하는 구문인데요.. "initializer is not a constant" 위와 같은 에러 메시지가 뜨더군요.. 에러문을 해석하면 스태틱 포인터에 초기화될때 들어가는 값이 상수가 아니라서 안된 다..이런 의미인데 이런 문법적 제약이 있는것은 아닌것으로 알고 있는데다가 다른 소스에서는 컴파일이 잘되니 도무지 알 수 없는 노릇이라 인터넷을 뒤저 보았습니다. 다른 사람들도 저와 같은 현상이 일어나는 것을..
2009.01.13
no image
[cmd 명령어]subst 사용법
요즘들어 윈도우의 GUI환경을 벗어나 옛날로 돌아가고 싶다는 생각이 듭니다. 그래서 인지 cmd 환경에서 GUI환경 못지 않는 편리함(?!) 을 얻고자 고민하던중 subst라는 명령을 발견했습니다. 폴더를 잘 정리 하면 폴더 안에 폴더, 그안에 다시 폴더... 이런식으로 깊이가 깊어지는데요.. 그곳에 접근할때 마다 일일이 커맨드를 치는것도 힘들고 GUI가 아니므로 기억하기도 힘들지요.. 그래서 help쳐서 명령어를 구경하던중 가상의 드라이버를 만들어 실제 내용이 들어있는 경로로 바로 갈 수 있다는 것을 알게 되었습니다. 사용법은 간단합니다. subst help를 치면 사용법이 나오며 그것을 보면 그대로 따라 하실 수 있을겁니다.
2009.01.07
Naked Function
Naked Function 원본 : http://danguria.springnote.com/pages/2407072 작성자 : danguria 이 글을 마음껏 이용하시되 출처를 꼭 밝혀 주세요 요즘 루트킷 관련 과제를 하다보니 C코드를 많이 보고 있습니다.. 대부분 커널모드에서 동작하는 코드들인데 IDT후킹관련 코드를 보는데 "__declspec(naked) Function()" 이런식의 함수가 보이는 것입니다. 분명히 이건 표준C에내용은 아닌것 같은데.. 뭐지.. 하면서 그냥 지나 치다가 우연히 "Windows 구조와 원리 그리고 Codes"라는 책에서 그 설명을 볼 수 가 있었습니다. 결론 부터 간단히 말하자면!! 위와 같은(__declspec(naked)) prefix를 붙이게 되면, 컴파일러가 스..
2008.12.30
Struct Packing!!
요새 C언어로 코드를 짜다 보니까 자잘자잘한 컴파일러 옵션이나 문법을 알게 된다. 전에는 몰랐던 구조체의 메모리 할당에 대해서 잘 알게 되었다. 컴파일러가 구조체의 메모리를 할당할때 가장 큰 타입의 메모리 곱하기 변수 개수를 한다는 것이다. struct AAA { int a; char b[2]; int c; }; 이렇게 하면 할당되는 메모리는 10byte일 것같지만 실제로 12byte가 된다. 속도를 좀더 올리려는 목적에서 그런다고 한다. 그리고 남는 2byte는 b의 뒤에 빈공간이 있다. 하지만 특별한 상황에는 실제 메모리를 정확하게 잡아야 할때가 있기 때문에 #pragma pack( ... )으로 해결 할 수 있다. #pragma pack( push ) #pragma pack( 1 ) // 구조체 선..
2008.08.01