Archive for the ‘루비’ Category
Mac OS X 루비 환경
Python과 같은 다른 언어도 마찬가지지만, 맥 OS X에서 루비 프로그래밍 하기란 이미 잘 차려진 밥상을 받아 열심히 먹기만 하면 되는 것과 같다. 물론 그 밥상은 Xcode Tools가 차려놓은것. Ruby와 Rails 개발을 하기에 부족함이 없도록 ruby, ri, rdoc, rib, gem, rails 등 모든것들이 한번의 Xcode Tools의 설치로 갖춰진다.
Rails가 있다는 말은 당연히 Webrick이 설치되어 있다는것. 그렇지만, Xcode Tools가 기본으로 사용하는 서버는 조금이나마 성능이 낫다는 Mongrel이다. 그리고 기본 db는 MySQL이 아닌 sqlite3를 사용하도록 해놓았다. MySQL과 같은 DB 서버를 요구하지 않기 때문에 적어도 개발단계에서는 조금이나마 편리하지 않을까 생각해본다. 물론 CoreData 응용프로그램과 연결하기에는 sqlite를 사용하는것이 훨씬더 간편할것이다.
rdoc을 보유한 ruby의 특징이기도 하지만 ri를 사용해서 볼수 있는 참고문서들이 너무 잘 정리되어 있다. 터미널을 사용하는데에 불편이 없다면 여러개의 터미널 창이나 탭을 열어두고 작업할수 있기때문에 ruby 코딩을 하는것이 한결 편하다.
다만 한가지 단점이 있다면 적당한 에디터가 없다는것. 기본 설치된 emacs는 ruby 코드를 알아먹지 못한다. .rb문서를 그냥 fundamental로 분류해 처리하는만큼 탭을 줘서 보기좋게 코드를 정리해가며 코딩하기가 쉽지 않다. 구글에서 emacs ruby 와 같은 검색어로 검색을 해보면 emacs 에서 ruby코딩을 할수 있도록 도와주는 설치 패키지가 있기는 있지만 emacs 초보자라면 그것을 제대로 설치하기 조차 힘들다.
Ruby 책이나, Rails 홈페이지에서 찾아볼수 있는 동영상에서나 맥 OS 플랫폼에서 인기있는 에디터는 TextMate. 상용이면서 가격도 만만치 않다. 물론 크랙된것을 언제든지 구할수는 있지만… 언제까지나 그렇게 훔쳐쓸수는 없는법. 정직하게 살고자 한다면 최후의 방법?인 Xcode를 사용하는것도 그리 나쁘지 않다.
open 이라는 명령어를 잘 모르는 사람도 있을지 모르겠다. 시스템에 설정된 기본 응용프로그램으로 어떠한 파일이든 열어준다. 예를들어 동영상은 퀵타임플레이어로, 소스파일은 Xcode로 열어주는것이다. Xcode에서 꼭 프로젝트 생성을 해야 하는것은 아니므로 이런방법으로 소스코드를 열어 코딩을 한후, 저장하고 닫으면 되는것이다.
TextMate에서와 같이 좌측 (또는 우측) drawer에서 손쉽게 파일 구성을 볼수는 없지만, 터미널에 익숙하다면 (익숙해져야 옳은것이 아닐까??) 파일시스템을 오가며 파일을 생성하거나 (touch) 열어보거나(open) 아니면 간단히 내용을 확인 (less)하는 작업을 불편없이 할수 있을것이다.
더군다나 Xcode는 스크립팅을 지원하기 때문에, 추가적인 스크립트를 손수 작성하면 TextMate에서와 같은 여러가지 편익을 누릴수도 있을것이다. TextMate를 선뜻 쓰고싶지 않은 이유가 그러한 단축키를 새로 배우고 싶지 않은 게으름 때문이었으니.. 내가 직접 만든것이라면 자주 사용할것이고, 따로 외우려 노력하지 않아도 되니 더 좋은것이 아닌가 싶다.
아무튼, 결론은 맥 OS X는 아마 루비 코딩을 하기에 최적의 플랫폼이 아닌가 하는것이다. Xcode로 루비 코딩을 하는데에 익숙해지기만 한다면 더이상 바랄것이 뭐가 있겠나 싶다.
루비 바이너리는 /usr/bin 아래에, 기타 라이브러리는 /usr/lib/ruby/1.8, gem들은 /usr/lib/ruby/gems/1.8/gems아래에 있다.
Rails를 둘러본 소감.
Rails에 관한 책을 두권 읽고.. 루비 책에서 손뗀지도 이제 며칠이 되어가는것 같다. 소감? Ruby를 보고 와.. 뭐 이런게 다있냐.. 하면서 감탄했다면, Rails를 본 소감은 단 한마디로 압축할수 있겠다. ‘푸’~레셔스 그 이상도 그 이하도 아닌 그느낌 딱 그대로다.
Rails를 보면 Rails개발자들이 코코아 프로그래머들이 아닐까 하는 생각이 들게 한다. 어찌보면 MVC 디자인에 익숙한 내가 Rails를 보면서 이건… 똑같잖아. 라고 탄성을 지르는것은 당연한 일일지도 모르겠다. Rails가 자랑하는? scaffold 기능역시 cocoa에 있으며, controller를 사용해 model과 view를 연결짓는 방법은 ruby로 core data 응용프로그램을 만드는듯한 착각을 불러일으키기 충분했다.
웹 프로그래밍에 전혀 관심없던 나도 Rails를 본후… 웹프로그래밍도 금방 하겠구나 생각하는걸 보면, cocoa 프로그래밍. 특히나 core data framework에 익숙한 사람이라면 Rails를 사용해 웹사이트를 구축하는것은 너무나 손쉬운 일일듯 하다.
아, 그리고 재밌는것은 대부분의 Rails 응용프로그램이 MySQL을 사용하겠지만 Mac OS X에서는 sqlite3를 기본으로 사용하도록 설정되어 있다는것이다. (물론 기본설정이 MySQL이라 해도 sqlite를 사용할수도 있다.) sqlite3. core data 를 아는 사람이라면 대충 감을 잡았을지도 모르겠지만, core data 역시 sqlite3 persistent store를 지원하는 만큼.. local core data app과 web rails app이 같은 persistent store를 공유하게 하는것은 재미있는 프로젝트이기도 하겠지만 아마 누워서 떡먹기 정도가 아닐까.. 싶다.
루비
루비를 시작했다. 루비가 도대체 무엇인가 궁금해서 다운받아놓았던 루비 메뉴얼. 그저께 밤 잠들기 1시간전에 쭉 둘러본것을 시작으로 어제는 급기야 루비 프로그래밍 입문서를 한권 쭉 읽었고, 오늘은 Rails를 공부할 차례다.
루비. 정말 이름값 하는 보석과 같은 언어인것 같다. 처음 잠들기 전에 메뉴얼을 둘러보면서부터 생긴 입가의 미소가 여태껏 떠나지를 않고 있는걸 보면 정말 보석을 발견한듯한 기분이 이런것일까 싶기도 하다.
애초에 루비를 살펴볼 생각을 한것은 Objective-C로 FSA를 만들다 보니 불편한 점이 한두가지가 아니였기 때문이다. Java5에서와 같은 Auto-boxing조차 없는 Objective-C로는 Collection을 사용하는것 자체가 고통스러웠다. 매번 Array에 정수를 넣고 뺄때마다 삽질을 해대야 하니 이건 도무지 사람할짓이 아닌것 같다라는 생각이 수도 없이 들었다. 물론 var_arg를 이용한 category wrapper함수를 사용하긴 했지만.. 정말 이건 불필요한 짓거리라는 생각이 머릿속을 떠나지 않았다.
autoboxing을 지원하는 Java를 써볼까 생각도 했었다. 그렇지만 문제는 Objective-C도, Java도 typed language라는것. 구체적인 설명을 하자면 길어지겠지만 아무튼 typed language라는것 또한 두고두고 써먹을수 있는 FSA를 만들어내는데에 걸림돌이 되고 있었다.
그렇다면 untyped language는 뭐가 있지? 전에 쓰던 Python을 써볼까? 하는 생각도 잠시. vm cold booting때문에 Java를 좋아하지않는 것처럼 Python역시 스크립팅 언어라는것 때문인지.. 아무튼 도무지 알수 없는 어떤 이유 덕분에 난 Python역시 즐기지는 않는다. 해서, 루비? 루비를 한번 살펴볼까? 라는 결론에 도달하게 된것.
일본애들이 만든거라 웬지모르게 기분 찝찝하긴 하지만 루비 이건 정말 좋아하지 않을수가 없는 언어다. Objective-C, C, Java, Python, PHP, Perl의 장점을 고스란히 짬뽕시켜놓은듯한 언어가 바로 루비인듯 하기 때문. C에서 파생된 언어중 C와 가장 가깝기도 하지만 무엇보다도 Message Driven 방식이 주는 유연성 때문에 Objective-C를 좋아하는 나에게 역시나 Message Driven언어인 루비가 주는 (Objective-C에서보다 한술 더뜬) 엄청난 자유로움은 ‘이건 도대체 미친거 아냐?’ 라는 믿기지 않는다는 반응이 나오게 만든다. 거기다 PHP, Java, Perl, Python이 하는것들도 불편없이 해결할수가 있으니 어찌 즐겁지 않고 좋아하지 않을수가 있을까.
스크립팅 언어라서 그런지 쉽게 배울수 있다는것 또한 매력이 아닐수 없는것 같다. 고작 반나절 정도의 시간을 투자해서 전반적인 언어 사용법에서 부터 간단한 SOAP, XML-RPC등의 서버와 클라이언트 제작, CGI 스크립트 등등 여러가지를 배울수 있다는것이 정말 놀랍다. 아무튼, 이젠 오늘 계획했던 대로 Rails 사냥을 슬슬 시작해야겟다.