diffshare / imgs Goto Github PK
View Code? Open in Web Editor NEWimgs is Secure Image Upload/Viewer used end-to-end encryption on Cloud Storage(e.g. Firebase Storage).
imgs is Secure Image Upload/Viewer used end-to-end encryption on Cloud Storage(e.g. Firebase Storage).
単体表示時の前後画像表示操作が期待通りに動作していません。具体的には、画像表示中に「←」または「→」キーを押すことで前または次の画像を表示するはずですが、常に最初の写真が表示される問題が発生しています。
この問題に対する修正の提案や追加情報があれば、それをここに記述してください。
特定のアルバムで「写真詳細」をクリックすると、アプリケーションエラーが発生し、以降操作ができなくなります。エラーメッセージは「Application error: a client-side exception has occurred (see the browser console for more information)」と表示されます。
また、dev 環境では以下のようなエラーメッセージが確認されました。
"Error: Objects are not valid as a React child (found: [object Number]). If you meant to render a collection of children, use an array instead."
これらのエラーから、imgsのコード上に問題があると考えられます。
この問題に対する修正の提案や追加情報があれば、それをここに記述してください。
全画面において、Google Photosなどのように上にスワイプすると詳細情報が見られる仕組みが欲しい。
どうやら #31 の実装が不完全らしく、アップロード後に即時に表示される画像に対して適用されず、間違った向きで表示されることがある。
アップロード処理そのものは正しく動作しているため、別途そのページを読み直すと正しい向きで表示される。すなわち悪影響は極めて軽微である。
アルバム機能が期待通りに動作していないようです。新しいブラウジングセッション(プライベートブラウジング)を開始し、アルバムにアクセスした場合、全ての画像が表示されるべきですが、一部の画像のみが表示されるという問題が確認されました。
全ての画像が表示される。
一部の画像のみが表示される。
この問題は画像リストの順番に依存しているように見えますが、まだ詳しく調査していません。
(この問題を修正するための任意の提案や情報があれば、それをここに記述してください。)
JPEG画像以外(たとえば PNG 画像)を使った場合、正しく Firebase に暗号化アップロードされ、閲覧時にも正しく表示される。しかしながら「ダウンロード」では mimetype が image/jpeg として扱われ、ブラウザによってはファイル名のデフォルトは ◯◯.jpg となるなどの影響がある。
回避策:その場合であってもファイルの中身はオリジナルの PNG 画像のままでありファイル名を手動で書き換えることで対処は可能
原因はアップロードされる画像ファイルが jpeg ファイルしか考慮されておらず、ダウンロードリンクを生成するときの blob において image/jpeg が決め打ちとなっていること。
imgs/angular/src/app/model/decrypted-image.ts
Lines 10 to 17 in b2a832d
具体的には DecryptedImage
で new Blob()
するときに mime type が image/jpeg 固定となっているが、ここで dec: ArrayBuffer
の先頭バイトを確認して適切な mime type にするようなコードが好ましいと思われる。
アルバムを作成する時点で名前空間の確認ができる方が親切である。
画像のダウンロード機能が期待通りに動作していません。具体的には、ダウンロードされる画像のファイル名が、表示されているファイル名と一致しません。
<a>
要素に download
属性が設定されていないためと思われます。この問題に対する修正の提案や追加情報があれば、それをここに記述してください。
優先度は低い。
現時点ではアルバムの画像を同時並列に読み込みしているが、画像が多い場合、すべての画像の読み込みが遅くなる。優先度が高いのは、上位に表示される画像なので、上から順番に読み込みと表示が行われていく方が良い。
lazyloadのようなものが実装できるとより良いのだが、そこまでは考えない。
アルバムというものは画像のみならず、概要、途中の文章、仕切り棒など、さまざまな表示の仕方をする可能性が考えられる。そういったものに対応できるような形式が可能かどうかの検討を行う。
メタ情報としてアップロード情報を格納。
現時点では画像は自動ダウンロードだが、モバイル回線を用いている場合を考慮して、一定以上の容量の場合はアラートで読み込みの判断を行わせる。後で見る、が可能になるように。
現状のメタ情報(filelist)は画像のファイル名の配列のみを格納している。
#14 など、今後の発展を考えると、連想配列として新しいバージョンを作成することが考えられる。
その場合、以下の手順を踏むと良さそうだ。
縮小画像の近くに表示されるファイル名がハイパーリンク(a:link)として実装されているにもかかわらず、CSSで color: inherit; text-decoration: none; が常に設定されており、ユーザーにとってはリンクであることが視覚的に理解しにくい状態になっています。
この問題に対する修正の提案や追加情報があれば、それをここに記述してください。
アップロードしながら完了した画像に関しては、画面遷移することなく即時に確認できる方が良い。
写真を見る場合は、背景が黒い方が集中できる。
#13 にて閲覧者によって自由に画像の順序を変えられるようにする予定である。
しかし、投稿者には、こういう風に見てほしい、という願望がある。
そこで、デフォルトの順序の制御をメタ情報から行えるようにする。
この順序は、EXIF順序のほかに、任意の順序なども設定できると良い。
$ next dev
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
warn - You have enabled experimental feature (appDir) in next.config.js.
info - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback
warn - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.
event - compiled client and server successfully in 858 ms (262 modules)
wait - compiling...
event - compiled client and server successfully in 224 ms (262 modules)
wait - compiling /[...slug]/page (client and server)...
warn - ./node_modules/@firebase/storage/node_modules/node-fetch/lib/index.js
Module not found: Can't resolve 'encoding' in 'C:\p\private\imgs\node_modules\@firebase\storage\node_modules\node-fetch\lib'
Import trace for requested module:
./node_modules/@firebase/storage/node_modules/node-fetch/lib/index.js
./node_modules/@firebase/storage/dist/node-esm/index.node.esm.js
./node_modules/firebase/storage/dist/index.mjs
./src/lib/firebase.ts
./src/app/[...slug]/album.tsx
./node_modules/exifr/dist/full.umd.js
Critical dependency: the request of a dependency is an expression
Import trace for requested module:
./node_modules/exifr/dist/full.umd.js
./src/lib/decrypted-image.ts
./src/app/[...slug]/album.tsx
Couldn't load fs
Couldn't load zlib
Angular版で作った日本語のアルバム名のページをNext.js版で表示しても写真が読み込まれない
また、ブラウザコンソールでは https://…/filelist の XHR で 404 Not Found の応答が得られたとのエラーメッセージが確認されました。
filelist の URL では 錬成
→ %E9%8C%AC%E6%88%90
のように URI escape された文字列が含まれるべきですが、 %25E9%258C%25AC%25E6%2588%2590
のようになっていました。
以下のうち、必要と思えるもので、クライアント側で並び替えできるように。
robotによるindex化を避けるためにmetaタグの追加を検討する。
アップロードされたファイル名をUUIDやULIDに置き換える。
FileListにてオリジナルのファイル名を保持して、Zipダウンロードのときに適用する。
EXIFに35mm換算の焦点距離が含まれない場合にEXIFの他の情報を用いて導出可能かどうかの検討
現時点のコードには以下の問題がある。
この状況は以下の点でよろしくない。
このことから、AlbumComponentの関心事は「ファイル投稿の受け入れ」および「画像の表示」のみとして、「ファイルの暗号化・復号」および「ファイルの格納・取得」に関しては分離する方が設計として良い。
PC上からはキーボードショートカットで十分だが、iPadのようなタブレットから操作する場合はCarouselのようなスワイプで前後の画像を見られる機能性が必要である。
現状、よく分からないファイル群が溜まっていくという状況になっており、別途、有効なURLの集約とそれ以外の不要なファイルの削除手段が必要になると考えている。
それぞれ良い方法を検討する。
#21 によって分離する場合、テスト容易性が出てくるはずなので、それを考慮して、テストコードを書く。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.