개발자들은 스타일에 관한 이야기를 하는 것을 좋아합니다. 이 문제는 마치 "무엇이 진정한 하나의 에디터일까"에 대한 이야기처럼 자주 입에 오르내립니다. 마치 이견이 있는 것처럼 말이죠. 답은 이맥스입니다. - Effective STL에서 컨테이너들의 범위 멤버 함수를 사용하는 것은 단일 요소 멤버 함수를 사용하는 것보다 모든 면에서 좋기 때문에 이견이 있을 수가 없다는 것을 설명하면서.
나는 비록 Vim을 더 좋아하지만 스캇 마이어스의 이 말을 듣고 이맥스를 배우고 싶다는 욕구가 미친듯이 몰려왔었던 때가 있었다. 비록 실패로 끝나고 말았지만.
이 책은 2004년도에 1판이 발행되었고, 최근에 2판이 나왔다.
외국에는 1/E, 2/E 처럼 1판 2판이라고 표기하는데, 국내 출판사들은 개정판이라는 용어를 좋아하는 것 같다.
개정판이 뭐지? 2판이라는 말과 뭐가 다르지? 하고 문득 궁금해서 사전을 찾아보았다.
기존 내용이 수정된 것 뿐만이 아니라 subversion 처럼 완전히 새로운 장들이 추가되었는데도 개정판이라고 하는 것은 좀 이상해 보인다.
내가 출판사 사장이면 개정판이란 말은 쓰지 않고 항상 2판 3판 이라는 용어를 사용하겠다. 기든 아니든 그게 장사하는데 더 낫지 않겠는가. 크크.
편집기인 vim 부터 시작해서 make, gcc, gdb, 그리고 형상관리툴인 svn과 cvs까지도 다루어 주므로 리눅스에서 프로그래밍을 시작하는 사람들에게는 필수이자 안성맞춤인 책이라 할 수 있겠다.
vim 챕터는 별로 기대를 하지 않았는데, 꽤 괜찮았다. 다른 책들과는 다르게 딱딱하고 형식적이지 않고 실제로 많이 쓰이는 ctags나 cscope 같은 외부툴과 몇가지 유용한 플러그인들을 함께 소개해주어서 아주 좋았다. 1판이 나왔을 때보다 지금은 좋은 플러그인이 훨씬 많이 나왔는데, 이런 것들을 좀 찾아보고 개정판에 실어주었다면 두말할 나위 없이 더 좋았을 것이다.
책 전체적으로는 도구의 여러 옵션들과 그것들을 이해하기 위해 알고 있어야 할 기본 지식을 따로 설명해주므로 누구든지 읽을 수 있도록 구성되어 있다.
하지만 저자가 OS도 만드는 등 임베디드 쪽에서 많이 일을 해서 그런지 임베디드 리눅스에 치중된 내용을 너무 많이 다루는 것 같은 느낌이 강하게 든다.
사실 리눅스 개발자 중에는 임베디드 개발자도 많지만 일반적인 서버 개발자도 그만큼이나 많지 않은가. 이런 사람들은 필요한 내용들만을 잘 골라내서 읽어야 할 것이다.
시간이 많이 흐른만큼 애플리케이션들도 많은 변화가 있었는데, 개정판에서는 이런 것들이 많이 반영되지 않은 것 같아서 아쉽다. 우분투 사용자를 배려해서 우분투에서의 설치 방법 또한 제공해주는 것은 좋았는데 우분투 버전이 7.04인가 그랬다. 맙소사. 2010년 책인데.
또한 CVS 같은 구식 툴은 과감하게 제거해버리고 svn에 git를 추가해서 설명해줬으면 더 좋았을 것 같다. 최근에는 아주 많이 사용되고 있는 cmake 도 2판에서는 꼭 설명되었어야 할 도구인데 빠져있는 것이 참 아쉽다.
마지막으로 이 책의 표지는 참으로 맘에 안든다.
예전에, 도서관에서나 회사에서 이 책의 1판 표지를 보면 항상 책 내용을 훑어보고 싶도록 나를 이끌었었는데, 이번 개정판은 내용은 전판보다 보강되었을지 몰라도, 워드나 엑셀의 표지에나 어울릴법한 아동틱한 표지로 만들어버렸다. 최근에 한빛미디어에서 나오는 책들은 대부분 이런 아동틱한 밝은 디자인의 표지인데, 개인적으로 이런 표지의 책들을 보면 별로 배울 것이 많이 담겨있지 않을 것 같아 꺼려지게 된다.
"v는 Vertical을 의미하는데 나는 왜 이렇게 이름 지었는지를 깨달을 수가 없어서 그냥 '반대' 라고 해석하고는 한다."
-> UNIX계열에서 v는 verbose나 혹은 invert로 사용됩니다.(대문자는 주로 version으로) 따라서 vim에서는 invert로 사용되었다고 생각되네요. vertical은 생소한데...아마도 아닌듯 합니다.
인터넷을 둘러보다 보면 정규 표현식을 설명하는 많은 문서들에서 언제나 빠짐없이 등장하는 단 한권의 책이다.
-거의 모든 문서들에서 많은 정규식 책들 중 오직 이 책만을 추천하고 있을 정도로 이 책의 위상은 독보적이다.
이 책은 3판(2006)까지 나와있는데, 우리말로 되어있는 것은 2판(2002)이다.
이 책의 저자는 정규 표현식 분야의 권위자이며, 실제로 정규 표현식의 발전에 많은 기여를 했다.
다음은 이 책(2판)의 목차이다. -3판에는 PHP가 추가되어있다.
1장. 정규 표현식 소개
2장. 기초 예제
3장. 정규 표현식의 기능과 종류
4장. 정규 표현식 처리 원리
5장. 실용 정규 표현식 기법
6장. 효율적인 정규 표현식 사용
7장. 펄
8장. 자바
9장. 닷넷
정규식을 처음 접하는 사람이 이 책의 1장과 2장을 보고 나면,
"이제 나는 정규 표현식의 달인이야. 이제 이 책은 더 이상 안봐도 되겠어. 나머지는 실전으로 익히자." 라는 욕망에 사로잡히게 될지도 모른다.
나는 실제로 그랬는데, 아마 저자는 이미 그런 마음을 잘 알고 있었나보다.
부디 책을 끝까지 정독하라는 충고를 곳곳에서 해주지 않았더라면 나는 분명히 이 책을 다 읽지 않았을 것이다.
그럼 이렇게 배워둔 정규 표현식을 어디에 써먹을 것인가?
정규식을 써야하는 곳은 수도 없이 많다. 아는만큼 보인다는 말이있다.
심지어 이 책의 저자는 책의 오류를 찾기 위해 정규식을 사용하기도 했는데, 이것은 정규식을 모르는 사람들은 상상도 할 수 없는 기발한 생각이다.
이런 유틸리티 목적만으로도 우리의 삶을 충분히 편하게 해주지만,
우리는 프로그램에서도 멋진 식들을 활용해보길 원한다.
프로그래밍 코드에서 정규식을 사용해야하는 가장 잦은 부분, 그리고 중요한 부분은 아마도 입력값 검증일 것이다.
요새는 오픈소스 애플리케이션을 많이 쓰고 있다. 최근 1년여 동안 내가 그동안 잘 사용했던 많은 애플리케이션들을 오픈소스 애플리케이션으로 대치했다.
하나씩 그 이유와 장단점을 살펴보면,
Internet Explorer -> Firefox 나는 2.0.0.x 부터인가 Firefox를 썼던 것 같은데, 그 때는 탭기능 하나만을 좋아했다. 익스플로러에서는 Ctrl 키를 누르고 하이퍼링크를 클릭해야 탭으로 열리고 그렇지 않으면 새창으로 열리는 경우가 많았던 것 같은데, 파이어폭스는 언제나 새탭으로 잘 열려서 그게 좋았다.
그 때 까지만 해도 익스플로러랑 파이어폭스를 반반씩 사용했었는데, 3.0 부터는 확실히 파이어폭스만을 쓰기 시작했다.
내가 파이어폭스 3.0 에서 가장 좋아하는 기능은 비밀번호 저장기능이다. 대화상자 형식으로 비밀 번호 저장 여부를 물어보지 않고, 사용자의 페이지이동을 방해하지 않은채 위에서 살짝 내려왔다가 쏙 들어가는 그 기능 때문에 익스플로러를 쓸 수가 없다. 비밀번호가 정확히 기억나지 않을 때 비밀번호를 입력한 후에 어떤 대화상자가 떠서 이 비밀번호를 저장하겠습니까 하고 물어보는 것은 아주 사용자를 고민되고 짜증스럽게 만들어준다. 파이어폭스는 비밀번호를 입력한 후에 로그인이 성공해서 다음 페이지로 넘어가는걸 눈으로 확인하고 나서 Remember 버튼을 누를 수 있다. 또 다른 좋아하는 이유 중 하나는 주소창 이다. 자주 가는 페이지 순으로 저장해놓는 것도 마음에 들고, http://google.com/groups 와 http://groups.google.com 같이 햇갈리는 주소에 대해서 고민하지 않고 groups라고 입력하면 이전에 갔었던 기록에서 찾아서 나타내주는 이 기능이 아주 맘에 든다.
Editplus, Ultraedit -> gVim vim으로 에디터를 바꾸게된 결정적인 이유는 로그파일을 살펴볼 때 원하는 문자열에 하이라이팅을 시켜놓고 쉽게 찾아볼 수 있기 때문이었다. 서버 로그를 볼 때 여러 쓰레드가 섞여서 적어 놓은 파일을 보고 있자면 눈알이 빠질 것만 같은데, 이럴 때 쓰레드 번호에 쉽게 하이라이팅 시켜놓고 해당 쓰레드의 코드 실행을 편하게 볼 수 있어서 좋았다. 한번 vim을 쓰다보니깐 크랙 버전을 구해 Editplus나 울트라 에디트를 설치하는게 너무나 귀찮아져버렸다. 또 커다란 파일을 다룰 때의 퍼포먼스나 편리한 검색 기능들이 다른 에디터로 돌아가지 못하게 만들어버렸다.
아웃룩 리더기 -> 구글 리더기
오픈 소스는 아니지만 어쨌든.
나는 RSS를 구독할 때 아웃룩에 있는 리더 기능을 사용했었는데,
집과 회사에서 동기화가 안되는게 가장 견디기 힘들었다.
그래서 나는 웹기반 서비스 중에 구글 리더기를 선택했는데,
구글 리더기에서 가장 좋은 점은 내가 관심있어하는 분야의 블로그를 자동으로 찾아서
추천해주는 기능이었다.
나는 현재 200여개 정도의 블로그를 구독하고 있는데, 이 중 절반 정도는 구글 리더기가 추천해준 블로그들이다.
Windows Vista -> Ubuntu 비스타에서 리눅스로 바꾼 이유는 그냥 심심해서, 라고 하는게 맞겠다. 어느날 집에서는 리눅스가 쓰고 싶다 생각이 들어서 우분투를 깔아놓고 쓰기 시작했는데, 처음에는 많이 불편해서 비스타로 자주 재부팅 했지만 이제는 익숙하게 잘 쓰고 있다. - 그렇다곤 해도 리눅스 데스크탑은 아직 갈 길이 한참 멀었다. 얼마전부터인가 다른 컴퓨터들의 바탕화면이 하나둘씩 까만색으로 변한 것들을 볼 수 있었는데, 나는 리눅스로 바꾸길 아주 잘했다고 생각했다.
vmware -> Virtualbox 우분투 안에서 윈도우즈를 띄우기 위해 VirtualBox를 선택했다. 이유는 물론 무료로 쉽게 구해 설치 할 수 있기 때문이었다. 성능 따위야 좀 떨어지면 어때 라고 생각했었지만, vmware를 사용했을 때와 별반 다름없이 아주 잘 쓰고 있다.
MS Word, Excel -> Google docs 나는 애플리케이션들을 다루는 능력이 거의 컴맹 수준이라 기획팀 여자들이 나를 자주 놀리곤 하는데, 내가 워드나 엑셀에서 사용하는 기능의 95%는 글씨 크기 조정, 글씨 두껍게 만들기 정도이다. Google docs라는 것을 한 번 사용해보고 난 후에 나는 갈아타지 않을 이유가 아무것도 없다는 것을 깨달았다. 내가 할 수 있는 모든 것을 Google docs에서도 할 수 있었으며, 게다가 윈도우즈나 리눅스에서, 또 집이나 회사에서 역시 잘 사용할 수 있다. Sun의 OpenOffice도 좋다고 하지만 나는 사용하지 않는다. 어짜피 글씨 두껍게 밖에 못하는거......
대충 정리가 된 것 같다. 내가 오픈소스 애플리케이션을 더 사랑하게된 이유, 1. 불법 프로그램을 다운받아 시디키를 넣고 크랙하지 않아도 된다. 2. 공식 페이지에서 쉽게 다운로드 받을 수 있다. 3. 사용하는데 있어서 불편함을 모르겠거나 상용프로그램보다 훌륭하다.
그리고 위의 것들을 제쳐두고 내가 가장 좋아하는 이유 중 하나인데, 바로 업데이트가 빠른 간격으로 잘 된다는 점! 나는 개발이 중단된 프로젝트는 절대 사용하지 않는다. 업데이트하는 맛이 없으면 어떻게 쓰라고.
이 외에도 좋아하는 프로그램들이 꽤 많이 있는데, 그것들은 사용자 입장에서 쓰는게 아니라 개발자로써 사용하는 것들이기 때문에, 다음 기회에.
제가 하고 싶은 말은, 애플도 똑같이 클로즈드 소스에 유료 정책으로 나가는데 애플은 저렇게 사용자 만족도가 높은 소프트웨어 잘만 만들어서 돈 받고 팔면서도 모두에게 저렇게 환영을 받는데 ms는 애플의 2,3배는 받으면서도 전 세계인에게 조롱거리가 되는군요...좀 심하게 말하면 ms는 대체 왜 만든 회사인지 모르겠음 -_-
아주 오래전부터 MS의 LIVE.COM서비스를 사용해오면서
많은 분들이 구글에 대해 많이 토론하니까
하도 마음이 끌려서 구글의 모든 서비스를 사용해보니
굉장히 편리하더군요.간단하면서도 실용적인 구글이 너무 마음들어서
그동안 사용했던 모든 데이터를 구글에 옮겼어요...
허허...
저도 재호님과 같네요...원래는 구글검색만 사용했었죠.
중국에서 살다보니 중국어에 관한 자료를 검색할땐 중국의 검색엔진 baidu.com을 사용하고 한글검색은 네이버를 사용했는데 좀 불편하더군요,후에 구글이 나오니 한개의 검색엔진에서 모든 언어를 검색할수 있다는 그 편리함에 구글검색을 사용했었죠...
근데 요사이는 저도 김재호님처럼 구글의 모든 서비스를 사용하고 있는 중입니다.근데 유감스럽게 이전부터 사용하던 cosmosia아이디를 얻지 못해서,,,
아무튼 참 재미있는 회사입니다...
윈도우즈에서 절대 파폭 안쓰고, 리눅스에서는 페이지 에디터 때문에 vim 안쓸려고 하고, RSS는 뭔가도 모르며, 윈도우즈7이 더 마음에 들고, VM환경은 깔아볼 생각조차 않으며, PDF 뷰어도 리눅스에서 일부러 아크로벳만 깔고 그리고 얼마전 리눅스 관련 자료랑 파티션까지 날렸거든요.
답은 vim 이죠
Replyㅋㅋ 동의합니다.