블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2737)
Unity3D (817)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
04-26 00:00

조치 방법은 일단 visual Studio IDE 를 삭제하고 다시 설치하는 방법이 있구요..(최악의 방법이자 뒷탈없는 방법이죠.)

 

다음으로는 Visual Studio IDE를 리셋 하는 방법입니다..

관련정보는 http://www.microsoft.com/korea/msdn/library/ko-kr/bb245788(vs.80).aspx

  • Visual Studio 2005의 인스턴스를 모두 종료합니다.
  • 시작을 클릭하고 실행...을 선택합니다.
  • "devenv.exe /resetuserdata"를 입력합니다.
이 명령을 사용하면 몇 분 동안 Visual Studio가 정리되고 처음 상태로 설정됩니다. 이때 작업 관리자를 열어 devenv.exe 프로세스가 실행 중인지 여부를 확인할 수 있습니다. 실행이 종료되면 Visual Studio를 다시 시작할 수 있습니다. 그러면 컴퓨터에서 Visual Studio를 처음으로 실행할 때처럼 처음 실행 대화 상자가 다시 표시됩니다.

반응형
Posted by blueasa
, |

많은 개발업체에서 버전 관리를 위해 무료 버전 관리 프로그램인 Tortoise SVN를 많이 사용하고 있는 걸로 알고 있다.

Tortoise SVN의 장점 중 하나인 현재 상태를 아이콘으로 표시해주는 기능이 있는데, 이 아이콘 상태를 정의하기 위해 Tortoise SVN에서 수시로 디스크를 읽으며, 파일 상태를 체크한다. 이 때문에, 컴퓨터 성능이 저하 되기도 하는데, 범인은 바로 TSVNCache.exe!! 이 프로세서가 백그라운드로 실행되면서, 폴더/파일를 수시로 읽어들이고 있기 때문이다.

Tortoise SVN를 쓰고 있다면, 밑의 방법대로 설정 해두자. 이렇게 하면 사용자가 지정한 폴더와 파일 외에는 접근을 하지 않으므로, 디스크 읽기를 최소화 시킬수 있다.

방법은 이렇다.

1. TortoiseSVN -> Settings 메뉴를 연다 .


2. Look and Feel 트리 항목에서 Icon Overlays 선택
    

3. 그럼 밑의 그림과 같은 항목들이 나온다.



4. 하단에 Exclude Paths(제외항목)에 드라이브명과 함께 *를 찍어준다.
즉, 드라이브내의 모든 파일/폴더를 검색하지 말란소리다.


5. Include Paths에는 버전관리를 하고 있는 폴더명을 적어준다.


6. 설정을 마치면, 작업 관리자를 통해 TSVNCache.exe를 강제 종료시킨다(보통 알아서 재시작한다).

출처: http://kindtis.tistory.com/6

SVN설정 관련: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-settings.html


[추가]
- 내가 쓰는 1.6.5, Build 16974 버전에서는 'Icon Overlays'항목이 바로 있었음.


반응형
Posted by blueasa
, |

 "d3dx9math.h"를 include할때 이전에 정의되어있는 'new'때문에 에러가 발생했다.

그렇다고 기본new를 그냥 undef하고 사용하기는 찝찝해서 아래와 같이 잠깐동안만 기본new를 undef하고

다시 선언하는 방법을 사용해 에러를 없앴다.

 

// 이전의 new를 저장했다 다시 디파인
#pragma push_macro("new") // 기본new를 저장
#undef new // 기본new를 삭제
#include "d3dx9math.h" // 이 파일에 같은 이름의 new 매크로가 존재
#pragma pop_macro("new") //  저장해둔 기본new를 로드



출처 : http://blog.naver.com/nkein82?Redirect=Log&logNo=100088967998

반응형
Posted by blueasa
, |
Visual C++ 위자드로 자동 생성되는 코드들 중에서 stdafx.h 와 stdafx.cpp 이 있다. 

여기에서 stdafx 란 Standard Application Freamworks 의 약자로 개발자들의 생산성 향상을 위해 MS 에서 제공하는 소프트웨어 라이브러리 체계를 뜻하며, MFC 로 구성되어 있다. 참고로 많이 사용되는 application framework 로는 .NET Framework( Windows 계열 ),  Cocoa ( Objective C / Mac OS X), Swing (Java) 등이 있다.

그럼 Precompiled header (미리 컴파일된 헤더. 여기에서는 precompiled header 로 통일) 란 무엇인가... 

C / C++ 언어에서 헤더 파일은 C 전처리기(preprocessor) 에 의해 자동적으로 소스 코드를 포함하게 된다. 

그런데 일부 헤더 파일의 경우 방대한 크기의 소스 코드를 포함할 수 있고( 예를 들면 window.h), 이런 코드들을 매번 컴파일하면 컴파일 시간이 매우 길어지게 된다. 그래서 자주 바뀌지 않는 기본적인 라이브러리들의 경우에 컴파일 시간을 줄이고자 컴파일러가 사전에 헤더 파일들을 미리 컴파일 해 놓고 쓸 수 있게 하고 있다. 

이렇게 컴파일 시간을 줄이기 위해 사전에 컴파일한 결과물이 VC 의 경우 pch(precompiled header) 라는 확장자 명으로 저장된다. 비주얼 스튜디어의 솔루션 폴더에 생기는 프로젝트명.pch 가 바로 그것이다. precompiled header 를 사용할 경우 precompiled header 로 지정한 헤더 파일 및 소스 코드는 컴파일시에 컴파일 되지 않고 pch 의 결과물을 가져다 사용하게 되는 것이다. 


자.. 이제 원리를 이해했으니 많은 궁금중들이 풀릴 수 있다. 


질문 1 ) stdafx.h 와 stdafx.cpp 파일의 용도가 무엇인가요?  stdafx.h 가 포함하는 정보는 무엇들인가요? 

앞서 말했듯이 MFC 에서 자주 사용되는 공용 소스들을 precompiled header 로 만들어 제공하기 위해 디폴트로 stdafx.h 와 sfdafx.cpp 이 위자드에서 자동 생성되는 것이다. 참고로 precompiled header 는 stdafx.h 외에 다른 파일들을 설정할 수도 있다. (아래 그림과 같이..)

VC 에서는 프로젝트 속성 - C/C++ - 미리 컴파일된 헤더 항목에서 Precompiled header 사용 여부를 선택할 수 있다. 



stdafx.h 에 포함하는 내용들을 살펴보면 윈도우 객체 생성에 필요한 기본 클래스 (afx.h / afxwin.h 등),  윈도우 컨트롤( afxctl.h / afxcmn.h 등), 기본 DB 관련 클래스 ( afxdb.h / afxdao.h ), 네트워크 관련 클래스 ( afxsock.h ) 등등 기본적인 프레임워크 구축에 필요한 필수 헤더들이 포함되어 있다. 

질문 2 ) 다음의 에러들은 무엇인가요 

에러 : fatal error C1010: unexpected end of file while looking for precompiled header directive
미리 컴파일된 헤더 지시문을 찾는 동안 예기치 않은 파일의 끝이 나타났습니다
( 혹은 버전에 따라 "Did you forget to add '#include "stdafx.h"' to your source?" 라는 문구가 표시되기도 함 )

해결방안 :  precompiled header 를 사용하도록 설정된 상태에서 컴파일을 하였는데 precompiled header 를 찾지 못했다는 의미. 
보통 해당 소스코드에 stdafx.h 가 인클루드 되어 있지 않거나, stdafx.h 의 위치가 잘못 되어 있어서 발생한다.  
stdafx.h 를 소스코드의 가장 위쪽에서 include 하도록 해 주면 된다. 
혹은 precompiled header 가 잘못 세팅되어 찾지 못하는 문제일수도 있다. precompiled header 를 사용 안함으로 체크하여 pch 를 현재 소스 코드에 맞게 재 생성을 해 준다. 

에러 : fatal error C1853: "Debug/test.pch" is not a precompiled header file created with this compiler

해결방안 :  현재 소스 코드에서 사용할 수 있는 pch 와 버전이 맞지 않는다는 의미. 
precompiled header 를 사용 안함으로 체크하여 pch 를 현재 소스 코드에 맞게 재 생성을 해 준다. 

참고로, precompiled header 를 사용 안함으로 체크할 경우 매번 전체 헤더파일을 재빌드 하므로, 아래와 같이 "미리 컴파일된 헤더 만들기"를 선택하여 최초에 한번 pch 를 만들어 주면, 그 다음부터는 precompiled header 사용하기를 선택하여 사용할 수 있다. 



질문 3 ) 그렇다면 stdafx.h 에 어떤 내용을 넣으면 되나요 

앞서 말했듯이 stdafx.h 는 한번만 미리 빌드해 놓고 그 다음부터는 재빌드 안하고 쓰는 모듈들이 되야 하므로, precompiled header 인 stdafx.h 에는프로젝트 진행 중에 거의 값이 바뀌지 않는 외부 라이브러리나 전역 변수 등의 내용을 포함시키면 된다.
이들을 pch 로 만들어 놓고 빌드하면 매번 재빌드 하지 않고 컴파일 시간을 많이 줄일 수 있다. 

참고로, GCC ( .gch ) ,  C++ Builder ( vcl.h ) 등에서도 precompiled header 를 지원한다. 

참고 : Wikipedia - Precompiled header 

precompiled header 를 씁시다 (제발)


반응형
Posted by blueasa
, |

원문 : http://support.microsoft.com/default.aspx?scid=kb%3Bko%3BKR601474 )

 

 

기술 자료 ID : 601474
마지막 검토 : 2000년 1월 9일 일요일
수정 : 1.0
이 문서는 이전에 다음 ID로 출판되었음: KR601474

요약

어플리케이션을 릴리즈 모드로 Build 할 때 디버깅 정보를 남기어서 VC++ Debugging Tool에서 디버깅을 가능하게 합니다. 이 방법을 사용하는 경우, 실제 릴리즈 실행 파일은 거의 영향 받지 않으면서, Debugger 에서 Break Pointer를 잡거나, Trace를 가능하게 하므로, Release mode에서만 발생하는 Bug를 추적할 때 용이하게 사용할 수 있습니다.

추가 정보

이 방법을 사용하게 되면 _DEBUG free define으로 포함되는 디버깅 매크로는 포함되지 않으나, Source code안으로 Step in 가능하게 하는 디버깅 정보들은 OBJ와 PDB file에 남게 됩니다. 이를 이용하게 되면 VC++ IDE 환경에서 source level 까지의 step in이 가능해 집니다.
다음은 VC++ 6.0의 프로젝트에서 Debugging Information를 Enable하는 방법입니다.
1. Project를 open 한 뒤 menu Project/Settings 를 선택합니다.
2. Settings For를 Win32 Release로 선택합니다.
3. C/C++ tab에서 category를 General로 선택하고 Debug info를 Program Database로 선택합니다.
4. Link tab에서 category를 General로 선택하고 Generate debug info를 check합니다.
5.

Rebuild All를 실행하여서 프로그램을 다시 Build 합니다. 이제 디버깅 하고자 하는 위치에 Break Pointer 를 잡고Go를 실행하면, 디버깅을 진행할 수 있습니다.

 

 

 

*********************************************************************************************

자자.. 위에꺼는 2000년도에 마소에서 나온 문서이다. 2000년도라면 VC++ 6.0을 사용하던 시기..

지금은 몇 년도? 2007년도.. VC++은 얼마? 2005.. 흠.. 상당한 시간이 흐르고, VC++도 엄청난 변화를

격었기에 위와같이 설정을 해주면 컴파일이 안 된다. 그래서 2005에 맞게 수정하겠다. ^^

 

 

위 그림과 같이 "메뉴 -> 프로젝트 -> 속성 -> 구성 속성 -> C/C++ -> 일반" 으로 이동을 한다. 그리고 맨위 왼쪽 구성은 Release로 한다.

그리고 디버깅 정보 형식은 "편집하며 계속하기를 위한 프로그램 데이터베이스(/ZI)" 로 변경한다.

그리고 "메뉴 -> 프로젝트 -> 속성 -> 구성 속성 -> C/C++ -> 최적화"로 가서 "속도 최대화(/O2)"에서 "사용 안 함"으로 설정.

그리고 "메뉴 -> 프로젝트 -> 속성 -> 구성 속성 -> C/C++ -> 전체 프로그램 최적화"로 가서 "링크 타임 코드 생성 사용(/GL)""사용 안 함"으로 설정한다.

 

저렇게 설정하고 다시 컴파일 한 후 릴리즈 모드로 디버깅을 하거나 덤프 파일을 읽으면 일반 디버깅과 똑같이 파일 정보를 읽을 수 있다.


출처 : http://nsjokt.springnote.com/pages/3539747

반응형
Posted by blueasa
, |

 작성자 : 정동헌

 작성일 : 02.03.21


 주요 내용

 1. 디버깅 옵션의 의미.

 2. 디버깅 런타임 라이브러리 사용시의 특징.

 3. 릴리즈 모드에서 디버깅하기.

 4. Watch 윈도우에서 "Register", "Pseudo-register"값 확인하기.

 5. Watch 윈도우에서 변수값을 변수 타입을 구체적으로 정하여 값 확인하기.


Compiler options for finding Bugs

Compiler Options

의미

/W4

Warning Level을 최대로 하여 컴파일

( 모든 빌드 타입에 가능 )

/D "_DEBUG"

Assetion, Trace 같은 디버깅용 코드가 컴파일시 포함되록 만든다.

 ( 디버그 빌드에서만 )

/GZ

생성시에 초기화 되지 않는 변수를 특정 값으로 채워 놓아서 흔히 디버그에서는 나타나지 않고 릴리즈 빌드에서 나타나는 에러를 사전에 검사할 수 있게 하여 디버그에 도움이 되게 함. ( 디버그 빌드에서만 )

/Od

최적화하지 않는다. 코드를 디버그에 적합하게 만든다.

( 디버그 빌드에서만 )

/GF

실행 파일에 들어갈 스트링이 중복될 경우 이를 제거, 공동으로 사용되는 이 스트링이 할당된 메모리를 읽기 전용으로 설정하여 우발적인 메모리 쓰임으로 부터 보호함.

 char *s = "This is a character buffer";

 char *t = "This is a character buffer";

 위와 같은 경우 같은 스트링이므로 스트링을 서로 공유 함.

( 릴리즈 모드에서 명시적으로 사용시 )

/Gf

실행파일에 들어갈 스트링을 공유하는 것은 위와 같으나 우발적인 메모리 쓰임으로 부터 보호 하지 않음.

/ZI

디버깅 심벌용 프로그램 데이터베이스를 만듬.

디버그로 실행시에 코드를 편집후 연속해서 디버깅이 가능하게 정보를 관리.

( 디버그 빌드에서만 )

/Zi

디버깅 심벌용 프로그램 데이터베이스를 만듬.

( 릴리즈 빌드에서만 )

Compiler options for a debug build

Linker Options

의미

/MDd, /MLd, /MTd

디버그 실시간 라이브러리 사용.

/Od

최적화하지 않는다.

/D "_DEBUG"

디버그용 코드가 컴파일 되게 한다.

/ZI

편집, 연속 디버깅이 가능하게 디버그용 데이터배이스를 만듬.

/GZ

디버그 빌드에서의 흔한 실수로 릴리즈에서 나타나는 에러를 디버그모드에서 검출.

/Gm

빌드 시간을 재빌드시에 감축시키기.

Compiler options for a release build

Linker Options

의미

/MD, /ML, /MT

릴리즈 실시간 라이브러리 사용.

/O1 or /O2

속도 최적화나 사이즈 작게 최적화 같은 것을 가능하게.

/D "NDEBUG"

디버그용 코드가 컴파일되지 않게 함.

/GF

중복된 문자열을 방지, 읽기 전용으로 데이터를 보호함.

디버그 런타임 라이브러리 사용.


 - 디버그 런타임 라이브러리는 메모리 할당을 추적하고 메모리 누수를 점검한다.

 - 새로이 메모리 할당되어 초기화 되지 않은 데이터에 "0XCD"의 바이트 패턴으로 써놓는다.

 - 메모리 할당이 해제될 경우에 “0XDD"의 바이트 패턴으로 표시를 하여 해제된 메모리라고 알 수 있도록 표시한다.

 - 할당된 메모리 버퍼의 양쪽 끝 부분에 DWORD 사이즈로 “0XFD"의 바이트 패턴으로 표시를 해둬서 memory overwrite나 memory underwrite를 체크할 수 있게 한다. ( 즉 디버그 모드에서는 메모리 할당시에 양쪽에 각각 DWORD의 공간이 마킹하기 위해서 추가적으로 할당이 된다. )

 - 메모리 할당시 소스코드 상에서의 위치를 알아 내는데 도움이 되도록 소스코드의 파일 이름과 해당줄을 추적을 위해서 넣어 놓는다.


디버그 빌드에서 릴리즈 빌드 에러를 검출하기.

 “/GZ" 컴파일러 옵션을 삽입시,

 1. 초기화되지 않은 포인터에 대한 접근 위반을 검출하기 위해 "0XCC“ 패턴으로 자동적으로 변수를 초기화 함.

 2. 비주얼 C++은 디버그 모드에서는 모든 변수를 자동적으로 0로 초기화하고 릴리즈 모드에서는 그렇지 않는다. 이것은 컴파일러가 하는 일중에 가장 허접한 것이다. 이것으로 릴리즈 모드에서 예상하지 못한 에러를 만날 수 있다. 그러나 “/GZ"라는 컴파일 옵션을 주면 모든 변수를 ”0XCC"로 초기화 함으로써 이를 방지할 수 있다.



 릴리즈 모드에서 디버깅하기


 1. “Project/Settings/"을 선택하여 프로젝트 세팅 다이알로그를 띠운다.


 2. ”C/C++“ 탭에서 ”General" 카테고리를 선택해서 "Optimizations"을 “Disable(Debug)"로 선택하고 “Debug info" 항목을 ”Program Database“로 바꾼다.

3. "Link" 탭에서 “Debug" 카테고리를 선택하면 ”Debug info" 항목이 있는데 여기서 "Microsoft format"을 선택한다.

4. “Link" 탭에있는 ”Project Options" 박스에 들어 있는 내용의 맨 끝에 "/OPT:REF"를 추가 한다.

5, 반드시 “Rebuild All"로 제 컴파일을 한다.


Note : Vs 7.0 (.Net )에서의 설정 방법.. (한글판 기준)

 1. C/C++에서 일반 항목중에서, 디버깅 정보 형식을 “사용안함"에서 “편집하며 계속하기를 위한 프로그램 데이터베이스(/ZI)"로 변경.

 2. C/C++에서 최적화 항목중에서, 최적화를 “속도최대화(/O2)”에서 “사용안함(/Od)"로 변경.

 3. C/C++에서 최적화 항목중에서, 인라인 함수 확장을 “__inline(/Ob1)" 에서              사용 안함으로 변경.

 4. 링커에서 디버그 항목중에서, 디버그 정보 생성을 “아니요”에서 “예(/DEBUG)"로 변경. 


 ** 디버깅 후에는 꼭 설정을 되돌려놔야 한다.


Registers And Pseudo-registers

Register값은 “Registers" 윈도우에서 확인이 가능하지만 단순하고 값만을 알수 있다. 이 값들을 ”Address(Watch)" 박스에서도 확인이 가능하며 여러 부가 기능과 같이 쓸수 있다.

 예를 들어 EAX의 값을 확인 해볼려고 하면 Watch 항목에 “@EAX"혹은 ”@eax"와 같이 대소문자를 구분하지 않고 넣으면 이 래지스터의 값을 확인 할 수 있다.

 또한 Pseudo-register"의 값또한 확인 할수 있는데. "@ERR"의 Pseudo-register 값은 매우 유용하게 사용할 수 있는데 이 값이 GetLastError의 값을 나타내기 때문이다. 만약 “@ERR,hr"이라고 입력한다면 Win32의 에러코드에 해당하는 택스트를 보여 줄것이다.

Pseudo-register

의미

@ERR

GetLastError API로 알 수 있는 가장 최근에 반환된 에러 코드를 보여줌

@CLK

누적시간(MicroSecond)을 보여줌.

@TIB

TIB의 주소를 보여줌.

Registers that Watch and Memory windows support




Pseudo-registers that the Watch window supports

Register

사용(용도)

@EAX

일반 용도, 함수의 return 값으로 사용

@EBX

일반 용도

@ECX

일반 용도, 오브젝트의 this 포인터로 사용.

@EDX

일반 용도, 64비트의 return값의 경우 상위 값의 반환에 사용.

@ESI

메모리 이동과 비교 연산시의 원본 메모리

@EDI

메모리 이동과 비교 연산시에 대상 메모리

@EIP

명령 포인터 ( 코드의 현제 위치 )

@ESP

스텍 포인터 ( 스텍의 현제 위치 )

@EBP

스텍 배이스 포인터 ( 현제 스텍 프레임의 바닥 )

@EFL

비교나 수학 연산을 위한 플래그 비트

@CS

Code segment

@SS

Stack segment

@DS

Data segment

@ES

Extra segment

@FS

Another extra segment, used to point to the TIB

@GS

Yet another extra segment

Watch Window Formatting Symbols

이 윈도우는 변수의 값을 볼수 있게 해주는데, 값을 십진수나 16진수로서 확인할 수 있다. 16진수는 팝업 메뉴에서 “Hexadecimal Display"를 선택하면 볼수 있다. 이 이외에도 여러 가지 옵션을 주어서 사용할 수 있는데 이들은 Watch Window에 등록되는 변수명 뒤에 ","를 삽입하고 그뒤에 옵션을 주어 사용할 수 있다.


Symbol

Format

Example

Output

d, i

부호있는 10진 정수

-42,d

-42

u

부호없는 10진 정수

42,u

42

o

부호없는 8진 정수

42,o

052

x

16진 정수

42,x

0x0000002a

X

16진 정수

42,X

0x0000002A

h

Short prefix for d,i,u,o,x

42,hx

0x002a

f

실수

1.5,f

1.500000

e

부호 있는 과학용 표기

1.5,e

1.500000e+000

g

Compact float

1.5,g

1.5

c

문자

42,c

'*'

s

ANSI 문자열

"bugs",s

"bugs"

su

UNICODE 문자열

"bugs",su

"bugs"

st

기본 문자열형 ( s, su중에서 )

"bugs",st

"bugs"

hr

HRESULT, Win32 error code

0x06,hr

The handle is invaid

wm

Wndows message number

0x01,wm

WM_CREATE

[digits]

배열

s,5

배열 5개의 항목 표시



반응형
Posted by blueasa
, |

키보드, 마우스 하나로 컴퓨터 2대이상 제어를 하는것을 KVM이라고 하는데

이것은 장치(하드웨어)로도 있고 소프트웨어로도 있다.

지금까지 KVM 소프트웨어로는 synergy라는 것을 썼었는데 얼마전 노트북을 사면서

비스타에서 제대로 작동을 않하길래 새로운것을 찾아보았다.

 

몇가지 설치해보고 쓴결과 편하게 쓸만한것으로

INPUT DIRECTOR 이라는 프로그램 당첨!

 

자 그럼! 이걸 직설적으로 어디서 쓰느냐?

 

보는것처럼 위 이미지에서 좌측에 나의 노트북이 있는데 이걸 데스크탑 키보드, 마우스로 마치 모니터가 한개 더 생긴것처럼 이용하고

싶다고 생각했을때 사용하는게 이 프로그램이란 말씀!

 

자 이제 실습을~

1. 준비물

    컴퓨터 2대, 모니터 2개이상, 키보드 마우스 셋트 1개이상

2. 프로그램 다운

   http://www.inputdirector.com/

  

   사이트 상단에 "Download"를 클릭하시면 현재 몇가지 버젼을 다운받을 수 있다고 나오는데 입맛대로 받아라!

   나는 Input Director V1.1. 을 다운받았음.

   압축파일이니깐 압푹 푸시고 설치 하시면 됩니다.

3. 마스터 & 슬레이브 컴퓨터 IP 알기

   마스터 컴퓨터란 키보드 마우스가 달려있는 주인(?) 컴퓨터다! 이넘은 자기 밑에 속한 노예들을 착실히 관리할 놈이다.

   이제 각자의 방법으로 마스터와 슬레이브 컴퓨터의 IP를 알아내야 한다.

   나같은 경우 각 컴퓨터에서

   " 시작 > 실행 > CMD (엔터) > ipconfig (엔터) " 해서 나오는 정보로 확인한다.

  ㅇ 마스터 IP : 192.168.10.102

  ㅇ 슬레이브 IP : 192.168.1014

4. 마스터 컴퓨터 설정

    

  바탕화면에 위와같은 넘을 클릭한다음 아래 그림처럼 따라해보아라.

  

 위처람 했으면 마스터 컴퓨터 설정 완료!

  

5. 슬레이브 컴퓨터 설정

6. 자 이제 설정을 했으면 윈도우 시스템 트레이(시작아이콘 가장 우측)화면에서처럼 마우스 우측을 클릭한후

   마스터컴 퓨터는 Enable as Master

   슬레이브 컴퓨터는 Enable as Slave

   르 클릭만 하면 된다.

자! 이렇게 되었으면 마우스를 좌우 모니터로 왔다 갔다 해보시길~

움직일꺼라는!!


출처 : http://blog.naver.com/laci/30044811915

반응형
Posted by blueasa
, |

중요한 작업하고 있는데 아래와 같이 팝업창 뜨며 계속 다시 시작하라고 합니다.

전 나중에 다시 시작하고 싶은데 말입니다. ㅡㅡ;;


 
몇 번을 '나중에 다시 시작' 누르지만

어느 순간 잘 못 눌러 '지금 다시 시작'을 누르고 있습니다. ㅡㅡ;;


저장 안 된 작업중인 문서를 보며 수습해 보지만 늦었습니다.

망호니ㅏ러ㅠㅎ핯ㅍ챠ㅐ퍼ㅐㅁ니러ㅣㅏ


오늘 처음 알았습니다. 팝업창 끄는 방법이 있다는 것을... ㅡㅡ;;

이 쉬운 것을 모르고 몇년을 불편하게 살았는지... ㅠㅠ


방법은 간단합니다.

==============================================

'윈도우키 + R'을 누른 후 'net stop wuauserv' 타이핑 합니다.  끝.  ㅇㅇ

==============================================


단점은 재부팅 후 변경된 설정이 리셋 된다는 것 입니다.

즉, '다시 시작' 팝업창 뜰때 마다 위 작업을 해줘야 합니다.


뭐 이렇게 명령이 긴지... 까먹으면 다음에 또 고생합니다.

그래서 전 오늘 외우기로 했습니다.  제 맘대로 풀어서 외웁니다.


net stop wuauserv(Windows Update Ask pop-Up SERVice)


자주 필요성 느끼신 분은 꼭!! 외우시길~^^;;

 

추가내용
==============================================
똥똥파리파리 님이 좋은 아이디어 주셨습니다.^^

외우기 번거로운 분들은

메모창 열어서 'net stop wuauserv' 타이핑 후 확장자를 bat로 변경하여 저장합니다.

그리고 바탕화면에 두시고 필요할 때 마나 실행하시면 되겠습니다.^^


출처 : http://doriclan.blog.me/90094516278

반응형
Posted by blueasa
, |

프로그램밍한 후 컴파일해보면 잘되는것이 옛날 VS6 이나 VS7 처럼 사용한 DLL 를 같이 포함해서 다른 컴퓨터로 가져와 실행하면 안되는 경우가 있다.

바로 Side by side assembly라는 것때문이라는거 때문인데.. 윈도우 디렉토리 밑에 WinSxS(Windows Side by Side) 폴더에 추가되면서 복잡하게 연결되었다는것이다.

 

해결하는 방법은 몇가지 있는데

1. 배포하려는 컴퓨터에 재배포 패치를 설치해주는거(작업했던컴퓨터가 아니다.)

Microsoft Visual C++ 2005 재배포 가능 패키지(x86)
Microsoft Visual C++ 2005 SP1 재배포 가능 패키지(x86)
Microsoft Visual C++ 2008 재배포 가능 패키지(x86)

 

 

2. 컴파일하면 나오는 .manifest 파일 안에 DLL 버젼을 파악후

C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT 에서 복사해서 같이 배포하는방법 참고로 그안에있는 .manifest 도 같이 포함해야한다.

ex)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.DebugMFC" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

처럼 보면  Microsoft.VC80.DebugCRT 과  Microsoft.VC80.DebugMFC 사용되었기때문에

C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT 폴더에 있는 파일과 C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC 파일을 복사해주면된다. 만약 디버그 버젼을 배포한다면 redist 폴더 안에 Debug_NonRedist 폴더 에 있는 걸 복사해주면된다.

 

3. 인스톨쉴드(Install Shield),나 설치 프로젝트를 이용한다.

4. 최신 버젼 .net Framework를 설치한다.

5. MFC 라면  정적 라이브러리에서 MFC 사용으로 컴파일해서 DLL를 실행파일에 포함시킨다.

 

참고1.:  http://msdn.microsoft.com/ko-kr/library/ms235285(VS.80).aspx

           http://gs4096.blogspot.com/2008/06/vs2005.html

           http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary

참고2.: http://microdev.pe.kr/69

 참고2 - 내용-

 Side by Side Assembly는 dll hell을 해소하기 위해 VS2005부터 지원하기 시작한 개념으로,
한 PC에서도 서로 다른 버전의 dll을 사용하는 어플을 동시에 실행시킬 수 있게 한다.
예를 들어, 버전 1.0.1인 dll A를 사용하는 어플과 1.0.2인 dll A를 사용하는 어플이 있을 때,
dll A를 버전별로 별도로 관리해서 각 어플이 해당 dll을 올바로 런타임에 링크하게 한다.
이 방식은 어떻게 보면 linux에서 so파일을 쓰지만 사실상 버전별로 다른 so파일을 쓰는 것과 유사한 점이 있다.

VS2005부터는 빌드시에 항상 manifest파일이 생성되며 이는 별도 파일로 생성하거나 dll 내부에 포함시키고 있다.
각 manifest파일에는 자신이 빌드시에 사용한 하위 dll들의 버전 정보등이 포함된다.
실행시에는 dll loader가 manifest파일을 보고 어떤 버전의 dll을 쓸지 결정해서 loading한다.


Visual studio에서 제공하는 CRT등의 dll은
    %WINDIR%\WinSxS\x86_Microsoft.VC90.CRT_<version>
과 같은
형태의 디렉토리에 각각 저장되며
    %WINDIR%\WinSxS\Manifests\x86_microsoft.vc90.crt_<version>.manifest
에 인스톨 정보가 남게 된다. 그리고
    %WINDIR%\WinSxS\Policies\x86_policy.9.0.Microsoft.VC90.CRT_<version>.policy
위와 같은 policy 파일을 통해 redirection도 가능하다.

보통의 경우에 VS2005를 설치하지 않은 PC에서 실행하기 위해서는 redistributable package라는 것을 다운받아 설치하면 CRT등의 dll이 해당 디렉토리에 설치되게 된다. 하지만, debug모드용 dll들은 이런 package에 포함되지 않은 듯 하다. 그래서 수동으로 필요한 파일들을 커파해야 하며, dll과 manifest외에 위의 policy와 인스톨 정보도 함께 카피해야 정상적으로 로딩에 성공한다.
그외에 trouble shooting 자료도 참조할것.

 

원문)http://raballe.tistory.com/entry/Side-by-Side-Assembly

반응형
Posted by blueasa
, |
반응형
Posted by blueasa
, |