Media Log

유닉스.리눅스 프로그래밍 필수 유틸리티 - 8점
백창우 지음/한빛미디어

이 책은 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판 표지를 보면 항상 책 내용을 훑어보고 싶도록 나를 이끌었었는데, 이번 개정판은 내용은 전판보다 보강되었을지 몰라도, 워드나 엑셀의 표지에나 어울릴법한 아동틱한 표지로 만들어버렸다. 최근에 한빛미디어에서 나오는 책들은 대부분 이런 아동틱한 밝은 디자인의 표지인데, 개인적으로 이런 표지의 책들을 보면 별로 배울 것이 많이 담겨있지 않을 것 같아 꺼려지게 된다.

그럼 멋진 표지를 가진 책은 무엇이냐고?
지금 딱 생각나는 책이 하나있는데 바로 이런 책이다.
원서가 더 멋있긴 하지만 한글판도 참 잘 나온 것 같다. 하드커버로 나온게 좀 싫었지만.

한달 쯤 전에 집에서 사용하는 PC를 새로 교체했다.
다른 PC 부품들에 대해서는 별로 욕심이 없는 편인데, 램에는 조금 욕심이 있다.

이제 PC용도 4G짜리 램이 나와서 4G짜리 램 2개를 구입했다. 메인보드는 그래픽 기능이 내장되어 있고 램 슬롯은 2개가 달려있는 아주 싼 저가형 보드를 구입했는데, 그래픽 카드나 비싼 메인보드 값 대신 램에 투자했다고 할 수 있겠다.

기존에 사용하던 PC보다 램이 조금 더 충족해지면서, 1~2기가 정도는 램디스크로 써볼까 하는 생각이 들었다.

램디스크를 설정하기 전에 몇 가지들을 검색해보니, 사람들은 주로 웹브라우저의 임시 파일을 캐시하는 용도로 많이들 사용하고 있었다.

윈도에서는 램디스크를 설치하기 위해 따로 프로그램(램디스크 드라이버)을 구해야 하지만 리눅스에서는 아주 간단하게 설정할 수 있다.
/tmp는 컴퓨터를 껐다켜면 지워지는 장소이므로 리눅스에서 램디스크로 잡아 쓰기에 적당한 곳이라고 할 수 있다.

/etc/fstab 파일을 연 뒤 다음 한 줄을 추가해주면 된다.
ramdisk  /tmp  tmpfs  mode=1777,size=1g

재부팅하면 /tmp가 1기가바이트 크기로 마운트 된다.
이 위치에 실제로 파일 복사등을 해보면서 dstat 같은 유틸리티로 I/O 를 살펴보면 램디스크로서 잘 동작하고 있음을 확인할 수 있다. -똑같은 파일을 또 복사하면 캐시에서 읽어오는 것에 유의해서 확인해야 한다.

웹브라우저가 이 곳을 캐시 저장소로 사용하게 하기 위해서는 브라우저의 캐시위치를 이 위치로 변경해주어야 하는데 구글 크롬을 사용하고 있다면 바탕화면 아이콘을 우클릭해서 속성을 열어 다음처럼 편집해주면 될 것이다.

/usr/bin/chromium-browser %U --disk-cache-dir="/tmp"

이제 원하던대로 웹의 리소스들이 디스크에 쓰여지지 않고 램에 저장된다.
웹페이지에 새로 들어갈 때마다 /tmp의 용량이 조금씩 늘어난다. 잘 동작하는 것 같고 끝내주게 빠른 것 같은 느낌이다.

그렇다면 실제로도 엄청난 속도 변화가 있었을까? 아니다. 그냥 원래 속도와 비슷하다.

웹에서 리소스를 다운로드 받을 때는 램디스크에 저장하던지 하드 디스크에 저장하던지 속도가 똑같다. 램의 쓰기 속도가 하드 디스크보다 훨씬 빠르기는 하지만, 네트워크에서 데이터가 한없이 느리게 읽혀지는데 어떻게 빨리 쓴단 말인가.

일단 한 번 캐시 해두었다면, 그 리소스를 다시 읽을 때는 램디스크에서 읽는 것이 물론 훨씬 빠르다. 컴퓨터를 껐다켜기 전까지는 계속 약발이 통한다. -물론 램디스크 드라이버가 언로딩 되기 직전에 하드디스크로 복사해줄 수도 있지만 이것도 부팅속도나 셧다운이 많이 느려지는 단점이 있다. 램디스크는 램처럼 쓰는 것이 어울린다.
그럼 하드 디스크의 경우에는 램디스크보다 항상 느리냐하면 그것도 아니다. 운영체제가 I/O를 할 때 캐시를 잘 해주기 때문에 최근에 사용된 많은 데이터들이 램 상에 올라가있고 실제로는 디스크 I/O를 하지 않고 램에서 읽는다.

그럼 컴퓨터를 껐다 다시 켜게 되면?
애써 받아놓았던 램디스크의 임시 인터넷 파일들이 날라가고 다시 다운로드를 받아야 한다.
그래서 커다란 용량의 트위터 바탕화면을 사용하는 페이지 같은 곳에 가면 이미지가 새로 다운로드 받아지는 것을 눈으로 확인할 수 있다. 그냥 하드디스크에 저장했으면 다운로드는 다시 안받아도 됐을텐데 말이다.

램디스크를 사용해서 웹서핑을 할 때 미친듯한 속도를 느끼고 있다는 글들이 많이 봤는데, 그들은 도대체 어떻게 속도가 빨라진건지. 내가 모르는 뭔가가 있는것인지 궁금하다.

리눅스의 경우에는 많은 프로그램들이 임시파일을 생성하여 작업할 때에 관례적으로 /tmp 위치에서 한다. 이런 애플리케이션들이 많으면 많을수록 /tmp 를 램디스크로 잡아 놓은 것이 더욱 효과가 있을 것이다.
하지만 용량을 얼마로 잡을것인지가 고민인데, 너무 크게 잡으면 안쓰는 램이 예약되어 버리는 것이 아깝고, 또 너무 작게 잡으면 애플리케이션들의 구현에 따라 오동작 할 수가 있기 때문에 찜찜하다. 잘 만들어진 애플리케이션이라면 I/O할 공간이 없는 것을 알고 메세지를 보여주는 등 예외처리를 시도하겠지만, 그렇지 않은 프로그램들도 참 많다. 이럴 경우에 사용자는 문제의 원인도 찾지 못하고 골탕만 먹게 될 수가 있다.

램디스크를 몇 일 사용해본 후, 나는 운영체제가 그냥 자연스레 캐시로 사용하게 하는 것이 훨씬 낫겠다 싶어서 다시 램디스크 설정을 제거해버리고 말았다.

며칠 전에 우리회사 최고의 해커 중 한 명인 누군가에게 뭘 좀 물어보러 갔다가, 우분투를 이상한 UI로 사용하고 계시는 것을 보고는 뭔가 여쭤봤더니 Mac4Lin 이라고 가르쳐주셨다.

간단하게 설명하면 리눅스 UI를 MacOS 처럼 바꿔주는 프로그램이다.

아래 링크에서 다운로드 받아서 설치해볼 수 있다.
http://sourceforge.net/projects/mac4lin

나는 어떤 프로그램을 사용할 때 디폴트 설정을 바꾸지 않고 쓰는 것을 좋아한다. 게다가 이런 Mac4Lin 처럼 따로 설치해주어야 하는 프로그램이라면 더 꺼려하는데, 귀찮기도 하고 또 뭔가 지저분하게 덕지덕지 붙는 것 같은 느낌이 너무 싫기 때문이다.

그럼에도 불구하고 이번에는 눈 딱감고 한 번 설치를 해보았는데, 그 이유는 요즈음 블로그에서 보면 사람들이 하도 MacOS가 좋으니 예쁘니 어쩌구들 하니깐 나도 한 번 간접적으로나마 느껴보고 싶었기 때문이다.


설치 후 느낌은 뭐... 예쁘긴 예쁘다.
그래도 이제 한 번 써봤으니 아마 다음 번에 운영체제를 다시 설치하게 되면 다시 우분투 기본 UI 그대로^^



요새는 오픈소스 애플리케이션을 많이 쓰고 있다.
최근 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. 사용하는데 있어서 불편함을 모르겠거나 상용프로그램보다 훌륭하다.

그리고 위의 것들을 제쳐두고 내가 가장 좋아하는 이유 중 하나인데,
바로 업데이트가 빠른 간격으로 잘 된다는 점! 나는 개발이 중단된 프로젝트는 절대 사용하지 않는다. 업데이트하는 맛이 없으면 어떻게 쓰라고.

이 외에도 좋아하는 프로그램들이 꽤 많이 있는데, 그것들은 사용자 입장에서 쓰는게 아니라 개발자로써 사용하는 것들이기 때문에, 다음 기회에.

SecureCRT Tip

2008. 11. 25. 18:39 | Softwares


많은 리눅스 서버들이 보안 때문에 SSH 연결을 할 때 root로 바로 접근하지 못하도록 설정 되어 있다.

나는 이 빌어먹을 정책이 너무나 싫었는데, 그 이유는 들어가려는 서버마다 su - 를 해서 비밀번호를 쳐줘야만 했기 때문이다.
서버 하나 들어갈 때마다 비밀번호를 쳐야한다니 얼마나 귀찮은가.

SecureCRT는 이 귀찮은 짓을 안하기 위한 좋은 기능을 제공하는데, 그것은 다음과 같다.
설정하려는 서버의 속성창에 들어가면 Logon Scripts가 보이는데,
그 곳에서 다음과 같이 설정해주는 것이다.




첫 번째 Expect:에 일반 사용자로(root가 아닌) 로그인 했을 때 보이는 프롬프트를 그대로 복사해서 넣어주고, Send:에 su - 라고 적어준다.
(root로 바로 접근할 수 있다면 SecureCRT의 비밀번호를 저장기능을 통해 바로 연결하게 되므로 이 글을 읽지 않아도 된다.)

로그인 되었을 때 콘솔에 다음처럼 문자열이 나타나면 읽어서 su - 라는 것을 SecureCRT가 대신 입력해준다.
su -를 치면 Password:라는 문자가 나타나므로 두번째 Expect:에 그렇게 써준다.
그 다음 Send:에는 비밀번호를.
Hide에 체크하면 비밀번호가 *로 보인다.

그냥 위 그림을 한번 보는 것이 이해가 훨씬 빠를 것이다.

이제 간단하게 더블클릭만으로 비밀번호 입력없이 연결할 수 있다.

또 한가지 팁.

저렇게 고생해서 쭉 구성을 해놓고 나서 컴퓨터를 포맷하거나 했을 때 설정을 다 날려버리는 경우가 있다.

SecureCRT의 디폴트 설정파일 위치는
C:\Documents and Settings\로그인 계정\Application Data\VanDyke\Config
이 곳이다.
이걸 깜빡 잊고 포맷하고 났을 때의 느낌은 뭐라 말로 표현할 수 가 없다. 그래서 나는 위치를 D:로 바꾸어 놓았다.

저 폴더를 백업해 뒀다가 복사만 해주면 잘 동작한다.
물론 포맷할 때 뿐만 아니라 주위의 팀원이나 다른 사람들에게 줘도 OK.
하지만 비밀번호까지 저장되어 있기 때문에 아무에게나 주어선 안된다.
나는 2004년도에 처음으로 리눅스라는 것을 설치해봤다.
그 때는 제대해서 처음 컴퓨터를 공부할 때 였는데, 왠지 모든 사람들이 쓰는 윈도우즈 보다는
리눅스라는 것이 뭔가 내게 주는 특별한 느낌이 좋았기 때문이다.

그 때 설치했던 것은 Suse 9 배포판이었다.
멀티 부팅으로 사용했었는데, 나는 몇 일 지나지 않아 윈도우즈 XP만 사용하기 시작했고 곧 내 Suse는 지워져 버렸다.

얼마전에 집에서 사용하는 운영체제를 우분투로 바꾸었다.

현재는 70%정도를 우분투를 쓰고, 나머지는 윈도우즈 비스타를 사용한다. 뭐 집에서야 할게 그다지 없으니까 우분투로도 충분하다.

내가 한 달여 동안 우분투를 쓰면서 새삼 놀란 것이 2가지가 있는데, 리눅스 데스크탑이 벌써 이렇게 많이 발전했구나 하는 것이고,
또 다른 하나는 윈도우즈로 부팅 했을때, 윈도우즈가 이렇게 예쁘고 좋은 운영체제였구나 하고 깜짝 놀라게 되는 것이다.

분명히 윈도우즈(XP보다는 Vista)는 지금 현존하는 데스크탑 운영체제 중 가장 쓸만한 운영체제이다.
솔직하게 말하면 앞으로도 10년 정도는 있어야 리눅스가 윈도우즈를 따라 잡을 수 있을 거라 생각한다.

하지만 나는 윈도우즈보다는 리눅스의 팬이다. 윈도우 개발자이면서도.

내가 오픈 소스를 좋아하게 된지는 1년도 채 되지 않았다.
내가 사용자로서 오픈 소스를 좋아하는 가장 큰 이유는 빠른 업데이트이다.
또 크랙된 프로그램을 어렵게 구하는 것이 아니라 공식 홈페이지에 가서 최신 버전을 바로 다운 받을 수 있는 것도 아주 큰 매력이다.
이제 나는 귀찮게 이런 저런 유틸리티들을 설치하면서 시디키를 집어 넣고, 최신 버전이 나오면 또 다시 같은 짓거리를 반복하는 것에 질려 버렸다.
반면에 오픈 소스는 이런 귀찮은 짓들을 할 필요가 없다. 필요할 때 마다 공식 홈페이지에 가서 최신 버전을 다운 받으면 그만이다.
조금 큰 프로젝트들은 자동업데이트를 지원해주기 때문에 이마저도 할 필요가 없다.
게다가 잘 유지되고 있는 오픈 소스 소프트웨어는 그 성능도 상용 프로그램에 못지 않다. 아니 그보다 더 훌륭하다.

나는 최신 버전의 소프트웨어를 사용하는 것을 유난히도 좋아하는데,
이 빌어먹을 습성으로 인해 회사 프로젝트에서도 이런 짓거리를 자주 시도 하다가
낭패를 몇 번 본 이후로는 집에서만 만족하려고 하고 있다.

어쨌든,
오픈 소스는 하루 하루 발전하고 있다.

나는 얼마전까지 어떤 소프트웨어 회사가 기술력을 갖추고 있다는 의미는 그에 대한 소스 코드를 가지고 있다는 것으로 생각했었다.
즉 '기술력 == 소스 코드 저장소에 들어있는 코드의 양과 질' 이라고 말이다.

사람들은 웹 2.0이라는 것이 개방, 공유, 참여의 결합이라고 종종 이야기 하곤 하는데,
나는 여기서 개방을 데이터의 개방으로 생각했지 기술의 개방으로는 절대 받아들이지 않았다.
기술의 개방이라는 것은 있을 수가 없는 일이(었)기 때문이다.

하지만 요즈음에는 이해할 수 없는 재미 있는 일들이 많이 벌어지고 있다.
내 생각에 따르면 오픈 소스 프로젝트는 기술(= 코드) 자체를 개방 하고 있다.
그럼에도 불구하고 오픈 소스는 하루 하루 승승장구 하고 있다.

그래서 요즘은 뭐가 뭔지 통 모르겠다.
정말 어렵고도 흥미로운 문제이다.

그 답은 아마도 시간이 가르켜 줄 것이다.
10년 후 즈음에 말이다.

'에세이' 카테고리의 다른 글

삼성 YEPP YP-U4 사용기  (2) 2008.11.16
구글 핑서비스  (1) 2008.11.02
내 블로그의 방문자 경향을 확인하기  (8) 2008.10.05
집에 오는 길.  (7) 2008.05.10
구충남대 서버에서 가졌던 스타크래프트의 추억  (38) 2008.05.06