Mr.Border [要素を区切る要素の存在]

スクリプト言語を使うプログラマーの私的日常。
多くの事に慣れられない不器用な人間が書く駄文集。

mde compiler

2007-07-29 16:47:43 | Weblog
コンパイル機能が完成した。
ソフトウェアのsourceの情報を打ち込んで、それをコンパイルさせてhtaの子供を作り、更にその子供が同じsourceをコンパイルして孫を作り、孫を起動して同じsourceをコンパイルしてひ孫を作り、そのひ孫はちゃんと起動できた。

もしcompile機能の一部にバグがあれば、こんなに継承は続かない筈。
と言うか、継承が続かないようなバグがあったため、今日一日のほとんどをcompilerのデバッグに費やした訳なんだけども。

ガンガったぜぃ……。








……中断条件の判定関数のテストするのを忘れてた…orz
……ま、いいか(いい訳無い

replace $記号の悲劇 回避の呪文

2007-07-29 15:46:26 | JavaScript
文字列中に絶対存在しない文字列を作る方法を思い出した。
今度また必要になった時に、検索できるようにカテゴリとかタイトルとかちょっと意識してみた。
まぁ、もう忘れないのが一番なんだが。

function rep(text , t1 , t2 , opt){
  if(!text){ return text; }
  var r = new RegExp();
        t1=t1.replace( /t/g   , 'at'  )
      r.compile(t1,opt);
  return text.replace( /t/g   , 'at'  )
             .replace( /$/g   , '$t'  )
             .replace( r      ,  t2   )
             .replace( /$t/g  , '$'   )
             .replace( /at/g  , 't'   );
}




要約すると以下4行。まぁ説明せんでも解りそうなもんだけど。
t → at
$ → $t
任意の文字列の変化(本来の目的)
$t→ $
at→ t

自作ライブラリに組み込んでいるrep関数は、実際にはもう少し特殊な動作をするけど今回は要点のみの状態で掲載。

ちなみに、タイトル名の一部に「$記号の悲劇」とあるのは、大切なデータを$記号によって破壊された経験があるからだ。
言ってる事がよく解んない人は$記号を含む文字列を変換したり、任意の文字列を「$記号を含む文字列」に変換してみると解るかも。
$記号の後ろに「_」とか「.」とかって記号をつけておくのをお忘れなく。

何故そんな挙動を見せるのか、見せるように作られているのか理解できないくらい変な文字列が出来上がりマス。
……バグでは無くて、仕様なんだろうけど。
ちょっと複雑過ぎて使いどころが見出せない。

遺産

2007-07-29 15:20:05 | Weblog
死んでないけど。
今どうしても手に入れたい情報がある。

過去の俺が考案した「文字列内に絶対含まれない文字列を作成する方法」だ。
確かこのブログに書いた筈だったんだが……見つからねー!

しかも覚えてねー!


あれは、極めて単純なプログラムでありながら間違い無く目的を達成できると言う、俺の中では比較的良く出来たメソッドだった。
自作ライブラリのrep関数に織り込んだつもりだったんだけど……入ってなかった。
現在開発中のmdeでバグが発生して、原因を追究してそれに気がついた。
原因はそれだった。




今考えても全く解らない。
本当に、たった3行で書けるプログラムだった筈。
ロジックさえ解っていれば10秒とかからずに書き上げられる関数だった筈。



くそー!思い出せねー!!

mde

2007-07-29 06:52:20 | Weblog
カーソル位置が計算できなかった問題は、textareaのstyleでline-heightを指定してやったら解決した。
フォントは"MS ゴシック"だったので等角フォントだろうと思ったんだけど…。
どうやら文字によっては高さが異なる場合があったらしい。

mde

2007-07-29 06:18:06 | Weblog
textareaのカーソル位置が……カーソル位置が……正しく計算できないvista。




xpではバッチリ動作してたのにー!!!!
かなり萎えた。