티스토리 툴바

  블로그   태그   위치로그   이웃로그   방명록
          
 
 
 
 
     
 
  시너지! 우왕ㅋ굳~  +   [Useful Information]   |  2008/01/14 15:30
제공: 한빛미디어 네트워크 기사

저자: 한동훈

시너지(Synergy)는 KVM(Keyboard, Video, Mouse) 스위치 대신 네트워크를 사용해서 키보드와 마우스를 공유하는 프로그램이다. 나처럼 노트북에서 윈도우를 사용하고, 데스크톱에서 리눅스를 사용하는 경우, 책상 위에 리눅스를 쓰기 위해 키보드와 마우스를 놓게 되면, 책상도 좁게 느껴진다. 이럴 때, 시너지를 사용하면, 노트북의 키보드와 마우스로 리눅스를 자유롭게 쓸 수 있다. KVM에 비해 시너지의 장점은 전환하는데 시간이 걸리지 않는다는 점이다. KVM을 쓰면 스위치를 누르고, 모니터가 깜박이고, 전환하는 시간을 기다려야 하지만, 시너지에서는 마우스를 이동하는 것 만으로 리눅스를 바로 사용할 수 있다. 즉, 하나의 키보드와 마우스로 여러 대의 시스템을 제어할 수 있다. 다른 사람은 두 대의 데스크톱에 각각 윈도우와 리눅스를 설치했고, 윈도우가 설치된 노트북, 총 3대를 하나의 키보드와 마우스로 사용하고 있다.

모니터가 하나 뿐인 사람들은 화면도 전환해주는 KVM 스위치를 사용해야 하지만, 노트북 + 모니터처럼 여분의 모니터가 있다면 시너지를 사용하는 것이 좋다. 게다가, 이 기종간에도 간단한 텍스트는 공유가 된다. 즉, 클립보드 공유 기능을 사용해서 간단한 텍스트, URL 주소 등을 이 기종간에도 붙여넣기 할 수 있다.
시너지는 윈도우, 리눅스, 맥OS를 모두 지원하기 때문에 선택의 폭이 넓다.

먼저, 시너지를 설치해보자. Synergy를 http://synergy2.sourceforge.net/에서 다운받는다. 시너지는 클라이언트와 서버 프로그램의 구분이 없다. 즉, 프로그램 하나가 클라이언트와 서버 역할을 모두 수행할 수 있다.

여기서는 노트북을 서버로, 리눅스가 설치된 데스크톱을 클라이언트로 설정하는 방법을 보이겠지만, 여러분이 원하는 대로 설정할 수 있다.

1. 윈도우에서 서버 설정

윈도우 버전을 다운 받아서 설치하고, 시너지를 실행하면 다음과 같다.

그림1
그림1. Synergy 화면

서버로 사용할 것이기 때문에 "Share this computer's keyboard and mouse(server)" 항목을 선택하고, "Configure" 버튼을 클릭한다. 여기서는, 각 시스템의 모니터 화면에 대한 설정을 한다.

그림2
그림2. 화면(Screen Name) 설정

"+" 버튼을 클릭해서 화면 이름을 추가한다. 노트북에서 윈도우를 쓰기 때문에 이름을 win으로 입력했다. 특별히 설정할 것은 없기 때문에, "win"만 입력하고, "OK" 버튼을 클릭하면 된다.

그림3
그림3. 화면 추가

같은 방법으로, 리눅스가 설치된 데스크톱에 대해서는 리눅스 시스템의 이름인 "caffe"를 부여했다. 요즘, 내가 관리하는 리눅스 시스템들의 이름은 caffe, coffee, cream, sugar 같은 커피 이름이나 thral과 같은 캐릭터 이름이다. ^^;

win과 caffe 이름을 추가한 후의 화면 목록은 다음과 같다.

그림4
그림4. 화면이 추가된 모습

이제는, 아래쪽의 "Links" 항목을 설정할 차례다.
먼저, 내 노트북은 왼쪽에 있고, 리눅스에 연결된 모니터는 오른쪽에 있다. 따라서, 노트북에서 마우스를 화면 오른쪽 끝으로 이동하면 오른쪽에 있는 리눅스 모니터로 마우스 포인터가 이동하게 설정할 것이고, 반대로 리눅스에서 마우스 포인터를 왼쪽 끝으로 이동하면 다시 윈도우로 포인터가 이동하게 설정할 것이다.

그림5
그림5. 화면 설정 모습

화면을 추가하고, "+" 버튼을 클릭해서 목록에 추가한다. 두 가지 설정을 모두 추가한 후의 모습은 다음과 같다.

그림6
그림6. 두 화면의 관계를 설정

사람에 따라서는 좌우로 화면을 넘기는 것이 불편하게 여겨질 수도 있기 때문에 top, bottom을 선택해서 모니터 위로 넘겼을 때, 마우스 포인터를 이동하게 지정할 수도 있다. 설정이 끝났으면 "OK"를 클릭해서 이전 화면으로 이동한다.

여기서는 "Advanced" 버튼을 클릭해서, 시스템의 이름을 설정한다. 시너지는 윈도우 시스템의 NetBIOS 이름을 화면 이름으로 사용하는데, 대부분의 사용자는 NetBIOS 이름이 뭔지도 모르는 경우가 많기 때문에 화면 이름을 "win"으로 설정했었다. 여기서, 시스템의 이름을 설정한다.

그림7
그림7. 고급 설정

그림8
그림8. 화면 이름 설정

[그림8]에서 화면 이름을 "win"으로 입력하면 된다. 포트는 24800이 기본값이며, 특별한 경우가 아니면 변경하지 않는 것이 좋다. 모두 끝났으면, 다시 "OK" 버튼을 클릭해서 이전화면으로 돌아간다.

그림9
그림9. 자동 시작 설정

그림9에서 "AutoStart" 버튼을 클릭하면, 시너지의 시작을 설정할 수 있다. 그림10에서처럼, 왼쪽은 사용자가 시스템에 로그인했을 때, 자동시작하게 할 수 있으며, 오른쪽은 시스템이 부팅만 하면 시작하게 설정할 수 있다. 이 사항은 원하는 대로 선택하면 된다.

그림10
그림10. 시너지의 자동시작 설정

자동시작도 선택했으면 "Close" 버튼을 클릭해서 이전 화면으로 돌아온다.

그림11
그림11. 시너지 화면

[그림11]에서 "Test"나 "Start" 버튼을 누르면 시너지를 서버로 실행하게 되며, "Start"를 선택해서 서버로 시작한다. 서버로 실행중이면, 트레이 아이콘에 시너지 아이콘이 생기며, 클라이언트와 연결되면 아이콘에 번개 모양이 생긴다.

다음은 시너지를 클라이언트에서 설정해보자.

2. 리눅스에서 시너지 클라이언트 설치하기

시너지를 설치하는 법은 쉽다. 먼저, 레드햇 사용자라면 RPM 패키지를 받아서 설치하면 되며, 나처럼 데비안을 사용하고 있다면 [apt-get install synergy]를 실행하면 된다.

설치가 끝났으면, /etc/hosts 파일을 편집하면 된다. 여기서는 caffe, win의 실제 IP를 설ㅊ정했다.

192.168.0.22 caffe
192.168.0.24  win

hosts 파일의 설정에서 주의할 점이 있는데, 같은 IP에 여러 개의 이름을 할당하면 시너지는 첫번째만 인식한다는 점이다. 즉, 다음과 같은 설정이 있다고 해보자.

192.168.0.22 coffee
192.168.0.22 caffe
192.168.0.24  win

이 경우엔, 192.168.0.22를 사용하는 시스템을 coffee로만 인식하고, caffe등은 무시되기 때문에 시너지로 연결되지 않는다. 이것으로 시너지의 클라이언트 설정은 끝이다. 이제, [synergyc win]으로 실행하면 된다. synergyc는 시너지 클라이언트이며, 서버의 이름을 인자로 전달하면 된다.

서버가 실행중일 때, 클라이언트를 실행했기 때문에 바로 연결될 것이다. 시너지 클라이언트는 서버와 연결할 수 없을 때, 1, 3, 5, 15, 30초와 같이 간격을 늘려가면서 서버와의 연결을 시도하기 때문에 서버를 실행하고, 느긋하게(?) 기다리면 클라이언트와 연결된 시너지를 볼 수 있다.

3. 리눅스에서 시너지를 서버로 사용하기

리눅스에서 시너지를 서버로 사용하는 것은 권하지 않지만 - 편한게 좋다 -, 리눅스에서 시너지를 서버로 사용하고 싶다면 /etc/hosts 파일을 편집한 다음에 /etc/synergy.conf 파일을 편집하면 된다. 편집은 윈도우 버전에서 마우스 클릭으로 했던 것을 텍스트로 한다고 보면 된다. 윈도우의 설정과 같은 내용을 하면 다음과 같다.

section: screens
  caffe:
  win:
end

section: links
    caffe:
    left = win

  win:
    right = caffe
end

screens 섹션에는 화면 이름을 추가해주고, links 섹션에는 caffe의 왼쪽을 윈도우로, win의 오른쪽을 caffe로 설정했다.
서버를 실행하기 위해서는 [synergys]만 실행하면 된다.

만약, 리눅스 시스템을 여러 사람이 공용으로 쓰는 환경이라면 /etc/synergy.conf 대신에 /root/.synergy.conf와 같이 사용자 홈 디렉터리에서 설정하면 된다.

4. 알려진 문제점

시너지는 한영, 한자 전환키를 인식하지 않는다. Shift + Space로 한영 전환을 하는 사용자들은 문제되지 않겠지만, 한영 키에 익숙한 사용자에게는 문제가 될 수 있다. 현재까지 시너지는 1.3.1까지이며, 다음 주소에서 1.3.1 버전에 대한 한영, 한자 키 패치를 제공한다.

Synergy 1.3.1 한글, 한자 패치 : http://mabook.com/blog/14

다른 문제점은 윈도우를 서버로 쓰고 있는 환경에서 은행 사이트 등을 이용할 때, nProtect 같은 키보드 해킹 방지 프로그램 때문에 키보드와 마우스가 멈춰버려서 시스템이 멈춰버린 것처럼 보이는 현상이다.

HKEY_CURRENT_USERSoftwarenProtectProcess의 항목들을 참고해서 Synergy 실행 파일에 대해 값을 1로 설정해주는 방법과 서버를 실행하고, 은행 사이트를 방문해서 nProtect가 실행중일 때, 리눅스에 연결된 키보드로 직접 클라이언트를 실행시키고, 바로 종료시키는 방법이다. - 몇 번의 시행착오 끝에 되는 방법이다.

아직까지, 한 번에 깔끔하게 해결할 수 있는 방법은 모른다. 아는 분이 있으면 알려주기 바란다.

 
TRACKBACK 0    COMMENT 0
  [DirectX]visual studio directX sdk 와 링크 하기  +   [For Study/DirectX]   |  2007/07/02 21:26

visual studio directX sdk 와 링크 하기

한번 올려보자.


dx를 처음 독학했을때의 어려움은.

돌이켜보면 어캐 시작하는지도 알아내기 힘들었다는 것이었다.



특히나 무슨 버젼마다 vc6.0에선 안되고 닷넷에선 되고..

멀 또 수정했다는 둥.     등록 라이브러리파일이 버젼마다 다르다는둥.

summer버젼부터는 vc6.0에서 안 먹힌다는 둥.



그리고 고민에 고민을 하다가 2005october을 깔고...  2005 december를 깔고...



헌데 미치고 팔짝뛰게 시리 visual studio 2005나 vc 6.0에선 진짜 안 먹히는 것이었다.


5번 인스톨 하면... 가끔 될 때가 있었다.

-_-..   어쩌라는건지..




삽질을 하다가 알아낸건데..

너무 쉬우면서도 당연하면서도.....    지극히 뻔한 방법이었다.


이거 삽질한 덕분에 visual studio 툴 옵션을 꽤나 많이 알게 됐다. -_-..

삽질도 삽질 나름대로 좋은 점이 있는 듯.   그 당시 1,2주동안 머리털 빠지게 스트레스

받은거 빼면 말이다..



여튼 이제부터 본론이다.


일단 VC 6.0과 링크하는 법 부터 보겠다.



일단 확실치는 안지만 최근 DX버젼을 쓰는 사람이라면 DX Wizard는 포기하는게 낫다.

dx가 2개월 단위로 업데이트 하는건,  급격한 변화를 겪으면 프로그래머가 따라오기 힘들었기에

서서히 2개월 단위로 변화를 주기로 결정한 것이라고 한다.


DX가 원래 com 기반이 약간 있는건 좀 들어본 분이라면 다 아실것이다.

헌데 이것을 버리고 점점 static한 기반으로 간다고 한다.


때문에 dx wizard는 더 이상 과거의 방법으로 간단한 방법으로 만들어 지지 않게 되었다.

언젠가 지금의 변화가 끝나서 어느정도 정착이 되면 다시 wizard가 나올지도 모르는 일이지만

일단 당분간은 포기하는 것이 낫다.


간단한 dx를 구동시키는 framework정도는 자신만의 것을 만들어서 가지고 있는 것이 낫다.


초보자라면.. 그나마 호출시키는 함수도 많은데.. 자신만의 프레임웍 만들기가 힘들고

참고할 서적도 드물겠지만..


그나마 보기 쉬운것이라면 김용준 씨의 3D 게임 프로그래밍을 추천한다.

각 장 앞에 함수 상관도가 있어서 머리속에 넣기 좋다.


글고 어짜피 wizard가 만들어지는 코드는 최적화 시키기도 어려우니 애당초

자신만의 프레임웍을 노리자.


....

;; 링크시키는 글 쓴다 하고 삼천포로 빠졌군 ㅡㅡ..


일단 2005 December버젼까지 전부 다 VC 6.0에서 된다.    아주 세세한 사항이나 고급사항

까지는 잘 모르겠지만   본인이 일반적인 게임을 만들때 까진 아무 이상이 없었다.

도움말도 VC 6.0이 2005년 msdn을 참조하게 하는 방법도 나와있지 않은가.


일단 3개의 경로명을 적어준다.


VC 6.0  에서 Tool -> Option -> Directories 탭으로 간다.




 
Excutable의 경로명은
C:\Program Files\Microsoft DirectX SDK (December 2005)\Utilities\Bin\x86
 
을 넣어준다.  (Dx 2005 December Defaults 기준)
 
 

 
include 의 경로명은
 
C:\Program Files\Microsoft DirectX SDK (December 2005)\Include
을 넣어준다.
 
 
 
 

 
Library의 경로명은
 
C:\Program Files\Microsoft DirectX SDK (December 2005)\Lib\x86
을 넣어준다.
 
 
 
그리고 기본 라이브러리 파일 추가 사항에
dxerr9.lib d3dx9.lib d3d9.lib d3dxof.lib dxguid.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
을 넣어줘야 하는데
 
좀더 자세한 정보는 http://blog.naver.com/serufi/24830498  를 보시길.
 
VC 6.0의 Project -> Settings -> Linker 탭으로 이동
 

 
선택되어진 곳에 위의 *.lib파일들을 추가시켜 주고 ok하면 된다.
 
 
이제부터 VC 6.0에서도 2005 December dx sdk를 쓸 수 있다.
 
 
 
 
 
 
이번엔 visual studio 2005에 대해서 말해보겠다.
 
VC 6.0과 똑같다.
 
 
Tool -> Option을 간다.
 
그리고 똑같이 3가지 경로명을 추가해 준다.
 
 

 
excutable
C:\Program Files\Microsoft DirectX SDK (December 2005)\Utilities\Bin\x86
 
 
 
 

 
include
C:\Program Files\Microsoft DirectX SDK (December 2005)\Include
 
 
 
 


library

C:\Program Files\Microsoft DirectX SDK (December 2005)\Lib\x86




추가해 주면 된다.


그리고 *.lib의 파일 추가는



 
오른쪽 상단에 Tri 라고 선택되어진 부분을 마우스 오른 클릭하고 Property를 누르면 뜨는 창에서
위와 같이 Linker -> input으로 간 뒤에 위에 VC 6.0에서 설명한 *.lib파일들을 넣어주면 된다.
 
 
 
 
헌데 Visual studio 2005에서는 특별하게 LPCSTR, LPCWSTR 변환에러가 날 때가 있다.
 
다음을 참조하면 된다.
 
내가 여러버젼을 깔아보았는데 일반적인 visual studio 2005에서는 저렇게 유니코드가
디폴트로 잡힌다.
 
그런데 신기하게 Team Edition Sortware Developer 버젼이나 Team suite 버젼에선
multi-byte가 기본으로 잡혀서 따로 신경써줄 필요가 없었다.
 
 
 
 
 
 
이제 마지막이다.
 
구식 파일을 읽어들일때 발생하는 에러 중에서
VC가 표준의 적법한 문법을 정상적으로 처리 못해서 나는 것이 있다.
 
예를 들면 다음 것들이다.
 
Common 디렉토리에서 변수가 재선언 되었다는 에러가 화면에 뜬다.
가령이런 에러일것이다.
 
for(int i = 0; i < 10; i++) ....
for(int i = 0; i < 10; i++) ....
 
 
비쥬얼 C 6에서는 허용되지 않기 때문에 이런식으로 고친다.
int i;
for(i = 0; i < 10; i++) ....
for(i = 0; i < 10; i++) ....
 
 
 
 
visual .net 2002 버젼 이상이라면 신경 쓸 필요가 없다.
 
여기까지라면.. 아마도 dx sdk를 visual studio에서 link 하기 위해 하는 고생이 훨 줄어들
것이라고 생각한다.
 
 
이상하게 책이나 문서를 뒤져봐도 알아낼 방법이 없어서
1,2주 삽질한 본인같은 절차를 거치지 않기 위해
제목도 신경을 써서 올려본다.

 
TRACKBACK 0    COMMENT 1
 
 
<<이전   | 1 | 2 | 3 | 4 | 5 ... | 12 |   다음>>
 

열혈기파랑's Blog is powered by Daum & tistory