4.11 선거

선거는 끝났지만 나름 복기의 필요성을 느껴 몇자 적어본다. 절반 조금 넘는 유권자들이 투표했고 새누리당은 이번에도 절반 이상의 의석을 차지. 야권의 득표도 늘었지만 민심의 총합은 새누리당을 지지했다. 새누리당은 재빨리 당명을 바꾸고 색깔도 바꾸고 비대위를 설치하고 이상돈 교수와 같이 비교적 정상적인(?) 보수를 끌어안고 변신하는 척 하는데 성공한 셈이다. 막판 몇가지 악재들이 있었지만 낙하산 사장들을 통한 매스컴의 통제력이 힘을 발휘했고 인터넷에서의 동요는 찻잔속의 미풍으로 끝난 셈이다. 헤게모니를 가지고 있다는게 얼마나 유리한 것인지 다시금 생각해보게 한다. 민주당은 자신들에게 유리하게 돌아가는 판세를 믿고 변화에 게으른 모습을 보이다 유권자들이 등을 돌린 셈. 반 한나라를 표방하려면 그만큼 자신에게 엄격하고 깨끗한 모습을 보여야 할것인데 민주당은 원래 한나라와 유사한 지역기반의 당이 가지는 한계를 벗어나지 못한 듯하다. 통진당 역시 내부 계파간 충돌을 제대로 다스리지 못했다. 자신들의 이권 챙기기로 뭉친 현 여권이 가장 강력하단 말인가. 글을 적는 동안 노골적으로 지역감정을 조장하는 공지영의 리트윗이 논란이다. 같은 편(?)의 단점은 덮어주고 다른 진영의 단점은 지독하게 물고 늘어지는 지독한 진영논리. 어쩌면 우리 사회에 필요한 것은 자신과 타인의 단점을 같은 비중으로 볼 수 있는 능력과 의견이 다른 사람과 토의/협상하는 능력이 아닐까. 마지막, MB의 행운력(?)은 끝을 모르겠고 연말 대선이 어떻게 결판날지는 정말 모르겠다. 내가 찍은 후보가 선출되는 날이 오기는 올까? 그리고 무한도전은 언제 볼수 있을까?

나우시카

바람계곡의 나우시카 블루레이를 주문했습니다. LD, DVD에 이어 소장용 미디어로 3번째 포맷.  일본판 블루레이에 한국어 더빙과 자막이 포함되어 발매되고 있으니 한국에는 발매할 생각이 없는것 같습니다. 지브리의 블루레이 시리즈는 계속 발매중인데 '마루 밑 아리에티'나 '포뇨' 등의 작품등이 발매되어 있지만 아마 사지 않을것 같고 '토토로', '붉은 돼지', '추억이 방울방울' 정도 발매되면 사게 될까요. 지브리 이외에는 '패트레이버' 극장판 1, 2편 정도를 노려보고 있습니다. 완전하지도 않은 잡다한 콜렉션을 이야기하고자 이 포스팅을 하는건 아니고 문득 왜 그 시대의 작품들에 그렇게 끌릴까 하는 생각이 들어서 입니다. 1990년대 지금의 롯데백화점 광복점자리에 태양 아트홀이란 곳에서 애니메이션 상영회를 몇차례 한 적이 있었습니다. 여러가지 작품들을 LD로 구입해서 한국어 자막을 붙인 다음 프로젝터로 보여주던... 엄밀히 말하면 저작권 위반에 불법이었지만 당시에는 일본 애니메이션을 정식으로 구입할 수 있는 경로도 없었기 때문에 시내 곳곳에 상영 안내 포스터도 붙어있었고 특별히 죄의식은 가지지 않고 재밌게 보았습니다. 거기서 지브리나 오시이 마모루 감독의 작품들을 접하게 되었는데요, 개인적으로는 모르고 있던 세계를 접하며 느꼈던 희열에 대한 향수가 아직 남아 있기 때문이 아닐까 생각해 봅니다. 혹은 픽사의 초기 작품들이 그렇듯 지브리나 오시이 마모루의 초기 작품들에 제작자가 오랫동안 간직해 왔던 하고 싶은 이야기들이 원형 그대로 들어있어 작품 자체로 좋기 때문일지도 모르겠습니다. 요즘 미야자키 할아버지를 포함해서 지브리의 작품들은 그럭저럭 볼만은 하지만 나우시카나 라퓨타와 같이 진지하게 주제를 던지는 작품은 보기 어렵지요. 이상한 특촬물 비슷한 작품을 마지막으로 만들어 낸 오시이 마모루는 말할 필요도 없고... 작가로서 마음속에 정말 하고 싶은 이야기들은 몇가지에 한정되어 있을...

RVM 사용 대충 정리

rvm 자체의 upgrade rvm get stable (latest, head) rvm에 설치된 ruby 보기 rvm list ruby의 upgrade rvm upgrade 1.9.2-p136 1.9.2-p180 과 같이 직접 써준다 특정 ruby를 default로 rvm --default use 1.9.3 rvm default : 현재 ruby를 default로 rvm use system : 원래 system ruby를 사용하는 경우 rubygem의 upgrade rvm ruby gems current ruby 제거 remove는 ruby, 소스 파일, gemset 등을 모두 제거, 권장방법 unistall은 ruby만 제거하고 나머지는 놓아둠 설치된 ruby에 gem 따라서 설치하기 rvm으로 이전 사용하던 ruby 버전 선택한 다음 rvm gemset export 실행 새로 설치한 버전을 rvm으로 선택한 다음 rvm gemset import 실행

WASH YOUR HANDS

아이의 영어 공부 신문에 나온 문제.  다음 영어 알파벳은 각각 0에서 9까지의 숫자값을 가진다. 각 알파벳의 값을 구하라. WASH + YOUR ----------- HANDS require 'benchmark' p Benchmark.measure { i = 1 "ADHNORSUWY".each_char.map { |c| c }.permutation.to_a.collect { |a| a.join }.each do |s| strings = ["WASH", "YOUR", "HANDS"].collect do |ss| ns = ss.tr(s, "0123456789") ns = ns[1..-1] if ns[0] == '0' ns end if eval("#{strings[0]} + #{strings[1]} == #{strings[2]}") then puts "SOLUTION : ##{i}" (0..9).each { |i| puts "#{s[i]} = #{i}" } i += 1 end end } 문제를 풀려니 너무 막연하다는 느낌이 들더니 12개의 값을 가지는구나...

ThinQt

지난번 올렸던 Qt/Thin 함께 돌리는 예제를 간단히 만들어 보았습니다. 프로그램은 qt_kendo.rb와 rad_info.rb 두가지로 나뉘어 있으며 qt_kendo.rb에서는 eventmachine의 run loop에서 Qt의 app.process_events 함수를 0.02초 간격으로 호출하며 동시에 Thin 서버를 돌립니다. Qt 프로그램은 간단한 리스트 위젯 몇가지와 버튼 그리고 Webkit 위젯으로 이루어져 있으며 Webkit 위젯에서는 kendoui 라는 자바스크립트를 통해 localhost의 thin 서버에 접속해서 필요한 자료를 json 형태로 받아옵니다. rad_info.rb 프로그램은 사용자화 할 수 있는 프로그램으로 types, query, sub_query, all_query 함수를 가지는 class를 작성하고 QtKendo.run 함수에 class를 전달하면 됩니다. 제가 작성한 것은 sequel을 사용해서 소스와 같은 디렉토리의 sqlite 데이터베이스를 처리하는 것입니다만, 자료는 이런 저런 이유로 생략했습니다. 소스는 github 에서 받을 수 있습니다.

Qt, Thin, Sequel이 만났을때...

이미지
지난번 Eventmachine과 Qt를 함께 돌리는 방법을 알아낸 다음 자료를 적절히 가공한 다음 QtWebkit에서 그래프로 보여주는 방법이 없을까 고민을 하게 되었습니다. 아직 완전히지는 않지만 하나의 어플리케이션으로 Eventmachine을 이용한 웹서버인 Thin을 돌리면서, QtWebkit에 kendoui 라는 자바스크립트를 올려 Thin에 접속한 다음 json 형식의 자료를 얻어와서 그래프를 그리는데 성공하였습니다. 다음은 어플이 돌아가고 있는 화면... Eventmachine에 기반한 Thin과 Qt는 생각보다 간단하게 돌아가는데 kendoui에서 json 포맷을 받아서 띄우는게 힘들었습니다. Access-Control-Allow-Origin이란 어려운 헤더를 건드려야 하더군요. 아직 원하는 기능이 완전히 돌아가지는 않는데 조금 더 손보면 그럭저럭 쓸만한 데모 어플이 되지 않을까... 하는 생각을 해 봅니다.

Ruby Dicom Worklist module

이미지
만들고 싶은 프로그램이 생겼는데 프로그램 동작중에 DICOM 워크리스트를 조회하는 일이 있습니다. Ruby Dicom이라는 잘 동작하는 모듈이 있지만 워크리스트 조회 기능은 들어가 있지 않아서 직접 코딩하게 되었네요. bindata와 eventmachine이란 gem을 써서 대부분의 일을 해결했습니다. 소스는 GitHub 에 올려져 있습니다.