|
카테고리
이전블로그
이글루링크
최근 등록된 덧글
동감합니다...헤헤.
by 덕순강아지 at 05/31 일정을 못지키면 개발자.. by 오오 at 05/31 외우고 싶은 주문은 아.. by 왼손잡이 at 10/24 정말 저도 가끔씩 그렇게 .. by 주연 at 10/20 지금에서 안건데 권준호.. by 왼손잡이 at 09/10 저도 권준호를 제일 좋아.. by cre+s at 03/05 넵 ^^ 쾌차!쾌차! by 왼손잡이 at 02/22 잘 지내고 계신가요? 아.. by cre+s at 02/22 아.. 네 그래야겠지요 .. by 왼손잡이 at 02/14 교양으로 자바가....아.. by cre+s at 02/12 메모장
최근 등록된 트랙백
이글루 파인더
라이프로그
|
1. 프로젝트 팀원들과 맘편하게 회식하기 2. 프로젝트 팀원들과 프로젝트만큼 빡신 세미나 한번 하기 3. 운목이 분갈이 4. 키보드 청소 5. 집 욕조 물 잘 안빠지는 문제 해결 6. 뚜비 실내 청소 및 에어컨 필터 갈기 7. 시연이랑 주말에 신나게 놀아주기 8. 배에 복근은 아니더라도 마른 비만 소린 안듣게 열심히 운동하기 아.. 바쁘면 바쁠수록 많은 걸 하고 싶어진다. ^^ Fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source? Visual Studio를 사용해서 많은 project들을 한 solution에서 개발하다 보면 precompiled header라는 녀석이 참 사람을 곤란하게 만들 때가 있다. 구글링을 해보면 precompiled header를 사용하는 것은 컴파일 시간을 단축시키는 분명한 이점이 있는데, 다양한 사람이 함께 개발을 하다보니 각각의 프로젝트마다 precompiled header의 사용여부가 서로 다르다. 맨 위의 에러가 나는 이유는 precompiled header를 사용하지 않는 프로젝트에서 사용된 cpp 파일을 precompiled header를 사용하는 프로젝트에서 사용하려고 할 때 나타나는 에러이다. 해결방법은 두가지 정도가 있을 것 같다. 1. 모든 프로젝트에서 stdafx.h를 include 하고 있다고 하면 그냥 #include "stdafx.h"를 추가해준다. 2. 정말 재수없게 프로젝트에서 stdafx.h가 없어서 #include "stdafx.h"를 하면 stdafx.h를 찾을 수 없다고 나오는 경우, 혹은 그 파일을 절대 수정할 수 없는 경우, property의 precompiled header option을 파일 별로 설정할 수 있다. 전체 proj 설정은 precompiled header를 사용하겠다고 하고 문제가 되는 파일만 precompiled header를 사용하지 않도록 설정하면 컴파일 오류를 비껴갈 수 있다. 반대의 경우는 어떨까? precompiled header를 사용하지 않는 프로젝트에서 precompiled header를 사용하여 #include "stdafx.h"가 포함된 cpp 파일을 가져와서 사용하게 될 경우에 stdafx.h 가 없어서 에러 백만개를 볼 줄 알았는데, 기본적으로 vc project를 만들면 stdafx.h를 project에 포함해준다. precompiled header를 stdafx.h 로 부터 만들겠다는거니까 precompiled header 옵션을 끄고 사용한다 해도 일반적으로 stdafx.h는 프로젝트 폴더 안에 존재한다. (일부러 지우지 않는 이상에야 ^^; ) 일종은 common header인 셈인데, 그런 이유로 이 경우는 크게 문제되지 않을 것 같다. 그렇게 보면 위 2)번의 경우가 발생하는 경우도 별로 없을 것 같은데 그냥 1)으로 갈껄 그랬나? -_-;; 난 그냥 dependency가 너무 많이 걸리는 것 같아 해당 파일만 precompiled header를 사용하지 않도록 수정했다. 12시가 다 되어 가는데 이게 무슨짓이냐.. 싶지만.. 이번 삽질로 precompiled header 에 대해서 어느 정도 개념이 선 듯 하다. 구글링을 하던 중 꿈꾸는 소년님이 LNK2001 에 대한 내용을 잘 정리해 놓으셨다. 프로젝트를 시작하면 꼭 한번은 만나는 error인듯 싶다. BHO를 개발하다보면 debugger를 IE에 붙여서 line by line으로 타면서 디버깅하고 싶을 때가 있는데, IE8 부터는 LCIE(Loosely-Coupled Internet Explorer) 때문에 프로세스가 의도치 않게 2개가 떠서 디버거에 ie 경로를 넣어주어도 브레이크 포인트가 활성화 되지 않는다. 구글링을 해보면 관련 자료를 찾을 수 있다. 1. 레지스트리의 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main 에 TabProcGrowth(DWORD) 값을 0으로 셋팅한다. 2. 만약에 기존에 이미 해당 key가 있다면 잠시 이름을 변경해 놓고 key를 새로 만들어서 지정한다. 3. 디버깅 이후 원래대로 되돌린다.
새롭다.. 윈도우 쪽에서 유지보수만 너무 해서 그런가? DLL을 추가로 생성해본 기억이 가물가물하다 테스트용 DLL을 억지로 하나 만들어보기로 했다. 이것저것 검색하면서 관련 지식들을 좀 더 파보고 있는데 msdn이 꽤 설명이 잘 되어 있다는걸 알게 되고 놀랐다. 이전에도 이런 문서는 있었을텐데... http://msdn.microsoft.com/ko-kr/library/1ez7dh12(v=vs.80).aspx 개념을 다시 정리하는데 도움이 되고 있다. 최근에 파이선 해킹프로그램이라는 책을 보고 있다. 그 안에 pydbg 를 활용하는 방법이 소개되었는데 python27에는 기본적으로 탑재되어 있지 않아 추가적으로 설치해주어야 한다. easy_install 로는 되지 않는 것 같고 소스를 찾아다녔다~ 구글링을 해보면 python25 시절에 배포되었던가본데 난 이제사 보고 있는걸까.. -_-;; paimei라는 디버깅툴(?) 안에 포함되어 있는데, 관련 URL은 아래와 같다. PaiMei 홈페이지 - http://pedram.redhive.com/PaiMei/docs/ PaiMei 소스 배포처(old) http://www.openrce.org/downloads/details/208/PaiMei PaiMei 소스 배포처 http://code.google.com/p/paimei/ python setup.py build & install 빌드는 통과~ ^^ >>> import pydbg Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\site- from pydbg import * File "c:\python27\lib\site- import pydasm ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다. >>> import하니 pydasm을 import 하다가 에러가 난다;; 구 환경에서 빌드된 pydasm을 사용하고 있는 듯 pydasm을 찾아나섰다. libdasm 에 포함된 python 모듈로 바이너리를 asm 코드로 변환해주는 python 라이브러리이다. 배포처는 http://code.google.com/p/libdasm/ 이며 paimei와 마찬가지로 받아서 setup build_ext & install 하면 설치가 된다. 잘 되는지 확인하려면 pydasm의 das.py 를 통해 확인가능하다. site-packages를 확인하면 pydbg 안에 pydasm.pyd 파일이 있어 import시 우선적으로 load하게 된다. 해당 파일을 제거하고 나면 로컬빌드 된 pydasm을 import 하게 된다. 관련 링크~ linux를 데탑보다는 서버처럼 사용하기 때문에 환경이 바뀌면 프락시 설정할 때마다 왜 안되지? 이러면서 시간을 많이 소모하는거 같다. 대충 정리하면.. - 몇몇 툴들은 (wget 이나 yum 같은 경우), 각자의 conf 파일에서 프락시를 지원한다. - 대부분의 작은 바이너리들은 HTTP_PROXY 환경변수를 참조한다. 어제는 python setuptools (easy_install) 가 사내 proxy 설정이 변경되어 되지 않았다. 이 때, 나의 경우는 ~/.bash_profile 에 proxy 설정을 넣어두는데, 종종 하는 실수는 HTTP_PROXY=http://xxx.xxx.xxx.xxx:3128 이렇게만 쓰고 저장하고 나온다 쩝;; 아래와 같이 써주어야 한다. EXPORT HTTP_PROXY=http://xxx.xxx.xxx.xxx:3128 그리고 echo $HTTP_PROXY 해서 해당 환경변수가 존재하는 확인한다 ^^ 금주 일정이 빡빡해서 회사 일찍 나왔는데 linux 머신에서 svn diff 하다가 눈에 거슬려버린 "No new line at end of file" 을 지나치지 못하고 추적에 들어갔다 (성질 하고는 -_-;; ) [상황] vim을 통해 web source를 수정했는데 svn diff를 하니 마지막에 이런게 나온다. -?> \ No newline at end of file +?> vim에서는 기본 옵션으로 text file인 경우 파일 마지막에 new line이 없을 시 저장 시에 추가했다는 것 아니 왜 -_-;; 시키지도 않은 짓을.. [문어발식 검색] 관련 자료를 좀 더 찾아보자면.. 일부 C 컴파일러에서도 "No new line at end of file" 이라는 warning을 찾아볼 수 있는데 그 warning을 나타내는 이유는 그게 ANSI C 1989 stadard 에 명시된 내용이라는 것 A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character. Since this is a "shall" clause, we must emit a diagnostic message for a violation of this rule. This is in section 2.1.1.2 of the ANSI C 1989 standard. Section 5.1.1.2 of the ISO C 1999 standard (and probably also the ISO C 1990 standard). 굳이 왜 이럴까 하고 생각해봤는데 누군가 친절히 예제까지 들어서 설명~ 파일 끝과 파일 시작 사이에 new line이 없으면 파일 끝 라인과 파일 시작 첫 라인이 붙어버려 컴파일 에러의 원인이 될 수 있다고 한다. (아마도 요새는 VI처럼 IDE들이 알아서 개행을 넣어준다고 한다.) 굳이 컴파일이 아니더라도 두 파일 끝과 시작이 붙어버리면 좀 곤란한 상황이 발생할 것 같기도 하다. vim 과 관련한 noeol 에 대한 설명은 :help noeol 을 찾아보면 된다고 한다. [결론] - vim 은 text 파일의 끝에 개행이 없다고 자동으로 넣어준다. - noeol 인 파일을 vim 수정 후 svn diff 하면 "No new line at end of file" 관련 메시지를 볼 수 있다. - 이대로 svn commit하면 마지막 부분이 수정될 것이다. - EOF에 EOL 이 들어가는 것이 나쁘진 않은 것 같다. (근데 이 웹소스들은 한결같이 파일 끝에 개행이 없을까? -_-;; ) 사람들이 하나둘 떠나가고 밑에서 새로운 사람들이 들어오고 언젠가부터 나만의 자유로운 시간보다 내가 해야지만 하는 것들이 늘어나는 걸 느낀다 누군가에게 인정을 받거나 내 스스로 만족할만한 무언가를 찾는다기 보다는 하지 않으면 안될 것들이 줄을 서 있어서 그런 것들만 하다가 시간이 간다 그런 일들이 밀물 들어오듯 밀려오는 것 같아 답답하고 불안하기만 하다 이제 집에 가면 나를 바라보는 처자식이 있고 회사에는 내가 무언가 나서서 해결해주길 바라는 의도치 않은(?) 기대들이 있다 쉽진 않을 것 같다 그래서 요새 잠을 깊게 자지 못하는 가보다 윗사람들 잠 조금 자는게 이해가 살짝 가는 것 같기도 하고 아침에 TODO를 정리하면서 드는 푸념이다 ^^ 커피 한잔 마시고 기운내서 고고씽~! 기존에 사용하던 테스트 서버들을 하나의 리눅스 이미지로 만드는 중이다. 다양한 웹페이지를 가동하기 위해 lighttpd에 vhost 설정을 하는데 lighttpd 버전이 올라가면서 include_shell 의 동작이 제한적이라는걸 알게 되었다. 일전에 책임님이 이렇게 쓰셨었는데 include_shell "eval \"%$(cat /etc/lighttpd/conf.d/-.conf 2>/dev/null\"" eval 따위 처리되지도 않는다 T_T 가이드는 "cat /etc/lighttpd/vhosts.d/-.conf" 수준의 명령만 처리하도록 했는데 몇시간 삽질하다가 결국엔 sh파일로 빼볼까? 하고 include_shell "test.sh" 해봤다 test.sh안에는 달랑 'find /etc/lighttpd/vhosts.d/-.conf -exec {} \;' 만 있을 뿐! 되긴 되는데 좀 찝찝하네;; 아웅 -_-;; 낼 책임님한테 이렇게 해도 되는건가 물어봐야지;;
|