« 2009年1月 | トップページ | 2009年4月 »

2009.03.31

rb-easyjourとrb-dnssdをMacPorts公式に登録

Rubyのライブラリ、EasyjourでのBonjour利用があまりにも簡単なことに感動したので、依存パッケージのdnnsdと合わせてMacPorts公式に登録した。

easyjourの使い方

ほとんどEasyjourモジュールの関数だけで事足りる。

 # サービスを公開する
 Easyjour.serve("service name", "http", 10088)

 # サービスを検索する
 Easyjour.synchronous_search(5, "service name") {|service| puts service}

こんだけ。だいたいの用途ならこれで問題なし。 同期(のように)検索できるってのがいいな。

|

るりまの野良Portfileを20090329版に更新

「るりま」ことRuby リファレンスマニュアル刷新計画で配布されている、リファレンスとツールの野良Portfileを最新に更新しました(参考[ruby-list:45945])。

|

2009.03.28

rabrickをBonjour経由で公開してみる

プレセンテーションツールRabbitには、webインターフェイスでスライドを公開・操作できるrabrickというコマンドがある(使い方は[ruby-list:40844]参照)。 これをBonjourにのせてみることにする。

gemからdnnsdeasyjourをインストールして、rabrickをちょこっと修正。

 Index: bin/rabrick
 ===================================================================
 --- bin/rabrick	(revision 1227)
 +++ bin/rabrick	(working copy)
 @@ -13,6 +13,7 @@
    Rabbit::Console.parse!(args, logger) do |opts, options|
      options.druby_uri = "druby://localhost:10101"
      options.port = 10102
 +    options.bonjour = false
      options.debug = false


 @@ -31,6 +32,12 @@
 options.port = port
      end

 +    opts.on("--[no-]bonjour",
 +            _("Specify whether bonjour enable or not."),
 +            "(#{options.bonjour})") do |bool|
 +      options.bonjour = bool
 +    end
 +
      opts.on("--[no-]debug",
       _("Specify whether debug mode or not."),
       "(#{options.debug})") do |bool|
 @@ -57,6 +64,11 @@

    trap("INT") {server.shutdown}
    server_thread = Thread.new {server.start}
 +  if options.bonjour
 +    require 'easyjour'
 +    jour_title = 'Rabbit - ' + rabbit.title
 +    jour = Easyjour::Service.new(jour_title, 'http', options.port)
 +  end
    if options.debug
      while gets
 logger.info(_("reloading ERB templates..."))

これで、

  • Safariの環境設定>ブックマークで「Bonjourを表示」にする
  • rabrickを--bonjourオプションをつけて開始

とすると、Safariのブックマークに"Rabbit - (スライドのタイトル)"と表示されるので、それを選択するとrabrickにアクセスできる。ホスト名やport番号がBonjour経由で解決されるので自分で入力しなくてよい。かんたん。

URLがhttp ://(Macの名前).local.:(rabrickのport)/となっていて、"local"の後ろにドットがあるのがキモチワルイけど気にしないように努力。 あと、プロキシが間に入るとダメだったりするので注意。

Safari以外のブラウザでにBonjour経由でサービスにアクセスできるか、確認してみたけど

  • OmniWeb 5.9.1 - ブックマークの「ローカルウェブサーバ」から
  • iCab 4.5.0 - 該当機能が見当たらない
  • Firefox 3.0.3 - 該当機能が見当たらない

という残念な結果。Firefoxは拡張がありそうだけど探してない。 それにしても、iPod touchのSafariにも見当たらないのはどーゆーことだろう…さすがに自分の見落としだと思うんだけど。

(2009/03/28 追記)

ちなみにこんな感じ。

SafariのBonjourにrabrickを表示

|

2009.03.25

ctags日本語対応版のportを5.7j1に更新

はてブのタグ「vim」を含む新着エントリーを見ていたら、「MacPorts で ctags5.7J を作ってみる - Heavens hellという記事を見つけたので、MacPortsWikiJPのPrivatePortfile/CTagsに勝手に取り込んじゃいました。

ありがとうございます。

ファイル名は ctags-5.7j1.tar.gz だけど、圧縮したディレクトリ名は ctags-5.7 で ファイル名とディレクトリ名が一致していないからエラーになった

という件は、worksrcdirを設定して対応するのがよいと思います。

|

2009.03.21

MacPorts公式のrubyをちょっとだけ更新

  • 1.8.7-p72_2 -> 1.8.7-p72_3

Rabbitのrabrickを試していたら、drbがうまく上がらないことに気づいた。

現象としては、以下のようなエラーがおきる。

 % ruby -rsocket -e 'p TCPServer.open(0)'
 -e:1:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)
  from -e:1:in `open'
  from -e:1

macportsのrubyではext/socket.cにパッチを当てている。コイツが原因のようだ。 もともとは10.5.3のruby 1.8.6-p114で発生してた問題 #15528 に対処するためにあたっていたパッチみたいなんだけど、今となっては(ruby側とMac OSのどっちで対処されたかまでは調べてない)パッチなしでも追加のテストケースをパスするようになっている。

ちなみにmake test-allの結果が

  • 素のruby-1.8.7-p72: 0F
  • macportsのruby(1.8.7-p72_3): 2F

となっている。(両方ともi686 MacOS X 10.5.6)

2Fも消さなきゃならんだろうなあ(今回の更新で3F->2F)。 いちおエラー内容を貼っておくので、アドバイスなどお待ちしています。

 Finished in 164.209604 seconds.

   1) Failure:
 test_02_unknown(TestDRbCore) [/(略)/work/ruby-1.8.7-p72/test/drb/drbtest.rb:136]:
 <FailOnecky::OneckyError> exception expected but was
 Class: <DRb::DRbConnError>
 Message: <"too large packet 4176">
 ---Backtrace---
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:573:in `load'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:633:in `recv_reply'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:923:in `recv_reply'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1202:in `send_message'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1093:in `method_missing'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1177:in `open'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1092:in `method_missing'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1110:in `with_friend'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/lib/drb/drb.rb:1091:in `method_missing'
 (druby://localhost:50503) /(略)/work/ruby-1.8.7-p72/test/drb/ut_drb.rb:40:in `sample'
 /(略)/work/ruby-1.8.7-p72/test/drb/drbtest.rb:137:in `test_02_unknown'
 /(略)/work/ruby-1.8.7-p72/test/drb/drbtest.rb:136:in `test_02_unknown'
 ---------------

   2) Failure:
 test_client_session(OpenSSL::TestSSL)
     [./test/openssl/test_ssl.rb:426:in `test_client_session'
      ./test/openssl/test_ssl.rb:417:in `times'
      ./test/openssl/test_ssl.rb:417:in `test_client_session'
      ./test/openssl/test_ssl.rb:129:in `call'
      ./test/openssl/test_ssl.rb:129:in `start_server'
      ./test/openssl/test_ssl.rb:416:in `test_client_session']:
 <false> is not true.

 1986 tests, 1345484 assertions, 2 failures, 0 errors
 make: *** [test-all] Error 1

|

2009.03.20

MacPortsWikiJPにテキスト比較ツールDocDiffを登録

テキスト比較のコマンドラインツール、DocDiffMacPortsWikiJPのPrivatePortfilesに登録しました。 ふつうのdiffは行単位での差異を表示するけど、単語や文字単位での差異が出力できるので、文章を書くときに便利。単位での差分がでても1行が長いとどこが変わったかわからんからね。

じぶんの手元の設定だとこんな感じ(zsh環境)。

 % alias svn-docdiff
 svn-docdiff='svn diff --diff-cmd=docdiff'
 % cat ~/.docdiff/docdiff.conf
 resolution = word
 encoding = UTF-8
 eol = LF
 format = tty
 digest = on

`svn-docdiff'で作業コピーとHEADが比較できる。

macports-jpプロジェクトの宣伝

ついでに宣伝すると、MacPortsパッケージ開発を支援するmacports-jpというプロジェクトに参加しています。rb-rurima-jaなんかもリポジトリをここに置いています。 macports-jpプロジェクトではメンバーを募集していますので、興味ある人はぜひ参加を。

もっとportを増やすのだ!

|

« 2009年1月 | トップページ | 2009年4月 »