11월, 2011의 게시물 표시

어느날 아침 출근길...

이미지
어제에 이어 간만에 자전거 출근. 지난주까지는 덜덜 떨리게 춥던 날씨가 자전거 타기 딱 좋게 풀렸네요. 겨울 내내 이런 날씨면 좋겠다는 생각도 들지만 왠지 자연의 순리라는 것도 있고 우리 사회가 4계절에 맞춰져 왔으니 추운 날씨에는 옷을 더 껴입고 자전거를 타는게 맞겠지요. 아침에 눈을 떴을 때에는 흐리고 구름이 잔뜩 끼인것 같이 보였지만 안개였고 출근하면서 점점 안개와 구름이 걷히는 것을 볼 수 있었습니다.  수영교 다리를 건너는 길. 센텀시티와 마린시티의 건물들이 무섭게 웅장하게 위용을 자랑하고 있습니다.  조금 일찍 나온 김에 간만에 회동동까지 다녀오기로 마음먹고 가 봅니다. 안개가 완전히 걷히지 않은 조용한 아침. 부산 도심 바로 옆에 아직까지 이런 곳이 남아있다는 것이 얼마나 좋은지 모르겠습니다. 고요한 아침 풍경. 빛이 좋은 날도 사진찍기 좋지만 이런 빛도 나쁘지 않네요. 반여동에서 회동동 방향으로 새로운 길을 만드는 모양입니다. 사진의 오른쪽 위쪽을 보시면 이미 깎여나간 산 모퉁이가 황토빛 민둥이가 되어버렸네요. 길이 어디서 어디로 연결되는지 아직 정확하게는 모르겠지만 회동동 끝자락은 제발 좀 그대로 놓아두었으면 좋겠습니다. 우리 나라에서 토건의 비율이 이렇게 높지 않았다면 단순히 경제 뿐 아니라 사람들이 매일 보고 접하는 풍경이 지금과 많이 달랐을 것이고 아마도 사람들의 마음도 좀 더 순하고 여유로왔을지 모르겠습니다. 평일 아침 도심, 단체로 강가에서 나신으로 목욕중이던 선녀들 오리들... 수영천 상류에서 하류쪽으로 바라본 풍경. 제가 찍었지만 좀 멋있는거 같습니다. 틈틈히 멈춰서 구경도 하고 사진도 찍고 하다보니 직장에는 좀 늦게 도착했네요. ^^;

OSX Lion에서 ruby 설정관련

이미지
XCode 4.2부터는 LLVM 기반의 gcc만 제공되기 때문에 ruby를 컴파일하려면 에러가 발생합니다. non-LLVM 버전의 gcc를 설치하거나 --with-gcc=clang 옵션을 주면 해결이 된다고 하는군요. rvm 사용하는 경우에는 rvm install ruby-1.9.3 --with-gcc=clang이라고 하면 되겠습니다. 요즘 stackoverflow.com이 프로그래밍 쪽의 구글과도 같은 역할을 하는군요. 세상 좋아졌다능... qt 설정 Qt 사이트 에서 라이브러리 설치 프로그램 받아서 install cmake 받아서 압축 풀고 ./bootstrap; make; make install로 설치 gem install qtbindings 실행 한글 사용 위해 readline 다시 설치 rvm pkg install readline rvm install 1.9.3 -C --with-readline-dir=$HOME/.rvm/usr rvm --default use 1.9.3

Nokogiri Summary

내 맘대로 nokogiri tutorial  초 간단 summary 쓰다보니 engineyard 블로그 에 올라온게 더 간단하고 좋다 Parsing f = File.open("blossom.xml") doc = Nokogiri::XML(f) { do |config|     config.strict.noent end } f.close require 'open-uri' doc = Nokogiri::HTML(open("...")) parse(string 혹은 io, url=nil, encoding=nil, options=ParseOption, &block) Searching xpath("//dramas//character") css("sitcoms name") 첫번째 항목을 쓰는 경우 xpath.first 대신 at_xpath, at_css 사용 namespace 사용하는 경우 xpath("//car:tire", "car"=>"http://..."), css('car|tire')와 같이 지정 Modifying text 바꿀때는 content에 지정 h1 = @doc.at_css "h1" h1.content = "Changed content..." node 순서 바꿀때는 parent를 새로 지정하거나 add_next_sibling 메소드 h1.name = "h2"    <h1> -> <h2> h1['class'] = "show-title" 새 노드 추가 h3 = Nokogiri::XML::Node.new "h3", @doc h3.content = "1977-1984" h1.add_next_sibling(h3)...

scite 한글 설정

이미지
윈도우즈에 설치한 scite 에디터. 무료로 나눠주는 프로그램치고는 쓸만한것 같고 syntax highligtening도 되니 만족하는 편이다. 그런데 처음 받아서 써보면 한글 모양새가 이상하고 백스페이스 지울때는 2번에 지워야 한다. 다음과 같이 코드페이지와 폰트 수정. Option -> Open Global Options File 선택해서 SciTEGlobal.properties 파일 연다 code.page를 찾아 0으로 되어 있는 값을 949로 바꾼다 font.base를 찾아 적절한 폰트로 수정 한글 폰트는 띄워쓰기에 주의하되 굳이 따옴표로 감싸줄 필요는 없다 monospace 폰트는 네이버에서 배포하는 나눔고딕코딩이 괜찮게 보인다

Ruby, MacRuby의 차이점 / 확장점

MacRuby : The Definitive Guide에서 참조 Objective C의 @selector가 메소드 이름 뒤에 :을 붙인 문자열로 바뀜 button.action = 'say_hello:' Objective C의 k로 시작하는 상수들이 (ruby의 상수는 대문자로 시작하므로) K로 시작 is... 함수는 ...? 형식으로 사용가능 isSpeaking vs. speaking? set... 함수는 . 형식으로 사용가능 object.setFoo = bar vs. object.foo = bar objectForKey와 setObject:forKey는 []형식으로 사용가능 keyedObject.setObject('bar', :forKey=>'foo') vs. object['foo'] = bar 문자열을 NSData로 변환 하는 to_data 함수 추가 object를 property list로 변환하는 to_plist 함수 추가 [1, 'two', {'three'=>3}, true, false].to_plist outlet은 attr_accessor를 생성하면 interface builder가 outlet으로 인식 attr_accessor :button String, Array, Hash, Integer, Float, Time은 각각 NS(Mutable)String, NS(Mutable)Array, NS(Mutable)Dictionary, NSNumber, NSNumber, NSDate와 완전 호환되며 objective C 메소드나 ruby 메소드 아무것이나 사용가능 ruby object는 대부분 mutable이나 인자를 전달하면 mutable이 immutable로 바뀔 수 있다 -> mutable한 object를 원하면 mutableCopy 메소드 호출, 반대의 경우 copy 메소드 호출 Set, Enumerator, Date는 o...

QtRuby 설치해보다

이미지
예전에 함께 프로그래머를 꿈꾸었던 형님이 다시 프로그래밍에 심취하시는것 같네요. 윈도우즈에서 루비로 프로그래밍을 하려면 뭐가 좋을까 생각해 보다 다음 클리너를 설치할때 qt4와 관련된 dll 파일이 얼핏 지나간 기억이 나서 qt4 ruby로 검색해보니 의외로 간단히 설치할 수 있네요. http://rubyinstaller.org에서 인스톨러로 루비 설치 gem install qtbindings 믿을 수 없을 정도로 간단합니다. qt 자체가 binding에 함께 설치되는지는 명확하지 않은데 저의 경우 다음 클리너에서 설치되어서 인지 아무런 설치 없이 바로 이용할 수 있었습니다. 이후 Qt4 ruby 튜토리얼 사이트 에 나와 있는 예제를 실행시켜 보니 6줄로 간단한 창을 만들어 띄울 수 있군요. 윈도우즈용으로 만들어보고 싶은 프로그램이 있어 요즘 이리 저리 고민중인데 이것도 괜찮은 방법일것 같습니다. Qt + Ruby 혹은 HTML5 + javascript...

OS X 재설치

이미지
2006년에 구입한 우리집의 첫번째 맥 컴퓨터인 17인치 아이맥이 라이언 업데이트 이후부터 속도도 무지하게 느려지고 하드 용량도 거의 남지 않아서 별 생각없이 몇가지 파일만 다른 컴퓨터에 옮겨놓고 라이언을 새로 인스톨 했습니다. 처음 구입했을때 타이거가 깔려 있었으니 레퍼드, 스노우 레퍼드에 이어 라이언까지 나름 잘 버텼다고 할수도 있겠네요. 새로 인스톨한 라이언은 거짓말  많이  조금 보태서 새 컴퓨터같이 씽씽해졌고 몇가지 우여곡절끝에 NAS에 저장되어 있던 몇년간 CD에서 리핑한 음악파일들도 대부분  무사히 iTunes에 돌려놓았습니다만 문제는 기존에 쓰고 있던 마누라 마느님의 아이폰. 별 생각없이 그냥 새로 뒤집어 엎었더니 아이폰이 제대로 싱크되지 않고 수동으로 파일 삭제도 되지 않는 상황이 되어버렸습니다. 결국 복원메뉴에서 OS를 새로 깔아 해결하기는 했습니다만, 앱들과 음악을 완전히 새로 깔아줘야 하는데다 앱들의 자료들도 몽창 날아갔으니 마느님의 심기가 은근히 불편해 보입니다. 그나마 주소록을 구글에 싱크 시켜놓아 무사히 다시 받을 수 있어서 다행이네요. 현재 아이폰으로 옮겨야 하는 631곡중 436번째 노래를 올리고 있습니다. 12시 전에는 잠들 수 있겠지요... -.-;

헤드폰 뽐뿌

이미지
모든 것은 언젠가 유럽여행을 다녀오는 비행기에서 시작되었다. 몇 좌석 앞쪽에서 비행기가 이륙하자말자 헤드폰을 꺼내서 쓰고 도착할때까지 계속 잠자던 머리가 좀 벗겨진 외국 아저씨. 저렇게 장시간 동안 음악을 계속 들으면서 자다니 이상한 아저씨라고 생각했던 나는 나중에야 그 헤드폰에 소음 감소 (좀 고상하게는 noise cancelling이라 함) 기능이 있으며 음악을 듣지 않고 집중이나 수면을 위해 헤드폰을 쓰기도 한다는 것을 알게 되었다. 출발하자 마자 저런식으로 헤드폰 끼고 계속 자고 있던 아저씨. 인물은 저 모델보다 못했다... 집중해야 할때, 열공해야 하는 당신의 자녀에게도! 저 기술은 항공기 조종사를 위해 개발되었다고도 하고 일부 고급 차종에서 고속 주행시 외부 소음을 줄이기 위해 사용하고 있다고도 한다. 실제로 착용해 보지 않았으니 얼마나 효과가 있는지 모르겠지만 궁금하지 않은가? 시끌벅적한 곳에서 저것만 끼면 과연 혼자만 있는것 같이 조용해질까? 최소한 음악 볼륨을 줄일 수 있으니 귀에 나쁠것 같지는 않다. 현재 국내 판매 가격은 공식 홈페이지 에서 495,000원. 국내에서 나름  저렴하게 파는 곳 이 465,000원이다. 면세점 가격 에서는 467,290원에 팔고 있으니 외국 나갈때까지 기다리느니 바로 주문하고 내일 받는게 나을것 같다. 그럼 요즘 잘나가는 아마존에서는 얼마일까? 299.95달러, 우리나라 돈으로는 오늘 환율로 대략 340,000원 정도이다. 우리나라 판매금액의 75% 정도. 카트에 담아보니 한국에도 배달해준다는데... 마지막 주문직전까지 가보니 우송료가 48달러, Import fee라고 세금에 대비해서 미리 받는 돈이 96달러. 총 444달러가 된다. 헤드폰은 관세 8%에 부가세 10%로 총 18%가 붙는다고 하니 우송료 포함 금액 348달러(394,111원)에 세금을 포함시켜보면  이거 뭐 짜고치는 고스톱도 아니고  465,050원이 된다. 미국가서 살께 아니...

pry

pry 홈페이지 의 screencast에 나온 명령어 중에서 기본적인 것들을 써 봅니다 설치 gem install pry pry-doc --no-ri 기본 명령어 help - 도움말 show-doc : method의 도움말(문서)을 보여준다, Class#method 방식도 가능 show-method : method의 구현(소스)를 보여준다. -l로 라인번호 앞에 붙여줌 edit-method : method의 소스를 편집 gist-method : method의 소스를 gist에 넣고 주소를 받아온다. 다른 사람과 소스 공유 가능 ls : 클래스의 메소드를 보여준다. -M, -m, -mj cd : object 내로 들어간다(현재 object가 바뀜), nesting이란 명령으로 현재 cd stack을 볼수 있으며 jump-to 명령으로 특정 object stack으로 바로 이동 gem-cd : gem이 설치된 디렉토리로 이동, 이후 '.'을 앞에 붙여서 셸명령어 실행가능하다 show-input : input buffer를 보여준다. !으로 input buffer clear, amend-line으로 특정행을 다시 입력할 수 있다 디버깅 binding.pry를 소스중에 넣고 실행하면 중간에 pry가 멈춘다 whereami 로 현재 실행중인 곳을 알 수 있고 내부 자료를 살펴볼 수 있다 멈춘이후 다음 iteration 실행하려면 cd ..

print, puts, p

puts object의 to_s 메소드 호출해서 결과 출력 print puts과 동일하나 buffered puts은 각 변수 출력후에 개행을 하지만 print는 출력후 개행을 하지 않는다 p object의 inspect 메소드 호출해서 결과 출력 각 변수 출력후에 개행하는 것은 puts과 동일 결과 변수 출력 123 한글시험 123한글시험123 "\x{C7D1}\x{B1DB}\x{BDC3}\x{C7E8}" 문자열내 변수 포함 123 vs. 한글시험 123 vs. 한글시험"123 vs. \x{C7D1}\x{B1DB}\x{BDC3}\x{C7E8}" 윈도우즈 XP에서 한글 출력하려면 encoding을 EUC-KR로 놓고 puts을 쓰는게 편할듯. 출력에 좀 더 섬세한 조절을 원하면 print로. puts의 출력은 buffered. 따라서 바로 화면에 나타나지 않는다. 필요한 경우 $stdout.flush 명령으로 바로 출력하도록 할 수 있다. 출처