/ 最近 .rdf 追記 設定 本棚

脳log[2008-03-04~]



2008年03月04日 (火) 現在 9F。火トカゲを倒す必要がないことにしばらく気付かなかったよ。

[tDiary] fix_url() @ hikidoc.rb

ささいなことなのでここに書くわけだけど、HikiDocと tDiaryの許容する urlの違いから、tDiary同梱の hikidoc.rbの fix_url()が継ぎを当てられた結果、難解なことになっている。

    if /:/ =~ uri and %r!\A(https?|ftp|file|mailto):! !~ uri
      uri
    elsif %r|://| !~ uri and /\Amailto:/ !~ uri
      uri.sub(/\A\w+:/, "")
    else
      uri
    end
    uri.sub(/\A(?:https?|ftp|file):(?!\/\/)/, "")

上が 2008-03-04現在のコード。下は上と同じ意味になっていると思うが自信が持てない。それもひとえに前者が難解だから……。

 追記@2008-06-06: 何か勘違いしてるな

下の方のコードはほとんど hikidoc.rb(revision 93, 2008-02-16)のものだ。これを目にしていなかったはずがない。

[tDiary] tDiary UTF-8化

昨日(3日)の朝に、tDiary本体に migrate機能を付けたと読んだので、一日待って、今日アップデートしたのだけど、tarballは 2日のものだったみたい。(待った意味がない)

  1. いつも通りローカルの変更をマージ。
  2. 標準添付でない jdate.rbを UTF-8で保存し直し。
  3. tdiary.confを UTF-8で保存し直し。(しなくても動いているがコメントが悪さをしないとも限らない?)
  4. キャッシュ(yyyymm.rb, yyyymm.parser)を削除。(したけど migrate.rbが消してくれるみたい)
  5. misc/migrate.rbを index.rbフォルダに移動して実行。

どこかから拾ってきたプラグイン以外は、tDiaryを最新のものにして migrate.rbを実行するだけでいいみたい。

カテゴリキャッシュも、プラグインが(confに)保存したデータも、古いキャッシュも migrate.rbが面倒を見てくれる。

最終更新: 2010-03-22T05:44+0900

[][][Ruby][単行本] arton【Rubyを256倍使うための本 邪道編】 アスキー

著者は ActiveScriptRubyの arton氏。

この本が出た当時、Mysterious SyndromeWindows Scripting Host Laboratoryの管理人むたぐち氏が、言語は Rubyであるが、COMや WSHの話題は VBScriptや JScriptと共通だし、他にこんなに突っ込んだ類書もないので、と(言葉と内容は全然違うが)自身の掲示板でおすすめされていたのをずっと覚えている。

タイミングを逸していただけなのだ。

Rubyの名前を初めて目にしたのもこの時だったかもしれない。(「何か」(当時)の名前を目にしたのもこの掲示板が……。美耳いいよね)

あくまで目にしていただけで、初めての CGIプログラムはサンプルの多い Perlで書いたし、すぐに嫌気がさして代わりの言語を探したときに Rubyを"再"発見している。そのときに、WSHに親しんでいたことと ActiveScriptRubyの存在が Ruby採用のきっかけになった、というのは多分にありそう。

思い出深い一冊ということ。この本を通して、気付かないまま Rubyとすれ違っていたのだから。


2008年03月03日 (月) (タップするとクリックになる)タッチパッドは文字入力の敵。右の拇指球が頻繁に当たってフォーカスを移動させてしまう。パッドの位置が若干左寄りなのは認めるが、中心が Hと Jの間にあるようではまだまだ > DELLノート。そもそもトラックボールであれば……(パッドに完全に駆逐されてしまったよね。トラックポイントだけがねばってるが)。大体どれだけのフェザータッチを要求するんだ。ポインタを移動させるときだって毎度毎度……。(実験中)。タップの認識は強さでなく離す早さに依っている様子。そんな発想はなかった。(そのことからも)この認識方法はベストではない。


2008年03月02日 (日) 結城さんの『数学ガール』が日坂水柯(めがねのひと)の作画でマンガ化。どうだろう。"ガール"の部分はいいとして、"数学"の部分も満足させてくれるだろうか。


2008年02月29日 (金) 地図が不完全だからと街へ入らせてくれない一階の衛士。「あんた、鬼や」「殺意を感じたで」

> ささはら雑記 : いいお知らせと残念なお知らせ

暴風ガールズファイトの 3巻は出ない

いったいファミ通編集部は何を考えているのか。

『暴風ガールズファイト』を読んでいないラノベ読者は何を読んでいるのか。

今や読むのが楽しみなラノベとして "文学少女"シリーズと双璧をなすシリーズだったというのに。


2008年02月27日 (水) Amazonから Edy 1000円分。メールで「当選」とか目にしても「結局、金払わされるんじゃ」としか思えない罠

[Vista]定期バックアップが初めて正常に終了した

理由がわからない。前回の失敗から今日までに、該当しそうな* Windows Updateはないし。

その期間にあったことといえば、再起動時にディスクチェックを強く薦められて

One of your disks needs to be checked for consistency. You may cancel the disk check, but it is strongly recommended that you continue.

Windows will now check the disk.

結果、いくつかのエラーが訂正されたこと。

CHKDSK is recovering lost files.

Correcting errors in the master file table's (MFT) BITMAP attribute.

Correcting errors in the Volume Bitmap.

Windows has made corrections to the file system.

これしかないという気はするが、バックアップが失敗していたのは去年の二月に Vistaをインストールした当初からで、chkdskも今までに何度か実行している。最近になってエラーが発生して訂正されたことがバックアップ成功の理由?

* こういう素人判断が原因の見落としにつながるのだ、と思われる前に書いておくと、「Definition Update for Windows Defender」が 2/22と 2/28にインストールされただけ。


2008年02月26日 (火) 名前をローマ字表記にするときに、アルファベットを使う特定の国の慣習に従って姓と名をひっくり返す必要はないと思っていた。大文字を使うことで姓を示す方法を知った。ふと手元の本の奥付を見たら著者のローマ字表記が SEI Meiになっていて、「お、さっそく」「すでに普及しているのか」と思った。出版社は中央公論新社だが著者は森博嗣。……。著者が要望を出した特殊例だった、に 100ガバス。


2008年02月25日 (月) Firebugのプロファイラの時間分解能は Windowsに依存する。普段は 15ms単位だが音楽を再生しながらだと 1ms単位になる。これに関係する話を「NyaRuRuの日記」だったかどこかで読んだ記憶がある。見つけた > http://d.hatena.ne.jp/NyaRuRu/20080123/p1


2008年02月24日 (日)

[W53S] W53Sで、受信したメールの本文をコピーするときは 5ステップ

http://sho.tdiary.net/20080222.html#p01

ここで W31SAと D705iμの例が出ていたので、にっくき(笑)ソニーエリクソンではどうなっているのかを紹介。

  1. メニュー
  2. [7] 本文コピー
  3. (始点を選択)センターキー
  4. (終点を選択)センターキー
  5. 「コピーしました」(タイムアウト付きメッセージ。せっかちな人はセンターキーかクリアキー)

補足など。

  • 送信メールじゃないので切り取りはできません。
  • (始点を選択)、(終点を選択)というのは画面下部のステータスバーに当たる部分に表示されているメッセージ。(ちなみにタイトルバーには「範囲選択」)
  • D705iμで問題にされているタイムアウト付きメッセージは W53Sにも一か所ありました。
  • W31SA < メールの内容をコピーしたい人に対していきなり「範囲指定」を選ばせるのは直観的でないと思う。**4

* 機種でそのように統一されてるだろうから、二回目からはすぐにわかるだろうけど。

 最後にコピーか切り取りかを選ばせることで他の二機種にある「コピーしました」のメッセージが省けている。

 最初のとまどいよりそれ以降の使い勝手の方がずっと大事。

*4 ということは、やっぱり優秀なのか?


2008年02月22日 (金) DSの FF4は敵が強いらしい。キャラに声があるらしい。初めてプレイした FFであり、パラディンになったあたりで中断してしまってもいるので非常に気になる。セガハードに縁がなかったので、PS2で昨日発売になったナイツとか、ゲームが豊作


2008年02月21日 (木) エクスプローラはバカだエクスプローラはバカだエクスプローラはバカだ。desktop.iniは目障りな上に役に立っていない。(C:\Windowsが音楽フォルダって何? 実体のないフォルダ(マイコンピュータ、ごみ箱、デスクトップ、ユーザー)の表示設定も保存して)

[javascript] JavaScriptの、空文字列にまつわる微妙な点 (String.split(), RegExp.lastIndex)

 空文字列を split()

split()の第一パラメータ separatorが空文字列にマッチするかどうかで結果が異なる。

"".split(" ").length;      // 1 (空文字列にマッチしないから)
"".split("").length;       // 0 (空文字列にマッチするので)
"".split(/\s+/).length;    // 1 (空文字列にマッチしないから)
"".split(/^$|\s+/).length; // 0 (空文字列にマッチするので)

function getClasses(element) {
  return element.className.split(/^$|\s+/);
}
 追記@2008-05-28: 空白で始まったり空白で終わるときのことを考えていなかった。

上の functionでは classNameが空っぽの時には空文字列の要素を作らないが、頭や尻尾に空白が付いていると空文字列の要素が残る (IEを除いて)。事前にトリミングする手間をかけるくらいなら一個二個の空文字列を気にせず(だけど連続する空文字列の要素は気にしてる) className.split(/\s+/) とする方が好みだな。

 空文字列にマッチした後の lastIndex

IE7と Firefox2で異なる。Firefox2の方が正しいが無限ループに陥りやすい。

var re = /\b/g; // 単語境界にマッチする、幅0のメタ文字。
var str = "012 456 89A";
re.lastIndex = 0;
for(var i = 0; i !== 5; ++i) {
  alert("("+ re.exec(str).index +","+ re.lastIndex +")");
  // IE7: (0,1) (3,4) (4,5) (7,8) (8,9) ...
  // Fx2: (0,0) (0,0) (0,0) (0,0) (0,0) ...
}

空文字列にマッチしていれば(IE7でスキップされるマッチがでてくる) exec()の前後で lastIndexの値が変わっていなければ(Fx2でのマッチ回数が IE7より増える) indexと lastIndexが同じならば lastIndexを 1インクリメント、としておくとどちらでも間違いが起こらない。

var re = /\b/g;
var str = "012 456 89A";
re.lastIndex = 0;
for(var i = 0; i !== 5; ++i) {
  var index = re.exec(str).index;
  alert("("+ index +","+ re.lastIndex +")");
  // IE7: (0,1) (3,4) (4,5) (7,8) (8,9) ...
  // Fx2: (0,0) (3,3) (4,4) (7,7) (8,8) ...
  if(index === re.lastIndex) {
    ++re.lastIndex;
  }
}

ループで

  if(index === re.lastIndex) {
    ++re.lastIndex;
  }

なんて分岐を増やすより、文字列末尾にマッチする /$/ を例外として*、正規表現から空文字列にマッチする可能性を排除する方が良さそう。

* /$/.exec("str") の後の lastIndexプロパティは IE7、Fx2とも、最後の文字の次を指す。


2008年02月20日 (水) [世界樹の迷宮] 29F到達。全然龍を倒せる気がしないのにレベルは上限の 70。むむむむむ……。明日発売のⅡはまだ不要。


2008年02月17日 (日) サブメニューを表示するときはマウスポインタが親メニューのどちら側にあるかをチェックして移動量が少なくなるように表示して。


2008年02月15日 (金) [かな変換] F6にかえてCtrl+U。[カナ変換] F7にかえてCtrl+I。[部分確定]↓にかえてCtrl+N。[辞書検索/辞書ページ送り] End。[電子辞典切替メニュー] Ctrl+End。

[javascript]Re: Javascriptのstring型とboolean型、oneOfメソッド他 (agenda)

コメント欄がないのでここでひっそりつっこんでおきます。

 それは valueOf()で

Stringと Boolean(と Numberと Date)だけこのように比較方法を === から == にしたりする必要はなくて、

String.prototype.equals = Boolean.prototype.equals = function(arg){
    return this == arg;
};

こう。

Object.prototype.equals = function(that) {
  return this.valueOf() === that.valueOf();
}

これでオブジェクトに関しては同一性をチェックし、プリミティブでは値が等しいかどうかをチェックする。

ところで、配列の場合、

valueOf メソッドの動作は、オブジェクトの種類に応じて異なります

配列の要素は、カンマによって連結される文字列に変換されます。Array.toString メソッドや Array.join メソッドと同じように動作します。

 Microsoft JScript 5.5 リファレンス (chm)

と書かれていて同一性のチェックができなさそうに思えるけど、JScript5.7、Firefox(javascript1.5)ともにチェックできていた。

 追記

Array.prototype.valueOf() は String、Boolean、Number、Dateのそれと違って特別に用意されてはいなかった。

参照: 15.4 Array オブジェクト (Array Objects)

ということは Object.prototype.valueOf()が呼ばれるはずで、これは thisを返す。

var a = [1];
alert(a.valueOf() === a); // true

JScript5.5のいいかげんなリファレンスを書いた人、出てきなさい。(はじめての言語だった JScriptと HSPのヘルプには、変数の概念から始まる丁寧な説明を受けました。大変感謝しています)