2008-06-01から1ヶ月間の記事一覧

便利なコメントのテクニック

地味に便利な ActionScript/JavaScript で使えるコメントテクニック。 実行するブロックを切り替える (参考) テスト用のコードを切り替えるときに便利。 //* doHoge(); /*/ doFoo(); //*/ この状態では doHoge() が有効で、先頭行のスラッシュを一つ取ると、…

あるファイルのリビジョンを元に戻す方法

TortoiseSVN/Subversion で、特定のファイルを過去のリビジョンに戻す方法。 "このリビジョンに戻す" を使う (TortoiseSVN) 対象ファイルのログウィンドウから、戻したいリビジョンを選択し、コンテキストメニューから "このリビジョンに戻す" を選択する (…

タイムラインを Vim のキーバインドで移動する

タイムラインを Vim (Vi) のキーバインドで移動できるように設定した。Ctrl/Cmd-Shift-HJKL で選択状態のフレームが移動する。どのキーを押しているかが伝わらないデモ。 キーそれぞれに別々の JSFL コマンドを割り当てるのが面倒。関数呼び出しができたら楽…

mru.vim を入れた

Vim

mru.vim を入れた。最近開いたファイル (Most Recently Used) リストを表示できる。 :MRU Vim のデフォルト機能であったと思ったが、気のせいか。

コメントブロックを挿入する Vim スクリプトを書いた

ActionScript のコードにコメントブロックを挿入する Vim スクリプトを書いた。カーソル位置に任意の文字ブロックを挿入するスマートな方法がよくわからず、泥臭い書き方になった。 function! ASCommentWriter() let c = col(".") let l = a:firstline - 1 l…

「論理戦」に勝つ技術―ビジネス「護心術」のすすめ

『「論理戦」に勝つ技術―ビジネス「護心術」のすすめ』を読んだ。結論から言うと、その技術とは「問い」のことである。自分の主張を質問形式にすることにより、議論を有利に進めることができる。 「問い」が強力な理由は以下の 2 点。 相手に回答を強要でき…

String.replace の第二引数には置換関数を指定できる

String.replace の第二引数には、置換後の文字列を返す、独自の関数を指定できることを知った。目的にもよるが、グルーピングを使うときは RegExp.exec を繰り返すよりも使いやすい。 ただし、置換関数に渡される引数が可変で、いくらか複雑なので注意が必要…

== の代わりに === を使え

JavaScript: The Good Parts を斜め読みしていたら、面白いことが書いてあった。 比較演算子の == や != を、=== と !== の "evil twins" と呼び、"never use the evil twins" という。それはなんでかというと、型が違うときの評価が複雑だから。 以下のコー…

インスタンス名を入力するプロンプトを出すコマンド

選択されたインスタンスに名前をつけるためのプロンプトを出す JSFL を書いた。と言うのも、マウスでインスタンスを選択してから、プロパティタブのインスタンス名のテキスト入力にフォーカスするキーボードショートカットがわからなかったため。 ソースコー…

二重否定で Boolean にキャストする

二重否定 (double negation) で簡単に Boolean にキャストできる。 var hoge; !!hoge => false !!0 => false !!null => false !!undefined => false !!"" => false

Fiddler の AutoResponder のルールに正規表現が使える

Fiddler の AutoResponder のルールには、正規表現を使うことができる。バージョン 2.1.4.2 からサポートしていたらしい。早速アップデートした。 例えば、以下は画像にマッチするルール。regex: で開始するだけ。 regex:.*\.(jpg|gif|png) Google トップペ…

ライブラリを Unix コマンド風に操作するエクステンション

ライブラリのアイテムを Unix コマンド風に操作するエクステンションを作った。 デモとソースコード。 実装した機能は ls mv cp rm clear ファイル名のタブ補完 だけ。ディレクトリ構造を保持していないので cd は使えない。パーサらしきものは、スペースで …

TextField のキャレットを移動する

TextField のキャレットを移動するには、 tf.setSelection(tf.text.length, tf.text.length); setSelection の引数を同じ値にする。 LiveDocs によると、 2 つのパラメータ値が同じ場合は、caretIndex プロパティを設定した場合と同様に、このメソッドは挿入…

eregex.vim を入れた

Vim

eregex.vim を入れた。Vim の正規表現は鬼のようにエスケープが入るため、書いているうちに意味不明になりがちだが eregex.vim で問題解決しそう。 Vim だとこう書くのが、 :%s@\("hoge\/foo\/images\/\)\([^"/]\+\(gif\|jpg\)"\)@\1static/\2@g eregex.vim …

記録モードを使ってみた

Vim

記録モードを使って、テスト用の XML データを作ってみた。 <items> <item id="0"> <hoge>hoge0</hoge> <foo>foo0</foo> <bar>bar0</bar> </item> </items> このような XML の、item ノードを、数字をインクリメントしつつ増やすのが要件。 まず item ノードの先頭 (line 4) にカーソルを置き、 qavjjjjjy6jP^Aj0^Aj0^Aj0^Akkk0q10@a…

Array.sort と Array.sortOn は不安定なソート

ActionScript 3.0 の Array.sort と Array.sortOn は不安定なソートなので、オブジェクトのキーでソートする際には注意が必要。 price というメンバを持つオブジェクトを 100 個作って、price をキーにソートする例。まずは Array.sort。 var array:Array = …

流れるようなインタフェースを持つ Command

流れるようなインタフェースを持つ Command クラスを書いてみた。実装のポイントは以下の 2 点。 Command 自体にキューイングの機能を持たせた。 Composite パターンを適用した。 実行するとこんな感じになる。 普通に数珠つなぎで、 var hoge:Hoge = new Ho…

:earlier と :later の使いどころが不明

Vim

Vim 7 から実装された :earlier や :later は、凄い機能だと思うが実務で使ったことがない。しかし、「数分前に書いたあのメソッドをやっぱり使いたい」というシチュエーションはたまにある。そんなときは思い出して使ってみよう。「数分前」を特定できれば…

ブラ・ウザー 4.0 を公開

10 年ほど前に Delphi で作った「ブラ・ウザー 4.0」をオープンソースで公開する。 バイナリとソース。 関数を使っていないし、変数名が a や b でいろんな意味でひどいプログラムだが、今こうして ActionScript などを書いているプログラマとしての自分の原…