Media Log

[전체]에 해당되는 글 257

  1. h 코딩 호러의 이펙티브 프로그래밍 - 제프 앳우드 (4) 2013/04/08
  2. h 카카오 플레이스와 왓챠를 사랑합니다. 2013/04/07
  3. h 윈도우즈 PE 파일의 구조 2013/03/24
  4. h 스마트 플랫폼 전략 - 황병선 2012/12/24
  5. h 전자책 이야기 (3) 2012/08/20
  6. h 스택오버플로우의 오픈소스? (2) 2012/06/24
  7. h 읽기 좋은 코드가 좋은 코드다 (4) 2012/05/28
  8. h 윈도8에서의 UAC 관련 중요한 변화 2012/05/28
  9. h C++ 카사블랑카 라이브러리 2012/05/02
  10. h 크롬 SSH Client 확장 플러그인 2012/05/02
  11. h 카카오톡 음모론 2012/04/26
  12. h 찰스 펫졸드는 죽지 않았다. Programming Windows 6판 2012/04/24
  13. h Write in C 2012/04/23
  14. h 매크로의 가변인자를 또 다른 매크로로 넘기기 2012/04/16
  15. h 내가 좋아하는 국내 프로그래밍 블로그들 (10) 2012/04/12
  16. h CString 의 비밀 (5) 2012/04/12
  17. h 쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 2012/04/06
  18. h 메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? 2012/03/26
  19. h 김택진 스토리 (4) 2012/03/26
  20. h 위대한 해커들의 말말말 - 피터 노빅 (2) 2012/03/22
  21. h 위대한 해커들의 말말말 - 폴 그레이엄(2) 2012/03/11
  22. h 제로 데이 - 마크 러시노비치 2012/03/02
  23. h 이스트소프트 수석 프로그래머의 이야기 2012/02/29
  24. h 위대한 해커들의 말말말 - 레이몬드 첸 2012/02/24
  25. h 위대한 해커들의 말말말 - 비야네 스트롭스트룹(2) 2012/02/23
  26. h 안드로이드와 우분투의 만남 2012/02/23
  27. h 어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) 2012/02/12
  28. h Windows Internals 6판 2012/02/12
  29. h 조엘 온 소프트웨어 - 박재호 역 (4) 2012/02/12
  30. h 위대한 해커들의 말말말 - 데이비드 솔로몬 2012/02/12
코딩 호러의 이펙티브 프로그래밍 - 10점
제프 앳우드 지음, 임백준 옮김/위키북스

내가 가장 좋아했던 프로그래밍 블로그는 단연 레이몬드 첸의 OldNewThing 이었는데, 최근에 윈도우즈와 동떨어져 사는 생활을 해서 그런지 1등 블로그가 바뀌어 버리게 되었는데 그것은 바로 스택 오버플로를 만들었던 제프 앳우드의 코딩 호러라는 블로그이다. -이전에도 두 블로그를 모두 구독했고 지금도 여전히 레이몬드의 글을 보지만 두 블로그들 중 제프 앳우드의 블로그에 새 글이 올라왔을 때 더 반가운 느낌을 받는 듯 하다.


6개월 쯤 전이었던가 이 책이 전자책으로 나온 것을 알았을 때 즉시 구입했던 기억이 난다. 아이패드에 넣어 다니며 조금씩 읽긴 했는데 영어책을 읽는 것은 시간과 에너지를 낭비하게 하고 스트레스를 가져다 줬다.

그래서 이번에 한글책이 나오자마자 기쁘게 다시 구입해서 주말 내내 폭풍처럼 읽어버렸다.(그렇지 않았으면 1년이 지나도 결국 못 읽은 책으로 남았을 것이다)


결론만 이야기 하면 이 책은 정말 재미있고 유익한 조언이 많이 담긴 책이다. 내가 지금까지 가장 즐겁고 행복하게 (몇 번씩이나) 읽었던 컴퓨터 책은 해커와 화가조엘 온 소프트웨어 정도가 떠오르는데 이제 이 책이 하나 더 추가될 것 같다.


프로그래밍을 사랑하고 좋은 프로그래머가 되기를 원한다면 꼭 한번 읽어보기를 권장한다.


저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/288 관련글 쓰기

  1. fullc0de at 2013/04/23 14:48 [edit/del]

    저도 이거 나왔을 때 사서 읽어봤는데 역시나 좋은 내용이 많더군요. 요즘 팀에 신입사원들에게 읽어보라고 강요(?)하고 있다는;;;

    Reply
  2. fullc0de at 2013/04/24 16:29 [edit/del]

    파트마다 각 한 명씩 들어왔어요~^^ 근데 유지보수가 대부분인 조직에 들어와서 좀 안쓰럽기는 함;;

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2013/04/25 00:20 [edit/del]

      크크 그래요?
      5/11일날 네이버랑 축구시합 있던데 봤어요? 그 때 나와서 같이 공이나 차고 놉시다. 나올꺼면 미리 연락주고

submit

요즘 내가 아주 만족스럽게 쓰고 있는 서비스가 두 개 있는데, 하나는 카카오 플레이스이고 다른 하나는 왓챠이다.


카카오 플레이스는 새로운 맛집을 찾으러 갈 때 주로 사용하는데, 기존의 윙버스나 맛집 블로그처럼 모르는 사람들한테 속지 않을 수 있다는게 큰 장점이다. 여유로운 시간에 내 친구들이 추천해주는 맛집을 하나씩 담아놓고 나중에 하나씩 찾아다니는 맛이 아주 좋다. 물론 속은 적은 한번도 없었고 퀄리티가 모두 내 기대를 만족시켜줬기 때문에 정말 행복하게 사용하고 있다. 뭐 속고 나더라도 그 사람이 추천해주는 맛집은 더 이상 안 믿으면 되기도 하고.ㅋ


플레이스는 아직 오픈한지 얼마 안된 따끈따끈한 서비스이다. 나는 특수관계인(?)이기 때문에 이미 많은 플레이스 친구들을 가지고 있지만 대부분의 사람들은 친구가 별로 없을 것이다. 친구가 많을 수록 그 재미를 알 수 있는 서비스인데 이것은 시간이 해결해줄 것으로 기대한다.


또 다른 서비스인 왓챠는 영화 추천 서비스인데 기존에 재밌게 봤던 작품이나 그 장르에 기반해서 자동으로 영화를 추천해주는 서비스이다. 카카오 플레이스처럼 친구 누구가 재밌게 봤다는 힌트도 건네준다. 얼마전 리뷰수 800만을 넘었는데 점점 더 빠른 속도로 성장하고 있는 것 같다.

지금 글을 쓰면서 하이퍼링크를 걸어주려고 들어가봤는데 이렇게 장애가 나있기도한 서비스이다. -_-;


내가 왓챠를 좋아하는 가장 큰 이유는 특정 연대, 장르를 지정해서 영화를 추천받을 수 있다는 것이다. 보고 싶은 영화들을 담아놓고 별점순으로 정리할 수 있다는 것도 정말 큰 매력. 최근에 나는 주말에 한번씩 왓챠에 들어가서 보고 싶은 영화들을 담아두는 동시에 한 편씩 감상하고 있는데, 끝내주는 영화를 만날 때 마다 너무 행복해진다.


나는 어디를 잘 돌아다니지 않고 거의 회사와 집에만 있는 타입이라 바깥 세상이 어떻게 돌아가는지 잘 모르는 편인데, 이런 서비스들로 인해서 문화 생활을 많이 하는 사람들과의 지식? 혹은 정보 격차를 크게 줄일 수 있는 것 같아서 참 좋게 생각한다.

마치 구글이 나와서 사람들의 지식 수준을 상향 평준화 시켰을 때의 느낌이랄까? 물론 플레이스나 왓챠는 구글만큼 크게 세상에 공헌할 수는 없겠지만 그래도 내가 생활하는데 있어서 기존보다 좀 더 나은 세상을 제공해주고 있는 것은 맞다. 그래서 사랑한다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/287 관련글 쓰기

submit


Portable Executable Structure이미지 출처 https://code.google.com/p/corkami/wiki/PE101

엄청나게 잘 정리된 그림을 발견했다. 아름답지 아니한가.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/286 관련글 쓰기

submit
스마트 플랫폼 전략 - 9점
황병선 지음/한빛미디어

제목과 꼭 들어맞는 내용으로 알차게 구성되어 있는 잘 쓰여진 책이다.

첫 삼분의 일은 플랫폼이란 무엇인지 왜 중요한지에 대해서 할애하고 나머지 삼분의 이는 애플과 구글 그리고 마이크로소프트에 대해서 이야기 한다. 이 세 회사를 삼국지로 빗대서 이야기한 책들이 이전에도 몇 권 있었는데, 이 책에서는 그들의 플랫폼 전략을 바라보는 관점에서 이야기를 하기 때문에 단순히 재미뿐만 아니라 영양가도 많이 있었다. 과거의 역사를 돌아보고 왜 성공했는지 혹은 왜 실패했는지와 앞으로 각 회사들의 플랫폼 영향력이 어떤 식으로 발전할지에 대해서 저자 나름의 주장을 하는데, 기술적으로나 전략적으로나 아주 잘 분석했다는 생각이 든다.

모바일 플랫폼에 관심이 있는 사람들이 꼭 한번 읽어보기를 추천한다.


P.S 구글이 비록 모토로라를 인수했지만 저자는 이런 저런 이유를 대면서 자체 스마트폰은 아마도 제작하지 않을 것이라 예상했는데, 그 예측은 보기 좋게 빗나간 것 같다. 개인적으로는 루머가 사실이길 바라고 있으며 빨리 완성된 제품을 보고 싶다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/285 관련글 쓰기

submit

요즘 전자책 읽는 재미에 빠져서 살고 있다. 책이라면 당연히 종이 냄새 나는 종이책이지! 라고 생각했었는데 이 빌어먹을 디지털 세상의 편리함에 또 한가지를 굴복해 버리고 말았다.


몇몇 책들을 구입해서 실제로 읽다보니 과거에 어렴풋이 생각했던 공간 절약이나 검색 기능 말고도 다른 장점들이 있었다.


1. 구입 즉시 볼 수 있다. 이건 정말 중요하다. 충동구매가 많이 늘었다;

2. 소스 코드를 타이핑 하지 않고 원하는 만큼 복사해서 붙여넣기 할 수 있다. 타이핑 안하면 실력이 안 늘어난다고? 그런지 아닌지는 모르겠지만, 걱정되면 직접 치면 되니깐.

3. 사용자가 선호하는 폰트로 책을 볼 수도 있다. 나는 나눔폰트를 참 좋아하는데 책으로 읽을 땐 어떤 느낌일지 궁금하다. 한 번 보고 싶다.

4. 책을 보며 밑줄 긋고 낙서해도 쉽게 복원할 수 있다.

5. 하이퍼링크를 통해 참고자료나 인용 등을 바로 확인 할 수 있어서 편리하다. 물론 원래 보던 페이지로 쉽게 돌아갈 수도 있다.

6. 출판사 입장에서 책을 컬러로 만드는 것이 덜 부담스럽다. 소스코드는 Syntax 하이라이트를 해서 예쁘게 표현하기도 쉽다. 당연히 사용자한테도 좋다.

7. 책 페이지수가 종이책에 비해 중요하지 않아졌다. 출판사 입장에서는 레이아웃 구성을 좀 더 자유롭게 할 수 있다.

8. 대중 교통에서 한 손으로 들고 보기에 편리하다.

9. 그래도 종이책으로 보는 것이 무조건 좋다고? 선호하는 종이에 인쇄해서 보면 된다.

10. 종이책보다 싸다. 이전에는 전자책하고 종이책하고 차이가 별로 안나서 이렇게 비싸게 파나? 생각한 적도 있었는데, 지금은 전혀 그렇게 생각하지 않는다. 어짜피 들어있는 지식은 같고, 쓸데없는 공간 안 차지하는 것만으로도 충분히 훌륭하다.


몇 달전 인사이트에서 처음으로 전자책을 DRM free로 내놨었는데, 계속 해서 새 책이 안나오는 걸 보면 기대했던 것 만큼 반응이 좋지 않았나 보다. 이제 한빛 미디어에서도 전자책 장사를 시작했다. 부디 잘 기획해서 책도 많이 팔리고 시장이 빨리 성장했으면 좋겠다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'디지털보단 아날로그' 카테고리의 다른 글

전자책 이야기  (3) 2012/08/20
카카오톡 음모론  (0) 2012/04/26
Write in C  (0) 2012/04/23
Devon 2011, 왜 김택진이 욕을 먹어야 하는가  (2) 2011/11/28
안철수연구소 오픈 하우스 이벤트  (0) 2011/10/22
플라워 바이 겐조  (0) 2011/07/12

http://www.benjaminlog.com/trackback/284 관련글 쓰기

  1. Favicon of http://www.lcpass.com BlogIcon lcpass at 2012/11/12 10:07 [edit/del]

    호불호가 갈리지만 나름 긍정적으로 생각하고 있습니다.

    Reply
  2. Favicon of http://sunyzero.tistory.com BlogIcon sunyzero at 2012/12/14 01:19 [edit/del]

    전자책이 편리성만 따진다면 엄청 편리하더군요.
    오타도 쉽게 업데이트 할 수 있다고 합니다.
    개인적으로는 전자책이 활성화되면 좋겠지만 출판사들이 수익성이 영 안좋다고 하는 소리가 있네요.

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012/12/15 14:04 [edit/del]

      오랜만에 오셨군요^^
      전자책에 대해서 요즘 생각이 다시 좀 바뀌었는데;;
      편리하긴 엄청 편리한데, 책 보는 시간이 확 줄어버렸네요. 집중력도 엄청 떨어지고.

submit

스택오버플로우 오픈소스라는 검색어를 통해 내 블로그에 찾아오는 사람들이 있다. 아마 우리나라 사람들 중 누군가가 스택오버플로우 같은 멋진 커뮤니티를 만들고 싶은가보다. 이미 그런 시도들이 있었고 아래와 같은 사이트들이 만들어졌지만 아쉽게도 기대했던 것 만큼 장사가 잘 되고 있는 것 같지는 않다.

http://codejob.co.kr/code/

http://nullpointr.com/


아참, 그래서 스택오버플로우의 오픈소스가 있냐고?

있다.

http://askbot.com/

정확히 말하면 스택오버플로우의 오픈소스는 아니고 그냥 똑같이 따라서 만들어보려는 클론, 다시 말하면 짝퉁이다. 스택오버플로우에 비하면 부족하긴 하지만 그나마 가장 잘 따라했으며 완성도가 높다. GitHub에 가면 코드를 내려받을 수 있다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/283 관련글 쓰기

  1. 주의사신 at 2012/06/25 08:45 [edit/del]

    1. StackOverflow를 만든 Joel Spolsky와 Jeff Atwood의 RSS Feed를 받는 사람의 수는 중복 제거하고도 10만명은 될 것입니다.

    제가 아는 개발자 수가 100명이 안 됩니다. 흥행이 실패하는 것이 어떻게 보면 당연합니다....ㅜㅜ

    만들어 보고서야 뭐가 원인인지 알게 되었네요. 만들기만 하면 다 될 것이라 생각했던 것이 가장 큰 패인이었습니다...


    2. 우선은 놔 둬 보고 계속 조금씩 개선해 나가는 수밖에 없다는 것이 제 개인적인 생각입니다.

    Reply

submit
읽기 좋은 코드가 좋은 코드다 - 10점
더스틴 보즈웰 & 트레버 파우커 지음, 임백준 옮김/한빛미디어

한빛미디어에서 새로 나온 신간이며 국내 개발자들에게 꽤 유명한 임백준씨가 내용을 옮겼다.
원서는 The Art of Readable Code라는 책인데 아마존에서도 그럭저럭 호평을 받고 있는 것으로 보여진다.


책 제목처럼 읽기 쉬운 코드를 쓰는 방법에 대해서 구체적으로 설명한다. 책 분량도 적당하고 내용도 어렵지 않다.

아주 깔끔하게 잘 나온 책이라고 생각한다.


하지만 새로운 지식이나 멋진 뭔가를 얻으려고 생각하면 안된다. 책을 읽어가다 보면 아마 기존에 자신이 코드를 작성하면서 대부분 한번씩 고민해 봤을 내용들일 것이다. 이 책의 저자들은 보통 사람들보다 조금 더 많이 고민해 본 것이 확실해 보인다.

책을 읽어 가면서 자신이 이전에 생각했던 내용들과 비교하면서, 읽기 좋은 코드를 작성하는 방법에 대해서 다시 한번 진지하게 생각해보는 계기를 가진다면 좋을 것이다.


아참, 책 내용 중에 이런 글이 있었다.

우리가 이 장에서 설명하는 건 헝가리언 표기법보다 더 넓고 비공식적인 시스템이다. 어떤 변수가 가지는 중요한 속성을 포착한 다음, 그 속성에 중요한 의미가 있으면 변수명에 포함시키는 방법이다. 원한다면 이 방법을 '잉글리쉬 표기법'이라고 불러도 좋다.


으음, 원하지 않는다.

변수 이름을 잘 지어야 한다고 노래를 부르더니 정작 본인들은 이름을 이렇게 밖에 못 짓나? 크크크.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/282 관련글 쓰기

  1. binho at 2012/05/28 11:53 [edit/del]

    좋은책소개 감사합니다. 재밌어보이네요.

    Reply
  2. mapark at 2012/10/22 09:53 [edit/del]

    좋은 리뷰 감사히 잘 읽고 갑니당^^

    Reply
  3. Ashton at 2012/11/09 20:57 [edit/del]

    평이 이렇게 좋은 김재호..잘 모르겠습니다. 너무도 당연한 내용과 때때로 뜬금없는.. 모든 실무에 동일하게 적용할수 있는 룰은 없다는 건 알지만.. 아쉽게도 이번 책 선택은 실패!

    Reply

submit

http://www.brianbondy.com/blog/id/140/

위 포스트를 읽고서 윈도8에 꽤 큰 변화가 생겼다는 것을 알았다.

지금까지는 UAC를 꺼둔다면 XP와 같은 환경이라고 생각해도 별 문제가 없었지만, 이제는 더 이상 아니라는 뜻.


If (IsUacDisabled())

{

}


만일 이런 이상한 얍삽이 코드를 즐겨 사용했다면, 이제 그 결정에 대해서 벌을 받을 시간이다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/281 관련글 쓰기

submit

마이크로소프트에서 카사블랑카라고 이름지어진 흥미로운 라이브러리를 발표했다.


http_client bing( L”http://www.bing.com/search” );
bing.request( methods::GET, L”?q=S.Somasegar” )
.then( []( http_response response ) {
cout << “HTML SOURCE:” << endl << response.to_string() << endl; })
.wait();


listener::create( argv[1], []( http_request req ) {
req.reply( status_codes::OK, “Namaste!” ); })
.listen( []{ fgetc( stdin ); } )
.wait();


여기 공식 페이지에 간략하게 소개가 있으며, 허브 셔터가 자신의 블로그에 따로 소개해주기도 하였다.

아마 Restful api를 제공하는 서비스들의 클라이언트 코드로써 가장 많이 사용되지 않을까 싶다.

 

얼마전 있었던 마이크로소프트의 Going Native 2012 행사에서 허브 셔터가 말하길,

C++ 언어는 다른 최신 언어들에 비해 부족한 점이 거의 없다. 부족한 것은 바로 라이브러리이다. 라는 말을 했었는데 아주 인상 깊게 들었다. 프리젠테이션 자료를 너무 인상적으로 만들어서 더욱 설득 당했는지도 모르겠다.

아래 주소에서 그 동영상을 볼 수 있다. 1시간 17분 쯤부터 보기 시작하면 된다.

http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/C-11-VC-11-and-Beyond


어쨌거나 좋은 C++ 라이브러리들이 빨리 빨리 구현되기를 바란다. 그래야 Going Native Again 할 것 아닌가.



 

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/279 관련글 쓰기

submit


크롬이 4.0이 될 때 부터 어쩌면 1등 브라우저가 될 수 있을 것 같다고 생각한 적이 있다.

그 때는 그다지 확신을 가졌던 건 아니었는데 이제는 누가 봐도 1등이 되는건 시간문제라고 생각할 것 같다.

가장 맘에 드는 기능은 동기화 기능이다. 확장 플러그인과 주소 목록, 비밀번호 동기화 등 다른 컴퓨터에 앉았을 때도 쉽게 내 환경을 불러 올 수 있어 편리한데다가, 모바일에서 또한 내가 자주 가는 사이트의 주소 자동 완성과 비밀번호 자동 입력이 지원되므로 불편하게 꼬물 핸드폰 키보드로 타이핑 할 필요가 없어서 너무 좋다. - 현재는 안드로이드 4.0 이상 기기만 크롬을 설치할 수 있다.

게다가 크롬 확장 플러그인으로 SSH Client도 생겼다. 크롬북에서 특히 유용할 것 같지 않은가?

삼성에서 언젠가 크롬북을 50만원 정도에 팔았었는데 이건 거품이 심하게 끼었다고 생각한다. 가격이 20만원 대로 내려가고 무게가 조금 더 가벼워진다면 크롬북을 꼭 가지고 싶어질 것 같다.


저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/278 관련글 쓰기

submit

카카오톡의 채용 공고를 재밌게 읽다가 밑에 달린 댓글을 보고 폭소하였다.


[채용공고]

카카오팀에서 모바일의 미래를 함께 만들어 갈 만렙 엔지니어를 찾습니다

카카오톡을 전 우주 통신규약으로 만들려는 음모를 가진 카카오팀에 합류할 실력자를 찾고 있습니다.

...하략...



으하하. 아직 음모를 잃지 않은 만랩 엔지니어들은 한번 지원해보기 바란다. 전체 공지 내용은 여기에서 볼 수 있다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'디지털보단 아날로그' 카테고리의 다른 글

전자책 이야기  (3) 2012/08/20
카카오톡 음모론  (0) 2012/04/26
Write in C  (0) 2012/04/23
Devon 2011, 왜 김택진이 욕을 먹어야 하는가  (2) 2011/11/28
안철수연구소 오픈 하우스 이벤트  (0) 2011/10/22
플라워 바이 겐조  (0) 2011/07/12

http://www.benjaminlog.com/trackback/277 관련글 쓰기

submit

한 때 윈도우 프로그래밍의 교과서로 불리우던 찰스 펫졸드의 Programming Windows 가 6판이 되어 돌아온다. 추가되는 내용은 윈도8의 메트로 앱개발.


아직 정식 책이 나오려면 많이 기다려야 하기 때문에 매트로앱에 대한 내용만을 담아서 전자책으로 10$에 파는 이벤트를 진행 한다고 한다. 5월 17일 ~ 5월 31일 사이에만 살 수 있다.


더 자세한 내용은 그의 블로그에서.

http://www.charlespetzold.com/blog/2012/04/2-4-6-8-10.html

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/276 관련글 쓰기

submit



저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'디지털보단 아날로그' 카테고리의 다른 글

전자책 이야기  (3) 2012/08/20
카카오톡 음모론  (0) 2012/04/26
Write in C  (0) 2012/04/23
Devon 2011, 왜 김택진이 욕을 먹어야 하는가  (2) 2011/11/28
안철수연구소 오픈 하우스 이벤트  (0) 2011/10/22
플라워 바이 겐조  (0) 2011/07/12

http://www.benjaminlog.com/trackback/275 관련글 쓰기

submit

살다보면(?) 매크로에서 받는 가변 인자를 또 다른 매크로로 쑤셔넣고 싶은 경우가 있다.

#define MACRO_1(abcfn(a, b, c) #define MACRO(...) MACRO_1(__VA_ARGS__)

짠, 이렇게 하면 된다.

그렇다. 아무 테크닉이 필요없이 그냥 쑤셔넣으면 된다.

그런데 위 코드는 GCC에서는 잘 동작하지만 VC에서는 동작하지 않는다. 그렇다고 해서 가변인자는 다른 매크로로 건넬 수가 없구나 하고 오해하면 안된다. 이것은 그냥 비주얼 스튜디오의 버그일 뿐이다.

#define MACRO_1(abcfn(abc)
#define MACRO_1_(args_listMACRO_1 args_list
#define MACRO(...) MACRO_1_((__VA_ARGS__))

비주얼 스튜디오에서는 위와 같은 얍삽이를 통해서 이를 회피할 수 있다. __VA_ARGS__ 주위를 한 겹 더 괄호로 둘러싸서 또 다른 매크로로 넘기는 것을 주의해서 봐야한다.


그래서 내가 하고 싶은 말은,


이 버그가 정말 거지 같다고 생각된다면

http://connect.microsoft.com/VisualStudio/feedback/details/380090/variadic-macro-replacement

여기 가서 upvote를 해주세요.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/273 관련글 쓰기

submit

내 피드리더에는 등록되어있는 블로그가 700여개 쯤 있다.

그 중에는 새로운 글이 올라올 때마다 가슴이 설레는 몇몇 블로그들이 있다. 그 중 우리나라 저자가 운영하는 3개의 블로그를 소개하려고 한다.


1. 메아리 저널

정말 엄청난 실력을 가진 해커이다. 특정 플랫폼이나 언어에 상관없이 여러 주제로 재밌는 글을 쓴다. 가끔 기괴한 코드 골프 내용이 올라오기도 하는데 그런걸 쳐다보고 있다 보면 자괴감에 빠지기도 한다.

어쨌거나 나는 그의 글이 너무나도 좋아서 언젠가는 주말 이틀 동안 내내 방구석에 누워서 2004년부터인가 썼던 모든 글을 다 읽어본 적도 있었다. 가끔씩 이상한 오락실 얘기도 쓰고는 하는데 그런 글조차 재밌다. 블로그에 댓글로 피드백을 할 수가 없어서 애독자로서 좀 아쉽긴 하지만 본인이 그에 대해 많이 고민해 본 듯하니 어쩔 수 없는 일이다.


2. art.oriented

프로그래머가 몰랐던 멀티코어 CPU 이야기를 쓴 저자이다. 주로 윈도 프로그래밍이나 시스템 프로그래밍 이야기를 다루는데 글들이 재밌을 뿐더러 배울 점도 많다. 이 블로그 역시 거의 모든 글을 다 읽었다. 아마 프로그래밍 기술을 다루는 우리나라 블로그들 중 가장 피드백이 많이 왔다갔다 하고 방문자 수도 많은 블로그가 아닐까 싶다.


3. 김용묵의 절대 공간

이 블로그는 비교적 최근에 알게되었다. 글들은 아주 오래전부터 꾸준히 작성되어 왔는데 써있는 글의 질과 양에 비해 일방문자수는 상당히 적다. 윈도 프로그래밍에 대해서만 다룬다. 윈도 역사에 대해서 글을 쓸 때는 레이몬드 첸을 보는 느낌이 들기도 한다. 철도와 종교 이야기도 종종 꺼내는데 나는 그런 주제는 관심이 없어서 건너 뛰고 읽는다.


그러고보니 이 블로그들 이상으로 예전에 정말 좋아했던 블로그가 있었다. 바로 방준영의 블로그. 2009년도 즈음이었던가? 어느 날 아침에 그의 블로그를 발견하고는 오아시스라도 발견한 것 처럼 기뻤던 날이 있었다. 거의 매일 같이 좋은 글들이 올라와서 정말 행복하게 읽어가고 있었는데 언제부터인가 새 글이 더 이상 올라오지 않았고 심지어는 기존에 썼던 글마저 사라져 버렸다. 안타까운 일이다. 준영님. 혹시라도 이 글을 보신다면 돌아와주세요. 엉엉.


나는 미투데이나 트위터가 싫다. 페이스북도 싫다. 이 잡 것들이 나오고 나서 사람들은 블로그에 글을 잘 쓰지 않는다.

돌아오라 블로거들이여. 맛집 블로거 말고 프로그래머들 말이여.

그럼에도 불구하고 영어 블로그는 여전히 좋은 블로그들이 엄청나게 많다. 하지만 영어 블로그를 읽는 것은 정말 고통스러운 일이다. 내 피드 리더에는 나중에 읽으려고 마킹해둔 글들이 잔뜩 쌓여있는데 그것들 대부분은 영어 포스트이다. 한 번 읽으려면 크게 심호흡부터 하며 각오를 단단히 하고는 한다. 그리고 나는 그렇게 심호흡을 자주 하지 않기 때문에 오늘도 마킹만 해두는 글들이 계속 늘어간다.

그러니 이렇게 우리말로 좋은 글을 써주는 사람들이 어찌 고맙지 않겠는가. 좋은 국내 블로그들이 더 많이 생겼으면 좋겠다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/272 관련글 쓰기

  1. Favicon of http://hongyver.tistory.com BlogIcon hongyver at 2012/04/13 08:38 [edit/del]

    제 피드리더에도 많은 블러그가 등록되어 있는데 그중에 한분이십니다. ^^
    평소 글 잘 읽고 있습니다.
    (영어 블러그는 마킹할 생각도 못하고 그냥 지나칠때가 많아요.)

    Reply
  2. Sobbungi at 2012/04/15 03:02 [edit/del]

    님도 저 세 블로그 만큼이나 충분히 훌륭하십니다..
    가끔 올라오는 글들 유용하게 잘 읽고 있습니다..
    계속 좋은 글 부탁드립니다~~.

    Reply
  3. Favicon of http://moogi.new21.org/tc BlogIcon 사무엘 at 2012/05/14 08:23 [edit/del]

    안녕하세요? 제 블로그에 흔적을 남겨 주신 것에 감사드리며, 저와 제 지인의 블로그를 소개해 주셔서 또 감사합니다. ^^

    '1. 메아리 저널의 운영자'는 저의 학교 후배이고 저와도 아주 친한 사이입니다.
    '엄청난 실력을 가진 해커' ← 사람 보는 안목이 정확하십니다. ㄷㄷ

    짐작하신 대로 저는 아주 좁은 제 전문 분야만 빼면 딱히 다른 IT 기술이나 플랫폼이나 전산학의 발전에는 큰 관심이 없는 타입이에요.
    그에 반해 진정한 전산학 덕후/해커가 어떤 사람인지를 저 친구를 보면서 저는 절실히 느낀답니다. ^^

    김민장 님 블로그는 운영자께서 대학원 생활에 너무 바쁘셔서 유명세에 비해 글이 너무 뜸하게 올라온다는 것만이 유일한 단점인 듯하고...

    제 블로그는 설치형이어서 메타블로그에 딱히 노출되는 게 없습니다. 그래서 예전부터 제가 개발한 프로그램을 사용해 온 분이나 너무 매니악한 블로그 주제에 질리지 않은 분들만 오느라 방문자수가 적은 것 같습니다. ^^;; 2년 전이나 지금이나 비슷한 수입니다.
    블로그 주제가 꽤 이상한 혼합형 타입이죠? ㅋㅋㅋㅋ
    URL에서 tc를 빼고 도메인만 입력해서 접속하면 대문 페이지도 나오는데, 그것도 보셨나 궁금합니다.

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012/05/14 10:14 [edit/del]

      예, 메아리 저널이나 절대공간 글은 하도 많이 읽어서 친한 사이라는 것은 알고 있었습니다. 당연히 대문 내용도 읽어보았었고요.
      만나서 반가워요. 앞으로도 좋은 글 많이 써주세요.

  4. 박우석 at 2012/05/16 01:45 [edit/del]

    자괴감 블로그 보고 왓는데
    난 누구인가 여긴 어디인가
    귓속을 맴도네요 ㅋㅋ

    Reply
  5. 이매` at 2013/01/25 18:51 [edit/del]

    네이트온이메일좀 알려주세용 ㅋ

    Reply
  6. busim at 2013/02/28 06:44 [edit/del]

    와~우! 글을 너무 재미있게 써서 귀에 쏙 들어옵니다 잘 놀다 갑니다 종종 들어와도 될까요?

    Reply

submit

CString 의 비밀

2012/04/12 11:55 | Programming
다음 코드를 실행시켜보면 "abc"가 잘 출력이 될까?

CString s = L"abc";

wprintf(L"%s", s);


그렇다. 잘 출력된다.

대부분의 사람들은 이 부분을 원래 그런거 아니었어? 하고 대수롭지 않게 넘어간다.


어잉, 그런가?


그렇다면 다음 코드는 어떨까? 이번엔 CString이 아니라 std::wstring을 사용했다.

std::wstring s = L"abc";

wprintf(L"%s", s); // this is wrong


컴파일은 잘 되지만 이번엔 제대로 출력되지 않는다. 형식 문자열에 포인터를 넣지 않고 wstring 객체 자체를 쑤셔 넣었기 때문이다. 사람들이 흔하게 하는 실수이며, 경험있는 프로그래머들이 형식 문자열을 사용하지 말라고 하는 이유이다.


제대로 출력하려면

wprintf(L"%s", s.c_str());

이렇게 써주어야 한다.


아니 그런데 왜 CString은 그냥 넣어도 잘 되고 std::wstring은 .c_str() 함수를 호출해야만 되는걸까. CString에 뭔가 비밀이 있는건가.


있다.


조금 더 주의 깊은 사람들은 CString의 구현을 살펴보고 LPCWSTR에 대한 형변환 연산자가 정의되어 있는 것을 발견해낸다. 아, 형변환 연산자가 있기 때문에 자동으로 형 변환이 되는거구나.


하지만 이는 형변환 연산자 때문이 아니다.


가변 인자 함수로 들어갈 때는 형변환이 발생하지 않는다. 함수 파라메터가 '가변'이고 무슨 타입이 들어올지도 적혀 있지 않는데 어떤 타입으로 형변환을 하는가?


CString의 코드가 잘 동작할 수 있는 비밀은 CString의 멤버 변수가 실제 문자열 데이터를 가리키고 있는 포인터 m_pszData 하나 밖에 없기 때문이다. 가상 함수도 없다. 객체의 맨 앞에 포인터를 가지고 있다는 것이 중요하다.


그림으로 그려보면 이렇게 생겼다.

재밌지 않은가? 문자열 클래스가 문자열 길이를 위한 변수도 가지고 있지 않고 달랑 WCHAR* 하나만 가지고 있다니.

하지만 CString의 은밀한 곳에서는 메모리를 조금 더 할당해서 문자열 길이나 레퍼런스 카운트를 저장하고 CString에게는 pszData 하나만 노출시켜 놓는다. 그리고 이렇게 설계한 이유는 사람들이 저런 실수를 하더라도 잘 동작하도록 만들고 싶었기 때문일 것이다.


하지만 잘 동작한다고 해서 그렇게 쓰는 것이 옳다는 것은 아니다. 가변인자의 파라메터로는 POD 만 들어갈 수 있다. NON-POD 타입이 들어갈 경우에는 모두 undefined behaviour이다. 나중에는 컴파일러의 구현 변경에 따라 동작하지 않게 될 수도 있다는 뜻이다. -말은 이렇게 하지만 그런 일은 좀처럼 발생하지 않는다.


어쨌거나,

wprintf(L"%s", (LPCWSTR)s); 또는

wprintf(L"%s", s.GetString());


이라고 써주어야 올바른 C++ 문장이다.


저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/271 관련글 쓰기

  1. 스비 at 2012/04/12 13:42 [edit/del]

    유익한 내용 잘 배우고 갑니다. 항상 재밌게 글 읽고 있습니다. 고맙습니다.

    Reply
  2. BlogIcon Scavenger at 2012/05/27 11:02 [edit/del]

    유익한 내용 잘 보고 배웁니다.. 흥미로운 내용이네요^^

    Reply
  3. 이준배 at 2012/06/18 17:22 [edit/del]

    배우고 갑니다 글 남겨주셔서 감사합니다

    Reply

submit

ICopyHook은 윈도에서 제공하는 COM 인터페이스이다. 이 인터페이스를 구현해서 시스템에 등록시키면 쉘을 통한 파일 오퍼레이션이 발생할 때 내가 설치해 놓은 코드가 실행되도록 할 수 있다.

구현해야 할 함수는 이런 모양으로 생겼다.

UINT CopyCallback(
  [in, optional] HWND hwnd,
  UINT wFunc,
  UINT wFlags,
  [in] PCTSTR pszSrcFile,
  DWORD dwSrcAttribs,
  [in, optional] LPCTSTR pszDestFile,
  DWORD dwDestAttribs
);

파일 오퍼레이션을 잡아챌 수 있다고 해서 이 훅을 사용해 파일 삭제 등을 감시하는 모니터 용도로 사용하려는 아이디어는 좋지 못하다. 이 기능은 모든 파일 시스템 오퍼레이션에 훅을 제공하는 것이 아니라 폴더 삭제와 같은 특정한 몇몇 동작에 대해서만 동작하기 때문이다. 어떤 파일 오퍼레이션이 발생하는가 궁금한 거라면 파일 시스템에서 제공하는 파일 변경 알림 기능을 사용하는 것이 올바른 방법이다.

그럼 이 인터페이스는 도대체 어디에 쓰라고 만든 물건이고.

윈도우 탐색기에서 폴더를 삭제하게 되면 탐색기는 폴더 안에 있는 파일들부터 모두 지우고 마지막에 폴더를 삭제한다. 이는 NTFS 같은 파일 시스템이 폴더에 파일이 있으면 삭제하지 못하도록 하고 있기 때문이다. RemoveDirectory 함수를 호출했을 때 해당 디렉터리 내에 파일이 존재한다면 파일 시스템 드라이버는 STATUS_DIRECTORY_IS_NOT_EMPTY 에러를 돌려주도록 구현해야 한다.
윈도 탐색기의 이런 동작은 네트워크 파일 시스템 위에서는 치명적이다. 로컬 파일 시스템이라면 Irp가 몇 백번쯤 왔다갔다해도 금새 끝나겠지만 레이턴시가 긴 네트워크 파일 시스템 같은 경우는 저 멀리 미국까지 백 번 천 번을 왔다 갔다 해야 할 수도 있는 것이다.

ICopyHook 을 사용하면 이런 폴더 삭제나 이동 명령들을 먼저 잡아채서 내 마음대로 원하는 동작을 수행 한 뒤 ID_NO를 리턴함으로서 쉘에게는 더 이상 오퍼레이션을 하지 않도록 할 수 있다. 예를 들어 네트워크 파일 시스템 드라이버를 만든다면 쉘에서 폴더 삭제 같은 오퍼레이션이 발생할 때 이를 잡아채서 서버로 폴더 삭제 명령을 딱 한번만 보낼 수 있는 것이다. 물론 서버는 하위에 파일들이 있더라도 폴더를 삭제할 수 있는 기능을 지원해야 한다.
다른 많은 경우들에도 이 기능을 응용할 수 있을 것이다. 상상의 나래를 잘 펼친다면.

주의 해야 할 점은 내 훅이 실행될 때 어떤 에러가 발생하면 에러메세지를 사용자에게 보여주는 것도 내 책임이 된다는 것이다. ID_NO를 리턴하면 쉘은 해당 오퍼레이션에 대해서 더 이상 신경쓰지 않는 것을 기억하라. 함수의 첫 번째 인자로 들어오는 HWND는 바로 그런 사용자 인터랙션을 위해서 존재한다.

ICopyHook을 구현하면서 코드에 버그를 같이 넣어놓는다면 사용자는 윈도 탐색기 프로세스가 자꾸 비정상 종료되는 경우를 겪을 수 있다. 이는 사용자뿐 아니라 개발자들에게도 귀신이 곡할 노릇일 수 있다. 어떤 머신에서는 잘 동작하는데 특정 컴퓨터에만 가면 내 응용 프로그램이 파일 오퍼레이션을 할 때마다 윈도 탐색기가 죽어버리니 말이다. 경험이 어느 정도 있는 개발자라면 먼저 윈도 탐색기에 ICopyHook이나 쉘 확장 플러그인이 설치되어 있는지를 먼저 살펴보겠지만, 잘 모르고 있다면 크래시 덤프를 눈으로 보면서도 원인을 모를 수 있다. FOFX_NOCOPYHOOKS 플래그를 사용하면 훅을 완전히 무시하고 오퍼레이션을 수행할 수도 있다.


저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/270 관련글 쓰기

submit
이것은 윈도우 프로그래밍 이야기.
길을 걷다 보면 간혹 듣게 되는 이야기. 는 아니고 소프트웨어 회사의 사무실이나 엘레베이터에서 가끔 들을 수 있는 이야기.
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요?
어잉. 그런가?

답은 아니오이다. 메인 쓰레드가 종료된다고 프로세스가 종료되는 것은 아니다.
ExitProcess 같은 함수를 통해 명시적으로 프로세스를 종료시키거나, 모든 쓰레드가 종료되었을 때 프로세스는 종료된다.

그럼 사람들은 왜 저런 미신을 가지게 되었을까. 아마도 메인 함수에서 리턴할 때 다른 쓰레드들이 존재하더라도 프로세스가 종료되는 것을 봐왔기 때문일 것이다.
그렇다. 메인 함수가 리턴하면 다른 쓰레드들이 잘 살아 있더라도 프로세스가 종료된다.
하지만 메인 쓰레드가 종료되었기 때문에 프로세스가 종료되는 것은 아니다. 이 때 프로세스가 종료되는 이유는 메인 함수가 끝나고 CRT에서 exit 함수를 호출 해주기 때문이다. exit()는 물론 내부적으로 ExitProcess를 호출한다.

다른 쓰레드를 생성해 놓은 뒤 메인 함수 내에서 ExitThread 함수를 사용해 메인 쓰레드만 종료시켜 보면 프로세스가 종료되지 않는다는 것을 살펴 볼 수 있을 것이다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/269 관련글 쓰기

submit
김택진 스토리 - 7점
김정남 지음/e비즈북스
몇달 전 DevOn인가 Daum에서 진행했던 개발자 행사에서 김택진의 이야기를 듣고는 어떤 사람인지 좀 더 알고 싶어져서 읽어본 책이다. 100페이지 짜리 아주 얇은 책이라서 금방 읽을 수 있었다.

현대에서 병특을 하는 동안에도 승진에 승진을 거듭하고 정주영 앞에서 프리젠테이션을 하기도 했다는 걸 읽으면서 될 성 싶은 나무는 떡잎부터 다르다더니 그 말이 딱 맞구나 싶었다.
이미 초 거물이 된 엔씨소프트 사장의 지금 모습이 아닌 한메소프트 시절과 엔씨 소프트 초창기 시절 엔지니어 김택진의 모습만을 다뤄줘서 너무 좋았다.

좀 아쉬웠던 점은 이렇게 얇은 책임에도 불구하고 김택진에 대한 내용으로 가득 채워져 있는 것이 아니라 송재경과 김정주, 리처드 개리엇 같은 사람들의 내용으로 절반 이상을 할애한다는 점이다. 물론 그들의 이야기도 재밌게 읽긴 했다. 하지만 그래도 책 제목이 김택진인데 송재경이나 리처드 개리엇 이야기를 김택진 만큼 많이 써버리면 좀 그렇지 않나.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/268 관련글 쓰기

  1. Favicon of http://ebizbooks.tistory.com BlogIcon e비즈북스 at 2012/04/27 18:08 [edit/del]

    리뷰를 남겨주셔서 감사합니다. 저도 게임 이야기가 좀 많아서 송재경씨만 넣었으면 어땠을까 생각을 했었습니다. 그런데 엔씨소프트를 이해하려면 게임 이야기가 필요하다는 의견이 있었습니다. 저자분이 게임에 관심이 많은데다가 편집자가 게임을 좋아해서 그럴지도 모르겠습니다^^

    Reply

submit

좋은 프로그래머가 되려면 컴퓨터가 명령어를 실행시키는 데 걸리는 시간, 메모리에서 데이터를 가져오는 데 걸리는 시간(캐시 히트 또는 미스가 날 때를 각각), 디스크에서 데이터를 읽어오거나 탐색하는 데 걸리는 시간을 잘 알고 있어야 한다.
그 답은 아래 표에 나와있다. (출처 http://norvig.com/21-days.html#answers)

execute typical instruction

1/1,000,000,000 sec = 1 nanosec

fetch from L1 cache memory

0.5 nanosec

branch misprediction

5 nanosec

fetch from L2 cache memory

7 nanosec

Mutex lock/unlock

25 nanosec

fetch from main memory

100 nanosec

send 2K bytes over 1Gbps network

20,000 nanosec

read 1MB sequentially from memory

250,000 nanosec

fetch from new disk location (seek)

8,000,000 nanosec

read 1MB sequentially from disk

20,000,000 nanosec

send packet US to Europe and back

150 milliseconds = 150,000,000 nanosec


나는 도대체 나노초가 어느 정도인지 감도 잘 오지 않는다. 그래도 뭐 외우라면 외워야지.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/267 관련글 쓰기

  1. 초보 at 2012/03/25 11:46 [edit/del]

    락 거는 게 메모리 접근 보다 빠르다는게 놀랍네요.
    저는 매우 느릴거라고 생각했는데...

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012/03/26 12:07 [edit/del]

      Mutex lock이 뭘 말하는건지 잘 모르겠지만 뮤텍스 커널 오브젝트를 생성하고 획득한다던지 하는 내용은 아닌 것 같습니다. CPU가 제공하는 LOCK 명령어를 저렇게 쓴 건 아닐까 싶네요.

submit

그는 결코 틀리는 법이 없어.
자신이 만났던 가장 위대한 해커이자 비아웹의 절친한 동료였던 로버트 모리스를 보고 하던 말.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/266 관련글 쓰기

submit
제로데이 - 4점
마크 러시노비치 지음, 김지량 옮김, 정관진 감수/제이펍
마이크로소프트의 테크니컬 펠로우이자 윈도 인터널의 저자인 마크 러시노비치가 사이버 보안에 관련된 소설을 썼다길래 원서가 나왔을 때부터 얼른 번역되기를 기다리고 있었다.
이번 주에 회사에 왔다 갔다 하면서 조금씩 읽다가 이번 휴일에 다 읽었는데 읽는 내내 실망감을 감출 수 없었다. 읽으면서 어쩌면 마크 러시노비치는 기술적인 몇 가지 부분의 아이디어만 제공하고 다른 사람이 전체적인 내용을 써내려갔을지도 모르겠다는 생각이 들었다. 하긴 그렇게 바쁜 사람이 무슨 소설을 쓴다고.
전체적인 구성이 별로였다. 기술적인 부분도 재미가 없었으며 주인공들의 로맨스도 어설펐고 긴장감도 없었다. 훌륭한 엔지니어가 훌륭한 소설가가 되는 것은 어렵다는 것만 배웠다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/265 관련글 쓰기

submit
이스트소프트 블로그에 반가운 글이 올라왔다.
한 때 흠모했던, 내게 많은 영향을 주었던 어떤 분의 이야기.

프로그래머 민영환 부사장을 만나다.
 
 

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/264 관련글 쓰기

submit

마이크로소프트가 OS 업그레이드시 고의로 기존 응용 프로그램들이 동작하지 않도록 만든다는 비난을 받을 때면 나는 정말 화가 난다. 만약 어떤 프로그램이 윈도우 95에서 실행되지 않는다면 나는 이를 개인적인 실패로 받아들였다. 나는 수 많은 밤을 새어가며 윈도우 95에서 응용 프로그램들이 제대로 동작할 수 있도록 써드 파티 프로그램들의 버그까지 디버깅했다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/263 관련글 쓰기

submit
이거 당황스럽군요.

몇 일전 Going Native 2012 키노트 발표에서, 적절한 자료구조와 알고리듬을 사용하라는 이야기를 하던 중 준비한 프리젠테이션 자료가 한장 빠진 것을 깨닫고서는.

비야네의 예기치 못한 방송사고(?)에 긴장해서 지켜보다가 그의 대처에 폭소하여 쓰러질 뻔했다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/262 관련글 쓰기

submit

세상은 점점 더 좋아져간다. 빨리 빨리 재미있고 편리한 것들이 잔뜩 나오길.

http://www.h-online.com/open/news/item/Canonical-announces-Ubuntu-for-Android-1439874.html
http://www.ubuntu.com/devices/android
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/261 관련글 쓰기

submit
C++에서 함수 이름이 맹글링 되는 것은 다들 알고 있는 사실일 것이다.
링커 오류를 만나게 되면 원인을 분석하기 위해 때때로 함수의 오리지날 이름이 알고 싶을 때가 있다. 마이크로소프트의 도구로 만들어진 함수들에 대해서는 undname 이라는 프로그램이 바로 그런 일을 해준다.

레이몬드 첸의 한 포스트를 읽다가 그는 단순한 함수들에 대해서는 undname을 사용하지 않고도 한눈에 척 알아볼 수 있는 것 같다는 느낌을 받았다.
어떻게 그런 일을 할 수 있는지 알아보다가 강성훈씨가 쓴 이 포스트를 보게 되었다. 그가 말하는 것처럼 아마 현재까지 가장 잘 정리된 자료라는데 동의한다. 어린 나이에 정말 대-_-단 하다고 밖에는 말할 수 없다.

...하지만 나는 한참 살펴보다가 결심했다.
'빌어먹을. 나는 그냥 undname이나 써야겠다.'

흐아, 생각처럼 간단한 일이 아니었다.
그런데 레이몬드 첸은 정말 간단한 함수 정도는 추측할 수 있는 것일까? 아직도 잘 모르겠다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/257 관련글 쓰기

  1. gcd at 2012/02/22 06:38 [edit/del]

    msvc로 mangling 당한 이름에 처음 접했을 때 꽤나 당황했었지요.
    저 룰도 컴파일러마다 다른 모양이라 (거기에다 msvc 9.0부터 규칙-이라기보단 인코딩-이 바뀌었다고 하고...) 링크 시간에 호환이 되긴 하나 하는 의문도 들더라구요.
    여튼, 저 암호(?)를 풀 수 있다는 사실을 알았던건 Dependency walker를 써보면서였군요. 포스트와 다르게 DLL 파일의 export/import된 함수들을 볼 수 있지만, C++ 로 만든(그것도 msvc로 컴파일 한) 몇 비공개 라이브러리에 들어있는 멤버 함수들을 다 볼 수 있어서 신났던 기억이 나네요.

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2012/02/22 10:22 [edit/del]

      저는 9부터 바뀐줄 몰랐습니다. 그런데 그런 걸 바꾸면 부작용이 엄청날텐데. 호환성은 어떻게 맞춰줬을지 궁금하군요.

    • gcd at 2012/02/22 21:19 [edit/del]

      룰이 바뀌었다기보단, 인코딩 처리하는 방법이 ANSI에서 UTF-8로 바뀌었다고 하더라구요.
      대부분 영문 명칭을 쓰기 때문에 임팩트가 거의 없을 것입니다.
      아니, 임팩트가 없었으면 좋겠는데, 8.0 이전에 만든 obj와 이후에 만든 obj 사이에서 가끔 링크 오류가 나긴 하나보더라구요. msvc 8.0용으로 땜빵(?) 패치가 나왔었고(이것도 주로 일본어권의 요구사항으로... 그러고보니 바뀐건 9가 아니라 8부터였네요.) 9.0 이후로는 지원 계획이 없다고 하네요.

      적고보니 mangling이랑 별로 상관 없네요. 헷갈리게 한 것 같아서 죄송합니다.

submit


윈도 인터널 6판이 곧 나오는 것 같다. 이번에는 2권으로 분리되어 나오는 것 같은데 내용도 많이 보강이 될 것 같아서 기대가 된다. 이번에 번역은 누가 하려나. 빨리 번역되었으면 좋겠다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/260 관련글 쓰기

submit
조엘 온 소프트웨어 - 10점
조엘 스폴스키 지음, 박재호.이해영 옮김/에이콘출판
2006년도에 이 책을 읽은 적이 있다. 사실 나는 그 때 조엘을 마이크로소프트에서 잠깐 일했던 평범한 엔지니어 정도로 알고 있어서 그랬는지 몰라도 이 책에서 별로 감동을 받지 못했다. 지금은 조엘이 얼마나 똑똑하고 대단한 사람인지 잘 아는데다가 얼마전에 레이몬드 첸의 블로그에서 링크된 조엘의 추상화의 함정에 대한 글을 따라가서 읽다가 예전에 이 책을 너무 대충 읽은 것이 아닌가하는 생각이 들어 다시 한번 읽기 시작했다.

책을 몇 페이지 읽은 순간부터 정말 그랬다는 것을 알았다. 당시에 나는 조엘의 프로그래밍과 소프트웨어 관리에 관한 철학, 농담 따먹기들을 이해하기에는 너무 햇병아리였다. 이번에 다시 읽을 때는 또 놓치고 지나가는 내용이 있을까봐 아주 주의 깊게 읽었다. 언젠가 조엘의 책 4권 중에 조엘이 엄선한 블로그 베스트 29선이 가장 재밌었다고 말한 적이 있는데 이제 그 말을 바꿔야겠다. 1등은 두말할 것도 없이 오리지날 조엘 온 소프트웨어라고 말하고 싶다.

이 책에 나오는 내용들은 10년쯤 전에 쓰여졌는데 모든 좋은 책들이 그렇지만 여전히 그 내용이 유효하다. 오히려 지금 다시 읽어보니 더욱 재미있는 것 같다. 어떤 기술들은 망한다 어떤 회사들은 망한다 했는데 지금 와서 보니 대부분 맞아 떨어졌으니 어찌 재미가 없겠는가.

조엘의 공격적인 성향에 대해서는 뭐라고 해야할지 모르겠다. 실명을 거론하면서 바보라고 말하는 것을 서슴치 않는데 상대방들은 얼마나 기분이 나쁠까. 그 바보들 중에는 진짜 stupid 들도 있겠지만 켄트 백이나 에릭 레이몬드 같은 유명하고 실력있는 해커들도 있다. 1,2년 전 쯤 언젠가는 조엘이 스택오버플로 팟캐스트에서 TDD 욕을 신나게 하다가 정말 켄트 백하고 심하게 싸움이 붙었던 적도 있다. 이런 성향을 좋다고 할 수는 없지만 이런 것들이 그의 책을 읽는 독자들을 더욱 즐겁게 해줬다는 것은 분명하다. 싸움 구경만큼 재밌는게 없다는 말이 있지 않는가.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/258 관련글 쓰기

  1. 후니 at 2012/02/12 22:29 [edit/del]

    조엘이 그렇게 뛰어난 사람이었나요? ㅎ 재호님 글을 읽고나니 다시 한번 보고 싶어지네요 ^_^

    Reply
  2. Favicon of http://blog.naver.com/empty_wagon BlogIcon 주의사신 at 2012/05/14 09:07 [edit/del]

    그 책에 "차세대 Windows API는 HTML입니다"라는 내용이 있는데, 처음 읽을 때 설마 그럴라고 하면서 읽었지만, 지금 Windows 8에 HTML5로 앱 개발이 가능한 세상이 되어서 참 놀랐습니다...

    사무엘님 블로그 타고 왔습니다. 반갑습니다.

    Reply

submit

뭔가 의심이 갈 때면 프로세스 모니터를 실행시켜 확인해 봐라.
데이비드 솔로몬은 그의 제자였던 마크 러시노비치에게 종종 이 말을 했다고 하는데, 마크 러시노비치는 이를 마치 하나님의 말씀처럼 신봉했다고 한다. 심지어는 자기 딸이 학교 숙제를 가져와서 아빠 이거 모르겠어요 할 때도, "프로세스 모니터로 확인해보거라." 라고. -_-; 아마 딸도 컴퓨터공학을 배우나 보다. 마크 러시노비치를 닯았다면 예쁘겠지.

나도 이 말을 잘 지키고 있다. 프로세스 모니터는 사람들이 잘 모르는 디버깅 도구 중 가장 유용한 하나이다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/259 관련글 쓰기

submit

1 2 3 4 5 ... 9