/ 最近 .rdf 追記 設定 本棚

log[2009-04-21]



20090421() 壁紙を 790FX-GD70の全体図にした基板萌え

最終更: 2009-12-30T04:34+0900

[COSMOS] はじめてのいわゆ「自作パソコン

ースCoolerMaster COSMOS 100027000ーツ決定はこのケースからというかこのケースの(値段の高さの)せいで BTOから自作へ方針転換気密性と静音指向それとらしくない見た目が決め手
ースオプションCoolerMaster SIDE WINDOW BLACK (for COSMOS S)6500吸音材はなくなるけど中が見えると楽しい(自分で組んだからなおさ)
PSUOwltech Seasonic M12 600W (SS-600HW)16500効率はより新しい M12Dシリーズのほうが優れるが一番低い容量で 750Wそんなには不要
M/BMSI 790FX-GD70 (MS-7577)20000ックで良いこれを見た後ではピンクとか黄色とか青とか考えられないASUSだけは黒がいい感じだけどオンボドサウドの評価がやけに低い
CPUAMD PhenomX3 720 Black Edition (Socket AM3)15000 Windowsスコア 5.8(Windows 7では 6.7)コア数よりクロック周波数あと TDP(Core i7と比べたときの)低さ
CPUーラCoolerMaster V810000見た目と存在感のみで選んだースと同じ CoolerMaster製品なので目に入った
RAMBUFFALO FIRESTIX DDR3-1066 2×2GiB (FSX1333D3G-K4G)7800Windowsスコア 5.9(7.5)赤いヒトシンクが良いそれだそんなわけだから上位の FireStix Infernoも下位の FireStix Heatも不可だしーバークロックもしませんDDR33枚組みが多くて閉口したDDR3Double-Data-Rate 3の略だってのi7だけじゃないっての
VGASAPPHIRE ATI Radeon X1600 (DDR2 512MiB)SN25Pから移植Windowsスコア 4.5(4.5)(Aero)4.9(4.6)(Game)
HDDいくつかSN25Pから OSごと移植Windowsスコア 5.9(5.9)Windowsのライセスを有効にするために電話が必要だった*
ドライブDVDいろいろ対応(IDE)SN25Pから移植
FDDふつーのSN25Pから移植M/B付属のケーブルは 5インチベイの上から 3段目までしか届かなかったエアフローを遮るので普段ケーブルは繋がない
RAIDHighPoint RocketRaid 2302SN25Pから移植

 CoolerMaster COSMOSについて

COSMOS790FX-GD70の組み合わせは良いースのフロトパネルのコネクタが全て M/Bに接続できてはりぼてにならないCOSMOSがはじめからそなえるケースファン 4つも SYSFAN1/2/3/4に過不足なくつなげられるCOSMOSHDDベイは 6M/BSB750がサポトする SATAトも 6JMicronが追加で 2つの SATAトを提供するので片方をフロトパネルの eSATAに使っている(トプラグはできないかもHDDドライバ次第だと思うが)もう片方は SATA接続の Blu-rayドライブでもつなげばいいだろう

COSMOSの電源LEDは青色で点灯・消灯の 2HDDアクセスLEDも青色なんで青色なんで同じ色もうね青色LEDはいらないよ電源は緑HDDはオレンジでいいじゃない

今使ってるスプレイ―MITSUBISHI VISEO MDT243WGの電源LEDも青色で点灯点滅消灯の 3目に刺さる青色というのがまず間違い明るさを 100段階で調節できて 0にすると常時消灯もできるがそれでは役目を果たしていないし気にならなくなるまで暗くすると今度は視認性が悪い青色でなければそこそこ明るくても気にならなかったはずだサスペドモドを点滅で表したのが二つ目の間違い点滅周期(4)と同じだけの時間見つめていないとサスペドモドと電源OFFを区別できないリモコンの感度が悪いことと相まってPCを休止する->モニタの電源を切る->切れたかな?->っと見つめて暗くて視認性の悪い LEDが点滅していないことを確認するという面倒を毎日負わされる(VISEOの前に使っていた BenQ FP937S+は電源ONが黄緑サスペドがオレンジだった調節機能はなかったが不足もなか)

閑話休題COSMOSについてCOSMOSの天板は他で言われているように振動して音を出す。いまは無事でもそのうち音を出すようになります。何か物を置くか内側におもりを貼り付けでもすればよい>>>プチプチを詰めました

排気ファン 3つに囲まれた CPU領域の冷却は申し分がない5インチベイ 2つをつぶして 12cmァンを取り付けられる(そのためのブラケトは COSMOSに余分に付属してい) HDD領域も位置が吸気口の直上ということもあって比較的問題がない拡張スロト領域のグラックカドの冷却が COSMOS 1000 一番の癌どうにかして空気の流れをつくらなければいけないグラックカドに付いている小さくて高回転のファンが現在の最大の騒音源なのでこの領域の冷却が静音化にもつながる喫緊の課題Zalman VNF100V8DrMOSのヒトシンクと干渉しそうなので気は乗らないが Scythe MUSASHIをとりあえず注文した

今はグラックカドのファンが最大の騒音源で目立っているがこれを止めると静音ケースといえども 3つある排気ファンの音が普通に聞こえてくる電源と HDD上の吸気ファンの音は多分聞こえていない排気ファンの交換がこの後の課題だが空気の流れのあるところに必ず音があるような気がしないでもないとなれば隔離>>>夏以外は回転数を 50-75%にしぼることで相当改善する

 MSI 790FX-GD70について

  • 温度はどこで計ってるの? (温度が高くても対処のしようがな)
  • Northbridge用のドライバがイールされない(何度イーラを起動してドライバが最新でないと表示され)
  • AMD OverDriveが起動できない(付属CDVer.2.1.5最新の Ver.2.1.6共にOSのクリーンイールをしないとダメなのか)
  • SpeedFanで電圧や SYSFAN2/4CPUFANの回転数がとれない(MSIのユでも SYSFAN2/40rpmになっているしIOH/ICHの電圧も 0VBIOSには 5つすべての回転数が表示されてい)
  • BIOSPower On by PS/2 Keyboardを有効にしても機能しないPS/2に常時給電するにはどうすればいい?
  • 自家製ユGreenPowerCenterICHATI SB710だとおっしゃいますが SB750ではなくて?
  • SpeedFan 4.37はこのように報告する

    Win9x:NO  64Bit:YES  GiveIO:NO  SpeedFan:YES
    Scanning ISA BUS at $0290...
    Scanning AtiIgp SMBus at $0B00...
    F75387 found on SMBus at $2E
    F75133S found on SMBus at $36

    GreenPowerCenterⅡによると LPC I/OFintek F71889F(OC Dialの上に蟻っぽいマークのチップがあってたしかに Fitek F71889?と読め)

  • M/B上の赤色の HDDアクセス LEDを消灯したいのですが……
  • スペック表でやたら IEEE1394(rear, internal)Optionalだと主張されているがどういう意味? 使えるよ
  • まさかいまどき Wake On LANに対応してなかったりするの? (そういう表示や設定を一切目にしていないいやLAN Option ROM (Enable/Disable)というのがそうかもPXE Boot)
  • PC-IDEAで買ったんだけどマニュアルの各国語の中に日本語がないと思ったらーロッパ版だった(だからどうということもないUSB2.0 2トを外出しするブラケトが付いてい)

* これが二回目の電話認証なんだけどいずれもシリアルを伝えて新しいの聞いてはい終了向こうにはどういう情報が表示されているのだろう?

 Any KeyCtrl+EscCtrl+F1Ctrl+Spaceから選択電源ボタンも変わらず使えるPasswordを選べるのは AwardBIOSこれは AMI BIOS

 F75133Snot usedだとも


20090412() [COSMOS] 届いた大きいのはわかってたはずなのにわかってなかったゃれにならんM/Bと電源と CPUCPUーラーとメモリを注文したオプションの透明のサドパネルを選んだものだからパーツの選択肢が狭まって困る気違いじみた色使いのマザーボドは使いたくないよ


20090410() フロトに IEEE1394が必要3G iPodのために

[][COSMOS][SN25P] ["CoolerMaster COSMOS ATXFull Tower 電源なし RC-1000-KSN1-GP"]

本当に楽しみだから待ちきれずに届く前に書いてしまう次の PCのためにケースを買った

 現在の SN25Pの不満点

  1. HDD冷却用の小さいファンの片方から常に甲高いチリチリ音(高い音は本当に気に障るァンは大きいものに限)
  2. メモリの最大搭載量が 1GiB×2しかも DDR(何のための 64-bit OS)
  3. GPUHDDの冷却能力不足(GPUをファンスにするのは熱で無理冷却のために 2スロトを占有するボドはスペースで無理選択肢が少な)
  4. CPUソケトが Socket939(もはや新しい CPUは手に入らない今の CPUAthlon 64 X2 3800+ 2.00GHz)

 次の PCに求めるもの

  1. 没個性的でないデザイン・機能
  2. 静音性
  3. 限られた吸気口(ルタ付)
  4. ーボドで電源ON (SN25Pは任意のキー列(パスワ)で電源を入れられるAward BIOSの機能らし)
  5. 省電力
  6. 省スペース
  7. 潤沢なメモリ (DDR3 2GiB×3 or DDR2 2GiB×4)
  8. (Socket AM3)
  9. (PCI Express 2.0スロ)

 思考経路

いかにも PCという見た目の無骨なタワー型ドルタワー型スリムタイプの PCには全くそそられない最近はメーカーが独自に作り込んだ PC(ソニーの VAIO type?とかHPTouchSmart PCとか)に注目しているでもメーカーのお仕着せは御免なわけでShuttleのキーブ型ベアボーンはメーカーの個性と自由さのバラスがちょうど良かった物欲を一番そそられるのは AppleMac miniHPTouchSmart PCどちらも唯一無二のできばえだと思うただMac miniMacであるがゆえにメインPCになれないしTouchSmart PC"Personal" Computerにするのはもったいないデザインパネルをまとってキーブ型 PCをもういちど……は性能がいまいちだし静音も冷却も限界が知れてるので避けたいコアを増やすのがはやってる今Xeonを二個積んでデュアル CPUがやりたいな……(構成カスタマイズ中)……げ40万円Quadro FX高すぎーミング PCは性能に問題はないし個性的なんだけど全体に厨のにおいが漂っていて好きになれないな……200mm大径ファン!前面エアルタ!天面にコネクタ・電源スイッチを配置! Antec Nine Hundred Two!素晴らしい! 青色LED9つもある(とはいえ 3.25インチHDDもここに格納す) 5インチベイがいかにもゲーミングPCいかにも自作PCといった風情でマイナスポイトだけど合理的な天面アクセスは評価が高い使える上にパッと見でも(凡百のケースと)っと違うのが良いここで COSMOS登場200mmァンこそ持たないものの密閉構造と最初から備えた静音対策落ち着いたPCースっぽくないデザインが高評価大きさだけが難点に思えるもExtended ATXに対応Dual Xeonも可能と考えればむしろ利点

 BTO


20090404() Safariってば Windowsにあっても文字のきれいさだけでなく画像の色でも優秀なのね> http://www.color.org/version4html.xalter


20090403() [tDiary] エスパー待ちで想像ついちったww > エスパー登場(ときどきの雑記帖 i戦士篇 20094())

最終更: 2010-01-30T00:03+0900

[SN25P] マイクロソトのキー配置が使いやすい理由(たんなる慣れか)

ーといっても 6つのキーのこと即ち Delete, Insert, Home, End, PageUp, PageDownMSのキー配置といっても MSオリジナルのとか MSーボド全てのという意味ではなく自分の使ってる MSーボドのキー配置という意味

省スペースでない一般のキーボドはこうなってる

InsertHomePageUp
DeleteEndPageDown

MSの今使ってるキーボドはこう

HomeEnd
InsertPageUp
DeletePageDown

縦長の配置になっている

一般のキーボドでは Home, Endボタンが押しづらく(探りづらく)感じるMSの配置では強いていえば Insertが押しづらいけれど Insertーの出番は挿入・置換モドの切り替えとコピ(Shiftー併用)だけでどちらも全く使わないので一向に構わない

  1. 押しづらく感じるキーの共通点は何辺の真ん中にあること
  2. ではMS配置の PageUpーを押しづらく感じないのはなぜPageDownとセトにして辺でとらえてるから
  3. 一般的な配置の Home, Endーを辺でとらえられないのはなぜ隣の探りやすい角のキーと関連がないから

終了


 追記@2009-08-30

一般的な配置の場合InsertHomeEndをローテトして

HomeEndPageUp
DeleteInsertPageDown

こうしたら左上辺(Home, End)右辺(PageUp, PageDown)左下角(Delete)としてよく使うキーを捉えられるんでは(Insertはどうあっても埋もれる運)

Majestouchがもうじき届くのでキーマップとキップを変更してみようHKLMを利用するとマシン単位の変更になるけどーボド本体やドライバを使ってこの変更ができると他のキーボドへの影響がなくて良いのだけど

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

通りすがりのTブラウジングしていたらたまたまこの記事を見つけましたー配置の意見は僕も全く同じです。 次キーボドを買い換え..


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


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


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..


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


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と大差ない結果だった一番外側の無名関数の実行部分をとりのぞいたらちゃんとローカル変数名の短縮もやってくれた

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


20090312()

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

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

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


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


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

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

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

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

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

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