Uniformed Resource Identifier
<body>
}{<script>
}{Aejs}{defer 属性}{希哲15年4月1日の開発}{描画速度}{二度手間}{link rel="preload"}(53)いったん終了。
デルン初期実装からか,@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)たまにデライトを使っている個人機の画面全体を撮りたくなることがあるが,様式が定まっていなかったため,軽く調整して終了。
dwm の最小主義はデライトと相性が良いのでそのまま使ってしまうことにした。いま気付いたが,名前もデライトっぽい。
ただ,ほとんど素の状態であるため,右上に dwm-6.1 等と表示されているのがみっともない。画面撮りの時は「Delite ft. dwm」と表示しておくことにした。
最初は config.h で変えるのかと思ったが,xsetroot で変えるところらしいので引装して変えてみた。
舞覧は Firefox の最新版でいいだろう。
宣伝のためにも URI は表示させておきたいのでアドレスバーはあえて表示させておくが,雑音にならないよう余計なアドオンは表示させないようにしておく。
「輪郭に空白名があると検索→新規作成の際にASCII加算符に置き換えられてしまう」という不具合報告について,ようやく尻尾が掴めた気がしたので再調査に入る。
結局,decodeURIComponent() が + を半角スペースに置換しないというよく知られた落とし穴のせいだった。
decodeURIComponent() に渡す前に置換処理をしておくというのが定石らしいので @URI.dcd() を修正。
+ と半角スペースという時点で URI 符号化絡みの問題なのは明らかだったが,最初の調査では交度に論理的な問題が見つからず,再現性も明確ではなかった。
当然,全知検索窓に直接入力すれば問題なく,Firefox ではアドレスバーの URI を直接編集して半角スペースを含んだ検索をしても問題なかった。問題は,アドレスバーに直接検索語を入力した場合で,この場合は %20 ではなく + に半角スペースが置換され,これが JavaScript 側ではそのまま通っていた。
更に問題をややこしくしていたのは,捌き手では問題なく + を半角スペースに復号していたため,そのような検索をすると表示上も描出も問題なく行われるが JS で制御している描出後の転送先のみ + が残った検索になっていたことだった。
さっき何となく半角スペースを含んだ検索語から描出したことで再現し,交度を見直してもやはり問題が分からず,まさかと思って decodeURIComponent() の仕様を確認したところで原因が判明した。
今後のためにもなる勉強になって良かった。