2008-12-28

Android Dev Phone 1 その7

Ubuntu 8.10で試したら、あっさりmakeできてます。libaudioまわりのヘッダ修正なども不要。gitが更新されたのか、OS Xだけmakeできないのかは不明。

fastbootでnandを焼けばADP1もcupcakeになるわけですが、いくつか問題もあるようですし、nandを焼かずに違うシステムを起動できるか試してみます。

microSDにfdiskでpatritionつくって、system.imgとuserdata.imgをddしてみましたが、どうもmountに失敗します。


これはあっさりあきらめて、ext3でmountできるようにしてみます。

MYDROID/kernel/arch/arm/configs/msm_defconfigCONFIG_EXT3_FS=yを追加。

make ARCH=arm CROSS_COMPILE=MYDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- msm_defconfig
make ARCH=arm CROSS_COMPILE=MYDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-


MYDROID/kernel/arch/arm/boot/zImageができます。


MYDROID/buildspec.mk
TARGET_PRODUCT:=htc_dream
TARGET_PREBUILT_KERNEL:=MYDROID/kernel/arch/arm/boot/zImage

ってしとけば、gitでとってきたkernel(vendor/htc/dream/kernel)のかわりにそれが使われます
(vendor/htc/dream/README.txtにはTARGET_PREBUILD_KERNELって書いてあるので注意)。


ADP1をカメラボタン押しながら起動して、バックボタン押してFASTBOOTモードにしてから、
MYDROID/out/target/product/dream
fastboot boot boot.img

とすれば自前ビルドkernelとramdiskで起動します。


MYDROID/system/core/rootdir/init.rcMYDROID/vendor/htc/dream/init.trout.rcを組み合わせたinit.rcが起動時にスクリプトとして実行されるので、ここでsdcardをext3でmountできればいいわけですが。

/system, /data mountしようとしたときにはsdcardがまだ居ない状態。system/core/initいじって、sleepコマンドとか追加して待たせてみたものの、どうにもsdcardをmountできず... ADP1以外のportだとsdcardからext3でmountできてるんですけども(omapzoomとか)。

/system mountできないとadb shellすると /system/bin/sh がないとか怒られます。

mount yaffs2 loop@/data/system.img /system

とかでもできるはずですが、これだとnandの容量がきびしいんですよね。/cacheを使うか。

2008-12-22

Android Dev Phone 1 その6

Building For Dream

普通にrepo init, syncするだけだと入ってない、ADP1(ていうかG1)固有のkernelとかdriverとかmoduleを持ってくるために、.repo/local_manifest.xmlにそのページのmanifestを追加。

repo syncして、vendor/htc/dreamが出来てることを確認。

cd vendor/htc/dreamして、./extract-files.shを実行。adbで実機からOpenGLESのhardware acceleration driverなどを拾います。

repoのtopにTARGET_PRODUCT:=htc_dreamという内容のbuildspec.mkてファイルを追加。

make。


で、エラーになると。

Build Error in Mac OSX

hardware/msm7k/libaudio/AudioHardware.h,cpp あたりのcommitを待つか、無理矢理通すか。

hardware/libhardwareをcupcake前に戻したらいけたり?

cupcake

すでにmasterにmergeされてるので、そのままrepoで持ってくればいいんですが、なぜかOS X用 prebuilt x86 toolchain が入ってません。

toolchainのソースは、

http://android.git.kernel.org/pub/android-toolchain-20081019.tar.bz2

らしいですが、libgcc作るあたりで失敗。この辺はLinux用prebuiltを使えばいいんでしょうけども。Linuxでcanadian crossで作るとか?

2008-12-19

Android Dev Phone 1 その5

開発機のprocessをgdbで見る。

Is there a "gdb" or "gdbserver" running on an Android ARM device?

cupcake branchにちゃんと動くgdbserverがある。

gdbserver tree

adb push gdbserver /sdcard
adb forward tcp:8888 tcp:8888


とかやっといて、

adb shell
$ su
# /sdcard/gdbserver 0:8888 --attach 777


とか。777は見たいpid

で、

$MYDROID/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gdb
(gdb) target remote localhost:8888
(gdb) c


とか。/sdcardはデフォルトでnoexecなんで動かなくても泣かない。

Android Dev Phone 1 その4

google account 登録をSIMなしでやる方法。登録画面が出る前でも出てからでも、

adb shell
$ am start -a android.intent.action.MAIN -n com.android.settings/.Settings


で出てきた設定画面で無線LANを設定。以上。

Android Dev Phone 1 その3

電源ボタン押しっ放しで電源offしてから、カメラボタン押しながら電源ボタンを押して起動するとbootloaderが起動。
最初serialになってるので、バックボタン押すとFASTBOOTモード。

the Androids on Skateboards


repo/gitでひろってきたソースツリーに、out/host/darwin-x86/bin/fastboot あり(これはOS Xの場合。makeしないとできないかな)。これで別kernelを起動できるはずです。

とか、http://www.gotontheinter.net/fastbootに書いてあります。

fastbootではnandから読み出せないんですね。ということでNandroidが必要になると。


電源off状態から、ホームボタンを押しながら電源ボタンを押し続けるとFactory Resetモード。

注意!


で、ALT+Wを叩くと、箱から取り出す絵が表示されて、再起動。そこそこ時間がかかって起動して、出荷時の状態になります。

/sdcardの中身は無事w /systemはどうやらtarとかで展開するだけのようで追加したファイルが残ってました。mkfsしないのかな。


SIMささってないとemergency callしかできない状態になりました。出荷時の状態になったみたいです。

ということで、出荷時の状態から再度SIMなしで動くように実験。

# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
# sync
# sync
# reboot


OK! SIMなしで登録画面でました。

(2008.12.24追記: 要再起動。reboot前sync2回派)

com.android.setupwizard.SetupWizardActivity を disable にすれば、google accountの登録も不要です。

2008-12-18

Android Dev Phone 1 その2

/sdcard 上の実行ファイルが動きません。
noexec 付きでmountされてるからです。
# umount /sdcard
# mount -t vfat /dev/block/mmcblk0p1 /sdcard


/systemに書けません。
ro でmountされてるからです。
# mount -o rw,remount /dev/block/mtdblock3 /system


出荷状態に戻したい。
たぶん http://www.gotontheinter.net/content/android-dev-phone-1-software-image のイメージとhttp://www.gotontheinter.net/content/nandroid-v20-full-nand-backup-and-restore-tool のnandroidで戻せるはず。おそらく。

Android Dev Phone 1

無線LANが使えるコンパクトなLinux端末として買うのもありかも。いざとなったら電話をかけられますし。SIM要りますが。$530程度ですし。円高ですし。

GLES2.0使いたいならopenpandoraの方がいいですけど。安いし。

http://forum.xda-developers.com/showthread.php?t=452316

にある通り、
adb kill-server
adb start-server
adb shell
$ su
# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
ってやればSIM不要。1回SIM刺しちゃったので保証できないですけど。とにかくSIMささってなくてもちゃんと使えてます。

/data/system/packages.xml に disable-components com.android.setupwizard.SetupWizardActivity を追加したのが効いたのか、google accountの登録も不要でした。Marketとか使うなら必要ですけど。

2008-12-06

git

http://gitx.frim.nl/ GitXラブ。


問題はgit submodule。いろんなgit repositoryまとめて使いたかったりするわけですが、submoduleはかゆいところに手が届かない感じで。svn:externalsもそうですけども。

というところでAndroidのrepoが一つの解決策なのかなと。

2008-12-05

My MacPorts

実際に使用しているMacPortsだけに絞ってGitに入れてみました。

http://git.sourceforge.jp/view?p=splhack/MacPorts.git;a=summary

git clone git://git.sourceforge.jp/gitroot/splhack/MacPorts.git
cd MacPorts/aqua/iTerm
sudo port install


とかで使えると思います。直接ディレクトリに行けば /opt/local/etc/macports/sources.conf の編集やportindexしなくてもいいんですね。


  • iTerm 0.9.6.1201 LANG環境設定回避
  • ctags 5.6j1.1 日本語版
  • fmdiff 7819 http://ssel.vub.ac.be/svn-gen/bdefrain/fmscripts/ FileMerge呼び出しスクリプト。git diff用にスクリプトも用意してみました。GIT_EXTERNAL_DIFF=fmgitdiff git diff --ext-diffとか。
  • vim 7.2.042 http://clewn.sourceforge.net/ vimgdb追加。+my でいろいろ。
  • zsh-devel 4.3.9.1 East Asian Ambiguous characters(◎とか)用 +cjk


そういやvim-cocoaはCore Text対応してますね。MacVim含めて使ってないですが...

2008-11-18

zsh-devel

いつのまにやらzsh本体がmk_wcwidthを使うようになってましたが、私の場合mk_wcwidth_cjkの方がうれしいのでpatchあててみました。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FZsh-devel

zsh-devel @4.3.9_1+cjk+mp_completion+pcre

2008-09-11

iTerm

更新が続いててうれしい。

自前MacPorts → http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/PrivatePortfile/?root=splhack


JIS X 0213 の文字は全角幅にならないですね。

http://x0213.org/codetable/jisx0213-2004-std.txt

http://www.unicode.org/Public/5.2.0/ucd/EastAsianWidth-5.2.0d2.txt
でもN。

JIS X 0213なんて入力しないですけども...


vim 7.2はkaoriyaさんのpatch待ち。

2008-05-08

cygwin

setup.exeが面倒なんですよね。

そこで cyg-apt。cyg-apt install gitとか。


で、sshで外から入るとexplorer .が出来ない。

サービスでsshdを起動しないで、ユーザがsshdを実行しとく。


あと visual studioがちゃんと開かない。

export USERPROFILE="C:\\Documents and Settings\\$USER"


それに screen -r でattachできない。

export CYGWIN=tty
だと思ったけど、さっき試したらattachできなかったかも。

VMware Fusion 2.0β

2.0βいいかも。


ubuntu 8.04でのvmware toolsもok


... ではなくて、別のところでひっかかりました。

http://blog.zmang.com/installing-vmware-workstation-65-beta-on-ubuntu-hardy-heron-804-faqs/

vsock, vmxnet3 でこけてたけど、なくても支障なさげ(?)

2008-05-03

xattr

Leopardのrsyncは rsync -a -v -A -X でACLやEAを持ってけるのはいいんですが。

sambaごしのTimeMachine保存先から、一気に復元させたくて rsync つかったら、TimeMachine関連のACLとEAを引き継いでしまって一苦労。インストールディスクの復元を使わないといけないような状況に陥ると、sambaごしのTimeMachineというのはアレだな、と思います。

ACLはls -aleRとかで確認できて、chmod -R -N で一気に消せます。

EAはxattr -lで確認できて、xattr -d で消せるんですが、-Rみたいなoptionがないし、たとえばfindでまわしたりすると遅い。python script書けばいいんでしょうけども... あえてrubyで書くとすると

http://rubyforge.org/projects/xattr/

が使えます。こっちはxfs用なので違う

2008-04-13

vim 7.1.293

vim 7.1.293に追従。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

バイナリはこちら

http://sourceforge.jp/forum/forum.php?forum_id=14613


variant ruby の時にconfigure.env-append RC_ARCHS=するようにしたので、MacPortsのrubyじゃなくてLeopard標準rubyで+universalじゃないときでもinstallできるようになったはず。たぶん。


ひさりぶりにバイナリ作るためにcf.sourceforge.jpに行ったら、PPC Mac OS Xが10.5になってました。あれま。-mmacosx-version-min=10.4で作ったものの、10.4で動くのかな...

2008-04-09

Gitもえ

subversionでbranchつくってmergeしてpatchつくってbranchつくってmergeして...

疲れました。

Git - Google Tech Talks

Gitもえ。

A better backup system based on Git

これもよさそう。backup対象ファイルをfseventの情報使えばTimeMachineよりいいかも。バイナリ差分で速そう。

2008-04-05

arm-apple-darwin-g++

iphone_leopard_toolchain_howto_ja_JP.rtf

prefixとか変えてインストール。iPod Touchの実ファイルシステムをsshfsでmountしてコピー。

2008-03-28

TimeMachine with Samba (CIFS?)

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

ってしとけばSambaでも使える雰囲気なんですが、失敗します。

で、

hostname_MACaddress.sparsebundle

ってイメージ作っとけばいいらしいんですが、ディスクユーティリティでSambaに作ろうとしても失敗します。


ので、ローカルディスク上に作ってからmvしたら、TimeMachineが動いてしまいました。1日使ってみたけど今のところ大きな問題はなさそう。


でも不安。

2008-03-26

iTerm

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FiTerm

iTermSecurityMgrがリンクできない件を対策してみました。おそらくxcodeprojのcommitし忘れでしょう。

2008-03-23

vim 7.1.285

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

7.1.285に追従。ATSUIパッチが取り込まれたので、いままでのinlineパッチとATSUIパッチの合体版があてられなくなったため改造。IME呼び出し方法も変わったみたいですが、インライン変換にならない感じだったので、inlineパッチを生かしてみました。

2008-03-21

vim

ATSUIのパッチが取り込まれて、いままでのパッチがあたらなくなってしまった...
改造しなければ。


あれ、arm-apple-darwin-ccってc++はないのか。
http://code.google.com/p/iphone-dev/wiki/Building見てビルドした方がいいかも。

2008-03-20

arm-apple-darwin-binutils

6月まで待てなかった。

Command output: libtool: can't open file: version_number.o (No such file or directory)

とか言われる。sudo port -v build arm-apple-darwin-binutils で調べてみたら

O -g -I../../include -Wall -Wno-long-double -no-cpp-precomp -fno-builtin-round -D_MACH_I386_THREAD_STATUS_FPSTATE_LEGACY_FIELD_NAMES_ -D_ARCHITECTURE_I386_FPU_FPSTATE_LEGACY_FIELD_NAMES_ -DPREFIX=/opt/local/arm-apple-darwin -static -c -o ./allocate.o ../allocate.c
make[3]: O: Command not found
make[3]: [allocate.o] Error 127 (ignored)


CCがOに展開されるというこれと同じ現象。COPTとかがCCになるということなんでしょうか? build.env CC=ccで回避。

2008-03-03

PrivatePortfile iTerm, vim on Leopard

素のLeopardで試してみました。


iTermは元々の問題なんですね。

http://d.hatena.ne.jp/yellowback/20080227/1204088120


vimで +ruby がコンパイルできない件は、/usr/bin/rubyのコンパイル用環境から -arch i386 -arch ppc が入ったLDFLAGSを引き継いでしまうので、configureでの試しcompile時にuniversalじゃないライブラリをリンクできなくなるのが問題かなと。ncursesとかも +universal で入れとけばいけるかもしれません。

あ、/usr/lib/ruby/1.8/universal-darwin9.0/rbconfig.rb によれば、

export RC_ARCHS=i386

ってすればいいんかもしれません。

2008-02-19

vim 7.1.253

vim 7.1.253に追従。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

Kaoriyaさんのパッチですが、windows版vim7.1のアーカイブのものを使うように修正しました。

あと check という関数がOS Xの /usr/include/AssertMacros.h の check macro と衝突するので回避。これはちょっと...


http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim

MacVimも追従。ATSUIまわりの変更が入ったので、フォント表示がよくなった、...かも。IMは変わらず。

2008-01-25

vim 7.1.241

vim 7.1.241に追従しました。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

searchまわりにさらに変更が入ったのでmigemoまわりをあわせて変更(kaoriyaさんにメールで報告済み)しました。


+ruby でbuildできないという件を調べてみたのですが、手元では再現できませんでした。なんでしょう。


MacVimは何やら興味深い更新があったのですが、実際にinstallしてみるとあんまり変わってない印象です。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim

local ports

/opt/local/etc/macports/sources.conf

# To prevent a source from synchronizing when `port sync` is used,
# append [nosync] to the end of the line
# Example: file:///Users/landonf/misc/MacPorts/dports [nosync]


知らなかった。

subversionからcheckoutしててsyncに失敗してたので、毎度コメントアウトしてた。[nosync]付けた。

2008-01-19

vim 7.1.235

vim 7.1.235 に追従しました。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

cf.sourceforge.jp にログインできない件を対応していただきましたので(感謝)、バイナリも更新しました。

http://sourceforge.jp/forum/forum.php?forum_id=13839

2008-01-14

vim 7.1.228

vim 7.1.228 に追従。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

パッチのラッシュ。落ち着いたかな?


cf.sourceforge.jp の OS X にログインできない問題は放置されっぱなし... なのでバイナリはおあずけです。

2008-01-09

不思議なこと解決 iTerm編

[ 1867339 ] decode_utf8 always looks the lead byte for getting reqbyte

表示文字列がUTF-8だった場合、文字の先頭バイトを見て、それが何バイト分の文字(「あ」は3byte、「×」は2byteとか)なのか判定するとこがあるのですが、そこが常に文字列の先頭バイトを見てるので、3byte,2byte混在文字列(「○×」とか)においておかしな挙動になるわけですね。

PrivatePortfileもpatchが取込まれるまでの暫定処置として更新しました。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FiTerm


ターミナルもiTermも option + y でバックスラッシュが入力されるのは何がどうなってるんだろう。

あとLeopardでiTermが落ちる現象は未確認です。Tigerでも急に落ちる時は落ちます...

vim 7.1.211

vim 7.1.211 に追従。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim


以前のパッチファイルを置き換える 7.1.126ne なんてファイルができてましたが、101-200 patch も出てたのでややこしいことにならなくてよかった。

2008-01-08

不思議なこと1つ解決

http://homepage.mac.com/nand/macosx/emacs_jis_keyboard.html

ことえりの環境設定で「JISキーボードの¥キーで入力する文字」を「\(バックスラッシュ)」にするのが良さそう。


ことえりじゃない環境であれば、KeyRemap4MacBook で変換するのがよいと思います(要改造ですかね)。


(追記 2008/1/10)
kimurawさんとこにCocoaアプリでの切り替え方法が掲載されてます。
http://kimuraw.txt-nifty.com/d/2008/01/swp_yen_bslash.html


英語キーボードでも option 押しながら入力するとASCII以外が打てることに気づきました。

option + y で簡単に ¥ が打てます。

¥¥¥¥¥¥¥¥


vim 7.1.211 に追従。searchitの引数がかわってkaoriyaパッチあてに失敗するので一時的に対策。

2008-01-07

不思議なこと

OS Xで日本語キーボードの円マーク(¥マーク)を押すと何が入力されるんでしょうか?

ASCIIコードの範囲なら 0x5C (バックスラッシュ) なんかな。
UTF-8まで広げると 0xC2A5 (¥) か。

うーむ。アプリによったり、なんらかのコンテキストによる? vimならfileencode見てどっちを入力するか決めるとか。

勝手にIME ONになってUTF-8のコードが入力されるという挙動も考えられなくはないか。


そもそもバックスラッシュキーは存在するのか? windows用日本語キーボードでバックスラッシュキーと円マークキーが両方あるのを見たような気がする...

http://pc.watch.impress.co.jp/docs/2006/0519/apple1_28.jpg

なかった...


http://araistudy.g.hatena.ne.jp/czk-htn/20080106/1199575618

○×[0x0a]

の次の行がずれるという挙動でした。

×[0x0a]

は、ずれませんでした。

でも

×○[0x0a]

は、ずれます。ということは

〇±

も、ずれるんじゃないでしょうか。ずれました。


ということで、UTF-8で


C2B1 ±
C397 ×
C3B7 ÷


などの2byte文字と3byte文字が混じると次の行の表示先頭位置がずれるようです。

ずれるというか、前の行の表示位置を引きずってる感じですね。改行時の表示位置が初期化されないルートがありそう。

2008-01-05

辞書その4

Leopardの辞書.appはWikipediaも検索できるんですが、ダウンロード済みのものを検索するわけじゃなくて、実際にWikipediaで検索してるみたい。

漁ってみると、/Applications/Dictionary.app/Contents/Resources/Wikipedia.privatedictionary/にURLやらクエリの出し方、結果の取り出し方、サポート用Javascriptなどが置いてあります。

同じようにやればいいんじゃ

と思いながら眺めてみても、どうやらDictionaryの実行ファイル中から決めうちで呼び出してるっぽいので、改造はできても、追加は難しそう。


class-dump(MacPortsにも入ってます)でDictionaryを見てみるとWikipedia用の専用クラスが入ってるのがわかります。

SIMBLで似たような別のクラスを突っ込むという手も取れなくもないかも。

辞書その3

Problem:
Some applications do about 90% of what I want.
Solution:
Develop my own applications.
Better Solution:
Patch the application myself... ← いまココ


RubyInjectは早々にあきらめ、SIMBLを使ってみます。


com.apple.Dictionary をフックするbundleを作ります。右上の検索入力欄はどうみてもNSTextFieldなので、NSTextFieldをposeAsClassでのっとります。NSTextFieldは、ふつうdelegateで変更を通知するはずなので、setDelegateをのっとって検索文字列変更時にどのインスタンスに通知するか覗いてみます。どうやら BrowserWindowController が相手のもよう。のでNSTextFieldインスタンスをもったNSWindowControllerの子クラスを作って、そのインスタンスをNSTextFieldのdelegateに設定してみます。

これで検索文字列決定時にcontrolTextDidEndEditingが呼ばれるようになりました!

#import 

@interface MyNSTextField : NSTextField
{
}
@end

@interface MyNSWindowController : NSWindowController
{
id _textField;
}
@end

@implementation MyNSTextField

+ (void)load
{
[self poseAsClass:[NSTextField class]];
NSLog(@"MyNSTextField::load");
}

- (void)setDelegate:(id)anObject
{
if ([@"BrowserWindowController" isEqualToString:[anObject className]]) {
MyNSWindowController *windowController =
[[MyNSWindowController alloc] init];
[windowController set:self];
[super setDelegate:windowController];
}
}

@end

@implementation MyNSWindowController

- (void)set:(id)textField
{
NSLog(@"MyNSWindowController set");
_textField = textField;
}

- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
NSLog(@"controlTextDidEndEditing");
NSLog([_textField stringValue]);
}

@end


こんな感じですね。setDelegateを奪い取ってる気がしますが、一応動いてます。

あとは検索文字列をオンライン辞書ででも検索して発音音声を返せば念願達成。こっから先はRubyCocoaで繋ぐつもり。

辞書その2

光明が見えた方向に進んでみたが、辿り着いた場所には扉があったものの、それは固く閉ざされていた...


って感じですか。

辞書.appの検索入力をフックできればいいんとちゃいますか。

いくつか方法があると思いますが、まずは、気になっていたRubyInjectで。

machレベルで関数上書きすると。最近はtext segmentが書き込み禁止にされてしまって寂しいですが、それはそれとしてインストールしてみます。

$ xcodebuild SYMROOT=/tmp
$ cp -r /tmp/Release/RubyInject.framework /Library/Frameworks


でもって、Dictionary.app起動してpsとかでプロセスIDを調べて

sudo ruby inject.rb プロセスID


とすると irb が起動して、いろいろできます。


辞書.appの右上のNSTextFieldっぽいところの文字列を引っこ抜ければよいと思うので探してみます。

require 'osx/cocoa'
include OSX
def walk(d)
instance = d[1]
NSLog d[0]
NSLog instance.class.to_s
begin
NSLog instance.stringValue.to_s
rescue
end
NSLog " "
begin
instance.subviews.count.times do |i|
walk [d[0] + ".subviews[#{i}]", instance.subviews[i]]
end
rescue
end
end

NSApp.windows.count.times do |i|
walk ["NSApp.windows[#{i}].contentView", NSApp.windows[i].contentView]
end


環境設定ウィンドウの文字列と同じものを見つけたので、setStringValue したら書き換えることができました!

しかし、右上のNSTextFieldらしきのにはどうも辿り着けない。うーん。

辞書

Leopardの辞書.app

インクリメンタル検索できるし、内容も充実。

ただ欲を言えば発音音声が欲しい。


ということで、発音音声付き辞書アプリケーションを得るべく、自分でアプリケーションを作ってみる方向で、辞書を検索する方法を探してみました。

http://numata.designed.jp/?plugin=numa_diary&file=Diary&title=日記&date=20071029

によればDictionary ServicesというAPI群があるらしい。何故かCarbon API。


さっそくこのAPIを使ってObjective-Cで辞書.appもどきを作ってみました。

http://prdownloads.sourceforge.jp/splhack/28808/EDict_test.tbz2

Leopard以降用です。ソースコードのみ。Xcodeでビルドできます。


作ってみて気づいたこと。
  1. インクリメンタル検索ができない。
  2. 取得できるデータがプレーンテキスト(リッチテキストじゃない)
  3. リッチテキストで表示できるAPI(HIDictionaryWindowShow)もあるけど、これは辞書.appが起動して表示することになる


うーん。

2008-01-03

vim 7.1.189

しばらく更新がなかったvimですが、年明け早々たくさんpatchが出てたので追従。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

更新後再度見に行ったら7.1.190が出てるくらい活発。win32用のパッチなので影響なしですが。


cf.sourceforge.jpのOS Xにログインできない状況が続いている(サポートには問い合わせ済み)のでバイナリはまた今度。

PrivatePortfile/CMigemo

PrivatePortfileのcmigemoがインストールできないのを調べてみました。

なぜかbuild時に $(CC) が O2 に展開されて、command not foundになってました。
sudo port -v build +utf8 で確認(verboseオプション)。

port configure +utf8 後、worksrcpathでmakeすると平気。何故 CC に cc 以外が設定されるのか追求してませんが、CC=ccで対策して更新。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FCMigemo

make時の環境変数設定方法が変わったのか、Leopardのせいなのか。