개발자로 살면서 가장 큰 영향을 받은 책이라면 역시 "실용주의 프로그래머" 이다. 윈도우즈 플랫폼과 비주얼 스튜디오 환경에서 벗어날 생각조차 하지 않고 있던 나에게 Ruby on Rails, Python 등을 공부하게 만들었고, 리눅스 환경과 웹 프로그래밍 등 다양한 분야에 관심을 가지게 만들어 준 책이다. 슬럼프에 빠질 때면 한번씩 다시 읽을 정도로 나에게는 큰 의미가 있다.
최근에 읽은 책들도 "실용주의 프로그래머" 만큼이나 꽤 큰 의미로 다가와서 글로도 남기고 싶어졌다.
코드
이 책은 2001년에 나온 책인데, 이제서야 알게 됐다.
찰스 펫졸드의 통찰력은 정말 놀랍다.
찰스 펫졸드 하면 Windows 프로그래밍 서적만 쓰는 것으로 알고 있었는데, 이런 참신하고 Windows와 관계 없는 책을 썼다는게 신비롭다. (그럼에도 불구하고 이 책의 Copyright 는 Microsoft 다. 노예냐 펫졸드는....;;;)
책의 내용은 정말 훌륭하다. 본인 스스로도 자신의 최대 역작이라고 얘기할 정도!!!
사실 훌륭한 수준이 아니라, 개발자라면 보면서 감동 받아서 울면서 봐야할 수준이라고 생각...
찰스 펫졸드가 쓴 책이고 제목도 CODE 이지만, 프로그래밍 기술에 대한 내용은 전혀 없다.
아래에 설명할 CPU 에 대한 책 보다 더 근본적인 내용을 다루고 있다.
모스 부호와 점자의 탄생. 그리고, 전지의 작동 원리부터 시작해서 논리 회로로 넘어가며 컴퓨터의 작동 원리에 대해 얘기하는데 정말 빠져든다. 너무 재미있다.
심지어 전지 쪽 부분을 볼 때는 우리 나라 물리 교과서가 이 정도로 재미있고 흥미롭게 물리학에 대해 관심을 가지게 했었다면, 내가 개발자가 아니라 물리학자를 꿈꿨을지도 모르겠다는 생각까지 들 정도였다. (아, 물론 쉘든 쿠퍼를 보면 물리학은 내가 건드릴 수 있는 분야는 아니라고 생각한다)
덤으로 책의 종이 커버를 벗기면 아래와 같은 모습인데, 완전 멋있다 -_-;
제목도 무려 2진수로 1000011 1001111 1000100 1000101
개발자라면 정말 꼭 읽어볼만한 책인 것 같다.
이런 책을 읽고 개발자를 시작할 수 있는 사람은 정말 축복 받은 사람이다.
프로그래머가 몰랐던 멀티코어 CPU 이야기
구입하고 2년 정도 읽지 않고 방치했다가 이제서야 읽은 책.
제목만 봐도 2년 이상 방치해놓고 싶게 생겼다. CPU 이야기, 그것도 멀티코어 CPU 라니...
그리고 슬쩍 책을 펼쳐보면 종종 어셈블리 코드나 CPU 시뮬레이션 코드가 나오는데, 당연히 안보고 싶지... -_-;
하지만, 그것은 나의 착각!
이 책은 재미있다. 그것도 대단히. 충격적으로.
윤성우의 "뇌를 자극하는 윈도우즈 시스템 프로그래밍" 에도 컴퓨터 하드웨어에 대한 기본 지식은 설명되어 있는데, 아무래도 프로그래밍에 대한 책이라서 이 책 만큼 재미있고 자세하지는 않다.
내가 이 책을 보기 전까지 CPU 에 대해 알고 있던 것은
- 컴퓨터의 두뇌. 빼면 컴퓨터가 안켜진다.
- CPU 란 비싼 부품.
난 인텔을 좋아는 하지만 "빠"는 아니어서, 가성비가 좋다면 AMD 를 쓴다.
- 3Ghz 라면, 초당 3억번의 시그널을 처리
2Ghz 짜리 4코어라면, 초당 8억번의 시그널을 처리.
음, 감이 안오는 수치인데? 대체 CPU 만든 애들은 무슨 짓을 하는건지...
일단, 이 책을 읽고 난 소감을 얘기하자면,
난 로버트 저메키스의 "컨택트" 를 재미있게 봤음에도 외계인의 존재는 믿지 않았는데, 인텔이나 AMD 에는 정말 외계인이 있을 것 같기도 하다. 인간이 공부하거나 노력한다고 만들 수 있는게 아닌것 같은데 CPU 는?;
인류의 4대 발명품에서 전쟁을 불러 일으킨 "화약" 을 빼고, 나침반, 인쇄술, 종이, 그리고 FOX 채널의 "24시" 를 넣는게 좋겠다고 주장했는데, 생각이 바뀌었다.
인류의 4대 발명품은 진공관, 트랜지스터, CPU, 그리고 튜링 머신이다.
실제 코딩을 가르쳐 주는 책과 다르게 이런 구조에 대한 것들은 배우고 나면 "깨달음"을 얻을 수 있다.
디자인 패턴을 배우면 설계나 코드가 아름다워지는데, 구조에 대한 것을 배우면 컴퓨터 세계를 보는 시각이 달라진다.
- 인털 펜티엄의 부동 소수점 연산은 왜 오류가 있었는지
- L1, L2, L3 캐시는 왜 있고 왜 나눠놨는가?
- PS4 와 Xbox One 성능 차이는 어떨 것인가? (이런 내용은 없지만, 메모리 대역폭 문제)
- GPU 는 대체 CPU 랑 어떻게 다르지?
- CISC, RISC, ARM 계열은 또 어떻게 다른가? Atom 은?
같은 하드웨어의 궁금증이 싹~ 해결되고,
- 가상 테이블을 사용하면 왜 성능이 저하되나?
- 포인터를 쓴다고 속도가 빨라지는 것은 아니다. 더 느려질 수도 있다.
- 컴파일러는 어떻게 최적화를 하지?
같은 개발에 관련된 깨달음 or Tip 도 있다.
궁극적으로는 이런 여러가지 기반 지식들 (하드웨어 구성, 운영체제, 자료구조 등) 이 모이고 쌓여서 실제 개발에 까지 영향을 준다. 꼭 C/C++ 같은 로우레벨 언어를 사용하는 개발자에게 뿐 아니라, C#, Java 개발자나나 Python, Ruby 같은 동적 언어 개발자에게까지 모두.
이 책도 CODE 와 함께 꼭 읽어볼만한 (그것도 여러번) 책으로, 강력 추천.
폴리그랏 프로그래밍
호불호가 좀 갈리기는 하지만, 그래도 (한국의) IT 업계에서 가장 열정을 가지고 책을 쓰고 있는 임백준의 새로운 책이 나왔다. 이름하여 '폴리그랏 프로그래밍'
폴리그랏은 '여러 언어를 사용하는 것' 을 뜻하는 말로, IT 용어가 아니라 원래 존재하는 용어이다.
그리고, 개발에 있어서 '폴리그랏 프로그래밍' 을 주장하는 것 역시 임백준이 처음은 아니다. 맨 처음에 언급했던 "실용주의 프로그래머" 에서 이미 1년에 스크립트 언어 1개씩은 배워둬라.. 라고 조언하고 있다.
다만, 앤드류 헌트, 데이비드 토머스의 주장이 개발자의 발전을 위해서라면, 임백준씨는 좀 더 현실적인 경험에 의해 이미 폴리그랏이 아니면 개발자가 살아갈 수 없는 세상이 도래했다고 주장하고 있다.
그리고, 난 이 주장에 동의한다. 아주 전적으로!
개발 언어를 여러개 해둬야 하는 이유는 시대적으로 그럴 필요가 생겨서 직장 생활을 잘 하기 위함도 물론 있지만... 무엇보다 "재미있으니까" 이다.
C++ 만 하다가 C#, Java 을 했을 때도 재미있었지만, 다시 Python, Ruby, Node.js 같은 것을 할 때의 재미도 끝내준다. 재미만 있나? 실용적이며 생산성도 엄청나게 훌륭하다. 실제로 많은 유명한 IT 기업들이 이미 도입을 하고 있다. 이제서야 Scala 를 공부하려고 하는 내 경우에는 사실은 좀 '늦었다'
개발 환경도 마찬가지, Visual Studio 만 고집하는 사람도 있고, vi 가 아니면 죽음을 달라(!) 라고 하는 사람들도 있다. 또, Eclipse 가 익숙하다고, 새로운 걸 배우는게 힘겹다고 다른 IDE 를 사용하는 것을 적극 반대하는 사람들도 있다. 물론 워낙 뛰어난 IDE (IntelliJ 같은) 를 사용하다 보니 더 후진 것으로는 못간다~ 하는 경우도 있지만, 그럼에도 불구하고 새로운 개발 환경과 언어는 항상 배워두는게 좋다고 생각.
어쨌든, 이 책은 Java 와 C# 그리고 Scala 에 대해 한 챕터씩 할당에서 어떻게 시대가 변했는지 얘기하고 있다. 내용도 재미있고, 지식적으로도 배울 부분이 많다.
Java 를 주력으로 하고 있는 사람이라면 더욱 볼만한 책.
'개발' 카테고리의 다른 글
개발했던 유틸리티들을 github 에 OpenSource 로 공개 (0) | 2017.02.13 |
---|---|
redmine 메일 셋팅 - Exchange Server (2) | 2014.02.07 |
안드로이드 : phonton-android, NoClassDefFoundError (0) | 2014.01.06 |
다시 사용하기 시작한 VirtuaWin, N드라이브 (0) | 2013.05.12 |
맥미니 2012 설치기 (마운틴 라이언, 그리고 부트캠프) (8) | 2013.05.07 |
JDK 8 업데이트를 했더니, 이클립스에서 인식이 안되는 상황이 발생했다.
jre8 이라고 나오긴 하고, 컴파일도 문제는 없지만,
다른 버전은 JavaSE-1.6, JavaSE-1.7 이런식으로 잘 나오는데,
JDK 8 만 jre8 (...)
기분이 나쁘잖어~
알고보니, Eclipse Kepler SR2 (4.3.2) 에서 JDK 8 을 지원하기 위해서는 패치가 필요하다.
https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler
패치하고 나니까 아름답게 JavaSE-1.8 등장...
별것은 아니지만, 기분이니까!
'개발 > 개발툴' 카테고리의 다른 글
안드로이드 스튜디오에서 빌드(gradle) 보안(SSL) 이슈 (0) | 2019.08.08 |
---|---|
Visual Studio (VC++) 에서 새 파일을 UTF-8 (0) | 2013.05.13 |
이클립스, 비주얼 스튜디오 2010 환경 설정 (3) | 2012.01.14 |
궁극의 프로그래밍 에디터 e TextEditor의 강력한 10가지 기능 소개 (3) | 2010.12.11 |
우분투 이클립스 파이썬 한글 문제 (0) | 2010.04.29 |
DVD 나 블루레이가 아닌 파일 형태의 동영상이라면 보통 PC 로 보는 것이 일반적이지만, 컴퓨터에 익숙하지 않은 부모님 세대나 어린 아이들에게는 간단히 조작 가능한 전용 플레이어 기기가 더 유용할 것이다.
맨 처음 사용한 기기는 무선 공유기로 유명한 ipTime 에서 나온 H35 라는 모델.
그야말로 초창기 DivX 코덱 정도만을 지원하는 기기였는데, 파나소닉의 AE-300 이라는 프로젝터와 연결해서 꽤 유용하게 사용했던 것 같다.
크기가 좀 큰 편이고 (IDE 하드를 내장하는 방식이니까 당연히), 소음도 좀 큰 편이지만 꽤 오랜 기간을 플레이어로 유용하게 사용했고, 지금은 IDE 용 외장 하드 케이스(...) 로 사용하고 있다.
그 후로 사용한 플레이어는 크라이저에서 나온 minicube x6+ 였는데, 2.5 인치 하드 디스크를 내장할 수 있는 모델로 작고 심플한 디자인을 자랑하는 녀석이었다.
성능도 꽤나 좋아서, 20기가를 넘는 mkv 파일도 부드럽게 재생할 정도.
부모님댁에 선물로 구입해서 사용해보니 만족도가 대단히 높아서 추가로 1개를 더 구입해서 사용했다.
자막 처리도 좋고 모든 기능이 만족스러웠으나...
치명적인 단점이 있었으니, "손상된 파일" 에서 크래시가 난다는 것.
LG 미니빔 61K 의 자체 플레이어에서 별 문제없이 플레이가 되는 (즉, 손상된 부분에 대해 건넌 띈다던가) 파일들이 minicube X6+ 에서는 다운되는 현상이 발생했다.
이렇게 되면 보던 부분을 기억하지 못해서, 다시 위치를 찾아야 하며 손상이 일어난 부분은 일일이 시간 점프 기능을 이용해서 넘겨줘야 했다. 아 이런 맙소사.
이 부분 때문에 크라이저에 여러번 문의를 했으나, 하드웨어 특성상 어쩔 수 없다는 답변을 들었고, 펌웨어 업그레이드가 있을 예정이니 일단 기다려보라고 했으나 지금까지도 펌웨어 업그레이드는 없었다.
개발자로써 생각할 때 손상된 파일을 불러와서 플레이 하다가 다운되는 현상은 소프트웨어 적으로 해결 가능했으리라고 생각한다. 즉, 다른 라인업 때문에 크라이저가 X6+ 의 펌웨어 업그레이드를 소홀이 했다는 기분을 지울수가 없네...
뭐, 진작 사용을 포기하고 판매해 버렸기 때문에 상관없지만.
어쨌든 X6+ 의 파일 크래시 문제로 고통을 겪은 후 칩셋에 관심을 가지기 시작했다.
재생 능력만큼은 발군이었던 X6+ 의 경우 boxchip a10 (allwinner a10 과 같은 종류인듯) 을 사용했는데, 정보를 수집해보니 영상 칩셋이 대단히 중요한 부분이라는 것을 알게 됐다.
당시 전용 플레이어만 고려하고 있었기 때문에 가격도 저렴하고 성능도 꽤 좋아 보이는 하이언스 TV001 (리얼텍 1055 칩) 을 중고로 구매하려고 했으나, 물건이 잘 나오지 않는 것과 질문/답변 게시판을 확인해 본 결과 동영상 크래시는 X6+ 랑 별 차이가 없는게 아닌가 싶어서 결국 모험을 하지 않고 포기.
boxchip a10 의 성능에는 꽤 만족한 상태였기 때문에, 다른 대안을 찾던 중 안드로이드 미니 PC 에 대해 알게 되었다. 아니 정확히는 미니PC의 존재 자체는 알고 있었으나, 그냥 장난감 정도로 생각하고 있었는데 알고보니 이 미니 PC들이 HTPC 로 활용하기에 아주 좋다는 것을 깨달았다.
특히, 다양한 모델이 존재하는 리코매직의 MK802ii 는 내가 만족한 allwinner 의 A10 칩셋을 사용하고 있었다.
게다가 중고 가격도 저렴. 5만원이면 구입이 가능했다.
꽤 괜찮은 전용 동영상 재생 기기들이 10만원 가까이 하는 것을 고려하면, 가격대비 매력이 충분했다.
MK802ii 에 대한 검증이 부족했기 때문에 우선은 1개만 구입을 했다.
HDMI 와 외장 하드를 연결하고, 무선 마우스까지 연결해서 작동~
아주 익숙한 안드로이드 화면이 떴고, MX Player 를 설치해서 재생...!
720p~1080p 까지 거의 모든 포맷이 정상적으로 플레이가 가능했다.
더욱 좋은 점은 플레이어를 "선택" 할 수 있으며, 무선랜을 이용해서 NAS 에서 불러와서 보는 것도 가능하다는 점. 물론 MK802ii 의 무선랜 성능은 형편없고, 발열도 심하기 때문에 그 기능은 사용 안하게 됐지만 가능한 것만으로도 재미있잖아?
어쨌든 미니 PC 이기 때문에, 웹 브라우징과 YouTube 등도 지원하기는 하는데...
정신 건강을 위해서는 동영상 재생 외의 목적으로는 사용하지 않는 것이 좋다.
만약, 동영상도 보면서 각종 안드로이드 PC 용도로 사용하고 싶은 경우에는 좀 더 고성능의 칩셋이 장착된 미니 PC를 구입하는게 좋겠다.
전문 동호회에서 확인해보니 allwinner 의 최신칩 a31 의 경우에는 나온지가 꽤 됐음에도 불구하고 펌웨어의 안정성이 좋지 않은 것 같고, Rockchip rk3188 을 사용한 MK802IV(CR9S) 정도가 무난한 것 같다.
내 경우에는 미니 PC 를 오직 동영상 플레이어로만 사용하고 있어서 지금 MK802ii 에도 크게 불만은 없어서 업그레이드 할 계획은 없지만, 추후 무선랜으로 1080p 도 가뿐하게 플레이할 정도의 성능이 나오는 모델이 나온다면 고려해 볼 여지는 있을 것 같다.
여전히 동영상 플레이 기기들은 수십~수백 종류가 판매되고 있는데,
안드로이드 앱 실행 정도가 가능한 사용자라면 미니 PC 쪽을 선택하는게 더 나은 선택이 될 수도 있다.
참고 카페 : http://cafe.naver.com/mk802
'IT' 카테고리의 다른 글
라즈베리파이 2 vs 오드로이드C1 (0) | 2015.02.04 |
---|---|
우분투 14.04 에서 와이파이 아이콘 사라짐 (0) | 2015.01.14 |
코보 글로 (kobo glo) 구입 & 사용기 (2) | 2013.09.14 |
외장 하드 케이스 HC-3500S to ipTIME HDD3035 (2) | 2013.07.27 |
전자책들 간단 사용기 (0) | 2013.07.15 |