生의 記錄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 飛烏
Attach2011.04.28 10:10

자주 가는 모 사이트에서 올라온 글인데, 저랑 주장하는 내용이 비슷하기도 하고 잘 정리된 것 같아서 퍼옵니다.
(저자가 무단전제 대허용이라고 하네요 ㄷㄷ)

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

많은 사람들이 셧다운제의 의도와 의지에 대해서 지지를 보낸다. 
게임중독은 술, 약물과 같이 청소년에게서 일단은 멀어져야 할 존재라고. 
그런데 셧다운제를 반대하는 사람들의 전부가 셧다운제의 의도와 의지를 몰라서 그러는 것이 아니다. 
셧다운제 논란의 본질은, 특정한 정책 목적을 달성하는 데에 적합한 정책 수단이 미비한 상황에서, 과연 의도와 의지만으로 정부가 정책을 강행할 수 있는가에 달려있다.

대테러 전쟁을 생각해보자. 대테러 전쟁은 분명 명분이 있는 전쟁이다. 의도와 의지는 누구나 인정할 만 한 것이다. 하지만 대테러 전쟁에는 다음과 같은 문제들이 수반된다. 첫째, 예산이 너무 많이 들어서 다른 정부 사업에 차질을 빚게하지 않는가? 둘째, 대테러 전쟁을 주관하는 부처가 비정상적으로 팽창된 권한을 갖게되지는 않는가? 셋째, 민간인 오폭 등 원래 목표하지 않았던 대상에 피해가 갈 수 있지 않은가? 이런 문제들로 인해 대테러 전쟁은 엄청난 비난에 시달린다. 만약 미래에 엄청난 고등기술이 발명되어 목표된 테러조직의 수뇌부만 정확하게 제거하거나 신병을 확보할 수 있다면 모르겠으나, 일단 부작용이 너무 많은 것이다.

셧다운제도 마찬가지다. 의도와 의지가 중요한 것이 아니다. 게임중독을 근절시키기 위한 정책적 수단이 너무 허술한데, 그것을 억지로 끼워맞춰넣으려고 하니까 문제가 되는 것이다.

셧다운제의 가장 큰 첫번째 문제점은 '무엇을 게임으로 볼 것인가?'에 있다. 흔히들 게임타령하지만 실제로 게임이 무엇인가에 대해서 학계에서 명확한 합의가 이루어진 적은 없다. 이는 미국에서 스마트폰으로 앱을 통해 지상파 영상을 송출하는 것을 둘러싸고 미디어 업계간에 논쟁이 벌어진 것과 마찬가지다. 스마트폰으로 송출된 지상파 영상은 단순히 TV가 작아진 것인가? 아니면 앱으로 프로그램 시청권을 판매한 것인가? (http://biz.heraldm.com/common/Detail.jsp?newsMLId=20101124000614)게임도 마찬가지다. 애초에 이건 누가 어떤 목적으로 정의하냐에 따라서 게임의 폭이 갈릴 수 밖에 없는 것이다. 예를 들어, 교육부에서 학습 성취 동기를 고양하려는 목적으로 사자성어 빈칸 맞추기 프로그램을 개발했다고 가정해보자. 그것은 게임인가? 어떤 회사에서 광고를 위해 하나의 웹페이지에 접속한 모든 사람들이 실시간으로 그 회사 제품들을 형상화한 캐릭터를 가지고 놀 수 있다고 치자.(http://blog.naver.com/asf978?Redirect=Log&logNo=80123113992) 이것은 게임인가? 
일단 뭐라고 게임을 정의해야할지부터 곤란하다. 이는 각 기업체의 흥망을 가르는 것이기 때문에 극도로 민감한 사안이다. 지금도 정부부처에서 동반성장을 장려한답시고 중소기업들만 진출할 수 있는 사업분야를 선정하는 과정에서 엄청난 혼선이 빚어지고 있는데, 도대체 게임은 무슨수로 구분할 것인가?

그래서 결론이 '온라인게임' 셧다운제가 된 것이다. 왜냐하면 정부는 '자신이 규제할 수 있는 것이 전체라고 간주하고 싶기 때문'이다. 스마트폰이 등장하기 이전에 모든 휴대폰에 강제로 깔렸던 WIPI를 기억하는가? (WIPI라는 단어를 듣고 지긋지긋함을 떠올리지 않은 당신은,우리나라 정부가 IT산업을 장려하기는 커녕 옭죄느라고 정신이 없었다는 사실을 모르는 평범한 시민일 것이다) WIPI는 정부가 무선인터넷 플랫폼을 표준화하려는 거창한 시도에서 이루어졌다. 그래서 모든 휴대폰에 매직엔이니 UTO니 같은 것들이 이름만 바꿔서 똑같이 나왔던 것이다. 하지만 정작 정부가 관할할 수 없는 거대 공룡기업, 그러니까 애플이 스마트폰을 내세워서 들이닥치자 너무나도 깔끔하게 정책 전부를 포기해버렸다. 무선인터넷의 '한국형' 표준규격을 만들어 IT시장을 지배하겠다던 의도와 의지는 어디로 갔는가? 셧다운제도 마찬가지다. 게임의 유해성에 관해 한참 떠들고 났더니 정작 무슨수로 웹페이지에 널려있는 플래시기반 게임들, 모바일 게임들, 인터넷을 연결할 필요가 없는 콘솔게임들, 심지어 쌍방향 광고의 일부로 자리잡은 여러 웹페이지 그 자체를 어떻게 할지 막막해진 것이다. 결국 WIPI 때도 그랬듯이 정부가 쉽게 이래라 저래라 할 수 있는 국내 중대형 기업체들만 집합시켜서 '온라인게임'을 규제할 뿐이다. 정말 병신같은 짓이다. 보나마나 거대공룡기업들이 들이닥쳐서 시장개방을 요구하면 다시 금방 폐지할, 그러니까 그동안 한국 기업들만 족쇄채우는 놀음인 것이다. 

게다가 더 코믹한 부분은 정부도 어떻게 오프라인으로 구동되는 게임들, 그러니까 가장 조악한 패미콤이나 게임보이부터 시작해서 PS3, XB360, PSP 같은 매체들을 어떻게 규제할 지 감이 오지 않는 것이다. 집집마다 들이쳐서 막아야 하나? 정부는 한심하게도 예전 WIPI때와 똑같은 방식을 쓰려고 했다. 앞으로 한국에서 팔리는 모든 콘솔과 모바일 기기는 12시 이후 게임프로그램을 실행 불가능하게 만드는, 프로그램을 설치하라는 것이었다. 그것도 청소년에 한해서! 와우! 물론 게임기업체의 사업상 기밀을 알아내야 하는 일이므로 당연히 그만뒀다. 소니가 자사의 콘솔 OS를 해킹하여 분석한 해커를 대상으로 초거액의 소송협박을 하는판에, 한국 정부가 무슨수로 소니에게 콘솔에다 셧다운 프로그램을 깔라고, 깔고 나면 우리가 그 결과를 감수할테니 OS한번 내놔보라고 할 수 있는가?

압권은 이러한 모든 시스템을 개발하는 데에 드는 비용을 기업체가 부담하라는 데에 있다. 기업이 사회환원 겸 하면 되지 않냐고? 방금 위에서도 언급했듯이, 게임 프로그램의 모든 코드와 소스가 어떻게 구성되어 있는가는 사실상 해당 기업체의 기밀이요, 자산이다. 그것을 침해 (물론 지금도 심의라는 명목하에 버젓이 침해하면서 빤히 들여다보기는 하지만) 하면서 까지 막나갈수는 없으니, 지금과 마찬가지로 정부는 직접적으로 손을 대지 않고, 대신 너희들이 개발한 셧다운 프로그램을 우리가 감수하겠다 - 라는 것이다. 

그러니까 결국 정부도 사실 알고 있는 것이다: 셧다운제는 결코 실현될 수 없다는 것을. 그러니까 이런 골치아픈 일은 적당히 하는 시늉만 내야지, 괜히 세게 나가다가는 기업들 줄소송에 휘말려서 행정소송이나 헌법재판소까지 가면 큰일 난다는 것을. 

셧다운제 찬성론자들은 그래도 억지로 한번 우겨본다. 한국의 게임중독의 핵심은 '온라인 게임'이므로 이것만 잡으면 된다고. 이거라도 잡으면 꽤나 게임중독이 안정될 것이라고. 이 사람들은 풍선효과에 대해서는 전혀 생각하지 않는 것 같다. 풍선의 한쪽을 잡으면 다른쪽이 늘어난다. 온라인 게임시장의 빈 자리를 콘솔 과 모바일 게임 시장이 메울 것이다. 그게 전부다. 정부는 비싼 돈과 시간을 투자해서 온라인 게임 기업의 주가를 떨어뜨리고 콘솔 게임 기업의 주가를 올리는 일을 하고 있는 셈이다. 당장에라도 소송이 나지 않는 것은 아직 우리나라 게임 기업들이 이런 소송을 해본적이 없기 때문이다. 

셧다운제의 가장 큰 두번째 문제점은 '그렇다면 누가 셧다운제를 관할할 것인가?'다. 그래, 위의 논점이 다 좋다고 치자. 그렇다면 이제 셧다운제는 누구의 관할이 되어야 하는가? 셧다운제가 이대로 시행되면 계속해서 셧다운제의 장악 범위안에 포함될 게임과 그렇지 않은 게임을 구분해야 한다. 포함된 게임은 셧다운 프로그램이 제대로 포함되어 있는지 검수를 해야한다. 그렇지 않은 기업에는 통제를 가해야 한다. 이 엄청난 권력의 파이를 누가 차지할 것인가? 

여성가족부는 당연히 자신들의 관할이라고 주장한다. '청소년'의 게임중독을 막는 것이기 때문이다. 아, 그렇다면 '청소년'의 무면허 운전을 막는 것은 국토해양부가 아니라 여성가족부가 해야할 일이다. 

여성가족부는 자신이 무엇을 관할할 수 있는지, 자신들이 이에 적합한 인력을 보유하고 있는지 조차 관심이 없는듯 하다. 셧다운제가 실질적인 관리와 규제의 영역으로 넘어오면, '청소년'이 중요한 것이 아니라 '게임'중독이 중요한 것이다. 그 산업에 대한 고도의 이해가 필요함은 두말할 나위도 없다. 하지만 아마도 여성가족부는 PC방 업주들과 게임 기업간에 과금제 양상을 두고 무슨 논란이 벌어졌었는지 조차 이해하지 못할 것이다.

그렇다면 실질적으로 관리가 가능한 부처는 교육과학기술부일 것이다. 왜냐하면 이곳이 과거 정보통신부의 유산을 대부분 계승했기 때문이다. 그러나 교과부는 뒷전이고, 실제로는 여가부와 문광부가 싸우는 형국이다. 문광부는 자신들이 게임 '등급'을 규제하고 있던 원래 부처이므로 게임'중독'도 규제할 수 있다고 믿는 듯 하다. 정말 슬프고 병신같은 형국이다.

셧다운제의 세번째 문제점은 '게임을 하고 있는 대상이 청소년인지를 어떻게 식별하는가?'이다. 이미 이 문제는 망했다는 사실을 누구나 알고 있을 것이다. 이것은 규제가 통할 수 있는 범위를 이미 넘어섰다. 지금도 해외에 서버를 갖고 있는 게임들은 가입시 주민등록번호를 요구하지 않는다. 이제는 주민등록번호 없이 뭘 어떻게 할 것인가? 역시나 말잘듣는 국내 중대형 게임기업들만 규제의 범위에 걸려들 뿐이다. 

정리하자면, 셧다운제는 애초에 의도나 의지를 실현하기에는 거의 불가능한, 그러니까 망상에 가까운 이상론자들의 헛소리일 뿐이다. 이는 과거 자동차 산업의 첨단이었던 영국의 적기조례에 버금가는 병신력 넘치는 법안에 불과하다. 당시 적기조례를 입안했던 정치인들도 많은 꿈과 희망에 부풀어 있었을 것이다. '영국이 자동차 산업의 종주국인데, 우리가 한번 세계 자동차의 주행의 표준형태를 만들어 보는거야! 그것도 과속이나 인명피해 없이!' 그런 병신같은 환호와 열광속에 영국의 자동차산업은 몰락했다. 

이제 한국의 게임산업 차례다. 몇년 안가서 그만 둘것이 너무 뻔한 제도인데, 정치인들은 여기에 영합해서 어떻게든 자신의 업적으로 일구어내려고 정신이 없으며, 공무원들은 자기 부처 권력한번 늘려보려고 정신이 없다.

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

정말 게임업계에 있으면서, 이런 밑도 끝도 없는 정책이 입법 수준까지 가고 있다는 게 참 한심합니다.
무엇보다, 게임 업계와 게임 자체에 대해 무지한 "여성가족부" 사람들이 주장하고 있다는 것 자체가 우숩네요.

 
신고
Creative Commons License
Creative Commons License
Posted by 飛烏
生의 記錄2010.11.17 18:17

 원래 끊임없이 변하는 게 사람이라지만, 어딘가 모르게 방향이 삐딱해진 것 같다. 
 그러고보니 블로그 포스팅도 참 오랜만이구만. 맨날 트위터만 하다보니..

 시간도 많은데 곰곰이 생각해봐야겠다.
 뭐가 문젠가. 어떻게 하면 좋은가.

 블로그 포스팅도 다시 시작해야지.
 좋은 키보드 산 보람을 오랜만에 느끼는구나. ㅎ

신고
Creative Commons License
Creative Commons License
Posted by 飛烏
五感의 方向2010.09.01 23:54
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 10점
김민장 지음/한빛미디어




  art.oriented 블로그의 주인장이신 김민장님(object)이 쓰신 책이다. 블로그를 구독해본 사람은 알겠지만 컴퓨터 구조나 CPU, 컴파일러쪽에 조예가 깊으신데다가 무엇보다 나같은 평범한 사람도 편하게 이해할 수 있게 글을 잘 쓰시는데, 이 책은 거기에 더 많은 교정과 숙성을 거쳤기에 훨씬 술술 넘어간다.(그리고 무려 종이책!)

  중심 키워드를 나열해 보자면,
CPU, Pipeline, 비순차(out of order) 실행, 멀티코어, GPU & CUDA,
Speculative execution, 메모리 Prefetch, Cache, 병렬 프로그래밍
  정도가 되겠다.

  학부 시스템 프로그래밍 수업에서 나올 법한 RISC, CISC, ISA 에서부터 설명을 시작할 정도로 매우 기초적인 내용부터 설명한다. 이후 의존성과 프로세서 동작 순서, 그리고 파이프라인으로 시작하는 CPU 최적화의 역사를 짚어가는데 적절한 예시까지 들어 이해가 편하다. 특히 네할렘 등 최신 CPU 에 들어가는 구조와 CUDA, GPU 까지 어느 정도 포함하기 때문에, 트렌드를 이해하기에도 어느 정도 도움이 될 듯 싶다.

  제목에 "프로그래머"란 단어가 포함되지만 프로그래밍 스킬이나 팁 같은 직접적인 방법을 포함하진 않는다. 총 20개의 Story(챕터)로 되어 있지만, 프로세서와 HW 최적화, 어떻게 하면 더 효율적으로 명령어를 실행할 수 있는 지에 대해서 거의 대부분의 Story 를 할애하고 있다. 개인적으로 느끼기에 직접적으로 언급하는 부분은 Story 18, 19, 20 정도다.

  하지만 앞의 내용이 의미가 없는 것은 아니다. 중고등학교 시절에 의미없다고 생각했던 수학 과목들이 나중에 피가 되고 살이 되는 것을 느끼는 것처럼, 이 내용을 머리 속에 담고 있다면 앞으로 멀티쓰레드/프로세스 프로그램을 작성하는데 큰 도움이 되리라 생각한다.(당장 지난 달에 보고 수정했던 코드의 개선점이 생각나 버렸으니..) 실제로 캐시나 프리페치 등 프로세서 최적화에 사용되는 기법들은 어플리케이션을 작성할 때에도 적절하게 활용할 수 있는 기법이다.

  한가지 아쉬운 점이라면, 뒤로 갈 수록 내용이 복잡해지고 어려워지면서 오타가 자주 눈에 뜨인다는 것. 그림 번호같은 사소한 것부터 명령어 순서를 잘못 지칭함으로 인해 알고리즘 이해에 어려움을 더하는 오타가 있어 조금 아쉽다. 하지만 친절하시게도 블로그에 오타 교정 내용을 올려주셨기 때문에(http://minjang.egloos.com/2644402) 이를 미리 알고 있으면서 책을 본다면 큰 불편함 없이 읽을 수 있다.

  쉽게 읽히는 책을 추구하시느라 학부 수준의 내용을 위해 책의 절반 가량을 할애하기 때문에 지루하게 느껴지시는 분도 있을지 모르겠지만, 요즘과 같이 듀얼 - 쿼드 코어가 일반화된 시장 상황에서, 이를 타켓으로 구동하는 프로그램이나 서버 프로그램을 작성하는 프로그래머에게는 필수 도서라고 생각한다.


저작자 표시 비영리 동일 조건 변경 허락
신고
Creative Commons License
Creative Commons License
Posted by 飛烏
Attach2010.08.24 15:27

요즘 C# 을 끄적이면서 VS2010 을 쓰고 있습니다.
몇 년 동안 VS 6.0 만 쓰다가 이걸 쓰니 이 뭐 신세계(...)
각설하고, 하나의 솔루션에 두 개의 프로젝트를 생성해서 코딩을 하고 있는데
디버거를 붙이려니, VS를 두개 띄워야 하고 영 귀찮더라구요.
솔루션 탐색기에서 프로젝트 오른쪽 클릭만 해서 디버그 - 새 인스턴스 시작을 매번 눌러주기도 귀찮고..
뭔가 없을까 하다가 IRC에 물어보니 A모님께서 설정법을 알려주셔서 만세!


솔루션 탐색기에서 솔루션에 대고 오른 클릭 - 속성에 보면 이런 화면이 있습니다.
저처럼 삽질하시는 다른 분들이 있을까봐 or 까먹을까봐 포스팅 합니다. :$

신고
Creative Commons License
Creative Commons License
Posted by 飛烏
Attach2010.08.18 15:17

방금 전에 IRC 모 채널에서 있었던 대화.

<飛_______> reinterpret_cast 랑 static_cast 의 차이를 잘 모르겠어요
<ri_______> 상속관계가 얽혀있을때 다름
<ri_______> (포인터경우)
<ri_______> 그리고 int를 float으로 의미보존하면서 옮기는것도 스태틱캐스트임
<ri_______> (1 -> 1.0)
<ri_______> 리인터프릿하면..되긴 하나? 여튼 메모리 표현을 보존하는게 리인터프릿이고, 스태틱은 의미 보존임...
<ri_______> 스태틱은 리인터프릿하고 비교해서 이름을 해석하면 이상한데
<ri_______> 스태틱 <-> 다이나믹 이렇게 보면 됨
<ri_______> 의미보존하는 캐스트들...
<ri_______> 그래서 대표적인게.. class A, B가 상속관계에 있지 않은 타입일때 서로 스태틱 캐스트가 안됨
<ri_______> 의미를 보존하는게 불가능한 변환이기 땜시..
<ri_______> 하지만 상속관계에 있는 타입일 경우 스태틱 캐스트를 해줌. 이때 리인터프릿 캐스트와 다른점은....
<ri_______> 다중상속인 경우, 의미를 보존하면서 캐스트하려면 포인터 위치가 바뀌는 경우가 있심
<ri_______> 즉 메모리상의 이진표현이 바뀐다는
<ri_______> 리인터프릿캐스트하면 이진표현은 그대로임

reinterpret_cast : 메모리표현(binary representation) 보존
static_cast : 의미(semantics) 보존

맨날 깅가밍가했었는데 적절한 표현으로 인해 한번에 머리 속에 박혀버렸군요. :)


신고
Creative Commons License
Creative Commons License
Posted by 飛烏