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

2008.08.29

clang scan-buildのPortfileをclang-checkerて名前で野良Portsに

Objective-Cのコードを静的解析できるツール、clang scan-buildはソースからつくるのはあまりに手間がかかる(llvm本体が時間かかる)ので、手元で使ってるバイナリ版のPortifleを野良Portsに登録しました。

こんな感じ。

 % port info clang-checker
 clang-checker 85, devel/clang-checker (Variants: universal)
 http://clang.llvm.org/StaticAnalysis.html

 LLVM/Clang Static Analyzer (binary install)

 Maintainers: kimuraw
 % port contents clang-checker
 Port clang-checker contains:
   /opt/local/bin/ccc-analyzer
   /opt/local/bin/clang
   /opt/local/bin/scan-build
   /opt/local/bin/sorttable.js

bin/以下のファイルだけがインストールされます。

かなりバージョンアップが頻繁なので、livecheckもつけといた。 新しいバージョンに気づいた人は勝手に更新しといてください。versionとchecksumsを更新するだけの簡単な仕事です。checksumsを更新するスクリプトもアップしとくので、人によっては使うとよいかも→ pf-upd-checksums.rb.txt

clang scan-buildの参考資料

今日、はてブ経由でリークの分析に使ってる人がいるのを見かけた(sonson@Picture&Software - [iPhone SDK] iPhone SDK向けのコードを静的コード解析する)のだけど、もっと広まってもよいと思うのです。

|

HikiDoc 0.0.3をリリース

HikiDocは「テキスト→ HTML」変換ツールです。書きやすく読みやすい文法の テキストをまともな HTML (や XHTML) に変換します。

HikiDocの新バージョン、0.0.3をリリースしました。 リリースアナウンスは[hikidoc:124]

  • gemのインストール時に警告メッセージがでてしまう問題を修正

報告してくれた西山さん、修正してくれた須藤さん、ありがとうございます。 (ぼくはリリース作業しただけだったり…)

|

2008.08.26

RubyCocoaきのうのコミット

  • bundleForClass:がrubyが初期化されていないスレッドで呼ばれると問題が起きるのを修正(r2218)

[rubycocoa-devel:1368]で報告されたバッチをマージ。ありがとう! 問題は手元では再現できてないんだけど、パッチ見た感じ問題もなさそう(内部利用のストアをRubyのHashからNSMutableDictionaryに差し替え)なのでコミットした。

もしかして6月のrubycococa-talkの報告と同じかなと思ったのだけど、こっちは状況変わらず。

rubycocoa-talkも未処理のメールがたまってきた。来週あたりにやっつけたいなあ。

|

第3回 「詳解 Objective-C 2.0 読書会」行ってきた

内容は、記録のページに書いたのでそちらを見てください。

寝坊と道に迷ったので30分遅刻。別の地図で場所確認しとけばよかった… みなさんすみません。

今回はオーナーシップポリシーが最大のポイントなんだけど、復習にはどうするとよいだろう? 例題つくるとよいかも。 「この場合、オーナーシップをもつのはどのオブジェクトか」みたいな。 引っかけ問題はオーナーシップがゼロ、くらいか。あんまり複雑なのはプログラム側に問題アリだよな。

実際のプログラミングでは[macosx-jp:04620]に従えば問題ないと思うけど、背景の考え方はオーナーシップなんだよね、やっぱ。

オーナーシップポリシーに基づいてコードを書くと、原則としては(retaincount == オーナーの数)ということになる。すると、オーナーシップを持つオブジェクトがないという状態はどうなるの?っていうときに便利なのが自動解放(autorelease)の機能。 autoreleaseがあることで、1メソッド内などの短期のコンテキストではオーナーシップを取得せず、retainもreleaseもされないまま利用が可能という状態のオブジェクトを利用できる。これがあることで、単純な参照カウントのプログラミングよりもObjective-Cのメモリ管理はずいぶん簡単になっている。

その他。

  • どういうわけか今回はPHPの人が多かった
  • 水出しアイスコーヒー大人気
  • すぐ上のフロアが飲み屋とかマジ便利

ふりかえり。

  • KEEP
    • 開催する
    • プロジェクタはよい。次回も用意する
  • PROBLEM
    • 遅刻とかあり得ない
    • 部屋やや狭い。16人であれかあ(最大27人の部屋)
  • TRY
    • 地図は店舗のは信用しない(正しくてもわからないときもある)

次回の日程は現在調整中。 アンケートに協力ください。

|

2008.08.25

MacPorts rb-cocoaのインストール時エラーを修正

[ruby][mac] RubyからGrowlに通知するためのライブラリ、Meow (とGrowlNotifier) - Greenbear Diary (2008-08-21)でMacPortsのrb-cocoa(RubyCocoa)のインストールでエラーになる件が報告されていた(というか知ってたけど忘れてた)ので直しました。

ExamplesとDocumentationは${prefix}(通常は/opt/local)以下にインストールされるようになっています。

|

2008.08.19

第3回「詳解Objective-C 2.0」読書会は、8/23(土) 新宿で

いちおう告知。

  • 開催日:2008-08-23(土)
  • 時間:14:00 - 18:00(現地集合)
  • 会場:銀座ルノアール マイスペース 新宿3丁目ビッグスビル店 6号室

詳しくは第3回読書会のページを参照のこと。 今回から序盤のヤマ場、メモリ管理にはいるよ。たぶんGCまでは進まない。

|

第30回 Cocoa勉強会 (9/13)のお知らせ・他

9/13(土)に行われる、Cocoa勉強会のお知らせ。見学の申し込みは勉強会のメールフォームからどうぞ。(9/4 追記:締め切りました!) 会場は市ケ谷です。

ちなみに関西のほうの次回は、8/30(土)に大阪で開催の予定だそうです。ぼくも行きます。

概要

  • 日時:2008年9月13日(土)13:00 - 18:00
  • 会場:ITS市ヶ谷健保会館会議室 D室
  • 発表(2008.08.19 現在)
    • Interface Builderで作るツールバー
    • OpenGL ESについて
    • 新しいAPIでスクリーンショットを撮ろう!
    • ほか

「Cocoa Life Vol.4」発売

Cocoa勉強会の会誌「Cocoa Life」の最新号がでました。勉強会サイトで通販しています。 内容を確認したい人は、関東もしくは関西の勉強会に見学にいくと誰か見せてくれると思います。

目次

過去の発表をまとめなおしたものです。あいかわらずマニアックな内容が多め。

  • QuickLookプラグインの作り方
  • Leopard NSMenu差分
  • PDF Kit入門 - Leopard変更点
  • インラインの文字入力
  • DiskImageへSLAを追加する
  • 多言語対応のReadMeファイル
  • Uncrustifyでコード整形
  • 識別情報の変換
  • カスタムシートとModality
  • PaSoRi x Mac 応用編
  • DTrace:はじめの一歩
  • HID Manager API
  • Quartzでのインデックス画像の取り扱い
  • アニメーションGIFの作り方
  • CGS プライベート関数の利用

|

2008.08.15

StarRubyの野良Portfileを0.3.1に更新

Rubyのゲーム制作ライブラリStarRubyの0.3.1がリリースされていたので、MacPortsWiki-JPのPrivatePortfile/rb-starrubyを更新しました。

Portfileのリポジトリは、野良Ports for MacPortsを使わせてもらっています。ありがとうです。

|

2008.08.12

2008 LLVM Developers' Meetingの資料が公開されてた

2008 LLVM Developers' Meetingの資料と動画が公開されている。まあLLVM本体はさして関心はないので、clang関係を優先して見てるとこ。

なんつーか、、、ね。「しーらんぐ」と読んでいたのだけど「くらん(ぐ)」なのか。

Clang Internals

Clangの歴史が1/3くらい、その後内部構造の話。C++というだけでコード読む気が減りまくりな自分としてはありがたい。

clangの長所は速さもあるけど、整理された(と主張している)外部からアクセスしやすいライブラリ構成だよね、やっぱり。 Objective-C対応のctagsを誰か早くつくるんだ!

Finding Bugs with the Clang Static Analyzer

ちょっと声が聞きづらい。まーどうせ聞こえてもほとんどわからないからいいけど。 clangの静的解析の簡単な紹介のあと、内部の設計を詳しく、といった感じ。 WWDC 2008以前からApple社内では利用されてた(スライド59ページ)というのが意外だ。

これとは別にコードのほうを追っかけてたのだけど、どのように解析を行うかはlib/Analysys以下のコードでがりがり書いてある。変更や追加したいときにいじるのはここのC++コード。XMLで検査仕様を定義したりDSLがあったりするわけじゃない。C++のコードでロジックを書くのだ。

たとえばCFRefCount.cppでは、参照カウントの増減をObjective-C/Cocoaのルールによって推定しつつ数えて確認している(たぶん。ちゃんと読んでない)。 clangのライブラリの助けがあるとはいえ、それなりに作りこんである。

やっぱりC++も勉強しないとだめかなあ。ユーウツ。

|

HikiDoc 0.0.2をリリース

HikiDocは「テキスト→ HTML」変換ツールです。書きやすく読みやすい文法の テキストをまともな HTML (や XHTML) に変換します。

今年の2月にメンテナになったHikiDocの新バージョン、0.0.2をリリースしました。 詳しくは[hikidoc:117]を参照のこと。

rubyforgeを開発サイドとして使うの初めてなんだけど、リリースファイルのミラーが行き渡るのがsourceforge.netよりちょっと遅い気がする。sf.netだと15-30分くらいだと思う。

|

MacPortsのrubyを1.8.7-p72に更新

1.8.7-p72がでてたのでMacPortsを更新しました。

|

2008.08.10

MacPortsのrubyを1.8.7-p71に更新

Rubyに複数の脆弱性とのことで、1.8.7-p71がでてたのでMacPortsを更新しました。 もうPortIndexも更新されているので利用できるはずです。

|

2008.08.05

MacPortsで配布ファイルがURL末尾に来ないときの対応方法

Weird distfile URLsで、ダミーのパラメータを渡して、${distfiles}をmaster_sitesに含めればいいよ、という提案(実例 graphics/VirtualPlanetBuilder/Portfile)。

最初理解できなくて「そんな機能があるのか、なんとマニアックな」と思ったがなんでもないな。セミコロンでURIのパラメータにしたほうがCGIより誤認が起きにくいように思うけどそうでもないのかな?

テンプレートの文字列があって、それを変更するってなってたらスマートかなあ。 ちなみに自分が書くときは、fetchを独自定義することが多いけどおすすめしない。 たとえば、rb-glib2だとこんな感じ(てきとうに折り返し)。

 fetch {
   if {[file isfile ${distpath}/${distname}${extract.suffix}]} {return 0}
   curl fetch "http://ruby-gnome2.svn.sourceforge.net/viewvc/ruby-gnome2/\
     ruby-gnome2/trunk.tar.gz?view=tar&pathrev=3263" \
     ${distpath}/${distname}${extract.suffix}
 }

すでに${distpath}にあったときに抜けるのを自分で書いてるのが、いちばんの減点ポイント。

|

2008.08.02

Rabbit 0.5.7 Portfile準備しました

Ruby/Gtk による素敵プレゼンテーションツールRabbitと関連Portfileを最新の0.5.7に更新。 MacPortsWikiJPまたはcozmixngのsvnリポジトリから取得できます。

今回の更新は、Ruby-Gnome2を各モジュールに分割したり、公式に移行したので配布をやめたものがあったりするので、インストール済みの環境でのアップグレードの手順がいくらか複雑になっています。 くわしくは[rabbit-shockers:572]を参照してください。

いちばんの変更はRuby-Gnome2の分割だったのだけど、

  • sf.netのViewVCも任意のパスのtarballを取得できるようになった(sf.jpには前からあった機能)
  • スクリプトを書いて、一括して関連Portfileを更新できるようにした

あたりが幸いして、今後のメンテナンスはわりと楽になるよてい。 まだRuby-Gnome2でPortfile用意してないのもあるけど、それはおいおい。

|

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