X



+ JavaScript の質問用スレッド vol.135 +
レス数が1000を超えています。これ以上書き込みはできません。
0001Name_Not_Found
垢版 |
2018/07/31(火) 12:30:52.90ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
0002Name_Not_Found
垢版 |
2018/07/31(火) 19:09:52.85ID:???
■FAQ

◆開発者ツール(Developer Tools)の基本的な使い方
 ▼諸注意
  - 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
  - Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
  - Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
  https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
 ▼要素を検証
 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 型の中身をそのまま表示してくれます。)
0003Name_Not_Found
垢版 |
2018/07/31(火) 19:13:07.24ID:???
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。

例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。

■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
0004Name_Not_Found
垢版 |
2018/07/31(火) 19:16:18.02ID:???
■各種仕様 (続き)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ MSDN Library
https://msdn.microsoft.com/en-us/library/ie/hh828809 (Internet Explorer API)
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
0007Name_Not_Found
垢版 |
2018/08/01(水) 22:34:10.78ID:???
前スレの977の方ありがとうございました。
仕様上できないのですね。
残念です。
0008Name_Not_Found
垢版 |
2018/08/02(木) 07:09:05.57ID:???
装飾はいくらでもできるけどここはJavaScriptスレだからスレチ
0009Name_Not_Found
垢版 |
2018/08/02(木) 07:17:12.45ID:???
前スレの、>978

<div id="div-a">
<input type="text" id="text-a" value="あいう">
<input type="text" id="text-b" value="abc">
</div>

var input_elems = $.map( $('#div-a > input'),
function(elem, index) {
return $(elem).attrAll(); // this === element
}
);

Cookies.set( 'input', input_elems ); // 設定

obj = Cookies.getJSON('input'); // 取得
console.log( obj );

結果
id: "text-a", type: "text", value: "あいう"
id: "text-b", type: "text", value: "abc"

Cookie のライブラリは以下を使っています。
js-cookie/js-cookie
https://github.com/js-cookie/js-cookie

$.fn.attrAll は、以下のブログで定義されています。
要素の属性を全部取得する
https://hokaccha.hatenablog.com/entry/20130819/1376895914
0010前スレの>>978じゃないけど、見に戻るの面倒だからコピペ
垢版 |
2018/08/02(木) 07:22:30.69ID:???
特定の <div> のなかの <input> の状態を全部sessionStrageに保存して
あとでそれを再セットするって input の数や種類に依存せずにかけませんか?
div にも input にもユニークな id が振られてます
input.type は今の所 text select と checkbox だけです

native js でも jQuery でもいいです
0011Name_Not_Found
垢版 |
2018/08/02(木) 07:28:49.42ID:???
>>9
前スレの>>978じゃないけど、
要素の属性取るならそんなプラグイン使わないで

jQuery標準の $.serialize か $.serializeArray を使えば良いんだよ
<form>要素以下になくても使える
今回の場合はserializeArrayの方が使い勝手良いかな?

https://api.jquery.com/serialize/
https://api.jquery.com/serializeArray/

で、実はそんなのは簡単で、面倒なのはこっち
> input.type は今の所 text select と checkbox だけです

フォームの中身を全て保存して戻すってのは
以前に実装したことあるけど、
typeみてselectだったら〜checkboxだったら〜みたいな
コードを書いた記憶がある。意外と面倒くさい
0012Name_Not_Found
垢版 |
2018/08/02(木) 07:43:27.25ID:???
inputのtypeでselectってなんだ?教えてクレヨン

input type="file"があったら面倒なことになりそうな
そうでもないか?
0014Name_Not_Found
垢版 |
2018/08/02(木) 08:01:45.83ID:???
あー、でもidで見分けるのか。inputっていうからnameで見分けるのかと思った

var data = {};
$(":input").each(function() {
 switch(this.type) {
 case 'checkbox':
  data[this.id] = this.checked;
  break;
 default:
  data[this.id] = this.value;
 }
})

データをかき集める所はこんな感じかな
idでユニークになるならserializeArrayみたいに配列で持たなくていいね。
ちなみにmultipleなselectには対応していない

こんな風にtypeを使って見分けることになるんで
> input の数や種類に依存せずにかけませんか?
に関しては、書けません。というのが答えになる。
0016Name_Not_Found
垢版 |
2018/08/02(木) 08:58:59.10ID:???
>>15
時間の無駄。わかってる結論へ至る道はお前1人で勝手に進んでろ
00189
垢版 |
2018/08/02(木) 11:19:07.89ID:???
>>11
serializeArray は、送られる属性が少ないし、
successful controls しか送られていない

使いどころが難しそう
0019Name_Not_Found
垢版 |
2018/08/02(木) 11:35:19.63ID:???
送られる属性ってなんや?

フォームのGET・POSTで送られる情報の
全てを網羅してるぞ?
00209
垢版 |
2018/08/02(木) 11:36:32.61ID:???
serializeArray を使うなら、name, value を使うように統一しないといけない。
type, id が無いから、使いずらいかも

input.type には必ず、text, select, checkbox を指定しておけば良いかも
00219
垢版 |
2018/08/02(木) 11:45:34.14ID:???
serializeArray を使う場合、type, id が無くても、

name, value を使って、name がユニークなら、コントロールを特定できるのか
0022Name_Not_Found
垢版 |
2018/08/02(木) 11:50:51.92ID:???
formだと既存のjsコードと衝突したらかなわんし
ほぼ同一のformが複数あるなんてしょっちゅうあるから
汎用性なんて考えない方がいい気がする
00239
垢版 |
2018/08/02(木) 11:53:56.89ID:???
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>

select は、input タグじゃないのか
0024Name_Not_Found
垢版 |
2018/08/02(木) 18:58:42.66ID:2ZiGsOuL
jqueryを使った時のデバッグが面倒臭すぎる
0025Name_Not_Found
垢版 |
2018/08/02(木) 21:22:12.96ID:???
>>16
分からない場所に突き進む道を選ぶのね、ご愁傷様
0026Name_Not_Found
垢版 |
2018/08/02(木) 21:47:22.44ID:???
>>25
俺はそんな道に進まないって意味だよw
0027Name_Not_Found
垢版 |
2018/08/02(木) 23:04:32.52ID:???
トイレ事情も地方によって様々だな
0028Name_Not_Found
垢版 |
2018/08/03(金) 02:10:10.14ID:???
九州は汲み取り式とか四国はベルサイユ宮殿式とかそういうのがあんの?
0029Name_Not_Found
垢版 |
2018/08/03(金) 06:33:28.44ID:???
雑多な要素を後から保存するのは無理がある
データの作成・保存はカスタムエレメントで閉じておくべき
例のvalueの問題はinputやtextareaを継承してonchangeで見てもいいが
contenteditableとして要素ごと作ればobserveも統一できるし見た目の調整もやりやすい
0030Name_Not_Found
垢版 |
2018/08/03(金) 07:26:29.01ID:???
なんでトイレ事情なんだよ
0031Name_Not_Found
垢版 |
2018/08/03(金) 07:51:34.49ID:???
>>26
正しい仕様を確認するための質問を無視する→理解の放棄
0033Name_Not_Found
垢版 |
2018/08/03(金) 20:46:56.82ID:???
>>15
HTMLはその場合の操作も定義されている
>>The type attribute ...... the invalid value default are the Text state.
0034Name_Not_Found
垢版 |
2018/08/03(金) 21:02:53.99ID:???
>>33
そりゃそうだが、将来的にtype属性値の種類が増えるかもしれんし、わざわざ不正値を指定する理由はあるまい
0035Name_Not_Found
垢版 |
2018/08/03(金) 21:42:00.71ID:???
まだ到着してなかったのかよw
俺は最初からわかってる結論へ至る道の到着点にいるぞ?w
0039Name_Not_Found
垢版 |
2018/08/04(土) 14:07:30.40ID:???
selectボックスで、10番目の要素を自動的に一番上までスクロールさせる方法ってありますか?
0040Name_Not_Found
垢版 |
2018/08/04(土) 14:17:21.23ID:???
         /::::::::ソ::::::::: :゛'ヽ、
         /:::::::-、:::i´i|::|/:::::::::::ヽ
        /::::::,,、ミ"ヽ` "゛ / ::::::ヽ              <  一億総活躍
       /::::::==    卍   `-::::::::ヽ
      l::::::::/ .,,,=≡,  ,≡=、l:::::::l       /. ̄)        英訳は「Promoting Dynamic
      |:::::l゛  .,/・\,!./・\ l:::::::!     /  /二、.
      |`:::|  :⌒ノ/.. i\:⌒ |:::::i     丿 Y  .i  Y      Engagement of All Citizens」
       (i ″   ,ィ____.i i   i //   ( ゝ'  ノ ./ /
       ヽ i   /  ■ .i  i /     ,ゝ-、_)--'-'         (全国民の精力的な参画の推進)
        l ヽ ノ `トェェェイヽ、/´     /{ ゝ、__ハ|ヘ
        /|、ヽ  `ー'´ /      ィ'/ハ____ハ       つまり国家総動員
      //l ヽ ` "ー−´/     ////////////ノ
    ,,ィ''"/// | >< ////////////{///////////
  r''"////// ..|/:::::ノ//////////////}/////////Y
  ////////|  /:::::{///////////////{//////////
0041Name_Not_Found
垢版 |
2018/08/04(土) 16:53:00.52ID:YjLvXUxs
Javascriptのデータ型って先に指定できないのか?
int Number;
とか
string name;
とかは
0042Name_Not_Found
垢版 |
2018/08/04(土) 18:20:04.58ID:???
typescript使うしかないかな
0043Name_Not_Found
垢版 |
2018/08/04(土) 21:22:33.67ID:???
データ型を指定できてたら良くなかったことはたくさんある
例えばここ何年か今までintだったDOMの値が
高画面解像度デバイスのためにfloatになってきる
0044Name_Not_Found
垢版 |
2018/08/04(土) 22:02:12.27ID:???
>>43
それは型キャストで解決できる程度の問題かな
floatを返していても型がintだったら自動的に
小数点以下切り捨てられる
むしろその方が想定しない型にならないのでいいかもね
0045Name_Not_Found
垢版 |
2018/08/05(日) 00:11:25.23ID:???
>ここ何年か今までintだったDOMの値が
>高画面解像度デバイスのためにfloatになってきる

どういうこと?
0046Name_Not_Found
垢版 |
2018/08/05(日) 00:25:59.47ID:???
4Kとかだとコンテンツ全体表示できるから要素固定して表示するようなソリッドレイアウトよりも
リキッドデザイン的なものに変わってきた、ということでは
0047Name_Not_Found
垢版 |
2018/08/05(日) 01:01:16.94ID:???
2^32-1を超える値扱ってんの?それとも小数点以下の値が来てんの?どこで?ってことなんだけど
0050Name_Not_Found
垢版 |
2018/08/05(日) 09:15:20.21ID:???
一時そういう話があったがここにあるように今はまたintに戻った
https://www.w3.org/TR/cssom-view/#changes-from-2013-12-17
だけどChromeではまだサポートされてて
ズームしてdocumentElement.scrollTopなんかを弄ると分かる

200%以上に拡大すると分かりやすいだろうけど
特に低スピードのスクロール時にここで実際に役に立つことが分かる
http://output.jsbin.com/qedore
0052Name_Not_Found
垢版 |
2018/08/05(日) 13:50:43.01ID:7tec/NU4
別に入ればなんでもいいんだけどいつもvarで型を作って自動でやってるから
Javascriptの基本的な型の作り方はvarなのかなって
0053Name_Not_Found
垢版 |
2018/08/05(日) 15:12:47.47ID:???
朝鮮人みたいに揚げ足とる根性悪い奴がいるな

普段何の仕事してんの?
ニート?
0054Name_Not_Found
垢版 |
2018/08/05(日) 17:52:25.11ID:???
根性悪いやつが居るように見えるのは本人が根性悪いんだろうな
0055Name_Not_Found
垢版 |
2018/08/05(日) 19:57:27.12ID:???
朝◯人と悪口いってる時点で人の屑
ジャップのくせに
0056Name_Not_Found
垢版 |
2018/08/05(日) 21:24:09.84ID:???
「朝鮮人」は今や悪口ではないし
「JAP」は昔は米国新聞でも普通に使われてたただの略語というか日本の愛称だった
たかが三文字の言葉であれこれ思うのも馬鹿らしいよ
0058Name_Not_Found
垢版 |
2018/08/05(日) 21:53:51.71ID:???
リアルで朝◯人なんて言ってみろよ
どう言うことになるか分かるか?

リアルで言えない差別用語をネットで
使って吠えてる糞野郎
0059Name_Not_Found
垢版 |
2018/08/05(日) 22:08:34.76ID:???
某氏のカメラの話思い出した
0060Name_Not_Found
垢版 |
2018/08/05(日) 22:41:19.46ID:???
>>58
意味分からん
中国人
フィリピン人
朝鮮人
普通に使うぞ

変な嫌悪感を持ってるのはそういう学校教育された中年世代だけだろ
0061Name_Not_Found
垢版 |
2018/08/05(日) 22:53:54.39ID:???
【研究】飲むだけで差別主義者が更生する「道徳ピル」
>米国では、多くの学生が成績向上や適性試験をパスするために、リタリンを治療以外の目的で服用しているとの報告がある。

差別主義者は薬物でも服用させなければ駄目だな
市ぬかもしれないが生きてても仕方ない奴らだからどうでもいいわ
0063Name_Not_Found
垢版 |
2018/08/06(月) 04:25:48.82ID:Oi2BNCSY
知能が低いと複雑なことを考えられないから
極端な白黒思考になる
これが差別主義者

道徳ピル飲んで知能を上げるしかない
薬害で市んだら害虫が一匹消えたという事でそれはそれでおっけ
0065Name_Not_Found
垢版 |
2018/08/06(月) 05:17:55.83ID:???
DOMは仕様がコロコロ変わる
だからその違いを吸収するライブラリが必要になる
0066Name_Not_Found
垢版 |
2018/08/06(月) 19:19:22.58ID:???
逆だな
原則DOM標準は後方互換性を守る
JSのライブラリはバージョンアップで簡単に切り捨てる
ライブラリを使ってるとむしろ追従が大変になる
0067Name_Not_Found
垢版 |
2018/08/06(月) 19:33:22.94ID:???
自分の引き出しにあんまり実例なくてわからないんだけど
バージョンアップで切り捨てるって旧UAを?だったら旧バージョン使い続ければ良いのでは?
0068Name_Not_Found
垢版 |
2018/08/06(月) 19:48:56.48ID:???
uaって?無駄にコンテキストから推測させないでほしい。
あなたは数文字節約できるかもしれないけどこっちはいい迷惑。
0069Name_Not_Found
垢版 |
2018/08/06(月) 19:58:56.09ID:???
>>67
パフォーマンスや新機能のためにバージョンアップしたくても
再設計が必要なほどAPIが大きく変わってることが珍しくないということ
YouTubeのCr以外で遅い問題もPolymerがそうだからYouTubeが追従できないから
0070Name_Not_Found
垢版 |
2018/08/06(月) 20:11:07.76ID:???
crって?無駄にコンテキストから推測させないでほしい。
あなたは数文字節約できるかもしれないけどこっちはいい迷惑。
0071Name_Not_Found
垢版 |
2018/08/06(月) 20:42:03.15ID:???
>>66
> JSのライブラリはバージョンアップで簡単に切り捨てる
> ライブラリを使ってるとむしろ追従が大変になる

どのライブラリ? AngularとかReactとかかな?
なんか更新頻度高いしね

その点jQueryは安定していていいよ。
そもそも追従するほどバージョン出てないしw
0072Name_Not_Found
垢版 |
2018/08/07(火) 02:19:33.00ID:???
>>69
それ、単にそのライブラリ・フレームワークの設計が杜撰ってことじゃ
その互換性の部分以外のとこも大丈夫なのか?となりそう
0073Name_Not_Found
垢版 |
2018/08/07(火) 02:38:12.35ID:???
angularって言うほどいいかな?
偉そうな事言うのは嫌なんだけど
vueやreactの方が絶対いい
0074Name_Not_Found
垢版 |
2018/08/07(火) 06:19:10.80ID:???
>>72
杜撰ってわけでなくJS界のトレンドなんだろうな
jQueryみたいに切り捨てられないと(それでも利用度からすれば比較的切り捨ててる方)
負の遺産化するし
0075Name_Not_Found
垢版 |
2018/08/07(火) 08:48:53.31ID:???
>>74
jQueryは負の遺産にはならんよ。
DOM操作を短く簡潔にするためだけのものだから
使わないならjQuery1行をそのまま数行に対応付けて書き直せる
冗長になりますよってだけで誰もやらないけどね

負の遺産っていうのはAngularやReactなどの
最近のフレームワーク。違う書き方にしようとしたら
全体に手を入れなければいけない
0076Name_Not_Found
垢版 |
2018/08/07(火) 09:14:39.72ID:???
フレームワークは離脱するには設計から構造からやり直さないといけない
jQueryのようなライブラリは設計構造はそのままで済む場合が少なくない(※)が使用部分が広範になりがちで書き直し量が多い
※例えばアニメーション関係をjQueryに頼っていると構造にも絡んでくる
独特な機能を提供するライブラリは関係部分だけ書き直せば済むといえなくもない
0077Name_Not_Found
垢版 |
2018/08/07(火) 13:11:22.50ID:???
フレームワークで作られるのは迷惑。
意識高い系の人がフレームワークで使って作ったサイトをサーバに乗せるのに凄い苦労した経験あり。
0078Name_Not_Found
垢版 |
2018/08/07(火) 13:16:32.94ID:???
jQueryで唯一評価されるのはSelectorsAPIの基礎になったってことだけ
0079Name_Not_Found
垢版 |
2018/08/07(火) 17:21:49.46ID:???
element.style="width:100px;background-color:green;";
でいけたんだけど、element.style.width="100px"みたいにプロパティと値をわけて書くのと何か違いはありますか
0081Name_Not_Found
垢版 |
2018/08/07(火) 18:08:25.75ID:???
可読性がよくないぐらいでは
element.setStyle({
 "width": "100px",
 "background-color": "green",
});
とかがあればいいな
prototypeいじりたくないけど
0082Name_Not_Found
垢版 |
2018/08/07(火) 18:33:08.08ID:???
>>79-81に便乗質問なんだけど
・element.styleにはCSSStyleDeclaration オブジェクトが入ってる
・element.styleに直接CSS定義テキストを代入できる
・element.styleに直接CSS定義テキストを代入した直後でも
 element.styleにはCSSStyleDeclaration オブジェクトが入ってるし
 element.style.width を変更することもできる

CSS定義に変更があった場合変更内容を元にelement.styleを再設定してるという感じだと思うんだけど
こういう挙動はどう理解したらいい?

より具体的には、ブラウザの実装がそうなってるというだけなのか
それとも同じような挙動をユーザがjsコードで実現できるのか
0084Name_Not_Found
垢版 |
2018/08/07(火) 19:09:44.83ID:???
>>81
Object.assign(element.style,{
 width: "100px",
 backgroundColor: "green",
})

>>82
内部Proxyだと理解したら良い
0085Name_Not_Found
垢版 |
2018/08/07(火) 21:00:21.68ID:???
>>78
SelectorsAPIなんてjQueryの劣化版だろw

単にNodeListを返すだけで、そのNodeListを扱う方法まで作らなかった
jQueryはNodeListみたいに単に要素の配列を返すのではなく
要素の配列を内包した、jQueyrオブジェクトを返すことで
要素の配列そのものをメソッドで操作できる

ここが重要な所なのに、SelectorsAPIはそれを理解せず
単に要素の配列を返しただけ
0086Name_Not_Found
垢版 |
2018/08/07(火) 23:07:26.82ID:???
jQueryはいつgetContextに対応してくれますか
あとマウス座標取得決定版みたいなのも欲しいです
$(event)みたいにできたらいいのにな
0087Name_Not_Found
垢版 |
2018/08/08(水) 01:20:21.73ID:???
>>83-84
thx
あるんだな・・・意義はわかんなくはないけど正直どうかと思うが・・・
あとでじっくり読んでみる
0088Name_Not_Found
垢版 |
2018/08/08(水) 03:22:44.19ID:???
>>86
getContextに対応するだけでいいの?
canvas自体に対応しないとあまりメリットなくない?

jQueryになれてるなら、D3.js を使うのが良いと思う
canvas操作をjQueryライクに書くことができる
俺も普段はjQueryを使うけど、canvasを操作したい場合はD3.jsを使うよ

こんなk何時
https://codezine.jp/article/detail/7459

> D3.jsのセレクタを用いて宣言的に記述すると、以下のように簡潔に記述することができます。
> d3.selectAll("p").style("color", "white");
>  コードも、d3.selectAll("p")ですべてのp要素を取得、style("color", "white")で
> 文字色を白に設定、と直観的で分かりやすくなったのではないでしょうか。
0089Name_Not_Found
垢版 |
2018/08/08(水) 03:25:55.79ID:???
>>86
> $(event)みたいにできたらいいのにな

$(window).on('mousemove', function(event) {
 console.log(e.screenX);
 console.log(e.screenY);

 console.log(e.pageX);
 console.log(e.pageY);

 console.log(e.clientX);
 console.log(e.clientY);

 console.log(e.offsetX);
 console.log(e.offsetY);
});
0090Name_Not_Found
垢版 |
2018/08/08(水) 03:26:27.64ID:???
あ、間違った。

× console.log(e.screenX);
○ console.log(event.screenX);
以下同じ
0091Name_Not_Found
垢版 |
2018/08/08(水) 06:59:52.39ID:???
>>87
今だったらもしかしたらゲッターセッターになるのかもしれないけど
それらがJSに無かったころからCSSOMはあるしね
配列のlengthのようなものだよ
0092Name_Not_Found
垢版 |
2018/08/08(水) 07:13:44.97ID:???
array.lengthはちょっと違うのでは
array.lengthを書き換えても即座に自動的に書き換えられたりしないだろう
0093Name_Not_Found
垢版 |
2018/08/08(水) 12:49:52.74ID:???
するよ
TypedArray の様にゲッターやセッターではなく
プロパティアクセス時に0や1などと同等にフックして内部プロパティを変更してる
0094Name_Not_Found
垢版 |
2018/08/08(水) 23:45:54.77ID:FYSpbryG
JavaScriptって最近、変数に型つけたり、クラスを作ったりするらしいけど
もはやそれActionScriptじゃねーの?
0095Name_Not_Found
垢版 |
2018/08/08(水) 23:50:17.01ID:???
変数に型は付けないよ。
0096Name_Not_Found
垢版 |
2018/08/09(木) 01:02:42.65ID:???
>>94
昔ES3(ECMAScript 3)っていうのがあって、その後普及したのがES5
今はES6という名前だったのがES2015に変わって、ES2016だとかES2017だとか・・・

それは良いとして、ES3とES5の間にあったのがES4
ES4の夢は壮大で、クラスベースで型もあって・・・
そのES4に完全準拠することを目標にActionScriptは開発されていた

ところがES4の夢があまりにも無謀で破綻した。
そして型などの機能を減らして現実的にしたES5ができた

ActionScriptは破綻したES4相当なんだよ。消えたES4の成れの果て

JavaScriptに準拠しつつ型を取り入れたのはTypeScript
0097Name_Not_Found
垢版 |
2018/08/13(月) 00:31:27.24ID:???
A → B → C → D
とasync関数が繋がってるのをイメージしてください
Aから始まりEが完了すれば順にC、Bと完了してAに戻ってくるイメージです

ここで、Dの段階でBからの流れをやりたいとします
しかし、Dの次にBを続けると、
それまでのB → Cの流れの中で消費されているメモリが残ってしまいます。

もうDや過去のCやBに戻らせる必要はありません。
しかし、Dを開放してB'を開始すると、Aまで完了してしまい、それはよろしくありません。

A → B → C → D
まで来たところで
A → B → C → D → B' → C' → D'
となるのはメモリリークしやすく、チェーンが非常に長くなると色々なバグも発生しやすく
デバッグのしやすさにも関わってくるので避けたいです

とはいえ
A → B → C → D -...> B' → C' → D'と切り離すと
Aで行っている初期化・完了・例外処理から外れていってしまうため問題です

理想的には、チェーンをA → B' → C' → D'
とつなぎ直したいのです
どうしたらよいでしょうか
0099Name_Not_Found
垢版 |
2018/08/13(月) 05:23:13.35ID:???
設計段階でみょうちきりんな動きの要求を加味しとけよ
010097
垢版 |
2018/08/13(月) 10:40:04.67ID:???
仕様としては、どの処理進行状態でもリセット、ぶつ切り行為が発生しうるという状況です
一応今はBで作業キューを持ってそれにCを追加する形にしていますが、
いかんせんコードがキレイではありませんし、僅かな仕様妥協が入ります

おそらくPromiseのラッパー的なとこから、根本的な非同期チェーン構造を
素朴なPromiseではなく1から考え直して別の物にすべきだと思うのですが
いいアイディアは無いでしょうか

全てのasync、async generator関数でCancelの概念と実装をしたら良いのでしょうか
全てのawait時にそれがCancelかどうかチェックして処理をするとか
それはそれで漏らせないコードが多くなりそうですし、処理が複雑になりそうです

一応今は各処理にセッションを渡すようにしていて、表に影響がある処理ではそのセッションが切れていたら何もしないことで、
特にイベント等から繋がる不要なチェーンが発動しても空回りさせることで影響がないようにしています
今はメモリの開放は時間経過やイベントをあえて見捨てたチェーンに伝わらせて
空回りを利用して自然と勝手にほぐれて、その後GCが回収してくれることに頼っています

しかし、今回は下手に空回りもさせたくないという状況です
コードを極力シンプルに保ちながらしっかりしていてかつ柔軟性も持った非同期処理構造を作るにはどうしたらよいでしょうか

例えば非同期でも、場合によっては完了を待たずに次に進みたいことってありますよね
例えば、Loadingを表示するとき
await View.fadeInLoadImage()
let file = await Network.fetchFiles( )
await View.fadeOutLoadImage()
とするとフェードイン、アウトの時間が無駄なので
View.fadeInLoadImage()
let file = await Network.fetchFiles( )
View.fadeOutLoadImage()
とすると思います。ですが、このフェードが動いているときに
コンテキストがリセットされると、色々懸念事項が生まれます
そういうのもスマートに扱える方法を知りたいです
0101Name_Not_Found
垢版 |
2018/08/13(月) 10:53:58.59ID:???
真面目に言うと
・開示されたごく一部だけで単純な仕様ではないことがわかるのに
・全貌の情報なしに
・コードがきれいかどうかや柔軟性など曖昧な要求を回答できる人間はいない
0102Name_Not_Found
垢版 |
2018/08/13(月) 10:59:40.42ID:???
>View.fadeInLoadImage()
>let file = await Network.fetchFiles( )
>View.fadeOutLoadImage()
>とすると思います。

let file = await Network.fetchFiles( )

だけやればいいじゃん馬鹿なの
0103Name_Not_Found
垢版 |
2018/08/13(月) 15:20:02.78ID:???
>>101
具体的な細かな話は気にしなくて結構です
私が知りたいのは、皆さまが一般的にこういう問題を抱えないために使っている
オススメTask系のフレームワークだったり、普段意識してる設計パターンについての話です

コードが綺麗とか柔軟とかいうのも、厳密に定義しようとしてもらわなくて結構です
そこは私がどう感じるかではなく、皆さんが素直に自然と良いと思ってる手段を知りたいと言うだけです
0104Name_Not_Found
垢版 |
2018/08/13(月) 16:16:09.45ID:???
安全な近道なんて無い

> しかし、今回は下手に空回りもさせたくないという状況です

下手に空回りさせないように地道に書けとしか
F/W信奉者にありがちだが解決してくれる何かを探すのを止めてみるべき
0105Name_Not_Found
垢版 |
2018/08/13(月) 16:41:56.19ID:???
>>103
質問が意味わからん。最初にasyncって決めつけてるのが駄目なんじゃないの?
asyncは実装なんだからそれを使うと決めるのは最後。
実装の話は忘れて、何がしたいのか綺麗にまとめたら?
あんなごちゃごちゃしてたら読む気にもならんよ
0106Name_Not_Found
垢版 |
2018/08/13(月) 16:47:36.82ID:???
AとかBとか処理があるんだろ?

function process() {
 A();
 B();
 C();
 D();
 B();
 C();
 D();
}

普通に書けばメモリリークにもならんし、
何が言いたいのかさっぱりわからない。
ここを出発点として、何が言いたいのかをまとめろ。
0107Name_Not_Found
垢版 |
2018/08/13(月) 16:49:40.76ID:???
あとから動作仕様変えても処理順や状態に起因するバグを起こさないパーフェクトなフレームワークはなんですか

一行にまとめるとこんなかんじ?
0108Name_Not_Found
垢版 |
2018/08/13(月) 17:36:53.41ID:???
いまいちよくわからんが

なんかデータ読んでる最中に(let file = await Network.fetchFiles( ))
フェードイン/フェードアウトみたいなことしてるんだけど(View.fadeInLoadImage())
読み込み中止ボタンを追加したいんだが(Cancelの概念と実装)
そんなときどうしたらいいの

って質問なんだろうか?
0109Name_Not_Found
垢版 |
2018/08/13(月) 17:45:32.66ID:???
そういう処理を自分で書くのは面倒だから嫌だそうだ

>全てのawait時にそれがCancelかどうかチェックして処理をするとか
>それはそれで漏らせないコードが多くなりそうですし、処理が複雑になりそうで

自分で細かく書かなくてもうまいことやってくれる何かが
希望のようだが、それをハッキリと書かないところをみると
フレームワークやライブラリ推しの書き込みの準備行動じゃねーかな
0110Name_Not_Found
垢版 |
2018/08/13(月) 18:43:40.37ID:???
>>104
地道に書くのは良いのですが
この先あちらもこちらもその場その場に書いていくと
メンテ面とか手に負えなくなって破綻してしまうかもしれないので
まだ取り返しの付く段階で場合によっては基礎システムを1から挿げ替えたほうが良いかもと思った次第です

>>105
現在Workerも使った大きく分けて十種類程度のタスクモジュールがあり、その中の関数の殆どが非同期もしくは並列に動いている状態です
最初はコールバックでも良いような規模で、その後async関数に切り替え、途中から自作イベント管理を追加し。。。。。。
という感じで大きくなるごとに対策してきました。
もう次に何かするなら、それで最後まで行きたいので相談させてもらっています

>>106
それで直ちに問題が会って動かなくなるというわけではないのですが、そうしたくないいくつの理由があります
・AからDまでの生存期間がそれなりに長い(ユーザーの操作次第、通常数分〜数時間程度)
・BからDまでは無制限に繰り返される可能性がある(ユーザーの操作次第)
・BからDまでで大量のリソースを使い得る(通常数十MB〜数百MB)
また沢山イベントハンドラやフックが残ったままになるのが気持ち悪い
(BからDまでが終われば生きた参照が無くなるのでGCによって自然と開放される)
0111Name_Not_Found
垢版 |
2018/08/13(月) 18:46:30.10ID:???
>>107
その通りですが、最初は問題なかったけれど複雑度が上がって無理が出てきた現状を
改善できる今より一歩上の非同期取扱概念(コツ)を知りたいと言うだけです
例えばPromiseにしてもCancellableだったりCancalTokenだったり
async generatorの代わりにObservable系を使うという手もあると思います
そういうちょっとした変更やラッパーで乗り切れるのではないかと感じています

>>108
それは例です。実際はそういうコードはありません。
メインの質問は>>97です
その例で言いたいことは、フェードアウト処理が例えば大げさに10秒かかったとします
そしたらその間にもう画面がローディング画像のフェードアウトをしていて欲しくないものになってる可能性もありますよね
1つの考え方としてはView.fadeOutLoadImage()にキャンセルできる関数を返させて、
それを関数の最後まで保持しておいて呼ぶとか考えられます
実際にそういうことをしているのですが、変数の局所性が悪くなってコードが読みづらくなります
また、その関数の終わりまでしか引き伸ばせません。もう少し先までで良いという時はイベントに登録したり煩雑になってきます。
今は場合によってはキャンセル手段を返させたり、イベントを監視させたり、セッションを確かめさせたり色々やっていますが
いかんせん一貫性がないので、その点も合わせてもっとステキな方法があるのではないかなというための例です

>>109
また自分で思いつきで書いても良いのですが、私だけのコードではないので
将来メンテする人のために少しでも良い方法を知りたい感じもちょっとはあります
0112Name_Not_Found
垢版 |
2018/08/13(月) 19:57:00.35ID:???
async関数が繋がるってのがまず分からない
サンプルコード位は出せないの
0113Name_Not_Found
垢版 |
2018/08/13(月) 20:01:11.84ID:???
頑張って説明してくれてるんだろうけど
俺の頭では理解できない
後は頼んだ
0114Name_Not_Found
垢版 |
2018/08/13(月) 21:28:23.13ID:???
>>112,113
繋がると言うのは
async function A ( ) { ...... await B( ) ...... }
async function B ( ) { ...... await C( ) ...... }
async function C ( ) { ...... await D( ) ...... }
のときA( )と呼んでからD( )まできた状態です
Dが解決しないとCが進みませんし
Cが進んで終わり解決しないとBが進みませんし
Bが進んで終わり解決しないとAが進まない状態です

問題はここでDから仕切り直してまたB'を呼びたいというときです
感じとしてはAがOSの起動、Bがブラウザの起動、Cがページの起動、Dがその中のプログラムスクリプトだと思ってください
OSはブラウザを起動し、もし終了したら自信も終了するよう計画します
ブラウザはページを起動し、もし終了したら自信も終了するよう計画します
ページはスクリプトを起動し、もし終了したら自信も終了するよう計画します

今したいこととは、DがB'、つまりスクリプトが新しいブラウザウィンドウを立ち上げようとしている状態です
ここで、他と同様にスクリプトがそのブラウザウィンドウの終了を待機したとしましょう
ブラウザウィンドウが無数に増え得てまずそうですよね

それでは、スクリプトがブラウザウィンドウの終了を待機しなかったとしましょう
この場合はスクリプトの処理が終わり、芋づる式にページ、ブラウザと終了します
そこまでは良いのですが、それに続けてOSも終了してしまうことになり、これは問題です

なので今取っている対策としては、Bにタスクを登録できるようにするということで、
つまりブラウザをタブ化して1つのインスタンスとし、全てのタブが閉じるまではブラウザが終了しないようにしています

それで上手く言ってるのですが、このような工夫をしないといけない箇所が段々増えてきており
危機感を感じているという次第です
0115Name_Not_Found
垢版 |
2018/08/14(火) 00:43:17.41ID:???
>>110
お前は自分が賢いと思ってるつもりの馬鹿だよ
基礎を何もわかっちゃいねぁ

>>106を読んで理解できてないだろ?

function process() {
 A();
 B();
 C();
 D();
 B();
 C();
 D();
}

このコードでな、Aの中のコードの生存期間は、
Aが呼ばれた時に始まり、Aが終了すると消えるんだよ
B〜Dも同じ。お前のように長い生存期間のものなんて一つもない
0116Name_Not_Found
垢版 |
2018/08/14(火) 00:44:34.16ID:???
>>113
わかるわけがない。
こいつは、基礎から大幅にずれた理解をしてる。
完全に間違った知識をもとに語っているから
説明全てが的外れ。
そんなのを読んで理解できるわけがないんだよ
0117Name_Not_Found
垢版 |
2018/08/14(火) 09:17:38.33ID:???
>>97
>>103
> 具体的な細かな話は気にしなくて結構です
あなたが解決できない原因はこれ。
理屈をすっ飛ばして、結果だけを求めるから理解できない。
ぶっちゃけ、一般的なフレームワークを使ってるという安心感が欲しいだけで理解する気は全くないでしょ?

解決手段は、配列と再帰を組み合わせるだけ
0118Name_Not_Found
垢版 |
2018/08/14(火) 09:27:31.76ID:???
タスクでも監視でも、これらの強制途中終了または放置が、予期しない副作用が不具合を起こす可能性をゼロにすることは不可能だろう
将来どんなコードが来るかわからんのだろ

自分でもそう思ってるけど上司の説得材料が欲しいから
こんなに長文を書いて反論で説得材料持ってきて欲しい、ってところじゃないのかね?
0119Name_Not_Found
垢版 |
2018/08/14(火) 09:30:17.12ID:???
ちょっと日本語文法おかしくなったがあまり気にしないでくれ
0120Name_Not_Found
垢版 |
2018/08/14(火) 12:09:42.72ID:???
チェーンさせるのとworkerで並列動作させるのとじゃ全然事情違くね
0123Name_Not_Found
垢版 |
2018/08/14(火) 12:47:21.21ID:???
つーか非同期処理を含む関数を同期的に順次実行することを
チェーン って言うもんなんか?
0124Name_Not_Found
垢版 |
2018/08/14(火) 13:02:01.45ID:???
>>122
>>97を読む限り、完了をトリガーに次の処理に移っているように読めるけど、彼は並列処理の意味を理解してるのかね…
そもそも、並列処理なら、Promise.allで十分だろうに
0125Name_Not_Found
垢版 |
2018/08/14(火) 13:06:28.37ID:???
>>123
ないね
>>120は意味不明                                                                                         
0126Name_Not_Found
垢版 |
2018/08/14(火) 13:33:01.26ID:???
なんとなく程度しか理解してないのに再設計を振られた上流SE説
0127Name_Not_Found
垢版 |
2018/08/14(火) 14:01:31.37ID:???
>>123
だーかーらー、
こいつは基本自体がわかってないから
用語も間違ってると考えて間違いないよ

だから難しい用語をなくして、
基本の基本の話からしないといけない

その証拠が >>115 にレスがまったくないこと
このレベルの話から自分が抱える問題につなげることができない
関係のある話だってわかってないから
0128Name_Not_Found
垢版 |
2018/08/14(火) 14:04:05.15ID:???
あいつが気にしてるのは、リソースの問題
関数の生存期間の話をしてるのだから
並列処理は全く関係ない話なんだよ。
ようはローカル変数がわかってないレベル

asyncとかpromiseの関係ない話をすると疲れるだけだぞ。
関係ないことを教えるだけで問題解決せずに終わるからな
0129Name_Not_Found
垢版 |
2018/08/14(火) 14:43:04.55ID:???
>>115,116
問題は、今回の処理は非同期で繋がっているので、
つまり、そのように並べた状態ではなく入れ子状態になっているということです
お伝い忘れてすみませんが、A->B->C->Dという関係は対等な処理を分けたものではなく
親子関係というか、包括関係と言ったらいいのですかね?とにかくそのようなものになっているのです
例えばDがメニューバーの表示とすると、
B'を再び呼び出す必要があるかどうかはDの動作にユーザーがどう反応をしたかどうかであり
勿論違う処理のケースも有るのでその結果をCで待ちわびなければなりません
実際はもう少し複雑ですが、簡単に書きますと>>114のような関係になっているということです
要するにDは下っ端も下っ端だけど、その特質上特権的な状態変化を起こす可能性があるものということなのです

>>117
私はここ何年かちょくちょくこの非同期の問題をどういう形で解決したら良いかを考えたこともあります
なので皆さんの中でよく考えて持論だったりそういうセンスを習得した人が居るのではないかと思いました
私が聞きたいのはそういう感覚であり、まさか具体的なコードに対する回答が貰えるとは思っておらず、
>>97>>100で挙げたようなパターンに対して、ビビッとそういうときはこうするもんだという
決めつけたような適当な経験の言葉をいくらか頂けたら刺激として私に取り込もうと思ったところです
なので皆さん、適当でいいので言葉をください
例えば>>115さんは大変参考になりました
関数を小さく分割して入れ子になりがちだけど、もっと整理して単純なものに持っていけるのならそうしようと思います
0130Name_Not_Found
垢版 |
2018/08/14(火) 14:44:03.07ID:???
>>118,119
最後の頑張りのための気持ちを高めるためと、問題提起というわけでもないですが、
非同期処理の様々な難しさに対して皆さんがどう思考してるのかを聞きせてほしいということであります

>>123
チェーンというときはだいたいPromiseチェーンを意識しています

>>120,121,124
沢山のことを、直接的に掛けない部分もあり、事実と例えの質問を交ぜて書いた事もあって混乱させてしまいすみません
AからDまでは平行処理ではありません。沢山の非同期関数が同期的に枝分かれ状に呼び出されているルートの内の1つを選びだしたと考えてください。
実際のコードでは平行、並列の部分もありますが、ひとまずそうお考えください
0131Name_Not_Found
垢版 |
2018/08/14(火) 14:47:10.42ID:???
話を単純に戻して整理します
質問A)
皆さんは非同期処理が複雑になってきたらどのような対処を考えますか?
例1) コンテキストが変わると無効になるセッションをほぼ全ての関数に渡して置いて逐一セッション切れを調べるようにする
例2) キャンセルの値や手段を定義してそれを伝播させる(Cancellable Promise)
例3) その合わせ技のようなもの(CancelToken)
その他)

質問B)
>>114の状態で>>97の問題に直面したとき、
要するにいままで繋がってきた流れの中で突然安全にリセットしたくなったときはどうすればいいのか
例1) >>114で言ったように、ブラウザがほぼいつでも安全にタブを閉じれるように、
つながりの根本の方に枝を生やしたり切り落とせるポイントを用意しておく
例2) チェーンにを触れるPromiseをメモリリークを起こさないよう必死に再実装して明示的に切り離すようにする
例3) 生Promise+awaitに頼らない新設計を考える
その他)

質問C)
イベントを使うと不特定多数の直接知らない待機状態の処理を動かせて便利だが、
非同期処理のためタイミングが問題になる場合はどのような工夫をすればいいか
つまり、一方的にイベントを発火するだけではなく、それを全員がきちんと受け取って把握し
必要なら一定の準備ができたというフィードバックを得られるようなイベントシステムをきちんと整備するべきか、
それとも質問Aに書いたようなセッションだったり、今の共有状態変数を準備して対処するか
皆さんはどちらで組まれてるコードがお好きか

また他の場合でも一般に、問題解決のために高度に抽象化仕切ったシステムを作り上げたものと
例えばグローバル変数を1つ使うなどしてでも比較的シンプルに乗り切ったもの
場合によってそれらのスタンスを使い分け混合した状態
皆さんはどのスタンスで組まれてるコードがお好きか
0132Name_Not_Found
垢版 |
2018/08/14(火) 14:55:02.72ID:???
質問1〜3)コードの正確性や安全性の検証に、コードを書くよりも圧倒的に多い工数/人数を費やす

結局、突き詰めると把握できない把握しきれない何かが問題なら
どんな状況でもコード生産速度を優先した途端に必然的に不具合が生まれる

規約が守られているか設計思想に合っているか
確認させる土壌を作るほうがマシ
0133Name_Not_Found
垢版 |
2018/08/14(火) 15:33:09.53ID:???
>>129
> 問題は、今回の処理は非同期で繋がっているので、
> つまり、そのように並べた状態ではなく入れ子状態になっているということです

なりません。
少なくともメモリ使用量に限っては関係ありません
0134Name_Not_Found
垢版 |
2018/08/14(火) 15:35:50.59ID:???
入れ子というのはこういうもののことです。
promiseやasyncではこうなりません

function process() {
 A(function() {
  B(function() {
   C(function() {
    D(function() {
     B(function() {
      C(function() {
       D(function() {
        // do something
       });
      });
     });
    });
   });
  });
 });
}
0135Name_Not_Found
垢版 |
2018/08/14(火) 15:41:32.94ID:???
これ何気に書くのめんどくさそう
0136Name_Not_Found
垢版 |
2018/08/14(火) 15:53:55.90ID:???
並列処理と非同期の違いもわかってなさそうw
0137Name_Not_Found
垢版 |
2018/08/14(火) 16:02:13.97ID:???
それはある
これ非同期あんま関係ない
0138Name_Not_Found
垢版 |
2018/08/14(火) 16:27:33.61ID:???
>>131
> 皆さんは非同期処理が複雑になってきたらどのような対処を考えますか?

非同期処理も、非同期処理じゃない場合も同じ。
処理を単純化して、その組わせで作る

> 例1) コンテキストが変わると無効になるセッションをほぼ全ての関数に渡して置いて逐一セッション切れを調べるようにする
> 例2) キャンセルの値や手段を定義してそれを伝播させる(Cancellable Promise)
> 例3) その合わせ技のようなもの(CancelToken)

これらは非同期処理が複雑になったときの対処法ではない。
非同期処理かそうかは関係なく、処理の途中で
キャンセルしたい場合に実装すべきこと

1のセッション切れは意味不明。独自用語使うな。
何がしたいのか全く不明
0139Name_Not_Found
垢版 |
2018/08/14(火) 17:05:58.93ID:???
繰り返しになるけど頼むからサンプルコードで示してくれ
長々説明してくれるのは良いけど独自用語が混ざって訳分からん
0140Name_Not_Found
垢版 |
2018/08/14(火) 17:12:06.00ID:???
こういう人を相手に商売したらかなり稼げそう
0141Name_Not_Found
垢版 |
2018/08/14(火) 17:48:42.97ID:???
>>132
確かにそうでしょうが、その規約だの設計思想だのも私に委ねられてる状態でして
結局の所、コードが動かないから、不具合が生じているから質問しているわけではありません
ただ少しでも良いコードを残したい、書いていきたいと思った次第で、
私はJSの「良い」コードというのはその時その時代の世界のJSerがどう考えているかで決まると長年思っているのですが
async関数やPromiseが入って2,3年がたった今どのような「良さ」を皆さんがそこに考え出してるのか
その感覚の言葉のシャワーを浴びて私の感覚を少しでも正しい方向に矯正したいというのが正直な気持ちです

>>133,134
言葉に認識の違いがあるのかもしれませんが要するに>>114の形だとお考えください

>>137
確かにおっしゃる通りです 同期と読み替えてくださって構いません
結局私は自分の中でも問題をまとめきれて居なかった上、色々書きすぎて本質を見失っていたようです
大変申し訳ございません

実際のところ、私がこれまで書いてきた問題(>>111など)は全て繋がっていて切り離せないものだったようです
結局私は、非同期『管理システム』、そのパターンを求めているのです
0142Name_Not_Found
垢版 |
2018/08/14(火) 17:54:35.16ID:???
非同期と同期の大きな違いは、非同期は、同期で言う割り込みのように、
ユーザーの操作などによるイベントによる別の処理が途中と言って良いようなところで発生し得ることでしょうか

私は>>114でBで複数のCを待ちわびることで解決したと言いましたが、本当はそれだけではないのです
Cに相当する処理は実際は複数の非同期関数が繋がっているということもありますし、
その中ではawait Promise.race([D(),timeout(42),listen('buttonclick')])のようなものも使っています
ユーザー操作やタイマーや、他所から来たイベント次第でいつどう処理が完了するかは分かりません

要するに、シンプルに考えればDがBにnewC'を登録し、Dが終了すればoldCが開放されるように見えますが
実際はDが終了した段階でCはもうDを待ってはおらず、別の処理を始めているかもしれないです
Dはメニューと例えていたので変かもしれませんので言い換えると、
実際はC5が終了した段階でC4はもうC5を待ってはおらず、別の処理を始めているかもしれない、ということです
なので独自用語でセッションと言いましたが、関数開始時などに渡され、その関数が担当する処理が
未だ有効かどうか分かるオブジェクト用意し、コンテキストが変わるときにそのオブジェクトを無効状態にしておくことで、
そのような「タイミングのズレ」にだいたい対処しています

つまり、私は今基本的に素のasync-awaitを使いながら、時にはイベントを使ったり、セッションを使ったり、
Bのような部分的にタスク管理したり、色々しすぎているので
これを大きくまとめた比較的大規模なタスク管理システムを導入して整理し直すか、
もしくはそこまで行かないが10必要だったその場しのぎ対処が5になるような
比較的ちょっとした共通追加対応策についてのヒントや方向性のアドバイスが知りたいと言うことです

すみませんでした。
0143Name_Not_Found
垢版 |
2018/08/14(火) 18:01:27.92ID:???
>>141
あぁ、わかった
お前に言えることは「余計なことすんな」だ
問題がわかってないお前が決めた所で失敗するだけ

問題が発覚した時に、後から方向転換できるようにしていればいい。
問題が起きたときに、最初に決めたルールは絶対守れと押し付けるはやめろ
0144Name_Not_Found
垢版 |
2018/08/14(火) 18:03:36.64ID:???
> これを大きくまとめた比較的大規模なタスク管理システムを導入して整理し直すか、

そんなものはこの世に存在しない
大規模 = 悪 だから覚えておいたほうが良い
つまりお前の発想は間違いに突き進んでる
0145Name_Not_Found
垢版 |
2018/08/14(火) 18:15:36.62ID:???
「現場に聞け」じゃないの
0146Name_Not_Found
垢版 |
2018/08/14(火) 18:16:25.79ID:???
>>143,144
私はこれまでこのプロフェクトを2度白紙にして本当に0から作り直したのですが
この調子で行くと完成と同時くらいに3度目の限界点が来るんじゃないかなと
次の人が必要なら好きに作り直しゃ良いですっかね?
0147Name_Not_Found
垢版 |
2018/08/14(火) 18:20:23.19ID:???
間違いを指摘されて、本当に理解したかはともかく、それを間違いと認められる点は美徳
ただ、「あるはずだ」で質問を延々続行するのはどうかと
0148Name_Not_Found
垢版 |
2018/08/14(火) 18:20:40.61ID:???
>>146
反省してないからそうなる
先に問題点を洗い出せ
問題点がわかってなくて反省できるわけ無いだろ

この調子で行くと3度目じゃ終わらないだろうな
反省しないお前のやり方じゃ何度も同じことを繰り返す

要するにお前の能力不足だ
0149Name_Not_Found
垢版 |
2018/08/14(火) 18:21:45.22ID:???
能力不足っていうのは、プログラミング能力だけのことじゃない
不足してるのはリーダーや管理者的な能力だよ
0150Name_Not_Found
垢版 |
2018/08/14(火) 18:22:15.11ID:???
だいたい過去2度白紙になった原因は何よ要件変更じゃないの
どんな要件変更にも耐える設計作るのと永久機関作るのとどっちが現実的
0151Name_Not_Found
垢版 |
2018/08/14(火) 18:27:33.31ID:???
>>148,149
それは十二分に承知してる
俺じゃなかったら1回目で済んでる
なんで経験浅い俺に任されたんだ
正直問題点は行の数だけある
流石に3回目なのでなんで動いてるのか分からんようにはなってはいない
でもそれが俺の限界
この先最後の最後に細かなバグに苦しめられることは必死
多分修正しきれる可能性のほうが低いだろう
もう疲れたよ
すみません
質問閉めます
と言っても多分参考になった
頑張る
0152Name_Not_Found
垢版 |
2018/08/14(火) 18:36:52.55ID:???
>>150
1回目、2回目は成果物完成間近に根本的問題が避けられないことが分かったが
コードが密結合過ぎて要件大変更に耐えられそうになかった
だから3回目は俺もかなり加わって極力個々を小さく、素に作った
要件変更には強い
だが小さなバラバラに動く歯車を管理するのに限界がきそう
0153Name_Not_Found
垢版 |
2018/08/14(火) 18:49:30.30ID:???
>>152
根本的問題って何?3回目スタートのトリガーは何?

>1行目「1回目、2回目は(略)根本的問題が避けられないことが分かった」

ほうほうなるほど1回目2回目は明確な問題があったんだな
その書きぶりだと要件変更のせいで作り直しとかじゃなかったんだな

>2行目「分かったがコードが密結合過ぎて要件大変更に耐えられそうになかった」

は?問題があったから作り直したんちゃうの?
要件大変更は生じたの?それとも未来くるかどうかわからない大変更に備えての作り直し?

無駄な情報を追加してる一方で、必要な情報が不足し整合性がない
日本語でこれ
0154Name_Not_Found
垢版 |
2018/08/14(火) 19:16:08.71ID:???
1回目>設計だけやった
一応なんとか形になったものの解消できないバグが残った
しかも将来の仕様変更に耐えられそうもなかった
バグの対応と将来の仕様変更への不安から設計からやり直すことになった

2回目>設計だけやった
1回目の失敗から設計をやり直したが、最終的な結果は1回目と同じだった
やはりバグの対応と将来の仕様変更への不安から設計からやり直すことになった

3回目>設計だけでなくコーディングにも入った
なんとかバグを解消しつつ想定される仕様変更にも一定程度対応できるようになった
しかし部品ごとの独立性を重視して非常にきめ細かく作り込んだため全体像から細部まで把握するのが至難の業になった
なお1回目から3回目まで通じて仕様変更はなかった


妄想推測と過去レスを元に書くとこんなところか?
密結合を嫌って疎結合にし機能ごとの独立性を重視した結果煩雑になったというならば
>>97>>100末尾の諸問題は各機能のインターフェースや実装のレベルまで落とせそうなものだが
0155121
垢版 |
2018/08/14(火) 19:21:25.23ID:2dROb7DN
>>130
自分は平行処理なんて書いてないから
そもそも、平行処理って何?並行処理のこと?
並行処理と並列処理の違いを理解してるの?
「並列処理じゃなくて逐次処理じゃないの?」と指摘されてるのに、なんでそっちはガン無視なのよ

専門用語を使えば使うほどボロを出してるから、もっと平易な日本語で書きなよ
知ったかしないで、分からないことは分からないと認めなきゃ先に進めないでしょ?
0156Name_Not_Found
垢版 |
2018/08/14(火) 19:33:35.12ID:???
これから専門用語禁止な
0157Name_Not_Found
垢版 |
2018/08/14(火) 19:37:36.63ID:???
言ったら魂抜き取られるのか
0159Name_Not_Found
垢版 |
2018/08/14(火) 20:47:44.73ID:???
htmlを新しいウィンドウで開く方法ってないでしょうか

window.open(url) はurlを引数に取りますが

window.open('<html><body>Hello!</body></html>');
みたいにhtmlを引数にして新規ウィンドウで開く方法ってないでしょうか
0160Name_Not_Found
垢版 |
2018/08/14(火) 21:01:38.34ID:???
あるけどjQueryの話題じゃないので頑張ってくれ
0161Name_Not_Found
垢版 |
2018/08/14(火) 21:05:42.42ID:???
>>159
ブランクで開いてからhtmlを設定したらいいんじゃね
0162Name_Not_Found
垢版 |
2018/08/14(火) 21:16:57.19ID:???
>>161
一応できて動きました。こんな感じですかね?

function new_window() {
var w = window.open("", "NW");
w.document.open();
w.document.write("<html><body>hello</body></html>");
w.document.close();
}

new_window();
0164Name_Not_Found
垢版 |
2018/08/15(水) 00:22:54.99ID:???
>>129-130
皆、非同期処理のネストの深さに困ったから、

ネストが深くならないように、await が作られた
0165Name_Not_Found
垢版 |
2018/08/15(水) 00:38:14.67ID:???
>>159-162
Selenium WebDriver では、ctrl+T キーを送って、別のタブを開いて、

そのタブに移動する、というサンプルがあった
0166Name_Not_Found
垢版 |
2018/08/15(水) 00:46:01.09ID:???
非同期処理についての質問者は、
名前欄に、最初の書き込みの番号を入れてくれ

処理の基本は、all or nothing

A | B | C
というパイプラインがあって、B で失敗した際、A だけが更新されると、
データの不整合が起こり、データの一貫性がなくなる

データベースなどでは、roll back して、Aの更新前に戻す。
中途半端な更新をしたら、絶対にダメ!
0167Name_Not_Found
垢版 |
2018/08/15(水) 13:40:22.90ID:???
>>153,154
もうただのおしゃべりになるのであまり自ら事情をバラしたくないのだが、
その問題のために要件も含めて設計を大胆に見直す必要が出たってこと
/*このあと15行ほど書いたが削除した。察して欲しい。*/

>>155
勿論十二分に理解して書いてるよ
だって書く前にググったもの しっかりとね
2chに書いてるんだからそれくらいのことは当然してる
バカにしないで

>>その他のレスの人
アドバイスや意見をどうもありがとう
0168Name_Not_Found
垢版 |
2018/08/15(水) 13:58:02.23ID:???
> その問題のために

その問題を自分で理解してないんでしょ?
0170Name_Not_Found
垢版 |
2018/08/15(水) 14:28:09.61ID:???
js固有でもないプログラミングの基礎の用語を
書く前にググらなきゃいけない時点でバカにされても仕方ない

1、2回目を限界が来たと書いていたけど
要件定義不備設計不備に由来する不具合が原因の作り直しじゃん
0171Name_Not_Found
垢版 |
2018/08/15(水) 15:22:27.12ID:???
ちょっとでもぐぐってたらセッションという言葉の独自定義は避ける
0172Name_Not_Found
垢版 |
2018/08/15(水) 16:33:43.46ID:???
>>168
その問題というのは誰が見てもハッキリ分かるもの
度合い問題でもあるが
何を何に変えてそこから何に変えて良くしたか
3段階で解決できるものと言ったら

>>170
たしかになぁ
でも何とも言えんわ
正直言えば1回目で完成ですでも良かったわけだし
仕様はこうです、合わせてくださいってこちらから言える案件だし
つうか目的くらいしか決められてないしどういう機能があるべきかそれほど自明でもないし
そのくせ追加要望は未だにしょっちゅうしてくるし
ここまで聞いて分かったと思うけど、直接目的を達成するものだけを作ってるわけじゃないし

>>171
セッションは本来の呼び名を避けて適当に言ったんだよ!
ググってなくてすまんかったな!
よかったら良い呼び名を教えてくれ
次からそれを使う
0173Name_Not_Found
垢版 |
2018/08/15(水) 16:49:37.59ID:???
並列処理とか普通にやればいいだけなんだが
何に困ってるか説明できてないので答えようがない
まあ全てはこいつの能力不足だ
お前が教えるんじゃなくてお前が教えてもらうほうだ
0174Name_Not_Found
垢版 |
2018/08/15(水) 17:28:22.58ID:???
まずは端的かつ明確に回答を行えるようになることを目標にすべき
同僚の苦労が偲ばれる
0175Name_Not_Found
垢版 |
2018/08/15(水) 17:59:48.67ID:???
>>131の質問の内容からして自分の常識とは異なっている
実装手法なら、周辺環境や規約にもよるけど、だいたいこのように書くと言えることもある

でも設計だと一部を抜き出して語る意味がない
全体を知っている者同士の会話でもなければ良し悪しの判断基準がないから語りようがない

毎回個別に考えて調べて考えるのが原則
だから設計は単価が高くて人工が多い
0177Name_Not_Found
垢版 |
2018/08/15(水) 22:02:15.63ID:???
JavaScript関係ない話みたいだし
元質問者も多少おさまりつかないとこあるかもしれんけど
もうやめといたらどうか
0178Name_Not_Found
垢版 |
2018/08/16(木) 15:04:39.41ID:???
なんか先日からアプデ可能って出るんですがやっても必ず失敗します
何かあったんですか?
0179Name_Not_Found
垢版 |
2018/08/19(日) 17:54:52.02ID:Hds7LGpQ
if(true){
 ・・・
}else{
 ・・・
}
みたいな文を書くとエラーが出るのだが、ダメなのか?
0180Name_Not_Found
垢版 |
2018/08/19(日) 18:18:51.73ID:???
>>179
>みたいな文
というのがよくわからないので
if(true){ console.log(1) }else{ console.log(2) }

これ試してみて
0181Name_Not_Found
垢版 |
2018/08/19(日) 19:36:08.59ID:Hds7LGpQ
>>180
()内の条件が定数だと警告が出ていたようです。
0182Name_Not_Found
垢版 |
2018/08/19(日) 19:47:45.25ID:???
ようですってなんだよ大泉洋か何かかよ
0183Name_Not_Found
垢版 |
2018/08/20(月) 00:23:46.12ID:???
自分でlintかなんか使ってわざわざ警告出るようにしておいて
相談するってさっぱり意味が分からんな
0184Name_Not_Found
垢版 |
2018/08/20(月) 11:54:39.95ID:???
あれだろ
解決してほしいんじゃなくて話を聞いてほしいだけ

車が故障したと電話する女、クソまじめに解決のため診断方法をレクチャーしようとしちゃう男、みたいな
0185Name_Not_Found
垢版 |
2018/08/22(水) 08:56:05.23ID:A1pPKwOL
javascriptのクラスを駆使して何か作ってみたいんだけどどういう内容のものならクラスがバリバリ活躍できる?
車クラスを作ろう!とかそういう練習問題的なのは無しとして
0186Name_Not_Found
垢版 |
2018/08/22(水) 09:50:53.16ID:???
練習問題が欲しいけど練習問題的なのは嫌ですって
0187Name_Not_Found
垢版 |
2018/08/22(水) 11:11:27.40ID:???
車クラスは作れるのかな?
オレには作れん(´・ω・`)
0188Name_Not_Found
垢版 |
2018/08/22(水) 12:41:47.46ID:???
>>186
実践的なお題がないかと思いまして

動物クラスを継承して犬クラスを吠えさせる、みたいなのでは実際にはどういうシーンで役立つのかイメージがつかないのですが…
0189Name_Not_Found
垢版 |
2018/08/22(水) 13:10:48.11ID:???
実際にはどういうシーンで役立つのか知りたいというだけなら
classを使っててclassでないと困る実例を聞けばいいと思うんだけど
なんでjavascriptのクラスを駆使して何か作ってみたいの?
0194Name_Not_Found
垢版 |
2018/08/23(木) 21:24:14.89ID:csYFQA4h
<button onclick="if(typeof MyFunc == 'function') MyFunc();" ・・・
と言うような記述を見たのだが、
ifは何のためにあるの?
何が目的なの?
0195Name_Not_Found
垢版 |
2018/08/23(木) 21:32:24.88ID:???
onclickのとこを自動生成してるんじゃねーの
0196Name_Not_Found
垢版 |
2018/08/23(木) 21:36:30.53ID:???
>>194
それ悪い書き方

MyFuncに関数が入っていない場合(=バグ)
バグの場合にバグを無視するというコードになってる
0197Name_Not_Found
垢版 |
2018/08/23(木) 23:28:12.11ID:???
>>194
良し悪しはともかく目的がなにかと想像すると
MyFuncは別のとこで代入されてるとか
代入されるまではundefinedなりnullなり
0198Name_Not_Found
垢版 |
2018/08/24(金) 00:32:26.75ID:???
悪手かもしれないけれど結構好きw
0199Name_Not_Found
垢版 |
2018/08/24(金) 06:51:28.82ID:???
別にnullやundefinedが入ってても問題はないし
目的は呼べないものを呼ばないようにすることじゃなくて
呼べるものを呼ばなくすることだな
例えばNodeとかでV8に手を入れてtypeofを拡張してるとか
それで例えば呼ぶとエラーになるクラスのコンストラクタは'constructor'を返すようにしてるとか
一度しか呼ぶことを期待していない関数が呼ばれた後は'function'じゃなくすとか
十分に考えられる
0200Name_Not_Found
垢版 |
2018/08/24(金) 08:06:47.02ID:9ePMrMWo
MyFuncなんてふざけた名前付ける奴がそこまで高尚なことを考えてるだろうか
0202Name_Not_Found
垢版 |
2018/08/24(金) 09:47:25.35ID:???
MyCheepfuncとでも書けばよろしいか
0203Name_Not_Found
垢版 |
2018/08/24(金) 18:02:32.12ID:???
そうだよな!myFuncだよな!!
0205Name_Not_Found
垢版 |
2018/08/26(日) 13:37:17.36ID:???
>>199
>>194の事例なら、onclickを付け外しする方が圧倒的にスマート
0206Name_Not_Found
垢版 |
2018/08/27(月) 02:12:08.30ID:???
onclick="MyFunc()"
が一番スマート
0208Name_Not_Found
垢版 |
2018/08/27(月) 20:32:05.95ID:???
ジェネレーター関数で
function* g(){
const n=yield 0;
yield n;
}
var f=g();
console.log(f.next());
console.log(f.next(3));

nextで直前のyield部の変数に値を渡せる、みたいな機能がありますが
これをうまく利用した例などはありますでしょうか
ぱっと見どこに値を渡したのか?という見辛さに違和感があるのと
実行直前の値を変えたい、という状況が思いつきません
0209Name_Not_Found
垢版 |
2018/08/28(火) 02:54:06.46ID:???
普通受ける方も送る方もfor文で回しながら渡すだろ
0211Name_Not_Found
垢版 |
2018/08/29(水) 20:32:00.83ID:BL3o/gse
index.htmlで、JSの読み込みが三つあり
<script src="file1.js"></script>
<script src="file2.js"></script>
<script src="file3.js"></script>
では正常に動作するんだけれど、三つのファイルを単純に連結して一つにして、
<script src="fileAll.js"></script>
とするとエラーが出まくるんだが、一般に、このやり方はエラー出るの?
単純に連結しているから、三つに分離している場合と同じだと思うのだが。
0212Name_Not_Found
垢版 |
2018/08/29(水) 20:35:12.46ID:???
でない。理由は思いつくが、興味ないので他の人に任せる
0214Name_Not_Found
垢版 |
2018/08/29(水) 21:09:27.82ID:???
strictと非strictが結合してるとか
0215Name_Not_Found
垢版 |
2018/08/29(水) 21:51:10.55ID:???
ネームスペースがカオス状態
0216Name_Not_Found
垢版 |
2018/08/30(木) 02:12:49.36ID:???
前後のファイルがつながって、1文扱いにならないように、

ファイルの冒頭に、; を入れておけば?
0217Name_Not_Found
垢版 |
2018/08/30(木) 13:06:35.40ID:???
Q ○○したらエラーが出ます

A エラー内容確認してがんばって直せ
0218Name_Not_Found
垢版 |
2018/08/30(木) 15:50:26.75ID:???
でもエスパー能力高いやつって経験豊富だから大体どういう理由でエラーが出てるか予想できるよね
0219Name_Not_Found
垢版 |
2018/08/30(木) 16:25:10.54ID:???
でもでも言うまえに再現できるデモでも用意しろや
0221Name_Not_Found
垢版 |
2018/08/31(金) 14:58:47.93ID:???
恥ずかしいし・・・・・・
0222Name_Not_Found
垢版 |
2018/08/31(金) 21:42:38.54ID:???
恥ずかしいなら、質問しなければいい
0223Name_Not_Found
垢版 |
2018/09/01(土) 03:18:20.04ID:???
>>221
チンコ晒せといってるじゃないんだから。
Githubとかあんなところもその恥ずかしいという気持ちを乗り越えてからすべてが始まるんだぞ
0224Name_Not_Found
垢版 |
2018/09/01(土) 05:15:01.09ID:???
チンコかファイルかって言われたら俺はチンコを晒す
0225Name_Not_Found
垢版 |
2018/09/01(土) 09:39:29.79ID:???
>>221
その理屈だと、エスパーも恥ずかしくてコードを晒せない
0226Name_Not_Found
垢版 |
2018/09/01(土) 13:15:10.23ID:???
チンコより頭頂部を晒せ
0227Name_Not_Found
垢版 |
2018/09/01(土) 13:29:54.75ID:???
            ,.:::.⌒⌒:::::ヽ
            (::::::::::::::::::::::::::::)
           (::::::::::::::::::::::::::::::::::)
          (:;;;::::::::::::::::::::::::::::::::::::)
         (:;;;;;:::::::::::::::::::::::::::::::::::::)
          (;:::::::::::::::::人:::::::::::::::::ノ
          (::::::: (´・ω・`):::::ノ 
0228Name_Not_Found
垢版 |
2018/09/01(土) 22:16:40.35ID:???
jqueryのmapとjavascriptのmapって全然違いますよね
jqueryの方はreturnで配列返したら配列じゃなく展開されて値が代入されてました
なので配列で返したいときは
$().map(_=>[[]])
みたいに入れ子にしないといけない、でよいでしょうか?
0229Name_Not_Found
垢版 |
2018/09/01(土) 23:09:13.75ID:???
>>228
なんか根本的に間違ってるぞ。

jQueryのmapは二種類ある。
$.map と $().map だ。

前者は、(jQueryが開発された当時、存在しなかった)
JavaScriptのmap相当の機能を提供するものとして作られた。

後者はjQueryオブジェクト(=要素の配列をラップしたもの)に対して
mapを実行するもの・・・が基本ではあるんだが、jQueryオブジェクトというのは
いうのはDOMだけではなく任意のオブジェクトをラップすることが可能なので
いろんなものに使えたりはする。

で、JavaScriptのmapとして使いたいなら、$.mapの方を使う。これは配列が
mapメソッドの引数になっているという違いはあるがJavaScriptのmapと同じように使え、
真の配列だけではなくlengthプロパティがある配列っぽい(Array-like な)ものを
扱えるという便利さもある。

> みたいに入れ子にしないといけない、でよいでしょうか?
入れ子にしないといけないとかいうのは意味がわからん。
後者を変な使い方をしてるだけだろう。
あんたが欲しいものは前者だ。それ使っておけば悩むことなど無いはずだ。
0230Name_Not_Found
垢版 |
2018/09/02(日) 00:08:20.80ID:???
>>229
実際に試してみるとわかる
var arr=[1,2,3];
console.log( $.map(arr,_=>[1,2,3]) ); //[1, 2, 3, 1, 2, 3, 1, 2, 3]
console.log( arr.map(_=>[1,2,3]) ); //[Array(3), Array(3), Array(3)]
console.log( $.map(arr,_=>[[1,2,3]]) ); //[Array(3), Array(3), Array(3)]
ということではないかと
0231Name_Not_Found
垢版 |
2018/09/02(日) 00:23:21.84ID:???
>>230
マジかw それはしらなかった。

jQueryのmapってRubyでいうflat_mapだったんだ。
ってことはmapといいながら1対1での変換じゃなくて
要素を増やしたり減らしたりもできるってことか。

なんでjQueryのmapはdeprecatedにならないのかと
思っていたらそういうことだったんだな
0232Name_Not_Found
垢版 |
2018/09/02(日) 08:29:58.46ID:???
$.map, $().map

jQuery には、2種類のメソッドがある

$.メソッド名は、汎用的なユーティリティ関数で、
$().メソッド名は、this を持つ、インスタンスメソッド
0234Name_Not_Found
垢版 |
2018/09/02(日) 14:40:05.80ID:???
レシーバーに有益な値が渡されるという意味だろう
0236Name_Not_Found
垢版 |
2018/09/02(日) 19:19:10.92ID:???
thisを持てない関数とかメソッドってあるんか?
0237Name_Not_Found
垢版 |
2018/09/03(月) 11:57:20.99ID:???
thisを持つとかまた頭悪いオレオレ用語開発したなw
付き合ってあげるここの人たち優しい
0239Name_Not_Found
垢版 |
2018/09/08(土) 08:11:12.39ID:???
var tName = [];
var tNumber = [];
var i = 0;
var o = document.getElementsByTagName("a")[25];
for( i=6;i <=24;i++ ){
tName.push(document.getElementsByTagName("a")[i]);
tNumber.push(document.getElementsByTagName("a")[i-1]);
if(tName[i].textContent.includes("(1001)") == true){
tName[i].style.display = "none";
tNumber[i-1].style.display = "none";
}
}
if( o.textContent.includes('(1001)') == true ){
o.style.display = "none";
}
これ実行するとTypeError: tName[i] is undefinedって出るんですが原因わかる方いますか?
実行順序の関係だろうか.
0240Name_Not_Found
垢版 |
2018/09/08(土) 09:15:08.84ID:???
空のtNameにpushしてるから
ループ最初のi==6の時はtName[0]しかないぞ
0241Name_Not_Found
垢版 |
2018/09/11(火) 08:11:08.54ID:???
>>239
エラー出た時にブラウザでオブジェクトの中身覗いたら原因丸わかりじゃないですか?
いつもどういうデバッグしてるんですか
0242239
垢版 |
2018/09/11(火) 09:07:54.08ID:???
いつも割と気合と努力で(console.log)でゴリ押ししてたからなぁ汗
ブラウザのコンソールはエラーと警告が出るだけの場所だと思い込んでてまさかコード打ち込んでデバッグ出来るとは青天の霹靂だ
>>241
tNameは最初の一個しかないのが意味が分かりません
ほぼ同じソースコードだけど別のページだと動くのに.
ゴリ押ししたら動くのにforとarray使ったら動かなくなるのなんでなん
0244239
垢版 |
2018/09/11(火) 09:35:20.21ID:???
>>243
多分江戸時代とか…滝汗
0245Name_Not_Found
垢版 |
2018/09/11(火) 11:17:52.01ID:???
ループの中の if(tName[i].……の直前で
i と tName をconsole.log()にかけるコード1行入れりゃ理解できるんでね
0246Name_Not_Found
垢版 |
2018/09/11(火) 20:05:23.62ID:???
for使わずにtNameだけ書くと >>239

var tName = [];
var i=0;
//i=0からi=5は、何もしていない
console.log(tName); // []

i=6
tName.push('要素a');
console.log(tName); // ['要素a']
console.log(tName[i]);// undefined == tName[6]
i=7
tName.push('要素a');
console.log(tName); // ['要素a','要素a']
console.log(tName[i]); // undefined == tName[7]
//以下繰り返し
0247239
垢版 |
2018/09/11(火) 21:26:04.36ID:O/Ih3NeS
>>240-241,243,245-246
とりあえずこれで事なきを得ました。ありがとうございました。
var tName = [];
var tNumber = [];
var i = 0;
var o = document.getElementsByTagName("a")[25];
for (i = 6; i <= 24; i++) {
tName[i] = document.getElementsByTagName("a")[i];
tNumber[i-1] = document.getElementsByTagName("a")[i - 1]
if (tName[i].textContent.includes("(1001)") == true) {
tName[i].style.display = "none";
tNumber[i - 1].style.display = "none";
}
}
if (o.textContent.includes('(1001)') == true) {
o.style.display = "none";
}
0248Name_Not_Found
垢版 |
2018/09/20(木) 01:19:45.54ID:M6En9stL
質問です
JSというかYouTubeの問題かもしれませんが
iframeAPIを使ってYouTube動画を貼って、準備出来たら再生、とするのに

再生(playVideo())の前に消音(mute())した場合
http://jsfiddle.net/xvc70zn9/1/

消音(mute())しなかった場合
http://jsfiddle.net/q9x2Lfma/1/

Chromeで後者が再生されないのは、おま環でしょうか?
0249Name_Not_Found
垢版 |
2018/09/20(木) 07:03:57.75ID:???
そりゃiframe内の動画がユーザーアクション無しで音声流そうとすればブロックされて当然でしょ
いまデスクトップでもどんどん厳しくなてるんだから
WebAudioAPIとかもポリシー変更になるでしょ
0250Name_Not_Found
垢版 |
2018/09/20(木) 07:54:48.18ID:???
iframe自体けっこう嫌われてるからねぇ…
0251Name_Not_Found
垢版 |
2018/09/20(木) 08:36:18.13ID:???
俺よりは人に嫌われてないだろ
0252248
垢版 |
2018/09/20(木) 16:06:10.90ID:???
>>249
つーことは
俺環だけでなく、そちらでも再現してる?のかな?
0253Name_Not_Found
垢版 |
2018/09/20(木) 19:56:31.29ID:???
chrome://flags/#autoplay-policy
* Default
* No user gesture is required.
* User gesture is required for cross-origin iframes. <--
* Document user activation is required.
0254248
垢版 |
2018/09/20(木) 20:26:53.80ID:M6En9stL
>>253
それは知ってました
何れにせよこちらからのアクションは
postMessageで送っているようなので

不可解なのはなんでMuteすればOKなのかということです
なので、おま環なのかなーと
0256Name_Not_Found
垢版 |
2018/09/21(金) 03:16:51.27ID:dotAtO5R
window.addEventListener("load", function(e){
var list = document.getElementsByTagName('a');
ってやってるんだけど、aタグ一杯あるのにlistに空の配列が返される
しかも最近突然起こるようになったんだけど、何が原因かわかりますか
0257Name_Not_Found
垢版 |
2018/09/21(金) 04:44:56.02ID:VAKGU9vY
おま環、もしくは勘違いじゃね?
getElementsByTagNameが返すのは配列ではなくコレクションだから
配列が返ってるならおかしい
0258Name_Not_Found
垢版 |
2018/09/21(金) 06:53:34.00ID:???
>>254
なんで不可解なのかが不可解
ミュートだったら再生させることによる悪影響の可能性が小さいだろうってことは分かる?
モバイルではもっと前からミュートで見えてるビデオだけ自動再生可の仕様だったでしょ
そして最近デスクトップにも似た仕様が入ったでしょ

デベロッパーなら最低限このページのことくらいは把握しておかなきゃ駄目よ
https://www.chromestatus.com/features
0261Name_Not_Found
垢版 |
2018/09/21(金) 08:21:57.19ID:???
それは知ってました、がかんに障ったのだろう
0262Name_Not_Found
垢版 |
2018/09/21(金) 10:39:08.83ID:dotAtO5R
>>257
あ、配列じゃないのかこれ。NodeListというのが返ってきてlengthが0になっています
考えられるとしたらDOMがまだできていない等だけどloadイベント発火時にそんなことってあるのかな
0263Name_Not_Found
垢版 |
2018/09/21(金) 10:45:54.31ID:dotAtO5R
setTimeOutで待ってみても同じだから、DOM構築が間に合ってないってわけではないっぽい
0264Name_Not_Found
垢版 |
2018/09/21(金) 11:13:03.46ID:???
F12でコンソール開いてdocument.getElementsByTagName("a")って打ってみて
0265Name_Not_Found
垢版 |
2018/09/21(金) 11:28:14.50ID:dotAtO5R
>>264
やってみた。それだと正常に取得されました
0266Name_Not_Found
垢版 |
2018/09/21(金) 12:17:10.91ID:dotAtO5R
ブラウザの設定の問題だった、自決しました
0269Name_Not_Found
垢版 |
2018/09/21(金) 14:05:45.51ID:???
わたし女子校生だけど自?しちゃいました
0272Name_Not_Found
垢版 |
2018/09/22(土) 12:37:31.98ID:???
javascriptもclassを実装したの?
煩雑なprototypeは改めて欲しい。
0278Name_Not_Found
垢版 |
2018/09/23(日) 13:21:48.31ID:???
プロトタイプはクラスと比較してもしなくてもこれ以上無いくらい簡単な仕組みで
複雑なのはnew演算子だって何回言ったら分かるんだろうね
0279Name_Not_Found
垢版 |
2018/09/23(日) 17:26:58.66ID:???
>>278
実装が簡単なのと使い方が簡単なのをごっちゃにしてるぞ

例えば、gotoはコレ以上無いくらいに簡単な仕組みだ、
そのgoto一つで分岐処理、ループ処理、例外処理、
処理の流れを変えることはなんでもできる

だけど、使うのは難しい


原子的な機能であればあるほど、実装は簡単で
いろんな応用ができる。だけどそのせいで間違った
使いかたもできるから、使いこなすのは難しんだよ
0280Name_Not_Found
垢版 |
2018/09/23(日) 18:33:56.68ID:???
javascriptにgotoなんてあったのか
0281Name_Not_Found
垢版 |
2018/09/23(日) 20:20:44.92ID:???
gotoなんてBASICでしか使っとらんわ
0282Name_Not_Found
垢版 |
2018/09/23(日) 20:35:50.12ID:???
小学生の時にBASICやってたなあ
そんでGOTOやGOSUBのなにがいかんのかイマイチわからん
0283Name_Not_Found
垢版 |
2018/09/23(日) 20:49:30.64ID:???
問題が出るのはたとえばこういう場合

・後でコードを見たときに
・意図や目的のコメント文がぜんぜんなくて
・大きく飛んだり戻ったりで全容を掴むのが至難の業で
・書いた本人も気づいてないgoto由来のバグが潜んでる

よって、次のことが言える
自分がメンテするのでなければ何も問題がない
0284Name_Not_Found
垢版 |
2018/09/23(日) 21:09:16.57ID:???
お腹に刺さると死ぬから包丁は使うべきじゃない
的な
0285Name_Not_Found
垢版 |
2018/09/23(日) 21:22:47.34ID:???
うむ
バカは何使ったってやらかすからなあ
0286Name_Not_Found
垢版 |
2018/09/23(日) 22:24:22.73ID:???
バカって言う奴がバカなんだよこのおバカ
0287Name_Not_Found
垢版 |
2018/09/24(月) 06:08:00.47ID:???
gotoって確か行数かマーカー依存だったよな
行数の場合、ソース変更したら処理が変わるし、マーカーだと処理を追いにくいからあまり推奨されてない
大規模開発だと(他人にソースコードを読ませる関係上)問題になるが個人での開発ならそれほど問題にならない
0289Name_Not_Found
垢版 |
2018/09/24(月) 07:19:42.04ID:???
goto乱用よりも
仕様ひっくり返すユーザ、設計をひっくり返す上流SE、みたいな
0290Name_Not_Found
垢版 |
2018/09/24(月) 07:33:59.02ID:???
要件を正しく伝えない蔵担当者
勝手に要件を追加する蔵担当者の上司
最終段階で「これ本当に必要なの〜?」とぶちかます蔵の社長、とか
0291Name_Not_Found
垢版 |
2018/09/24(月) 08:24:51.47ID:qVm0iow+
質問です 自分は障害持ちで将来的に在宅で
仕事したいと思っとります 在宅でのweb系の仕事を考えるなら、javascriptとphpどちらを先に勉強すべきでしょうか?すぐに仕事に繋がりやすいのはどちらでしょうか?

大金稼ぎたいとかじゃなく、少し稼げれば良いです 宜しくお願いします
長文失礼しました
0292Name_Not_Found
垢版 |
2018/09/24(月) 08:53:47.35ID:???
まずwebのことなんて一旦忘れて
c書けるようになってサーバ操作に慣れろ
0293Name_Not_Found
垢版 |
2018/09/24(月) 09:13:28.95ID:???
>>291
考え方が逆
何ができれば良いか、ではなく何が出来なくても許されるか、だね

んで在宅≒フリーランスだとあまりないかもなあ、出来なくてもいいこと
デザインくらいかなあ
0294Name_Not_Found
垢版 |
2018/09/24(月) 10:17:28.91ID:???
最近この手のクラワのステマじみた何かをよく見かけるな
0295Name_Not_Found
垢版 |
2018/09/24(月) 11:16:10.15ID:???
>>291
WebAssemblyもあるから何とも言えんな
C++とjavascript学んでおけばいいんじゃね
0296Name_Not_Found
垢版 |
2018/09/24(月) 12:12:14.47ID:QPDHbMRA
ウェブサイトにアニメーションを実装するとなると
Canvas使うよりよりSVGやCSSアニメーションのほうが優勢ですか

例えばページ背景に複数の円が色を変えながら動き続けるとかです
0298Name_Not_Found
垢版 |
2018/09/24(月) 12:35:16.68ID:qVm0iow+
>>295
c +は難しそうですね phpがオススメとも聞きましたが、逆の意見も耳にします
0299Name_Not_Found
垢版 |
2018/09/24(月) 22:37:14.39ID:???
>>296
WEB+DB vol.106 に、次世代のアニメ規格、Web Animations API の記事が載っている

これのPolyfill として、web-animations-js が公開されている
0300Name_Not_Found
垢版 |
2018/09/25(火) 19:14:49.93ID:???
次世代ではなく十分枯れた技術だから
0301Name_Not_Found
垢版 |
2018/09/26(水) 08:02:02.87ID:???
言うほど枯れてるだろうか?
そんなに使われまくってる?
0302Name_Not_Found
垢版 |
2018/09/26(水) 08:39:06.25ID:???
原則CSSのanimation/keyframesと一緒でしょ
枯れてると言って良いと思う
0303Name_Not_Found
垢版 |
2018/09/26(水) 11:58:19.18ID:???
> 原則CSSのanimation/keyframesと一緒でしょ
> 枯れてると言って良いと思う

だめだろ。できることが一緒でも、
それを実現している技術は最近だろ?
これはCSSではない新しい技術なのだから枯れてない

長い期間実際に使われてないなら枯れてるとは言えない
0305Name_Not_Found
垢版 |
2018/09/26(水) 12:50:57.65ID:???
実際に多くの人に使われてるかどうかは関係ない
同時期の技術で言うとWebRTCのように使うべき人が使ってきて
議論が出尽くして仕様が固まって可能性も粗方掴めた段階で枯れてると言える
もう先人が試しきってるんだからね
0306Name_Not_Found
垢版 |
2018/09/26(水) 13:44:48.03ID:???
次世代とかウン十年前のゲーム機の宣伝文句じゃないんだから
0308Name_Not_Found
垢版 |
2018/09/26(水) 20:34:22.87ID:???
>>304
まだドラフトかよw
枯れてるとか嘘じゃん
0309Name_Not_Found
垢版 |
2018/09/27(木) 00:34:13.60ID:???
ドラフトだったら枯れてない
初めて聞いたな
0310Name_Not_Found
垢版 |
2018/09/27(木) 00:55:12.08ID:???
>>309
あなたは、ドラフト(草案)がもうこれから
変わらない仕様だと断定したいんですかね?w

https://www.nttpc.co.jp/yougo/%E6%9E%AF%E3%82%8C%E3%81%9F.html
> しかし単に古いだけでなく「すでにトラブルが出尽くしていて、
>そのトラブルも解決され尽くしている」といった意味が強い。

ブラウザで実装してこの仕様でなにかトラブルがないですかー?って
調べてるのが今の段階で、トラブルはまだ出尽くしていない

枯れるわけがないだろ。常識で考えろや
0311Name_Not_Found
垢版 |
2018/09/27(木) 00:55:20.49ID:???
これらの書き込みで1600円の雑誌が何冊余計に売れるのかね
0312Name_Not_Found
垢版 |
2018/09/27(木) 00:58:45.74ID:???
枯れてない=トラブルが多く仕様が不安定

とすると
枯れてない=使い物にならない可能性が高い、細かいトラブル対応はネット漁るしかない=本見る意味なし
枯れてる=トラブルが出尽くし解決され尽くすほど普及してる=mdnで十分、本見る意味なし
0313Name_Not_Found
垢版 |
2018/09/27(木) 01:07:19.34ID:OWyFps6e
青い
熟れてる
枯れてる

で分けよう
0314Name_Not_Found
垢版 |
2018/09/27(木) 06:55:13.68ID:???
>>310
意味分からん
ブラウザはまだAPIの一部しか全然実装してないし個々何年もする気もないだろ
ずっと見てきたわけもでないのにしったげに言うな
むしろ使う人が居なくて仕様の中核以外の部分は廃止されてもおかしくないような状態だから
もう枯れ切ってるんだよ
崩れる前に使い始めようっていうのに近い
0315Name_Not_Found
垢版 |
2018/09/27(木) 09:18:42.53ID:???
>>314
意味がわからんのは、お前が「"仕様"が枯れた」なんて
意味不明なことを言ってるからだよ

いいか? 俺らは使う側。APIを使う。使うにはブラウザに実装されていなきゃいけない。
いくら仕様がずーっと前から変わらなかったとしても、それがブラウザに実装されてない以上
使えないし、Polyfillがあろうがブラウザに実装されようが、それなりの期間使われてないと
バグがあるかもしれない。だからいくら仕様が安定してようが「"実装"は枯れてない」んだよ
それとも何か?「枯れてるけど使えません。」とか言うつもりか?
0316Name_Not_Found
垢版 |
2018/09/27(木) 10:15:33.47ID:???
枯れたっつーのは、なんつうか、こう
世界中のいろんな現場で使い倒されてる感がないとね
0317Name_Not_Found
垢版 |
2018/09/27(木) 11:21:11.09ID:???
Web技術は枯れてからようやく使われるようになる
色んなメディアやブログが取り上げ始めたらその合図
0318Name_Not_Found
垢版 |
2018/09/27(木) 11:25:19.89ID:???
>>315
俺らは使う側?は?何言ってんだお前。
Webって言うのは皆で作っていくもんだろ
その大原則を忘れるとかアホかお前
ほんとアホなこと言ってる暇あったらMLに参加するなり、実装にパッチ投げたりしろよドアホ
皆が苦労して決まりきってから腰を上げるお前みたいなのに仕様が云々語る権利は一切無い
0319Name_Not_Found
垢版 |
2018/09/27(木) 13:12:21.97ID:???
皆で作っていく(大爆笑)
0320Name_Not_Found
垢版 |
2018/09/27(木) 15:18:15.36ID:???
Webの世界(要するにウェブサイト)は皆で作るが
仕様は皆で作らない
0323Name_Not_Found
垢版 |
2018/09/27(木) 19:17:15.78ID:???
>>315
> だからいくら仕様が安定してようが「"実装"は枯れてない」んだよ
いつの間にか、「実装が枯れてない」にすり替わってる
0324Name_Not_Found
垢版 |
2018/09/27(木) 19:34:58.09ID:???
っていうか実装が枯れてないというのがどうも
枯れてるものを移植したら枯れてない新世代ぎじゅつに様変わりするのか?んなわけないだろ
0325Name_Not_Found
垢版 |
2018/09/27(木) 19:56:10.37ID:???
(ここ何のスレだっけ…)
0327Name_Not_Found
垢版 |
2018/09/27(木) 20:44:00.60ID:???
枯れてる枯れてないの話も、不毛なところも、まさに
0328Name_Not_Found
垢版 |
2018/09/28(金) 07:11:51.47ID:???
不毛でも感覚をぶつけ合って少しでもすり合わせておくことは大事
皆がバラバラな方向いてたらWebは崩壊する
0330Name_Not_Found
垢版 |
2018/09/29(土) 10:42:15.73ID:2XpGYQdx
下のコードでaddEventListenerが実行されないのが良く分かりません。

window.onload = function () {
  window.addEventListener('load', function () {
    ・・・ // 実行されなかった
  });
};

なぜですか?
なお
 window.onload = function () {
ではなく、
 jQuery(function ($) {
でも実行されませんでした。そう言う仕様ですか?
0331Name_Not_Found
垢版 |
2018/09/29(土) 10:59:08.55ID:???
はい。そういう仕様です。
0332Name_Not_Found
垢版 |
2018/09/29(土) 11:05:20.80ID:???
いいえ、ケフィアです。
0333Name_Not_Found
垢版 |
2018/09/29(土) 11:18:16.83ID:???
>>330
ロードイベントが起こった後にロードイベントを監視しても、もう起こった後だから起こらない。
0334Name_Not_Found
垢版 |
2018/09/29(土) 12:05:38.19ID:???
>>330
そりゃ二重にロードイベントに紐付けしたら起動するわけが無い
どっちかだけにしろ
0335Name_Not_Found
垢版 |
2018/09/29(土) 12:13:24.85ID:???
どっちかだけ選ぶなんてできません!
0336Name_Not_Found
垢版 |
2018/09/29(土) 12:23:25.99ID:???
Life is a series of choices.(人生とは選択の連続である)- William Shakespeare(ウィリアム・シェイクスピア)
0337Name_Not_Found
垢版 |
2018/09/29(土) 15:26:44.37ID:???
>>330
おかしいな? jQueryの場合は動くはずだけど?
jQueryのloadはPromise的な処理になっていて
あとからつけても発動するように考慮されてある

jQueryの古いバージョンは違ったかな?って思って1.9.1にしたけど動く
それよりも古いバージョンはしらないけど
https://jsfiddle.net/6q4whbty/
0338Name_Not_Found
垢版 |
2018/09/29(土) 15:28:38.85ID:???
あ、逆か。
外側をjQueryにして、中をDOM APIにするわけね。
そりゃDOM APIじゃむりだ。中もjQueryにしなきゃ

ってか、外側でjQuery使っていてjQueryでやれることを
DOM APIを使ってやる必要ないでしょw
0339Name_Not_Found
垢版 |
2018/09/29(土) 23:37:04.71ID:tbk/HiSj
ヒロシキャンプ【キャンプ雑誌GARVYに登場!焚火会】
https://www.youtube.com/watch?v=EE_HBXQJDfM&;t=565s
ヒロシキャンプ【雪中ハンモック泊】
https://www.youtube.com/watch?v=47uHNVivDZA&;t=213s
【キャンプ】初めての泊まり。焚き火に男の料理!「ソロキャンプ」
https://www.youtube.com/watch?v=_6hAQmv6eYw
【キャンプ】食欲の秋!男のキャンプ飯。Solo Camping
https://www.youtube.com/watch?v=9IWX8seahAU
【キャンプ】ソロ・テント「ルクセ・ミニ・ピークU」組み立て!ワンポール
https://www.youtube.com/watch?v=mkVD6BWPhR0&;t=454s
友ヶ島で探検キャンプ1/3
https://www.youtube.com/watch?v=r4sR6jNg_3s
清流で蛍キャンプ 1/2
https://www.youtube.com/watch?v=9Uc7rhK3aEg&;t=23s
【bushcraft】ヒルバーグのグランドシートをタープに【Singularity】
https://www.youtube.com/watch?v=Fll6jgc3ufc&;t=1251s
ホットサンドクッカーでハッシュドポテト outdoor cooking
https://www.youtube.com/watch?v=yJPoTDUNIJo
暖かいキャンプお菓子 Hot Sweets
https://www.youtube.com/watch?v=zfYBLxcpeSw
0340Name_Not_Found
垢版 |
2018/09/29(土) 23:39:13.97ID:???
必要かどうかは私が決めることです
分からないのなら解答しなくていいので黙っててください
0341Name_Not_Found
垢版 |
2018/09/30(日) 03:03:11.19ID:???
>jQueryのloadはPromise的な処理になっていて
>あとからつけても発動する

どういう経緯でこうなってるんですか
pure-js側はそんなことないですよね
デバッグの妨げになるようにも思えるんですけど
0342Name_Not_Found
垢版 |
2018/09/30(日) 04:27:38.85ID:???
どういう経緯って言われても、何度も発生するイベントと
resolve(またはreject)状態になってから変わらないものは
そもそも性質が異なるからですよ。

Promiseもいまやpure-jsですが、昔はそんなものがなかったからイベントで代用していましたが、
他のイベントと違い発生したタイミングが重要なのではなくロードは発生したタイミングが知りたいというより、
「現在ロードされているか?されていなければされるまで待つ」という処理を行うのが普通なので
現在の状態を判断するという処理が必要になります。


結構複雑ですよ?まずjQueryのloadはブラウザのloadイベントではなく
それよりも早い段階で発生する、DOM構築が完了した直後の
DOMContentLoadedを捉えるものだというのは知っていますか?

DOMContentLoadedはHTML5で標準化されましたが、それまでは非標準で
https://qiita.com/mamosan/items/ff336b5cc0a1a95e03a7
Firefox 2 (2006年)、Safari 3.1(2008年)、Chrome 4(2010年)、IE 9(2011年)で
予約サポートされたものです。jQueryは2006年なので普及しておらず当時は
使えない人が大半だったってのがわかりますね?

jQueryのloadはこのDOMContentLoadedをシミュレートする形で実装されました。
詳細は省きますがドキュメントのとあるプロパティをsetTimeoutで監視して読み取れれば
イベント発生扱いとしています。この部分のコードだけでも面倒なのですが、今は
DOMContentLoadedが使えるし、シミュレートが完璧に動作すると信じて
DOMContentLoadedの話にすすみましょう。

DOMContentLoadedが発生するのはDOM構築が完了した直後です。ここで問題になるのは
パフォーマンスアップのために使われる非同期で実行されるJavaScriptの存在です。
同期的に実行されるJavaScriptはDOM構築完了前に実行されますが、非同期で実行される場合
DOM構築完了後に実行されます。つまりDOMContentLoadedが発生した後に
DOMContentLoadedを監視することになるわけです。つまりイベントはすでに発生しているので
捉えることはできません。>>330と似たような状況になりますね。
0343Name_Not_Found
垢版 |
2018/09/30(日) 04:28:13.41ID:???
ではどうするのかというと、イベントを監視する前にすでにDOMContentLoadedが発生したかを
document.readyStateを使ってチェックするわけです。

ですが単純には行かず、document.readyStateを使ってチェックしてまだloading中であれば、
addEventListenerでDOMContentLoadedを監視すると書いてしまうと、チェックした段階では
loadingだったが、addEventListenerするまでに間にDOMContentLoadedが発生してしまって
イベントが捉えられない可能性があります。

なので逆に実装し、addEventListenerでDOMContentLoadedを捉えるようにしてから、
document.readyStateを監視して、すでにreadyStatusがinteractiveにだったら
ずっと前にDOMContentLoadedが発生していたと判断するわけですが、
実はaddEventListenerを設定した直後にDOMContentLoadedが発生した可能性があるため
この場合は2回イベントが発生する可能性があります。それを避けるために状態管理で
1回しか発動しないようにするわけです。

これらの動きはDOM読み込みとJavaScriptの実行タイミングによるものなので
毎回発生するものではなく、まちまちで見つけづらいバグとなってしまいます。
ローカルでは問題ないのにサーバーにアップした発生する。
でも2回目以降はキャッシュが効いて速いので発生しないとかですね。

このように完璧に対応するのは複雑なのです。DOMの非同期読み込みをやめれば
解決するのですがパフォーマンスアップのためにブラウザに搭載された機能を
使うなというのは、ライブラリとしてありえませんね。

他のイベントでは必要ないのにloadに関してこれらが必要になるのは
DOM構築が完了したあとに何度も発生するイベントと、そもそもDOM構築完了を監視する
DOMContentLoadでは性質が異なるからなのです。

そして実際のユースケースを考えたら「ロード済みかロード完了時にイベント発生」して
欲しいため、APIもそのようになっているのが望ましいわけです。
開発者が上で書いたようなな複雑な処理を書くことなく、単純なAPIで判断できるため
それが原因で起きるマイナーなバグから逃れることができます。
0344Name_Not_Found
垢版 |
2018/09/30(日) 04:38:35.01ID:???
>パフォーマンスアップのために使われる非同期で実行されるJavaScriptの存在です。
>同期的に実行されるJavaScriptはDOM構築完了前に実行されますが、非同期で実行される場合
>DOM構築完了後に実行されます。つまりDOMContentLoadedが発生した後に
>DOMContentLoadedを監視することになるわけです。つまりイベントはすでに発生しているので
>捉えることはできません。

これどゆこと

ブラウザにおけるjavascriptの実行ってのは
今も昔も非同期な関数(呼び出し)があるだけで、原則は全部同期実行なんじゃないのけ
setTimeoutやXHRのcallbackの中でwindow.addEventListener('load', ... )なんてしないし
0345Name_Not_Found
垢版 |
2018/09/30(日) 04:49:30.00ID:???
「なんでonloadではなくDOMContentLoadedなのか」は?
つか化石IE対応のための負の遺産的挙動じゃないん
0347Name_Not_Found
垢版 |
2018/09/30(日) 07:53:25.95ID:???
>>345
IEは9の時代からDOMContentLoadedに対応してる。
対応してないブラウザのためというのなら、別にIEだけじゃなくて
その他のブラウザも非標準のDOMContentLoadedには対応していなかった
DOMContentLoadedが標準化されたのはHTML5になってからだ。
0348Name_Not_Found
垢版 |
2018/09/30(日) 07:57:00.94ID:???
非常に興味深い話だが話が長い
0349Name_Not_Found
垢版 |
2018/09/30(日) 08:01:26.63ID:???
それはわざと。レスする気なくするでしょ?それが狙い
不正にjQueryを貶めようとする奴らに反論する気をなさせる
0350Name_Not_Found
垢版 |
2018/09/30(日) 08:49:36.93ID:???
asyncは「DOM構築完了後に実行」される、ではなく
「DOM構築完了後に終了する場合がある」というべきでは

つかasyncしてもwindow.onload使えばいい話じゃないのか
0351Name_Not_Found
垢版 |
2018/09/30(日) 08:54:02.57ID:???
この件は良く知らんのだけど
>>337いわく1.9.1の時点からそういう挙動
・scriptのasyncはHTML5から
・jq 1.9.1リリース 2013年02月04日
・HTML5勧告     2014年10月28日
順番おかしくね
0352Name_Not_Found
垢版 |
2018/09/30(日) 09:04:11.75ID:???
>>351
jQのpromise的動作とjsタグのasync的動作はまったく別物
0353Name_Not_Found
垢版 |
2018/09/30(日) 09:05:03.28ID:???
間違ったscriptタグね、まぁ何でもいいや
0354Name_Not_Found
垢版 |
2018/09/30(日) 09:07:27.62ID:???
>>352
>>346
JQueryの良く分からん挙動がscriptのasyncと関係ないということになると
>>342-343の大長編レスの前提が崩れるんじゃないか?
0355Name_Not_Found
垢版 |
2018/09/30(日) 09:18:08.16ID:???
同期、非同期ぐらい勉強しろよ
0356Name_Not_Found
垢版 |
2018/09/30(日) 09:18:49.85ID:???
>>351
> ・>>337いわく1.9.1の時点からそういう挙動

どこにも1.9.1の時点からなんて書いてない。
少なくとも1.9.1ではそういう挙動だったってだけ。
おそらく最初からそうだろう
0357Name_Not_Found
垢版 |
2018/09/30(日) 09:30:03.28ID:???
>>352
何を持って別物と言ってるのかは知らないが、
PromiseオブジェクトにはPromise.resolve()とPromise.reject()という
メソッドがあって、それぞれ解決済み、リジェクト済みのオブジェクトを返す。

このオブジェクトにあとからthenメソッドでコールバック関数を
くっつけてもちゃんとコールバックが呼ばれるんだよ。
0358Name_Not_Found
垢版 |
2018/09/30(日) 09:32:38.78ID:???
> jQのpromise的動作とjsタグのasync的動作はまったく別物

jsタグってなに?HTMLタグっていいたいの?
HTMLタグのasyncはJavaScriptの実行を遅らせることで
見た目上のパフォーマンスを上げる技術で

その弊害として、DOMContentLoadedが先に呼ばれてしまうから
JavaScriptの発動が起きないってものなんだけど

jQueryはそのことも考慮されてるから、普通に書くだけで
非同期でJavaScriptが読み込まれても大丈夫って話をしてるんだよ

Promise的動作っていうのは、コールバックを後から追加しても
発動するって話。あんた全く別物の話をしてるよ
0361Name_Not_Found
垢版 |
2018/09/30(日) 09:42:15.90ID:???
>asyncはJavaScriptの実行を遅らせることで

遅らせてるのか?
htmlの解析処理と当該jsファイルのダウンロード・実行処理とを
切り離して並行処理させることで、htmlのパース・文章や画像の配置等が妨げられないようにしているだけでは?

DOMContentLoadedより後に処理が開始されるのではなく
DOMContentLoadedの前に終わるとは限らないというだけの話では?
0362Name_Not_Found
垢版 |
2018/09/30(日) 09:46:11.48ID:???
> DOMContentLoadedより後に処理が開始されるのではなく
> DOMContentLoadedの前に終わるとは限らないというだけの話では?

今はそういう細かい話はどうでも良くて、
需要なのはscriptタグのasyncを使われてると、DOMContentLoadedが
先に発生してしまうことがあるってことですよ

他にもRequireJSのような非同期でJavaScriptモジュールを読み込む仕組みを
使ったときにも発生しましたね。
0363Name_Not_Found
垢版 |
2018/09/30(日) 09:49:05.41ID:???
たとえ細かい話でも虚偽が含まれてる人の話は信用できないからなあ
0364Name_Not_Found
垢版 |
2018/09/30(日) 09:50:48.24ID:???
はは、信用出来ないっていうだけで、間違ってるとは言えない
あわれよのうw
0365Name_Not_Found
垢版 |
2018/09/30(日) 09:57:43.01ID:???
まあ間違ってるわけじゃないからね。信用出来ないってだけ
0366352
垢版 |
2018/09/30(日) 09:58:20.98ID:???
>>354>>357>>358
ごめん訂正するね
言葉足らずだった
「別物」ではなく「実装箇所が別物」
動作としては似たようなものだ
一番最初の気持ちとしてただ>>351の言ってることが的外れだったので意図としてはそれを訂正したかった
0367Name_Not_Found
垢版 |
2018/09/30(日) 10:03:04.24ID:???
window.addEventListener('load', ... )ではどうしてもダメなケースを聞きたい
>>330のような無能サンプルコードは除外するものとする
0368Name_Not_Found
垢版 |
2018/09/30(日) 10:06:48.99ID:???
(たぶんダメなケースなんて)ないです
0369Name_Not_Found
垢版 |
2018/09/30(日) 10:10:23.62ID:???
>>367
ページ内にある画像全てが読み込まれないと
JavaScriptが動かないのでダメ
0370Name_Not_Found
垢版 |
2018/09/30(日) 10:11:51.44ID:???
>>368
操作性悪くなって遅くても動くからダメじゃないんですって主張は禁止なw
その理屈だと電気がなくても生きていけるって回答になる。
0372Name_Not_Found
垢版 |
2018/09/30(日) 10:14:13.01ID:???
ゼロに。ゼロがいい。ゼロにしよう。
0373Name_Not_Found
垢版 |
2018/09/30(日) 10:21:20.40ID:???
asyncで読ませたい
どうしても早いタイミングDOMContentLoadedで動かしたい
asyncするとDOMContentLoadedに間に合わないリスクが怖い・・・
jQueryなら専用のコード書かなくてもすぐに実現!! ←今ココ

ざっくり書くとこんな感じかね?
DOM APIでもできないわけではないし
jQueryならといっても最初からそれを狙った実装ではないようだが
現実として便利に転用できますよ、という具合
0374Name_Not_Found
垢版 |
2018/09/30(日) 10:30:51.06ID:???
>>370
どっちにしてもwindow.onloadだとロードイベントに一個しか関数を紐付けできないから不便極まるんだよなぁ
一個だけしか使わないってんなら関係ないけどさぁ…
0375Name_Not_Found
垢版 |
2018/10/02(火) 19:34:20.80ID:4cwxn02l
>>374
たまにはaddEventListenerのことも思い出してあげてください
0377Name_Not_Found
垢版 |
2018/10/05(金) 07:10:11.63ID:???
そんなことよりお前らremoveEventListenerとか使ったことある?
使う機会がまったくないよなアレ
0378Name_Not_Found
垢版 |
2018/10/05(金) 08:16:06.35ID:???
>>377
そもそも今この瞬間までそいつの存在すら知らなかったぞ
0379Name_Not_Found
垢版 |
2018/10/05(金) 08:21:08.17ID:???
>>377
使ったことはないが
disableにできない類のもののイベントリスナを切りたいとか
起動する関数を切り替えたいとか
使える機会はいろいろ思いつくぞ

呼び出される関数側でチェックして即returnとかの別手段でだいたい十分だけど
0380Name_Not_Found
垢版 |
2018/10/05(金) 08:54:47.34ID:???
>>379
> 呼び出される関数側でチェックして即returnとかの別手段でだいたい十分だけど

そういうのはクラス名で制御すべきだよ。

例えばこんな感じにしてると、spanのクラスが
それぞれmode1 or mode2 の場合のみ、該当のものだけ発動してくれる

$('span.mode1').click(function() { alert('click1'); })
$('span.mode2').click(function() { alert('click2'); })
0382Name_Not_Found
垢版 |
2018/10/05(金) 12:41:52.32ID:???
>>377
普通に使うけどなあ
来れなかったら、addしたイベントをどうやって剥がしたら良いのかわからん
0383Name_Not_Found
垢版 |
2018/10/05(金) 12:48:12.48ID:???
addしたイベントを剥がす機会がないということでは?
0384Name_Not_Found
垢版 |
2018/10/05(金) 13:05:13.90ID:???
要素が増減するならばデリゲート使って親要素でイベントを捉えれば良いし
その方が効率なわけで、わざわざイベントハンドラを外すことはないね
0386Name_Not_Found
垢版 |
2018/10/05(金) 13:33:44.87ID:???
>>385
増減しないならつけっぱなしでいいやん
0387Name_Not_Found
垢版 |
2018/10/05(金) 14:49:21.41ID:???
>>386
つけっぱなしで良いこともあるし外さにゃならんこともあるな
この辺は経験というか、やったことあるかどうかの差だからしゃーないわな
0388Name_Not_Found
垢版 |
2018/10/05(金) 15:08:34.23ID:???
だからその外さなきゃならない場合ってのが無いんだっていう話をしてるんだが
経験があるというのなら、その経験を語れよ
0389Name_Not_Found
垢版 |
2018/10/05(金) 15:14:14.60ID:???
webページ作るのに外さないといけないユースケースは確かにめったに無さそうだ。
実はコンソールで色々いじくって実験する用なんじゃないのか。console.logみたいに
0390Name_Not_Found
垢版 |
2018/10/05(金) 15:38:07.82ID:???
使った経験は無いが、想像するに一つのボタンに複数の機能を持たせるときには使えそう
0391Name_Not_Found
垢版 |
2018/10/05(金) 15:45:12.06ID:???
>>390

>>380を見てね
ロジックで処理を分けるのは古いやり方だよ。今は状態ごとの処理を定義する。
こうすることがバグも減らせるんだよ。ちゃんと外せたか?二重に登録してないか?
なんて考える必要がない。

こういうものこそ経験っていうんだけどな
0392Name_Not_Found
垢版 |
2018/10/05(金) 15:49:59.55ID:???
>>391
ますますremoveEventListenerの使い道ないじゃないか…(憤慨)
0393Name_Not_Found
垢版 |
2018/10/05(金) 15:50:44.44ID:???
>>388
色々あるけどなあ
フレームワークっぽいもの作ってたときとかよく使ったよ
0394Name_Not_Found
垢版 |
2018/10/05(金) 15:57:29.66ID:???
一個のサイト作る場合ではなく
複数のサイトで汎用的に使うコンポーネントなんかを作るケースだと
CSSまで自由に出来なくてJSでやらにゃならんこともあって
そんな時には必要になるなあ

みんなも自分のサイトに組み込んでるフレームワークやライブラリのコードをのぞいてみると
案外使われてるのに遭遇すると思うよ
0395Name_Not_Found
垢版 |
2018/10/05(金) 16:46:37.54ID:???
いちいち重複イベントチェックなんて面倒だ
まとめてごっそり総入れ替えだ
0396Name_Not_Found
垢版 |
2018/10/05(金) 17:00:40.46ID:???
リフレクションAPIやプロキシーAPIと同じでフレームワークとか作る人用か。使うだけの人には洋ナシ体型
0397Name_Not_Found
垢版 |
2018/10/05(金) 17:06:44.57ID:???
経験の差が出ましたなw
0399Name_Not_Found
垢版 |
2018/10/05(金) 17:28:11.92ID:1Er0ekUU
くだらん喧嘩は他所でやれw
ツイッターとか
0400381
垢版 |
2018/10/05(金) 19:20:16.30ID:???
>>387の人気に嫉妬w
0401Name_Not_Found
垢版 |
2018/10/07(日) 14:19:14.23ID:3lG9iLI9
phpよりjavascriptを勉強すべき、という理由を教えてください 私は頭が悪いので分かりやすく頼みます
0402Name_Not_Found
垢版 |
2018/10/07(日) 14:22:22.59ID:???
PHPを作ってるところは一つ
JavaScriptはMS、Google、Apple、Mozillaと大企業が力を注いている
0403Name_Not_Found
垢版 |
2018/10/07(日) 15:10:53.21ID:???
javascriptも、もはやc++やその他言語を呼び出すだけのものになりつつある
0404Name_Not_Found
垢版 |
2018/10/07(日) 15:20:29.77ID:???
いつから呼び出せるようになったの?
0405Name_Not_Found
垢版 |
2018/10/07(日) 16:00:23.89ID:3lG9iLI9
>>402
なるほど、ありがとうございます
本当に死ぬ気で毎日勉強した場合、
理解できるようになるまでどれくらい掛かりますか
0407Name_Not_Found
垢版 |
2018/10/07(日) 16:28:28.50ID:???
C++はもはやJavaScriptから呼び出すライブラリに成り下がったんだな
0408Name_Not_Found
垢版 |
2018/10/07(日) 16:29:19.58ID:???
呼び出されることすらできなかった状態から成り上がったんやぞ。
0409Name_Not_Found
垢版 |
2018/10/07(日) 16:30:34.31ID:???
(javascriptの実行速度が遅すぎて使えないからこういう方法が生まれたんだけど…)ボソッ
0410Name_Not_Found
垢版 |
2018/10/07(日) 16:34:26.07ID:???
でファミコンエミュレータwasmにしてみたらjsより遅かったんでしょワロスwwwww
0411Name_Not_Found
垢版 |
2018/10/07(日) 17:40:06.08ID:???
>>410
ブラウザ /JS版 /Wasm版
Chrome 63/4.36ms/5.68ms
Firefox 58/5.76ms/3.98ms
Safari 11/9.98ms/4.21ms
これ?要はchromeの実装がクソ雑魚だったってだけでしょ
firefoxとsafariはjs版を大きく超えてる
0413Name_Not_Found
垢版 |
2018/10/07(日) 18:02:40.77ID:???
>>411
え?たったそんだけしか違わないの?msって
人間が知覚できるレベルじゃないじゃん
0414Name_Not_Found
垢版 |
2018/10/07(日) 18:17:10.16ID:???
いやだって巨大なプログラム用だから
0415Name_Not_Found
垢版 |
2018/10/07(日) 18:28:51.84ID:???
なんでchromeで遅くなってるの?
chrome、前はjsの最適化で最速とか言ってたけど
sandboxとかセキュリティ絡み?
0416Name_Not_Found
垢版 |
2018/10/07(日) 18:33:16.37ID:???
>>411
ご覧くださいwww「javascriptの実行速度が 遅 す ぎ て 使 え な い」とまでイキッておいてコレwwwww
0417Name_Not_Found
垢版 |
2018/10/07(日) 18:36:45.12ID:???
cとphpやpyの差みたいに10倍かそれ以上速くなるもんだとばっかり思ってた
カスだな
0418Name_Not_Found
垢版 |
2018/10/07(日) 18:41:24.71ID:???
コンパイルの手間かけてまでこの程度かよw
時間は有効に使えよ?みんなお前に付き合うほどヒマじゃねーんだw
0419Name_Not_Found
垢版 |
2018/10/07(日) 18:43:11.76ID:???
これでセキュリティに穴が見つかろうものならまるで利用価値なしのゴミ屑扱いになってしまう
0420Name_Not_Found
垢版 |
2018/10/07(日) 20:08:06.87ID:3lG9iLI9
>>412
意地悪
0421Name_Not_Found
垢版 |
2018/10/07(日) 21:47:17.66ID:4m+yZWnq
エロゲー廃人速報改
http://erogehaijin.com/

・生活保護の不正受給カミングアウトして自慢
・DMMからステマ脅迫工作で雇われる
・アフィで稼ぎまくり

・DLsiteはじめ各流通やメーカーへの脅迫
・ステマ工作で金貰ってるのは言うに及ばず
・風俗通い・焼肉ざんまい

エロゲー廃人速報改
http://erogehaijin.com/

     ∧_∧
 ピュー (  ^^ ) <これからもエロゲー廃人速報改(ナマポ不正受給)を応援して下さいね(^^)v
  =〔~∪ ̄ ̄〕
  = ◎――◎ 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0423Name_Not_Found
垢版 |
2018/10/08(月) 00:10:27.89ID:???
wasm使うならもはやjs発である必要性ないと思うんだが
js使いたいだけっていう
違うコンパイル言語開発しろって
0424Name_Not_Found
垢版 |
2018/10/08(月) 05:29:18.70ID:???
>>402-405
プログラマーが、クソ言語のPHP を使う理由がない

Ruby on Rails などのフレームワークを使うけど、
画面は、Vue.js など、JavaScript(JS) になるので必須

初心者は、Ruby, JS を数年やればよい。
それ以外の言語は難しいから、数年後に始める
0425Name_Not_Found
垢版 |
2018/10/08(月) 06:10:18.89ID:???
wasm, wasmってまあ良く聞くけど

・wasmの性能って「元の言語/コードの効率性」と「wasm形式にしてくれるコンパイラの(最適化)性能」と
「ブラウザの方のwasm動作環境の性能」の全部に左右されんだよね?

・「wasmはロード時間短縮にはなるけど動作速度は変わらない」って主張が今でもいくらか見られるけど
jsで動かしてたものをc-wasmに変えれば動作速度は劇的に改善される可能性もまあ普通にあるよね?

・jsと違って低次元なメモリ管理できちゃうけど、
wasmが個々のwasmに割り当てられたメモリ領域以外を読み書きできちゃって
セキュリティ的に大問題になる、ってことは生じ得ないの?
activexで脆弱性突いてウィルス散布、みたいな現象はノーサンキューなんだけど
0426Name_Not_Found
垢版 |
2018/10/08(月) 07:14:06.94ID:???
そもそもwasmっていうのは既存のサイト速くするものではないからな
既存のサイトは、サーバー側でバッチ処理をさせるという設計
クライアントでやることが少ないから、いくらwasmでクライアントが
速くなったとしても効果は殆ど無い。

ぶっちゃけるとwsamの主な用途はゲームだよ

ゲームは反応速度が重要なのでバッチ処理でさせると成り立たない
あとはせいぜいグラフィックソフトぐらいだろう
0427Name_Not_Found
垢版 |
2018/10/08(月) 07:31:39.68ID:???
ユーザに気付かれないようにクライアントに高処理効率でマイニングさせるとかな
0429Name_Not_Found
垢版 |
2018/10/08(月) 09:41:12.45ID:???
>>425
WASMはJSエンジンのバックエンドを流用できるよう設計されていて
現状ではGCもなくほぼasm.jsと同じだからasm.jsのバックエンドが使われてるよ
正確には最近はasm.jsの方がWASMにコンパイルされてWASMのバックエンドで動くんだけど
だから実行速度に関してはJSの限界というかasm.jsと同等になる
ただこれからSIMDが入ったりして、最適化も進めば
原理上ターゲットを絞りきれないネイティブコードより早くなることもあり得る

ただJSで動かしていたものをWASMにすれば早くなるかと言うとそういうものではない
asm.jsでも同じだが、JS-WASM間の関数のやり取りにはオーバーヘッドがあって、
インライン化などの相互最適化も効かないので
基本的に沢山呼び出される小さな関数をWASMにすると性能は悪化する
だから大きな処理を丸っとWASMにするという使い方が一番良い

それと別に低次元なメモリ管理はできない
WASMにとってのメモリとはただのArrayBufferだから
勿論サイドチャネル攻撃はいくらかできるがそれはもうWASMに限った話ではないので仕方がない
0430Name_Not_Found
垢版 |
2018/10/08(月) 09:45:07.18ID:???
ネイティブより速くとか無理ゲーだろ
C/C++で書いたアプリより速く計算しますってことだぞ
0431Name_Not_Found
垢版 |
2018/10/08(月) 13:07:34.94ID:???
jsが超早くなった!! cよりも早く!!
 → c側のコードが糞過ぎただけでした

chromeのjs処理が**より数段早くなった!!
 → chromeが決め打ち特化でチューンした部分だけでの話でした

この手の誤った性能比較話を連想した
0432Name_Not_Found
垢版 |
2018/10/08(月) 16:00:34.49ID:???
ブラウザが仮想マシンの代わりになるのはいいけど
そのブラウザが乱立してる状況じゃ安定性は得られんよね
結局Windows OSみたいな独裁体制にしないと
0433Name_Not_Found
垢版 |
2018/10/08(月) 17:47:25.39ID:???
>>430
全然無理じゃない
そこらのネイティブコードっていうのは多くの環境に対応するため最新のCPU機能を使いきれずコンパイルされてるから
ちょっとしっかりしたのだとスイッチ使ったりインストール時にコンパイルするけど
それでも実行の直前にコンパイルするのに原理的に勝りはしない
WASMならそれこそ10年前に書いたコードでも最新の機能を使って最新のコンパイラでコンパイルされる

まあ現実未だ可能性の話でしか無いが、中間コンパイルというものにはそういうメリットが昔からある
コンパイルするということは書いたコンテキストが失われるということだから
それに将来的にJITも働くようになればもっと最適化の可能性が広がる
無理ゲーだが原理的な可能性はあるということ
特に個人的にはメニーコアの時代がやってきてるのにOSが支援が弱い
パラレリズムとそのバランサをブラウザにやってもらいたい

>>431
決め打ちチューンは正当な最適化手段
可能性の高い方に賭けるというのはCPUでさえもやってること
0434Name_Not_Found
垢版 |
2018/10/08(月) 18:16:31.49ID:???
前身のasm.jsなんて大分前からあるのに
なんで変な誤解されるんだろ
0435Name_Not_Found
垢版 |
2018/10/08(月) 21:09:11.67ID:???
それで、javaはcより速くなりましたか?
0439Name_Not_Found
垢版 |
2018/10/08(月) 23:15:03.19ID:???
いつから、Javaの話になった?
0441Name_Not_Found
垢版 |
2018/10/09(火) 00:35:11.01ID:???
全C使いと全Java使いの中央値の力量を持った者同士にアプリを作らせたら
Java使いの方がパフォーマンスも安定性も使い勝手も良いもの作ることは間違いない
でもAndroid開発でもそうだけど今どきCやC++を使うということは
「あえて」使ってるということだから、プログラマのレベルも高いし
それで比較的劣るものができるはずがない
0443Name_Not_Found
垢版 |
2018/10/09(火) 00:40:29.39ID:???
>>442
証明したければ自分が相当数の被験者集めて実験したら?
0444Name_Not_Found
垢版 |
2018/10/09(火) 00:43:27.78ID:???
>>443
>>442ではないが、なぜ442が441の論を証明しなければならんのだ?
0446Name_Not_Found
垢版 |
2018/10/09(火) 00:49:29.54ID:???
俺の意見は間違いない
俺の意見をお前が証明しろ
0447Name_Not_Found
垢版 |
2018/10/09(火) 06:52:15.47ID:???
俺はあくまで(経験上)間違いがないと言っただけで
証明が欲しいなら勝手に自分でやれってことだ
0448Name_Not_Found
垢版 |
2018/10/09(火) 06:58:36.38ID:???
>>447は無職の荒らしであって実はJavaもCも扱ったことがない
俺の経験上間違いない
0449Name_Not_Found
垢版 |
2018/10/09(火) 20:11:25.06ID:???
赤の他人の正しさを「証明」する人はいないが、「確認」ならするかもしれない
0450Name_Not_Found
垢版 |
2018/10/09(火) 20:38:47.66ID:???
経験上間違いがないwww
0451Name_Not_Found
垢版 |
2018/10/10(水) 05:46:07.33ID:???
MathJaxを使っています

$\begin{array}{cc}
a & b \\
c & d
\end{array}$

はちゃんと機能していますが、

$\begin{array}{cc}
a & b \\
\multicolumn{2}{c}{d}
\end{array}$

が機能しません。
なぜですか?
MathJaxでは\multicolumnは実装されていないんですか?

使っているMathJaxは
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML";>
</script>
です。
0452Name_Not_Found
垢版 |
2018/10/10(水) 07:12:21.60ID:???
>>449
俺は別に俺の言ってることが正しいから思えら黙って信じろとは言ってないんだが
>>450
もしかして「間違いない」って言葉尻に反応してるのか?
0454Name_Not_Found
垢版 |
2018/10/10(水) 09:05:37.54ID:???
>>452
命題が真である事を確認するのが「証明」
0455Name_Not_Found
垢版 |
2018/10/11(木) 06:18:14.70ID:???
MathJaxでarray環境の入れ子って何重まで可能ですか?
0457Name_Not_Found
垢版 |
2018/10/11(木) 08:25:44.31ID:???
自己解決したら解決方法まで書きましょう
それが他の人の助けになるかも知れません
0460Name_Not_Found
垢版 |
2018/10/13(土) 22:19:19.58ID:sQ6ZRTcU
<INPUT type="textbox" name="test">などのフォームのnameから
フォームがテキストボックスかセレクトボックスかチェックボックスかラジオボタンかを判別するにはどうすればいいんですか?
0461Name_Not_Found
垢版 |
2018/10/13(土) 22:43:44.55ID:???
区別できないことに重要な意味がある
0462Name_Not_Found
垢版 |
2018/10/13(土) 22:47:16.84ID:???
.checkedや.valueでundefinedでない値さがせば?
0463Name_Not_Found
垢版 |
2018/10/13(土) 23:31:50.06ID:???
>>460
var elm = document.querySelector('[name="test"]');
console.log(elm.type==="text");
0464Name_Not_Found
垢版 |
2018/10/13(土) 23:58:51.51ID:???
var elm = $('[name="test"]')[0];
console.log(elm.type==="text");
0466Name_Not_Found
垢版 |
2018/10/14(日) 11:08:36.15ID:moJyl5te
在宅プログラマーってエクセルできないと無理?エクセルから逃げてきたんだ
0469Name_Not_Found
垢版 |
2018/10/14(日) 12:39:45.28ID:???
>>465
単に>>463に合わせただけ。あえて一つだけ処理しようとするとこうなるという例
もちろん>>463もそうだけど、こういう書き方は良くない。
name属性がtestのものがない場合や複数ある場合に対応できないからね

一つだけ処理する場合でも、動的なページで要素がない場合でもエラーにならない
$('[name="test"]').attr('text')

またこうすれば、0個から複数全てに対応できる
$('[name="test"]').each(function() {
 console.log(this.type==="text");
})

でもそうすると>>463よりも長くなってしまう。
それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから
DOM APIで実現しているレベルにまで下げることで短いということを示しただけ

ちなみにjQueryでjQueryオブジェクトを外すのは普通
そもそも上のeachの中のthisはDOM要素なんだから
0470Name_Not_Found
垢版 |
2018/10/14(日) 12:46:45.63ID:???
>>465
そういうこというと、こういう面倒くさい宗教論が始まるから控えてくれ
0471Name_Not_Found
垢版 |
2018/10/14(日) 12:54:45.67ID:???
jQueryの話題が出ることが許せないんだ。
僕のスレのルールは僕が決めるんだ
0473Name_Not_Found
垢版 |
2018/10/14(日) 13:15:33.48ID:???
jQueryは便利だけどprototype.jsとコンフリクトするのがなぁ…
0474Name_Not_Found
垢版 |
2018/10/14(日) 13:16:50.36ID:???
nameだと複数あるものだしそもそも要素の特定をどうするのかって問題が有るでしょ
もしidが'test'なら
console.log(test.type==="text");
でOk
0475Name_Not_Found
垢版 |
2018/10/14(日) 13:27:04.54ID:???
>>473
prototype.jsはもう使われてないし、
使われていたって同居できるので問題ない

>>474
条件付きでOKといわれてもな。
その条件を満たせないときはNGだろ
0476Name_Not_Found
垢版 |
2018/10/14(日) 14:54:52.32ID:???
条件付きでOKと言いたいわけではない
今提示されてる条件の範囲では解答が出せないと言ってるんだよ
0477Name_Not_Found
垢版 |
2018/10/14(日) 14:58:22.24ID:???
条件っつってnameで引っ掛けてelem.typeを見ましょうで終わりじゃん
0478Name_Not_Found
垢版 |
2018/10/14(日) 15:32:09.66ID:???
俺はそう簡単な話とは思えないけどな
質問者が求めていそうなこと、実際にあり得る状態の組み合わせはかなり合って
そもそもnameを見ることが不適切な場合もあるってことだ
0479Name_Not_Found
垢版 |
2018/10/14(日) 15:38:23.16ID:???
そんなこと言い出したらjavascriptを使うのが適切じゃない場面も多々あるぞ
0480Name_Not_Found
垢版 |
2018/10/14(日) 16:26:42.92ID:???
極論を言ってるのではなく極めて常識的な範囲での話のつもりはなんだが
まあ多分これ以上話しても分かり会えないだろうからここで止めにしよう
0481Name_Not_Found
垢版 |
2018/10/14(日) 16:33:27.33ID:???
>>480
お前が悪いのは、答えが出ない問題と言ってるくせに
答えが出ない問題だと言わずに
答えを出しているところなんだよ
0483Name_Not_Found
垢版 |
2018/10/14(日) 17:07:13.73ID:???
最初からjavascriptなんて使わなけりゃよかったんだよ
0485Name_Not_Found
垢版 |
2018/10/14(日) 17:49:20.87ID:???
>>469
>またこうすれば、0個から複数全てに対応できる
>でもそうすると>>463よりも長くなってしまう。
>それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから

>>463は単数処理なのになぜ複数処理と比較したの
比較するなら>>463ベースの複数処理と
jQueryでの複数処理じゃないの
0486Name_Not_Found
垢版 |
2018/10/14(日) 18:19:16.47ID:???
>>481
詭弁だな
もしこういう場合ならこうと答えを出すのは
答えが出せないと思ってることと矛盾しないし悪いことである訳がない

それにマシンじゃないんだからさ
人の主張に込められた思いというのはたった1つで
かならず0か1かハッキリできるものかのように話を進めるのは止めてくれない?

今回はただ君の頭が硬すぎて変な思い込みしちゃったってだけの事件
それ以上でも以下でもない
0487Name_Not_Found
垢版 |
2018/10/14(日) 18:24:22.91ID:???
GitHubほど大きいところがjQueryなんて大味なライブラリ使っちゃ駄目だろ
もっと軽量なものだけにして後は自分たちで最適化したものを開発するだけのメリットが有る
0488Name_Not_Found
垢版 |
2018/10/14(日) 22:28:23.85ID:???
>>485
>? 比較するなら>>463ベースの複数処理と
>? jQueryでの複数処理じゃないの

ぷぷぷ >>463のどこが複数処理なのか
DOM APIも理解してないやつが、DOM APIすごいとか
言ってるんだよな。傑作だwww
0489Name_Not_Found
垢版 |
2018/10/14(日) 22:28:57.49ID:???
>>487
> GitHubほど大きいところがjQueryなんて大味なライブラリ使っちゃ駄目だろ

だから大味なライブラリじゃないってことでは?
0490Name_Not_Found
垢版 |
2018/10/14(日) 22:40:38.35ID:???
繊細な味のライブラリを教えてください
0491Name_Not_Found
垢版 |
2018/10/14(日) 22:53:44.72ID:???
あ、ごめんなさいそれ来月からなんですよ
0492Name_Not_Found
垢版 |
2018/10/14(日) 22:54:38.99ID:???
GitHubほどの大きい所がjQueryを使ってるんだから
信頼性は高いだろう

どこの馬の骨ともわからんやつが、
大手が使っちゃダメなんだって叫んでも信用できない
0493Name_Not_Found
垢版 |
2018/10/14(日) 22:59:24.26ID:???
馬の骨で出汁をとると大味になるからな
0495Name_Not_Found
垢版 |
2018/10/14(日) 23:09:45.57ID:???
当店は化学調味料の使用を中止しました
0497Name_Not_Found
垢版 |
2018/10/14(日) 23:18:04.65ID:???
jQueryって文字があると使ってる事になるってマ?
0498Name_Not_Found
垢版 |
2018/10/14(日) 23:32:03.81ID:dlr2OXqt
まずは>>482の記事読めよ。
そんなだからjQueryバカはバカにされるんだよ。
そんなだからGitHubに捨てられちゃうんだよ。
0500Name_Not_Found
垢版 |
2018/10/14(日) 23:34:12.60ID:???
Vueってやつが都会じゃナウでヤングなハイカラらしいってばっちゃが言ってた
0501Name_Not_Found
垢版 |
2018/10/14(日) 23:36:38.27ID:???
そういや、jQueryはこれからも使われ続けるって言っていたやつが
↓のスレたてたっけ

2017年 JavaScript★71.9%ものサイトがjQueryを利用 [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1485008061/

今どうなったかな? あと2ヶ月すればスレ立てて2年立つけど


https://w3techs.com/technologies/history_overview/javascript_library/all
jQuery
72.9%
72.9%
73.0%
73.1%
73.2%
73.2%
73.4%
73.3%
73.2%
73.3%
73.3%
73.4%
73.3%
73.3%

やっと73.2%〜73.4%で安定したみたい。
0502Name_Not_Found
垢版 |
2018/10/14(日) 23:53:13.57ID:???
GitHubがjQueryの使用をやめたのは分かったがなぜjQueryがバカにされるのか分からない
0503Name_Not_Found
垢版 |
2018/10/14(日) 23:54:40.02ID:???
馬鹿にしている方もわかってないんだから
誰にもわからないだろうさw
0505Name_Not_Found
垢版 |
2018/10/15(月) 00:08:05.37ID:???
むこうでもいるいらねの喧嘩になってんじゃん
ここと一緒だな
0506Name_Not_Found
垢版 |
2018/10/15(月) 00:10:03.84ID:???
githubなんてオタクの相手だけしてりゃいいんだからjqueryも簡単に捨てられるわな
githubはjqueryのことバカにはしてないけどな
0507Name_Not_Found
垢版 |
2018/10/15(月) 00:22:31.88ID:???
jQueryディスるのにGitHubを持ち出してきた奴がバカだってことでよろしいでしょうか?
0508Name_Not_Found
垢版 |
2018/10/15(月) 00:31:24.96ID:???
githubのようなシステム屋なら
技術者がたくさんいるからjQueryなくてもやれるんですよ!

社長。githubに勝てると思いますか?
うちでは無理です。
0509Name_Not_Found
垢版 |
2018/10/15(月) 01:10:02.94ID:???
社長「これからはFLASHの時代や」
0510Name_Not_Found
垢版 |
2018/10/15(月) 01:33:55.01ID:???
JavaScript使ってますけどjQueryは使ってませんっていうのは
全世界で2.8%しかないのな
0511Name_Not_Found
垢版 |
2018/10/15(月) 01:46:22.74ID:???
会社で一人でもjquery使ってたら会社丸ごとjqueryユーザ理論
0512Name_Not_Found
垢版 |
2018/10/15(月) 02:06:30.76ID:???
どうやって一人がjQuery使ってるって調べるの?
調べる方法がない=そういう統計も出せるはずがない
と思うけど?
0513Name_Not_Found
垢版 |
2018/10/15(月) 03:09:32.12ID:???
>>488

例えば>>463ベースなら、querySelectorAllでforなりmapなり書かれたものと
>>469の$('[name="test"]').each云々を比較するならわかるが

複数処理の場合、単数処理である>463とは別の見地なんだから
>でもそうすると>>463よりも長くなってしまう。
みたいにコードの長さを気にしている意味がわからんというか違和感だらけなんだが。
0514Name_Not_Found
垢版 |
2018/10/15(月) 03:30:32.15ID:???
そもそも>>464>>463に合わせてかつ全部jQueryで書くと
var elm = $('[name="test"]:eq(0)');
console.log(elm.attr('type')==="text");
なわけだろ(てか>>469のコード間違ってね?5行目あたり'text'じゃなくtypeじゃないの)

>>463が82文字で
上のコードが75文字だから
別に>短くかけるという俺の主張に反するから
には反してないよなぁ
一体何を気にして>>464を投稿したんだろうか
0515Name_Not_Found
垢版 |
2018/10/15(月) 03:47:10.87ID:???
一つの処理だから:eq(0)すらいらなかったわ >>513
0517Name_Not_Found
垢版 |
2018/10/15(月) 12:51:27.51ID:???
>>513
> 例えば>>463ベースなら、querySelectorAllでforなりmapなり書かれたものと

あのさぁ、>>463にかいてあるquerySelectorを
しれっとquerySelectorAllに変えないでくれないかなぁ

気づかないとでも思ってんの?
ほんと、いつもお前のやり口は卑怯
0518Name_Not_Found
垢版 |
2018/10/15(月) 12:53:11.87ID:???
>>514
jQueryオブジェクトから[0]で0番目のDOM要素が
取れるっていうのもjQueryの機能なんだわ。
jQueryではDOM要素も併用する
簡単に併用できるってことも特徴のひとつなわけ
0519Name_Not_Found
垢版 |
2018/10/15(月) 12:54:27.86ID:???
>>513
jQueryで単数で処理するなら

var elm = $('[name="test"]')[0];

これになるわけよ。これ。単数
0520Name_Not_Found
垢版 |
2018/10/15(月) 12:56:09.56ID:???
var elm = document.querySelector('[name="test"]');
console.log(elm.type==="text");


var type = $('[name="test"]').attr('type');
console.log(type==="text");

まあどうしてもっていうのなら、こう書いてもいいけどさ
0521Name_Not_Found
垢版 |
2018/10/15(月) 12:57:46.20ID:???
>>514
> 一体何を気にして>>464を投稿したんだろうか

>>464と全く同じ結果(要素が見つからないときにエラーになる)
をもたらす同等のコードのjQuery版

まあ普通はエラーになるのは良くないが、
それを許容すれば、さらに短くなるということ
0522Name_Not_Found
垢版 |
2018/10/15(月) 13:49:55.47ID:???
>>518
>jQueryの機能なんだわ。
メンバ演算子がjQueryの機能・・・????
0524Name_Not_Found
垢版 |
2018/10/15(月) 14:40:45.66ID:???
>>517
>気づかないとでも
?? 隠してないが?
>いつもお前のやり口
????

>>469
(1)>>463に合わせ単数
(2)jQueryで、かつ短く書きたい
(3)単数版$('[name="test"]').attr('type')、または
(4)複数対応版(略
(5)単数版>>463と比べ、コードを短くしたい
3→5はいいとして
4→5は別物コードなんだからコードの長さが違うのは当たり前じゃないの
>でもそうすると
でも、ってなんなの
0525Name_Not_Found
垢版 |
2018/10/15(月) 14:43:38.75ID:???
同じものの比較

単数版DOM API(要素がない場合にエラーになる版)
var elm = document.querySelector('[name="test"]');
console.log(elm.type==="text");


単数版jQuery(要素がない場合にエラーになる版)
var elm = $('[name="test"]')[0];
console.log(elm.type==="text");
0526Name_Not_Found
垢版 |
2018/10/15(月) 14:46:54.12ID:???
単数版DOM API(要素がない場合にtypeがnullになる版)
var elm = document.querySelector('[name="test"]');
var type = elm ? elm.type : null;
console.log(type==="text");


単数版jQuery(要素がない場合にtypeがnullになる版)
var type = $('[name="test"]').attr('type');
console.log(type==="text");
0527Name_Not_Found
垢版 |
2018/10/15(月) 14:52:53.64ID:???
>でもそうすると>>463よりも長くなってしまう。
あきらかにコードの長さに言及してるんだよなぁ・・
そして別物コード同士の比較が動機になっているという
0528Name_Not_Found
垢版 |
2018/10/15(月) 14:56:35.95ID:???
流石に>>525見れば、同じものがどういうものか
理解したようだな
0529Name_Not_Found
垢版 |
2018/10/15(月) 15:01:56.45ID:???
少なくともおれは別物コードの比較で長さを気にしてることに違和感を感じたことしか言ってないわ
そしてまだ回答は得られていない
0530Name_Not_Found
垢版 |
2018/10/15(月) 15:03:59.68ID:???
別物のコード比較ってなんのこと?
そんなことしてないけど

>>525-526みて満足したなら帰れよ
0531Name_Not_Found
垢版 |
2018/10/15(月) 15:16:32.42ID:???
最初から>>469
>それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから
>またこうすれば、0個から複数全てに対応できる
>でも
の違和感について>>524しかきいてない
0532Name_Not_Found
垢版 |
2018/10/15(月) 15:18:13.05ID:???
はぁ?理解力無いのか。同じことを実現するなら、
どんな場合でもjQueryの方が短くかけるんだよ
0533Name_Not_Found
垢版 |
2018/10/15(月) 15:21:38.81ID:???
>>532
君だよ理解してないのは。
こちらは、短くかけないとは一言も言ってないぞ
typeとtextを間違う程度のレベルだからしょうが無いだろうが
0534Name_Not_Found
垢版 |
2018/10/15(月) 15:23:42.90ID:???
短くかけると言ったのは俺だってーの
お前の話なんか知らんわ
0535Name_Not_Found
垢版 |
2018/10/15(月) 15:24:59.33ID:???
短く”かけない”

typeとtext間違えるは、聞き間違えるは
どうしようもないなほんと
0536Name_Not_Found
垢版 |
2018/10/15(月) 15:28:50.54ID:???
>ほんと、いつもお前のやり口は卑怯
これも追加で
0537Name_Not_Found
垢版 |
2018/10/15(月) 15:29:02.94ID:???
だから俺が短くかけると言って、
お前は何も言ってないんだろ?

何も言ってないなら、そこで終わりだろ
0538Name_Not_Found
垢版 |
2018/10/15(月) 15:37:36.76ID:???
いや、強いて言えばおれは
>>463の単数 と jquery単数版

>>463の複数版 と jquery複数版
も短くかけると思ってる
おまえはなぜか
jquery複数版 と >>463の単数処理(あえて版とは言わない)
でコードの長さについて言及している>>469
0539Name_Not_Found
垢版 |
2018/10/15(月) 17:22:54.60ID:???
あれみて、jQueryの複数版とDOM APIの問題がある版(あえて単数版とは言わないw)
で長さ比較してると思ってるのかw

jQueryだと普通に書いたら、DOM APIのような問題あるコードは簡単に排除できるんだよ。
それじゃ比較にならないから、最初にDOM APIと問題があるコードにしたんだろ
同じもので比較するために
0540Name_Not_Found
垢版 |
2018/10/15(月) 18:03:47.93ID:???
いや>>469のどこをどうみても
>でもそうすると
というレスの前に、
>一つだけ処理する場合でも と >またこうすれば 複数全て云々
が書かれている
それらに対して逆説として、>でもそうすると
が書かれており、その直後に>それは
と書かれていることから>>469
単数処理である>>463のコードについて>長くなってしまう
というコードの長さについて触れているのは明確

決定的なのは、仮に、
複数版である>またこうすれば、 略 ="text"); })
の行を消去した場合、>一つだけ処理する場合でも云々
のコードは既に>>463より短いため、
>よりも長くなってしまう
の意味は通じなくなる

これらのことから、
>でもそうすると>>463よりも長くなってしまう。
とは>複数全てに対応できる云々の複数版コードの長さについて
言及していたものと思われる
0541Name_Not_Found
垢版 |
2018/10/15(月) 18:12:41.06ID:???
ほんとキモイなw
こいつなにがしたいんだろう?
0542Name_Not_Found
垢版 |
2018/10/15(月) 18:57:13.39ID:???
どっちもキモいんですが
0543Name_Not_Found
垢版 |
2018/10/15(月) 19:07:36.03ID:???
俺はjQueryを使えばいかなるDOM操作も
同じことをDOM APIを使うよりも簡潔に書けるって
言ってるだけなのに、どうも関係ない所に反応するんだよなぁ
反論しないなら意味不明なこと言わなくていいのに
0544Name_Not_Found
垢版 |
2018/10/15(月) 19:21:19.41ID:???
質問の主旨は>>460
判別する手段を与えてあげればいいだけ
短くできるとかいう主張はまさに
まったくもって関係ないところ
0545Name_Not_Found
垢版 |
2018/10/15(月) 19:25:36.62ID:???
そしてその答えがこれなわけ

464 名前:Name_Not_Found[sage] 投稿日:2018/10/13(土) 23:58:51.51 ID:???
var elm = $('[name="test"]')[0];
console.log(elm.type==="text");

これに対して関係ない質問をするなってこと
0546Name_Not_Found
垢版 |
2018/10/15(月) 19:26:25.24ID:???
誰が関係ない話を始めたのかよくわかりました。
0547Name_Not_Found
垢版 |
2018/10/15(月) 19:33:05.62ID:???
まとめると>>464が何の進展もない駄レスしただけの話
0548Name_Not_Found
垢版 |
2018/10/15(月) 19:40:30.57ID:???
おれならわざわざjquery使って同じような回答するくらいなら
console.log( $('[name="test"]').map((i,_)=>_.type) );
判別手前だが、こういうのでいいじゃんと思うわ
そもそも>>460のレスから察するにコードすらいらないと思うわ
おそらくelement.typeで取得できるかどうかを知りたかったレベルだろうし
0549Name_Not_Found
垢版 |
2018/10/15(月) 19:40:36.60ID:???
>>464>>460にレスしてるわけで何の問題もない

問題はその>>464に意味のない質問をしたやつ
0550Name_Not_Found
垢版 |
2018/10/15(月) 19:42:08.68ID:???
>>548
お前なに自分でコード書いて、自分のコードが不要だっていってんの?

> おそらくelement.typeで取得できるかどうかを知りたかったレベルだろうし
それが>>464だろ? typeが取得できるかどうか
0551Name_Not_Found
垢版 |
2018/10/15(月) 19:48:25.14ID:???
だれにレスしてるかもわからん馬鹿 >>464
質問者に安価つけてる>>463 ここで解決
typeで取得できるのを示唆する目的なら>>463で終わってる話
0552Name_Not_Found
垢版 |
2018/10/15(月) 19:52:07.67ID:???
なんだ。単に誰にレスしてるのかわからんかっただけかw
0553Name_Not_Found
垢版 |
2018/10/15(月) 19:54:37.27ID:???
そう 解決してるのにわざわざ同じようなレスしちゃった馬鹿がいるんだよなぁ
0554Name_Not_Found
垢版 |
2018/10/15(月) 19:55:24.73ID:???
jQueryを使った例ってだけですが?
自分の気に食わないレスだから叩いてるんだね。
これからも頑張らなきゃ(笑)
0555Name_Not_Found
垢版 |
2018/10/15(月) 19:57:52.13ID:???
このスレ的にはjQueryの存在が害悪だな
必要のない諍いを生み出す
0556Name_Not_Found
垢版 |
2018/10/15(月) 20:02:22.57ID:???
質問者置いてけ堀で議論カッコいいですね
0557Name_Not_Found
垢版 |
2018/10/15(月) 20:03:38.24ID:???
やっぱりいち早くjQuery使って回答してすでに答えが出てるから
そんな冗長な例出すなって流れにしないとダメだな

質問が来てるのには気づいていたんだが
ちょっと放置したのがまずかった
0558Name_Not_Found
垢版 |
2018/10/15(月) 20:07:49.14ID:???
そう最初からjquery使ってれば>>464の馬鹿が>>463真似して馬鹿なコードも書くことがなかったのにな
0559Name_Not_Found
垢版 |
2018/10/15(月) 20:11:48.09ID:???
わかった。今度からjQueryのコードが出るまで待つことにするよ
0562Name_Not_Found
垢版 |
2018/10/15(月) 22:56:21.27ID:???
え、もしかして土曜からずっとやってんの
お前ら働けよ…
0564Name_Not_Found
垢版 |
2018/10/15(月) 23:35:18.95ID:/0B3mE22
jQueryだと短く書けるモン!とか言って
$('[name="test"]')[0]
みたいなコード出してくるのホンマ草www
$が何千行の関数なんだよとww
それゴマカシていいんだったらjQuery あろうがなかろうが俺ならもっと短く書けるぞ。
a()
ほらよバーカw
0565Name_Not_Found
垢版 |
2018/10/15(月) 23:38:43.83ID:???
いや、$の中なんて書かないですし、
0566Name_Not_Found
垢版 |
2018/10/15(月) 23:45:22.20ID:???
a()の中は長々と書くんだろうなぁw
0567Name_Not_Found
垢版 |
2018/10/15(月) 23:52:31.43ID:???
a()が何も書かないで期待通り動いてくれればいいねw
0568Name_Not_Found
垢版 |
2018/10/16(火) 02:54:20.89ID:O7ZoRP+n
$は何千行にも渡るコードなのにノーカンw
aは何も書いてはいけないww
jQueryだと短く書けるモン!君のオレオレルールにはかなわねぇwwwww
0569Name_Not_Found
垢版 |
2018/10/16(火) 04:27:30.53ID:???
>>568
当たり前じゃね?

jQueryは汎用のコードですでに動くものがある。
それにたいしてa()は中身を書かないと使えないんだから。

問題を出す前にすでにコードが有るなら使えると言えるけど、
問題聞いてから作らないと使えないんじゃね
0570Name_Not_Found
垢版 |
2018/10/16(火) 06:52:33.43ID:???
有る前でも後でも質問者にライブラリのインストールを強いるなら同じこと
jQuery使おうぜっていうのはBabel使おうぜとかRust.js使おうぜって言ってるのと同じことってことが何故わからない
自分の好きなもの勧めるのは悪いことじゃないけれど
それが普通とか勘違いするのは駄目
0571Name_Not_Found
垢版 |
2018/10/16(火) 09:22:31.24ID:???
いや、そうじゃなくて
ライブラリのインストールをするだけで終わるのと
自分でa()の中身を書かないのと行けないのじゃ
ぜんぜん違うでしょと言う話だ
0572Name_Not_Found
垢版 |
2018/10/16(火) 11:21:51.21ID:v/rkbiNX
インストールするだけ(約100kB ASCII文字にして10万文字)
0573Name_Not_Found
垢版 |
2018/10/16(火) 12:21:22.28ID:???
それだけのコードがインストールするだけで使える
0574Name_Not_Found
垢版 |
2018/10/16(火) 12:55:19.91ID:???
最終的な主張はそれか。
ま、いいだろ。ずいぶんしおらしくなった。
0575Name_Not_Found
垢版 |
2018/10/16(火) 13:07:58.98ID:???
a()の中身を書けばa()だけで呼び出せる!
って言っていたことについてはなかったコトにするつもり?
0576Name_Not_Found
垢版 |
2018/10/17(水) 07:09:31.73ID:???
>>575
a()と書くのがスマートだからそっちにしろと言ってるわけじゃなく
下手をするとそれと同程度な行為に捉えられ得るという悪い見本として言ってるんだが
>>571
jQuery乱用解答へのの批判として
jQueryの読み込みscriptタグ貼ったら文字数の差が無くなるような例が多い中
全然「全然」違うってことはないよね
jQuery使ったら全然違うように書き手がだけが勘違いしてる事のほうが多いよね
もう一つ短い解答への批判として
別にa()の中身がライブラリ使ってないとは言ってないんだから
そうやって質問者にできるだけコードを読み書きする負担を与えず問題を解決するコードを提示するのって
質問者が自ら学ぶという目的のこのスレに於いて良くない行為だと思うんだよね

回答者はjQueryとか自分が好きなアピールしたい技術があって、
自分の思いつき解法を公開したくなったとしても
ぐっと我慢して質問者が自分で考えて解決できるようなヒント程度の提示にして
あとは質問者とよく話し合って導くことが大事だと思うんだよね
スマートだと思う解答をポーンと投げるだけ、そして後は批判合戦は違う
最後に、これはjQueryを使わない解答にケチが付いた流れに対して言ってる一般的なことで
その他の具体的な質問・回答は関係ないからね
0578Name_Not_Found
垢版 |
2018/10/17(水) 20:16:52.40ID:???
原理主義者は何を言っても改宗しないので時間の無駄だよ
0579Name_Not_Found
垢版 |
2018/10/17(水) 21:00:26.73ID:???
jQuery原理主義者は悪魔だと思う
親切な顔をして実際はポリフィルも自分で組めない
jQueryの範囲でしか何もできない無能を作り出して
自分より優秀な人材が育たないようにしてる悪魔
0580Name_Not_Found
垢版 |
2018/10/17(水) 21:03:15.97ID:???
jQueryが原理主義になるわけがないだろう
だいたいこれDOM操作ライブラリやで?
0581Name_Not_Found
垢版 |
2018/10/17(水) 21:04:35.48ID:???
>>579
だからそれは単なるあなたの希望ですね
0582Name_Not_Found
垢版 |
2018/10/17(水) 21:09:16.87ID:???
jQueryの素晴らしさの一つは、セレクタを自分で拡張できるところだと思う
DOM APIではできないことができる。
0583Name_Not_Found
垢版 |
2018/10/17(水) 21:33:23.98ID:???
原理主義ってのは人の考え方のことよ
スレに張り付いて3連続レスもできる気持ち悪さのことよ
0584Name_Not_Found
垢版 |
2018/10/17(水) 21:37:17.41ID:???
原理主義の原理の意味もわかってないのか
原理主義と言いながら、ただの主義の話をしている
0585Name_Not_Found
垢版 |
2018/10/17(水) 22:36:58.02ID:???
とにかくjQueryがいいってんなら原理主義だろ
違うならたまにはjQuery以外の話してみろよ
0586Name_Not_Found
垢版 |
2018/10/17(水) 22:38:52.74ID:???
ごめん、原理主義は意味が違うらしいな
絶対主義だな
0587Name_Not_Found
垢版 |
2018/10/17(水) 22:46:14.37ID:???
jQueryがいいと言ってるが、jQueryですべてできるなんて思ってない。
jQueryはDOM操作ライブラリなんだから、例えば日付の計算にjQueryは使えない
つまり、jQueryを使ってる人はjQuery以外も使ってるということ
0588Name_Not_Found
垢版 |
2018/10/18(木) 02:23:22.69ID:???
 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。
0589Name_Not_Found
垢版 |
2018/10/18(木) 07:02:12.18ID:???
>>581
もちろん俺の希望だよ
俺が俺の意見以外言えるはずがないじゃないか
何当たり前なこと言ってるの?
>>581だって希望であってほしいという君の希望だろう?
0590Name_Not_Found
垢版 |
2018/10/18(木) 09:34:22.49ID:HcsddB5d
「ストローおじさん」って知ってる?
昔、映画館とかに置いてあったタン壺(みんながカ〜ッペ!とタンを吐く壺)に
ストロー突っ込んで全部飲み干すらしいよ。ゴックンゴックン!
ストローが透明だから飲んでるのが丸見え!
たまにハナクソが詰まるらしいけど、思いっきり吸って食べるらしい。スッポン!
ちなみにストローは絶対に洗わない方針だそうです。

「どんぶりおじさん」もいるようです。
タン壺を熱いご飯にぶっかけてジュルジュル流しこむように食べるそうです。
ごはんの上にハナクソとか鼻毛が丸見え!
汁はご飯の隙間を通って下に溜まるけど、全部飲み干すそうです。ゴクゴク!
0591Name_Not_Found
垢版 |
2018/10/18(木) 10:48:22.83ID:???
>>589
> もちろん俺の希望だよ
> 俺が俺の意見以外言えるはずがないじゃないか

意見と希望は違う

意見を言ったんじゃなくて希望を言ったんだね。
そう書いているもんね

> >>581だって希望であってほしいという君の希望だろう?
それは希望ではなくて指摘。その指摘に対して、
あんたはそうだと答えた。
0592Name_Not_Found
垢版 |
2018/10/18(木) 19:14:54.22ID:???
指摘も希望も意見も大した違いはないでしょ
君が希望と言うんなら希望で良いよ

お、こいつ、自分の発言を希望と認めたな!!!

で、だからどうなるのって感じ
0593Name_Not_Found
垢版 |
2018/10/18(木) 19:25:59.70ID:???
> 指摘も希望も意見も大した違いはないでしょ

それもお前の希望だなw

↑これは指摘。ぜんぜん違う
0594Name_Not_Found
垢版 |
2018/10/18(木) 21:33:06.36ID:???
jsの前に日本語勉強しなおした方がいいんじゃねえの
0595Name_Not_Found
垢版 |
2018/10/19(金) 01:04:01.46ID:???
jQuery君は希望的観測という言葉を知ってるのかな
0596Name_Not_Found
垢版 |
2018/10/19(金) 01:10:10.81ID:???
希望、指摘、意見に続いて、
今度は新たに希望的観測が増えました。
用語を増やして何がしたいんだろう?
0597Name_Not_Found
垢版 |
2018/10/19(金) 06:48:18.84ID:???
>>593
だから俺のが希望でお前のが指摘でいいけど
それで何がどうなるのかって話だよ
0598Name_Not_Found
垢版 |
2018/10/19(金) 09:53:37.38ID:???
ん? jQueryユーザーを根拠なく貶めるのが目的だったんじゃないのか?

jQueryユーザーとはこういうものですーという書き込みが単なる希望だと自白した。
つまり、jQueryユーザーとはこういうものであってほしいんです。という書き込みだった。

それで何がどうなるかって?
jQueryユーザーを貶めることに失敗したってことだろう
0599Name_Not_Found
垢版 |
2018/10/19(金) 12:26:22.43ID:???
jQuery君の目的はjQueryのメリットを唱えて支持者を増やすのが目的でしょ
0600Name_Not_Found
垢版 |
2018/10/19(金) 12:55:51.60ID:???
>>598
jQueryユーザーを貶める?
なにトチ狂った意地の悪いこと言い出してるんだ?
>>579に書いたように、俺は俺の思ったことを素直にそのまま書いただけ
それ以上でも以下でもない
それにjQueryユーザーがとは言ってないし、勝手な被害妄想して変なケチ付けんな
0601Name_Not_Found
垢版 |
2018/10/19(金) 13:26:46.04ID:???
君たちどっか他のところ行ってくれませんかね…わざとなんだろうけど
0602Name_Not_Found
垢版 |
2018/10/19(金) 13:35:11.85ID:???
喧嘩してるように見せかけて
両者とも何か共通の目的のためにやっているのだとしたら…
0603Name_Not_Found
垢版 |
2018/10/19(金) 14:24:05.50ID:???
jQuery厨は相変わらずうざいな。いよいよ余裕なくなってきたかw
0604Name_Not_Found
垢版 |
2018/10/19(金) 14:48:22.63ID:???
> 俺は俺の思ったことを

事実ではなくて、希望を書いたらしいなw
0605Name_Not_Found
垢版 |
2018/10/19(金) 15:34:31.64ID:???
だから「思う」って書いてるでしょ?
しつこいね君は
そもそも悪魔が事実だったら大事じゃん
最近勝手に煽られたと思い込む煽り耐性マイナスのやつ多いね
短期で余裕がないっつうか
0606Name_Not_Found
垢版 |
2018/10/19(金) 16:26:30.46ID:???
そっちじゃねーよw

> 親切な顔をして実際はポリフィルも自分で組めない
> jQueryの範囲でしか何もできない無能を作り出して
> 自分より優秀な人材が育たないようにしてる

↑これが事実ではなく、お前の希望だっていってんの
0607Name_Not_Found
垢版 |
2018/10/19(金) 16:45:06.99ID:???
お前らスレ違い
ここは品評スレじゃなくて、質問用スレ
回答者の価値観を問うところではない
いい加減に成仏しろよ
0608Name_Not_Found
垢版 |
2018/10/19(金) 18:37:18.09ID:???
無理です
jQuery君は数年前からこのスレを見張っており生き甲斐なのです
0609Name_Not_Found
垢版 |
2018/10/19(金) 21:08:48.14ID:???
早いとこ1000まで埋めてくれ
0610Name_Not_Found
垢版 |
2018/10/19(金) 21:37:13.65ID:???
.cssのファイル内の値を動的にできないでしょうか
HTML側はjsもphpも使用不可なのですが、
cssファイルは別サーバーに置ける為、使用可能です
0611610
垢版 |
2018/10/19(金) 21:42:38.78ID:???
具体的には、
タイマーで、ある特定の期間だけcssファイルで指定しているheightの値が変わるように仕組みを作りたいんです。
バッチファイル+タスクスケジューラでアップロードする方が現実的でしょうか?
0612Name_Not_Found
垢版 |
2018/10/19(金) 22:59:11.14ID:???
>>611
サーバ側でクロンでも書けばいいじゃない
0613Name_Not_Found
垢版 |
2018/10/20(土) 00:28:12.31ID:???
>>610
jsも別サーバーに置けないの?
っいうかなんだってそんなことに?
0614Name_Not_Found
垢版 |
2018/10/20(土) 01:09:53.02ID:???
>>612
それが一般的な方法ぽいですね・・

>>613
jsはcssと同じ外部サーバーに置けます。
ECモールだとこんなのばっかりですよ
0615Name_Not_Found
垢版 |
2018/10/20(土) 02:53:32.82ID:???
>>614
> それが一般的な方法ぽいですね・・
いやいや、一般的ではないよ。

特定の期間以外はCSSファイル見てもわからないようにしたいっていうのなら話は違うが
cssファイルを動的に生成するのは一般的にはアンチパターンだよ
(ついでにいうとJavaScriptファイルも動的に生成しないほうが良い
必要ならばJSONデータを動的に生成してしようする)


>>611
> タイマーで、ある特定の期間だけcssファイルで指定しているheightの値が変わるように仕組みを作りたいんです。

「ある期間」っていうのが午前、午後やタイムセール、キャンペーン期間中みたいに
特定の言葉で表せるのであれば、以下のようなCSSを書く

div { height: 100px }
.sale div { height: 200px }

HTMLの<html>や<body>なんかのclassで現在の期間を表現する
例えば <body class=""> or <body class="sale"> みたいな感じ
ここまではCSSの範疇だからJavaScriptしらない人でも画面デザインだけ担当できる。


でJavaScriptで特定の期間を判断して<html>や<body>のclassを書き換える
用途は違うがModernizr (https://modernizr.com/) でも用いられているテクニック

見ての通りJavaScriptもCSSも静的で作れる
これが一般的な方法
0616Name_Not_Found
垢版 |
2018/10/20(土) 07:00:23.39ID:???
>>606
だから希望でも何でも良いよ
俺は俺の思ってることを素直に書いてるだけだから
君がどう捉えたかという話はどうでもいい
好きにして
0617Name_Not_Found
垢版 |
2018/10/20(土) 07:29:14.73ID:???
俺は事実を素直に書いてるだけだから
>>579が間違いだから、間違いって書いただけ
0618Name_Not_Found
垢版 |
2018/10/20(土) 10:12:37.03ID:???
>>615
なるほど。

>でJavaScriptで特定の期間を判断して<html>や<body>のclassを書き換える

しかし、セキュリティ的な問題か何かしりませんが
html側のサーバーにはjsを効かせる事はできません。
cssのみ可能なのと、そのcssの外部サーバーにはjsを置く事はできます。
0619Name_Not_Found
垢版 |
2018/10/20(土) 10:29:58.68ID:???
>>618
その外部jsをhtml側から読むことはできない設定(?)なんだよね?
0620Name_Not_Found
垢版 |
2018/10/20(土) 10:41:21.10ID:???
>>617
うーん、最初からそれだけでいいじゃん
君が突っ込んだ色々な不思議ポイントは結局全部君の思い込みだったわけだしね
恥ずかしい人
0622Name_Not_Found
垢版 |
2018/10/20(土) 12:58:19.01ID:???
>>618
> しかし、セキュリティ的な問題か何かしりませんが
> html側のサーバーにはjsを効かせる事はできません。

>>614
> jsはcssと同じ外部サーバーに置けます。
ってかいたよな?

jsが使えないのに、わざわざ置けますって言ったのか?
そりゃ置くだけなら置けるだろうけど、動かないんじゃ
置いたって意味ないじゃん
0623Name_Not_Found
垢版 |
2018/10/20(土) 12:59:39.61ID:???
>>620
あんたのレスが「思い込み」と指摘されたからって
相手にも同じ言葉を無理やり使おうとしなくていいよw
日本語がおかしくなってる
0624Name_Not_Found
垢版 |
2018/10/20(土) 18:10:38.35ID:???
意見も希望も主観には変わらないわけで、その定義に拘って議論するのは馬鹿馬鹿しい
0625Name_Not_Found
垢版 |
2018/10/20(土) 18:19:53.51ID:???
>>619
はいそうです

>>621
なるほど、phpファイルのheaderでcssファイルとして認識させるようにすればいいんですね

>>622
はいそうです。直接jsファイルは読み込めません。すみません。
0626Name_Not_Found
垢版 |
2018/10/20(土) 22:51:18.80ID:???
>>625
もしくは.htaccessとかで-.cssが呼ばれた時-.phpを呼ぶようにcssを置くサーバーで偽装する
0627Name_Not_Found
垢版 |
2018/10/21(日) 01:24:35.87ID:???
>>621
こんだけ限定された条件だと
これに一票かなあ
0628Name_Not_Found
垢版 |
2018/10/21(日) 19:12:28.26ID:PfpMCgsw
初心者です。
if (!args.length) { 処理 } の条件を日本語訳してもらえませんか?
argsは変数なんですが、lengthは変数じゃないです。
変数argsの長さじゃなかったら? でしょうか。。おねがいします
0629Name_Not_Found
垢版 |
2018/10/21(日) 19:21:20.56ID:???
>>628
否定 javascript

falsy javascript
あたりで検索してみるとか
0630Name_Not_Found
垢版 |
2018/10/21(日) 19:25:53.72ID:???
lengthは長さを数値で返す
数値をそのまま条件にすると
0は否、0以外は正。
それを!で逆転してるので

長さが0であれば、の意。
※argsが存在して配列や文字列などlengthメソッドが働く前提
0632628
垢版 |
2018/10/21(日) 19:34:16.74ID:+KGIAcbR
ありがとうございます!よくわかりました。これで先に進めそうです。またお願いします
0633Name_Not_Found
垢版 |
2018/10/22(月) 16:24:37.89ID:???
適当に書くときはいいけど
慣れちゃうとちょっと怖いよね
args.lengthがundefinedでもnullでもfalseでも通っちゃうし
0634Name_Not_Found
垢版 |
2018/10/23(火) 20:39:26.75ID:???
>>633
それが排列であることを確定させているなら、問題はないかと
0636Name_Not_Found
垢版 |
2018/10/23(火) 21:20:03.47ID:???
NodeRedって流行ってるの?
知識ない自分の力量不足だけど使いにくい…
0638Name_Not_Found
垢版 |
2018/10/23(火) 22:49:46.08ID:???
>>636
ハイパーカードを思い出す
これでできる範囲のことであれば楽できるね
ってやーつだと思ってる
0639Name_Not_Found
垢版 |
2018/10/23(火) 23:39:33.33ID:???
>>638
簡単なUI作ったりするのは便利なんだけどDBとのやりとりとかExcelに出力したりさせようとしたら訳わからなくなって詰まった
こういうのをNodeRedでやろうとするのが間違ってるのかなぁと思ったり
0640Name_Not_Found
垢版 |
2018/10/25(木) 12:47:18.40ID:???
>>631
lengthはプロパティでもメソッドでもなくプロパティアクセス時にArrayの内部プロキシによって特別に扱われる名前
アクセサメソッドにも近い
0641Name_Not_Found
垢版 |
2018/10/25(木) 14:43:57.61ID:???
Pythonを学習中です。
Webの事は全くの素人です。
スクレイピングや可視化する際、CSS XPath JavaScriptなどの事が分からなくて行き詰まってしまいました。

PythonとJavaScriptではじめるデータビジュアライゼーションという本で詰まりました。
知人にJavaScript第5版という古い本をもらいましたが、言語仕様が延々と書いてあるような感じで、自分には早過ぎました。
CSS、XPath、JavaScriptこの辺りを体系的に学べるおすすめの本あったら教えて欲しいです。
0642Name_Not_Found
垢版 |
2018/10/25(木) 14:49:57.07ID:???
>>640
今でも読まれるたびに数えてんですかね?
0643Name_Not_Found
垢版 |
2018/10/26(金) 07:06:26.78ID:???
うろ覚えだが呼ばれるたびに数えてたことはなかっただろう
更新のたびに内部プロパティを更新してそれを読み出すような仕組みじゃなかった?
0645Name_Not_Found
垢版 |
2018/10/26(金) 12:56:08.60ID:???
getterでもsetterでもなくね
0646Name_Not_Found
垢版 |
2018/10/26(金) 13:05:10.89ID:???
>>641
HTML, CSS, JavaScript は、初心者用の本を読む。
CSS セレクターは、jQuery で学ぶ

または、CSS セレクター・XPath は、入門用サイトを見る

CSSセレクターは、jQueryの本に書いてあるけど、
XPathは、どの本にも書いていないから、入門用ウェブサイトを見る

XPathは重要度が低いから、無視してもよい。
CSSセレクターを使う方が、読みやすい
0647Name_Not_Found
垢版 |
2018/10/26(金) 20:12:27.73ID:???
プログラミングは体系的には学べない
分からなければ分かるようにならない
でもそこで諦めたらそこまで
「言語仕様が延々と書いてあるような感じ」と思ったのなら
分かったのが0ということではないはず
最悪書いてある日本語は読めるのだから、1万分の1は分かるだろう
なら5万回分読めばいい
そしたら1-(1-0.0001)**50000で0.9932637373893968で99%理解できる
分からなくてもほんの少しは分かるまで血を吐きながら無理やり頑張る
その繰り返しの修行で覚えるのがプログラミング
0648Name_Not_Found
垢版 |
2018/10/26(金) 20:44:33.09ID:???
俺もXPathは後回しでいい…ってかやらなくてもいいと思う。
昔はCSSセレクタより表現力高いからとか言われてたがよくも悪くもXML全般に使われる汎用仕様だからな。
HTML/CSS仕様に寄り添い、技術要素疑似セレクタも使えて素のJavascriptやjQueryなどでも手厚くサポートされているCSSセレクタ覚えたらWeb系技術以外扱わないならXPathなんて正直いつ使うんだっていう。
Javaとかやるなら別だけど…
あれか、Pythonと一緒にやろうとしたからPythonライブラリの都合に引っ張られちゃったんだな!
0649Name_Not_Found
垢版 |
2018/10/26(金) 21:02:05.71ID:???
>>647
書いてて恥ずかしくならない?
読んでて赤面したわw
0650641
垢版 |
2018/10/26(金) 21:35:04.99ID:???
どうもありがとうございます
結果的にPythonスレとマルチポストになってしまっていたらごめんなさい。

>>646
PythonスレのRubyの方ですかね?
その節はありがとうございます。
初心者用というのはHTML5の初心者という事ですよね?
よく分かる〇〇とかいちばんやさしい〇〇だとか過去に読んだことあるんですが、その手の本ってパソコンそのものの初心者が対象なのか、
〇〇のコードを使ったらハンバーガーメニューが出せますとか、このコードを使ったらこういうレイアウトに出来ます。今流行りのスマホPC両対応のレスポシブなんちゃらのカッコいいホームページを作ろう、みたいな。
そういう本って理屈は置いておいて、カッコよさげなホームページが作れた。よかったね、っていう感じの本だから、
それぞれのコードの中身や用語の解説じゃないから結局提示されたcssのコピペだけで終わり訳もわからず応用が利かず結局何も身に付かなかったです。
オライリーからPythonの本が大量に出てるけどそんな感じの本があればいいんですが。

>>647
やっぱ甘えてますね、自分。
辛いけど、出来るようになりたいから読むしかないのかぁ。
0651641
垢版 |
2018/10/26(金) 21:35:51.39ID:???
>>648
Webサイト作りそのものには全く感心は無いんですが、Pythonを学ぶうちに作ったデータの可視化をWebでやりたくなりました。
Pythonを学んだら今までは怖かったJavaScriptも基本的な文法はPythonで書いた場合を考えながらやればJavaScriptでもSwiftでもObjective-Cも何となく理解出来るようになりました。
JavaScriptもWeb用のナニカじゃなくて、これもPythonと同じプログラム言語だと分かったのでおもしろくなってきたました。

XMLを弄るにもXPathが分かれば簡単に弄れそうなんですが、XPathそのものが難しい。
Chromeの開発者ツールの使い方も分からないままだし。

>>649
けど、正論だと思いました。


オライリーからHTML5という本が出てますけれど、7年以上前の本だからやめておいた方がいいでしょうか?


>>641 で読んでる本の最初のページにこんなイラストが載ってました。
https://i.imgur.com/H3vQCNy.jpg
まさに自分もこんな認識です。
0652Name_Not_Found
垢版 |
2018/10/26(金) 22:05:29.26ID:???
>>651
セレクタを覚えるなら、jQueryよりCSSを覚えた方が良い
jQuery拡張記法を覚えても何にもならん
https://triple-underscore.github.io/selectors4-ja.html

XPathは今でもCSSセレクタ以上の事が出来るが、日本語の資料は多くないので、初心者向きではないだろうな
0654Name_Not_Found
垢版 |
2018/10/26(金) 23:44:44.27ID:???
getter, setterという場合、
Array(10).getLength();
Array(10).setLength(5);
などのようにメソッドの形を取る。

Array(10).length = 1;
は上のsetLengthとやることは同じだが、(実装はどうあれ)プロパティ形式を取っているのでsetterとは呼ばない。

なお説明に使っただけでArrayにgetLength、setLengthとあったメソッドは無い。
0655Name_Not_Found
垢版 |
2018/10/27(土) 06:58:31.07ID:???
TypedArrayのlengthはgetter,setterだが
Arrayのlengthは内部プロキシが特別に扱っている名前というだけ
0657Name_Not_Found
垢版 |
2018/10/27(土) 10:10:23.05ID:???
>>656
Atrayのlengthはset/getが使えなかったときからある。だから>>655
0658646
垢版 |
2018/10/27(土) 18:26:45.84ID:???
漏れが、XPath を使うのは、CSS セレクターでできない場合だけ。
例えば、5ch の書き込み内のa タグを抜き出すなら、

このCSSセレクターでできるけど、
div.thread > div.post > div.message > span > a

a を含む、post_node だけを抜き出す場合、
div.message の子孫で、aタグを含むものがある場合、
そのaタグの祖先のdiv.post を抜き出す。
(自分の処理では、div.postを主体に処理している場合)

CSSセレクターでは、div.message div.post a

descendant は子孫、ancestor は祖先。
post_nodes = doc.xpath "//div[@class='thread']/div[@class='post']/div[@class='message']/descendant::a/ancestor::div[@class='post']"

子孫に何々要素がある場合の、その祖先を求めるとか、
条件が複雑で、CSSセレクターでは表せない場合だけ、XPathを使う

jQueryのCSSセレクター一覧表を見て、それでできなければ、XPathを使う
0659Name_Not_Found
垢版 |
2018/10/27(土) 19:38:24.03ID:???
:has擬似クラスが仕様に入ったからXPathの出番はますます無くなる
0661Name_Not_Found
垢版 |
2018/10/27(土) 23:59:35.53ID:???
jQueryは:hasに独自で対応しているから、JavaScriptでは
もうXPathの出番はなくなってるね。
0662Name_Not_Found
垢版 |
2018/10/28(日) 00:21:16.71ID:???
XPathってJavaScript以外で使えたっけ?
jQueryで:hasが使えるならもういらないような
0663Name_Not_Found
垢版 |
2018/10/28(日) 00:36:19.99ID:???
>>662
なに言ってんだ各言語にライブラリ出てるよXPathくらい…
0664Name_Not_Found
垢版 |
2018/10/28(日) 08:23:02.53ID:???
>>657
その理屈はおかしい
lengthはProxyがない時代からある
0665Name_Not_Found
垢版 |
2018/10/28(日) 11:37:15.18ID:???
漏れは、Ruby のNokogiri で、XPath, CSS セレクターを使っている
0668Name_Not_Found
垢版 |
2018/10/28(日) 14:38:20.99ID:???
Proxy APIの話ではなくプロパティが設定されるときに働く
[[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを
分かりやすく内部プロキシと言い換えただけなのにね
0669Name_Not_Found
垢版 |
2018/10/28(日) 22:26:18.35ID:???
漏れ、って久しく見ないな
懐かしい
0670Name_Not_Found
垢版 |
2018/10/29(月) 09:06:25.00ID:???
>>666-658
同じ言葉をそっくり>>657に返したいね

> Atrayのlengthはset/getが使えなかったときからある。だから>>655
setがなくても、setterとして機能があればsetterだろう
lengthプロパティ代入時に処理が働くのだから、setter以外にそれを実現する方法はない

ついでにいうと、>>654もおかしい
プロパティだからsetterじゃない、とかどの言語の話だ?
0671Name_Not_Found
垢版 |
2018/10/29(月) 09:11:35.57ID:???
>>668
>>653からどうしてその話が出てくるんだ?
おまえのいってるのは、
Array(1)[3] = 1;
だろう
0672Name_Not_Found
垢版 |
2018/10/29(月) 10:27:51.41ID:???
Proxyでのハンドリングもsetterと言うのならArray#lengthもsetterと呼んでいいと思うけど
普通JSでsetterって言ったらプロパティディスクリプタがアクセサタイプでsetにメソッドが入ってる状態を言うと思うけどな
0673Name_Not_Found
垢版 |
2018/10/29(月) 10:29:06.09ID:???
>>671
いや、数値文字列と、lengthの2種類ともを特別に扱ってるんだよ
0676Name_Not_Found
垢版 |
2018/10/29(月) 19:41:22.88ID:???
MDNはprototype経由せずDateやらArray やらから直接生やされたメソッドを静的なメソッドと表現したりクラスベースの人に配慮した柔軟な記述見かけるよね。
0677Name_Not_Found
垢版 |
2018/10/30(火) 06:56:22.75ID:???
>>674,675
その疑問は全てここまでに書かれてるよ
もう一度読み直してみて
0678Name_Not_Found
垢版 |
2018/10/30(火) 08:34:44.71ID:???
>>677
> [[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを
> 分かりやすく内部プロキシと言い換えただけなのにね

これがProxyの条件か?
ただの内部 プロパティを書き換えるだけでProxy扱い
しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな
0679678
垢版 |
2018/10/30(火) 08:40:23.79ID:???
> しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな

訂正する
Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる
しかし、他所のプロパティ [[DefineOwnProperty]] が書き換わるだけで、lengthプロパティはProxyの動きをしていない
0680Name_Not_Found
垢版 |
2018/10/30(火) 09:16:03.64ID:???
こういう事かな

const a = [];
a[0] = 1; // 668「a[0] はProxyなプロパティです」→OK
a.length = 0; // 668「a[0]を書き換えるa.lengthもProxyなプロパティです」→ん?

この場合、a.lengthを書き換えるa.fooを定義したら、a.fooもProxyになる
Proxyが感染していく
0681Name_Not_Found
垢版 |
2018/10/30(火) 12:07:55.19ID:???
hey YO! チェケラッチョ!
0682Name_Not_Found
垢版 |
2018/10/30(火) 12:55:41.57ID:???
>>679
大きな勘違いしてるね、Arrayのインスタンスオブジェクトはlengthと言う通常のプロパティを持っているが
それと同時に数値文字列と"length"という文字列のプロパティ設定に関して特別な振る舞いをするんだよ
つまりProxyのようなのはArrayのインスタンスの事であって、
そのプロキシは"length"プロパティアクセスがあると、間接的にlengthプロパティを設定して配列の要素を調整すると言う動作をするんだよ
ただし、setterとは違うという話
0683Name_Not_Found
垢版 |
2018/10/30(火) 13:09:50.35ID:???
ようそこまで内部動作把握してるな
こういう人はそんなの当然って言うんだけど大半の人はそんなの無理
0684Name_Not_Found
垢版 |
2018/10/30(火) 14:08:55.83ID:???
アニメスレに沸く小説板から来た設定厨を思い出しました。
0685Name_Not_Found
垢版 |
2018/10/30(火) 19:02:56.34ID:???
>>682
勘違いなどしていない
setterのトラップで内部プロパティが書き換わるだけ
setter以外のトラップが必要なら、それを示してくれ
0686Name_Not_Found
垢版 |
2018/10/30(火) 19:11:18.70ID:???
>>681
やっとわかった
ラッパーって言いたいのかw
0687Name_Not_Found
垢版 |
2018/10/30(火) 19:19:02.36ID:???
>>686
誰もわかってくれないからって自己レスするな
0688Name_Not_Found
垢版 |
2018/10/30(火) 19:23:08.67ID:???
>>668は確かにwrapperって感じだが、wrapperとsetterは両立出来るんだよなあ
0689Name_Not_Found
垢版 |
2018/10/30(火) 20:13:36.59ID:???
わかっててスルーしてるにきまっとるじゃろ
0690Name_Not_Found
垢版 |
2018/10/30(火) 21:00:05.07ID:???
ぶっちゃけ、>>653がsetterで実装できなくて、Proxyでなければ実装できない機能って何なの?
0691Name_Not_Found
垢版 |
2018/10/30(火) 21:50:37.00ID:???
>>685
勘違いというか、全く分かっていなかったんだね
実際Arrayオブジェクトのlengthはsetterではないということが話の肝

Arrayのlengthは普通のオブジェクト固有のプロパティだ
Object.getOwnPropertyDescriptor( Array(1), 'length' )
// {value: 1, writable: true, enumerable: false, configurable: false}

参考までにTypedArrayのlengthは共通親クラスから継承したgetterだ
Object.getOwnPropertyDescriptor( Uint8Array.__proto__.prototype, 'length' )
// {get: ƒ, set: undefined, enumerable: false, configurable: true}

ならArrayのlengthへ値を代入したときの振る舞いなどはどう説明するのかといえば、
Arrayオブジェクトのプロパティ設定のトラップでlengthを特別扱いしてるということだ
そしてそれはもちろんsetterとは違う

言い換えればArrayオブジェクトはそのただ1点を除いて普通のオブジェクトと何にも変わらない
[ 'a', 'b', 'c' ]は{ '0':'a', '1': 'b', '2': 'c', 'length': 3 } と全く違いはない
ただたった一つ、[[DefineOwnProperty]]内部メソッドの振る舞いが違う、
プロパティアクセス時に'length'と数字プロパティへの設定を特別に監視するということだけが
ArrayをArrayたらしめてる理屈
0692Name_Not_Found
垢版 |
2018/10/30(火) 22:04:42.06ID:???
>>679のこの行がそもそもだいぶトンチンカン
>>Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる
[[DefineOwnProperty]]は内部「関数」なのだから、書き換わったりしない、呼ばれる対象
そしてlength要素に設定時に適宜配列のプロパティが消されるから呼ばれるのではなくて、
length要素設定時にこれが呼ばれたときに間接的にプロパティを消してる、因果が逆
因みにプロパティが消されるときに呼ばれるのは[[Delete]]
[[DefineOwnProperty]] はこの場合関わらない
0694Name_Not_Found
垢版 |
2018/10/30(火) 23:28:54.54ID:ROO+RjWt
そもそも、length に設定するのが、おかしい。
意味不明のソースコード

普通は参照しかしない
0697Name_Not_Found
垢版 |
2018/10/31(水) 15:55:58.36ID:???
new Int8Array([1,2,3]).__lookupGetter__('length')
//=> f length() { [native code] }
[1,2,3].__lookupGetter__('length')
//=> undefined

ほんまやTypedArrayのlengthにはGetter設定されてるけどArrayは無い
0698Name_Not_Found
垢版 |
2018/10/31(水) 15:56:05.22ID:???
だからtypeof new Arrayは'object'なんだよな
そこしか違いがないから
0699Name_Not_Found
垢版 |
2018/11/01(木) 02:16:21.76ID:???
大雑把にはわかっていたつもりだったけど
詳しい説明ありがたいわ
0700Name_Not_Found
垢版 |
2018/11/02(金) 09:27:19.04ID:33ufQNJG
jQueryの.nextUntil() をJavaScriptで書くのは難しいでしょうか?
0701Name_Not_Found
垢版 |
2018/11/02(金) 11:56:52.88ID:???
>>700
難しいかどうかはその人のスキルによるとしか。。。
0702Name_Not_Found
垢版 |
2018/11/02(金) 13:12:13.08ID:???
困難かという意味ではそうでもないかも
parentNodeのChildNodesを、その要素以降順に見ていくだけだから
ていうか、jQueryだってJSで書かれているわけだしね
0704Name_Not_Found
垢版 |
2018/11/02(金) 14:57:52.92ID:???
質問を変えて、jQueryの.nextUntil()をDOM API以外のライブラリを使わずに
10行以内(セミコロン不使用、横80文字まで、普段やらない書き方を使うのなし)で
作れるでしょうか?だったらどう?
0705Name_Not_Found
垢版 |
2018/11/02(金) 15:08:06.56ID:???
まず親要素のquerySelectorAllで
セレクタにマッチする小要素を全部取り出しておく

目的の要素のnextSiblingが、上のマッチした要素群に含まれれば当たり
なければ次のnextSiblingを見る

なんとか80字でいけるか?
0706Name_Not_Found
垢版 |
2018/11/02(金) 15:22:12.61ID:???
全部取り出しておいてfilterしてもいいし、
ただ単に次の要素を見ていくだけのイテレータでもいい
5行くらいの関数で書けるんじゃない?
0708Name_Not_Found
垢版 |
2018/11/02(金) 18:30:13.65ID:???
はー
matchesなんてあったんだな
勉強になる
0710Name_Not_Found
垢版 |
2018/11/03(土) 07:10:10.07ID:???
function * nextUntil ( el, sel ) {
while ( el = el.nextElementSibling && ! el.matches( sel) )yield el
}
0711Name_Not_Found
垢版 |
2018/11/03(土) 22:22:33.52ID:6Ec8PRLb
>>707
上手く行きました。
凄いですね、こんなのを書けるなんて。
>>710
私にはレベルが高すぎて付いて行けません。
結果の取り出し方を教えて下さい。
0712Name_Not_Found
垢版 |
2018/11/03(土) 22:44:24.52ID:???
>>710は単なる技術マウントだから無視してよい。
0714Name_Not_Found
垢版 |
2018/11/04(日) 03:23:50.49ID:???
技術マウントだからと言って無視するか、
技術を勉強するか

どちらを取るかね?
0715Name_Not_Found
垢版 |
2018/11/04(日) 04:32:09.76ID:???
>>711
>>710は代入演算子と論理積演算子の優先順位を間違えているから結果がバグっている。
修正してオプションのfilter足してjqueryのnextUntilの
http://js.studio-kingdom.com/jquery/traversing/next_until
のデモと同じことする使い方を
https://codepen.io/anon/pen/VVwdQB
に上げた。
しかし結果を配列でまとめて取り出す使い方しかしないなら
https://codepen.io/anon/pen/YRzvWa
みたいになりわざわざジェネレータ使う意味ないしこんなことするなら>>707のほうがいいな。
0716Name_Not_Found
垢版 |
2018/11/04(日) 06:28:04.76ID:???
一番いいのはjQueryを使うこと
0717Name_Not_Found
垢版 |
2018/11/04(日) 10:01:07.40ID:plxWY2l1
>>715

=>
...
yield
など知らない文法ですが、テストしたら動きました。
大変参考になりました。このコードが理解出来るように勉強します。

ところで707 nextUntilを応用してnextAllを作ってみたのですが、これで良いでしょうか?

function nextAll(el, selector) {
const result = [];
while (el = el.nextElementSibling) {
result.push(el);
}
return result;
}

一つ質問ですが、const指定しているresult変数に値を代入しても良いのですか?
定数なら変更してはいけないような印象を受けるのですが。
0720Name_Not_Found
垢版 |
2018/11/04(日) 11:18:37.07ID:plxWY2l1
>>719
良く分からないのですが、
C言語などならconst指定があると値を代入出来ませんよね。
JavaScriptのconstはそうでは無いのですか?
0722Name_Not_Found
垢版 |
2018/11/04(日) 12:15:16.17ID:plxWY2l1
>>721
ではJavaScriptにはCやC++のconstに相当するものはありますか?
つまり一切変更出来ない定数。
0723Name_Not_Found
垢版 |
2018/11/04(日) 13:15:33.79ID:???
CやC+に一切変更ができないconstなんかありません
0724Name_Not_Found
垢版 |
2018/11/04(日) 13:18:38.69ID:???
chromeだけど、dataスキームで新しいタグ開いてhtmlを表示させたいんだけど
data:text/html;云々をwindow.openするとabout:blankになってしまうたすけて
(data:text/html;云々を直接urlボックスにいれて移動、は表示される)
0726Name_Not_Found
垢版 |
2018/11/04(日) 14:11:19.81ID:???
>>722
一切変更出来ないとは?
変更不可対象を明確にしろ
0727Name_Not_Found
垢版 |
2018/11/04(日) 14:36:36.33ID:???
constは名前に対して働くもので値に対して働くものではない
0728Name_Not_Found
垢版 |
2018/11/04(日) 15:24:02.74ID:???
>>722
そもそもがcのconst勘違いしてないか。
プリミディブ値ならjsのconstでも同じように使えるし、
cではjsのconst OBJ = {a: 1, b: {c: 2}};みたいにオブジェクト直接入れるみたいなことはそもそも出来ない。
ポインタ使うにしたってOBJ.aやOBJ.b.cなどメンバーを書き換えられてしまうことは同じ。

まあやりたいことは分かる…気がする…
以下にdeepFreezeの実装例出てるから参考にしてみたら?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

こういうことでしょ?違う?
https://codepen.io/anon/pen/EQxJKB
0729Name_Not_Found
垢版 |
2018/11/04(日) 15:24:32.56ID:???
>>725
いろんなサイトでconsole開いて実行したので、jsfiddleのコードに書いて実行してしまうと若干挙動が違う気がするので
具体的には
window.open('data:text/html;charset=utf-8,'+encodeURIComponent('<!DOCTYPE html><html lang="en"><body>hoge</body></html>'));
を適当なサイトでコンソール開いて実行
一応jsfiddleでもやってみたけどポップアップ禁止みたいなのが出てきた
https://jsfiddle.net/pLdojb9w/
ポップアップ許可するとabout:blank
0731729
垢版 |
2018/11/04(日) 15:31:07.23ID:???
ちなみに用途としては
とあるサイトの画像urlだけをスクレイピングして
htmlで新しいタブに<img src=>みたいに単純表示したいだけ
今までconsoleで<img src="">を出力してコピペ→テキストエディタでhtmlで新規保存
ブラウザで開いてウェブ丸ごと保存ってやってたのでめんどくさくなった
(別のスクリプトやアプリで画像urlだけ抽出してダウンロードしたらいいのではと思うし
都合が良いところはそれでやってるけど)
0732729
垢版 |
2018/11/04(日) 15:39:44.04ID:???
あと、document.writeで上書き版もしたけど
ajaxでページロードしてる感じのとこだと続きの画像表示したいときに不便だった
0733Name_Not_Found
垢版 |
2018/11/04(日) 17:21:46.38ID:???
dataURI直で新規タブ開いて中身反映されないのはセキュリティ理由によるもの
blob→objectURL化が必要
const blob = new Blob([ '<!DOCTYPE html><html lang="en"><body>hoge</body></html>' ], { type: 'text/html' });
const url = URL.createObjectURL(blob);
window.open(url);
0734729
垢版 |
2018/11/04(日) 17:45:38.91ID:???
>>733
で、できたー!
画像も問題なく表示され
ありがとうございました
0735Name_Not_Found
垢版 |
2018/11/04(日) 18:43:51.03ID:plxWY2l1
>>728
解説ありがとうございました。
JSのオブジェクトの挙動が理解出来ました。
値は変更出来ないけれど、メンバを変更する事は
出来るんですね。
0737Name_Not_Found
垢版 |
2018/11/04(日) 21:50:56.98ID:???
漏れは、Ruby で、selenium webdriver, Nokogiri を使って、
5ch の書き込み内から、画像リンクだけを取り出して、
Nokogiri で、img タグを構築して、そのsrc 属性に設定して表示している

ブラウザに、5ch のスレを表示して、結果はそれとは異なる、新しいタブに表示している

driver.execute_script "window.open()" # 新しいタブを開く
driver.switch_to.window ( driver.window_handles.last ) # 新しいタブへ移動する

ERB みたいな、HTML 内にRuby プログラムを書ける、
埋め込みテンプレートを使えば、もっと簡単にできるのだろうけど
0738Name_Not_Found
垢版 |
2018/11/04(日) 21:56:18.15ID:???
jsならコンソールやブックマークレットでできることをそんな大がかりにしてバカみたい。
で、何をやってるかと思えばjs呼び出してるだけwww
そりゃそうだよなruうんこbyなんてブラウザで動かないもんなwwwww
0741Name_Not_Found
垢版 |
2018/11/05(月) 03:11:29.05ID:???
echo.jsより容量小さい画像遅延読み込みのスクリプトってあんの?
0742Name_Not_Found
垢版 |
2018/11/05(月) 06:26:31.41ID:???
>>735
変数名と紐付いている値を更新することはできないというだけ
その値自体にはなんの制約もない
0743Name_Not_Found
垢版 |
2018/11/05(月) 06:57:00.55ID:???
RubyみたいなポンコツエンジンをNative Clientで走らせるとか愚の骨頂の考えだった
WasmにコンパイルしてJSエンジン上で走らせる方がよっぽどパフォーマンス出る可能性がある
0744Name_Not_Found
垢版 |
2018/11/06(火) 22:07:50.79ID:G7U6fKUW
jQueryだと
$(window).on('resize', data, func);
のようにdataを与える事が出来ますよね。
それを
window.addEventListener('resize', data, func);
とは出来ませんが、どうやれば同じようにdataをfuncにパス出来ますか?
0746Name_Not_Found
垢版 |
2018/11/06(火) 22:36:13.12ID:G7U6fKUW
>>745
レスありがとうございました。
>クロージャで
なるほど。
では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
0747Name_Not_Found
垢版 |
2018/11/06(火) 22:54:14.02ID:???
>>746
内部的にクロージャーを使っているから
0748Name_Not_Found
垢版 |
2018/11/06(火) 22:56:17.72ID:???
えっ、なにが疑問なのかよく分かんない…

function chinko(data) {
return 'I love ' + data;
}

function manko(func, data) {
if (!data) data = func.name;
console.log(func(data));
}

let data = 'unko';
manko(chinko); //=> "I love chinko"
manko(chinko, data); //=> "I love unko"
0749Name_Not_Found
垢版 |
2018/11/06(火) 23:02:33.42ID:???
>>748
> えっ、なにが疑問なのかよく分かんない…

なんでクロージャーがでてきたのか考えてみたら?
回答する側がアホの事例
0750Name_Not_Found
垢版 |
2018/11/06(火) 23:30:28.38ID:???
>>744みたいな疑問が浮かぶ人はjQueryのソースを読んでみるべきだと思う
勉強になるぞ
0752Name_Not_Found
垢版 |
2018/11/07(水) 00:44:22.26ID:???
>>751
お前が、>>748のコードにクロージャーを取り入れて
書き直したら教えげあげようw
0753Name_Not_Found
垢版 |
2018/11/07(水) 00:56:05.92ID:???
こう?

function chinko(data) {
return function() {
return 'I love ' + data;
}
}

function manko(func) {
console.log(func());
}

let data = 'unko';
manko(chinko(data)); //=> "I love unko"
0754Name_Not_Found
垢版 |
2018/11/07(水) 01:23:52.55ID:???
違う。クロージャーはmankoの引数にしろ
0755Name_Not_Found
垢版 |
2018/11/07(水) 01:24:57.72ID:???
そしてdataはクロージャーの引数にしろ
0756Name_Not_Found
垢版 |
2018/11/07(水) 02:00:00.12ID:???
もういいから教えてよ。
コードで示してくれりゃ分かるのにめんどくさい。
質問に回答するより煙に巻いて指示するのが好きなの?
0757Name_Not_Found
垢版 |
2018/11/07(水) 02:09:53.52ID:???
はい。大好きです(笑)
0758Name_Not_Found
垢版 |
2018/11/07(水) 02:21:09.20ID:???
質問スレに何しに来てんだよ……
こう?

function chinko(data) {
return function() {
return 'I love ' + data;
}
}

function manko(func, data) {
if (!data) data = func.name;
console.log(func(data)());
}

let data = 'unko';
manko(chinko); //=> "I love chinko"
manko(chinko, data); //=> "I love unko"
0759Name_Not_Found
垢版 |
2018/11/07(水) 02:31:49.49ID:???
var clos = function closure( data ) {
return function( ) {
return 'I love ' + data;
}
}

function caller( func ) {
console.log( func() );
}

var data = 'cat';
caller( clos( data ) ); //=> "I love cat"
0761Name_Not_Found
垢版 |
2018/11/07(水) 03:21:23.96ID:???
>>744より

> では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
>
> jQueryだと
> $(window).on('resize', data, func);
> のようにdataを与える事が出来ますよね。

↑ この場合、jQueryのfuncは以下のように定義しますよね?

function func(event, data) {
  console.log('I love' + data);
}


でも、>>758を見ると、以下のような書き方でjQueryの場合と全然違います。
何故でしょうか?jQueryはどんなマジックを使っているのでしょうか?疑問です。
function chinko(data) {
  return function() {
    console.log('I love ' + data);
  }
}

--------------------------

>>748
わかったか? お前は何が疑問なのかよくわからないって言ったが、
これが疑問なんだよ。
0762Name_Not_Found
垢版 |
2018/11/07(水) 06:30:36.29ID:???
>>756
ここは自ら学ぶスレだから
モロ回答はしない
そういうのは知恵袋なり他にたくさんある
ここは2chだからな
0763Name_Not_Found
垢版 |
2018/11/07(水) 08:05:06.49ID:???
>>744
.on() が内部でコールバック関数を渡す前にクロージャでラップしてるから
ちなみに、>>761はjQueryの動きになってない上、コールバック関数を渡す実装もしていない無視して良い
http://api.jquery.com/on/

最も、addEventListenerなら、handleEvent付きのオブジェクトを指定する方がスマートだと思うが
0764Name_Not_Found
垢版 |
2018/11/07(水) 08:52:20.84ID:???
いいオチがつきましたね
0765Name_Not_Found
垢版 |
2018/11/07(水) 11:44:49.22ID:???
function hoge(){ /*この中に重複作業をまとめたいときがある*/ }
例えば
function hoge(x,y){
function sum10(x) { return x+10; }
return [sum10(x),sum10(y)];
}

このsum10は汎用なのでhogeの外にsum10を書いても良いような気がしますが
仮に、hogeだけでしか使わないような関数でも
外に出しておいた方が良いのでしょうか?
今まで、単に見た目の問題なのかな?と思い、適当にやっていたのですが
0766Name_Not_Found
垢版 |
2018/11/07(水) 11:45:31.97ID:???
訂正
>hogeだけでしか
>hogeの中だけでしか
0767Name_Not_Found
垢版 |
2018/11/07(水) 12:03:24.66ID:???
>>765
一回しか使うかどうかで、関数にするかどうかを決めるんじゃない。
また同じ処理だからって言うだけで、関数にするのでもない

長いコードがあったとき、読むのが大変になるから、
その中の一部に適切な名前をつけて関数にすることで、名前だけから
やってることがわかるから中を読まなくていい。
読まなくていいから長いコードを読むのが楽になった!
という目的のために、関数にするんだよ

1回しか使わなくても、長いコードを読むのが楽になるなら
関数にするべきだし、関数にしたからと言って、長いコードを読む時に
関数の中まで見ないとやってることがわからないなら、
それは関数にするやり方間違ってる

読むべきコードを減らすのが関数にする目的

だから独自で作るよりも既存のライブラリを使ったほうが良いという話にもつながる
独自で作ると少なくとも一回は中を読まないといけない。
既存のライブラリは、たいてい中を読まないで使ってるだろう?
0768Name_Not_Found
垢版 |
2018/11/07(水) 12:19:30.73ID:???
関数ってよりサブルーチンとかプロシージャっぽい説明だね。
0769Name_Not_Found
垢版 |
2018/11/07(水) 12:25:56.81ID:???
>>768
関数とサブルーチン・プロシージャーの違いは?

どこが後者の話になってるのか?
0770Name_Not_Found
垢版 |
2018/11/07(水) 12:44:11.43ID:???
何か引数を受けて、何かしらの処理をし、何かを返すのがfunction(関数)

プログラムの中で一定の処理をひとまとまりにしてモジュール化したものを
メイン処理と対比して呼ぶのがsub routine(サブルーチン)

プログラムの中で、サブルーチンを作るために作られた
何も返さない関数がprocedure(プロシージャ)


であってるかな
横からですが
0771Name_Not_Found
垢版 |
2018/11/07(水) 12:56:11.97ID:???
んにゃ、合ってない
それらの用語は各言語仕様やコミュニティ毎に定義されている
0772Name_Not_Found
垢版 |
2018/11/07(水) 13:23:52.42ID:???
本質的にはあってんじゃない?
いろんな方言的解釈があるのはその通りだが
0773Name_Not_Found
垢版 |
2018/11/07(水) 14:00:38.33ID:???
で、どこが後者の話になってるの?
0774Name_Not_Found
垢版 |
2018/11/07(水) 14:30:07.56ID:???
> 読むべきコードを減らすのが関数にする目的

???

['80', '9', '700', 40, 1, 5, 200]
.sort((a, b) => a - b);
0775Name_Not_Found
垢版 |
2018/11/07(水) 14:33:41.17ID:???
>>774
それもsortの処理を読まなくてすんでますね。

例え1回しか使わなくても、そうすべきなんですよ
0776Name_Not_Found
垢版 |
2018/11/07(水) 14:47:22.52ID:???
>>775
そうすべき?
じゃあそうではない、減らす前の関数を使ってないダメなコードとやらを見せてください。
0777Name_Not_Found
垢版 |
2018/11/07(水) 14:52:27.59ID:???
>>776
じゃあsort関数の中身をここにコピペして
0778Name_Not_Found
垢版 |
2018/11/07(水) 15:04:11.21ID:???
sort関数ではなくsort関数の引数に渡す関数の話をしています。
>>770によると、
> 読むべきコードを減らすのが関数にする目的
なのでしたね。
どういうことか説明してください。
0779Name_Not_Found
垢版 |
2018/11/07(水) 15:13:40.55ID:???
>>778
sort関数に渡す引数?
(a, b) => a - b のこと?

なにを突っかかってきてるのか知らんが、
const byAsc = (a, b) => a - b;
const byDesc = (a, b) => b - a;
みたいなの並び替えアルゴリズムとして関数化しておけば、
aからbを引いて・・・ってどういうこと?って
もう読まなくてすみますね。


['80', '9', '700', 40, 1, 5, 200].sort(byAsc);
計算部分を読まなくてすむから楽になった!
0780Name_Not_Found
垢版 |
2018/11/07(水) 15:28:58.55ID:???
(a, b) => a - bは既に関数。それは関数に名前をつけているだけ。
関数化www
0781Name_Not_Found
垢版 |
2018/11/07(水) 15:30:23.11ID:???
だから関数に名前つけるって言ってるじゃん
バカなのかな?
0782Name_Not_Found
垢版 |
2018/11/07(水) 15:30:52.82ID:???
> その中の一部に適切な名前をつけて関数にすることで、名前だけから
0783Name_Not_Found
垢版 |
2018/11/07(水) 15:36:40.08ID:???
訳:「読むべきコードを減らすのが関数にする目的」というのは嘘でしたすみません!「読むべきコードを減らすのが関数に名前をつける目的」でした!あと関数化とかいうオレオレ用語で混乱させてしまってすみません!

こうかな
0784Name_Not_Found
垢版 |
2018/11/07(水) 15:37:20.51ID:???
いや違うな。名前をつけて関数化したんだから
読むべきコードが減ってる。

重要なのは読むべきコードを減らすこと。
0785Name_Not_Found
垢版 |
2018/11/07(水) 15:37:50.18ID:???
いやはや、また>>783はいつものキチガイなんだろうねw
0786Name_Not_Found
垢版 |
2018/11/07(水) 15:42:58.80ID:???
>>774から>>779にするのがとこが「名前をつけて関数化」なの?
元々関数。名前をつけているだけ。
0787Name_Not_Found
垢版 |
2018/11/07(水) 15:45:40.86ID:???
それは関数じゃなくてアロー関数
重要なのは読まなくて良いコードを増やすことなんだが、
そっちへのレスがないってことは、逃げてんだね
0788Name_Not_Found
垢版 |
2018/11/07(水) 15:46:35.31ID:???
>>786
お前は他人に謝らせてSNSにアップして炎上する
コンビニ客のマネはやめたほうが良いよw
恥ずかしい
0789Name_Not_Found
垢版 |
2018/11/07(水) 15:51:56.72ID:???
>>787
>>774の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw

> それは関数じゃなくてアロー関数

関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});

話はぐらかそうとしてドツボwwww
0790Name_Not_Found
垢版 |
2018/11/07(水) 17:14:19.84ID:D6OVyDfn
>>787
なんで?読めばいいじゃん
0791Name_Not_Found
垢版 |
2018/11/07(水) 17:53:16.41ID:???
>>779
byAscよりもアロー関数ベタ書きのほうが分かりやすい人多いと思うよ
もし.sort(降順)とかにすればわかりやすいけど、それでも降順関数の中身確認したくなると思うけどな
0792Name_Not_Found
垢版 |
2018/11/07(水) 17:53:56.85ID:???
.replace().replace().replace()....replace地獄になります
クールな書き方をおしえてください
0793Name_Not_Found
垢版 |
2018/11/07(水) 17:56:48.24ID:???
単なる数値ではないソートの場合に名前がめっちゃ長くなりそう
0794Name_Not_Found
垢版 |
2018/11/07(水) 18:04:42.39ID:D6OVyDfn
>>792
第二引数を関数にして中でゴニョゴニョするとか
0795Name_Not_Found
垢版 |
2018/11/07(水) 18:35:54.90ID:???
>>792
[
  ['私', '拙者'],
  ['シッコ', 'ウンコ'],
  ['マンコ', 'チンコ'],
  ['好き', '嫌い'],
].reduce((acc, [oldWord, newWord]) => acc.replace(oldWord, newWord), '私は、シッコとマンコが好きです。');
//=> "拙者は、ウンコとチンコが嫌いです。"
0796Name_Not_Found
垢版 |
2018/11/07(水) 18:57:11.04ID:???
それでもいいけどreplacer関数作って渡す方が筋がいいかもな。
0797Name_Not_Found
垢版 |
2018/11/07(水) 19:27:20.73ID:???
>>791
まあ、そこは本質的なところではないんでどうでもいいんだわw
バカに付き合ってあげただけ

重要なのは、読むべきコードを減らすのが関数にする目的
だ〜れも、なんでもかんでも関数にしろとか言ってない

関数にする基準の話をしてるところに
重箱おじさんが連れたので、つついてあげただけw
0798Name_Not_Found
垢版 |
2018/11/07(水) 19:31:48.74ID:???
バカ「バカに付き合ってあげただけ」
重箱つつかれたのはお前ww
0799Name_Not_Found
垢版 |
2018/11/07(水) 19:33:30.33ID:???
読むコード減らすべきおじさん「読むコード減らす」

まで読んだ
0800Name_Not_Found
垢版 |
2018/11/07(水) 19:37:20.82ID:???
面白いように反応してくれるなw

で、いちばん重要な「読まなくて良いコードを増やすこと」には
ほら、反論できないでしょ?w

そういうとこやで
0801Name_Not_Found
垢版 |
2018/11/07(水) 19:40:26.32ID:???
>>787
>>774の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw

> それは関数じゃなくてアロー関数

関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});

話はぐらかそうとしてドツボwwww
0803Name_Not_Found
垢版 |
2018/11/07(水) 19:51:16.90ID:???
>>801
ハッハッハ、反論無しで降参逃亡ということだったかwww

だから読まなくて良いコードを増やすことについては何も言わなかったんだな
0804Name_Not_Found
垢版 |
2018/11/07(水) 19:51:48.97ID:???
>>802
頭が悪いんだからしょうがないよw

読まなくて良いようにすることに重要性がわかってないんだから
0807Name_Not_Found
垢版 |
2018/11/07(水) 19:54:05.99ID:???
ワロタ
読まなくていいようなこと、そもそも書くなよw
んでそんなもの増やすなw
スクリプト言語なんだから
0808Name_Not_Found
垢版 |
2018/11/07(水) 19:59:59.22ID:???
こんなゲームにマジになっちゃってどーするの式逃亡か?w
0809Name_Not_Found
垢版 |
2018/11/07(水) 20:10:42.52ID:???
>>794-795
ありがとうございます
同じ文字の複数置換がしたかったのでnew RegExpで795しました
あと他にreplaceの第二引数でreplacerも試みたのですが
やり方が悪かったのか今度はif地獄になってしまったので、
根本的に変えて
((str,
reg = new RegExp('[abcd/!/"]','g'),
sub = {
'a':'あ',
'b':'B',
'c':'C',
'd':'D',
'!':'?',
'"':'\''
}) => str.replace(reg,old=>sub[old])
)('abbcdd!"');
// あBBCDD?'
としましたが、見難かったのと
objectのプロパティ名に!とか"とか使わないほうがいい気がしたのでこちらは諦めました
0811Name_Not_Found
垢版 |
2018/11/07(水) 20:32:11.26ID:???
>>809
見にくいか?

'abbcdd!"'.replace(/[abcd/!/"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\'',
}[old]));
// あBBCDD?'
0812Name_Not_Found
垢版 |
2018/11/07(水) 20:35:20.25ID:???
>>811
訂正
'abbcdd!"'.replace(/[abcd!\"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\''
}[old]));
// あBBCDD?'
0813Name_Not_Found
垢版 |
2018/11/07(水) 20:38:09.90ID:???
>>812
ごめん再訂正
'abbcdd!"'.replace(/[abcd!"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\''
}[old]));
// あBBCDD?'
0814Name_Not_Found
垢版 |
2018/11/07(水) 20:52:34.68ID:???
毎度思うけど、頭が硬いと思う

'abbcdd!"'.replace(/[abcd!"]/g, old => ({
 'a': 'あ', 'b': 'B', 'c': 'C', 'd': 'D', '!': '?', '"': '\''
}[old]));
// あBBCDD?'

改行しろって言われたから、改行してます
理由?知りません。って言いそうだわw

この程度ならこれでいいけどな

const data = { 'a': 'あ', 'b': 'B', 'c': 'C', 'd': 'D', '!': '?', '"': '\'' };
'abbcdd!"'.replace(/[abcd!"]/g, from => data[from]);
0815Name_Not_Found
垢版 |
2018/11/07(水) 21:03:21.88ID:???
オブジェクトの部分は勝手にコード整形で改行展開されちゃうわ。
全部手動でコードのレイアウト()やってんならそれでいいけどw
0816Name_Not_Found
垢版 |
2018/11/08(木) 00:16:49.04ID:???
>>815
なんて整形ツール?

今どきデフォルトで見にくく整形するツールがあるとはね
有名所のスタイルチェックツールのデフォルト or 推奨設定では
問題ない書き方なのに
0817Name_Not_Found
垢版 |
2018/11/08(木) 01:27:28.53ID:???
整形ツールはPrettier
これはVSCodeのプラグイン経由で使ってるわ。デフォルトで使ってるはずだけどこれは展開されるな。
ESLintも使っててチームのスタイルガイドが当たるがこっちも展開されてる。
rule設定で
https://eslint.org/docs/rules/object-curly-newline
の"ObjectExpression"が"always"になってんじゃねえかな。
今確認できんが。
0818Name_Not_Found
垢版 |
2018/11/09(金) 00:05:48.65ID:k4MX0uF/
【環境】 Win7-Pro、主にGoogleChrome(たまにFirefox)
【期待する結果】 文字列型オブジェクトのキー値の参照

例えば obj = {x:100, y:200, 'font-size':16} とあったときに、x は obj.x で 100 と
参照できるのですが 'font-size' のようなキーはどうすれば参照できますか?

そのまま obj.'font-size' とすると
Uncaught SyntaxError: Unexpected string というエラーになります。
0820Name_Not_Found
垢版 |
2018/11/09(金) 00:44:04.87ID:???
var obj = { x:100, 'font-size':16 };

console.log( obj.x, obj[ 'font-size' ] ); //=> 100 16
0821Name_Not_Found
垢版 |
2018/11/09(金) 01:00:09.37ID:k4MX0uF/
>>820
ありがとうございます
0824Name_Not_Found
垢版 |
2018/11/11(日) 23:27:20.76ID:???
関数内の変数は関数が終了するとメモリ開放されるようですが
クロージャ内でも同様でしょうか?
hogeは他から参照はされていません

(function(){
var hoge = 'abcde';
}());
0825Name_Not_Found
垢版 |
2018/11/12(月) 06:46:35.75ID:???
ES仕様にはWeak*系やSABを除いてCGやメモリの定義はない
基本的にJSはメモリを回収しなくても仕様違反とはならないし、
そのタイミングや挙動に関しては完全にブラウザ・実行系依存だから
このスレで聞くのは間違ってる
0826Name_Not_Found
垢版 |
2018/11/12(月) 11:15:34.20ID:???
> そのタイミングや挙動に関しては完全にブラウザ・実行系依存だから
> このスレで聞くのは間違ってる

はて? このスレはES仕様限定でブラウザ・実行系の話は禁止でしたっけ?
ならDOM APIの話も禁止ですな。
0827Name_Not_Found
垢版 |
2018/11/12(月) 12:49:02.11ID:???
ESにもW3C/WHATWGにも無いなら
ブラウザの名前くらい示してくれないと答えようが無い
0828Name_Not_Found
垢版 |
2018/11/12(月) 13:11:46.84ID:???
__proto__みたいに仕様のほうが追認することもある(あった)から……
0829Name_Not_Found
垢版 |
2018/11/12(月) 13:24:35.78ID:???
MathJaxの質問です。
MathJaxのサードパーティーによる追加機能である XyJax を追加したいですが、追加方法が分かりません。

ヘッダには、


script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: { extensions: ["AMSmath.js", "AMSsymbols.js", "http://sonoisa.github.io/xyjax_ext/xypic.js";] },
tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] }
});
/script>
script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML";>
/script>


と書いたのですが、上手く行きません
どうしたらいいですか?
0830Name_Not_Found
垢版 |
2018/11/12(月) 13:25:36.39ID:???
注意
< script と書き込もうとすると5chから書き込めないといわれたので、
わざと左三角括弧< を削除しました
0832Name_Not_Found
垢版 |
2018/11/12(月) 13:54:55.71ID:???
>>831
だから、書いてある通りにやって出来ないから聞いてんだろ
一々低次元なところからスタートするな低脳
ってかお前みたいなレスしてる奴が正解を出せるわけがないんだからアホは黙っとけ
0834Name_Not_Found
垢版 |
2018/11/12(月) 14:18:14.16ID:???
>>832
いや
それを書いた人に言ったらなんて返ってきたのかと
まさか聞いてないなんて思わんし(・∀・)
0837Name_Not_Found
垢版 |
2018/11/12(月) 21:05:32.87ID:???
>>825
ではどこで聞けばいいでしょうか?
メジャーなブラウザ、一般的(曖昧ですが)な場合だけでいいです

と言いたいところですが解決しましたのでもういいです
0838Name_Not_Found
垢版 |
2018/11/12(月) 21:27:34.42ID:???
示されてる例がクロージャじゃない件
0840Name_Not_Found
垢版 |
2018/11/12(月) 22:02:53.81ID:???
>>838
そうなんですか
幾つかのサイトからコピペですが、忠告ありがとう
0841Name_Not_Found
垢版 |
2018/11/12(月) 22:21:44.40ID:???
IIFEの例じゃないの?letの普及で役割を終えた。
0842Name_Not_Found
垢版 |
2018/11/13(火) 06:47:42.27ID:???
>>824
メジャーなエンジン実装で言うと
関数が終了したら解法ではなく
定期的に全ての要素を見て回って
ルートから辿れなければ解法の方が近い
実際は別言語間との循環参照だったり
非常にややこしいが
基本的に同期的には開放しない
0843Name_Not_Found
垢版 |
2018/11/13(火) 06:54:35.61ID:???
基本的に同期的には開放しないっていうのは
開放しないってことですか?
0844Name_Not_Found
垢版 |
2018/11/13(火) 08:50:47.42ID:???
えっ?今?w 今それ解放する?www って時に解放する。
0845Name_Not_Found
垢版 |
2018/11/13(火) 09:09:49.29ID:???
>>843
>>837で解決した質問を継続するなと
解決後にどや顔回答を期待して解決したふりかね?
0846Name_Not_Found
垢版 |
2018/11/13(火) 11:06:07.08ID:???
ここは質問するのも自由だし回答するのも自由
他人に口出す必要はない
0847Name_Not_Found
垢版 |
2018/11/13(火) 11:36:08.94ID:???
>>844
つまり解放するんですよね?
なんで、非同期で解放すると言えなかったんでしょうか?
0848Name_Not_Found
垢版 |
2018/11/13(火) 11:59:01.84ID:???
>>847
分かんない。俺>>842じゃないし。
質問が関数が終了するとメモリ開放されるかどうかを問うているからじゃないの。
0849Name_Not_Found
垢版 |
2018/11/13(火) 12:38:14.25ID:???
>>847
ブラウザの任意のタイミングだからね
あんまりこういうタイミングで開放されるだろうとか期待するもんじゃないよ
0850Name_Not_Found
垢版 |
2018/11/13(火) 19:33:02.88ID:???
>>846
解決したなら、回答する必要がないからね
本当は解決してないのがバレバレ
0851Name_Not_Found
垢版 |
2018/11/13(火) 20:23:57.82ID:???
本当は解決してないのなら引き続き回答が付く流れになって何が問題なんだ?
何が言いたいんだこいつ、自分自身が何を言ってるのか認識しながら書いてるのか?
0852Name_Not_Found
垢版 |
2018/11/13(火) 21:43:27.74ID:???
>>845
質問した824ですが843は別人です
よって回答は不要です

ただ別の人が興味持って続けたりするのはお好きにどうぞ
実際この問題けっこう面白いです
0853Name_Not_Found
垢版 |
2018/11/13(火) 22:48:17.01ID:???
MathJaxについて質問です
サードパーティーによる拡張機能を追加する時は、どういう記法がいいんですか?
0855Name_Not_Found
垢版 |
2018/11/14(水) 06:12:04.52ID:???
>>852
別人だろうが同一人物だろうが関係ないよ
そんなこと考えて返信したりはしないから
コテハンも付けもしないくせにそんなこと言っちゃって変なの
0859Name_Not_Found
垢版 |
2018/11/14(水) 21:02:44.14ID:???
>>858
ならなぜコテハンを付けない???
>>852が別人アピールをしたところで何がどうなる?
むしろそうでない人>>845が不快になって荒れる原因にしかならんだろ
俺には成りすましよりもずっと荒らしに見えるよ
0860Name_Not_Found
垢版 |
2018/11/14(水) 21:58:54.43ID:???






まで読んだ
0861Name_Not_Found
垢版 |
2018/11/14(水) 22:53:28.60ID:???
後からコテハンつけてもな
0862Name_Not_Found
垢版 |
2018/11/17(土) 00:10:54.73ID:???
質問です

class Company {
constructor(){
this.factory = new Factory();
this.shop = new Shop();
}
}

class Factory {
constructor(){}
}

class Shop {
constructor(){}
}

こうしたときに
factoryとshopがお互いを参照するためには
それぞれのインスタンスを作るときに
Companyのthisを渡すので良いのでしょうか?
0863Name_Not_Found
垢版 |
2018/11/17(土) 00:26:19.34ID:???
>>862
良いか悪いかはあなたが判断すること
0864Name_Not_Found
垢版 |
2018/11/17(土) 00:43:04.97ID:???
factory・shop が、お互いを参照するためには、
それよりも1階層上のCompany に、メソッドを定義すればよい

Companyからは、両方へアクセスできるから
0865Name_Not_Found
垢版 |
2018/11/17(土) 01:07:09.66ID:???
>>862は引数で渡せば共有可能なことは分かってる
で、要件考察を放棄して「どうすれば良いですか」と最良のコードを聞いてるわけ
典型的なコピペプログラマ
0867862
垢版 |
2018/11/17(土) 16:11:14.78ID:???
>>863,865,866
あざます
微妙な聞き方ですみませんでした
ベストプラクティスが知りたかったです
コピペプログラマ以前の、まだペーペーでして

class使わずに書いてた時はCompanyの中でこんな感じで

var company = {
constructor : function(){
this.factoty = this.createFactory();
},
createFactory : function(){
var A = this;
var factory = {
constructor : function(){
// ここではAでcompanyが参照できる
}
};
factory.constructor();
return factory;
}
};

コンストラクタ作らずに、直に{}でオプジェクトとして生成してたので
参照に困ることがなかったのですが
これ自体正しいのかわからんし、classで書くにはこうも出来んので

どうするのが良いのか聞いてみた次第でした
ありがとうございました
0869Name_Not_Found
垢版 |
2018/11/17(土) 19:39:54.37ID:???
ベストプラクティスと言っても魔法の解があるわけじゃないし
JSはいろんな書き方ができる言語だから
結局はその要件・コンテキストでどれだけ自然かってことになる

でもそれってプログラミング関係なくて
実際の「企業」「工業」「店」の関係に置き換えて想像してみたら
もし変なことをしていたりムダがあってもすぐ分かるよ
0871Name_Not_Found
垢版 |
2018/11/17(土) 21:02:18.66ID:???
<script src="js1.js"></script>
<script src="js2.js"></script>

js2からjs1に書いてある関数を実行するにはどうしたらいいでしょうか?
書き込めないので2バイト文字にしてます
0872Name_Not_Found
垢版 |
2018/11/17(土) 22:13:59.02ID:???
それだけだと普通に呼べばいいのではと思うが
特殊な事情があるならそれを書いて欲しい
0873Name_Not_Found
垢版 |
2018/11/17(土) 23:17:45.59ID:???
まじすか、リファエラー出てて、スコープは問題ないし
見直してみます
0875Name_Not_Found
垢版 |
2018/11/18(日) 14:51:26.73ID:???
>>871,873
今時の奴はマルチポスト先で解決したら、「全てのマルチポスト先で解決方法を書く」程度の礼儀も知らんのか
全員がお前と同じスレを同じタイミングで見ているわけではないんだぞ
解決済みの質問に回答が来てもお前は困らないだろうが、無駄に骨を折らせるだろうが

しかも、スコープの問題ではないといってるし

$(function () {
 var a = 1;
});
$(function () {
 a; // ReferenceError: a is not defined
});

「それが普通とあれば解決です」といっている辺りからして、コピペコードのネタを探しているだけで理解する気はなさそうだな
0876Name_Not_Found
垢版 |
2018/11/18(日) 15:45:59.34ID:???
質問者本人は「使いたい関数定義義は $(function の外にだすのが普通、と分かったので他はどうでもいいです」な考えだろうから、相手するだけ無駄って感じ
それはそれとして、moduleも解決策の一つだと思うけど、なぜ向こうではカスタムイベント一択の人が必死になってるんだろ
0877Name_Not_Found
垢版 |
2018/11/18(日) 15:47:15.84ID:???
それはIEで動かないから。
0878Name_Not_Found
垢版 |
2018/11/18(日) 15:56:42.73ID:???
jQueryを使えばIEサポートできるよ派が必死になってるのね
カスタムイベント、IEでも使えるんだけどねえ
0879Name_Not_Found
垢版 |
2018/11/18(日) 16:37:35.12ID:???
しかし、グローバル変数を敬遠してカスタムイベントを使うのはどうなんだろうな
カスタムイベントにも衝突のリスクがあるという点では問題が内在している事になるのだが
グローバル変数は一つのオブジェクト内にプロパティ定義すれば、汚染変数を一つに集約できるが、カスタムイベントは複数あれば複数定義してやらねばならない
必ずしも、カスタムイベントに優位性はないと思うんだがな
0880Name_Not_Found
垢版 |
2018/11/18(日) 17:33:16.72ID:???
カスタムイベントの人、衝突のリスクを真面目に考えてはいないと思うな
衝突を回避しようとすると、module一択になると思う
IEに対応するなら、一つのファイルに連結させるぐらいしか思いつかない
0881Name_Not_Found
垢版 |
2018/11/18(日) 17:51:25.34ID:???
カスタムイベントもグローバル変数もページ単位でスコープを持っているので、リスクは同等なんだよな
カスタムイベントに「関数をグローバルに定義する必要も importも使う必要もない」といえる程のメリットはない
衝突のリスクがないmoduleとは比較にならない
0882Name_Not_Found
垢版 |
2018/11/18(日) 17:58:17.91ID:???
JS全般に言えることだけど衝突してもすぐ分かるので問題にならない
そんな来年になったら衝突しだしたみたいなことはまず起き得ないのだから
0883Name_Not_Found
垢版 |
2018/11/18(日) 18:02:39.12ID:???
> JS全般に言えることだけど衝突してもすぐ分かるので問題にならない
const宣言しておけば、確かにわかるな
だが、カスタムイベントは検知できない
0884Name_Not_Found
垢版 |
2018/11/18(日) 18:13:24.56ID:???
衝突の問題って自分がa.jsとb.jsを両方管理していればそうそう起きないけど、管理外のc.jsを別の人が加えた時点で発生するんだよね
全てのjsファイルを一人が管理しているなら発生しづらいけど、運用の都合上、編集権限がないjsファイルがあるかもしれない
あるいは、自分が今までに関わっていないサイトの機能拡張を依頼されて、そのサイトのグローバル変数に関するドキュメントがないかもしれない
そういう時に衝突しない仕組み(module)だったり、衝突しても自動的にエラーになる(constでグローバルスコープに宣言)のは大きい
0885Name_Not_Found
垢版 |
2018/11/18(日) 18:14:28.75ID:???
そんな大真面目にバグの可能性をできるだけ検知しようとしなくてもいいじゃん
どうせjQuery使う程度のサイトなんだからさ
そんなちょっとテストしてみてわからないバグなんてクリティカルじゃないよ
あとで気づいたり指摘されたときになおすので十分で
製作時はそんなこと考えずに適当に思いつくままパパっと作ったのでいいじゃない
どうせjQuery使う程度のサイトなんだからさ
0886Name_Not_Found
垢版 |
2018/11/18(日) 18:30:20.34ID:???
>>885
君は>>883って事でいいのかな?

> そんなちょっとテストしてみてわからないバグなんてクリティカルじゃないよ
「すぐに発見できないバグ=クリティカルなバグじゃない」は通らないよ
むしろ、すぐに発見できない重大なバグの方が恐ろしいので、早期発見に努めたいと俺は思うね

> どうせjQuery使う程度のサイトなんだからさ
あなたが「品質保証しません」なスタイルなら、いいと思うよ(顧客の信用は失うけど)
https://mevius.5ch.net/test/read.cgi/hp/1510321470/643- は何かしらのポリシーをもって、カスタムイベントを推奨していたみたいだからおかしいとは思ったけどね
0887Name_Not_Found
垢版 |
2018/11/18(日) 18:37:51.65ID:???
俺は883じゃないよ
そんなバグを潰したければTSも使うしjQueryは使わないよ
jQueryは何となく作ってそれなりに良いようにやってくれるライブラリなのに
それをちょっとでもマシにしようと考える時点で間違ってるんだよ
0888886
垢版 |
2018/11/18(日) 18:38:54.41ID:???
>>886を訂正

× 君は>>883って事でいいのかな?
〇 君は>>882って事でいいのかな?
0889Name_Not_Found
垢版 |
2018/11/18(日) 18:48:32.46ID:???
>>887
君の中ではこういうこと?

低品質コード: jQueryを使ったコード (jQueryで高品質なコードを作ろうとすることが間違っている)
中品質コード: TSとjQueryを使ったコード
高品質コード: TSを使ったコード

ぶっちゃけ、いずれも同様にJSなので品質が変わるのはおかしい気がするけど、TSに君の頭が最適化されているって事かな
jQueryの内部コード読んでると、共感できない実装が多いので、気持ちは分からんでもないけど
0890Name_Not_Found
垢版 |
2018/11/18(日) 19:11:27.93ID:???
正直、1年前に書いた自分のコードを書き換えようと思っても、細部まで覚えていられる自信はない
直近なら完璧に管理できると思うけど、時間が経てば忘れるので、「自動的にエラーが検知される機構」か「エラーにならない機構」であって欲しいなあ
0892Name_Not_Found
垢版 |
2018/11/19(月) 01:17:54.54ID:???
>>891
>>873は「スコープは問題ない」と書いているのがおかしい気はする
0893Name_Not_Found
垢版 |
2018/11/19(月) 04:29:56.34ID:???
以下に、複数ファイルに分割して、読み込む方法が書いてある

JavaScriptの設計について考える - 機能ごとに分類する
http://tech.leihauoli.com/post/2014/11/10/program-design-1.html

でも、ファイル数が増えると、読み込みが遅くなるから、
webpack などで連結して、1つのファイルにまとめるのが普通
0894Name_Not_Found
垢版 |
2018/11/19(月) 05:01:24.27ID:???
>>880
> カスタムイベントの人、衝突のリスクを真面目に考えてはいないと思うな
名前空間使えばいいだけだろ
0895Name_Not_Found
垢版 |
2018/11/19(月) 05:03:00.74ID:???
つまり、jQueryのカスタムイベントを使う方法は、
名前空間があるから、衝突のリスクも少なく
推奨できる方法というわけか
0896Name_Not_Found
垢版 |
2018/11/19(月) 05:16:20.51ID:???
>>889
> jQueryの内部コード読んでると、共感できない実装が多いので、気持ちは分からんでもないけど

共感できない実装を、あなたの実装に変えると
どういうメリットが有るの?
0897Name_Not_Found
垢版 |
2018/11/19(月) 05:38:24.46ID:???
共感できるようになるというメリットがある
0898Name_Not_Found
垢版 |
2018/11/19(月) 05:54:14.63ID:???
なぜこの場合にカスタムイベントが適切かと言うと
>>871の書き込みだけ見てるとわからんのよ

https://mevius.5ch.net/test/read.cgi/hp/1510321470/635-636
こっちをみないと理解できないだろう

そっちを見るとわかるのが、ex_js_2.js から呼び出しているのが
ex_js_1.js が担当しているDOM要素の初期化処理なんだよ

単一責任原則からするとモジュール(ファイル)が分かれているのだから
担当すべきものは別々でなければならない。
ex_js_1.js が担当している処理の内部実装に依存するのは良くない

本来なら ex_js_1.js で完結させるべきことだろう
だがどうしてもex_js_2.jsから呼ばなければいけないというのならば、
モジュール間の結合度を下げるためにイベントを使うのが適切
module使うのもモジュール間の結合度が高まってるのでなんの解決にもなっていない

カスタムイベントと聞いてDOMのカスタムイベントと同様のことしかできないと
思い込んでいる無知がいそうだが、jQueryのカスタムイベントは
名前空間が使えるからかぶるリスクも少ない

そこまで考慮した上でのレスなんだよ
呼べればいいだろレベルの浅い考えの答えとはわけが違う
0899Name_Not_Found
垢版 |
2018/11/19(月) 05:54:49.47ID:???
>>897
それだけしかないという意味でいい?
0900Name_Not_Found
垢版 |
2018/11/19(月) 06:03:39.84ID:???
>>890
> 正直、1年前に書いた自分のコードを書き換えようと思っても、細部まで覚えていられる自信はない

誰でもそう。記憶力に頼って仕事なんてできないし、
そんなものに頼ってはだめ。

だからといってドキュメントをたくさん残せば良いのかと言うと
それも違う。読むものが増えると、その分忘れた記憶を取り戻す時間がかかる

じゃあどうするのかと言うと、結局は読むべきものを減らすということに尽きる
ドキュメントもそうだしコードもそう

プロジェクト依存の知識は、そのプロジェクトから外れると必要なくなる。
つまり忘れる。だからプロジェクトに依存しない知識を使いつつ
より少ないドキュメントやコードで構成しなければいけない

もう分かるね? どんなにjQueryがなくてもできようが、
jQuery使ったほうがコードが減るなら、jQuery使ったほうが良いってことだよ
もちろんjQueryとTSを使ったほうがより良いだろう
TS単体よりもjQuery使ったほうがプロジェクト固有の知識は必要なくなる
0901Name_Not_Found
垢版 |
2018/11/19(月) 06:59:03.74ID:???
それってjQueryのAPIを忘れないよう未来永劫使い続けること前提じゃん
ライブラリにロックインされるのは嫌だわ
0902Name_Not_Found
垢版 |
2018/11/19(月) 08:18:44.00ID:???
未来永劫、jQueryを使ったほうがコードが減るなら
そうした方が良いのでは?w
0903Name_Not_Found
垢版 |
2018/11/19(月) 08:55:45.60ID:???
フレームワークにロックインっていうのならわかるが
ライブラリにロックインってよくわからんな

フレームワークは一つの大きな枠組みだから、
外すときは中身が全てばらばらになってしまうが

ライブラリは、中身で使ってるだけだから、
一つづつ中身を置き換えていける
ロックインってほどのものじゃない
0904Name_Not_Found
垢版 |
2018/11/19(月) 09:10:06.39ID:???
>>900
> もう分かるね? どんなにjQueryがなくてもできようが、
> jQuery使ったほうがコードが減るなら、jQuery使ったほうが良いってことだよ
jQueryの内部コードを完全に把握していて、jQueryがバージョンアップする度に更新内容を詳細に知る努力を維持しているならね
根幹のjQueryを他者が完全に把握するのは不可能
0905Name_Not_Found
垢版 |
2018/11/19(月) 09:27:59.59ID:???
> jQueryの内部コードを完全に把握していて、jQueryがバージョンアップする度に更新内容を詳細に知る努力を維持しているならね

そんなこと必要ないのでは?
誰もOSの中身やブラウザの中身なんて完全に把握してないでしょう?

もう少しさ、公平な視線で見れないの?
0906Name_Not_Found
垢版 |
2018/11/19(月) 10:41:03.83ID:???
読むコード減らすべきおじさん
いい加減自重してほしい…

ここは質問スレなんで
自己主張はブログでも作ってそこでやってください
0907Name_Not_Found
垢版 |
2018/11/19(月) 11:03:44.39ID:???
>>906

>>1を読もうね
> ・質問への「答え」だけでなく「意見」を出しても良い。
0908Name_Not_Found
垢版 |
2018/11/19(月) 12:22:28.72ID:???
議論用スレじゃないのに明らかにおかしいね。
荒らしが足したのかな?
次スレ立てるとき消しとくわ。
0909Name_Not_Found
垢版 |
2018/11/19(月) 12:30:35.39ID:???
>>907
だから自重と書いたのを理解してほしい
0910Name_Not_Found
垢版 |
2018/11/19(月) 12:56:03.85ID:???
>>909
じゃあ、自重してほしいというのをやめてほしい
0912Name_Not_Found
垢版 |
2018/11/19(月) 13:05:00.37ID:???
ほとんど議論なんだから議論スレ立てて好きにやれば?
0914Name_Not_Found
垢版 |
2018/11/19(月) 14:44:45.01ID:DYe7Rsfm
phpやrubyと違ってjavascriptは簡単な言語です、
とか言ってる人もいるけど、間違ってると思いませんか
0916Name_Not_Found
垢版 |
2018/11/19(月) 20:24:27.87ID:???
>>898
例えばだが
1は他の様々なプロジェクトでも使える基本関数
それを2から呼び出すとか

phpのincludeのように
0917Name_Not_Found
垢版 |
2018/11/19(月) 21:00:32.09ID:???
複数のページにまたがって使えるような定数の集まりや関数など
include的に使いたいとき皆どうしてるんだろう
0918Name_Not_Found
垢版 |
2018/11/19(月) 21:02:11.71ID:???
それがなかったからバカにされてたんだろうが!
0919Name_Not_Found
垢版 |
2018/11/19(月) 21:06:06.38ID:???
jsの場合、ファイル分けてもあまり意味がないからincludeしなくなったわ
一つのファイルにまとめている。アナリティクスすら一つのファイル
0920Name_Not_Found
垢版 |
2018/11/19(月) 21:16:23.86ID:???
つまり各ページで同じことを書いてると
0921Name_Not_Found
垢版 |
2018/11/19(月) 21:19:16.20ID:???
あれ?jQueryでやるんじゃなかったのかw
0922Name_Not_Found
垢版 |
2018/11/19(月) 21:23:24.64ID:???
>>920
そう
どうせキャッシュから読み出すので速度は問題ない
0923Name_Not_Found
垢版 |
2018/11/19(月) 21:38:39.08ID:???
javascriptウルトラ初心者がいきなりvue.jsやっても良いですか
0925Name_Not_Found
垢版 |
2018/11/19(月) 22:08:46.80ID:???
>>923
別にいいっちゃいいけどvue.jsはいつも通り、いつの間にか消えて行くパターンだろうなぁって感じ
ただそういう意味では逆に使って置くと良い。あの絶望感は楽しい
0926Name_Not_Found
垢版 |
2018/11/19(月) 22:14:08.87ID:???
>>925
vue.jsってあんまり普及してないんですかね?
0927Name_Not_Found
垢版 |
2018/11/19(月) 22:27:17.38ID:???
>>926
一時的に普及はしてるけど、いつもの流行り
多分君みたいな「なんか革新的で凄そう!」って人が使ってしまっている
俺もその昔、jquerymobileっての使ってた。今みたらgithubは二年も更新止まってるわ・・・まぁいいけど

こういうのはある程度やってないと分からない
まぁ時間を無駄にしたくなければjQuery使っておけばok
0928Name_Not_Found
垢版 |
2018/11/19(月) 22:29:34.96ID:???
SPAを今の環境でやるには便利だし普及してるとは思う
けど、SPAをもりもり作ってる人ってのがそもそも少ないだろうし
より最適化したものが作られたりUA側の環境が変われば
また変わっていくでしょう
0930Name_Not_Found
垢版 |
2018/11/19(月) 22:47:26.34ID:???
>>929
あぁそういう風に受け取ったのか、お前は本当に素人だなwww
phpから出力してheadに直接出力してるんだよ
0932Name_Not_Found
垢版 |
2018/11/19(月) 23:05:36.01ID:???
>>927
jquerymobile廃れたじゃんふざけやがって
0933Name_Not_Found
垢版 |
2018/11/19(月) 23:07:01.65ID:???
>>930
なんでjsスレでphpありきの話してんだよ
ここでなら普通phpなしが前提だろ
0934Name_Not_Found
垢版 |
2018/11/19(月) 23:23:33.60ID:???
>>931
まぁ、わざと大袈裟に言った。
アホな事やって周りにまで迷惑掛けてしまったからな

>>932
俺に言われても。

>>933
で、その挙げ句が>>929という発想だろ
ボトルシップでもやってんのか、ありえない
お前みたいなアホがシステムと連携せずにフロントをぐちゃぐちゃにするんだよ
もっと全体を見てくれ
0935Name_Not_Found
垢版 |
2018/11/19(月) 23:34:22.44ID:???
お、話反らしにきてるな
0937Name_Not_Found
垢版 |
2018/11/20(火) 00:41:20.42ID:???
PHPでとか言ってるの俺じゃねぇからな

>>916
> 1は他の様々なプロジェクトでも使える基本関数

だからコード見る限りそういう使い方じゃないから
カスタムイベントと言ったんだよ
0938Name_Not_Found
垢版 |
2018/11/20(火) 00:41:58.78ID:???
>>936
jQueryはDOM操作用ライブラリ
俺を騙るのはやめろ
0939Name_Not_Found
垢版 |
2018/11/20(火) 02:07:54.64ID:???
>>914
Ruby が圧倒的に可読性が高く、各バージョンの互換性も高い。
言語に、include, require もある

>>917
>>893
のリンクにあるような、共通ライブラリにして、先に読み込む。
かつ、2回読み込まない

>>923
初心者は、jQuery から。
Vue.js は無理
0941Name_Not_Found
垢版 |
2018/11/20(火) 10:59:04.66ID:???
electronでアプリ作ったらソース丸見えなの?
0943Name_Not_Found
垢版 |
2018/11/20(火) 17:23:05.71ID:???
>>940
Rubyはマジで勉強しなくて良かったと思ってる
こんなに急速に終わるとは思わなかった
0944Name_Not_Found
垢版 |
2018/11/20(火) 17:28:35.72ID:???
rubyなんで終わったん?
なんか便利そうだな〜って思ってる内にフェードアウトしていた
0945Name_Not_Found
垢版 |
2018/11/20(火) 18:40:16.17ID:???
元々Railsのおかげで流行っただけだし、ある種当然の流れともいえる
0946Name_Not_Found
垢版 |
2018/11/20(火) 18:44:45.09ID:???
ライブラリの出来の差でpythonに二周差くらいつけられた。
有名な先端のC/C++で書かれたライブラリ(ネイティブ)なんかも大抵Pythonから呼び出すインターフェースを公式で提供されてる。
Rubyだってできるもん!と馬の骨がRubyラッパーを作っても誰もメンテしない始末w
あとディープラーニングなんかはMacでGPUサポートが弱い関係でWindows(やLinux)が主戦場になってるがRubyのコミュニティはWindows蔑視の伝統がありそのツケがまわってきてしまった形w自業自得www
もうRailsのDSLとしてしか息してない。
0947Name_Not_Found
垢版 |
2018/11/20(火) 18:47:24.39ID:???
>>937
元々それも含まれてます
むしろそれがメインです
0948Name_Not_Found
垢版 |
2018/11/20(火) 18:47:36.78ID:???
Pythonって機械学習一発屋じゃなかった?
0950Name_Not_Found
垢版 |
2018/11/20(火) 18:50:09.35ID:???
Rails一発屋「Pythonは機械学習一発屋!!」
0951Name_Not_Found
垢版 |
2018/11/20(火) 18:54:03.53ID:???
>>950
何回も叫ばなくてもわかってるよw

Pythonは機械学習一発屋!!!
0952Name_Not_Found
垢版 |
2018/11/20(火) 18:56:48.63ID:???
7月生まれだからルビーって名前つけられたのがムカつくわ
パール参考にしてんだからオパールとかでいいのに
0957Name_Not_Found
垢版 |
2018/11/20(火) 19:09:40.91ID:???
>>953
それみたらc++以下は全部オワコンだな
0958Name_Not_Found
垢版 |
2018/11/20(火) 19:14:01.27ID:???
>>957
画像の右のグラフも合わせて見ないと。
rustは生まれたてで急速に成長、
rubyは死にかけの消えかけと分かる。
0959Name_Not_Found
垢版 |
2018/11/20(火) 20:30:07.26ID:???
rustなんてマニアック言語、ぜったいはやらないわ
0960Name_Not_Found
垢版 |
2018/11/20(火) 21:01:25.32ID:???
ここに載ること自体立派なもんだ
0961Name_Not_Found
垢版 |
2018/11/20(火) 22:49:51.64ID:???
rustに失速の可能性はあるよもちろん。
rubyに復活の可能性はないけどwww
0963Name_Not_Found
垢版 |
2018/11/21(水) 00:04:45.71ID:???
JavaScript強すぎだな
これはもう言語自体に何か人をくすぐる要素があるんだろ
俺にはわからんけど
0964Name_Not_Found
垢版 |
2018/11/21(水) 00:47:28.30ID:???
レンタルサーバーでちょろちょろっとサーバーサイドの処理書くから
PHPは消えてほしくないな……
0965Name_Not_Found
垢版 |
2018/11/21(水) 00:49:43.57ID:???
>>963
そういうことではなくてブラウザで動く唯一の言語という特権ではないかな。
今後はwasmがあるからjsの落日が〜とかいうやつもいるけどそんなことには絶対ならない。
だから言語勝負の時は殿堂入りで除外される。
でpython vs rubyだがコミュニティがクズ過ぎてrubyの自滅だったね。
ドキュメント軽視、Windows蔑視、
で逆にドキュメント重視、Windowsにも手厚いコミュニティサポートのPythonがアカデミック領域の真面目な人たちの気を引いて学術ライブラリが充実、
真面目だからメンテもしっかりされてそれがまた人を惹き付けてのポジティブサイクルでgoogleやらにも気に入られて勝負あった。
0966Name_Not_Found
垢版 |
2018/11/21(水) 00:54:59.40ID:???
GoogleのDartがMSのTypeScriptに負けるあたりも面白い
0967Name_Not_Found
垢版 |
2018/11/21(水) 01:05:14.37ID:???
ブラウザクラッシャーのjavascriptがこんな立派に成長するなんて
そのうちなくなるだろうって思ってたのに
素質が良かったのと周りに助けられて育ったんだな
0968Name_Not_Found
垢版 |
2018/11/21(水) 01:18:39.48ID:???
育ったのはいいが一旦過去を切り捨ててほしい
0970Name_Not_Found
垢版 |
2018/11/21(水) 03:50:20.43ID:???
真だけを処理する三項演算子の書き方はないのかと思ってググったところ、
同じようなことを考えた人は結構いるようですが、大体「{}無しのif使え」という結論のようでした。
実際のところ、

A===1?B=C:'';

で行けるようなんですが、これだと何か問題あるでしょうか?
0971Name_Not_Found
垢版 |
2018/11/21(水) 06:59:13.91ID:???
三項である必要がないんだから三項演算子でやろうということが矛盾してる
&&でいいじゃん
0973Name_Not_Found
垢版 |
2018/11/21(水) 07:29:36.64ID:???
何が問題かって、そんなおかしな書き方してたら読みづらくて仕方ない
素直にif使うか、ギリギリ許せて&&だ
0974Name_Not_Found
垢版 |
2018/11/21(水) 07:50:12.08ID:???
>>970
三項演算子は式で使う
if節は文(ステートメント)で使う
今回のケースは文
よってif文を使う
使い分けに明確な差がある
逆に
let B
if (A === 1) B = C else B = ""
これなら
const B = A === 1 ? C : ""
と書く
書けるかどうかではなく意味論の話
0975Name_Not_Found
垢版 |
2018/11/21(水) 08:31:13.79ID:???
ドヤ顔のところ悪いが
>>970が偽でもBに空は入らないし
''がないとエラー
0976Name_Not_Found
垢版 |
2018/11/21(水) 12:03:37.57ID:???
>>946
おー、なるほど分かりやすい。ありがとう
そう、昔はruby・pythonそれぞれのラッパーがあったんだよね
0977Name_Not_Found
垢版 |
2018/11/21(水) 14:10:07.78ID:???
>>965
ここで上がってるJSはnodeの方が多いんではなかろか
0978Name_Not_Found
垢版 |
2018/11/21(水) 14:17:43.74ID:???
>>946
WindowsとMacが云々はあまり関係ない気がするなあ
最近はやりの他の言語もさして変わらんし

強いて言えば、Unix/Linux環境ありきの言語なので
Windowsはちと親和性が低いくらいのもんで


関係ないけど
WSLには期待してたんだがなあ…
0979Name_Not_Found
垢版 |
2018/11/21(水) 16:03:50.71ID:???
WSLはめちゃくちゃ使えるし、実際に使ってるけど?
0980Name_Not_Found
垢版 |
2018/11/21(水) 16:15:29.96ID:???
そういやlindowsってどうなったんだろう
・・・13年前に終了していた
0982Name_Not_Found
垢版 |
2018/11/22(木) 05:10:16.35ID:???
>>979
Windowsでbashが使えるって触れ込みだったから
てっきりWindowsをシェルで操れるようになるもんだと思ってたんだがなあ

あれじゃあ、単に並列にubuntuが起動して
Windowsのボリュームをマウントしてるだけじゃねえかと
0984Name_Not_Found
垢版 |
2018/11/22(木) 06:03:43.01ID:???
>>982
> てっきりWindowsをシェルで操れるようになるもんだと思ってたんだがなあ

操れるよ?
bashからWindowsのコマンドが実行できる(その逆も可能)
だからどんなことでもシェルで扱える

> あれじゃあ、単に並列にubuntuが起動して
> Windowsのボリュームをマウントしてるだけじゃねえかと
Windowsのボリュームをマウントしてるだけなら
UbuntuからWindows用のコマンド実行できないね
0985Name_Not_Found
垢版 |
2018/11/22(木) 08:29:51.82ID:???
>>982
お前にwolはブタに真珠だなぁ
そんなのcygwin、mingw、gitbashで出来てたじゃん。
wolがすごいのはシステムコール変換だぞ!バイナリ互換だぞ!
0987Name_Not_Found
垢版 |
2018/11/22(木) 12:58:46.38ID:???
ぼく「~が」
敵「それはWindows側ではなくLinux側の…」
ぼく「sudoで」
敵「だからLinux側の…」

ぼくはwslを諦めた

Windowsは無理に世間に迎合しないで
独自路線突っ走ってればいいんじゃねえのかなあ
会社の文房具としては揺るぎない地位を確立してんだし
0988Name_Not_Found
垢版 |
2018/11/22(木) 14:26:02.87ID:???
>>987
Windows側のHOMEが知りたければ、wslpathで知ることが出来るし、
Windowsの管理者権限がほしいならrunasコマンドを実行すれば?

自分ができないからって、OSのせいにするなよ

> Windowsは無理に世間に迎合しないで
> 独自路線突っ走ってればいいんじゃねえのかなあ
> 会社の文房具としては揺るぎない地位を確立してんだし

そうしてくれないとお前が困るもんねw
これからも文房具だって馬鹿にしたかったのに、
Windowsが本当になんにでも使える道具になってしまった
開発するのはWindowsが一番便利だなんて!

お前は、困るよねw
0989Name_Not_Found
垢版 |
2018/11/22(木) 14:26:55.02ID:???
どうしたの急に
よくわかんないけど
俺の愛してるWindowsバカにすんなこのやろう
0990Name_Not_Found
垢版 |
2018/11/22(木) 14:36:29.58ID:???
>>989
俺の大嫌いなWindows馬鹿野郎って
言ってる人には妥当なレスですねw
0991Name_Not_Found
垢版 |
2018/11/22(木) 16:36:08.13ID:???
みんなちがって みんないい
0992Name_Not_Found
垢版 |
2018/11/22(木) 18:43:08.89ID:???
>>987
>会社の文房具
すごい!個人的に流行語大賞だわw
0993Name_Not_Found
垢版 |
2018/11/22(木) 19:08:16.10ID:???
>>992
それ批判するときの使い古された言葉だよw

文房具は安いという前提があって成り立つ批判なんだが
ようするに便利な道具で実際には会社以外でもどこでも使えるわけで
値段を除けば批判する点はなく、値段も別に安くもないので
何一つ批判になってないというw
0994Name_Not_Found
垢版 |
2018/11/22(木) 21:07:29.67ID:???
WindowsではLinuxが走るけど
LinuxではWindowsが走らない
どっちがいいかは自明
0995Name_Not_Found
垢版 |
2018/11/22(木) 21:12:31.61ID:???
vineだかwineだかなかった?
フォントサイズおかしくなったけど普通に動いたぞ
0996Name_Not_Found
垢版 |
2018/11/22(木) 21:16:32.71ID:???
wineは動くのと動かないの、動かすにしてもコツがいるのなどいろいろあるよ
そろそろさすがにスレチじゃね
0997Name_Not_Found
垢版 |
2018/11/22(木) 21:28:55.26ID:???
>プログラミング教育の本格的な導入に向けて実務家や有識者などからなるIT教育再生審議会による審議で、小学校ではRubyを、中学校ではC++を導入することが明らかになった。
0998Name_Not_Found
垢版 |
2018/11/22(木) 21:30:13.70ID:???
>>997
どんな有識者で話し合うとこういう結論になるんだ、、
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 114日 10時間 2分 45秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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