Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Computer
検索してもあまりドキュメントや事例が無いのですが、Jenkins の Remote Access API を使うとジョブの情報を XML や JSON 形式で取得することができます。特に XML API では XPath-like なシンタックスでデータの検索を行うことができるため便利です。例えば、プロジェクトを GitHub Pull-Request Builder Plug-in でビルドしている場合、以下のような API 呼び出しで Pull-Request 番号に紐づく最新の Jenkins ビルド番号を逆引きすることができます。
http://${HOST}:${PORT}/job/${JOB_NAME}/api/xml?pretty=true&tree=builds[number,actions[parameters[name,value]]]&xpath=/matrixProject/build[action/parameter[name="ghprbPullId"+and+value="${PULL_REQUEST_ID}"]][1]/number/text()&wrapper=result

Jenkins おじさん向けの超ニッチ情報でした。
Category: Apple
iTunes COM API でイベントディスパッチが行えなくなっている件について。ここにも書いたのですが、iTunes 12.7 以降では (何故か) proxy/stub が PSDispatch から PSOAInterface に変更されていることが直接の原因のようです。レジストリキー HKEY_CLASSES_ROOT\Interface\{5846EB78-317E-4B6F-B0C3-11EE8C8FEEF2}\ProxyStubClsid32{00020424-0000-0000-C000-000000000046} から {00020420-0000-0000-C000-000000000046} に直したらイベントが通知されるようになりました。Win32/COM 力が足りなくて、これ以上の追跡はムリ...。
Category: Xojo
あけましておめでとうございます。Xojo のデスクトップアプリ開発を支援するランタイムツール Xojo Instruments を GitHub で公開しました。ライセンスは MIT です。Xcode に付属する Instruments のようにメモリリークを検出したり循環参照を検出することができるツールです。XojoInstruments フォルダを自分のプロジェクトにコピーして、
XojoInstruments.Start()
を書き足すだけで動作します。スクリーンショットを見ていただければ大凡イメージがつくと思いますが、ランタイム状態の Snapshot を任意のタイミングでキャプチャすることができます。ランタイム状態には全オブジェクトの一覧が含まれるため、Snapshot 間の比較を行うことでメモリリークの検出が簡単に行えます。また、Build Reference Graph を有効にしてキャプチャを行うと参照グラフが同時に採取され、参照関係の可視化やバックリファレンス(対象オブジェクトを参照しているオブジェクト)の追跡も行えるようになります。

このツールのポイントは二つです。
  • リークが発生したオブジェクトのクラス名や数が分かるだけでなく(これは MemChecker など既存のツールでもできていた)、実際にリークが発生したオブジェクトがどこから参照されているのかを追跡することができる。また、そのオブジェクトの詳細情報を IDE 上で確認することができる。
  • ランタイムに組み込んで使用するツールでありながら Xojo Instruments 自体の生成するオブジェクトが Snapshot から完全に除外されている。ディクショナリや配列など Snapshot の採取に必要なデータ構造は XojoInstruments.Framework 配下に XIObject interface を実装するクラスとして独自に定義し、XIObject interface を実装しているクラスを Snapshot の採取対象外にすることで実現されている。
反面、Snapshot の取得中は stop the world が生じるというデメリットもあります。内部的には、ランタイム上に存在する全オブジェクトをイテレートして ID を採番した上で各オブジェクトへの弱参照を取得するのでそれなりに時間がかかります(2 回目以降のキャプチャは差分のみ)。高速化のアイディアはいくつかあるのでおいおい取り組みたいところです。

ということで、どなたかのお役に立てば幸いです。
Category: Computer
今回もメンテナンスリリースです。iTunes for Windows 12.7 で iTunes 連携が動作しなくなっていた問題や、洋楽・ボーカロイド曲の歌詞検索が行えない問題などに対処しました。

iTunes 連携が動作しなくなっていた問題について:
iTunes 12.6 と 12.7 で Type Library は変更されていないのですが、12.7 以降 (12.7.0, 12.7.1, 12.7.2) では COM Event が dispatch されなくなってしまったようです。
本リリースでは iTunes へステータスをポーリングするように修正されています。なお、本問題については Apple にも報告済みです (rdar://35951765)。

また、細かい話ですが以下の点も今回リリースで変更されています。
  • Lyrics Master for Mac OS X は Lyrics Master for Mac に改名しました。
  • High Sierra で、AppleScript (AppleEvent) 経由で Lyrics Master から歌詞を取得すると文字化けする問題に対処しました。
  • Windows XP / Vista のサポートを終了しました。
  • Windows 版の UI フォントをメイリオに変更しました。
ダウンロードはこちらから。変更点について詳しくは更新履歴をご覧ください (Mac / Windows)。
Category: Computer
【更新 (2017/12/10)】
正式版のリリースに伴いベータ版の配布は終了いたしました。
ご協力いただいた皆さま、ありがとうございました!


【更新 (2017/11/24)】
各歌詞サイトの最新仕様に対応を行った、新しいベータ版を公開しました。また、Mac 版のベータ版も公開しました。
引き続き動作テストにご協力いただければ幸いです。


iTunes 12.7 以降で iTunes 連携が行えない問題を解消したベータ版を配布します。
皆様の環境でお試しいただき、このブログのコメント欄または Redmine にてフィードバックをいただければ幸いです。

また、上記の iTunes 関連の修正のほか、各歌詞サイトの最新仕様への対応や UI の改善も含まれています。

ダウンロード:
  • Lyrics Master 2.4.8.2 Beta2 (Mac)
  • Lyrics Master 2.4.8.2 Beta2 (Windows)

ベータ版では起動時に Debug ウィンドウが表示されますが、閉じていただいても構いません。
また、利用期限が設定されていますのでご了承ください。