/ 最近 .rdf 追記 設定 本棚

log[2009-03]



20090301() 『相棒をチラ見して思ったこと「いい大人が探偵ごっこは恥ずかしいな警察なんでしょ?逮捕するでもなく(証拠が足りないのかと邪推)被疑者の前で饒舌に推理を開陳する様は見ていて滑稽だったスタドプレーで被疑者なり参考人なりを死なせてしまったらどうするつもり?


20090305() [TM-150] SetPoint4.72試さないよリリーストぐらい出してね2chでこんな言葉を見つけたので引用するSetPointのアップデトは7割の苦しみと3割の現状維持で構成されていますったくったくもって正しい


20090306()

[Ruby][tDiary] > tDiary: ニコ動プラグインが動いてな? - ただのにっき(2009-03-05)

試してみたSecurityErrorが出たリンク先の ruby-1.9.1とは違いこちらは ruby-1.8.7-p72でのエラー内容

>irb
irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> $SAFE=1
=> 1
irb(main):003:0> open 'http://vvvvvv.sn25p.dip.jp/301.rb'
SecurityError: Insecure operation - []
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:577:in `[]'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:577:in `find_proxy'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:147:in `open_loop'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:164:in `call'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:162:in `catch'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:518:in `open'
        from C:/Program Files (x86)/ruby/lib/ruby/1.8/open-uri.rb:30:in `open'
        from (irb):3
irb(main):004:0>

301.rbはこう

#!ruby
require 'cgi'
cgi = CGI.new;
print cgi.header({
	'Status' => '301 Moved Permanently',
	'Location' => 'http://vvvvvv.sn25p.dip.jp/index.html'
});

トネームを指定しない場合は大丈夫だった例えばこんな

#!ruby
require 'cgi'
cgi = CGI.new;
print cgi.header({
	'Status' => '301 Moved Permanently',
	'Location' => '/index.html'
});

どこまで by designなんだろう


20090309()

> asahi.com(朝日新聞社瞬時に折りたためる幾何学立体 たった3つの部品 - 社会

「折りたためる「立体これは……と読んでみれば果たし「建築家阿(あたけ克人さ(56が開発したとあった

なんでそんな連想が働いたかといえば数日前に読んだこの本

アンチ・ハウス アンチ・ハウス
森 博嗣/阿竹 克人
中央公論新社
2,940


20090310() 落とした場所はわかってんだよね両手がふさがるからパッと目の前に置いたんだ置いたときにやばい忘れる落とすと思ったでも一瞬で気にしないことにした気付いたときにはあるはずのポケトになかった

[W53S] 携帯電話を落とした

なんだろうこの無気力感ああ

とりあえず失ったものを数えて漠然とした不安を解消しよう

  1. 以前と同じ電話番号
  2. 以前と同じメール
  3. 一年と半年ほど前に 13000円した端末
  4. Edyに入っていた 3000円前後のお金
  5. ス帳(次も auにするなら一つ前の携帯電話 A1301Sからある程度は移せると思)

意外と少ないかなでも番号とメドは本当に辛いMy割の期間が半年ほど残ってるから解約にお金がかかりそうフルサポトプランが始まる前に滑り込んだから機種変更に制限はないんだけど前の機種がないんだからなあ


20090311() [SQLite] 3.3.14から 3.6.11にアップデトしたらNATURAL LEFT JOINの動作が変わっていて納得のいかない結果になる


20090312()

[W53S]au電話機 拾得のご連絡

落としたのが 10日の 20時頃で翌日の昼には au「重要なお知らせを送ったのでご覧くださいという内容のメッセージが留守番電話に入っていたこのタイミング「重要なってアレしかないだろ?そうなんだろう?とワクワクテカテカしながら待っていたら速達で(といってもアマゾンから来るペリカン便と同じ早さで)トルのような文書が届いた

どなたかが拾って翌朝には警察に届けてくれていたんだろう10日の 20時から 24時にかけて少なくとも 10回は呼び出しがあったはずだからさぞ迷惑だったと思う感謝


20090313()

最終更: 2014-12-24T10:54+0900

[SHJS] SHJSに行番号表示機能を

個人的にはなくても不便はないけども番号を表示する方法のアテができたので

 番号を表示する方法

求める条件は

  • 選択&コピーで(改行コドまでは無理にしても)元のソースコドが手に入ること余分に行番号までコピーされるなんてもってのほ
  • 開始行番号が指定できることできれば非推奨な <ol start="555">以外の方法で(Chili 2.2はこの方法だ)

SyntaxHighlighterのように "view source", "copy to clipboard"機能を用意して行番号が一緒にコピーされる欠点をカバーするのは次善の策

WP-Syntaxっているように12列のテーブルを作って左の列に行番号を右の列にハイラトされたソースコドを配置するのはサポトするブラウザも多そうで良さげ。

でも行番号あり・なしで二通りの出力フーマトを用意するのはスクリトのサイズの面から避けたい何と言っても、忘れていたけどshjs-0.4.2をいじくったものであるこの日記の /shjs/sh_main.js はハイラトするついでに、各行に <span class="odd"><span class="even">というタグをかぶせていたのだった(しかも 3行の追加だけで)その方面でいくことにする

つまりCSS2counter-reset, counter-increment, counter に全面的に頼った方法contentで追加した文字列がコピペ不能なのがかえって幸いしたFx 3.0.7Safari 3.2.2Opera 9.64IE8で期待通りの表示を確認した(※末尾に追記あ)

 スタイルシトに追加したルール

pre.sh_sourceCode.sh_numbered .odd:before,
pre.sh_sourceCode.sh_numbered .even:before {
  counter-increment: sh_sourceCode;
  content: counter(sh_sourceCode, decimal-leading-zero) ": ";
}

 sh_main.js (version 0.4.2)に加えた変更

--- sh_main.js-0.4.2	Mon May 12 23:07:40 2008
+++ sh_main.js	Fri Mar 13 23:29:34 2009
@@ -60,6 +60,8 @@
     currentStyle = style;
   };
 
+  var oddLine = false;
+
   var endOfLinePattern = /\r\n|\r|\n/g;
   endOfLinePattern.lastIndex = 0;
   var inputStringLength = inputString.length;
@@ -78,6 +80,7 @@
     }
 
     var line = inputString.substring(start, end);
+    builder.startElement((oddLine = !oddLine) ? 'odd' : 'even');
 
     var matchCache = null;
     var matchCacheState = -1;
@@ -158,6 +161,7 @@
       builder.endElement();
     }
     currentStyle = undefined;
+    builder.endElement();
     if (endOfLineMatch) {
       builder.text(endOfLineMatch[0]);
     }
@@ -307,8 +311,13 @@
 @param  element  a DOM <pre> element containing the source code to be highlighted
 @param  language  a language definition object
 */
-function sh_highlightElement(htmlDocument, element, language) {
+function sh_highlightElement(htmlDocument, element, language, firstline) {
   sh_addClass(element, "sh_sourceCode");
+  if (firstline !== null && ! isNaN(firstline)) {
+    // cssのセレクタで区別できるように。
+    this.sh_addClass(element, "sh_numbered");
+    element.style.counterReset = "sh_sourceCode " + (parseInt(firstline) - 1);
+  }
   var inputString;
   if (element.childNodes.length === 0) {
     return;
@@ -345,7 +354,8 @@
       if (prefix === "sh_") {
         var language = htmlClass.substring(3);
         if (language in sh_languages) {
-          sh_highlightElement(htmlDocument, element, sh_languages[language]);
+        // firstlineなんて非標準属性をでっちあげないで
+        // スクリプトにパラメータを渡す方法は?
+        // (class属性を乱用するのは気に入らない)
+          sh_highlightElement(htmlDocument, element, sh_languages[language], element.getAttribute("firstline"));
         }
         else {
           throw "Found <pre> element with class='" + htmlClass + "', but no such language exists";

sh_main.js (version 0.5)への変更も似たようなものだけどsh_load()の中にも変更すべき場所がある

sh_main.js (version 0.6)を対応させるのは面倒なので省略0.4.2も実はそうだったんだけどshjsはスタイルのネトを想定していない例えばこれ

// URL inside comment. <http://vvvvvv.sakura.ne.jp>

ハイラトされた結果の HTMLはこうなる

<span class="sh_comment">// URL inside comment. &lt;</span><span class="sh_url"><a class="sh_url" href="http://vvvvvv.sakura.ne.jp">http://vvvvvv.sakura.ne.jp</a></span><span class="sh_comment">&gt;</span>

フラトな構造でcomment, url, comment3つの要素が並んでいるcommenturlを含むような構造にはならない0.6ではハイラト前後のタグ構造をマージする仕組みになっているから0.4.20.5のように ad hocなごまかしができなくてまずはこの前提を取り払わなければいけない……

 () hikidoc.rb (revision 108) への変更

<<< language, number
>>>

<pre class="sh_language" firstline="number">
</pre>

に変換します。

--- hikidoc.rb.108	Thu Aug 28 22:11:00 2008
+++ hikidoc.rb	Fri Mar 13 23:05:05 2009
@@ -335,7 +378,7 @@
     @output.preformatted(@output.text(text))
   end
 
-  BLOCK_PRE_OPEN_RE = /\A<<<\s*(\w+)?/
+  BLOCK_PRE_OPEN_RE = /\A<<<\s*(.*\S)?/
   BLOCK_PRE_CLOSE_RE = /\A>>>/
 
   def compile_block_pre(f)
@@ -665,9 +706,18 @@
     end
 
     def block_preformatted(str, info)
-      syntax = info ? info.downcase : nil
+      syntax, firstline = *(info ? info.split(/\s*,\s*/) : [])
+      syntax = syntax.downcase if syntax
+      firstline = /\A[-+]?\d+\z/.match(firstline).to_a[0] if firstline
       if syntax
         begin
+          attr_firstline = firstline ? %Q( firstline="#{escape_html_param firstline}") : ""
+          @f.print %Q(<pre class="sh_#{escape_html_param syntax}"#{attr_firstline}>), text(str), "</pre>\n"
+          @f.puts inline_plugin(%Q(shjs #{syntax.dump}))
+          return  
+
           convertor = Syntax::Convertors::HTML.for_syntax(syntax)
           @f.puts convertor.convert(str)
           return

 : コピペまでは試してなかった

お試しください

Firefox> 行番号が選択されたり選択されなかったりする。見た目の選択範囲に関わらず行番号はコピーされない。
Safari> 行番号も選択範囲に入るがコピーはされない。
Opera> 行番号がコピーされる。
IE8> 行番号がコピーされる。
ダメダメだあ(この機能は封印しよ)

 追記@2009-03-27: 最後で全部ひっくりかえしちった

っぱり一行二列の表を作る方法でいくことにした

この方法だとpreを一旦取り除いて tableの下に追加する関係からか同じ preにハイラト処理が二回走ってしまう(getElementsByTagName()で得られる NodeListliveであるということ)sh_sourceCodeというクラス名を目印に二度目以降の処理をスキップするよう動作を変更した

Internet Explorer8になっても一筋縄ではいかないようで……左右の列の<pre>の高さがデフトスタイルシトと同じ font-size:80%でないと揃わないIE8互換表示」やIE7ドだと揃うんだけど

二重処理を防ごうと Array.prototype.sliceを使って NodeListArrayに変換しようと思ったらまたしても IEの壁オブジトを指定してくださいと相変わらずわかりにくいエラーメッセージ(prototype.jsが愚直にループをまわしてるのは IEのせいかも)

<table>を使うとその中の <pre>の幅が内容に同期している(最小にして十分なサイズ)他の <pre>と同じようにいつでも本文と同じ幅に揃えたいな

 追記@2009-04-02: 0-paddingオプションと(暇だな)

<pre class="sh_javascript" firstline="00339">
  このような <pre>を出力すると……
</pre>
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
sh_putLinenumber: function(element, param, inputString) {
  var startline = parseInt(param, 10);
  var opt = /^([-+]?)(0*)(\d+)/.exec(param);
  var opt_explicit_sign = (opt[1] === '+') ? '+' : '';
  var opt_zero_padding = (0 !== opt[2].length) ? new Array(opt[2].length + opt[3].length + 1).join('0') : '';
  var re_zero_padding = new RegExp('^0+(?=\\d{' + opt_zero_padding.length + '})');
  var nums = inputString.match(/(?:\r\n?|\n)(?!$)|$/g);
  if (0 !== opt_explicit_sign.length || 0 !== opt_zero_padding.length) {
    for (var i = 0; i !== nums.length; ++i) {
      nums[i] =
        (0 < startline + i ? opt_explicit_sign : startline + i < 0 ? '-' : '') +
        (opt_zero_padding + Math.abs(startline + i)).replace(re_zero_padding, '') +
        nums[i];
    }
  }
  else {
    for (var i = 0; i !== nums.length; ++i) {
      nums[i] = '' + (startline + i) + nums[i];
    }
  }

  var d = element.ownerDocument;
  var e = {table:'table', tbody:'tbody', tr:'tr', tdLeft:'td', pre:'pre', tdRight:'td'};
  for (var p in e) {
    e[p] = d.createElement(e[p]);
  }
  element.parentNode.replaceChild(e['table'], element);
  e['table'].appendChild(e['tbody']).appendChild(e['tr']);
  e['tr'].appendChild(e['tdLeft']).appendChild(e['pre']).appendChild(d.createTextNode(nums.join('')));
  e['tr'].appendChild(e['tdRight']).appendChild(element);
  e['table'].className = 'sh_sourceTable';
  e['pre'].className = 'sh_sourceCode sh_numbers';
  return element;
},

341-344346-354358行がオプションのために追加した部分(SyntaxHighlighter2.0の行ハイラト機能はこういときにつかうのだなイラネと思っていたのを改めま)

固定幅というわけではなくて0の数以上に繰り上がれば桁が増える上の場合では 99999行目を超えたときトする段で気付いたが最低でも 92行のソースコドを貼らないと恩恵に与れない……

正規表現を持ち出すまでもなく適切な数の 0をくっつけるだけでよかったんだね(> JavaScriptのビトインオブジトの拡張:ゼロパング - 気まぐれショウルーム)先に調べよう過去に適切な数の 0を知るために log(10)をとればいいと無邪気に考えていた苦い記憶があるので最初に正規表現を持ち出してしまった(それもどうだ?)という事情があったりもするんだけど(Number.toString(10).lengthで済んでしまうなんて)

 345行目の /(?:\r\n?|\n)(?!$)|$/g というパターンについて

<pre>直後の改行は存在しないかのように扱われるが</pre>直前の改行は存在する(スクリトで取得できる)ものの表示されない(4つのブラウザで確認)というわけで末尾の空行に行番号を付けてしまうと列の左右で行の数が一致しなくなる(だから除外する)


Google Chrome(1.0.154.53)

<pre>.innerHTML = <pre>.innerHTML

とやるたびに先頭の改行文字を取り除いていってしまうんじゃないか? 個別のブラウザ対応は切りがないし完全対応は不可能なので行番号を付けるときは <pre>の最初と最後の行を空行にしないのが最も安全

トンデモ IEさんは <pre>.innerHTML= だろうと <tag style="white-space:pre">.innerHTML= だろうと空白トリミングしてくれますしね

 追記@2009-04-04: 一行二列の TABLE方式にしたら shjs-0.6での対応も簡単だったので

トが不十分なのでlangァイルの自動読み込み部分など一度も実行されていない部分が動くかは不明

最小化方法は JSMinためしに YUI Compressorにもかけてみたがローカル変数の短縮を全くやってくれなくて JSMinと大差ない結果だった一番外側の無名関数の実行部分をとりのぞいたらちゃんとローカル変数名の短縮もやってくれた

小手先の変更もいくつか加えた(ブラウザ判別コドの実行を一度だけにしたり << 関数の中で分岐するんでなく判別結果で関数を取り換え)


20090315() [TM-150] トラックボールだからホイールの代わりに SetPoint(Ver.4.00)の機能の Universal Scrollを使っているFirefoxをスクロールさせる > ポインタの下に Flashがくる > スクロール止まる どうよ?この隙のない動作は(望まれてないけ)


20090317() XRegExp(シンプルな正規表現しか使えない JavaScriptにモダンな拡張機能を提供する JavaScriptライブラリ)の作者Regular Expressions Cookbookを書いた(共著)って気になるけどクックブックってどんなんなんだろう「読める本ではないような不安があるんだけど

[][正規表現] [ーパーバ] Jan Goyvaerts, Steven LevithanRegular Expression CookbookOreilly & Associates Inc

Regular Expression Cookbook Regular Expression Cookbook
Jan Goyvaerts/Steven Levithan
Oreilly & Associates Inc
4,073

XRegExp: JavaScript regex librarySyntaxHighlighter(Ver.2.0)で使われていたので知ったXRegExpの作者が本の著者の一人Steven Levithan

XRegExp(Ver.0.6.1)Firefox 2,3Internet Explorer 5.5-8β1Safari 3.1Opera 9.27JavaScriptに付け加えて利用可能にする正規表現の機能は

  •  名前付きキャプチャグループ

    後方参照も可String.replace()での使用も可

  •  s(singleline)フラグ

    .が改行にもマッチ

  •  x(extended)フラグ

    ほとんどの空白を無意味なものにしたり(=パターンを自由にインデトできる)行コメ(#から改行まで)を利用可能にする

  •  インラインコメ

    (?#ここにコメ)

  •  Unicode Properties & Blocks サポ

    こんなの\p{L}, \p{M}, \p{N}, \p{InHiragana}, \p{InKatakana}否定は大文字のP\P{}

    文字集合の中で使えないという制限があるが若干の工夫でなんとかなる

使い所が限定されていそうだったり使い方が難しそうな機能として

  •  XRegExp.matchRecursive(string, left, right, modifiers, options)

    (独り) 名前付きキャプチャグループをサポトしたならそのキャプチャ結果をスタックしてそこにパターンを繰り返し適用する書き方を用意することでmatchRecursive()なんてスペシャルメソドは不要にできるのでは? <何を言ってるのか自分でわかってないよ

    XRegExpのコトラクタlog[2008-01-11-p01] 鬼車すごい正規表現で再帰ができるで書いたようなパターン文字列を渡して再帰を認識するマッチングを行いたいです。

正規表現に関連するいくつかのメソドを上書きしブラウザ間の差異を吸収するとともに仕様通りの動作に統一したりもする

  •  /pattern/g.lastIndex

    IEなどが0の文字にマッチしたときに lastIndexを不当にインクリメトするのを修正

  •  String.split(separator, limit)

    • 分割パターン中のキャプチャグループを戻り値の配列に挿入する
    • ッチに参加しなかったキャプチャグループの位置に undefinedを挿入する
    • 連続するセパレータの間などに存在する空文字列を省略せずに戻り値の配列に含める

    (独り) limitを指定したときに戻ってくる配列の要素数が limitと一致しないXRegExpのバグ? もちろん separatorにキャプチャグループは使っていない


 再帰パターン

例えば再帰の深さの上限を 1020と決めてしまってXRegExpのコトラクタでごにょごにょパターン文字列を展開してみればどうだろうJavaScriptで正規表現を一から実装しようというプロジトではないから自ずと制限が定まってしまうのだけど上限付きでもそれが 20もあれば十分という気がする


 追記@2009-06-25: XRegExp 1.0がリリースされている(2009-06-24)

驚いた大部分がライブラリの機能紹介という退屈な(<作者本人が一番よく知っているから)文章に紛れ込んだバグ報告(とも呼べそうにないもの)を不自由な Google翻訳から見つけ出すとは

1.0のソースも眺めてみたいけれど巨大な変更履歴にちっと後込そのうちね

本日のツッコミ(1) ッコミを入れる

Steven LevithanHi. I translated this page using Google Translate. The la..


20090323() Internet Explorer 8Firefox3でも IE8betaでも全くダウンロドが始まらないから Safariでダウンロド中使って欲しくないんだな


20090325() MDT243WG非難囂々のフレームは通称 wktk(枠テカ)PS3に合わせたんだってつや消しのサテンブラックでもwktkクリアピアノブラックでもどっちでも安い方でいい

[][MDT243WG][SN25P] ["三菱電機 MDT243WG 三菱マルチメアワド液晶スプレイ MDT243WG"]

今使っている今の PCと同時に買ったスプレイは BenQ FP937S+当時 33000円也>20050830p01

 新旧モニタ スペック比較

() BenQ FP937S+() MITSUBISHI MDT243WG
サイズ19インチ(376mmx301mm)24インチ(518mm×324mm)大きくなった
解像度1280×10241920×1200縦にも横にも広くなった縦が 1080以上だと黒帯がでて嫌いって人がいるけど俺はむしろ黒帯がないと知らないところで上下か左右がカトされていそうで気になる
:5:416:10ドになったもうスクウェアにはこだわらない縦置き二画面よりド大画面に二つのドウを並べる方が手軽(Windows 7では特に)タスクバー領域のために 16:9より 16:10を選ぶ
画素ピッチ0.294mm0.270mm画素の密度が上がった文字が小さくなるのは dpiで調節する(追記:調節する必要を感じないのでそのまま)Petzoldさんの本にGetSystemMetrics()から得られる解像度や dpiに関係する値を基にした計算方法が載っていたが理解をあきらめた経緯があるアプリケーション作者には理解してもらいたい
パネルTN (Samsung, AUO)A-MVA (AUO)TNから VA旧モニタが初めての液晶モニタだったためかスクロール中の文字が読めないことに戸惑ったがTNパネルに起因する不満はなかった注視してる範囲なんて狭いから視野角の狭さも気にならなかったMDT243WGでも左右端に輝度の落ち込みがある気にしなーい
輝度300cd/500cd/500は明るすぎ今のモニタでもブラトネス 0で使っている最初は最高輝度 250cd/㎡の BenQ G2400WDを買う予定だった(輝度半分消費電力も半分価格は 3分の 1)ブラトネス 0MP Modeをレベル 3にしてもまだ明るい暗闇で使うモニタではない白背景だと本が読める黒背景でも辛うじてだが文字が判別できる
トラト比700:11000:1(2000:1 CRO)VAパネルの黒に期待
視野角(上下/)135°/150°178°/178°(トラト比10)TNは見下ろす角度以外では使い物にならないのでごろ寝も縦置きもできないカタログスペックで VAパネルは IPSと並んでるけど色の変化なども含めると実用的には IPSより確実に劣るらしい
応答速度8ms6ms (gray to gray), 16ms旧モニタは黒背景に白文字が覿面に弱かった最短時間が 6msだとか 8msだとかより最悪の場合にどこまで落ち込むかの方に注目したい
入力DVI-D, ミニD-SUB 15ピンDVI-D(HDCP), ミニD-SUB 15, HDMI×2, D5, S, コンポジPS2映ればもうけもんみたいな NOVAC EntaVision HDで接続するのをやめたかったPS2を捨てられれば MITSUBISHI RDT261WHを買っていた
消費電力40W()110W()画面サイズの差を差し引いてもTNパネルは消費電力と価格の低さが魅力
VESAマウ100mm×100mm200mm×100mm200×100は一般的じゃない
その他グランツーリスモをやっていると目の裏が痛くなるリモコン付き前後傾以外に首振り高さ調節可能前モデルと同様ト時に OSDが出続けるドを切り替えたときに右上にでる情報表示(半透明)がうまくタトルバーとスクロールバーを避けてるリモコンのミトボタンがなぜか高速リピト動作

海外レビ> NEC MultiSync 24WMGX3 Review