/
は意外と合理的かもしれない K#F85E/E74C-D499}演算子多重定義の大原則は意味的な整合性を破壊しないことなので最初はひどい言語だなと思ったが,「ノードを分割する」という意味まで考えているならむしろあっぱれ。
.zip
}{希哲17年4月14日の開発}{希哲17年4月14日の進捗}{希哲17年4月14日}{含められる}{確実ではない}{移動される}(125)サイクリング中に良い思い付きがいくつかあり,エクスポート機能も想定以上に洗練されたものになりそうだ。
KNo.[自我番号].[作成日].[期間開始日]-[期間終了日].zip
とすることにした。README.txt
を加えることにした。添付譜類代替 HTML については,以下のような形式で早速固まった。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>添付ファイルについて</title>
</head>
<body>
<p>この添付ファイルは下記 URL に保存されています。</p>
<p><a id="here" href="https://dlt.kitetu.com/KNo.XXXX/XXXX.webp">
<code>https://dlt.kitetu.com/KNo.XXXX/XXXX.webp</code>
</a></p>
<p><strong>大切なファイルはご自身で別途保存してください。</strong></p>
</body>
</html>
これならあらゆる状況で人間も読みやすく,<a#here>
としておけば機械的処理もしやすい。
さらに,正規表現(PCRE) id="here" href="(.*?)"
で添付譜類の URL を抽出出来るように保証することにした。つまり,以下の駒手が常に成り立つようにする。
$ grep ' id="here"' XX.webp.html | perl -pe 's/.* id="here" href="(.*?)".*/\1/'
https://dlt.kitetu.com/KNo.XXXX/XXXX.webp
場筋から導出出来なくもないが,移動される可能性もあり,確実ではない。特に,自我知番が確実に場筋に含まれる保証が無い。
pdftoppm
}{譜類添付機能調整}{譜類添付機能}(116)譜類添付機能調整など。
細かい挙動の調整を終えてから PDF 埋め込み対応を完了,譜類添付機能も全体として完成形と言える状態になり,ようやくエクスポート機能実装に移れる。
3月24日の開発時点では,添付ボタンと埋め込み記法でラスター画像(JPEG, PNG, GIF, WebP)が扱える程度で機能実装の一段落としたが,SVG,動画,音声までの埋め込み含めての対応,その他主要文書譜類対応,添付代置子の導入,貼り付け・ドロップ対応,更に PDF 埋め込み対応と,現時点でやりたいことは一通りやってしまった。一段落とは言ったものの,中途半端感が残りいまいちすっきりせず,デライト公式での機能紹介も出来ていなかった。
PDF 埋め込み対応に関しては,PDF.js と pdftoppm
が優秀だったおかげで意外とあっさり実装出来た。特に PDF.js は viewer.html
の場筋と PDF 譜類の場筋を組み合わせて <iframe>
の src
属性に渡せばいいだけで,スクリプト側の対応も簡単だった。
最初のページを pdftoppm
で JPEG に,cwebp
で WebP に変換,その画像をクリックで縦サイズを合わせた <iframe>
に置換し viewer.html
を読み込む。読み込み中の進捗表示も viewer.html
が行ってくれるので,これだけで違和感なく軽快な PDF 埋め込みが実現出来た。一応,「(.pdf
添付ファイル)」の形で小書き輪結も添えるようにしておいた(PDF 埋め込みの様子)。
一つ,添付譜類の握接権限の課題は残した。現状,場筋が分かっていれば誰でも握接出来るが,デライトの性質上大きな問題ではない。エクスポート機能で譜類の握接制御を実装するのでそれを応用することにした。
また壊衝が発生するようになったため修正,出振るい済み。紛らわしい問題だったが,原因ははっきりした。
_404
の場筋で 404 Not Found
ページを定義していた。_404
の参照先がなくなり 404 Not Found
を返すべき場面で壊衝が発生するようになった。404
の場筋で 404 Not Found
ページを定義したが,正規表現で定義することを忘れていたため,404
を含む全ての場筋で 404 Not Found
を返すようになった。^404$
に厳密化。この時,参照に使っていたのが _404
だったことを忘れていた。_404
も引っかからなくなり,再び壊衝が発生するようになった。\>
}{ドライブレター}(37)駒手記法のコマンド プロンプト・PowerShell 対応について検討して終了。
以下のような形で実装していくことにした。
:> [コマンド プロンプトの駒手]
C:\> [〃]
PS> [PowerShell の駒手]
PS C:\> [〃]
以前から対応については考えていたが,Windows 系の駒手欄の特徴をどう掴むかが難しかった。
PowerShell は PS>
でいいとして,コマンド プロンプトが C:\>
では明らかに冗長だ。ドライブレターや場筋の情報は必要ないことの方が多いだろう。越化記法との兼ね合いを考えると \>
も採用しにくい。となったら,:>
しかないだろうということになった。ドライブレターや場筋は任意で付加出来ることにする。