2007年 11月 15日

コミットログ

変更内容だけ書いても (そんなの diff 見ればわかるから) 意味ないんだけど、どうしてもやってしまう。理由を書くのって頭使うんだよなぁ……

2007年 11月 14日

JavaScript-XPath++

すばらしいなぁほんと

CodeRepos::Share のトップページでも js-xpath が活躍しているよ! (r1409-)

$X の問題と解決と type 指定

なんで変更したか忘れそうなのでメモ ( http://coderepos.org/share/browser/websites/coderepos.org/trac/share/js/TracUtils.js#L77 )

ずっとつかってた $X はノードセットとりたいときに二回 expr.evaluate するダサい問題があるので (書いたときは XPath はやいしー GM だしーいっかーって思ってた)。js-xpath もでたことだし、他のところでも使っていきたいのでとりあえず以下の方法で解決した。

  • type 指定を導入
    • ECMAScript 側で受けとりたい型を指定する。 (Array, String...)
    • XPathResult.BOOLEAN_TYPE とか指定するのはめんどいし覚えられない。
  • type 指定なしの場合は UNORDERED_NODE_ITERATOR_TYPE をそのまま Array に変換してかえす
    • たぶんこれでも殆どの場合は問題ないと思う
    • ノード集合じゃない (number とか) ならそれぞれそのままかえす (いままでとおなじ)
  • type 指定で Array を指定した場合は ORDERED_NODE_SNAPSHOT_TYPE を Array に変換してかえす
    • UNORDERED なやつで特別問題がある場合つかう

おれは type 指定するの好きじゃないので (めんどい) 基本的に指定しなくても問題ないように

2007年 11月 12日

マウスジェスチャ式のランチャ

Photoshop の拡大率をスパっと 100% がどうとかいう話をしてて、ジェスチャできたらいい気がしたので簡単にできる範囲でつくったけど肝心の拡大率 100% のぶぶんを jsx から叩けない気配がして (ヒストリに記録されない) orz

IRC で発言した時間から計算するとここまで作るのに1時間……殆どコピペでつくってるのに時間かけすぎだなぁ…… (逆に、いろいろ作っていると思いたったらコピペでつくれるのはおもしろいかも) RubyCocoa じゃなかったらもっと時間かかって、それが作る前にわかってしまうからそもそも作らないんだけどw

左下にジェスチャ用の箱があらわれて、そこから左クリックしながらドラッグでジェスチャ。ほんとはどこからでも開始したいけど、いい方法がおもいつかない。ホットキーで起動して、っていうのはできるけど、それじゃあんまり意味ないし……

http://coderepos.org/share/browser/lang/ruby/misc/cocoagesture.rb (つづきつくるかわかんないけど、バンドル形式になってない RubyCocoa スクリプトなので RubyCocoa ちょっと触ってみたい人にちょうどいいサンプルかもしれない)

http://ichiro.nnip.org/osx/Expogesture/index.html

こういうのあったんだった。これの場合はマウスの位置だけしか見てない。NSEvent.mouseLocation の監視だけしてるっぽい? 誤爆しそうだよなぁ……

あぷぷ毎に設定できるから問題にならないのかも。どうせジェスチャなんてたかだか数個しか覚えられないし、こういうので十分なのかもしれない。つかってみよう

Chemr / DRb コネクションスレッドでの GC 時におちる

外部から DRb で Chemr にアクセスしてそのうえそのスレッドで GC が発生すると落ちるんだけどどうしたらいいかサッパリわからんよ><

巨大なインデックスもってる chm をひらいて Amalgam 側から Chemr インデックスひこうとすると Chemr が落ちる。でかいインデックスもってるのを Amalgam からひかないようにすれば一応大丈夫だけど、たくさん開いてるとタイミング悪く GC がきたりするし……

該当メソッドだけ GC 禁止してもメソッドから抜けた DRb 内で GC 発生すると死ぬし、アドホックな解決はできなそう。

EXC_BAD_ACCESS (0x0001)
KERN_INVALID_ADDRESS (0x0001) at 0xc009aae4

Thread 0 Crashed:
0    _NSAddExceptionHandlerForLock + 261
1    _NSAppKitLock + 59
2    -[NSEvent dealloc] + 122
3    0x27000 + 6206
4    obj_free + 986
5    gc_sweep + 453
6    garbage_collect + 503
7    rb_gc + 11
8    rb_gc_start + 11
9    call_cfunc + 283

開放されちゃだめなのか開放されてるのかなぁ。

2007年 11月 11日

Enumerable#inject

実際、なんかネタメソッドとか思っている人もいくらかいるのかもしれないのだけれど、inject は慣れると使いまくるメソッドの一つである。

あと inject を知っていると関数型言語をやるときに生きてきておもしろい。fold とか

ふときづくと

Safari も Mail.app もつかっていない。

今起動してる app

  • Terminal.app
  • Chemr.app
  • Console.app
  • Ttunderebird.app
  • iTunes.app
  • GranParadiso.app

Dashboard も Expose も殆ど使わない。ぜんぜんマカーじゃないですね。

osx.iusethis.com を使わないとのろわれるといううわさなので登録してみた。(copipe)
http://osx.iusethis.com/user/cho45

autocomplpop.vim

ns9tks さんが既につくっていたのか>< 恥ずかしながら知らなかった。オプションとかが充実しててすばらしすぎる。どう考えても life changing

http://www.vim.org/scripts/script.php?script_id=1879

入れた! しかしちょっと気になったので一箇所だけ修正してみた

--- autocomplpop.vim.orig       2007-11-11 16:26:40.000000000 +0900
+++ autocomplpop.vim    2007-11-11 16:22:20.000000000 +0900
@@ -192,7 +192,7 @@
 
     if pumvisible()
         " a command to restore to original text and select the first match
-        return "\<C-p>\<Down>"
+        return "\<C-p>\<Down>\<C-p>"
     elseif a:nRetry > 0
         " In case of dividing words by symbols while popup menu is visible,
         " popup is not available unless input <C-e> (e.g. 'for(int', 'a==b')

オリジナルだと表示されてすぐ C-n だけだと最初の候補を選択してくれない (二回おして最初の候補が補完される)。なんかでも環境によるのかもしれない。うちだとこうするとうまくいく。( VIM - Vi IMproved 7.1 (2007 May 12, compiled Oct 7 2007 05:51:43) ) なんか他の部分となんかなってるのかもしれない。

あとは lazyredraw だけ別設定してチラつきおさえた (Mac の gvim だと hjkl おしっぱのカーソル移動がみえなくなって不便だけど gvim とか滅多につかわないからそんなに不便じゃない) それと ignorecase を一時的に変更できるみたいなのでデフォの ignorecase を元にもどした。

あと、補完候補表示したまま RET おして改行できないので以下のコードを復活させた

inoremap <expr> <CR> pumvisible() ? "\<C-Y>\<CR>" : "\<CR>"

vim.org

vim.org のレートって &rate=... つきのリンクはれるyouna

あとスクリプトダウンロードのところで http://www.vim.org/scripts/download_script.php?src_id=n になるんだけど、これだと wget するときいちいちファイル名を変更しないといけなくてめんどい……

Rails hype 156cm

Rails は hype っていうのを hyde と誤読して、身長を多くみつもること? 背伸び? 自分を大きくみせようとすること? とか考えてきたら、あんがいまちがってなかった。