よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

May 28, 2003 [おもひで]

[Ruby-GNOME2] googleplotを使ってみる

おもしろそうだったのでRuby-GNOME2のサイトに入れてみた → こちら

どんなグラフになるのか今から楽しみ。

#ってか、2日目にいきなり減ってるし...(T_T)。

[Misc] googleplotをSF.jpで使う

SF.jpにgoogleplotを入れるのはちょっと面倒なので簡単にどんなことをやったかメモしておくことにする。

まず、googleplot-0.1がruby-1.8.xのみ対応なので以下のパッチでruby-1.6.xに対応させた。

diff -ruN googleplot-0.1/googleplot.in dev/ruby/googleplot-0.1/googleplot.in
--- googleplot-0.1/googleplot.in        2003-05-22 14:17:54.000000000 +0900
+++ dev/ruby/googleplot-0.1/googleplot.in       2003-05-27 02:22:55.000000000 +0900
@@ -117,7 +117,11 @@
       count = 0
       query = CGI.escape(key)
       Net::HTTP.start(@google_host, 80) {|http|
-        response = http.get("/search?q=#{query}&ie=UTF-8&oe=UTF-8")
+        if RUBY_VERSION >= '1.8.0'
+          response = http.get("/search?q=#{query}&ie=UTF-8&oe=UTF-8")
+        else
+          response = http.get2("/search?q=#{query}&ie=UTF-8&oe=UTF-8")
+        end
         if m = /\bswrnum=(\d+)\b/.match(response.body)
           count = m[1].to_i
         end

(*)ただ単に、http.getのところをhttp.get2とすれば良いらしい。

次にming-0.2aをインストール。とりあえず手元のRedHat8上で静的リンクされたlibming.aを作った。たぶん、Makefileの all: の部分を all: staticしてmakeすればよかったと思う(うろ覚え)。

それから、ming-ruby。これはsoファイルを作らないといけないのだが、オレの環境(RedHat8)で作ったming.soは、Debianを使っているSF.jpでは使えなかった(glibcのバージョンが違うと言われる)。

そこで、SF.jpのコンパイリングファーム(cf)を使うことにした。

まず、cf上の自分のホームディレクトリでruby-1.6.7をコンパイル&インストール。

次にそのrubyを使ってming-rubyの本体であるming.soを作成する。もちろん、このときには先ほど作ったlibming.aとming.hが必要。

といってもそのままruby extconf.rbしてもエラーが出るはずなので、ローカル(RedHat8)で作ったming-ruby用のMakefileを持っていって環境に合わせて書き直すか、あるいはming-ruby用のMakefileを強引に作る。

オレの場合、cf上でming-ruby/ext/ming/ming/extconf.rbをいじって強引にMakefileを生成するようにした。こんな感じ。

--- ext/ming/ming/extconf.rb     2002-06-24 23:12:12.000000000 +0900
+++ extconf.rb  2003-05-28 22:32:20.000000000 +0900
@@ -3,8 +3,7 @@
 
 require "mkmf"
 
-if have_library("ming", "newSWFShape") and
-       have_header("ming.h")
+if have_library("ming", "newSWFShape")
   if have_library("ming", "SWFMovie_setButtonSound")
        $defs.push '-DSUPPORT_PCM'
   end
@@ -14,3 +13,4 @@
   create_makefile("ming")
 end

んでもって、ext/ming/ming/配下でruby extconf.rb(libming.aも同じディレクトリに置いたような気がする)。出来上がったMakefileをlibming.aを静的にリンクするように編集して make。できあがったming.soをshellサーバ(cfではない)のgoogleplotと同じディレクトリに配置する。

おっと忘れてた。googleplot自体はming-graph.rbとgoogleplot.cssとEfontSerifB.fdbとローカルでmakeしたgoogleplotをshellサーバ上のディレクトリに配置する。このとき、googleplotの330, 335行目くらいにあるEfontSerifB.fdbとgoogleplot.cssのディレクトリを適切なディレクトリ(フルパスが確実)へ変更した。他にも何か修正したかも。忘れたけど(^^;)。

ここまでできたら後は実行して試してみる。

うまく動いたら、後はHTTPでアクセスできるようなところに結果を出力するようにして、さらにcrontabを書いて完了。

長い割にはだいぶはしょっちゃったので参考にならんな(^^;)。

まぁ、SF.jpで使うのは結構面倒くさいと言うことで(ってなんぢゃそれ)。

それにしても、最近は楽しいRubyスクリプトがいっぱい出てきたので試す時間がいくらあっても足りないのぅ。

本日のツッコミ(全3件) [ツッコミを入れる]
なかだ (May 30, 2003 11:36)

ming-rubyのextconf.rbには、dir_configありませんか。

青木 (May 30, 2003 11:59)

require 'net/http'直後に Net::HTTP.version_1_2<br>としておくと 1.6 でも 1.8 と同じ挙動になります。

むとぽん (May 31, 2003 03:00)

なかださん > dir_configは無かったですが、--with-opt-lib/includeでそのまま行けました。<br>青木さん > なるほど、そうすれば良かったですね。ありがとうございます。


編集