<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>yatsu.info</title>
    <link>http://yatsu_info/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>GitからLighthouseにチェンジセットを送る</title>
      <description>&lt;p&gt;Gitから&lt;a href="http://lighthouseapp.com/"&gt;Lighthouse&lt;/a&gt;にチェンジセットを自動で送る方法を探してみたのですが、ちょうどよいものが見つけられなかったので、自分でちょっとしたpost-receiveスクリプトを書いてみました。&lt;/p&gt;

&lt;p&gt;例として、以下のような環境を用意します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% mkdir project
% cd project
% git init
% touch README
% git add README
% git commit -m "Initial commit."
% cd ..
% git clone --bare project
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これによって project.git ディレクトリができます。
作業レポジトリは project とし、そこから project.git に対して &lt;code&gt;git push&lt;/code&gt; したときにチェンジセットがLighthouseに送られるように設定します。&lt;/p&gt;

&lt;p&gt;まず、&lt;a href="http://github.com/Caged/lighthouse-api/tree/master"&gt;lighthouse-api&lt;/a&gt;を project.git ディレクトリに置きます。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cd project.git
% git clone git://github.com/Caged/lighthouse-api.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;RubyGemsで&lt;a href="http://github.com/mojombo/grit/tree/master"&gt;Grit&lt;/a&gt;をインストールします。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% gem install grit
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;project.git/hooks ディレクトリに以下の post-receive を作ります。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env ruby

require 'rubygems'
require 'grit'
require File.dirname(__FILE__) + '/../lighthouse-api/lib/lighthouse-api'

# ---
account   = 'foo'
permalink = 'project'
tokens    = {
  'foo@example.com' =&amp;gt; '03129063afbb21293e71d873dea6362b67fdf81f'
}
# ---

logger = Logger.new(File.dirname(__FILE__) + '/logs/post-receive.log')
logger.level = Logger::INFO

begin
  rev_old, rev_new, ref = STDIN.read.chomp.split(/ /)
  logger.info "[receive] #{rev_old} #{rev_new} #{ref}"

  repo    = Grit::Repo.new(File.dirname(__FILE__) + '/..')
  commits = repo.commits("#{rev_old}..#{rev_new}")

  Lighthouse.account = account
  Lighthouse.token   = tokens[commits.first.committer.email]

  project = Lighthouse::Project.find(:first, :params =&amp;gt; { :permalink =&amp;gt; permalink })

  commits.reverse.each do |commit|
    logger.info "[post] #{commit.id}"
    diff      = repo.git.diff({ :name_status =&amp;gt; true }, rev_old, commit.id)
    changeset = Lighthouse::Changeset.new(
      :project_id =&amp;gt; project.id,
      :revision   =&amp;gt; commit.id,
      :title      =&amp;gt; "Changeset [#{commit.id}] by #{commit.committer.name}",
      :body       =&amp;gt; commit.message,
      :changes    =&amp;gt; diff.map {|l| l.split(/\t/) }.to_yaml,
      :changed_at =&amp;gt; commit.committed_date
    )
    changeset.save
    logger.debug "[data] #{changeset.inspect}"
    rev_old = commit.id
  end
rescue =&amp;gt; e
  logger.error "[error] #{e.message}"
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;このスクリプトのaccount, permalink, tokensを実際の値に置き換えます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accountは、LighthouseのURLが http://foo.lighthouseapp.com/ の場合、「foo」&lt;/li&gt;
&lt;li&gt;permalinkは、Lightouseの「Edit project」のページで設定したPermalink&lt;/li&gt;
&lt;li&gt;tokensは、Lighthouseのアカウントごとに生成したトークン&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;トークンの生成方法はLighthouseのサイトで探してください。
このスクリプトが実行されると、&lt;code&gt;git config user.email&lt;/code&gt; で表示されるメールアドレスからトークンを引くので、&lt;code&gt;git config user.email&lt;/code&gt; が正しく設定されていることを確認してください。&lt;/p&gt;

&lt;p&gt;このスクリプトを実行可能にします。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% chmod +x hooks/post-receive
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ログのためのディレクトリを作ります。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% mkdir hooks/logs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;以上で設定は完了です。&lt;/p&gt;

&lt;p&gt;project ディレクトリから commit, push を行い、動作を確認します。&lt;/p&gt;

&lt;p&gt;projectディレクトリに移り、originを設定します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% cd ../project
% git remote add origin ../project.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;READMEを書き換え、commit し、push します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% git commit -a -m "Modified README."
% git push
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これでLighthouseにチェンジセットが送られます。
もし送られない場合は、project.git/hooks/logs/post-receive.log にあるログを参照してください。&lt;/p&gt;

&lt;h4&gt;例: チェンジセット一覧ページ&lt;/h4&gt;

&lt;p&gt;&lt;a href="/files/lighthouse/lh_git_1.png"&gt;&lt;img src="/files/lighthouse/lh_git_1.png" width="480px" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;例: チェンジセット表示&lt;/h4&gt;

&lt;p&gt;&lt;a href="/files/lighthouse/lh_git_2.png"&gt;&lt;img src="/files/lighthouse/lh_git_2.png" width="480px" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 09 Oct 2008 13:09:08 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:346fb937-7ebd-429c-bb8c-609d85c74e1a</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/10/09/git%E3%81%8B%E3%82%89lighthouse%E3%81%AB%E3%83%81%E3%82%A7%E3%83%B3%E3%82%B8%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E9%80%81%E3%82%8B</link>
      <category>Devel</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21383</trackback:ping>
    </item>
    <item>
      <title>TextMateでGauche</title>
      <description>&lt;p&gt;&lt;a href="http://www.amazon.co.jp/gp/product/4873113482?ie=UTF8&amp;amp;tag=yatsublog-22&amp;amp;linkCode=as2&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=4873113482"&gt;『プログラミングGauche』&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=yatsublog-22&amp;amp;l=as2&amp;amp;o=9&amp;amp;a=4873113482" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;を読んでいます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;でSchemeを書くには、&lt;a href="http://macromates.com/svn/Bundles/trunk/Bundles/Scheme.tmbundle/"&gt;Scheme.tmbundle&lt;/a&gt;を使えばよいのですが、&lt;code&gt;⌘R&lt;/code&gt; でファイルを実行するときに &lt;code&gt;gosh&lt;/code&gt; を使うには、以下の変更をして、設定の「Advanced」&amp;rarr;「Shell Variables」で &lt;code&gt;TM_SCHEME_INTERPRETER&lt;/code&gt; を &lt;code&gt;gosh&lt;/code&gt; とすればいいようです。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;diff -uNr Scheme.tmbundle.org/Commands/Run Script.plist Scheme.tmbundle/Commands/Run Script.plist
--- Scheme.tmbundle.org/Commands/Run Script.plist   2008-03-15 15:54:26.000000000 +0900
+++ Scheme.tmbundle/Commands/Run Script.plist   2008-03-15 16:42:15.000000000 +0900
@@ -28,6 +28,8 @@
    "$INTERPRET" -s "$TM_FILEPATH" 2&amp;amp;gt;"$TM_ERRORTEMP" | "$SHOWOUTPUT" "$INTERPRET" "$TM_ERRORTEMP"
 elif [ $CMD = "guile" ] ; then
   "$INTERPRET" -s "$TM_FILEPATH" 2&amp;amp;gt;"$TM_ERRORTEMP" | "$SHOWOUTPUT" "$INTERPRET" "$TM_ERRORTEMP"
+elif [ $CMD = "gosh" ] ; then
+  "$INTERPRET" "$TM_FILEPATH" 2&amp;amp;gt;"$TM_ERRORTEMP" | "$SHOWOUTPUT" "$INTERPRET" "$TM_ERRORTEMP"
 fi

 # Delete tempfiles
diff -uNr Scheme.tmbundle.org/Support/showoutput.rb Scheme.tmbundle/Support/showoutput.rb
--- Scheme.tmbundle.org/Support/showoutput.rb   2008-03-15 15:54:26.000000000 +0900
+++ Scheme.tmbundle/Support/showoutput.rb   2008-03-15 17:02:29.000000000 +0900
@@ -126,7 +126,8 @@
 schemesystem = File.basename(interpreter)

 systems = { "csi"       =&amp;gt; "Chicken Scheme",
-            "mzscheme"  =&amp;gt; "PLT MzScheme" }
+            "mzscheme"  =&amp;gt; "PLT MzScheme",
+            "gosh"      =&amp;gt; "Gauche" }

 # Start HTML output.
 printheader(systems[schemesystem], interpreter)
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Tue, 18 Mar 2008 05:42:50 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:251c547c-9263-4325-86df-f6cd5e8feb6f</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/03/18/textmate%E3%81%A7gauche</link>
      <category>Mac</category>
      <category>TextMate</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21382</trackback:ping>
    </item>
    <item>
      <title>Norton AntiVirus for Mac</title>
      <description>&lt;p&gt;Leopard対応の&lt;a href="http://www.symantec.com/ja/jp/norton/products/overview.jsp?pcid=ma&amp;amp;pvid=nav11mac"&gt;Norton AntiVirus for Mac&lt;/a&gt;を使ってみました。&lt;/p&gt;

&lt;p&gt;AntiVirusを有効にすると、ほぼ１日に１回OSが落ちます……。
こんなに再現性があって致命的な問題がなぜ放置されているのか……。&lt;/p&gt;

&lt;p&gt;ということで、もう使っていません。&lt;/p&gt;

&lt;p&gt;クラッシュログを置いておきます。&lt;/p&gt;&lt;p&gt;クラッシュログ&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Thu Mar  6 14:20:07 2008
panic(cpu 1 caller 0x001A8C8A): Kernel trap at 0x0075c367, type 14=page fault, registers:
CR0: 0x8001003b, CR2: 0x0000003c, CR3: 0x0110a000, CR4: 0x00000660
EAX: 0x00000000, EBX: 0x00000000, ECX: 0x00000000, EDX: 0x00000000
CR2: 0x0000003c, EBP: 0x51cff718, ESI: 0x00000025, EDI: 0x435c6848
EFL: 0x00010202, EIP: 0x0075c367, CS:  0x00000008, DS:  0x055f0010
Error code: 0x00000000

Backtrace, Format - Frame : Return Address (4 potential args on stack) 
0x51cff508 : 0x12b0e1 (0x457024 0x51cff53c 0x13321a 0x0) 
0x51cff558 : 0x1a8c8a (0x460550 0x75c367 0xe 0x45fd00) 
0x51cff638 : 0x19eb67 (0x51cff650 0x51cff69c 0x51cff718 0x75c367) 
0x51cff648 : 0x75c367 (0xe 0x6c0048 0x56c0010 0x190010) 
0x51cff718 : 0x756a4c (0x0 0x51cff99c 0x0 0x0) 
0x51cff9c8 : 0x75717f (0x51cffab4 0x3e9 0x1 0x3a25c3) 
0x51cffa08 : 0x3b8866 (0xfdda0e0 0x8b40bf4 0x0 0x51cffab4) 
0x51cffa58 : 0x3a8338 (0x8b40bf4 0x0 0x51cffab4 0x0) 
0x51cffaa8 : 0x246a9b (0x8b40c38 0x43605c00 0x1 0x5f02c80a) 
0x51cffc78 : 0x23aaa0 (0x43605c00 0x14 0x14 0x6) 
0x51cffcb8 : 0x23c822 (0x43605c00 0x14 0x6 0x0) 
0x51cffdd8 : 0x23c85e (0x43605c00 0x0 0x51cffe48 0x136784) 
0x51cffdf8 : 0x2287b6 (0x2 0x43605c00 0x5b0be94 0x0) 
0x51cffe38 : 0x2177c5 (0x2 0x43605c00 0x51cffe88 0x136997) 
0x51cffec8 : 0x213f04 (0x5a51604 0x2 0x43605c00 0x3e74fc) 
0x51cffef8 : 0x21465d (0x5248e4 0x555dc08 0x2 0x51cfff74) 
    Backtrace continues...
      Kernel loadable modules in backtrace (with dependencies):
         com.symantec.kext.ips(1.2f28)@0x753000-&amp;gt;0x771fff
            dependency: com.symantec.kext.internetSecurity(1.1f10)@0x74a000

BSD process name corresponding to current thread: kernel_task

Mac OS version:
9C31

Kernel version:
Darwin Kernel Version 9.2.0: Tue Feb  5 16:13:22 PST 2008; root:xnu-1228.3.13~1/RELEASE_I386
System model name: MacBookPro2,2 (Mac-F42187C8)
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Tue, 18 Mar 2008 05:15:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:83cba4b8-a97c-4bf7-bb5d-065870894294</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/03/18/norton-antivirus-for-mac</link>
      <category>Mac</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21381</trackback:ping>
    </item>
    <item>
      <title>ドタバタ確定申告</title>
      <description>&lt;ul&gt;
&lt;li&gt;申告期限15分前 - 書類完成
&lt;ul&gt;
&lt;li&gt;確定申告書B(第一表、第二表)&lt;/li&gt;
&lt;li&gt;決算書／収支内訳書&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;ε=ε=┏( &gt;_&amp;lt;)┛&lt;/li&gt;
&lt;li&gt;申告期限5分前 - セブンイレブンでプリントアウト(&lt;a href="http://www.printing.ne.jp/"&gt;ネットプリント&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;申告期限30秒前 - プリントアウト完了&lt;/li&gt;
&lt;li&gt;ε=ε=┏( &gt;_&amp;lt;)┛&lt;/li&gt;
&lt;li&gt;申告期限ちょっと過ぎてるっぽい - 書類提出&lt;/li&gt;
&lt;li&gt;裏口から退出&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;久しぶりに全力で走った。&lt;/p&gt;

&lt;p&gt;時間がなくて保険などの控除を書く暇がなかった。
係の人に「(控除などが)なんにもないんですね〜」と呆れられた。&lt;/p&gt;

&lt;p&gt;「でも、これだけわかっていれば大丈夫でしょう」&lt;br/&gt;
（「それはソフトが勝手に書いてくれました……」）&lt;/p&gt;

&lt;p&gt;来年からしっかりやろう……。&lt;/p&gt;</description>
      <pubDate>Mon, 17 Mar 2008 05:21:33 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8de22661-a849-45e5-95e8-089eec352080</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/03/17/%E3%83%89%E3%82%BF%E3%83%90%E3%82%BF%E7%A2%BA%E5%AE%9A%E7%94%B3%E5%91%8A</link>
      <category>Life</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21380</trackback:ping>
    </item>
    <item>
      <title>Firefox 3に移行</title>
      <description>&lt;p&gt;今までFirefox 2を使っていましたが、Forefox 3.0b3に移行しました。
Macでは動作が軽くなり、見た目もかっこよくなって、すばらしいです。
&lt;a href="http://fox.lazycat.info/"&gt;Firefox lzyc build&lt;/a&gt;にあるIntel Mac最適化版を使わせていただきました。&lt;/p&gt;

&lt;p&gt;なぜかページソースを見ようとしても何も起きないので(何か変な拡張を入れたかも)、&lt;a href="http://dafizilla.sourceforge.net/viewsourcewith/index.php"&gt;ViewSourceWith&lt;/a&gt;を使って任意のエディタ(自分の場合、&lt;a href="http://www.aynimac.com/p_blog/files/article.php?id=41"&gt;CotEditor&lt;/a&gt;)でソースを開くようにして解決しました。&lt;/p&gt;

&lt;p&gt;対応していない機能拡張は&lt;a href="http://www.oxymoronical.com/web/firefox/nightly"&gt;Nightly Tester Tools&lt;/a&gt;でむりやり動作させました。&lt;/p&gt;

&lt;p&gt;しかし、&lt;a href="http://mozilla.dorando.at/readme.html"&gt;keyconfig&lt;/a&gt;だけはそのままではダメでした。
&lt;a href="http://atbb.jp/premier/viewtopic.php?t=122"&gt;keyconfig 20071212.2 日本語版&lt;/a&gt;であればFirefox 3で使えるのですが、「新しいキーを追加」でダイアログを開いてから「OK」を押せません。
&lt;a href="http://d.hatena.ne.jp/ComputerHead/20071228/1198853043"&gt;KeryconfigをFirefox 3 Betaで使えるようにする&lt;/a&gt; の最後に書かれている修正 &lt;code&gt;document&lt;/code&gt; &amp;rarr; &lt;code&gt;gDocument&lt;/code&gt; を適用したら直りました。&lt;/p&gt;

&lt;p&gt;自分で修正するのが面倒な方はこちらからどうぞ。&lt;br/&gt;
&lt;a href="http://yatsu.info/firefox/keyconfig-20071212.2-ja-modified.xpi"&gt;keyconfig-20071212.2-ja-modified.xpi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;keyconfigは&lt;a href="http://yatsu.info/articles/2005/10/06/firefox%E3%81%AE%E3%82%BF%E3%83%96%E7%A7%BB%E5%8B%95"&gt;Safariのように「⌘{」「⌘}」でタブ移動する&lt;/a&gt;ために必要なのです。まだSafariの癖が抜けきれていないという……。&lt;/p&gt;</description>
      <pubDate>Mon, 03 Mar 2008 05:36:25 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0324a391-55f1-4d5e-96ad-5d71db583dd6</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/03/03/firefox-3%E3%81%AB%E7%A7%BB%E8%A1%8C</link>
      <category>Firefox</category>
      <category>Mac</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21379</trackback:ping>
    </item>
    <item>
      <title>3-Way Merge</title>
      <description>&lt;p&gt;TextMateのBlogで&lt;a href="http://changesapp.com/"&gt;Changes&lt;/a&gt;というdiffマージツールが紹介されていました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.macromates.com/2008/changes-filemerge-replacement/"&gt;TextMate Blog » Changes — FileMerge Replacement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://www.selenic.com/mercurial/wiki/index.cgi"&gt;Mercurial&lt;/a&gt;でコンフリクトしたときのためのMac OS X用3-Wayマージツールが欲しいと思っていたので少し調べてみましたが、3-Wayはサポートされておらず、&lt;a href="http://wiki.changesapp.com/index.php/Feature_Wishlist"&gt;Feature Wishlist&lt;/a&gt;によると、バージョン2で実装される予定とのこと。&lt;/p&gt;

&lt;p&gt;ついでに他のものも探してみたところ、以下のアプリが3-Wayをサポートしているようです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sourcegear.com/diffmerge/index.html"&gt;DiffMerge&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;フリー&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.araxis.com/merge_mac/"&gt;Araxis Merge&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Professionalのみ3-Way対応&lt;/li&gt;
&lt;li&gt;$269&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Araxis Mergeは高すぎ(いくら円高と言っても！)なので、DiffMergeを使用してみましたが、なかなかよい感じです。&lt;/p&gt;

&lt;p&gt;Mercurialで使用する場合、付属のコマンドラインツールを /usr/local/bin/diffmerge にコピーし、 ~/.hgrc に以下の設定をするだけで使えました。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[ui]
merge = diffmerge
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Sat, 01 Mar 2008 13:21:53 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a5effcfb-e342-41bb-8638-03130b5fa6d8</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/03/01/3-way-merge</link>
      <category>Mac</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21378</trackback:ping>
    </item>
    <item>
      <title>InputHiliter 2.0を公開</title>
      <description>&lt;p&gt;Mac OS X 10.5でついに&lt;a href="http://www.unsanity.com/haxies/ape"&gt;APE&lt;/a&gt;が使えるようになりました。
&lt;a href="http://www.unsanity.org/archives/betas/enthusiastic_trepidation.php"&gt;Unsanity.org: Enthusiastic Trepidation&lt;/a&gt; からAPE 2.5b1をダウンロードできます。
WindowShade(ウィンドウをタイトルバーだけの表示に切り替えるアプリ)がないと生きていけないので、とても助かりました。
Leopard対応のAPEをリリースするまでの苦労話が上記Unsanityのページで読めます。&lt;/p&gt;

&lt;p&gt;ちょうどよい機会なので、拙作のInputHiliterもLeopard + APE 2.5で動作するように作り直し、バージョン2.0をリリースしました。
Mac OS Xで「ことえり」などの入力プログラム(インプットメソッド)で漢字変換(または他の言語の変換)をするときに、変換中の文字に色をつけて強調表示してくれるものです。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://inputhiliter.yatsu.info/"&gt;InputHiliter&lt;/a&gt;&lt;br/&gt;
(ホームページも少しマシなものを用意しました)&lt;/p&gt;

&lt;p&gt;今回からUnsanity Installerを使わせてもらいました。
APEをインストールしていない場合、インストーラがAPEも一緒にインストールしてくれるので便利です。
&lt;a href="http://www.unsanity.org/archives/haxies/pragmatic_disillusionment.php"&gt;Unsanity.org: Pragmatic Disillusionment&lt;/a&gt;によると、Unsanity Installerはサードパーティが自由に使ってよいそうです。ただし、まったくドキュメントがないので、WindowShadeのインストーラをコピーして、試行錯誤する必要がありました。(もし誰か希望する人がいたら、やり方を書いてもかまいません。)&lt;/p&gt;

&lt;p&gt;ソースコードの管理はGoogle Codeを使わせてもらうことにしました。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://code.google.com/p/inputhiliter/"&gt;inputhiliter - Google Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LeopardになってからCocoa APIも少し変わったようで、今まで &lt;code&gt;[NSTextView setMarkedText:selectedRange:]&lt;/code&gt; でフックしていたのを、&lt;code&gt;[NSTextView setMarkedText:selectedRange:replacementRange:]&lt;/code&gt; に変更する必要がありました。&lt;/p&gt;

&lt;p&gt;また、CからObjective-CのLow Level APIを通してNSRange(CFRange)を返す関数を呼び出すとき、PowerPCのときは以下のようにしていたのですが、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CFRange markedRange;
objc_msgSend_stret(&amp;amp;markedRange, inObj,
                   NSSelectorFromString(CFSTR("markedRange")));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;IntelだとABIが互換でないため &lt;code&gt;objc_msgSend_stret()&lt;/code&gt; はクラッシュするとのこと……。
以下のように変更する必要がありました。ややこしい。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CFRange (*markedRangeFunc)(void *id, void *SEL) =
  (CFRange(*)(void *id, void *SEL)) objc_msgSend;
CFRange markedRange =
  markedRangeFunc(inObj, NSSelectorFromString(CFSTR("markedRange")));
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;逆に今回はPowerPCで動作確認していないので、動作するのかわかりません。
どなたか試してみた方がいらっしゃいましたら、報告していただけると助かります。&lt;br/&gt;
(でも、アプリがクラッシュする可能性があるので、気をつけて！)&lt;/p&gt;</description>
      <pubDate>Fri, 29 Feb 2008 13:43:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:220ddc54-6f5e-4ef2-a8b0-c3cbb852829c</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/02/29/inputhiliter-2-0%E3%82%92%E5%85%AC%E9%96%8B</link>
      <category>Mac</category>
      <category>Haxie</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21377</trackback:ping>
    </item>
    <item>
      <title>MacUIM-0.5.2-8</title>
      <description>&lt;p&gt;&lt;a href="http://ekato.wordpress.com/2008/02/06/mac/"&gt;ekatoさんのところ&lt;/a&gt;でMacUIM-0.5.2-8が公開されました。&lt;/p&gt;

&lt;h3&gt;追記 2008.2.29&lt;/h3&gt;

&lt;p&gt;MOONGIFTで紹介されました。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.moongift.jp/2008/02/macuim/"&gt;MOONGIFT: » ことえりからの脱却「MacUIM」:オープンソースを毎日紹介&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 10 Feb 2008 17:42:19 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:1671f79b-92cc-4403-9efb-691fddec0bd2</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2008/02/10/macuim-0-5-2-8</link>
      <category>InputMethod</category>
      <category>Mac</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21375</trackback:ping>
    </item>
    <item>
      <title>Leopardでmate</title>
      <description>&lt;p&gt;Leopardで&lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;のmateコマンドを実行すると、&lt;/p&gt;

&lt;p&gt;mate: failed to establish connection with TextMate.&lt;/p&gt;

&lt;p&gt;というエラーが出て困っていたのですが、&lt;a href="http://www.nabble.com/mate-command-and-screen-in-Leopard-p13483227.html"&gt;Nabble - mate command and screen in Leopard&lt;/a&gt; によると、Leopardのscreenと併用したときに起こる問題のようです。
MacPortsのscreenなら大丈夫と報告されていますが、FinkのscreenもOKでした。&lt;/p&gt;</description>
      <pubDate>Tue, 30 Oct 2007 07:24:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:131612c2-4b3f-483d-ac3d-0b55a318ff94</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2007/10/30/leopard%E3%81%A7mate</link>
      <category>TextMate</category>
      <category>Mac</category>
      <category>Unix</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21373</trackback:ping>
    </item>
    <item>
      <title>Leopard</title>
      <description>&lt;p&gt;Leopardを購入。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://macuim.yatsu.info/"&gt;MacUIM&lt;/a&gt;はそのまま動いたので、ほっとしました。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://unsanity.com/"&gt;Unsanity&lt;/a&gt;のアプリが&lt;a href="http://unsanity.com/products/compatibility/"&gt;ほとんど全滅&lt;/a&gt;なのが痛いです。&lt;/p&gt;</description>
      <pubDate>Tue, 30 Oct 2007 07:18:23 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ea5a92e4-160f-4d11-bd7b-c9b898e7ca7b</guid>
      <author>yatsu</author>
      <link>http://yatsu_info/articles/2007/10/30/leopard</link>
      <category>Mac</category>
      <category>InputMethod</category>
      <trackback:ping>http://yatsu_info/articles/trackback/21372</trackback:ping>
    </item>
  </channel>
</rss>
