五感의 方向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 飛烏
Attach2010/08/17 12:54

8월 15일자로 Vim 7.3 정식 버전이 release 되었네요.
거의 2년만에 마이너 버전업이라고 합니다.
그전까지 7.2 버전도 유용하게 잘 쓰고 있었는데.. 왠지 최신이 나왔다니 최신을 깔아야할 것 같은?!
기존 버전의 7.2 버전이 이미 설치되어 있다면 알아서 지우고 다시 까네요.
근데 팝업창에서 잘못 선택했는지 _vimrc 파일까지 날라가 버려서 초기화 되어버렸다는 ㅠㅠ
릴리즈 내용은 아래 링크를 참고하세요~

Creative Commons License
Creative Commons License
Posted by 飛烏
生의 記錄2010/08/14 15:48

 드디어 노루를 찍었네요. ㅎㅎ
 아직 200 위권 안에 들어가는 건 멀었지만...
 컴퓨터도 바꿨겠다, 복학도 하겠다, 좀 달려야..!
Creative Commons License
Creative Commons License
Posted by 飛烏
生의 記錄2010/07/06 21:18

래더 초기화되고, 30 렙을 다시 찍었습니다. 나엘 700 승도 넘겼고(750승이 키퍼) 랭킹도 300위 안으로 진입..
이번 시즌은 100위 안에 들어가는 것이 목표입니다.

네.. 이러고 살고 있습니다. orz


Creative Commons License
Creative Commons License
Posted by 飛烏
五感의 方向2010/05/16 19:27
소프트웨어 비즈니스 - 8점
에릭 싱크 지음, 이성희.송흥욱 옮김/사이텍미디어(희중당)



  백년만에 포스팅. 그동안 읽은 책은 더 되지만 기분 내켜서 끄적끄적. 
  에릭 싱크는 스파이글래스에서 웹 브라우저(후에 익스플로러가 되는)를 개발하다 퇴직 후 소스기어라는 버전 관리 툴(SVN, CVS 같은)을 개발하는 벤처 회사를 차렸고 현재 잘 운영하고 있는 프로그래머 출신 CEO다. 자신이 벤처 기업을 창업하고 운영하면서 느꼈던 점이나 필요한 노하우를 정리한 책이라고 하면 간단하게 설명이 될 듯.

  2003년부터 자신의 블로그와 MSDN 칼럼에 기재했던 내용을 책으로 묶어 2006년에 출간하였고 국내에는 2007년에 번역서가 나왔다. 현재가 2010년이니 급변하는 IT 업계이기 때문에 어떻게 보면 구식이고 이미 쓸모없는 내용이라 생각할 수 있겠지만, 트렌드와 시대의 흐름보다는 원칙적인 내용을 이야기하고 있기 때문에 시간과 상관 없이 도움이 될만한 내용이다. 특히 프로그래머들이 놓치기 쉬운 마케팅, 세일즈 등에 대해서 절반이 넘는 페이지를 할애할 정도로 자세히 써놓아서 창업을 고려하고 있는 사람들이 염두해 둘만 하다.

  소프트웨어 벤처 창업에 관련된 책이야 워낙 많지만 이 책이 특히 마음에 들었던 이유는 철저하게 작은 회사를 타겟으로 하고 있다는 점이다. 저자는 이를 micro-ISV(Independent Software Vendor)라고 부르는데 50인 이하의 인원으로 판매 가능한 상품(not SI)을 만드는 회사를 어떻게 창업하고 운영할 것인가에 대해서 썰을 풀어나가고 있다. 자기 자신이 그런 기업을 추구하고 있고 실제로 운영하고 있기 때문에 철저하게 자신의 경험에 미루어서 이야기하는 것이 과대하지 않고 꾸밈없이 솔직한 느낌을 줘 주장에 무게가 실린다.

  "지속 가능한 개발질"을 목표로 창업에 대해 조심스럽게 생각하고 있는 나로서는 상당히 의미있는 내용이었다. 비록 아이폰과 앱스토어의 활약으로 인해 작은 소프트웨어 개발업체들이 우후죽순 생기고 있다지만 아직까지 SI가 주류인 국내 업계 사정과, 상용툴이나 상용 서비스에 거부감이 완전히 사라지지 않은 분위기인 우리나라에서는 힘들지도 모르겠지만, 2003년보다 훨씬 커진 시장과 더 나아진 인식들을 바탕으로 전 세계를 마케팅 대상으로 한다면 어느 정도 가망성이 있지 않을까란 조심스럽게 생각해본다. 물론 좋은 아이디어를 가지고 좋은 개발자들을 모아 제품(or 서비스)를 만드는 것이 첫 번째이겠지만.

Creative Commons License
Creative Commons License
Posted by 飛烏
Attach2010/03/30 15:33

 Internet Explorer 를 제외한 대부분의 브라우저(FireFox, Chrome, Safari...)들은 보안 상의 이유로 웹 페이지에서 local link (file protocol, file:// )으로의 연결을 막아둔다. 하지만 사설 네트워크 내에서는 어느 정도 신뢰할 수 있으므로 local link 로 바로 연결이 되었으면 하는 바람이 있다.(ctrl+o는 깔끔한 해결책은 아니니까 ㅠㅠ)
 그래서 막 뒤지다가, Chrome Extension 을 발견..!!


 역시 비슷한 고민을 하는 사람은 어디에나 있고, 구글신께 여쭈어보면 된다 ;ㅅ;




 
Creative Commons License
Creative Commons License
Posted by 飛烏
生의 記錄2010/03/29 18:13

 한 2년 정도 바보페칼을 돌렸던 것 같은데, 이번에 하드디스크가 나가면서 -_-;;; 
 개인 데탑에 항상 돌리는 것은 위험하지 않나 싶은 생각이 들었습니다;
 그래서 일단 무기한 서비스를 중단하도록 결정하였습니다.(뭐 내려가 있던 시간은 꽤 됐지만;;)
 어떻게 할 지는 좀 더 고민해봐야할 것 같네요.(동방에 서버를 둔다거나!)
 그동안 이용해 주셔서 감사합니다(__)

Creative Commons License
Creative Commons License
Posted by 飛烏
五感의 方向2010/03/15 14:20

오랜만에 포스팅이 이런겁니다[...]
해볼 수 있는 사이트 주소는 : http://www.sporcle.com/games/moogles/programlanguages


정답 네타


추가적으로 재미난 것이 프로그래밍 언어 커뮤니티 순위 : TIOBE Programming Community Index for March 2010
저 퀴즈[?]랑 순위는 조금 다르지만 나름 재미나네요. ㅎㅎ
아이폰 때문인지 Objective C의 순위가 확 올라갔군요.


Creative Commons License
Creative Commons License
Posted by 飛烏