/ 最近 .rdf 追記 設定 本棚

脳log[2011-07-01~]



2011年07月01日 (金) 蒙古斑。はんの字が「班」になっちゃってないかな。

最終更新: 2011-07-02T05:36+0900

漢字クイズ

難読漢字クイズ-勝ち抜き戦モード(zeal.s56.xrea.com)

30分くらいやってみた。10問、20問正解するのがやっと。べらぼうに難しい。なのにハイスコアランキングは 100問正解するまでのタイムアタック状態。 とどめの一問が「鴎」ってのが恥ずかしい。森鴎外の簡単な方の字じゃないか。……だからオウムにしてもたのかorz


2011年06月27日 (月) Songbird(1.9.3)はスリープからのレジューム再生が弱い。NASの中のファイル(\\でパスが始まる)を再生したまま Windowsをスリープさせると、再開後に再生が中断するのみならず、高速で次の曲次の曲とスキップされる。なんとかならんのか。


2011年06月26日 (日) アニメ(※順不同ではない)。シュタゲは毎回 30分が短い。世界線が切り替わる度のあの喪失感と絶望。変わらないまゆしぃの安心感。ぬるぽに即答できる助手から重度の厨二病のおかりんまで、その他のキャラもみんな愛おしい。あの花は良いアニメ(それでもめんまのかわいさが肝)。ロッテはあの世界とそれにマッチした「真夏のフォトグラフ」が好きだ。A-channelはユー子の関西弁が目当て。

最終更新: 2017-09-20T01:01+0900

[SakuraEditor] >> 脳log[2010-06-10-p01] サクラエディタの正規表現キーワードを SHJS相当にしたい。(その二)

新たなバグもなく、すっかり終わってしまったプロジェクト。やり残しは、従来の、状態を持たない正規表現キーワードを色分けストラテジの一つとして移植すること。コメントや URLの色分けなんかと同じで、従来の正規表現キーワードも SHJS相当の正規表現キーワードと共存できる。そのために、協働するために余計な面倒を抱え込んだんだし。

あと、rkw2フォルダやファイルに隠し属性がついてたら読み込まない、とか。

 @2017-09-19

スペース(0x20)が C_SPACEである一方、HT(0x9)/CR(0xD)/LF(0xA)が C_WHITE(その他の空白)であるせいで、タブが改行と同じ分類なせいで、一行コメントがタブインデントで終了してしまっていた。

 @2017-09-19

HTML.rkw2を自作しようとしてすごく面倒くさいというか、色分け方式の能力不足を感じた。

"move" して "exit" したときに、move元の Stateに戻るだけではなくその中の moveした Patternそのものに戻り、その次のパターンから色分けを再開しなければいけないのではないか。

それはちょっと面倒だったので、"move" と "exit" が同時に指定されていたときは "move"先から exitしてきたときに "exit" が発動するようにした。サブルーチン的に使える。20170919.patch

そんなこんなで HTMLと CSSと JavaScriptの色分けを同時にするどころではなかった。HTML.rkw2。HTMLと CSSと JavaScriptが混在するときでも通用する色指定とは。


2011年06月25日 (土) ゲーム業界は女性ゲーマーのニーズや趣向を(相変わらず)理解していない? - スラッシュドット・ジャパン」ヨッシーのクッキーやドクターマリオ、テトリスを延々プレイしてるイメージ。ネトゲに惜しみなく時間と手間を投入することも?


2011年06月23日 (木) サクラエディタ「Request/375 - SakuraEditorWiki」掲示板で評価の高いあのアイコン。唯一の気がかりは Vistaの、最大化ウィンドウと同じ色をしたタスクバー(の通知領域)で、黒っぽいアイコンが映えるのかどうかという点。桜の意匠と桜色が入っている点と、現代的な高解像度・半透明効果は評価が高い。


2011年06月22日 (水) Firefox 7開発版にスタートアップ高速化機能 | エンタープライズ | マイコミジャーナル」要するにプリロードなんだけど、Adobe Readerのよりは遙かに有用だろう。使用頻度からいって。でも、起動の高速化はいらない。それよりさっさと終了して欲しい。メモリ使用量をリセットするために終了してすぐ再起動したりするんだけど、Firefoxは起動してるが反応してないとかなんとかいって起動しない。タスクマネージャで firefox.exeが消えるのを待って起動するとか、したくないし。


2011年06月20日 (月)

最終更新: 2011-06-21T05:05+0900

ぶつよくよしずまれ


2011年06月18日 (土) 前に Sonyの VGF-WA1が the brilliant greenを(期待に反して) Tをキーにしてソートすると書いた。一方 Songbirdは L'Arc~en~Cielを Aをキーにしてソートしていた(ので見つけられなかった)。いわれればそれも冠詞だ。まったく正しい。


2011年06月17日 (金) github難しすぎ。自分がどこにいて何を見てるのかわからない。この 2つのコミット>Commit 75b812b0132fc61eb6ef28f44e622487b4b0a90f to tdiary/tdiary-core - GitHub, Commit 8eaea0bb18393bfcad1ff3a8a8c6f6926672aba2 to tdiary/tdiary-core - GitHub


2011年06月16日 (木) [Vista] Explorerの FullRowSelectを解除する方法があったとは知らなかった。デスクトップを詳細表示にするみたいに勝手にやらないといけないのかと思ってた。何が困るってマウスでファイルを複数選択するのがすごく面倒。代償のつもりかしらないけどチェックボックスによる選択は無視するとして、XP以前のようにできなくはないけど「名前」列がすべて文字で埋まってるともう無理。そして、ファイル名ってのがタグを貼り付けるのに一番有効な場所だったりするわけで……。>~ lolipuni ~ | 20110616


2011年06月14日 (火) Subversionメモ。リビジョンには二つあって、「あるパスで指されるファイルがリビジョンNのときにそうだったもの」を指すのが普通のリビジョン。「あるリビジョンのときにあるパスにあったファイル」を指すのがパスリビジョン。両方を指定することもできる。パスリビジョンを省略するとパスは HEADに基づいて決定される。リビジョンを省略するとパスリビジョンと同じ数字が使われる。未来に渡って今見てるのと同じものを参照しようと思うとパスリビジョンの方をこそ指定しないといけないと思う(あってる?)。


2011年06月13日 (月) ワットチェッカーは高すぎて手が出なかったけど、知らぬ間にワットモニターなるものが。ワットモニターの、ワットチェッカーと比べていいところ。小さい。ソケットが下出し(見やすい場所に設置したときに場所をとらない)。安い。難しい数値が出ない。数値が小さいときはコンマ一桁まで表示される(これは良し悪し。ぱっと見で 35Wか 3.5Wかわからない)。精度は変わらない(悪くなってない)みたい。いろいろ可視化できるのが楽しみ。特に PCってのは 30Wも 300Wもわからないし、状態による変動も大きいので知りたかった。電気代が(ちらほら聞こえてくる数字と比べて)高すぎるんよね。

最終更新: 2011-06-17T23:19+0900

[COSMOS] 部屋を見まわして電気製品依存関係リスト

コンセントを必要とするもの。

  • 液晶モニタ(MDT243WG) 42W(1.8W)
    • ミニコンポ(CMT-SE3) 23W(0.3W)
      • パソコン(COSMOS) 126W(2.5W)
        • スキャナ(ScanSnap S1500)
        • 外付けHDD(玄蔵X4)
      • ゲーム(PLAYSTATION3)
      • ゲーム(PlayStation2)
        • コントローラー(GT Force Pro)
  • ルーター(WZR-AGL300NH) 4.5W-6.3W
    • NAS(LinkStation Mini 1TB) 6.W-8.W
      • プレーヤー(VGF-WA1) 5.1W(2.3W)
      • プレーヤー(AVLP2/G)
  • 空気清浄機(MC75KJ7-W) 4.5W 6.5W 11.9W 21.8W 60.3W
  • 扇風機 28.5W 39.1W 48.0W リズムは間欠運転。
  • 充電器(携帯電話 W53S)
  • 充電器(ニッスイ単3/単4 4本)
  • 充電器(Walkera CB100 リポバッテリー) ※もう使ってない
  • 充電器(NintendoDS) ※もう使ってない
  • 充電器(iPod) ※もう使ってない
  • 充電器(Rio SU30) ※もう使ってない

パソコンの消費電力に影響するものを抜き出すと

  • パソコン(COSMOS)
    • CPU(PhenomⅡX3 720BE)
    • メモリ(DDR3 2GiB)
    • メモリ(DDR3 2GiB)
    • GPU(Radeon X1600)
    • HDD(HGST 250GB)
    • HDD(Seagate 500GB)
    • HDD(WesternDigital 1TB)
    • DVDドライブ
    • FDD ※ケーブル未接続
    • Raidカード(Highpoint RR2302)
    • 電源(Seasonic M12 600W)
    • 12cmファン(CPUクーラー)
    • 12cmファン(ケースファン)
    • 12cmファン(ケースファン)
    • 12cmファン(ケースファン)
    • 12cmファン(ケースファン)
    • 10cmファン(VGAクーラー)
    • 10cmファン(VGAクーラー)
    • 8cmファン(システムファン)
    • 8cmファン(システムファン)
    • USB接続ゲームパッドアダプタ
    • 無線マウスレシーバー(MX610)

ファンが多いが夏は60℃を超える。夏以外は 60%-800rpmで回してる。天井部の 12cmファン 2基のうち片方は止めて塞いでしまっていいかもしれない。3つの内蔵HDDも SSD 1つ(システム,プロファイル,リポジトリ)と HDD 1つ(テンポラリ,システムバックアップ,物置)にまとめられる。最低 3TBないと 1つにまとまらないのが問題なんだけど。SSDも、ゲームや SDKをインストールしてると 100GB以上欲しくなるので高くって買えない。やつらは絶対価格カルテルを結んでる。


 @2011-06-14 さっそくワットモニターで計ってみた。

簡単な結果は上のリストに書き込んだので補足をば。

 MITSUBISHI MDT243WG

ブライトネスにより 42Wから 98Wの間で変化する。スタンバイは 1.8Wで仕様(2W以下)通り。黒背景で -2W。白背景で +2W。明るさが最重要因子で 50Wの差を生む。コントラストは最大にすると目が痛くなるほどだが 5Wの違いしか生まない。

 SONY CMT-SE3

S/PDIF接続。ボリューム 11/30。音のあるなしほぼ関係なく 23W。スタンバイは 0.3Wで仕様(0.3W以下)通り。

 PC(COSMOS)

アイドルで 117W。S3で 2.5W。S4で 1.2W。USB接続のゲームパッドアダプタに PS2コントローラを接続してるとアイドルに +3W。x264 1280×720 270MiB/24mの動画を MPC(+ffdshow)でフルスクリーン再生すると +16W。PCSX2-0.9.8でミンサガをプレイすると +42Wから +57W。1コアフルロードで +36W。2コアだと +49W。3コア全部だと +62W。Songbirdで mp3を再生すると +5W。普段の使用形態における消費電力の最頻値は 126Wあたり。ユーザーがアクティブだと 140Wくらいになる。

一瞬で起動するわりにこの PCのスタンバイは電力消費が低い。だがアイドルはもっと下げたい。PC+音+画面でふだん 200W弱をコンスタントに消費している。ファンを 2つと HDDを 2つ減らしても 10Wから 20Wの削減にしかならないだろうな。グラフィックカードをオンボードにするのが単体で一番効果がありそう。まあ、790FX-GD70には載ってないんだけど。CPUとメモリの電圧を下げてみようかな。

 NAS(LinkStation Mini 1TB)

ONで 6W台から 8W台。OFFで 3.3W。仕様は平均約10W/最大13W。

 プレーヤー(VGF-WA1)

再生が 5.1W。スタンバイが 2.3W。無線ONでのスタンバイは 3.1W。電源断からのスタンバイは 1.6W

 電気カーペット

半面 330W。両面 660W

 Panasonic VIERA 32型 液晶

リモコンでOFFにすると 16.3W(オレンジ色のスタンバイ)。バックライトを変えると 77.7W110Wの間で変動する。

 電気料金

定常的に 26.2Wを消費している。21円/kWhだと 376円/月。25円/kWhだと 470円/月。実際はパソコンを結構な時間起動してるので……。

外のメーターが回ってるから居留守だ、ってな古典的推理があるけど、ウチは戸締まりして出かけるときに見ても回ってるよ。普通に。


2011年06月12日 (日) ユニコード戦記─文字符号の国際標準化バトル」(小林龍生) なんだウニコードじゃないのか(せめて UNICODEにしてよね)。

最終更新: 2013-11-24T02:49+0900

[SakuraEditor] 選択範囲の復元。

GreenPad, Alphaは復元されない。復元する派にもいろいろある。

 メモ帳「UNDOで挿入された文字が選択状態になる」「キャレットは常に選択範囲末尾」

選択状態の復元ではない。キャレットの直前/直後の文字の削除を UNDOしても選択状態になる。

 Mery「UNDOで(入力や削除時点での)選択範囲が復元される」「キャレットの位置も復元される」

これ理想。(@2013-11-23 2.1.6から 2.2現在まで、矩形選択後文字入力をアンドゥすると矩形で再現すべき選択が線形の選択になってる。これは理想ではない)

 Firefox4のテキストエリア「UNDOで(入力や削除時点での)選択範囲が復元される」「キャレットの位置は常に選択範囲末尾」

惜しい。キャレットの位置が復元されないということは、選択範囲を延長できる方向が問答無用に決まってしまうということ。

 SakuraEditorと TeraPad「選択範囲は復元されない」「キャレットの位置は復元される」

最初はメモ帳の動作をまねて CDeleteOpeの UNDOと CInsertOpeの REDOに文字列選択処理を付け加えたらいいかと思ったが、メモ帳と違い挿入や削除の連続した操作がひとまとめにされないのと UNDOバッファが無制限なせいで、連続する一文字削除(入力)操作の UNDO(REDO)がすごくくどい。CDeleteOpeと CInsertOpeの直前に CSelectOpe(新設するクラス)を挿入するのが Meryと同じ挙動になって使いやすそう。(前にも Meryが選択範囲を復元してくれるのが良いと書いた>20091117)


とりあえずこんな感じ。>undo_selectarea.rev1.patch(4.5KiB, 2011-06-11, trunk2@1923ベース)


view/CEditViewへの依存を COpe.cppから view/CEditView_Command_New.cppへ移した。>undo_selectarea.rev2.patch(4.2KiB, 2011-06-12, trunk2@1923ベース)

COpe派生クラスの実装と再生は同じ場所で行ったほうがいいような気がするが確たる考えはない*。view/CEditViewと COpeは COpeの機能から考えたら必然的に仲良しさんだから依存関係なんて気にする必要ないぜ、というなごみんの声も聞こえたが現状はそうでもないのでためらう。今 COpe属はただの構造体として扱われてるので、それに従ってロジックをコンストラクタの中から呼び出し側に移した。呼び出しごとにコピペしてね。

削除し忘れたけど「CSelectOpeがあれば CMoveCaretOpeはいらないかもね。」というコメントは正しくない。CSelectOpeは今のところキャレット位置を保存せず、その場所には適当に選択終点を代入してる。Ctrl+Aで全選択したときにキャレットが動かないので、選択始点・終点とは別にキャレット位置を覚えておかなければいけないが、今はそうしてないので CMoveCaretOpeが必要。


不要にした。>undo_selectarea.rev3.patch(4.9KiB, 2011-06-12, trunk2@1923ベース)


 @2011-06-15 矩形選択範囲の削除をアンドゥしたとき

復元された選択範囲が正しくない。文字がない部分に選択範囲を広げられないためだ。それは、COpe属がすべてロジック単位(wchar_t列に対するインデックス)で情報を保存してるからで、その理由はたぶん、折り返し方法が変わっても対応できるようにだろう。TeraPadの readmeか何かで折り返しを変更するとアンドゥ情報がリセットされると読んだことからの類推。どうしようか。選択範囲なんてクリティカルな情報じゃないから、矩形選択時はレイアウト座標で情報を持っておくことにすれば大体はうまくいく、ってことで済ませていいんじゃないだろうか。

CLogicRangeや CLayoutRangeはコピーコンストラクタがあるから共用体のメンバになれない(C++98では)。CLogicRangeを CLayoutRangeに置き換えただけのコピペクラスを作るのか……。上のパラグラフで書いたことだけど、どっちを選んでも一長一短なのだし、矩形選択だからっていつでも選択終点がフリーカーソル状態ってわけでもない。できるだけ余計なことはしない方向で(やめとこ)。でもでも

 @2011-06-15 あれ?「常時選択範囲」って何だ?

選択始点の型がどうして CLayoutPointでなく CLayoutRangeなのか。答えがここにある。

 @2013-10-18 矩形選択文字入力のUNDO

矩形選択して選択した全ての行に文字を挿入するということをよくする。ABDと入力・挿入していって、間違えた、Ctrl+Z、Cと操作したいのだけど、Ctrl+Zした時点で矩形選択が解除されてるのでその後の Cはキャレットのある行にしか挿入されない。残念だ。


「残念だ」と他人事(ひとごと)のような気のない素振りを見せることでやる気をひねり出す天の邪鬼メソッド。似たようなものに「要望を書いて次の日になんとかするセルフサービス」メソッド。

矩形選択挿入/インデントを UNDO/REDOしたときにも選択状態を復元する>undo_selectarea.rev5.patch(13.1KiB, 2013-10-18, trunk2@1923ベース)

テストはしていない(キリッ でも自分用の sakuraW.exeには取り込んだので今日から使用中。

「呼び出しごとにコピペしてね」とは上の方で書いたが、CSelectOpe(ロジック単位の方)を作成するヘルパー関数をやっぱり用意した方がいいかもしれない。座標変換が煩雑なので。CEditViewに依存するので COpe.{h|cpp}に置くことはできないが、CViewCommander_New.cppと CEditView_Command_New.cppから利用したい。どこに置けるだろう。CViewCommander_New.cppには Command_INDENTがある。CEditView_Command_New.cppには CEditView::DeleteDataと CEditView::InsertData_CEditViewがある。Command_INDENTから呼び出される CEditView::InsertData_CEditViewで選択範囲の記録ができれば、ヘルパー関数の設置と利用は CEditView_Command_New.cppだけで完結する。それができないのは CEditView::InsertData_CEditViewがお節介にも選択範囲内のテキストを削除してくれるから、インデントを実現するために Command_INDENTが選択範囲をクリアしたり再設定したり小細工を弄する必要があって、Command_INDENT内でしか選択範囲を記録できないからだ。飛躍。エディタ(ドキュメント+ビュー)はプリミティブな操作と情報(検索、置換、選択、キャレット、ステータスバー、ダイアログなどなど)だけを提供して、各種コマンド(インデントとか検索とか)はそれらの操作を組み合わせるスクリプト(カスタマイズしやすい。オプションや好みを反映しやすい。依存されない(されにくい))であってほしかった。という感想は、CEditView::InsertData_CEditViewのようなフルスペックで融通の利かない大きな関数を、一部の機能を無理矢理引き算して利用するような状況から生まれてくる。


UNDO/REDOコマンド関数が Command_CANCEL_MODEを呼び出す部分に書いたコメント

Command_CANCEL_MODE()は主に範囲選択のクリアと選択ロックの解除を行う。
範囲選択のクリア(再描画あり)を行うと CSelect(L)Opeで範囲選択を復元したときにちらつく。
かといって、CSelect(L)Opeが含まれていないときは従来通りクリアを行いたい。
どうするか。再描画なしでクリアする。方法は Command_CANCEL_MODEに redrawフラグを渡すこともできるが
Command_CANCEL_MODEの中身をコピペしてフラグだけ書き換えることにする。

範囲選択を解除する必要があるのは挿入/削除操作(CInsertOpe/CDeleteOpe)の都合かも知れない。それらの Opeの再生部分に Command_CANCEL_MODEを移動するのが3番目の方法(選択のキャンセルに伴ってキャレットが移動させられないか注意)。そもそも(出た!)、Viewに挿入/削除を行う範囲を指示するパラメータが、独立した CViewSelectなり CLayoutRangeのインスタンスではなく、ユーザーから可視の選択範囲を意味する Viewのメンバ変数でもあるから、描画のフラグをオンオフしながら選択範囲をあれこれ操作しなければいけないってのが面倒の根本。Viewにはユーザーから呼ばれるものとしてそういうメンバ変数と結びついた関数があってもいいが(※)、その関数が利用するものとしてもう少し粒度の細かい汎用性のある関数が欲しい。※良くない。そういう、メンバと結びついたコンテクストフルな関数をコマンダーに置いて、汎用性のある関数を Viewに置こうという方向で分離が進んでいたのかもしれない。

COpeで一番に改善が必要なのはメモリ確保の戦略だという気もする。1単位の UNDO/REDOのためにひとつの COpeBlkとひとつ以上(4以下くらい。CSelect(L)Opeでサンドイッチすると+2)の C*Opeのインスタンスが newされるという現実をなんとか。

COpe派生クラス(CInsertOpe/CDeleteOpeとか)の再生の前後でキャレット位置を復元するのは COpe共通のタスクとして実装されている。前後の選択範囲の復元も COpe共通のタスクにしてしまってよいかも。そうすると選択範囲のクリア、範囲の設定、テキストの挿入/削除、範囲のクリアという CInsertOpe/CDeleteOpeの手順と CSelect(L)Opeサンドイッチがひとまとめになって、空間効率も処理手順も無駄がなくなる。派生クラスの種類が減ってサイズが同じになるならメモリ戦略の実体も一本化できそう(まあ、やらないんだけど)。

 @2013-10-20 選択モード(SelectingLock)も復元すべき?

そういうのはまとめて CViewSelectのコピーコンストラクタと代入演算子の仕事ではなかろうか。できるかな。そして、もしそういう操作が Viewの外に公開されてるなら CViewSelectのインスタンスを通して Viewの選択状態を変更できる setterの存在が期待されるわけだ(Viewのメンバの CViewSelectのメンバの m_sSelectを直接書き換えるとか主権侵害言語道断)。

* @2013-10-18 COpeに本物のポリモーフィズムを導入するとかいうこと。そうすると COpeの派生クラス(CSelectOpeとか)の新規導入が UNDO/REDOの実行者から不可知のまま行えるようになる。