実際にJavaScriptを書いている人の情報交換所です。
プログラミング既習者専用です。初心者の方はご遠慮下さい。
玄人の方、歓迎致します。
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2015/12/07(月) 07:26:33.87ID:NYLGCW0V281デフォルトの名無しさん
2016/06/28(火) 20:52:20.95ID:A7Bg25Ta そう思いたければそれでいい。
ただ、その姿勢がお前らが全く上達してない原因だと思う。
俺は間違った指摘に対して間違っていると言っただけだ。
Cの奴らがあくまで「技術的」なのとは対照的に、お前らは「精神的」な物言いばかりだ。
ある意味、やっていることが「Web的」だ。言ったもの勝ちみたいな馬鹿が多い。
とはいえ、間違っていることをいくら主張しても正しくはならない。
そもそもオブジェクトプールはインミュータブルの世界ではほぼ意味がない。
http://www.html5rocks.com/ja/tutorials/speed/static-mem-pools/
そして俺はJIT向けの最適化をしようとはしていない。
事実、メモリをケチるとか、一度にアクセスするデータを纏めるとか、どの言語でも高速化する。
実際、>>279内URLも言語には言及されてない。
もちろんそれ以前に他の改修点も多い。今はそこを整理中だ。
とはいえ、その先の「将来的改修方法」まで見据える必要があるので確認中ということになる。
>>280
ところで、何でお前はそんなに認めて君なんだ?
俺の質問は「asm.jsでフットプリント削減/メモリ配置決めうちは出来るか」であって、
「asm.jsで局所的高速化が出来るか」ではない。
つまり、脱線しているだけだから素っ気ない回答になっているだけだ。
俺がやろうとしているのは、君が思っているasm.jsの使い方ではない。
ただ、その姿勢がお前らが全く上達してない原因だと思う。
俺は間違った指摘に対して間違っていると言っただけだ。
Cの奴らがあくまで「技術的」なのとは対照的に、お前らは「精神的」な物言いばかりだ。
ある意味、やっていることが「Web的」だ。言ったもの勝ちみたいな馬鹿が多い。
とはいえ、間違っていることをいくら主張しても正しくはならない。
そもそもオブジェクトプールはインミュータブルの世界ではほぼ意味がない。
http://www.html5rocks.com/ja/tutorials/speed/static-mem-pools/
そして俺はJIT向けの最適化をしようとはしていない。
事実、メモリをケチるとか、一度にアクセスするデータを纏めるとか、どの言語でも高速化する。
実際、>>279内URLも言語には言及されてない。
もちろんそれ以前に他の改修点も多い。今はそこを整理中だ。
とはいえ、その先の「将来的改修方法」まで見据える必要があるので確認中ということになる。
>>280
ところで、何でお前はそんなに認めて君なんだ?
俺の質問は「asm.jsでフットプリント削減/メモリ配置決めうちは出来るか」であって、
「asm.jsで局所的高速化が出来るか」ではない。
つまり、脱線しているだけだから素っ気ない回答になっているだけだ。
俺がやろうとしているのは、君が思っているasm.jsの使い方ではない。
282デフォルトの名無しさん
2016/06/29(水) 20:10:31.16ID:oxwc/50g 自分の話なのに他人を非難し始めた!?
こりゃ重病や〜
こりゃ重病や〜
283デフォルトの名無しさん
2016/06/29(水) 20:14:07.66ID:oxwc/50g こいつの親はなんで
「相手がどう思うかが大事」
「自分が伝えたつもりでも相手に伝わってなかったら意味が無い」
って教えてやらなかったのかな……
むごいね。
「相手がどう思うかが大事」
「自分が伝えたつもりでも相手に伝わってなかったら意味が無い」
って教えてやらなかったのかな……
むごいね。
284デフォルトの名無しさん
2016/06/30(木) 01:34:38.72ID:YtNZP2Mq ちなみに、当面の問題は解決した。
実はもっさりというよりはカクカクに近かったのだが、原因はキャッシュによるHDDアクセスの過剰だった。
ヘッダに cache-control: no-store を追加したところ、完全に治った。
ただそれでも(program)が70-90%であることには変わりないのだが、
スクレイピング中でも(idle)は80%以上なので、キビキビ感はある。
前にも書いたが、(>>109)
CPUだけで動く部分は実は相当速くて、UIが主なJavaScriptではCPUを使い切ることはないのかもしれない。
俺の場合はスクレイピングが律速過程なので、サーバの速度が上がらない限りここで頭打ちだ。
数値計算のように完全にCPUだけで回るのなら限界が見えるが、そういう用途はないし。
遅延描画は制御がやや面倒だが、実現してしまえばDOMは1画面分しか扱う必要がなく、一瞬で処理される。
俺のアプリに関して言えば、階層スクレイピングを行っているので、
下位階層を参照する時は更新されていることが確定している。
だから no-store で全く問題ないし、あと5倍の余裕があるので、残るは美学的問題だけになった。
ここを修正するかはしばらく様子見になる。
情報をくれた人はありがとう。
実はもっさりというよりはカクカクに近かったのだが、原因はキャッシュによるHDDアクセスの過剰だった。
ヘッダに cache-control: no-store を追加したところ、完全に治った。
ただそれでも(program)が70-90%であることには変わりないのだが、
スクレイピング中でも(idle)は80%以上なので、キビキビ感はある。
前にも書いたが、(>>109)
CPUだけで動く部分は実は相当速くて、UIが主なJavaScriptではCPUを使い切ることはないのかもしれない。
俺の場合はスクレイピングが律速過程なので、サーバの速度が上がらない限りここで頭打ちだ。
数値計算のように完全にCPUだけで回るのなら限界が見えるが、そういう用途はないし。
遅延描画は制御がやや面倒だが、実現してしまえばDOMは1画面分しか扱う必要がなく、一瞬で処理される。
俺のアプリに関して言えば、階層スクレイピングを行っているので、
下位階層を参照する時は更新されていることが確定している。
だから no-store で全く問題ないし、あと5倍の余裕があるので、残るは美学的問題だけになった。
ここを修正するかはしばらく様子見になる。
情報をくれた人はありがとう。
285デフォルトの名無しさん
2016/06/30(木) 06:40:45.54ID:K37QNM6P こういう自分用語多用・技術文書風自分語り・後出し情報でドヤ顔・他言語へのコンプレックスを持つ>>284を
スルーできないことこそ、お前らwが上達できない理由wだと思うよ
スルーできないことこそ、お前らwが上達できない理由wだと思うよ
286デフォルトの名無しさん
2016/06/30(木) 14:59:19.41ID:YdAxXmxA 普段スルーするようなキチガイでも無人島じゃコミュニケーション取るしかないのと同じ。
287デフォルトの名無しさん
2016/07/17(日) 18:00:55.04ID:UzC9Qtsn http://echo.2ch.net/test/read.cgi/tech/1468158373/213
質問スレ>>213
自己紹介乙。
てかお前はどうしてそこにこだわるのか全く謎なのだが。
普通に考えれば、引き算が出来るのならMDNで、
> var elapsed = end.getTime() - start.getTime(); // 時間をミリ秒で表す
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
これは明らかにおかしくて、
var elapsed = end - start; // 時間をミリ秒で表す
となるべきだろ。お前が言う「経験のある」奴ならここに地雷臭をかぎ取るわけ。
何らかの理由で getTime() しないといけないんだよ。
とはいえ、今1stEdition(1997)見ても abstruct operator という単語自体は使ってないが、
他は同じなので、最初から出来たのではないかとも思うのだが、、、まあよく分からん。
http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf
実際、彼がググって来た例でも直接引き算してないだろ。
俺が(当時)ググッた限りでも出てこなかったから、何かしら理由があるのだと思う。
というわけで俺は「使えない」判定を下していた。
で、これは多分「既に他言語を知っている奴」の普通のやり方なんだよ。
俺がお前に「経験がない」と断定しているのはこういうのが全く通じてないから。
何度も言っているが、お前はもっと書いた方がいい。
ここに質問に来る奴の大半は、「MDNを読め」で済む。
ただお前はもう教科書的な知識は十分にあるんだよ。
だから仕様書をいくら読んでもそれ以上にはならない。
お前が上達するには、書くしかないんだよ。
質問スレ>>213
自己紹介乙。
てかお前はどうしてそこにこだわるのか全く謎なのだが。
普通に考えれば、引き算が出来るのならMDNで、
> var elapsed = end.getTime() - start.getTime(); // 時間をミリ秒で表す
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
これは明らかにおかしくて、
var elapsed = end - start; // 時間をミリ秒で表す
となるべきだろ。お前が言う「経験のある」奴ならここに地雷臭をかぎ取るわけ。
何らかの理由で getTime() しないといけないんだよ。
とはいえ、今1stEdition(1997)見ても abstruct operator という単語自体は使ってないが、
他は同じなので、最初から出来たのではないかとも思うのだが、、、まあよく分からん。
http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf
実際、彼がググって来た例でも直接引き算してないだろ。
俺が(当時)ググッた限りでも出てこなかったから、何かしら理由があるのだと思う。
というわけで俺は「使えない」判定を下していた。
で、これは多分「既に他言語を知っている奴」の普通のやり方なんだよ。
俺がお前に「経験がない」と断定しているのはこういうのが全く通じてないから。
何度も言っているが、お前はもっと書いた方がいい。
ここに質問に来る奴の大半は、「MDNを読め」で済む。
ただお前はもう教科書的な知識は十分にあるんだよ。
だから仕様書をいくら読んでもそれ以上にはならない。
お前が上達するには、書くしかないんだよ。
288デフォルトの名無しさん
2016/07/17(日) 18:23:29.08ID:UzC9Qtsn 一応俺の疑問としては、
ToPrimitive(Number) は 無変換で Number そのものを返す。(9.1)
ToNumber(Number) は 無変換で Number そのものを返す。(9.3)
GetValue(V)はVが参照でなければ V そのものを返す。(8.7.1)
+ は ToPrimitive(GetValue(target))の型がStringならString連結、
そうでないなら ToNumber(ToPrimitive(GetValue(target))) で数値の和を返す。(11.6.1)
Date型は内部に time values を持ち、abstruct operationはこれを対象とする。(15.9.1)
だったら足し算も出来ないと駄目じゃね?ってことね。
厳密に言えばGetValueはabstruct operation ではないので、
仕様と実装に矛盾が無い為には、 GetValue(time values) がStringを返す必要がある。
こうなんだっけ?
ToPrimitive(Number) は 無変換で Number そのものを返す。(9.1)
ToNumber(Number) は 無変換で Number そのものを返す。(9.3)
GetValue(V)はVが参照でなければ V そのものを返す。(8.7.1)
+ は ToPrimitive(GetValue(target))の型がStringならString連結、
そうでないなら ToNumber(ToPrimitive(GetValue(target))) で数値の和を返す。(11.6.1)
Date型は内部に time values を持ち、abstruct operationはこれを対象とする。(15.9.1)
だったら足し算も出来ないと駄目じゃね?ってことね。
厳密に言えばGetValueはabstruct operation ではないので、
仕様と実装に矛盾が無い為には、 GetValue(time values) がStringを返す必要がある。
こうなんだっけ?
289デフォルトの名無しさん
2016/07/17(日) 18:30:48.46ID:PyzTEoPA まだ43cmの深淵にはたどり着けないようだなw
290デフォルトの名無しさん
2016/07/17(日) 18:40:03.90ID:UzC9Qtsn291デフォルトの名無しさん
2016/07/17(日) 18:50:05.41ID:UzC9Qtsn ああ、引き算を確認するの忘れてた。
- は ToNumber(GetValue(target)) を引いて差を返す (11.6.2)
ToNumber(String) は 9.3.1 に従いパースする (9.3)
9.3.1内にはDate.toString()出力をパースする仕様はない。
だからGetValue(time values)はNumberを返さないと引き算は出来ない。
となると足し算も出来ないと仕様外のように思える。
なお確認している仕様はECMA5.1
http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1
- は ToNumber(GetValue(target)) を引いて差を返す (11.6.2)
ToNumber(String) は 9.3.1 に従いパースする (9.3)
9.3.1内にはDate.toString()出力をパースする仕様はない。
だからGetValue(time values)はNumberを返さないと引き算は出来ない。
となると足し算も出来ないと仕様外のように思える。
なお確認している仕様はECMA5.1
http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1
292デフォルトの名無しさん
2016/07/17(日) 18:54:57.34ID:PyzTEoPA293デフォルトの名無しさん
2016/07/17(日) 18:55:32.09ID:PyzTEoPA >>291
だから仕様通り(笑)
だから仕様通り(笑)
294デフォルトの名無しさん
2016/07/17(日) 19:13:09.85ID:UzC9Qtsn >>292
まあ何か思惑があるのならそれでいい。
ただ俺が見る限り今のところはAddが出来てもおかしくない仕様のように見える。
もちろん俺は仕様書なんてほぼ見てないから、先のように単語を変更されていると気づけないが。
まあいいや、とりあえず新着情報があるまではどうにもならんし。
現実的にDateが揃いも揃って仕様違反って事もないだろうし、
先の例のように俺が仕様書を読み慣れていないせいで見落としている部分があるのだろう。
まあ何か思惑があるのならそれでいい。
ただ俺が見る限り今のところはAddが出来てもおかしくない仕様のように見える。
もちろん俺は仕様書なんてほぼ見てないから、先のように単語を変更されていると気づけないが。
まあいいや、とりあえず新着情報があるまではどうにもならんし。
現実的にDateが揃いも揃って仕様違反って事もないだろうし、
先の例のように俺が仕様書を読み慣れていないせいで見落としている部分があるのだろう。
295デフォルトの名無しさん
2016/07/17(日) 19:23:49.21ID:UzC9Qtsn > (今回で言えば日付型同士の減算が可能!?) (質問スレ>>213)
あと一応言っておくと、日付型ってのは普通は減算出来るんだよ。
だから質問者もいきなり減算しているし、
俺も逆にそれが出来ない!ってことでMDNに奇妙さを感じるわけでね。
だからこの点についても、この反応、もう一度書くと、
> (今回で言えば日付型同士の減算が可能!?) (質問スレ>>213)
これは経験豊富ならあり得ないんだよ。
で、そういうのは明らかにバレバレだから、
普通に考えてお前が経験豊富だと思う奴はいないと思うんだよね。
何でそこにこだわるのか全く分からないんだけど。
匿名掲示板で虚勢を張る意味無くね? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
あと一応言っておくと、日付型ってのは普通は減算出来るんだよ。
だから質問者もいきなり減算しているし、
俺も逆にそれが出来ない!ってことでMDNに奇妙さを感じるわけでね。
だからこの点についても、この反応、もう一度書くと、
> (今回で言えば日付型同士の減算が可能!?) (質問スレ>>213)
これは経験豊富ならあり得ないんだよ。
で、そういうのは明らかにバレバレだから、
普通に考えてお前が経験豊富だと思う奴はいないと思うんだよね。
何でそこにこだわるのか全く分からないんだけど。
匿名掲示板で虚勢を張る意味無くね? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
296デフォルトの名無しさん
2016/07/17(日) 21:11:43.34ID:PyzTEoPA >>295
何いってんのお前w
MDNに日付の減算が出来ないなんて書いてないし
それなりにJavaScript使ってりゃ、
日付同士の引き算とかやるだろ。
ベンチマークとかでさ。
当たり前の知っていることなんだが?
お前にとっては当たり前じゃないんだろ?w
何いってんのお前w
MDNに日付の減算が出来ないなんて書いてないし
それなりにJavaScript使ってりゃ、
日付同士の引き算とかやるだろ。
ベンチマークとかでさ。
当たり前の知っていることなんだが?
お前にとっては当たり前じゃないんだろ?w
297デフォルトの名無しさん
2016/07/17(日) 21:12:34.25ID:PyzTEoPA > 現実的にDateが揃いも揃って仕様違反って事もないだろうし、
だから最初から仕様通りって言ってる
だから最初から仕様通りって言ってる
298デフォルトの名無しさん
2016/07/17(日) 22:11:41.91ID:UzC9Qtsn つか相変わらずお前は都合が悪いところは読まない主義なのなw
MSDNでもやっぱりgetTime()してるんだよ。
https://msdn.microsoft.com/ja-jp/library/ee532932(v=vs.94).aspx
既に言ったがMDNも。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
ついでにStackOverflowでも軒並み。
http://stackoverflow.com/questions/10931288/how-to-add-subtract-dates-with-javascript
http://stackoverflow.com/questions/1296358/subtract-days-from-a-date-in-javascript
http://stackoverflow.com/questions/7687884/add-10-seconds-to-a-javascript-date-object-timeobject
基本的にDateオブジェクトの直接操作は誰もやってないから、何か理由はあるとは思うんだけどね。
それが何かは俺には分からない。
考えられるのは、オブジェクト指向的な「メソッド越しに全てやれ」なのか、
実装ありきで来ている為、実は「仕様的裏付けがない」のか。(将来的に使える保証がない)
いずれにしても、サンプルコードにそう記述しない理由があるのは確かなんだよ。
どっちにしたってここまで地雷臭だと公開するコードなら直接操作は止めたほうがいいとは思うが。
質問者は今動けばいい個人レベルのコードだろうから別に構わないとは思うけど。
MSDNでもやっぱりgetTime()してるんだよ。
https://msdn.microsoft.com/ja-jp/library/ee532932(v=vs.94).aspx
既に言ったがMDNも。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
ついでにStackOverflowでも軒並み。
http://stackoverflow.com/questions/10931288/how-to-add-subtract-dates-with-javascript
http://stackoverflow.com/questions/1296358/subtract-days-from-a-date-in-javascript
http://stackoverflow.com/questions/7687884/add-10-seconds-to-a-javascript-date-object-timeobject
基本的にDateオブジェクトの直接操作は誰もやってないから、何か理由はあるとは思うんだけどね。
それが何かは俺には分からない。
考えられるのは、オブジェクト指向的な「メソッド越しに全てやれ」なのか、
実装ありきで来ている為、実は「仕様的裏付けがない」のか。(将来的に使える保証がない)
いずれにしても、サンプルコードにそう記述しない理由があるのは確かなんだよ。
どっちにしたってここまで地雷臭だと公開するコードなら直接操作は止めたほうがいいとは思うが。
質問者は今動けばいい個人レベルのコードだろうから別に構わないとは思うけど。
299デフォルトの名無しさん
2016/07/17(日) 23:04:02.72ID:PyzTEoPA だからgetTime使ってるからって
そのまま使えないってことにはならないんだが。
馬鹿なのかな?
そのまま使えないってことにはならないんだが。
馬鹿なのかな?
300デフォルトの名無しさん
2016/07/17(日) 23:28:43.23ID:UzC9Qtsn まあどう思うかは自由だが、状況証拠からの推測なら、
1. 引き算は出来ているだけで、仕様として認められているわけではない
2. 多分俺の既投稿の解釈も間違いがあり、addの方は「仕様」で、subの方は「仕様外」
じゃないかな。以下でもgetTime()で引き算だ。
> delta *= date2.getTime() - date1.getTime();
> https://github.com/phiggins42/bloody-jquery-plugins/blob/master/date.js
とにかく確実に言えるのは、みんな引き算する前に getTime() してるんだよ。
オブジェクト同士を直で引き算している人は誰もいない。
で、もし君が「経験豊富」なら、
実はこういう「動くけど仕様外」のケースも結構あることを知っているはずなのだが。
だからマジでウザイしバレバレだから、いい加減にやめい。
いずれにしても、本当に経験豊富な奴は、誰も君のことを経験豊富だとは思わないよ。
虚勢を張るのも自由ではあるけど、意味無いと思うが。
1. 引き算は出来ているだけで、仕様として認められているわけではない
2. 多分俺の既投稿の解釈も間違いがあり、addの方は「仕様」で、subの方は「仕様外」
じゃないかな。以下でもgetTime()で引き算だ。
> delta *= date2.getTime() - date1.getTime();
> https://github.com/phiggins42/bloody-jquery-plugins/blob/master/date.js
とにかく確実に言えるのは、みんな引き算する前に getTime() してるんだよ。
オブジェクト同士を直で引き算している人は誰もいない。
で、もし君が「経験豊富」なら、
実はこういう「動くけど仕様外」のケースも結構あることを知っているはずなのだが。
だからマジでウザイしバレバレだから、いい加減にやめい。
いずれにしても、本当に経験豊富な奴は、誰も君のことを経験豊富だとは思わないよ。
虚勢を張るのも自由ではあるけど、意味無いと思うが。
301デフォルトの名無しさん
2016/07/17(日) 23:30:23.23ID:PyzTEoPA × 1. 引き算は出来ているだけで、仕様として認められているわけではない
○ 1. 引き算は出来ているし、仕様として認められている
○ 1. 引き算は出来ているし、仕様として認められている
302デフォルトの名無しさん
2016/07/17(日) 23:31:41.37ID:PyzTEoPA × 2. 多分俺の既投稿の解釈も間違いがあり、addの方は「仕様」で、subの方は「仕様外」
○ 2. addの方は「仕様」で、subの方も「仕様」
http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1
ここにもしっかり書いてある。
○ 2. addの方は「仕様」で、subの方も「仕様」
http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1
ここにもしっかり書いてある。
303デフォルトの名無しさん
2016/07/17(日) 23:33:08.55ID:PyzTEoPA しっかり書いてあるのに、それがわからないってことは
英語が読めないか、読めても意味がわからないんだろうな。
自覚して諦めて日本語でぐぐったら?w
英語が読めないか、読めても意味がわからないんだろうな。
自覚して諦めて日本語でぐぐったら?w
304デフォルトの名無しさん
2016/07/18(月) 00:12:28.04ID:CK8ZYmxh >>302
Note1だろ?
> Date objects handle the absence of a hint as if the hint String were given.
辿ってみたが、なるほど[[DefaultValue]](8.12.8)の所でデフォがDateに関してはStringというのは分かった。
そしてValueOf()が返してくるのはこれだから、Add側がString連結になっているのはこれでいい。
ただこれだとsub側が都合が悪い。つまり、もう一度書くと、以下になっているわけだが、
> - は ToNumber(GetValue(target)) を引いて差を返す (11.6.2) (>>291)
GetValue(target)がデフォでStringを返してくるのでデフォのままでは引き算は出来ない。
一応GetValueにはPreferredTypeを指定することが出来て、
Numberを指定していれば数値が返ってくる。
だから仕様としてsubを定義する為には、subの時はNumber指定しないといけない。
で、それはどこに書いてあるんだ?
なおお前が大好きなmoment.jsも確認したが、同様に直ではなく、こちらはvalueOfを使っていた。
> mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
> http://momentjs.com/downloads/moment.js
つってもMDNには同じだと明記されているが。
> This method is functionally equivalent to the Date.prototype.getTime() method.
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf
いずれにしても、何かしら理由があったんだと思うが。
とりあえず5.1で確認出来たらその記載が旧仕様にあるかどうかを確認すればいい。
つかこの際英語は関係ないだろ。そういうのもコンプレックス出まくりだから止めたほうがいい。
英語は日本語より下手なのを自覚した上で、ヒット件数と内容をとるか、言語をとるかでしょ。
Note1だろ?
> Date objects handle the absence of a hint as if the hint String were given.
辿ってみたが、なるほど[[DefaultValue]](8.12.8)の所でデフォがDateに関してはStringというのは分かった。
そしてValueOf()が返してくるのはこれだから、Add側がString連結になっているのはこれでいい。
ただこれだとsub側が都合が悪い。つまり、もう一度書くと、以下になっているわけだが、
> - は ToNumber(GetValue(target)) を引いて差を返す (11.6.2) (>>291)
GetValue(target)がデフォでStringを返してくるのでデフォのままでは引き算は出来ない。
一応GetValueにはPreferredTypeを指定することが出来て、
Numberを指定していれば数値が返ってくる。
だから仕様としてsubを定義する為には、subの時はNumber指定しないといけない。
で、それはどこに書いてあるんだ?
なおお前が大好きなmoment.jsも確認したが、同様に直ではなく、こちらはvalueOfを使っていた。
> mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
> http://momentjs.com/downloads/moment.js
つってもMDNには同じだと明記されているが。
> This method is functionally equivalent to the Date.prototype.getTime() method.
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf
いずれにしても、何かしら理由があったんだと思うが。
とりあえず5.1で確認出来たらその記載が旧仕様にあるかどうかを確認すればいい。
つかこの際英語は関係ないだろ。そういうのもコンプレックス出まくりだから止めたほうがいい。
英語は日本語より下手なのを自覚した上で、ヒット件数と内容をとるか、言語をとるかでしょ。
305デフォルトの名無しさん
2016/07/18(月) 00:17:12.76ID:CK8ZYmxh しかし話はそれるが、この仕様だと + と - なら - の方がToPrimitive()がない分処理が軽いな。
ベンチマークに現れるかは謎だが。
ベンチマークに現れるかは謎だが。
306デフォルトの名無しさん
2016/07/18(月) 00:30:21.22ID:UhcVRSnP >>304
> だから仕様としてsubを定義する為には、subの時はNumber指定しないといけない。
> で、それはどこに書いてあるんだ?
お前は本当に馬鹿だなぁw
リンクは http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1 だろ
sec-11.6.1 だろ。
The Addition operator ( + ) だろ。
次の sec-11.6.2 になんて書いてあるのかも読めないのか?
> だから仕様としてsubを定義する為には、subの時はNumber指定しないといけない。
> で、それはどこに書いてあるんだ?
お前は本当に馬鹿だなぁw
リンクは http://www.ecma-international.org/ecma-262/5.1/#sec-11.6.1 だろ
sec-11.6.1 だろ。
The Addition operator ( + ) だろ。
次の sec-11.6.2 になんて書いてあるのかも読めないのか?
307デフォルトの名無しさん
2016/07/18(月) 00:31:42.75ID:UhcVRSnP >>304
> つかこの際英語は関係ないだろ。そういうのもコンプレックス出まくりだから止めたほうがいい。
お前が英語読めないんだろ?
だから自分で持ってきたリンクも読んでないんだろ。
それともなにか?自分が持ってきたものを
読めるのに、読んでないのか?
> つかこの際英語は関係ないだろ。そういうのもコンプレックス出まくりだから止めたほうがいい。
お前が英語読めないんだろ?
だから自分で持ってきたリンクも読んでないんだろ。
それともなにか?自分が持ってきたものを
読めるのに、読んでないのか?
308デフォルトの名無しさん
2016/07/18(月) 01:13:38.23ID:CK8ZYmxh ああ、なるほど分かった。
String変換はToPrimitiveの時であって、GetValue時ではないんだな。
この点を>>304では間違えていた。
Add: ToPrimitive(GetValue(target))でStringになって、それを連結。
Sub: ToNumber(GetValue(target))でNumberになって、引き算。
SubではToPrimitiveがないのがミソだ。
となるとそちらの主張通り、
> ○ 2. addの方は「仕様」で、subの方も「仕様」 (>>302)
のように見える。
さて、記載されている箇所は分かったので初期仕様(1997)版を確認したが、
http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf
11.6.1 The addition operator(+)
11.6.2 The subtraction operator(-)
9.1 ToPrimitive
9.3 ToNumber
15.9 Date Object
に本質的な違いがあるようには見えない。
つまり、最初から仕様としてaddもsubも使えた(今と同じ動作だった)ように見える。
しかし誰もsubを使っていない。となると結論としては、
仕様には最初から盛り込まれていたが、
A. 実装が追いつかず、動かない環境が多かった。(あった)
B. バグっていて使える状況ではなかった。
のどちらかだね。
今後については、自分が対象とするブラウザで動作を確認出来れば使えばいいということになる。
はい、お疲れさまでした。
String変換はToPrimitiveの時であって、GetValue時ではないんだな。
この点を>>304では間違えていた。
Add: ToPrimitive(GetValue(target))でStringになって、それを連結。
Sub: ToNumber(GetValue(target))でNumberになって、引き算。
SubではToPrimitiveがないのがミソだ。
となるとそちらの主張通り、
> ○ 2. addの方は「仕様」で、subの方も「仕様」 (>>302)
のように見える。
さて、記載されている箇所は分かったので初期仕様(1997)版を確認したが、
http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf
11.6.1 The addition operator(+)
11.6.2 The subtraction operator(-)
9.1 ToPrimitive
9.3 ToNumber
15.9 Date Object
に本質的な違いがあるようには見えない。
つまり、最初から仕様としてaddもsubも使えた(今と同じ動作だった)ように見える。
しかし誰もsubを使っていない。となると結論としては、
仕様には最初から盛り込まれていたが、
A. 実装が追いつかず、動かない環境が多かった。(あった)
B. バグっていて使える状況ではなかった。
のどちらかだね。
今後については、自分が対象とするブラウザで動作を確認出来れば使えばいいということになる。
はい、お疲れさまでした。
309デフォルトの名無しさん
2016/07/18(月) 01:26:28.55ID:UhcVRSnP > しかし誰もsubを使っていない。となると結論としては、
お前が見た限りの話だろw
使ってないだけで、使えない理由にはならない。
C. たまたま検索した所が使ってないところだけだった
昔うんぬんかんぬんが事実だとしても
今使えない理由にはならないからな。
事実として、今問題なく使えると判明しているものを使ってないだけ。
故に使ってないからと言って問題があるという事にはならない。
お前が見た限りの話だろw
使ってないだけで、使えない理由にはならない。
C. たまたま検索した所が使ってないところだけだった
昔うんぬんかんぬんが事実だとしても
今使えない理由にはならないからな。
事実として、今問題なく使えると判明しているものを使ってないだけ。
故に使ってないからと言って問題があるという事にはならない。
310デフォルトの名無しさん
2016/07/18(月) 01:28:24.23ID:UhcVRSnP で最終的な結論は俺が最初から言っていたとおり、
addも仕様、subも仕様。
こんなこと理解するまでに何時間費やしてるの?
センス無いんじゃね?w
addも仕様、subも仕様。
こんなこと理解するまでに何時間費やしてるの?
センス無いんじゃね?w
311デフォルトの名無しさん
2016/07/18(月) 01:44:14.47ID:CK8ZYmxh >>309
まあどう思おうが勝手だが、
基本的にはライブラリ開発者もMDN執筆者も俺よりJavaScriptの経験は明らかに豊富で、
その彼等が回避している事を俺がわざわざ試す意味はないよ。
君のアプリは君が好きなようにすればいい。
俺がセンス無いと思うのならそれでいい。
ただ、そんな無駄吠えしている限り、君は上達しないよ。
まあどう思おうが勝手だが、
基本的にはライブラリ開発者もMDN執筆者も俺よりJavaScriptの経験は明らかに豊富で、
その彼等が回避している事を俺がわざわざ試す意味はないよ。
君のアプリは君が好きなようにすればいい。
俺がセンス無いと思うのならそれでいい。
ただ、そんな無駄吠えしている限り、君は上達しないよ。
312デフォルトの名無しさん
2016/07/18(月) 01:55:05.46ID:UhcVRSnP 使ってない=回避と考えてるのが
お笑い種だw
自分で持ってきた仕様書に俺が何度も
書いてあるって言ってようやく読んだくせにな。
理解遅すぎるんだよw
お笑い種だw
自分で持ってきた仕様書に俺が何度も
書いてあるって言ってようやく読んだくせにな。
理解遅すぎるんだよw
313デフォルトの名無しさん
2016/07/18(月) 01:57:21.33ID:UhcVRSnP きっとこの程度の理解能力じゃ
なんで+がこういう仕様になっているかも
まだ気づいてないんだろうな。
俺が指摘してようやく考え出すぐらいだろうw
なんで+がこういう仕様になっているかも
まだ気づいてないんだろうな。
俺が指摘してようやく考え出すぐらいだろうw
314デフォルトの名無しさん
2016/07/18(月) 02:02:36.39ID:CK8ZYmxh >>313
+は文字列内埋め込みにはこの方がいいからだろ。あれはあの仕様でも良いんだよ。
ただいちいち toString() する仕様でも良いんだよ。
てかお前は異様に「仕様」談義が好きみたいだが、マジで何か書いた方がいいぞ。
そしてその中で素晴らしいライブラリの使い方を披露すれば、布教も出来るだろ。
ついでに言っておくと、今回の質問者の「ライブラリは…」ってのはかなり妥当な状況だよ。
いちいちあの程度でライブラリを導入する方が手間なんだよ。
+は文字列内埋め込みにはこの方がいいからだろ。あれはあの仕様でも良いんだよ。
ただいちいち toString() する仕様でも良いんだよ。
てかお前は異様に「仕様」談義が好きみたいだが、マジで何か書いた方がいいぞ。
そしてその中で素晴らしいライブラリの使い方を披露すれば、布教も出来るだろ。
ついでに言っておくと、今回の質問者の「ライブラリは…」ってのはかなり妥当な状況だよ。
いちいちあの程度でライブラリを導入する方が手間なんだよ。
315デフォルトの名無しさん
2016/07/18(月) 02:06:50.86ID:CK8ZYmxh あーそういえば43cmってなに?
厨二病だとは思うが聞いておいてやるよw
厨二病だとは思うが聞いておいてやるよw
316デフォルトの名無しさん
2016/07/18(月) 02:07:17.57ID:UhcVRSnP はっはっは、仕様を持ち出してきたのはお前だし、
俺は、そこに書いてあるから読めといっただけだ。
俺は談義なんてなんもしてねーぞw
俺は、そこに書いてあるから読めといっただけだ。
俺は談義なんてなんもしてねーぞw
317デフォルトの名無しさん
2016/07/18(月) 02:08:12.29ID:UhcVRSnP318デフォルトの名無しさん
2016/07/18(月) 02:16:59.61ID:CK8ZYmxh あーまあ確かに今回は結局の所ほぼ自力で辿り着いているから、
確かに談義もしてないし、協力も大してしてもらってないわな。
とはいえ、getTime()については俺は前から疑問を持っていたからついでに調べたんだ。
>>317
これか?
http://d.hatena.ne.jp/sandai/20100916/p1
んー、まあこれを読んでも今回の結論には至らないけどな。
ちなみに俺は仕様書を断片的にしか読んでないから、多分
ToPrimitive(Number)がvalueOfを呼び、
ToPrimitive(String)がtoStringを呼ぶのは予想出来るが、
それがどこに書いてあるかまでは確認してない。まあもういいが。
確かに談義もしてないし、協力も大してしてもらってないわな。
とはいえ、getTime()については俺は前から疑問を持っていたからついでに調べたんだ。
>>317
これか?
http://d.hatena.ne.jp/sandai/20100916/p1
んー、まあこれを読んでも今回の結論には至らないけどな。
ちなみに俺は仕様書を断片的にしか読んでないから、多分
ToPrimitive(Number)がvalueOfを呼び、
ToPrimitive(String)がtoStringを呼ぶのは予想出来るが、
それがどこに書いてあるかまでは確認してない。まあもういいが。
319デフォルトの名無しさん
2016/07/18(月) 02:31:49.78ID:UhcVRSnP320デフォルトの名無しさん
2016/07/18(月) 02:33:00.01ID:CK8ZYmxh >>313
ああちなみに一応コメントしておくとな、
11.6.1のNOTE1で例外規定を書いているだろ?これは結局の所 if 文が必要になるんだよ。
だから仕様としては、「文字列として連結したいなら常に toString() 」の方が綺麗になる。
そうすれば+だけあるToPrimitiveが除去可能で、+と-を同じ関数で処理する目が出てくるだろ。
現実にはこれだけでは駄目だけど、そうやって無駄な関数を増やさないのが良い設計なんだよ。
本来腕前ってのはこういう「如何に無駄をなくすか」で勝負すべきであって、
お前らがやっているみたいな
「1行のチューニング」「俺の方が仕様に詳しい」「俺の方が短い」ではないんだよ。
ああちなみに一応コメントしておくとな、
11.6.1のNOTE1で例外規定を書いているだろ?これは結局の所 if 文が必要になるんだよ。
だから仕様としては、「文字列として連結したいなら常に toString() 」の方が綺麗になる。
そうすれば+だけあるToPrimitiveが除去可能で、+と-を同じ関数で処理する目が出てくるだろ。
現実にはこれだけでは駄目だけど、そうやって無駄な関数を増やさないのが良い設計なんだよ。
本来腕前ってのはこういう「如何に無駄をなくすか」で勝負すべきであって、
お前らがやっているみたいな
「1行のチューニング」「俺の方が仕様に詳しい」「俺の方が短い」ではないんだよ。
321デフォルトの名無しさん
2016/07/18(月) 02:38:48.12ID:UhcVRSnP 無駄をなくすなっていうのは、
一行の無駄もなくすって意味だし、
(コンピュータにやらせる)
仕様を出してきたのはお前だし、
短いっていうのが無駄をなくすってことだし。
わかってねぇなぁ。
今時アセンブラで書くとか言う話をするのかねぇ。
一番の無駄は人間が作業することなんだがw
一行の無駄もなくすって意味だし、
(コンピュータにやらせる)
仕様を出してきたのはお前だし、
短いっていうのが無駄をなくすってことだし。
わかってねぇなぁ。
今時アセンブラで書くとか言う話をするのかねぇ。
一番の無駄は人間が作業することなんだがw
322デフォルトの名無しさん
2016/07/18(月) 02:42:22.09ID:CK8ZYmxh323デフォルトの名無しさん
2016/07/18(月) 02:45:40.64ID:UhcVRSnP324デフォルトの名無しさん
2016/07/18(月) 02:47:05.64ID:CK8ZYmxh >>321
まあ今のお前にいくら言っても分からないとは思うが、必要なのは、
「構造的」簡潔さなんだよ。
「記述的」簡潔さではない。
もちろん記述も簡潔な方がいいんだけどね。
とはいえ、構造が簡潔なら記述が複雑になることもないんだよ。
とにかくお前は大きいのをまずは書いてみることだよ。
そうすれば色々と至らなさが分かると思うよ。
まあ今のお前にいくら言っても分からないとは思うが、必要なのは、
「構造的」簡潔さなんだよ。
「記述的」簡潔さではない。
もちろん記述も簡潔な方がいいんだけどね。
とはいえ、構造が簡潔なら記述が複雑になることもないんだよ。
とにかくお前は大きいのをまずは書いてみることだよ。
そうすれば色々と至らなさが分かると思うよ。
325デフォルトの名無しさん
2016/07/18(月) 02:49:44.99ID:CK8ZYmxh326デフォルトの名無しさん
2016/07/18(月) 03:01:24.39ID:vbFE3yAk また殺人くん呼ばわりのあのアホかな。
あのな、DateTimeというのは、日付と時間だよな。ある一点を指し示す値だ。もっと詳しく言えば、ある内部値を、日付と時間として扱えるようにしたオブジェクトだ。
その、「ある一点を指し示す日付と時間同士を、四則演算する」って凄くナンセンスだと思わない?
ある一点と、ある一点の間の距離は、numberか?
違うよな。
.net見てみろよ。TimeSpan型がある。
例外とかそういう馬鹿な話じゃない。
頭の中を整理して、できて良いかできてはいけないのか精査せえ。
何故getTimeしてるかわからんのか?
エポックとして、一点の情報ではなくなり、原点からの長さとして値を返してると考えるとことができる秒に変換しとるよな。要はベクトルに。
お前高校数学からやり直してこいよ。
あのな、DateTimeというのは、日付と時間だよな。ある一点を指し示す値だ。もっと詳しく言えば、ある内部値を、日付と時間として扱えるようにしたオブジェクトだ。
その、「ある一点を指し示す日付と時間同士を、四則演算する」って凄くナンセンスだと思わない?
ある一点と、ある一点の間の距離は、numberか?
違うよな。
.net見てみろよ。TimeSpan型がある。
例外とかそういう馬鹿な話じゃない。
頭の中を整理して、できて良いかできてはいけないのか精査せえ。
何故getTimeしてるかわからんのか?
エポックとして、一点の情報ではなくなり、原点からの長さとして値を返してると考えるとことができる秒に変換しとるよな。要はベクトルに。
お前高校数学からやり直してこいよ。
327デフォルトの名無しさん
2016/07/18(月) 03:02:19.26ID:vbFE3yAk328デフォルトの名無しさん
2016/07/18(月) 03:11:07.49ID:UhcVRSnP329デフォルトの名無しさん
2016/07/18(月) 03:13:48.33ID:UhcVRSnP いま普及している言語で、完璧な
構造的簡潔さとやらを備えてる言語ってなんだろうねw
重要なのは道具として使えることだよ。
道具として使えるならば簡潔でなくても良かった。
そうやって、制限のある中で今まで
実現してきたんだって。
構造的簡潔さとやらを備えてる言語ってなんだろうねw
重要なのは道具として使えることだよ。
道具として使えるならば簡潔でなくても良かった。
そうやって、制限のある中で今まで
実現してきたんだって。
330デフォルトの名無しさん
2016/07/18(月) 05:04:13.15ID:FfTrxk2L >>325
ES.nextでvalue-objectやらvalue-proxy、もしくは演算子オーバーロードが議論されてるよ。
まあとは言え今のDateをそのまま対応させるのはナンセンスだし、いろいろ問題あるから、
サフィックスで数値型を拡張できる優秀な案を使って、
1s -> <time>(1s)
2016Y+7M+18D -> <time>(1468767600000s)
3s - 1s -> <time>(2s)
date - 1s -> <date>
の用にできる。
まあその場合もgetTimeが要らなくなるわけじゃない、
勿論今でも単項+演算子使えば要らないので、要らないの定義によるが、
君は結局もっといい形があるじゃん、と言いたいのか、なんなのかよくわからないな。
ES.nextでvalue-objectやらvalue-proxy、もしくは演算子オーバーロードが議論されてるよ。
まあとは言え今のDateをそのまま対応させるのはナンセンスだし、いろいろ問題あるから、
サフィックスで数値型を拡張できる優秀な案を使って、
1s -> <time>(1s)
2016Y+7M+18D -> <time>(1468767600000s)
3s - 1s -> <time>(2s)
date - 1s -> <date>
の用にできる。
まあその場合もgetTimeが要らなくなるわけじゃない、
勿論今でも単項+演算子使えば要らないので、要らないの定義によるが、
君は結局もっといい形があるじゃん、と言いたいのか、なんなのかよくわからないな。
331デフォルトの名無しさん
2016/07/18(月) 23:56:44.27ID:CK8ZYmxh >>330
基本的には
・getTime要らないなら何故いちいち付いているのか?(全員付けているのか)
・今確かに動いているが本当に引き算は出来るのか?(仕様内なのか)
の確認だから。
今の仕様でもそんなに悪くないけど、直交してないから実装に負担がかかる。
とはいえ今更変更することは無理だし、
新仕様を検討している連中はこの辺全て分かっているだろうから、見守るしかないね。
なおgetTimeが要らないといっているのは引き算時限定であって、(これは経緯を見れば分かるはずだが)
やっぱりlodash君は「前との関連で」の会話が出来ないんだな。
多分ガチのアスペなんだと思う。
とはいえここは匿名掲示板なんだから、俺たちがアスペに対して気を使う必要はない。
(個人を特定して気を使う必要はない)
過去の発言は全部読めるのだから、ちゃんと読み直して付いてこいとしか言えんね。
lodash君の会話の組み立て方では普通は荒らし扱いされる。
それは読み直すことによって多少は改善するから、まずはそれを心がけることだ。
という書き方だと伝わらないのかな?
まあしかしこれ以上面倒見れんが。
基本的には
・getTime要らないなら何故いちいち付いているのか?(全員付けているのか)
・今確かに動いているが本当に引き算は出来るのか?(仕様内なのか)
の確認だから。
今の仕様でもそんなに悪くないけど、直交してないから実装に負担がかかる。
とはいえ今更変更することは無理だし、
新仕様を検討している連中はこの辺全て分かっているだろうから、見守るしかないね。
なおgetTimeが要らないといっているのは引き算時限定であって、(これは経緯を見れば分かるはずだが)
やっぱりlodash君は「前との関連で」の会話が出来ないんだな。
多分ガチのアスペなんだと思う。
とはいえここは匿名掲示板なんだから、俺たちがアスペに対して気を使う必要はない。
(個人を特定して気を使う必要はない)
過去の発言は全部読めるのだから、ちゃんと読み直して付いてこいとしか言えんね。
lodash君の会話の組み立て方では普通は荒らし扱いされる。
それは読み直すことによって多少は改善するから、まずはそれを心がけることだ。
という書き方だと伝わらないのかな?
まあしかしこれ以上面倒見れんが。
332デフォルトの名無しさん
2016/07/19(火) 00:27:47.65ID:gHzhdyCj > ・getTime要らないなら何故いちいち付いているのか?(全員付けているのか)
たまたま
> ・今確かに動いているが本当に引き算は出来るのか?(仕様内なのか)
仕様に書いているのだから、仕様通り
たまたま
> ・今確かに動いているが本当に引き算は出来るのか?(仕様内なのか)
仕様に書いているのだから、仕様通り
333デフォルトの名無しさん
2016/07/19(火) 00:39:36.64ID:gHzhdyCj > なおgetTimeが要らないといっているのは引き算時限定であって、(これは経緯を見れば分かるはずだが)
他にどんな演算子があるかぐらい調べろよw
new Date() / 1
new Date() * 1
new Date() % 10
new Date() ** 1
+new Date()
-new Date()
~new Date()
new Date() > 0 (< <= >= も同様)
new Date() << 1 (>> >>> も同様)
new Date() & 1
new Date() | 1
new Date() ^ 1
これらも仕様通りgetTime()はいらない。
というか逆に+のときだけgetTime()が必要と思ったほうが良いぐらい。
+は文字列結合と数値の加算の二つの意味があるから、仕方なくこうなってしまったという話。
(それ以外は二つの意味はない)
他にどんな演算子があるかぐらい調べろよw
new Date() / 1
new Date() * 1
new Date() % 10
new Date() ** 1
+new Date()
-new Date()
~new Date()
new Date() > 0 (< <= >= も同様)
new Date() << 1 (>> >>> も同様)
new Date() & 1
new Date() | 1
new Date() ^ 1
これらも仕様通りgetTime()はいらない。
というか逆に+のときだけgetTime()が必要と思ったほうが良いぐらい。
+は文字列結合と数値の加算の二つの意味があるから、仕方なくこうなってしまったという話。
(それ以外は二つの意味はない)
334デフォルトの名無しさん
2016/07/19(火) 00:48:15.24ID:gHzhdyCj > 今の仕様でもそんなに悪くないけど、直交してないから実装に負担がかかる。
> とはいえ今更変更することは無理だし、
直すならばDateの仕様ではなく、+オペレーターの方。
Perlみたく、+ は数値演算、 . で文字列結合 とするしかない。
> とはいえ今更変更することは無理だし、
直すならばDateの仕様ではなく、+オペレーターの方。
Perlみたく、+ は数値演算、 . で文字列結合 とするしかない。
335デフォルトの名無しさん
2016/07/19(火) 01:05:34.97ID:gHzhdyCj どうやら俺の発言が気に食わないようだが
俺に比べて技術と知識も劣ってるから、
getTimeがいらないのは引き算限定とかいう
発言で反論しようとするんだよなw
一般論として技術力が高い人ほど多くのことを
知っているんだよ。知ってるからこそ技術力も高くなる。
関数型プログラミングはいいよ。コードがシンプルになる。
lodashやjQueryは便利なライブラリ。
俺に比べて技術と知識も劣ってるから、
getTimeがいらないのは引き算限定とかいう
発言で反論しようとするんだよなw
一般論として技術力が高い人ほど多くのことを
知っているんだよ。知ってるからこそ技術力も高くなる。
関数型プログラミングはいいよ。コードがシンプルになる。
lodashやjQueryは便利なライブラリ。
336デフォルトの名無しさん
2016/07/19(火) 02:25:00.57ID:9Xihfq37 相変わらずアスペ全開だな。
まあついでに言っておくと、JavaScriptの連中は仕様書を書いている連中すらゴミだってことだ。
オブジェクト指向を理解出来てない。
Type固有の案件は全部15章に突っ込まないと駄目だ。
11章の演算子(+)に書くとか、親クラスのメソッドに子クラス毎にif文入れているようなものだ。
あの仕様書では頭からお尻まで全部読まないと理解できない。典型的な駄目コードだ。
だから俺も読み込むまでに余分に時間がかかった。
var Object = {
operator+: funciton() {
if (typeof(this)==='Date') // 11.6.1 NOTE1 // 現行仕様書
}};
var Date = {
operator+: function() { // 15.9.X // こっちに書くべき
}};
Type固有の例外規定が15章に書いてない時点で仕様書の構造がゴミ。
但し書きはダブって良いので、15章にも書き、そっちがオリジナルであるべき。
上記上側みたいに、Dateオブジェクトの特別扱いを、子クラスでメソッドをオーバライドせず、
親クラスのメソッドにいちいちif文入れてこられたらキレるだろ?
上記下側のように、子クラスでオーバライドした上で、
親クラスのメソッドに「Date型ではオーバライドされています」とコメントを付けておくべき。
まあついでに言っておくと、JavaScriptの連中は仕様書を書いている連中すらゴミだってことだ。
オブジェクト指向を理解出来てない。
Type固有の案件は全部15章に突っ込まないと駄目だ。
11章の演算子(+)に書くとか、親クラスのメソッドに子クラス毎にif文入れているようなものだ。
あの仕様書では頭からお尻まで全部読まないと理解できない。典型的な駄目コードだ。
だから俺も読み込むまでに余分に時間がかかった。
var Object = {
operator+: funciton() {
if (typeof(this)==='Date') // 11.6.1 NOTE1 // 現行仕様書
}};
var Date = {
operator+: function() { // 15.9.X // こっちに書くべき
}};
Type固有の例外規定が15章に書いてない時点で仕様書の構造がゴミ。
但し書きはダブって良いので、15章にも書き、そっちがオリジナルであるべき。
上記上側みたいに、Dateオブジェクトの特別扱いを、子クラスでメソッドをオーバライドせず、
親クラスのメソッドにいちいちif文入れてこられたらキレるだろ?
上記下側のように、子クラスでオーバライドした上で、
親クラスのメソッドに「Date型ではオーバライドされています」とコメントを付けておくべき。
337デフォルトの名無しさん
2016/07/19(火) 02:25:35.18ID:9Xihfq37 お前らの大半はこれにすら気づけないと見ている。
正直、JavaScriptの連中が上達してないのはかなり根が深い問題だと認識し始めてる。
仕様書すらこれだ。
多分君らの大半は何が良いコードなのかも理解出来ていない。
それはまともな構成の仕様書/コードを見たことがないからだ。
これについては、丁度OOPのスレでそれを問う勇者がいたから見てくるといい。(今は死にスレだが)
http://echo.2ch.net/test/read.cgi/tech/1467992113/10
http://echo.2ch.net/test/read.cgi/tech/1467992113/65
例えば仕様書だけでもまともであれば、
無意識的にオブジェクト指向を学習出来たはずなのだが、そうなっていない。
この酷い仕様書を読むまでは気づかなかったが、
当たり前だが他言語の仕様書は達人が書いているので、こうはなっていない。
だから仕様書を読んでいれば無意識的に
オブジェクト指向(正確には著者のプログラミングスタイル)も学習していける。
JavaScriptにはこれがない。つまるところ、教科書が悪いから上達しにくい。
それでも、他人のコードをほぼ全て見える状況は、おつりが来るほど有利だとも思うのだが。
正直、JavaScriptの連中が上達してないのはかなり根が深い問題だと認識し始めてる。
仕様書すらこれだ。
多分君らの大半は何が良いコードなのかも理解出来ていない。
それはまともな構成の仕様書/コードを見たことがないからだ。
これについては、丁度OOPのスレでそれを問う勇者がいたから見てくるといい。(今は死にスレだが)
http://echo.2ch.net/test/read.cgi/tech/1467992113/10
http://echo.2ch.net/test/read.cgi/tech/1467992113/65
例えば仕様書だけでもまともであれば、
無意識的にオブジェクト指向を学習出来たはずなのだが、そうなっていない。
この酷い仕様書を読むまでは気づかなかったが、
当たり前だが他言語の仕様書は達人が書いているので、こうはなっていない。
だから仕様書を読んでいれば無意識的に
オブジェクト指向(正確には著者のプログラミングスタイル)も学習していける。
JavaScriptにはこれがない。つまるところ、教科書が悪いから上達しにくい。
それでも、他人のコードをほぼ全て見える状況は、おつりが来るほど有利だとも思うのだが。
338デフォルトの名無しさん
2016/07/19(火) 03:43:57.22ID:pXKjqsL9 上達くんはトリップ付けてくれよ
339デフォルトの名無しさん
2016/07/19(火) 04:38:03.16ID:gHzhdyCj 自分の能力不足を仕様のせいにまでしてきたねw
340デフォルトの名無しさん
2016/07/19(火) 04:50:08.67ID:gHzhdyCj Dateにオペレータ+を書くとかさ間抜けすぎるっていうかw
世の中にはいろんな言語があるってことを知らないんじゃないかねぇ。
そして最高の言語があるとか思ってるんじゃないかねぇ。
JavaScriptにおいて演算子はクラスのメソッド(相当)ではない。
演算子のオーバーロードがないのもクラスのメソッドじゃないからだ。
だから演算子が特定のクラスにつくことはない。
もし+演算子がクラスのメソッドであれば、それはクラスごとに変更可能であるはずだ。
また戻り値も好きに変えられるはずだ。(例えばComplex型+Complex型の結果をComplex型にする等)
だけどJavaScriptではそれは出来ない。といったらJavaScriptは劣ってるとか言うんだろうな(苦笑)
これは言語のコンセプトの違いでしか無い。スクリプト言語としてそういう設計になってる。
JavaScriptにおいて演算の結果は文字列か数値にしかならない。(厳密に言えばNaNとかもあるが)
演算子はクラスメソッドではなく、演算子が使われた段階でオブジェクトはプリミティブ型に変換される。
Date型に対して+メソッドが呼ばれるのではなく、プリミティブ型への変換メソッド(valueOf)が呼ばれる。
その後に演算子の効果が働く。
な? 能力が低いんだよこいつは。
自分の知ってる○○の言語の常識でしか考えることが出来ない。
世の中にはいろんな言語があるってことを知らないんじゃないかねぇ。
そして最高の言語があるとか思ってるんじゃないかねぇ。
JavaScriptにおいて演算子はクラスのメソッド(相当)ではない。
演算子のオーバーロードがないのもクラスのメソッドじゃないからだ。
だから演算子が特定のクラスにつくことはない。
もし+演算子がクラスのメソッドであれば、それはクラスごとに変更可能であるはずだ。
また戻り値も好きに変えられるはずだ。(例えばComplex型+Complex型の結果をComplex型にする等)
だけどJavaScriptではそれは出来ない。といったらJavaScriptは劣ってるとか言うんだろうな(苦笑)
これは言語のコンセプトの違いでしか無い。スクリプト言語としてそういう設計になってる。
JavaScriptにおいて演算の結果は文字列か数値にしかならない。(厳密に言えばNaNとかもあるが)
演算子はクラスメソッドではなく、演算子が使われた段階でオブジェクトはプリミティブ型に変換される。
Date型に対して+メソッドが呼ばれるのではなく、プリミティブ型への変換メソッド(valueOf)が呼ばれる。
その後に演算子の効果が働く。
な? 能力が低いんだよこいつは。
自分の知ってる○○の言語の常識でしか考えることが出来ない。
341デフォルトの名無しさん
2016/07/19(火) 04:57:24.04ID:gHzhdyCj Dateにoperator+を書くべきじゃないと言ったが、
もちろんObjectにも書くべきじゃない。
>>336はさも、Objectにoperator+があるのが
現行の仕様だと言っているが、現行の仕様は
Objectにoperator+なんてものは存在しない。
ObjectにあるのはvalueOfメソッドだ。
そしてObjectのvalueOfメソッドに if Dateなら?みたいなコードはない。
Operator+解釈のアルゴリズムの結果、Date型のvalueOfメソッドが呼ばれるだけだ。
Operator+の処理が実行されるのは、Object(やDate)のメソッドが呼び出される前だ。
それは仕様を読めばわかること。
だからこそ15章 Native ECMAScript objects ではなく、
11章 Expressions に分離して書かれているのだ。
もちろんObjectにも書くべきじゃない。
>>336はさも、Objectにoperator+があるのが
現行の仕様だと言っているが、現行の仕様は
Objectにoperator+なんてものは存在しない。
ObjectにあるのはvalueOfメソッドだ。
そしてObjectのvalueOfメソッドに if Dateなら?みたいなコードはない。
Operator+解釈のアルゴリズムの結果、Date型のvalueOfメソッドが呼ばれるだけだ。
Operator+の処理が実行されるのは、Object(やDate)のメソッドが呼び出される前だ。
それは仕様を読めばわかること。
だからこそ15章 Native ECMAScript objects ではなく、
11章 Expressions に分離して書かれているのだ。
342デフォルトの名無しさん
2016/07/19(火) 09:44:05.11ID:Lmd4i1Ew >>336
仕様書が変に構造化されてて読みにくいのは非常にその通り。
でもES2015以降徐々に改善されて行ってるよ。
そういう意味でも最新の仕様書を読んだほうが良い。
で、確かに@@toPrimitiveはビルトインではDateとSymbolくらいにしかついていないので特有だが、
別にこれは外したり自由に付けたりもできるし、処理の流れの中で例外というわけでもない。
仕様書が変に構造化されてて読みにくいのは非常にその通り。
でもES2015以降徐々に改善されて行ってるよ。
そういう意味でも最新の仕様書を読んだほうが良い。
で、確かに@@toPrimitiveはビルトインではDateとSymbolくらいにしかついていないので特有だが、
別にこれは外したり自由に付けたりもできるし、処理の流れの中で例外というわけでもない。
343デフォルトの名無しさん
2016/07/19(火) 17:59:10.43ID:Ll9Tyf8R 頭おかしいのかな。
オブジェクト指向でも、クラス指向ではない。
型は無いに等しい。アヒルの様に鳴き、アヒルの様に歩けば、それはアヒルである、という「見做し」を代わりに使用する。
この2つだけで、何故演算子がその時と場合で意味が変わるか、理解出来るんじゃなかろうか。
知能低すぎなのは、その程度で関数型とか言っちゃってる脳味噌じゃねえの?
valueOfは、見做しの典型だろ。
どんなオブジェクトであれ、どんな経緯でプロトタイプがチェーンされていても、それを辿って一番最初に見つかったvalueOfが使われるんだから。
オブジェクト指向でも、クラス指向ではない。
型は無いに等しい。アヒルの様に鳴き、アヒルの様に歩けば、それはアヒルである、という「見做し」を代わりに使用する。
この2つだけで、何故演算子がその時と場合で意味が変わるか、理解出来るんじゃなかろうか。
知能低すぎなのは、その程度で関数型とか言っちゃってる脳味噌じゃねえの?
valueOfは、見做しの典型だろ。
どんなオブジェクトであれ、どんな経緯でプロトタイプがチェーンされていても、それを辿って一番最初に見つかったvalueOfが使われるんだから。
344デフォルトの名無しさん
2016/07/19(火) 19:56:18.15ID:Lmd4i1Ew まあそういう挙動が変だ、嫌だって言うなら
delete Date.prototype[Symbol.toPrimitive]
すれば変えられる。
誰かは言わないけど世の中には
delete Object.prototype.__proto__
とか嫌いで許せない物をまず削ってから始める派の人も居るみたいだしね。
delete Date.prototype[Symbol.toPrimitive]
すれば変えられる。
誰かは言わないけど世の中には
delete Object.prototype.__proto__
とか嫌いで許せない物をまず削ってから始める派の人も居るみたいだしね。
345デフォルトの名無しさん
2016/07/20(水) 00:55:34.54ID:uzXTbo4C >>344
そー。
if Dateとかナンセンスすぎんのよ。
とりあえずvalueOf呼んで、その実装が誰のものかどのインスタンスのものかなんか気にせず、帰ってきたのが値で、
それ以上でもそれ以下でも無い。
クラスのメソッドとか脳味噌の代わりにウニ詰まってるレベル。
オブジェクトか、オブジェクトのプロトタイプのプロパティに
functionが入ってるだけであって、クラス()のメソッド()でも何でも無い。
関数を一級市民とみなす関数型言語erが、まさかの関数をメソッドと特別扱いするとは。
演算子は演算子であって、それ以上でもそれ以下でもない。その後に効果が働くも何も、それ以外の役には立たんから演算子として、言語として定義されとんのだ。
そー。
if Dateとかナンセンスすぎんのよ。
とりあえずvalueOf呼んで、その実装が誰のものかどのインスタンスのものかなんか気にせず、帰ってきたのが値で、
それ以上でもそれ以下でも無い。
クラスのメソッドとか脳味噌の代わりにウニ詰まってるレベル。
オブジェクトか、オブジェクトのプロトタイプのプロパティに
functionが入ってるだけであって、クラス()のメソッド()でも何でも無い。
関数を一級市民とみなす関数型言語erが、まさかの関数をメソッドと特別扱いするとは。
演算子は演算子であって、それ以上でもそれ以下でもない。その後に効果が働くも何も、それ以外の役には立たんから演算子として、言語として定義されとんのだ。
346デフォルトの名無しさん
2016/07/20(水) 02:05:37.37ID:eZynd/Sj >>342
> 処理の流れの中で例外というわけでもない
俺が言っているのは、ToPrimitiveを呼ぶことではなくて、
ToPrimitiveのデフォルト値がTypeによって異なっていることだ。
ただしこれについては俺も>>336内では間違っていた。正確には以下。
var Object = {
ToPrimitive: funciton(hint) { // 9.1
if (typeof(this)==='Date') // 11.6.1 NOTE1 // ES5.1仕様書
}};
つまり、15.9 に書くべき内容が、次点の 9.1 にも書いてなくて、 11.6.1 に書いてある。
二重に落とし穴になっている。
そして、当たり前だがNOTE1が例外だと言っている。
というか例外じゃなければNOTEの意味無いだろ。
仕様書のおかしな構造は、おそらく仕様書それ自体を書いたわけではなくて、実装から起こしたからだ。
だから仕様書として妥当な場所ではなく、それが実装してある場所に記述があるのだろう。
とはいえその場合でもこのNOTE1の内容なら 9.1 にあるべきであって、
いずれにしても 11.6.1 にあるのはかなり謎なのだが。
そして、実装から起こすにしても、まともな実装ならそのまま仕様書に焼き直しても上手く行く。
いずれにしてもアレなんだろうさ。
NOTE1(仮): Dateの場合はhintにStringを与えて呼び出す // 11.6.1 にあっても不思議ではない、
// 336の俺の勘違いはこれ、11.6.1にある点と整合させる為に脳内変換してしまった
NOTE1(ES5.1仕様書): ToPrimitiveはhint無しの場合、
Date以外はNumberが、
DateはStringがhintに与えられたものと見なす
// ToPrimitiveの動作説明を(+)の説明内に配置?意味不明
// しかもToPrimitiveの場所(9.1)にはこの説明は無しかよ!マジで頭おかしい
> 処理の流れの中で例外というわけでもない
俺が言っているのは、ToPrimitiveを呼ぶことではなくて、
ToPrimitiveのデフォルト値がTypeによって異なっていることだ。
ただしこれについては俺も>>336内では間違っていた。正確には以下。
var Object = {
ToPrimitive: funciton(hint) { // 9.1
if (typeof(this)==='Date') // 11.6.1 NOTE1 // ES5.1仕様書
}};
つまり、15.9 に書くべき内容が、次点の 9.1 にも書いてなくて、 11.6.1 に書いてある。
二重に落とし穴になっている。
そして、当たり前だがNOTE1が例外だと言っている。
というか例外じゃなければNOTEの意味無いだろ。
仕様書のおかしな構造は、おそらく仕様書それ自体を書いたわけではなくて、実装から起こしたからだ。
だから仕様書として妥当な場所ではなく、それが実装してある場所に記述があるのだろう。
とはいえその場合でもこのNOTE1の内容なら 9.1 にあるべきであって、
いずれにしても 11.6.1 にあるのはかなり謎なのだが。
そして、実装から起こすにしても、まともな実装ならそのまま仕様書に焼き直しても上手く行く。
いずれにしてもアレなんだろうさ。
NOTE1(仮): Dateの場合はhintにStringを与えて呼び出す // 11.6.1 にあっても不思議ではない、
// 336の俺の勘違いはこれ、11.6.1にある点と整合させる為に脳内変換してしまった
NOTE1(ES5.1仕様書): ToPrimitiveはhint無しの場合、
Date以外はNumberが、
DateはStringがhintに与えられたものと見なす
// ToPrimitiveの動作説明を(+)の説明内に配置?意味不明
// しかもToPrimitiveの場所(9.1)にはこの説明は無しかよ!マジで頭おかしい
347デフォルトの名無しさん
2016/07/20(水) 02:06:29.35ID:eZynd/Sj さてES7仕様書を確認してみた。確かに大幅改訂されている。
7.1.1のToPrimitiveの所にNOTEがある。(改善あり)
12.8.3の + の所にはこれまでどおりのNOTE記述、まあこれはあった方がいい。
20.3.4.45にはDate.prototype[@@toPrimitive](hint)が追加されている。(改善あり)
結果、俺が問題だと思った点は全て改善され、妥当な配置になっている。
> そういう意味でも最新の仕様書を読んだほうが良い
ああその通りだ。今後俺はそうするよ。少なくともES5.1仕様書はゴミだ。
> 別にこれは外したり自由に付けたりもできるし、処理の流れの中で例外というわけでもない
それは完全に後付だよ。とはいえ妥当な解決策ではあるが。
最初からNumberならこの部分自体が丸々要らない。
無駄仕様で無駄に膨らむ駄目パターンの典型だ。
とはいえ、ES7には今のところ問題点はないね。
俺もこの解決策を採るだろうし、仕様書としても今現在俺が検出した問題点は全て解決済みだ。
徐々に改善されているのは事実だね。
ただまあ、20年も経とうとしているのにこのレベルの改善を未だにやっていること自体が問題だが。
他言語の仕様/仕様書なら、最初からこんな問題は存在しない。
というか、ブレンダン・アイクは何で仕様書を書かなかったんだろう?
彼が第1版を書けばこんな事にはならなかったはずなんだよ。
>>344
ググったらヒットした。で、試してみた。
が、効果あるか?特に何も変わらない気がするが。
ES6フラグとか指定必要?
7.1.1のToPrimitiveの所にNOTEがある。(改善あり)
12.8.3の + の所にはこれまでどおりのNOTE記述、まあこれはあった方がいい。
20.3.4.45にはDate.prototype[@@toPrimitive](hint)が追加されている。(改善あり)
結果、俺が問題だと思った点は全て改善され、妥当な配置になっている。
> そういう意味でも最新の仕様書を読んだほうが良い
ああその通りだ。今後俺はそうするよ。少なくともES5.1仕様書はゴミだ。
> 別にこれは外したり自由に付けたりもできるし、処理の流れの中で例外というわけでもない
それは完全に後付だよ。とはいえ妥当な解決策ではあるが。
最初からNumberならこの部分自体が丸々要らない。
無駄仕様で無駄に膨らむ駄目パターンの典型だ。
とはいえ、ES7には今のところ問題点はないね。
俺もこの解決策を採るだろうし、仕様書としても今現在俺が検出した問題点は全て解決済みだ。
徐々に改善されているのは事実だね。
ただまあ、20年も経とうとしているのにこのレベルの改善を未だにやっていること自体が問題だが。
他言語の仕様/仕様書なら、最初からこんな問題は存在しない。
というか、ブレンダン・アイクは何で仕様書を書かなかったんだろう?
彼が第1版を書けばこんな事にはならなかったはずなんだよ。
>>344
ググったらヒットした。で、試してみた。
が、効果あるか?特に何も変わらない気がするが。
ES6フラグとか指定必要?
348デフォルトの名無しさん
2016/07/20(水) 02:09:56.99ID:eZynd/Sj あ、ちなみに試したのは後者、間違いないようにもう一度書いておくと、以下ね。
> delete Object.prototype.__proto__
とりあえず期待した効果がない(気がする)
> delete Object.prototype.__proto__
とりあえず期待した効果がない(気がする)
349デフォルトの名無しさん
2016/07/20(水) 02:15:43.13ID:E+SEwayU > 他言語の仕様/仕様書なら、最初からこんな問題は存在しない。
そんなわけねーだろw
どんな言語でも最初は汚いし
完璧な言語はない。
なによりお前、他の言語と言ってるが、
じゃあ具体的にどの言語だよ?
どうせしらんだろ
そんなわけねーだろw
どんな言語でも最初は汚いし
完璧な言語はない。
なによりお前、他の言語と言ってるが、
じゃあ具体的にどの言語だよ?
どうせしらんだろ
350デフォルトの名無しさん
2016/07/20(水) 02:31:38.89ID:eZynd/Sj >>344
いじってみると、動作の差異を検出出来た。
delete以降は__proto__指定でのプロトタイプ切り替えは出来なくなる。
ただし、リテラルとしてオブジェクト全体を生成する場合は指定が効くという、
極めて中途半端?な状態になっている。
果たしてこれが仕様なのか、もちろん動作自体ももっと確認しないと怖くて使えないが、
これが仕様であれば、意図は分かるし、最初からこうならこっちの方がいい。
ただ、今現在の動作しているコードの中でこれをやるのは無理だね。副作用が怖すぎる。
(つまり、結論としては、仕様だと確認出来ても使わない)
いじってみると、動作の差異を検出出来た。
delete以降は__proto__指定でのプロトタイプ切り替えは出来なくなる。
ただし、リテラルとしてオブジェクト全体を生成する場合は指定が効くという、
極めて中途半端?な状態になっている。
果たしてこれが仕様なのか、もちろん動作自体ももっと確認しないと怖くて使えないが、
これが仕様であれば、意図は分かるし、最初からこうならこっちの方がいい。
ただ、今現在の動作しているコードの中でこれをやるのは無理だね。副作用が怖すぎる。
(つまり、結論としては、仕様だと確認出来ても使わない)
351デフォルトの名無しさん
2016/07/20(水) 02:40:40.72ID:xVzG2GNh352デフォルトの名無しさん
2016/07/20(水) 03:30:00.35ID:eZynd/Sj B.2.2だろ?
他を見てもアクセサとして実装するところまでは仕様のようだから、
deleteに関しても仕様通りの実装になっていれば同じ動作だろう。
しかしObject.definePropertyを使えば同じ事が副作用無しで出来るのに
わざわざdeleteする意味は何?
他を見てもアクセサとして実装するところまでは仕様のようだから、
deleteに関しても仕様通りの実装になっていれば同じ動作だろう。
しかしObject.definePropertyを使えば同じ事が副作用無しで出来るのに
わざわざdeleteする意味は何?
353デフォルトの名無しさん
2016/07/20(水) 07:46:36.40ID:2oUQ3wZY >>350
まあ多分Object.prototype.__proto__が嫌いな人は
Object.prototypeに余計で醜いの生やすな!って言いたいのもあるだろうから
それで良いんじゃないのかな。
あとまあES仕様は基本的に一箇所に最小限しかかかれていなくて、
慣れていないうちはあっち行ったりこっち行ったりする必要があるが、
逆に言うと基本処理を覚えてパターンに慣れるほどに読みこなしてしまえば、
短い一部を読むだけで理解できるからむしろ楽という事もある。
仕様書いてる人もそうだから、初めて読む人の読みづらさがなかなかわからないんじゃないかな。
まあ多分Object.prototype.__proto__が嫌いな人は
Object.prototypeに余計で醜いの生やすな!って言いたいのもあるだろうから
それで良いんじゃないのかな。
あとまあES仕様は基本的に一箇所に最小限しかかかれていなくて、
慣れていないうちはあっち行ったりこっち行ったりする必要があるが、
逆に言うと基本処理を覚えてパターンに慣れるほどに読みこなしてしまえば、
短い一部を読むだけで理解できるからむしろ楽という事もある。
仕様書いてる人もそうだから、初めて読む人の読みづらさがなかなかわからないんじゃないかな。
354デフォルトの名無しさん
2016/07/20(水) 09:31:33.55ID:E+SEwayU このようにJavaScriptの仕様書っていうのは
よく読まれやすい。読んでいるからこそ苦情も出てくる。
それに対して、他の言語の仕様書は読む気すらおきない
よく読まれやすい。読んでいるからこそ苦情も出てくる。
それに対して、他の言語の仕様書は読む気すらおきない
355デフォルトの名無しさん
2016/07/20(水) 13:30:34.45ID:2oUQ3wZY 処理系と仕様が完全に分離されてるのもどちらかと言うと珍しいのもあるかもな。
RubyやPythonだったら言語学者でもない限りメインの処理系の動き=仕様ということで納得する部分があるが
JSだと沢山の処理系で動くように作らないといけないからね。
各処理系の対応度合いもまちまちだし、1つの処理系だけ取っても変化が早い。
だから言語仕様書を頼ることが多くなるのかもね。
でも言語仕様書はあくまで言語仕様書であり、リファレンスとは違うので誰にでも分り易いものではないね、
RubyやPythonだったら言語学者でもない限りメインの処理系の動き=仕様ということで納得する部分があるが
JSだと沢山の処理系で動くように作らないといけないからね。
各処理系の対応度合いもまちまちだし、1つの処理系だけ取っても変化が早い。
だから言語仕様書を頼ることが多くなるのかもね。
でも言語仕様書はあくまで言語仕様書であり、リファレンスとは違うので誰にでも分り易いものではないね、
356デフォルトの名無しさん
2016/07/20(水) 23:30:45.27ID:E+SEwayU JavaScriptの標準APIがRubyのそれとは違って
大幅に機能が少ないからのは標準化のせいなのかな?
他言語を見習って一気にメソッド増やしてほしいものなんだが。
http://ruby-doc.org/core-2.3.1/Enumerable.html
これらのメソッドの多くがないから、lodashなどに
頼る必要が出てくる。
他言語で標準化されてるならば、JavaScriptに取り入れるかなんて
議論する必要はないと思うんだけどな。
大幅に機能が少ないからのは標準化のせいなのかな?
他言語を見習って一気にメソッド増やしてほしいものなんだが。
http://ruby-doc.org/core-2.3.1/Enumerable.html
これらのメソッドの多くがないから、lodashなどに
頼る必要が出てくる。
他言語で標準化されてるならば、JavaScriptに取り入れるかなんて
議論する必要はないと思うんだけどな。
357デフォルトの名無しさん
2016/07/21(木) 07:48:11.60ID:3EZYXG7o Rubyやらより遥かに後方互換性を切るのが難しいからね。
Rubyやらはなんだかんだ言ってメジャーバージョンアップの時には思い切って互換性を切ることができる。
そこでの一番の問題はユーザーがついてきてくれるかとか、そんなところ。
でもJSは後方互換性を切るとなったら、それが受け入れられるかなんてむしろどうでもよくて、
今あるコンテンツのほぼ全てに影響がないかが大事になる。
それは同等の力を持ったエンジンが複数あり、ユーザーコミュニティではなくエンジン開発陣主体だから。
目線が違うので、便利だから入れようという盛り上がりが起こることは少なく、
今ある特にパフォーマンスや技術的問題を、具体的に解決できる提案が取り入れられやすい。
Rubyやらはなんだかんだ言ってメジャーバージョンアップの時には思い切って互換性を切ることができる。
そこでの一番の問題はユーザーがついてきてくれるかとか、そんなところ。
でもJSは後方互換性を切るとなったら、それが受け入れられるかなんてむしろどうでもよくて、
今あるコンテンツのほぼ全てに影響がないかが大事になる。
それは同等の力を持ったエンジンが複数あり、ユーザーコミュニティではなくエンジン開発陣主体だから。
目線が違うので、便利だから入れようという盛り上がりが起こることは少なく、
今ある特にパフォーマンスや技術的問題を、具体的に解決できる提案が取り入れられやすい。
358デフォルトの名無しさん
2016/08/21(日) 21:25:32.47ID:u7v77FIA IndexedDBでdeleteObjectStoreする時にトランザクションが(仕様上)取れなくて、
そのままdb.close()するとエラーになる時があるんだが、これってどうすればいいのだ?
e.target.errorは以下。e.target.transacsionはnull(IDBFactory.openで呼んだ直後)
target:IDBOpenDBRequest
error:DOMException: The connection was closed.
code:20
message:"The connection was closed."
name:"AbortError"
createObjectStoreはtransactionプロパティがあるのでそれでoncompleteを待てるのだが、
deleteObjectStoreは何故かvoidを返す仕様で、待ちようがない。
ならばそのままクローズで良いのかと思いきや、エラーになる。
https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/deleteObjectStore
普通ならIDBDatabase.transactionがプロパティでそこから辿れるはずなのだが、メソッドだし。
deleteの時にトランザクションがないわけがないし、
それにアクセス出来ないのは仕様上の欠陥だと思うが。
createObjectStoreがobjectStoreを返すのは便利で良いが、本来はTransactionを返すべき。
だったら空オブジェクトにtransactionプロパティだけでも付けておいてくれないと対応出来ない。
なおヒット状況は、
1. あらかじめIndexedDBに500個ほどオブジェクトストアを作っておく。
2. open直後にそのうち3つほどを連続して消す。
3. クローズ。
この3のタイミングの取り方が分からない。
IndexDBは初めて使うので、使い方が間違っていたり、
或いは大幅に勘違いしてるかもしれないけど、その辺も含めてよろしく。
なおアプリとしてはもう一度削除されるだけなのでクリティカルな問題ではない。
そのままdb.close()するとエラーになる時があるんだが、これってどうすればいいのだ?
e.target.errorは以下。e.target.transacsionはnull(IDBFactory.openで呼んだ直後)
target:IDBOpenDBRequest
error:DOMException: The connection was closed.
code:20
message:"The connection was closed."
name:"AbortError"
createObjectStoreはtransactionプロパティがあるのでそれでoncompleteを待てるのだが、
deleteObjectStoreは何故かvoidを返す仕様で、待ちようがない。
ならばそのままクローズで良いのかと思いきや、エラーになる。
https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/deleteObjectStore
普通ならIDBDatabase.transactionがプロパティでそこから辿れるはずなのだが、メソッドだし。
deleteの時にトランザクションがないわけがないし、
それにアクセス出来ないのは仕様上の欠陥だと思うが。
createObjectStoreがobjectStoreを返すのは便利で良いが、本来はTransactionを返すべき。
だったら空オブジェクトにtransactionプロパティだけでも付けておいてくれないと対応出来ない。
なおヒット状況は、
1. あらかじめIndexedDBに500個ほどオブジェクトストアを作っておく。
2. open直後にそのうち3つほどを連続して消す。
3. クローズ。
この3のタイミングの取り方が分からない。
IndexDBは初めて使うので、使い方が間違っていたり、
或いは大幅に勘違いしてるかもしれないけど、その辺も含めてよろしく。
なおアプリとしてはもう一度削除されるだけなのでクリティカルな問題ではない。
359デフォルトの名無しさん
2016/08/21(日) 22:46:27.65ID:Dn9vwW86 >>358
createもdeleteもversionchangeでしか使えんだろう。
createもdeleteもversionchangeでしか使えんだろう。
360デフォルトの名無しさん
2016/08/21(日) 23:07:56.19ID:u7v77FIA createObjectStoreも単発で作るだけなら同じかもしれないが、それは試していない。
こちらの使い方では以下サンプルの通り、
createObjectStore直後にobjectStore.transaction.completeで書き込みを行っているので、
書き込み側では今のところ問題はない。
> 「データベースを構築する」からの抜粋
> var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
> objectStore.transaction.oncomplete = function(event) {
> }
> https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB#Opening_a_database
ちなみにcreateObjectStoreのtransactionは複数作成しても同一なので
(oncompleteは最後に1回呼ばれるだけ)
おそらくdeleteObjectStoreのトランザクションとも同一。
だからこれが見えれば問題は解決出来るはずなのだが、辿り方が分からない。
(というか仕様上抜けているように見える)
こちらの使い方では以下サンプルの通り、
createObjectStore直後にobjectStore.transaction.completeで書き込みを行っているので、
書き込み側では今のところ問題はない。
> 「データベースを構築する」からの抜粋
> var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
> objectStore.transaction.oncomplete = function(event) {
> }
> https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB#Opening_a_database
ちなみにcreateObjectStoreのtransactionは複数作成しても同一なので
(oncompleteは最後に1回呼ばれるだけ)
おそらくdeleteObjectStoreのトランザクションとも同一。
だからこれが見えれば問題は解決出来るはずなのだが、辿り方が分からない。
(というか仕様上抜けているように見える)
361デフォルトの名無しさん
2016/08/21(日) 23:34:58.54ID:u7v77FIA ちなみにcreateObjectStore/deleteObjectStoreを常用しようとしている。
APIを見る限り、確かにこれは通常想定されている使い方ではないようだが、
versionカウンタが64bit整数だから出来ない使い方でもない。
管理上最適な階層にすると、今回はcreate/deleteを常用する事になる。
だからそれが出来るかどうか試している。(実用に耐えるかどうか)
APIを見る限り、確かにこれは通常想定されている使い方ではないようだが、
versionカウンタが64bit整数だから出来ない使い方でもない。
管理上最適な階層にすると、今回はcreate/deleteを常用する事になる。
だからそれが出来るかどうか試している。(実用に耐えるかどうか)
362デフォルトの名無しさん
2016/08/21(日) 23:35:23.04ID:sjfW/TwQ トランザクションはversionchange全体で1つ
363デフォルトの名無しさん
2016/08/21(日) 23:45:38.76ID:Dn9vwW86 >>360
ハンドラに代入したらそりゃ一回だけじゃねえの?
addEventListener使わないのはどうして?
複数作成しても同一、ってなんで複数作成する必要があるの?
トランザクションと同じ、の根拠何なの?
onupgradeneededでしか使えないんじゃなかったっけ?
消す意味がわからんのだけど、なんで消したいの?
消さなきゃいけないなら保存なんかしなけりゃ良いと思うんだが。
createObjectStoreがなんでtransaction帰すべきなの?
ObjectStoreをcreateしたのに。
一つのストアから、2つ以上のトランザクション作りたい場合に詰むんじゃねえの?
なんか根本的に間違ってない?
ハンドラに代入したらそりゃ一回だけじゃねえの?
addEventListener使わないのはどうして?
複数作成しても同一、ってなんで複数作成する必要があるの?
トランザクションと同じ、の根拠何なの?
onupgradeneededでしか使えないんじゃなかったっけ?
消す意味がわからんのだけど、なんで消したいの?
消さなきゃいけないなら保存なんかしなけりゃ良いと思うんだが。
createObjectStoreがなんでtransaction帰すべきなの?
ObjectStoreをcreateしたのに。
一つのストアから、2つ以上のトランザクション作りたい場合に詰むんじゃねえの?
なんか根本的に間違ってない?
364デフォルトの名無しさん
2016/08/21(日) 23:48:10.59ID:ZqmshKaM なぜ、ストアごと消す必要があるんだろう。
中身だけ消せばいいんじゃねえの?clear一発っしょ。
中身だけ消せばいいんじゃねえの?clear一発っしょ。
365デフォルトの名無しさん
2016/08/22(月) 00:02:44.22ID:m1LOPf7I 中身だけ消す使い方も出来るが、それだと名前対応の辞書引きが必要になる。
管理上「最下層の名前=最下層のobjectStoreの名前」が一番簡単だからそうしている。
アクセス/追加/廃棄単位もこれと同一だから、管理上はそこにobjectStore階層を置きたい。
もちろんキーに全部含めてフラットに扱うことも出来るが、
元々階層オブジェクトなのをフラットにしてDBに負荷をかけるのは本末転倒だ。
それでコードが楽になるならメリットもあるが、今回はそうではないし。
今回は完全に階層オブジェクト(末端はファイル)だからIndexedDBの必要はないのだけど、
FileSystemAPIだとChromeしか使えない。
これについてはFireFoxはIndexedDBを使えという主張らしく、
確かに機能的には上位互換だから、動作が十分に軽ければ問題ない。だからそれを試している。
https://dev.mozilla.jp/2012/07/why-no-filesystem-api-in-firefox/
http://www.html5rocks.com/ja/tutorials/file/filesystem/
管理上「最下層の名前=最下層のobjectStoreの名前」が一番簡単だからそうしている。
アクセス/追加/廃棄単位もこれと同一だから、管理上はそこにobjectStore階層を置きたい。
もちろんキーに全部含めてフラットに扱うことも出来るが、
元々階層オブジェクトなのをフラットにしてDBに負荷をかけるのは本末転倒だ。
それでコードが楽になるならメリットもあるが、今回はそうではないし。
今回は完全に階層オブジェクト(末端はファイル)だからIndexedDBの必要はないのだけど、
FileSystemAPIだとChromeしか使えない。
これについてはFireFoxはIndexedDBを使えという主張らしく、
確かに機能的には上位互換だから、動作が十分に軽ければ問題ない。だからそれを試している。
https://dev.mozilla.jp/2012/07/why-no-filesystem-api-in-firefox/
http://www.html5rocks.com/ja/tutorials/file/filesystem/
366デフォルトの名無しさん
2016/08/22(月) 00:09:17.75ID:bLWZhaRu ファイルって何に使ってるの?
最悪消えても良いのならCacheStorageもあるが。
最悪消えても良いのならCacheStorageもあるが。
367デフォルトの名無しさん
2016/08/22(月) 00:15:46.53ID:m1LOPf7I >>362
確認した。おそらくそのようだ。
> Transactions of this mode cannot run concurrently with other transactions. Transactions in this mode are known as "upgrade transactions."
> https://developer.mozilla.org/ja/docs/Web/API/IDBTransaction
そしてこの"upgrade transactions."がどこのプロパティに現れるのか知りたい。
つか、一つならdb.transactionにぶら下げといてくれよなと。
createObjectStoreの後にもここにはぶら下がってないね。
確認した。おそらくそのようだ。
> Transactions of this mode cannot run concurrently with other transactions. Transactions in this mode are known as "upgrade transactions."
> https://developer.mozilla.org/ja/docs/Web/API/IDBTransaction
そしてこの"upgrade transactions."がどこのプロパティに現れるのか知りたい。
つか、一つならdb.transactionにぶら下げといてくれよなと。
createObjectStoreの後にもここにはぶら下がってないね。
368デフォルトの名無しさん
2016/08/22(月) 00:23:12.68ID:m1LOPf7I >>366
Web上のファイルの保存用途に使う。(アーカイブ)
だからファイルが保存出来れば何でも良い。
(まだFileSystemAPIは試していない)
URLは最初から階層になっているし、それを保つのが管理上一番楽だからそうする。
したがって、DBアクセスの必要はない。
ユーザがライフタイムを完全に管理出来なければならない。
(Web上から削除された時、ユーザ側で削除するか保存するか決める)
CacheStorageはあとで見てみるが、チラ見では新しすぎる感じ。
Web上のファイルの保存用途に使う。(アーカイブ)
だからファイルが保存出来れば何でも良い。
(まだFileSystemAPIは試していない)
URLは最初から階層になっているし、それを保つのが管理上一番楽だからそうする。
したがって、DBアクセスの必要はない。
ユーザがライフタイムを完全に管理出来なければならない。
(Web上から削除された時、ユーザ側で削除するか保存するか決める)
CacheStorageはあとで見てみるが、チラ見では新しすぎる感じ。
369デフォルトの名無しさん
2016/08/22(月) 00:32:40.08ID:utwn7AiT >>365
頭おかしくなければ、もともと階層オブジェクトなのをフラットに、とか変な事考えなくていいんじゃねえの?
/hoge..../a.php?aaa/bbb
/hoge.../a/aaa/bbb
が同じとかあんじゃん。
url:{
content:Blob,
schema:xxx,
host:xxxx,
port:xxxxx,
path:[aaa,bbb,ccc]
}
とでもオブジェクト作って、pathにインデックス貼れば?
なんの負担でも無いよ。indexで引くDBだからindexedDBなんだし。
階層構造を保存するためにハードディスクが階段の形してるなら寝言続けて。
頭おかしくなければ、もともと階層オブジェクトなのをフラットに、とか変な事考えなくていいんじゃねえの?
/hoge..../a.php?aaa/bbb
/hoge.../a/aaa/bbb
が同じとかあんじゃん。
url:{
content:Blob,
schema:xxx,
host:xxxx,
port:xxxxx,
path:[aaa,bbb,ccc]
}
とでもオブジェクト作って、pathにインデックス貼れば?
なんの負担でも無いよ。indexで引くDBだからindexedDBなんだし。
階層構造を保存するためにハードディスクが階段の形してるなら寝言続けて。
370デフォルトの名無しさん
2016/08/22(月) 00:36:42.04ID:m1LOPf7I >>366
CacheAPI見てみたがライフタイムの管理がよく分からん。
「ユーザ側からの削除無しなら永久保存」(つまりファイルと同じ)に出来る物なの?
https://developer.mozilla.org/ja/docs/Web/API/Cache
あとIndexedDBはFireFoxがそういっているから試してみているだけであって、
FileSystemAPIだとWindowsから直接コピーとか出来るはずなので、
結果的にアーカイブの管理が楽にはなるから、そっちを使うかも。
いずれにしても今は試している段階だ。
何か情報あればよろしく。
CacheAPI見てみたがライフタイムの管理がよく分からん。
「ユーザ側からの削除無しなら永久保存」(つまりファイルと同じ)に出来る物なの?
https://developer.mozilla.org/ja/docs/Web/API/Cache
あとIndexedDBはFireFoxがそういっているから試してみているだけであって、
FileSystemAPIだとWindowsから直接コピーとか出来るはずなので、
結果的にアーカイブの管理が楽にはなるから、そっちを使うかも。
いずれにしても今は試している段階だ。
何か情報あればよろしく。
371デフォルトの名無しさん
2016/08/22(月) 00:42:53.49ID:utwn7AiT 自分はすごく考えた結果、こうする他がない、でもわからん。不自然な答えになる。そのやり方は不自然なやり方だからどこにも載ってないから教えてってときに、情報出し渋るなよ。
どう考えても自分の発想が間違ってる以外の結論出ないんだから。
>>370
しかしなんでパスをインデックスに出来ないの?
限界サイズは一番でかいか無限だよ。IndexedDBは。
どう考えても自分の発想が間違ってる以外の結論出ないんだから。
>>370
しかしなんでパスをインデックスに出来ないの?
限界サイズは一番でかいか無限だよ。IndexedDBは。
372デフォルトの名無しさん
2016/08/22(月) 00:43:11.87ID:m1LOPf7I >>369
それも何の負担もないが、
元のURLもクエリを含まないからそのままでも全く負担無いんだよ。
だからその方法ではコードは楽にならない。
仮にFileSystemAPIを使ったとして、
Windowsから直接ファイルをアクセス出来れば、
アーカイブが要らなくなった時にエクスプローラから削除出来るでしょ。
直感的に一番簡単。
それを意味無くフラットなDBにしてしまったら、
そのアプリいちいち起動しないとあれこれ出来ないでしょ。
バグってて削除出来ないとかもあり得るわけでね。そういうこと。
他アプリとインタフェースが揃っているのは重要なんだよ。
仮にIndexedDBも結果的にWindowsファイルの階層として見える形で
objectStoreを置いてくれていれば、同様のことが期待出来るわけだし。
それも何の負担もないが、
元のURLもクエリを含まないからそのままでも全く負担無いんだよ。
だからその方法ではコードは楽にならない。
仮にFileSystemAPIを使ったとして、
Windowsから直接ファイルをアクセス出来れば、
アーカイブが要らなくなった時にエクスプローラから削除出来るでしょ。
直感的に一番簡単。
それを意味無くフラットなDBにしてしまったら、
そのアプリいちいち起動しないとあれこれ出来ないでしょ。
バグってて削除出来ないとかもあり得るわけでね。そういうこと。
他アプリとインタフェースが揃っているのは重要なんだよ。
仮にIndexedDBも結果的にWindowsファイルの階層として見える形で
objectStoreを置いてくれていれば、同様のことが期待出来るわけだし。
373デフォルトの名無しさん
2016/08/22(月) 00:49:08.43ID:m1LOPf7I374デフォルトの名無しさん
2016/08/22(月) 00:56:03.75ID:m1LOPf7I IndexedDBの容量制限は実質1/10*HDDね。
https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
多分FileSystemAPIには上限がない(HDDの上限だと信じている)
繰り返すが、今回は元々アーカイブ用途だからそもそもDBアクセスの必要はない。
(横断的クエリとか検索とかは全く必要ない)
ただ、機能的には上位互換だから動作に問題なければそれでもいい。それだけ。
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.73ID:utwn7AiT >>372
は?消すのはエクスプローラーなの?
意味なくフラットなぁ。
十分に意味のあるフラットだと思うけど。
バグって削除できないから、だから最初の発想では毎回ストアを作って破棄します、なんて考え方だったの?あきれた。
upgradeはなんなのか。
dir /S/Bした結果だから余程見慣れてると思うけどね。
WindowsWindowsって気持ち悪いけど。
べつに、どのフォルダ以下、って、キーの先頭xxxxxx文字が指定のもの、なんだし、特に変わらんと思うんだけど、
お前の中で違うならそうなんだろう。
フラットに見えるものが、フラットではないと思うのがよくわからなすぎて悩むわ。
indexedDBには文字列しか保存できないと思ってんのかな。
フラットにはしない!って、じゃあどうやってWindowsってフォルダの構造保存してるんだろう。
って考えたら、
フラットなものに保存されてる事気づくと思うんだけど。
>>374
だから、実際のサイズ調べてこいよ。
クォータまでだよ。
それに、残念だけど、フォルダとして見られる物じゃないよ。
は?消すのはエクスプローラーなの?
意味なくフラットなぁ。
十分に意味のあるフラットだと思うけど。
バグって削除できないから、だから最初の発想では毎回ストアを作って破棄します、なんて考え方だったの?あきれた。
upgradeはなんなのか。
dir /S/Bした結果だから余程見慣れてると思うけどね。
WindowsWindowsって気持ち悪いけど。
べつに、どのフォルダ以下、って、キーの先頭xxxxxx文字が指定のもの、なんだし、特に変わらんと思うんだけど、
お前の中で違うならそうなんだろう。
フラットに見えるものが、フラットではないと思うのがよくわからなすぎて悩むわ。
indexedDBには文字列しか保存できないと思ってんのかな。
フラットにはしない!って、じゃあどうやってWindowsってフォルダの構造保存してるんだろう。
って考えたら、
フラットなものに保存されてる事気づくと思うんだけど。
>>374
だから、実際のサイズ調べてこいよ。
クォータまでだよ。
それに、残念だけど、フォルダとして見られる物じゃないよ。
376デフォルトの名無しさん
2016/08/22(月) 01:09:42.35ID:utwn7AiT まさかディレクトリ掘るのに再起使ってるから、平たくする方法がわからんのかな。
そんなに階層階層言うなら、階層構造渡したらそのまんま保存してくれるラッパ作るか、
バイナリの保存はちょっと考えなきゃならんがブラウザ版nedbでも使えばいいのに。
そんなに階層階層言うなら、階層構造渡したらそのまんま保存してくれるラッパ作るか、
バイナリの保存はちょっと考えなきゃならんがブラウザ版nedbでも使えばいいのに。
377デフォルトの名無しさん
2016/08/22(月) 01:16:58.93ID:bLWZhaRu >>370
保証はされていないが、一般的な環境ではまず問題ない。
というかIDBも実際は永続性は保証されていない。
Fxだと保証されているのは非標準のオプションを指定した時のみで、
他のブラウザでも基本的に一時的なものでディスクが埋まった時は利用頻度の少ないものから削除される。
トランザクションだって完璧でない。実際はパフォーマンス向上のためにディスクの書き込み完了を待たない。
保証はされていないが、一般的な環境ではまず問題ない。
というかIDBも実際は永続性は保証されていない。
Fxだと保証されているのは非標準のオプションを指定した時のみで、
他のブラウザでも基本的に一時的なものでディスクが埋まった時は利用頻度の少ないものから削除される。
トランザクションだって完璧でない。実際はパフォーマンス向上のためにディスクの書き込み完了を待たない。
378デフォルトの名無しさん
2016/08/22(月) 01:19:31.86ID:m1LOPf7I >>375
> それに、残念だけど、フォルダとして見られる物じゃないよ。
そうか、これは残念だ。
だったらやっぱりFileSystemAPIかな。
削除機能は内部にも付けるけど、
エクスプローラでも追加/移動/削除出来た方がいいのは自明だろ。
他アプリとの連携もし易くなるし。
まあお前が色々勘違いしているのは分かるけど、
既に言っていることばかりだから読み返してくれ。
> それに、残念だけど、フォルダとして見られる物じゃないよ。
そうか、これは残念だ。
だったらやっぱりFileSystemAPIかな。
削除機能は内部にも付けるけど、
エクスプローラでも追加/移動/削除出来た方がいいのは自明だろ。
他アプリとの連携もし易くなるし。
まあお前が色々勘違いしているのは分かるけど、
既に言っていることばかりだから読み返してくれ。
379デフォルトの名無しさん
2016/08/22(月) 01:25:17.05ID:utwn7AiT >>378
だから、FileSystemApiがだよ。
フォルダとしては見られないか、超掘り返さないと見れないよ。
更にいうと、エクスプローラでなんなりするべきものじゃない。
それはもう、Electronかなんかで作れ。な?
お前が勘違いしてるのは、多分indexedDBへの保存の方法だとの思うけど。
そのために必要な階層構造を保ったまま、indexdDBに十分入れれるからな。
だから、FileSystemApiがだよ。
フォルダとしては見られないか、超掘り返さないと見れないよ。
更にいうと、エクスプローラでなんなりするべきものじゃない。
それはもう、Electronかなんかで作れ。な?
お前が勘違いしてるのは、多分indexedDBへの保存の方法だとの思うけど。
そのために必要な階層構造を保ったまま、indexdDBに十分入れれるからな。
380デフォルトの名無しさん
2016/08/22(月) 01:25:40.46ID:utwn7AiT まぁ、インスペクタでは表にしかならんだろうけど。
レスを投稿する
ニュース
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★2 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 大竹まこと「高市早苗のせいで倒産する企業が出てくる。ババア、何がしたかったの?」 [592058334]
- 貧民アニオタ向けdアニメ、値上げへ [175344491]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- 【高市変質者】 お尻を出している 小太りTシャツの自転車乗りが発生 😱 [485983549]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
