X



Webサイト制作初心者用質問スレ part249
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2018/06/16(土) 19:14:23.20ID:???
初心者だろうが誰だろうが、
まず >>>■ 検索してから ■<<< 質問すること
ネタ・煽り・自演・荒らしは完全放置

【質問時の注意】
  1. 質問する前に >>2 にも目を通すこと
  2. メール欄に何も入れないことを推奨 (IDを出して騙りを防止するため)
  3. 質問者が返信する際は「最初に質問したレス番号」を名前欄に入れること
  4. ブログについてはブログ板で質問すること
     ●ブログ板 http://mevius.5ch.net/blog/
  5. SEO、アドセンス、検索サイトに登録しても検索結果に引っかからないといったことは SEO関連スレで質問すること
     http://find.5ch.net/search?q=seo
  6. アクセス解析については該当スレで質問すること
     http://find.5ch.net/search?q=%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E8%A7%A3%E6%9E%90
  7. 製作ソフト(Dreamweaver DW、ホームページビルダー、等)を使用した場合の質問は該当スレで質問すること
  8. CGI、PHP, Perl, Ruby 等のプログラミング関連や CMS, Wiki は Webprog板、またはこの板の該当スレで質問すること
     ●WEBプログラミング板 http://medaka.5ch.net/php/
  9. JavaScript はこの板の該当スレで質問すること
 10. 画像作成ソフト(Photoshop 、Illustrator、等)については該当スレで質問すること
 11. HTML, CSS, CGI, 制作ソフトなどのどんな本を買えばいい?といったことは書籍についての質問スレで質問すること
     http://find.5ch.net/search?q=%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A4%E6%9B%B8%E7%B1%8D%E3%81%AF
 12. 質問内容を吟味して、正しい日本語で第三者が読んでも分かるように質問を書くこと
 13. 間違った回答をする人もいることに注意

【前スレ】
Webサイト制作初心者用質問スレ part248
http://mevius.5ch.net/test/read.cgi/hp/1494150188/
0693Name_Not_Found
垢版 |
2018/11/04(日) 00:43:35.51ID:???
要件定義しないとなぁ
>>678みたいなのがあればタイムアウトなんて絶対に起きる
自社の管理いステム限定の処理なら起きないだろうという事は推測できるけど
前日で決まってる+数パターンなら夜中に作っておくという処理も考えられる
0694Name_Not_Found
垢版 |
2018/11/04(日) 00:49:10.03ID:???
要はその間に通信をし続ければいいんですよね
いくら巨大なファイルをダイヤル回線みたいな細い回線でダウンロードし続けても
進捗がある限りタイムアウトっておきないじゃないですか

ZIPをストリームで送る
処理中にレスポンスをストリームで少しずつ返してそれをJS側で進捗とみなす
非同期にしてレスポンスはすぐ返し、ajax で polling して進捗を返すAPIを追加する

のどれかができれば可能だとは思うんですが
どれもが Rails + IE っていう制約だとなかなかうまくいかなくて…
0695Name_Not_Found
垢版 |
2018/11/04(日) 01:04:43.68ID:???
つーかもう質問内容が初心者スレの内容でもないし
>>1 よんで webprog 板いったほうがいいんじゃね
ここはどっちかっていうと HTML CSS みたいなマークアップ関連の質問するところな気がする

まあRailsスレなんて人いるか知らんけど
0696Name_Not_Found
垢版 |
2018/11/04(日) 02:47:35.68ID:???
IEはまじでjavascript触る人にとっては癌だよなー
IE対応ってだけでjavascriptの工数倍とってもいいぐらいだわ
ES6使えないだけでも糞すぎ
0697Name_Not_Found
垢版 |
2018/11/04(日) 07:44:38.02ID:???
>>696
そのためにbabelがある。babelがない時代ならともかく
今それを言ったら、技術力低いってバレるぞ
0698Name_Not_Found
垢版 |
2018/11/04(日) 09:12:04.84ID:???
IEはjsじゃないからな
jsの工程多いなら別料金取れる
0699Name_Not_Found
垢版 |
2018/11/04(日) 10:00:40.25ID:???
>>697
だったら答えてやれば?
>IEでTransfer-Encoding: chunked受信する方法
0700Name_Not_Found
垢版 |
2018/11/04(日) 10:58:07.17ID:???
ajax関係はむしろもっと低レベルなAPIで仕様を統一してくれないとどうしようもない
0701Name_Not_Found
垢版 |
2018/11/04(日) 11:02:26.30ID:???
いまの話題でBabelとか言い出しちゃうほうが技術力低すぎ
ブラウザのHTTPハンドリングの内部実装やプロトコルのはなしなんだからbabelじゃ何も解決できん

ms-streamとか変なもん作ってるから…
0702Name_Not_Found
垢版 |
2018/11/04(日) 11:42:33.57ID:???
>>697
Babelってただの互換性吸収変換器だしなー
変換先のJSがIEで不可能なことはそもそも不可能なんだよなー
0703Name_Not_Found
垢版 |
2018/11/04(日) 11:46:16.34ID:???
IE11のサポートは2025年10月までだからがんばれ
サポートって言っても何もしてないがw
0704Name_Not_Found
垢版 |
2018/11/04(日) 11:47:06.21ID:???
>>699
それはJavaScriptの話じゃない。
勝手に話をすり替えんな
0705Name_Not_Found
垢版 |
2018/11/04(日) 11:48:41.74ID:???
>>696
> IEはまじでjavascript触る人にとっては癌だよなー
> IE対応ってだけでjavascriptの工数倍とってもいいぐらいだわ
> ES6使えないだけでも糞すぎ

JavaScriptの話だよな?
どうもIEの話とごっちゃにしてるバカが多いけど、
JavaScriptの問題。特にES6はBabelで解決できるよ
0706Name_Not_Found
垢版 |
2018/11/04(日) 11:48:57.22ID:???
jsだろうとなんだろうとIEが糞って事には変わりないよ
0707Name_Not_Found
垢版 |
2018/11/04(日) 11:50:45.57ID:???
質問者はIEでストリームレスポンスできる方法きいてるのにアスペかこいつ
質問と無関係な雑談したいならスレチ
0708Name_Not_Found
垢版 |
2018/11/04(日) 11:51:26.66ID:???
>>696は質問者(?)じゃないんですが?
勝手に別の人への回答にするなよ
0709Name_Not_Found
垢版 |
2018/11/04(日) 11:52:19.43ID:???
>>696にレスししてるのに、
勝手に別の人への質問にすり替え、
解答が違うとか、なにそれwww
0710Name_Not_Found
垢版 |
2018/11/04(日) 11:52:45.21ID:???
どう見ても質問じゃないだろ
そのレスのどこでなにを質問してんだ
アスペな上に日本語不自由か
0711Name_Not_Found
垢版 |
2018/11/04(日) 11:54:22.35ID:???
fetchがIEで使えなかった
→IEくそだよなー
→Babel 使え ← は?

マウントレスするならはなしのながれぐらいつかめるようになりましょう
0712Name_Not_Found
垢版 |
2018/11/04(日) 11:54:32.46ID:???
>>710
だから>>696にレスしてるだけだっつーの
お前がアスペだろw
0714Name_Not_Found
垢版 |
2018/11/04(日) 12:01:20.56ID:???
初回のレスでいきなりマウントレスするようなやうにかまうから
0715Name_Not_Found
垢版 |
2018/11/04(日) 12:04:04.69ID:???
まわりでBabelなんて使ってるやつ知らんのだが
学習コスト導入コスト変換コストがかかるだけでも工数が増えるしそれだけでも糞だろ
保守でBabelが使えることも条件になるしな
0716Name_Not_Found
垢版 |
2018/11/04(日) 12:09:50.17ID:???
>>692
WinJS.xhs ってのがある
XMLHttpRequest のラッパーになってて
ストリーム受信含むいろいろなことができるらしい
自分は使ったことはないんだけど
0717712
垢版 |
2018/11/04(日) 12:35:36.39ID:???
クソ雑魚ばっかりwww

>>692
> それも考えたのですがRailsで非同期処理するのが思いの外大変で…
> 別にサーバーをたてないと非同期処理ができないみたいで…
Railsで非同期するならActiveJob使えばいいやん?
普通にフレームワークに搭載されてる

>>675
別にRailsでZIPをストリームで返すことはできるけど、
それで本当に良いのかって話がある。

S3を使っているなら、Railsアプリを経由せずに、直接S3からダウンロードしたほうが良いからだ。
AWSは詳しくないが、同一リージョンならEC2(Railsサーバー)と
EC2の通信量は無料じゃないか?ならZIPもS3に作成し、
そこから直接ダウンロードしてもらったほうがコストも速度も良くなるだろう
その時のダウンロードURLについてはSigned URLが重要になってくるな

RailsでZIPをストリームで作ることもそんなに大変とは思わないが、
ダウンロードが始まるまでに数分かかるというのなら、ページ移動してしまう可能性もある。
だから一つのセッションとかに頼るのではなくて、非同期でZIP作成して
ZIPの作成の完了をAjaxで定期的に問い合わせたりすればいいだろう

そのときに、どこまで処理が済んだかを記録しておけば、ZIP作成の進捗状況を出すこともできる。
ダウンロード・アップロードも何処までデータを送信したか、受信したかを記録しておけば
(ダウンロード・アップロードとは別のセッションで)Ajaxを使って通知することは可能

S3から直接ダウンロード・アップロードさせる場合はIEでダウンロード・アップロードの
進捗状況を表示するのは難しいが、(ZIP作成の進捗状況通知ならできる)
Railsアプリを通すという前提であれば、IEでもできるぞ。
0718Name_Not_Found
垢版 |
2018/11/04(日) 12:47:40.20ID:???
>>677
> これがタイムアウトせずに IE 含めたモダンブラウザで実現できる方法が知りたいのです

可能

前提として時間がかかる処理は非同期で行う。これが鉄則。
Railsで非同期処理をするならActiveJobなどを使えば良い
S3ということだからAWSを使ってるのだろうけど、AWSの
非同期処理を行えるサービス(詳しくは知らない)を使うのもいいだろうな

まずRailsアプリはダウンロードのリクエストがきたら、それを非同期で
処理するようにしてクライアントにはすぐにレスポンスを返す。

サーバー側では非同期でゆっくりとZIP作成でもすればよい。
作成したZIPはS3に置いたほうがコストとパフォーマンスの両面で良いだろう。
スケールさせる場合(マシンの台数を増やした場合)同一のインスタンスに
アクセスするとは限らないという問題もある。ローカルディスクに保存してると、
作成したサーバーとは別のサーバーに接続したときにファイルが見つからない
サーバーが1台しか建てないっていうのなら、ローカルにZIPを作成してもいいけど。

そしてZIP作成の進捗状況はAjaxで定期的に監視すればよい。IEでも対応可能。

ダウンロードする場合のおすすめはS3に置いたZIPファイルを直接ダウンロード
してもらう方法だが、Railsアプリを経由してダウンロードする方法もあるにはある

質問からすれば、ZIPを返すまでの待ち時間の解決がメインみたいなので
ダウンロードの進捗状況までは知る必要はなさそうだが、やろうと思えば、
何処まで送信したかを記録することで、Ajaxで通知することは可能
0719Name_Not_Found
垢版 |
2018/11/04(日) 12:56:44.52ID:???
>>694
RailsアプリからZIPをストリームで送るということをやるなら、
別にJavaScript側でいろいろやる必要はない。JavaScriptもAjaxも何も要らない

やり方は、単にRailsアプリでメモリ内にZIPデータを作って返すだけだぞ
必要なのは、それができるライブラリを探すだけだろうな



あと「進捗がある限りタイムアウトっておきないじゃないですか」の解決策として
「非同期にしてレスポンスはすぐ返し」と書いているようだが、
Ajaxはすぐにレスポンスを返して通信を終了しているわけで、
「進捗がある限りタイムアウトが起きない」のとは関係ない話になってるぞ

Fetch APIなどを使って細かいチャンクごとにデータを受け取ってローカルで保存する方法はあるが
それを使わなくてもIEでも「進捗がある限りタイムアウトっておきない」だろ?
ゆっくりデータを返すのに必要なのはサーバーの対応だけで、IEだからって話にはなってない。
0720Name_Not_Found
垢版 |
2018/11/04(日) 13:07:41.87ID:???
ついでに、Fetch APIなどを使って細かいチャンクごとにデータを受け取る方法だが、
つまりはTransfer-Encoding: chunkedに対応するってことだが、
これはChromeなどでJavaScriptを使って対応することは可能だが、
それはそれとしてだ、サーバー側での対応も必要だぞ。

ダウンロードのためのリクエストが細かく送られてくる、それも一つのセッションではなく
チャンクごとに別々のセッションでリクエストが飛んでくるので、Rails側でそれに対応して
細かいチャンク毎にデータを返すように作らないといけない

だからZIPデータを(メモリに)作りながら、データを返すっていうのは難しいんだよ。
なぜならZIPを作成しているセッションとは別のセッションで次のチャンクの要求が来るからね

ちなみにS3はこの細かいチャンクごとのダウンロードに対応しているから、
S3からFetchAPIなどでダウンロードする方法の方が、サーバー側でチャンクごとのダウンロードを
実装しなくてすむ。つまりは、S3のCSVファイルからZIPを作ってS3に置くって話に戻るわけだなw
0721Name_Not_Found
垢版 |
2018/11/04(日) 13:09:41.41ID:???
俺は>>696にレスしてるだけだっていうのに、
本来の質問者に対してレスしろとか言われたから、
レスしてやったぜwww

途中参加で駆け足で思いつくまま書いたからわかりくいだろう。
続けてやるから、質問を続けるが良い
0722Name_Not_Found
垢版 |
2018/11/04(日) 13:16:28.70ID:???
692 です

>>716
ありがとうございます
これから調べて試してみようと思います
0723Name_Not_Found
垢版 |
2018/11/04(日) 13:17:14.57ID:???
>>717
丁寧にありがとうございます

>Railsで非同期するならActiveJob使えばいいやん?
軽く調べてみたらコード自体は簡単にかけるんですけどそれを動くようにするのに
sidekiqとかredis?みたいなジョブサーバーを建てないといけないみたいで
サーバーをたてるとなるとリソースの問題やモニタリングやログ監視とかも必要になってきて
たかがダウンロードに進捗つけるのにそこまでしなきゃいけないものなのかなと…

>別にRailsでZIPをストリームで返すことはできる
何っていうジェムをつかえばいいんでしょう
ファイルを逐次追加はできても send_data send_file できるのは
zipが完成してからってジェムしかないんですよね
zip自体はエントリ単位でストリームに対応してるアルゴリズムらしいのですが

>ZIPもS3に作成し
できればファイルに残さずメモリ上で処理したいんですよね
ダウンロードはこれまでも何度かつけたことがあるんですがファイルを作ってリダイレクトだと
完了したあとダウンロードされないことがあるとサーバーにごみが残り続けるって問題があって…

>非同期でZIP作成してZIPの作成の完了をAjaxで定期的に問い合わせ
仰る方法で実現することはできると思うし多数のユーザからリクエストが来るならそうするべきですが
今回内向け管理画面でオペレーターがひとりって想定でコントローラを専有してOKなので
いちばんはじめに>>669で質問したように >>669 ができればコーディングもリソースも楽なんですよね…
非同期処理にしても忙しい処理してる最中にポーリングして進捗にうけこたえするのって無駄な気がするんです
それに比べればKeeo-Aliveで進捗をストリームで受け取ることさえできれば
サーバー側でタイミングや頻度もコントロールできますしね

結局IE上のajaxでレスポンスをストリーム受信することって無理なんでしょうか…
Chromeではfetchのreadablestreamをつかってダウンロード進捗が動いたのでサーバーからはflushできてるみたいなので
あとIEで送られてきたレスポンスをバッファせず受け取ることさえできればすべてが解決するんですが…
0724Name_Not_Found
垢版 |
2018/11/04(日) 13:25:10.56ID:???
> 完了したあとダウンロードされないことがあるとサーバーにごみが残り続けるって問題があって…
cronでも使って定期的に後片付けすればいいよ

> Chromeではfetchのreadablestreamをつかってダウンロード進捗が動いたのでサーバーからはflushできてるみたいなので

ZIPを作成するまでの待ち時間が問題なんじゃなかったのか?

fetchのreadablestreamはJavaScriptでのダウンロード中に画面更新ができるという話で、
ZIP作成までの待ち時間は別の話だし、そもそもJavaScriptでダウンロードするのではなく
ブラウザにダウンロードさせれば画面更新は行えるだろう?

本当にやりたいことは何?
0725Name_Not_Found
垢版 |
2018/11/04(日) 13:27:45.37ID:???
> >別にRailsでZIPをストリームで返すことはできる
> 何っていうジェムをつかえばいいんでしょう

知らん。でも原理的にはできるだろ?
データ作りながら出力するだけ

どうやってS3のCSVファイルを参照しているのか知らんが、
ファイルとして扱えるのなら、zipコマンドでファイルに
書き出すのではなく標準出力に書き出せばできるはず
0726Name_Not_Found
垢版 |
2018/11/04(日) 13:32:12.15ID:???
>>723
> いちばんはじめに>>669で質問したように >>669 ができればコーディングもリソースも楽なんですよね…

それが楽という理由がわからん。

ダウンロードボタンを押されてサーバーにリクエストが飛んで、
サーバーがZIP作成などの処理を実行中に、その進捗状況をデータベースや
ファイルに書き込んでおいて、Ajaxで進捗状況を監視するのも大差ない。

むしろその方がJavaScriptで受け取ったデータの最初の10文字を消して
CSVファイルを保存するよりも楽だろう
0727Name_Not_Found
垢版 |
2018/11/04(日) 13:40:53.23ID:???
そういやZIPを作成しつつストリームでデータ返すなら
最終的なZIPのサイズは不明だから、何%終わったとかは
出せないな。何バイト送信したっていうのなら出せるけど
0728Name_Not_Found
垢版 |
2018/11/04(日) 14:34:05.60ID:???
いるよな質問者が本当にやりたいことは何ひとつ答えずに
自分の経験でしか語れないやつ

わからないなら黙ってればいいのに

1回のリクエストレスポンスでIE以外ではすでに実現できてるっていってるのに
今更全く別の無駄だらけの方法を1からやれってバカすぎる
たかがダウンロードに進捗つけるのにジョブサーバーとかcronとか
こういうリソースのこと何もかんがえないやつにサーバーサイドやらせた結果障害だらけになるんだろうな
0729Name_Not_Found
垢版 |
2018/11/04(日) 14:42:56.04ID:???
sidekiqはまじでやめとけ
直接かかわったことはないけど昔sidekiqがメモリリーク起こして頻繁に落ちて
解決するまで何度も夜中におこされて再起動かける別チームのメンバーみてきた

つーか Railsってまじで別のジョブサーバーがないと並列リクエストうけられんの?
さすがにゴミすぎだろ
もうApache 上に直接おけばいいじゃん
0730Name_Not_Found
垢版 |
2018/11/04(日) 15:00:38.66ID:???
>>724
>cronでも使って定期的に後片付けすればいいよ
基本的にフロントエンドでサーバーサイドはコードをいじれるってだけで
インフラの知識がないのでコマンド叩くとか基本的に設定をいじるとかそれも一苦労なのです

>ZIPを作成するまでの待ち時間が問題なんじゃなかったのか?
そうです
>本当にやりたいことは何?
ダウンロード前のZIP作成中に進捗を表示したい
例えばファイルを1つZIPに追加するごとに全体何ファイル中何ファイル目という進捗をクライアント側に送りたい

>fetchのreadablestreamはJavaScriptでのダウンロード中に画面更新ができるという話
fetchは本当にダウンロード前に encoding:chuncked なデータをリアルタイムでうけとれるんです

Rails で render stream:true というオプションをつけるとchunkedデータを返せるみたいで
ZIP作成中にファイルを1つ追加するたびにresponse.stream.write("{progress:1})
みたいにかくとダウンロード開始前に chrome 側にレスポンスが流れてきます
でさいごに response.stream.write("{complete:zipbody1})をつけておくって
javascript 側で complete: をみたら残りをファイルコンテンツとみなして blob を作るという感じで実際に動いてます
$ajax や XMLHttpRequest では途中で受け取る方法がわからなかったんですが
fetch の readableStream というのを使うとうけとれてこれが IE だけ動きません

>>726 >それが楽という理由がわからん
サーバーサイドの経験の差なのかも

フロントエンドがメインでサーバーはviewとかSQLのやりとりを軽くさわれるぐらいなので
ジョブサーバーをたてるってだけでノウハウも何もなくなにをしたらわかりません
しかも非同期実行中の進捗をメインコントローラーに受け渡す方法もわからないし
進捗を聞きに来た相手が最初のリクエストした相手と同定する方法もわからないし

逆にいまの方法だとサーバー側は render stream: true と response.stream.witeをかくだけ
クライアント側は文字列として取り出しさえできればあとは何とでもなるので…
0732Name_Not_Found
垢版 |
2018/11/04(日) 16:07:30.36ID:???
レベル高すぎて何いってるかさっぱりわからない
HTMLとCSSとwordpressしかつかえない俺からしたら別世界の話題
0733Name_Not_Found
垢版 |
2018/11/04(日) 16:50:32.00ID:???
>>731
やってみたんですけどだめでした
undefined じゃなくなってエラーは出なくなったのでうまくいったかなと思ったのに

ttps://sbfl.net/blog/2018/05/26/javascript-streams-api/

ここを参考にjavascript側をかいてたんですが
1行目の
.then((response) => response.body.getReader())
がトリガーされずに無反応

IEだけなんでこんな特殊な動作するんでしょうか;;

>>716
http://vividcode.hatenablog.com/entry/ie10/xhr-ms-stream
ここを参考にコードかいてみたんですけど
res.msDetachStream()
が undefined

WinJS.xhr({ url: uri, responseType: "ms-stream" }).
っていう独自の responsetype 使うみたいなのでサーバー側もただ response.write するだけではだめなのかも
ただ検索しても ms-stream に関するドキュメントがぜんぜんでてこなくてよくわかりません…

結局今週も解決できず…
もうあきらめようかな…
0734Name_Not_Found
垢版 |
2018/11/04(日) 17:14:24.12ID:???
バカバカしい。
csvごとき、サーバーでgzipかかるだろうからそのまま落としても大した転送量にならないだろ。
csvのまま取ってきてクライアント側でjsZipでzipファイルにすりゃいいだけだろ。
0735Name_Not_Found
垢版 |
2018/11/04(日) 17:20:09.27ID:???
>>734
なるほどです!
天才です

確かにそれならじぶんができる技術でできそうだし
タイムアウトもないし進捗処理も簡単につけられそうです

サーバー処理も大幅にかえなきゃいけないけど
現状手詰まりなので試してみたいと思います
ありがとうございます
0736Name_Not_Found
垢版 |
2018/11/04(日) 17:44:38.01ID:???
XMLHttpRequest って普通に途中のデータ拾えないっけ
res.readyState ==4 だけしかみてないなんてないよね?
readyState == 3 をみるんだよ
0737Name_Not_Found
垢版 |
2018/11/04(日) 17:49:18.34ID:???
ttps://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/dev-guides/hh673569(v=vs.85)
ちなみにこれの Comet streaming support のとこね
試したわけじゃないけど IE10 では普通に途中データうけとれるってかいてるんだけどなー
0738Name_Not_Found
垢版 |
2018/11/04(日) 19:00:09.58ID:???
>>736,737
わー! すごい! できました!
しかもコードもすごい短いしIEもChromeもUA分岐しなくても動くし最高です!!!

XMLHttpRequestでストリーム受け取るって記事がどこにもなくててっきりできないと思ってたんですが
readyStateの3がLoading中って意味だったんですね

fetchで作ったコードもほぼ流用できてサーバー側はなにひとつ変えずにすんだし
ほんとに助かりました

さすがプロの方すごいです
質問してよかったです
0739Name_Not_Found
垢版 |
2018/11/04(日) 19:04:32.67ID:???
おめでとう(パチパチ)
0740Name_Not_Found
垢版 |
2018/11/04(日) 19:09:28.34ID:???
>>739
>>737 さまですか 本当にありがとうございました
他にもリプいただけた方々ありがとうございました
0741Name_Not_Found
垢版 |
2018/11/04(日) 21:01:47.51ID:???
IEは能力自体は高いんだよ。

まだウェブに標準化という考えが乏しかった時代
IE6以外にまともなブラウザがなかった時代が長かったため、
それ以降の標準化への対応が遅れただけで、
搭載されている技術は10年先まで使える技術だったからな
0742Name_Not_Found
垢版 |
2018/11/04(日) 21:13:37.37ID:???
なぜIE以外のブラウザはcontent boxとかいうクソ仕様を採用したのか。
0746Name_Not_Found
垢版 |
2018/11/04(日) 22:20:29.74ID:???
IEが独自拡張なんじゃなくて、当時は標準そのものがなかった。
ボーダーをブロックの外につけるか中につけるかそういう仕様自体がなかった。
だからIEが間違いでも独自拡張なわけでもない。

IEの挙動(border box)の方が使い勝手が良かったが
他のブラウザはcontent boxの挙動で実装していた。作りやすかったんだろう。
この時はまだborder boxとかcontent boxなんて言葉はなかった

その後だよ。標準化の話が浮上したのは。IE嫌いのやつが
仕様を作ったのか、IEとは違う方が採用されてしまった。

そしてその数年後に、やっぱりIEの挙動のほうが便利だとわかって
挙動を変えられるようになった。このときにようやくborder boxと
content boxという言葉ができた。

今では細くデザインを調整する場合は、border boxにするのが常識となっている
0747Name_Not_Found
垢版 |
2018/11/04(日) 22:24:54.04ID:???
作りやすかったのかなんなのか知らんがデザイン側からしたらcontent boxなんてキチガイ仕様以外の何物でもない
0748Name_Not_Found
垢版 |
2018/11/04(日) 22:30:57.44ID:???
標準が間違っていた。(IEが正しかった)という例の一つやな

AjaxとかCanvasとか、当時は標準がなかったから仕方なかったが
技術で先行実装していたのは実はIE
0749Name_Not_Found
垢版 |
2018/11/04(日) 22:36:30.29ID:???
MSに工数かけさせるための嫌がらせで標準をIEと違えたんだよな。
割を食ったのはユーザー。と、お前ら。
0750Name_Not_Found
垢版 |
2018/11/04(日) 22:46:49.22ID:???
下手にborder boxが混在するとそれはそれでややこしくもあるわけで・・はぁ
後ラッパーかなんかつけないと何かができなかった気がする。ラッパーつければいいだけだけど
0751Name_Not_Found
垢版 |
2018/11/04(日) 22:58:45.68ID:???
>>749
その点HTML5は素晴らしかった。

第三者の団体でどこにも利害関係ありませんーを装った、現実を考慮しない
標準化団体の奴ら(おかげで標準化が全然進まなかった)とは違い、
HTML5は各社ブラウザメーカー主導で行われた。

そのため仕様は当時の主流ブラウザ(当然IE含む)の互換性を考慮して作られた。
<!DOCTYPE html> という短い記述はIE6でも標準モードになるから採用されたし

<meta charset="UTF-8"> というHTML5の書き方は、従来は以下のように書かなければいけない
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
だけど、IE6でも対応しているから採用された。

IE6が作られた時代に<meta charset="UTF-8">という書き方は存在しなかったのに
何故動作するのか?それはブラウザの間違った記述でも動くおせっかい機能が働いたため

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

http-equiv書き忘れてもOKにしよう
<meta content="text/html; charset=UTF-8">

ダブルクォートでくくるの忘れる人もいるんじゃね?
<meta content=text/html; charset=UTF-8>

content書き忘れてもOKにしよう
<meta charset=UTF-8>

という謎理論で、たまたま動作していた挙動が仕様となった。
他にも壊れたHTMLの解釈の仕方まで、主流のブラウザの挙動を考慮して仕様が作られた
0752Name_Not_Found
垢版 |
2018/11/04(日) 23:15:20.55ID:???
html5.0 見出しは全部h1にしようぜwwwh見出し数えるの面倒なんだよね〜〜www
html5.1 ごめん、やっぱ今のナシ

初めて俺が主導したプロジェクト、ひっそりと死亡する
0753Name_Not_Found
垢版 |
2018/11/05(月) 04:01:27.56ID:???
当時は標準がなかった、は本当なのか?
CSSが出来たのは1994年
IE1がリリースされたのも1994年
0754Name_Not_Found
垢版 |
2018/11/05(月) 06:54:36.61ID:???
CSS1がW3Cから勧告されたのは1996年12月
提唱、いいだしたのが1994年

CSSに対応したブラウザは、IEが3.0(1996年8月)
ネットスケープが4.0(1997年6月)
0755Name_Not_Found
垢版 |
2018/11/05(月) 11:16:55.57ID:???
ボタンを押したらDBからデータを取得してテキストファイルに書き込みするって部分を作ってます
書き込む先のテキストファイルは決め打ちにしてたんだけど書き込んで名前をつけて保存、ってこともやりたいなと思うんですがjavascriptで名前を付けて保存のようなダイアログボックスを出すことは可能ですか?
0756Name_Not_Found
垢版 |
2018/11/05(月) 11:40:33.96ID:???
>>755
・ダイアログは可能
・ファイル名は決められる
・場所はセキュリティ上ほぼできないと思っていい(完全に自分用なら作れる)
ダウンロード以降、どこに保存するかはブラウザに任せるしかない
流れとしては、以下のような形
ボタンを押す→ダイアログを出してファイル名をきめさせる→ダウンロード
0757Name_Not_Found
垢版 |
2018/11/05(月) 12:28:19.49ID:???
>>756
ありがとうございます
場所は指定出来ないのですね
自分もダウンロードなら出来るのかなと思ってたのですが名前を変更する方法が分からず断念してました
Javascriptを触るのが今回初めてなので的外れな質問かもしれませんが、ダイアログを表示させたりするモジュールやパッケージなどが用意されているのでしょうか?
0758Name_Not_Found
垢版 |
2018/11/05(月) 12:56:15.96ID:???
>>757
パッケージとかは知らない。多分無いと思う
ヘッダ触れるなら以下で実現できる
https://ja.stackoverflow.com/questions/32487/

無理なら

ブラウザでボタンを押す、ダイアログを出してファイル名をきめさせる
→サーバーでファイル名を受け取り、その名前でファイル生成
→ダウンロード

いずれにしろph側の処理が必要で、js単独でやる方法は無いと思う。あったらゴメン
0759Name_Not_Found
垢版 |
2018/11/05(月) 13:06:59.69ID:???
>>758
丁寧にありがとうございます
周りに聞ける人もおらず誰か知らない人が作ったものの改良なんで心折れかけてました
javascript単体でなんとか完結出来るのかと思って探してたのですが(サーバー側とかの知識がないため)それも難しいようですね
重ねて質問で申し訳ないのですが、セキュリティ上の関係で保存場所の指定ができないというのはどういう意味なのでしょうか?
0760Name_Not_Found
垢版 |
2018/11/05(月) 13:14:47.09ID:???
>>759
保存場所の指定ができないというより、PCの中身にアクセスできないと言ったほうが正しい
もしブラウザからPCの中身を見る手段があると、サイトを開いた瞬間、サイトの持ち主からPCの中身全部丸見えという事になる

で、このセキュリティをガバガバにする方法があるんだけど、
かなりめんどくさい
完全に自分用ならそれは実現できるけどね
0761Name_Not_Found
垢版 |
2018/11/05(月) 14:27:16.62ID:???
>>758
> →サーバーでファイル名を受け取り、その名前でファイル生成

そんなことしたら、他人がつけたファイル名とかぶった時に大変なことになるだろ

> いずれにしろph側の処理が必要で、js単独でやる方法は無いと思う。あったらゴメン

ダウンロード属性を使えばできる
https://developer.mozilla.org/ja/docs/Web/HTML/Element/a
IEでできるかどうかはよくわからん
https://qiita.com/wadahiro/items/eb50ac6bbe2e18cf8813
0762Name_Not_Found
垢版 |
2018/11/05(月) 14:55:20.21ID:???
>>761
ディレクトリ分ければ良い
/yamada/foo.csv
/suzuki/foo.csv
0763Name_Not_Found
垢版 |
2018/11/05(月) 15:05:45.88ID:???
なんでそんな中途半端な解答しかできんのだ?
同じ名前の人はどうする?
ユーザーIDを使うとしても、同じユーザーが
2つのブラウザで同時にダウンロードとかあるだろ

なんで一番簡単な、ランダムな名前でディレクトリを
作成するという回答が一番最初に出てこないんだ?

そのための、mktempコマンドや安全に一時ファイル
一時ディレクトリを作る関数が大抵の言語にあるというのに
0764Name_Not_Found
垢版 |
2018/11/06(火) 23:11:01.04ID:???
この前おしえてもらったダウンロード進捗
ステージングにデプロイしたら動かなくなった
サーバーがバッファリングしててストリームで返してくれない
ReadyState2〜4最後に一気にくる
しかもタイムアウトかなり短く設定されてるし
悲しい
0765Name_Not_Found
垢版 |
2018/11/06(火) 23:32:44.68ID:???
バッファリングやタイムアウトはプログラム側から変更できる
0766Name_Not_Found
垢版 |
2018/11/07(水) 02:02:02.30ID:???
だからそんな変なやり方をせずに、
新しい機能を無理やり使おうとせずに、
ファイルはファイルでダウンロードして、
進捗確認は別でAjaxでも使ってしろって言ったのに
0767Name_Not_Found
垢版 |
2018/11/07(水) 04:10:11.96ID:???
YouTube動画をmp4やmp3に変換するコンバーターサイト、変換の進捗をキッチリ表示しているけどあれはどうやってるんだ?
jsで変換してるのかね?
0768Name_Not_Found
垢版 |
2018/11/07(水) 10:43:30.82ID:???
>>767
純粋でかわいいなw
広告を見せているために、どんなファイルでも10秒かかったことにしてるだけだよ
0769Name_Not_Found
垢版 |
2018/11/07(水) 12:10:11.44ID:???
>>765
unicorn っていうエンジン?が タイムアウト時間になると Rails のプロセスを強制的にキルしててエラーメッセージ履くことすらできないんだけどこれのばすことってできるんですか?
バッファリングしない方法も教えてください
土日つぶしてあんなに苦労してつけたのが動かないとか涙出てくる

>>766
非同期実行のためのジョブサーバーの作り方教えてください;;
0770Name_Not_Found
垢版 |
2018/11/07(水) 12:16:36.65ID:???
>>769
今と同じですぐに制御を返すのではなく、待たせるのであれば
非同期にする必要はない
0771Name_Not_Found
垢版 |
2018/11/07(水) 12:16:53.72ID:???
世に言う「新技術に振り回される」「技術に使われる」状態である。
0772Name_Not_Found
垢版 |
2018/11/07(水) 12:29:46.56ID:???
泥沼にハマってるなぁ。無理なら無理って言えばいいのに
・csvに書き出す進捗は出せる
・zip圧縮の進捗は基本的には無理
だよ

zipの進捗はこの辺使えばイケルと思うけど、不毛すぎる
http://takuya-1st.hatenablog.jp/entry/2017/03/06/172644

やりたいことは
「いつダウンロードできるか知りたい」事なんだろうから、
圧縮終わったらDLファイルのURL書いたメール通知とかに仕様変更すればいいんじゃないの?
0773Name_Not_Found
垢版 |
2018/11/07(水) 14:21:38.63ID:???
zip圧縮の進捗は、
処理済みのファイルサイズの合計 ÷ 圧縮すべき複数のファイルサイズ合計
でいいと思うけどね

ファイルのダウンロード自体は単純にファイルを転送するだけにしておけば、
S3から直接ダウンロードに変更したり、別サーバーやフロントの
ウェブサーバーからダウンロードさせるように変更するのも楽

余計なことはしないほうが良い

あとは足りない「いつダウンロードできるか」部分だけを作ればいいだろう
>>772が書いている通り、進捗をファイルに書き出しておいて
メールで通知するのもありだし、Ajaxで情報を取りに行くのもありだろう

そうしておけば圧縮中にページ移動されたりしても対応可能になるのに
0774Name_Not_Found
垢版 |
2018/11/07(水) 15:53:17.22ID:???
質問者の今の実装のままだと工期もすごい増えてバグだらけになるのが目に見えている
要件定義をしっかりして作り直したほうがいいぞ
今ならまだ間に合う
0775Name_Not_Found
垢版 |
2018/11/07(水) 21:35:31.04ID:???
>>772
>圧縮終わったらDLファイルのURL書いたメール通知
Rails からメール送るって簡単にできるんです?
メールサーバーとかないんだけどウェブサーバーからSMTPのプロトコルなげたとしても
最近のメーラーはFROMとDNSが一致してなかったらはじかれたりしないの?

>>773
圧縮はしてないんだけどなー
無圧縮でひとまとめにするためにZIP使ってるだけで
とにかくファイル数が多いので単に転送するのにじかんかかってる気がする

というかこの際進捗はどうでもよくてそれ以前に
数十秒で問答無用でキルされちゃうのでRails上の処理ではどうしようもない;;

基本的にフロントエンドしかさわったことないから
非同期にするしかないけどインフラとかサーバー設定になると
普通の人が5分でできるようなことも何時間何日も調べないといけない
赤ちゃんみたいなものなんです

たぶん>>734がいまの自分にできるフロントエンドだけで解決できるゆいつの方法な気がする
0776Name_Not_Found
垢版 |
2018/11/07(水) 22:00:01.83ID:???
じゃあその>>734でいいんじゃない
はい終わり
0778Name_Not_Found
垢版 |
2018/11/08(木) 03:16:16.14ID:???
jszipはIEでも動くのか。ならOKだな
0780Name_Not_Found
垢版 |
2018/11/08(木) 10:09:19.92ID:???
>>777
難しすぎる…
たかが進捗つけるだけでなんでこんなよくわからないコマンドまで覚えなきゃいけないの
もうプログラムじゃないじゃんこれ;;
泣きそう
0781Name_Not_Found
垢版 |
2018/11/10(土) 00:20:53.68ID:???
httpとhttpsについて質問です
aタグのhref属性は
<a href="mevius.5ch.net/test/read.cgi/hp/1529144063/">
とプロトコルを抜くのが良いようですが、
サブドメインが変わる時のルールってありますか?
0782Name_Not_Found
垢版 |
2018/11/10(土) 00:30:11.85ID:???
よくわからないけどhttpsから省略せず書くことを
現在は推奨されてたはず
0783Name_Not_Found
垢版 |
2018/11/10(土) 00:34:30.56ID:???
>>782
な、なんですとーーー

調べたら確かにそうなってるんですね・・・
ありがとうございました、httpsつけて書きます
0784Name_Not_Found
垢版 |
2018/11/10(土) 00:55:47.90ID:???
一時は抜くこと推奨されてたからなあ
いまだにそう思ってる人結構いそう
0785Name_Not_Found
垢版 |
2018/11/10(土) 11:31:33.58ID:???
ブラウザはまずhttpsで確認してから、無ければhttpで取得
こんな明確な理由があるんだから変わると思わんやん?やん?
0786Name_Not_Found
垢版 |
2018/11/10(土) 12:20:53.85ID:???
> ブラウザはまずhttpsで確認してから、無ければhttpで取得

そんな処理しない。
っていうかこれはGoogleがhttpsを強引に標準にしようとしてるだけだぞ
この点に関しては参考にするな

まず考えなきゃいけないことは、サイトはhttpでアクセスできるのか、
httpsでアクセスできるのか?両方でアクセスできるのか?だ

httpsで一本化できるなら一本化してしまえばいいが、httpsはいろいろと準備が必要になる
場合によってhttpでアクセスしたりhttpsでアクセスしたりするなら
プロトコル省略したほうが楽だろう。

http決め打ちで書くのは必要ないだろうね。
httpでアクセスできないならプロトコル省略でいいんだから

まとめると
httpsに一本化するなら、httpsでかく
両方アクセスしたいなら、省略
htmlだけでも、省略
0787Name_Not_Found
垢版 |
2018/11/10(土) 16:21:47.73ID:???
mevius.5ch.net/test/〜〜では相対URLになってしまうから
プロトコル抜きで書きたいなら
//mevius.5ch.net/test/〜〜ね
0788Name_Not_Found
垢版 |
2018/11/10(土) 17:33:41.36ID:???
スレチだったらすいません

>>786
>まず考えなきゃいけないことは、サイトはhttpでアクセスできるのか、httpsでアクセスできるのか?
>両方でアクセスできるのか?だ

これはそもそもどのプロトコルでアクセスできるかどうかなんて分からない。あえて言うならhttpなら確実。
ドメインとサーバーが完全一体になっているならともかく、料金の支払いを忘れたら自分のサイトですら証明書が切れる
だから以下の前提が、無いんだ
>httpsに一本化するなら、httpsでかく
>両方アクセスしたいなら、省略
>htmlだけでも、省略
0789Name_Not_Found
垢版 |
2018/11/10(土) 21:18:35.42ID:???
> httpなら確実

確実じゃないが。
0790Name_Not_Found
垢版 |
2018/11/10(土) 21:22:17.55ID:???
>>789
どういう場合が考えれられる?
さすがにfile://やftp%3A//ってのはなしにしてくれよ
それ言い出すと独自プロトコルで何でもアリになるからな
0792Name_Not_Found
垢版 |
2018/11/11(日) 09:56:56.83ID:???
ウェブサーバーからすればhttpとhttpsは独立してるので
httpsしか有効にしないこともできる
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況