2010. 4. 27. 20:44
지난번에 0.19.3 버전을 컴파일해서 올렸었는데, 그새 새 버전이 나온데다가 인스톨러로 만들어 보겠답시고 다시 삽질해보았다.

... 그러나, 인스톨러로 만드는 법은 여전히 모르겠고, 바뀐 것은 0.19.4 버전을 쓸 수 있게 되었다는 점 정도? -_-....

이번엔 컴파일 방법을 같이 첨부해 두겠다. MinGW, MSYS 등의 외계어들을 보면 두드러기가 나는 분들은 위의 파일과 GNOME2 런타임을 설치하면 사용할 수 있다. 이 런타임은 먼저 http://gladewin32.sourceforge.net/에서 Gtk+ Runtime Environment를 받아서 깐 다음 http://ftp.gnome.org/pub/gnome/binaries/win32/ 에서 필요한 라이브러리를 받아다 C:\GTK에 덮어 풀면 동작한다.

먼저 밝혀 두는 것은, 이 설치 과정은 http://d.hatena.ne.jp/luna_8bit/20090321/1237598167 문서를 참조하였다.

수정사항: CAIRO_PATH를 설정해 주지 않으면 컴파일이 되지 않는데, 까먹고 빼먹었다 -_-
  1. 컴파일을 위한 준비물
    MinGW, MSYS, GTK Development Environment, 그리고 GNOME2 환경을 구성하는 라이브러리들의dev 버전들.
    MinGW는 5.1.6 버전 인스톨러를 받아서 Current 버전들을 설치했다. MSYS는 1.0.11을 다운로드받았다. Gtk+ 2.12.9 Development Environment를 사용하였고, 각각의 라이브러리의 버전은 다음과 같다.
    poppler-dev 0.12.0-1
    poppler-data 0.4.0
    libgnomeprintui-dev 2.12.1
    libgnomeprint-dev 2.12.1
    libgnomecanvas-dev 2.30.1-1
    libgnome-dev 2.24.1-1
    libbonoboui-dev 2.24.0-1
    libbonobo-dev 2.24.0-1
    gtksourceview-dev 1.8.5
    gtksourceview-dev 2.10.0
    goocanvas-dev 0.15
    gnome-vfs-dev 2.24.1-1
    gail-dev 1.22.0
    ORBit2-dev 2.14.16-1
    GConf-dev 2.22.0-3
    이 중 poppler-dev는 dependancy 안에 들어가면 존재하고, poppler-data는 http://poppler.freedesktop.org/에서 받을 수 있다.

    시작하기 전에, msys를 띄우고
    $ export PKG_CONFIG_PATH=/c/GTK/lib/pkgconfig
    $ export PATH=/c/GTK/bin:$PATH
    을 수행시켜 환경을 준비시킨다.
  2. Compile and Install ruby
    http://ruby-lang.org/ 에서 루비 최신 버전 소스파일을 받는다. 참고로 이번에는 1.8.7 p249를 받아 컴파일했다.
    다운로드를 받으면 압축을 푼 디렉토리에서 다음을 수행해서 루비를 컴파일한다.

    $ ./configure --prefix=/ruby-gnome2-dev/dist
    $ make
    $ make install

     여기서 --prefix 옵션을 줘서, 모든 작업이 종료된 후 /ruby-gnome2-dev/dist에 ruby와 ruby-gnome2 바인딩을 위치시킬 것이다. 참고로, 여기서 ruby를 다시 컴파일 하는 이유는 루비 홈페이지에서 제공되는 루비는 Microsoft Visual C 컴파일러로 컴파일이 되어 있어서 native extension을 컴파일 할 때 같은 것을 써야만 하기 때문에, ruby-gnome2를 MinGW로 컴파일하기 위해서 ruby를 다시 컴파일하는 것이다.
  3. Compile and Install rcairo
    다음 단계는 rcairo를 컴파일하고 설치하는 것이다. http://cairographics.org/releases/에서 rcairo의 최신 버전을 다운받아 압축을 풀고, 그 디렉토리에서 다음을 수행한다.

    $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin/ruby.exe --with-override-variables=prefix=/c/GTK
    $ make
    $ make install

     당연한 이야기이지만, 첫 번째 줄에서 줄 바꿈은 없다. 여기서 가정하고 있는 것은 C 드라이버에서 작업중이고 GTK 런타임은 C:\GTK에 설치되었다는 것이다. --with-override-variables=prefix=/c/GTK가 빠지면 이후 pkg-config가 오작동하게 되기 때문에 꼭 필요하다. 위에서는 prefix에 /c/가 없지만 여기서는 필요하다는 것에 주의할 필요가 있다.
  4. Modify Ruby-GNOME2 source code
    http://ruby-gnome2.sourceforge.jp 에서 최신의 ruby-gnome2 소스파일을 다운받는다. 여기서는 0.19.4를 이용했다.
    컴파일 에러를 방지하기 위한 수정이 두 군데 필요하고, 기능상 미비한 점을 보강하기 위한 수정이 두 군데 필요하다. 두 번째 것은 굳이 할 필요는 없지만, 해 두면 여러모로 유익하기 때문에 추가해 둔다. 참고로 참조한 문서에서 수정해야한다고 한 부분은 최신 버전에서는 모두 해결된 것으로 보인다.

    C:\GTK\include\jmorecfg.h 에서
    160행

    #ifndef XMD_H => #if !defined(XMD_H) && !defined(_BASETSD_H)
    226행
    #ifndef HAVE_BOOLEAN => #if !defined(HAVE_BOOLEAN) && !defined(_RPCNDR_H)

    다음은 유용성을 위해 추가하는 내용이다. 행 번호는 위에서부터 수정한 뒤의 파일을 기준으로 삼았다.

    ruby-gnome2-all-0.19.4\gtk\src\rbgdkdraw.c 에서
    388행 다음에 다음 9줄 삽입

    #ifdef GDK_WINDOWING_WIN32

    #include <gdk/gdkwin32.h>

    static VALUE

    gdkdraw_get_hwnd(self)

        VALUE self;

    {

        return ULONG2NUM(GDK_WINDOW_HWND(_SELF(self)));

    }

    #endif

    473행 다음에 다음 3줄 삽입
    #ifdef GDK_WINDOWING_WIN32
        rb_define_method(gdkDrawable, "hwnd", gdkdraw_get_hwnd, 0);
    #endif
    마지막으로, ruby-gnome2-all-0.19.4\gtk\src 디렉토리에서 다음 명령을 수행해 파일을 하나 만들어 둔다.

    $ ar q libruby-gtk2.a

     이걸 해 두지 않으면, 이 파일을 만들어야할 때 이 파일을 요구하는 어처구니 없는 일이 발생한다 -_-
  5. Compile and install Ruby-GNOME2
    컴파일 하기 전에 CAIRO_PATH를 설정해주어야 한다. 여기선 1.8.1을 사용한 것으로 한다.

     $ export CAIRO_PATH=/c/ruby-gnome2-dev/rcairo-1.8.1


    이제 컴파일을 시작한다. 먼저, ruby-gnome2-all-0.19.4\glib 디렉토리로 옮긴 다음 다음과 같이 make를 수행한다. 단, make install은 하지 않는다.

    $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin/ruby.exe
    $ make

    glib이 컴파일 다 되면 이제 한 단계 위로 돌아가서 전체 대상에 대해 컴파일을 수행한다. 단, 한번에 컴파일이 완료되지 않기 때문에 make install은 하지 않는다.

    $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin/ruby.exe

    $ make
    중간에 gnome-print, gnome-printui가 실패할텐데, 한번 수행해서 libart가 컴파일되고 나면 다시 make를 수행하고 make install으로 설치한다.

    $ make
    $ make install

     최종적으로 만들어지는 라이브러리는 다음과 같다.

    -----

    Target libraries: glib, gdkpixbuf, pango, atk, gtk, bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomeprint, gnomeprintui, gnomevfs, goocanvas, gtkglext, gtksourceview, gtksourceview2, libart, libglade, poppler, rsvg

    Ignored libraries: gstreamer, gtkhtml2, gtkmozembed, libgda, panel-applet, vte

    -----

    이것은 extconf를 수행할 때 뜨는 것으로, 컴파일이 완료됐을 때는 Ignored libraries는 나오지 않는다.
  6. Distribute
    루비와 루비 바인딩 자체는 C:\ruby-gnome2-dev\dist 안에 있는 것을 그대로 배포하면 된다. 만약 기존에 설치된 루비에 라이브러리를 추가할 경우는 C:\ruby-gnome2-dev\dist\lib\ruby\site_ruby\1.8 안에 있는 모든 파일을 복사하면 된다.
    단순하게 Gtk만 사용할 경우에는 런타임을 다 설치할 것 없이, C:\GTK\bin에 들어 있는 dll들과 config로 끝나는 파일들, reconfig.bat, gdk-pixbuf-query-loaders.exe. gtk-query-immodules-2.0.exe, pango-querymodules.exe 파일을 bin 디렉토리에 복사하고, C:\GTK\lib 안의 gtk-2.0, pango 디렉토리를 lib에, C:\GTK\etc의 fonts, gtk-2.0, pango를 etc에, C:\GTK\share에 sgml, themes, xml을 복사하면 정상적으로 동작한다. 이에 관한 내용은 사실, 좀 더 찾아보고 시도한 다음에 확실하게 할 필요가 있을 듯 하다.

'프로그래밍 > Ruby' 카테고리의 다른 글

POVIS 자동화 라이브러리  (0) 2010.10.06
Fortune Delivery  (0) 2010.06.17
Ruby-GNOME2-0.19.4 for Windows  (1) 2010.04.27
ruby 동영상 플레이어 라이브러리 with DirectShow  (0) 2010.04.18
Ruby-GTK2 0.19.3 for Windows  (0) 2010.04.13
네이트온 자동 로그인  (0) 2009.12.04
  • Favicon of http://www.jaketjfleece.com/ BlogIcon jaket online 2012.11.06 19:47

    이 게시물은 웹 프로그래머와 관련된 모든 새 개인 홈 페이지의 지원에 좋은 결실이며 그들이 연구하고 연습을 수행해야합니다.

2009. 10. 20. 16:25
개인적으로, ruby는 배워보니까 정말 편리해서 RoR 외의 여러 부분에서 쓰고 있다. 심지어 간단한 CGI를 만들때도 ruby를 쓰기도 하는데 -_-;;

그러다가 ruby용 GTK 바인딩을 찾아서 꽤나 전에 신나게 썼었다. 단지 좀 아쉬웠던건 그 라이브러리 공식 홈페이지에서 제공하는 windows용 installer가 0.16 버전이라 상당히 불편했었다.

근데 시간도 꽤 지났고, 이 바닥에는 정말 할일 없는 사람이 널렸기 때문에 누군가 상위버전용 인스톨러를 만들지 않았을까, 하는 기대감에 혹시 있나 찾아보았다. 역시나, 누군가 해 두었다.

컴파일 하는 방법도 찾았기에 시간 나면 한번 컴파일을 따로 해봐야겠다.

여유가 나면 번역해서 컴파일 방법을 써 봐야겠다.

'프로그래밍 > Ruby' 카테고리의 다른 글

네이트온 자동 로그인  (0) 2009.12.04
공개 한글 폰트 다운로더  (0) 2009.11.16
Ruby-GNOME2 0.18 One-Click Installer for Windows  (0) 2009.10.20
rubyscript2exe 로 ruby-gnome2를 이용한 어플 패킹하기  (0) 2009.02.02
GMemRB 공개  (0) 2009.02.01
Ruby-GD2 in WIN32  (0) 2008.12.23
2009. 4. 28. 14:41

지난번에 포스팅했던 부익부 빈익빈 프로젝트(이하 부빈)이 조금 더 진행되었다.

채팅기능이 추가되었고 딜링 서버에 접속하면 카드를 딜링받아서 서로의 패를 볼 수 있는데까지 진행되었다.

카드가 그려지는 등의 실제 게임과 관련한 부분은 BubinCardarea 위젯으로 분리시키고 채팅기능은 BubinChatwidget으로 분리시켰다. 이 둘을 GtkVBox를 통해서 메인 윈도에 붙여넣어 게임 클라이언트가 만들어진다.

아직은 게임 클라이언트나 서버나 백엔드 수준-_-이라 커맨드라인 명령을 주어야한다. 나중에 대략 완성되면 그걸 다시 싸는 프론트엔드를 만들 필요가 있다.

지금 겪고 있는 문제-_-는, 이상하게 접속이 한번 이루어지면 리슨 소켓이 제대로 안닫힌다. 즉, 재 바인딩이 안된다. 문제가 뭘까...

로직만 붙이면 “일단은” 플레이 가능한 서버, 클라이언트가 나온다. 조금만 힘내자.

라기 전에... 나 학기중인데... 숙제는... 수업은...-_-

사용중인 추가 라이브러리는 gtk, gthread, gdk, glib, pango 등 gtk 일체이다. 그 외에는 아직 안썼음...

사용중인 언어는 순수 C-_-

'프로그래밍 > GTK' 카테고리의 다른 글

G부익부 빈익빈 진행상황  (3) 2009.04.28
G부익부 빈익빈 제작중  (0) 2009.04.20
  • 1212 2009.05.08 10:25

    안녕하세요 주인장님 ㅜㅜ

    혹시 판마툴바(파폭용)아직도 개발중이시라면 새로 포스팅하나만 해주시면 감사하겠습니다 ㅜ

    예전에 올려주셨던게 계정이 다되었나 안되더라고요; 그래서 새컴에서

    툴바없이 놀려니깐 힘들군요;

    부탁드립니다 굽신굽신

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.05.13 12:35

      아... 도메인이 바꼈었습니다 -_-;; 해당 포스팅은 수정했구요, 다운받을 수 있는 주소는 http://gwangyi.kr/~gwangyi/fantasyfox/ 입니다.

      아직 찾아주시는분이 있으시군요;ㅁ;

      조만간 기능 개선을 시도해봐야겠습니다 ㅋㅋ

  • 1212 2009.05.27 22:23

    감사합니다 주인장님 ㅜㅜ

2009. 4. 20. 23:23

부익부 빈익빈이라는 카드게임이 있다. 줄여서 부빈이라고도 하는데, 플레잉카드로 하는 카드게임이다.

비슷한 게임은 계급투쟁(계투), 달무티 등이 있는데, 룰은 상당히 단순하다.

  1. 손에 들고 있는 카드를 모두 버리는 순서대로 순위가 결정된다.
  2. 카드를 버릴때는 같은 숫자끼리 모아서 버릴 수 있다.
  3. 맨 처음에는 마음대로 카드를 버릴 수 있다.
  4. 전 차례에 버려진 카드보다 숫자가 같거나 큰 카드만 버릴 수 있다.
  5. 전 차례에 버려진 카드의 장수보다 같거나 더 많이 버려야 한다.
  6. 만약 이번턴에 버릴 카드가 없거나 버리기 싫으면 버리기를 포기할 수 있다. 포기한 경우 한 주기가 끝날 때까지 카드를 버릴 수 없다.
  7. 한 명을 제외한 모든 사람이 카드 버리기를 포기한 경우 한 주기가 끝난다. 주기가 끝나면 마지막에 카드를 버린 사람이 선이 되어 카드버리기를 처음부터 시작한다.
  8. 만약 마지막 한 명이 카드를 버리면서 난 경우(손에 든 카드를 모두 버린 경우) 그 사람의 바로 옆에 있는 사람이 선이 된다 - 반시계방향으로 보통 진행하므로 오른편 사람이 운 좋게 선을 먹을 수 있다.
  9. 게임이 끝나면, 전 판에서 1등을 한 사람이 선이 되어 새 게임을 시작하는데 시작하기 전에 조공을 바친다.
    꼴등은 1등에게, 꼴등에서 두 번째는 2등에게, ... 이런 식으로 조공이 바쳐지는데, 6인이 할 때는 1등과 2등이, 9인이 할 때는 1, 2, 3등이 조공을 받는다. 조공을 바치는 쪽은 카드가 보이게 최고패를 바치고 받은 쪽은 받은 장 수 만큼 패에서 카드를 골라 준 사람에게 돌려준다. 이 때는 보이지 않게 준다.
아마 이게 룰의 전부이지 싶다. 달무티를 안다면 금방 깨칠 수 있다. 계급투쟁은 본인이 모르기 때문에 언급하지 않겠다 -_-... 아마도 계급투쟁과의 가장 큰 차이점은 “전 차례에 낸 카드 수보다 같거나 많이” 낼 수 있는 점이고 이게 빈부격차를 심화시킨다.
그래서, 개발중인 그림은 다음이다.

사용중인 것은

GTK+ 2.x, gcc 4.x 다.

일단 리눅스에서 개발한담에 윈도로 포팅할 예정이다.

'프로그래밍 > GTK' 카테고리의 다른 글

G부익부 빈익빈 진행상황  (3) 2009.04.28
G부익부 빈익빈 제작중  (0) 2009.04.20
2009. 2. 2. 00:58
rubyscript2exe는 ruby 스크립트를 패킹해서 하나의 실행파일로 만들어주는 아주 유용한 툴이다. ruby는 스크립트 언어기 때문에 인터프리터가 필수고, 따라서 배포할 때에 루비 인터프리터와 함께 배포되어야 하는데다가 추가적인 gem을 사용했을 경우 전부를 한번에 패킹하기는 미친듯이 귀찮아진다. 게다가 대상이 윈도이기라도 하면 정말 여러가지로 골치가 아프지 않을 수 없다. 이러한 문제들을 해결할 수 있는 것이 rubyscript2exe라는 툴이다.

현재 ruby 1.8.6 patchlevel 287 이상에서 rubyscript2exe 0.5.3은 정상적으로 동작하지 않고 있다 -_-... $0이 freeze되어 있는데 수정하려 하는 문제인 것 같다. 하지만 ruby 홈페이지에서 원클릭 인스톨러로 받을 수 있는 윈도용 ruby 1.8.6 patchlevel 111에서는 문제가 없기 때문에 윈도 환경에서의 사용에는 큰 문제가 없을 것 같다.

이 것은 gem이기 때문에 gem 명령어를 통해서 간단하게 설치할 수 있다.
# gem install rubyscript2exe
그리고 대상 스크립트를 실행파일로 변환하고 싶을 때는 간단하게
$ rubyscript2exe target.rb
라고 치면 시간이 조금 걸리면서 완료된다.

그런데 다 좋은데... ruby-gnome2를 사용한 경우 글자 렌더링 엔진을 빼먹어서 글자가 하나도 찍히지 않는 불상사가 발생하는 문제점이 있다.

이 문제는 왜 발생하냐면, rubyscript2exe는 해당 루비 스크립트를 같이 패킹된 ruby 인터프리터를 사용하여 실행시키는데 여기에 포함된 GTK 라이브러리가 동작 할 때 필요한 파일이 같이 패킹이 되지 않았기 때문에 파일을 찾을 수 없어 발생하는 문제점이다.

이를 해결하기 위해서는 원리적으론, GTK 라이브러리에서 참조하는 파일들을 같이 패킹하여 실행시 언패킹되도록 하면 된다.

ruby가 설치된 곳이 C:\ruby 라고 한다면, ruby-gnome2를 설치하면 C:\ruby\lib\GTK 에 GTK가 설치된다. 이 곳에 있는 etc, share, lib 파일이 동시 패킹 대상이 된다.

rubyscript2exe는 인자로 루비스크립트가 아닌 디렉토리를 지정하게 되면 해당 디렉토리 안에 있는 모든 파일을 자동적으로 함께 패킹함과 동시에 그 안의 init.rb를 실행시키도록 구성되어 있다. 또한, RUBYSCRIPT2EXE 모듈 내의 method를 통해 여러 정보를 얻을 수 있는데, appdir은 패킹했던 파일들이 풀려 있는 디렉토리를 지칭한다. 이 것을 통해, 같이 패킹한 자료들에 접근할 수 있게 된다. 또 is_compiled? 라는 메소드가 있어, 이 스크립트가 rubyscript2exe를 통해 실행되고 있는지 아니면 일반적인 실행인지 체크할 수 있어 이 둘을 이용해 필요한 파일들을 준비시킬 수 있다.

rubyscript2exe는 패킹된 실행파일을 실행시킬 때, 대략 다음과 같은 트리구조를 갖도록 풀린다.
(홈 디렉토리)\eee\eee.application.nnn (nnn은 숫자)
└ app: 패킹했던 파일들을 풀어둔다.
└ bin: ruby 인터프리터와 필요한 dll들을 담아둔다.
└ lib: 사용한 gem이나 같이 패킹되지 않았지만 require를 통해 로드된 다른 ruby 스크립트들이 위치한다.
필요한  파일들인 etc 디렉토리와 lib, share 디렉토리들을 적당히 같이 패킹한 다음 프로그램 도입부에서 appdir을 통해 적당히 풀어주면 필요한 설정 파일들을 접근할 수 있게 되어 정상동작으로 한 걸음을 내딛을 수 있을 것이다.

그런데, 이렇게 해 주면 테마는 적용이 되어 이쁘게 나오는데 아직 한글이 정상적으로 나오지 않는다. 개발중인 머신에서는 잘 나오지만 말이다. 여기서 속으면 안된다.

이번엔 왜 안되느냐, 바로 pango의 글자 렌더링 엔진의 설정이 틀려버렸기 때문이다. etc 안에 설정파일이 존재하는데 열어보면 왜 문제가 되는지 바로 알 수 있을 것이다. 아마 ruby-gnome2가 설치된 경로로 절대경로가 되어 렌더링 엔진 dll파일들이 적혀 있는 것을 볼 수 있을 것인데, 이 것을 업데이트할 때는 pango-querymodules라는 유틸리티를 쓰는 것이 편하다. 이건 GTK 설치된 디렉토리의 bin에서 찾을 수 있다.

이제 이런 것들을 반영하여 언패킹때의 코드를 넣어주면 해결! 인데, 말로만 설명하면 와닿지 않기 때문에 gmemrb 에서 사용한 init.rb를 첨부하였다. 여기는 필요한 파일을 패킹/언패킹하기 위해 tar 파일을 썼으며(압축은 어차피 rubyscript2exe에서 한번 해 주기 때문에 생략했다) tar 파일을 핸들링하기 위해 archive-tar-minitar를 사용하였다. 하지만 전반적으로 이해하는덴 어렵지 않을 것이다.

require 'rubyscript2exe'
require 'archive/tar/minitar'
require 'fileutils'
if RUBYSCRIPT2EXE.is_compiled?
  Archive::Tar::Minitar.unpack(RUBYSCRIPT2EXE.appdir + "/env.tar", RUBYSCRIPT2EXE.appdir + "/..")
  Archive::Tar::Minitar.unpack(RUBYSCRIPT2EXE.appdir + "/locale.tar", RUBYSCRIPT2EXE.exedir)
  cmd = "\"#{RUBYSCRIPT2EXE.appdir}/../bin/pango-querymodules\" > \"#{RUBYSCRIPT2EXE.appdir}/../etc/pango/pango.modules\""
  cmd = cmd.gsub(/\//, "\\") if RUBY_PLATFORM =~ /win/
  system(cmd)
end

require 'gmemrb.rb'

GMemRB::GMemRB.new.show_all
Gtk.main

if RUBYSCRIPT2EXE.is_compiled?
  FileUtils.rm_rf RUBYSCRIPT2EXE.exedir + "/locale"
end
중요한 부분은 RUBYSCRIPT2EXE.is_compiled?로 묶여진 if 블록이다.

gmemrb의 경우 gettext를 쓰기 때문에 locale이 필요해서 실행파일이 위치한 곳에는 locale을 풀고 언패킹된 곳에는 gtk를 풀도록 되어 있다. 또한 pango-querymodules를 system 명령을 통해 실행시켜 그 결과를 바로 etc/pango/pango.modules 에 쓰도록 해서 위치를 업데이트하도록 되어 있다.

아마 저걸 참고로 해서 직접 작성해보면 가장 적절하게 느껴지는 형태로 쓸 수 있지 않을까 싶다.

rubyscript2exe 공식 홈페이지

'프로그래밍 > Ruby' 카테고리의 다른 글

공개 한글 폰트 다운로더  (0) 2009.11.16
Ruby-GNOME2 0.18 One-Click Installer for Windows  (0) 2009.10.20
rubyscript2exe 로 ruby-gnome2를 이용한 어플 패킹하기  (0) 2009.02.02
GMemRB 공개  (0) 2009.02.01
Ruby-GD2 in WIN32  (0) 2008.12.23
Ruby-GNOME2  (0) 2008.12.09
2009. 2. 1. 05:02
단어 연습 프로그램 GMemRB 1.0을 공개합니다.

특징으로는, multi-platform을 지원하는 ruby-gnome2로 작업하였기 때문에 OS를 크게 안따진다는 것이 있습니다.

그리고 단어장 정보를 text파일로 출력하기 때문에 급할 때 수정하기가 편하고, Microsoft Excel 등의 스프레드시트 프로그램에서 읽을 수 있도록 탭으로 구분된 표로 저장하고 있습니다.

윈도용의 경우, rubyscript2exe를 사용하여 독립 실행형으로 만들었습니다. 복잡하게 ruby 설치하고 ruby-gnome2 설치하고 gem 설치하고 할 필요 없이, 실행파일만 실행하면 실행되도록 했습니다.

ruby-gnome2의 경우 rubyscript2exe와 상성이 안 좋아서 만드는데 조금 고생도 했던거 같습니다 -_-

내일이나 조만간에 ruby-gnome2를 사용한 경우 rubyscript2exe를 이용하여 독립실행형 어플리케이션을 만드는 방법에 대해 포스팅 하도록 하지요. ruby-gnome2 홈페이지에 있는 내용은 “틀렸습니다”-_-...

홈페이지는 http://gmemrb.esperanza.kr/ 또는 http://plus17.postech.ac.kr/gmemrb 입니다. 도움말 페이지인데, 여기서 다운받을 수 있습니다.

'프로그래밍 > Ruby' 카테고리의 다른 글

Ruby-GNOME2 0.18 One-Click Installer for Windows  (0) 2009.10.20
rubyscript2exe 로 ruby-gnome2를 이용한 어플 패킹하기  (0) 2009.02.02
GMemRB 공개  (0) 2009.02.01
Ruby-GD2 in WIN32  (0) 2008.12.23
Ruby-GNOME2  (0) 2008.12.09
Ruby on Rails  (0) 2008.05.28
2008. 12. 9. 04:57

Ruby-GNOME2

프로그래밍/Ruby 2008. 12. 9. 04:57
GUI 어플을 짜긴 해야겠는데 C는 이제 귀찮고, 기존 스크립팅 언어 중에 아무거나 택해서 짜보기로 한 것이 꽤 전 일이다.

그때 당시 Ruby on Rails를 시작으로 해서 루비에 상당히 재미를 붙이고 있던 시점이라, PyGTK같은 툴이 루비에도 있나 한번 뒤져봤었다.

거기서 찾은 것이 Ruby/Tk 인데, 이건 너무나도(후략)

루비용 GTK 바인딩이 있지 않을까 하고 뒤져보다가, Ruby-GNOME2를 발견했다.


아직 모든 GTK API가 구현된 것은 아닌거 같지만, 일단 GUI 어플을 짜는 데는 큰 불편함이 없다.

리눅스용 ruby-gnome2는 적당히 제공되는 패키지 관리자에서 찾아 깔거나(우분투, 젠투는 기본 패키지중에 있다. emerge나 apt-get으로 간단히 설치가 가능하다.) 공식 홈에서 소스를 받아 설치하면 될 것이다.

윈도용은 공식 홈페이지에서 설치 프로그램을 받아다 깔면 되는데, 이게 찾기 상당히 귀찮게 되어 있다는 단점이 있다. Install Guide에서 다운받을 수 있는 링크가 있으므로 이 쪽을 쓰면 될 듯 하다. 설치시 반드시 PATH관련을 설정하도록 해야 제대로 사용이 가능하다.

기본적인 사용법은 OOP 언어인 루비에 맞게끔 네임스페이스 역할을 하는 모듈들, 그리고 각 클래스들로 형태가 조금씩 다르긴 하지만 원래 GTK와 크게 차이가 나지는 않는다.

가끔 조심할 부분이 있는데, 현재 윈도용은 최신판이 0.16이기 때문에 0.18용 레퍼런스와 약간 맞지 않는 문제가 있다. 이후 버전업이 되면 해결될 것 같다.

사용법은 그리 어렵지 않기 때문에 공식홈페이지의 튜토리얼만 잠깐 봐도 GTK에 관한 지식이 전혀 없더라도 어느 정도 프로그래밍이 가능한 레벨이다.

단지 조금 아쉬운점은, Ruby-GNOME2에 한한 이야기는 아니지만- GTK 자체가 설계상 약간의 불편한점이 있는 듯 하다. 크기조절이 상당히 비직관적이다!

첨부파일로, 현재 제작중인 사칙연산 연습 프로그램을 달아둔다. Ruby-GNOME2를 설치하고 실행해야 제대로 동작할 것이다. 테스트 환경은 Ruby 1.8.6, Ruby-GNOME2 0.16.0 에서 테스트를 했고, 아직 일부 문제가 있다 -_-
ps1. 아직 완성도 안된걸 올리는 이유는 숙제중이기 때문이다 -_-
ps2. 왜 첨부파일 아이콘이 알집 아이콘이지 -_- 맘에 안든다.

'프로그래밍 > Ruby' 카테고리의 다른 글

Ruby-GNOME2 0.18 One-Click Installer for Windows  (0) 2009.10.20
rubyscript2exe 로 ruby-gnome2를 이용한 어플 패킹하기  (0) 2009.02.02
GMemRB 공개  (0) 2009.02.01
Ruby-GD2 in WIN32  (0) 2008.12.23
Ruby-GNOME2  (0) 2008.12.09
Ruby on Rails  (0) 2008.05.28