16/03/09 01:00:06.15 S0itb4sM.net
■質問テンプレート
【環境】OS, 実行環境をバージョンと共に記入してください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
URLリンク(jsdo.it) URLリンク(jsbin.com) URLリンク(jsfiddle.net) URLリンク(ideone.com)
■前スレ
+ JavaScript の質問用スレッド vol.118 + [転載禁止](c)2ch.net
スレリンク(tech板)
■過去スレ全集(Web制作)
URLリンク(www2.atpages.jp)
URLリンク(usamimi.info) (閲覧のみ)
■テンプレ案(Web制作)
URLリンク(fiddle.jshell.net)
■関連スレ
ECMAScript デス 4
スレリンク(tech板)
JavaScript ライブラリ総合質問所 vol.4
スレリンク(hp板)
CSS初心者スレッド=13th=(c)2ch.net
スレリンク(hp板)
Canvasについて語ろう
スレリンク(hp板)
3:デフォルトの名無しさん
16/03/09 01:00:44.46 S0itb4sM.net
■FAQ
URLリンク(fiddle.jshell.net)
■開発者ツール(Developer Tools)の基本的な使い方 (全部は URLリンク(fiddle.jshell.net) )
◆諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- IE9- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
- Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
URLリンク(developer.apple.com)
◆要素を検証
1. ページ上で右クリックして [要素を検証]
2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
3. 右側のサイドバーから知りたいステータス名のタブを選択する
- [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
- [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
- [Properties] タブ … 選択したDOMノードのプロパティを表示
◆コンソール
1. JavaScript コード上で console.log('Hello, World!'); と入力
2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
3. [Console] パネルに "Hello, World!" と表示される
(※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
4:デフォルトの名無しさん
16/03/09 01:01:12.81 S0itb4sM.net
■各種仕様 ( URLリンク(fiddle.jshell.net) も参照 )
◆ Standard ECMA-262
URLリンク(bclary.com) (ECMAScript 3 HTML版)
URLリンク(web.archive.org)URLリンク(www2u.biglobe.ne.jp) (ECMAScript 3 和訳)
URLリンク(www.ecma-international.org) (ECMAScript 5.1 HTML版)
URLリンク(tsofthome.appspot.com) (ECMAScript 5.1 和訳)
URLリンク(people.mozilla.org) (ECMAScript 6 有志HTML版)
URLリンク(kangax.github.io) (ECMAScript 5 compatibility table)
URLリンク(kangax.github.io) (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
URLリンク(www.whatwg.org)
URLリンク(momdo.s35.xrea.com) (HTML5.1 部分訳)
URLリンク(www.hcn.zaq.ne.jp) (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
URLリンク(www.hcn.zaq.ne.jp) (DOM Standard (DOM4) 和訳)
URLリンク(www.w3.org) (DOM3 Events)
URLリンク(www.w3.org) (UI Events)
URLリンク(www.hcn.zaq.ne.jp) (CSSOM 和訳)
URLリンク(www.hcn.zaq.ne.jp) (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
URLリンク(domparsing.spec.whatwg.org) (DOM Parsing and Serialization - innerHTML等)
URLリンク(www.hcn.zaq.ne.jp) (XMLHttpRequest 和訳)
URLリンク(www.hcn.zaq.ne.jp) (File API 和訳)
URLリンク(www.whatwg.org) (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
URLリンク(developer.mozilla.org)
◆ MSDN Library
URLリンク(msdn.microsoft.com) (Internet Explorer API)
URLリンク(msdn.microsoft.com) (JavaScript)
URLリンク(msdn.microsoft.com) (JScript)
URLリンク(msdn.microsoft.com) (DHTML)
5:デフォルトの名無しさん
16/03/09 01:01:55.31 S0itb4sM.net
■各種仕様 (続き)
◆ JavaScript Garden (ja)
URLリンク(bonsaiden.github.com)
◆ JSON (JavaScript Object Notation)
URLリンク(www.json.org)
■諸注意
vol.115でlodashを不必要に推奨して啓蒙する行為が多く確認されており、ライブラリ系の質問はvol.116から禁止されました。
vol.115,116ではライブラリ禁止する発言が見られた直後にライブラリを許可する意図で次スレを立てる行為が確認されています。
本スレッドでライブラリ許可を求める発言が確認された場合は不要な争いを避ける為、スルーすることを推奨します。
ライブラリの質問はライブラリスレへ誘導し、誘導行為への反論はスルーしてください。
6:デフォルトの名無しさん
16/03/09 03:00:01.13 6uZQGjqP.net
スレリンク(pc2nanmin板:216番)
↑ ↑ ↑ ↑ ↑ ↑
7:デフォルトの名無しさん
16/03/14 08:46:07.23 RZ1GsRz+.net
誰かいませんか?
8:デフォルトの名無しさん
16/03/14 10:15:53.45 h0SaP8VW.net
いますよ。ずっと。あなたの後ろに。
9:デフォルトの名無しさん
16/03/14 10:50:06.69 t/84a/RD.net
いま来ました
10:デフォルトの名無しさん
16/03/14 11:03:34.88 h0SaP8VW.net
宇宙からのメッセージです
11:デフォルトの名無しさん
16/03/14 11:20:27.58 JjlziuNG.net
前スレが消化されてから人も増えるかと
12:デフォルトの名無しさん
16/03/20 19:33:23.36 0939kaIS.net
JQueryみたいなライブラリを使わずに非同期APIを同期的に実行する良い方法は有りませんか?
13:デフォルトの名無しさん
16/03/20 20:03:50.21 evsTqtHC.net
Promiseでラップするのが無難
14:デフォルトの名無しさん
16/03/21 04:13:33.83 lwkXzPK7.net
>>12
Promiseに対応していない古いブラウザでやるなら
bluebirdというライブラリを使うといい。
標準のPromise機能に加え便利メソッドが増えている。
15:デフォルトの名無しさん
16/03/21 07:35:25.86 fN+PxOXs.net
javascriptでクローラは作れますか?
具体的には画像のダウンローダーを作りたいです。
下位階層まで根こそぎ取ってくるようなものです。
node.jsで作れるとあったのですが
16:デフォルトの名無しさん
16/03/21 07:36:57.38 lwkXzPK7.net
初心者がよく言うセリフ
○○言語で△△は作れますか?
作れない言語なんてまず無いよ。
17:デフォルトの名無しさん
16/03/21 08:47:44.94 .net
>>15
まんま本出てるから大丈夫よ
18:デフォルトの名無しさん
16/03/21 09:22:30.77 Xz9aFOH3.net
>>14
ライブラリを使わずにって書いてあるのが読めない人ですか?
19:デフォルトの名無しさん
16/03/21 09:35:52.01 lwkXzPK7.net
>>18
読めないんじゃなくて、読まない。
20:デフォルトの名無しさん
16/03/21 09:51:19.79 Xz9aFOH3.net
>>19
つまり、ヴァカってことですね。
21:デフォルトの名無しさん
16/03/21 09:52:34.56 lwkXzPK7.net
>>20
それは論理的じゃないな。
なぜ読まない=馬鹿なのか?
22:デフォルトの名無しさん
16/03/21 10:11:23.87 Xz9aFOH3.net
>>21
馬鹿は口を閉じてるといいよw
23:デフォルトの名無しさん
16/03/21 10:21:00.80 .net
jQueryの話しようぜ
24:デフォルトの名無しさん
16/03/21 10:25:47.94 lwkXzPK7.net
>>23
了解
25:デフォルトの名無しさん
16/03/21 10:42:07.02 Xz9aFOH3.net
>>24
馬鹿は口を閉じてるといいよ
26:デフォルトの名無しさん
16/03/21 11:57:05.09 Q2tTgw28.net
では聞こう。JQueryの定義とはなんだ?
27:デフォルトの名無しさん
16/03/21 15:29:23.97 lwkXzPK7.net
JQueryじゃなくてjQueryな
28:デフォルトの名無しさん
16/03/21 22:05:08.28 iER/zWdn.net
>>23
なんでIDないの?
29:デフォルトの名無しさん
16/03/21 22:51:19.14 gUE5p+TD.net
Idが出ないと死ぬっていう都市伝説
30:デフォルトの名無しさん
16/03/21 22:57:43.40 hs33rQ/Z.net
>>15
クローラーは、Rubyだろ。
paiza.IO で、それっぽいコードをよく見るけど
まあ、Electron(Node.js + Chromium)でやりたいなら、やれば?
31:デフォルトの名無しさん
16/03/21 23:22:13.08 isb2gyBM.net
ページにテキストフォーム、セレクトメニュー、チェックボックスが多数ありまして
保存ボタンを押すとcookieを保存して、読み込みボタンを押すとcookieが読み込まれる
というページを作りたいです。
javascriptでnameを一つ一つ指定して保存するような感じでなら出来たのですが、
今後要素が増えるたびにcookieの方も調整するのが面倒だと思いました。
ページ全体の状態をまるごとcookieに保存するのに簡単なコードの書き方などありますでしょうか?
jQueryでも何か簡単な方法はないかと探しているんですが初心者なのでいまいちわからないです
よろしくお願い致します。
32:デフォルトの名無しさん
16/03/21 23:31:41.43 hs33rQ/Z.net
cookieには、そんなに大きいデータは入れられない。
せいぜい、1KB以下まで
HTML5のWeb Storage でオフライン環境に、キャッシュを保存する
33:デフォルトの名無しさん
16/03/22 01:14:15.87 UN51cu0Y.net
では問おう。状態とは何か?
34:デフォルトの名無しさん
16/03/22 01:20:20.54 rdrmg4XV.net
ドラゴンブックを読んで状態数の削減を実装する。
35:デフォルトの名無しさん
16/03/24 00:38:34.81 YyzBD89/.net
promiseを返す関数a b cがあるとして
aのpromiseが終わったらbを実行
bのpromiseが終わったらcを実行
cのpromiseが終わるまでaの呼び出し元で待機
みたいな処理をネスト控えめに書けますか?
36:デフォルトの名無しさん
16/03/24 00:50:23.16 QUxdzUzn.net
>>35
それが出来るのがプロミスだろうが!
37:デフォルトの名無しさん
16/03/24 01:10:42.04 Dc6NU6wk.net
呼び出し元で待機、の解釈によるけど返ってきたインスタンスを指すなら可能
そのコード位置からの同期処理の再開を指すならasync/await使わないと無理
38:デフォルトの名無しさん
16/03/24 02:23:12.67 vscoeD/v.net
async/awaitはPromiseを使った処理をもっと簡潔に書けるように
JavaScript構文を改良したものなんだから、
async/awaitでできるならばPromiseでもできるんだよ。
39:デフォルトの名無しさん
16/03/24 14:33:45.16 yOLyGMcJ.net
javascriptでi osとアンドロイド両方のスマホアプリは作れます?
作れるとしたらデメリットは有りますか?
遅いですとか
40:デフォルトの名無しさん
16/03/24 14:49:26.54 v9bzQn8L.net
質問
let ar = [];
let br = ar;
ar.unshift(0); とか ar.push(0); とかしても br は ar と常に同じ配列を参照してる事は保障されてる?
41:デフォルトの名無しさん
16/03/24 15:17:29.36 yOLyGMcJ.net
後もう一つ質問なんですが、node jsで画像のダウンローダーっぽいものは作れますか?
42:デフォルトの名無しさん
16/03/24 22:40:22.01 sBlWvTvY.net
JavaScriptのスレッドモデルがよくわからんのだけど
JavaScriptのコードとして書いた部分はUIスレッドで実行されるって保証されてるの?
C#で言うとBeginInvokeした時のよう考えていいのだろうか
p = 非同期API();
q = 非同期API();
p.done(A);
q.done(X);
p.done(B);
と書いた場合に別スレッドで実行されるのはあくまで非同期APIだけで
AとBとCはPromise使おうがsetTimeoutしようが単に後回しにされるだけで結局全部UIスレッドで実行されるから絶対に衝突しないって事でいいの?
43:デフォルトの名無しさん
16/03/25 01:13:56.64 Y9GDVUzX.net
>>39
作れる
デメリットは変換に使うプラットフォームの仕様やバグに付き合う必要があること
>>40
されてる
その場合brが参照しているのはarじゃなくて配列自身
>>41
作れる
>>42
だいたい最終行の理解で合ってる
シングルスレッドでレンダリングとキューの消化を交互に繰り返してる感じ
44:デフォルトの名無しさん
16/03/25 11:11:25.08 eOfUcnNe.net
HTMLでラインみたいなチャット画面作ってるのですが、フッターに設置したテキストボックスをタップするとキーボードでテキストボックスが隠れてしまいます
どうすればよいでしょうか?
ちなみにコントローラはjsです
45:デフォルトの名無しさん
16/03/25 21:00:38.71 N0KH+ld0.net
隠れないように、または隠れても見える位置までスクロール出来るように余裕を取る
46:デフォルトの名無しさん
16/03/26 13:53:31.01 GwvfWp/j.net
>>44
Android 5.1.1 Google Chrome で再現できない
URLリンク(jsfiddle.net)
現象を再現可能なコード、対象ブラウザ名及びバージョンは?
47:デフォルトの名無しさん
16/03/26 15:24:40.02 KP7AUrYI.net
nodejsってnodejs側のプロンプトを使うんですか?
win側のプロンプトを使うんですか?
48:デフォルトの名無しさん
16/03/26 16:39:24.78 hZGT0ViJ.net
>>47
というと?
49:デフォルトの名無しさん
16/03/26 19:19:26.98 2IjmMYr5.net
ページの全状態を保存したい
閉じて再び開いたときに元の状態に戻したい
なんとかなりませんかねこれ
50:デフォルトの名無しさん
16/03/26 21:28:37.50 AMZqaLeO.net
>>49
DOMの内部状態は再現できないのでどうにもならない
最初からなんとかするように作れ
51:デフォルトの名無しさん
16/03/26 22:31:52.28 5qdFWVjA.net
amazonのこれから開催予定のセールのページで
商品一覧で商品のタイトルにspan id="dealTitle"
がそれぞれ使われてるんですけど、idって重複していいんですか?
52:デフォルトの名無しさん
16/03/26 23:56:34.06 nOSHwcxN.net
>>49-50
RoR, CakePHP などのフレームワークでは、
フォーム送信のvalidateで、入力エラーがあると、
フォームに入力した内容も、消されずにそのままになっているけど、
これはサーバーサイドだからな
クライアント側で、前の画面を保存するには、
入力内容をファイルで保存するしかない
53:デフォルトの名無しさん
16/03/27 03:48:09.52 HhHg2DAX.net
>>52
だから最初からそう言ってんだよ出しゃばり
54:デフォルトの名無しさん
16/03/27 07:23:56.73 60dasars.net
localStorage使えばええんちゃうの
55:デフォルトの名無しさん
16/03/27 09:50:21.72 MdJCnp0Y.net
Viewはシリアル化不可能だからModelをシリアル化可能にするしかないのかな
そしてViewの状態をModelから関数的に復元できるように設計にしなければならないと
56:デフォルトの名無しさん
16/03/27 10:03:52.53 HhHg2DAX.net
データ変更イベントで全部制御すればよし
開始時は全てが変更とみなす
これでDOMイベントもwebsocketもstorageイベントも全てに対応だ
57:デフォルトの名無しさん
16/03/27 10:25:36.38 /vjbvHhC.net
var org ="全100件・・・_全120件..._全45件_'''"
var ret =org.replace( /(全)(\d+)(件)/g, "$1" +"/"+ ("$2"-0+1)+"/"+"$3" )
ret の値
期待→ 全/101/件・・・_全/121/件..._全/46/件_'''
実際→ 全/NaN/件・・・_全/NaN/件..._全/NaN/件_'''
正規表現の置換ですが "$2”を 数値に変換して値を1増やすことができません。
parseInt、Numberを使ってもおなじでした。
解決方法ご存知の方がいましたら教えていただければ幸いです。
58:デフォルトの名無しさん
16/03/27 12:19:54.26 x3ePCErE.net
>>49
そういうのはブラウザ側に任せるべき領分(セッションの復元)だと思うのだけど。
どうしてもやりたいなら、
- focusの記録(localStorage)
-スクロール位置の記憶(localStorage)
- JavaScript機能の状態をhashに記録(pushState)
- ログイン状態の記録(Cookie、サーバサイド処理)
59:デフォルトの名無しさん
16/03/27 12:24:40.83 UR7Ecaqc.net
replaceの第二引数が "$1/NaN/$3" になっててそもそも$2が消えてるな
文字列じゃなくて関数突っ込んでその第三引数を変更するのがいいと思うよ
60:デフォルトの名無しさん
16/03/27 12:25:14.33 x3ePCErE.net
>>57
replaceのコールバック関数で受け取るか、while, execでキャブチャした変数から作り直すか
61:57
16/03/27 14:39:03.13 /vjbvHhC.net
>>59,60
こんな感じでしょうか?
var org ="全100件・・・_全120件..._全45件_'''"
var ret =org.replace( /(全)(\d+)(件)/g,
function(
matchText,
ref1,
ref2,
ref3,
position,
self)
{
return ref1+((ref2-0)+1)+ref3;
}
ひとまず、期待通りの動きができています。
アドバイスありがとうございました。
62:デフォルトの名無しさん
16/03/27 16:17:42.83 wSRwnaYP.net
node jsでリクエストモジュール(最初から入ってますよね?)を使って画像取ってきたいのですが、
var my = require('絶対パズ/request');
console.log(my);
としてもモジュールにアクセス出来ないというエラーが出るんですが、なぜでしょうか?
他の問題でしょうか?
あと、requestモジュールは、インストールはされている状態なのでしょうか?
63:デフォルトの名無しさん
16/03/27 18:10:03.43 s1WEC1Fp.net
>>61
無駄な変数が多いな。
var org = "全100件・・・_全120件..._全45件_'''"
var ret = org.replace( /(?<=全)(\d+)(?=件)/g, function(num) {
return parseInt(num)+1;
});
ES6を使うのならば更に短くなるけど
var ret = org.replace( /(?<=全)(\d+)(?=件)/g, num => parseInt(num)+1)
64:デフォルトの名無しさん
16/03/27 18:54:15.04 UR7Ecaqc.net
>>62
まずバンドルされてるのはhttpね
次にパズじゃなくてパス(Path)
そんでglobalのモジュールは名前だけでrequireできる
nodeスレのテンプレに初心者向けのリンクがあるから目を通すといいよ
65:デフォルトの名無しさん
16/03/27 19:49:01.73 bXTz64zw.net
この言語ってイベントはdomにしかないのか
66:デフォルトの名無しさん
16/03/27 20:32:51.88 +zvcgvl1.net
そもそもタスクキューが言語レベルで定義されたのがES2015からだからね
Promiseで使われてる
67:デフォルトの名無しさん
16/03/27 20:42:59.04 HhHg2DAX.net
>>65
どうしたらそんな馬鹿な結論に
68:デフォルトの名無しさん
16/03/27 21:44:33.38 bXTz64zw.net
>>67
自作クラスにイベント定義しようとして方法をググったらdocument.createEvent使えって書いてあったからそういうもんなのかなと
.NETみたいな汎用的なマルチキャストデリゲートはないのかな
69:デフォルトの名無しさん
16/03/27 21:59:43.14 mBj9pM3F.net
現状ESの範囲でやるならPromiseを利用するしかない。
因みにdocument.createEventは古過ぎて非推奨なやり方。
今はEventコンストラクタを使う。
70:デフォルトの名無しさん
16/03/27 23:43:22.80 HhHg2DAX.net
>>68
jsは元からdelegate的にthis付けて関数渡せるからいらん
と言うかそう言う意味のイベントなんて
わざわざ言語に入れてる方が珍しい
スレッディングが問題ならsetTimeout
71:デフォルトの名無しさん
16/03/27 23:59:58.48 HhHg2DAX.net
なぜPromiseが出てくるんだ?
72:デフォルトの名無しさん
16/03/28 00:15:44.30 2h3yopdG.net
node.addEventListener("xxx", function (e) {xxx();});
node.addEventListener(...
とか書くの超だるいじゃん
node.onxxx += (e) => xxx();
node.onxxx += ...
って書ければいいじゃん
つかDOM要素以外はaddEventListenerが定義されてないからそこから書かなきゃだしもうやだ
73:デフォルトの名無しさん
16/03/28 00:33:41.97 qkrUQjq7.net
>>72
node.addEventListener("xxx", xxx);
74:デフォルトの名無しさん
16/03/28 00:43:14.68 jP0nw9w8.net
>>68
nodeならEventEmitterを使えばいいよ。
EventEmitter2とかならブラウザでも動くらしいけど
このスレに居るやつはブラウザで動くJavaScriptのことしか
知らないから、よく現実的ではない回答がでてくるので注意。
75:デフォルトの名無しさん
16/03/28 00:45:19.83 jP0nw9w8.net
>>65
> この言語ってイベントはdomにしかないのか
DOMは言語じゃない。
ブラウザが用意しているライブラリにすぎない。
76:デフォルトの名無しさん
16/03/28 02:04:57.93 NypY0af3.net
XMLHttpRequestについて勉強しています。
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
/*この内容を関数外から参照したい*/
var data = JSON.parse(xmlhttp.responseText);
}
}
}
xmlhttp.open("GET", "test.json");
xmlhttp.send();
alert(data); /* こんな感じで表示したい */
これでJSONファイルから値を取得できるのですが、
function()外からdataの値を参照するにはどうすればいいのでしょうか?
上記のalertに値が入る方法を教えて下さい。
77:デフォルトの名無しさん
16/03/28 04:22:27.57 +hSVfs2f.net
>>71
setTimeoutもD(B)OM APIだから。
JobキューによるイベントループがES言語レベルで定義されたのはES2015からで、
それにアクセスできるのはPromiseしかない。
他は全部外様な物。
>>76
コールバックを勉強
78:デフォルトの名無しさん
16/03/28 07:34:18.85 Kq+xA51M.net
>>74
ブラウザについてだけ言ってるレスってどれ?
79:デフォルトの名無しさん
16/03/28 07:38:22.67 Kq+xA51M.net
>>77
タスクキューはイベントとは別
そもそもそれ自体は簡単に実装できるし
80:デフォルトの名無しさん
16/03/28 14:08:14.84 bQjH0a26.net
>>64
どうもありがとうございます。
そっちのスレも見てみます
81:デフォルトの名無しさん
16/03/28 14:12:43.07 AqyD+FoJ.net
>>76
グロバル変数
82:76
16/03/28 15:21:37.64 NypY0af3.net
>>77
コールバックってreturnで返すやつですよね?
>>76のソースで言う
var data = JSON.parse(xmlhttp.responseText);
の後に、
return data;
を書いても受け取り方が分かりません。
xmlhttp.onreadystatechange = function ()
としているわけですし・・。
>>81
グローバル変数って関数外で変数宣言しますよね?
var json_data;
var xmlhttp = new XMLHttpRequest();
~中略~
var data = JSON.parse(xmlhttp.responseText);
json_data; = data;
としてjson_dataに代入されません。
XMLHttpRequestを使ったやり方では違うんですかね?
マニュアルを何度も見たのですが、この辺がよくわかりません・・・
83:デフォルトの名無しさん
16/03/28 15:29:23.31 8nd4zd+D.net
var dataって変数消しな
84:デフォルトの名無しさん
16/03/28 15:35:31.52 UwAduPwe.net
分岐するので非同期通信では無理
同期通信にしないと返り値はとれないよ
85:デフォルトの名無しさん
16/03/28 16:19:51.96 3hfk1W8A.net
>>79
そりゃ同期的なものなら幾らでもできるが、
DOMイベントとか一般的な非同期なイベントはESの範囲では表現できない。
ただしPromiseを活用することでできる。
86:デフォルトの名無しさん
16/03/28 17:12:03.19 5Y2MOZMB.net
>>82
代入するまで処理を停止させるんですから、まさに同期通信の挙動ですよね
他の方もいってますが、同期通信にしては?
87:デフォルトの名無しさん
16/03/28 17:18:33.22 To6NOCCD.net
>>82
素朴な疑問なんだが、dataに代入してるその部分でalert(もしくはalertにあたる処理)しちゃいかん理由があるのだろうか?
88:76
16/03/28 17:31:19.89 NypY0af3.net
>>86-87
クラスや関数の中でJSONのデータを取得して、それを関数外から参照したいのです。
なんか根本的に間違ってるんですかね・・。
JSONファイルの内容って非同期通信以外でも取得できるのかも・・。
とにかく、>>76のコードではどうやっても無理という結論で良いのでしょうか?
89:デフォルトの名無しさん
16/03/28 17:44:30.66 szf/wSg3.net
>>88
流れを良く追ってないが、
> xmlhttp.send();
は非同期通信なので、呼び出し後データを受信する前に処理はすぐに下に遷移する。
> alert(data); /* こんな感じで表示したい */
なので、この行ではまだデータは受信していない。
Ajaxの受信完了時に
> var data = JSON.parse(xmlhttp.responseText);
が実行されるが、そもそも>>76のコードが一つの関数なら、もうその関数の
実行は終わってるわけでreturnなどはできない。
ではどうするかというと、>>76がfunc()の中だとして、
・var data = ...の行の下に処理を書く
・global_data = としてグローバル変数に入れる(もちろん、受信前は空)
・funcにcallback関数を引数で渡す
var my_callback = function(data) { //dataを参照する処理 };
があったとして、
func = function(callback_func) {
...
var data = JSON.parse(xmlhttp.responseText);
callback_func(data);
...
}
func(my_callback);
で呼び出す。
90:デフォルトの名無しさん
16/03/28 17:45:50.00 3hfk1W8A.net
同期XHRはWorker以外では極めて非推奨だから非同期を使うしかない
非同期を使うとそのようには書けない
ただジェネレータやasync/awaitを使って同期的に書くことは出来る
おまけで言うなら
onreadystatechangeではなくonloadを使い、
JSON.parseではなくresponseType='json'を使うのが今流
そしてさらにモダンなのがfetch
どのみち非同期的な書き方に慣れたほうがいい
91:デフォルトの名無しさん
16/03/28 18:09:19.03 UwAduPwe.net
生産性と利便性を考慮するなら
jQuery ajaxを使った方がいいと思う
学習目的なら流してね
92:76
16/03/28 18:19:55.16 NypY0af3.net
>>89
かなり詳しくありがとうございます。以下の様なコードに変更しました。
var my_callback = function(data) {
alert(data);/* dataの中身が表示される*/
return data;/*これでは無理*/
};
func = function(callback_func) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var data = JSON.parse(xmlhttp.responseText);
callback_func(data);
}
}
}
xmlhttp.open("GET", "test.json");
xmlhttp.send();
}
/*コールバックが実行される*/
func(my_callback);
/*my_callbackをreturnにした場合*/
var hoge = func(my_callback);
alert(hoge);/*何も表示されない*/
コメントにも記述していますが、my_callback内でalertをすればアラートが表示されます。
しかし、my_callbackの内容を受け取りたいとしてreturnをした場合は表示されません。
関数外から参照するのは無理なのでしょうか?
93:76
16/03/28 18:22:49.16 NypY0af3.net
>>90-91
フリーのプラグインなど、jQuery使っていないものがありまして、
そういうプラグインをカスタマイズして、JSONファイルの内容を参照し、
そのプラグインに組み込みたい、というのが最終目的です。
ですので、非同期通信やJavascriptの基礎から勉強しているのですが、
理解が乏しく、皆さんのアドバイスを正確に受け取れていない状態です・・・
94:デフォルトの名無しさん
16/03/28 18:31:35.81 szf/wSg3.net
>>92
> 関数外から参照するのは無理なのでしょうか?
my_callback()もfunc()の外側なんだが・・・。
つまるところ、自分が参照したい全ての所から参照できる変数global_dataを作って、
> var data = JSON.parse(xmlhttp.responseText);
のかわりに
> global_data = JSON.parse(xmlhttp.responseText);
とやればいいだけの話。
ただし問題は、いつglobal_dataにデータが設定されるかわからない所。
95:デフォルトの名無しさん
16/03/28 19:45:04.22 UwAduPwe.net
>>93
var getJson = function() {
var x;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
x = JSON.parse(xmlhttp.responseText);
}
}
xhr.open('GET', 'test.json', false);
xhr.responseType = 'JSON';
xhr.send(null);
return x;
};
var data = getJson();
jQuery ajaxを使った方がいいと思うけど
96:デフォルトの名無しさん
16/03/28 19:48:00.76 UwAduPwe.net
訂正
誤:x = JSON.parse(xmlhttp.responseText);
正:x = JSON.parse(xhr.responseText);
97:デフォルトの名無しさん
16/03/28 20:51:31.44 To6NOCCD.net
>>92
手続き型っぽい書き方あきらめたらどうだ?
returnする目的って、要はその下でなんか呼びたいんでしょ?
フリーのプラグインとやらを、そこで初期化したらどうなの?scriptタグ書くとかして。あんまり勧めないけど。
プラグインって何なの?
98:デフォルトの名無しさん
16/03/28 21:12:37.35 surT/WgL.net
1つ間違いなく言えることは今新しくjQuery ajaxを使うより
fetchのポリフィルを使ったほうがベター。
99:デフォルトの名無しさん
16/03/28 21:13:11.47 Kq+xA51M.net
>>85
いや実装できるよ何をおっしゃてるのか…
100:デフォルトの名無しさん
16/03/28 21:43:03.94 surT/WgL.net
>>99
何をどう使えば実装できると言うの?
簡単でいいから教えて。
101:デフォルトの名無しさん
16/03/28 22:07:15.35 To6NOCCD.net
>>100
jQueryのasync:falseとか言われるよ。
102:デフォルトの名無しさん
16/03/28 22:36:17.91 5Y2MOZMB.net
>>92
あなたのやりたいことは同期通信だからopenの第三引数をfalseに設定する
URLリンク(developer.mozilla.org)()
通信が終わるまでスクリプトの実行を停止するからUI的に美しくないけどね
103:デフォルトの名無しさん
16/03/28 23:31:36.73 +LUEdcB2.net
美しくないだけならいいが、"must not"で禁止されてるからね。
後方互換性のために今はまだコンソールへの警告だけで利用できるが、
いつ例外を吐くようになっても文句は言えない。
URLリンク(xhr.spec.whatwg.org)
104:76
16/03/28 23:45:17.88 NypY0af3.net
>>95
この方法で出来ました!!まさに求めていたとおりです!
全体を関数に入れた変数にしてreturnすればよかったんですね。
コードの良し悪しはあるかと思いますが、
自分としては目的の動作が出来たので前に進めました。
皆さん、親身になってアドバイスして頂き、本当にありがとうございます。
今後も精進していきます。
105:デフォルトの名無しさん
16/03/29 00:04:17.83 QYd4S8TL.net
>>102
それ非推奨。
chromeなんかだと、そのうち例外出して落とすからって言ってる。
106:デフォルトの名無しさん
16/03/29 00:22:53.72 CiYiwfo2.net
つーか ID:5Y2MOZMB みたいなアホは黙れよ
同期を教えて助けたつもりになっているアホも
だからお前らはゆとりのままなんだよ
107:デフォルトの名無しさん
16/03/29 00:34:20.46 K66wvvFn.net
プラグインを改造したいっていうことなんだし、まあいいんじゃね?
108:デフォルトの名無しさん
16/03/29 02:00:12.73 YkBe3d8C.net
どうやってもコード汚くなるんだがどうすればいいの
ジャヴァスクに親和性高いパターンとかあるのか
109:デフォルトの名無しさん
16/03/29 02:28:56.54 oBN7G4CB.net
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
この本は、Scott Meyers の本より、わかりやすい
110:デフォルトの名無しさん
16/03/29 04:22:40.86 40DENoq9.net
XMLHttpRequestでPromiseとかいい出すと
jQueryを使った方が楽って結論になるんだよな。
クロスブラウザのAjax通信+Promiseになってるから
111:デフォルトの名無しさん
16/03/29 04:24:33.66 UIi8OIde.net
>>100
アホかいな
配列と定期的なループで実装できるだろ
実際タスクキューなんて大半がそうなっとるわ
112:デフォルトの名無しさん
16/03/29 04:26:21.27 UIi8OIde.net
もしかしてjsは非同期だけどシングルスレッド、という基本的な事すら理解してない?
113:デフォルトの名無しさん
16/03/29 06:04:51.79 coyYjSQU.net
webworker使えば非同期じゃん
114:デフォルトの名無しさん
16/03/29 09:53:30.62 yarEvdgl.net
エンジニア(技術者)とは理論を現実化すること
ここを見ていると能書きばっかりでガックリ
115:デフォルトの名無しさん
16/03/29 10:12:35.49 ISdoAk/Z.net
>>66,77は>>65を納得させるコードを書けばいいと思う
116:デフォルトの名無しさん
16/03/29 10:29:19.12 NT5SVIu7.net
>>114
能書き以下の文句のみ書く奴もわからんけどね。
理論を現実化するって何なんだ?
117:コールバックするものを同期的にどうしても値を返したい、ってそれか?
118:デフォルトの名無しさん
16/03/29 10:46:38.03 z/ezpeX2.net
>>103
なるほど。将来的に廃止予定だから警告や例外を発しても良い仕様なのね。勉強になった。
119:デフォルトの名無しさん
16/03/29 10:46:56.26 yarEvdgl.net
御立腹のようで
失礼、能書きじゃなくて薀蓄かな
覗いてみた個人的感想として流してくれたらいいんだけど
質問に対して>>95のように回答してから薀蓄を並べる方が良いのでは?
ってことですよ
120:デフォルトの名無しさん
16/03/29 12:09:31.03 NT5SVIu7.net
>>118
俺書いたけどね。
コードじゃなくて考え方だけど。
理解できないコードよりも余程為になるように書いてるつもり。
var getJson=function(cb){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState ==4 && xmlhttp.status == 200) return cb(JSON.parse(xmlhttp.responseText));
};
xmlhttp.open("GET", "test.json");
xmlhttp.send();
}
getJson(function(ret){
//alertなり、
//document.write("<script src='プラグインのjs'></script>");なり、
//data=ret;なり、
})
すれば?って話。
どーしてもdataが入るまで処理を止めたいなら、
yieldとか使うしかねーんじゃないの?
121:デフォルトの名無しさん
16/03/29 13:24:26.66 ZJ5WWFRI.net
>>119
それは非同期通信でJSONデータを取得しての分岐処理だよね
質問の主旨は変数に通信でJSONデータを格納することだよ
122:デフォルトの名無しさん
16/03/29 13:34:39.47 kWaaro/J.net
ちょっともうコールバックの概念と、Javascriptにおけるスコープの概念を知らない奴は黙ってて欲しい
123:デフォルトの名無しさん
16/03/29 13:35:38.58 NGEgZfA0.net
コールバック内で受け取った値をその外で使おうとする所が破綻してる
それは途中どういう手段を用いようが同期処理という (UIを止める処理だけを同期処理と言う訳じゃない)
コールバック内で受け取った値はコールバック内で処理すべし
124:デフォルトの名無しさん
16/03/29 14:01:50.79 kZZssD4f.net
>>111
その「定期的」なループがESの範囲では実現できないでしょ。
精々ビジーループしかできない。
それだと例えばDOMの変更をポーリングしてそれをイベントとすることはできない。
イベントとして実際重要なのは刹那の間処理を外部に受け渡して待つこと。
これができないとDOMイベント同じ使い勝手と効果のものは実装できない。
その刹那の間待つ定期的なループをESの範囲で実現しようとすればPromiseを使うしかないという話。
125:デフォルトの名無しさん
16/03/29 14:03:11.20 0EsoxiRu.net
>コールバック内で受け取った値をその外で使おうとする所が破綻してる
まったく石頭だわ
Storageに保存して外で使うことできるけどな
126:デフォルトの名無しさん
16/03/29 14:15:07.45 z/ezpeX2.net
>>123
Promise で DOM Events 相当の機能を実現できる気が全くしないのだけど、
例えば、MutationObserver 相当の事を Promise で実装するにはどのようなコードを書く?
127:デフォルトの名無しさん
16/03/29 14:17:53.64 kZZssD4f.net
>>125
Promiseを活用すればsetImmediateやnextTick相当の機能を実装できるから
それでポーリングすればいい。
128:デフォルトの名無しさん
16/03/29 14:23:21.29 NGEgZfA0.net
>>124
いつStorageに保存されたかをどうやって知るんだよ
結局何らかの同期処理をすんだろ
129:デフォルトの名無しさん
16/03/29 14:32:13.22 zwegJ/gg.net
おめぇら馬鹿だな。
イベントはPromiseの代わりになるが
Promiseはイベントの代わりになるとは限らない。
例えばダウンロードの進捗具合のように
定期的に発生するイベントはPromiseでは実現できない。
Promiseは状態が遷移したらそれ以降動かないからだ。
onreadystatechangeもStateが変わるたびに呼び出されるから
Promiseでは全てを実現できない。
まずこれが基本だから、これを理解してから喋れ
130:デフォルトの名無しさん
16/03/29 14:38:06.76 NGEgZfA0.net
requestAnimationFrameを使え
この中で状態をポーリングしてUIを更新すればちらつかずに更新できるし
スクロールにもきちんと追従できる
131:デフォルトの名無しさん
16/03/29 14:50:41.80 yLeRa/O1.net
>>127-129
元の流れが
>>65-68
のような無茶な流れなので、実用上の話と思うと当然無茶がある
それと、基本的にイベントに当たるものを作る時の話だからね
簡単な例えではsetTimeout的な機能も作れない
勿論全てのタスクを登録してビジーループで回したり、
事ある度にタスク管理に処理を戻せばある程度は可能だが、
Promiseを使えば既存のsetTImeoutやcreateEventとほぼ同じ使い勝手・効果のものを
エミュレートすることができる
132:デフォルトの名無しさん
16/03/29 15:02:49.41 0EsoxiRu.net
>>127
当たり前だろ、毎回非同期通信しないために
同期通信で格納することを前提で言ってるんだよ
キミの言うようなことを言ってたらグローバル変数も使えないよ
133:デフォルトの名無しさん
16/03/29 15:09:45.93 z/ezpeX2.net
>>126
よくわからないんだけど、それで MutationObserver 相当の事が出来るのね
具体的なコードが欲しいんだけど
134:デフォルトの名無しさん
16/03/29 15:10:48.04 NGEgZfA0.net
>>131
同期処理するんだったら何もStorageを出さなくてもいいよ
普通にグローバル変数を使えばいいんだから
なんでStorageを出した?
135:デフォルトの名無しさん
16/03/29 15:16:11.37 0EsoxiRu.net
>>133
論点をずらしてるんじゃないよ
石頭だって言ってるんだよ
日本語OK?
136:デフォルトの名無しさん
16/03/29 15:21:23.12 NT5SVIu7.net
>>120
変数に格納してんじゃん。。
getJsonに渡してる匿名関数のコメントの三行目の代入はグローバルにだよ。
そっから好きなスクリプトタグ書けって言ってんの。
137:デフォルトの名無しさん
16/03/29 15:26:38.39 0EsoxiRu.net
>>119に対して、>>120の指摘が当然だろ?
もっと逆上って言えば、質問者の意図する回答をしていないから荒れるんだよ
>>76の問に対して、>>95の回答 これで普通は解決なんだよ
あとは個々の主観ばかりの与太話にしか思えないよ
138:デフォルトの名無しさん
16/03/29 15:28:19.14 NT5SVIu7.net
教えてくれって言われたから教えて、
日本語読めないからコードかけって言われて、
コード書けって言われたからコード書いたらコードリーディングも出来なくてて、
ド低能にも程があるわ。
139:デフォルトの名無しさん
16/03/29 15:30:38.77 NT5SVIu7.net
>>136
アホか。
非同期通信で、一つずつ次の作業をするのは、
同期通信にほかならんだろ。
.then().then....
は全部非同期だよ。順番に呼んでるだけで。
そもそもグローバル変数に保存してるしな。
140:デフォルトの名無しさん
16/03/29 15:34:40.10 NGEgZfA0.net
>>134
いや突然Storageとか言って引っ込みつかなくて顔真っ赤にしてるのはわかったよw
141:デフォルトの名無しさん
16/03/29 15:38:22.94 z/ezpeX2.net
>>119は非同期処理前提なら妥当な提案だと思うけどね
この処理の肝はコールバック関数で受ける事であってグローバル変数やStrageだとかは完全な蛇足
>>76を完全に満たすには>>95の同期処理しかないわけだけど、現実的には非同期処理の方が望ましいからね
142:デフォルトの名無しさん
16/03/29 15:39:09.01 Z5Jc75xQ.net
まああれじゃね
非同期XHRはJSのコールバックや非同期処理の良い勉強になるから
自分で色々調べて練習しろっていうのが最良の答えじゃね
143:デフォルトの名無しさん
16/03/29 15:43:56.03 0EsoxiRu.net
>>139
お前が顔真っ赤なだけだろ?w
>>76が、味噌ラーメンを注文したんだから、
塩分多いから、やっぱりチャーシュー麺、醤油の方が美味しいよ、
味噌は塩分多いから...
など、どうのこうの言っているのと同じ
味噌ラーメンを食いたい人には味噌ラーメンを食わせば良いんだよ
さあ仕事するわ
144:デフォルトの名無しさん
16/03/29 15:52:51.17 NGEgZfA0.net
>>142
シメはラーメンかよwwお前にふさわしいよw
145:デフォルトの名無しさん
16/03/29 16:29:40.76 zwegJ/gg.net
>>130
> Promiseを使えば既存のsetTImeoutやcreateEventとほぼ同じ使い勝手・効果のものを
> エミュレートすることができる
setIntervalはどうやって作るの?
146:デフォルトの名無しさん
16/03/29 16:33:27.36 kWaaro/J.net
>>122
ajaxでdata collection取得
↓
画面に反映
↓
ユーザが何か操作
↓
data collection更新
↓
ajaxでpost
って普通だと思うけど。
147:デフォルトの名無しさん
16/03/29 18:18:43.36 NT5SVIu7.net
>>142
つくづくアホだな。
あたたかい水下さい→そんなもんねえよ、その代わり湯をやるよ。ってくらい的外れな事に現実的な回答を返してるよ。
米粉で作ったラーメン下さい→なんの事かわからんけど、米粉で作るのはフォーで、こういうの。
ラーメンはこういうの、って答えてるんだよ。
塩分が多いとかそんな問題じゃなくて。
食いたいものが物として現実解では有り得ないよ、って指摘。
何も読めてないのか、もう振り上げた拳が降ろせないのかわからんが、
新しい知識を素直に取り入れるのもプロだよ。
148:デフォルトの名無しさん
16/03/29 18:21:00.48 zwegJ/gg.net
お湯っていうのは、英語でhot waterっていうんだよ。
つまり熱い水。
149:デフォルトの名無しさん
16/03/29 18:22:02.75 NT5SVIu7.net
>>147
そうだね。知ってるよ。
同じように、日本語で言う同期的な処理を、javascriptではコールバックで行うんだよ。
150:デフォルトの名無しさん
16/03/29 18:24:59.77 kWaaro/J.net
>>148
> 同じように、日本語で言う同期的な処理を、javascriptではコールバックで行うんだよ。
それは初耳
151:デフォルトの名無しさん
16/03/29 18:25:56.86 NT5SVIu7.net
>>149
まぁ、Promiseの実装でも見てみれば?
152:デフォルトの名無しさん
16/03/29 18:32:13.69 kWaaro/J.net
>>150
非同期処理だって、コールバックで処理するだろと思っただけ
153:デフォルトの名無しさん
16/03/29 18:39:58.03 BL4JYHCh.net
物は言いようってやつだろ
これ以上相互理解は出来ない
話は終わり
154:デフォルトの名無しさん
16/03/29 19:50:19.09 cRlulqCL.net
非同期XHRのsend直後にsleepさせてみたらどうかと思ったけど
実際の通信の方が終わっても一旦イベントループ勧めないと状態が更新されないのな
やっぱりfetchとawaitでも使うしかないか
155:デフォルトの名無しさん
16/03/29 20:13:48.80 CiYiwfo2.net
本日の低脳荒らし ID:yarEvdgl
理由:他の文句言っている奴は少なくとも「技術的観点」から物を言っているが、
こいつは感情的なことを言っているだけ。
てか俺はむこうのキチガイBBA = ID:NypY0af3 = ID:yarEvdgl じゃないかと思っているんだが。
とにかく回答が欲しい、それについては煽ろうが他人の指摘を無視しようがお構い無しだろ。
低脳っぷりも似ている。
そもそも質問も見覚えがあるんだが。
お前らが何をしたいのか分からんが、回答先と回答内容はちゃんと選べよ。
お前らのためにもならないぞ。
回答すればいいってものじゃないんだよ。
>>119
挑発に乗るな。お前のためにもならないぞ。
どうみても>>76は一行も理解しておらず、コピペでしかないだろ。
だから76は何とかしてコードを書かせたいだけなんだよ。自ら学ぼうなんて微塵も思っていない。
そもそも回答に不服があるのなら、かっこいい回答を自分で書けば済む話だ。
それも出来ない癖に文句を言っている時点で察せ。
そもそも「車輪の再発明」をあれほど嫌うお前らが何故「回答の再発明」を嬉々としてやるのか意味不明だ。
どうやらお前らゆとりは何故「車輪の再発明」が駄目なのか理解できていないようだ。
これは「回答の再発明」だと思われる案件は、無視したほうがいい。
多分それがお前らのためにもなると思う。
156:デフォルトの名無しさん
16/03/29 20:21:42.04 cRlulqCL.net
必ずしもそうは言えないかと
Webの進歩は日進月歩で何が最良かは日々変わるので、
それを確かめることが無意味ではないということと、
車輪の再発明は初心者が技術を磨くためには有用で、
その教え方としてどうするのが良いのかを議論するのも無駄ではない。
だからこそ皆話し始めて話を続けているわけで
157:デフォルトの名無しさん
16/03/29 20:40:04.88 z/ezpeX2.net
車輪の再発明は勉強の為に役立つね
「車輪の再発明をしなくていいから車輪が何かを知っている必要はないんだよ」と主張する輩もいるけど、違うと思うな
158:デフォルトの名無しさん
16/03/29 21:48:07.43 D22lADAw.net
お前らのレスこそ非同期そのもの
159:デフォルトの名無しさん
16/03/29 22:55:48.28 .net
一日中スレに張り付くのはロングポーリングかな
160:デフォルトの名無しさん
16/03/29 23:20:15.85 CiYiwfo2.net
>>155
「再発明」は自習に「有用」で、君が「教え方」を学びたいのなら、
君がやるべき事は、MDNを再読することだ。
それが「車輪の再発明」におけるライブラリコードリーディングに該当する。
少なくともここで "sleep" とか言い出して余計に混乱させることではない。
それにお前らも分かっていると信じたいが、「車輪の再発明」と同様、
お前ら以上にJavaScriptを知っている連中が、お前ら以上に時間をかけて丁寧に説明しようとした結果がMDNだ。
もちろん誤字脱字訂正も為されている。(デバッグ済)
だからそれ以上の説明をここでサクっと出来ることは稀だ。
ライブラリ推進派なら、MDNの説明を使える部分はさくさく引用して終わりにするべきだ。
糞みたいな説明されても質問者も迷惑だろ。
お前らは結果的にお互いに足を引っ張り合っていることに気がついていない。
「同期XHR」なんて明らかに間違いだし、そもそも非同期で書けないようではJavaScriptではやっていけない。
そこで躓いたら、インストールするしかないんだよ。
こいつは非同期以前にクロージャ、スコープ、グローバルも分かってない風だし、
「最初からやりなおせ」が正しい解答だ。
ここで間違った「同期XHR」を教えるのは、一時的には解決になるものの、長期的に見ると遠回りになる。
お前らもそういった「長期的に見て遠回り」のことばかり教えられ、
結果的に時間の割に成長せず、低レベルにとどまっているように見える。
まるきり分かってないような奴は、「最初からやり直せ」で追い返すべきだ。
それが本人のためにも、君らのためにもなるんだよ。
161:デフォルトの名無しさん
16/03/29 23:25:54.24 zwegJ/gg.net
3行にまとめろ
162:デフォルトの名無しさん
16/03/29 23:27:50.39 h9Hf6Oqw.net
質問が日に6つも7つもある状況なら言ってることも多少理解できるが
そうでないのだから、別に慣れ合いを楽しんだっていいでしょ
163:デフォルトの名無しさん
16/03/29 23:52:24.48 NT5SVIu7.net
>>151
データが来てから、何かを行う、
これを同期的な処理と言わずなんと呼ぼうか。
他の処理とは非同期だけどね。
って言葉遊びだよ。
なんかすまなんだ。
>>154
人間、コピペから始めるもんだよ。
小1のひらがな書き取りから漢字ドリルから、読書感想文から文学作品に至るまで。
それがナンセンスだよ、と言われて、考え方を示唆されて、それでも分かんなくて例を出されて、アホさを痛感すれば多少は学ぶだろ。
だからクソ叩くけどね。
164:デフォルトの名無しさん
16/03/30 00:30:36.08 Op2rn9Lq.net
>>159
> それが「車輪の再発明」におけるライブラリコードリーディングに該当する。
「車輪の再発明」は何のコードを読まず、一からコードを書くことを指すものだと思うが、コードを読んだらそれはただのコピペプログラミングではないのかね
「車輪の再発明」をするならPolyfill系が実用的かつ内部動作を知る機会を得られてお勧めだな
Selectors APIとかclassListとか仕様書とにらめっこしながらコードを書くのは割と楽しい
165:デフォルトの名無しさん
16/03/30 08:02:34.29 rLuvgVFw.net
>>156
少なくとも現代社会では君のような奴は必要とされない。
166:デフォルトの名無しさん
16/03/30 09:03:18.80 BnXnDw8Q.net
納期が迫ってるチーム内でこんな会話してたらそりゃ無駄だと思うが
ここでは必要なことだよ
167:デフォルトの名無しさん
16/03/30 11:19:35.17 dKie64pY.net
>>164
現代社会ではじゃなくてIT土方企業ではの間違いだろw
自ら学習せずしてどうやって技術力を高めるのか?
お前のように自分の価値を自分で貶める輩がいるから日本の技術者は給料が低いんだぞw
168:デフォルトの名無しさん
16/03/30 11:42:46.78 5NyBO0m8.net
会社にとって生産性を意識しない一般レベルの技術者はゴミ
また、プロとは呼べない
169:デフォルトの名無しさん
16/03/30 12:41:28.81 rLuvgVFw.net
>>167
ですね。
170:デフォルトの名無しさん
16/03/30 12:47:47.70 .net
いま倉庫物流業界におるけど
IT技術より業界のしきたり?慣習?を理解する方が大変
人に聞かないと判明しないし…喫煙所でコーヒー奢ったり…
171:デフォルトの名無しさん
16/03/30 12:54:55.38 yO7JBNvw.net
決められた納期で最大限の結果を出すのがプロ
その為には自分がやりたかった事を他人に振ることもするし
逆に時間を作って自分がやりたい車輪の再発明もする
ただプロジェクト自体は必ずうまく行くから誰も文句は言わない
それが出来る奴
172:デフォルトの名無しさん
16/03/30 13:06:33.19 iiS6Zli9.net
>>170
プロに夢見すぎ
金が稼げてればプロ
173:デフォルトの名無しさん
16/03/30 14:37:03.78 Op2rn9Lq.net
生産性と勉強の時間は別問題
生産性が下がるから勉強しないというのは本末転倒
174:デフォルトの名無しさん
16/03/30 15:00:52.65 rLuvgVFw.net
>>172
詭弁は他でやるといいよ
175:デフォルトの名無しさん
16/03/30 16:04:19.16 aZ4nzpeD.net
特定の文字列例えば’ABC’の文字列を含むTextNodeの検索を行いたいのですが
querySelectorみたいなもので全体に対して検索書けるようなAPIはあるのでしょうか?
176:デフォルトの名無しさん
16/03/30 16:16:36.25 cWDvBnb1.net
>>174
何回も同じ質問をするな
177:デフォルトの名無しさん
16/03/30 16:23:20.36 Op2rn9Lq.net
>>174
document.evaluate
178:デフォルトの名無しさん
16/03/31 11:29:17.02 ymqhTLQ0.net
>>171
違うだろ、本職でも稼げない奴は沢山いる
179:デフォルトの名無しさん
16/03/31 11:36:31.72 fi72UJLf.net
>>176
ありがとうございますXPathってもしかして結構便利なんですかね。
とりあえず目的のことができました。ありがとうございます
180:デフォルトの名無しさん
16/03/31 11:52:08.55 AghJqbjM.net
>>177
稼げてない奴は「自称プロ」
181:デフォルトの名無しさん
16/03/31 12:46:18.71 z7eByYkq.net
node jsでnpmをインストールしようとすると、
「npm should be run outside of the node repl in your normal shell」
というメッセージが出るんですが、これはどうすれば回避出来るのでしょうか?
182:デフォルトの名無しさん
16/03/31 13:05:54.63 7B1LSXi4.net
その文面でググると一番上にstackoverflowでドンピシャなのが出てくるよ
どっから落として実行したのか知らんけどインストーラー使っとけって
183:デフォルトの名無しさん
16/03/31 13:08:58.74 z8vLV66o.net
そりゃnode jsでしようとしてるからだよ。
というかその文章で教えてくれてるじゃん。どうして読まないの???
npmコマンドはnodeのreplで使うものじゃない。
各OSの標準シェルから叩くもの。
184:デフォルトの名無しさん
16/03/31 13:11:32.09 z8vLV66o.net
>>181
どアホ
stackoverflowを参照するなら上の方の+5,6のそういう回答じゃなくて
+30付いてる方にしろよ
185:デフォルトの名無しさん
16/03/31 13:14:41.63 7B1LSXi4.net
>>183
ちょっと待てよ!
件のはそもそもnpmが使えないからnodeからnpm iしてみたらって話でしょ
恐らく>>180は同じケースだろうからああレスしたんだよ
186:デフォルトの名無しさん
16/03/31 13:25:08.83 mJpDHBVP.net
CSS Browser Selectorというjsファイルについて質問です
「商用利用可だが著作権の明記が必要」と解説しているサイトに書いてあったのですが、これはソースに書いておけば良いということなのでしょうか
それともスクリプトが実行されるページ内に表示する必要があるのでしょうか
よろしくお願いします
187:デフォルトの名無しさん
16/03/31 13:47:11.71 yy0681Er.net
何々を使っていますと、サイトのフッターにでも、書いておけば?
188:デフォルトの名無しさん
16/03/31 13:55:36.38 7B1LSXi4.net
どんなライセンスを使用しているかによる
そのライブラリだとCC2.5だけど本来ソフトウェア向きのものではないから微妙だな
CCの趣旨では使用したドキュメント内で著作権表示が行われることを想定しているから
Webサイトで使うならページ中にクレジット表示入れるのが無難だと思う
189:デフォルトの名無しさん
16/03/31 14:29:30.30 mJpDHBVP.net
>>187
なるほど
ソフトウェア向きではないんですね…
ありがとうございます 助かりました
190:デフォルトの名無しさん
16/03/31 16:23:25.76 z7eByYkq.net
>182
ありがとうございます
プロンプトでやったら出来たっぽいです
どこにインストールすればいいのかわかりませんが
191:デフォルトの名無しさん
16/03/31 16:57:04.95 fi72UJLf.net
すんませんxpathの使い方を教えて下さい
<p><a>123</a>abc<a>efg</a></p>
に対して以下のxpathを試してefgの部分は取得できたのですが
//*[text()="abc"]/*[text()="efg"]
できればabcの部分(条件を満たすエレメントの先頭要素)を取得したいのですが
どう書けばいいのでしょうか?
192:デフォルトの名無しさん
16/03/31 17:10:45.04 acvfOefz.net
>>190
efg取れたならそいつの親の子じゃないの?
193:デフォルトの名無しさん
16/03/31 18:09:57.76 fi72UJLf.net
>>191
//*[text()="abc"]/*[text()="efg"]/..//*
とすると
<a>123</a>, <a>efg</a> が取れるんですがテキストノードが何故か除外されてしまいます。
194:デフォルトの名無しさん
16/04/01 00:55:35.78 o32zNHl2.net
JavaScriptだとコールバックで匿名関数渡してじゃんじゃんネストしてってよくやるけど
ちゃんとユニットテストしたいときってどーしてんの?
195:デフォルトの名無しさん
16/04/01 01:01:52.29 6H5rXnFj.net
そもそもしない
ユニットテストはアプリケーション層以下で行う
賞味期限が切れたら殆どが使い捨てられる運命にあるプレゼンテーション層でユニットテストは作業者の負担になるだけ
196:デフォルトの名無しさん
16/04/01 03:20:39.57 0Q+2ltBp.net
言語エンジンを書いた時は流石に重厚なテストを書いたけど、
それ以外ではまともに書いたことがないね。
それが長期に渡って発展され続けて、かつ構造の変わらないものでないとテストを書く意味は薄い。
テストってのは一番はいつの間にか壊れてたってのを防ぐためのものだからね。
一発ものだったり、バージョンが上がる度に要件が結構変わりそうなものでは費用対効果が悪い。
まあある程度変化が落ち着いてから改めて書くってのはありだと思う。
でももうこれ以上発展させなくなった時に書いても仕方がない。
成長過程のちょうど中ほどで書くというのがベストなんだろうけど見通すのはなかなか難しい。
197:デフォルトの名無しさん
16/04/01 03:43:30.09 0hX+vVN6.net
>>195
テストってのはいつの間にか壊れてたを防ぐものじゃないだろ。
これはこういう動きをすると保証しますって物じゃないの?
198:デフォルトの名無しさん
16/04/01 05:49:03.45 xgn0cw4K.net
>アプリケーション層
>プレゼンテーション層
OSI参照モデル?
199:デフォルトの名無しさん
16/04/01 06:53:34.67 LDlR2m0j.net
アホが湧いてるwww
200:デフォルトの名無しさん
16/04/01 07:13:59.22 2GR9s30v.net
ユニットテストすべきかどうかは置いといて
JavaScriptのネストしまくってダラダラ書くスタイル嫌い
オブジェクト指向と言いつつモジュールとか機能の単位とかの概念と合わない
201:デフォルトの名無しさん
16/04/01 07:22:16.84 0P46FgGj.net
>>190-192
XPath って直接いじったりするもの?
何かのライブラリを通して、使うものじゃないの?
Groovyなら、XmlParser, XmlSlurper とか、イベントベースのSAX, StAX を使うと、
クロージャでコールバック関数を書ける
Groovy学習14 XmlSlurperによるXMLの解析
URLリンク(symfoware.blog68.fc2.com)
202:デフォルトの名無しさん
16/04/01 08:16:46.78 BBjX6NvI.net
>>200
URLリンク(developer.mozilla.org)
203:デフォルトの名無しさん
16/04/01 09:20:32.97 QIAaDLEb.net
>>199
御意、見出しのない辞書のようなモノ
見るだけでウンザリ
204:デフォルトの名無しさん
16/04/01 09:30:23.42 CHPnKeLy.net
>>196
言い方見方を変えただけで実際はほぼ同じ事のように見えるが
205:デフォルトの名無しさん
16/04/01 09:38:12.97 7UmkX6sZ.net
>>203
違うよ。
壊れてるのを検出するためのものじゃなくて、
壊してしまうことを検出する為のもの。
206:デフォルトの名無しさん
16/04/01 11:58:37.72 .net
>>193
ややこしいロジックをまとめたクラスにはユニットテストするけど
CasperJSでテストして動けばええやろと言う態度です
207:デフォルトの名無しさん
16/04/01 13:15:45.37 QIAaDLEb.net
>コールバック
バカの一つ覚え
208:デフォルトの名無しさん
16/04/01 13:33:28.72 BBjX6NvI.net
>>203
>>195だとヒューリスティックスキャンのように読める
209:デフォルトの名無しさん
16/04/01 17:45:36.67 8p2KsOzx.net
>>204
その2つも実際はそんなに変わらないと思うが、
どちらかと言うと自分は後者のニュアンスで言ってる。
210:デフォルトの名無しさん
16/04/01 19:53:09.41 xvbiumjA.net
>>197
そうみたいね
JavaScriptはアプリケーション層だと思うけど
211:デフォルトの名無しさん
16/04/01 19:55:30.67 ADMr3fbY.net
JavaScriptとHTMLの組み合わせだとUIパターンは何がいいんですかね
MVVMはバインダが無いから上手く行かなそう
MVPとMVCだとどっちが良いんだろう
212:デフォルトの名無しさん
16/04/02 02:29:36.95 d3CGaqY7.net
当然最適解は状況による。
そしてMV何かは拘る必要はない。
これから標準的にオススメされていくのはRxJS 5にあるようなObservableを使ったパターンだが、
別になんだって良い。
213:デフォルトの名無しさん
16/04/02 09:03:53.56 uByagQKe.net
URLリンク(youtu.be)
214:デフォルトの名無しさん
16/04/02 11:20:30.33 .net
AngularJS 1.5使ってるけどあれは何パターンなんですかのう
215:デフォルトの名無しさん
16/04/02 13:24:45.76 7QV6Y65D.net
>>190
descendant::text()[.="abc"]
URLリンク(jsfiddle.net)
216:デフォルトの名無しさん
16/04/02 15:06:34.57 NSyOUFVI.net
>>213
MVVMじゃない。
React.jsは何パターンなんだろね。
217:デフォルトの名無しさん
16/04/02 18:45:38.17 kcrpe57e.net
>>215
変形Observableじゃないか?
あいつらのやった一番偉大な事は、ありきたりな物の組み合わせに名前をつけて定義するって事だと思ってる。
「こんな形の、向かい合った辺の組み合わせが平行な四角形」に、「平行四辺形」って名前をつけると、みんな頭の中にちゃんと平行四辺形が浮かぶようになるような感じ。
そもそも、クラサバアプリのwinmainとコントロールとUIスレッドの組み合わせと全く同じで、なんの発明でも無いからな。
218:デフォルトの名無しさん
16/04/02 18:46:04.82 aCJgiZnd.net
実質MVCしかない感じ
バインダ書くのがめんどくさいからフレームワーク無しでMVVMはまず無理
MVPは非同期処理が貧弱なせいで書きにくい
MVCなら簡単
UIイベント.done(サーバ通信().done(モデル更新).done(UI更新))
これだけで全てが上手くいく
219:デフォルトの名無しさん
16/04/02 19:05:21.28 MErRnMko.net
そもそもDOMの仕組み自体がMVCを包括してるんだから
厳密にMVなにかを言うのは難しい
220:デフォルトの名無しさん
16/04/03 10:42:42.99 YP3p5dYq.net
DOMはただの文書を操作するための規格でしかないだろう。
221:デフォルトの名無しさん
16/04/03 11:17:51.87 rmt1T5Kd.net
node jsでは普通のプロンプトとnode.exeのプロンプト、
何が違うんでしょうか?
どちらを使うのでしょうか?
222:デフォルトの名無しさん
16/04/03 12:14:21.00 kdjOntdl.net
>>47の人?
223:デフォルトの名無しさん
16/04/03 12:24:41.11 7jlo6lqN.net
JavaScriptってどういう形で開発して配布するのがスタンダードなんですかね
①開発時にはモジュール単位でファイルを切って
ファイル間の依存関係がある場合はscriptタグの追加によって依存先を読み込む
②開発時にはモジュール単位でファイルを切って
公開する前に全ファイルを結合してしまう
プログラマ的な感覚だと①がしっくりくるんだけどscriptタグ追加とファイルのロードが非同期的なため扱いにくく通信回数も増えるなどデメリットがある
②はちょっと気持ち悪いし結合の手間がかかる点と不必要なコードも結合してしまう点が良くない
なにかいい方法ないですかね
224:デフォルトの名無しさん
16/04/03 12:25:15.68 6MQCRpaJ.net
>>193
ちゃんとしたい時には匿名関数は使わない
一部を除いてほぼ全ての関数に名前を付ける
225:デフォルトの名無しさん
16/04/03 15:30:11.54 OaDtSrzO.net
>>220
node はコマンドで、node.exe はたぶん実行ファイル
Linuxではターミナル(端末)を起動すると、bash などのシェルが起動する。
そのシェルで、node などのコマンド名を打ち込むと、
環境変数の探索パス(PATH)の順番に、例えば、こういうディレクトリの順番で、
/usr/local/sbin/:/usr/local/bin:/usr/sbin/:/usr/bin/:/sbin:/bin
そのコマンド名が登録されているかどうかを探す
数個あるどの探索パスにも、そのコマンド名が登録されていなければ、
そのコマンド名は存在しないので実行できない、というエラーになる
端末で、which node と書けば、nodeコマンド名が、
どこの探索パス内にある、どのプログラムを指しているか、わかる。
つまり、どこかの探索パス内にある、node.exe
226:デフォルトの名無しさん
16/04/03 18:55:00.49 rmt1T5Kd.net
>>224
つまりwindowsについているプロンプトの方を使って、nodejsを実行するということですよね。
コマンドなしならnode.exeの方からも操作出来るってことですよね。
すっきりしました。ありがとうございます。
227:デフォルトの名無しさん
16/04/04 04:17:01.68 HKTiO3l5.net
なんか感覚がちょっとズレてると思うが
228:デフォルトの名無しさん
16/04/04 09:07:46.39 zlday2Sk.net
>>226
言っちゃ駄目だよ
自己満足してるんだから
229:デフォルトの名無しさん
16/04/04 15:11:29.01 kC7w/ICj.net
>>226
どういうことでしょうか?
230:デフォルトの名無しさん
16/04/04 19:11:54.27 NjHEg+Kd.net
javascriptがオフの場合無効化されているというテーブルを表示したいけど
<div id="JSoff" style="width: 400px; text-align:left;border: 5px solid #ffaaaa; padding:10px;background:#ffffff">
<B>JavaScript</B>が無効化されています。<BR>
全ての機能を利用するには<B>JavaScript</B>を有効にしてください
</div>
<script>document.getElementById("JSoff").style.display = "none";</script>
javascriptがオンになっている場合これだとブラウザでページを読み込むときに
一瞬ちらっと無効化されているというテーブルが表示されてしまいます
このちらつきを解消する方法はありますか?
231:デフォルトの名無しさん
16/04/04 19:40:36.90 u65DNVI0.net
>>229
noscriptつかえやカス
232:デフォルトの名無しさん
16/04/04 19:48:15.98 23c2ZC8H.net
>>229
modernizrを使えばいい。
URLリンク(modernizr.com)
簡単に説明すると、HTMLに<html class="no-js"> と書いておくと
JavaScriptが有効の場合に <html class="js"> に書き換えてくれる。
あとは.no-js .class もしくは .js .class とかでcssを使って
表示非表示を制御できる。
modernizrが重いと思うならば、同じことを自分で作れば良い。
単にHTMLタグのclassのno-jsをjsに変更するスクリプトを書くだけ。
233:デフォルトの名無しさん
16/04/04 22:37:38.34 aA7d4T8T.net
>>229
JavaScriptを使って解決するなら
document.styleSheetsを書き換えれば良い
最も、内容的にはnoscript要素が妥当な気がするが
234:デフォルトの名無しさん
16/04/05 08:20:53.68 F8KWDDTe.net
>>229
display.hidden
235:デフォルトの名無しさん
16/04/05 10:04:36.42 OVtadeSC.net
noscript、あるいはheadに埋め込んだスクリプトから上書きのstyle要素をwriteすればいい
236:デフォルトの名無しさん
16/04/05 10:25:58.75 iKLx8/tN.net
modernizerでもいいけど使うまでもない気が
display: none にしておいて$().readyでshow()とかで十分
237:デフォルトの名無しさん
16/04/05 11:25:54.14 vndmlNk/.net
>>229
ところで満足できた?
238:デフォルトの名無しさん
16/04/05 23:22:21.68 gGzP1w2i.net
>>235
showじゃなくてhtmlかbody要素に対するaddClassとかにしてください。
showとか使うと、showしたいものが増えるたびに
コードが増えていって目障り。
っていうか、jQueryを使うまでもなく一行のscriptで十分
ready時にやることじゃない
239:デフォルトの名無しさん
16/04/05 23:49:48.18 wlptsMO2.net
chrome上で、javascriptで動的に作ったデータをダウンロードさせたいのですが
このようなコードだと「0x80」ではなく「0xC2 0x80」の2バイトのファイルがダウンロードされます。
var blob = new Blob(["\x80"]);
var link = document.createElement('a');
window.URL = window.URL || window.webkitURL;
link.href = window.URL.createObjectURL(blob);
link.download = "downloadfile";
link.click();
0x7Fなら意図通り1バイトのファイルとなるのですが、解決方法ありませんでしょうか?
240:デフォルトの名無しさん
16/04/06 00:11:19.27 QegkB/wb.net
>>236
JavaScriptのスレ、こういうのも多いよな。
何故だかは分からんが。
241:デフォルトの名無しさん
16/04/06 03:03:48.81 kRFLofHq.net
質問なんですけどスレ違いならすみません
探したけどここが一番適切かなという気がしたので、そのときは誘導かけてもらえると嬉しいです
現在JavaScript勉強中なのですが、どうしてもES5の仕様が苦手というか混乱してしまう感じで、調べたところES6/CoffeeScriptなどが魅力的に思えました
ただ、ES6はまだ対応が不十分なようですし、CoffeeScriptは初心者が手を出すのは推奨できないようなことも聞きます
いずれにせよES5は一通り確認はするつもりですが、実際の開発にこれらを用いるのは推奨されがたいことでしょうか?
242:デフォルトの名無しさん
16/04/06 03:08:36.42 q1HrDxSz.net
>>237
addclassはどのタイミングでやるんですか?readyですか?
243:デフォルトの名無しさん
16/04/06 03:45:58.88 eDxTjoz1.net
>>235
何か勘違いしている気がするが、script-off時には表示してscript-on時には表示しないコンテンツ制御の話でscriptで非表示にすると一瞬見えてしまう問題への対処だぞ
あなたの説明だと逆に読める
244:デフォルトの名無しさん
16/04/06 04:50:52.54 SC9yOBng.net
>>242
何が勘違いだと思ったの?
245:デフォルトの名無しさん
16/04/06 04:53:21.71 SC9yOBng.net
>>237
それコード量変わらなくない?
246:デフォルトの名無しさん
16/04/06 05:12:41.13 7tA2KQf1.net
>>241
jQuery使うなら原則としてreadyでやらないといけなくなる。
だけどこの場合はそこまで遅らせる必要がない。
jQueryを使わなければそれよりも早い段階で処理を行える。
readyはDOM構築後なので厳密に言えば画面に表示されてから少し遅れて発動する。
>>244
addClassはHTMLかbody要素につける。
だからshowしたいものが増えても一つだけでいいし
何よりCSSで見た目を処理できる所が優れている。
247:デフォルトの名無しさん
16/04/06 07:58:50.48 BFsTf7eA.net
>>239
漏れは、乃木坂46の755を見るけど、
一瞬前のページが見えるし、勝手にスクロールが動く。
最近の投稿も見れない
この会社、バグが多すぎる
>>240
RoRは、CoffeeScript だったかな?
248:デフォルトの名無しさん
16/04/06 10:34:16.16 kxGSeBFy.net
>>240
ES6(今はES2015)はほぼchromeで動くしそのまま書けるよ。
個人的にはTypeScriptこそ初心者向きな気がする。
ライブラリの使い方をIDEが教えてくれるようになる。
ただしnpmの使い方とかnode.jsのエコシステムの勉強も必要になるけど
249:デフォルトの名無しさん
16/04/06 12:39:08.17 eaJ/kAxl.net
プレビュー機能のあるhtml5+javascriptエディタって無いですか?
ブラウザアプリを作ってますが、ブラウザの切り替えが面倒です。
250:デフォルトの名無しさん
16/04/06 13:12:21.73 y1UF9DzI.net
>>248
Electronでいっその事作ってみては?
251:デフォルトの名無しさん
16/04/06 14:05:21.20 eDxTjoz1.net
>>245
そのやり方の場合、show() が入る余地がない
URLリンク(jsbin.com)
ちなみに、CSS採用なら>>232,234でも良くて特にclassに拘る理由はないはず
252:デフォルトの名無しさん
16/04/06 16:02:40.09 kRFLofHq.net
回答ありがとうございます
>>246
RoRは未経験ですがRubyが好きなのであの雰囲気に惹かれたという部分はあります
>>247
古いブラウザとかに配慮しろという話だったのでしょうか?
仕事でやるわけではないので、あまり気にしなくていい程度ならそれの方が好ましいですね
TypeScriptも確認してみようと思いますが、その場合はVisualStudio推奨です?
253:デフォルトの名無しさん
16/04/06 17:29:23.15 nw3yxtcq.net
TypeScriptを今から始めるのはねぇ……
まあいいか
今V8がES.nextを見据えた型付構文のテスト実装してきてるけど
そんなにTSと差異ないしね
ただし、デコレータやらジェネリックやら、
なんでもTS独自の機能使うときは
きちんとES.next標準の流れに近いものか定期的に確認した方がいいね
変なのに慣れても仕方ないから
254:デフォルトの名無しさん
16/04/06 18:35:37.93 kRFLofHq.net
>>252
何か微妙だったりするのでしょうか?
新旧いろんな情報が交錯しててうまく判断できずにいたのですが、自己判断できるようになるまで余計なことしない方がいいとかならばそうします……
一応最終的にはHTML5と組み合わせてアプリケーション作れると嬉しいなと思っているのですが
255:デフォルトの名無しさん
16/04/06 19:34:51.87 u2n9JpiE.net
まあでも余計なことしないとか言ってると何にもできない、できるようにならないから
自己満足、少々分かったくらいで満足せず、
色んな情報を常に収集し、試して分別を付けていくほうが良いと思うよ
256:デフォルトの名無しさん
16/04/06 20:49:12.92 eDxTjoz1.net
>>251
仕事でなくともIE11-をサポートしないのはお勧めしないが…。
「IE閲覧不可、Google Chrome, Firefox をインストールしてください。写真者お断り。」な注意書きを書く事に躊躇がないなら止めないが。
URLリンク(kangax.github.io)
257:255
16/04/06 20:55:04.63 eDxTjoz1.net
× 写真者お断り
○ 初心者お断り(別のブラウザをインストールできるリテラシーのある人だけ閲覧して下さい)
258:デフォルトの名無しさん
16/04/06 21:09:16.73 kRFLofHq.net
>>254
ありがとうございます
そうですね、無理のない程度に頑張ります
>>255
あ……思った以上に厳しい
すみません、あんまりブラウザごとの際に明るくなくて
259:デフォルトの名無しさん
16/04/06 21:14:41.83 /OWN3IzC.net
別にサポートしなくても普通全く見れなくなるわけじゃないんだし大げさじゃね
モダンブラウザ前提で作って、レガシーブラウザでは動くとこだけ動けばOKってスタンスは全然アリだと思うよ
260:デフォルトの名無しさん
16/04/06 21:29:03.79 eDxTjoz1.net
Windows 7,8,8.1の標準ブラウザであるIE11-をレガシーブラウザと称するのは抵抗がある。
Windows 7以上なら8.1にアップグレードしてEdgeへの乗り換えを促す事は出来るが。
261:デフォルトの名無しさん
16/04/06 21:40:22.43 /OWN3IzC.net
IE11は出たばかりの時は確かにモダンと呼べるものだったが、
現在となってはレガシーとしか言いようが無いし、
仮にIE12が出たとしても自動アップデートされず標準の流れに付いていけないものは
モダンブラウザと同等にはもてはやせず、まともに相手にできないだろう
「モダンブラウザのベースライン」に加えてそういうIE11とかを相手にするとそのとき倍労力がかかるのに加え、
知識を保持するという面でも相手にする個数倍労力がかかる
結局無難な面倒を見る落とし所は「モダンブラウザのベースライン」と「JS OFF」の2つ
それにES5がギリギリ使えるIE9や古めのモバイルブラウザを加えて3つにするかどうか
最初からIE11を下限で開発することが決まってでもいないかぎり、
合理的にどうわけてもIE11はもはやモダン側には入らない
262:デフォルトの名無しさん
16/04/06 21:56:00.60 iUuTyWAf.net
開発者視点ではIE11がレガシーブラウザと称することもできようが、ユーザ視点ではそうもいかない。
機械音痴の人は他のアプリのインストール方法も知らんし、新しいUIになじめる自信がなくてWindows Upgradeも怖くてやらん保守派の人は大勢いる。
そもそも、Windows VistaはWindows8にUprade出来ないしな。
263:デフォルトの名無しさん
16/04/06 22:00:57.68 kxGSeBFy.net
>>252
>TypeScriptを今から始めるのはねぇ……
今からTypeScript始めるのってなんか問題あるかな?
ES2015+型って感じでいいと思うけど。
RxJSもTypeScriptでライブラリ自体書き直してるらしいし
React.jsもTypeScript使ったほうが書きやすい。
MacでもVisualStudioCode+TypeScriptの環境が使い勝手がいい。
型情報を集めるためのエコシステムがまだ不便なところがあるのが問題といえば問題かも。(TypeScriptは既存のJSライブラリを型付で扱うために別途型情報を管理する必要がある)
264:デフォルトの名無しさん
16/04/06 22:25:53.00 qvzg5VgE.net
>>262
これからの一年で型付構文やらデコレータやらジェネリックが
標準にどういう仕様で入るか細かなとこまで見えてくる
それによっちゃTSのそれらの仕様も一部古いものとされたり変更されるかもしれない
とういうか、いくらTSがES.nextを見据えたものとはいえ、
それらの型に纏わる部分はTSが理想とする独自の世界を気づいているから
標準の軸とずれるのは間違いない
だから今は取り敢えずそこら辺はおいといて、無難なES.nextのトランスパイラで我慢しておいて、
型周りの標準仕様が粗方定まってトランスパイラが受け入れるようになってから
使っていくほうが良いのではないかと思ってね
265:デフォルトの名無しさん
16/04/06 22:39:45.70 QegkB/wb.net
>>246
いや、かなり紛らわしかったが、俺が言いたかったのは質問しっぱなしの馬鹿が多いということだ。
それはさておき、755見てみたが、まあ許容範
266:囲じゃないか?こちらでは大した実害は無い。 このtwitterモドキ、何がいいのかは分からないが、これはおいておくとして、 上下逆だから、どうしても何らかの仕掛けが必要になる。 スクロールがずれるのは画像ロードがスクロール指定と非同期だからだ。 これを対策することは出来るが、スクロールがカクカクになるから今のほうがましだろう。 一瞬前画面が見える原因はXHRで中身だけ差し替えているからであり、 対策すると結局もっさりになるので大して意味が無い。 > 最近の投稿も見れない これはtwitter_widgetが上手く動作しておらずアップデートされないということか? こちらではよく分からない。
267:デフォルトの名無しさん
16/04/07 00:08:51.64 6pgtk04X.net
>>263
常に最新の仕様を使いたいと思わずES2015の範囲で使っておけばいいのでは?
ES2015の範囲ならTypeScriptはES2015+型という理解で問題ないと思う。
俺的には 静的言語によるIDE補完機能 > 最新の仕様を使いたい
だけどこの辺は好みなのかな?ES2016で便利な仕様ってなんかあったっけ?
268:246
16/04/07 01:09:52.18 pUEgfdfM.net
>>264
簡単には直せないんだね。ありがとう
269:デフォルトの名無しさん
16/04/07 09:02:52.62 X1sRymbk.net
>>265
何を使うべきかそれを全くの初心者が判断するのは厳しいだろう
それとES仕様はもう2016が固まってる時期で
次は2017と次から次に進んでいる
TSがES+αとして取り入れていたαの部分が
その「型」も含めてそろそろ2017や2018の辺りで標準に取り入れられそうだし
仕様はもうすぐ今年度一杯で細かいとこまで確定して行きそうということが重大
まあ仕様も大事なんだがそれと同じくらい実装状況も大事
つまり生きた今の、これからのJavaScriptの感じというのが最も大事で基準になるものであって
その点V8が型の実装を始めたというのは、
どこも実装に手を出してない他のES.nextの機能に比べると遥かに現実感が強く
TSの立ち位置や価値観に対して、まだ軽微だが無視できない影響を与えていると言って良い
270:デフォルトの名無しさん
16/04/07 09:08:24.98 WOcBPxvv.net
仕様より先に実装状況の把握
これで解決
271:デフォルトの名無しさん
16/04/07 09:09:44.79 X1sRymbk.net
あと型周りはO.oのようにGoogleが強く先行して推してきているものなので
V8は標準に取り入れられるよりもずっと速く実装を仕上げてくるだろう
O.oの件の反省がなければデフォルトで有効にしてくるくらいの勢いかもしれない
O.oの二の舞いになるかどうかは見ものである
272:デフォルトの名無しさん
16/04/07 19:09:45.36 9u6CMKZB.net
O.oとは何でしょう?
273:デフォルトの名無しさん
16/04/07 19:55:06.94 yj5lmIW7.net
>>270
URLリンク(developer.mozilla.org)
URLリンク(www.html5rocks.com)
274:デフォルトの名無しさん
16/04/07 21:19:11.33 9u6CMKZB.net
>>271
ありがとうございます
275:デフォルトの名無しさん
16/04/08 01:13:27.67 zB1D6Ii9.net
入力の検証を行いエラーがあればローカライズされたエラーメッセージのリストを返すようなWeb APIって変ですかね?
クライアントコードとサーバーコードに同じような検証コードを2回も書くのが無駄な工数に感じるのでこんな事をしています
276:デフォルトの名無しさん
16/04/08 01:47:47.44 g+7B4ruN.net
>>273
それがnodeが出てきた一つの理由じゃないかな。
ところでロケール送ってメッセージそのものを返してもいいとは思うけど。
277:デフォルトの名無しさん
16/04/08 08:43:38.59 NMN4wPSn.net
>>273
変ではないが、クライアント側での検証は通信せずに検証出来るメリットがなくなっている。
一つずつ入力の度に検証するのならsubmitするまで検証結果が分からないという事態は防ぐことができるが。
どちらにしてもサーバサイドで検証アルゴリズムを持って行きたいのならサーバサイドからpattern属性に正規表現を埋め込んで適切なフォームを生成→JavaScriptで検証させるのが妥当じゃないかな。
278:デフォルトの名無しさん
16/04/08 16:37:31.31 Y8o95cYY.net
Javascript、jQuery、Railsでアプリ制作勉強中の初心者です。
jQueryで中のコンテンツを切り替え可能なタブを作って、タブをクリックして表示切り替えされる中のコンテンツを入れるdivの一つにWebエディタを実装したいのですが、
正常に機能せず、エディタ部分をクリックしても反応せず、書き込みができない状況でレンダリングされてしまいます。
エディタはJavascriptで書かれているace.jsです。
【環境】mac, Rails, local
【何をしたのか】
サンプルコードの、
#box divにace.jsを表示させようとすると動作せず、
#tabmenu ul liに置くと正常に動作します。
正常に動作しないエディタ部分の画像=>URLリンク(imgur.com)
【エラーメッセージ】
Chomeのデベロッパーツールでこのようにエラー表示されています。
GET URLリンク(localhost:3000) 404 (Not Found)
【期待する結果】
サンプルコードの、#box divにaceエディタが正常に表示され書き込めるようにしたいです。
正常に動作したエディタの状況=>URLリンク(imgur.com)
【サンプルコード】
URLリンク(imgur.com)
jQueryのタブ切り替えが阻害要因のように思いますが、どのようにすればエディタが正常に機能するようになるのでしょうか?
279:デフォルトの名無しさん
16/04/08 17:27:19.92 pozyeBOI.net
function($) ← $を消す
280:デフォルトの名無しさん
16/04/08 18:25:41.87 KJJF2NFc.net
>>277
なぜ消すので?
281:デフォルトの名無しさん
16/04/08 21:22:05.88 Y8o95cYY.net
276です。
解決しました。関係ないと思ってたCSSが影響してました。
282:デフォルトの名無しさん
16/04/09 01:00:37.29 pEHBzpIW.net
エラーではないので、テンプレートを使わず質問させて頂きます。
[
{title:'hogehoge'},
{title:'fugafuga'},
{title:'piyopiyo'},
…
と続いていく配列で、それぞれのオブジェクトに通し番号(の要素)を一括で追加して、
[
{rank:1, title:'hogehoge'},
{rank:2, title:'fugafuga'},
{rank:3, title:'piyopiyo'},
…
283:デフォルトの名無しさん
16/04/09 01:01:21.06 pEHBzpIW.net
のようにしたい場合、どのように行うのが効率的(高速)なのでしょうか?
実際に内包するオブジェクトは数百個もあるため単純なループではすぐにブラウザがフリーズしてしまうのですが、Web Workerを使うほどのものなのか疑問に思い、質問させていただきました。
Web Workerを使うのが最も良いのであればそのまま使うのですが、標準の関数やjQueryに用意されている、もしくは別の方法があるのであれば教えて頂きたいです。
284:デフォルトの名無しさん
16/04/09 01:13:09.00 tonuQmGl.net
>>281
数百個ごときならどんな方法でもフリーズなんてしない。
本当にフリーズするのなら他の部分がいろいろと糞なだけ。
最近多いけどね、こういう初心者。
285:デフォルトの名無しさん
16/04/09 01:18:00.15 pEHBzpIW.net
>>282
フリーズというのは数秒~数十秒間画面が固まる、または応答なしのウィンドウが出るという状態を指していました。言葉不足ですみません…
処理時間が長いと画面に反映できない処理で使うため、画面が固まらない、かつ出来るだけ高速に行いたいのですが、最適な方法というものはあるのでしょうか?
286:デフォルトの名無しさん
16/04/09 01:36:40.47 tonuQmGl.net
>>283
その動作はフリーズと称していい。
ただ、お前はJavaScriptの速度を勘違いしている。
JavaScriptはいわゆるスクリプト言語の中では最速だ。
その操作なら1msかからないはず。
それ以上かかるのなら、お前のプログラムがバグっているだけ。
で、俺が言いたいのは、初心者が「遅いんですけど」と言うときは大概バグでしかないということ。今回も。
そもそも数百個の配列なんて小さい方だ。(初心者的には大きいと感じるのは分かるけど)
だからそのレベルの初心者なのを自覚してちゃんとデバッグしろということ。
287:デフォルトの名無しさん
16/04/09 01:48:15.06 IbDbD1ux.net
要するに配列の中身を少し編集してオブジェクトに変換したいってんなら
楽なのはArray#map、速度重視なら環境によるがforかwhileによるループ
ただ>>284の言うようにこのケースなら本来はほとんど一瞬で終わるはずだから
現在のやり方を見直したほうがいいと思う
288:デフォルトの名無しさん
16/04/09 04:37:41.51 r3WiJsdm.net
そもそも速度求めるならオブジェクトなんて使うなよ
.のコスト高いんだから
289:デフォルトの名無しさん
16/04/09 06:45:26.33 r6y5A1ZI.net
>>284
お前は人間性に問題がある
290:デフォルトの名無しさん
16/04/09 07:17:21.95 tonuQmGl.net
>>287
そんなんだからお前らはゆとりのままなんだよ
ところで、ゆとり的には俺のどの言い方が気に入らず、どう言ってほしかったんだ?
291:デフォルトの名無しさん
16/04/09 08:44:32.02 Q5Od8ZTh.net
>>280-281
while, Array#map の2択(おそらく前者が速い)だと思うが、titleのデータはどこから引っ張ってくる?
初めからrankを持つ静的データを定義するなり、サーバサイドで処理をさせるのは不可能?
2次元配列とか、フォーマットを変更することは出来ない?
292:289
16/04/09 08:47:15.84 Q5Od8ZTh.net
>>280-281
�
293:A番なら配列のインデックスがそのまま使えるのでは?
294:デフォルトの名無しさん
16/04/09 09:14:08.74 H1is7YF7.net
manko = [
{title:'hogehoge'},
{title:'fugafuga'},
{title:'piyopiyo'},
…
[
{rank:1, title:manko[0]},
{rank:2, title:manko[1]},
{rank:3, title:manko[2]},
…
295:デフォルトの名無しさん
16/04/09 09:16:16.71 H1is7YF7.net
訂正
[
{rank:1, title:manko[0].title},
{rank:2, title:manko[1].title},
{rank:3, title:manko[2].title},
…
296:デフォルトの名無しさん
16/04/09 11:14:18.39 3zJg02z1.net
>>288
> ところで、ゆとり的には俺のどの言い方が気に入らず、どう言ってほしかったんだ?
ゆとりじゃない人に、
ゆとり呼ばわるすることをやめることだねw
そんなんだからいつも適当にあしらわれるんだよw
297:デフォルトの名無しさん
16/04/09 12:00:38.42 tonuQmGl.net
>>293
ゆとりじゃないと言い張るつもりなら、それ相当の書き込みをしろよ。
俺から見れば、>>287,293 は典型的ゆとりの反応だよ。
技術的観点は全く無く、感情論で不満を述べているだけ。嘘や言い逃れだけ上手い。
旧世代はこの場合にこの反応は無い。
お前の回答ってどれなのさ?
298:デフォルトの名無しさん
16/04/09 14:00:31.47 ovBUPKju.net
>>283
「フリーズする原因がrankの挿入処理にある」と切り分けできてる?
rankの挿入処理を外して高速に動作するならわかるけど、そのコードを公開した方がクリティカルな回答が得られるかと
299:デフォルトの名無しさん
16/04/09 14:15:09.08 uqse8tS2.net
URLリンク(jsfiddle.net)
Android端末でも画面がフリーズしなかった
既出だが、切り分けが出来てないんじゃないかね
300:デフォルトの名無しさん
16/04/09 17:35:50.57 2XO/HUgQ.net
>>294
ねえねえおじいちゃん、ゆとりってなあに?
301:デフォルトの名無しさん
16/04/09 17:54:48.85 3zJg02z1.net
>>294
俺からすれば、お前こそゆとりの反応に見えるんだがw
理由は「技術的観点は全く無く、感情論で不満を述べているだけ。嘘や言い逃れだけ上手い。」
302:デフォルトの名無しさん
16/04/09 18:34:16.31 CDqAKEr+.net
ID:tonuQmGl は「質問者が初心者だからデバッグをしっかりやれ」を無駄に長々と説明しているだけ
前向きな考えはまるでないのだから放っておいてやれ
303:デフォルトの名無しさん
16/04/09 19:42:31.61 VRMolwpG.net
この手の物で速度を気にするなら
大きな型付数値配列をメモリとして取って、
そこに読み書きするという形で全てを表現するといい
ようするにasm.jsちゃんだ
そこまでする必要が無いのであれば書きやすいどんな方法でも良いと言える
304:デフォルトの名無しさん
16/04/09 19:48:42.91 nMheNy6L.net
またこの、ボンクラが答えだけ欲しい流れになってるのかよ。
答まで書いて理解して貰えなかったアホの事思い出すわ。
答まで書いて理解できなかった奴はまた答だけ聞きに来るんだろうな。
また聞きに来なくても、ああこれは似たやつだなって思えるように解説書いてるのに。
305:デフォルトの名無しさん
16/04/09 20:03:30.82 nX2uL7WF.net
jsはなぜこんなにも互換性がないのでしょうか
GUI部分に差異があるのはある程度仕方ないと思いますがインフラ関係ない部分に非互換性があるのは解せません
306:デフォルトの名無しさん
16/04/09 20:18:13.39 0Bzp/bzz.net
具体的にどこよ?
そりゃ多少独自拡張があった時代もあるし、バージョンが違うのも当然あるが、
現在はコアの部分は一通り互換性取れてると言って良いと思うが
307:デフォルトの名無しさん
16/04/09 21:28:30.58 3zJg02z1.net
>>302
> jsはなぜこんなにも互換性がないのでしょうか
JavaScriptは多くの会社が作ってる。
こんな言語は他にはない。
一体何と比べてるのか?
RubyとjRubyの互換性のなさよりは
jsの方がずっと高い互換性があるだろう。
308:デフォルトの名無しさん
16/04/09 22:39:27.82 tonuQmGl.net
本日のゆとりおよび低脳
ID:pEHBzpIW = ID:H1is7YF7
ID:r6y5A1ZI
ID:3zJg02z1
ID:2XO/HUgQ
ID:CDqAKEr+
IDがころころ変わっているので何人かは同一人物のはず
ゆとりはまず「正しい回答」をするところから始めろ。
文句だけ言うのではなくてね。
とはいえ、どうやらこのスレでは人間性に問題のない非ゆとり(自称)が回答してくれるらしい。
今後は知っていても様子を見ることにする。
あと、詭弁論法を使うのは止めろ。それは本当にお前らの為にならない。
結果的に足を引っ張り合っていることに気づけ。(長期的視点で)
てか、ゆとりには「ゆとり」ってこんなに効くんだな。正直驚いたよ。
それから、ゆとりはまずJavaScriptの前に日本語をやり直したほうがいい。
309:デフォルトの名無しさん
16/04/09 23:13:29.34 FC44HapC.net
よくここまで中身のない話を長々と語れるもんだな
310:デフォルトの名無しさん
16/04/09 23:59:46.74 tonuQmGl.net
一応荒れている板に慣れてない奴らのために解説をしておく。
この状況で質問者が回収しに来ないってありえないだろ。
だから質問者はIDを変えて一生懸命俺を叩いている。
詭弁まで用いている。これはかなり悪質だ。
どうにも俺の回答、「明らかに見当違いだからさっさとデバッグしろ」が気に入らないらしい。
だとすると、普通に解答つけている奴はシロだ。
実際、回答している奴で俺に噛み付いてきている奴はいないだろ。
技術板でこういうおかしな荒れ方をするのはJavaScriptだけだ。
ほぼアフィカスだと思う。慣れてない奴は気をつけてくれ。
311:デフォルトの名無しさん
16/04/10 00:04:28.09 k5ZTlTQG.net
>>280
その止まるというソースをまず出してみなよ
>>307
失せろゴミ
312:デフォルトの名無しさん
16/04/10 00:05:29.49 crqXdUCC.net
なんか、面倒なやつだな
313:デフォルトの名無しさん
16/04/10 00:06:05.67 aYwa2P4c.net
285だけど関わりたくないから触れなかっただけだよ
自分を妄言の根拠の一つに入れるのは本当に勘弁して頂きたい
314:デフォルトの名無しさん
16/04/10 00:17:27.35 1TEKUIpj.net
こいつニュー速+でも荒らしてた奴だろ
周りとの技術レベルの落差に気づかずに噛み合わず、一人でゆとりゆとり言ってるからすぐ分かる
315:デフォルトの名無しさん
16/04/10 00:17:27.56 ipc8Qm5p.net
>>307
最近はC++押しもひどいで
316:デフォルトの名無しさん
16/04/10 00:56:56.99 jv2fHTjL.net
>>312
多分その「C++押し」って奴とは違うと思うが、
C++相談室がとんでもないことになっていたことは知っている。
ただ、俺はあれはありだと思ってるんだよね。
連中、基本的に相手の「技術的」穴に対して、
「俺のほうが詳しい」っていうスタンスでやたら攻撃的なわけだけど、
匿名掲示板で技術論議なんだからあれも一つの形だよ。よくもまあそこまでとも思うけど。
ここはクレクレアフィカス君が自分の望んだ回答(デバッグ済みのコード)が出てこないときに
煽って叩いて相手をたきつけてコードを出させようとしているだけでしょ。
自分で学ぶ気なんてなさそうだし、それ以前にコードも書いてないんだと思うよ。
そもそも日常的に書いていたら速度の見当くらいつくだろうし。
だから今回は結局コードなんて出てこないに1000ペリカ。
そもそもあれだけのことでフリーズするようなコードを書くほうが難しい。
単にフリーズするだけなら簡単だけど、
10回のループならサクッと終わらないといけないんだからね。
ところでC++相談室見直してみたら、ワッチョイなんだが、ここも次からそうしないか?
てかあれ板限定ではなかったんだな。