/ 最近 .rdf 追記 設定 本棚

脳log[2014-09-04~]



2014年09月04日 (木) [正規表現][tDiary] これもマッチしない方がましな例かな?「Wikiスタイルのプラグイン記法でクォーテーションまわりの処理に異常がある · Issue #437 · tdiary/tdiary-core · GitHub」■参考:20131209p01■tDiaryの方に話を戻すと、「リンクはWiki記法ので作られるのが前提」なのではなくて、101行目以降の処理は HTMLから二重ブラケットリンク記法を(不完全ながら)復元してそこにあるべき機能(myプラグイン/kwプラグイン展開)を付加するためにあると思っていて、だから、プラグイン記法でイレギュラーに挿入された Aタグに対しては 101行目のマッチングに失敗してその後の処理をスキップすればいいわけで、「101行目:html.gsub!( %r!<a href="([^"\n]+?)">(.+?)</a>! ) do」あたりが好みかな。試してないので机上の大法螺かもしれんけど。補足。\nを除外したのは mフラグなしの . に合わせた結果。この \nにマッチしない制限も知らない HTMLに触れない方針の一環と思われる。wiki.rbの他の場所では使われている mフラグがこのパターンには付いていないことに意図を見出すなら。■実のところどういう機序でこのように「; _erbout.concat(('<%=kw 'ttp://google.com" target="_blank...」不完全なシングルクォート文字列が _erbout.concatの引数になってエラーに発展するのか把握していない。だってそこは ERBが dumpした部分であって(たぶん)、どんな入力でも文法エラーを起こせるとは思えないから。■GitHubの画面はまことに適切ですな。ページ最下部までコメントを読んでいくとこう「Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment」結局アカウントは作らなかったが。■何行目っていって GitHubに張ったリンクは HEADとともに対象が移ろう URLだろうか。gitに HEADってあるんだろうか。今現在のHEAD(相当のもの)に固定したリンクはどこへ張る?■■■対象が変化していくだけではない。たぶんこれによって早くもリンクが切れてる。「Merge pull request #432 from tdiary/standard-structure · 3f8ff2a · tdiary/tdiary-core · GitHub」■ちょっとだけ関係するかもしれない話。たとえばこの日記に /diary/ でアクセスしたとき、そのままの URLで最新の日記を表示するか、内容は同じだが日付を固定した URLにリダイレクトするか。サーチエンジンだけ日付指定URLにリダイレクトしてるけど、どっちみち noindexなので関係ないかも。何が嫌なのかって、検索してアクセスしてみたらそれが現時点で最新のページであって、検索にマッチした内容が流れて消えてしまっていること。

最終更新: 2015-03-31T20:06+0900

[tDiary] (タイトル↑からの続き)

この日記ではバグを再現できないので tdiary/wiki_style.rbの該当部を見てみた。

	hikihtml = HikiDoc::HTMLOutput.new
	html.gsub!( %r!<a href="(.*?)">(.*?)</a>! ) do
		k, u = hikihtml.unescape_html($2), hikihtml.unescape_html($1)
		if /^(\d{4}|\d{6}|\d{8}|\d{8}-\d+)\D*([pctf]\d+(?:[-.]\d+)*)?$/ =~ u then
			%Q[<%=my '#{$1}#{$2}', '#{escape_quote CGI.escapeHTML k}' %>]
		elsif /:/ =~ u
			scheme, path = u.split( /:/, 2 )
			if /\A(?:https?|ftp|mailto|javascript)\z/ =~ scheme
				u.sub!( %r@\A(?!mailto|javascript)\w+:(?!//)@, '' )
				%Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML k}</a>]
			elsif ( k == u )
				%Q[<%=kw '#{escape_quote u}'%>]
			else
				%Q[<%=kw '#{escape_quote u}', '#{escape_quote k}'%>]
			end
		elsif k.empty?
			%Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML u}</a>]
		elsif u.empty?
			%Q[<%=kw '#{escape_quote k}'%>]
		elsif k == u
			%Q[<%=kw '#{escape_quote u}', '#{escape_quote k}'%>]
		else
			%Q[<a href="#{CGI.escapeHTML u}">#{CGI.escapeHTML k}</a>]
		end
	end
	html
end

154行目の正規表現は同じ問題を含んでるけど、ざっと見ただけで

  • 量指定子が +? でなく *?
  • hikihtml.unescape_html*を使ってる (ユーザーが自分で kwプラグインを呼ぶとき HTMLエスケープしますか?ってことだ)
  • URIを使ってない (屁理屈を言うなら、フルスペックのバリデーションなんていらんよね)
  • schemeの消し方が細かい
  • elsifがなんか多い (たぶんこれのために量指定子を変更した)
  • CGI.escapeHTMLを使ってる (hikihtml.unescape_htmlが関知しなかったダブルクォートが &amp;quot; にされるかも)

あたりが違う感じ。どれが影響してエラーにならないんだろ。

……ならないんだけど、自分が正しいと信じる解決策を下のように適用しておいた(量指定子はこの日記のもともとの仕様に従って +? ではなく *? を使うように変更してある)。

	html.gsub!( %r!<a href="([^"\n]*?)">(.*?)</a>! ) do

* メンバ変数に依存しないメンバ関数って……。まったく無駄な new!!!


2014年09月03日 (水) どれだけ面倒くさいのかな?と興味津々でプレスリリースまで見たがコントローラの詳細はわからなかった。「カーペットを左/中/右に3分割し、個別に暖められる「暖房面積3面7通り面積切り換え」機能」■以前書いたもの。「目視するのが面倒でも手探りで二回操作するだけで自分の側だけをオンオフできるはずなのだ。この話の趣旨はあくまでその二回の操作すら無駄であり無理な要求だったということだけど。(20110303)」■具体的な手順。まずスイッチの配置は覚えておかないといけない。それで、1.電源をオンにする。2.効果範囲を自分の面に限る。3.操作1でスイッチが動かず操作2でスイッチが移動したなら、効果範囲を全面(3-stateの真ん中の位置)にする。ステップ3まであるじゃないか。ステップ2と3は一連の操作なんだよ。


2014年09月01日 (月) [COSMOS] エディタで改行をまたいだ検索ができなくておかしいなーと思って(何度かパターンを手直ししたあとに)正規表現DLLを確かめてみたら、改造版bregonig.dllにはったシンボリックリンクが宛先不明になっていたせいで標準名の正規のDLLにフォールバックしていた。リンク先のDLLを復元しようとしたがフォルダの「以前のバージョン」は 7月末までしかさかのぼれなくてそのときにはもう消えていた。ならばと他所から2つのコピーを探してきたがどちらもファイルサイズが 0KBだった。そんなわけで毎月のユーザープロファイルバックアップ(20140813はもちろん20140710にもなかったので20140611のファイル)から復元した。6月11日から 7月10日までの間にはこういうこと(20140623)があったので、疑いの目はやっぱりそこに向かうよね。


2014年08月27日 (水) 画像でカタカナの斜めの線を比較すると、縦方向のアンチエイリアスまでが(つまりデフォルト無効を含むすべてのオプションが)有効になってる気がする(そうでないと価値がない)。「64bit版も登場、DirectWriteレンダリングに対応した「Google Chrome 37」が安定版に - 窓の杜」■言及してる人がいた。見覚えのあるアイコンだ。Togetterで見たのだろう。「ちょっとわかりにくいけど、縦方向のアンチエイリアスが効いてるので文字の斜め線とかが綺麗に見えるな」プロフィール:エロ漫画家、だと? tweet内容と全然結びつかないよ……ってそれはそうか。危うく自分の無知と偏見をさらすところだった。


2014年08月21日 (木) 姓を大文字にするほかに、姓と名(※この順番)の間にカンマを入れる流儀。そのカンマが「倒置してますよ、普通と違いますよ」と主張しているようであえて採用する気にはならない。


2014年08月16日 (土) 宅配便か何かの伝票に「ちょう付用」と書いてあった。それで理解できる人は漢字を正しく知っている。読めなくても「貼付用」の方が通じると思うし、漢字をひらくより「貼り付け用」とでもした方がずっと良いのではないか。■取り扱いの指示ではなく ID(※ABCでも甲乙丙でもいいが、読めないと伝達に支障をきたすもの)だという可能性。


2014年08月15日 (金) はやりのわだい。条件付きの正しさというものを俺は信用しない。条件は見落とされ誤って判断され、正しさはいずれ失われる。波括弧を常に付けろというルールは、括弧を付けないというオプションを捨てることで、条件付きで括弧を付けなくてもよいケースを、条件判断を経ずに即座に誤りだと見分けるためにある。■コードをゼロから書くときにはそんなミスをするはずがないと思えても、どこかからジャンプしてきてさっと書き替えてまたよそのファイルへ飛んでいく修正者や、一塊の差分をコマンドひとつでマージする役割の人もいれば、起こりうることは必ず起こる。goto fail;


2014年08月11日 (月) トヨタ工場でメンテナンス会社社長が死亡 吊り上げた鉄扉の下で作業中、ワイヤ切れ落下」■すばらしきコメント。10「立っているものは倒れる 吊っているものは落下する 高いところにあるものは落ちる 丸いものは転がる 動いているものには挟まれる 回転しているものには巻き込まれる」21「昔ドカタやった時釣り上げた物の下通っただけでめちゃくちゃ怒られたけどな 下で作業するなんてありえない」25「>>21 普通そうなんだよな、、、」1030「(※前半を省略したが以下の内容は安全のためのルールが無視される経緯の一典型を述べていて、事故のあった工場の話ではない) 毎日三時間四時間の残業ってのが常態化していて、そのせいで、すこしでも作業効率を上げるためにあえてルールを無視する→何度やっても事故とか起こらなかったからこのまま無視してこのやり方でやってしまおう、ってことになってると思うんだ」


2014年08月10日 (日) 総務省、「2年縛り」の一部を規制へ ー 2年契約が満了すればいつでも無料で解約可能にする方向で検討 | 気になる、記になる…」■ドコモだったことはないから不確かだけど、ドコモの2年縛りは最初これだったと記憶してるんよね。阿漕だったのは auで、即座に横並びだったけど。そんなんだから auに愛想が尽きてても乗り換える先がないんだけど。


2014年08月09日 (土) Twitter / vjroba: 世界一IQの低いソースコードはこれ。吉井博史著「基礎から学ぶ ...」■「IQが低いソースコード」という知性の感じられないラベリングがまず嫌い。言及したくもなかった(でも何日にもわたって何度も見かけたので……)。そしてそれがバカでも書ける・バカでも読めるという意味なら誉め言葉。リンク先のソースコードが責められるべき点は「else if (keyCode == ) { ret = ""; }」という部分がコピペであること。冗長であり、突然変異コードが混じってても見つけにくいこと。コードの繰り返しを物言わぬデータの並びに変換するか、マクロでテンプレート(ボイラープレートとの使い分けは?)を一度だけ記述するかすれば、十分実用的なコードだと思う。対象が一部ではなく常にすべてのキーコードであるなら、リフレクションの方が相応しいかもしれんけど。書籍でこれが4ページ半も続いたというのが責められるのは当然と思うが、内容は別。


2014年07月30日 (水) [SonyReader] Reader Storeは絵文字を、それも単色で豆粒サイズの絵文字を識別しない人間のことを考えないのだろうか。右上のおしらせやらアカウントやらカートやらキープリストを意味するらしいアイコンのことだ。スペース余ってんだけど、機能を捨てて何を得たつもりでいるのか?■アイコンほど扱いにくいものはない。同じ図形を見てすべての人間が同じ物や機能を想像するわけではない。どころか、何かわからないものであることの方が多い。連想ゲームにつきあうつもりはないよ。ただ、まったくなじみのない外国語で書かれるよりは雰囲気が伝わる、というだけの代物だ。■アカウント・コミュニケーションのアイコンをクリックしてもサブアイテムがアニメーションで現れたり消えたりするだけで、アカウントにまつわる操作ができるページに移動したりはしない。豆粒サイズのアイコンよりさらに小さい文字を、ポイントしてクリックしたりしたくないんだけど。ちらちら現れたり消えたりする不安定なリストの文字を、一行一行悠長に読む気もないんだけど。まして「アカウント・コミュニケーション」というラベルが象徴してるように、リストにまとまりはなく、重要度や頻度による重み付けもおそらくなく、ランダムな並びはまるで頭に入ってこない。■ライトノベルをライトと省略するジャンル別検索窓もどうかと思う。商品に対する敬意が足りていない。……と思ったが、他のを見てみると「ビジネ」や「ミステ」だった。みっともないったらない。そうかこれが It's a Son(スペースの都合で省略されました).■■■PRS-650の右肩。少し下がっている。そこにはスタイラスの収納スペースがある。スタイラスにはクリップを模した出っ張りがあり、その先は三角にとがっている。と、どうなるか。スタイラスの先っちょを収納部の穴につっこんだら、あとは自然と最後までカチッと収まる。クリップの向きを気にする必要がない。こんなの当然? プラグの先端なんかもそうなってる? ところが USBのやつときたら……。至言!「USBって…「裏返したら・刺さると思った?・バーカwwwwwwww」の略なのか!?


2014年07月27日 (日) やっと掲示板が見られるようになりました。■[SakuraEditor]「Develop/13 行番号の幅を可変にする - SakuraEditorWiki」■(本筋とは関係なく) config/app_constants.hに const intを2つ追加しているのを見て。ヘッダに constを追加するとそれをインクルードしたオブジェクトファイルごとに実体が用意されるとか聞いた覚えがある。■それがどういうものかあまり理解していないけど、app_constants.hは StdAfx.hからインクルードされてるみたいだ。■ヘッダには extern const int ...; としておいて、どこかの .cppファイル1か所で const int ... = ...; とすることができる。すでに定義されている app_constants.hの4つの const int (MAXLINEKETASと MINLINEKETASなど)をそのようにしたら、exeのサイズが 512バイト縮んだが、ディスク上のサイズ(4KB刻みだったか?)に差は出なかった。2つの exeが機能的に等価だという保証もない。■果たしてこれは塵か山か。


2014年07月20日 (日) Thunderbird 24.6の奇妙な振る舞い。件名リストを Shift+↓↓↓と、並んでる順番に複数選択していって、あ、これ以降ももう全部spamメールだなとわかったので Shiftを押し続けたまま Endキーを押した。そうすると、選択を開始したところからではなく、そのときフォーカスがあったところからリストの末尾までが選択された。Endを押したとき選択されていた行はフォーカスのあった行を除いて選択範囲から漏れた。Windows Explorerと違う挙動だし、俺の期待とも違っている。ま、今頃気付いたんだけど。■Endの代わりに PageDownにすると、一部の選択状態が解除されたりすることなく、期待通りに選択範囲を拡大することができた。■■■どんなタイムゾーンを選んでも一周ちかく未来を行っている Amazon.jp