{<script>}{Aejs}{進捗記録}{defer 属性}{希哲15年4月1日の開発}{描画速度}{二度手間}{link rel="preload"}{速度差}{DOM 構築}...=}(53)

{希哲15年4月1日17歩 K#F85E/E74C-FE68}

Aejs@icl() とその周辺見直し

いったん終了。

デルン初期実装からか,@icl() では Document.write() 相当の @doc.wr() を使って script 要素を書き出していたが,これは様々な面で好ましくない。こんな実装にした経緯失念したが,装体書で同じようなことをする @apd_ss()@elm.bld..apd()Node.appendChild())を使っているところをみるに,テンプレート上で書き出し位置を指定しやすいといった理由があったのだろう。

特に,昨日まで Aejs にあった干渉不具合を回避するのに有用ではあったが,もはや不要なのでここで周辺とともに整理しておいた。

まず,@icl() を @elm.bld..apd() を利用した実装にし,スクリプト調整を行なった。AdSense より前の位置に配置していたため,これを body 要素末尾のその他ライブラリ前に移動した。非同期になったことで DOMContentLoaded が終わっている可能性があるため,Document.readyState を利用して DOM 構築完了後であれば即実行する処理を @() に加えた。

更に,各スクリプトに defer 属性を付け,直書きしている部分は addEventListener() で DOMContentLoaded を待ってから実行するようにした。ここはスクリプトを通さず捌き手側で直接書き出してもいいかと思ったが,試してみたところ大して速度差が無かったため,現状維持とした。

更に,link rel="preload"導入,ついでに cfg.vs で設定していた隠し破りテンプレート側で設定し,@icl() や @apd_ss() に引数として渡すようにした。テンプレート側で直接記述している URI に利用出来ず,修正作業でよく二度手間が発生していた。

ここまでの作業で体感的描画速度向上が見られた。ただし,速くなった分描画過程が見えてしまうようになったため,明日装体書調整を行うことにした。

未出振るい

=}
{lightgray}{silver}{進捗記録}{出放り}{<a.URI>}{希哲15年3月22日の開発}{薄過ぎ}{記号的}{直書き}{太さ}...=}(33)

{希哲15年3月22日6歩 K#F85E/E74C-996B}

デラング整備Dex 実装作業

途中で終了。

輪結装体を少し見直し

輪結種別を表すため出放り輪結装体下点線にしていたが,一見淡い直線紛らわしいため下破線1pxに対し2px太さということもあり,若干目障りに感じることがある。

特に,URI直書きすると記号的表現過剰に感じるため,#999 から lightgray に変えることにした。

下点線はこれで統一してもいいかと思ったが,普通のアンカーテキストでは薄過ぎて気付きにくいため,出放りは silvera.URI のみ lightgray とした。

=}
{デラング}{進捗記録}{希哲16年1月19日1歩}{希哲15年3月22日の開発}{交度記法}{パーセント符号化}{出力時変換}{入力時変換}{描出時}{希哲15年3月22日の進捗時限}...=}(24)

{希哲15年3月22日2歩 K#F85E/E74C-926D}

デラング整備

途中で終了。

URI をそのまま書いた時,パーセント符号化可読性の妨げになっているため,復号して表示させることにした。

編集時可読性を考えると描出時変換してもよさそうだ。そのまま書きたい時は交度記法を使えばいい。

これに限らず,最近,デラング入力時変換出力時変換両面から考える必要があると感じている。

=}
{デライト}{進捗記録}{Firefox}{希哲15年3月15日の開発}{config.h}{相性が良い}{デライトと dwm の様子}{Delite ft. dwm}{希哲15年3月15日の進捗時限}{希哲15年3月15日の進捗}...=}(33)

{希哲15年3月15日8歩 K#F85E/E74C-1CDD}

たまにデライトを使っている個人機画面全体を撮りたくなることがあるが,様式が定まっていなかったため,軽く調整して終了。

dwm最小主義デライト相性が良いのでそのまま使ってしまうことにした。いま気付いたが,名前もデライトっぽい。

ただ,ほとんど素の状態であるため,右上に dwm-6.1 等と表示されているのがみっともない画面撮りの時は「Delite ft. dwm」と表示しておくことにした。

最初は config.h で変えるのかと思ったが,xsetroot で変えるところらしいので引装して変えてみた。

舞覧Firefox最新版でいいだろう。

宣伝のためにも URI表示させておきたいのでアドレスバーはあえて表示させておくが,雑音にならないよう余計なアドオンは表示させないようにしておく。

結果としてこんな感じになった

=}
{不具合報告}{進捗記録}{交度}{Firefox}{希哲15年2月16日の開発}{半角スペースが + に置き換えられてしまう不具合について}{%20}{原因判明}{@URI.dcd()}{希哲15年2月16日の進捗時限}...=}(46)

{希哲15年2月16日3歩 K#F85E/E74C-7917}

輪郭に空白名があると検索→新規作成の際にASCII加算符に置き換えられてしまう」という不具合報告について,ようやく尻尾が掴めた気がしたので再調査に入る。

原因判明修正完了

結局,decodeURIComponent()+半角スペース置換しないというよく知られた落とし穴のせいだった。

decodeURIComponent() に渡す前に置換処理をしておくというのが定石らしいので @URI.dcd()修正



当然,全知検索窓に直接入力すれば問題なく,Firefox ではアドレスバーURI を直接編集して半角スペースを含んだ検索をしても問題なかった。問題は,アドレスバーに直接検索語を入力した場合で,この場合は %20 ではなく + に半角スペースが置換され,これが JavaScript 側ではそのまま通っていた。

更に問題をややこしくしていたのは,捌き手では問題なく + を半角スペースに復号していたため,そのような検索をすると表示上も描出も問題なく行われるが JS で制御している描出後の転送先のみ + が残った検索になっていたことだった。

さっき何となく半角スペースを含んだ検索語から描出したことで再現し,交度を見直してもやはり問題が分からず,まさかと思って decodeURIComponent()仕様確認したところで原因判明した。

今後のためにもなる勉強になって良かった。

{URI}

{}