Archive

Archive for October, 2006

Visual Studio .net 2003 키보드 파일

October 29th, 2006 No comments

프로그램의 버전업은 빈번해도, 단축키는 한번 손에 익은데로 사용하기 마련이다. 나도 마찬가지인데 지금 첨부된 파일은 Visual Studio V6에서 쓰던 단축키대로 닷넷 2003에서 사용하기 위해서 필요한 키보드 설정 파일이다.

위치는 다음과 같다.


C:\Document and Settings\사용자\Application Data\Microsoft\VisualStudio\7.1

키보드_VC6.vsk

Categories: Tech& Tip Tags:

Visual Studio V6 : C1083에러

October 19th, 2006 No comments

비주얼스튜디오 V6를 이용하여 컴파일을 할 때 경우에 따라서는 수백만 라인의 코드를 Rebuild All을 할 때가 있다. 이럴 경우 따로 따로 빌드하면 모두 빌드가 되지만 다 엮어서 빌드할 때에 C1083에러가 나는 경우가 있었다.

Fatal Error C1083: Cannot open compiler intermediate file ….

보통의 경우 계속 빌드해 나가다 보면 결국에는 빌드가 되길래 그냥 그런거보다 하고 넘어가는 수가 많았지만, 제대로 찾아뵜더니 이 에러는 temp 디렉토리 설정이 제대로 되지 않아서 나는 에러로 생각된다.

이 때는 환경설정의 temp, tmp 디렉토리를 짧은 이름의 다른 디렉토리로 설정한다. 내컴퓨터의 고급 설정에 있는 셋팅을 바꿔준다.

Categories: Tech& Tip Tags: ,

Tortoise SVN Beginner’s Guide

October 15th, 2006 No comments

2005-03-23 광운대학교 K-NET 5기 조형렬 씨가 작성한 Tortoise SVN  초보자 가이드 문서를 인터넷 서핑하다가 발견했다.

출처를 정확히 밝히고 업로드 해 놓는다.

1050628951.doc

TT에 소스코드 Syntax Highlight 플러그인 설치했다.

October 14th, 2006 No comments

내 홈피의 뒷받침을 해주고 있는 테터툴즈를 1.0.6.1로 업그레이드 하고 몇 가지 플러그인을 설치하였다. 테터의 개방된 구조를 지향하는 올바른 개발자 철학이 맘에 든다.

여러 플러그인 중에 가장 끌렸던 것은 소스의 Syntax Highlight 기능.
사실 이 사이트에 소스를 많이 올린 편은 아니지만, 올린 소스도 그다지 이쁘게 표현되지 않았던 것이 사실이다.

테터의 플러그인 페이지에 가면 몇 가지가 있지만 가장 편하고 이뻐 보이는 것은 후리자 님이 만든 테터코드 하이라이트 플러그인 v0.93이 었다.

적용예는 맨 밑에 있다. 아주 맘에 든다… 깔끔하고..

일단 이걸 하고, 내 홈피의 나머지 소스 부분 얼마 있진 않지만 거기도 다 이걸로 바꿔야 겠다. ㅎㅎㅎㅎ

에러코드 잡기

그런데 플러그인을 적용할 때 문제가 있었었다.
에러가 반환되었던 것… 후리자 님의 방법에 따라서 에러코드가 나오는 ch_main.js를 넣고 실행을 했었는데, 에러코드가 0이 나왔었고, 스크립트를 좀 뜯어봤더니 에러가 나는 곳은….

ch_main.js 의 41번째 라인에서.

var html = “ ” + iframe.contentWindow.document.body.innerHTML + “ ”;

iframe.contentWindow까지는 얻어오는 데 그 밑에 document 이하를 못 얻어오고, 얻어오고자 하면 익스플로러 아래의 상태줄에 Error  접근 권한이 없습니다. 이런 에러가 떳었다.

그러다가 어찌어찌 하다 보니.. 소스를 고치진 않았는데 그냥 되버렸다. 제대로 contentWindow도 얻어오고.. 희안했다.  답을 알았으면 후리자님 블로그에 댓글이라도 남길려고 했는데.. 어영부영 이상하게 되버려서 답을 적다가 말았다.
되서 좋긴 한데.. 그래도 뒤끝이…머쓱 머쓱.

후리자님도 디버깅을 할 환경이 안되서 못고치고 있는 것 같은데. 개발자는 에러를 재현할 수 있어야 디버깅 할 수 있는 것 아닌가…

적용예

  1. // stltest.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
  2. //
  3. #include “stdafx.h”
  4. #include <vector>
  5. #include <algorithm>
  6. #include <math.h>
  7. // 테스트 데이터를 담고 있는 구조체
  8. struct test
  9. {
  10.   int idx;
  11.   float v1;
  12.   float v2;
  13.   float v3;
  14. };
  15. // remove_if의 조건문에 해당하는 함수
  16. bool isgood(test t)
  17. {
  18.   if(t.v1 + t.v2 + t.v3 < 180)
  19.   {
  20.     return true;
  21.   }
  22.   else
  23.   {
  24.     return false;
  25.   }
  26. }
  27. // find_if의 조건문에 해당하는 함수
  28. bool findme(test t)
  29. {
  30.   if(t.idx == 99)
  31.   {
  32.     return true;
  33.   }
  34.   else
  35.   {
  36.     return false;
  37.   }
  38. }
  39. //
  40. bool sortrule(const test& a1, const test& a2)
  41. {
  42.   // return a1.idx < a2.idx;
  43.   return sqrt(a1.v1 * a1.v1 + a1.v2 * a1.v2 + a1.v3 * a1.v3) < sqrt(a2.v1 * a2.v1 + a2.v2 * a2.v2 + a2.v3 *a2.v3 );
  44. }
  45. void printvalues(std::vector<test>& tests)
  46. {
  47.   char str[80];
  48.   std::vector<test>::iterator itr;
  49.   // 값출력
  50.   printf(“값출력 size of vector is %d\n, tests.size());
  51.   for(itr = tests.begin(); itr != tests.end(); itr++)
  52.   {
  53.     sprintf(str, “%d\t%3.3f\t%3.3f\t%3.3f\n, itr->idx, itr->v1, itr->v2, itr->v3);
  54.     printf( str );     
  55.   }
  56. }
  57. int _tmain(int argc, _TCHAR* argv[])
  58. {
  59.   std::vector<test> tests;
  60.   std::vector<test>::iterator itr;
  61.   // 01. 값설정 –> push_back()을 사용한다.
  62.   for(float i=0; i < 10; i++)
  63.   {
  64.     test t;
  65.     t.idx = (int)i;
  66.     t.v1 = 10.0f * i;
  67.     t.v2 = 20.0f * i;
  68.     t.v3 = 30.0f * i;
  69.     tests.push_back(t);
  70.   }
  71.   printvalues(tests);
  72.   // 임의로 뒤집기
  73.   random_shuffle(tests.begin(), tests.end());
  74.   // 02. 조건에 맞는 놈 지우기 –> remove_if()를 사용한다.
  75.   tests.erase(remove_if(tests.begin(), tests.end(), isgood), tests.end());
  76.   printvalues(tests);   // 값보자..
  77.   // 03. 원하는 위치에 몇 놈집어넣기 –> insert()를 사용해서..
  78.   test t = { 99, 444.0f, 555.0f, 666.0f};
  79.   tests.insert(tests.begin()+4, t);
  80.   printvalues(tests);
  81.   // 04. 바꾸기를 해보자 –>
  82.   test t2 = { 199, 444.0f, 555.0f, 666.0f};
  83.   itr = find_if(tests.begin(), tests.end(), findme);    // 이 놈을 찾아서
  84.   tests.erase(itr);          // 지우고
  85.   tests.insert(itr, t2);                  // 그자리에 다른 놈을 넣어준 다음에
  86.   printvalues(tests);
  87.   // 05. sort를 해보자
  88.   printf(“sort\n);
  89.   sort(tests.begin(), tests.end(),sortrule);
  90.   printvalues(tests);
  91. /*
  92.   // 해당위치에 삽입하기
  93.   test t;
  94.   t.idx = (int)i;
  95.   t.v1 = 10.0f * i;
  96.   t.v2 = 20.0f * i;
  97.   t.v3 = 30.0f * i;
  98. //  tests.insert()
  99. */
  100.   return 0;
  101. }

Visual Studio에서 Cg의 Syntax Highlight 기능 사용하기

October 4th, 2006 No comments

비주얼 스튜디오를 이용하여 nVidia Cg를 프로그래밍 할 때, 쉐이더인 Cg파일은 비주얼 스튜디오가 일반 텍스트 파일로 인식해서 Cg의 여러 키워드 들이 그냥 까만 글자로 나온다.
이미 좋은 툴에 익숙해진 눈과 머리인지라 흰 바탕에 까만 글씨만 써있는 코드를 보면 머리가 멍해지는 개발자가 다수일 것이다.

사용자 삽입 이미지
[2007/7/3] 이것 저것 쓰는 것들이 많아서 하나의 버전으로 통합했다.

그래서 비주얼 스튜디오에서 Cg를 사용하면서 Syntax Highlight를 사용하려면 다음과 같은 절차를 거치면 된다.

먼저 다운로드…
syntaxhighlight.zip

비주얼 스튜디오 6의 경우


1. 첨부된 파일 중에서 usertype.dat 파일을 C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin 이 위치에 복사한다.
2. 첨부파일 안에 있는 install_highlighting.reg 파일을 더블 클릭에서 레지스트리에 등록시킨다.


비주얼 스튜디오 .2003의 경우


1. 첨부된 파일 중에서 usertype.dat 파일을 C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE 이 위치에 복사한다.
2. 첨부파일 안에 있는 install_highlighting_vs7.reg 파일을 더블 클릭해서 레지스트리에 등록시킨다.