Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Apple
おそらく iTunes のバグ。タイトルの通りですが、iTunes Radio を再生中は、以下の (等価であるべき) 2 つの AppleScript コードのうち、後者が動作しません。
tell application "iTunes"
get artist of current track
end tell
tell application "iTunes"
set currentTrack to current track
get artist of currentTrack
end tell
iTunes Radio の曲は現在のところ file track クラスにマップされているため、内部で矛盾が生じているように見えます。AppleScript ではなく AppleEvent レイヤの問題のため、Scripting Bridge などを使用している (かつ、遅延評価を明示的に無効化するコードを書いている) アプリも影響を受けそうです。
Category: Xojo
引き続き Xojo ネタ。スレッドから GUI を操作する際に非常に有用な Task クラスですが、特定の場合 (スレッドへの参照が無くなり GC 対象となった場合) にイベントが欠送してしまう不具合 (または仕様?) があります。イベントキュー (mEvents) が空になる前にスレッドインスタンス (とイベントディスパッチ用タイマ) が GC されてしまうためです。

この問題を修正した Task クラスを Feedback #31494 に添付しているので、よろしければご参照ください。
スレッドとイベントディスパッチ用タイマを循環参照にした上で (Xojo の GC は Reference Counting のため)、スレッドの最後で 100 msec おきにイベントのディスパッチ完了を待機するようにしています。
Category: Xojo
Xojo で AppleEvent を Fluent に (method chaining で) 書きたかったので、ラッパーライブラリを書いてみた。こんな感じで使います。
Dim ae As AppleEvent = FluentAppleEvent _
.To_("com.apple.finder") _
.Get(Specifier.Id("appf", "com.apple.iTunes")) _
.As_("alis") _
.Send(2)

If ae <> Nil Then
MsgBox(ae.ReplyFolderItem.NativePath)
Else
MsgBox("Failed")
End If
AppleScript で書くと以下のコードに相当します。
try
with timeout of 2 seconds
tell application "Finder"
get application file id "com.apple.iTunes" as alias
end tell
end timeout
display dialog the result as string
on error
display dialog "Failed"
end try
需要があれば公開したいが、これが本当に必要な人は世界に 10 人くらいしかいない気がする。
Category: Linux
明けましておめでとうございます。admin_auth_external という、FreeStyle Wiki の認証系を外部モジュールに移譲するプラグインを公開しました。ライセンスは GPL です。
3 年ほど前に書いて手元の環境で稼働していたものを、少し整理したものです。超ニッチな層狙いのプラグインですが、バックアップも兼ねて公開。ベータ版の扱いです (制約: Wiki Farm では動作しない)。パッチ求む。

デフォルトでは Apache 認証 (Basic, Digest, ... etc.) と連携するためのモジュールが付属しています。htacceess で LDAP 連携の Basic 認証を設定しておけば、FSWiki 上でユーザを別途作成することなく LDAP ユーザが FSWiki にログインすることができるようになるので便利です。

(追記: UTF-8 パッチを当てていない方は EUC-JP に変換してお使いください)
Category: Linux
以前試験的に IPv6 プロキシでの運用を行ったりもしていたのですが、さくら VPS がネイティブ IPv6 対応したので、この blog (blog.kenichimaehashi.com) も IPv6 Reachable (Dual Stack) にしてみました。

IPv6 からアクセスされている場合は、右のロゴが via IPv6 に変わります。Apache の mod_rewrite で以下のように画像を書き換えています。
RewriteCond %{REMOTE_ADDR} :
RewriteRule ^ip_version.png$ ip_version6.png [L]