Rails Log Visualizer + Apollo

2007. 5. 18. 09:41
툴 다운로드 : http://onrails.org/articles/2007/03/29/railslogvisualizer-meets-apollo

레일즈 로그를 이쁘게 보여주는 툴이 나왔다. ruff 버젼이긴 하지만, 꽤 이쁘게 나온다. Flex 버젼과 다르게 로컬 디렉토리를 브라우징 할 수 있고 로그를 선택해서 분석을 할 수 있다. 만든 사람은 40M 이상의 로그 파일을 시도해 보지 못했다고 해서 대략 150M 정도의 로그 파일을 분석툴로 돌려보니 그런대로 잘 나온 것 같다. 나중에 incremental loading 지원되면 좀 더 좋아질 것 같다.

파일을 내려받는 것이 좀 귀찮긴 하지만 어쨌든 로그를 돌려보니 아래와 같이 정보들이 나타난다.

컨트롤러 호출 파이그래프
위 그림에서 보는 것 처럼 컨트롤러별 호출 비율과 횟수를 이쁘게 파이 형태의 그래프로 보여준다. 어떤 컨트롤러가 어느정도의 비율로 호출되었는지 알 수 있는 뷰이다.

시간대별 request 그래프
이건 날짜별 시간대별 request 그래프이다.

리스팅 뷰

리스팅 뷰도 지원한다.

,

초딩!? 초딩ㅠㅠ

2007. 5. 13. 22:21
요즘에는 이런 내용이 자주 눈에 걸린다. 자주 관심을 가지고 보게된다. 재선이가 점점 커가면서 더욱 관심을 가지게 되는 것 같다. 대한민국에서 초딩으로 살아가기 라는 동영상인데, 말이 필요없다. 암울하다 ㅡㅡ;;; 제대하면서 다시는 군대가기 싫다 라고 얘기하는 수준이 아닌 것 같다. 이건 4살밖에 되지 않은 재선이를 보면서도 그렇고 주변에 초등학교 중학교 자녀들을 두고 있는 분들의 얘기를 들어봐도 그런 것 같다.

예전에 농담삼아 이런 얘기를 했던 기억이 난다. "난 재선이를 막 키우고 싶어요. 자기 하고 싶은거 맘대로 하면서..." 라구 그런데, 이대로 몇년 더 지나서 재선이가 초딩이 되면 아래 동영상 처럼 될 것 같아서 두렵다.



뭔가 한참 잘못된 것 같은데, 아무도 그걸 모르는 상태에서 막 달려가는 듯한 느낌이 드는 세상이다. 현재 대한민국에서 부모로서 살아간다는건 ... 교묘함이 난무하는 ㅡㅡ;;; 뭐 단순 무식하게 수십년 동안 대한민국에서 학원에다가 쏟아부어도 어디가서 영어로 한맏 제대로 못하는 사람을 만들어 놓는 정말 맘에 안드는 녀석들이 넘쳐나는 곳이다.

아 ㅡㅡ;;; 글 더쓰다가는 욕 나오겠다. 그만.

동영상 보다가 눈물날뻔 했다. 쩝. 점점 아빠가 아니라. 아버지가 되어가는 건가? 영원히 아빠로 남고 싶다. 사랑만 주는 아빠 ~~~
,

완소 웹서비스 오픈 러시 ~~

2007. 4. 2. 11:30
4월에 오픈한 웹서비스 두가지 소개 입니다. 제가 자주 사용하는 두가지가 몽땅 웹서비스로 나왔습니다. 하나는 오픈마루에서 만든 서비스이고 하나는 오픈마루에서 지원해주는 서비스입니다. 이미지만 놓고보면 얼추 비슷한 느낌이 나는 것 같기도 합니다. 서로 성격이 다르지만 어찌보면 비슷한 모습도 있습니다.

"사용자는 왕이다 하지만"(애자일이야기)이라는 제목으로 올라온 글을 보면 스프링노트 개발과정의 투명성에 대해서 평가한 글이 있습니다. 지속적인 개선을 약속한 부분도 상당히 흥미롭습니다. 공개적인 약속이니만큼 지켜지는 모습을 보여주는 것이 중요할 것 같습니다. 바로 옆에서? 스프링노트를 개발하는 모습을 보면서 상당히 애착을 가지고 개발하는 모습을 볼 수 있었습니다. 지금도 그렇구요. 자신이 개발하는 것에 대해서 이렇게 애착을 가지고 개발하는 모습을 본지가 정말 오래된 것 같습니다 -- 기존의 느낌이라면 지휘봉을 가지고 마구 흔드는 모습이 상상되는 분이 하나쯤은 존재해야 하는데, 그렇지가 않습니다. -- 멋집니다 :)

아래는 두 서비스의 동영상입니다. 스프링노트가 어떻게 진화되어 갈까요? "사용자커뮤니티" 에 참여하셔도 되고 개발자 분들이시라면 "개발자커뮤니티" 에서 재미난 open API 가지고 놀기를 해보셔도 될 것 같습니다.

동영상도 재미납니다.. 서비스의 세계라는 것이 여러모로 참 재미나네요..

[스프링노트]

스프링노트



[라이프팟]

,

Railscasts (no1 ~ no5) : 레일즈 스크린캐스트

2007. 3. 28. 18:11
아래내용은 railscasts.com 사이트에 올라온 동영상의 내용입니다. 레일즈 관련 팁들을 screencast 형태로 제공하고 있습니다. 직접 동영상을 보시면 더욱 좋습니다.

No1. Caching with instance variable

컨트롤러에서 모델의 find 메소드를 사용하는 경우 매번 DB 에 쿼리를 날리게 됩니다.

class ApplicationController < ActionController::Base

def current_user

User.find(session[:user_id]) # 이렇게 하면 매번 쿼리를 날리게 됨.

@current_user ||= User.find(session[:user_id])

end

end


볼드체로된 부분 처럼 항상 DB 쿼리를 하지 않도록, 인스턴스 변수를 활용해서 캐싱하는 형태로 사용하면 항상 DB자원을 사용하는 것을 줄여줄 수 있습니다.


No2. Dynamic find by methods

find 메소드의 형태를 좀더 간소하게 사용할 수 있는 find_by_methods 의 사용에 대해서 알아보도록 합니다. 간단하므로 아래 예제를 보도록 하죠.

find 메소드의 컨디션에 해당하는 컬럼을 메소드 명으로 줄 수 있습니다. 레일즈가 다이내믹하게 처리한다는 얘기죠.

class TasksController < ApplicationController

def incomplete

@tasks = Task.find(:all, :conditions => ['complete =?', false])

@tasks = Task.find_all_by_complete(false)

end

def last_incomplete

@task = Task.find(:first, :conditions => ['complete = ?', false], :order => 'created_at DESC')

@task = Task.find_by_complete(false, :order => 'created_at DESC')

end

end


No3. Find through association

모델간의 관계를 이용해서 데이타를 찾아도록 하는 방법에 대해서 알아보도록 합시다.

모델의 관계는 다음과 같습니다.

class Project < ActiveRecord::Base

has_many :tasks

end

class Task < ActiveRecord::Base

belongs_to :project

end

이경우 Association 을 이용해서 데이타를 가져오면서  No2 에서 제공하는 find_by_methods 까지 활용해서 수정을 하면 아래와 같습니다.

class ProjectsController < ApplicationController

def show

@project = Project.find(params[:id])

@tasks = Task.find(:all, :conditions => ['project_id = ? AND complete = ?', @project.id, false])

@tasks = @project.tasks.find_all_by_complete(false)

end

end

깔끔한 코드 ~~


No4. Move find into model

custom find 메소드를 생성해서 find 메소드를 모델로 이동시킬 경우 얻을 수 있는 장점은?

class TaskController < ApplicationController

def index

@tasks = Task.find_all_by_complete(false, :order => 'created_at DESC')

@tasks = Task.find_incomplete

end

end

위와 같은 형태에서 find_all_by_complete 를 find_incomplete 라는 클래스 메소드로 활용하게 되면 Task 모델에 다음과 같은 클래스 메소드를 추가하면 됩니다.

def self.find_incomplete

find_all_by_complete(false, :order => 'created_at DESC')

end

이런식으로 모델의 클래스 메소드로 생성해 두는 경우 아래와 같이 컨트롤러에서도 활용 가능죠.

class ProjectController < ApplicationController

def show

@project = Project.find(params[:id])

@tasks = @project.tasks.find_all_by_complete(false, :order => 'created_at DESC')

@tasks = @project.taskts.find_incomplete

end

end


No5. Using with scope

find 메소드를 커스텀하게 작성해서 모델로 이동시켜서 사용하는 경우, 커스텀 find 메소드로는 파라미터를 어떻게 전달할 수 있을 까요?

class Task < ActiveRecord::Base

belongs_to :project

def self.find_incomplete

find_all_by_complete(false, :order => 'created_at DESC')

end

end

이렇게 커스텀 find 메소드인 find_incomplete 를 생성해서 쓰고 있었는데, 이 메소드를 사용하는 컨트롤러에서는 호출시에 현재로서는 파라미터를 전달할 방법이 없습니다.

예를 들어서 아래와 같이 호출하고 싶은 경우 find_incomplete 메소드를 어떻게 수정하면 될까요?

class TaskController < AppliationController

def index

@tasks = Task.find_incomplete :limit => 20  #이렇게 파라미터를 추가해서 호출하고 싶다.

end

end

방법은 Rails 에서 제공하는 함수인 with_scope 를 사용하면 좀더 우아하게 처리할 수 있습니다.

find_incomplete 클래스 메소드를 수정해보도록 합시다.

def self.find_incomplete(options = {})

with_scope :find => options do

find_all_by_complete(false, :order => 'created_at DESC')

end

end

이렇게 수정하면 어떠한 형태의 파라미터도 다이내믹하게 처리할 수 있겠네요.

우아해졌습니다 ~~

P.S. 보다보니 벌써 동영상이 #11 까지 올라왔네요.. 나머지도 한번 가서 보세요... 짧으니 한꺼번에 보시면 저같은 초보 분들은 도움이 될만한 것들을 금방 얻을 수 있겠습니다.

[추가내용]
scope access method 관련해서 레일즈 플러그인이 하나 나왔네요.
AutoScope

Examples

Declare your scopes within your ActiveRecord::Base subclasses.

 class Contact < ActiveRecord::Base
auto_scope \
:old => {:find => {:conditions => ["born_on < ?", 30.years.ago]}},
:young => {:find => {:conditions => ["born_on > ?", 1.year.ago]}}
end

class Testimonial < ActiveRecord::Base
auto_scope \
:approved => {
:find => {:conditions => ["approved_at < ?", proc {Time.now}]},
:create => {:approved_at => proc {Time.now}}},
:unapproved => {
:find => {:conditions => "approved_at IS NULL"},
:create => {:approved_at => nil}}
end
이렇게 해주면 아래와 같이 사용하실 수 있습니다.
Testimonial.approved.count
Testimonial.unapproved.create!(params[:testimonial])
@young_contacts = Contact.young
@contacts = Contact.old.find(:all, :conditions => ["name LIKE ?", params[:name]])





,

쏟아지는 루비 서적들

2007. 3. 16. 10:39
사용자 삽입 이미지
넘쳐나는 루비와 레일즈 책들...
올해 들어서 루비 & 레일즈 관련 책들이 쏟아져 나오고 있습니다. 모두 아는 분들이 직접 쓰시거나 번역한 책들이라서 나올때 마다 족족 사서 보고 있는데 많은 도움이 되고 있어서 만족스럽게 생각하고 있습니다.
가지고 있는 루비 서적들을 모두 쌓아서 사진을 찍어볼라다가... 모두 쌓았더니 얼굴이 안나오더군요 ㅡㅡ;;; 예전에 자바와 루비 관련 접근에 대해서 책을 쌓아두고 비교하던 이미지가 생각납니다. 그때는  루비 쪽에는 달랑 2권 뿐이었는데, 지금은 비교할 수 없을 정도로 늘어났습니다. 이미지에 보이는 책들 말고도 가지고 있는 책이 3-4권은 더 되는 것 같습니다.

요즘에는 루비 관련 서적은 어쨌거나 앞으로 일해나가는데 있어서 어찌보면 단지 도구? 에 불과한 것이라는 생각도 드는 중이라서 (매일 퇴근할때 마다 루비 말고도 거의 밤새워서 공부해야 할만한 것들을 매일 매일 자극 받는 중이라 ㅠㅠ), 어서 루비 관련된 내용들을 섭렵하고 싶은 욕심이 나기도 합니다.

요즘은 어쨌든 그동안 평소에 일하면서 크게 고민해 보지 않았던 부분들에 대해서 약간씩 자극을 받으면서 지내구 있구요. 책들도 많이 보구 있구요... "스프링노트" 와 "미투데이" 를 (공교롭게도 아직 둘다 베타서비스중이네요. 서비스 오픈하게되면 관심가지고 사용해보시길 ~~ ) 가지고 놀면서 지내고 있습니다. 모두 멋진 서비스 들인데요, 언젠가 이런 멋진 서비스들을 직접 내 손으로 만들기 위해서 노력중입니다.

한동안 너무 소식이 뜸한듯 지내구 있어서 근황을 알려드릴 겸 ^^;;;

이상입니다.


'독서노트' 카테고리의 다른 글

무탄트메시지  (1) 2009.03.26
배고픔의 자서전  (3) 2007.01.02
시간을 파는 남자  (0) 2006.12.07
창조적 습관  (2) 2006.12.07
[독서노트] 학문의 즐거움  (0) 2006.10.31
,

Web-based IDE and debugger for Rails

2007. 2. 14. 11:34
Gyre 라는 오픈소스 툴이 나왔습니다. 웹기반의 레일즈 IDE 겸 디버깅 툴이라는 타이틀을 달고 있는데요, 개발자의 말에 의하면 아직은 pre-pre-pre alpha 상태이니 감안해서 봐달라고 합니다. 역시나 아직은 많이 불안정한 모습입니다.

이것또한 레일즈 어플리케이션으로 되어있습니다. 스크린캐스트도 올려져 있습니다.
사용자 삽입 이미지

screenshot


설치 방법은 아래와 같습니다.
sudo gem install -y ruby-debug -v 0.6.2
sudo gem install -y coderay
svn checkout http://gyre.bitscribe.net/svn/gyre/trunk gyre
cd gyre
mysqladmin create gyre
rake db:migrate
script/server -p 4000
기본적으로 Rails 1.2.1 로 되어있으니, Rails 1.2.2 를 쓰시는 분들은 config/environment.rb 에서 RAILS_GEM_VERSION 을 변경해 주시면 됩니다.

윈도우즈에 설치하시는 분들은 설치후 재시작시

TypeError in Project#index
Showing app/view/project/index.rhtml where line #32 raised:
can't convert nil into String ....

이런식의 오류가 날 수 있는데요, project_helper.rb 의 render_directory_dialog 에 보면 ENV["HOME"] 정보가 제대로 존재하지 않아서 그렇습니다. 대략 패쓰를 여러분들이 사용하시는 레일즈 어플리케이션이 있는 상위 디렉토리쯤으로 변경하시면 될 것 같습니다.

Gyre 를 설치한뒤 실행시키고 브라우저로 접속하면 처음 화면에서 프로젝트들을 등록하는 화면이 보이게 됩니다. 여기서 기존에 존재하는 레일즈 어플리케이션을 등록하게 되면 Gyre 는 기존의 레일즈 어플리케이션의 application.rb 파일에 내용을 추가하게 됩니다.

### The following was added by Gyre as a horrible, horrible hack.
### Remove if you wish to run the app standalone.
class ApplicationController < ActionController::Base
 before_filter :gyre_set_bp_retry
 def gyre_set_bp_retry
  params["BP-RETRY"] = true
 end
end
### EOH (end of horror)

확인해보니 위와 같은 내용이 추가되고 있었습니다. 이러한 것이 추가되는 이유는 익셥션을 핸들링 하기 위해서라는 군요. (브레이크 포인트를 걸기위한 용도로도 사용하는 것 같습니다). 디버거 상에서 어플리케이션이 실행되지 않는 경우에는 행걸릴수도 있으니 주의하라는 당부의 말도 있는 것 보면, 테스트용으로만 잠깐 써보는 것이 전부인 것 같습니다. 아직 많이많이많이 불안불안 합니다.

스크립트 기반의 레일즈 어플리케이션을 이렇게 꼭 브라우저로 IDE를 제공하고 디버깅 할 필요가 있을까 생각이 들기도 했지만, 어쨌든 디버깅에 많은 불편함을 느끼고 있는 저로서는 이러한 디버깅을 할 수 있는 옵션들이 많이 나타나는 것 자체가 반가운 소식입니다. 아직 갈길이 멀게만 느껴지는 중입니다.


 

,
오픈마루에 구인글이 올라왔습니다.

구인과 관련된 설명은 오픈마루 블로그를 보시면 자세한 정보가 있으니 참고하시면 될 것 같구요. 개인적으로 도발? 불지르기? 정도의 성격에 해당하는 내용을 적고 싶은데, 출근한지 하루밖에 안된지라 아직 분위기 파악 전입니다. 핫핫핫.

하지만 !

근무한지 하루밖에 안된 상태지만, 역시나 첫 출근때 부터 분위기가 남다릅니다. 출근부터 퇴근까지 이어지는 열띤 커뮤니케이션들... (심지어는 바닥에 편하게 좌판!을 벌리구 앉아서 회의하는 모습을 보고서는 사진이라두 한방 찍고 싶었습니다 - 오픈마루에 어울리는 모습인 것 같다는 생각이 들었습니다)

오후에는 일전에 Jania 님이 구현하셨다던, 실시간으로 사용자의 목소리를 듣는다 (Jania 님의 위키에 설명된 Spoken Log) 의 위력을 실감하는 순간을 경험했습니다.

진지하게 분위기가 흘러갈때쯤 ~~ 갑자기

"간장 공장 공장장은 강 공장장이고, 된장 공장 공장장은 공 공장장이다. 들의 콩깍지는 깐 콩깍지인가 안깐 콩깍지인가. 깐 콩깍지면 어떻고 안 깐 콩각지면어떠냐. 깐 콩깍지나 안 깐 콩깍지나 콩깍지는 다 콩깍지인데. 서울특별시 특허허가과 허가과장 허과장. 앞 집 팥죽은 붉은 팥 풋팥죽이고 , 뒷집 콩죽은 햇콩단콩 콩죽.."

하고 읽어주는 것 아니겠습니까 ㅡㅡ;;;;;;;;;;;;
정말 많이 웃었습니다. 하지만 뒤집어질 정도로 오바하지 못했습니다. 약간 자제하느라... ㅎㅎ

하여간 너무나 짧은 시간이라 아직 오픈마루의 일면 밖에는 알지 못하는 상태입니다만, 역시나 활력이 넘치는 곳이라는 생각이 듭니다.

회사근처에 질러? 라는 노래방 같은 간판이 보이는데... 이상하게도 그 근처를 지날때 쯤이면 저도모르게 "음... 오픈마루는 잘 지른 것 같애" 라는 말을 머릿속으로 하곤 합니다. (이상하게 생각하지 마세요)

어쨌든 오픈마루 강추!!!! 입니다. 어서어서 지원하세요... 지원 방법은 위 링크에 상세하게 나와있습니다.

질러주세요 ~~~~~



,
마소 2월호 기사가 나왔다는 소식입니다. 개발자들이 가장 가고 싶어하는 회사. 오픈마루 스튜디오.

이런 기사를 링크하게된 이유는? 맞습니다. 제가 바로 이곳 오픈마루에 고용되어 2월 5일부터 새로운 생활을 시작하게 되었습니다. 오래전부터 일하고 싶어하던 곳이었는데, 막상 시작을 앞두고 있으니 어떤 설레임 같은 것이 느껴집니다. 새로운 생활을 하기 전에 맘가짐을 다지고 있는 중인데(이틀의 시간이긴하지만), 책도 읽으면서 맘가짐을 새롭게 해보는 시간을 가졌던지라 슬쩍 적어봅니다.

아직은 근무를 시작한 것이아니기 때문에 미리 상상의 나래를 펼쳐가는 글이라 몽상에 가깝지만 소식을 전한다는 의미에서 소식 분류입니다. ^^

예전에 영회님의 블로그에서 보았던 이너게임을 최근에 읽었습니다. 일전에 읽었던 "창조적습관"과 어찌보면 비슷한 느낌도 들지만 이너게임은 좀더 일하는 마음가짐에 몇몇 가지를 시도해 보고 싶을 정도로 당장 도움이 될만한 것들이 많았던 것 같습니다.

이너게임
티머시 골웨이 지음, 최명돈 옮김/오즈컨설팅

'이것을 해야 해'의 이면에 '이것을 하고 싶어'가 있는가? 아니면 너무나 오랫동안 진정한 자신을 잊고 살아온 결과 '이것을 하고 싶어'는 오직 상상이나 할 수 있는 아이디어에 불과하게 되었는가?

맞습니다. 이겁니다. 여러가지 변화의 시작을 알리는 소리는 이런 것이었던 것 같습니다. 항상 열심히 일하는 것은 같았습니다. 하지만 항상 뭔가가 빠져있다는 느낌을 가진적이 많았습니다. 어찌보면 상상하던 모든 것들을 지금 하고 있는 사람들이 많은 곳, 내가 상상하는 모든 것들을 할 수 있는 곳, 그 상상이 내면 깊숙한 곳에서 우러나오는 '이것을 하고 싶어'가 존재하는 곳, 그런 곳이 아닐까 미리 잠시 생각해 보았습니다.

성과, 학습, 즐거움 이 세가지 요소의 관계는 정적이지 않고 동적이다. 마치 자전거를 타는 것과 같다. 자전거를 타기 위해서는 페달만 밟아서는 안 된다. 핸들로 방향을 잡아야 하며 균형을 잘 유지해야  한다. 동작을 어떻게 해야 한다고 배워도 소용이 없다. 말로 배울 수 있는 것이 아니기 때문이다. 움직임 안에서 느낌에 의해 동적인 균형을 유지해야 한다.
어떻게 하면 위와 같은 요소들을 잘 조화시켜서 할 수 있을까? 약간 걱정도 되었습니다. 새로운 사람들과 함께 움직이면서 느낌을 공유할 수 있을 정도가 되려면 얼마나 걸릴지 ... 지금 현재로서는 알 수 없습니다. 워낙 훌륭한 사람들이 많은 곳이기 때문에 또다른 세상을 맞이하는 기분이 들지도 모르고 어쩌면 너무나도 당연했던 느낌처럼 쉽게 다가갈 수도 있을 것 같습니다. 이렇게 반반씩 얘기하는건 "겪어보지 않고는 아무것도 모른다" 이렇게 얘기하는 것과 마찬가지일 것 같습니다.

'변화에서 가장 어려운 것은 새로운 방법을 배우는 것이 아니라 옛 방식을 버리는 것이다' -- 우드러프
이건 지금 가장 필요한 방법이라고 생각되었습니다. 계산해보니 그전 직장에서 2060일 (2001.6.11-2007.1.31) 동안 일을 했습니다. 기간도 중요한 것이지만, 워낙 나름대로 일하는 방식이 정형화된 곳이었기 때문에 현재 제 당면 과제는 "옛 방식을 버리는 것" 입니다. 그럼 빠르게 변화할 수 있을 것 같습니다.  개인적으로는 좀더 적극적으로 변하고 싶습니다. ^^;;

기업에서 대부분 변화가 실패로 끝나는 원인은 직원들이 무의식적이고 반응적으로 일하고 있는 현상을 정확히 인지하지 못한 상태에서 변화를 추진하기 때문이다.

이런 일은 없을 거라고 상상하고 있습니다. 주도적이고 적극적이고 즐겁게 일하고 있다는 느낌을 받았기 때문입니다. 갈때마다 변화무쌍하게 변하는 화이트보드에 적힌 많은 글들~~ 에서도 간접적으로 느낄 수 있었습니다. 젊은느낌! 신선한느낌! 진지한느낌!  어서 공유해보고 싶습니다. !!!

아래는 책에서 자주 등장하는 이너게임을 현재상황에 적용할 수 있는 기법으로 보여준 내용인데, 기억의 차원에서 적어두도록 하겠습니다.

이너게임 코칭의 세 가지 대화
인지, 선택, 신뢰의 3요소는 주의를 집중하게 만들어주는 요소이며, 또한 학습의 기반이기도 하다.

  1. 인지를 위한 대화 -무슨 일이 일어나고 있는가? (현재)
  2. 선택을 위한 대화 - 무엇을 원합니까? 왜 그렇게 하고 싶은가? (희망하는 미래 상태)
  3. 신뢰를 위한 대화 - 자신감이 있는가? (자신에 대한 신뢰는 어릴 때 우리 모두 가지고 있던 능력인데, 자신도 모르는 사이에 의심, 두려움, 능력을 제한하는 관념 등을 unlearn하게된 것이다)

지금은 변화의 바로 앞에서 상상만 하면서 쓸 수 밖에 없는 내용이었습니다. 앞으로는 새로운 곳에서 근무하게 되면서 벌어질 다이내믹한 내용들을 경험해 보면서 비슷한 주제를 가지고 2부를 쓰게될 날이 벌써부터 기대가 됩니다.

,
제 2회 루비 세미나가 1회때와 마찬가지로 오픈마루에서 있었습니다.
아래 위키페이지에서 2회에 참여하신 분들의 발표내용 및 후기들을 보실 수 있습니다. (아직 올라오는 중인 것 같네요)

이번 세미나는 부제가 있었습니다. "루비코드를 말한다" - 1인당 5분 내외의 코드조각을 발표하고 공유하는 것이었습니다. 하지만 역시나 1회때 세미나때 받았던 인상처럼 어느 한분도 쉽사리 5분정도에 끝내시는 분이 없었습니다.
재미난 것들 뿐아니라 제게는 아직 어려운 것들도 많이 언급되었습니다. 자극을 또 많이 받게 되었네요.
국내에 출시된 루비서적의 번역자분들도 오셨고.  앞으로도 줄줄이 출간 대기중이신 분들 (황대산님, WooKay님) 도 오셨습니다. 1회때도 모두 오셨든 분들이죠 ^^;;

(유스풀 패러다임) 김석준님 강문식님
 
현재 레일즈로 개발된 동영상UCC 허브사이트 웰리(http://wellee.com) 를 운영중이신 이노크레이지 김동규님의 서비스 개발기~ 의 소개도 있었구요.

조정목님의 레일즈1.2 변경사항 소개도 있었습니다.

본격적인 코드 공유가 시작되고나서는 사실 정신이 없었습니다. 위의 내용 소개가 끝나니 벌써 2시간 가량이 지나갔더군요. 동생 결혼식을 앞두고 상견례가 5시부터 있었던터라 머릿속이 복잡해지면서 ㅎㅎ 조바심나는 통에 사실 집중해서 듣질 못했습니다.

집중해서 들었더라도 쉽지않은 내용들이더군요, 황대산님의 메타 프로그래밍2 정도에 해당하는 이번 내용은 쉽지 않은 내용이었지만, 열심히 설명을 해주신 덕분에 약간 이해가 되었습니다. 책이 출간되어서 나오면 좀더 자세히 알 수 있을 것 같습니다. ^^

WooKay님의 셈플 코드는 보는 순간 ㅡㅡ+ 도무지 뭘 의미하는지 모르겠더군요. 조바심 낼 정도는 아니었는데, 왠지 코드를 보는 순간부터 지금까지 다급한 맘이 좀 드네요. 매일매일 열심히 루비를 다뤄봐야겠다는 생각이 들게해주는 코드였습니다.

중간에 나오는 통에 많은 분들의 주옥같은 발표를 듣지 못하게 되어서 무지 아쉬움을 느끼면서 쓰게되는 후기입니다. - 송우일님 열심히 동영상 찍어주셨는데, 언능 공유해 주실꺼죠?

하여간 제가 짧게 언급한 내용은 루비의 GC에 대한 내용이었습니다.  참석하신 분들의 얘기를 통해서 좀더 상세히 GC메커니즘에 대해서 알게 되었구요. 관련 개념들중 일부만(mark-and-sweep) 간신히 소개하는 정도였고,  copy-on-write (COW) 라던지 GC의 종류비교? 등등 기타 다른 내용들은 언급하지 못했습니다. (워낙 쫏기는 기분이라 ㅠㅠ). 셈플 코드도 루비의 GC를 체험하기에는 턱없이 부족한 내용이라 지금 생각하니 많이 아쉬움이 남습니다. ^^;;

뭐 후기에 아쉬움이 남아야 담에 더 잘할 수 있지 않을까? 라고 자위해보면서 국내의 훌륭한 많은 루비스트들과 1회에 이어서 2회때에도 공감할 수 있는 시간을 가졌던 것이 무척 즐거운 시간이었던 것 같습니다.

많은 분들의 발표를 다 듣지 못하고 가서 더 언급할 수 있는 내용이 ㅡㅡ;;;;

동영상 올려주시면 열심히 다시 보고 후기를 보강하도록 하겠습니다.  :D
,

TextMate 한글 폰트 문제 해결

2007. 1. 22. 10:28
TextMate 에서 한글 폰트를 제대로 쓸 수 없는 문제점을 해결할 수 있는 방법

장혜식님의 글 : TextMate 한글 반쪽으로~
@Story 블로그의 글 : TextMate를 위한 한글 고정폭 글꼴 만들기

먼저 혜식님의 글을 보고 링크되어있는 폰트를 사용해보니 줄간격이 마구 커지는 문제가 발생하여 어쩔 수 없이 X11  과 fontForge 를 설치해서 다시 폰트를 만들 수 밖에 없었습니다.

아래는  TextMate에서 한글을 쓰는 모습입니다. 문제가 해결될때 까지는 이런 식으로 보기에는 조금 어색하지만 사용하면 될 것 같습니다. 최소한 겹쳐보이지는 않으니까요.

사용자 삽입 이미지


,