生의 記錄2012.08.29 12:22


2주전에 했던 삽질인데.. 쓰다가 까먹어서(-_-) 이제서야 올린다.


1. 팀 내에 의사소통도구로 IRC 서버를 셋팅해서 팀원들에게 쓰라고 강제(?).

2. 그럭저럭 유용하게 쓰는데, 새벽 로그를 보면 IRC 클라이언트가 정확하게 30분 간격으로 접속 종료 & 재접속 되고 있음.

3. 신기한 것은 로그 기록용으로 서버에 켜놓은 클라이언트는 접속 종료되지 않음.

4. 서버 데몬을 바꾸고 클라이언트도 바꿔봤는데 동일한 문제는 계속됨. ㅠㅠ 

5. 인트라넷에서 체크하나 싶어서 시스템팀에 문의했더니 그런 거 없다고 함. 

6. 서버 머신과 클라이언트 머신이 1 HOP 내에 있고, 스위치도 L2 스위치라 패킷 까보는 건 아예 안됨.

7. IRC 서버가 워낙 가벼운 거라 시스템 로그도 없어서(...) 윈도우즈 자체의 이벤트 로그를 뒤져봄.

8. 시스템쪽 로그를 보니, 30분 간격으로 절전모드에서 깨어나는 로그가 남은 것을 발견. 엥?!

9. 설정을 확인해보니, 30분동안 입력이 없을 경우 절전 모드에 들어가도록 설정이 되어 있었음.(서버 OS가 윈도우7)

10. 조금 검색해보니, 절전 모드에서 깨어나는 입력을 확인할 수 있다고 함.(cmd -> powercfg -devicequery wake_armed)

11. 실행해보니...

있네??

12. 그래서 절전 모드를 해지했음.

13. 그러고 하루를 지나보니, 이제 안튕김.

14. 문제 해결!


지금 생각하면 참 어이 없는 이슈이고, 서버 OS를 Windows Server 2008 등으로 설치했다면 발생하지 않았을 문제인 것 같다.

그래도 약 2주 정도 삽질한 게(우선 순위가 낮아서) 아까워서 올려봄...


Creative Commons License
Creative Commons License
Posted by 飛烏
Attach2012.04.06 17:56


게임 회사를 다니다보니 테스트 클라이언트 등 은근히 큰 용량의 파일들을 공유할 일이 종종 생긴다.

지금까지는 가장 단순한 형태인 윈도우즈 공유 폴더를 이용해서 파일을 배포하였는데, 단점이 여럿 보이더라.

그 중 제일 큰 것은 속도. 알다시피 윈도우즈 공유 폴더를 이용한 복사가 빠른 편이 아니다. 

거기에 여러명이 동시에 파일 복사를 시도하면 그야말로 헬.  그래서 뭔가 좋은 방법이 없을까 하다가,

미드나 기타 등등을 받을 때 자주 쓰는 토렌트를 이용해볼까 해서 테스트를 해보았다.

토렌트를 회사에서 사용할 때 주의할 점이.. 다른 외부에서 접근이 안되어야 한다는 것. 

테스트 클라이언트는 어찌보면 회사 기밀스러운 데이터들이기 때문에 회사 내부에서만 돌 수 있게 설정하는 것이 매우 중요하다.


각설하고 Private Torrent Tracker 를 설정하고 운영하는 법에 대해서 알아보자.

구글에서 검색하면 수많은 문서가 나오긴 하지만, 한글로 된 문서가 별로 없어서 이 기회에 정리해 보려는 것이니, 너무 태클걸지 마시길. ㅠㅠ



1. uTorrent 설치( http://www.utorrent.com/intl/ko/ )

서버(Tracker)로 쓸 머신에 uTorrent 를 설치한다.

여러 Torrent Client 를 써보진 않았지만, 다른 걸 써봐야 한다는 생각이 안들 정도로 잘 만들어진 클라이언트. 한글 지원도 제대로!

설치할 때 아래 체크를 꼭 해주는 것이 편하니 주의.



2. Port 확인

Tracker 이므로 다른 Client 들이 접속할 Listening Port 가 필요하다. 

uTorrent 의 경우 디폴트 Port 를 무작위로 설정하는데, 회사에서 쓰려면 고정이 좋으니 적당히 외우기 쉬운걸로 설정.

(옵션 - 설정 선택)



3. Torrent 파일 만들기

얼추 서버 셋팅은 끝났다(?) 이제 배포용 Torrent 파일을 만들어보자.(파일 - 새 토렌트 만들기)


배포하고 싶은 파일/폴더를 선택한다. 그리고 중요한 것이 트래커 주소.

서버의 IP와 아까 확인해 둔 Port 를 가지고 주소를 만드는데, 회사 내부에서만 사용할 것이니까 회사 내부에서만 사용하는 사설망 IP로 설정하면 ok.

(...대부분의 회사는 사설망 IP를 이용한 내부 네트워크를 만든다고 가정하였는데, 아니라면 방화벽 등을 적절하게 이용하자;)

그리고 뒤에 /announce 라고 붙여주면 끝.

기타 체크 항목도 중요하다. 특히 "비공개 토렌트(P)" 항목을 반드시 체크 해제하자. 

체크하지 않아야 망 내에서 다른 Peer 를 알아서 찾고 더 빠르게 받을 수 있다. Private Tracker 라고 아무 생각 없이 체크하면 안됨!

그리고 배포 시작을 체크한 뒤, 생성 및 저장으로 .torrent 파일을 생성한다.



4. Torrent 파일 배포

다양한 방법(이메일 or 메신저 등등)으로 배포하면 끝.

물론 파일 다 받았다고 uTorrent 를 끄지 말고 계속 켜놓는 것이 중요하다.



토렌트를 이용하니 확실히 배포가 빠르다. 배포 속도가 빨라서 압축하고 풀고 하는 게 더 오래 걸린다;;

그래서 압축을 하지 않고 배포해봤더니(파일수가 몇천개정도) 엄청 느려지더라.

다만 아쉬운 건 파일 수가 많아지면 느려진다는 것. 이걸 어떻게 해결할 수 있는 방법이 없을까..?



Creative Commons License
Creative Commons License
Posted by 飛烏
五感의 方向2011.10.23 23:17
나는 세계 일주로 경제를 배웠다 - 10점
코너 우드먼 지음, 홍선영 옮김/갤리온


  애인님 기다리면서 교보문고에서 <나는 세계 일주로 경제를 배웠다> 일독. 빠르게 읽어 나가느라 곱씹으면서 보진 못했지만, 다 읽고 난 직후 처음 든 생각은 '저 사람이니까 할 수 있는 일이구나.' 였다. 기본적으로 "일 100만원 이상 벌었던 능력있는 애널리스트"이자 영어가 완벽한 "아일랜드"인이고, 무엇보다 필요할 때 척척 정보를 제공해주는 수많은 "친구들"이 있었다. 거기에 웬만한 계약서들은 다 처리할 수 있는 "지식인"이기도 하다.

  물론 이런 "기반"은 저절로 주어지는 것은 아니다. 설사 있더라도 무조건 그처럼 할 수 있는 건 아니다. 왕성한 행동력이나 협상력, 원하는 바를 실행하고야 마는 의지가 있어야지만 가능한 일이다. 다만 이런 "기반"들이 당연하게 주어진 것처럼 내용을 풀어나가고 있는 점이 조금 거슬렸던 것 같다.

  책은 거의 완벽한 기승전결 구조를 가지고 완급조절도 좋아 한 편의 잘짜여진 소설처럼 술술 읽힌다. 거기에 시장 논리와 경제 개념들을 체험을 통해 직설적으로 풀어 나가는 것이 이해도 쉽다. 청소년 or 대학 초년생들의 교육도서로도 좋을 듯 하다. 다만 너무 잘 짜여진 "기행문"이라, 읽는 내내 머리 속에 물음표가 계속 뜨는 건 나뿐만은 아닌 듯 하다.



Creative Commons License
Creative Commons License
Posted by 飛烏
분류없음2011.08.01 18:08

http://msdn.microsoft.com/en-us/library/ms686016(VS.85).aspx

아무런 Handler를 등록하지 않으면, default handler 가 호출되고, 이 넘은 ExitProcess()를 호출함.

ExitProcess() :  http://msdn.microsoft.com/en-us/library/ms682658(v=VS.85).aspx

ExitProcess()가 호출되면 thread 들 죽이고, DLL들 detach 되고 현재 프로세스를 죽인다. 

이때 static 객체나 stack 객체의 소멸자 등을 호출해주지 않고 그냥 죽여버린다.

왜냐면, 소멸자는 CRT에서 호출해주는데, CRT가 Windows API로 구현되어 있다.

ExitProcess() 같은 Windows API 로 프로세스를 종료해버리면 소멸자가 뭔가요? 하면서 쌩까버리기 때문;;

실제로 소멸자에 breakpoint를 잡아서 call stack을 보면 exit() -> doexit()에서 asm 으로 소멸자를 호출해준다.



 
Creative Commons License
Creative Commons License
Posted by 飛烏
Attach2011.07.16 19:21

32bit OS에서 유저 프로세스가 사용할 수 있는 메모리 영역은 4GB이다.
하지만 AWE(Address Windowing Extension)을 이용하면 4GB보다 더 많이 쓸 수 있다.

AWE의 원리는, 기본적으로 Virtual address 가 가르키는 물리 메모리 영역은 1byte 인데.
Address Translation mode 를 바꿈으로써 1byte 이상을 가르키게 할 수 있는 방법이다.

AllocateUserPhysicalPages()를 이용하여 AWE로 사용할 물리 메모리 영역을 할당해놓고,
VirtualAlloc()의 MEM_PHYSICAL 로 VA Range(ex: 0x40000 ~ 
0x50000) 에 AWE 물리 메모리 영역을 가르키게 해놓는다.
그러면 기본적으로는 0x40000 ~ 0x50000 이 가르키는 영역은 기본 Virtual Address 영역이지만,
MapUserPhysicalPages() 를 호출하면 VA Range 가 가르키는 영역이 AWE 물리 메모리 영역으로 바뀐다.
즉, MapuserPhysicalPages()를 호출하면 Virtual Address Translation 로직이 다르게 바뀌는 것이다.
원래대로 되돌리려면  
 MapuserPhysicalPages() 에 인자를 NULL을 넣어서 호출한다.

이렇게 하면 물리적으로 4GB 이상의 메모리를 쓸 수 있지만, 
포인터를 이용해서 접근하려면 내가 지금 AWE 용 Address Translation 모드인지 아닌지를 항상 기억해야 한다 -_-
그래서 잘 안쓰는 듯..?
(혹시 잘 쓰시는 분 있으시면 리플 좀 부탁 드립니다 ㅠㅠ)

설명 : http://msdn.microsoft.com/en-us/library/aa366527(v=vs.85).aspx
예제 : http://msdn.microsoft.com/en-us/library/aa366531(v=vs.85).aspx

 

Creative Commons License
Creative Commons License
Posted by 飛烏