2009/04/28

TextMate replacement on linux: gedit, Redcar - A programmer's editor for gnome

0 comment(s)

TextMate 가 계속 눈 앞에 아른거린다.

맥에서야 돈 몇 푼 내고 사용하면 그만이지만 리눅스에서도 그런 것을 사용해 보고 싶어졌다. 찾아 봤더니 몇 가지 가 나온다.


그 중 한 곳에 들어가 봤더니 우선은 gedit 의 플러그인을 사용하라는 의견이 대부분이다. 그냥 별 생각 없이 vi(m)을 사용해 오던 터라 gedit는 사실 별로 쓸 일이 없었는데, 이 참에 플러그인을 설치하고 사용해 보았더니... 상당히 쓸만하다.



code indentation, brace pairing, code comment 등을 각각 별도의 플러그인으로 제공하고 있다. 가장 마음에 드는 것 중 하나가 에디터 하단에 터미널을 바인딩해 주는 플러그인이다. 콘솔에서야 파일 탐색하다가 바로 vi로 편집하고 하는 것이 자연스러운데 여기서 gedit file 을 하면 작업중인 에디터에 탭이 하나 추가되면서 해당 파일이 편집 가능하게 된다. shell output 및 Python Console 도 있다.




다른 한 가지인 Redcar를 한 번 둘러 보았다. 아직은 정식으로 패키지가 나온 상태가 아니라고 하는데 이것 역시 결과물이 상당히 기대가 된다. A programmer's editor for gnome 이라고 하는데 그런가보다 해야지.


그리고 또 한 가지... VimMate 라는 것에 대한 언급도 있었다. RubyForge 의 결과물 중 하나인 듯. ruby gem 형태로 배포하는 것도 있는데, 이 것도 나름대로 괜찮아 보인다.

2009/04/27

구글이 오늘 사뮤엘 모스의 탄생을 기념하다.

0 comment(s)

오늘 구글 사이트에 들어갔더니 초기 화면이 이렇게 되어 있었다.

이게 무엇일까? 어렴풋한 기억이었지만 잠시 보고 있으려니 모스 부호일 것 같았다. 같은 선상에 있지 않고 위아래로 엇갈려 배열이 되어 있어서 순간 헷갈렸지만 모스 부호로 'g','o','o','g','l','e' 를 나타내고 있다. 물론 내가 모스 부호를 읽은 것은 아니다. 어렸을 때에는 쓸데없이 다 외웠었는데, 쓸 일이 없으니 다 잊었다. "sos" 때문에 - - - 가 'o' 라는 것은 알고 있는 정도?

로고 위에 마우스를 올려 놓으면 alt 속성에 지정한 로고 설명이 나온다. 오늘이 모스 부호를 만든 사뮤엘 모스가 태어난 날이라고. 구글의 센스에는 당해 낼 재간이 없는 것 같다.

기념으로 오리지널 로고 파일을 복사하여 게시해 놓는다.

2009/04/26

TextMate, vi, 그리고 MacVim

0 comment(s)

맥에서 사용하는 Killer App 중에 TextMate 라는 것이 있다. 어느 순간부터인지는 잘 모르겠지만 되도록 오픈소스 프로그램을 사용하려 하고 있었기에, TextMate 를 쓰지 않았다. 능숙하지는 않아도 기본적으로 vi 를 다룰 수 있었고, kenu 형이 smultron 이라는 프리웨어 에디터를 알려 주었기에 특별히 TextMate 를 쓸 이유는 없었다.

그러던 중 최근 django 를 만지게 되면서 TextMate 의 명성을 접해 보고 싶은 생각이 들어 한 번 설치해 보았다. 자세한 것은 아직 잘 모르겠지만 조금 만져 보았더니 역시 좋은 에디터구나 싶기는 한데, 이게 치명적인 것이 한글을 제대로 지원하지 않다. 검색해 보니 이미 고질적인 문제이다. 웬만하면 사서 쓰려 했는데 뭔가 지원이 석연찮은 -그 동안 한글 지원에 대해 많은 사람들이 줄기차게 요청을 해 왔으나 아직도 지원이 요원하다고 한다- 문제를 보고 그다지 끌리지 않았다. 해결이 되면 사던가, 아니면 회사에 요청해서 사 주면 쓰던가...

어플리케이션을 실행하고, 로그파일 보면서 편집을 하고 하다 보니 어차피 vi 가 더 편한 부분도 있다. 그러다가 MacVim이란 것을 알게 되었다.

이거 상당히 마음에 든다(물론 오픈소스). cocoa 기반이라 매우 깔끔하고, 덕분에 맥의 기본 단축키들이 그대로 작동한다고 홈페이지에도 써 있다. 스크린샷에서 보듯이 매우 자랑스럽게 한글 지원도 된다는 것을 과시하고 있다. 하지만 과시해도 된다고 생각한다. 정말 고마운 부분이다.(TextMate는 제대로 못 하는 부분이 아닌가...)

콘솔에서 사용하는 것과는 뭔가 다른 이질감이 있지만 조금 사용하다 보면 극복할 수 있겠지. 보다 vi 에 능숙할 수 있도록 해야겠다.

아쉬운 부분이라면, TextMate 의 'mate' 나 TextWrangler 의 'edit' 처럼 터미널에서 바로 MacVim 을 호출하는 명령을 제공했으면 매우 좋았을텐데... 아직 맥에 익숙하지 않아서 그런 방법을 모르는 것일 수도 있겠다. 조만간 그 방법을 찾아 보거나 만들어 내거나 해 봐야지. 패키지 내부에 보면 mvim 이라는 셸 스크립트가 들어 있다. $HOME/bin 등 적당한 곳에 옮겨 놓으면 셸에서 MacVim 을 실행하는 데 사용할 수 있다.

MacFUSE 의 sshfs 그리고 Macfusion

0 comment(s)

맥에서  ntfs 를 사용하기 위해서는 많이 알려진 대로 MacFUSE 를 사용한다. 정확한 정보가 아니면 적지 않는 것이 상책이지만... 잘못된 것이 있으면 누군가 바로잡아 주겠지 하는 안일한 마음가짐으로 적어 나가 본다.

...

조금 적어 보려 했더니 많이 복잡하다. 그냥, 하려던 이야기나 해야겠다.

원래는 ntfs 로 포맷된 외장 하드에 "쓰기" 위해서 방법을 찾다 보니까 MacFUSE 라는 것을 설치해야 하는 것을 알게 되었고 이게 ntfs 지원 뿐만이 아니라 여러 가지 놀라운 파일시스템을 지원하며, sshfs 라는 것과 관련한 내용도 보게 되었다. 제목에서 짐작할 수 있듯, ssh 프로토콜을 이용해서 원격 시스템을 마운트하는 것 처럼 해 주는 것이겠지 싶었다. 하지만 당시에는 fuse 를 통한 ntfs 접근이 너무 느려 터져 당장 급한대로 쓰기는 했지만 쓸모없다고 생각했었고, sshfs 역시 같은 MacFUSE 기반이라 느리면 느렸지 빠를 리 없다고 생각하여 nfs 마운트에 관심을 가졌었다. 그런데 nfs 역시 실망스럽기는 마찬가지였다.

아무튼 하고 싶었던 것은 외장 하드를 사용하듯이 원격 시스템을 마운트하여 사용하여는 것이었으나 이것저것 다 만족스럽지 않아 그냥 scp 로 원격 파일 전송만 사용했었는데, 최근 expandrive 라는 프로그램에 대해 알게 되었다. 대략 살펴 보니 ssh 프로토콜을 이용하여 원격 파일 시스템을 마운트 해 주는 유틸리티라는데 자기들 말로는 매우 빠르다고 한다. '빠른' 원격 마운트 기능이 사실이라면 매력적이라 생각해서 받아 써 보려고 했더니, 결국 MacFUSE 기반인 듯 하다. 즉, 상용인데 MacFUSE 프론트엔드인 것이다. 실망감을 감추고 약간 사용해 보니 생각보다 속도 면에서 쓸만했다. (물론 scp 보다 빠를 리는 없다. 이 부분 알고 보니 대략 MacFUSE 의 sshfs 구현이 대폭 개선된 것 같던데, 자세한 것은 나중에 다시...)


결국 MacFUSE 기반이라면, 뭔가 다른 대안이 없을까 해서 찾아 보니 Macfusion 이라는 것이 있었다. 프리웨어이며 sshfs 뿐 아니라 ftp 원격 마운트도 지원한다. scp 를 이용한 단순 파일 전송을 사용했을 때 보다는 마치 로컬 파일 시스템처럼 파일을 다룰 수 있게 해 주기에 상당히 유용하다고 생각한다. 물론 콘솔에서 sshfs 마운트를 직접 하면 되긴 하지만, 이를 통하는 것이 편리하다. 사용법도 간단해서 (+) 를 눌러 sshfs / ftpfs 두 가지 중 하나를 고르면 되는데 sshfs 를 선택한 경우 다음과 같은 창이 뜨고 적절한 정보를 입력하면 된다. 실질적으로 sshfs 프론트엔드인 셈인데, MacFUSE 사이트를 대략 둘러보니 2008년 하반기에 sshfs 에 대한 대폭적인 성능 개선이 있었던 것 같다(역시 나중에 확인해 보도록 한다.).

다만, Expandrive 는 Amazon S3 도 지원을 하는데 사용하고 있지 않기 때문에 당장은 MacFusion 이 내게는 가장 적합한 답인 듯 하다.

2009/04/07

vi 편집기에서 xml 설정 파일 주석 제거

0 comment(s)

vi 로 톰캣 설정 파일을 건드리면서, 버릇처럼 주석 라인을 dd 연타로 지우고 있던 중에 이게 무슨 바보짓인가 싶어 조금 더 멋지게 해 보려고 ex 모드에서 문자열 치환을 시도해 보았다. 우선 대략 적어 보고 잘 안 되어서, OS X 의 Reggy 라는 정규표현식 테스트 툴에서 시험해 보고 만들어 낸 표현식을 적용하여

:%s/^\s<!--(.|\n)+-->//g
를 썼는데... 패턴을 못 찾겠다고 나온다.

그래서 결국 검색에 의존하여 관련 내용을 찾는데, vi 에서 html 주석을 제거하는 내용은 한방에 나오지를 않는다... 검색 삽질 끝에 결국 찾은 내용이 http://rayninfo.co.uk/vimtips.html 이고, 이 내용 중에

:%s/<!--\_.\{-}-->//
이 구문이 주석문을 제거해 준다고 한다. 이를 사용했더니 잘 되는데 해당 라인이 빈 라인으로 남아서 그 부분은 dd 로 처리... 가 아니고
:%s/^\s*\n$//g
로 처리했다. 사용하는 곳 마다 정규표현식이 미묘하게 달라서 참 힘들다. 그나저나, 저 링크 본문 첫 머리에 써 있는 글이 놀랍다. "15 Years of Vi + 7 years of Vim and still learning" 정말 고수일 듯한 느낌이 든다. 나도 처음 접한 이후로 벌써 10년 조금 넘게 시간이 흐르긴 했다.