Web Picture
{希哲17年4月16日の開発 K#F85E/E74C-C052}
宇田川浩行{希哲17年4月16日2歩 K#F85E/E74C-EB5D}
宇田川浩行pdftoppm
}{譜類添付機能調整}{譜類添付機能}(116){希哲17年4月5日の開発 K#F85E/E74C-3148}
宇田川浩行譜類添付機能調整など。
細かい挙動の調整を終えてから 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 埋め込みの様子)。
一つ,添付譜類の握接権限の課題は残した。現状,場筋が分かっていれば誰でも握接出来るが,デライトの性質上大きな問題ではない。エクスポート機能で譜類の握接制御を実装するのでそれを応用することにした。
{希哲17年4月5日8歩 K#F85E/E74C-5EA8}
宇田川浩行調整・手定めを終え,ここでいったん出振るい(昨日うっかり中途半端な状態で全体出振るいしてしまったため,譜類添付機能周りで不具合があったかもしれない)。
添付代置子を追加し,貼り付け・ドロップによる添付も使えるようになった。用合い面でもほぼ完成形か。
添付代置子
3月27日の開発で考案した,送信中に挿入しておく添付代置子は,最終的に <!-- +[拡張子] [文言]...[追加ピリオド] -->
の形式となった。日本語・WebP であれば,<!-- +webp 送信中... -->
となる(3月27日の開発記録で「読み込み中」と書いていたのは単なる間違い)。
まず描写内を探索し,埋め込み済みでなければ添付代置子を挿入する。この時,添付代置子が固有の文字列となるように,必要であればピリオドを追加していく。送信完了時,成功なら埋め込み記法に置換,失敗なら消去する。貼り付けのために,描写欄に捕活中はカーソルの位置に代置子を挿入するようになっているが,捕活していない場合は末尾に追記する。また,送信中に代置子が書き換えられた場合は無視して埋め込み記法を末尾に追記する。
その他
cwebp
}(187){希哲17年3月24日の開発 K#F85E/E74C-A57A}
宇田川浩行いくつか課題は残ったものの,これで譜類添付機能の基礎が出来た。輪郭選り手の領当てもほぼ完成形と言っていいだろう。本当努を通して,関連仕様検討や,中途半端だった libxtd の譜類操作関連交度の整備なども大きく進んだ。
用合いとしては,録入り中の描写選り手左下に譜類添付ボタンを置き,譜類選択と同時に上信を開始,完了したら埋め込み記法で +[拡張子]
を追記,下見を開く(開いている場合は更新する)という形になった。すでに同拡張子の添付譜類が存在する場合は上書きする。予定通り,描写内の参照を消して描き出し・描き直し,または輪郭削除で削除されるようにした。
当初,譜類選択後に専用の下見機能付き小窓を開き,確認してから送信,という用合いを考えていたが,素早く描き出したい場合に煩雑になり,交度の複雑化に見合わない可能性があるため見送った。「送信中...」,「+[拡張子]
を追記しました。」,「.[拡張子]
で保存しました。」(上書きの場合)の3種類のメッセージを @msg
で表示し,下見に関しては既存の下見機能を利用すれば十分なことに気付いた。描き出し前には上信せずスクリプトで保持することも検討したが,これもページ遷移などへの対応も考えると無駄な複雑化を招く可能性があるため見送った。
対応形式はとりあえず JPEG,PNG,GIF,WebP のみ。WebP 以外の場合は長辺が1920px以下の WebP に変換する。WebP の上信に関しては,ImageMagick の未対応パッケージがまだ多いことなどから,1MiB のサイズ上限のみで対応することにした。その他譜類のサイズ上限は原則として5MiB。サイズ上限以外は基本的に kn upl
の仕様に合わせたが,cwebp が ICC プロファイルも捨ててしまう問題に気付いて kn upl
ともども -metadata icc
を加えた。
埋め込み記法では,拡張子のみ,知番と拡張子の組み合わせに加えて,輪符と拡張子の組み合わせにも対応した。
下見機能を利用するために添付譜類の舞覧隠し戦略も見直した。結局,譜類の更新時印から隠し破りを付与出来るようにし,隠し破りの有無で Cache-Control
の public
と no-cache
を切り替えられるようにした(5歩。これまでは一律 no-cache
だった)。Dex が実譜類に依存するのは水平拡大を考えるとどうかと思ったが,そのうち KNEST 隠し化すればいいと判断した。
最後の最後で,領下手定め環境で問題なかった新規描出フォームの添付譜類が本番環境では 404 Not Found
になるという問題にはまったが,これは systemd の PrivateTmp
による問題であることが分かり,一時的に無効化してから問題無いように修正し,元に戻した。新規描出フォームでは無駄に永続譜類を残さないように /tmp/
を利用していたことが原因だった。最終的に,これが大して意味を持たない設計になったので再描出フォームと同じ自我台録を利用することにした。
{希哲17年1月12日9歩 K#F85E/E74C-54A2}
宇田川浩行この際,譜類添付機能の仕様を完全に固め,新生全知検索整備に戻る前に実装してしまうことにした。仕様・方針をまとめて終了。
まず,最初は上信対応形式を JPEG,PNG,GIF,WebP のみとし,サイズ上限は5MB,最大長辺は1920px,WebP 以外は一律 WebP 変換する。このあたりの仕様はとりあえず実績のある kn upl
に合わせておくことにした。
希哲15年9月3日の開発では WebP 統一は時期尚早として見送っているが,同年12月3日の開発から写真上信のため WebP 統一を決め,実践を通して全く問題ないことが分かっている。
予定通り,利用者毎の容量上限は定めず,状況次第で一時停止出来るようにしておく。