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

October 25, 2003

[Hiki] ニュースプラグイン version 1.0リリース

ニュースプラグインというのを作ってみました。

これはHiki上でニュースページの生成・表示を簡単に行うようにするプラグインです。登録画面付き。生成したニュースページはそれ自体がHikiの1ページとなるので更新や削除等は通常のHikiの機能を使えます。

具体的にどのように使うかというと、Ruby-GNOME2 Project WebsiteMUTOPON7 ANNEXを参考にしてください、ってまだ登録されている情報が少ないのであまり参考になりませんが。

元々はRuby-GNOME2 Project Website用に作ったのでニュースプラグインと名付けましたが、ページ生成部分を(Rubyを知っていれば)簡単に変更することができますので、その辺をうまくカスタマイズすれば簡単なblogや日記機能として使うことができると思います。

にしてもプラグイン作ったの久しぶりだー。といっても元ネタのbbsプラグインをホゲっただけ。いやーbbsプラグインに感謝です。

おっと、忘れてた。たぶんHikiはCVS版じゃないと動かないッス。

そういえば、最近、Hiki-MLでたけうちさん見かけないんだけどどうしたんだろう。

本日のツッコミ(全3件) [ツッコミを入れる]

きた [きのうとある宴会でたけうちさんの同僚と話したんですが,最近仕事の方がかなり忙しいらしいですよ.]

たけうち [もらってるパッチもコミットできてなかったりしてすみません。来週ぐらいから復活する予定です。もうね、疲れますわ…>本業]

むとぽん [おー、ご無事そうでなによりです(^^;)。]


October 25, 2004

[Ruby] raadepchecker.rb

RAAのDependencyの件で、なひさんとメールでやりとりさせていただいた中で

RAAに登録した自作アプリ・ライブラリが他のライブラリたちに依存している時、他のライブラリたちがバージョンアップされると、RAA的には互換性が保証されない状態になる。その場合は、再度、依存している他のライブラリの最新版と自作アプリ・ライブラリがきちんと動作するか確認した上でRAAのdependenciesをアップデートすべきである

というポリシーがあると伺った。

ちょっと厳しい気もしないでもないが確実性という意味ではやむをえないのかなとも思う。

とはいえ、いくつか登録しているアプリ・ライブラリが依存しているライブラリのアップデート状況をWWWブラウザでチェックするのもメンドウクチャイ。

幸い、RAAはSOAPインタフェイスを持っているので、それを使ってチェッカを作ってみた。名付けて「自作ライブラリ依存先ライブラリアップデートチェッカ」....長い。

require 'soap/wsdlDriver'
  
module RAADepChecker
  RAA_URI   = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/"
  EMPTY     = 0
  UPDATED   = 1
  NOCHANGED = 2
  NOTFOUND  = 3
  
  module_function
  def get_project(prj_id)
    raa = SOAP::WSDLDriverFactory.new(RAA_URI).create_driver
    gem = raa.gem(prj_id)
    gem.project if gem
  end
   
  # [[prj_id, req_version, newest_version], ...]
  def check_dependencies(prj)
    ret = []
    if prj.dependency.size == 0
      ret << [EMPTY, prj.name, nil, nil]
    end
    prj.dependency.each {|dep|
      dep_prj = RAADepChecker.get_project(dep.project)
      if dep_prj and dep_prj.version != dep.version
        ret << [UPDATED, dep.project, dep.version, dep_prj.version]
      elsif dep_prj
        ret << [NOCHANGED, dep.project, dep.version, dep_prj.version]
      else
        ret << [NOTFOUND, dep.project, dep.version, nil]
      end
    }
    ret
  end
end
 
if __FILE__ == $0
  ARGV.each do |prj_id|
    puts "\n-- #{prj_id} ------"
    prj = RAADepChecker.get_project(prj_id)
    if prj
      RAADepChecker.check_dependencies(prj).each do |v|
        case v[0]
        when RAADepChecker::EMPTY
          puts "No dependencies."
        when RAADepChecker::UPDATED
          puts "Required #{v[1]} #{v[2]} : Updated to #{v[3]}." 
        when RAADepChecker::NOCHANGED
          puts "Required #{v[1]} #{v[2]} : Nothing has been changed." 
        else RAADepChecker::NOTFOUND
          puts "Required #{v[1]} #{v[2]} : No entry in RAA."
        end
      end
    else
      puts "No entry in RAA."
    end
  end
end

ruby raadepchecker.rb project1 project2 .... と言う感じで使う。試しに、Ruby-GNOME2, rbbr, ruby-gettext-packageの結果を表示してみる。

$ruby raadepchecker.rb ruby-gnome2 rbbr ruby-gettext
 
-- ruby-gnome2 ------
No dependencies.
  
-- rbbr ------
Required ruby-gnome2 0.9.1 : Updated to 0.10.1.
Required ruby-gettext 0.5.4 : Updated to 0.7.0.
 
-- ruby-gettext ------
Required racc 1.4.4 : Nothing has been changed.

つまり、rbbrはruby-gnome2-0.10.1, ruby-gettext-0.7.0で動作確認してRAAのエントリをアップデートしなきゃならんのう、ということがわかるわけだ。たまに気が向いたら実行してみればいいさぁ。

うーん、ちょっとは便利になったかな。でも、やっぱりメンドクチャイ!

また、余計なものを作ってしまった...。そんなことよりRuby/GnomeCanvas2どうにかしないと...(T_T)。


October 25, 2005

[] あいかわらず提案活動中なわけですが

この前のMS PowerPointで作った資料の補足資料としてMS Wordでドキュメントを作成中。今回もこの前のパワーポッター氏がドキュメントをまとめてくれているのだけど、その鮮やかなWordさばきに「ワード・プロフェッサー」略して「ワープロ」というあだ名がついた。

....ってか、もういいよ、提案活動なんて....(T_T)。


October 25, 2007

[Misc] JRuby

JRuby on RailsでRuby-GetTextを使いたい、と言う要望がちらほら、(というか一部からかなりしつこく?)くるようになった。今まで全然興味なかったから手もつけてみたことが無かったんだけど、とりあえずちょこっと触ってみることにした・・・・・ら、これなかなかのもんだね。

問題はso形式のライブラリが一切使えないこと(たぶん。おかげで、標準ライブラリの中からso系のものは根こそぎカットされてる・・・って、やり方あったら教えて!)。Ruby-GetTextではIconvとlocale_system.soが使えないのでその部分をJavaのライブラリでラップしてあげるようなコードを書く必要があると思われる。まぁRailsだけということだったらその辺をざっくりコメントアウトすれば動いちゃうんだろうけど(実際そういうパッチが送られてくるし・・・)、Ruby-GetTextはコンソールで動かしたときにローカライズされた文字列が文字化けせずに表示できる、というのがウリなんだから、どうせJRubyに対応させるんだったらそこまでやりたいよね。

ま、それはそれとして、jirbでちょっと実験。

% /usr/java/jruby/bin/jruby /usr/java/jruby/bin/jirb
irb(main):001:0> require 'java'
=> true
irb(main):002:0> locale = java.util.Locale.getDefault
=> #<Java::JavaUtil::Locale:0x1be2893 @java_object=ja_JP>
irb(main):003:0> locale.to_s
=> "ja_JP"

おぉ。簡単だ。ってかフツーにJavaでちょっとしたコードを確認したいとき、こんな感じで確認できちゃうってすげー便利かも。public static void main(String[] args)とか書かないで済むんだからなー(いつも忘れるんだよな、この文(^^;))。

[Misc] Pseudo Iconv for JRuby

とりあえず、Ruby-GetTextで使ってる文字列変換Iconv.convのJRubyでの実装はこんな感じかな。

require 'java'
 
module Iconv
  module_function
  def conv(to, from, str)
    str = java.lang.String.new(str.unpack("C*").to_java(:byte), from)
    str.getBytes(to).to_ary.pack("C*")
  end
end
 
if __FILE__ == $0
  puts  Iconv.conv("Shift_JIS", "UTF-8", "あいう")
end

とりあえず、動いたみたいだけど・・・。


更新 設定