Media Log

Clean Code 클린 코드 - 9점
로버트 C. 마틴 지음, 박재호.이해영 옮김/케이앤피북스
언젠가 어떤 책을 읽다가 모든 디자인 패턴은 중복을 제거하려는 시도로부터 나왔다는 내용을 읽은 적이 있다. 중복을 제거하는데 집중하게 되면 결국 현재 잘 알려진 디자인 패턴 중 하나를 사용하게 된다는 내용이었는데 나는 그 말이 참 마음에 와닿았다. 그 이후로는 쓸데없이 여기는 이 패턴을 적용해야지 하는 생각들을 버리고 그냥 맘 편하게 중복을 제거하는데 집중해서 프로그래밍 하고는 했는데 그 방법이 훨씬 더 좋은 것도 같다. 어쨌거나 그 글을 이 책에서 읽은 줄 알았었는데, 다시보니 이 책이 아니었었나 보다. 어느 책에서 읽었는지 도대체 기억이 나지가 않는다. 다시 한 번 보고 싶은데. 혹시 알고 계신 분이 있으면 좀 가르쳐주세요.

이 책은 책 제목 그대로 어떻게 클린 코드를 작성하는지에 대해서 다룬다. 디자인 패턴하고도 밀접한 관계가 있고 리팩터링하고도 관련이 있다.
변수 이름을 짓는 간단한 방법부터 시작해서 어떻게 잘 설계된 클래스와 인터페이스를 만드는지, 어떻게 리팩터링을 하는지에 대한 훌륭한 지침들이 가득 담겨져 있다. 하나하나 읽으면서 음미할 수 있고 고민이 되는 잘쓰여진 좋은 책이다.

그런데 책 중간부터는 뭔가 실전처럼 보여주기 위해 남의 코드를 리팩터링 하는데 하필 그 중 한 코드가 도널드 커누스가 작성한 코드이다.
리팩터링할 코드는 찾아보면 쌔고 쌨을텐데 하필 커누스인가. 최고의 프로그래머에 대한 예의를 갖추는 것처럼 말은 조심스럽게 하지만 결국 당신 코드는 읽기는 참 어렵단 말이야, 내 코드가 더 낫지! 라고 말하는 것 같다.

..그래서 별 반 개 깍았다. -_-ㅋ
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
웹 개발자를 위한 웹을 지탱하는 기술 - 8점
야마모토 요헤이 지음, 김성훈 옮김, 권정혁 감수/멘토르
세련되게 잘 만들어졌다고 생각되지는 않지만, 그럼에도 불구하고 어느샌가 세상에 너무도 깊숙이 파고들어 사용되고 있는 응용 프로토콜이 있다. 이 책의 제목인 웹을 지탱하는 기술의 1번 타자인 HTTP 이다.

이 책은 Restful 하다는 것이 무엇인지에 대해서 잘 가르쳐주는 책이다.
책의 초반부에는 웹과 HTTP의 역사를 말해주는데 재밌게 읽었다.
그 이후에는 HTTP 프로토콜에 대해서 많은 장을 할애하고 뒤에서는 Atom, Json, 마이크로포맷 등에 대해서도 다룬다.

아주 깊은 내용을 다루는 것은 않지만 이런 주제를 다루는 한글책이 그동안 거의 없었다는 것을 생각해보면 한번쯤 사서 읽어볼 가치가 있는 책이다. 내용도 꽤 재미있다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
윈도의 레지스트리에 무엇인가를 기록하면 항상 영구적으로 저장된다고 생각하는 사람들이 많이 있는 것 같다.
윈도는 일회용으로 레지스트리에 정보를 기록할 수 있는 방법 또한 제공한다.

RegCreateKeyEx 함수를 통해 레지스트리의 키를 생성할 때 REG_OPTION_VOLATILE 옵션을 주면 데이터를 일회용으로 저장할 수 있다.

컴퓨터가 켜져있는 동안 일회성으로 정보를 기록하고 나중에 종료될 때 지워야 할 경우를 종종 맞닥드리게 되는데, 이럴 때 해당 옵션을 사용하면 편리하다. 마치 CreateFile의 DeleteOnClose 옵션과 비슷하다고도 할 수 있겠다. 이런 옵션을 사용하지 않으면 응용이 종료될 때에 직접 데이터를 정확히 지워줘야 하며, 응용이 비정상 종료된다거나 하면 더욱 골치 아파지고 에러 처리를 하기 위해서 쓸데없는 로직을 집어 넣게 된다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
윈도를 쓰면서 불편한 점 중 하나는 일을 하다보면 어느새 10개 20개씩 떠있는 윈도 탐새끼이다. 물론 GNOME의 노틸러스나 KDE의 이상한 탐색기보다는 너무 너무 잘 만들었다고 생각하지만. 

어쨌거나 얼마전에 오픈소스 뉴스를 보다가 Explorer++ 이라는 프로젝트를 발견했다.

http://www.explorerplusplus.com/software/images/screenshots/screenshot_2.png


토탈 커맨더라는 이 분야 최고의(?) 프로그램이 있지만 Explorer++는 오픈소스이고 완전히 자유롭게 쓸 수 있다는 점에서 차별점이 있다.
몇 일간 써봤는데, 그럭저럭 맘에 들어서(맘에 안드는 점들도 많지만) 이제는 Windows + E 키를 Explorer++로 매핑시켜 놓고 잘 사용하고 있다.

좋은 점
  • 탭 기능을 지원한다. 물론 껐다켜면 탭들이 모두 그대로 복원되므로 자주 사용하는 위치들을 탭으로 몽땅 띄워놓고 사용하면 된다.
  • 여러 인스턴스가 뜨지 않도록 할 수 있다. 프로그램을 한번 더 실행시켜도 새 탭만 하나 더 생긴다. 내가 가장 바랐던 기능이다.
  • 폴더 사이즈도 표시할 수 있다. NTFS는 폴더 크기에 대한 정보를 가지고 있지 않으므로 Explorer++이 뒤에서 열심히 돌면서 사이즈를 구해낸다. 나는 이 기능은 사용하지 않는다.
  • 파일 1개 짜리 프로그램이다. 나는 인스톨러로 설치안하고 바로 사용할 수 있는 이런 프로그램들이 너무 좋다.
  • 오픈 소스이다.

나쁜 점

  • 잘 뒤진다.
  • 안 예쁘다. 토탈 커맨더보다는 조금 더 나은 것 같기도 하지만.

근데 난 작명할 때 ++ 이란 말 좀 쓰지 말았으면 좋겠다. 발음하기도 어려운데다가 정말 촌스럽지 않은가?

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 예상영 at 2013.05.17 12:37 신고 [edit/del]

    Windows + E 로 연결하는 것은 AutoHotKey 같은 것을 쓰신 건가요? 아니면 다른 프로그램 설치 없이 가능할까요?

    Reply

submit
웹으로 배운다 - 6점
우메다 모치오 & 이이요시 토오루 지음, 김주란 옮김/제이펍
2008년도엔가 우메다 모치오의 웹진화론을 너무 재밌게 읽어서 그가 쓴 신간들은 항상 읽어보고 있는데, 새로나오는 책들은 그 때 만큼 충격적이고 재미있지는 않다.
이 책은 웹진화론에서도 다뤘던 MIT의 오픈코스웨어 같은 무료 오픈 교육을 책 전체의 주제로 다룬다. 나는 처음 책 제목만 보고는 이 책이 그런 내용일 것이라고는 생각들지 않았는데 제목이 좀 잘못지어지지 않았나 싶기도 하다.
 웹진화론에서 우메다씨는 오픈코스웨어가 왜 성공하지 못했었는지 비관적으로 봤었는데, 이 책에서 그런 이야기들을 다른 저자와 함께 토론 형식으로 좀 더 심도있게 다룬다.

현재는 MIT의 OCW 말고도 예일대학교의 OYC나 카네기 멜론대학 OLI가 생겼고 앞으로 더 많은 대학에서 시도할 것 같다. 특히 카네기의 OLI는 MIT처럼 문어발식으로 이것 저것 대충대충(?) 만들지 않고 몇몇 과목에 집중해서 만들려고 하는 의지가 보이는데 아쉽게도 내가 관심있어하는 컴퓨터 과학 분야는 아직 없다. 그렇지만 곧 Secure Coding, Principles of Computing 등 재밌어 보이는 과목들이 개설될 것 같아서 기대하고 있다.

그래도 제일 오래해왔고 가장 많은 강의를 보유한 MIT에는 마법사책으로 유명한 컴퓨터 프로그램의 구조와 해석이나 Introduction to Algorithms 등 아주 유명한 강의들도 있는데, 이게 생각했던 것처럼 도움이 되지는 않는다.
물론 가장 큰 이유는 영어이다. 영어권에서 태어난 사람들은 이런 오픈 강의들이 축복처럼 생각될지도 모르겠다만, 무슨 말인지 하나도 못알아듣겠는데 뭔 공부를 한단 말인가.
몇 년전부터 영어를 위해서 문법 공부만 신나게 했는데, 이런 동영상 강의를 볼 때마다 절반 이상 놓치면서 스트레스만 받고 있는 나를 발견한다.
뭐 그거야 어쨌든 영어를 잘 못하는 내 사정이고, 언젠가는 각 나라별로 자막도 제공해줄 것이라 믿는다. 물론 그 때까지 놀면서 기다려서는 안되겠지만.

또 한가지 아쉬운 점은 MIT에서 제공되는 동영상 강의 같은 경우 화질이 너무 떨어지는데다가 카메라도 거의 움직이지 않고 정적인 화면만을 보여준다는 점이다. 720p정도는 안되더라도 480p 정도로는 만들어야 하지 않을까? 고정된 카메라 화면은 그 자체로 수면제이다. 내가 영어를 완벽하게 이해할 수 있었더라도 이 강의를 보면 재미가 있었을까 하는 생각이 드니 말이다.
물론 이것들 또한 앞으로는 더 좋아질 것으로 기대한다. 하지만 처음 만들 때부터 좀 잘 기획해서 만들었으면 더 좋았을텐데 말이다. 게다가 MIT는 오픈 코스웨어의 갯수에만 집착하고 있는 것 같다. 즉, 이전에 강의를 만들어 놓은 것은 새로 만들지 않고 그걸로 계속 우려먹는다. 따라서 아직 오픈용으로 안만들어져있는 강의나 새로 개설되는 강의만이 오픈코스웨어에 추가되고 있으므로 기존 강의들은(정적이고 저화질의) 전혀 업데이트가 안되니 답답한 노릇이다.
그래서 카네기의 OLI나 다른 새로운 대학에서 새롭게 시도하는 오픈 교육들이 더욱 기다려진다.

P.S 출판사인 제이펍에서 오픈 코스웨어 사이트들을 잘 정리해둔 링크가 있다.
오픈 코스웨어 관련 사이트 모음
저작자 표시 비영리 동일 조건 변경 허락
신고

submit
프로그래머 그 다음 이야기 - 6점
임백준 외 지음/로드북

얼마전에 나온 신간이며, 프로그래머들이 가볍게 읽어보기 딱 좋은 책이다.
6명의 프로그래머에 대한 에세이들이 있는데 1번타자인 임백준씨의 글을 가장 재밌게 읽었다.

잠시동안 관리자의 역할을 맡게되면서 프로그래밍 실력이 떨어질까봐 걱정하는 마음.
옆의 똑똑한 동료들과 경쟁을 하고 함께 토론을 하면서 실력을 재보고, 또 그들을 도저히 이길 수 없겠다는 한계를 느끼며 좌절하는 감정들을 솔직하게 잘 썼다. 이런 것들은 프로그래밍이라는 것을 정말로 진지하게 생각하고 좋아하지 않으면 느낄 수 없는 감정들이다.

미국 회사들의 분위기를 엿볼 수 있는 것도 좋았다.
아, 그런데 임백준씨도 그렇지만 많은 사람들이 한국에서 일하는 프로그래머들이 너무도 힘든 삶을 살고 있는 것으로 생각한다.
정말 그런가? 나는 비록 경력이 5년 정도 밖에 되지 않고 회사도 2군데 밖에 다녀보지 않았지만 여태까지 그런 것은 느껴보지 못했다. 뜨거운 여름날에 와이셔츠가 온통 땀으로 쩔어서 영업하러 나갔다가 잘 안풀리고 들어와서 욕이나 실컷 얻어먹는 세일즈맨들에 비하면 시원한 사무실에 앉아서 커피 한잔 하며 코딩하는게 얼마나 편안한가.

사람들은 항상 자신이 하는 일을 더 고되고 힘들게 포장해서 자랑스럽게 말하는 경향이 있는 것 같다.
- 우리 부대군기는 진짜 빡셌어.
- 요즘 어린 애들은 버릇이 없어. 우리 때는 그런거 상상도 못했는데.
- 니가 몰라서 그렇지 우리 부서가 얼마나 힘든데.

프로그래머로서 스트레스를 받는 순간이 있다면 기능을 정해진 시간에 맞춰서 구현해낼 수 있을까 하는 약간의 초조함과 동료와 기술적으로 의견 충돌이 발생했을 때, 그리고 심각한 버그를 보고 받았는데 문제가 잘 안 풀릴 때 정도이다.

다른 직종에서 일을 해본적은 없기 때문에 비교해서 생각해볼 수는 없지만, 사람들이 생각하는 것처럼 프로그래머가 못해먹을 직종은 아닌 것 같다. 진짜 못해먹을 일 하면서 사는 사람들이 얼마나 많은데.

임백준씨의 에세이는 아주 즐겁게 읽은 반면에 다른 에세이들에서는 별로 재미를 느끼지 못했다.
이 책에 나오는 프로그래머들은 열심히 살아왔고 좋은 프로그래머들임에는 분명하지만 옆자리에서 흔히 볼 수 있는 평범한 프로그래머들이다. 그럼에도 불구하고 이미 프로그래머로써 무언가 큰 것을 이룬 사람들처럼 자서전을 쓰듯이 글을 썼기 때문에 재미가 떨어지지 않았나 싶다.

그러고 보니 정말로 무언가 큰 것을 이룬 국내 최고의 프로그래머들을 불러다가 어떻게 공부했는지 에세이를 써보라고 하면 그것도 참 재밌는 책이 될 것 같다.


저작자 표시 비영리 동일 조건 변경 허락
신고

submit
Bossie Awards 2011이 발표되었다.
어떤 오픈소스들이 잘나가고 있는지 한번 살펴봅시다.

Applications

Desktop and mobile software

Application development software

Data center and cloud software
데스크탑과 모바일 소프트웨어는 모두 내가 사용하고 있거나 사용했던 것들인데 삶을 좀 더 편하게 해주는 고마운 무료 프로그램들이다.
개발 소프트웨어들을 하나씩 바라보다가 C/C++이나 관계형 데이터베이스를 다루고 있는 사람들이 문득 할아버지처럼 느껴졌다. 나도 그 할아버지 중 하나라는 것이 슬프다, 늙어죽지 않으려면 빨리빨리 따라가야지.

2010년까지의 결과는 위키피디아에서 볼 수 있다.
저작자 표시 비영리 동일 조건 변경 허락
신고

submit