/ 最近 .rdf 追記 設定 本棚

脳log[2012-07-01~]



2012年07月01日 (日)

最終更新: 2012-07-01T14:27+0900

[SakuraEditor] CEditView::IsSearchStringという無茶な関数。

  • 検索条件を thisで与え、検索対象を引数で与える。(なぜ検索対象が可変?そのせいで対象となる文字列(連続したバッファ)が必要で、将来的に複数行検索に対応できない)
  • 仕様(出力)が検索オプションで変わる。
  • 検索コードを呼ぶのでなく自分でマッチ判定をしてる。(コピペコード)
  • 検索語ハイライトを行う CColor_Foundからしか呼ばれていない。
  • (関数の目的から)一文字一文字呼ばれることを想定しているが、検索情報を蓄えたりせず(できず)、その場その場で判断している(無駄が多い)。CColor_Foundの方が、行が変わるごとに通知があり行末に向かって順次実行されることがわかっているぶん戦略的に動ける。

というわけで、CEditView::IsSearchStringからコピペコードを廃すると CColor_Foundが知りたがっている何番目の単語がマッチしたのかを知るためにさらなる検索が必要になるにもかかわらず、CEditView::IsSearchStringという変態のために仕様を決める必要は全然ない気がしてきた。仕様ってのはこれの→「sakura-unicode:1830」「複数単語検索のブックマーク・Grep対応 - ID: 3539115」。CEditView::IsSearchStringには消えてもらって CColor_Foundと CSearchAgent::SearchWordの組み合わせで何とかすべき問題ではないかと。SearchWordだと検索結果が改行をまたぐようになってもそのままで適応する利点もある(CColor_Foundと CColorStrategyの方には対処が必要だが)。


2012年06月30日 (土) ミンサガ3週目終了。実機を含めたら6週目。おかしいな GT5をやってるはずだったのに。


2012年06月23日 (土) [GT5] IAライセンス取得。全銀。全金は精神がささくれだつのでまだまだ取りかからない。■ G27は GTFPみたいにモーターを逆回転させる音がしないらしくてすごくすごくうらやましい。


2012年06月22日 (金)

最終更新: 2012-12-05T05:04+0900

[SakuraEditor] InsTextマクロでドキュメントを変更しても(変更)フラグが表示されない。 (BugReport/99) - SakuraEditorWiki

前に自分が引っかかったのと同根。「タブやタイトルバーに変更フラグが表示されるように修正した。フラグ自体は立ってたけど描画が行われていなかったというミス。(20100620p01)

変更フラグを管理してるのは CDocEditor。ドキュメントを変更した関数が SetModified(bool modified, bool redraw)メソッドでこれに通知するが、更新フラグが立ったとき(落ちたとき)に描画が抑制されていると、以後ドキュメントの変更をトリガにしたキャプションの変更機会を失う。キャプションの内容は変数展開、条件分岐を利用して高度にカスタマイズが可能で、キャプションの更新を必要最低限にケチるのは理に適ってる。ではどうするか。描画の抑制を描画の遅延ととらえて、抑制中に加えられた描画に影響する変更を記録して、後でまとめて描画する? Webブラウザが JavaScriptに対して行ってるように? それは大変。マクロ由来のコマンドを描画を抑制して実行してるのは CMacro。かといって CMacroがコマンド呼び出しの前後で描画を適切に維持するのは出過ぎた行為。さっき「キャプションの更新を必要最低限にケチるのは理に適ってる」と書いたけど、描画の抑制をやめるのが一番簡単。だって Charマクロで InsTextのような問題が起きないのは、Charマクロの実体関数が redrawフラグを受け取らないで常に描画を行ってるせいだから。

 余談: InsTextで何をしていたのか。

<2012-06-25> ReDrawマクロの存在を教えてもらったのでちょっと修正。なんでこんな(描画に問題があるときに実行して下さい)コマンドがあるんだか。

現在の編集ウィンドウを再描画します。何らかの原因で画面表示を最新状態に更新したい場合に使います。

【例】 ステータスバーを非表示にしたとき、メニューバーの左側にステータス情報が表示されますが、ファイル名のチップ等で消されてしまうことがあります。そういう場合に使います。

なんで手動でやらそうとしたんだ……。 </2012-06-25> <2012-07-04> ……って、その、メニューバーの左側右端に表示されるステータス情報は、もう消えなくなってるアレだ。「SourceForge.net Repository - [sakura-editor] Revision 1594</2012-07-04>

/** OneTouchIndent.js
 * サクラエディタのマクロ。
 * Tabキーに割り付けて使う。
 * 前の行にならって同じインデント(Tab,Spaceなど空白文字全般)を挿入する。
 * Enterをトリガーにしたオートインデントってイマイチじゃない?
   一段深すぎたり、空行を挿入したかったりするときに削除の手間が必要で。
   このマクロは、Tabキーを押す手間は必要だが、望まないインデントは行わない。
*/

if (OneTouchIndent()) {
	Editor.ReDraw();
} else {
	Editor.IndentTab();
}

function OneTouchIndent() // returns true(done) or false(undone)
{
	// 文字列選択中はインデント文字の挿入ではなく、インデントを行いたい。
	if (Editor.IsTextSelected) {
		return false;
	}

	var caret = eval(Editor.ExpandParameter("({y:$y-1, x:$x-1})"));

	// 前の行にならってインデントの文字と量を決定するので、先頭行では(デフォルトの)インデントを行いたい。
	if (caret.y < 1) {
		return false;
	}

	var thisline = Editor.GetLineStr(caret.y+1);
	var prevline = Editor.GetLineStr(caret.y);
	var previdnt = prevline.match(/^(?:(?![\r\n])\s)*/)[0]; // 行頭の、改行を除く空白文字

	// prevline[0...previdnt.length]
	// thisline[0...caret.x]
	if (previdnt.length <= caret.x) {
		return false;
	}
	if (previdnt.substring(0, caret.x) !== thisline.substring(0, caret.x)) {
		return false;
	}

	Editor.InsText(previdnt.substr(caret.x));
	return true;
}

 @2012-12-05

気付くのが遅すぎるけど、インデントを深くしたいときには意識的にタブキーとスペースキーを使い分けないといけなかった。そういうのを気にせずワンボタンで済ませられたらなお良かった。


2012年06月19日 (火) USBメモリ(TB-BH2/2G/R)を落とした。なくしてからけっこう気に入ってたことに気がついた。がっくり。■どんなんでも役目を果たせるからこそ選ぶ理由が欲しい。代わりがすぐには見つからない。


2012年06月17日 (日) [W53S] 今朝開いたら砂嵐だった。閉じて開き直すと一瞬だけ正常に表示するがすぐに崩れる。パカパカしてるうちに直ったが今度は周辺部の広範囲に白い斑点のようなものが浮き出てきた。昨日の雨がいけなかったのだろうか。バッテリーのは赤い水玉のままだったけど本体の方は真っ赤っかだった。スマホはいらないし、俺は auにとって客ではないようなので、auに今以上の金を落とすのも癪だ。幸いなことにいつの間にか正常に戻っていたのでまだ使える。■ W53Sのパネルとか電池とか電池蓋とかまだ買えるんだね。これは auを評価せざるを得ない。Sony Ericssonは製品ページすら残していない。


2012年06月14日 (木) [ruby-dev:45735] [ruby-trunk - Feature #6587][Open] proposal: adding new methods File.rootname and Pathname#rootname

最終更新: 2014-10-23T14:06+0900

Windows怖いよ。

 X:file.extというファイルと XX:alt.strmというファイル。

Y:\My\Desktop>echo aaa > C:a.txt

C:\a.txtを作成しようとしてアクセス拒否される。(C:a.txtは C:\a.txtと同じ?)

Y:\My\Desktop>cd /d C:
C:\>echo aaa > Y:a.txt

Y:\My\Desktop\a.txtが作成される。(Y:a.txtは必ずしも Y:\a.txtではない!)

C:\>cd /d Y:\My\Documents
Y:\My\Documents>cd /d C:
C:\>echo aaa > Y:a.txt

Y:\My\Documents\a.txtが作成される。(Y:a.txtがさっきの Y:\My\Desktop\a.txtと違う!)

C:\>echo aaa > T:a.txt

T:\a.txtが作成される。(初登場の Tドライブに関しては T:a.txtと T:\a.txtは同じ)

C:\>echo aaa > Z:a.txt

「指定されたパスが見つかりません。」(Zドライブが存在しなくても、Zがファイル名だという扱いは受けません)

X:a.txtは必ずしも Xドライブのルート直下の a.txtにアクセスするわけではなく、ワーキングディレクトリの履歴が影響してる雰囲気。コマンドプロンプトだけでなく irbでも同じ場所に作成された。ドライブごとにワーキングディレクトリがあるとか?カレントドライブという概念。X:foo\barはカレントドライブを上書きする相対パス?

ちなみに、Cや Tや Yが CCや TTや YYだったりすると、それは(ドライブレターではありえないため)カレントディレクトリの CC(TT,YY)というファイルの a.txtという代替ストリームへの書き込みになるみたい。(代替ストリームの内容を確認する簡単な方法は moreコマンドだって)

 / というパスと \ というパス。

大体どちらもカレントドライブの直下を指すみたい。直接 Windows APIを叩いてみてはいないけど。

 @2014-10-23 本当にあった。

=C: =D: など    ドライブ毎のカレントディレクトリを保持(移動したことのあるドライブのみ)


2012年06月13日 (水) Fx13.「ライブブックマークを読み込んでいます…」このメッセージを何度読んだだろうね。ブックマークツールバーの上でポインタを左右に動かすと*必ず*リストの先頭に表示され、コンマ1、2秒で消える。チラチラガタガタする表示がうっとうしい。それは見せる価値のある情報か?常に最新なのであればフィードにアクセスできないときだけ知らせたらいいだろう。■(無題)タブはなくなってしまったん?内容を表示するしないの設定に関わらず「新しいタブ」というページがタブの履歴の先頭にエントリしてる。白紙のページの履歴なんていらんのだけど。あってもそんなに邪魔じゃないと言われればそうなんだけど、ローギアに入ってるのにまだシフトペダルを下に踏めるような気持ち悪さ(※DR250Rは違ったよ)。


2012年06月10日 (日) 感想。「以下のJavaScriptのコード断片は、とある公共機関のWebサイトで利用されていた ものです。これを見て気付いた点について、自由に書いてください。」なんで URLのハッシュマーク以降から切り出したものが urlという名前の変数に格納されて same originチェックを受けるんだ、location.pathnameの間違いじゃないのかと疑問が渦巻いていたのだけど、フラグメントでフィードの URLを指定するというのがサイトの仕様らしい。気持ち悪い。(結果的にサーバーで無視されてクライアントで処理されるにしても)パラメータで指定すべきだと思うし、(ドメインより下とはいえ)あらゆる URLを指定できるべきではないし、パラメータでページの一部の内容を切り替えられるという汎用性が嫌いだ。ページの目的が曖昧になって。フィードが正常に読み込まれるときと読み込めないとメッセージが(なぜか打ち消し線を伴って)表示されるときではない、第3の状態が残されてるのも気になる。潰したい。3つ目。url.match( /^\/[^\/]+/ )を /^\/[^/]/.test(url)にケチりたい。■(一日たって)セキュリティ的にはどうか。パラメータがなければページの内容が不完全だとか、URLをいじくることでページを改変できるとかは気に入らないが、寄せ集めるコンテンツがすくなくとも同一ドメイン下にあることが担保されてるなら、ページの内容を制作者の管理下に置くことが(難しくとも)不可能ではないだろうし、問題があるとはいえないのではないか。


2012年06月09日 (土) お前そんなとこでなにぼそぼそひとりごとつぶやいてんだよってなもんだが……。「fixed error on empty subtitle. · 1d9cc8a · tdiary/tdiary-core · GitHub」section.stripped_subtitle_to_htmlが nilを返しうるというのが果たしてありなのかどうか。たとえば、toStringメソッドは空であれ何であれ必ず文字列が返ってくることを期待されてると思うが、それと同種のメソッドだと思うので。


2012年06月06日 (水) Windows 8は好きとか嫌いとかではなく、いらない。タブレットOSとしてならありだとしても PCには入れたくない。Linuxのどれかが Vistaからの受け皿になってくれると嬉しいのだけど……(数年後に)。■なんだよもう。「Visual Studio Express 2012では一般的なWindowsアプリ開発ができない | スラッシュドット・ジャパン デベロッパー」→「Visual Studio 2012 Express、デスクトップアプリの開発に対応する予定 | スラッシュドット・ジャパン デベロッパー


2012年06月01日 (金) こういうこと?20120318<<「しかしこの宇宙にはもう三つ力があるのだ。電磁気力、強い力、そして弱い力。」■同じページからこの文。「その着想を理論にまで昇華したのが特殊相対論。いや、これ名前悪いよなあ。光速絶対論の方がいいよなあ…」よくぞ言ってくれました。


2012年05月31日 (木) [SakuraEditor] セッション復元機能。ファイルパスに加えてグループ番号とタブオーダーを MRUに記録するとして、順番に閉じたとき(→最後の1ファイルだけを再開)と一度に全エディタウィンドウを閉じたときをどう区別するか。アクティブなウィンドウの一番左のタブを[グループID,タブオーダー]=[1,1]として、これを最初に保存して、再開するときはリストの最後から[1,1]までを開く、とか? MRUにセパレータを入れようか? MRUの最後からいくつまでがひとまとまりかを記憶するキーをひとつ追加しようか?■グループごとにウィンドウの位置とサイズと Z-オーダーとアクティブなタブを復元してほしいだろうな。設定で決まった位置・決まったサイズにエディタが開くようにしてるけど、複数のウィンドウが同じ位置に重なって表示されても困るし。■カーソル位置を常に復元してほしいかな。設定に従うべきかな?■ファイル引数付きで起動されたときはどうかな?復元した上で、設定に従って新しいウィンドウで開くべきかな。■レナが「~かな。~かな。」っていうのは「ひぐらし~」だからだったんだね。

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

名無しさん無題ドキュメントや未保存のGrep結果等も保持したままセッション保存されるとありがたいです。 具体的にはEmEdit..