/ 最近 .rdf 追記 設定 本棚

脳log[2014-10-04~]



2014年10月04日 (土) (がえん)じる。肯ずる。■ふと思いついて(思い出して) ATOKで変換してみたら変換できた。これは音便形。■否定の助動詞が含まれていて元は否定の意味なのだがその後肯定の意味で使われるようになったとか。なにそれ困る。■■■@2014-12-10 谷崎潤一郎の『細雪』で使われていた。肯じるをさらに否定していたから肯定の意味で使ってるんだろうな。


2014年10月03日 (金) 鉄板で高評価の『戦場のヴァルキュリア』。なるほどうなずける。■キャラがいい。乳の形がいい(アリシアとセルベリア)。6年前のゲームだというのに古びない水彩画風の画面描画がいい(輪郭の処理があまいけど)。歩兵の歩く音をはじめ様々な擬音が見えるという脱力演出がいい。従来隠しパラメータで表現されていた高低差や地形の有利不利が3D化されて見えるというのがいい。物理エンジンだから基本的に見えている通りのことが起こる。すべてのキャラを動かさなければいけなかったり、移動の後でなければ攻撃できなかったり(またその逆も)しないのがいい。省力化の意味もあるのかもしれないけど、様々な割り切りが煩雑な作業を省いていて評価を下げる理由になっていない(だがモーションくらいは……)。■アリシアの声が南夏奈だから真面目なことを言っていても後ろを向いて舌を出していそうで笑いがこみあげてきて困る。敵方にはxxxHOLiCのコンビが主従を入れ替えて声をあててる。次元の魔女がこちらでは蒼の魔女。あと上官は草薙素子。■フリーバトルに精を出すと無双ゲームになってしまうと読んだので制限プレイをしてる。どこまで続けられるやら。1)武器開発をしない。2)防具開発をしない。3)オーダーを使わない。4)遊撃戦闘(=フリーバトル=経験値と資金稼ぎ)をしない。5)索敵ラインに頼らない(のは毎回毎回毎回毎回消すのが面倒で諦めた)。では何ができるのかというと、レベルアップと戦車の強化ができる。経験値稼ぎができないから Sランクで最大限のボーナスを得るのが重要。■2番目のマップで早々に初の敗北を喫した。偵察兵と支援兵は戦車や突撃兵のそばを走り抜けようとするだけで HPを全部持っていかれて死ぬ。安全地帯から安全地帯へ走る。ぼさっとしてると際限なく撃たれる。銃を構えるまでの待ち時間がけっこう痛いので、旋回・蛇行するか物陰でやりすごしてリロードを待つ。なんか当たり前のことを書いてるな。当たり前が当たり前に要求されている。弾丸をビシビシ食らっても動けるとか、拠点から拠点にワープできるのがゲーム的。初期に出番のない支援兵や足の遅い対戦車兵は占拠した敵拠点で呼び出すのがいい。初期配置は回復CP数を増やすキャラと敵拠点を奪うのに必要な最低人員だけ。突撃兵に狙われるとほぼ死ぬので、それよりは拠点を通して一時撤退しておいてダメージを受けないようにする。再度出てくるのに 1CPと 1ターン必要だけど HP全快でどの自拠点からでも出てこられるメリットがある。自分のターンはもちろんだが敵のターンでも攻撃することを考える。勝利条件に関わらないなら経験値にならない一般兵の相手をする積極的な理由はない。■■■「戦場のヴァルキュリア評(考?)」■2周目について。たしかにブック形式をいかして最初からすべての章にアクセスしたかった。サガフロ2がそうだったみたいに。また、レベルなど多くの要素が持ち越されることに関して、むしろ、成長要素や便利コマンドを廃した弱弱ニューゲームの方が楽しめたろう。べつに敵司令官が目的を持ってなくてもパズルゲームになっていても構わない(だって敵が CPをフル活用して対戦車兵ひとりで一点突破を仕掛けてきたらハメ殺されたみたいないらだちを感じる。自分はやるけど。不満の原因はおそらく、ウェルキンの死が自軍の潰走につながる説得力がないから。本当の司令官はプレイヤーだから。そこを物語に織り込んで初めて敵AIが本領を発揮できるのではないかと)。仕様の穴をつくようなテクニックが要求される「無理ゲーだと思った?クリアできるんだぜ、これ」みたいなのが見たかった。1周目が接待ゲームに思えてくるようなものが。■■■アマゾンのカスタマーレビューを読んでると戦争なのにノリが軽すぎるという評がいくつも。ラブ展開は不謹慎だとかも。俺は戦争を知らないけど、常と変わらないことと極限状態だから起こることのどちらもがあるだろう。どちらの評にも共感しないし、不謹慎厨の同調圧力には嫌悪を感じる。最近になってやっと気がついたのだけど、警察ってのが一番、積極的に空気を利用して多数派の論理を押しつけてくる旧時代の暴力組織なんだよね。そんな風にして維持される治安はいらないかなあ。


2014年09月24日 (水)

最終更新: 2015-01-12T01:26+0900

Go言語をインストールした。

ifが値を返さないとか条件演算子がないとか*、エラーを nilと比較することはできるけど || や && のオペランドにはならないとか、配列の最後の要素の後ろにカンマを置かずに改行するとカンマがないって理由でコンパイルエラーになるとか、ああ、この独善的融通の利かなさ、Rubyではないな googleだから Pythonがこうなのか?という感想。

 beni/lexer/javascript.go (2014-09-24, 4.9KiB)

ベースは /shjs/lang/sh_javascript.js

ミクロな感想

  • gitコマンドがなくて >go get "github.com/..." に失敗した。手コピインストール……
  • golangの regexpパッケージが re2そのままらしくて一番単純な先読みすらサポートされていないので一部のパターンを簡略化した
  • マッチング処理が行ごとではなく全文一括なので改行をまたぐケースをひとつのパターンの中に押し込んでシンプルにした
  • \wとか \sの差異を気にせずそのまま使ってる
  • インポートは lexerディレクトリ丸ごとされてるんだけど、lexer/all.goにファクトリを登録しておかないと有効にはならない
  • JavaScriptの正規表現リテラルが鬼門
  • regexp.MatchStringは文字列の全体をテストするメソッドではない
  • htmlフォーマッタに(未実装だけど)いろいろフラグがある。メソッド内で分岐するのでなく単目的一本道の処理を組み合わせてインターフェイスとフラグを満足するオブジェクトを構成したいと思った。フラグの組み合わせは膨大になる可能性があるので事前に定義したクラスとファクトリ関数は現実的でない。どういう方法があるだろうか。vptrと vtblをカスタムする? 実行時コード生成? たまらんね、他には? Scalaには何か、型付きのダックタイピングをサポートするやり方がなかった? あったとしてそれが解決策かは知らないけど、とにかく、間接レイヤーを挿入して自分でディスパッチしたりするのでなく、たとえそれがソースコード上のことに過ぎなかったとしても、入力と出力を直結して答えを出してる感じが欲しい。
  • 色分け対象となるトークンに、LiteralStringDouble、LiteralStringSingle、LiteralStringHeredocなどが、また、総称的に扱われるのであろう LiteralStringや Literalがある。lexerの方では識別できる限り詳細なトークンを指定したいであろう。では、テーマの方で本質的な差異のないトークンをまとめて同じ色に塗ることにしようか。それを判断するには言語に関する情報が必要だ。
  • 実質的にパターン最初に ^ が必須で、ポインタを1文字ずつ進めながらマッチするパターンを探していくのは
    • regexp.FindStringSubmatchメソッド呼び出しコストがかさむ
    • ^ では、与えられる部分文字列の最初を検出することができても、単語の切れ目(始まり)でない部分を除外することができない。
    • regexpパッケージのメソッド群には検索開始位置/検索終了位置を指定する引数が見当たらない。BMatch関数と同じ不備か?(20090808p03.02)。それがないと結果が変わってきたりする。re2には \K参考 も戻り読みもないけど \b(単語の切れ目)だけは影響しそう。
    • それと「FIXME: need to emit 'ch'?」と書かれている部分とが合わさって、ハイライト対象のどの部分もとりこぼしなく識別してマッチしないと、意図しないマッチが生まれたり対象の一部が(標準)出力から消えたりということが起こる。
    • マッチした位置/未試行/マッチ無しを記憶しておくのが効果的だと思う。(検索開始位置を指定できないと \b のマッチの仕方が不定だけど)

ただのデータファイルなので言語の勉強にはならないよね……。フレイバーの違いライブラリの違いに足を取られるのがわずらわしいしもどかしい。CLRと MSIL?

* つまり、if (cond) return A else return B みたいな冗長性(returnの繰り返し)と無駄な構造化を強制されるわけ。

 何かを true/falseと比較することはもちろん nullと比較することもまずしたことがない。そうする理由は、trueが falseではないすべての値であったりする Cのことや、null(それと NaN)は nullであること/ないことをテストすることはできても二つの nullが同じものであることがありえない SQLのことが念頭にあるからだ。そして、Goだからこういう書き方で OKなんだというような考え方はしない(http://vvvvvv.sakura.ne.jp/ds14050/diary/20140815.html)。信じられない仕様を強制するもんだ。

 なぜ余計な物を強制されるのか。ケツカンマは便利だからと許容されているもの(だが俺は嫌いだ)であって、強制するというならそれは削除させる方向に向かうべきものだ。

参考 [[サクラエディタふぁんくらぶ part14|http://anago.2ch.net/test/read.cgi/software/1294526851/656-663]]


2014年09月20日 (土) [tDiary]「emojify に登録されていないアイコンも変換しようとして 404 となる · Issue #404 · tdiary/tdiary-core · GitHub」「foo::bar::buzz と書いた時に bar が emojify 対象となってしまい、404 アイコンがでるのを直したい」■直したとして意図しない絵文字が出るのを避けることはできない。String#emojifyでざっくり処理する限りは。そして変換対象リストを外部に依存することはさらにコントロールを難しくする。■エラーメッセージを貼ったら100行目のエラーが意図せず100点満点(絵文字)になってしまうのはありっていえばありだけど。■なんにせよ絵文字は dataスキームで埋め込むのがいい。■■■@2014-10-03「Merge pull request #443 from minimum2scp/fix/emojify-404 · 96eff8c · tdiary/tdiary-core · GitHub」■それはurlではなく tag.■String#%の引数の [...]*3 について、プレースホルダを %1$s にすれば 1つの引数を使い回せるのに。


2014年09月18日 (木) これでコア機能がスタンドアロンだったら非常に魅力的。「Kindle Voyage」。300dpi(6インチ・1448x1072)の解像度。左右2対(4個)の機能固定(右綴じ左綴じで進む戻るが入れ替わったりしない)物理ボタン(感圧式。振動でフィードバック。感度振動ともに微調整可能。調整が必要な(そしてベストセッティングが存在しないかもしれない)扱いにくいボタンなのか?エレベーターにクリック感皆無の凹型ボタンあるね。無駄に強く押してしまうからなのか、たいがいボタン裏側のひびが透けて見えている。疑似ボタン以上のものになっているかは触ってみないと)。■PDFが手軽に読めたらいいのだけど……。「Microsoft Word(DOC, DOCX)、PDF、HTML、TXT、RTF、JPEG、GIF、PNG、BMP、PRCおよびMOBIファイルをKindleに送信して、Kindleフォーマットで読むことができます。これらのドキュメントは、メモ、ハイライト、ブックマークを追加したり、Whispersyncテクノロジーによって複数の端末間で前回読んでいたページを同期することもできます。メモ、ハイライト、ブックマーク、前回読んでいたページの同期は、Kindleフォーマットでクラウドに格納したパーソナル・ドキュメントでのみ利用できます。PDFおよびTXTフォーマットのドキュメントは、そのままの形式で読むこともできます。」そのままの形式って(じか)にコピーして読めるってこと?■買わない理由はなんだろう。黒色だけ。丸っこいだけの幼稚な()造形。記憶領域が内蔵4GBメモリだけ。ガラス越しの仮想紙面。早すぎるスリープ(数分後)。眼前でちらちらうっとうしいであろう明るさ自動調整はオフにできるから問題なし(好みを学習するとか暗順応に対応するとか、考えは間違ってないしちょっと興味はあるが、試みが成功しているかどうか。俺は小賢しい機械を憎んでいる)。あとは……kindleであること?■■■@2014-09-19「EBook2.0 Magazine – Kindle Voyageとデジタル読書体験の新段階」背面はマグネシウムだって。これはプラス材料。そして評価保留中のボタンについても「PagePressは、ユーザーによるフィードバックと地道な実験の繰り返しによる成果だ」そうなので期待が増す。最近2台目の PRS-650を買った俺には不要だけど。


2014年09月14日 (日)

最終更新: 2014-09-20T17:08+0900

にゃんころりん

最近撮ったのでもない画像を今日アップロードする理由。

俺が座椅子に横になって本*を読み始めると、ベッドの上で丸くなったり伸びたりしていてもすぐに起き上がっていそいそと近づいてきて脇(座椅子の上だから狭い!夏は暑い!)に居場所を要求してきた。一昨日(おととい)にはもう階段もベッドにものぼれなくなっていたけど、座椅子にはやはり乗っかってきた。まんまと、まんまと誘いこまれてやんの。それでこそ二階から下ろしてきて待ち構えていたかいがあるってもんだ。もっとも、しつこく手招きしていると膝の上でしばらくお愛想したあとでタッと何の未練も感じさせずに去っていく付き合いのいいにゃんこのことなので、まんまとのせられているのがどちらかわかったものではないが。

* もちろん Sony Reader (PRS-650)。小さい本は全部自炊して捨ててしまってるし、大きい本をあお向きで読むのは腕がだるい。


2014年09月11日 (木) 「ドラッグ(空気抵抗)を7%も軽減できる」らしいです。「ロードバイク乗りがスネ毛を剃ることで生まれていた最大のメリットとは? - GIGAZINE」■しかしタイムを競う立場でない人間からすると夏に裾をまくって走ったときのふくらはぎがさわさわと風に撫でられる爽快な感じも大事だと思う。まあつまりこんだけあからさまな抵抗が生じてるってことだ。


2014年09月09日 (火) 参考にしたらしいリンク先でもこのように書いてあったのだが……。「これらの症状は理屈を聞けば分かりやすくて、血液中の糖を腎臓が尿で排泄しようとするから多尿・頻尿になり、」これは理屈ではなく腎臓の擬人化だろうと思うのです。■このことが高校生物のテストに出た。グルコース程度の分子量では腎臓(の糸球体)を素通りして原尿の中に移動する。この余計に存在するグルコースが原尿の浸透圧を上昇させその後の水分の再吸収を妨げるから尿の量が増える(のではないか)、と書いて○をもらった。そんなん知らんわ聞いてない、と諦めかけたのだけど、手持ちの知識(授業で聞いた腎臓の仕組み)で解けるはずの問題であるなら他にないだろうと。■検索して仕入れた用語。浸透圧利尿。


2014年09月08日 (月)

最終更新: 2014-09-23T22:29+0900

[BAD BOY] フロントをディスクブレーキ化

 20140906 油圧式ディスクブレーキをフロント用に購入した。

  • レバー=シマノ SLX BL-M675B。キャリパー=シマノ SLX BR-M675-MF(F03C-M/フィン付きメタルパッド)。ディスクローター=シマノ SM-RT66-M 180mm。ブレーキホース=シマノ SM-BH90-SB 1000mm。
  • ローターには取り付けボルト(6つ)が同梱されていた。アダプタ(SM-MA-F180P/S)には取り付けボルト(2つ)が同梱されていた。念のために買ったスチールボルト(12本入り)は無駄になった。
  • ローターを次は Ice-Tech(三層構造)のものにしたい。型番でいうと SM-RT86M(¥4000)。6穴ハブなんだからシマノにこだわらない方が選択肢が多かったりする。HAYESは効きが高評価。オイルは毎年交換するものらしい。使い方によるしタッチの劣化が気にならないならその限りではないが。レバーを握った状態で固定するとそのうち(一週間後とかね)シールからオイルが漏れてくるらしい。完全にエア抜きができていれば案外立ててもひっくり返しても空気を噛んだりしないらしい。でもそれってオイルが膨張して勝手にピストンを押したりしないんだろうか。

 20140908 ディスクブレーキ(SLX M675B)取り付け完了。

  • ブレーキホースのレバー側の固定について。締め付けたボルトにオリーブという部品が押しつぶされ変形して完了するのだが、不明な点が2つ。

    1. ブレーキホースが抜けない理由。
    2. ブレーキホース交換に際して変形したオリーブが中に残らず抜けてくる仕組み。

    仮の回答。オリーブは外側にではなく内側につぶれてコネクティングインサートとのあいだにブレーキホースを挟み込んで一体化する。オリーブがボルトに阻まれて抜けないからホースが抜けない。

  • 万力なんて普通ないよね?アンギラスで握った固定用ジグのへりを台に乗せて金づちでコネクティングインサートを叩き込んだ。
  • オリーブの位置についてわからないこと。端から2mmだとシマノの説明書にはある。だがコネクティングインサートを押し込んだ後でもオリーブは自由に動き、抜き差しもできる。レバーの内部にホースを差し込んだとしてもオリーブの位置はレバーの内部の径によってのみ決まり、ホースの端から2mmの位置に固定などできない。コネクティングインサートを押し込む際のガイドとして流用するための指示だったのだろうか。大して重要でないくせに無駄に詳細で困惑させられた。それよりもホースをレバーの再奥につっこんで固定しておくのが重要。
  • エア抜きに使うシリンジ(注射器型のあれ)がなかったのだが、じょうごとホースと袋だけでもなんとかなった。キャリパーから注入するかレバーから注入するかの違いだけだしね。その代わり、キャリパーからのエア抜きとレバーからのエア抜きを2セット行った。2セット目でも下からと上からどちらからも気泡が出てきた。レバーの握り具合(★)から判断して3セット目はやらなかった。★むきになって強く握ればどこまでもにぎれそうなぐにぐにではあるが、サーボウェーブ(※動き出すまでが固い。キーボードのクリック感を演出する抵抗の変化を想像するとよい)の作動領域(=握りのあそび、レバーの遠さ)を最小にするとレバーの動きに即座に反応して急速に抵抗が増していく。この感触はブレーキホースの弾力なんかね?最後まで残った空気を圧縮してるのかね?
  • 7mmのメガネレンチもなかったので小さいモンキーでブリードニップルの開け閉めをした。同じモンキーで Vブレーキの台座も外した。モンキーは(非対称なのを見ればわかるが)回す方向が決まっている。幅を合わせるときは閉めて合わせるのではなく開けて合わせる。実はメガネレンチをアマゾンで昨日注文していたのだが待てなかった。ちなみに同時に注文したT25も到着が待てなかったのでホームセンターで買ってきて作業した。ブリードニップルのゴムキャップは脱落しないようになっているのだが、完全に外してしまった方がゴムホースを深く挿入できてエア抜きの最中にホースが抜ける不安を減らせる。
  • キャリパーの位置調整は、ボルトを締める前の仮決めではしっかりパッドがローターから離れているのに、レバーを握りながらキャリパーを完全に固定すると引きずっていた。レバーを握るとローターがたわむ。キャリパーでなくローターの方が動いてら。2回やって2回とも同じなので手でテンションを掛けながら締めたら解消した。一発ではなかったけどこの調整の容易さはさすがのポストマウント方式。ここで突然トイレの窓の話。ラッチが前後方向にずれてる場合は受けを前後させるように、上下方向にずれてる場合は出っ張りを上下させるようにとの注意書きがある。それぞれの取り付け面が垂直に交わっているので、共通の移動軸が1本(左右)と固有の移動軸が1本ずつ(上下/前後)の計3本の調整軸。キャリパーの取り付け面をローターの面と垂直にして調整用の軸を増やしたのがポストマウント方式。そりゃあ普及します。他分野ではラジアルマウントと呼ばれるものがあるらしい。
  • ブレーキホースの固定はフォークの内側に付いていた CATEYEのサイクルコンピュータのセンサーの内側に引っ掛けた。長さの関係で外向きにテンションがかかってるし、キャリパー-フォーク-ハンドル-レバーの位置関係って変わらないから外れそうにない。とはいえ、リヤブレーキワイヤーとシフトワイヤーは動くのでマジックテープを補助に使った。このマジックテープはエア抜きの時にレバーを握った状態で固定していたもの。
  • フロントを Vブレーキからディスクブレーキにかえたのにはいくつか理由がある。

    1. 雨天でも変わらない性能に期待して。カートリッジ式 Vブレーキシュー M70R2は雨の下り坂などでブレーキをかけ続けるとすぐにガシュウウウウウウとやすりがけでもしてるような音がするので握ったり離したりして掃除しないといけない。またこの M70R2の使い心地は、晴天に限るのだが、S70Cに劣っている。それでも M70R2を使っていたのは数度の雨天走行で溶けてなくなったりしないから(雨の S70Cは使い心地を云々できる物ではないということ)。メタルパッドは溶けないだろうと期待しているし、バイクでおなじみ油圧のタッチにも期待している。
    2. Vブレーキの効きが周期的に変化してコントロールが難しい。完成車付属のホイールなので今年で8年目。リムの偏摩耗が原因。ホイールにお金を出すかブレーキにお金を出すかという選択だった。6穴ローター対応のハブだったのでディスク化にあたってホイールの変更は不要だった。

以上の文章は/ds14050/badboy/log/[BADBOY] meter-log.txtからのコピペ。

すでに済んだ後だけど、シマノが定める詳細な作業手順が断片的にしかわからなかった。パーツに付属していたのは大部分が一般的な注意を記した同じ内容のものだった。キャリパーとレバーの構造(バンジョーを取り付けるのはどこ?どっちが上?じょうごを取り付けるのはどっち?どこが調節部位でどこが構造部品?)はスモールパーツリストで確かめた。http://si.shimano.com にアクセスするとディーラーマニュアルというものがダウンロードできたらしい。製品情報からアクセスできるようにしてください。あと旧製品の情報にもアクセスできるようにしてください。スクリプトで展開するドロップダウンリストを唯一のナビゲーションにしないでください。


あ、やっぱり。

44 :ツール・ド・名無しさん:2013/03/22(金) 00:38:11.48 ID:???
    締めすぎてオリーブが潰れすぎ、ホースがレバーやキャリパーから抜けなくなった例は聞いたことがある。 

レバーの内側が先細りになってたら抜けやすいかもね。

こちら(↓)はすでに試した感想と一致している。

49 :ツール・ド・名無しさん:2013/03/22(金) 20:22:31.77 ID:???
    漏斗は必須だけど注射器は必須じゃない
    使えばブリーディングで使うオイルの量を減らせるから使うけど

50 :ツール・ド・名無しさん:2013/03/22(金) 21:53:17.23 ID:???
    >>46
    リザーバー開けて上からやるならどちらも不要。
    ただしめんどくさい時間かかる 

XTRではないけど組み付け前と後のサーボウェーブの感想が598と同じ。

598 :ツール・ド・名無しさん:2013/06/10(月) 20:46:34.13 ID:???
    現行のXTRサーボウェーブに文句ある人って、もしかして実際に山で使った事ないのでは?
    確かに組み付け前に握るとまさに磁石って表現が上手いと思うけど、
    山で実際使うとレバータッチに不満は無いけどな。 

サーボウェーブっていうのはレバーの軸(?ピストンを押す位置?)が移動する機能らしい。支点が移動しててことか減速比みたいなものが変化するような。力がいらない握りはじめはパッドの移動量を大きくしておき、パッドがローターに当たってからはその逆で、レバーの移動量を大きくすることで握る力の上昇を抑え、また、コントロール性を増す、というような。

改めて見てみるとシマノのページにそのまんま同じ効用が書かれていたけど、原理を示してくれないと、調子のいいこと書いてんなーと感じるだけで真剣に受け取らないよね。名前がそれを示していたのかと思って調べてみたけどあんまりそうでもない。「サーボ‐ブレーキ【servo-brake】ブレーキ‐ペダルをふむ力に応じて、他の力源によって、ブレーキ操作力を助けるブレーキ。他の力源としては電力・空気圧・真空・油圧を用いる。(広辞苑 第六版)」

ところでたとえば、パッド側のあそびを打ち消すようにレバー側にマイナスのあそびを付けられたら、最初から弱い力と大きい移動量(それでも握りきってしまわない)で握れるのに加えて、リニアに反応するブレーキになるんじゃないのかと思うんだけど。油圧の原理・構造・制限を理解していない思いつきだけど。引きずりやすくなるかな。

【SHIMANO】XTレバー:脱サーボウェーブ!:MTB CUSTOM BLOG:So-netブログ

べつにサーボウェーブに不満はないのだけど、レバーを近づけるとシフトレバーとの間に指が挟まってブレーキの邪魔をするのが問題なわけで。とくにシフトアップが連続する発進のときに。ブレーキレバーの形で改善できる問題でもあるしシフトレバーを中央に寄せてもいいけど、後者は違和感が大きくてやめた。


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内容と全然結びつかないよ……ってそれはそうか。危うく自分の無知と偏見をさらすところだった。