希哲13年1月3日,デルンの API 体系を指す用語として考案。
REST をもじった「KNEST」という語感が気に入っただけで特に何かの略から出来たわけではないが,後付けで仮に knower easy state transfer(知機簡易状態転送)の略としてみたら意外としっくりきた。
「茶番はいいから早く案内しろ」と思った方はこちら
C:\User\rin> pwsh
PS C:\User\rin> wsl --distribution Synicware
[foot=*~]$ ssh rin@localhost:42860
[{rin@Dialektix K#C428}=*~] : ! kn pst 'knest:///?fmt=stt&kno' -d "knm=デライトの公式情報へのリンク集&dln=" --cky ~/K#/ath/cky
[{rin@Dialektix K#C428}=*~] : kn rdrw
\(\largeデライトよくわからんし\)
★★☆☆☆
フルパワーであなたを使う気はありませんからご心配なく…
★★★☆☆
ならば、ここに残そう道するべしるべ(※)
ご意見箱あります。
アンタが私のメモ帳? まぁ、悪くないかな…。私は渋谷凛。デライトなんて全然興味なかったけど、何かをみつけられるんだったら…やってみるよ。だから、よろしく
★★★★\(\footnotesize\textcolor{orange}{\infty}\)
(´・ω・)っ旦~
I drew this gyokuro using TwEgaku, a handwritten note-taking service. This service stimulated my creativity. I appreciate the developer of this service.
書き方
!!!--
❗注意❗::
{:< この輪郭は//##非##公式//です K#804C/FBBB} {> K#3333:}
--
+``latex
🍵^{\textcolor{LawnGreen}{~~}}_{ここから茶番}🍵^{\textcolor{LawnGreen}{〜~}}
``
!!--
「茶番はいいから早く案内しろ」と思った方は*{:##こちら## K#C7C6/18F3:}*
--
C:\User\rin>pwsh
PS C:\User\rin> wsl --distribution Synicware
[foot=*~]$ ssh rin@localhost:42860
[{rin@Dialektix K#C428}=*~] : ! kn pst 'knest:///?fmt=stt&kno' -d "knm=デライトの公式情報へのリンク集&dln=" --cky ~/K#/ath/cky
[{rin@Dialektix K#C428}=*~] : kn rdrw
#デライト #リンク集 #意見広告(^ユーザーによるステマ)
> $\largeデライトよくわからんし$
> ★★☆☆☆
--{;デライト触ってみたけど…… K#0000}
>>
フルパワー(^戦闘力530000)で あなた(^デライト)を使う気はありませんからご心配なく…
★★★☆☆
--{:デライト完全に理解しましたが…… K#B9B7}
--
私もよくわからなくなるし > 中級者も案外わからなくなるし > だから上級者をすぐに狙えるんだな >
なんなら異端者狙っちゃう? >
ならば、ここに残そう道~~するべ~~しるべ*{((※)) K#804C/6055}*
登場するアイコン::
{: -- デライト公式アカウント K#C7C6}
{: -- デライト作者 K#F85E}((ほぼ公式))
## これが、{これたち K#804C/6BAB}が{デラング K#804C/AB68}だ!!
*{:デラング紹介 K#C7C6/B7FF}*
1. {##見出し##記法に対応しました! K#C7C6/E9FF}
1. {##ダッシュ##記法と##出典##記法も──出来ました! K#C7C6/119B}
1. {##パンくず##記法・##前次##記法もあります! K#C7C6/5971}
1. {##文字装飾##記法も出来ました! K#C7C6/53DF}
1. {##注意補足##記法が出来ました! K#C7C6/D6E8}
1. {他の##輪郭の埋め込み##が出来るようになりました! K#C7C6/5C65}
1. {##コマンド##記法が完成しました! K#C7C6/423B}
1. {##コード##や##数式##ももちろん使えます! K#C7C6/0D78}
1. {##キーボード##記法もあります! K#C7C6/FC36}
1. {##色見本##記法もあります K#C7C6/8386}
1. {##キラキラ星##記法もあります! ★ K#C7C6/FC3E}
!??--
**{:デライトの記法(デラング)について K#F85E/E74C-869F}**
--
##まだある[[ぜよ!?]]
*{:お知らせ K#C7C6/EB32}*
1. {##ルビ##記法を強化(パワーアップ)しました! K#C7C6/9110}
1. {##リスト##記法、##埋め込みツイート##に対応しました! K#C7C6/339F}
1. {##YouTube## 動画の埋め込みに正式対応しました! K#C7C6/FE02}
1. {##ツイートの埋め込み##も便利になりました! K#C7C6/15C6}
1. {描写##拡縮##ボタンが出来ました! K#C7C6/1A43}
1. {##下書きバックアップ##一覧も出来ました! K#C7C6/79F3}
1. {##自動ページ展開##機能が出来ました! K#C7C6/3E01}
1. {##前方一致・後方一致検索##用の演算子を追加しました! K#C7C6/730C}
1. {##知番が短く##なりました! K#C7C6/D793}
1. {##利用者番号を省略##出来るようになりました! K#C7C6/4D52}
1. {輪郭を##「未公開」##に出来るようになりました! K#C7C6/5BFA}
1. {##輪郭間のリンク##が張りやすくなりました! K#C7C6/03D2}
1. {##UI## を大改良いたしました! K#C7C6/3E32}
1. {引き入れ欄で##複数の輪符##に対応いたしました! K#C7C6/88FB}
1. {輪郭##削除##機能が出来ました! K#C7C6/4FA1}
1. {##全文検索##機能を導入しました! K#C7C6/FDFE}
1. {##CodePen## の埋め込みに対応しました! K#C7C6/3858}
1. {数式記法で##化学式##に対応しました! K#C7C6/5E75}
1. {##SlideShare## の埋め込みに対応しました! K#C7C6/21AF}
1. {##Mermaid## に対応しました! K#C7C6/8840}
1. {##化学記法##が出来ました! K#C7C6/C726}
1. {##新規描出がしやすく##なりました! K#C7C6/A47E}
1. {輪郭の##複写##機能が出来ました! K#C7C6/8447}
1. {##ダークテーマ##が出来ました! K#C7C6/080B}
1. {検索窓##固定##機能と##ショートカットキー##を追加しました! K#C7C6/6E04}
1. {##閲覧専用モード##が出来ました! K#C7C6/AA95}
1. {##検索結果へのリンク##記法について K#C7C6/F632}
1. {##Speaker Deck## の埋め込みに対応しました! K#C7C6/87CF}
1. {##更新検知##機能が出来ました! K#C7C6/CC0E}
1. {##ファイル添付##機能が出来ました! K#C7C6/737C}
1. {##10万字##まで書けるようになりました! K#C7C6/D806}
*この思い、{運営 K#C7C6}に伝えたい----
ご意見[_箱_]あります。
- **{:ご要望 K#C7C6/AE09}**
- **{:ご質問 K#C7C6/DA10}**
- **{:不具合報告 K#C7C6/BA4A}**
= ふーん、
>>
アンタが私のメモ帳? まぁ、悪くないかな…。私は渋谷凛。デライトなんて全然興味なかったけど、何かをみつけられるんだったら…やってみるよ。だから、よろしく
★★★★\(\footnotesize\textcolor{orange}{\infty}\)
--*{;\ce(P428\) K#804C/5B4A}*(([にどうしても言わせてみたかった K#804C/13E6]))
<-デライターの卵から | トップデライターの道へ->
= <
+``katex
🍵_{ここまで茶番}🍵
``
<pre style="color:currentcolor; font:16px/18px 'MS PGothic',' MS Pゴシック', Monapo,Mona, IPAMonaPGothic, 'IPA モナー Pゴシック', 'MS PGothic AA', sans-serif;">
(´・ω・)っ旦~
</pre>
+https://twegaku.towasys.com/i/6a5017c973ca4da6810d913e6a0f2e0a.svg
!?--
I drew this gyokuro(^玉露(^たまつゆ) using [TwEgaku https://twegaku.towasys.com/], a handwritten note-taking service. This service stimulated my creativity. I appreciate the developer of this service.
--
$$
^{ド \times 7}🍵^{ドドドドドドド}_{このへんも茶番}🍵^{ド \times 7}
$$
* <
!--
*{編集用リンク K#804C/F001}*
--
--
{なんでもメモ、デライト K#804C/E140} >
--------------------------
<!--######################################-->
<!--
ここから
お
ま
け
-->
<!--######################################-->
`おまけ`
`````なんと、コードブロックの中にコードブロック書けます.dlng
````いつものMarkdown.md
## タイトル
- 箇条書き
- 箇条書き
```コードブロック内コードブロック.js
const sugoi = "すごい";
```
````
`````
設定ページ整備,エクスポート機能実装からの改行交度正規化についての検討・修正作業で終了。
KNEST では,入力を適宜正規化することにより,原則として改行交度を LF として扱うことにした。これまで曖昧だったため,出場の dln
にも LF と CRLF が混在しており,Dex での処理前にいちいち正規化していた。出場の CRLF は置換し,描出時に正規化することにした。
libxtd の HTTP ライブラリの仕様にすることも考えたが,低層でいちいち厳密な検査などをしていると必要性に対して高コストになる。必要な場面は限られているため,KNEST で扱うべきと判断した。改行交度正規化用の Dex::nmlz_v()
は KNEST::nmlz_v()
に移動した。微妙に使いにくい位置にあり適当に写し貼りして使っていたのですっきりした。
改行交度の仕様を決めておく必要があるエクスポート機能実装がきっかけとなったが,これで将来的な混乱も防げ,多少無駄な処理も削れた。
領下手定め環境では置換・交度修正・手定め済みだが,急がないため未出振るい。
エクスポート機能では LF で決め打ちにするつもりだったが,仕様の見通しも良くなったので CRLF を選択出来るようにすることにした。
Windows 向けの CRLF と Windows 以外向けの LF として,用影で簡単に初期値を切り替えておけば十分だろう。
なぜ混在していたのかと思ったら,フォーム送信では CRLF,XMLHttpRequest
では LF というややこしい仕様の違いがあったらしい。前縁ではある時期から XMLHttpRequest
を主に使うようになっているため,実装の変化によるものだろう。
隠し破りを KNEST の一部として体系化することにし,仕様まとめと交度修正などを一通り終えた。緊急性は低いため未出振るい。
KNEST では,%Y%m%d%H%M%S
形式の求頼変数を隠し破りとして扱い(例:?20230101000001
),デライトでもこれで統一することにした。この時印形式を「詰め込み時印」(ts_jam
)と呼んでおく。
隠し破り導入以後,スクリプトや装体書などの主要静的譜類には ?upd=K170101.1
のように,希哲紀元での日付と連番の形式を基本的に使ってきたが,自我アイコン隠し破り対応では ?icon&upd=[Unix 時間]
になったり,添付譜類では ?[Unix 時間]
になったりと,統一感がなくなってきていた。
実用上はなんでも良かったが,譜類添付機能実装以降は用者の目に触れやすくなったため,簡潔さと分かりやすさを両立させる必要性を感じていた。Unix 時間では非技術者が理解しにくいし,技術者でも意図を理解するのに時間がかかる。それが不安に繋がることは好ましくない。特に簡潔というわけでもない。
確実性を重視するならハッシュを使うのが定石だが,抽象性が低いということでもあり,擬制的に扱いにくく,融通が利かない場面が出てくる。冗長さは一部省略で何とかなるにしても,やはり分かりにくい。
総合的に,詰め込み時印のみが一番無難だろうと結論付けた。更新時印でも整合性を保つやり方はいくらでもある。用者が意図を推測しやすく,開発者も手動で扱ったり異常に気付いたりしやすい。
強いて欠点を挙げるなら,更新日時を知られたくない人もいるかもしれない,ということくらいだが,デライトでは大きな問題ではないだろう。そもそも更新履歴を見られるサービスや投稿と同時に上信される SNS なら秘密情報ではない。
ウェブ捌きの設定などで小細工しやすいように,upd=
なり mod=
なり ts=
なりの値として表現することも再考したが,値として扱うことを想定していない文字列という特殊性を鑑みると,それはそれで違和感がある。14桁数字列の求頼変数は隠し破り,と明確に決めておけば十分だろう。
これを機に,これまでいちいち書き換えてきた主要静的譜類用の隠し破りの更新も,mk
の bld-etc
で自動化した。テンプレートの一箇所書き換えればいいようになっていたものの,積み重なるとそれなりの手間だった。
自動化するまでもない隠し破りの記述もいくつか残っているが,これは ?upd=K170101.1
なら ?20230101000001
というように置換しておいた。
テーマ切り替えボタンの用合い検討(4歩),新規描出フォームへの移動機能として吹き描き外背景のダブルクリック用合いの復活(10歩),全知検索ページャー周りの調整(16歩),こまごまとした領当て・装体調整(17歩)といった雑多ながら充実した作業を片付け,ついに描写後略機能を一段落させた(21歩)。出振るい・手定め済み。
描写後略機能により,デライト最初期から吹き描きの構造的問題だった「不必要な出与え読み込みの多さ」という問題が解消した。表示速度向上,通信量削減,SEO 強化,迷惑行為対策など多大な効果が見込める。
昨年末の壊衝不具合修正以後,デライトは速度・安定性ともにウェブ相振りとして十分な水準に達していたが,今回の高速化を経て,明らかにもう一つ壁を越えた感がある。体感として,「ウェブ相振りなら特に不満のない速さ」から「単動相振りと比べても遜色のない速さ」になった。
一昨年4月9日に掲げた「全ページ0.3秒以内表示」という目標は埋め込み利素を考えると現実的ではない気がしてきたものの,軽いページでは200ms台,重いページでも概ね300ms台で応答出来るようになっている。実感として欲しかった速度は手に入れられたし,最適化余地はまだまだ残しているので「埋め込み利素を除いてほぼ全てのページで0.3秒以内表示」なら十分手が届く。いよいよ本格的に,速さがデライトの武器になってきた。
ここで新生デライト開発におけるデライト高速化は一段落とし,今後は機能追加やトラフィックに応じた微調整に留め,別の機能整備に集中することにした。
その先のデライト高速化については,大きなところでは CDN 導入,KNEST による水平拡大,請い手の隠し機能整備,描写 HTML 隠し以外の HTML 隠し実装,そして中途半端な状態で放置しているページ付け求頼改良があるが,どれも現時点での優先順位は低い。
垂直拡大の余地も十分にあるので,当面は捌き手増強で対応出来るだろう。
23日の開発から始まった一連の高速化で終えた作業は,描写 HTML 隠し実装,KNEST 隠しのクローラー対策,描写後略機能実装の3つ。
全体として,実装コストは最小限に抑えつつ効果は最大化するような落とし所を見つけられた。
これまで Dex_T
には完成した HTML を返す道手しか無かったため隠し化出来なかったが,共通バッファを返す道手(Dex_T::buf()
)とそれを閲覧条件によって仕上げる函数(Dex::fin()
)に分離し,外部で共通バッファを共有出来るようにした上で KNEST 隠し化した。
実装は oln_T
に描写 HTML を持たせることも検討したが肥大化の懸念が大きいため,分離して専用の KNEST 隠し客体を用意した。
これにより,切り分けが難しく進まなかった HTML 隠し実装が部分的にではあるが初めて実現した。デラング処理は特に大きな部分なので,その他 HTML 隠し実装の優先順位が下がった。
24日の開発で出振るい・手定め済み。長大な描写が含まれるページでは体感速度向上が見られた。
KNEST 隠しは一定の成果を上げてきたが,足枷となっていた問題として,ボット,主にクローラーに反応してしまうというものがあった。特に輪郭隠しではほとんど活用出来ない隠しに記憶領域が圧迫され,無駄な設定処理とロックが発生していた。当然,描写 HTML 隠しでも問題になる。
そこで,ボット判定用の KNEST::req_I::b_bot()
を追加し,隠し設定用の函数群(輪数隠し以外)がボットと判定された握接で機能しないようにした。これにより,原則としてボットは KNEST 隠しを取得出来るが設定出来ないようになった。
ただし,ボット判定対象はとりあえず現時点で必要性の高い Googlebot, bingbot, Applebot のみ。迷惑クローラーの類は元々 nginx で弾くようにしているため問題ではない。適宜調整していく。
描写 HTML 隠しとともに24日の開発で出振るい・手定め済み。
昨年5月30日の開発までに実装イメージが概ねまとまっていた描写後略機能だが,描写 HTML 隠しのために共通バッファと仕上げ処理を分離するという方針から,切り分けが容易になり,一気に実装コストが下がった。
これまで,Dex_T
内部でデラング処理を中断・再開する機能としてイメージしていたため,複雑化の懸念が拭えなかった。複雑化は保守性の低下を招き,結果的に高速化にもならないということも考えられたが,Dex_T
では適当な間隔で区切り文字を挿入するだけに留め,仕上げ処理(Dex::fin()
)で切り出すという方式に単純化出来ることに気付いた。
Dex_T
が全体の行数・現在の行番号を設定する。Dex::bl_fdn_T
が部区間の境界で20行以上かつ残り行数10行以上の場合に越化参照 &_omt;
を挿入する。Dex::fin()
では全体・&_omt;
前後の3種類で出力を切り替える。div.omt
を検知し追加読み込みを行う。当初想像していたよりずっと単純化出来た上に,導入前後で使い勝手が全くと言っていいほど変わらなかったのは嬉しい結果だった。もう少し用者が意識するものになるかと思ったが,よく観察しないと気付かないほど透過的に導入出来た。輪郭小窓でも問題なく機能している。
高速化効果は言うまでもなく,長大な描写が多いページでは飛躍的に表示速度が改善した。
当初のデラング処理中断・再開機能はいったん断念し,請い手の負荷軽減を重視した格好だが,実際には捌き手側の負荷軽減もそれなりに見込めることが分かり,万々歳の結果となった。描写 HTML 隠しが活用出来る場面が想定以上に多かったこと,閲覧条件による置換処理の範囲を限定出来ることが効いている。
強いて描写後略機能の課題を挙げれば,ページ内検索の直感性を損うこと,スクロールバーで内容量が分かりにくくなることがあるが,いずれもそこまで気にする人は少ないだろうし,対策は出来る。
ページ内検索については, Ctrl + F に強制追加読み込みの省割キーを兼ねさせることが考えられる。内容量の目安としてのスクロールバーは厳密さよりも少なそうか多そうかがざっくり分かることが重要なので,例えば実際の内容量よりも少なく見えないように後略条件なり下余白を調整すれば実用上の問題は無いだろう。
ego
}{十分な実装}(49)出振るい・手定めをして終了。想定以上に円滑だったので,以前作った警告表示機能を汎用化し録入りページに誘導するようにした(録入り状態異常の様子)。最初は暫定的に通注で済ませようと思っていたが,意外と十分な実装になった。これで信頼性の問題はほぼ解消した。
KNEST の新規描出・再描出では ego
として自我知番を送ると録入り状態照合処理が走るようになったが,知機駒手などで従来通り使えるように省略可能にしておいた。
文言はとりあえず「ログイン状態に異常があるため、再度ログインが必要です。」としておいた。さらに,localStorage が有効な場合は「下書きは保存されています。」と付け加えるようにした。