パッケージ準備中

投稿者 akira 2005-09-01 15:02:00 GMT

バグがたまってしまっているのでいくつかだけでも解決すべくパッケージを準備中。近いうちに。

ruby1.6を削除しよう

投稿者 akira 2005-08-12 15:00:00 GMT

Debian/unstableからruby1.6を削除しよう、というのを投げた。9月中旬あたりに削除を依頼する予定。

ざっと見たところ、問題になりそうなのはaswiki、rsjog、tdiary-plugin、tictactoeで、これらの依存関係はruby1.6に行きつく。aswikiやtdiary-pluginはRuby 1.8系でもきっとなんとかなるんじゃないかと思う(がよく分からない)。rsjogとtictactoeはlibgtk-ruby1.6を使っているから難しいかも。upstreamでは更新されていないようでもあるし。と、思っていたらtictactoeについてはメンテナと鵜飼さんのやり取りによるとRuby-GNOME2化して対処できるっぽい。

「dRubyによる分散・Webプログラミング」のブックレビュー開催

投稿者 akira 2005-07-24 15:01:00 GMT

日本のLinux情報で行われる「dRubyによる分散・Webプログラミング」のブックレビューのレビューアを募集中。応募締切は7/30(土)17:00必着。

追記(2005-09-12): 五人の方によるレビュー記事が公開された。

dRubyによる分散・Webプログラミング 1

投稿者 akira 2005-07-21 15:00:00 GMT

dRubyによる分散・Webプログラミング

dRubyによる分散・Webプログラミング

投稿者 akira 2005-06-30 15:00:00 GMT

おっ、dRubyによる分散・Webプログラミングがいよいよ出ますか。楽しみ。

パッケージ更新

投稿者 akira 2005-06-22 15:00:00 GMT

ただいま準備中。1.9とか。確認してもらって、と。

Amazon.co.jpのウィッシュリストを取り出す

投稿者 akira 2005-06-19 15:00:00 GMT

んーと、こんな感じでいいんだろか?:

$ ruby -r amazon/search -rrexml/document -rcgi -e '
devid = "developer id"
wishid = "wishlist id"
def each_product(doc)
  REXML::XPath.match(doc, "/ProductInfo/Details").each do |pinfo|
    yield(pinfo)
  end
end
def product_info0(tag, doc)
  CGI::escapeHTML(REXML::XPath.match(doc, tag).collect {|x| x.text}.join(","))
end
def product_info(doc)
  author = product_info0("Authors/Author", doc)
  author = product_info0("Artists/Artist", doc) if author.empty?
  [ product_info0("Asin", doc),
    product_info0("ProductName", doc),
    product_info0("ImageUrlMedium", doc),
    product_info0("ReleaseDate", doc), 
    product_info0("Manufacturer", doc),
    author]
end
def output(doc)
  author, asin, title, iurl, date, manufacturer = product_info(doc)
  printf("<p><a href=\"%s\">%s</a> (%s) %s %s <a href=\"http://www.amazon.co.jp/exec/obidos/ASIN/%s\">%s</a></p>\n",
    iurl, title, author, date, manufacturer, asin, asin)
end                                   
r = Amazon::Search::Request.new(devid)
(1..99).each do |i|
  begin
    d = REXML::Document.new(r.wishlist_search(wishid, Amazon::Search::LIGHT, i))    
    each_product(d) do |pi|
      output(pi)
    end                                      
  rescue Amazon::Search::Request::SearchError
    break # done
  end
end'

wishlist idはウィッシュリストを表示したときのURLの/exec/obidos/registry-invite/に続く部分でよいみたい。

sargeの次のリリースに向けての目標のようなもの

投稿者 akira 2005-06-06 15:00:00 GMT

目標というかTODOというか、単にメモというか。次のリリースまでにやっておきたいこと:

安定版Rubyをできるだけ安定な状態で提供する
1.8系は基本的に安定版だからとCVSから変更を取り込んでいたけど、今回のリリースに際していくつかの点でミスを犯してしまった。Ruby自体の開発(保守かも)の進められ方にもよるけどBTSを基本にして困っていると言われたタイミングで物事を考えるようにしてみようと思う。
メンテナンスするパッケージを減らす
今の時点で42パッケージある。sargeがリリースされたのでRuby 1.6系はフェードアウトさせるとして、そうするとRuby 1.8に含まれる15くらいのパッケージはメンテナンスしなくてよくなる。それ以外のパッケージのうちの3つか4つくらいはRuby 1.6系用だからこれらも不要になる。残りは25個くらいだが、ruby{1.8,1.9}とあといくつか、それにbdb関係をいれて10個くらいに減らしたいところ。
ruby1.8のsarge向けのbackportを提供する
woody向けのbackportパッケージは途中で継続できなくなってしまったが、今度はbackports.orgで提供できるようになると良いなあ——という、これは希望。少しずつ準備していってみよう。

あと他には……?

フリーズ 2

投稿者 akira 2005-05-03 15:01:00 GMT

うーん、しまった。もう少し時間があると思いこんでいて更新のタイミングを逸してしまった。SEGVバグとか(他)があるから直したいところなのだがバグ報告がないとダメか。自作自演てのもアレかなあ……。うーん、うーん。

正規表現がどこにどうマッチしたか表示する

投稿者 akira 2005-05-02 15:00:00 GMT

Rubyの正規表現で、どこにどうマッチしたかを表示させるCGIスクリプトを書いてみた。今のところマッチに幅がないときの入れ子の関係を再現することができないという制限がある。あと、あんまりテストしてないのでおかしなところがあるかもしれない。スクリプトはこちら→regexp-test.cgi(例によってそのうち消える)実行結果のサンプル

メインとなるところはだいたいこんな感じ:

class MatchData
  MATCH_BEGIN = '<span class="match" title="$%d">'
  MATCH_END = '</span>'
  ESCAPE_PROC = proc {|text| CGI.escapeHTML(text)}
  def to_html(show_empty_match = false,
              match_begin = MATCH_BEGIN,
              match_end = MATCH_END,
              escape_proc = ESCAPE_PROC)
    tmp = {}
    size.times do |i|
      if (b = self.begin(i)) && (e = self.end(i))
        tmp[b] ||= [[],[]]
        tmp[e] ||= [[],[]]
        if b != e
          tmp[b][1].push(match_begin%i)
          tmp[e][0].unshift(match_end%i)
        elsif show_empty_match
          tmp[b][0].insert(tmp[b][0].size - 1,
                            match_begin%i + match_end%i)
        end
      end
    end
    ret = []
    (0 .. string.size).each do |i|
      if tmp[i]
      	ret << tmp[i][0] unless tmp[i][0].empty?
      	ret << tmp[i][1] unless tmp[i][1].empty?
      end
      ret << "" unless ret.last.kind_of?(String)
      ret.last << string[i] if string[i]
    end
    ret.collect do |x|
      String === x ? escape_proc.call(x) : x
    end.join('')
  end
end