2007-12-30

2007-12-11

ming, Ming/Ruby

newSWFSound_fromSoundStreamパッチが取り込まれました。これでイベントサウンドでmp3やflvのサウンドが簡単に使えます。

Ming/Rubyで使える機能を増やすパッチも増えてます。

LinkedIn

LinkedIn profile: http://www.linkedin.com/in/sakamotokazuki

ハードウェアに近い部分でのソフトウェア開発の仕事を探してます。

vim 7.1.175

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

7.1.175に追従。

2007-12-05

Mac OS X 10.4/10.5用 MacVim7.1.166 universalバイナリ

本家でsnapshotが出てたので更新しました。

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


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


XcodeでコンパイルエラーをクリックするとMacVimで該当行を編集開始できるとかできないとか。LeopardでのIMラインは変化なし。

2007-11-27

cf.sourceforge.jpでMacVim

作ってみた。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-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でも。

cf.sourceforge.jp続き (dylibの謎)

10.5だから動かないというわけではなく、

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で

./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

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 でいけるかな。はたして。

2007-11-13

Android TCPServer

TCPServerじゃなくてServerSocketを使う場合は

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てとこですか。

Android

http://code.google.com/android/

すごい。何がすごいって、同梱のエミュレータで↑のムービーと同じことがすでにできてること。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にするときKeyScript(smKeyRoman);ってやってるわけですが、コードだけ見ると、ローマ字だけの感じがします。が、ぐぐるとだいたいこの例で使ってるんですよね。ローマ字onというより日本語入力onという意味なんでしょうか。それはそれとして日本語以外の環境ではどうなってるんだろう?

一応フィードバックしました。PrivatePortfileですでにあててるパッチですけども。


でTISSelectInputSource。何を指定してIM onにすればいいのかよくわかってません。マニュアル読んでないだけですが。

いまLeopardのAPI使って10.5専用にするには時期尚早て感じで動機が薄いというのもあったり。

GetScriptManagerVariable/KeyScript

vim-cocoaでIM制御できない話がMLで出てるのでフィードバックしようと思って調べ直してたら、Carbon版で使ってるCarbon APIのGetScriptManagerVariableDeprecated in Mac OS X v10.5.ですよ。普通deprecatedなので代わりにこれ使ってね、とか書いてあるものなのに書いてないし...

で、LeopardでIMの状態をアプリごとに記憶するInputSwitcherというものをVoluntasさんとこで発見。しかもソース付き。

ありがたく見させていただくと、Text Input Source Services ReferenceのTISCopyCurrentKeyboardInputSourceで記憶、TISSelectInputSourceで設定、というのがわかりました。これでパッチ作ってフィードバックします。Leopard以上と以下でifdefかな。

なんでもかんでもCocoaってわけにはいかんのですね、というかそういう住み分けか。

Vim vs MacVim

MacVimとVim(cocoa or carbon)を同居させるときの .gvimrc の例:

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になってるから動きそうな気もしますが。

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と同じ意味?

2007-11-03

vim-cocoa

vim-cocoaもgit。

http://repo.or.cz/w/vim-cocoa.git

MacVimと良いとこ取りでマージしてくれないかなぁ...

2007-11-02

python

ということでmingのpython bindingでもtruetype fontが直接使えることを確認しました。日本語もok。

ちなみに一番時間がかかったのは、インデントが正しいはずなのに何故かエラーで怒られるという原因がまったくわからない、というとこでした。

タブだった orz

set ft=python なはずなのに!

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にも反映させたいんですが、前送ったパッチは音沙汰なし。

MacVim on Leopard

なーんか、あやしい。インライン入力まわり。ついでに何故かDockでMacVimのアイコンが踊り続ける。この数日でLeopard関連のbugfixがいくつかあったので、それを動作確認してからバイナリ作ります。今の状態だと前につくったものの方が良いなぁ。

安定して使えるCarbon版Vim.appと、MacVim版を両方同時に入れられるようにする。

透明度の意味が違うのでMacVimの値のままだとCarbon版が見えなくなる罠。これはgvimrcで分岐させる。

2007-10-31

MacVim

10.4で動作確認したら普通に使えた。インライン変換時の文字幅が変な件がMacVimの修正で直ったのか、Leopardだから発生するのか、は不明。あとで調べる。

kaoriyaまわり削ったMacPortsをMacVimグループに投稿。MacPortsに送るのがスジかもしれんけど。どうかな。

2007/10/31

itojunさん

言葉が出ません...

が、書いておきたい。残しておきたい。


Happy Hacking!

2007-10-30

vimとMacVim

MacVimは専用リポジトリなのでportもvimから分離させてみました。fetchからbuild方法も結構違うので。

vim 7.1.146に更新

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

MacVim 今日のリビジョンは401。vim本体は7.1.145になってました。

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


Leopardだと+universalで作ろうとするとCFLAGSに-arch ppcが入らないという謎の挙動。src/auto/config.mkを書き換えてbuild。


で、MacVim 今日のだとIM上の文字幅が半角扱い?なのか重なっちゃって使い辛いです。インライン用のフォントまわりを要チェック。

2007-10-28

ming

もうパッチが取り込まれてます。よかった。これで楽ちん。

swftorubyパッチは

http://sourceforge.jp/projects/splhack/wiki/FrontPage#ming

に置きました。


GitのGoogle Tech Talks

2007-10-27

ming / ming-ruby


■ming
[1821118] Uninitialized variable in SWFFileAttributes.
[1821123] Support swf version 8 in PreBuiltClip.

■ming-ruby
[#15101] Sync with ming trunk.


patch送るなんて超久しぶり。

あ、ruby binding書いて送ってmingに取り込まれたものの、その後放置してたのは私です。すみません...


あと、swftoruby(なくなっているようですのでgoogle cache)をtrunkにあてられるように改造したのもあります。LGPLだし公開していいですよね。

iTerm

LeopardでTerminal.appがマシになりましたが、wcwidthのせいでまだまだ。http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.cのwcwidthを提供するshared library作ってpreloadという手もとれそうですが、ここはiTermで。

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

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/PrivatePortfile/aqua/iTerm/?root=splhack

10.5のSDKだと通らないところもpatchあててます。

A2DP

LeopardでもDR-BT20NXで音質がAMラジオ並みなのでA2DP対応してないのかと思いましたが、

/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothA2DPAudioDriver.kext

ありました。サウンドデバイスの設定したりデバイス削除して再度登録したりしてたら、まともになりました。「ヘッドセットとして使用」をoffにして「ヘッドフォンとして使用」のみonにすれば確実っぽい。マイク使えなくなりますけど。


VMware Fusion 1.1 RC インストール最後にエラーが出た。けどちゃんと動いてます。CTRL/CAPS入れ換えがリセットされるのが修正されてて幸せ。


zsh-devel改造版も修正。

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/PrivatePortfile/shells/zsh-devel/?root=splhack

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

Leopardファーストインプレッション

sshのパスフレーズまでもKeyChainに入った。これはssh-agentとかの類いは不要になったということか。凄い。
でもsudoでのパスワードは入らなかった。

zsh-devel改造版(http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/PrivatePortfile/shells/zsh-devel/?root=splhack)が起動時に必ずdouble freeなmalloc errorを出すようになった。うむむ。いままでも使ってると出るときがあったけど。あきらめてmacportsオリジナルの最新版を試してみるが、checking for C compiler default output file name... configure: error: C compiler cannot create executables とか。gcc-4.0: argument to `-V' is missing って何かgccのoptionが変わったか?

ってXcodeまったく動かないじゃん! 実行すると即死。

と思ったらDVDにXcode3.0が入ってたのでインストール。

オリジナルのzsh-develも動いた。

改造版は wcwidth.c が更新されてたので、さらに改造が必要。

2007-10-26

AmaTunes

RubyCocoaでhttp://www.bruji.com/cocoa/barcode.htmlを使ったアプリを作りました。その名も AmaTunes (笑)

カメラで読み取ったバーコードのISBNをAmazonで検索して、それをオーディオブック形式(m4b)に変換してiTunesにつっこむ代物。



最初PDFにしとけば本ぽくていいかなと思ったんですが、アートワークが表示されないっぽいのでm4b形式で。そこはfaacで。サウンド部分は無音。

standalonify.rb で単体で動くようにしてみたんですが、rubygemsがうまくrequireできなかったので、各gemsのpathを直接指定して逃げました。

あとちょっとで発売されるLeopardではRubyCocoa, rubygems標準搭載なので配布が楽になるのがうれしい。

って、そう簡単にTiger(10.4)切り捨てられないですよねぇ。

(関連記事)

OS X 10.4以降用universalバイナリ→http://sourceforge.jp/projects/splhack/files/?release_id=27701#27701

ソースコード → http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/AmaTunes/?root=splhack

2007-10-22

A2DP

そういえば、Bluetooth A2DP対応って

http://www.apple.com/jp/macosx/features/300.html

に書いてないですけど。対応してますよね Jobsさん?

2007-10-21

markedRange

で NSMakeRange(0, [[markedTextField stringValue] length]); って正しく返してしまうと、ことえりの未確定入力?の下のテキストが黄色くなってたのに気づいた。通常は見えないけど、backspaceで速く消すとちょっとだけ見える。

通常見えないから問題ないとはいえ。うーむ。

2007-10-19

MacVim new repository

mailing list見てたと思ってたけど違うmailing listだった。googlegroupsのvim_macにsubscribe。

でMacVimの新しいリポジトリが

http://repo.or.cz/w/MacVim.git

になってた。gitて初めて知った。

vim本体にパッチをあてた状態(現在は140まであたってる模様)に、MacVim固有のパッチとMacVim本体が入った状態のものが取得できる。

これにkaoriyaパッチあててみる実験中。

2007-10-18

rosettaでMacVimバイナリ

なんか動かない。メッセージのエンディアンがひっくりかえってるのが原因。

MacVim実行ファイルからVim実行ファイルをcocoaでlaunchしてるところに /usr/libexec/oah/translate をかましてみても改善せず。なんじゃろ。

rosettaで動いてるプロセス同士のプロセス間通信のエンディアンまで面倒見切れない、とか?

MacVim バイナリ

作りました。OS X 10.4用universalバイナリです。

http://sourceforge.jp/projects/splhack/files/?release_id=27583#27583

http://journal.mycom.co.jp/news/2007/10/16/001/index.htmlで紹介されてるMacVimにKaoriyaパッチなど日本語関連機能を追加したものです。


Vim 7.1.140
MacVim用パッチ
MacVim本体 (trunk)
Kaoriyaパッチ
Carbon版からもってきたIM制御コード
uimfep同居、IM入力キャンセル時不具合対策
などを適用しています。

http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim
でソースからインストールしたものと同一ですが、起動スクリプトを書き換えてshared libraryを内蔵するようにしていますので上記バイナリ単体で動作させることが可能です(macportsなどに依存していません)。

日本語メニューはMacVimでは未対応です。

2007-10-17

setMarkedText:selectedRange:解決編

markedRange がいかんかった。現在のmarkedTextのrangeを返すようにしたら直った。これで使える。7.1.140.2で修正。

しかしメニューが日本語にならんのはなんでだろう。


noantialiasとインライン入力色設定がほしー

vim7.1.140 + MacVim + IM制御

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

IM入力中のボーダーラインも消してみたりして。なんかインライン入力っぽくないので。

MacVimの描画まわりはvim本体と分離してるので色の設定とかを渡すには結構改造が必要か。

いまのところの問題はIM入力をキャンセルするような操作(全未確定文字列をbaskspaceで削除とか未変換状態でESCとか)時にsetMarkedText:selectedRange: が呼ばれないこと。原因不明。NSTextFieldを使ってるのが原因とかだとやだなぁ... (iTermやvim-cocoaではNSAttributedString)


で、

:set guioptions-=T

とかしたり。iTermでもツールバー非表示派。

2007-10-16

MacVim

vim-cocoaの時にも入れたCarbonによるIM制御までは動作確認。明日の朝アップします。subversionにはcommitしてあります。

IM入力中のESCによる抜けや、全文字削除時にvim側がIMの文字がなくなってることに気づいてないのを直したい。

Leopard

apple storeで購入ー

MacVim

というわけでMacVimも適用。

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

port install vim +huge +kaoriya +cscope +ruby +python +macvim

とか。cocoa + carbonて書いたけど、タブとかメニューとかの上っ面がcocoa + carbonなんですね。vim自体はcocoaだけ。でもIME制御しようと思ったらcarbonリンクせんと...

vim-cocoaに比べて日本語入力まわりが弱い。あとset guifontとかすると悲しいことになります。

これはvim-cocoaからコード持ってくるべきか。きっとvimのtrunkにマージされるでしょうから、ちゃんとIMEまわりをフィードバックしよう。こんどこそ。

あとnoantialiasできないのはvim-cocoaと一緒。

また別のMacVim

フルスクリーンに対応したMac版Vimのスナップショットが公開

メーリングリストは見てたけど、気づかなかった...

http://macvim.googlecode.com/svn/trunk/

cocoa + carbon ですね。


+aqua
オリジナル+インライン+ATSUI+半透明パッチ
+cocoa
vim-cocoa+半透明パッチ
+macvim
上記


とかにしたい。

2007-10-09

isspace(3) 追試

#include <ctype.h>
#include <stdio.h>
#include <locale.h>
int main()
{
int c;
setlocale(LC_CTYPE, "");
while ((c = fgetc(stdin)) != EOF)
printf("0x%x %d\n", c, isspace(c));
return 0;
}

でもって
$ ./a.out
しゅ
0xe3 0
0x81 0
0x97 0
0xe3 0
0x82 0
0x85 0
0xa 1

なわけですが、LC_CTYPEがUTF-8だと

$ LANG=ja_JP.UTF-8 ./a.out 
しゅ
0xe3 0
0x81 0
0x97 0
0xe3 0
0x82 0
0x85 1

0xa 1


「ゅ」の最後のバイトが空文字と判定されてしまうと。

http://developer.apple.com/documentation/Darwin/Reference/ManPages/man3/isspace.3.html
(FreeBSDのマニュアルと同じだ。FreeBSDでのisspaceの挙動も同じ。)

マルチバイト文字ロケールでUTF-8文字列をisspaceに突っ込むな or LC_CTYPE="C"でisspaceを呼ぶべし、でしょうか。

2007-10-06

vim 7.1.135



migemo検索時に文字が化ける件はUTF-16になってるわけじゃなくて、LANG=ja_JP.UTF-8時にisspace(0xa0)とかが1になったりするという謎の挙動のせいで、ローマ字かな辞書ファイルを正常に読み込めてなかったのが原因。cmigemoで対策。

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

wcwidthの件とか含めてlibcでなんとかして欲しいところ。そういえば、そろそろLeopardですかね。

iPod touch

iPhoneは1.1.1でもssh loginできる方法が見つかったみたいですが、iPod touchはどうかなー


でiphoneが欲しくてW-ZERO3[es]で再現してみました。


(http://zerobase.jp/people/sakamoto/post_16.html)

2007-09-11

vim7.1.100

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

7.1.100 に追従。


ファイルを新規タブで開く方法 AppleScript編

tell application "System Events"
tell application "Vim" to activate
set CR to ASCII character of 13
set ESC to ASCII character of 27
keystroke ESC & ":tabnew /tmp/a.txt" & CR
end tell


なんかウィンドウ作って、そこにdrag and dropされたファイルを↑みたいにすれば便利かもしれません。

2007-09-05

vim 7.1.94

そういえば7.1.94に対応させてます。

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


> 意味なさそうな空のvariant行を消してみました。

これ意味ありました。PowerPCのときはGVim.appをインストールする、というチェックに使ってました。しかし Vim.app がRosettaでも動くところを見ると特にいらないような気もします。

2007-08-25

vim 7.1.87

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

Mac OS X 10.4用universal バイナリ (Carbon版)
http://sourceforge.jp/projects/splhack/


vim-cocoa用の実験版Portsを統合。あとパッチまわりを整理して、Vim.app部分をCarbon版とCocoa版で共有など。


Cocoa版はIMEインライン入力後のゴミとnoantialiasがあれば!

vim-cocoa IMEとか

IME入力時の色指定(IMLine)対応。Carbon版と呼び出すAPIが違うくらい。

noantialiasも同じようなもん

とやってみたら、文字が表示されなくなったりしたのでパッチ破棄。設定値か方法間違ってる...


あとIME制御。

http://www.tech-arts.co.jp/macosx/macosx-dev-jp/htdocs/4500/4575.html

ということでCocoaだけでは現在のIME状態がわからない? ようなので、Carbon版のIME制御コードをそのままもってきて、Carbon frameworkもリンク(負け)。

2007-08-24

vim-cocoa 半透明

ということでvim-cocoaも半透明対応させました。

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

Carbon版と同じ方式です。半透明はともかく(set transparencyはkaoriyaパッチの機能)インライン入力まわりはフィードバックしないと。

あとnoantialias。

もうcocoa版に乗り換えちゃってもいいかも?

2007-08-22

vim-cocoa

ちょっと試してみました。

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

日本語インライン入力できてるんだけど見えなかったので色付けてみました。入力確定時にゴミが残っちゃいますけども。iTermみたいにしないと。

noantialiasと半透明が欲しいw

2007-08-13

vim 7.1.68

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

7.1.68対応。

Info.plist にpatchあてたあとに .orig ファイルが残ってたので削除するように変更。

2007-08-11

ESC

macbookでUSキーボード。システム環境設定でcaps lockとctrl入れ替えてハッピーライフ。

と思っていた時期が私にもありました。

問題はescが遠いところ。viな人ですから。ctrl+[は慣れません。

大昔はuControlで遊んだりしましたが、今時はどうやるのかとぐぐる。



USExtended.keylayout とかはやりかたがよくわからなかったので、KeyRemap4Macbookに escape と tilde「`~」を入れ替えるのを追加してみました。

http://splhack.sourceforge.jp

ハッピー! KeyRemap4Macbookの作者 tekezoさんに感謝。



でも、まだ慣れてないオレがいる。

2007-08-09

SCPlugin オレオレ証明書素通しパッチ

OS XのFinder用subversionプラグイン http://scplugin.tigris.org/ 用の https で自前証明書を素通しで信じるための邪悪なパッチ ↓

http://splhack.sourceforge.jp/

コマンドライン subversion いらず。なはず。たぶん。

apache + mod_proxy_balancer ssl → apache + mod_dav_svn

httpsで受けてmod_proxy_balancerでbackendのmod_dav_svnに渡すとcopyでbad gatewayを喰らう。

backend側のDAV svnしてるLocationの中でLocationの外で(8/16修正)

RequestHeader edit Destination ^https http

とすれば回避可能。

Ludia 1.2.0 FreeBSD ports

http://splhack.sourceforge.jp

に置いてみました。今日更新された1.2.0に対応。

sourceforge.jp wikiの添付ファイルはまだ消す方法がない?

2007-08-08

ports

FreeBSDの方の。

Ludiaのports作った(超簡単ですがあるとないとで全然違う)り、libmecab.soがpthread_joinを解決できなくて -lpthread 付けたら通った(-pthreadだとだめ)件を、MLに投げようと思ってports-jpのアーカイブ見たら。

大変なことになってますね...

vim7.1.56

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

http://sourceforge.jp/projects/splhack/files/?release_id=26627#26627

7.1.56に追従。

意味なさそうな空のvariant行を消してみました。

2007-08-06

vim7.1.54

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

日刊vimですね(笑)

心なしか速くなったような気がしなくもないですが、きっと気のせいでしょう。

2007-08-05

vim 7.1.50

7.1.50 に対応。versionとmd5の更新のみです。

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


バイナリも更新。

http://sourceforge.jp/projects/splhack/files/?release_id=26592#26592



■shared libraryやvim runtime path、LANGの設定方法
Info.plistでshell scriptを実行するようにする

■dmgファイル作成方法
hdiutil create -srcfolder vim7 -format UDBZ vim7.1.50.dmg
UDBZ(bzip2)は10.4(tiger)以降でしか使えないみたいですが、10.4(tiger)以降でしか動かなさそうなバイナリしか作ってないし。

2007-07-25

vim7.1.33.0 バイナリ for OS X 10.4 universal

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

http://sourceforge.jp/projects/splhack/files/?release_id=26467#26467

おまけの _gvimrc で半透明設定にしときました。


port dmg とか mpkg でバイナリパッケージにできますが、これは使ってません(これで作ったインストーラはちょっとかわいい)。いざMacPortsを使おうとしたときにファイルが衝突するのは悲しいので。

vim7.1.33バイナリ動作確認

わりと素の状態のiMac17で動作確認。無事動きました。
でも、せっかくなので、おまけの _gvimrc は半透明設定して再リリースしようと思った(笑)


で、Terminalでも、LANG=ja_JP.UTF-8だとmigemoで文字化けすることを確認。ja_JP.sjisやeucJPは平気。どこで何に影響してんだろ...

2007-07-24

vim7.1.33 universal バイナリ

http://sourceforge.jp/projects/splhack/files/?release_id=26452#26452

OS X 10.4なら、特に何もインストールしなくても、PowerPCでも、Intelでも、動くと思います。動くといいな。動いて。


universalアプリはさすがにでかい。

しかし、こういうときにchrootして確かめられたりするといいんですけども。VMwareでOS Xの動作確認とかでもいいです。Windowsみたいにライセンスを要求しないで欲しいですが。

vim7.1.33

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

7.1.33に更新。で気づいたんですが、Vim.appをFinderから起動するとmigemo検索文字列が文字化けしている。でもTerminalから起動すると文字化けしない。しばし違いを眺めてみたら、どうもLANGが影響しているっぽい。Finderの場合は「ja_JP」、Terminalでは「C」。ja_JPはja_JP.UTF-8と同じですかね。cmigemoは確か内部コードUTF-8じゃなかったような気がするので、これが原因かとInfo.plistでLANGをja_JP.eucJPにしてみました。


あと、vimはバイナリ配布した方が良さそうなので、関連portを +universal でinstallしなおし。結構大変。

バイナリ配布サーバとして、一瞬http://www.esnips.com/を考えましたが、安心のブランド sourceforge.jp で。

改造/自作PrivatePortfileのsvnリポジトリ


バイナリまとめ中。あ、今度は +python +ruby です(^^;

2007-07-15

vim 7.1.28

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

更新しました。vim_patchlevel 変更のみ。


PrivatePortfile を sourceforge.jp とかにおいてsvn管理すると便利かも。


そういや、まだport selfupdateしてなかった。

selfupdateした。

2007-07-10

pound + https + mod_dav_svn

poundでHTTPSを受けてmod_dav_svn(apache22+subversion1.4.3)に流すとsvn copyとかで400 Bad gatewayを喰らう。

http://www.apsis.ch/pound/pound_list/archive/2007/2007-03/1172871379000

によれば RewriteDestination 1 すれば通るはず。んが通らない。

ソースおっかけてrewrite destinationしてるとこのURLを表示してみたら、パスが「//」で始まっていた。これはあやしいと修正してみたら通った!


--- http.c.orig Fri May 18 17:34:53 2007
+++ http.c Tue Jul 10 13:13:31 2007
@@ -818,7 +818,7 @@
}
str_be(caddr, MAXBUF - 1, cur_backend);
strcpy(loc_path, buf + matches[3].rm_so);
- snprintf(buf, MAXBUF, "Destination: http://%s/%s", caddr, loc_path);
+ snprintf(buf, MAXBUF, "Destination: http://%s%s", caddr, loc_path);
free(headers[n]);
if((headers[n] = strdup(buf)) == NULL) {
logmsg(LOG_WARNING, "rewrite Destination - out of memory: %s", strerror(errno));


この現象が出るのは特定の組み合わせだけなのかな?

2007-07-09

MacPorts 1.5.0

http://trac.macports.org/projects/macports/wiki/MacPortsRenaming

いよいよDarwinPortsという名前を捨てるのですね。

アップデートはしばらく様子見た方がいいのかしら。なんかはまりそう(^^;


それはそれとしてFreeBSDでcompileできないportsにひっかかることが多くて困り中。freetype2とかapr-1とか。jail環境によってはcompile通ったりするのでpackage作って持ってたり。まー、あれだけ入ってるとportsインストール順とかまで面倒みきれないと思いますが...

2007-07-06

vim 7.1.20

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

7.1.20 に対応。

patchlevelを12から20に変えただけ。前回みたいにはひっかからず。

2007-07-05

universal

「情報をみる」で「Rosettaを使って開く」をチェックすればFinderからはppc側で起動できる。

けど、コンソールからは?


/usr/libexec/oah/translate コマンド

でした。

2007-06-23

Vim 7.1.12

なんとIntelMacではgvimで右クリックによるコンテキストメニューが出なかった。

のが7.1.7で治ってるので最新版に更新。

しかし、その修正のせいでインライン変換が効かなくなってたので、しばし格闘。

なんとなく治ったので、ソース見てて気づいたインライン入力時の色をhighlightで指定できるようにしてみました。



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

インライン入力時のカーソルが透けちゃってるのが気になる...

2007-05-31

DELL PowerEdge SC440

といってもXeonじゃなくてCeleron-Dですけども。

オンボードEthernetがBroadcom 5754で、NetBSD 3.1はともかく、4.0BETA2や-currentでも未対応。

http://mail-index.netbsd.org/current-users/2007/01/02/0000.html
http://mail-index.netbsd.org/current-users/2007/01/05/0000.html
http://mail-index.netbsd.org/current-users/2007/01/09/0003.html

とか試してみるもarpに答えない。どころかパケットが出て行かない、入ってこない。うーん。
ただukphy0になってたのでmiiまわりのpatchあてそこなってる可能性大。
あと bge0: firmware handshake timeout とか言ってた。

とはいえ時間切れな感じなので、FreeBSD 6.2 stableで。負けた...

OS Xでbuild.sh -m i386とか、pxeで起動してインストールとか、超久しぶり。そして4.99とか見慣れないぃ。1.7ZZAとかでいーじゃないですかw

PrivatePortfiles


http://lapangan.net/darwinports/index.php?PrivatePortfile%2Fqrencode
ruby qrencoder用。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FImageMagick
rmagickインストール時にImageMagickだけMacPortsを使わないのがアレなので、rmagick用のconfigure optionを仕込んでみました。
http://lapangan.net/darwinports/index.php?PrivatePortfile%2Fasterisk14
言わずと知れたPBXソフツAsterisk。zaptelとかは気にしてませんがIP電話はちゃんと捌けてます。audio/speex入れてるとspeex encoderまわりでcompile通りませんが...

2007-05-14

vim 7.1 release

Stable Vim version 7.1 has been released

ということで対応。

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

system でパッチあててたところのカレントディレクトリが変わっててはまった。cd ${worksrcpath}で回避。今まで偶然動いてただけかな。

2007-05-09

2007-04-24

zsh 4.3.4

マルチバイト文字の対応が強化されたみたいですが、全角文字判定はあいかわらず wcwidth() まかせなのでOS Xでは「”」(全角ダブルクォート)が半角扱い。

のでPrivatePortfile/zsh-develを4.3.4に追従。

2007-04-23

USB-RS232

秋月で今売ってるUSB-RS232ケーブル(1400円)はProlific PL-2303を使用。

OS Xのドライバ

ちゃんとuniversal binary。Prolificえらい!


関係ないけどLEDに過電流ながして破壊。1つ学習 orz

2007-04-21

gvim7 半透明その2

.gvimrcに set transparency=240 とか書いても反映なし。ウィンドウ開いてからSetWindowAlphaしてないからか。

ということで対応 → http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

gvim7 半透明

carbonではSetWindowAlpha呼ぶだけのようですし、どうもkaoriyaパッチでmacvim半透明パッチのオプション部分が生きてるようなので、さくっと対応 → http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim



iTermみたくタイトルバーを不透過にするにはcocoaじゃないとだめなんかな?

2007-04-01

Xcode データモデリングツール

Cocoaセミナー上級編で、Core Data用データモデリングツールがあることを知る。データベースを軽くスケッチするのにいいかも。で、mogeneratorCore Dataのカスタムクラスコードを生成できるらしいので、ぱくってエンティティ情報をymlで吐き出すものをCocoaで作ってみた。



てな感じにモデリングしてymlを吐き出す。それからrailsのmodel generatorを呼び出して、関係情報をmodelに突っ込むrubyスクリプトも。


class CreateSubscriptions < ActiveRecord::Migration
def self.up
create_table :subscriptions do |t|
t.column :user_id, :integer
t.column :newsletter_id, :integer

class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :name, :text
t.column :age, :integer

class CreateNewsletters < ActiveRecord::Migration
def self.up
create_table :newsletters do |t|
t.column :date, :datetime
t.column :content, :text
t.column :title, :text

class Newsletter < ActiveRecord::Base
has_many :subscriptions
has_many :users, :through => :subscriptions
end

class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :newsletter
end

class User < ActiveRecord::Base
has_many :subscriptions
has_many :newsletters, :through => :subscriptions
end


配布はのちほど。

zsh

「●」問題解決したかと思いきや、zshで半角扱いになっているとの話をいただく。

そもそもzshで日本語使えてなかったので port install zsh-devel +utf8 して、LANG=ja_JP.UTF-8で試す。「●」を削除しても半分しか消えない! これは wcwidth が原因ぽい。OS Xのlibcのせいか。いろんなプログラムで同じような問題を同じように回避してるらしい... libcでなんとかするのがいいと思うんですが、政治的にアレなんですかね? とりあえず有名らしいhttp://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.cで回避成功。

例によってMacPortsのPortfileにしました↓
http://lapangan.net/darwinports/index.php?PrivatePortfile%2FZsh-devel

vim7 かな漢字変換

「f」で検索してると、かな漢字変換が自動的にONになる現象が。100%じゃないけどかなり再現性あり。どうも特定の状況下でiminsertが0以外に設定されてしまう。

で、ソース見てたら imdisable なんつーoption発見。

ということで:set imdisableで回避。うーん。

iTerm

結局iTerm上でvimを使う方が多い訳ですが、0.9.5.0315での問題点は「●」や「→」が何故か表示幅が半角扱い。でもvim上は全角なので表示がずれる。 あとインライン変換のフォントサイズがウィンドウ内と異なるので変換後にインラインウィンドウのかけらが残る。




アスキーフォント 14ポイント、非アスキーフォント 12ポイントなどフォントサイズが異なると、インライン変換ウィンドウが




こんな風にはみでて、しかもゴミが残ったりする。

ということで、CVSからtrunkひっぱてきて調査。かな漢字変換ウィンドウが黄色いところからあたりを付けて、yellowなところを調べる。font(アスキーフォント)とnafont(非アスキーフォント)のうち、インライン変換ウィンドウのフォントにfontを指定しているのが原因。nafontに差し替える。ついでに意味なくgreenにしてみた。



改善!

んでもって「●」などが半角サイズになるのも調査。double widthあたりで調べるとisDoubleWidthCharacterメソッドを発見。「●」が含まれているあたりのUCS-2(unicode >= 0x2500 && unicode <= 0x267f)が何故かコメントアウトされているので復活。



改善!

Index: NSStringITerm.m
===================================================================
RCS file: /cvsroot/iterm/iTerm/NSStringITerm.m,v
retrieving revision 1.8
diff -u -r1.8 NSStringITerm.m
--- NSStringITerm.m 13 Nov 2006 08:01:04 -0000 1.8
+++ NSStringITerm.m 31 Mar 2007 15:40:31 -0000
@@ -306,7 +306,7 @@
if ((unicode >= 0x1100 && unicode <= 0x115f) || // Hangule choseong
unicode == 0x2329 || // left pointing angle bracket
unicode == 0x232a || // right pointing angle bracket
- //(unicode >= 0x2500 && unicode <= 0x267f) || // Box lines, Miscellaneous symbols, etc
+ (unicode >= 0x2500 && unicode <= 0x267f) || // Box lines, Miscellaneous symbols, etc
(unicode >= 0x2e80 && unicode <= 0x2fff) || //
(unicode >= 0x3000 && unicode <= 0x303E) ||
(unicode >= 0x3041 && unicode <= 0x33ff) || // HIRAGANA, KATAKANA, BOPOMOFO, Hangul, etc
Index: PTYTextView.m
===================================================================
RCS file: /cvsroot/iterm/iTerm/PTYTextView.m,v
retrieving revision 1.304
diff -u -r1.304 PTYTextView.m
--- PTYTextView.m 14 Mar 2007 19:08:13 -0000 1.304
+++ PTYTextView.m 31 Mar 2007 15:40:32 -0000
@@ -88,9 +88,9 @@

[self setMarkedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor yellowColor], NSBackgroundColorAttributeName,
[NSColor blackColor], NSForegroundColorAttributeName,
- font, NSFontAttributeName,
+ nafont, NSFontAttributeName,
[NSNumber numberWithInt:2],NSUnderlineStyleAttributeName,
NULL]];
CURSOR=YES;
@@ -492,9 +492,9 @@
nafont=naFont;
[self setMarkedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor yellowColor], NSBackgroundColorAttributeName,
[NSColor blackColor], NSForegroundColorAttributeName,
- font, NSFontAttributeName,
+ nafont, NSFontAttributeName,
[NSNumber numberWithInt:2],NSUnderlineStyleAttributeName,
NULL]];
[self resetCharCache];



パッチ送らないと。後者はなんでコメントアウトされてたのかな...

2007-03-31

OS X アプリケーション

アプリケーションにshared library(dylibファイル)を突っ込みたいときの方法。Contents/MacOSにdylibファイルを入れるとして、

  1. Contents/Info.plist

    <key>LSEnvironment</key>
    <dict>
    <key>DYLD_LIBRARY_PATH</key>
    <string>/Applications/Hoge.app/Contents/MacOS</string>
    </dict>
    を追加。インストール先が固定の場合に使用可能。dylibの場所をフルパスで指定しているため。Info.plist内の表記方法でインストール先を知ることができるかどうか不明。

  2. Contents/MacOSに

    #!/bin/sh
    APPPATH="${0%/*}"
    export DYLD_LIBRARY_PATH="$APPPATH/lib"
    exec "$APPPATH/Hoge" "$@"
    のようなシェルスクリプト(たとえばPrelude)を置き、Contents/Info.plistCFBundleExecutableにシェルスクリプトファイル名を書く。

    <key>CFBundleExecutable</key>
    <string>Prelude</string>

    これによりアプリケーションをどこに置いても、指定したシェルスクリプトから置いた場所を取得できるので、アプリケーションが起動する前に環境変数DYLD_LIBRARY_PATHを設定したり、いろんなことができる。


ということで後者がオススメ。

注意!

アプリケーション内のInfo.plistは何かがキャッシュしているらしく、Info.plistを書き換えてアプリケーション起動しても反映されない場合あり。その場合はアプリケーションを一旦別のフォルダに移動させてすぐ戻せば良し。Info.plistを書き換えるたびにフォルダ移動させると吉。これでかなり悩んだ orz

vimrc

結局iTerm上でvimを使う方が多い訳ですが、0.9.5.0315での問題点は「●」や「→」が何故か表示幅が半角扱い。でもvim上は全角なので表示がずれる。 あとインライン変換のフォントサイズがウィンドウ内と異なるので変換後にインラインウィンドウのかけらが残る。

.vimrc ぱくりまくり。
set nocompatible

set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,euc-jp,cp932
set ambiwidth=double

set ignorecase
set smartcase
set wrapscan
set incsearch
set hlsearch

set autoindent
set cindent
set tabstop=4
set shiftwidth=4
set noexpandtab

set nonumber
set noruler
set nolist
set showmatch
set wrap
set title
set showcmd
set cmdheight=2
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}
set wildmenu

set backspace=2
set scrolloff=5
set formatoptions+=mM
let format_join_spaces = 4
let format_allow_over_tw = 1
set nobackup
set history=1000
"set mouse=a

if has('autochdir')
set autochdir
endif
if has('migemo')
set migemo
endif
if has('kaoriya')
set iminsert=0
set imsearch=0
endif

filetype plugin indent on
syntax on

hi Search ctermbg=DarkBlue ctermfg=White
hi Pmenu ctermbg=Magenta
hi PmenuSel ctermbg=DarkGrey
hi PmenuSbar ctermbg=Grey
hi PmenuThumb cterm=reverse

autocmd FileType ruby set tabstop=2 tw=0 sw=2 expandtab
autocmd FileType eruby set tabstop=2 tw=0 sw=2 expandtab
autocmd BufNewFile,BufRead app/*/*.rhtml set ft=mason fenc=utf-8
autocmd BufNewFile,BufRead app/**/*.rb set ft=ruby fenc=utf-8
autocmd BufNewFile,BufRead app/**/*.yml set ft=ruby fenc=utf-8
autocmd FileType c hi Comment ctermfg=darkcyan
autocmd FileType cpp hi Comment ctermfg=darkcyan

" rails.vim
"let g:rails_level=4
"let g:rails_default_file="app/controllers/application.rb"
"let g:rails_default_database="sqlite3"

" rubycomplete.vim
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

" search
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz

" edit binary file
augroup BinaryXXD
autocmd!
autocmd BufReadPre *.bin let &binary =1
autocmd BufReadPost * if &binary | silent %!xxd -g 1
autocmd BufReadPost * set ft=xxd | endif
autocmd BufWritePre * if &binary | %!xxd -r | endif
autocmd BufWritePost * if &binary | silent %!xxd -g 1
autocmd BufWritePost * set nomod | endif
augroup END


.gvimrc
colorscheme evening

set columns=80
set lines=40

set gfn=Osaka-Mono:h14
set gfw=Osaka-Mono:h14
set macatsui
set noantialias

highlight CursorIM guibg=Purple guifg=NONE
highlight Search guibg=DarkBlue guifg=NONE

map <D-w> :q<CR>gT
map <D-t> :tabnew<CR>
map <D-n> :new<CR>
map <D-S-t> :browse tabe<CR>
map <D-S-n> :browse split<CR>
map <D-]> :tabn<CR>
map <D-[> :tabp<CR>
map <D-M-Right> :tabn<CR>
map <D-M-Left> :tabp<CR>
imap <D-M-Right> <C-o>:tabn<CR>
imap <D-M-Left> <C-o>:tabp<CR>


プラグインも棚卸ししよう。

Vim7

OS XでのVim7情報をまとめてMacPortsのPortfileにしてみました。
 →http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

OS X 10.4 for Intel専用になってしまいましたが、バイナリは
 →http://osx.nobody.jp/

3MBまでしか置けないのでsplitしてます。


でもって、ATSUIパッチ(http://wiki.macvim.org/wiki/VimPatches/ATSUI)の効果を。ATSUIパッチはinline変換非対応なのでmioさんのinlineパッチとマージして、かつ、何故かmacatsui時のアンチエイリアスオフがなかったので改造。

nomacatsuimacatsui
noantialias
antialias


:set macatsui noantialiasが好き。白地に黒ならantialiasかも。

nomacatsuiの時は:set termencoding=japanしないと文字化けます。

インライン変換
:set guifont=Osaka-Mono:h14とかしないと文字化けます。

2007-02-11

iTerm 0.9.5

そーいやTerminalどうにかしないと、とiTermをインストール。かなり前に試したときにはTerminalに比べて結構遅かったので常用しようとは思わなかったんですが、0.9からかなり速くなったようで。見た目も含めてTerminalに負けず劣らず。でもiTermっぽいツールバーやらタブは使わない(screen派)ので非表示に。Terminalと見分け付かず。


設定
Encoding: Unicode(UTF-8)
Font: Osaka-Mono 14
Non-Ascii Font: Osaka-Mono 12
文字幅を1段階狭く
黒背景 白文字 10%透過


Ascii/Non-Asciiともに等幅14dotだと間延びしちゃってちょっと見難いので、文字幅を狭くすると漢字が欠けて読み難くなるため、Non-Asciiを12dotにしてます。

2007-02-05

Free Rails Hosting

無料でRailsアプリを置けるホスティングサービスを探してみた。


XMGFree
英語サイト限定。日本語併記はだめかも。
soyhost
開発お試し用か。うまくいったら他に移動させること前提かな。
AmbitiousLemon
用途にもよるけど良さそう。英語版も用意した方が良し。


1年無料とかもありますね。

2007-02-04

today plugin

cegcc MLにtoday plugin patchキタ。

today画面にhello worldが出たのを確認。これでなんか作れます。

2007-01-06

cegcc on OS X with Intel

PowerBookG4からmacbookへ移行。

現在のcegccのtrunkは、srcのbuild-cegcc.shとbuild-mingw32ce.shで

-export BASE_DIRECTORY=`readlink -f .`
+export BASE_DIRECTORY=`pwd`

して、sh build-cegcc.sh; sh build-mingw32ce.sh
あいかわらずmingw側のgdbはcompileできませんが、
buildしたダイアログ開くだけのバイナリがW-ZERO3[es]で動作するとこまで確認。