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 에 올려져 있습니다.

Qt와 EventMachine 함께 사용하기

이미지
StackOverflow에 올라와 있는 팁 입니다. Qt에서는 Application.run으로 루프가 돌아가고 EventMachine에서는 EM.run에서 루프가 돌아가니 두가지 함께 쓰기가 불가능할줄 알았는데 Qt에서 이런 경우에 대비해 Application.process_events 함수를 제공하는군요. EventMachine의 echo server예제와 함께 묶어 보았습니다.

Bravo! Textmate 2.0α

이미지

듀나 게시판 영화제 collector

듀나 게시판 영화제에 사용자들이 올리는 comment를 받고 가장 많이 받은 표 순으로 모아서 출력 설치 루비 인스톨러로 ruby 1.9.X 버전 설치 gem install httpclient gem install nokogiri cmd로 명령어창 열어서 스크립트 저장된 디렉토리로 이동한 후 ruby djuna_film_festival.rb 실행 웹 브라우저로 djuna_result.html 파일 열어보기 제한점 단순 문자열 비교로 띄워쓰기나 한글/영문 영화 이름 구분 제대로 안 됨 '/'로 구분하고 () 쓰는 형태 이외의 코멘트는 제대로 인식하지 못함 TODO comment의 split에서 명확한 RegEx 클래스 사용하기 html renderer 개선하기

Qt Ruby Webkit 시험

이미지
Qt의 예제들을 보니 실제 프로그램의 많은 것들을 지원하지만 결국 native framework가 지원해주는 정도의 자유(그 정도 level이 되는 것도 아니고 그 정도 기능을 필요로 할지도 모르겠지만...)는 없는 것 같아서 HTML과 javascript를 Qt내에 포함시키고 system tray 정도 기능을 Qt로 구현하면 어떨까... 하는 생각을 하게 되었습니다. 아마 공부해야 할게 더 많고 더 복잡하겠지만 왠지 이쪽으로 가는게 앞으로 유용하게 쓸수 있을것 같기 때문입니다. Webkit을 간단히 Qt 내부에 포함시켜 화면에 보여주는 스크립트입니다. 추가로 뒷 배경이 살짝 보이는 transparency, 항상 위에 보이게 하는 것과 윈도우의 가장자리는 없애는 옵션을 넣어보았습니다. Qt도 역사가 있다 보니 transparency를 지원하는 api도 여러가지 방법이 있는것 같습니다. 일단 가장 간단한 방법을 써 보았습니다.