JavaScript情報交換所(プログラミング既習者専用)
1 :デフォルトの名無しさん :2015/12/07(月) 07:26:33.87 ID:NYLGCW0V.net 実際にJavaScriptを書いている人の情報交換所です。 プログラミング既習者専用です。初心者の方はご遠慮下さい。 玄人の方、歓迎致します。
374 :デフォルトの名無しさん :2016/08/22(月) 00:56:03.75 ID:m1LOPf7I.net IndexedDBの容量制限は実質1/10*HDDね。 https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria 多分FileSystemAPIには上限がない(HDDの上限だと信じている) 繰り返すが、今回は元々アーカイブ用途だからそもそもDBアクセスの必要はない。 (横断的クエリとか検索とかは全く必要ない) ただ、機能的には上位互換だから動作に問題なければそれでもいい。それだけ。
375 :デフォルトの名無しさん :2016/08/22(月) 01:07:03.73 ID:utwn7AiT.net >>372 は?消すのはエクスプローラーなの? 意味なくフラットなぁ。 十分に意味のあるフラットだと思うけど。 バグって削除できないから、だから最初の発想では毎回ストアを作って破棄します、なんて考え方だったの?あきれた。 upgradeはなんなのか。 dir /S/Bした結果だから余程見慣れてると思うけどね。 WindowsWindowsって気持ち悪いけど。 べつに、どのフォルダ以下、って、キーの先頭xxxxxx文字が指定のもの、なんだし、特に変わらんと思うんだけど、 お前の中で違うならそうなんだろう。 フラットに見えるものが、フラットではないと思うのがよくわからなすぎて悩むわ。 indexedDBには文字列しか保存できないと思ってんのかな。 フラットにはしない!って、じゃあどうやってWindowsってフォルダの構造保存してるんだろう。 って考えたら、 フラットなものに保存されてる事気づくと思うんだけど。 >>374 だから、実際のサイズ調べてこいよ。 クォータまでだよ。 それに、残念だけど、フォルダとして見られる物じゃないよ。
376 :デフォルトの名無しさん :2016/08/22(月) 01:09:42.35 ID:utwn7AiT.net まさかディレクトリ掘るのに再起使ってるから、平たくする方法がわからんのかな。 そんなに階層階層言うなら、階層構造渡したらそのまんま保存してくれるラッパ作るか、 バイナリの保存はちょっと考えなきゃならんがブラウザ版nedbでも使えばいいのに。
377 :デフォルトの名無しさん :2016/08/22(月) 01:16:58.93 ID:bLWZhaRu.net >>370 保証はされていないが、一般的な環境ではまず問題ない。 というかIDBも実際は永続性は保証されていない。 Fxだと保証されているのは非標準のオプションを指定した時のみで、 他のブラウザでも基本的に一時的なものでディスクが埋まった時は利用頻度の少ないものから削除される。 トランザクションだって完璧でない。実際はパフォーマンス向上のためにディスクの書き込み完了を待たない。
378 :デフォルトの名無しさん :2016/08/22(月) 01:19:31.86 ID:m1LOPf7I.net >>375 > それに、残念だけど、フォルダとして見られる物じゃないよ。 そうか、これは残念だ。 だったらやっぱりFileSystemAPIかな。 削除機能は内部にも付けるけど、 エクスプローラでも追加/移動/削除出来た方がいいのは自明だろ。 他アプリとの連携もし易くなるし。 まあお前が色々勘違いしているのは分かるけど、 既に言っていることばかりだから読み返してくれ。
379 :デフォルトの名無しさん :2016/08/22(月) 01:25:17.05 ID:utwn7AiT.net >>378 だから、FileSystemApiがだよ。 フォルダとしては見られないか、超掘り返さないと見れないよ。 更にいうと、エクスプローラでなんなりするべきものじゃない。 それはもう、Electronかなんかで作れ。な? お前が勘違いしてるのは、多分indexedDBへの保存の方法だとの思うけど。 そのために必要な階層構造を保ったまま、indexdDBに十分入れれるからな。
380 :デフォルトの名無しさん :2016/08/22(月) 01:25:40.46 ID:utwn7AiT.net まぁ、インスペクタでは表にしかならんだろうけど。
381 :デフォルトの名無しさん :2016/08/22(月) 01:30:27.67 ID:m1LOPf7I.net >>377 了解。ありがとう。 アーカイブ用途なのでトランザクションに関しては問題ない。 再ダウンロードして保存すればいいだけだから。 機能は、Web上で削除されたファイルをまだ削除されていないように見せかけるもの。 それが永久だとアーカイブということになる。 CacheAPIは多分この用途に作られているから、 それが使えるのならそっちを使った方が色々すんなり行くのだろうね。 プロキシとして機能してくれるなら、いちいちObjectURLに張り替える必要もなくなるし。 全体として楽になる。 ただ永久保証無しなら、何らかの形で抽出機構が必要になる。 これがちと面倒か。 多分CacheAPIの区画を「永久」「一時」とユーザー側で指定出来れば一番良いのだけど、 無理だよね?
382 :デフォルトの名無しさん :2016/08/22(月) 01:33:03.22 ID:m1LOPf7I.net >>379 JavaScriptオブジェクトそのまま突っ込めるって話だろ。 もう試したが、今回の用途にはメリットがないんだよ。
383 :デフォルトの名無しさん :2016/08/22(月) 01:34:46.91 ID:m1LOPf7I.net >>379 > だから、FileSystemApiがだよ。 え、マジで?
384 :デフォルトの名無しさん :2016/08/22(月) 01:38:12.92 ID:utwn7AiT.net >>382 そのままじゃなくて、書き加えて保存できるし、 その任意のプロパティをインデックスに出来るよ。 お前の言うフォルダ名も、そのままでも、セパレータで分割しても、両方でもインデックスとして保存できる。 このフォルダ以下、これと同じ階層のもの、ファイル、全部綺麗に管理できるんだけどね。 これをフラットだからダメ、って言うなら、 一つのオブジェクト入れるオブジェクトに好きなだけツリー構造こしらえれば良いのかもしれん()が。 ノータリンに説明した時間が無駄だったな。
385 :デフォルトの名無しさん :2016/08/22(月) 01:44:52.41 ID:m1LOPf7I.net >>384 とりあえず384に書いていることは全部知っているぞ。 ただそんなことせずともURLそのままで保存すれば良いだけなんだよ。 サーバ側でそれなりに考えて階層化されているわけでね。
386 :デフォルトの名無しさん :2016/08/22(月) 01:53:36.82 ID:utwn7AiT.net >>385 はぁ。そうですか。 それでidb程度が使えないというか、わけわからん仕様出してくるとは、「それなりに考えて」階層化してるものが、表型DBに落ちてりゃ最高に面白いけど、フォルダ()なんだろうな。 好きに悩んでバギーなもの作ればよろし。
387 :デフォルトの名無しさん :2016/08/22(月) 01:59:36.01 ID:utwn7AiT.net ブラウザの枠越えてフォルダがどうとか言うなら普通にWindowsアプリ組めばいいんじゃないのかな。 ブラウザはブラウザでサンドボックスになってるから良いのに。
388 :デフォルトの名無しさん :2016/08/22(月) 02:02:44.31 ID:m1LOPf7I.net >>386 いや何を勘違いしているのか知らんが、コードはもう動いているし今はテスト中だぞ。 まあそれはさておき、FileSystemAPIが異なるファイルシステムを使っているのは 確定ではないがどうやらそのようだ。 というかこれだとWeb屋は言葉を間違っている。 サンドボックス:その内部で何をやっても外部に影響はない ブラックボックス:その内部がどうなっているか外部からは見えない ブラウザストレージはサンドボックスである必要はあるが、 ブラックボックスである必要はない。というかFileSystemAPIならなおさら。 てかマジでブラックボックスならFileSystemAPIの存在価値無いよ。 これだとFireFoxの言うとおりだと言うことになる。 何で意味無くブラックボックス化してんだ?
389 :デフォルトの名無しさん :2016/08/22(月) 02:14:19.68 ID:utwn7AiT.net >>388 サンドボックスだ、としか言ってないし、 ブラックボックスではない、とは言ってないからいいんじゃねーの? 動いててテストフェーズなのに未実装機能あるなんて面白いのか面白くないのかわからんな。 だから言ってんじゃん。 それゴミ。idbの方がはるかにマシ。 要はクロームアプリ同士で、ファイルが筒抜けにならんように隔離してみました、って感じ。
390 :デフォルトの名無しさん :2016/08/22(月) 02:22:51.64 ID:m1LOPf7I.net >>389 いやFileSystemAPIと言うからにはエクスプローラで操作出来ないと駄目だろ。 機能としてはIndexedDBの方が上位互換なんだから、 独自ファイルシステムなら存在価値がない。 > 要はクロームアプリ同士で、ファイルが筒抜けにならんように隔離してみました この必要あるの? 具体的に言えばアプリのシグネチャ?でも混ぜ込んであるって事? ローカルストレージが共通なのが多少問題だったから仕切ったってわけか?
391 :デフォルトの名無しさん :2016/08/22(月) 02:50:07.77 ID:m1LOPf7I.net あー、つかお前らがよく使う言葉思い出したわ。 IndexedDBでもFileSystemAPIでも、 内部データを「追加/移動/削除」する為の機能を自分で作るのは、 「エクスプローラーの再開発」(車輪の再開発)なんだよ。 Windows上のエクスプローラーが使えたらそれが一番良いだろ。 ドラッグアンドドロップやプレビューの機能は全部持っているし、バグもないし。 つか何故いちいち「マイエクスプローラー」を開発しなければならんのよ? これが>>379 の勘違いに対するお前らの言葉での答えね。 そしてChromeは「マイエクスプローラー」の開発を強制するわけだ。 アホかねと。
392 :デフォルトの名無しさん :2016/08/22(月) 07:34:32.01 ID:utwn7AiT.net >>390 ブラウザってパソコン以外にも乗るじゃん。 その時、ファイルシステムなんて存在しないかもしれないよ。 って話。 >>390 例えば、なんかのアプリで保存したパスワードなんかを、別のアプリから覗き見出来ないようになってる。 >>391 世界中の人がWindowsのエクスプローラやマックのFinder使ってるから訳じゃないんだよw 内部データを追加、移動、削除するってのは、つきつめたらそれが機能なんだから。 お前が使いたいのがたまたまエクスプローラなだけだから、そう思うんだろうけど。 マイエクスプローラーではなくて、自分が使いやすいUI作れよ。 それか、どっかポート開けてwebDAVででも晒してローカルでマウントさせろ。
393 :デフォルトの名無しさん :2016/08/22(月) 10:56:09.85 ID:uzkoNVx4.net どうしてこういう人は、ライブラリを作ろうとはしないんだろう。 ディレクトリ一覧を帰す関数、あるディレクトリのディレクトリとファイル一覧を帰す関数、ファイルを新規、取得、更新、削除する関数を作っときゃ、それらの下回りがindexedDBだろうがサーバ関数だろうが関係無く透過的に扱えんじゃねえの? それこそ、内部実装無視してindexedDBに行ごとに入れようが、クソでかいオブジェクトとして入れようが、はたまたサーバに入れようが、ご希望の動きがすぐ書けると思うんだけど。
394 :デフォルトの名無しさん :2016/08/22(月) 21:30:14.52 ID:m1LOPf7I.net すまぬ、>>358 は間違い。 upgradeのときはe.target.transactionが最初から入っている。 昨日も確認したのだが、どうやら間違えたようだ。 これで修正出来たかは確認中。 これとは別に、createObjectStoreのoncompleteが少し早いタイミングで返ってくるらしく、 oncomplete直後にput等をせずに終了するとエラーになる。 これはupgradeのtransactionが並列出来ないということなので、 一旦closeして開きなおして並列性を高めようとしたが、失敗した。
395 :デフォルトの名無しさん :2016/08/22(月) 21:40:34.14 ID:m1LOPf7I.net >>392 未来のストレージがどうなるかは別の話だ。 FileSystemAPIはオレオレエクスプローラの再開発をしなくて良いのが利点であって、 それがないのならゴミでしかない。 お前が色々再開発をするのは勝手だけど、大多数の人にとっては、 普段使っている物がそのまま使えるのが一番分かりやすいUIだ。 Webアプリ間での相互アクセスを禁止するのはいいとして、 OSからの透過アクセスを禁止する意味はない。 ブラウザアプリからは常にブラウザ経由になるのだから、 アクセス権限、unixで言う644とか755とかを管理するのが一番簡単。 何でそんな糞仕様にしたのか意味不明。 ていうかChromeではBlobをIndexedDBにいれれないのか。使えねえ。 IndexedDBで両対応という作戦は頓挫した。根本的に練り直しだ。 てかマジでこの辺統一しろよな。 > While Firefox supports blob storage for IndexedDB, > Chrome currently does not (Chrome is still implementing support for blob storage in IndexedDB). > If you are targeting Chrome for your app and you want to store blobs, > the File System API and App Cache are your only choices. > However, AppCache storage isn't locally mutable, > and doesn't allow for fine-grained client-side management. > https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Introduction
396 :デフォルトの名無しさん :2016/08/22(月) 21:41:45.37 ID:m1LOPf7I.net >>393 それはお前が無能だからお前の周りも無能しかいないだけ。
397 :デフォルトの名無しさん :2016/08/23(火) 00:24:48.05 ID:ua608nki.net >>395 なら、エクスプローラーで管理しろよもう。 文句ばっか言って鬱陶しいわ。 electronでざっくり作るか、いっそcsで書けば?Windows()だけでしか動かないクソアプリを。 >>396 お前の事言ってるの。 俺はライブラリ作ってるよ。 オフラインアプリ用のスクリプトも画像も、ServiceWorkerとindexedDBで全部賄ってるから、「出来るのに技術的な問題だと思いこんでカスだなこいつ」って思ってんじゃん。
398 :デフォルトの名無しさん :2016/08/23(火) 00:49:53.34 ID:fTj2N0cj.net 今のところはそのつもりだ。cscriptと併用する。 Unix使いならcron位自分で書けということでいい。 もちろん他にいい方法が見つかったら変更する。 長期的運用を考えた場合、 ブラウザがクラッシュした時に破損する可能性がある場所はアーカイブとしては使えない。 また他アーカイバも既にあるので、それらとの相互運用を考えた場合も、 生ファイルシステムでないと駄目だ。 格好は悪いがこれが運用上は一番マシだ。 まあもうちょっと考えるが。
399 :デフォルトの名無しさん :2016/08/23(火) 01:04:54.52 ID:ua608nki.net >>398 生ファイルシステムほど不安定な場所もないと思うけど。 サーバ側mongo,クライアント側nedbで適当に同期すれば?
400 :デフォルトの名無しさん :2016/08/23(火) 01:17:30.72 ID:fTj2N0cj.net インストールが必要な時点でアウト。 というかお前は無駄にシステムをでかくする病気にかかっていると思うぞ。
401 :デフォルトの名無しさん :2016/08/23(火) 01:47:37.85 ID:ua608nki.net >>400 はぁ。 思い描くものがあれば説明してみ。 大体な、それは不可能と応えていくわ。
402 :デフォルトの名無しさん :2016/08/23(火) 08:05:29.74 ID:ZcVGgUHo.net システムをでかくする病気って言われても、要件が見えなさすぎるんだししゃーなくない? サーバ側ではデータベースに入ってんだろ?じゃあリプレイスすりゃいいじゃん。 むしろ、サーバのデータベースは何者かわからん。 アーカイブってなんだそりゃ。何のどんなアーカイブかわからんし、さらにそれが階層構造とか、階層構造はデータベースに入れられない()とか不思議発言過ぎるんじゃねえか?
403 :デフォルトの名無しさん :2016/08/23(火) 08:18:51.01 ID:exF8NocQ.net >>395 お前一体何時の記事見てんだよ。 MDNに頼るにしても最低でもLast updatedくらい見ろ。 もう何年も前にサポートされてるわ。 この手の情報は半年経つともう古い。 そして最終的にはブラウザのissuesやcommitsやソースコードを読まないと確かなことは言えない。 独自実装・勝手解釈・消費期限切れの塊であるMDNに1から10まで頼るのは危険。
404 :デフォルトの名無しさん :2016/08/23(火) 11:20:47.03 ID:ZcVGgUHo.net というかね、ミニマムなコード片書いてくれればいいと思うんだが。 書いて、あ、Blob入るじゃんって気づくから。 入らなければbase64なりにして突っ込みゃ良いだけだし。 そのまんま、自分のライブラリになると思うけど。
405 :デフォルトの名無しさん :2016/08/23(火) 11:32:18.33 ID:ZcVGgUHo.net ファイルが保存できればそれでいい、って言う割には、階層が、とか、自分の実装に凝り固まり過ぎだろ。 ただのrdbでもindexedDBでも フルパス|[パス,,]|ファイル名|拡張子|中身|更新日などの情報| って形で保存すりゃなんとでもなるだろ、常識的に考えて。 パスは、 file:// file://home file://home/xxxxx file://home/xxxxx/yyyyy の配列で持っといて。 あるパス以下の物→パスで絞れば一撃 あるファイル→ファイル名で一撃 あるパスのあるファイル名→フルパスで一撃 でカーソル取れんじゃん。 あとはよしなに処理すりゃいいんじゃねえの?その為のトランザクションなんだし。 ディレクトリごとにストア分けて、ディレクトリを削除するのに、トランザクション何個も張る羽目になるっしょ。
406 :デフォルトの名無しさん :2016/08/23(火) 21:49:08.63 ID:fTj2N0cj.net >>403 おおありがとう。Blobサポート済みか。 となるとボツではなくなった。 記事は古いとは思ったが、政治的案件は時間では解決しないから、どうせ駄目だと思っていた。 >>401 いやcscript併用案はもう既に動いている。 考え方は簡単で、ブラウザで出来ないのはローカルファイルのサポートだから、 それをcscriptにやらせるということ。 とはいえ読み出しには手動で指定が必要だから、それとどっちがマシかということになる。 俺が勘違いしていたFileSystemAPIは ・ブラウザ側で「あるディレクトリ」を指定。これはブラウザ側で手動でしか出来ない。 (指定方法の取り扱いは「ダウンロード」フォルダと同じ) ・そのディレクトリ以下は読み書き自由。 だった。 もちろん生ファイルシステムでOS側からは直接読み書き変更可能。 ブラウザ側からのアクセスはWebアプリ毎にアクセス権が設定されている。 というかこれ以外のFileSystemAPIなんてゴミだろ。 あの糞仕様なら誰も使わない。使う意味無いし。 JavaScript界隈で思うのは、「使ってない奴」「三流プログラマ」が仕様を策定しているということ。 だから「使えない」「使いにくい」仕様が溢れかえっている。FileSystemAPIがゴミなのもこのため。 従来は仕様策定に関われる時点でそれなりの実力者しかいないからこういう事はなかったが、 良くも悪しくもJavaScriptはWebだって事だね。 >>405 つ薬
407 :デフォルトの名無しさん :2016/08/23(火) 22:55:54.15 ID:exF8NocQ.net exeみたいな実行形式やそのOSで特別な意味を表すシステムファイル等として書き出されちゃまずいので実態は偽装される様になってる。 ゴミというか、実験的で気まぐれな機能。もう何年も更新されていない。 誰も使わない、でもブラウザ内部では使われている。別に広く使われることを期待されていない。 IndexedDBやCacheDBの存在で意義をなくしつつある。 柔軟に検索したいなら前者、そうでないのなら後者をどうぞ。 君が望むようなファイルシステムAPIなどがなかなか策定されないのは幾つか理由がある。 でも技術的要因は取り除かれてきた(例えばPermissions API、Web App Manifest)ので、 あとは需要と雛形とブラウザベンダーのやる気次第。 とはいえ今はCSSや他の比較的低レベルなAPIが盛り上がっていて注力してるから後回しだろう。 W3CのMLを見ても「いくつか議論の余地がある」レベルの関心だ。 今はまだアイディアを貯めている段階だろう。
408 :デフォルトの名無しさん :2016/08/23(火) 23:01:47.75 ID:exF8NocQ.net あーでもやっぱりそろそろ動き出すかもな。 https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/_6Euwqv366U これが落ち着けば足回りが揃うから。
409 :デフォルトの名無しさん :2016/08/23(火) 23:50:21.90 ID:fTj2N0cj.net >>407 > exeみたいな実行形式 Webアプリから起動出来なければこれは問題無いだろ。 > OSで特別な意味を表すシステムファイル等 要するにシンボリックリンク等で全部筒抜けになる場合だろ。 これも結局Webアプリ側はブラウザを通しての作成しか出来ないので、それを止めればいいだけ。 OS側からシンボリックリンクを貼ったり、exeを置くのは自由でいい。 Webアプリ側でexeを起動出来ず、シンボリックリンク等を作成出来なければいいだけ。 つまりファイルは「データ」としてしか扱えないという、実装するにも至極簡単な制限でしかない。 FileSystemAPIははっきり言って使う気がない仕様を策定してる。だったら策定しない方がマシ。 まあ策定してから捨てるというのがJavaScript流ではあるようだが。 > IndexedDBやCacheDBの存在で意義をなくしつつある。 結局の所、「勝手に削除される可能性がある」時点でアーカイブとしては使えない。 見たところここを保証する気はなさそうなので、 今回俺がこれらをメインに据えることは出来ないし、 どのみち「削除されない」ストレージも必要になると思う。
410 :デフォルトの名無しさん :2016/08/23(火) 23:50:56.04 ID:fTj2N0cj.net > Both Microsoft Edge and Mozilla Firefox are implementing the subsets documented in "File and Directory Entries API" for compatibility with Chrome in supporting Directory Upload. 正直これさっさと実装しろというのはある。 ディレクトリ指定出来ればUIが全然簡単になるから。 あとIndexedDBも全然こなれてない。 createObjectStore.oncompleteのタイミングがおかしいのは既に言ったが、(>>394 ) それとは別にキューの実装もおかしい。 トランザクションがロールバック単位なので、 当初は各リクエストそのままで500トランザクションとか送ったら 「多すぎてキューに入りきりません」とエラーになった。 普通はキューは動的に確保すればいいので、500程度でオーバーフローとかアホかと思ったが、 そんなことを言っていても仕方ないので数珠繋ぎ方式に変更、トランザクションは数個に絞った。 ただそれでもごく偶に、しかも一つ目のトランザクションで同じエラーがでる。 つまり、IndexedDBのキューの実装はバグってる。 なおChrome50。Vistaなのでこれ以上更新出来ないし。 結局の所、大多数が使っている機能じゃないとバグ報告が上がってなくてバグが残っている。 IndexedDBもまだその程度だよ。安心しては使えない。 ただ従来方式の「ダウンロードリンク」を使うにしても、 1日10万ダウンロードとかになるので大丈夫なのか?という疑問はあるが、これも試すしかない。 (ダウンロードは履歴が残るようになっているので、手動ではあり得ないほどの数になると、 履歴がオーバフローするバグが残っているのではないかと恐れている。 これも知ってたら教えて欲しいが。)
411 :デフォルトの名無しさん :2016/08/24(水) 00:44:52.82 ID:dKh15413.net >>406 お前のコードこそ、特定のプラットフォームか外出てるじゃん。 どう使いにくいのかが分かれば良いんだが。 もう老人であたらしいこと覚えられないならご愁傷様。
412 :デフォルトの名無しさん :2016/08/24(水) 00:48:32.19 ID:1m5/CfUP.net >>410 トランザクションがROLLBACK単位とか言うか 適宜コミットして、setTimeoutで遅延させてつかえよ。 ボンクラすぎるだろ。 タイミングも合ってるよ。 脳みそ腐ってないならば、ぜんコード上げてみろよ。見てやるから。
413 :デフォルトの名無しさん :2016/08/24(水) 00:52:22.97 ID:7vNot/FK.net IndexedDBが小慣れていないと言われてるのは周知の事実。 が、機能は揃っているので上で言われてるように 大抵皆ライブラリを書いたり、使ったりして問題なく過ごしている。 君のここまでの書き込みは全然建設的じゃないし、 ほんとにバグがあるのか、もしくは君の方がが小慣れていないのかが分からない。 結果、ただの愚痴にしか聞こえずそれに対して何も言えることはない。 せめて再現するための最低限のコードを載せてくれ。 あと10万ダウンロードはやめとけ。ZIPなどに圧縮すればいい。 もしくはもう一般WebAPIだけで作るの諦めろ。 一般公開するかは知らんが、それだけの機能なら 拡張機能もしくはブラウザアプリにしてインストール必須にしても構わないだろう。
414 :デフォルトの名無しさん :2016/08/24(水) 02:09:31.50 ID:fG60fvYz.net >>413 > ほんとにバグがあるのか、もしくは君の方がが小慣れていないのかが分からない。 これはその通り。当初の>>358 は間違いだったからね。 ただ仕様は大体理解したので、多分>>394 と>>410 はバグだ。 とはいえ切り分けはしない。 最新版が使えない状況で切り分けて報告する意味はないので無駄だから。 (最新版では既に治っているかもしれない) 俺については「バグがある」という認識で使うか、使うのを止めるかでしかない。 つまり他の方法も試して一番マシな方法を使うだけ。 ちなみにchromiumに対してバグ報告もしたことあるし、受け付けられてもいるよ。 ただそれをやるにしてもここでやる意味はない。直接報告すればいいだけ。 コードはここには上げない。 コピペすればいいだけのコードすら協力してくれないお前らに対して期待はしていないし、(>>270 ,279) 話を聞く限りお前らの腕前/デバッグ出来る範囲を完全に超えている。 コードを上げてもお前らでは何も出来ないよ。 いずれにしても既に公開はしているから、勝手に探せばいい。 100kダウンロードはその話だと試したわけではないんだろ?だったら俺が試すだけだよ。 ZIP化してもいいが取り扱いが面倒になるだけだから、いければ生ファイルで行く。 > 拡張機能もしくはブラウザアプリにしてインストール必須にしても構わないだろう。 これは何が違うんだ?調べた限りでは大差ないようだったが、違うのか? なお今回欲しい機能は以下。 ・ローカルファイルからのユーザ指定無しでの読み込み ・ダウンロード時のフォルダ指定(階層化したフォルダに対してのダウンロード先指定) これらが出来るのなら乗り換えを検討する。 ちなみに今のところGreaseMonkeyで不自由していない。 ただ、GM専用機能も使ってないので、乗り換えは出来る。
415 :デフォルトの名無しさん :2016/08/24(水) 02:10:28.07 ID:fG60fvYz.net > 君のここまでの書き込みは全然建設的じゃないし、(中略) > 結果、ただの愚痴にしか聞こえずそれに対して何も言えることはない。 上記の通り、俺は相談以上の期待をお前らに対してはしていない。 だから気に入らなければレスくれなくていい。 (上記経験により俺もそういう距離感で行くことにしたから) そちらも分かるように、どこまでの情報があれば何を回答出来るかはこちらも分かっている。 その上で書いているのだから、それについては無理という件については無視でいい。 馬鹿共は置き去りにしないとスレのレベルが上がらない。 その上でバグ確認に協力してくれるというのなら、 それは申し訳ないが今回はそこに踏み込む気はない。 理由は上記どおり、最新版でないと意味無いから。 そちらが既にバグに当たらない記述のライブラリなりを持っているのならそれで問題ないわけだし。 心配せずともchromeなんてバグだらけだぞ。 こなれていないところに踏み込んだらすぐに遭遇する。 それはそちらも知っていると思うが。 君らは気に入らないかもしれないが、俺は情報をくれた奴には感謝している。 ただ君らが「持ちつ持たれつ」という感覚を持ち合わせていないことも学習したから、 君らに大して期待もしていない。だから再度言うが、気に入らなければ無視でいい。 (というかこれまでの俺が甘かっただけで、本来は君らのスタンスの方がここには向いている)
416 :デフォルトの名無しさん :2016/08/24(水) 02:47:00.24 ID:fG60fvYz.net >>413 > IndexedDBが小慣れていないと言われてるのは周知の事実。 ちなみに俺はJavaScript屋ではないから、 こういう、「周知の事実」ってのは知らない情報だ。 だから君にとっては大したことなくても、俺にとっては助かっている。 その「周知の事実」にアクセス出来る人に対してこちらから提供出来る情報はほぼ無い。 せいぜい遭遇した事実/外部目線で見た感想を垂れ流すことくらいだ。 で、これを既にやっているわけだが、 結果、愚痴にしか見えないというのなら、それはそれで仕方ない。 残念ながら、こちらが「情報交換」として提供出来るのはこの程度でしかないんだよ。 何が君らにとって有意義な情報かもこちらには分からない。 だからとりあえず垂れ流すのみ。
417 :デフォルトの名無しさん :2016/08/24(水) 07:24:26.62 ID:dKh15413.net 何様かわからんな。 出せる情報もなく、教えてくれって虫が良すぎるだろ。 Qiitaにでも行ってくれば?
418 :デフォルトの名無しさん :2016/08/24(水) 08:19:51.08 ID:u65p5RKL.net 俺はindexedDBを商用製品に普通に使ってる(しかも、ローカルへのキャッシュとして)から、ぶっちゃけどんなドヤされても、こいつの書いた実装が悪いんだろうなとしか思えん。 トランザクションで500件を超えるって、そんなデカいアトミックな操作が思いつかんレベル。 ファイルの取得であれば、保存できればそれでワントランザクションだろ。 関数越えてトランザクション持って回って、どっかで非同期な呼び出しがあってカーソル見失った瞬間にトランザクション失敗してるんじゃねえの? とかそんな感想。 ある一定バージョンのファイルセットが取得できるまでをトランザクションと見なすなら、バージョンごとに仮データとして保存するトランザクションと、 古いセットを削除して、仮データを有効データに更新するトランザクションの二本で充分でしょ。 なんで、自分より相手方の方が馬鹿に違いない、と思えるのかわからん。 俺もコミッタだけど、その発想でプルリク投げた事は無いわ。
419 :デフォルトの名無しさん :2016/08/24(水) 08:36:10.31 ID:u65p5RKL.net ダウンロードリンク、の代わりにindexedDB使う発想がわからん。 何がどこにどうダウンロードされるんだろう。 それはローカルに持ってたらどう便利なんだろう≒ローカルにあれば二度と押さないボタンなんだろうか? なんか(アーカイブってのが何のアーカイブかはわからんが)ウェブから取得させるときに、二回目以降はそのクライアントのデータを使わせて、ダウンロードしたフリすれば良いの? サービスワーカーで書いちゃだめなの?その処理。
420 :デフォルトの名無しさん :2016/08/24(水) 08:45:06.93 ID:7vNot/FK.net >>416 おいおい、はぶてんなってw 建設的でないどころではなくなってるぞ。 これだけ皆が比較的長文で沢山レスして構ってくれてるんだから あとは君の態度次第で強力な仲間となるだろうよ。 答えをもらう代わりに問題をきちんと問題として認識できる形であげれば それで十分「交換」になる。 あとDLに関しては500くらいで試してみて。 確かpermissionの取り方によるのか知らんが50か100毎に確認出たはずだから。 ファイルごとにオーバーヘッドもかかるだろうしアーカイブ化した方がいい。
421 :デフォルトの名無しさん :2016/08/25(木) 00:05:19.06 ID:eAOsu6G6.net >>420 1日500DLなら現在味見中で、既に2週間ほど動作して問題は発生していない。 確認は一度も出ていない。ただ、出る環境の場合はこれは使えないのも確かだ。 まあ500DLなら人力でも十分あり得る範囲、さすがにこれでバグ遭遇はない。 ローレベルでのファイルのオーバーヘッドはない。 そもそも自動アーカイブはほぼ書き込みばかりだから投げ捨てだ。 また、データの大半はjpg等の圧縮済みファイルだ。 (個数としてはテキストの方が多いがjpg一枚でおつりが来る) だからzipというよりtarなんだが、それもしない方がいいだろうという読みだ。 まあここら辺はこちらで試す。 > あとは君の態度次第で強力な仲間となるだろうよ。 セミコロンの位置でドヤア()、文法でドヤア()する奴がいくら居たって邪魔なだけ。 俺について助けになるのは、プログラミング上級者(10k行のコードを平気でメンテ出来る)か、 俺以上にJavaScriptの仕様に詳しい連中だけだ。 後者については俺がJavaScripterではないのでここの連中でも当てはまるケースも多い。 それが俺がここにいる理由。 前者について当てはまるのはここには居ても数人だ。 だから内部構成についての指摘は大半が俺から見ればデタラメに過ぎなく、ウザイだけ。 よって、そっちに流れないように上位アーキテクチャの話に絞っているわけでね。
422 :デフォルトの名無しさん :2016/08/25(木) 07:26:33.09 ID:kFTapBTb.net なーんだ 自分の手足となってくれる素直で言うこと聞いて優秀な部下もしくは奴隷がフリーで欲しいってことだったのか サイコパスにちょっとでも強力しようと思った俺がバカだったわ
423 :デフォルトの名無しさん :2016/08/25(木) 08:20:27.91 ID:99xpDjOR.net それにどうindexedDB使うのか全然わからん。 圧縮済みデータはそれ以上圧縮かからないから、圧縮しない、は 圧縮済みデータが一つのときだけじゃない? エントロピーが偏れば圧縮は効くんだから、いくつか混ぜるとちゃんと圧縮は効くと思うけど。 そういう意味ではtarでアーカイブした上で、積極的な圧縮はせずに、Webサーバのgzip任せていいんでないの? 無駄な作り込みはバグ生むよ。 正直、普通に職業マやってたら、そんなステップ数のメンテは逆にしない。 逆に、しないように、スクラッチの時点でちゃんと切り分ける。 別に上級者気取りでも気にはしないけど、どう考えてもアーキが浮かばん。 アーキ屋何してんの? 何か情報を出すと俺のすごいシステムがパクられそうで怖い、みたいに聞こえるけど、そういうのって大体みんな通り過ぎて、王道はなるほど王道なんだな、って「そうしないだけ」だから、 気にせんで良いんじゃないの? ホントに凄いかも!と思ったら、先にアイディアだけどっかに書いとけばいいよ。
424 :デフォルトの名無しさん :2016/08/26(金) 18:32:39.75 ID:wJ1YpBkQ.net ID:fTj2N0cj ID:m1LOPf7I ID:fG60fvYz ここって他者を見下して優越感に浸る人が多いよな >>1 からしてそんな感じだったからなるべくしてなったのかもしれんが
425 :デフォルトの名無しさん :2016/08/26(金) 18:53:36.65 ID:4RusDDpB.net もし本当に他者を見下してるように見えるんなら精神病院行ったほうが良い。 本当に見下してれば相手と会話したりしない。
426 :デフォルトの名無しさん :2016/08/26(金) 23:31:04.14 ID:LTYwvQxl.net バカほど人を見くびるもんだよ。 そして見くびれるからバカで居られる。 会話するメリットなんかいくらでもあるよ。ぬいぐるみは反抗しない「から。 反抗反論されると言うことは、自分の発言は反抗反論される程度の意味があんだ、むしろ相手が理解できない馬鹿なんだ」と思うことすらでき、一人で気持ちよくなれる。
427 :デフォルトの名無しさん :2016/08/27(土) 05:01:58.71 ID:T1cpNbqY.net 反抗しないぬいぐるみなんてここには居ないが? 後半は今回で言うと間違いなく ID:eAOsu6G6 の方だな 早く気付けよ
428 :デフォルトの名無しさん :2016/08/27(土) 05:49:03.76 ID:eRYPSeFa.net Slot 🍜🍜👻 💣💯🎴 💯🌸🍜 (LA: 0.55, 0.58, 0.53)
429 :デフォルトの名無しさん :2016/08/27(土) 09:23:29.57 ID:4zJIWaih.net >>427 反抗するぬいぐるみが居るから、書きに来てるんだろ、って文書のつもりだったけど、眠くて誤字でわけわからん感じだな。すまん。
430 :デフォルトの名無しさん :2016/08/27(土) 21:50:54.70 ID:T1cpNbqY.net よく分からんが反抗する側がバカにやり込められるのなら、 それはやり込められた側の方がもっと酷いんじゃないのか?
431 :デフォルトの名無しさん :2016/09/25(日) 17:50:33.44 ID:Fmi0n6Ll.net Flashの仕組み全く知らないんだけどさ、Flashって高速再生出来るようにならないのかね? 以下知恵袋では「プレイヤーも自作」となっているので、 逆に言えばJavaScriptで高速プレイヤーを作成して入れ替えてしまえば可能なのか? 認証とかはさておき。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10160742165 具体的にはGyaoの動画を1.5-2倍速で再生したい。要求スペックは以下。 ・個人的に使えればいい。つまりコマンド手打ちが必要でもいい。 ・再生速度は固定でいい。つまり最初から1.5xか2xで固定、再生中の変更は必要ない。 ・最悪バッファでもいい。つまり30分の動画なら15分バッファした後の2x再生でいい。 ・ダウンロードすれば出来るのか?しかし面倒なので出来ればダイレクトで。
432 :デフォルトの名無しさん :2016/09/25(日) 19:27:04.48 ID:r4NaSC4t.net スクリプトでURI解析→ネットワークに対応した外部プレーヤで再生
433 :デフォルトの名無しさん :2016/09/25(日) 21:06:19.30 ID:Fmi0n6Ll.net 確かにそんなに難しく考える必要はないのかもね。 で、試してみたんだが、今のところ駄目だ。 データ取得先は当然あっさり分かる。 それをGOMプレイヤーに食わせてみた。 曰く、「ストリーミングサーバーが見つかりません」 ただGOMプレーヤー自体も滅多に使わないから、使い方が間違っているかも。 URLもこれでいいのかは謎だし。 なおAlquadeLiteも試したが、こちらは起動するもののFlashPlayerがクラッシュして駄目だった。 まあ何かあればよろしく。
434 :デフォルトの名無しさん :2016/09/25(日) 23:14:29.89 ID:Fmi0n6Ll.net 結局「GYAO動画ダウンローダJava」を使って高速再生は出来た。 ただし事前DLが必要だが、10倍速くらいでDL出来るので問題はない。 ただ正直ちょっと複雑だ。 こんなに簡単に出来るのなら公式で用意してくれよというのと、 意外に高速再生も快適ではないのでやっぱり用意する意味もないのかとも。 いずれにしても情報をくれた人はありがとう。
435 :デフォルトの名無しさん :2016/10/16(日) 16:56:27.94 ID:u0ZoFejP.net ・「クライアントサイド」のJavaScriptでは、innerHTMLをエスケープ(サニタイズ)する必要ないのか? サイトのJSON_APIがスクリプトタグを含む文字列を送ってきていて、 こちらのGreaseMonkeyスクリプトは今はそれをそのまま表示してしまっている。(見た目は消える) これはXSS的に問題だと思っていたのだが、以下を見ると、またこちらでも試した限り、 divタグの中身等としてappendChild/insertBeforeする分には実行されないようだ。 > が!残念ながらこの場合はscriptは動きません。 > http://tech-blog.tsukaby.com/archives/894 とはいえ、見た目消えてしまうのでどのみち修正は必要なのだが、 XSSの脆弱性という意味での対策は必要ないということでいいのだろうか? 俺はJavaScriptの専門家ではない。 したがって情報は基本的に全てWebなのだが、例えば以下のように、 > 例えば、DOM Based XSSを発生させる典型的なコードの例として、 > 以下のようなinnerHTMLの使用があったとします。 > // ★★★脆弱なコードの例★★★ > var div = document.getElementById( "msg" ); > div.innerHTML = some_text; // 外部からコントロール可能な文字列 > http://www.atmarkit.co.jp/ait/articles/1312/17/news010_2.html とあって、その後「ブラウザー上で」エスケープするなりcreateTextNodeをしているわけだが、 これって全くの間違いで、必要ないのだろうか? (サーバーサイドならもちろん必要として、クライアントサイドなら問題なしでいいのか? 今のところ、筆者もこれらを混同しているように見える。 記事は2013/12と古いのだが、これ以降に仕様変更されたのか? なお上記一つ目(動かないと書いている方)のブログは2015/04) なお念のため再度言うが、「クライアントサイド」で「innerHTML」の場合。 「サーバーサイド」でもなく、「outerHTML」でもない。
436 :デフォルトの名無しさん :2016/10/17(月) 00:31:40.71 ID:B8wMv80N.net >>435 script タグでなくとも イベントハンドラ( onxxxx = )で動作するコードを注入されたら危険だろう
437 :デフォルトの名無しさん :2016/10/17(月) 01:16:39.60 ID:XzUmA52N.net >>436 ああ、確かにその通りだ。<img onload>とかね。 ではやはりエスケープしないといけないね。 なるほど、ありがとう。
438 :デフォルトの名無しさん :2016/10/18(火) 13:06:11.48 ID:GiAjO0tK.net ぶっちゃけいかなる脆弱性があったとしても、お金が関わるようなサイトでなければ関係ない 例えばある種のURLで飛ばされた時にXSS脆弱性があったとしても、 それは悪意のあるサイトから遷移したユーザーの責任。 それにCookieが抜かれようと変な表示がされようと何か致命的な問題になることはない。 いたずらレベル。
439 :デフォルトの名無しさん :2016/10/18(火) 22:14:37.24 ID:8mVkPqez.net それはその通りだし、神経質にやる気はない。 逆にそのためのブラウザの制限に辟易している状況だし。 とはいえ、JSON_APIの中身がtextなのかHTML文字列なのかは気にしておかないといけない。 その上で、どこまでやるかを各プロジェクト毎に決めればいいこと。
440 :デフォルトの名無しさん :2016/10/19(水) 08:20:38.16 ID:pQsxuliv.net そういうとこを気にするのは愚か CSPを使い、それが通るように書けば良いだけ
441 :デフォルトの名無しさん :2016/11/21(月) 01:56:59.51 ID:jF13U7nK.net IndexedDBのスループットが全く出ないんだが、誰か高速実装サンプルコードを知らないか? URLくれると有り難い。 こちらの実装では、スクレイプ結果の9000ファイルを書き込むのに15-20分かかっている。 全体の容量は、IndexedDB格納済みで20MB程度、tarファイルだと30MB弱といったところ。 キャッシュ済みの状態なら再スクレイプには2-3分しかかからない。 これを<a download=xxx>でtarファイルにするのには数秒しかかからないが、(最後のダウンロードに数秒) IndexedDBに全て書き込むには15-20分かかる。 この場合はスクレイプと同時に内部的にtarファイルを作成しており、 大半は再スクレイプの時間なので比較としては不適だが、5-10倍程度遅い。(A) なおtarファイルの展開には2-3分かかるので、これとの比較でも5-10倍程度遅い。(B) 現状、ファイルに落とす場合はスクレイプの方が明らかに遅いので全く問題ないのだが、 IDBに格納する場合はスクレイプよりも遅いのでそこで詰まる。 といっても2倍も遅くはなく、またスクレイプ側は通常は90%以上idle状態なので 現実的には問題は発生しないはずだが、それにしても遅すぎる。 トランザクション等の機能は所詮CPU時間なので、何をやってもここまで遅くはならない。 (chromeの実装が酷くても、また俺の実装が酷くても) 上記ファイル時間(B)でも5-10倍遅いのは何かおかしい。 とはいえ使い方が悪い可能性も多々ある訳なのだが、 とりあえず高速実装サンプルコードがあれば比較出来るので助かります。 実装/実験の詳細は、上記の通り、9000ファイルをIDBに格納、全体で20MB程度、 objectStoreは多めで150個程度、その中に30-150個くらいのファイルがそれぞれ格納される。 トランザクションはオブジェクトストア毎に纏めており、 実際のトランザクションは40-80個程度で、大半は平行可能。(仕様としては) 一つのトランザクション内には20個ずつputを入れている。 (トランザクション単位でのロールバックなので今回は20個くらいが適当かと思っている) ただしいかんせん書き込んでくれない。 何かヒントあればよろしく。
442 :デフォルトの名無しさん :2016/11/21(月) 02:24:13.88 ID:xTCFhIWI.net またお前か。 なぜそんな事をブラウザでやるか、それもindexedDBになぜ入れるかわからんが、 インデックス貼り過ぎではないか、 WebWorkerやServiceWorker使わずに表スレッドでやってないか くらいかな。 スクレイプの方がはやい、DBの方が遅い、と言っても、同時に走るわけでは無いよ、ネイティブの機能でない限り。
443 :デフォルトの名無しさん :2016/11/21(月) 02:56:54.44 ID:jF13U7nK.net いや、表スレッドでやっているぞ。 ただそれは実際には問題になっているようには見えないが。 もちろん同期APIは使ってない。 つまり当然非同期だし、表スレッドで待つことはない。 > 同時に走るわけでは無い あまりにスループットが低いのが気になっているわけだが、 確かにこの意味では「詰まる」事はあり得ないのも事実だな。 > インデックス貼り過ぎではないか こちらはインデックスは使っていない。 インデックス使わないと超遅いとかいうのも見かけたが、 (覚えでは)3-4年前の記事だったし、取り下げていたのであてにならないと見たが、使わないと駄目か? こちらはキーパス無し、キージェネ無し。外部キーを自前で供給している。 (要するにlocalStorageの容量増加版として使用している。ただし非同期だからどうにも使いにくいが。) > データベースを構築する > キーパス キージェネレータ > https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB > なぜそんな事をブラウザでやるか 一番手軽だからだよ。ブラウズする時にはブラウザは必ず使う。 アーカイブ勝手に取れてれば楽でしょ。 別ソフト起動するのが面倒でない人はそうすればいい。 > indexedDB ブラウザ側から「消せる」方が使い勝手がいいから。 なおファイルに落とす機能はもう完成済みで、サイトのミラーが勝手に構築出来るようになっている。 もちろん外部スクリプトでtarファイルを展開しなければならないが、これは仕様的に仕方ない。 IndexedDBはボロすぎて諦めていたんだが、微妙に使えそうになってきたので色気を出している。 というか俺はGreaseMonkeyだからね。サイトのスクリプトではないからあしからず。
444 :デフォルトの名無しさん :2016/11/21(月) 04:59:18.67 ID:+MgjqZsm.net 愚直に1つずつ保存しようとするから愚直なパフォーマンスしかでない。 DBには圧縮ファイル1つしか保存しない。 利用するときは解凍してメモリ上で1つずつ読み書きする。 最後に圧縮して保存する。これで問題ない。 もしくはキャッシュ用に設計されたCacheStorageを使う。
445 :デフォルトの名無しさん :2016/11/21(月) 08:17:47.88 ID:xTCFhIWI.net >>443 だから、表スレッドでやるから遅いんよ。 同期APIでなくとも、常に一本しか走らん。 インデックス使わないと中身探すのに全舐めだよ。 もし、挿入でなくupdateしてるなら絶対に必要。これはライブラリとか使ってなくて手で書いてたら気づいてると思うけど。 アーカイブは普通、拡張書いてそこからDOM舐めて、http通信でサーバに送ったりindexedDBに保存したりファイルにしたりする。 グリモンのスクリプトでもあんま変わらん。
446 :デフォルトの名無しさん :2016/11/21(月) 15:43:00.92 ID:LVMdN4w/.net とりあえず必要最小限のコードを全部提示しろ
447 :デフォルトの名無しさん :2016/11/21(月) 23:45:11.05 ID:jF13U7nK.net すまん解決したかも。 詳細を投稿しようとしたが何故かNGワード規制なので細切れで試す。
448 :デフォルトの名無しさん :2016/11/21(月) 23:46:56.58 ID:jF13U7nK.net 俺はIDBTransaction.oncomplete内でdb.close()していたのだが、 以下ではIDBRequest.onsuccess内でやっており、 //nparashuram.com/IndexedDB/perf/#Transaction based on Write それってありか?ということでMDNを確認した結果、MDNでもそうなので https://developer.mozilla.org/ja/docs/Web/API/IDBDatabase/close パッチして味見した結果、とりあえず倍くらいにはなった。 それでもまだ遅いが、今は安定して動く状態ではないので詳細は確認出来ない。 本修正して安定動作させ、まだ遅いようならもう一度投稿する。 ちなみにコード自体は上記上側と似たようなもの。ただしoncompleteを使っていた。
449 :デフォルトの名無しさん :2016/11/21(月) 23:47:37.28 ID:jF13U7nK.net 上記一つ目、httpが引っかかったようだ。脳内補完よろしく。
450 :デフォルトの名無しさん :2016/11/22(火) 01:12:38.73 ID:62WBcce4.net >>448 あのさあ。 なんで強引にそうむりやり解決するのかわからん。 db.close使うことなんかほとんど無くねえか? 当たり前のようにonsuccessでトランザクションcommitするだけじゃねえの? ずーっと偉そうだけど、脳筋が知恵の輪を強引にバラしてドヤ顔してるように見えて仕方ない。 ラグビー部員かゴリラレベルだよ、それ。
451 :デフォルトの名無しさん :2016/11/22(火) 23:13:11.58 ID:bRc12BV/.net oncomplete->onsuccessについては失敗した。 これは積み込みが早くなる(見た目終わったように見える)だけであって、 スループットは変わってない。 db.open->db.close間の時間を計測していたので間違えた。 意味としては並行トランザクションの数を増やせば同じだし、実際そんな感じだ。 onsuccessでやると他情報のライフタイムがずれるので、話が面倒になっただけだった。
452 :デフォルトの名無しさん :2016/11/22(火) 23:23:12.59 ID:bRc12BV/.net >>444 いや愚直なパフォーマンスでいいんだが、それすら出てないから問題視しているわけで。 ファイルと等速かやや遅いくらいなら十分なんだが。 圧縮展開を自前でやるのはさすがに面倒だ。 というかそれが常に成り立つならその機能ごと組み込んでおけという話だし、 実際そうなっている感触だ。 だからバグ対策でなければ自前でわざわざやる意味はないはず。 IndexedDBに関しては、基本的には「キー」となるものを「全体を一覧」出来る場所に保存して、 「本体」への参照をそれに持たせればよいだけだから、 ちゃんと実装してあれば大型ファイルへのアクセスはほぼファイルと等速になる。 だからFireFoxがFileSystemAPIを実装しない理由も妥当なのだが、 全然そうなってないからあれ?ってことで。(まだchromeでしか試してないが) キャッシュ用に設計されている場合も 大型ファイル本体へのアクセス速度は上記の通り大して変わらないはず。 ただIndexedDBのようなインデックス検索が必要ないからその分速いが、 今はそこが見えるほどの状況になっていない。 ちなみに後述するが読み出しは速い。 (絶対的に速いかは未確認だが、書き込みと比べて50倍速い)
453 :デフォルトの名無しさん :2016/11/22(火) 23:24:53.24 ID:bRc12BV/.net >>445 いやIndexedDBは基本的に別スレッドで実行される。 いちいち "in a separate thread" って書いてあるだろ。 俺は使ったこと無いが多分Nodeと同じ。 > https://developer.mozilla.org/ja/docs/Web/API/IDBObjectStore ちなみにプロファイラーで確認したが、表スレッドは完全に遊んでいる。 60秒間で100ms程度動いていて、他はアイドル。 OS上のCPUメーターでも遊んでいるし、いずれにしてもCPUがらみで引っかかっている感じではない。 ただ、I/Oで引っかかるなら普通のファイルと同速になるはずなのだが、これがないから不思議に思っている。 > インデックス使わないと中身探すのに全舐めだよ。 > もし、挿入でなくupdateしてるなら絶対に必要。これはライブラリとか使ってなくて手で書いてたら気づいてると思うけど。 これはないよ。 普通にIndexedDBを実装する場合、外部キーもインデックスとして実装するでしょ。 今は更地(データベースそのものの構築、onupgradeneeded でバージョン1)から始めて9000ファイル書いている。 全舐めの問題なら1000個目のファイルと9000個目のファイルで9倍速度が落ちるはずだけど、それは全くない。 先にも言ったがインデックス検索はCPU時間(usオーダー)の話だ。 実際にそこも遅いのかも知れないが、今はそこが遅くても見えないほど他が遅い。 なおリードと勘違いしているのなら、今問題になっているのはライトだけ。 後述するが、リードはとりあえず十分な速度が出ている。 ちなみにIDBCursor.update()は使っていない。俺が使っているのはIDBObjectStore.put()。
454 :デフォルトの名無しさん :2016/11/22(火) 23:34:52.08 ID:bRc12BV/.net 一応パラメータ振ってみたが、 トランザクションの数を絞る(40->2)と目に見えて遅くなるので、並列はしているっぽい。 ただし増やしても速度は上がらない。 一つのトランザクション内のput数を増やしても明確な速度変化は見られない。(20->20-200) 問題点を整理すると、 ・I/O律速ならファイルと同等程度になるはずだが、5-10倍遅い。(ライトだけ) ・CPU律速ではないように見える。CPUは空きまくり、スレッドもほぼ全てアイドル時間。 で、何が引っかかってこんなに遅いの?という話。 ちなみに読み出しは十分速く、IndexedDBの中身を丸ごとtarファイルにして出力するのに10秒程度。 格納に20分かかるのに、読み出しには10秒しかかからない。 (読み出しに10秒=中身を読みだしてtarファイルをblobとして作成するまでに10秒、 その後ダウンロードする時にさらに10秒かかる) このtarファイルを7-Zipで更地に展開するには25秒。 cygwinで既にあるファイルシステムに上書き展開するのには2-3分かかった。(これが前の話) 格納だけ異常に遅いんだが、これって何? 単純比較するとリードと比べてライトが45-120倍遅い。 ただまあwriteが遅いのは事実のようだが、ここにあるように50k records for 10 sec ならいいんだが。 ttp://stackoverflow.com/questions/22577199/indexeddb-access-speed-and-efficiency 記事は古いがここ見る限り駄目なことはやってなさそう。 ttp://blog.nparashuram.com/2013/04/indexeddb-performance-comparisons-part-2.html 既に書いたとおり、コードはここと似たようなものだが、oncompleteを使っている。 ttp://nparashuram.com/IndexedDB/perf/#Transaction based on Write とはいえライトだけ50倍遅いのは俺の使い方に問題があるのだろう。 実装が如何にボロくてもここまでにはならないし。 というわけで高速書き込みのサンプルコードがあればURLよろしく。
455 :デフォルトの名無しさん :2016/11/23(水) 00:39:24.04 ID:Bkme+Kby.net もう出来てる、だがなんだか知らんが、それ捨てたほうが良いとおもうわ。 普通はこう言うのオフラインモード持ったプロキシとして作る。
456 :デフォルトの名無しさん :2016/11/23(水) 23:07:06.62 ID:V62ycJbx.net とりあえず自力で辿り着けそうな雰囲気になってきた。 速いコードを見つけた、というかMDNのそのままをコピペしてコンソールで試したら十分速かった。 確実にこちらのコードに何か原因があるのだろう。 もし調べてくれてたらありがとう。
457 :デフォルトの名無しさん :2016/11/24(木) 15:10:21.36 ID:Mx4OpUDM.net この白痴 IDBを使うな、使うにしてもそう使うなと言われてるのに聞かないんだもんな 救いようがない
458 :デフォルトの名無しさん :2016/11/24(木) 16:54:40.99 ID:HdRBGkCM.net なんともならんよなぁ。 何故クローム拡張を作らんか(jsで書けるし、妥当な保存方法だし、クロスドメインで苦労しなくても良いし、もし配布を気にしてるならzipでも蒔ける) 色んな疑問が湧く。 要は、ロスカット出来ない類の奴なんだと思うよ。 今まで掛けた工数が惜しいとか、自分が未熟だと認めるのが悔しい、とか、 自分は一番良い方法を考えてて、その中で「ちょっとだけドキュメントが未熟だから」実現方法が分からない事を聞いてるだけなのになんだこいつら、とか。 ベンチャーか中小企業の社長に居そうな奴。 5年目か10年目に破産する類の。
459 :デフォルトの名無しさん :2016/11/25(金) 00:21:37.68 ID:9S7zID8/.net こちらは解決しつつある。今はテスト中だ。前と同様にとちっているかもしれないが。 とはいえ、俺はお前らが何でそこまで自信過剰なのかさっぱり分からない。 5-10年目に破産したベンチャーの社長を笑えるのは、 ベンチャーを起こして10年以上持たせた奴だけだぞ。 お前らがそうだとは到底思えない。 そんなんだからゆとりは意識高い系()とか言われるんだよ。 意識高いだけで中身がないからウザイだけ。 まあお前らに付ける薬もないのも事実だが。 俺に付ける薬もないのと同様にね。 お前ら、OSSに参加もしてないだろ。 よくもまあそれで、としか思えないけどね。
460 :デフォルトの名無しさん :2016/11/25(金) 00:52:34.50 ID:SsHeBd9H.net >>459 メンテナしてるけどそれが何か、って話な位で、得意になるもんでも無いんじゃ? 参加とやらの程度にもよるけど、ある程度やってりゃ、プルリクくらい普通に出せるだろ。 コミッタって関わるにあたって特別な事なんもしてないと思うけど。 リポジトリ晒せと言われたら色んなものが傷つくからやらんが。 「お前らがそうとは到底思えない」 「してないだろ」 「よくもまあそれで」 ってまぁ意識たけえなぁ。 ベンチャー起こして10年も持たさんで良いだろ。 まともな会社でそれなりに勤めて、何度か転職して、それなりの立場にいる方が余程視野が広がるよ。 少なくとも金の算段を必要以上にせんで良いからな。 大→中堅→ベンチャー→大と転職して色んな良いところ悪いところ見てきたからわかるが、お前は悪いところの総和みたいな姿しとるよ。
461 :デフォルトの名無しさん :2016/11/25(金) 01:07:59.74 ID:bE83eHTG.net 一人が自信満々なのを否定するのと大多数が自信満々なのを否定するのは意味が違うからな
462 :デフォルトの名無しさん :2016/11/25(金) 01:21:08.20 ID:9S7zID8/.net >>460 お前がそれならそれでいいよとしか言いようがない。 それがWeb系といわれる所以だろうし。 別に俺はお前に評価される必要なんてないし。 OSS云々ってのは、明らかにお前らは距離感がおかしいからだ。 OSSやってる連中は、限られたリソース(時間と金)の中でやりくりしている。 各自が今現在の状況で最大の効果が出るように考えている。 もちろん制約条件がそれぞれ異なるので、 君にとっての今の最適解が俺にとっての今の最適解でないこともよくある。逆も然り。 だけどそれはそういうものだから、いちいち文句は言わないし、言われない。 文句があるならお前がやれ、方針が違うならフォークしろ、の世界であるし。 だからお前らみたいな「俺の提案が神だからそれ以外は認めない」はないんだよ。 君は参加しているつもりになっているだけで、実際は観戦しているだけだよ。 参戦していない。
463 :デフォルトの名無しさん :2016/11/25(金) 01:22:21.94 ID:9S7zID8/.net ただまあそれ以前に俺はお前らの提案がいいとも思わないけどね。 いちいち反論した方がいいのか?ならば言ってみてもいいが、 余りこんなのをやってもお互いに意味はないんだよ。 どうにもお前らはこういうのが好きなようだが。 >>458 CacheStorageはhttps縛りだから使えない。 クローム拡張にしない理由は、FireFoxもサポート対象だから。 並行して2つのソースを管理するほどリソースはない。GreaseMonkeyなら一つのソースで済む。 ここら辺は要するに楽な方をとっているだけ。 クロスドメインについてはGreaseMonkeyは独自拡張を持っていてスルー出来る。 配布なら苦労してない。 GreaseMonkey導入後の環境ならuser.jsリンクをクリックすればインストールされる。 zipすら要らない。リンク一つで済む。 掛けた工数云々は関係ない。 未来の工数も踏まえた上で、今現在の最善手を選んでいるだけ。 これは俺以外のOSSに関わる連中全員そのはずだが。 上記の通り、今現在何も問題ないし、移行のメリットもないのにするわけないだろ。 IndexedDBと同様、chrome拡張にもどんな落とし穴があるかも分からないわけだし。 これで満足か? 何でお前らがこんな点ばかりににこだわるのか俺はよく分からないが。
464 :デフォルトの名無しさん :2016/11/25(金) 08:31:00.71 ID:QZ3DaKSR.net >>462 評価される必要はないのに、相手を下げて自分を高めようとえらく必死だな。 限られたリソースは現実であって、目指すべきものはそのリソースに縛られたものにすべきじゃない。 俺には手一杯だからとか、この部分俺あんまり強くないから、とかは、放置するんじゃなくて、明言する。 どんどんマサカリ投げて、どんどんプルリク投げて欲しくて、画像貼らせてほしい。 誰かのリソースが足りないのなら、そう書いて、他の誰かのリソースの援助を求めるべきなんよ。 リソースが足りてないから制約条件になります、はおかしいし、ここまで物言いがついたら、最適条件がなぜ最適条件なのか、くらいからもう一回ゆっくり考えるべき。 ソクラテスのいじめまがいの問答をもってでもやるべき。 「俺の提案が神だからそれ以外は認めない」? 俺はそんな事は言ってないが。 むしろ、お前がずーっと言ってる事じゃねえの? >>463 httpsなんかなんとでもなるだろ。letsencryptもあるし、イントラなら証明書配れば良い。 並行して管理するのは画面周りで良いので、実際の管理工数は1.3倍程度になる。きっちり画面とロジックの設計をしてれば。 なら、むしろグリモン縛りなら、グリモンでプロキシ書いたらいかんのか? あと、データは普通に、indexedDB使わんと、ファイルに書けんじゃん。 そのアーカイブとやらをBase64にして、前後にvar tmp=""つけてjsとして書き出して、選んで@requireで読み込むだけで良いんだが、なんかindexedDBの出番ある? それこそインデックスだと思うけどね。
465 :デフォルトの名無しさん :2016/11/25(金) 08:34:29.54 ID:PtU3UTK5.net いつも思うが、ここの質問者は複雑な背景がある質問をソースコードを出さずに質問するのは何故だ? 代替案が提案されるのは情報が出そろってないから 初めから全ての情報を出せばこんなことにはならない アドバイスした人や否定意見を「お前等は分かってない」で一蹴してさんざん馬鹿にした上で去るのが常 お前が情報を出さないのが全ての原因
466 :デフォルトの名無しさん :2016/11/25(金) 08:47:16.69 ID:QZ3DaKSR.net >>465 賢いつもりで、文句言ってくるやつは愚鈍だと言いたいんだろう。 そもそも相手を愚鈍にしておきたいから、ソース出さないんだと思うけどね。 俺なら早めに自分のリポジトリの上げて、声出して、便利そうだけどここで使い物にならんので、置いとく、とかやる。 個人の持ち物なら。 仕事や金儲けでやってたら、人の話聞かないと大怪我するのはわかってるしな。
467 :デフォルトの名無しさん :2016/11/25(金) 09:05:01.87 ID:cmXQyT89.net いいんだよもう。 本当に心底困ってて、礼儀正しく質問してくる奴なんて幻なのだから。 俺すげーしたいやつ、ただここでアピールすることで興奮し、 不安を取り除いてやる気を出そうとするやつの話を聞いてやるのもこのスレの役目。
468 :デフォルトの名無しさん :2016/11/25(金) 12:43:41.42 ID:QZ3DaKSR.net まぁ、拡張もクリック一つなんだけどね。 それが現状ベスト、ではなくて、それしか使えない、って白状すりゃいいのに、プライドの高いやつだなぁ。
469 :デフォルトの名無しさん :2016/11/25(金) 13:19:56.25 ID:1PQbLaAu.net 自分は万全に良く知ってて良く考えてると思ってるけど、 技術が圧倒的に足りないのもあってうまいこと行かず、 もやもやしたフラストレーションが溜まってるんでしょう。 要するに何か具体的に解決したいのではなくスッキリしたいだけ。 まあそれは結局自らの問題だから他人に言っても仕方ないんだけどね。
470 :デフォルトの名無しさん :2016/11/25(金) 22:05:14.23 ID:9S7zID8/.net お前らがそういうことにしたいのならそれでいいけども、 お前らのレベルの低さは他言語スレ見たらすぐ分かると思うんだが。 とはいえWeb系()に付ける薬はないのは分かった。 そしてこの言葉が広まっているのはつまり皆が同感するからであり、 それを俺が何とかしようとしても、所詮俺如きではどうにもならないのも分かった。 まあせいぜいポストゆとりに殺されてくれ。
471 :デフォルトの名無しさん :2016/11/25(金) 22:06:17.97 ID:9S7zID8/.net >>465 ここでのこういうやりとりは無駄であって、 その時間をソースコード開発に回すべきだと思っているから。 ここに晒したらいちいち反応しなければならなくなるだろ。 それは時間の無駄だ。結局今回も自力で辿り着いてしまったし。 俺も結局は最善手を選んでいるだけ。 ここでコードを晒して時間を浪費するよりは、 何か情報があればラッキー程度として、基本的に自力で解決することに賭けた。 これまでのやりとりを見る限り、君達には俺のコードは読めないし、解決する能力もない。 だからせいぜいサンプルコード発掘くらいだと思ってそうした。 書き込み速度のオーダーを知っていればその点の即答もあるかと思ったが、それもないし。 おそらく君らは俺がやっているほど負荷掛けた使い方をしていない。だから何も知らない。 オススメのCacheStorageのスループットも知らないだろ?要するに君らはその程度なんだよ。 それで何でそこまで自信過剰なのか俺には分からないのだが。 (俺もそれを知らないから俺が大したこと無いのももちろん事実だが、 君らも大したことはないんだよ、それを自覚しないといけない) そもそも代替案なんて必要なかった。 もう対策は出来ていて、十分な速度は出ている。(以前と比べて50倍速以上) 本来あるべき回答は「その書き込み速度は明らかに遅すぎるから、お前のコードに問題がある」だった。 ただ君らは本来の書き込み速度自体を知らないから、これに答えられず、 「遅いのなら違う方法を試せ」という間違った回答をよこし、それを正解にしようとしている。 色々明らかにずれているんだよ。
472 :デフォルトの名無しさん :2016/11/25(金) 22:07:04.84 ID:9S7zID8/.net とはいえここら辺のずれもこれまでどおりだから、 俺は君らからでも有効回答が得られる可能性を残しつつ、 無駄に巻き込まれないように出す情報も絞ってある。 それだけ。 ただ、やっぱり難癖付けられて巻き込まれてはいるが。 前も言ったが、こっちもどこまで出せばどれくらいの精度が期待出来るかは分かるから、 こちらが出していない部分については当然回答がないということで全く問題ないんだよ。 出している範囲で明らかにおかしければ指摘して欲しいし、問題ないならスルーでいい。 ただ今回は出している範囲でも明らかにおかしいのに誰も指摘出来てないだろ。 そしてさらにおかしな回答をよこしてそれを正しいと主張している。 お前らがそれで仕事しているらしいからWeb系()って怖いわ。 なお君は465=444か? だったら俺は君の回答には不満はない。知っている範囲で答えた良い回答だ。 知らない奴が間違った主張をするからおかしな事になるわけであってね。 ただなんか知らんがJavaScriptの連中はこういうのが多いが。
473 :デフォルトの名無しさん :2016/11/25(金) 22:36:44.21 ID:TwCdHdIi.net うーん、やっぱり、何かおかしいわ。 開発って長くやってりゃわかるけど、コード睨んでるより、飯食って風呂入って嫁とゴロゴロしてる時くらいに謎の天啓で解けるようなもんで、 ソースコード自体は「こう書く」と決めてから、ガーッと書いて半日位で終わるんだよなぁ。 ゴリラの知恵の輪見て、「お、解けてる、ゴールに辿り着いたな」と思うのは仏くらいだろ。 そのスループット、は背景がわからないと答えられないんよね。 グリモンでもバージョンによって違うし。 遅いなら違う方法試せ、は要は、「情報が足りなすぎてわからん。自分でやってみろよ」の糖衣文だろ。 やってるほど負荷をかけてない、って当たり前よ。 密航船の奴隷でもあるまいし。 普通は人数と航路に対して適切な船を選ぶか、船に対して適切な航路と人数を選ぶもんだ。 絞ったものには、絞ったなりの答えしか来ないよ。 WebはWeb屋、俺はイントラ屋と思ってるおっさんでも思うんだから、お前が馬鹿にしてる新進気鋭のWeb屋さんならもっとキツめに思うと思うよ。 少なくとも俺はそれはブラウザではやらん。
474 :デフォルトの名無しさん :2016/11/25(金) 23:59:05.15 ID:9S7zID8/.net お前も話をすり替えるのな。それもWeb系()の悪い癖だわ。 多分すぐに「ポストゆとりの新進気鋭のWeb屋」に駆逐されるよ。 俺の知ったことではないが。
466 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者