作ってみた。cfはsshとhttpくらいしか外に出れないので、gitはhttpのリポジトリを指定しないと取れない。http://よりgit://の方が速いかな。
そういえばrsync出れないとmacports更新が面倒かも。portsはsvn upすればいいとしても、tclのライブラリとか。baseをsvn upしてmake installしなおすか。
でMacVimですが、やはり10.5だとインライン入力のフォント幅がおかしいです。build環境じゃなくて実行環境によると。vim-cocoaのmergeが待たれる今日この頃。
2007-11-27
2007-11-26
Mac OS X 10.4/10.5用 vim 7.1.161 carbon/cocoa universalバイナリ
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
http://sourceforge.jp/projects/splhack/
cf.sourceforge.jpで作ったバイナリです。10.4でも10.5でも動きます。ppcでもintelでも。
http://sourceforge.jp/projects/splhack/
cf.sourceforge.jpで作ったバイナリです。10.4でも10.5でも動きます。ppcでもintelでも。
cf.sourceforge.jp続き (dylibの謎)
10.5だから動かないというわけではなく、
って環境変数を設定してたのが原因でした。なんか作業中に設定してしまった模様。
同じ名前で中身が違うshared libraryがDYLD_LIBRARY_PATHで先に読まれてしまったのが原因。今回の場合はDYLD_FALLBACK_LIBRARY_PATHで足らなかったら読むようにすれば解決。
だけだと面白くないですね。追ってみます。
syscallをおっかけられるktraceで見てみると
...
いやさ10.5ならktraceじゃなくてdtrace!
こんなんでopen syscallの第一引数を逐次表示。よくわからんスクリプトだなぁと思ってましたが、awkと思えばスッキリ。
DYLD_LIBRARY_PATH=/opt/local/lib を指定してると
DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib を指定していると
ほらこの通り。って、なんか全然足らないですね。carbonげなdylibとかまったく読まれてない。DYLD_PRINT_LIBRARIES= も付けて実行すると読み込まれたすべてのdylibが表示されるので、dtraceでもここまで表示されて欲しい。
syscall::"*":entryで見てみるとstatで/usr/lib/libobjc.A.dylibとか触ってる。システム系のshared libraryはsystem callで読まれないのかなぁ、とか一瞬思ってしまいましたが、こりゃcacheですね。man dyldで発見。
DYLD_SHARED_REGION=avoid DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib なら
解決! でも/opt/local/lib/libncurses.5.dylibとか使ってる状態で、さらにこれやってもopenで読まれるのはなんでだろう。何かcacheされる条件があるんかな。
ということでdtraceは面白いという話でした。awkみたいなスクリプト以外にrubyとかで書けたら便利かも。あとhookして挙動いじれたり。openしたつもりが別のファイルをopenしてたりとか。system callの中身をrubyで書いたりとか。jailな感じ。
DYLD_LIBRARY_PATH=/opt/local/lib
って環境変数を設定してたのが原因でした。なんか作業中に設定してしまった模様。
同じ名前で中身が違うshared libraryがDYLD_LIBRARY_PATHで先に読まれてしまったのが原因。今回の場合はDYLD_FALLBACK_LIBRARY_PATHで足らなかったら読むようにすれば解決。
だけだと面白くないですね。追ってみます。
syscallをおっかけられるktraceで見てみると
...
いやさ10.5ならktraceじゃなくてdtrace!
sudo dtrace -n syscall::open"*":entry'/execname == "Vim"/{printf("%s", copyinstr(arg0))}'
こんなんでopen syscallの第一引数を逐次表示。よくわからんスクリプトだなぁと思ってましたが、awkと思えばスッキリ。
DYLD_LIBRARY_PATH=/opt/local/lib を指定してると
CPU ID FUNCTION:NAME
1 17600 open:entry /opt/local/lib/libncurses.5.dylib
1 17600 open:entry /opt/local/lib/libiconv.2.dylib
1 17600 open:entry /opt/local/lib/libintl.8.dylib
1 17600 open:entry /opt/local/lib/libmigemo.1.dylib
1 17600 open:entry /System/Library/Frameworks/Python.framework/Versions/2.3/Python
1 17600 open:entry /opt/local/lib/libruby.dylib
1 17600 open:entry /opt/local/lib/libz.1.dylib
1 17600 open:entry /opt/local/lib/libxslt.1.dylib
1 17600 open:entry /opt/local/lib/libPng.dylib
DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib を指定していると
0 17600 open:entry /opt/local/lib/libncurses.5.dylib
0 17600 open:entry /opt/local/lib/libiconv.2.dylib
0 17600 open:entry /opt/local/lib/libintl.8.dylib
0 17600 open:entry /opt/local/lib/libmigemo.1.dylib
0 17600 open:entry /System/Library/Frameworks/Python.framework/Versions/2.3/Python
0 17600 open:entry /opt/local/lib/libruby.dylib
ほらこの通り。って、なんか全然足らないですね。carbonげなdylibとかまったく読まれてない。DYLD_PRINT_LIBRARIES= も付けて実行すると読み込まれたすべてのdylibが表示されるので、dtraceでもここまで表示されて欲しい。
syscall::"*":entryで見てみるとstatで/usr/lib/libobjc.A.dylibとか触ってる。システム系のshared libraryはsystem callで読まれないのかなぁ、とか一瞬思ってしまいましたが、こりゃcacheですね。man dyldで発見。
DYLD_SHARED_REGION=avoid DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib なら
0 17600 open:entry /opt/local/lib/libncurses.5.dylib
0 17600 open:entry /opt/local/lib/libiconv.2.dylib
0 17600 open:entry /opt/local/lib/libintl.8.dylib
0 17600 open:entry /opt/local/lib/libmigemo.1.dylib
0 17600 open:entry /System/Library/Frameworks/Python.framework/Versions/2.3/Python
0 17600 open:entry /opt/local/lib/libruby.dylib
0 17600 open:entry /usr/lib/libobjc.A.dylib
0 17600 open:entry /usr/lib/libSystem.B.dylib
0 17600 open:entry /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound
0 17600 open:entry /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
...
解決! でも/opt/local/lib/libncurses.5.dylibとか使ってる状態で、さらにこれやってもopenで読まれるのはなんでだろう。何かcacheされる条件があるんかな。
ということでdtraceは面白いという話でした。awkみたいなスクリプト以外にrubyとかで書けたら便利かも。あとhookして挙動いじれたり。openしたつもりが別のファイルをopenしてたりとか。system callの中身をrubyで書いたりとか。jailな感じ。
2007-11-25
cf.sourceforge.jp
そういえばsourceforge.jpに10.4 ppc環境が用意されてたなぁ、とcf.sourceforge.jpを試してみました。いざ10.4用Vimバイナリ作成。
MacPorts-1.5.0-archive.tar.bz2 を展開してbaseで
とかでmake; make install。+universal入れると-isysrootがリンカに渡らないとかいくつか問題がありましたが、なんとかvimまでinstallに成功。
cf上ではコンソール版がちゃんと動作しました。GUI版は動かせません。Xvncみたいな仕組みがあればいいんですけども。
で10.4 intel環境でも動作確認。特に問題なし。
んが、10.5で実行すると
うむむ。要調査。
MacPorts-1.5.0-archive.tar.bz2 を展開してbaseで
./configure --prefix=$HOME/opt --with-install-user=ユーザー --with-install-group=グループ --with-tclpackage=$HOME/opt/Library/Tcl
とかでmake; make install。+universal入れると-isysrootがリンカに渡らないとかいくつか問題がありましたが、なんとかvimまでinstallに成功。
cf上ではコンソール版がちゃんと動作しました。GUI版は動かせません。Xvncみたいな仕組みがあればいいんですけども。
で10.4 intel環境でも動作確認。特に問題なし。
んが、10.5で実行すると
dyld: Symbol not found: __cg_png_create_info_struct
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
Expected in: /opt/local/lib/libPng.dylib
うむむ。要調査。
2007-11-22
blogger
bloggerの独自ドメイン公開機能を使ってみました。CNAME設定するだけですが。
これまでのsplhack.blogspot.comでも 301 Moved Permanently で来れます。
http://blogger.splhack.org/
ちなみにドメイン名の由来はコレ → SPL(9) - NetBSD Kernel Developer's Manual
これまでのsplhack.blogspot.comでも 301 Moved Permanently で来れます。
http://blogger.splhack.org/
ちなみにドメイン名の由来はコレ → SPL(9) - NetBSD Kernel Developer's Manual
2007-11-14
MacVim
vim-cocoa用にIM制御パッチ送ったらMacVimに取込まれました。よかった。インライン入力部分も改善されました! (Leopardでは未確認)
ということでそれに合わせてパッチ修正しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim
gitのrevisionだと思ってたのがどうも違ってたようなのでバージョンは日付にしました。
それはそれとして。10.5で作ったcarbon/cocoa vimバイナリを10.4で動かしてみました。
Leopardで+pythonでbuildすると /System/Library/Frameworks/Python.framework/Versions/2.5/Python に依存してしまう。これはTigerにはないので動かず。逆に2.3に依存させるとクリーンインストールのLeopardで動かない予感。libruby.dyldみたく-framework pythonじゃなくて-lpythonにしちゃってdyld持っちゃうか。
でも、そこを抜けたとしても、EXC_BAD_ACCESSで落ちる。-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 でいけるかな。はたして。
ということでそれに合わせてパッチ修正しました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FMacVim
gitのrevisionだと思ってたのがどうも違ってたようなのでバージョンは日付にしました。
それはそれとして。10.5で作ったcarbon/cocoa vimバイナリを10.4で動かしてみました。
Leopardで+pythonでbuildすると /System/Library/Frameworks/Python.framework/Versions/2.5/Python に依存してしまう。これはTigerにはないので動かず。逆に2.3に依存させるとクリーンインストールのLeopardで動かない予感。libruby.dyldみたく-framework pythonじゃなくて-lpythonにしちゃってdyld持っちゃうか。
でも、そこを抜けたとしても、EXC_BAD_ACCESSで落ちる。-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 でいけるかな。はたして。
2007-11-13
Android TCPServer
TCPServerじゃなくてServerSocketを使う場合は
みたいにemulatorを起動しておかないと、Androidアプリに対してTCPコネクションをはることができないと。ここらへんはqemuのマニュアル参照。
emulator -qemu -redir tcp:12345::12345
みたいにemulatorを起動しておかないと、Androidアプリに対してTCPコネクションをはることができないと。ここらへんはqemuのマニュアル参照。
Android emulator
Javaだから、emulator環境にも同じJava framework用意して動かしてるんでしょ
と思っていた時期が私にもありました。これハードウェアエミュレータじゃないすか。
Qualcomm MSM7Kで動くLinux kernel(あ、gitだ。Linux kernelだし、そりゃそうか)をqemuハードウェアエミュレータ上で動かして、描画はSDL。
そのLinux kernel上でAndroidなAPIが含まれたjava動作環境が動いてると。さすがだ。
tools/lib/imagesにdisk imageが入ってます。userlandのソースコードはまだ公開されてないのかな。
たとえばカメラをqemuから見えるようにしてLinux kernelのdevice driver書いて(メモリにjpegデータがマップされてるようにしとくとか)、AndroidなAPIを用意すればカメラ付き携帯のemulatorになるわけですよ。
あとiPhoneに対応してま... せんね。単に電話まわりのclass名が IPhone なだけです(笑) Phone Interfaceてとこですか。
と思っていた時期が私にもありました。これハードウェアエミュレータじゃないすか。
Qualcomm MSM7Kで動くLinux kernel(あ、gitだ。Linux kernelだし、そりゃそうか)をqemuハードウェアエミュレータ上で動かして、描画はSDL。
そのLinux kernel上でAndroidなAPIが含まれたjava動作環境が動いてると。さすがだ。
tools/lib/imagesにdisk imageが入ってます。userlandのソースコードはまだ公開されてないのかな。
たとえばカメラをqemuから見えるようにしてLinux kernelのdevice driver書いて(メモリにjpegデータがマップされてるようにしとくとか)、AndroidなAPIを用意すればカメラ付き携帯のemulatorになるわけですよ。
あとiPhoneに対応してま... せんね。単に電話まわりのclass名が IPhone なだけです(笑) Phone Interfaceてとこですか。
Android
http://code.google.com/android/
すごい。何がすごいって、同梱のエミュレータで↑のムービーと同じことがすでにできてること。cool!
OS Xならandroidのtoolsにパス通すくらい。
でemulator上のApplicationsからhelloを選択するだけ。動くよ!
res/layout/main.xml の android:text にUTF-8で日本語書いてみましたが
問題なく表示されてます。
これ携帯の世界に留まらないだろうなー
MLの方ではC++使いてー、じゃJava bytecode吐くC++コンパイラ使えば、みたいな話も。
あ、関係ないですが、Objective-C++ 結構好きです。Objective-CなインスタンスをSTL listで管理したり。割とやわらかい言語になります。
すごい。何がすごいって、同梱のエミュレータで↑のムービーと同じことがすでにできてること。cool!
OS Xならandroidのtoolsにパス通すくらい。
$ emulator &!
$ activityCreator.py --out hello org.splhack.android.hello
$ cd hello
$ ant
$ adb install bin/hello.apk
でemulator上のApplicationsからhelloを選択するだけ。動くよ!
res/layout/main.xml の android:text にUTF-8で日本語書いてみましたが
問題なく表示されてます。
これ携帯の世界に留まらないだろうなー
MLの方ではC++使いてー、じゃJava bytecode吐くC++コンパイラ使えば、みたいな話も。
あ、関係ないですが、Objective-C++ 結構好きです。Objective-CなインスタンスをSTL listで管理したり。割とやわらかい言語になります。
2007-11-12
GetScriptManagerVariable/KeyScript 続き
Carbon版はIM onにするとき
一応フィードバックしました。PrivatePortfileですでにあててるパッチですけども。
でTISSelectInputSource。何を指定してIM onにすればいいのかよくわかってません。マニュアル読んでないだけですが。
いまLeopardのAPI使って10.5専用にするには時期尚早て感じで動機が薄いというのもあったり。
KeyScript(smKeyRoman);
ってやってるわけですが、コードだけ見ると、ローマ字だけの感じがします。が、ぐぐるとだいたいこの例で使ってるんですよね。ローマ字onというより日本語入力onという意味なんでしょうか。それはそれとして日本語以外の環境ではどうなってるんだろう?一応フィードバックしました。PrivatePortfileですでにあててるパッチですけども。
でTISSelectInputSource。何を指定してIM onにすればいいのかよくわかってません。マニュアル読んでないだけですが。
いまLeopardのAPI使って10.5専用にするには時期尚早て感じで動機が薄いというのもあったり。
GetScriptManagerVariable/KeyScript
vim-cocoaでIM制御できない話がMLで出てるのでフィードバックしようと思って調べ直してたら、Carbon版で使ってるCarbon APIのGetScriptManagerVariableがDeprecated in Mac OS X v10.5.ですよ。普通deprecatedなので代わりにこれ使ってね、とか書いてあるものなのに書いてないし...
で、LeopardでIMの状態をアプリごとに記憶するInputSwitcherというものをVoluntasさんとこで発見。しかもソース付き。
ありがたく見させていただくと、Text Input Source Services ReferenceのTISCopyCurrentKeyboardInputSourceで記憶、TISSelectInputSourceで設定、というのがわかりました。これでパッチ作ってフィードバックします。Leopard以上と以下でifdefかな。
なんでもかんでもCocoaってわけにはいかんのですね、というかそういう住み分けか。
で、LeopardでIMの状態をアプリごとに記憶するInputSwitcherというものをVoluntasさんとこで発見。しかもソース付き。
ありがたく見させていただくと、Text Input Source Services ReferenceのTISCopyCurrentKeyboardInputSourceで記憶、TISSelectInputSourceで設定、というのがわかりました。これでパッチ作ってフィードバックします。Leopard以上と以下でifdefかな。
なんでもかんでもCocoaってわけにはいかんのですね、というかそういう住み分けか。
Vim vs MacVim
MacVimとVim(cocoa or carbon)を同居させるときの .gvimrc の例:
今日MacVimにUTF-8文字列描画改善やguifontwidth対応が入りました。でも横に広がっちゃったりします。要フィードバック。vim-cocoaのJiangさんがテキスト描画まわりをMacVimに入れるべく作業中ぽいので期待。
で、やっぱTigerとLeopardで挙動が違う気がする。iTermとかvim-cocoaとかは変化ないと思うんですが。なんだろ。やっぱNSTextFieldとNSAttributedStringの差ですか?
if has("gui_macvim")
set transparency=10
set guicursor=a:blinkon0
set guioptions-=T
elseif has("gui_mac")
set gfn=Osaka-Mono:h14
set gfw=Osaka-Mono:h14
set macatsui
set noantialias
set transparency=240
end
今日MacVimにUTF-8文字列描画改善やguifontwidth対応が入りました。でも横に広がっちゃったりします。要フィードバック。vim-cocoaのJiangさんがテキスト描画まわりをMacVimに入れるべく作業中ぽいので期待。
で、やっぱTigerとLeopardで挙動が違う気がする。iTermとかvim-cocoaとかは変化ないと思うんですが。なんだろ。やっぱNSTextFieldとNSAttributedStringの差ですか?
2007-11-09
vim 7.1.154
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
7.1.154に追従。
vim-cocoaは本家へのpatchの形での配布はしなくなったみたいなので、gitでpatch作ってfiles以下に入れてみた。こういうときはgitはいいですね、と言えるくらい使っときたいかも。
そして antialias off が追加されてた!
んが、antialias onのときLeopardでは日本語部分がantialias効いてない気が... うーん。
ところで作ったバイナリははたして10.4で動くのか。SDKは10.4uになってるから動きそうな気もしますが。
7.1.154に追従。
vim-cocoaは本家へのpatchの形での配布はしなくなったみたいなので、gitでpatch作ってfiles以下に入れてみた。こういうときはgitはいいですね、と言えるくらい使っときたいかも。
そして antialias off が追加されてた!
んが、antialias onのときLeopardでは日本語部分がantialias効いてない気が... うーん。
ところで作ったバイナリははたして10.4で動くのか。SDKは10.4uになってるから動きそうな気もしますが。
2007-11-07
jailはなかったけど
security.mac.seatbelt.debug: 0
security.mac.seatbelt.profile_refcount: 31
security.mac.seatbelt.qtnstate_refcount: 1
security.mac.seatbelt.cred_label_refcount: 23
これは気になる。
http://www.opensource.apple.com/darwinsource/10.5/
APSL 2.0はフリーソフトウェア・ライセンス(http://slashdot.jp/mac/article.pl?sid=03/08/07/0745222)
jail
iPhoneでjail環境用意できてるんだからOS Xでできてもいいんじゃないかと。
Leopardでsysctl -Aしたらjailとかでてきたりしないかな。
ついでに10.4用のframeworkしか使えないようなjail環境も用意してくれるとうれしい。
で、iPhoneでいうところのjailってFreeBSDのjailと同じ意味?
Leopardでsysctl -Aしたらjailとかでてきたりしないかな。
ついでに10.4用のframeworkしか使えないようなjail環境も用意してくれるとうれしい。
で、iPhoneでいうところのjailってFreeBSDのjailと同じ意味?
2007-11-03
2007-11-02
ming / newSWFSound_fromSoundStream
[1824403] add newSWFSound_fromSoundStream.
mp3をストリームでくっつける(ムービークリップのフレームにインターリーブしてくっつける方式)と音声は正常だけどなんか再生がカクカク。指定するパラメータをへくってるんだと思いますが。
ので、ムービークリップのstart soundでくっつけられるようにSWFSoundStreamからSWFSoundを作れるように改造してみました。
最初は、[1823305] Implement getMP3Size. でSWFSoundでmp3を扱えるようにしてみたんですが、SWFSoundだとsound fileみてformatとかsamplerateとか自動認識してくれたりしないので非常に不便。自動認識させてみようかと思ったんですが、SWFSoundStreamではできてるから、それを使ってしまおうというアイディア。WAVEとかは自力でflags指定しないといかんですが、いまどきmp3使えれば問題ないでしょう。
ruby-mingにも反映させたいんですが、前送ったパッチは音沙汰なし。
mp3をストリームでくっつける(ムービークリップのフレームにインターリーブしてくっつける方式)と音声は正常だけどなんか再生がカクカク。指定するパラメータをへくってるんだと思いますが。
ので、ムービークリップのstart soundでくっつけられるようにSWFSoundStreamからSWFSoundを作れるように改造してみました。
最初は、[1823305] Implement getMP3Size. でSWFSoundでmp3を扱えるようにしてみたんですが、SWFSoundだとsound fileみてformatとかsamplerateとか自動認識してくれたりしないので非常に不便。自動認識させてみようかと思ったんですが、SWFSoundStreamではできてるから、それを使ってしまおうというアイディア。WAVEとかは自力でflags指定しないといかんですが、いまどきmp3使えれば問題ないでしょう。
ruby-mingにも反映させたいんですが、前送ったパッチは音沙汰なし。
MacVim on Leopard
なーんか、あやしい。インライン入力まわり。ついでに何故かDockでMacVimのアイコンが踊り続ける。この数日でLeopard関連のbugfixがいくつかあったので、それを動作確認してからバイナリ作ります。今の状態だと前につくったものの方が良いなぁ。
安定して使えるCarbon版Vim.appと、MacVim版を両方同時に入れられるようにする。
透明度の意味が違うのでMacVimの値のままだとCarbon版が見えなくなる罠。これはgvimrcで分岐させる。
安定して使えるCarbon版Vim.appと、MacVim版を両方同時に入れられるようにする。
透明度の意味が違うのでMacVimの値のままだとCarbon版が見えなくなる罠。これはgvimrcで分岐させる。
登録:
投稿 (Atom)