Flex Builder 2.0 Beta 1

投稿者 nanki 2006-02-04 16:53:00 GMT

alpha1 からいくつか変わった点をメモ。 (誰の役に立つんだ?・・・)

  • Void → void
  • 未定義のNumberはundefinedからNaNへ。
  • ローカル変数とメソッド名が被るとローカル変数が優先される
  • 標準ライブラリの配置が変わった。(…EventTypeにあった定数が…Eventに移動とか)
  • 内部クラスは、package{}の外に書けばいいらしい。

コンパイル通らなくなるとは・・・さすがalpha.

にしても、もうAdobeなんだよなぁ。

参考:

Adobe Labs:Alpha1 to Beta1 Changes


アスペクト指向エディタ(2)

投稿者 nanki 2006-01-26 05:06:00 GMT

以前のエントリ で作ったスクリプトを公開します。

grepedit.rb

いわゆる自己責任というやつでお願いします。 特に文字コードが混在したりすると危険です。

使い方はこんな感じで。

$ ruby grepedit.rb has_one app/models/* -r

本当は、Typoでのトラックバックの挙動を試してみたかっただけです。

未だによくわかりません。


ThinkPad T43

投稿者 nanki 2006-01-26 03:36:00 GMT

weekday も終わりに近づいた日の朝、衝動買いしてしまった。

営業日で二日くらいしかかかってないんじゃないかな。早い。

それはそうと、ThinkPadのキーボード、Windowsキーはないし、ESCは遠いし、Fnキーが慣れない位置にあるし、慣れるまで結構苦労しそう。

しかし、F1がESCと半角/全角の間にあるのにはさすがに我慢できなくて、窓使いの憂鬱を入れてしまった。

とりあえず、ESCの位置とかを変えてみたり、Alt+H,Alt+Lでブラウザの戻る、進むをやってみたりと、なかなか快適な状態になった。

あと、無変換あたりをESCにしたりね。

早くこのキー配列に慣れたくて、デスクトップPCもThinkPadのキーボードで操作できるようにしようかと思ったんだけど、どこドアの通信経路がセキュアじゃないので躊躇。


アスペクト指向エディタ

投稿者 nanki 2006-01-23 06:33:00 GMT

アスペクト指向という言葉が世に出て久しい。

ある程度大きいシステムはファイルやクラス階層といったような一次元的な分け方では分類することのできない、多次元的な構造を持っている。

最近では、Eclipseなどがでてきて、Javaでは持ち前のきっちりさを生かして、コード中を縦横無尽に多次元的に歩き回るということが可能になっている。

Rubyじゃ言語仕様的にほぼ無理と絶望視されているので、これは非常に羨ましい。

代わりといっては何だけれども、grep のお世話になっている。

しかし、grepの結果は見るだけ。 結果のうちこれとこれは変更したいとなれば、ファイルを一個一個編集するしかない。

これは面倒だ。

というのでgrepのラッパみたいなのをrubyで書いてみた。

$ ./grepedit class app/models/* -r

とかやると、該当するコードの周辺を各ファイルから切り取ってエディタが起動する。 変更して保存すると、各ファイルに変更が適用されるというもの。 上記の場合は、association の設定をまとめて書ける。

まだ使う場面に出会ってないので、どれほど役に立つのかわからないが、悪くはないはず。

マジシャンが投げたカードのAだけを剣で貫くように、コードを編集してやる。フッフォッフォッ。

というか、手当たりしだいにファイルを書き換えるので、誤動作が怖くて使えない & 公開できないぞ?・・・


vim/rubyのための部分最適化

投稿者 nanki 2006-01-21 19:06:00 GMT

この辺 を読んで思い出した。

数年前、Javaコードのメトリクス(というか、文字別タイプ量)を調べた時、もっとも多かったのは;と()だった。

考えてみれば、このセミコロン、ほとんどすべての行末に現れて、しかも、ほぼ100% ;+Enter の形で出現、右小指を二回連続消耗するというあり得ないほど無駄にタイピングの苦痛を増やしている奴なのだ。いくらStrong Typingと言ったって・・・

当時はvimでJavaのコードを書いていたので、早速;を;+Enter に置き換え、なんとか快適な環境を作ることに成功したのだった。

その時の経験からか、あまりタイピングが苦痛にならないruby でも、次のような部分的な最適化をしている。

  • ; で改行
  • 文字列中の;では反応しない
  • end も自動で改行
  • begin,else,then,ensureなどの予約語で改行
  • rails 向けに、Ctrl+=,Ctrl+eでerbのタグ
" ~/.vimrc
au BufNewFile,BufRead *.rhtml setf eruby

autocmd FileType html imap <buffer> <C-_> <%=  %><Esc>2hi
autocmd FileType html imap <buffer> <C-E> <%  %><Esc>2hi
autocmd FileType ruby imap <buffer> <C-L> RAILS_DEFAULT_LOGGER.debug()<Esc>i

function SmartSemicolon()
  let s = synIDattr(synID(line("."),col("."),0),"name")
  if s == "rubyString"
    execute "normal a \<Esc>vr;"
  else
    execute "normal a\<Enter> \<BS>"
  endif
endfunction

function SmartEnd()
  let s = synIDattr(synID(line("."),col("."),0),"name")
  if s == "" || s == "rubyNoDoBlock"
    execute "normal ae\<Esc>and\<Enter> \<BS>"
  else
    execute "normal ae\<Esc>and"
  endif
endfunction

autocmd FileType ruby imap <buffer> begin begin<Enter>
autocmd FileType ruby imap <buffer> end  <Esc>:call SmartEnd()<CR>a
autocmd FileType ruby imap <buffer> then then<Enter>
autocmd FileType ruby imap <buffer> ensure ensure<Enter>
autocmd FileType ruby imap <buffer> else else<Enter>
autocmd FileType ruby inoremap <buffer> ; <Esc>:call SmartSemicolon()<CR>a

コード補完も含めコーディング時の最適化というのは、タイプ量当たりの情報量をいかに増やすかというところにある。

コード中に頻出するパターンを見つけ出して、一つずつつぶしていくのが、部分最適化が好きな人間にはたまらない。

次にやるとしたら「閉じるキー」。 begin-end,(),{},||,”“,” などを区別せず、閉じるキーを押すと一番近くの括弧を閉じてくれる、というやつ。 スペース近くの使わないキーに割り当ててやりたい。

誰か作りませんか?or既にある奴をご存知ないですか?