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

October 03, 2004 [長年日記]

[tDiary] リファラエディタプラグイン-1.1.0

月またぎの処理でエラーが出ていたので修正してリリースしました。

[Misc] PO file editor

GetTextのカタログファイルを簡単に編集できるようなツールを探してみた。

もちろん、Ruby-GetText-Packageでも使うことができる。

GTranslater - Gnomeベース

KBabel - KDEベース

poEdit - WxWidgetsベース

あとは、Emacsのpo-modeとVimのpo.vimくらいかな〜。

使ったこと無いけどどれが便利なのだろう。

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

通りすがり [GtkSourceViewがpoに対応してます。]

むとぽん [おぉ、そういえば。ということはgEditとかも、ですね。]


October 05, 2004 [長年日記]

[Ruby-GNOME2] A client server ants simulator

ruby-talkで発見。Ruby/GnomeCanvas2, Ruby/GConf2を使ってくれてます。どうもこの人は学校の先生かなんかでRuby-Course Sommercampus 2004というのの教材みたいです。

ちょっとソース見たけど、この人はselfを明示的に書く人なのね。まぁ、その気持ちもわからんでもないけど。

[Misc] コメントスパム

むむむ、やられたっ!ちょうど今対応しようと思ってたのに(T_T)。

対処終了。

高林さんのtdiary-comment-cleanを使おうと思ったんだけど、オレの場合、レンタルサーバ上でプログラムを実行できないので、データファイルをダウンロードしたりアップロードしたりしなきゃならない。

それだとちょっと面倒くさかったので、tdiary-comment-cleanをCGI化した上で実行した。場当たりな割にはいい感じだ。


October 09, 2004 [長年日記]

[Misc] MUTOPON7 ANNEXのドキュメントはGFDL

フッタの部分を見ていただければわかると思うが、MUTOPON7のドキュメントはGFDLの下で公開している。GFDLについてはこちら、あるいはWikipediaのGNU Free Documentation Licenseが参考になると思う。

ふと気づいたのだが、tDiaryのドキュメントサイトに、MUTOPON7に公開している「リファラ編集プラグイン」のページ自体が、ほぼ原文のままコピーされている

コピーしていること自体に何ら問題は無いのだが、コピー先のページはGFDLに従っていない。特にオリジナルの文章がGFDLでリリースされていることすらわからなくなっていると言う点ではコンテンツのマネーロンダリングみたいで悪質な気がする。

こんな小うるさいオヤジのようなことをわざわざ書かなければいけないのは寂しいことだが...もし、同ページを書いた人がここを読んでいたとしたら、是非GFDLに従うように修正していただきたい。

本来ならば、ページ作者に直接連絡して訂正をお願いしたいところだが、当然のように無記名なので直接連絡するすべもない。

Wikiなんだから自分で直せよ、と思う人がいるかと思う。大した文章じゃないんだから別にどうでもいいだろ、と言う人もいるだろう。

私としては、同ページを書いた人がここを見てくれて、その人自身に修正していただけるのを待ちたい。オープンソースに敬意を持っていただいてる方ならきっと直していただけると信じている。

数日待っても修正されていないようなら残念だが自分で修正することになるだろう。それは本当に残念なことだが。

それから、今気づいたけど、tDiaryドキュメントサイトは問題が発生した場合の連絡先メールアドレスも書いていないので管理者もわからない。これでは苦情も言えない。

まったく、オレにとってWikiに対する印象はますます悪くなるばかりだ。ふぅ。

[Misc] MUTOPON7 ANNEXのドキュメントはGFDL(2)

ライセンス表示はフッタに英語で小さく書いただけだったので、英語の読めない人などにはただのデザインの一部にしか見えないのかもしれない。

その点は素直に反省して、日本語で書き直してみた。また、FrontPageの上の方にもライセンスに関する記述を追加した。正直やりすぎ感もあるけど事前防止という意味では多少は効果があるだろう。

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

かずひこ [単に苦情を該当ページに書き込めばいいのではないでしょうか? すくなくともここにしか書いていないよりは通じるべき相手に..]


October 10, 2004 [長年日記]

[Misc] MUTOPON7 ANNEXのドキュメントはGFDL(3)

ZnZさんにMUTOPON7 ANNEXにも連絡先がないと指摘されてしまった。さすがにHTMLソースまで探してくれる人はなかなかいないと思うのできちんと書き直してみた。

「hiki自体のデザイン」という件については、確かにそういう側面もあるとは思う。でも、ツールがそうなってないから、というのはちょっと違うんじゃないかな。

[Misc] Web上のRSSリーダなるもの

以前から思っていたが...。最近のWebベースのRSSリーダで、ソースの記事を全て表示するようなものって、ソースの作者の許諾を得ていない場合は著作権侵害のような気がしないでもない。

はてなアンテナのように、先頭数10文字程度なら引用で済ませられると思うのだけどね。

で、ここでやり玉にあげさせてもらうのはPlanet Ruby alpha01。昨日から本日のリンク元に残っていたので気づいたのだけど、なんじゃこれ。

RSSで情報集めたとも書いてないから、まるで、オレ自身がこのサイトに記事を寄稿しているようにも見える。全文引用で敬称略だし。

しかも、Linuxビボ〜ろく、一番下に「無断転載も御遠慮ください。」って書いてあるんだけどな。まぁ、お願い事項だから無視されてもしょうがないんだけどさ。

一応、ここのサイト管理者はURLから判断してだてさんという人のようだが、メールアドレスが公開されていなかったので氏の日記にツッコミを入れるという形で、外してもらうように依頼した。

でもさー、なんつーか、こういうのやるときって、法律とかライセンスとか以前に、まずは各サイトの作者に確認とか取るもんじゃないのかなぁ、人として。

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

takaBSD [はじめまして。 RSSリーダに全文表示されるのが嫌ならば、はてなダイアリーの生成する RSS のように、<item>..]

山田 [RSSを利用してアグリゲートすることに関してはRSSの意義から言って問題ではないと思います。 今回問題はそれがRSS..]

通りすがり [> 今回問題はそれがRSSを使った他サイトからの引用であることを分からない形でやっていることかと。 多分Plane..]


October 11, 2004 [長年日記]

[Misc] Web上のRSSリーダなるもの(2)

石川さんからRSSを提供しているというのは「このデータは適当に使ってくれ」という意思表示だという指摘を受けた。

実際のところ、Linuxビボ〜ろくではRSSリーダで読みやすいようにRSSを提供していたというのは事実で、個人的に利用していただく分には便利だろうなぁ程度にしか考えていなかった。

ただ、そういうことも含め、RSSについて勉強不足だというのはよくわかった。

SSの仕様書を読んでもdescription要素はA brief description of the channel's content, function, source, etc.と定義されている。あくまでも、briefである。しかし、驚いたことに件のRSSは全文がdescription内に記述されている。

つまり、tDiary側の実装に問題があると言うことか。

石川さんの指摘はもっともなことで、だてさんも同じ認識であったならとても申し訳ないことをしてしまった。すみません。

いずれにせよ、現時点でLinuxビボ〜ろくがtDiaryのRSSを利用することは適切ではないと思ったのでプラグインから外すことにした。

[Misc] Web上のRSSリーダなるもの(3)

フォローしてくださったみなさん、ありがとうございました。特に、石川さんには本来私自身がすべきであったRSSに関する調査をしていただきありがとうございました。勉強になりました。

また、だてさんにも不快な思いをさせてしまったと思います。改めてお詫びします。

いずれにせよ、RSSの提供は当分控えます。RSSリーダを使ってここを読んでいた人は申し訳ありませんが、WWWブラウザを利用するようにしてください。

いろいろ疑問点も解決できたので私的には良かったと思っているのですが、一点、解決しなかった疑問点が.....。

「シュッ・シュッのヤバさ」ってどんなヤバさなのでしょうか。

いや、実は以前から気になってたんですが...。

[Misc] Web上のRSSリーダなるもの(4)

落ち穂拾いと言うことで、tDiaryのmakerss.rbプラグインについて調べてみた。

description要素は500byte以降は表示しないようになってる。ただ、500byteが、サブタイトル単位となっているようで、ここのように、各章を比較的細切れにしている場合はどうしても全部の情報が含まれてしまう。

この辺は明示的に指定できたり、別の方法にできると良いんだろうな。

[Misc] MUTOPON7 ANNEXのドキュメントはGFDL(4)

よく経緯が飲み込めてはいないのだが、どうやらかずひこさんが多少手を入れて再掲したらしい。

でも、かずひこさん。修正後版、GFDLに従ってないんですけど...。以下、わかりやすいのでWikipediaより引用しますが原文もおよそそうなっています(当然ですが)。

  • 文書にある全ての著作権表示を残すこと
    該当するかははっきりしませんが、肝心のツールのライセンスが抜けてます。
  • 元の著作権表示の近くに、行った変更に対する適切な著作権表示をすること。
  • 履歴と題された章に、適切な題名(バージョン)・著作者名・出版年・出版社名を付け加えること
  • 一応、ご指摘の通り、該当ページにも直してもらうように書いておきます。

    ただ、常に最新の情報にアップデートできない(or するつもりがあまりない)のであれば、リンクだけにしておいていただいた方がユーザには(混乱しないで済む分)うれしいのでは?

    私自身はアップデートしないでしょうし。

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

    Before...

    takaBSD [昨日のつっこみで、tDiary の makerss は <description> を作らないと書いたのですが、もし..]

    むとぽん [最新のCVS版でしか確認していないのですがdescriptionはあるみたいです。もしかしたら2.0.0以降に追加に..]

    smbd [>> takaBSDさん tar ballで配布されている、tdiary-2.0に付属しているmakerss.rbで..]


    October 12, 2004 [長年日記]

    [Ruby-GNOME2] ロラン去る

    Ruby/GStreamerはじめ数多くのRuby-GNOME2ライブラリをメンテナンスし、もりもりと実装してくれていたロランがこのたびRuby-GNOME2プロジェクトを去ることになりました。いや、Ruby-GNOME2プロジェクトだけではなく全てのフリーソフトウェアプロジェクトから去るのだそうです。Alexandriaについてはまだ悩んでるようですが...。

    なぜなら、最近、彼はAppleに就職したのだそうですが、Appleはフリーソフトウェアプロジェクトへの参加を契約で禁じているからなのだそうです。

    とても残念なことですが、Appleという世界でも希有な会社に勤めるということはきっと彼の人生において良い経験になると思いますので、喜んで送ってあげたいと思います。

    Hi Laurent, I hope you'll have great experience at your new job. Do your best!

    (ロラン、新しい仕事ではすばらしい経験ができると思います。がんばって!)

    ところで、彼の仕事をひきついで、Ruby-GNOME2のライブラリのメンテナをやってみたいという方がいらっしゃいましたら是非ご一報を(マジ)。

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

    lrz [Thank you very much, I'm very sorry to not help you anymor..]

    むとぽん [I'was happy to work with you, too. Thanks for your great c..]


    October 13, 2004 [長年日記]

    [Ruby-GNOME2] 新メンテナ

    Ruby/GStreamerとRuby/GtkTrayIconのメンテナが決まりました。新しいメンテナはエホワン(Erwan)です。ロランがきっちりと最後の仕事をしてくれました。本当に感謝です。

    それから、ロランはRuby-GNOME2のプログラミングは続けると言ってくれてます。公開できるかどうかは別として、是非続けてほしいですね。

    さて、新しいメンテナのエホワンですが、どうも彼は日本に住んでるらしいです(!)。彼のblogはその名もWagahai ha Gaijin de Aru。日本語勉強中のようですね。

    Mozillaのプラグイン(って言うのか?)の、Moji(http://moji.mozdev.org/)や、Citron (http://www.loisant.org/citron.html)など、日本語とフランス語を翻訳したりするツールを開発しているようです。(全部ヴィンセント情報(^^;))。

    ロランがlinuxfr.orgに誰かメンテナ代わって〜!という記事を書いたら、それを見た同じフランス語圏のエホワンが立候補してくれたわけだけど、その彼は実は日本に住んでて、もしかしたらオレのご近所さんかもしれない.... なんてなんかおもしろいですね。

    [Ruby-GNOME2] Ruby/GnomePrint

    Rabbitの須藤さんがRuby/GnomePrintを実装・メンテナンスしていただけることになりました。新メンテナがなんと一度に二人です!

    実はGnomePrint系は以前から要望の多かったライブラリなのでこうして実装していただける方が出てきていただけたのはホントありがたいことです(後はRuby/GnomePrintUIか...)。

    Rabbitともどもよろしくお願いします。

    それにしても18個目か...。すごいなー(ちょっと遠い目)。


    October 14, 2004 [長年日記]

    [Misc] てにおは&表記揺れのチェック

    はもう飽きました。そりゃー、自分だってやらかすけどさ、とにかく多すぎなんだよなー。

    つーか、客に出す資料だから、ってことでいちいち指摘するんだけどさー、指摘してるオレが了見の狭い人間のように思えて自分が哀れになってくるんだよなー。

    オレだってそんなこと話題にしたくないんだけどなー。その辺はクリアした上で話がしたいんだけどなー。わかんねーかなー。


    October 16, 2004 [長年日記]

    [Ruby] Ruby Magazine 0002号

    すばらしい。あとでゆっくり熟読させていただきます。


    October 19, 2004 [長年日記]

    [Ruby] pseudoiconv.rb

    WindowsのOne-Click Installer等の一部の環境ってiconvが入ってなかったりする。

    #最新版ならば入ってるかも。

    そんな環境でもRuby/GLib2をインストールできる環境(つまりはWin32の環境なんだけどさ)用にpseudoiconv.rbというGLib.convertを使ってIconv.iconvをシミュレートするスクリプトを書いてみた。

    エラーは全部Iconv::IllegalSequenceになっちゃうんだけどね。

    begin
      require 'iconv'
    rescue LoadError
      begin
        require 'glib2'
                                                                                      
        module Iconv
          class IllegalSequence < ArgumentError; end
          module_function
          def iconv(to, from, str)
            begin
              GLib.convert(str, to, from).split(//)
            rescue
              raise IllegalSequence.new(str)
            end
          end
        end
      rescue LoadError
        module Iconv
          module_function
          def iconv(to, from, str)
            warn "Iconv was not found." if $DEBUG
            str.split(//)
          end
        end
      end
    end
    

    ちなみに次期リリース版のRuby/GLib2では以下のようにもうちょっとだけエラー処理をIconvに近づけることができる予定。

    begin
      require 'iconv'
    rescue LoadError
      begin
        require 'glib2'
        module Iconv
          class InvalidEncoding < ArgumentError; end
          class IllegalSequence < ArgumentError; end
          class InvalidCharacter < ArgumentError; end
          module_function
          def iconv(to, from, str)
            begin
              GLib.convert(str, to, from).split(//)
            rescue GLib::ConvertError => e
              case e.code
              when GLib::ConvertError::NO_CONVERSION
                raise InvalidEncoding.new(str)
              when GLib::ConvertError::ILLEGAL_SEQUENCE
                raise IllegalSequence.new(str)
              else
                raise InvalidCharacter.new(str)
              end
            end
          end
        end
      rescue LoadError
        module Iconv
          module_function
          def iconv(to, from, str)
            warn "Iconv was not found." if $DEBUG
            str.split(//)
          end
        end
      end
    end
    

    require 'iconv'しているアプリは、iconvの代わりにこれを使っておけば、もしかしたらちょっとだけアプリケーションの適用プラットフォームが広がるかもしれない。

    さらにnkfやuconv等を試すようなコードにすれば日本語関連では結構なところまでいけそうな気がする。uconvはともかくnkfはRubyに標準添付されてるしね。

    次のRuby-GetText-Packageはこの仕組みを利用しようかと考え中。

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

    なかだ [Iconvのエラーは、一括して捕まえられるようにIconv::Failureをincludeしてます。]

    むとぽん [なるほど。includeしてるかどうかまでは意識してませんでした。情報ありがとうございます。]


    October 21, 2004 [長年日記]

    [Ruby-GNOME2] Rabbit-0.0.4

    リリースされたようです。ruby-talkでもアナウンスがありました。いよいよ世界進出ですね(^^;)。Ruby-GetText-Packageも使っていただいているようです。

    そうそう、GnomeFilesもポチッとな。


    October 23, 2004 [長年日記]

    [Ruby] Ruby-GetText-Package-0.7.0

    リリースしました。先日のpseudoiconv.rbをgettext/iconv.rbとして実装しました。Windowsな環境でRuby/GTK2と一緒に使うと文字化けしていたものが、これに切り替えるだけでなおるかもしれません。


    October 24, 2004 [長年日記]

    [Ruby] RAA

    RAAのをアップデートすると、Dependency: Required byな部分が消えてしまう気がする。

    とりあえずraa-admin@ruby-lang.orgにメール送ったんだけど、日本語で良かったのかな。

    なひさんからリプライあり。そういう仕様なんだそうな。

    [Ruby] Ruby-GetText-Packageのドキュメント

    新機能分の記述を追加したら大きくなったのでページをいくつか分割してみた。

    結構、見やすくしたつもりなので良かったら見てやってください。もちろん間違い等ありましたら指摘していただけると助かります。

    ついでに、これを機会に開発しているアプリケーションをL10n化しちゃいましょう!

    英語の分もやったので時間がかかってしまった...。ここが大変(T_T)。


    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 29, 2004 [長年日記]

    [Ruby] まつもとさんのお子さま誕生

    遅ればせながらおめでとうございます。