15/08/11 23:15:07.89 CoeY+3yy.net
jQueryでエクセルシートから変換したJSONをgetすればいいじゃん
201:デフォルトの名無しさん
15/08/11 23:37:15.67 TiTJJGpg.net
>>196
まあ、なんというかアレだな。
例えて言うのなら、電気を使わずに
電気柵を作る方法を教えて下さい。みたいな質問だな。
なんで電気を使わない?と思ったら、その理由が電気は
感電して怖いだのあれこれ理由を言う。
だがね。それならば感電防止機能を入れればいいだけなんだよ。
あんたがやりたいのは、安全な電気柵の作り方。電気を使わない方法じゃない。
あんたがやりたいのは、情報を一部分づ
202:つ表示する方法。jQueryを使わない方法じゃない。 作り方がわからないのに、いきなり自分で「jQueryを使わずに作る」という作り方を決めるなよ その作り方が間違ってるんだよ。 つまりな、お前のその目的はjQueryのようなプラグインを使って実装できる。 おそらく使ったほうが簡単だろう。 あんたが調べるべきことが間違ってる。 どうすればいいかは、他の人に聞いてくれ。 夜遅いが俺はこれから出かけなくてはならないんだ。
203:デフォルトの名無しさん
15/08/11 23:56:52.00 Gq6LmRKv.net
目的と手段を見誤ってる。
204:デフォルトの名無しさん
15/08/11 23:59:26.31 sF80SOD4.net
>>196
CSVをJSONに変換してKEY名からテーブル構造のHTMLを作って
それぞれのKEY名をクリックしたら対応するValueからDOM作って当該位置に挿入するサンプルがほしい
っていうよりは下の方を見ると閲覧システムの設計でそもそも考えあぐねてるのかな
それなりに面倒だからエクセルで何とか表示させる方向で頑張ったほうがいいと思うよ
DB分割して軽くするなり、VBA使えるなら任意の箇所だけ抜き出して表示するなり
205:デフォルトの名無しさん
15/08/12 08:40:21.56 +yA7GmTQ.net
Accessを導入するのが正道だけどな
206:デフォルトの名無しさん
15/08/13 02:17:20.39 jVnFAW0L.net
会社にアクセス買ってもらえよ
業務なんだろ
アレ便利だぞ
207:デフォルトの名無しさん
15/08/13 07:09:40.49 n81SVna7.net
Accessなんか使ったら、IE以外のブラウザからアクセスできねーだろうが。
208:デフォルトの名無しさん
15/08/13 08:20:03.37 jNCMqTB5.net
>>196
WSH でも使ったらいいんしゃないですかね
209:デフォルトの名無しさん
15/08/13 09:33:11.04 6HOKQ4ar.net
ふつうにWSH。adodbでcsvはテーブル、SQLで操作。
210:デフォルトの名無しさん
15/08/14 00:44:06.16 vtoIaU0u.net
>>196は質問しっぱなしで放置状態だから回答するだけ無駄っぽいね
211:デフォルトの名無しさん
15/08/14 12:13:57.70 p5nDK28D.net
>>206
「非同期に情報を取得して表示するページをjQuery無しで作りたい」って言ってるのに「jQueryで作れ」とか回答になってないからな。
212:デフォルトの名無しさん
15/08/14 14:58:16.18 aFog9Tf1.net
別にjQueryを使わなくても手元に用意したJSONを拾ってテーブルデータを差し替えるだけだが
そもそもjQueryがインストールの必要なものだと思い込んでるのが誤り
213:デフォルトの名無しさん
15/08/14 21:19:04.81 vtoIaU0u.net
>>207
WSH は立派な回答になっていると思うけど
214:デフォルトの名無しさん
15/08/16 13:22:37.29 onk31F/8.net
>>207
よく読め、>>196は情報を見つけている。
> しかし非同期に情報を表示するページの作り方となるとjQueryプラグインかWWWサーバの機能(PHPなど)を利用するものばかりが出てくるので、
だからその情報通りにやればいいって話。
jQueryを使わないという条件を
つけるのが間違いだってこと。
間違った答えを出しているからせっかくの情報がムダになっている。
215:デフォルトの名無しさん
15/08/16 21:46:48.31 eBxInuMd.net
WWWサーバを用意できないのなら XHR をまともに使えない(fileスキームではHTTPリクエストを発行できない)。
当然、jQuery の .ajax() が動く保証もない。
ローカルファイルを読み込むなら new ActiveXObject("Excel.Application") 辺りが適切かと。
>>196にとっては VBA の方が良さそうだが、スレ違いだしな。
216:デフォルトの名無しさん
15/08/17 12:52:30.28 5VuANJB1.net
excelじゃないない。adodbだ。excelでどうにかなるならそもそもguiのexcelで開けていて質問が生じない。
217:デフォルトの名無しさん
15/08/17 13:07:39.93 dlIvdh6i.net
.xls から .mdb に変換したらコストが安くなりそうだな
それにしても、>>196はどこへ行った?
218:デフォルトの名無しさん
15/08/17 14:26:37.95 fPukF0yZ.net
JSONPじゃ駄目なん
219:デフォルトの名無しさん
15/08/31 22:53:08.01 oxGqwRen.net
jsで大規模なプログラム作ろうとすると
グローバル変数名や関数名が重複したりしがちですが良い対策有りますか?
220:デフォルトの名無しさん
15/08/31 22:57:18.89 fsojoPt+.net
>>215
モジュールパターン
221:デフォルトの名無しさん
15/08/31 23:06:33.82 oxGqwRen.net
>>216
ありがとうございました。
即時関数を使うんですね
222:デフォルトの名無しさん
15/08/31 23:16:35.05 fsojoPt+.net
>>217
基本的には即時関数で囲めば大丈夫ですね
名前空間がわりのユニークなオブジェクトを用いることでグローバル汚染を最小にすることもできます
(jQueryなど比較的大規模なライブラリは基本的にそうしていますよね)
223:デフォルトの名無しさん
15/09/01 16:58:09.10 VBJ1oHHM.net
objectの配列obj[1000]が有って、そのうちのobj[0]だけは他の1~999までには無いプロパティを追加しました。
こう言う統一性の無いデータ構造は処理速度を遅くするなどの可能性は有りますか?
224:デフォルトの名無しさん
15/09/01 19:43:04.87 zJENheg1.net
プロパティがあるかないか判断するんなら、その分だけ処理コストは嵩むだろうな。
225:デフォルトの名無しさん
15/09/01 23:45:59.57 p4WHFNrl.net
>>219
IEのChakraはオブジェクトの型を内部で作って最適化している、
的な記事を読んだ記憶がある
あなたのコードが当てはまるかどうかは知らない
226:デフォルトの名無しさん
15/09/12 19:15:38.62 hTbhIsEM.net
Javascriptの文法をひととおりやった初心者ですが
すでに存在しているJavaScriptを使ったWebページを解析(というかどういうしくみになってるか理解)するためには
どのようにすればいいのですか?
なにかツールがあるのですか?
まだ自分ではJavaScriptで何か書いた経験はゼロです。
WebページでF12を押せばなんかツールみたいなのが出てくることだけは知っています。
227:デフォルトの名無しさん
15/09/12 20:42:46.13 407oNTEh.net
そのなんかツールみたいなのが出てくるやつからWebページの要素を参照できるよ
WebページのHTMLやscript要素のテキスト、外部から読み込んでる.jsのソースを見るのが無難
もっとも、見てわかるようになるまではある程度知識が必要だから
まずはドットインストールでも見ながら簡単なページ作ってみればいいんじゃない
228:デフォルトの名無しさん
15/09/12 20:48:48.77 hTbhIsEM.net
>>223
ありがとうです。
まだ初心者なので言ってることがさっぱりわからないです。
まずドットインストールってなんでしょうか?
あと見てるのはかなり複雑なJavaScriptが埋め込んでるWebサイトなんですが
そこで使われてる関数の名前の一覧とか
埋め込まれているjsファイルの一覧、
そしてそのjsファイルをわかりやすく色分けした状態で見る方法みたいなのはありますでしょうか?
229:デフォルトの名無しさん
15/09/12 22:25:41.67 fWxjG3ht.net
とりあえず、わからない事があればgoogleさんに聞いてみないか?
230:デフォルトの名無しさん
15/09/12 23:54:20.20 Y0QkDcDu.net
>>224
ドットインストールは、プログラミングを教えるサイト
<script src="File1.js"></script>
このようにHTMLのタグに、JSのファイル名が書いてあるので、
「script」でHTMLファイル内を検索すればよい
function(){ }
JSでは、名前のある関数定義は、functionで始まるので、
「function」でJSファイル内を検索すればよい
普通、エディタでソースコードを表示すると、
構文ごとに表示色も指定できる
まあ、色々と質問する前に、
まず自分で検索して調べてください。
それでもわからない場合に、質問して
231:デフォルトの名無しさん
15/09/13 00:09:47.71 f7snMU36.net
ドットインストールを見てみると動画の学習シリーズのようですが
本当に無料会員になればすべての動画を見れるのですか?
232:デフォルトの名無しさん
15/09/13 00:40:53.11 gpw/7Hjs.net
まずは自分でやってみないか?
233:デフォルトの名無しさん
15/09/13 07:46:02.01 f7snMU36.net
知ってたら教えてあげないか?
234:デフォルトの名無しさん
15/09/13 07:59:57.88 PQgMJiU0.net
>>229
おまえが試してみんなに教えてくれよ
235:デフォルトの名無しさん
15/09/13 09:06:25.06 gpw/7Hjs.net
やってみれば簡単にわかるって教えてあげたのに、その答えを教えてくれってのは成長出来ない人の特徴だぞ…
236:デフォルトの名無しさん
15/09/13 11:19:33.25 JguKFMhj.net
ドットインストールなんて知らないが、調べたらすぐに分かったぞ
一から十まで教えて欲しいなら家庭教師を雇えばいい
URLリンク(dotinstall.com)
237:デフォルトの名無しさん
15/09/13 16:27:31.18 c7Lrzu+F.net
動画て
色々あるんだなあ
238:デフォルトの名無しさん
15/09/13 22:42:52.72 OcEYiSuM.net
ドットインストールは登竜門だと思ってた
書籍類は一切持ってないし
239:デフォルトの名無しさん
15/09/13 22:44:13.44 3BsRFwaL.net
漏れもドットインストールは知らないけど、
NHK高校講座、社会と情報に出ている、
「Rubyの女神」と呼ばれる、
女優の池澤あやかがよく使っているらしい
プログラミングをはじめよう、池澤あやか、2015、1,300円
240:デフォルトの名無しさん
15/09/13 22:55:22.05 gO4R7dxd.net
>>235
生き残るためのネタか
女優も大変だな。
241:デフォルトの名無しさん
15/09/23 03:12:47.16 PUZmohrk.net
websocket使ってcanvas共有あれこれをやってるんだが
画像をドラックドロップした位置も含めて送受信する方法がわからん
画像だけなら送受信できるんだけど
画像をバイナリに変換して、位置座標も含めて送信したいんだが
242:デフォルトの名無しさん
15/09/23 11:25:21.28 n9K2IqyH.net
ドットインストール
URLリンク(dotinstall.com)
この動画をファイルとして保存するにはどうすればいいですか?
243:デフォルトの名無しさん
15/09/23 11:32:14.11 HteDXMZ9.net
ドットインストールでプログラミングを勉強すれば、動画を保存するプログラムが書けるようになる
244:デフォルトの名無しさん
15/09/23 11:35:50.44 Tixv8Ju6.net
単に保存したいだけならスレチだから使ってるブラウザの本スレで聞いとけ
245:デフォルトの名無しさん
15/09/24 03:08:39.53 KIwTvfAf.net
>>237
その関数に、可変長引数はついていないの?
>>238
動画を右クリックしたら、コンテキストメニューが出て、
そこから動画を保存できないの?
246:デフォルトの名無しさん
15/09/24 09:24:36.56 goqgO7/k.net
>>241
そんなことができれば警察はいらないと思うのですが。
スーパーウルトラプレミア会員になっているかたですか?
247:デフォルトの名無しさん
15/09/24 12:48:11.58 mgme6LDc.net
>>242
警察のお世話になるような内容を公共の場で質問しているのですか?
248:デフォルトの名無しさん
15/09/25 23:34:04.53 4d8u8vME.net
linq.js使ってる人います?
249:デフォルトの名無しさん
15/09/26 06:34:31.75 v7fSGmLa.net
index.htmlで
<script type="text/javascript" src="src1.js"></script>
<script type="text/javascript" src="src2.js"></script>
...
<script type="text/javascript" src="src30.js"></script>
のようにJSファイルを読み込んで実行しているのですが、ie11なら問題ないのに、
ChromeやFireFoxでは、特定の関数が見つからないと出ます。でもその関数は、確かに存在していて、
読み込む順番もその関数が使われるまでに読み込まれるようにしています。
でも見つからないと出るんです。どうしたら良いでしょうか?
250:デフォルトの名無しさん
15/09/26 06:41:02.37 9LZTdQQ8.net
>>245
バグを直す。
エラーが発生したコードを見ればすぐに分かる
251:デフォルトの名無しさん
15/09/26 06:43:21.69 v7fSGmLa.net
>>245
解決しました。
252:デフォルトの名無しさん
15/09/26 11:18:26.68 gA+qxsAJ.net
逆ならわかるがIEだけ動いてChrome・Firefoxでエラーってのも珍しいな
253:デフォルトの名無しさん
15/09/26 11:22:12.17 V6ncMGSJ.net
>>243
なぜ動画一般の保存方法を聞いて警察の世話になるんですt?
254:デフォルトの名無しさん
15/09/26 13:23:41.70 CSeulu2i.net
>>249
あなたが「そんなことができれば警察はいらないと思う」と書いたからです。
255:デフォルトの名無しさん
15/09/26 23:40:26.38 V6ncMGSJ.net
>>250
こらまじめに答えたまえ
256:デフォルトの名無しさん
15/09/27 05:40:09.20 QHSPW0OV.net
FireFoxで
"use strict";
if (true)
{
function f() { } // !!! syntax error
f();
}
となりますが、"use strict";を取ると解決しますが、取らないで
エラーもしないようにする方法を教えてください
257:デフォルトの名無しさん
15/09/27 05:51:42.60 mQ+WRbZI.net
function f() { } //
if (true)
{
f();
}
if (true)
{
let f = function () { }
f();
}
if (true)
{
var f = function () { } //これはfのスコープがifの外にあるから注意
f();
}
258:デフォルトの名無しさん
15/09/27 05:52:05.78 kJP1aIir.net
var f = function() {};
259:デフォルトの名無しさん
15/09/27 06:03:20.22 QHSPW0OV.net
素早いレスありがとうございました。
三番目の var f = の方式で上手く行きました。
やはりコードを書き換えないとダメなんですね。行数が2万行くらいあるので修正が大変そうです。
use strictをとってしまうのが手っ取り早いかな。
ちなみに、二番目の方式だと、
SyntaxError: let is a reserved identifier
と出ました。
260:デフォルトの名無しさん
15/09/27 06:10:22.80 mQ+WRbZI.net
あぁ、letは古いブラウザでは対応してないよ。
3番目で動くけど、正確な意味は、これと一緒だからね。
var f;
if (true)
{
f = function () { }
f();
}
261:デフォルトの名無しさん
15/09/27 06:15:27.52 QHSPW0OV.net
確かに let は
FF 40.0.3
ならエラーで、最新版
FF 41.0
なら行けました。
と言う事は、もっとも安全かつ変更作業が少なくて済む方法は
var f = のやり方ですかね。
262:デフォルトの名無しさん
15/09/27 12:13:53.38 TVls4cfy.net
>>251
まじめに答えてますけど。
あなたが「そんなことができれば警察はいらないと思う」と書いたんですよ?
263:デフォルトの名無しさん
15/09/28 15:38:36.05 e7uUBDed.net
if(0)
よりも
if(false)
と書くほうがif文の評価が速いですか?
264:デフォルトの名無しさん
15/09/28 15:48:54.97 Aor/5DQQ.net
>>259
0.000000000000000000000000001秒ぐらいちがうよ!
265:デフォルトの名無しさん
15/09/29 11:21:02.03 UO7SUcno.net
>>259
後者がより速い
266:デフォルトの名無しさん
15/09/29 11:34:34.35 yqK3ttcR.net
if(false)
なんて書くぐらいなら
if文中を全部コメントアウトしたほうが早いだろ。
267:デフォルトの名無しさん
15/09/29 14:47:13.62 0lZfHTgJ.net
>>261
計測結果を教えてくれ
268:デフォルトの名無しさん
15/09/30 00:33:48.61 YmEebgyH.net
>>263
環境依存が発生するものを他人の為に計測してやる義理はない
必要なら自分で計測して皆に教えてくれ
269:デフォルトの名無しさん
15/09/30 01:24:54.37 rQ1sG86l.net
>>264
環境依存していて全然OKだよ!
270:デフォルトの名無しさん
15/09/30 09:01:06.40 YmEebgyH.net
>>265
はっきりいわんとわからんようだが、試せばわかることを人に聞くな
271:デフォルトの名無しさん
15/09/30 09:18:11.86 rQ1sG86l.net
>>266
わかったうえで聞いてる。
272:デフォルトの名無しさん
15/09/30 09:41:33.73 YmEebgyH.net
>>367
悪質だな
273:デフォルトの名無しさん
15/09/30 10:53:47.11 rQ1sG86l.net
>>367に期待
274:デフォルトの名無しさん
15/09/30 14:54:32.99 YmEebgyH.net
言葉遊びは余所でやれ
275:デフォルトの名無しさん
15/10/02 08:41:43.61 bVr75frV.net
顔真っ赤
276:デフォルトの名無しさん
15/10/07 21:19:07.79 dwIDGxfg.net
2Dのライブラリでパワポで作るっぽい図を座標管理しなくてもパパと作れるライブラリ知らんか?
277:デフォルトの名無しさん
15/10/07 22:49:38.82 0FXYPI/I.net
Webブラウザで英語のサイトを表示したときに、
この動画のように単語をクリックすると和訳が出てくるような UI を作りたいんだけど、
JavaScript のどんなライブラリを使えば実現できますか?
URLリンク(youtu.be)
自分はRubyとCはかなり書けるほうと思うけど、JavaScriptはほとんど触ったことがありません。
メジャーなライブラリを教えてもらえると助かります。
278:デフォルトの名無しさん
15/10/07 23:31:54.39 0iwSPjqO.net
>>272
jQuery UI にあるかな?
「jQuery スライドショー」で検索して
>>273
単語をクリックすると和訳が出てくるような、
複雑なものは知らない
cssの:hover ならツールチップみたいになるけど、
スマホのタッチスクリーンには対応していない
HTMLのaタグでも出来る
<a href="#ダミー" title="サンプルです">ダミー</a>
「ダミー」の上でマウスが止まると、
「サンプルです」と表示される
「ツールチップ CSS HTML JavaScript jQuery」などで検索して
>>272-273
プログラム�
279:ツでは、HTML,CSS,JSで開発している人は少ないのでは? web制作管理板で、質問するほうが良いかも
280:デフォルトの名無しさん
15/10/08 19:50:37.41 9yien46K.net
index.htmlを表示している状態で、どこかの任意のWEBサイト
(例:www.yahoo.co.jp)を非表示の状態で読み込んで、そのサイトの
文章などの文字列を取得してindex.htmlの中で利用したいのですが、
どういう手順になるのか見当も付きません。
おおまかな流れを教えてください。
281:デフォルトの名無しさん
15/10/08 20:22:54.80 84jDMCPE.net
PHP等の手を借りないと
Javascriptだけでは不可能です
282:デフォルトの名無しさん
15/10/08 20:24:40.67 9yien46K.net
>>276
ありがとうございます。PHPで聞いてみます。
283:デフォルトの名無しさん
15/10/08 21:06:56.30 Wj3paahs.net
>>276
1.任意のサイトの情報をXMLHttpRequestで取得する
2.取得した情報を好きに使って利用する
おおまかだとこうなる
ただしブラウザの場合。サイトのドメインが異なる場合はセキュリティの都合で
サイト側がサーバーの設定で読み取られることを許可していないとできない
またブラウザ拡張機能からならドメインに関係なく取得できる方法もある
詳しくはCORSでググれ
284:デフォルトの名無しさん
15/10/08 21:08:20.55 Wj3paahs.net
間に合わなかった上に安価ミスった/(^o^)\
285:デフォルトの名無しさん
15/10/09 13:07:31.54 3wiHOwoq.net
function Hoge(){}
Hoge.prototype.__defineGetter__('huga', function(){});
var hoge = new Hoge();
console.log(hoge); //Hoge {huga: (...)}
console.log(hoge.hasOwnProperty("huga")); //false
prototypeのgetter関数をさも継承先が自身のプロパティとして持っているように見えます
しかしhasOwnPropertyではfalseが返ってきます
これはコンソールの仕様で自身が持っているかのように見えているだけで
実際は持っていないと考えていいんでしょうか
286:デフォルトの名無しさん
15/10/09 13:25:50.31 IGSPExTP.net
>>280
hasOwnPropertyはprototypeチェーンを遡りません
287:デフォルトの名無しさん
15/10/09 19:06:56.61 kOAM1c8S.net
>>280
あなたが期待するのは in 演算子
ついでに、__defineGetter__ は Object.defineProperty にすると良い
288:デフォルトの名無しさん
15/10/10 12:13:46.19 o2txIQD1.net
javascriptでTuple8ってどうやって型作ればいいの?
289:デフォルトの名無しさん
15/10/10 13:08:02.32 aPQSjKGF.net
>>281-282
280です、レスありがとうございます
しかしhasOwnPropertyではなくin演算子だとHoge.prototypeまで遡ってしまうので
hoge自身がhugaを持っていないことの確認にならないと思うのですが…
Object.definePropertyはすっかり頭から抜けていました
次からはこっちを使うようにしようと思います
290:デフォルトの名無しさん
15/10/10 17:38:24.23 vT1N9X7j.net
>>280
俺は詳しいわけではないが、多分それが仕様。コンソールの動作は正しい。
プロパティとメソッドではなくて、プロパティにデータまたはアクセサ。
URLリンク(developer.mozilla.org)
291:デフォルトの名無しさん
15/10/10 19:03:40.37 j7IjrgH2.net
>>284
[[Prototype]] 上のプロパティを見ているのだから hasOwnProperty が false なのは当然だと思うのだけど
292:デフォルトの名無しさん
15/10/13 16:15:43.50 9phY+r4Z.net
はい現行スレ
+ JavaScript の質問用スレッド vol.126 +
スレリンク(hp板)l50
293:610
15/11/05 01:42:08.94 O9StB1rc.net
ここな
294:デフォルトの名無しさん
15/11/05 12:03:44.08 7Y5j2Ab8.net
ここ質問スレだからやるならこっちな
JavaScript 4(c)2ch.net
スレリンク(tech板)
295:デフォルトの名無しさん
15/11/13 23:18:35.97 ZOIef2ev.net
jsonを項目の並び順変えずに使用する手軽な方法はないものだろうか
296:デフォルトの名無しさん
15/11/14 00:24:10.30 A/cTWdIV.net
JSON文字列を~ってことなら自力で配列にパースするしかないんじゃない
297:デフォルトの名無しさん
15/11/14 08:25:30.10 ooiJA6sk.net
>>290
JSONは配列書けるんだから最初から配列にするのが最良
JSONフォーマットを制御出来ないなら順番に規則性があるとして Object.keys を sort する
298:デフォルトの名無しさん
15/11/15 18:55:29.22 DOi6KYg5.net
javascriptをきわめようと思うのですがおすすめの本はありますか?
JavaとVBAはかなりできるのでプログラミングの基本については省いてるけど
javascriptの文法についてはゼロから学べるものがいいです。
299:デフォルトの名無しさん
15/11/15 21:50:36.60 rTjjRyT5.net
オライリーの犀の絵が表紙の
『JavaScript 第6版』でいいんじゃないかな
書名に「リファレンス」ってついてないほう
まさか1冊読んだだけできわめようとか思ってないよね
300:デフォルトの名無しさん
15/11/15 22:25:40.42 p50jhWVb.net
>>293
『ECMA-262 Edition 5.1を読む』
301:デフォルトの名無しさん
15/11/16 00:57:51.27 EQy/E/K4.net
サイ本よりフクロウ本のほうが遥かに役立つ。
302:デフォルトの名無しさん
15/11/16 02:03:26.64 JsYgt5wO.net
ecma262.info:8000/nExt3
これって答えなんなの?
演算式使うのかな
303:スッキリ厨
15/11/16 07:52:35.27 ZwIWeu8p.net
>>293
はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013
開眼!JavaScript、2013、オライリー・ジャパン
山田祥寛(よしひろ)、翔泳社
10日でおぼえる jQuery 入門教室 第2版
この3冊を、この順番で読む。
他には漏れは読んだことがないけど、
オライリーの分厚い本もある
304:デフォルトの名無しさん
15/11/16 08:07:12.67 U1t0nJK+.net
この二つはいらん
はじめてのJavaScript、秀和システム
10日でおぼえる jQuery 入門教室 第2版
305:デフォルトの名無しさん
15/11/16 08:41:57.82 dZs54Tgi.net
掌田津耶乃と山田祥寛はステマで有名な人なんで
やめたほうがいい。
306:デフォルトの名無しさん
15/11/16 08:54:28.39 z+/eAFMG.net
>>298
り と ご い す
307:デフォルトの名無しさん
15/11/16 11:20:49.22 +cn9jndK.net
>>294
Java が出来るなら DOM API は習得しているとして ECMA, その他JavaScript API 関連を覚えればいいな
『ECMA-262 Edition 5.1を読む』『JavaScript 第6版』を購入して残りはWebで情報を得れば十分かと
URLリンク(jtdan.com)
URLリンク(www.w3.org)
URLリンク(www.ecma-international.org)
308:デフォルトの名無しさん
15/11/16 11:30:33.67 7yHHnP/U.net
職種別、資格別、スキル別の平均最低月給リスト(ほぼ毎日更新)
URLリンク(jobinjapan.jp)
全掲載求人109,160件の平均最低月給195,800円
JavaScriptの求人 の平均最低月給215,900円
URLリンク(jobinjapan.jp)
309:uy ◆Qawu9.2l1E
15/11/20 13:01:59.74 QlSu2hgW.net
Dart「js吐くンゴww」
Type・CoffeeScript「ワイも吐くンゴwwワイらの時代ンゴww」
Opal「ヨロシクニキーwwwwwwwwwwwwwwwwwwwwwwwww」
Ruby「おっOpalゥー!!!!!!wwwwwwwwwwwwwwwwwwwwwwwww」
Dart・Type・CoffeeScript「」
JavaScript「(=・ω・=)キャーRubyさんステキ!!」
310:デフォルトの名無しさん
15/11/22 21:30:36.54 j30Wwuuw.net
1/3=0.33333
1/2=0.5
1/4=0.25
実数値を文字列化する時に、割り切れない時は四捨五入で小数点以下5桁で、割り切れるならその全桁数をそのまま文字列化したいんですが、一発で出来る関数や手法は有りますか?
311:デフォルトの名無しさん
15/11/22 21:49:25.43 YuHI3rxM.net
>>305
割り切れるの意味がおかしい
本来の割り切れるってのは商が整数で剰余が出ないってことだと思うが
君が求めているのは割り算結果が循環小数とかにならないって意味でしょ?
浮動小数点数演算について勉強した方がいい
312:デフォルトの名無しさん
15/11/22 21:53:08.09 j30Wwuuw.net
>>君が求めているのは割り算結果が循環小数とかにならないって意味でしょ?
そうそう。
その前提でお願いします。
313:デフォルトの名無しさん
15/11/22 21:55:59.14 YuHI3rxM.net
>>307
書いたでしょ
>浮動小数点数演算について勉強した方がいい
314:デフォルトの名無しさん
15/11/22 22:01:10.79 j30Wwuuw.net
>>308
そんな細かい事に拘る必要はありません。
回答お願いします。
315:デフォルトの名無しさん
15/11/22 22:31:27.08 r93th6vC.net
割り切れてるかどうかの判定をしたいって事だろ
結果を文字列化して小数点以下の数でも調べれば良いんじゃね
316:デフォルトの名無しさん
15/11/22 22:49:53.25 OxxJcFnU.net
>>305
かなり適当に書いた
無駄多いから参考になるか微妙
(function (arr){
var r = [];
arr.forEach(
function (n,i){
r[i] = (n.toFixed(5)).split('.');
r[i][1] = r[i][1].split('');
for(var j = 5;j;){
j--;
if(r[i][1][j] == 0){
r[i][1].pop();
continue;
}
break;
}
r[i][1] = r[i][1].join('');
r[i] = r[i].join('.');
}
);
return r;
}([1/3,1/2,1/4]));
取り合えず全部5桁に揃えて、末尾から順番に見ていって、0でなくなるまで1文字ずつpop()すればいいんじゃない?
317:デフォルトの名無しさん
15/11/22 23:25:07.86 gEGmaphC.net
>>305
0.5 * 2 === 1
318:デフォルトの名無しさん
15/11/23 05:50:54.71 7FCURHqQ.net
>>311
たとえば 1/1000000 みたいな循環しないけど5桁を超えるケースは?
まあ質問者がこれをどうするかによるけど
319:デフォルトの名無しさん
15/11/23 07:21:15.38 YU+u1mNl.net
まだやってたのか
そもそも割りきれるの意味すらわかってなかった質問者に与える回答は
浮動小数点数演算について勉強しなさい
質問自体が間違ってるのだからこれしかないぞ
>>311 は質問の前提から外れまくってるし実に滑稽
320:デフォルトの名無しさん
15/11/23 07:45:07.04 ti6fp5wi.net
>>313
それは割り切れる場合だろ。
321:デフォルトの名無しさん
15/11/23 08:20:22.22 YU+u1mNl.net
>>315
だから、それは割り切れるとは言わない
そもそもどうやって判定するつもりだ?
言っておくが数学上の割り算じゃなくて実際にやってるのは2進数による浮動小数点数演算だぞ
322:デフォルトの名無しさん
15/11/23 09:19:21.13 ti6fp5wi.net
>>316
君、議論に加わる必要ないから。
323:デフォルトの名無しさん
15/11/23 09:30:17.12 7FCURHqQ.net
>>315
そう、そのケースでも>>311みたいな長さを見る方法では切れてしまうけど
それは質問者の意図としてはどうなん? てこと
324:デフォルトの名無しさん
15/11/23 09:42:58.57 YU+u1mNl.net
元々の質問者の意図は明確だろう
>一発で出来る関数や手法は有りますか?
ここまでにこれに沿った回答が1っでもあっただろうか?
前提自体が間違ってるのに議論とかちゃんちゃらおかしい
理解を改めてもらったうえで本当にしたいことを確認しないとな
325:デフォルトの名無しさん
15/11/23 09:45:48.01 XxRvZT2I.net
お前こそ言いたいことを明確に言ったほうがいいんじゃないか?
326:311
15/11/23 11:04:54.37 zzIVowg+.net
>>318
確かにそうだ
ちらっと見て何も考えずに書いたから問題ありまくりっぽいね
割りきれる場合はそのまま表示のパターンで誰かコード書いてよ
コード出して、問題点指摘する方が話し合いをだらだら続けるよりは建設的だし
327:312
15/11/23 12:18:24.49 3c46ibgj.net
私としてはもう答えを出したつもりなのだが、誰も気が付かないとは。
逆算して値を照合するだけで解決するだろう。
丸め誤差がどうしても気になるなら整数演算に近づくように 10 の乗数を掛け合わせる。
328:デフォルトの名無しさん
15/11/23 14:30:08.19 fwuapcKX.net
>>322
間違いに気がついてないアホはお前
3*(1/3) === 1
329:デフォルトの名無しさん
15/11/23 16:14:40.37 ti6fp5wi.net
では、桁数n (n<=30)を指定するとして、
割り切れない場合は小数点以下n+1桁目を四捨五入してn桁までを求める。
割り切れる場合は、その全部を文字列化する。ただしnを超える部分が有る場合は、四捨五入の方法を用いる。
これでいいかな?
330:312
15/11/23 17:22:09.03 HbVCI0Y/.net
>>323
誤差が気になるなら整数演算しろといっているのだが、目に入らないのか?
331:312
15/11/23 17:26:14.67 HbVCI0Y/.net
整数演算しても同じか。
bignumを使った整数演算で解決できそうだが。
332:デフォルトの名無しさん
15/11/23 19:22:01.08 fwuapcKX.net
>>325
誤差の話なんてしてないんだが・・やっぱりアホなの?
333:デフォルトの名無しさん
15/11/23 19:32:05.43 ti6fp5wi.net
議論はいいから、模範解答が知りたい。誰も出来ないのかよ
334:312
15/11/23 22:20:06.87 xqKq/xpI.net
>>327
0.3333333333333333 * 3 === 1
のどこが誤差ではないのだ?
335:312
15/11/23 22:26:53.13 xqKq/xpI.net
>>328
0.3333333333333333 * 3 の結果が 0.9999999999999999 となるbignum系ライブラリを使えばいいかと。
336:デフォルトの名無しさん
15/11/24 04:57:49.58 TPIY6jGN.net
0.3333333333333333にピッタリになる数字はどうするんだよ
それも循環小数になると判定されるぞ
337:デフォルトの名無しさん
15/11/24 07:05:52.28 VKmO+9+0.net
誰も出来る奴がいない。
338:デフォルトの名無しさん
15/11/24 08:25:41.37 DINFs6Pn.net
まだやってんのかよ
循環小数の証明すらやったことない中卒しかおらんのか
339:デフォルトの名無しさん
15/11/24 10:29:45.10 zV3eHeKo.net
>>331
アホか
固定値なら逆算式も変わるだろ
340:デフォルトの名無しさん
15/11/24 13:00:23.14 TPIY6jGN.net
何が言いたい?
341:デフォルトの名無しさん
15/11/24 13:13:32.93 TPIY6jGN.net
ちょっと整理しよう
console.log(1/3);
console.log(3333333333333333/10000000000000000)
と循環小数になるのとそうでないのとは
(循環小数の方は切り捨てられて)
同じ値になるけど
この値に割る数を掛けて割られる数になるかどうかで
循環小数かどうかを判断できるって主張だよな?
(循環小数ではなく)固定値ならというが、それを判断する方法を言ってるのに
それに応じて計算式を変えるっていうのはどういうこと?
342:デフォルトの名無しさん
15/11/24 13:54:45.20 h+VQBoPG.net
>>336
固定値なら「0.9999999999999999 / 3 === 0.3333333333333333」だろう?
「0.3333333333333333 * 3 === 0.9999999999999999」なのだから当然一致する。
数学的には「1/3 !== 0.3333333333333333(IEEE754的には真)」
「0.3333333333333333 * 3 !== 1」となる。
つまり、IEEE754に演算を任せなければ良い。
343:337
15/11/24 14:09:37.19 h+VQBoPG.net
付け加えておくが、計算式は変わっていない。
除算を逆算して乗算にしているだけ。
344:デフォルトの名無しさん
15/11/24 14:26:11.49 TPIY6jGN.net
>>337
なるほど、なんとなく言いたいことはわかった気がする
だがそれは、その仮想の数値計算ライブラリ(もしくはそれを使った計算)が
循環小数もしくは固定値をどこで切り捨てるかに関わってくるんじゃないか?
つまり、固定値でも切り捨てられたら元に戻らないよね
結局は(wikipediaに載っているような)割る数と割られる数で循環小数の判定をしなきゃだめってことでは
345:デフォルトの名無しさん
15/11/24 14:36:19.44 VKmO+9+0.net
そんな議論はどうでもいいから解答を書ける奴は一人も以内のかよ!
346:337
15/11/24 15:27:06.06 6cLiz0ar.net
>>339
>>305はIEEE754の範囲で割り切れない数と判断している為、1/3 が 0.3333333333333333 と評価される前提でいいと判断した。
つまり、切捨てはIEEE754の範囲となる。
後はその数値を元に演算すれば良い。
そもそも、「循環小数の定義を認める前提」なら割り切れない事を判定する必要はないだろう。
数学的には「0.333...(循環小数) * 3 === 1」となる。
従って、「0.3333333333333333 * 3 === 1」は循環小数としての演算結果ではないものの(結果的には)期待通りの結果であるはずだ。
これを期待しないのなら切捨てられる前提(循環小数ではないもの)として考えるべきだろう。
循環小数を正しく解釈するぐらいなら「分数」を内部処理的に認識する方がまだスマートといえる。
347:デフォルトの名無しさん
15/11/24 16:50:59.60 o2Douu6Y.net
IEEE754 doubleで1/3は0.3333333333333333(0.3{15}3)とはならないよ
正確には約0.3{15}29以上0.3{15}34未満の有効値となる
この値を文字列とした時に0.3{15}3となるのはあくまで表記の問題で、実際その値であるという意味ではない
これを3倍すると数学的には約0.9{15}86以上1.0{15}28未満の有効値となる
ただ単にdoubleで1.0と表した時には約0.9{15}94以上1.0{15}11未満の有効値なのでこの範囲を外れており確実に1.0とは言えない
これが中央値1.0{15}07をとって1.0と同等に正規化されるか、より上や下の値になるかはモードによって違う
348:デフォルトの名無しさん
15/11/24 16:54:36.33 VKmO+9+0.net
浮動小数点の説明はもう十分なので解答ヨロ
349:デフォルトの名無しさん
15/11/24 17:15:59.24 o2Douu6Y.net
解答はどういう塩梅が良いかによるだろう
厳密に言うならdoubleは一点を表せられるものではないから
オレオレ数値型を作って超面倒な運用をしないといけない
まあ将来的にはES2017以降のvalue-objectsをベースとして
思うままの数値型を作れるから運用面での面倒さは無くなるだろうよ
350:デフォルトの名無しさん
15/11/24 17:17:11.20 qVxYz0C/.net
>>343
入力が浮動小数の場合は、無理だよ、というのが解答
351:デフォルトの名無しさん
15/11/24 21:02:19.29 VKmO+9+0.net
>>345
浮動小数点演算で割り切れるかどうか判定出来なくても、プログラムは書けるだろ。
それが出力する結果が数学的な意味での正しい解答になっていればいいだけだから。
ここではできる人がいないようなのでお題スレに行くわ。
352:デフォルトの名無しさん
15/11/24 22:06:21.79 M6yTWdhi.net
そのお題に不備があるからこうやってその不備を突いて遊んでるんだよなあ
353:デフォルトの名無しさん
15/11/24 22:15:08.39 cJUbqgX1.net
>>346
doubleである限りデフォルトの表記かそれに毛が生えた程度のものが限界
例えば3333333333333333e-16と1/3を区別できないんだし
354:デフォルトの名無しさん
15/11/25 00:29:44.47 O+sc6fcj.net
浮動小数点で表現できるかどうかという問題と、プログラムで正解が出せるかどうかという問題を混同しているだけだろ。
355:デフォルトの名無しさん
15/11/25 06:40:14.89 xU7WfTzq.net
ちょっと違うな
プログラムで取り敢えず組めるが
それは数学的に正しくできないから正解にはならないということだな
356:デフォルトの名無しさん
15/11/26 08:54:35.58 gxenBIDW.net
>>350
君、プログラミングの能力低そうだな
357:デフォルトの名無しさん
15/11/26 09:30:35.50 PuA+0wtS.net
車輪の再発明はしないのが優秀なプログラマ
358:デフォルトの名無しさん
15/11/27 05:10:46.27 YYaQ4CLl.net
【環境】iOS?
【何をしたのか】Date getTimeによる時刻表期にズレが出てくる
【期待する結果】20msくらいの誤差で複数端末間(PC/スマホ問わず)の時刻を同期する
【サンプルコード】
時刻同期はNTPサーバを使って差分を考慮して行ってます
function getTime(){
$.ajax({
type: 'GET',
url: 'URLリンク(ntp-a1.nict.go.jp)'+Date.now()/1000,
dataType: 'json',
success: function(json){
var nowDate = Date.now();
var latency = (nowDate-json.it*1000)/2;
var fixedTime = json.st*1000 + latency;
var localTIme = Date.now();
offset = fixedTime - localTIme;
}
});
}
やりたいことは複数端末間での精度の高い時刻同期です。
現状、出来ているといえば出来ているのですが、5分くらい放置していると
少しずつズレが出てきて目測ですが400msくらいのズレが発生しているように見えます
その場合、ページを更新するとまたピッタリになるのですが、
ページを更新せずにずっと時刻を同期し続けることは可能でしょうか?
359:デフォルトの名無しさん
15/11/27 05:13:39.89 YYaQ4CLl.net
ちなみに、各端末での時刻表期は
var d = new Date(Date.now()+offset);
var h = ZeroFill(d.getHours(),2);
var m = ZeroFill(d.getMinutes(),2);
var s = ZeroFill(d.getSeconds(),2);
var u = ZeroFill(d.getTime()%1000,3);
各端末の内蔵時計にサーバーとの時刻とのズレを足し引きして
表示させています。Date.now()はnew Date().getTime()と同じです。
内蔵時計がずれていかなければ一回offsetを算出すれば
基本はずれることがないと思うのですが・・・
360:デフォルトの名無しさん
15/11/27 08:27:02.13 JennF9kz.net
そもそも時間の流れとは絶対的なものではないからね。
対象が1.5万km/sくらいで移動していれば相対性理論によりそのくらいの差が出る。
361:デフォルトの名無しさん
15/11/27 12:17:01.45 X+JLR2lJ.net
無難なのは一定時間毎にサンプルコードのoffsetを更新することかな
もちろんXHRの所要時間も加味して
でも5分で400msもズレる原因を探した方が楽なんじゃねえかな
362:デフォルトの名無しさん
15/11/27 12:41:12.67 9ORRm5xJ.net
Date.now()でのズレはios環境がないので検証できないが
定期的にoffsetを取得するしか無いのではないかな
あるいはaudioContext.currentTimeを使うのはどうか
363:デフォルトの名無しさん
15/11/27 13:34:33.24 ADRINJe1.net
むしろ取得の方がおかしいと考えるべき
片方が遅れて見えるのはsetTimerやらsetIntervalが正確だと思い込んでる所為じゃね
364:デフォルトの名無しさん
15/11/27 14:37:30.45 7QRTKik/.net
>>353
参考迄に教えてけろ。何で
そんなに精度良く同期させる必要が有るん?
365:デフォルトの名無しさん
15/11/27 15:08:06.52 YYaQ4CLl.net
>>356
いまoffsetを20秒ごとに更新するようにしているのですが
どうも一回スリープに入るとズレが生じるような気がしてきています
もうちょっと原因を検証してみます
>>357
サーバーの時刻を一度だして、それ以降はaudioContext.currentTimeを
取得しながら時刻を表示していくということですね
ちょっと一回トライしています!
>>358
setIntervalは20msで設定しています
20msなので人間が知覚できるほどのズレはないような気がしますが
現状は余裕で知覚できるほどのズレが発生しています
>>359
ネトゲで友達と一緒にやるために
サーバーに対して同時刻にアクセスしたいんです
366:デフォルトの名無しさん
15/11/27 16:00:53.47 vrZOFMnm.net
> サーバーに対して同時刻にアクセスしたいんです
同時刻にアクセスしても、一緒にやれるわけじゃないだろう?
367:デフォルトの名無しさん
15/11/27 16:32:29.72 iIljupK4.net
>>361
運ですね
ただグループはアクセス順で決まるので
完全に同時刻にアクセスしたら
一緒にやれる確率がかなり高いんです
もちろん人的な誤差やネットワーク的な誤差もあるのは分かりますが
減らせるところの誤差はなるべく減らしたいんです
368:デフォルトの名無しさん
15/11/27 17:02:05.49 tJ3YDWoo.net
setIntervalは信用するな
369:デフォルトの名無しさん
15/11/27 18:02:39.08 wJd8+GUt.net
setIntervalは信用度が低い。
370:デフォルトの名無しさん
15/11/27 18:10:23.71 ADRINJe1.net
20msなら信用度が低くても問題無いんじゃね
371:デフォルトの名無しさん
15/11/27 18:25:10.18 G3gCBxYm.net
>>362
> ただグループはアクセス順で決まるので
> 完全に同時刻にアクセスしたら
> 一緒にやれる確率がかなり高いんです
そういうシステムなのか?
普通に考えたらサーバーが複数ある=負荷を下げるためなので、
短時間に集中したアクセスが同じサーバーに振り分けられたら負荷下がらないし、
先着順に同じサーバーに振り分けられるとするならば、
最後のサーバーはスカスカになるはずだし、設計的にかなりおかしいんだが?
> もちろん人的な誤差やネットワーク的な誤差もあるのは分かりますが
> 減らせるところの誤差はなるべく減らしたいんです
誤差の話じゃないんだ。完全に同時に来たとしても振り分けられるように作ってるはずだということ。
同時刻であれば一緒にやれる確率がかなり高いっていうのは都市伝説だろう?
公式にそういう機能があると明確に言っているならば別だが、やるだけ無駄だと思うがね。
372:デフォルトの名無しさん
15/11/27 18:42:23.12 ADRINJe1.net
>>366
お前が言ってるのは皆が同一のゲームをするMMOの話じゃないのか?
MO系のサーバーなら同一サーバーで処理した方が良いし
それを単純に均一に振り分けてたらいつまで経っても人数が揃わないだろ
373:デフォルトの名無しさん
15/11/27 20:00:01.00 tds5BOFG.net
まあルーム方式だわな
それより、目的がそれならTS3とかを使ったほうがよっぽど同期しやすいと思うんだがな
374:デフォルトの名無しさん
15/11/28 00:07:51.49 zYBVt+cc.net
audioContext.currentTimeはPCでは実装できたのですが
iPhoneだとどうもaudioContext.currentTimeは動作しないらしく
値が0に固定されるようなのでトライしたものの残念な結果になりました
>>364,365
seIntervalはそこまで信用していないのですが
20msだろうと、それが50msになろうと、
呼び出した中でDate.now()の返り値が正常であれば
それにoffsetを足して表示するだけの話なので
setIntervalが不安定でもそこまで問題ないように思えるのですが・・・
まぁさすがにsetIntervalが200msくらい遅れるとかなら困りますが・・・
>>366
システムの仕様は明かされていませんが
ほぼ合流不可能な中でこれまで同時押しでかなり高確率で合流できています
時刻合わせしなかったらまず合流できることはありません
まだ時計の精度は悪かった時よりも
NTPで時刻の精度を上げて以降、合流できる確率が上がったのも事実です(体感ですが)
>>368
TS3って調べてみたのですがボイチャですか?
最終的に不特定多数の人に公開したいツールなので
ボイチャはちょっときついかもです
ということで・・・、audioのcurrentTimeがダメだったので
もう少し別のやり方を検討してみます
375:デフォルトの名無しさん
15/11/28 01:54:37.04 GEMUQykl.net
iosでそこまで遅れるという話は挙がっていない
君の設計が悪いことは間違いないので勉強し直すように
以上
376:デフォルトの名無しさん
15/11/28 03:46:21.62 hixXfPcg.net
具体的にコード上げられてるのに指摘も出来ないのか
悪いのは設計だろうかそれとも頭だろうか
377:デフォルトの名無しさん
15/11/28 04:19:17.89 zYBVt+cc.net
performance.now()というaudioのcurrentTimeと似たような関数があったので、それで実装してみました。
iOSでも動作するようです。
時刻をNTPで合わせた瞬間からの経過時間を計測し
その経過時間を加算して現在時刻を表示するというアルゴリズムで実装しました
Date.nowは一切使ってません。
performance.now()は結構精度がいいようで
割と時刻が同期されるようになりました
ただ、iPhoneがスリープ状態に入ったときにカウントが止まってしまうので
それが問題になりました。
それは、スリープを検知するような関数を実装して
スリープを検知したらページをリフレッシュするようにして解決しました。
これで今のところ何時間かたってもほとんどズレがないようになったような気がします。
もう少し運用してみないと分かりませんが・・・
とりいそぎ、同じ状況で困った人がいたときのためのメモ書きです。
ちなみに色々調べてたらDate.now()というかnew Date()もそうなんですが
どうも動作が遅いようです。
URLリンク(konbu13.hatenablog.com)
のページによると140ms~230msかかっているようで
確かにその時間は僕のやりたいことから考えるとクリティカルな遅さです
iOSとかは特にその遅さの影響を受け安かったんですかね・・・
その他リソースの使用状況にもよるかもしれませんが
とりあえず割といい精度になってきたので書き込みはこれで最後にします
色々情報くれた方ありがとうございました、助かりました。
378:デフォルトの名無しさん
15/11/28 04:29:06.31 hiaEqByC.net
>>372
> 百万回やった合計時間でどちらが速いか算出します.
> Result
> method time
> new Date() 233msec
> Date().now() 142msec
と言うか根本的な解決はできてないと思うけど困ったらまたいらっしゃい
379:610
15/11/28 21:52:17.08 u/RqRVR/.net
立てました。よろしく。
JavaScript情報交換所(プログラミング既習者専用)
スレリンク(tech板)
(289の誘導先には投下済み)
380:デフォルトの名無しさん
15/11/28 23:08:58.63 omVU5b+0.net
お、またセルフ隔離奴が沸いたゾ~
381:デフォルトの名無しさん
15/11/29 00:06:32.48 jeYb2Mq1.net
この人は仕様理解が適当で間違いもあって正しい指摘があっても「おまえはわかってない」と小馬鹿にした態度をとり続けるんだよね
テンプレからも自分以外を見下した感がはっきりと現れているし、まともな議論を望む人は行かないほうがいいかと
382:デフォルトの名無しさん
15/11/29 16:34:35.60 9CgkJ04D.net
自分で隔離されに行ってるんだ
これほど助かる事もあるまい
383:デフォルトの名無しさん
15/11/29 16:40:13.54 YeIwqIKD.net
時刻取得はシステムコールだから概ね遅い。
384:デフォルトの名無しさん
15/11/29 21:23:29.08 ttk2cNlA.net
>>377
各言うここも元々は隔離スレなんですがねw
385:デフォルトの名無しさん
15/11/29 22:26:46.50 GFfphPGr.net
>>7のご本人様には�
386:サう見えるんだろうな
387:デフォルトの名無しさん
15/11/30 00:12:59.62 eeMkzjwS.net
スピナーの練習ですまんな
388:デフォルトの名無しさん
15/11/30 00:13:26.95 eeMkzjwS.net
パッと見
編成事故だろこれ
389:デフォルトの名無しさん
15/12/01 00:02:41.35 STfQzAtr.net
巨大なファイルをJavaScriptをつかってブラウザのローカル上で分割する場合、どんな方法がありますか?
例えば、ドラッグ&ドロップで500MBのデータをFILEAPIで読み込み、BLOB形式に落とし込んだデータを10分割する方法。
読み込み自体は、4GBでも実現できたのですが、それを分割する方法が思い付かない・・・
最初は、sliceやsubstrなどで部分読み込みしようとしたのですが、60MBより大きなファイルに処理をかけるとエラーまたはフリーズ状態になってしまいます。
当然軽くさせるためにlengthなども外しています。
何か良い方法はないでしょうか?
390:デフォルトの名無しさん
15/12/01 07:47:46.62 xvXjXk07.net
はい現行スレ
+ JavaScript の質問用スレッド vol.127 + [転載禁止]©2ch.net
スレリンク(hp板)l50
391:デフォルトの名無しさん
15/12/01 13:23:56.62 C95UNH5l.net
>>383
Blob#slice()が通らないならどっか間違ってるか実行環境の問題じゃないかな
それが特定のブラウザだったら>>384で聞いたほうがいい
392:デフォルトの名無しさん
15/12/01 15:24:29.22 STfQzAtr.net
>>385
sliceは巨大な文字列を部分抜きでき
393:るものなの?
394:デフォルトの名無しさん
15/12/01 15:30:47.45 lIW/6OLc.net
試してから聞けよ
395:デフォルトの名無しさん
15/12/01 15:33:41.03 STfQzAtr.net
>>384
ありがとう。
そちらでレスしてみました。
396:デフォルトの名無しさん
15/12/01 15:34:35.77 STfQzAtr.net
>>387
既に試してダメだったので383でレスしました。
397:デフォルトの名無しさん
15/12/01 15:56:50.87 C95UNH5l.net
>>386
ちょっと待ってどこから文字列が出てきたんだ
blob型を分割したいけどできないって質問だった筈だよね
何かおかしいから質問し直すにしてもサンプルコード出した方がいいと思うよ
398:デフォルトの名無しさん
15/12/01 18:44:55.03 pST9GKGG.net
だな。
どういうコードで試したのかは書いてくれないとね。
399:デフォルトの名無しさん
15/12/07 07:29:07.30 7ldc1+VM.net
↓こちらへどうぞ
+ JavaScript の質問用スレッド vol.124 + [転載禁止](c)2ch.net
スレリンク(tech板)
400:デフォルトの名無しさん
15/12/10 01:22:25.69 Gagm3MNk.net
~のページに行って◯◯をクリックするってどう書けばいいの?
401:デフォルトの名無しさん
15/12/10 01:43:25.58 ZhUmFj4b.net
実行環境による
その二つを同時にやるならサイト側のスクリプトか拡張機能かサーバーサイドじゃないと無理
402:デフォルトの名無しさん
15/12/11 08:28:22.96 GWmwMFvD.net
同オリジンなら何とでもできる。
403:デフォルトの名無しさん
15/12/14 23:12:20.44 ls6EZ2cx.net
>>390
30M程度のBLOB型文字列だとsliceで指定範囲を抜き取れるが、500Mや1Gの巨大なファイルになると失敗してしまう。
JavaScriptだけで巨大な文字列を分割する良い技ないですかね・・
404:デフォルトの名無しさん
15/12/15 00:52:49.97 qjG5txy2.net
>>396
あのなぁ、昔はメモリどころかHDDが1GBもない時代があったんだぞ。
その時代であったって、ちゃんと作ればそれぐらいのデータは扱える。
メモリにいっぺんに乗り切らないなら分割して扱えばいいだけの話。
少しは考えた方がいいぞ。言語の勉強をするんじゃなくて
アルゴリズムの話だ。
405:デフォルトの名無しさん
15/12/15 01:38:34.89 uWpoWN+S.net
>>396
blob型文字列ってなんだよ…
blob型を分割しようとして失敗するならそのコードがどこか間違ってるし
それを文字列に変換したもので失敗するなら実装の制限にぶち当たってるから
その場合は>>397の言うように事前に分割するしかない
406:デフォルトの名無しさん
15/12/15 18:08:16.92 WPjAuEFO.net
HPとかのJavascriptのソースコードを読んでいるんですが非常に読みづらいです
たぶん意図的に読みづらくしているのでしょうが、読みやすくするソフトとかないでしょうか?
407:デフォルトの名無しさん
15/12/15 18:45:50.12 AvAOTExp.net
ブラウザに整形機能付いてるじゃん
408:デフォルトの名無しさん
15/12/15 21:55:10.29 uYEbzlBn.net
>>398
制限か何かにあたったのかな・・
今行っているのは、2.2ギガバイトのファイルをドラッグ&ドロップで読み込み、URLまたはtextで読み込んだあとに、sliceで指定部分を抜き出そうとしているのですが、失敗に終わっています。
59MBまでなら成功したので397の通り自分の書いたプログラムに無理があるのかなと・・・
困り果てています。
因に事前に分割とは、JavaScript以外の方法でということですか?
自分がやりたいことは以下です。
1、fileAPIで読み込む(2ギガ以上)
2、10MB程度に分割
3、Ajaxで送信
4、分割されたファイルを組み立て再構築
5、元のファイルに戻して保存
59MBのファイルなら成功しました。それ以上だと・・・・
何か分割する方法ないでしょうか、
409:デフォルトの名無しさん
15/12/15 22:17:38.64 eq/fh4de.net
自分の書いたプログラムを貼ってみればいいんじゃない
410:デフォルトの名無しさん
15/12/15 23:14:28.57 NyiJCKNO.net
ここまでいわれて何でコードを開示しないんだろ
411:デフォルトの名無しさん
15/12/16 00:43:40.05 sgXyEvFI.net
だから、文字列にするなって何度もいわれてるじゃん
412:デフォルトの名無しさん
15/12/16 07:34:17.89 3i7Ahh0A.net
文字列に変換せずにArrayBufferを取得してTypedArrayの担当範囲を変えながら送ればいいでしょ。
413:デフォルトの名無しさん
15/12/16 08:26:46.56 7CCFFtot.net
>>401
ストリーム入力
ActibXobject
414:デフォルトの名無しさん
15/12/16 08:31:01.54 386jW6/x.net
URLリンク(www.html5rocks.com)
415:デフォルトの名無しさん
15/12/16 11:11:28.48 XbnIVOIY.net
>>406
オフラインでドラッグ&ドロップのfileAPIで読み込みたいのですが、巨大なファイル(2ギガ以上)だと何かの上限で無理なんですかね?
416:デフォルトの名無しさん
15/12/16 11:17:23.35 hg6iyaJa.net
32bitの符号あり整数の上限があるかもしれんね
417:デフォルトの名無しさん
15/12/16 12:14:10.78 FY7Nx9Qu.net
10GBあるファイルもアップロード出来てレジュームも可能なようつべって一体全体どうやってるんだろうねえ(嫌味
418:デフォルトの名無しさん
15/12/16 12:15:49.35 FY7Nx9Qu.net
つうか何度も答え出てるのにそれを全部無視してる質問者が池沼すぎてもうね
419:デフォルトの名無しさん
15/12/16 13:13:47.58 bNVTe3xs.net
NGになってるんじゃね?
420:デフォルトの名無しさん
15/12/17 08:18:25.00 woxLyQ04.net
>>409
通常の配列は2**32-1以下の制限があるが型付配列は2**53-1以下であり8PiBまで扱える
421:デフォルトの名無しさん
15/12/17 12:31:04.29 3Bayziwh.net
テキストフィールド上で、特定のキー操作をしたときに、入力補助としてjsから値の変更をしたいです。
ただ、この機能はあくまで入力補助目的なので、手入力した場合と同じ挙動にしたいのですが、
普通にvalueを書き換えただけでは、フォーカスを失った時のchangeイベントが発生しなくなってしまいます。
質問①
手入力したときと同じように、changeイベントが発生する状況をjsで作り出してやることは可能でしょうか?
※プロパティとか見てみたけど、それらしいものが見つかりませんでした。
また、valueを直接書き換えるのがだめなら、通常のキー入力をエミュレートして入力してやれば、changeイベントも動いてくれるかなと思ったのですが、キーイベントを発火しただけでは文字は入力されないようです。
質問②
実際に値が入力される所まで再現させる方法はあるでしょうか?
(それができたとして、changeイベントが発生するかは、別の話ですが…)
ということで、やりたいのはjsで値を変えつつ手入力時と同じようにchangeイベントも発生させることです。
最悪、タイミングは若干変わってしまいますが、blurの中でchangeイベントを発生させてやるしかないかもと思ってます。
よろしくおねがいします。
422:デフォルトの名無しさん
15/12/17 14:17:38.28 o7OE0QW2.net
var repeat_cnt = 0;
function my_func() {
repeat_cnt++;
if (repeat_cnt === 100) { // 上限の100回になったら終了する
return;
}
if (is_end_condition()) {
// ここで必要な処理をする
} else {
setTimeout(function () {
my_func();
}, 10);
}
}
function main() {
my_func();
}
こういう再帰呼び出しをやっても問題ないですか?
場合によってはstackoverflowエラーなど出ませんか?
423:デフォルトの名無しさん
15/12/17 15:05:07.17 X7jSmipQ.net
もちろんスタックオーバーフローは起こりうる
それが起こる再帰回数は実装依存
424:デフォルトの名無しさん
15/12/17 15:28:28.70 4ODMQ8bg.net
非同期の間接呼び出しなので起こりません
425:デフォルトの名無しさん
15/12/17 15:35:01.90 qYA12dWq.net
起こるのは末尾再帰やな
426:デフォルトの名無しさん
15/12/17 15:38:21.34 qYA12dWq.net
何言ってんだ俺日本語がおかしい
起こらないのは末尾再起やな
>>415のは>>417の言うように非同期だからこれまた起こらない
427:デフォルトの名無しさん
15/12/17 17:37:19.09 o7OE0QW2.net
>>416>>417
どっちが正しいのでしょうか
428:デフォルトの名無しさん
15/12/17 20:18:42.20 2fqt+8T5.net
起こるんじゃね
429:デフォルトの名無しさん
15/12/17 20:29:36.50 3Bayziwh.net
>>415はfuncからfuncを呼んでるわけじゃないから、そもそも再起じゃないので、スタックオーバーフローにはならないですよ。
430:デフォルトの名無しさん
15/12/17 21:09:59.65 TfrmoFMM.net
ループは再帰だろ
431:デフォルトの名無しさん
15/12/17 21:59:40.13 dJ6WmCFS.net
1回目が終わった後、時間が来たら2回目が呼ばれて…の繰返しで、
たんに同じ関数が何度も実行されるってだけの状況だと思うけど、これは再帰って呼んでいいの?
432:デフォルトの名無しさん
15/12/17 22:10:00.53 o7OE0QW2.net
>>424
関数内から同じ関数を呼んでいるので再帰的な動きですが、これをループか何かで書き換えて再帰的な感じを無くす事は出来ますか?
433:デフォルトの名無しさん
15/12/17 22:46:28.31 J4jHSYqR.net
>>425
setTimeoutは、その場で待つわけじゃなく、関数は最後まで走っちゃうよ。
その後、時間が来たらsetTimeoutに登録された関数が実行される。
だから、関数内から自分を呼び出してる訳じゃないんで、再帰とはいわないと思う。
まあ、どう呼ぶかはさておき、普通の再帰みたいにコールスタック使いまくる用な事にはならないから、スタックオーバーフローは発生しないし、別に変えなくてもいいと思う。
再帰っぽい感じのコードが嫌なのならsetIntervalを使ってみたら?同じだけど。
434:デフォルトの名無しさん
15/12/17 23:40:09.12 mvUSBC4C.net
>>414
dispatchEventでchangeイベント発火させてやればいいんでね
element.dispatchEvent(new Event('change'))でできるはずだけど
確かIEはnew Eventできないのでdocument.createEventでchangeイベントを作成する必要がある
435:デフォルトの名無しさん
15/12/17 23:48:47.04 mvUSBC4C.net
あゴメン全然的はずれなこと言ってる忘れて
436:デフォルトの名無しさん
15/12/18 08:35:49.78 3yHnx8Mf.net
>>415
無駄にクロージャを形成してGC働かせたり、グローバル変数を使っていることが気になる
setTimeout(my_func, 10, repeat_cnt); で十分
437:デフォルトの名無しさん
15/12/18 13:29:51.96 aALELz7q.net
>>429
そんな書き方が出来るのかよ!
君は優秀だな
438:デフォルトの名無しさん
15/12/18 14:08:24.41 7Erpdy7Z.net
まあな!
439:デフォルトの名無しさん
15/12/18 14:10:29.70 7Erpdy7Z.net
あ、ちなみに、3番目の引数は、IEで動かねーから注意な(笑)
440:デフォルトの名無しさん
15/12/18 17:35:16.80 borw4si8.net
どっちもfunctionを渡してるだけだし、そんな驚くことじゃねえだろうよw
441:デフォルトの名無しさん
15/12/18 17:37:55.19 borw4si8.net
あ、第三引数でカウント渡す部分に感動してたのかw
442:デフォルトの名無しさん
15/12/18 19:11:11.64 /TkrVzDw.net
>>432
IE10 で動くわけだが、IE全般で使えないかのようなミスリードは良くない
IE9- はpolyfillを使えばよい
443:デフォルトの名無しさん
15/12/18 20:40:36.86 aALELz7q.net
>>434
一々w付けんなよw
444:デフォルトの名無しさん
15/12/18 20:51:05.24 g1D+z+o4.net
繰り返す
このポリフィルる
445:デフォルトの名無しさん
15/12/19 04:13:13.83 qAOTtWfG.net
通常はいらん。
レガシーIEに対応しないといけないような特殊な場合のみ。
446:デフォルトの名無しさん
15/12/19 04:46:59.84 ysM2oFx/.net
IE9はレガシーじゃないよw
447:デフォルトの名無しさん
15/12/19 06:54:17.53 lBORTjAw.net
Windows10が実質無料なんだし、もうレガシーIEは無くなったものとみなしていいよな????
分かっていて使っている「玄人」の相手なんかしなくていいよな???????????
448:デフォルトの名無しさん
15/12/19 08:26:31.32 IhTv1p38.net
>>440
そういうことはWindows10にアップグレード可能なOSとIE9をサポートするOSが一致するか調べてから発言しような
449:デフォルトの名無しさん
15/12/19 11:43:33.94 Zi1J5vpJ.net
Edgeがあるじゃん
450:デフォルトの名無しさん
15/12/19 12:49:01.27 IhTv1p38.net
>>442
そういうことはEdgeの対応OSを調べてから(ry
451:デフォルトの名無しさん
15/12/19 19:00:09.47 pEku9roO.net
Windows10だろ??????
何言ってんだ????????こいつwwwwwww
452:デフォルトの名無しさん
15/12/19 19:22:19.99 ysM2oFx/.net
>>444
おう、お前の知り合いは全員Windows 10にしたかな?
会社のパソコンのOSはなんだい?
453:デフォルトの名無しさん
15/12/19 20:17:42.40 HC0McPg/.net
Windows 10だけサポートするなら>>441に話が戻るな
454:デフォルトの名無しさん
15/12/20 03:42:39.14 szXGSrMl.net
MVC「じゃない」JavaScriptのフレームワークって無いですかね
configとかroutesとかviewとかRESTfulとかめんどくさいんですよ、どうせ俺しか弄らないんだし
今はクライアント側にHTMLとAngularでAjax呼ぶ
サーバサイドでJSON応答する
だけで書いてますがそんな感じの
455:デフォルトの名無しさん
15/12/20 03:49:08.88 jqjYNF9z.net
>>447
HTML+CSS+jQueryでよい。
HTMLとCSSをただしく使えるのであれば
jQueryだけでビュー部分は簡単に作れる。
456:デフォルトの名無しさん
15/12/20 04:00:40.70 szXGSrMl.net
>>448
jQueryはAjaxでちょっとだけ使ってますわ、
スタイル切り替えはAngularの{{}}でやってる
「小規模なんだからフレームワークなんて要らない好きなように書け」
ですかねありがとうございます
457:デフォルトの名無しさん
15/12/20 09:41:11.53 C3TDTIV2.net
www.example.com
www.example.net
間でobject型のデータを互いに交換したいのですが、
最も高速にやれるのは
どういう関数を使うべきですか?
キーワードを教えて下さい。
458:デフォルトの名無しさん
15/12/20 10:06:02.94 6N9tUz3v.net
結局、IE9用にsetTimeout()のPolyfillが必要なわけだな
459:デフォルトの名無しさん
15/12/20 10:26:06.76 C3TDTIV2.net
>>450
chromeで動けばいいです。他は無視で構いません
460:デフォルトの名無しさん
15/12/20 10:46:53.64 6N9tUz3v.net
>>450,452
window.postMessage
URLリンク(please-sleep.cou929.nu)
461:デフォルトの名無しさん
15/12/20 12:16:25.07 C3TDTIV2.net
>>453
レスありがとうございました。
このサンプルはiframeを使った例のようですが、そうではなくて
全く独立した二つのウインドウ間で通信したいのですが。
どうやっても出来ません。
462:デフォルトの名無しさん
15/12/20 12:24:32.54 J44fsBtD.net
>>454
postMessage はframeでなくても使えるはずだけど
463:デフォルトの名無しさん
15/12/20 12:26:11.54 C3TDTIV2.net
>>455
それが出来ないんです。もう2日くらい行き詰っています。
本当にできるのでしょうか?
464:デフォルトの名無しさん
15/12/20 12:41:48.64 J44fsBtD.net
>>456
Chrome独自の制約は特に見つからないけどなあ
もう一度仕様を読んでコードを見直してみては?
URLリンク(developer.mozilla.org)
URLリンク(html.spec.whatwg.org)
URLリンク(caniuse.com)
465:デフォルトの名無しさん
15/12/20 15:58:14.65 C3TDTIV2.net
>>457
もう全然ダメです。行き詰まってます。
しばらく寝ます。
466:デフォルトの名無しさん
15/12/20 20:52:40.73 C3TDTIV2.net
今起きました。
どこかに動くサンプル有りませんか...
467:デフォルトの名無しさん
15/12/21 01:36:27.38 VR8UuUsJ.net
>>459
URLリンク(the-zombis.sak) ura.ne.jp/wp/blog/2013/10/15/post-2031/
このサンプルはどや
SafariとChromeで動いたよ
468:デフォルトの名無しさん
15/12/21 01:54:42.80 KZlVjUzR.net
>>459
postMessageって送りたい方のwindowオブジェクトに対してするんだからな
example.comからexampe.netに送りたいなら
example.comのページでexample.netのwindowオブジェクトを取得する必要がある
window.open()の返り値とかで
469:デフォルトの名無しさん
15/12/21 08:54:44.10 kPgfKzUv.net
>>460
レスありがとうございました。
確かにこのサンプルではpopupで開いたウインドウに送信できました。
でも逆方向に送る事は出来ないのでしょうか?
>>461さんの指摘のように、popup側で送信先windowのオブジェクトを取得する必要がありますよね?
470:デフォルトの名無しさん
15/12/21 11:26:56.86 MBLRXv9v.net
>>462
window オブジェクトを送れば逆方向も出来るのでは?
471:デフォルトの名無しさん
15/12/21 16:05:08.73 3jMeB42X.net
windowオブジェクト送るとかアホか
呼び出し元はparentで取れるだろ
472:デフォルトの名無しさん
15/12/21 16:51:10.15 y6KenWXU.net
>>464
windowオブジェクトを取るのが目的ではないだろ
window.hoge でグローバル変数にして送れ、といいたいのか?
473:デフォルトの名無しさん
15/12/21 16:53:35.70 y6KenWXU.net
ごめん、悪かった
windowが取れれば送れるという事か
474:デフォルトの名無しさん
15/12/21 19:02:28.07 kPgfKzUv.net
皆さん情報ありがとうございました。
その後、試したのですが逆方向は出来ませんでした。
もしやり方が分かれば教えて下さい。
475:デフォルトの名無しさん
15/12/21 19:20:19.09 KZlVjUzR.net
>>467
onmessageのイベントオブジェクトのsourceに呼び出し元のwindowオブジェクトが入っている
onmessage = function(e) { e.source.postMessage() }で返せるわけ
476:デフォルトの名無しさん
15/12/21 21:59:57.58 kPgfKzUv.net
>>468
ありがとうございました。
一週間くらい悩んでいた問題が解決しました。
477:デフォルトの名無しさん
15/12/22 17:34:29.31 cFhaBXKc.net
オブジェクトの定義で
var obj = {key: value};
var obj = {'key': value};
どちらも同じだと思いますが、どちらが良いのでしょうか?
478:デフォルトの名無しさん
15/12/22 18:11:28.69 pcMCuDsy.net
JSONは後者のみだから後者に統一しとけば良いんじゃね
479:デフォルトの名無しさん
15/12/22 18:33:30.15 YodBadyd.net
おい
480:デフォルトの名無しさん
15/12/22 22:46:53.61 lJMFjOKo.net
>>471
お前はいつもJSONを手書きしてるのかよ?
>>470
圧縮の技術の一つでよく出てくるパターンを短いデータに置き換えるというのがある。
それと一緒でどちらも同じ意味で可読性も変わらないのであれば、
よく使うものほど短い書き方にするのが良い。この場合は''がないほうが可読性高いしね。
481:デフォルトの名無しさん
15/12/23 09:05:06.94 n7KlQu9D.net
場合によるでしょ
482:デフォルトの名無しさん
15/12/23 09:12:12.40 Bay2doKJ.net
JavaScriptかjQueryで
sleep(2000) // 2秒休む
とか出来ますか?
483:デフォルトの名無しさん
15/12/23 11:30:09.76 qlqX4ccz.net
>>475
アホな実装しかできない
484:デフォルトの名無しさん
15/12/23 11:31:18.08 Bay2doKJ.net
>>476
アホな例をお願いします。
485:デフォルトの名無しさん
15/12/23 16:16:56.03 VsO+5z2P.net
>>475
var now = Date.now();
while(now + 2000 > Date.now()){}
setTimeoutとpromise使ったほうが絶対いいよ
486:デフォルトの名無しさん
15/12/23 16:22:58.88 v4yXy6ML.net
>>476
お前がアホな実装しか出来ないのは分かったが
そういう話をしているんじゃない。
487:476
15/12/23 18:28:18.45 qlqX4ccz.net
>>477
function sleep (delay) {
var date = new Date;
while (new Date - date < delay);
}
sleep(2000);
console.log('test');
どう考えても setTimeout() を使った方が良い。
同期処理で sleep() を実装しようとする設計がアホ。
488:デフォルトの名無しさん
15/12/23 18:32:35.22 Bay2doKJ.net
>どう考えても setTimeout() を使った方が良い。
だったらその例を教えてけろ
489:デフォルトの名無しさん
15/12/23 18:43:12.65 MksdZDM7.net
リファレンスを読めばわかる
URLリンク(developer.mozilla.org)
490:デフォルトの名無しさん
15/12/23 18:46:15.21 Bay2doKJ.net
>>482
分からないんです。
settimouotでsleep実装出来ますか?
491:デフォルトの名無しさん
15/12/23 18:53:15.76 qlqX4ccz.net
>>483
出来ない。アホな実装しか出来ないといっただろう。
素直に非同期処理を使え。
492:デフォルトの名無しさん
15/12/23 19:16:39.46 fUoT5vqI.net
ところで、 sleep を頑なに拒んで Promise や async/await にこだわる理由はなんだろう?
どう考えても sleep の方が使いやすいときがあるが。
493:デフォルトの名無しさん
15/12/23 19:24:23.93 rBnsJIlR.net
画面触れなくなるじゃん
494:デフォルトの名無しさん
15/12/23 19:33:10.34 fUoT5vqI.net
ちげーよ。本物の sleep を JavaScript が採用しないのが不思議だと言ってるんだよ。
495:デフォルトの名無しさん
15/12/23 19:44:06.77 qlqX4ccz.net
同期処理にしたらDOM読み込みや他の処理全てがブロックされるからだろ
496:デフォルトの名無しさん
15/12/23 19:51:12.02 fUoT5vqI.net
他言語の sleep はそこでスレッドをスイッチするから他処理をブロックしない。
お前らこの単純な事実を知らないのか?
497:デフォルトの名無しさん
15/12/23 20:00:54.54 tFvVWMos.net
(笑)
498:デフォルトの名無しさん
15/12/23 20:04:35.74 qlqX4ccz.net
>>489
同期処理なんだから後述処理は完全にブロックされるだろ
HTMLパースも同期処理なのを知らんのか
499:デフォルトの名無しさん
15/12/23 20:26:19.51 MksdZDM7.net
JavaScriptはシングルスレッドで同期処理だから sleep() 時に処理がブロックされる必然
他言語ではなくてJavaScriptでどうなるかを考えたら?
500:デフォルトの名無しさん
15/12/23 21:14:21.37 fUoT5vqI.net
お前ら相変わらず話が通じないな。
>>491
> HTMLパースも同期処理なのを知らんのか
知ってるよ。だからHTML上に<script src=>やると云々、書く場所は考えろってやつだろ。
ただ WebWorker を使った場合は sleep(0) があった方が綺麗に書けるんだよ。
(とはいえsleep(0)ならasync/awaitで問題ないが)
>>492
JavaScript はデタラメに仕様を拡張してきているのに、
なんで sleep を採用しないのか不思議だと言ってるんだよ。
501:デフォルトの名無しさん
15/12/23 23:12:11.47 v4yXy6ML.net
> なんで sleep を採用しないのか不思議だと言ってるんだよ。
ブラクラに使われるからだよ。
sleep 100000000とかやられたら画面が固まるだろ。
そりゃブラウザによっては固まらないようにするかもしれないが、
それはそのブラウザの独自機能。タブも独自起動。
タブもウインドウもないブラウザだって有るわけで、
画面が固まったら何もできなくなるだろ。
502:デフォルトの名無しさん
15/12/23 23:18:01.50 fUoT5vqI.net
ちょっと考えてみたが、 async/await と Promise で実装できそうな気がする。
await は Promise を受け取れるし、 ---(A)
Promise 内で SetTimeout できるようなので。 --- (B)
(B)についてはMDNのサンプルコードで確定。
(A)については仕様の頭を読んで他サイトの記述を見る限り多分出来そう。
(ただし全部読んでないので間違っているかも。)
URLリンク(developer.mozilla.org)
URLリンク(tc39.github.io)
それにしても、 sleep を意地でも実装しない理由って無いと思うよ。
async/await 入れた時点で function 途中でのスイッチが行われるのだから、
sleep と可読性の損なわれ方は変わらないはず。
と思っていたが
>>494
> ブラクラに使われるからだよ。
なるほどこれはあるかもな。
しかしそれを言うなら、あっちのスレの話題で今更ながらFC2ブログがJS自由なのを知って、
ちょっと寒気がしてます。
503:デフォルトの名無しさん
15/12/23 23:29:03.26 fUoT5vqI.net
>>494
すまん訂正。思いっきり間違えた。
> > ブラクラに使われるからだよ。
> なるほどこれはあるかもな。
スピンロックの sleep ならブラクラになるが、通常のサスペンドロックの sleep ならブラクラにはならない。
俺が入れてもいいのではないかと思っているのは当然後者。
だからこれは当てはまらない。
504:デフォルトの名無しさん
15/12/24 00:32:33.07 vhy24jAm.net
>>496
だからそれはJavaScriptの仕様で決めることは出来ないんだよ。
搭載したいと思うなら、ブラウザが勝手に搭載すればいいわけで、
実際サーバーサイドJavaScriptでは、sleepはブラウザに相等する
実行環境が提供している。
505:デフォルトの名無しさん
15/12/24 00:54:43.31 eesjQKa2.net
sleep() があったら sleep(Infinity); で永遠に読み込みが終わらない現象を発生可能な件
506:デフォルトの名無しさん
15/12/24 01:10:40.88 vhy24jAm.net
>>496
> スピンロックの sleep ならブラクラになるが、通常のサスペンドロックの sleep ならブラクラにはならない。
あと、スピンロックかどうかは関係ない。
それはJavaScriptはWeb Workerを作って明示的に別スレッドを作らないかぎり
(悪意のあるブラクラサイトがわざわざ別スレッドを作るわけがない)
シングルスレッドなのだから、スピンロックでもサスペンドロックでもブラクラになる。
スピンロックだとCPUを食うというだけの話。
507:デフォルトの名無しさん
15/12/24 01:33:21.10 ij3qlZ6A.net
ブラクラになるとか頭おかしいのか・・
フリーズしなくすれば良いだけ
508:デフォルトの名無しさん
15/12/24 01:48:04.37 vhy24jAm.net
>>500
だからフリーズしなくなる機能をつけるのは
ブラウザの仕事であって、JavaScriptではないということ。
例えばalertなんかOK押すまでsleepするのと同じなんだが、
今のブラウザはalertでても、ページ内の操作は当然無理だが、ウインドウは触れるだろ。
でもalertはブラクラに使われていたんだよな。後からブラウザが対策した。
もちろんalert等はブラウザの機能であってJavaScriptの機能ではない。
alertのようなブロックする関数は今の考え方では失敗と言うべきだろう。
509:デフォルトの名無しさん
15/12/24 02:09:31.15 3SycHtsF.net
>>501
何があってもブロックさせないという仕様は、確かにブラウザには必要なのだろう。
ただ、sleep を await と同じ扱いにすればいいだけだろ。
I/Oとかは全面的に await でいいのは事実だけど、
sleepの方が使いやすい局面があるから昔から sleepガー という奴がいるわけで。
> だからそれはJavaScriptの仕様で決めることは出来ないんだよ。
> それはJavaScriptはWeb Workerを作って明示的に別スレッドを作らないかぎり
> シングルスレッドなのだから、
これが出来ない理由にはならないんだよ。だったら await はどうなの?
await の所で他の function が実行できるんだよね?(仕様読んでないけど)
それは別スレッドを作っているのと見た目は同じだろ。
内部的に糖衣構文化してイベント待ちに自動的に切り換えてくれているのなら、
sleep も同様にそう作り込めばいいだけなんだよ。
await を導入している時点で、sleep が導入できない理由はないんだよ。
sleep は await のタイマイベント待ち版でしかないんだから。
(通常の await は I/O 待ち)
510:デフォルトの名無しさん
15/12/24 04:48:17.07 vhy24jAm.net
URLリンク(smart.ataglance.jp)
awaitってこれだろ? ES7ではいるやつ。
> async function countUp() {
これを実装するには、asyncという構文にJavaScriptが対応しないと実現できないんだが?
お前が言ってるのは、今のJavaScriptでは実現不可能。なぜなら対応してない機能が必要だから。
という事実に対して、最初からJavaScritpはasyncという文法に対応していれば
よかったんだってってことだろ? たられば論な。
別の言い方をすれば、
問い なぜsleepに対応してないのか?
答え asyncに対応してないから。
ってことなんだが?
将来サポートされる機能で実現可能だと言われた所で、
今サポートしてない理由は、今のJavaScriptでは実現不可能だからだろ。
どんなにsleepを作りこんだ所で、asyncは実現できない。
それともお前が言ってる "作り込み" っていうのはBabelみたいにES7をES5とかに変換するツールを
JavaScriptで作って、実行時にソースコードを変換するようするって話か?
511:デフォルトの名無しさん
15/12/24 05:00:33.39 vhy24jAm.net
あとそれからももう一回っておくけど、
asyncやwaitがあった所で、JavaScriptにはタイマーがないんだよ。
JavaScriptにファイルアクセス命令がないようにタイマー命令もない。
それはJavaScriptにタイマーは含めないと決めたから。
awaitやasyncがあった所で、タイマーが存在しなければ、
ビジーウェイトしないかぎり、実現不可能。
それがawaitやasyncを入れても、タイマーを入れない理由。
そういうのはJavaScriptではなく実行環境が提供すべき機能で
JavaScriptには入れるべきではないという考えから入れていない。
512:デフォルトの名無しさん
15/12/24 05:09:19.58 5dQYZNYi.net
ただの構文糖ならJavaScriptという言語に追加できるけど、
sleepを実現するのに必要なタイマーは構文糖じゃないからな。
JavaScriptに新しい機能を追加しようという話になってる。
タイマーを一般化すると割り込みとかシグナルになるわけだけど
JavaScriptに割り込みやシグナルにアクセスする機能を追加するって話になる。
タイマーは構文糖じゃないから取り入れられないんだ
513:よ。
514:デフォルトの名無しさん
15/12/24 05:31:32.68 5dQYZNYi.net
>>502
> (通常の await は I/O 待ち)
await はI/O待ちではない。
I/O待ちするのはブラウザを含めた実行環境の仕事
JavaScriptは、基本的にI/Oを操作しない。
(近いのはconsole.logぐらいだがこれもコンソールに
出すってだけで出す場所は定義されてない)
515:デフォルトの名無しさん
15/12/24 07:16:17.38 YlRH46yJ.net
安易に使うやつでてくるから駄目でしょ
sleep中にHTMLや変数かわるとかさ考えてないやつでてくるだろう
考えなくていいのがいいところだし
するとしたら既存のjavascriptには影響なしで理解してないやつには使いにくい機能追加だな
516:デフォルトの名無しさん
15/12/24 07:34:18.13 Y5sNONvq.net
この前別スレでこの手の話出てたけど、
ES7でスレッド制御できるようになるからsleep出来るじゃん。
参考:URLリンク(js-next.hatenablog.com)
それと非標準では昔からいろいろある。
517:デフォルトの名無しさん
15/12/24 07:54:24.80 xUUCJBux.net
UIスレッドとスレッドセーフの区別がついてないのまで出てきてカオス
518:デフォルトの名無しさん
15/12/24 09:05:14.13 kShQ38jb.net
俺が、俺たちがカオスなんだ!
519:デフォルトの名無しさん
15/12/24 12:37:48.96 lTmsChXg.net
>>508
将来搭載される機能使えば、実現可能だからって、なんで今sleepないの?と
聞かれてもな。今は実現不可能だからに決まってるだろ。
そもそもWorkerはブラウザのAPIであってES7じゃない。
ESにasync/awaitという構文が追加されたのはただの構文糖だからで実現可能だったからで、
構文糖で実現不可能なタイマーへのアクセスは、将来にわたってもできることはないだろう。
ファイルアクセスなどのI/Oに対応しないのと同じ理由で、
ESの範囲ではタイマーを扱うべきではないと考えているはず。
ブラウザの機能の話であれば、それはsetTimeoutがあるから十分じゃん?
setTimeoutがasyncを使った実装になってないのは、今のJavaScriptは対応してないからだ。
しかも、それはブラウザのAPIの話。async構文を使ったsleepを実装しろ!というならば
ブラウザのAPIに対してだろう。サーバーAPIはすでにあるわけだから。
520:長くなったから分割
15/12/24 12:39:45.82 lTmsChXg.net
もっとも、どう頑張ってもsleep(1000)みたいな形で使えるようになることはない。
>>503の例のように、await sleep(1000); というawait構文を使った形になる。
そしてasync、awaitはただのPromiseの構文糖なのだから、Promiseを返す
関数であれば、ES7でasync、awaitを使って書くことができる。
だから、Promiseを返すバージョンのsetTimeoutとして、
sleep(1000).then(function() { ・・・ }) みたいな使い方をする
ブラウザのAPIが新しく作られることは有るかもしれない。
そして、これならば今のブラウザでも動く。
521:デフォルトの名無しさん
15/12/24 12:46:55.90 lTmsChXg.net
>>495
> ちょっと考えてみたが、 async/await と Promise で実装できそうな気がする。
Promiseというものが最初にできて、それを "簡単に記述できるようにしただけ" のものが
ES7に追加されることになった新たな文法のasync/awaitなんだが。
これは新しい文法なんだから、Promiseで "実装" することは出来ない。
Promiseを返すように作られた関数があって、
それを使う時の書き方の一つでしかないよ。
522:デフォルトの名無しさん
15/12/24 12:56:26.66 YlRH46yJ.net
javascriptみたいな使いにくい言語に難しいことすんなや
523:デフォルトの名無しさん
15/12/24 13:30:58.58 lTmsChXg.net
難しいかどうかは人それぞれだからw
524:デフォルトの名無しさん
15/12/24 14:21:38.37 +OAEjoT0.net
promiseってjavascriptで書かれているんだろ?
だったら今でもsleep出来るんじゃないか?
525:デフォルトの名無しさん
15/12/24 16:22:07.01 lTmsChXg.net
>>516
PromiseはJavaScriptでかけるが、
sleepを実装するのに必要なタイマー機能(割り込みやシグナル)が
JavaScriptでは使えないんだよ。
これらはブラウザかnodeのようなJavaScript実行環境が
提供するしか無い。
526:デフォルトの名無しさん
15/12/24 16:50:27.79 QHPA1t+Q.net
Javascriptの開発環境はなにがいいのですか?
この言語はまだ初心者で経験ないけどこれからやるために。
サクサク動くの希望。
調べたらVisual StudioでもEclipsでもできるらしいけど、本当にみんなこんなのでやってるの?
527:デフォルトの名無しさん
15/12/24 16:57:32.84 lTmsChXg.net
>>518
JavaScript含めた動的言語は、言語の仕様からIDEを使っても
さほど大きな開発サポートは得られないので、諦めてテキストエディタ使ってるよ。
静的言語ならIDE使うとすごく便利なのにな。
528:デフォルトの名無しさん
15/12/24 17:00:13.00 QHPA1t+Q.net
>>519
ひょっとしてメモ帳?
でもちょっと本格的になったら無理じゃない?
コード入力で単語を自動選択ポップアップすらないと。
529:デフォルトの名無しさん
15/12/24 17:01:10.52 lTmsChXg.net
>>520
メモ帳なわけがないだろう。
まあ単語の自動選択は使ってないがな。
これも完璧じゃないので。
530:デフォルトの名無しさん
15/12/24 17:10:04.57 QHPA1t+Q.net
>>521
じゃなにつかってるの?
531:デフォルトの名無しさん
15/12/24 17:57:12.05 k1/8SWkC.net
>>511
ES7と言ったのはAtomicsのことだよ。
そしてsleepは不要で合わなくてそのような機能は実装されることがないというような論に対して言ったんだよ。
AtomicsAPIは立派なスレッド制御のための新しい機能で、糖衣構文の類ではない。
ESの範囲で扱うべきだと考えられているから存在している。
532:デフォルトの名無しさん
15/12/24 18:06:22.44 lTmsChXg.net
>>528
何の話してるの?
俺が言ってるのは、タイマーはES7の機能として実装されないから
sleepはES7の範囲内では無理って話してるんだが。
スレッドあってもsleepはビジーウェイト以外では
実現できないんだよ。
533:デフォルトの名無しさん
15/12/24 18:09:16.10 lTmsChXg.net
なんか前の方ではスピンロックとか意味不明な用語の使い方してるし、
名前だけ知ってて、基礎ができてないんじゃないか?
534:デフォルトの名無しさん
15/12/24 21:52:25.60 bR1u9BVC.net
setTimeoutとyieldでsleepは簡単に実現できるけど、setTimeoutはjsには含まれてないもんな
どうでもいいがWScriptにはそのまんまsleepがあるな
535:デフォルトの名無しさん
15/12/24 23:10:08.57 RAVtKX98.net
>>522
Atom.ioのエディタとChromeの開発者ツールかな
一応、打ち込んだ変数名の推測表示はしてくれる
536:デフォルトの名無しさん
15/12/24 23:16:17.63 QHPA1t+Q.net
>>527
なるほどありがとう
もしChromeの使うならとくになにもインストールしなくてもついてるやつですか?
537:デフォルトの名無しさん
15/12/24 23:31:57.10 RAVtKX98.net
>>528
Chromeに最初から付いてる、メニューから使えるやつ
開発中は.min.jsじゃなくて.jsを使うんだぞ
ブレークしてウォッチすればライブラリにどんなメソッド有るかとか見えるし、中まで追っていける
538:デフォルトの名無しさん
15/12/25 09:17:26.40 tK87TiQA.net
>>526
sleepはスレッドの停止であって、
コルーチンの留保とはぜんぜん違う
539:デフォルトの名無しさん
15/12/25 10:00:37.15 /jFYFGFJ.net
>>480
香ばしワロタ
540:デフォルトの名無しさん
15/12/25 10:12:54.99 tK87TiQA.net
まあsleepをビジーウェイト程度に考えてちゃ有用性は分からないだろうな。
ビジーウェイトじゃないし本来wakeとセットで有用なものでもあるからね。
541:デフォルトの名無しさん
15/12/25 17:56:50.40 MWeRnh5+.net
ほーい現行スレ
スレリンク(hp板)l50
542:デフォルトの名無しさん
15/12/25 20:46:43.80 mCWQHNVj.net
そもそもUIスレッドでsleepできて何が嬉しいの?
543:デフォルトの名無しさん
15/12/25 22:39:08.53 XoBMqT50.net
>>529
なるほどありがとう。
ところでChromeでコードを書く場所はどこにあるの?
F12押したときに出てくる画面の上部のタブのElementsやSourcesをクリックしてコードを見
544:ても これは見るだけはできても編集して書き込むことができない。
545:デフォルトの名無しさん
15/12/25 23:46:42.58 OVXWXNxb.net
>>535
AtomやVisualStudio CodeなどエディタでHTML/CSS/JavaScript/PHP/Curlのテスト用コマンド などを書いて、
クライアントはChromeとかIEとかスマホとかいろいろ試すわけですよ
URLリンク(tech.nitoyon.com)
書いて置いておくのはWebサーバのある場所
読み込んで動くのはクライアントに居るChromeやIE
だから、Chromeでは見られるけど編集できないのが自然なわけ
VisualStudioならWindowsフォーム書いてその場で動かせるのに、wwwってめんどくさいですね?
そしたら URLリンク(Electron.atom.io) てのを調べてみよう
546:デフォルトの名無しさん
15/12/26 04:58:55.05 56T1awou.net
>>534
サブスレッドとの同期等
547:デフォルトの名無しさん
15/12/26 05:02:09.76 h8/CI80S.net
>>537
それは答えじゃない。
何が嬉しいの?っていうのはユーザーにとっての話だ。
嬉しいこと(答え)ではなく、何ができるのかしか言っていない。
サブスレッドと同期ができて人は何が嬉しいのか?
それが求められている答えだ。
548:デフォルトの名無しさん
15/12/26 16:51:32.69 Dx/LxDfY.net
簡単に同期ができるとマルチスレッドプログラミングが格段にやりやすくなる。
例えばメインスレッドでは同期処理と同じような感覚でマルチスレッドを使う関数を使える。
それだけならawaitでもいいじゃんと思うかもしれないが、
sleep/wakeはマルチスレッドプログラミングに付き物の競合問題も解決してくれる。
まあでもWebに関しては、現状の状態を鑑みるに、別にサブスレッドを束ねるマスタースレッドを作って、
UIスレッドでは下手にsleepしたりしないほうが良いと思う。
DOMとJSとのイベントループが絡まっているため、現状の仕様というか素直な実装による挙動だと、
JSでsleepするとUIも固まってしまう。
だから今のところの現実解は別個にマスターワーカーを作り、UI側とのやり取りはasync/await
ワーカー同士はsleep/wakeでするのがベストだと思われるがどうか。
549:デフォルトの名無しさん
15/12/26 17:02:03.43 h8/CI80S.net
話ずれ過ぎw
今はwakeの話はしていない。たんなるsleep(秒数)だ。
これはJavaScriptの範疇じゃないってだけ。
ブラウザを含めた実行環境が提供すればいいだけの話。
実際にサーバーサイドJavaScriptは実行環境が提供している。
550:デフォルトの名無しさん
15/12/26 19:01:28.66 AaVX3RoX.net
書き方以外のメリットはないみたいね
551:デフォルトの名無しさん
15/12/26 20:25:26.24 EPUewKIt.net
>>535
そこに実ファイルドロップして、右クリで追加したら触れるようになるはず。
552:デフォルトの名無しさん
15/12/26 21:10:28.86 Sgv0r5+y.net
関数の引数で、
function func1(int) {
...
}
func1(10);
みたいなシンプルなデータを渡す場合と、
function func2(win) {
...
}
func2(window);
みたいに、大きなオブジェクトを渡す場合とで、処理速度に差が出ますか?
553:デフォルトの名無しさん
15/12/26 21:56:15.94 lqDTULGo.net
大きなオブジェクトへの参照を渡しているだけだから
想像しているような差はないと思っていいよ
554:デフォルトの名無しさん
15/12/27 01:18:53.59 LwSAm1fH.net
SMIは他のあらゆる値と違って直接レジスタに畳み込めるから有利。
ただし64bit環境と最新のエンジンではその限りではない。
555:デフォルトの名無しさん
15/12/27 04:25:15.40 t0JLu8LK.net
AngularJSでハマったわ…
angular.module('App01',[依存モジュール]);
angular.module('App01',[別の依存モジュール]);
2回目ので最初のを上書きしてしまうのだった
ただ単に最初のコントローラが消えてしまうのでエラーも何も出ないし
556:デフォルトの名無しさん
15/12/27 04:53:58.23 Y7IK7QLW.net
そういうのを検出してくれるのがあった気がするけど忘れたな。
気のせいかもしれない。
557:デフォルトの名無しさん
15/12/27 05:18:31.87 zCo3FkO+.net
app.js として一行だけ
angular.module('myApp',[サブ1,サブ2…]);
ルーティングやコントローラで
angular.module('サブ2',[依存モジュール])
とすることにしました。
追加のたびにapp.js書き換えになるけど単体テストがやりやすそうだし
558:デフォルトの名無しさん
15/12/28 12:18:40.57 MpvL/SZu.net
phantomJSはウェブブラウザと同じことが出来ると使ってみたら表示されないページが在ったり、ハングアップしたりして全然使い物になりませんね。
559:デフォルトの名無しさん
15/12/28 19:56:19.32 aQp7bRaK.net
会社のPCの権限を制限されてツール等をインストールできないとき
Javascriptはどうやって書いてますか?
560:デフォルトの名無しさん
15/12/28 21:46:31.78 VijL79y/.net
>>550
そんな会社をやめる
561:デフォルトの名無しさん
15/12/28 21:53:35.78 rsmzLifY.net
>>550
JavaScript に権限など必要ない
562:デフォルトの名無しさん
15/12/28 22:29:37.56 aQp7bRaK.net
>>551
まあ転職予定だ
>>552
いや開発環境としてのエディタがインストールできないという意味だ。
もしかしてみんなこんなときメモ帳で書いてるの?
563:デフォルトの名無しさん
15/12/28 22:34:48.53 qCU45Dy7.net
>>553
Webアプリ使おう
564:デフォルトの名無しさん
15/12/28 22:40:34.12 rsmzLifY.net
>>553
仕事で必要なら権限がある人に申請を出すだけでいいのでは?
565:デフォルトの名無しさん
15/12/28 22:52:13.74 mtPLZTEK.net
インストール不要の物使え
566:デフォルトの名無しさん
15/12/28 23:03:07.01 aQp7bRaK.net
>>554
それはどのようなものですか?
>>555
仕事て使うほど大げさではなく
ふだんやることのほんの一部を自動化するだけなので
なぜチームでオレだけが必要か説明できないよ。
>>556
それはzipをダウンロードすることだと思うけど
勝手なダウンロードも監視&禁止されてるのよ。
いっかいそれで警告を受けたからもうできない。
567:デフォルトの名無しさん
15/12/28 23:27:51.67 VijL79y/.net
やめる前に、業務に"必須"なものまでインストールが制限されており、
"作業効率が著しく低く"、こんな環境ではまともな仕事ができないから
って言ってあげてねw
568:デフォルトの名無しさん
15/12/28 23:29:15.43 VijL79y/.net
ダウンロードは誰が禁止しているのですか?
なるほど、つまり○○さんが、
他人の仕事の邪魔をしているわけですね。
って言ってあげてねw
569:デフォルトの名無しさん
15/12/28 23:30:21.82 aQp7bRaK.net
でかい会社だからITのネットワークチームかどこかが監視してるのよ。
570:デフォルトの名無しさん
15/12/28 23:34:13.51 VijL79y/.net
VirtualBox + Linux さえ許可されれば、
あとは自由にアプリインストールし放題だけどなw
パッケージマネージャーで入れるものはすべて
Linuxに含まれているものだからねw
571:デフォルトの名無しさん
15/12/29 02:10:16.17 q3r6ryfw.net
>>557
Webのエディタだよ
JavaScript エディタ Webでぐぐったら色々出てくると思うよ
572:デフォルトの名無しさん
15/12/29 10:23:17.64 u34Ypxab.net
>>562
それはわりと標準的な開発手法でしょうか?