« 2008年9月 | トップページ | 2008年11月 »

2008.10.31

第30回 Cocoa勉強会 (11/15)のお知らせ

11/15(土)に行われる、Cocoa勉強会のお知らせ。見学の申し込みは勉強会のメールフォームからどうぞ。 会場は南青山です。

概要

  • 日時:2008年11月15日(土)13:00 - 18:00
  • 会場:南青山ビル 8F 表参道駅すぐ
  • 参加費:500円(勉強会メンバー・見学者 共)
  • 発表(2008.11.04 現在)
    • 調整中。決まったものからのせていきます。

ほかの地域

|

2008.10.29

RubyCocoa 昨日のコミット

  • testに利用しているRubyCocoa.frameworkの検証時にアバウトすぎて、正しく判定できないことがある問題を修正 r2220

RubyCocoaのruby install.rb test時に、ちゃんと今回構築したRubyCocoa.frameworkを読み込んでいるか検証するステップがある(意図しない/Library/Frameworksをロードして、有意なテストが行われないのを回避するため)んだけど、そこがいまいちだったので直した。 MacPortsのrb-cocoaでtestを実行したら失敗したので気づいた。

いつのまにかSF.netのインターフェイス様変わりしてて使いづらいなあ。 けっこー遅いし。

|

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

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

|

MacPorts rb-cocoa 0.13.2_2

チケット#16928に対応してみた。納得いかないけど報告者のmakeがMac標準のmakeじゃなくって、/usr/share/mk/あたりの.mのルールが読めてないとしか思えない。

(2008/10/29 追記: 解決したもよう。チケットはクローズ)

これ検証してて気づいたんだけど、0.13.2てRuby 1.8.7の対応前じゃん。 とにかく現状のtrunkでもいいから一度リリースすべきだな。

ということでChangeLogのまとめつくったらMLにリリースの提案なげます>関係者みなさま

|

Macで--enable-pthreadしたRubyが遅い?

[ruby-list:45593] Mac OS X でコンパイルした Ruby は遅い?が気になったので調べてみた。 --enable-pthreadしただけでそんなにちがうってのが納得いかなかったので。

getcontext()ちゅーか、その先のsigaltstack()とsigprocmask()が時間食ってるっぽい。 pthreadていう別のスレッド環境が入ると、Rubyとそっちで整合性とらないといけないから、pthread無しよりあれこれ手間が必要で結果的に遅くなっちゃうみたいな理解で良いのかなあ。計算機の勉強の経験がほとんどないから感覚がさっぱりだ。

手元にはMacしか無くて試せないけど、他の環境でも同様の傾向があるかはちょっと興味あるなあ。Macのucontext系関数が特別に遅くても不思議じゃないけど。

|

2008.10.17

読書記録サイトStack Stock BooksのRubyCocoa製クライアントiStac

コメントで作者の人が教えてくれたのだけど、ゆる〜い読書管理サービスStack Stock BooksのRubyCocoa製クライアントiStacというアプリを作ったとのこと。

iSightを利用してバーコードを読み込み、API経由で登録するというもの。

ちょっと使ってみたので感想とか。

  • 順々にバーコードを読ませていけばどんどん登録できるのでらくちん
    • 読書管理ってタイトルや著者を入力するのがいちばんめんどいので、そこが簡単なのはイイ!
    • 自分はローカルの影舞で記録してるけど、ついついさぼりがち
  • 13桁のISBNも表示してほしい
    • 最近の本は13桁になってるので、目で確認しやすいように
  • 「編集」メニューがないのでコピペできない
    • 設定時にAPIトークンがペーストできないのは悲しい
    • vi派なのでemacsショートカットキーとか知らないし

てとこです。 iStacの問題じゃないと思うのだけど、バーコード誤認して登録しちゃったものを削除するのってどうすればいいのだろう?

あともし良かったらRubyCocoaのサイトのProjectsUsingRubyCocoaに追加しちゃってください>作者のひと

最近すっかりほったらかしだけど、RubyCocoaもいろいろ片づけないとなあ。

|

2008.10.15

MacPortsのRubyを1.8.6に戻すべきか?

こっちはやっかいな話。チケット#16861。 Ruby 1.8.7は対応していないライブラリもいっぱいあるし、MacPortsのは1.8.6系(今ならp287)に戻してほしいというリクエスト。

1.9由来のメソッドで「ぎゃあ」とか、Rails2.0系で…とか、まあ気持ちはわかるけど、原則最新に追従するっていう方針でいたいのがportメンテナである自分の気持ち。 1.8.6を採用したとき、1.8.7にするタイミングを計るのがすげー難しいし。 いつ移行するのがいいかなんて、誰に聞くかによる。

ユーザが選択できれば良いと思うけど、 MacPortsでは、以前にインストール済みでなければ過去のバージョンを利用できるようにする方法がないてのがネック。 基本1.8.7で、オプションで1.8.6をインストールするなんらかの手段を用意しておくってのが落としどころかと考えてる。

portの名前をruby186にしてしまうと依存関係の解決が難しいから、rubyて名前で入れられるようにしないといけないよな。ううむ。 variantでversion他ぜんぶ上書きするのが簡単だけど、そんなん認められなさそうだし…

|

2008.10.14

MacPortsのRubyを更新 1.8.7-p72_1

本家のチケット#16853のパッチを取り込み。rcovでなんかの問題が起きるのを修正するためとのこと。

1.8.7-p72以降に修正されたBug #516 [ruby-dev:36045]「REXML::Text#wrapは空白が含まれない場合を想定していない」を先行して適用するってのが変更内容。影響も少なそうで、パッチ前後のsample.rbの実行の検証もしたのでまあよいかなと。

REXMLてruby 1.8.7のtest/に見当たらないんだけど、もしかして自動テストなかったりする? ちゃんと見てないけどRubySpecのほうにはあるっぽい。

とりあえずMSpecを入れるとこからはじめるか。

|

2008.10.06

MacPortsの非公式PortfileのSVNリポジトリ環境をつくろう!

MacPortsWikiJP上の「Subversion 経由で PrivatePorts を配布したい」で、非公式PortfileのSVNリポジトリ環境をつくることについて企画しています。

リンク先にもありますが、

  • アップロードが簡単に
  • ダウンロード(チェックアウト)が簡単に
  • Portfile開発の練習環境の提供

あたりが目的です。まとめありがとうございます>たちゃなさん

しきいを下げる→MacPortsで使えるソフトウェアが増える→俺しあわせ、というスバラシイ未来が見える、、、かな。 まだどうやって実現できるかの相談中ですが、けっこうヤル気です。

|

2008.10.04

RubyOSA (rb-rubyosa)をMacPorts公式に登録

rb-rubyosaという名前でRubyOSAをMacPorts公式に登録した。

RubyOSAには以前から、libxml2-rubyの新しめのバージョン(0.7以降らしい?現在の最新は0.8.3)と一緒につかうとBus Errorとなり実行できない問題があったのだけど、原因がわからないのでlibxml2-rubyがあっても利用しないようにした(デフォルトのvariant disable_ruby_libxml2による)。 libxml2-rubyがないときはREXMLを使うようになっているので、利用するほうとしては問題ないはず。

存在しない属性名の値をXMLノードから取得しようとしたときに問題があるようなのだけど、libxml2-ruby単体では再現できず。rubyosaはruby経由でしかxmlデータにアクセスしてないので、こっちの問題とも考えにくいしねえ。ということで放置。 ここ1年くらいメンテされてなさそうなのが心配>RubyOSA

|

ライブラリフォルダにある、iTunesに未登録の不要なファイルを整理する

なんかiTunesのライブラリフォルダのサイズが異常に大きい(iTunesで見る全曲+PodCastのサイズ10GBの3倍以上)ことに気づいた。 以前に母艦(MacBook)のHDDが壊れて、バックアップ(てかiPod)から戻したときに何度かやりなおしたのがうまくなくて、同じ曲のファイルが複数できていたようだ。

無駄だからiTunesのライブラリにないオーディオファイルを削除したいけれど、手作業ではとても無理。

ということでiTunesのAppleScript辞書とにらめっこしつつ、RubyOSAを利用したスクリプトファイルを書いた。RubyOSAのサンプルのiTunes/inspect.rbがiTunesのライブラリをリストアップするものなので、これをパクってくればよい。

音楽とそれ以外のライブラリフォルダ(iTunes Library.xmlやアートワークの置き場所)が別になってるとか、自分の環境に依存してる部分もあるのでそのままは使えないと思うけど、いちおうのせとく。 楽曲のファイルは、シェルでエスケープしないとダメな文字がいっぱいあるので、Ruby側のメソッドでファイルの移動・フォルダの作成をするほうが無難。

実行後にiTunesでファイルがないトラックをあらわす(らしい)「!」が曲についてないっぽいことをざっと目視して、移動した不要なファイルを捨てた。

 #!/usr/bin/ruby

 require 'rubygems'
 require 'rbosa'

 ITUNES_LIBRARY_DIR = '/Volumes/QMusic/kimuraw/Musics'
 TRASH_DIR = '/Volumes/QMusic/kimuraw/Trash'

 # ライブラリフォルダにあるすべてのファイルを列挙
 allfiles = Dir.glob(File.join(ITUNES_LIBRARY_DIR, '**/*'))
 allfiles.delete_if {|f| File.directory? f}

 # rubyosa のinspect.rbから丸パクリ
 app = OSA.app('iTunes')
 OSA.utf8_strings = true
 app.sources.each do |source|
   # 「ライブラリ」にある音楽等のファイルパスを取得
   source.library_playlists.each do |playlist|
     playlist.file_tracks.each do |track|
  #     if track.enabled?
         unless allfiles.delete(path = track.location)
           # パスにマッチするファイルがないのは異常
           raise "file not found: #{path}"
         end
  #     end
     end
   end
   # はじめのソースだけを処理(iPodが接続されているときに無視する)
   break
 end

 #puts allfiles
 #exit # 一度削除対象を確認
 require 'fileutils'

 def mkdir_p(dir)
   unless File.exists?(parent = File.dirname(dir))
     mkdir_p(parent)
   end
   Dir.mkdir dir
 end

 # 不要なファイルを別階層に移動
 allfiles.each do |file|
   dest = file.sub(/\A#{ITUNES_LIBRARY_DIR}/, TRASH_DIR)
   folder = File.dirname(dest)
   mkdir_p folder unless File.exists? folder
   FileUtils.move file, dest
 end

|

るりまの野良Portfileを書いた

「るりま」ことRuby リファレンスマニュアル刷新計画で配布されている、リファレンスとツールの野良Portfileを書いてMacPortsWikiJPにのせました。

データベースファイルの数が多いので、インストール処理にはちょっと時間かかります。

|

« 2008年9月 | トップページ | 2008年11月 »