X



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

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

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

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

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

◆開発者ツール(Developer Tools)の基本的な使い方 (全部はhttp://fiddle.jshell.net/vSqKr/44/show/light/#Browser-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/03/06(火) 18:47:37.17ID:???
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。

■各種仕様 ( http://fiddle.jshell.net/vSqKr/44/show/light/#Link も参照 )
◆ 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/03/06(火) 18:47:59.30ID:???
■各種仕様 (続き)
◆ 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
0006Name_Not_Found
垢版 |
2018/03/06(火) 19:43:02.59ID:???
>>1
有能。
以降lodashもunderscoreも禁止。
0007Name_Not_Found
垢版 |
2018/03/06(火) 20:56:07.11ID:???
ただ単に禁止と書き連ねただけでは原理主義みたいで気持ちが悪い
もしくは喧嘩を売っているようにも見える
きちんとテンプレの体裁を成すくらいの文量で
これまでの経緯と、このスレではそう言った質問・回答を扱わない件、
そしてライブラリ用質問スレへのリンクくらいは無いとね

ただ単にどっかの誰かが一言禁止だ!と言ってるだけで
済んだ気になってるとそれはただ荒れる元になる
0008Name_Not_Found
垢版 |
2018/03/06(火) 21:01:30.74ID:???
ということでjQuery, lodash, underscore解禁
0011Name_Not_Found
垢版 |
2018/03/07(水) 03:27:34.37ID:???
改竄前に戻ってるのか戻ってないのかよくわからんテンプレだが
取りあえずいつもの荒らしの立てたスレではないのか
0012Name_Not_Found
垢版 |
2018/03/07(水) 08:34:04.49ID:???
DOMの質問も禁止な
純粋なjavascriptのみのスレ
0013Name_Not_Found
垢版 |
2018/03/07(水) 10:29:55.27ID:???
右クリックしても右クリックメニューがでないで広告サイトに飛ばされるサイトがあるんだけど
どうやったら解除して右クリックメニュー表示できますか?
0014Name_Not_Found
垢版 |
2018/03/07(水) 10:31:08.36ID:???
javascriptをoffにすればメニュー表示できる
0015Name_Not_Found
垢版 |
2018/03/07(水) 14:07:29.71ID:???
jqueryで、選択された要素の中に指定した要素が含まれているかを調べるのは
どうやればいいのでしょうか?
findかと思っていたのですが、findは子孫要素まで検索対象に含められると分かりました
子孫要素まで調べたくはありません
0016Name_Not_Found
垢版 |
2018/03/07(水) 14:24:45.76ID:???
.childrenを探せばいいじゃん
0017Name_Not_Found
垢版 |
2018/03/07(水) 14:49:46.61ID:???
よくわからないんだけど
jqueryで、ってjqueryを使えるということは普通のjsも使えるわけで

・普通のjs回答でもいいしjquery回答でもいい
・可能な限り最大限jqueryを使うべき
・jqueryで使えるようになるもの以外は使ってはならない

jqueryを認めるとどれなのか曖昧になって面倒ではないか
0018Name_Not_Found
垢版 |
2018/03/07(水) 15:00:41.84ID:???
>>17
意味不明です
jqueryでやる方法を聞いてるんですよ
アスペですか?
0019Name_Not_Found
垢版 |
2018/03/07(水) 15:05:31.33ID:???
childrenって子要素を取得するメソッドですよね
そういう意味ではなくて、
たとえば
$('.hoge')
で選択された要素集合の中に、あるDOM要素が含まれているか調べたい、というような場合です
0020Name_Not_Found
垢版 |
2018/03/07(水) 15:29:36.35ID:???
意味不明です
jqueryでやる方法を聞くならjqueryスレがあるんですよ。
アスペですか?
0021Name_Not_Found
垢版 |
2018/03/07(水) 15:30:53.22ID:???
>>19
質問の仕方が悪い
何のDOM要素なんだよ
0022Name_Not_Found
垢版 |
2018/03/07(水) 16:45:18.98ID:???
>>20
jQueryは何で書かれているというのですか?
これ以上言う必要はありませんね?

>>21
任意のDOM要素です
isメソッドで確かめられると分かりました
要素集合の中に一つでも条件に合致しているものがあればtrueになるのがisメソッドだったのですね
要素が一つの時にだけ使えるものと勘違いしていました
0023Name_Not_Found
垢版 |
2018/03/07(水) 16:48:32.48ID:???
children からの list で for すればいいとおもうけど
javascript構文は禁止なのかw
0025Name_Not_Found
垢版 |
2018/03/07(水) 16:52:59.78ID:???
>1
hcn zaqなんてらってうrlのリンク全部きれてるじゃねぇか
0026Name_Not_Found
垢版 |
2018/03/07(水) 16:57:44.27ID:???
>>23
ですからchildrenは関係ありません
それにisメソッド一つで済むのに何故わざわざループ処理を書くのですか?
そういう処理をわざわざ書きたくないからjQueryを使っているのに。
分かりますね?
0027Name_Not_Found
垢版 |
2018/03/07(水) 17:12:32.63ID:???
>>26
検索すれば分かる話をなぜ質問するんだ?
検索したくない。数行のコードも書きたくない。
らくしたいだけ乞食jQueryバカは死ね
わかりますね?
0028Name_Not_Found
垢版 |
2018/03/07(水) 17:14:13.20ID:???
提案
jQureryは荒れることが判明したので分離しよう。
0029Name_Not_Found
垢版 |
2018/03/07(水) 17:31:57.77ID:???
たかだか数行
減らすため
数千バイト
ロードする

これ七五調って言うんだっけ??
0030Name_Not_Found
垢版 |
2018/03/07(水) 18:35:46.88ID:???
指定した子要素が含まれているかどうかといっても
className === 'fuga'な子要素とか、.dataset.hoge === 1 な子要素とか、複数の組み合わせとか、
あと含まれているかどうかをどう使いたいか、とかいろいろあるからなあ

「選択された要素」が t で、含まれているときに特定の変数をtrueとしたい、だけなら
var result = function(){
for( var ch=t.children, i=ch.length-1; 0<=i; --i) if( 条件式 ) return true;
})();
が正解な気がするんだけど
0031Name_Not_Found
垢版 |
2018/03/07(水) 18:41:38.22ID:???
例えば、何かの本のようなレイアウトがしたいんです
という質問があった時、
ひょっとしたらjQueryやそのライブラリを使った霞程度のヒントを教えてくれるかもしれないのがjQueryスレ
そしてCSS HoudiniのLayout APIやPaint API勉強すれば自由にできるよ、というのがここ
まれに数百行のコードを貼っつける猛者が現れて荒れることがあるかもしれない

でも質問者にとって一番必要なのは、どっかの馬の骨達が作ったHoudiniフレームワークの海から
超特化超マイナーなライブラリを拾い上げて、それがきちんと使えるものであることを保証し
無に等しいドキュメントの代わりにコードを解析して使い方を手取り足取り解説してくれる存在

今のWebに不足しているところはそこ
最低でもHoudini系のパッケージマネージャが求められるが、
質問スレも、勉強の為のここと、有名ライブラリの為のあそこと、もう一つ居る
じゃないと質問者が無駄骨を折ってスレが荒れるだけになる
0033Name_Not_Found
垢版 |
2018/03/07(水) 18:47:57.87ID:???
cssもしっかり勉強して意味と挙動を把握しておかないと微調整必要になったとき詰むからな
0034Name_Not_Found
垢版 |
2018/03/07(水) 18:55:50.20ID:???
jQueryなんでこんなきらわれてるん?(´・ω・`)
0035Name_Not_Found
垢版 |
2018/03/07(水) 19:30:06.90ID:???
jQuery,lodash, SASS, Ruby など、ライブラリは禁止とか、言ってる奴は、荒らし。
こいつは、色んな板を荒らしてる

無視しろ
0036Name_Not_Found
垢版 |
2018/03/07(水) 19:34:05.06ID:???
SASS, Rubyがライブラリとかさすがキチガイお里が知れるw
0037Name_Not_Found
垢版 |
2018/03/07(水) 19:45:02.79ID:???
>>31
>質問者が無駄骨を折って
質問者が無駄骨をおるって
そんなの当たり前やろ。
無駄骨折るのは回答者やろ?
0038Name_Not_Found
垢版 |
2018/03/07(水) 19:51:31.84ID:???
>>34
料理スレに電子レンジ調理の話しかしない集団がいたら荒れるのは避けられないだろう
0039Name_Not_Found
垢版 |
2018/03/07(水) 19:52:18.85ID:???
>>34
jQuery厨は不思議とカスが多いので
深層心理にjQuery自体がカスという意識が広まってる。
0042Name_Not_Found
垢版 |
2018/03/07(水) 20:54:21.70ID:???
そんなところ行ったらみんな達人だからマウント取れない
0044Name_Not_Found
垢版 |
2018/03/07(水) 21:28:46.71ID:???
こいつは、色んな板を荒らしてる奴だから、無視しろ

ソースコードを書いていない奴は、基本、荒らしだから、無視でOK
0045Name_Not_Found
垢版 |
2018/03/07(水) 21:42:47.86ID:???
jqueryの質問するなら英語勉強してstackoverflowいけってバッチャが言ってた
0046Name_Not_Found
垢版 |
2018/03/07(水) 22:34:24.17ID:???
>>45
stackは質問しても結構なスピードで流れていくからね
5chのほうがかえってレスつく
stackは検索用だね
jQurey厨は英語力も検索力もないからこっちくるんだろうけど。
0047Name_Not_Found
垢版 |
2018/03/07(水) 23:14:55.13ID:???
>>15
> jqueryで、選択された要素の中に指定した要素が含まれているかを調べるのは
> どうやればいいのでしょうか?
> findかと思っていたのですが、findは子孫要素まで検索対象に含められると分かりました
> 子孫要素まで調べたくはありません

まあいくつか有るが、こういうHTMLの時

<div id="top">
 <div class="stranger"></div>
 <div class="child">
  <div class="descendant"></div>
  <div class="descendant"></div>
 </div>
 <div class="child">
  <div class="descendant"></div>
  <div class="descendant"></div>
 </div>
 <div class="stranger"></div>
</div>

こんな所かな(attrは参考として書いただけで実際には必要ない)

$('#top').has('> .child').attr('id') // => top
$('#top').find('> .child').attr('class') // => child
$('#top > .child').attr('class') // => child
$('#top').children('.child').length // => 2
$('#top').children().is('.child') // => true
0048Name_Not_Found
垢版 |
2018/03/07(水) 23:35:22.19ID:???
jQueryの話やめてくれ
javascript勉強スレでライブラリの話するの気持ち悪い
ライブラリなんて自分で調べるのぜんていだろ
あまたあるライブラリの質問されても困るわ
0049Name_Not_Found
垢版 |
2018/03/07(水) 23:45:55.08ID:???
そういう面白おかしい反応するから
余計からかわれるなんてこともあるかも
0050Name_Not_Found
垢版 |
2018/03/07(水) 23:57:28.11ID:zYT4/KsP
からかってるつもりなら
どうでもいいよ
jQuery厨はけっきょく嵐ってこと自白してるだけだしwww
0051Name_Not_Found
垢版 |
2018/03/08(木) 00:10:10.88ID:???
いいかたが悪かったかな
ストレートにいうと
構うから居つく
ということを言いたかった
0052Name_Not_Found
垢版 |
2018/03/08(木) 00:13:58.48ID:???
構わないでもキチは居着く
キチが居なくなるのは飽きるか完全に無人になるかどっちかだけ
0053Name_Not_Found
垢版 |
2018/03/08(木) 00:24:58.41ID:???
結局最終的には英語で海外の情報を取得できないとプロにはなれないか・・・
0055Name_Not_Found
垢版 |
2018/03/08(木) 03:24:28.57ID:???
>>13-14
F12 開発者ツールを起動して、1行ずつデバッグ実行するとか。
ソースコードは変更できないのか?

preventDefault()・stopPropagation() などで、
クリックイベントのバブリング (伝播)を止めているのかな?

ブラウザの自動操作なら、Selenium WebDriver で、
登録されたイベントリスナーを削除するとか、
onClick() の内容を上書きするとか
0056Name_Not_Found
垢版 |
2018/03/08(木) 03:40:19.68ID:???
>>55
無駄な方法だな

>>13
普通にブラウザのプラグインを使えばいい
0057Name_Not_Found
垢版 |
2018/03/08(木) 03:49:34.95ID:???
google spreadsheetってhtml css jsだけで作られてるのかな?
勉強としてスプレッドシートもどきをhtml css jsだけでつくってみたいけどなんかそういうサイトある?
0058Name_Not_Found
垢版 |
2018/03/08(木) 11:03:22.28ID:???
プログラミングを趣味でやるならjavascriptっていわれたんですが本当ですか?
プログラミングの知識はまったくないのですが
いまなんとなくjavascriptかpythonかphpでまよってます
0059Name_Not_Found
垢版 |
2018/03/08(木) 11:56:18.22ID:???
趣味で何をやるのかによる
0061Name_Not_Found
垢版 |
2018/03/08(木) 13:31:52.54ID:???
>>58
決定版は無い
webに興味あるならJS、そんなでも無いならpython
0063Name_Not_Found
垢版 |
2018/03/08(木) 14:42:46.85ID:???
言語としては嫌いだけどユーザーベースの大きいアカデミックでもインダストリーでも普通に使われる質のよいライブラリが豊富に揃ってるので道具としてはよい。
0064Name_Not_Found
垢版 |
2018/03/08(木) 16:23:50.89ID:???
とりあえず手を出してみたいだけならjsでもpyでもphpでもなんでもいい
perlじゃなけりゃ
0065Name_Not_Found
垢版 |
2018/03/08(木) 22:00:48.25ID:???
この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

たのしいから、先に読まないと、みんなので苦戦する

JS は、言語仕様がクソだから、その後で良い

(易しい) Ruby → Python → JS (クソ)
0066Name_Not_Found
垢版 |
2018/03/08(木) 22:11:04.93ID:???
>>65
どうクソなのですか?
こいつ糞だなぁ。こういうとこがまじクソだなぁ。
と思うところを簡単に教えて下さい

自分は趣味だけでやるなら、javascriptは身近だからいいよとススメられたのですが
拡張機能も気軽に自分で作れるし、既存のサイトもすきなように走査できるからと。
0067Name_Not_Found
垢版 |
2018/03/08(木) 22:44:31.73ID:???
クソと言うのはソース表記上メソッド呼び出しとプロパティの違いが分からないようなことかな?
関数の取り回しがしづらいったりゃありゃしない。
proc、block、lambdaとか何の冗談仕様だありゃw
0068Name_Not_Found
垢版 |
2018/03/08(木) 23:03:06.59ID:???
身近な面はあるけどバッチ書いて定期ファイル操作とかできないよね
0070Name_Not_Found
垢版 |
2018/03/09(金) 01:03:23.45ID:???
無知識者にnode勧めるぐらいならphpやpythonの方がずっと健全では・・・
この場合一番健全なのはc++だと思うけど
007165
垢版 |
2018/03/09(金) 01:34:52.15ID:???
(易しい) Ruby > Python >> JS >>> PHP (クソ)

Ruby, Python は、バッテリー同梱(batteries included)。
最初から標準ライブラリに、かなり使いやすいものが入っているけど、

JSは、全く逆の思想。
ほとんど何も入っていないから、jQuery, Lodash などがいる

JSの機能だけで作ると、面倒くさくてたまらない。
バグが多くなる

Rubyは、可読性が高いから、ほとんどバグを作らない。
ビジネスロジックがそのまま、コードに表れる

とにかく、勉強時間が掛からないから、初心者はRubyから、やるべき。
他の言語から始めると、時間が掛かる
0072Name_Not_Found
垢版 |
2018/03/09(金) 01:41:25.14ID:???
>>71
そういう論点でいくとphpはクソじゃなくなりそうだが
というかruby推奨は
0073Name_Not_Found
垢版 |
2018/03/09(金) 01:46:46.85ID:???
じゃ、PHP勉強してる俺と糞まみれになろうや
0074Name_Not_Found
垢版 |
2018/03/09(金) 01:46:51.04ID:???
お前がバグ量産してるのは言語のせいじゃねーべ
0075Name_Not_Found
垢版 |
2018/03/09(金) 11:33:41.90ID:???
rubyの可読性は高くない。
pythonの「書きにくく読みやすい」と比較して「書きやすく読みにくい」と言われる。
そうなってしまう理由はたくさんあるが、ひとつのことをするのにやり方がたくさんあるというperlとかいう糞言語の信条をそのままパクってしまってることがひとつ。

またよくも悪くも設計が完全なオブジェクト指向にこだわっており、
javascriptなら関数ひとつで実現できることがblock、proc、lambdaと酷い有り様になっている。defで簡単に定義できまーすとかまさに初心者騙しもいいとこ。

また、流行り機能の無節操な取り込みが酷い。記号が足りなくなり、例えばオプショナルチェーンは他言語が?.のところrubyでは&.である。phpで文字列結合が"foo"+"bar"ではなく"foo"."bar"であるようなキモさ。

あとpythonと比べ多分野の優れたライブラリがない。あってもメンテされてない。作ってるやつが実用主義ではなく趣味だから。rubyでもできる!って言いたいだけ。よくも悪くもweb分野、しかもrails使うというやつ以外にはおすすめしない。
事実上rails専用言語。railsのDSLとして以外に存在価値はない。
初心者に勧めるなんてとんでもない。
0076Name_Not_Found
垢版 |
2018/03/09(金) 11:52:22.49ID:???
なんでperlはどこででもクソといわれてしまうん?
0077Name_Not_Found
垢版 |
2018/03/09(金) 12:29:32.77ID:lDqYKkmc
他人のソース引き継いでなんじゃこれってなる構文にクソってなるのが多い
シェルでワンライナーで使うなら今でもpythonよりいいんだけどね
0078Name_Not_Found
垢版 |
2018/03/09(金) 14:44:59.34ID:???
>例えばオプショナルチェーンは他言語が?.のところrubyでは&.である。phpで文字列結合が"foo"+"bar"ではなく"foo"."bar"であるようなキモさ。

これ、お前が慣れてる手法以外はクソって言いたいだけだな
0079Name_Not_Found
垢版 |
2018/03/09(金) 15:09:40.45ID:h9Dx26dw
JavaScript本格入門〜モダンスタイルによる基礎から現場での応用まで
http://gihyo.jp/book/2016/978-4-7741-8411-1

↑を読んだのですが次に

初めてのJavaScript
https://www.oreilly.co.jp/books/9784873117836/



JavaScriptパターン――優れたアプリケーションのための作法
https://www.oreilly.co.jp/books/9784873114880/

のどっちをようむか迷っています。


「初めての」は出版が最近なので最新の仕様に基づいて書かれているようだけど
一通り「本格入門」やったあとにやる必要があるのか、
「パターン」は古いけれどここでススメられた本だけど、アマゾンレビュー見ると上級者向けというレビューもあり
まよってます。

できれば3冊とも読んだことある人からのアドバイスあったらお願いします。
読んだことなければその旨示していただけると有り難いです。

ちなみにJavaScriptはじめて1,2ヶ月です。
0080Name_Not_Found
垢版 |
2018/03/09(金) 15:13:04.82ID:???
>>78
75じゃないけど、オプショナルチェーンに関してはswiftも?.で、&.なんて使ってるのはrubyだけ
内容が空値でないか?のハテナと、メソッドチェーンのピリオドの組み合わせが一番可読性が高いのよ、この演算子だけはなんでこれなのか正直理解できないぐらい
0081Name_Not_Found
垢版 |
2018/03/09(金) 15:37:20.10ID:???
>の組み合わせが一番可読性が高いのよ

(俺にとっては)一番可読性が高い、ですね
0083Name_Not_Found
垢版 |
2018/03/09(金) 16:15:54.14ID:???
>>80
直接的には識別子に?や!が使えるという言語仕様のせいだね。
if文とかif foo.bar? buz endみたいな書き方実際よくされてる。
そういう事情があっても&.はねーわwwwとか思っちゃうが。
0084Name_Not_Found
垢版 |
2018/03/09(金) 16:22:18.90ID:???
>>79
全部読めばいいのと違うの
順番なんて気にしない
0085Name_Not_Found
垢版 |
2018/03/09(金) 16:22:29.44ID:???
俺が慣れ親しんだ記法じゃないからクソ
以外にないの?
0087Name_Not_Found
垢版 |
2018/03/09(金) 18:31:28.45ID:???
俺が順応できなかったのは言語仕様がクソだからだ
追加入りました
0089Name_Not_Found
垢版 |
2018/03/09(金) 19:44:08.39ID:???
>>87
それ突き詰めちゃうとアセンブリ書け、になっちゃうぞ。
簡単なことが簡単に書ける言語が初心者向けの良い言語、という尺度があっていい。
Rubyはオタク向けの言語だよ(Railsで使わざるを得ない人は除く)
「は〜んこんなエレガントなコード書けたオレって天才〜」って言っていつもシコってるもの。
なおそのエレガント()なコードは初心者には読めないw
初心者にRuby薦めるバカは自分がその初心者使ってキモチ良くなりたいだけで初心者のことなんてなにも考えてない。
0091Name_Not_Found
垢版 |
2018/03/09(金) 19:49:00.72ID:???
無目的初心者にはC++勧めればいい
それで解決
0092Name_Not_Found
垢版 |
2018/03/09(金) 21:04:17.33ID:???
>>79
初めてのJavaScript 第3版、オライリー、2017

この本は、Ruby, Python とか、10年・数言語以上開発している人向け。
そのレベルの人が、この1冊で軽く、数十時間は掛かる。
初心者が読んでも無駄

JavaScript 第6版、2012、David Flanagan

Google などの開発者の机に必ず置いてある、この本と同じ。
東大とか、IQ 150 レベルの人が読んで、うんうん良い本だねって言う本

死にたいのなら、読みなさい!
0093Name_Not_Found
垢版 |
2018/03/10(土) 00:21:36.85ID:9Txzk9V/
>>92
何読めば良いのでしょう?
0094Name_Not_Found
垢版 |
2018/03/10(土) 00:25:05.30ID:???
まずはどちらも読まずに
とりあえずなにか作ってみてから
パターン読んで
またなにか作って
オライリー読むとか
0095Name_Not_Found
垢版 |
2018/03/10(土) 00:43:57.62ID:???
パターン云々を考えたり本がどうのこうのって
いろんなものを自分で作って引き出しができたあとにすべきだな

何を実現するのに何が必要かわからない状態で何を学べるというのか
0096Name_Not_Found
垢版 |
2018/03/10(土) 15:37:18.99ID:???
イベントハンドリングをデレゲートする場合、
documentで受けるのが一般的だと思います
documentよりwindowの方が上位にありますが
なぜwindowで受けずにdocumentで受けるのでしょうか?
0097Name_Not_Found
垢版 |
2018/03/10(土) 15:43:54.71ID:???
窓で受けたらガラスが割れちゃうだろ
0098Name_Not_Found
垢版 |
2018/03/10(土) 16:08:59.03ID:???
>>96
別にdocumentじゃなくていいぞ?
実際に発生した要素の上位の要素であればなんでもいい
0099Name_Not_Found
垢版 |
2018/03/10(土) 16:26:07.08ID:???
というかなんでもdocumentにしてしまったらまずい局面もあるだろう
一般的と言ってはいけないのでは
0101Name_Not_Found
垢版 |
2018/03/10(土) 16:41:20.38ID:???
コンソールで
document
window
ってそれぞれうって中身を見てみればいい。
0102Name_Not_Found
垢版 |
2018/03/10(土) 16:52:01.77ID:???
イベントハンドリングをデレゲートする、ってどういうこと?
0103Name_Not_Found
垢版 |
2018/03/10(土) 17:06:15.62ID:6Oi/2BC2
>>102
たとえば<button>で起きるイベントをdocumentで管理する
0104Name_Not_Found
垢版 |
2018/03/10(土) 17:08:40.35ID:???
>>102
ある要素のイベントをその親のイベントハンドラで受け取って処理すること
子が増減するたびに新しくイベントハンドラを作らなくて良くなる

その反面documentみたいに、いろんな要素からのイベントを受け取ってしまう場合は
どの要素から発生したイベントなのかをチェックする必要があり面倒くさい
なのでdocumentで受け取るなんて普通するか?
0105Name_Not_Found
垢版 |
2018/03/10(土) 17:09:19.57ID:???
>>103
それだと<button>以外の要素からのクリックとかも
受け取ってしまいますよね?
0106Name_Not_Found
垢版 |
2018/03/10(土) 17:11:56.30ID:???
<input typer="button" id="name">

--
document.getElementById("name").addEventListener("click", function)

こゆこと?
これを
イベントハンドリングをdocumentでうけてデレゲートする
って表現するの?
0107Name_Not_Found
垢版 |
2018/03/10(土) 17:13:09.02ID:???
タイプタイパータイペストwwwww
0110Name_Not_Found
垢版 |
2018/03/10(土) 17:18:22.18ID:???
document.addEventListener("click", function)
0111Name_Not_Found
垢版 |
2018/03/10(土) 17:19:23.93ID:???
>>104-105
発火した要素やparentNode再帰で、idやclassNameを見て切り分けたりする
jqueryのclassNameでのハンドリングがdocumentじゃなかったっけか

当然、<button>の中に<span>が入ってたりすると複雑化したり処理が多くなるが
どっちかっていうと
バブリングを踏まえて処理組んでたり
時系列的に同時に走られるとまずかったり
バブリング停止が混ざると厄介だったり、というほうの影響が大きいと思う

>>109
<div id="p1"><button>b1</button><button>b2</button></div>

document.getElementById('p1').addEventListener( 'click', function(){
if(e.target.tagName==='button'){ /* proc */ }
}, false );

みたいな
0113Name_Not_Found
垢版 |
2018/03/10(土) 17:21:17.13ID:???
また髪の話してる・・・
0114Name_Not_Found
垢版 |
2018/03/10(土) 17:25:25.34ID:???
プログラミング業界ではdelegateは移譲を意味する
一般的な用語でおそらくインターネットが普及する以前から使われてきた用語だけど、
今の話の文脈のdelegateはjQueryが発端なのかな?

jQueryでは1.4.2からdelegateというこのイベントを親で受け取る機能が追加された
(他にも似たようなliveというメソッドがあったがこれらはイベント関連全てを扱うonに統合された)
果たしてこのjQueryのdelegate以前から使われていたのかどうか

ちなみにjQueryだと>>111のような面倒くさいことは必要なく

$('button').on('click', function() {・・・}) だと
$(document).on('click', 'button', function() {・・・}) と書き換えるだけでいい
多くの場合イベントハンドラの中身はそのまま使える、
またdocumentの代わりにbuttonの上位要素でも良い
0116Name_Not_Found
垢版 |
2018/03/10(土) 17:26:43.62ID:???
平日家に届く荷物

通常: 自分が家にいないと受け取れない
(再配達あるが例ということで)

デリゲート: 平日家にいる家族に自分宛荷物を受け取っといてくれと頼んどく

現実だといちいち頼まなくても家族が勝手に取っといてくれるだろうがコンピューターは融通がきかないのだ。
余計なことしないとも言う。勝手に開けられてて死亡したことあるしなw
0117111
垢版 |
2018/03/10(土) 17:28:54.32ID:???
>>111のfunctionの引数指定 (e) が抜けてた
まあ上位が取って、下位にイベントを当てる、みたいな雰囲気を理解してもらえればいい

プログラミング的にはできるだけ影響を少なく直上の要素などで受けるのが健全
個別にidをつけたり個別にaddEventListenerしたり、としなくてもいい等の利点がある
といっても高尚なパターンとかじゃなくて
誰でも思いついてやってることだと思う
0118Name_Not_Found
垢版 |
2018/03/10(土) 17:32:12.24ID:???
なんでもdocumentで受けるのは
グローバル変数使い放題みたいな印象があるな
0119Name_Not_Found
垢版 |
2018/03/10(土) 17:32:30.35ID:???
それよりliが動的に足し引きされるやつとかの対応だろ
動けばいいや派はここで積む
0120Name_Not_Found
垢版 |
2018/03/10(土) 17:35:18.21ID:???
>>119
そりゃcreateElementするときに個別にaddEventListenerしてからappendChildすれば済む
問題が出るのは、innerHTML操作しかできないわからない層ぐらいじゃね
0121114
垢版 |
2018/03/10(土) 17:38:01.52ID:???
書き忘れたが、今の話のdelegateがjQuery由来ではないのか?というのと
もう一つ、なんでもdocumentというのは、liveメソッドが原因じゃないのか?ということ

jQuery 1.4.2で追加されたdelegateは親要素を指定することができるのだが、
それよりも前に1.3から追加されたliveは親要素は指定できずにdocumentになっていた
(これがわかりづらいという意見があって最終的にonに統一されたのだけれども)

$( "button" ).live( "click", function() {・・・}) だと
buttonではなくdocumentで受け取るようになっていたわけだ
0122Name_Not_Found
垢版 |
2018/03/10(土) 17:41:11.50ID:???
>>121
その辺考えるとjqueryは
documentへの委譲を理解せず使ってバグを生み出すコーダーを量産してたとも考えられるな
0123Name_Not_Found
垢版 |
2018/03/10(土) 17:49:36.60ID:???
>>122
でも当時はdelegateなんて考えなかったからね
だからこそjQueryは内部の処理を隠蔽して
魔法のような機能をしてますみたいな感じだった

また移譲の認識を広めたのもjQuery 1.7から追加されたonメソッドなわけで
ウェブプログラマとDOM APIにかなりの影響を与えたライブラリだな

その数年後にDOM APIにようやくセレクタを使ったアクセスや
比較方法が追加されたわけだしね
0124Name_Not_Found
垢版 |
2018/03/10(土) 17:56:16.76ID:???
>>120
動的に要素いじってる奴とイベント設定したい奴が同じならそうだが…
ライブラリがやってる場合とかなかなかそうもいかない
0125Name_Not_Found
垢版 |
2018/03/10(土) 18:04:50.18ID:???
>>124
あー、言われてみれば確かに
ライブラリ側で受信と共に自動生成されますー、とかあるわ納得
そりゃ親に当てるやりかた思いつけなくて詰むな
0126Name_Not_Found
垢版 |
2018/03/10(土) 18:05:22.30ID:???
>>96
イベントバブリングを少しでも減らすためと思ってる
document.bodyにしないのは、HTMLタグの<body>が省略されてたり、2つ以上書かれてたりすると、
Javascript側のdocument.bodyが不定になるっぽいから

>>111
jQueryのon()を見た感じでは、指定された要素そのものにaddEventListener()してるっぽい
さすがにdocumentだけで全部を処理していると、targetの管理・分岐が大きくなりすぎて処理が重くなると思う

<button><img></button>
という構造の場合、<img>でイベントが発生した場合にevent.targetは<img>になるから、parentNodeをたどって、<button>に内包されてるか確認しなきゃいけない

jQueryもparentNodeをたどってる
第三者のライブラリを使うと自分で書く必要がなくなるというだけの話
0127Name_Not_Found
垢版 |
2018/03/10(土) 18:08:06.15ID:???
>>126
指定された要素そのものにaddEventListenerしているということは
その後に追加された同名classNameを持つ要素に対応できないということになるんだが
それとも、要素追加を監視して逐一リスナ貼り付けてるのか?
0128Name_Not_Found
垢版 |
2018/03/10(土) 18:10:11.74ID:???
>>126
> jQueryのon()を見た感じでは、指定された要素そのものにaddEventListener()してるっぽい

そうだよ。こっそりdocumentになっていたのは古いliveメソッドの話

だからdocumentで受け取るなら
$(document).on('click', 〜
とする。

そして本来の要素は第二引数に、このように書く
$(document).on('click', 'button', 〜


親要素で受け取るという考え方が広まったので、普通に親イベントで受け取る
だけど、簡単に本来受け取りたかった要素 'button' を指定するのは引数一個と簡単で、
さらにthisは本来受け取りたかった要素になっている
0129Name_Not_Found
垢版 |
2018/03/10(土) 18:11:00.64ID:???
>>127
classNameで指定されたらclassNameでチェックすればいいだけでしょ
0130Name_Not_Found
垢版 |
2018/03/10(土) 18:12:10.77ID:???
>>127
> 指定された要素そのものにaddEventListenerしているということは
> その後に追加された同名classNameを持つ要素に対応できないということになるんだが

だから普通にdocumentにon(addEventListener)するんだってばw
そしてonメソッドの第二引数に「指定された要素」を指定することで
まるで「指定された要素」そのものにaddEventListenerしたかのように
違いを吸収してくれている
0131Name_Not_Found
垢版 |
2018/03/10(土) 18:13:01.00ID:???
>>129
> classNameで指定されたらclassNameでチェックすればいいだけでしょ
単純なclassNameだけで判別できる場合ならね
0132Name_Not_Found
垢版 |
2018/03/10(土) 18:14:33.97ID:???
>>131
その結果がjQueryの複雑なチェック方法なのでは
0133Name_Not_Found
垢版 |
2018/03/10(土) 18:22:21.21ID:???
documentをリスナ追加対象にすれば重くなる
最小限の親要素をリスナ追加対象にすればその外に生じた要素に対応できない
対象を考えなきゃいけないのはjqueryなしと変わらない
どこにリスナが追加されるかを意識して使わないといけないのはjqueryなしと変わらない
なんでもかんでもdocumentに追加していては問題が生じる危険がある
いずれにしてもjqueryを使わず普通にできる

なるほど
0134Name_Not_Found
垢版 |
2018/03/10(土) 18:26:59.86ID:???
Jqueryは結局のところ初心者向けじゃないのかな

JQ無しでjs仕様がわかっててJQ無しでコード書けててJQの挙動がしっかり把握できてる人
が一行一文字でも書く文字減らしたいために使う
0135Name_Not_Found
垢版 |
2018/03/10(土) 18:44:05.61ID:???
DOMはJavaScript初心者には難しすぎる
jQueryはJavaScript初心者にちょうどいい
0136Name_Not_Found
垢版 |
2018/03/10(土) 20:12:56.49ID:???
jQuery のソースコードには、IE9 なら、Android 4 ならとか、数十の分岐処理がある

JS で作る人は、これらの分岐処理でバグるから、正常に動作させるのに、10年以上掛かる

例えば、素のJSでは、要素の削除も、一旦その要素の親を取得してから、
親から見て、子供を削除する

var elem = document.getElementById('abc');
elem.parentNode.removeChild(elem);

こういうように書かないと、IE11 では動かない。
だから一々、どのブラウザでは動かないとか、頭を抱える

素のJSで作っている奴は、調べものばっかりして、頭を抱えているけど、
バグの多い製品しか作れないw

基本、調べものばかりしている奴は、コーディングの練習にもならないし、
時間を浪費して、上達しないから最悪
0137Name_Not_Found
垢版 |
2018/03/10(土) 20:17:15.01ID:???
グローバル変数相当に名前空間とクロージャそれぞれどういう長所短所ある?
前者はその都度MyApp.つけなくてはならず

ここの皆はどっち使ってる?
0138Name_Not_Found
垢版 |
2018/03/10(土) 20:24:02.46ID:???
どっちかしか使わないなんてない
名前空間といっても要するに1つのオブジェクトに押し込めるかどうかだけだし
0139Name_Not_Found
垢版 |
2018/03/10(土) 20:47:24.77ID:???
>>136
今時趣味で作るならモダンブラウザオンリーで十分だと思うよ
仮に仕事でIE対応が必要だとしても、考え方が反対だと思う
やっぱり、対応方法はわかってるけど、自作するのは面倒くさい
そこで効果を理解してるライブラリを使うというのが正常だと思う

jQueryを何の為かどういう仕組みか分からず使ってる状態っていうのは
絶対に困る場面が出るし、jQueryの良さを引き出せないよ
0140Name_Not_Found
垢版 |
2018/03/10(土) 20:51:51.34ID:???
今の時代は便利なものをどれだけ使いこなすかのほうが重要になっている
0141Name_Not_Found
垢版 |
2018/03/10(土) 20:58:50.02ID:???
jQueryあにき今日も全開っすね( ´∀`)bグッ!
0142Name_Not_Found
垢版 |
2018/03/10(土) 21:00:09.08ID:???
LSの機能使いたいけど、非対応ブラウザにも対応させたいけど、自分で書くのめんどい!人限定ライブラリ
0144Name_Not_Found
垢版 |
2018/03/10(土) 21:47:48.46ID:???
>>132
> その結果がjQueryの複雑なチェック方法なのでは
何が複雑なの?
0146Name_Not_Found
垢版 |
2018/03/10(土) 22:34:40.91ID:???
>>145
使い分けという時点でなんか違う気がしないでもないんだけど
・どう使いたいか・あとから変更したいかどう変更したいか
・状態を持たせたいか持たせるときどんな感じで使うのか
・1個だけあればいいか複数複製したいかnewしたいのかコンストラクタ次第で色々変えたいか
とか色々ある、んだけど

でも手法全体は変えないで後から変更調整を
したいときでもわりとどうにでもなるよね
0147Name_Not_Found
垢版 |
2018/03/10(土) 23:29:09.80ID:???
>>142
それはただのポリフィル
jQueryはあくまでjQueryワールドを提供するだけ
0148Name_Not_Found
垢版 |
2018/03/11(日) 11:21:14.91ID:Gy/uaNyu
グローバル変数を1つ宣言するのと
関数を1つ宣言するのとでは
グローバルの汚染度は変わらないですよね?
0149Name_Not_Found
垢版 |
2018/03/11(日) 11:37:34.87ID:???
>>148
console.log(globalOsen?'汚染されてる!':'汚染されてない');
var globalOsen = 'キャラメル';

console.log(globalOsen?'汚染されてる!':'汚染されてない');
function globalOsen() {
return 'キャラメル';
}
比べてみなよ。
console.log(globalOsen?'汚染されてる!':'汚染されてない');
var globalOsen = function() {
return 'キャラメル';
};
なら変わらないけど。
0150Name_Not_Found
垢版 |
2018/03/11(日) 12:03:35.32ID:???
なんで汚染だけローマ字なんだよ
グローバルもローマ字にしろや
0152Name_Not_Found
垢版 |
2018/03/11(日) 12:11:47.07ID:???
こんな式を見たのですが、これは何ですか?
var data = ('' == 0 ? '' : '');
0153Name_Not_Found
垢版 |
2018/03/11(日) 12:19:37.29ID:???
いいえ、あなたはそんな式を見ていません
0155Name_Not_Found
垢版 |
2018/03/11(日) 12:25:35.10ID:???
>>150
そんなことしたらキャラメルが意味不明になるじゃん
0156Name_Not_Found
垢版 |
2018/03/11(日) 12:27:22.76ID:???
かんちがいしてた。グローバルをローマ字にって話かw
0157Name_Not_Found
垢版 |
2018/03/11(日) 12:29:38.91ID:???
>>149
順番が逆

var globalOsen = 'キャラメル';
console.log(globalOsen?'汚染されてる!':'汚染されてない');

function globalOsen() {
return 'キャラメル';
}
console.log(globalOsen?'汚染されてる!':'汚染されてない');
0159Name_Not_Found
垢版 |
2018/03/11(日) 12:33:33.61ID:???
>>157
お前質問読めよ。それじゃ検証にならないじゃん。
関数を宣言文で書くとホイストがあるから同じ位置に書いた変数と有効範囲=汚染範囲が異なることを示してるの。
0160Name_Not_Found
垢版 |
2018/03/11(日) 12:42:32.18ID:???
汚染ならfilthyだろ
低学歴め
0161Name_Not_Found
垢版 |
2018/03/11(日) 12:43:10.52ID:???
あんまりグローバルに関数宣言しない方がいいんでしょうか?
0162Name_Not_Found
垢版 |
2018/03/11(日) 12:43:59.55ID:???
>>160
キャラメルとかけてるさっむいギャグがわからんのか
0163Name_Not_Found
垢版 |
2018/03/11(日) 12:49:30.07ID:???
>>161
関数も変数もないよ。使うところ以上にスコープ広げるな
0164157
垢版 |
2018/03/11(日) 12:55:13.86ID:???
>>159
そういうことか
スコープだけ見てたすまん

一応、var宣言でも、未定義の変数として存在はしてるけどな
0165Name_Not_Found
垢版 |
2018/03/11(日) 13:18:09.70ID:???
var globalOsen = false;
console.log(globalOsen?'汚染されてる!':'汚染されてない');
0166Name_Not_Found
垢版 |
2018/03/11(日) 13:27:22.01ID:???
>>157
初心者で申し訳ないのですがキャラメルとはなんでしょうか?
jsの作法か何かなのでしょうか?
0167Name_Not_Found
垢版 |
2018/03/11(日) 13:59:08.64ID:???
空にDocumentFragmentに要素を追加していって、最後にそれをDOMツリーに追加する
という方法をjQueryでやるにはどうすればいいのでしょうか?
0168Name_Not_Found
垢版 |
2018/03/11(日) 14:13:06.21ID:???
×空にDocumentFragment
○空のDocumentFragment

でした
0170Name_Not_Found
垢版 |
2018/03/11(日) 14:35:10.79ID:???
>>169
見ましたが書かれていませんでした

引数を指定しなければDocumentFragmentになるんじゃないかと思って
$()
にappendしてからbodyにappendToしてみたりしましたがうまくいきません
jqueryでDocumentFragmentを作成するにはどうすればいいのでしょうか?
0174Name_Not_Found
垢版 |
2018/03/11(日) 14:53:19.28ID:???
クズめ
67 Name_Not_Found sage 2018/03/11(日) 14:50:07.36 ID:???
マヌケじゃないのでこっちにはかかない
0175Name_Not_Found
垢版 |
2018/03/11(日) 14:53:50.08ID:???
専用スレがある場合はそっちで聞いたほうが、より詳しい回答が得られることがある
0176Name_Not_Found
垢版 |
2018/03/11(日) 14:59:26.95ID:???
普通にjQueryでDocumentFragmentをappendできるんだな。
http://jsfiddle.net/hc5ED/6/

>>173を読むと場合によっては内部でDocumentFragmentが
使われるようであまり意識しないで良いのかもしれないな
0177Name_Not_Found
垢版 |
2018/03/11(日) 15:00:40.75ID:???
>>173
ありがとうございます
しかし英語ということもありよく分かりませんでした
jQueryオブジェクトを配列に入れてappendしたら
それはdocumentFragmentにされてからappendされる
ということでしょうか?
0179Name_Not_Found
垢版 |
2018/03/11(日) 15:07:37.82ID:???
>>176
$(document.createDocumentFragment())
という方法は自分もさっき思いついてやってみましたが
無理矢理jQueryを使ってるみたいな感じが若干引っかかります
ある程度抽象化した方法でdocumentFragmentを作る方法を
jQueryが提供していればいいのですが。
配列にして渡したら良きにはからうから気にするなということでしょうか
ありがとうございました
0180Name_Not_Found
垢版 |
2018/03/11(日) 15:09:59.21ID:???
>>177
多分そういうことなんじゃないかなって思うけどよくわからないね
単に複数の要素をいっぺんに追加したいだけならjQueryのメソッドで普通にできるし
正直DocumentFragmentを使うほど速度が必要なことってない。
もし本当に速度が必要ならそこだけ局所的にDOM API使うだけだし、
jQueryで明示的にDocumentFragmentを使おうって思ったことがないな
0181Name_Not_Found
垢版 |
2018/03/11(日) 15:12:59.05ID:???
>>179
> 無理矢理jQueryを使ってるみたいな感じが若干引っかかります

別にそんな事ないよ。

https://api.jquery.com/jQuery/#jQuery-element に書いてあるとおり、
jQuery関数($関数)の引数にDOM要素を使うのはごく普通のことで
よく使われる $(document) だってDOM要素を使ってる。

createDocumentFragmentで作られるのもDOM要素の一種なんだから
それはごく普通の使い方
0182Name_Not_Found
垢版 |
2018/03/11(日) 15:45:22.87ID:???
var variable = variable || 'char'; // 'char'以外でも123でもfunctionでも、あるいは2個でなく3個4個でも

この式は、どういう理屈で動いているんでしょうか?
variableの内容がundefinedだけでなくfalseになる値であっても内容が変わってしまう点はおいておくとしても

variableの内容に入りうるのがbooleanだけでないことや
||を&&に変えると右辺全体がtrueにならないと値が変更されないこと
||を&&に変えると右辺全体がtrueになるときでも&&で区切られた最後の値がvariableに入ることなど
どういう動作をするものなのか理解できません
0183Name_Not_Found
垢版 |
2018/03/11(日) 15:54:26.47ID:???
右辺が云々は、単にvariableがfalsyなら新しい値を入れることを目的にしているから
入る値の方がbooleanだったりstringなのはそれで構わないコードなんだろう
要するにその変数に対してその段階に置けるデフォルト値を設定したい意図だと思う
0186Name_Not_Found
垢版 |
2018/03/11(日) 16:03:50.28ID:???
>>185
面倒くさいんで、ソースコードどこかにアップして
0187Name_Not_Found
垢版 |
2018/03/11(日) 16:03:59.62ID:???
>>184
ああ、javascriptの論理演算子の仕様そのものがそういう仕様なんですか
論理演算の結果はboolか、それか0 or 1で返す
ものだとばかり考えていて、特殊な構文か何かかと思っていました
0190Name_Not_Found
垢版 |
2018/03/11(日) 17:44:13.35ID:???
cからして似たようなもんだった気が。
式1||式2の全体の評価結果は
式1の評価結果が0のとき式2の評価結果、
式1の評価結果が0以外のとき式1の評価結果(を直ちに返し式2は評価されない)
int a;
if (a = (3+2)||99) {
printf("%d", a);
}
結果は1ではなく5だったかと。
0191Name_Not_Found
垢版 |
2018/03/11(日) 17:54:16.75ID:???
#include <stdio.h>
int main(){
int a;
a = ( 6 + 9 ) && ( 0 || 2 ) ;
printf("%d", a); // 1
}
0193Name_Not_Found
垢版 |
2018/03/11(日) 17:59:39.61ID:???
>>192
いいってことよ
C系は原則1/0(true/true)を返すはずでphpやjavaも同仕様だったかと
理由は型どうすんの問題か
0194Name_Not_Found
垢版 |
2018/03/11(日) 18:04:01.32ID:???
true/trueってなんだよtrue/falseです
0195Name_Not_Found
垢版 |
2018/03/11(日) 18:08:48.24ID:???
>>193
k&rに0か1返すて書いてあったわ
cで仕事してたことあるのにハズカシス
0196Name_Not_Found
垢版 |
2018/03/11(日) 18:20:47.03ID:???
下のコードが構造的にどうやって動いてるかいまいちよくわからない
formElementに2つの要素いれてそれにそれぞれイベントリスナーをついかしてるんだけど
なんでそれぞれ別個に作動するの?
2つめのformElementでcanvasHeightChange()を追加するときは
formElementに2つの要素がはいってるから両方にcanvasHeightChanged()が追加されるような気がするし
関数内でも別個に認識してcanvas.heightとcanvas.width変数を変更できる仕組みがよくわからない

<from>
canvas width: <input type="range" id="canvasWidth"
min="0" max="1000" step="1" value="500"> <br>
canvas Height: <input type="range" id="canvasHeight"
min="0" max="1000" step="1" value="500"><br>
</from>

formElement = document.getElementById("canvasWidth")
formElement.addEventListener('change', canvasWidthChanged, false)

formElement = document.getElementById("canvasHeight")
formElement.addEventListener('change', canvasHeightChanged, false)

function canvasWidthChanged(e) {
var target = e.target
theCanvas.width = target.value
drawScreen()
}

function canvasHeightChanged(e) {
var target = e.target
theCanvas.height = target.value
drawScreen()
}
0198Name_Not_Found
垢版 |
2018/03/11(日) 18:47:17.08ID:???
>>196
そういう(両方に…追加されるような気が)考えを持ってるなら
なんでformElementに対して = を使ってんの、というところが気になった
0199196
垢版 |
2018/03/11(日) 18:48:19.25ID:???
formElement = document.getElementById("canvasWidth") // ここでformElementにcanvasWidthをいれる
formElement.addEventListener('change', canvasWidthChanged, false) //formeElement経由でcanvasWidthの要素にcanvasWidthChanged()を付け足す

formElement = document.getElementById("canvasHeight") //上で入れた要素をは破棄されて中身が入れ替えられる
formElement.addEventListener('change', canvasHeightChanged, false) //ここでイベントリスナをついかする

ってことかな?
formElementの変数内でイベントリスナを管理してるわけななくて
経由して各要素に追加されてるってことなのかな?
0200198
垢版 |
2018/03/11(日) 18:49:12.10ID:???
>>198
本に書いてたコードです
0202Name_Not_Found
垢版 |
2018/03/11(日) 18:52:27.62ID:???
そろそろ、本は有害、って気がしてきた
0203Name_Not_Found
垢版 |
2018/03/11(日) 18:55:51.00ID:???
その点webサイトは有益だよな!
0204Name_Not_Found
垢版 |
2018/03/11(日) 19:04:34.30ID:???
なんで本の疑問をここで聞く?
本に作者のメールアドレスなり最近ならtwitterなり連絡先が書いてあるだろ
書いた人に聞くのが一番だよ、作者自身も今後の参考になるし
0205Name_Not_Found
垢版 |
2018/03/11(日) 19:10:46.95ID:???
javascriptの疑問かいたらあかんのかいなここ
じゃあ作者に聞くから英語に翻訳してくれ
0207Name_Not_Found
垢版 |
2018/03/11(日) 21:33:26.87ID:???
>>196
変数の節約
こんなん直接著者にわざわざ聞くレベルのことではない
0208Name_Not_Found
垢版 |
2018/03/11(日) 21:57:24.80ID:???
>>207
曽言う問題じゃねぇよwww
ここはjQueryと書籍関連の質問は禁止

書籍に関する疑問→著者にきけ
jQueryに関する疑問→該当スレいけ

どっちもスレチなんですがwwwwwwwwwwwwwww

ばかはしね
0209Name_Not_Found
垢版 |
2018/03/11(日) 22:35:08.51ID:???
>>167-181
jQuery 3.1 のソースコード内で、createDocumentFragment() を2回使っている。
buildFragment() という内部関数も参照

>>182-195
(易しい) Ruby >> Python, JS, PHP (クソ)

Rubyの偽は、nil, false だけだが、
他の3つは、空配列など、様々なものが偽になる。falsy。
だから、よくバグるから、クソ言語
0210Name_Not_Found
垢版 |
2018/03/11(日) 22:37:16.49ID:???
>>209
易しいとクソは
対局に位置する概念じゃない
ネタだろうがまじでいってるなら知能相当低いなおまえ
0211Name_Not_Found
垢版 |
2018/03/11(日) 22:39:05.56ID:???
>>182
順番に真偽判断して
&& ||の真偽がけっていした時点でのその値を返すって典型だろ
ばかなのか
0212Name_Not_Found
垢版 |
2018/03/11(日) 22:40:44.28ID:???
>>196-207
2つの<input>タグに、別個のid を付けて、操作してるだけだろ。
何が悪い?

誰でも、こうするだろw
0213Name_Not_Found
垢版 |
2018/03/11(日) 22:44:51.31ID:???
>>212
本の質問をここでするな
著者にしろ
それだけ

あとjQueryも禁止
なんでこんな単純なことが分からんの?
ばかなの?
0215Name_Not_Found
垢版 |
2018/03/11(日) 22:54:55.85ID:???
>>196
これがjQueryのパワーw

<from>
  canvas width: <input type="range" id="canvasWidth"
    min="0" max="1000" step="1" value="500"> <br>
  canvas Height: <input type="range" id="canvasHeight"
    min="0" max="1000" step="1" value="500"><br>
</from>

$("#canvasWidth").on('change', function() {
  theCanvas.width = this.value
  drawScreen()
});
$("#canvasHeight").on('change', function() {
  theCanvas.height = this.value
  drawScreen()
}
0216Name_Not_Found
垢版 |
2018/03/11(日) 22:59:21.59ID:???
jQueryアニキとjQueryアンチ自治アニキのコラボきたーーー
0217Name_Not_Found
垢版 |
2018/03/11(日) 23:18:56.83ID:???
HTML/CSS のどんな質問に必ず優しく答えるスレ 31

946 名前:Name_Not_Found 2018/03/11(日) 16:49:34.27 ID:???>>940
sassはスレ違い

こいつは、あちこちのスレを荒らしてる奴だろ。
ちょっとでも、自分の知らない知識が書き込まれると、禁止にする荒らしだから、
相手にするな
0218Name_Not_Found
垢版 |
2018/03/11(日) 23:23:29.61ID:???
>>217
スレのルールぐらいまもれ
これだけだ

書籍に関する疑問→著者にきけ
jQueryに関する疑問→該当スレいけ
0219Name_Not_Found
垢版 |
2018/03/11(日) 23:24:52.94ID:klPoIp/x
>>218
これがルールなんだよね
なにが気に入らいのか意味不明
0222Name_Not_Found
垢版 |
2018/03/11(日) 23:46:33.24ID:klPoIp/x
>>220
spek wwwwwwwwwwwww
0224Name_Not_Found
垢版 |
2018/03/11(日) 23:49:20.53ID:???
本に載っていたことであっても作者にしかわからないことと
誰でもわかることの二通り有るだろ。

作者にしかわからないことは作者に聞くしかないが
この場合は一般的なJavaScriptの話だ

で自治厨はそれに答えず、ただ単に自分が気に食わない話を
追い出してたいだけだってのがわかるだろう?

それもあって俺はずっとjQueryの話をするわけだよ。

>>196
> 2つめのformElementでcanvasHeightChange()を追加するときは
> formElementに2つの要素がはいってるから両方にcanvasHeightChanged()が追加されるような気がするし

変数には原則として一つの値しか入らない。
a = 1
a = 2
とやると最初に入れていたaは2で上書きされる。

だが変数に入っているものが単なる値ではなくオブジェクトの場合、
変数にはオブジェクトが入るのではなく、オブジェクトを示す参照が入る

だからこの時点では、= の左と右は同じオブジェクトを指し示している
formElement = document.getElementById("canvasWidth")

次のこれはそのオブジェクトに対してaddEventListenerするが
formElement.addEventListener('change', canvasWidthChanged, false)

その次のこれで、そのオブジェクトがなくなるわけではなく、
さっきのオブジェクトは生きたままで、formElementが指し示すものが変わるだけ
formElement = document.getElementById("canvasHeight")
0225Name_Not_Found
垢版 |
2018/03/11(日) 23:50:27.67ID:???
いいか? jQueryの話をしている俺が
一番JavaScriptの質問に答えている
0226196
垢版 |
2018/03/12(月) 00:03:27.59ID:???
なんとなくわかりました
ありがとうございます。
0227Name_Not_Found
垢版 |
2018/03/12(月) 00:18:07.79ID:???
どういたしまして
jQueryの素晴らしさを分かってくれたようで
よかったです
0228Name_Not_Found
垢版 |
2018/03/12(月) 00:20:14.68ID:???
>>227
てめぇじゃねぇとおもうがwwwwwww
jQueryhはレチ
すっこんでろ
0231Name_Not_Found
垢版 |
2018/03/12(月) 00:31:19.73ID:???
ステルスしてないんだから
ステマじゃねーだろw
0232Name_Not_Found
垢版 |
2018/03/12(月) 00:50:47.08ID:???
>>231
jQuery関係ねぇのに>>227みたいなことかくのの
どこがステマじゃねぇんだよwww
0233Name_Not_Found
垢版 |
2018/03/12(月) 00:55:00.69ID:???
>>232
どこがステマに当てはまるというの?

https://www.weblio.jp/content/%E3%82%B9%E3%83%86%E3%83%AB%E3%82%B9%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

ステルスマーケティングとは、マーケティングの手法のうち、
それが宣伝であると消費者に悟られないように宣伝を行うことである。

ステルスマーケティングは、中立的な立場での批評を装ったり、
当の商品と直接の利害関係がないファンの感想を装ったりして行われる。
商品の特長の紹介や、評価システム上の評価をつり上げるなどの行為により、
多くのユーザーの目に触れさせ、またユーザーの商品に対する印象を上げることが主な目的とされる。
0234Name_Not_Found
垢版 |
2018/03/12(月) 01:02:35.95ID:???
本来なら実装全部貼るべきだが
せめてjqueryロードのためのscriptタグは省くなよ。
数万バイトに及ぶコード省いて何が「数行で書けます」だバカ。
0235Name_Not_Found
垢版 |
2018/03/12(月) 01:06:51.53ID:/9a8Ci+K
>>233
jQueryかんけいないのにjQueryのおかげで解決したと
さとられないように吹聴してるだろww
どこにjQueryがかんけいあるかいってみろやwwww
0236Name_Not_Found
垢版 |
2018/03/12(月) 01:08:42.37ID:???
> jQueryかんけいないのにjQueryのおかげで解決したと
> さとられないように吹聴してるだろww

だからそれのどこがステマの定義に当てはまるの?ってきいてるんだが
0237Name_Not_Found
垢版 |
2018/03/12(月) 01:12:37.54ID:/9a8Ci+K
>>236
それが宣伝であると消費者に悟られないように宣伝を行うことである。

これにまんま当てはまるだろwww
なんの関係もないのに実績をうたう
実績をうたってるが実際はなんもかんけいないjQueryのワードがなぜかできて宣伝をしてる
0238Name_Not_Found
垢版 |
2018/03/12(月) 01:13:54.36ID:???
荒らしと会話するな!
荒らしと会話する者も、荒らしやぞ!

荒らしと会話すると、荒らしが喜ぶだけ。
ずっと荒らされるから、荒らしはスルーせよ!
0239Name_Not_Found
垢版 |
2018/03/12(月) 01:16:56.20ID:???
>>236
まずステマ(ステルスマーケティング)である以上
マーケティングでなければいけない。

何の商品のマーケティングをしているというのか?
無料のjQueryが普及した所でお金は入ってこない
これだとマーケティングではない

また消費者(お金払ってないので消費者でもないが)が
悟られないようにというが、お前は関係ない話だと見抜けなかったのか?
悟ってる以上、ステルスにはならない
0240Name_Not_Found
垢版 |
2018/03/12(月) 01:17:31.26ID:???
見りゃわかるだろうけど>>237へのレスの間違い
0241Name_Not_Found
垢版 |
2018/03/12(月) 01:24:59.41ID:/9a8Ci+K
>>239
マーケティングとはお金とは関係ない
マーケッティングすることな
市場を拡大しようと何らかの行動をおこすとこがマーケティングな
金とは関係ねぇよw
0242Name_Not_Found
垢版 |
2018/03/12(月) 01:27:47.01ID:???
>>241
百歩譲ってそうであったとしても
ステルスではない。
誰もが気づいている以上ステルスではない
0243Name_Not_Found
垢版 |
2018/03/12(月) 01:28:54.91ID:???
まーたJQアニキがあらしてるのか
0244Name_Not_Found
垢版 |
2018/03/12(月) 01:31:37.11ID:/9a8Ci+K
>>242
jQuery関係ないのにjQueryだしてる
ステルスだろ

無知な人ならあぁあれはjQueryに帰依するちしきだったんだなと勘違いするだろwww
これがステルスなのww
0245Name_Not_Found
垢版 |
2018/03/12(月) 01:33:00.59ID:???
荒らしではないステルスではないマーケティングをしてるのだ
堂々とマーケティングをしてるのだw
0246Name_Not_Found
垢版 |
2018/03/12(月) 01:49:45.83ID:???
そうそのとおり
ステマってのはスレ住人を装って

利害関係者が利害のために書籍のタイトルや評価を書いていったり
利害関係者が利害のために特定の言語を推したり
利害関係者が利害のために特定ウェブサイトのURLを事あるごとに書いたり

というような行為をすることを指すのだ
0247Name_Not_Found
垢版 |
2018/03/12(月) 01:53:41.83ID:???
>>246
隠れてするのがステマで
隠れてしないのが許されてるマーケティングだと思うんだが?
0248Name_Not_Found
垢版 |
2018/03/12(月) 01:56:53.54ID:???
>>247
隠れてするステマってぐたいてきにどんなんだよw
0249Name_Not_Found
垢版 |
2018/03/12(月) 02:00:15.19ID:/9a8Ci+K
で結局>>227ってどうjQueryとかんけいあるの?
これがしめせないならステマだわwwww
ステマってのが気にクワないなら嘘まーけてぃんぐでもいいよ。

とりあえず嘘ついたって認めろな?
0250Name_Not_Found
垢版 |
2018/03/12(月) 02:04:45.64ID:???
>>215にjQueryで解決してるじゃん
変数がないから根本的に解決できてる
0251Name_Not_Found
垢版 |
2018/03/12(月) 02:05:50.44ID:???
それを言ったら>>199で既に自己解決している
0252Name_Not_Found
垢版 |
2018/03/12(月) 02:08:39.30ID:???
jqueryでなくても変数を使わず解決できる
document.getElementById('canvasWidth').addEventListener('change', canvasWidthChanged, false);
しかし質問者の疑問の本質はそこではないのでこれでは意味が無い

まあ質問者が理解できていなかったはずがないので何もかも意味が無いんだが
0253Name_Not_Found
垢版 |
2018/03/12(月) 02:27:35.40ID:???
JQアニキまだ暴れてんのか
0254Name_Not_Found
垢版 |
2018/03/12(月) 06:52:28.82ID:???
ここで質問に答えてるみなさんはボランティアで?
0255Name_Not_Found
垢版 |
2018/03/12(月) 20:05:07.48ID:???
違う
かっそかその今となってはむしろ
ありがたい質問者様に対して答えさせて頂いてるんだ
0256Name_Not_Found
垢版 |
2018/03/13(火) 23:40:51.16ID:???
jQuery先輩に質問あるんだけどいいですか?
0257Name_Not_Found
垢版 |
2018/03/13(火) 23:47:42.42ID:???
先輩ではなく兄貴と呼べ
0258Name_Not_Found
垢版 |
2018/03/14(水) 20:17:45.75ID:???
アニキとセンパイって何が違うの?
0260Name_Not_Found
垢版 |
2018/03/14(水) 20:29:54.47ID:???
違う.lengthだ

'char'.length と ('char').length って何か違いあるんですか?
0261Name_Not_Found
垢版 |
2018/03/14(水) 20:37:12.29ID:???
>>260
一緒
BNF木が一段違うけど、評価の途中で等価になる
0262Name_Not_Found
垢版 |
2018/03/14(水) 21:04:33.33ID:???
ふーん、ひょうかひょうか
0263Name_Not_Found
垢版 |
2018/03/14(水) 21:06:16.38ID:???
裸→逮捕
裸にラップを巻く→逮捕
見た目が変わらないので
0265Name_Not_Found
垢版 |
2018/03/14(水) 21:13:23.68ID:???
どういたしまして。jQuery以外の話題もOKだぜ!
0266Name_Not_Found
垢版 |
2018/03/15(木) 00:31:51.77ID:???
>>259
え?どういうこと?
長さの違い?
短いほうが良いの?
0268Name_Not_Found
垢版 |
2018/03/15(木) 14:50:12.00ID:???
JavaScriptを使って
意図的にリフローを発生させる方法があった気がするのですが
どういったものでしたか?
0269Name_Not_Found
垢版 |
2018/03/15(木) 21:42:04.01ID:???
>>267
自演だと思う
264の質問に答えたの俺だけど、「どういたしまして」って言ってるの俺じゃないもん
0270Name_Not_Found
垢版 |
2018/03/15(木) 21:52:38.47ID:???
>>260=>>264だけど質問者から回答者への礼が届いてればそれでいいと思う
0271Name_Not_Found
垢版 |
2018/03/16(金) 00:14:57.21ID:???
>>268
opacity弄るんじゃなかったっけかな
ぐぐればでてきそうだが
0272Name_Not_Found
垢版 |
2018/03/16(金) 18:26:29.42ID:???
aタグをクリックされてもフォーカスされないようにしたいです
clickイベントでpreventDefaultするとaタグを無効にできますが
フォーカスはされます
フォーカスを止めるにはどうすればいいですか?
0276Name_Not_Found
垢版 |
2018/03/16(金) 23:03:35.22ID:???
今セキュリティの本読んでるんだけどもしかしてjqueryより生のjavascriptのほうが強い?
ハッカー的な意味で
0277Name_Not_Found
垢版 |
2018/03/16(金) 23:06:51.78ID:???
ハッカー的な意味なら間違いなくjQueryの勝利だよ
0278Name_Not_Found
垢版 |
2018/03/16(金) 23:28:49.15ID:???
じゃ、教科書的に解りやすいようjavascriptで書いてるだけか
0279Name_Not_Found
垢版 |
2018/03/16(金) 23:33:22.58ID:???
JavaScriptの方が弱いからだよ。ハッカー的な意味で
0280Name_Not_Found
垢版 |
2018/03/17(土) 02:10:46.70ID:???
ハッカー的な意味なら生のほうがつよい
0283Name_Not_Found
垢版 |
2018/03/17(土) 04:48:57.38ID:???
ハッカー的意味なら俺の隣で寝てるよ
0285Name_Not_Found
垢版 |
2018/03/17(土) 17:24:21.76ID:???
イケメンで高学歴のお前らに聞きたいんだけど
プログラミングを始めたいんだけど
javaScriptを学習するのってどうっすか?
今更、過ぎます?
0286Name_Not_Found
垢版 |
2018/03/17(土) 17:28:28.19ID:???
ハッカー的な意味ならおすすめ

つかちょっと前にこのスレで同じような質問あったから探してよんでみな
それ読んでまだなにかあったら質問してごらん。
0287Name_Not_Found
垢版 |
2018/03/17(土) 17:38:18.09ID:???
javaScriptってブラウザで動く原始的な言語だと思ってたけど
ハッキングにも使えるんか!?
結構優れた言語なんだね
0288Name_Not_Found
垢版 |
2018/03/17(土) 17:42:03.26ID:???
その理屈だとアセンブリが最も優れた言語だな。最も原始的だけど。
0289285
垢版 |
2018/03/17(土) 17:50:22.86ID:???
同じような質問ってのが見つからんです。。。
ハッキングにも使えるスクリプト言語ってなんかすごそうだなぁと思った。

javaScriptを極めれば10年飯が食えますか?
せっかく学習しても10年衰退とかないよね?
教えてエロい人
0290Name_Not_Found
垢版 |
2018/03/17(土) 17:57:26.99ID:???
>>287
今はブラウザ以外でも動くようになったからね
ネットワークコマンドやバイナリデータの操作
ウェブサーバーなどのサーバーまでJavaScriptで作ることができる
0291285
垢版 |
2018/03/17(土) 18:06:32.94ID:???
>>290
マジっすか!?
ハッキングからサーバーまで何でもできるんすね!
JavaScriptって結構優秀なんだねえ。
早速、勉強してみますわ。

ただ、JavaScriptのコード見てると目眩がするんだよな。。。
Pythonとかの方がコードがスッキリしてる感じ?
JavaScriptをすっ飛ばしてTypeScriptとか勉強するのってあり?
0292Name_Not_Found
垢版 |
2018/03/17(土) 18:13:12.43ID:???
>>289
>javaScriptを極めれば10年飯が食えますか?
その質問は意味がないな。

なぜならJavaScriptを極めるためには、他の言語を
知らないといけないから。これはどの言語にも当てはまる。
一つの言語にこだわってもその言語を極めることはできない
何故かと言うとJavaScriptは進化し続けている言語だから。

今のJavaScriptと1年後のJavaScriptは違う他の言語を参考に良い機能を取り入れてる。
進化し続ける言語を極めるためには、言語に搭載されるよりも先に
搭載される可能性がある機能を知っていなければいけない。
JavaScriptだけをやっていても極められない。言語の進化のスピードに追いつけない
0293285
垢版 |
2018/03/17(土) 18:16:31.74ID:???
>>292
なるほどねえ。
JavaScriptは進化する。
それを学習する俺もともに進化せねばならないって訳ねえ。
0294285
垢版 |
2018/03/17(土) 18:24:31.86ID:???
お前ら、トンクス。
現状JavaScriptが最強そうだね。
JavaScriptの本買ってくるわ。
0295285
垢版 |
2018/03/17(土) 18:34:22.50ID:???
>JavaScriptをすっ飛ばしてTypeScriptとか勉強するのってあり?
誰かこれについて教えろください。。。m(_ _)m
0296Name_Not_Found
垢版 |
2018/03/17(土) 18:55:38.01ID:???
ホントはアリなんだけど
現状javascriptの知識がある前提の説明ばっかで辛いよ
0297285
垢版 |
2018/03/17(土) 18:59:37.28ID:???
>>296
そうなんか。。。
やはり、JavaScriptは避けて通れないんだね。。。

ありがとう。
素直にJavaScript勉強します。
0298Name_Not_Found
垢版 |
2018/03/17(土) 19:09:48.89ID:???
移り変わりの速い世界なので実際どうなるか分からんけど
あと10年で廃れることはないんじゃないの?
0299Name_Not_Found
垢版 |
2018/03/17(土) 20:19:49.26ID:???
>>281
どれって言うか脆弱性関係の本でXSSやクッキーやセッションを盗むとかHTMLのiframeのなかにjavascriptを埋め込むとか
そういう感じでちょこちょこ出てくるよ
脆弱性関係の本はふるいの多いけど今年の6月に徳丸浩さんの本が改訂されるって本人のブログで読んだ
0300Name_Not_Found
垢版 |
2018/03/17(土) 20:54:36.71ID:???
本来の意味のハッカーじゃなくて
不正アクセスとか乗っ取りなんかの意味のハッカーだと流石に無理があるのでは
0301Name_Not_Found
垢版 |
2018/03/17(土) 21:27:58.14ID:???
よそのサイトのソースを持ってくるってのは
同一生成元ポリシーとかで相手側のサーバが許可してない限りは
JavaScriptだけではどうしても無理なんでしょうか?
0302Name_Not_Found
垢版 |
2018/03/17(土) 21:37:31.34ID:???
>>301
情報が少ないから分からんけど、たぶんほぼ無理
jsonpは使えない?
0304Name_Not_Found
垢版 |
2018/03/17(土) 22:17:56.67ID:???
JSというかブラウザのセキュリティ制約上許されない
0305301
垢版 |
2018/03/17(土) 22:23:30.45ID:???
どうもありがとうございます
デスクトップで使う自分用アプリだったのですが
面倒だけどPHP経由させることにします
0306Name_Not_Found
垢版 |
2018/03/17(土) 22:29:29.75ID:???
そういう用途ならhtaなりWebExtensionなり検討出来ない?
0308Name_Not_Found
垢版 |
2018/03/17(土) 23:16:26.03ID:???
関数の定義をどこに書けばいいのよくわからないのですが

極端な場合で関数を100入れ子状態にするとき
一番深いとこ100個目の関数の定義は
function name() {}
で定義する時は階層的にどこに書けばいいんでしょう?
1 どこでもよい
2 一番上の層
3 99番目の層
0309Name_Not_Found
垢版 |
2018/03/17(土) 23:21:25.99ID:???
使う範囲が狭ければ最小限の場所とか広範囲で使うなら最上層とか
要するに自分が無知識状態から改修させられたとき楽なほうを選べばいいんじゃね
0310Name_Not_Found
垢版 |
2018/03/17(土) 23:30:03.06ID:???
>>309
どこの層に定義を書いても、どの層からでも呼び出せるってことですか?

勉強しながら、コードのサンプルを1つのスクリプトファイルに無理やり少しずつ入れててってるんですが
ちょっと動かして整理したらうごかなくなっちゃってこまってるんですけど。
0311Name_Not_Found
垢版 |
2018/03/17(土) 23:39:04.37ID:???
>>308
> で定義する時は階層的にどこに書けばいいんでしょう?
それが何の役割なのかによる、まあ少なくとも99番目の層はありえず、
100入れ子状態とかそういうのがそもそもありえない。というか意味がわからない。

>>310
気分次第だけど、そのコードをjsfiddleかどこか編集しやすい所に作ってくれたら
どうするのか良いのか修正してあげるかもよ?
0312Name_Not_Found
垢版 |
2018/03/17(土) 23:42:17.30ID:???
設計 それは ふれあいの言葉
0313Name_Not_Found
垢版 |
2018/03/17(土) 23:43:03.23ID:???
>>285
まず、この本で勉強しろ
「たのしいRuby 第5版、2016」

JavaScript は、ES3 までは、まだマシ。
(だが、これでも、Ruby よりもかなり難しい)

ES5, ES6(2015)になると、手に負えない化物になる

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017

漏れは、10ほどのプログラミング言語を使えるが、
それでも、この本には頭を抱えるほど

この本を読むためには、まず数年以上、
Ruby などの簡単な言語で、基礎体力を付けるべき

その後じゃないと、読めない
0314Name_Not_Found
垢版 |
2018/03/18(日) 02:40:34.21ID:???
クロムでvideoタグのコントロールバーをずっと表示させたいのだけどやり方分かる人います?

↓で出来るらしいのだができない


//assign video element to variable vid
var vid = document.getElementById("player");

function videoTimeUpdate(e)
{
//set controls settings to controls,this make controls show everytime this event is triggered
vid.setAttribute("controls","controls");
}

//add event listener to video for timeupdate event
vid.addEventListener('timeupdate', videoTimeUpdate, false);
0315Name_Not_Found
垢版 |
2018/03/18(日) 07:23:32.65ID:???
たのしいRuby→Python
を熱弁すると人ひとちょくちょく見る気がする
このスレ以外でもだいぶ前に同じようなこと言ってる人見たことある
まさか中の人じゃないとおもうけど
0317285
垢版 |
2018/03/18(日) 15:18:04.53ID:???
>>313
まじかよ。
JavaScriptはプロでも難しいのか。。。
トンクス。挫折したらRubyに逃げるわw

でも最近Rubyが息をしてないような気がするんだけど気のせいかな?
Pythonじゃあかんの?
0318Name_Not_Found
垢版 |
2018/03/18(日) 15:20:28.14ID:???
RubyってRailsありきですよね
0319Name_Not_Found
垢版 |
2018/03/18(日) 15:51:56.02ID:???
>>317
考え方はそれぞれだけどそのレスは真に受けん方が良い
息してないからあちこち宣伝して回る人も現れるって事もある
0320Name_Not_Found
垢版 |
2018/03/18(日) 16:03:42.78ID:???
プログラミングを始めたいレベルの人間が
Rubyが最近息してない等と語りだすスレ
0321Name_Not_Found
垢版 |
2018/03/18(日) 16:06:21.74ID:???
>>317
Webの仕事してるけど初めてのJavaScriptで頭抱えるは無いわw
まあプログラミング自体が初めてというひと向けの本ではないがプロでも難しいは無い。あーまあwebはピンキリだから金もらってりゃプロという定義なら有り得なくもないが…
ともかくこういうのは自分が分からない→自分はそこそこのプログラマのはず分からないのはおかしい→言語が、本が難しいんだ!と心理学で言う防衛規制が絡んでくる話だから、この手の意見はあまり真に受けない方がいい
0322Name_Not_Found
垢版 |
2018/03/18(日) 16:29:00.49ID:???
今はtypescriptがあるから楽
0323Name_Not_Found
垢版 |
2018/03/18(日) 17:42:03.74ID:???
もう何度言ってきたか分からないけど、JSの明らかな難しさってnew演算子の複雑な振る舞いだけじゃん
そのベースのプロトタイプチェーンとか、スコープチェーンっていうのは、簡単過ぎる程単純なんだからさ

ただ深く学ぼうとしたときに、その上に構築されてる旧/新クラスシステムを
シンボルや内部メソッド含めて理解する必要が出てくるから、確かにそれはやや難しいが、
きちんとベースのプロトタイプチェーンや各機能を理解できていれば
あとは仕様書を読む力をつけていけばいい
0324Name_Not_Found
垢版 |
2018/03/18(日) 17:55:51.31ID:???
JavaScriptをやる前にRubyをやれとか頭おかしいやろ
Rubyの作者のマッツがネトウヨだということも最近発覚したし
やる必要性はゼロだと断言できる
0325Name_Not_Found
垢版 |
2018/03/18(日) 18:17:30.90ID:???
所詮RailsのDSLとしてしか価値のない言語
0326285
垢版 |
2018/03/18(日) 18:59:26.85ID:???
>>319
やっぱり、RubyはPythonに圧され気味だよねえ。

>>321
とんくす。JavaScriptは初心者向けとしてよく勧められてるもんねえ。



とりあえず、JavaScriptとPythonをやってみようかな。
情報も多いし。
その次はC#当りにしようかなぁ。
VBAはExcelにPythonが統合されたら廃れそうだしな。。。
0327Name_Not_Found
垢版 |
2018/03/18(日) 19:02:06.65ID:???
ブラウザという協力な動線があるようなJSでも、Webを良く閲覧してるうちに興味が出てブログを始めて
もっと細かいことがしたくてHTML、CSSと学んでから来るのがやっぱり理想だと思う

本当に何がやりたいのかも分からないし、条件分岐やループの概念もチンプンカンプンならJSですらやらない方がいい
まずは実用的ではない、お遊びの言語環境から始めるべきだ

それなのに基本サーバーという裏方でREPLなRubyなんかを勧めるのはいけないと思う
学校の授業で先生が良い環境を整えてくれて学習要領も整えてくれるんなら別だけど

やっぱり初心者には基本的にはできるだけ絵を簡単に動かせるものからプログラミングを教えるべきだよ
だからお遊び言語か、オーサリングツールが発達してるもので学んでいったほうが良い
0328Name_Not_Found
垢版 |
2018/03/18(日) 19:11:11.40ID:???
excelはしらんけど
libre office やら google spreadsheetはjavascript つかえる
0329Name_Not_Found
垢版 |
2018/03/18(日) 19:15:52.02ID:???
言語選びのセンスは悪くなさげだが何がしたいのかが分からんな
Windowsアプリを作りたいのか?
0330Name_Not_Found
垢版 |
2018/03/18(日) 19:17:13.55ID:???
>>316
ライブラリはなしの方向でお願いします。
でもライブラリでできるってことは生JSでもできるってことだよね

動画プレイヤーにマウスオーバーするとコントロールバーが表示されるのだけど
マウスオーバーを偽装することとか出来たりする?
0332Name_Not_Found
垢版 |
2018/03/18(日) 19:35:20.75ID:???
>>330
JavaScriptじゃないけど↓これとか

video::-webkit-media-controls-panel {
display: flex !important;
opacity: 1 !important;
}
0333285
垢版 |
2018/03/18(日) 19:52:15.08ID:???
>>329
機械学習やディープラーニングに興味あり!
WEB(ブラウザ)アプリにも興味あり!
Windowsアプリも作りたい!
色々やりたいんです。

PythonとJavaScriptなどのスクリプト言語でとりあえず学習して、
WindowsでGUIが簡単に作れそうで速度も早いC#の順で学習しようかと。。。

素人だけどこの3つは10年後も廃れてなさそうと思ったのですよ。
0334Name_Not_Found
垢版 |
2018/03/18(日) 19:53:27.75ID:???
良くてステマ荒らし、悪くてただの荒らし
0335Name_Not_Found
垢版 |
2018/03/18(日) 20:01:51.53ID:???
>>330
> でもライブラリでできるってことは生JSでもできるってことだよね

生JSでやるにしても、ライブラリは良い参考書になるよ
実現してるコードが公開されてるんだから、それを参考にしない手はない

それから生JSでできるのにライブラリが有るのは大変だからだよ
自分が今何をやりたいのか、機能を実現したいのか
機能を実現するためのコードの勉強がしたいのか
どちらを優先させたいのかを考えたほうが良いね
0336Name_Not_Found
垢版 |
2018/03/18(日) 20:32:05.89ID:???
本当に良い機能でいっぱいなら仕様に取り込まれてそう
0337Name_Not_Found
垢版 |
2018/03/18(日) 20:47:38.37ID:???
能書きばっかりで何も作れなさそう
0338Name_Not_Found
垢版 |
2018/03/18(日) 20:51:18.80ID:???
そんな単純な話じゃないよ
例えば標準に取り込まれたPromiseだけど取り込まれるまで
年も議論が続いた。今すぐ動くものが欲しい人にとっては死活問題だね

そしてPromiseだけど、さらにasync awaitという形に代わった
Promiseは当時のJavaScriptで実現可能なものだったけど、
そのJavaScript自体を変えていいならもっといい方法が候補になる

つまり仕様に取り込まれるときは代わってしまう
= 仕様に取り込まれてないように見えるということ

良い機能でいっぱいであっても仕様に取り込まれないものはたくさんある
それに加えてどうもJavaScriptは方針として言語には必要最小限の
ものしか搭載しないようにしている感じが有る

なぜならRubyで「本当に良いものだから仕様に取り込まれたもの」が
取り込まれていないから。RubyのarrayメソッドにはJavaScriptにはない
便利な機能が沢山仕様に取り込まれている。
https://ref.xaio.jp/ruby/classes/array

「本当に良い機能でいっぱいなら仕様に取り込まれてそう」が真であれば
これらは全て取り込まれているはず。
取り込まれてないので良い機能でも取り込まれるとは限らないという結論になる
0339Name_Not_Found
垢版 |
2018/03/18(日) 20:57:45.51ID:???
>>333
若いうちは元気があっていろいろやる気があるのは本当に素晴らしいけど
結論から言うと幅広く手を出すのは人間である限り無理だよ、どうしてもただの器用貧乏になっちゃう
それだけ各言語の環境っていうのは奥が深いし、更新速度も早い

英語もロシア語も中国語もあれもこれもやりたいって言って、
実際に日常会話くらいはできるようになる人はいくらでも居るだろうけど、
それ以上のスキルを付けて各国の事情に付いていくのは困難だよ

なんで困難かというと、そうこうしてるうちにあっという間に5年10年と経って
そうすると湧いて溢れる若い勢いが絶対に無くなってくるから

プログラミング自体に興味があってそれが目的ならやっぱりメインの言語を決める必要がある
そしてできる限りその言語を極めて言って、その言語で機械学習とか物を作る
もしくはプログラミングは手段だと完全に割り切って、機械学習やアプリとか
ものを作ることだけを目標に据えることができるのなら、手広くやることも可能かもしれない
0340Name_Not_Found
垢版 |
2018/03/18(日) 21:04:52.25ID:???
WEB絡みならぶっちゃけhtml/cssとphp/javascriptで十分なんだよな
0341Name_Not_Found
垢版 |
2018/03/18(日) 21:12:43.97ID:???
javascriptは初心者向け!
rubyやphpはもう古いPythonがこの先長く生き残る!

これ最近のレスほとんど書籍ステマの自演だな
0342Name_Not_Found
垢版 |
2018/03/18(日) 21:15:58.74ID:???
>>339
だがな、機械学習・ディープラーリング
ウェブアプリ、Windowsアプリ、
Python、JavaScript、C#

この程度を覚えるのは大したことじゃないぞ
本気でやれば1年あれば全部できる
0343Name_Not_Found
垢版 |
2018/03/18(日) 21:22:40.74ID:???
なにをどう間違えたらラーニングがラーリングになるんだ
PC、タブレット、スマホ、どれでもそうはならんだろ・・・ガラケーとかか?
0344Name_Not_Found
垢版 |
2018/03/18(日) 21:25:12.28ID:???
どっちにしろこれ以上はスレチ
0345Name_Not_Found
垢版 |
2018/03/18(日) 21:25:28.59ID:???
>>338
Promiseがあってのasync awaitでしょ
各APIがPromiseを返したり扱うことができるから柔軟性がある
これが構文が先ということはできない
構文だけで済ますと極めて限定的だし

あと別に、必要最小限の ものしか搭載しないようにしている方針なんて無い
TC39の10人程度のコアメンバーが興味をもった順から入っていってるだけ
だからわかり易い例としてO.oなんてものが勢いだけで入りそうになる
これがArrayの色んなメソッドよりも重要なものか?と言われればそうではないだろう

まあArrayのメソッド拡張は度々提案があったが、進歩しないのには理由がある
Array.prototypeにメソッドを追加するとWebを壊しうるから
TC39は別にこの機能は世の中のJSerが本当に求めているものかどうか?は然程気にしないし、
方針が曖昧なことが本当に問題で不安要素なのだが、唯一Webを壊すな!ということは頑なに守ってきた

だからSymbol.unscopablesなんてお馬鹿なものまで追加したのだが
それでも一部守りきれなかったのでArray.prototype.valuesが今年までブラウザにOFFられてた
だから、Arrayの便利メソッドとかは、1.モジュールの仕組みを整えて、2.標準モジュールを定義して
それから要る場合にはimportして貰おうということになっていた

今ようやく1が完了して2に入っていくところ
だが今デコレーターとかホットな話題がたくさんあるので取り掛かりが2019年になるかもしれない
そして今valuesが思い切って導入されるように、その頃にはやっぱり思い切って普通に入れようということにもなりそうな気がする
というか現にメソッド1つや配列操作構文の単機能としては今も提案が挙がってる

まあこのように、O.oときもそうだがESは仕様決定がちょっと遅いことでより良い選択肢を取れて救われたことは本当に多い
遅いから、入ったときには役立たずというのだけは大間違い
特にJSでは、JS2.0で互換性破棄とか最も難しい立場の言語なんだから
明確な方針が無い今、これ以上スピードが増すのは危険でしか無い

まあ、ES2020くらいには結構便利なメソッドやら構文やらが入ってきて解決されてると思うよ
0346Name_Not_Found
垢版 |
2018/03/18(日) 21:28:39.81ID:???
es2100ってどうなってますか?
0347Name_Not_Found
垢版 |
2018/03/18(日) 21:29:07.76ID:???
常々思うことだが営業みたいなしゃべりが目立つ
人材派遣の顔合わせについてきてる奴みたいな…
0348Name_Not_Found
垢版 |
2018/03/18(日) 21:29:59.74ID:???
>>343
> なにをどう間違えたらラーニングがラーリングになるんだ
learning
learing
一文字抜けた感じかな?
0350Name_Not_Found
垢版 |
2018/03/18(日) 21:31:29.39ID:???
>>345
> Array.prototypeにメソッドを追加するとWebを壊しうるから

それはおかしい。
なぜれならArray2 とか "use strict v2;" とか作ればいいからだ
0351Name_Not_Found
垢版 |
2018/03/18(日) 21:32:09.94ID:???
>>346
存在しない
もしも超絶ハイパー奇跡的に2050年とかまで仕様策定が続いたら
そのとき最後のバージョンとしてそれを出す可能性だけはある
0352285
垢版 |
2018/03/18(日) 21:34:37.51ID:???
>>339
おお、忠告ありがとうっす。
確かに色々手を出しすぎるのは厳しいよねえ。
できるだけライブラリで済ませられるものはそれに頼って頑張ります。
0353Name_Not_Found
垢版 |
2018/03/18(日) 21:38:24.88ID:???
>>350
それはできればしたくないだろう
ES2015のときの話だが
だからまだましな解決策としてSymbol.unscopablesが導入されたが
それだけでは十分では無かった

だからもうimport "std:Array-Ex"みたいにやってくほうがベターかね
という雰囲気になって、しばらくそれ系の提案は勢いを潜めてるってことだ

物事はもっと複雑で、Web APIが返す配列がArrayを継承してくれる目処も経ってなかった頃だったしな
とりあえず、それ以上議論を攻めるような感じにはならなかったということ
0354Name_Not_Found
垢版 |
2018/03/18(日) 21:42:09.40ID:???
なら、Array拡張するモジュールを標準化すれば良いのでは?
デフォルトではArrayはそのまま、標準化された
ArrayExをimportすれば拡張される

まあいいや、
どちらにしろ

> 本当に良い機能でいっぱいなら仕様に取り込まれてそう

という意見は間違いで、良い機能でいっぱいであっても
仕様に取り込まれないことはよくある話ってことだよ
0355Name_Not_Found
垢版 |
2018/03/18(日) 21:47:23.24ID:???
良くわからんが相当癇に障ったらしい
0356Name_Not_Found
垢版 |
2018/03/18(日) 21:49:39.03ID:???
? 単に良いものなら取り入れられるっていうのは
考えが甘いって話をしてるだけだよ。
良くても取り入れられないものはたくさんあるのが現実
0357Name_Not_Found
垢版 |
2018/03/18(日) 21:52:57.16ID:???
>>354
標準化すれば良いのでは?って……
今まで説明した話を聞いていなかったのか?
標準モジュールの話が本腰入れてできるようになったのは、
ES2015後切り離して議論していたモジュールの構文以外の部分がようやくまとまって実装されだした今だし、
valuesもONにしたりOFFにしたり様子を見てたが、ONにしていって大丈夫だろうという判断が出た今からが
配列のメソッドに手を入れていくムードになり得るということだよ、物事には流れや雰囲気っていうのがあるんだからね

でも今はもう個別のメソッドが提案されてるし、やっぱりまとめてどっさりではなく1個1個入れていく形になるかもねってこと
それはそれで、そっちのほうが良いだろうよ
とりあえずRubyか何かを真似してどっさり持ってくるよりもさ

それでね、一番言いたかったのは、「お前が提案してこいよ!!いやしてください」ってことなんだけど
伝わらなかった?
0358Name_Not_Found
垢版 |
2018/03/18(日) 21:56:42.76ID:???
伝わらなかった?って俺がいつ標準化しろって言ったんだ?
標準化する方法はあるって話をしただけ

俺は良いものであっても標準化されるとは限らないって話をしてる
0359Name_Not_Found
垢版 |
2018/03/18(日) 22:03:44.31ID:???
>>358
俺は良いものであっても標準化されるとは限らないと言わずに
標準化されるように提案しようと言ってる
なぜなら「本当に良いもの」なんて個人次第だから
それを提案して皆に認められて仕様に入って実装されて初めて「本当に良いもの」と言えるんだよ

それには時期とタイミングっていうのがある
Rubyに入ってる「本当に良いもの」だから、今JSに入れても「本当に良いもの」になるというわけではない
JSが大きく関わっているWebの他の物や開発者、実装などの準備やタイミングもあるんだよ

だから、もし今その「本当に良いもの」が「本当に良いもの」になれると思うのなら提案すればいい
それぞれの言語の事情を踏まえないと他の言語を引き合いに出しても仕方がない
俺は、「本当に良いもの」はきちんと然るべきときに導入されてきてると思うよ
0361Name_Not_Found
垢版 |
2018/03/18(日) 22:09:57.09ID:???
いや、喧嘩はする気はない、明日仕事6時からだし遠慮してくれ
0362Name_Not_Found
垢版 |
2018/03/18(日) 22:25:07.88ID:???
若いなら色々手を出したほうがいい
でも年取ってものいうのは専門性だから
すこしずつ絞っていくようにすればいい
どれを選ぶかは仕事でなにをやるかとかそういうもので決まっていくことが多い

プログラム以外の強い分野もも1つくらいつくようにするとなおよし
0363313
垢版 |
2018/03/19(月) 01:20:17.17ID:???
素人の行き方には、根拠が無い。
C#が目標でも、C#からは行けない。そういう道がない。
Java から行かないと無理だろ

JavaScript(JS), Python にも、直接行く道がない。
素人は、行けると思うけど、漏れら、10言語以上知っていると、無理だとわかる

「たのしいRuby 第5版、2016」
これを読んで無理なら、それ以上進めない

JSなどは、オブジェクト指向・クラスじゃないだろ。
いきなりプロトタイプだから、JSの内部の実装を学んだ所で、何もならないし時間の無駄。
ビジネスロジックとは無関係

Rubyで、Sinatra を、full scratch で書く方が速い。
それがRails を作る事と同じ

「Node.js超入門、掌田津耶乃、2017」
この本を読めばわかるが、
Node.jsを、full scratch で書くと、Sinatra と同じ。
Node.js + Express + Bookshelf が、Rails と同じ

「10日でおぼえる jQuery 入門教室 第2版、山田祥寛(よしひろ)、2013」
この本が、RubyのNokogiri と同じ

最初から、JSで苦しむより、Rubyでフレームワークを学んでから、
Node.jsへ行った方が、ずっと速い
0364Name_Not_Found
垢版 |
2018/03/19(月) 06:20:24.93ID:???
今ではマルチパラダイムが主流だし
古典的なクラスに完全に縛られてるクラスベース言語も無くなってきてるんだから
プロトタイプベースのJSで、クラスとはオブジェクト指向に於ける抽象化プログラミングの一種だと
認識していたほうが、他の言語に言っても理解が早い
0365Name_Not_Found
垢版 |
2018/03/19(月) 09:46:21.40ID:???
>>359
ならお前が提案すれば良いんじゃねーの?

なんで良いものであっても標準化されるとは限らないよって
言ってるだけの俺に提案しろって言ってるのか意味不明なんだけど
0366Name_Not_Found
垢版 |
2018/03/19(月) 10:48:48.75ID:???
Rubyはオブジェクト指向を突き詰めるとの本末転倒ぷりを身をもって示してくれた、クソ原理主義言語。
rails以外に存在価値なし。
0367Name_Not_Found
垢版 |
2018/03/19(月) 13:07:14.18ID:???
>>365
✘良いものであっても標準化されるとは限らない
○俺が考える良いものであっても標準化されるとは限らない
0368Name_Not_Found
垢版 |
2018/03/19(月) 14:49:04.84ID:???
超初心者の質問をお願いします!
iOS safariで、ブラウザ閲覧中のスリープ時に何か処理を実行したいのですが
どのようにすればいいでしょうか?
visibilitychangeとhiddenでiOS以外のブラウザでは実行できるのですが。。。
よろしくお願い致します
0371Name_Not_Found
垢版 |
2018/03/19(月) 18:55:41.13ID:???
やさしいRubyアニキとjQueryアニキはどっちが長男なの?
0372Name_Not_Found
垢版 |
2018/03/19(月) 18:56:27.30ID:???
スリープ時はタイマーも止まる可能性大だし、処理が継続できる保証もない
PCでスリープした時を考えると当たり前だと思うだろう
スリープ時になにかするという事は避けたほうが良い
0373Name_Not_Found
垢版 |
2018/03/19(月) 22:33:15.65ID:???
ブラウザ閲覧中のスリープ時
の意味がわからん
0375Name_Not_Found
垢版 |
2018/03/20(火) 00:34:03.84ID:hIzW1Vha
改めて質問させていただきます。
MonacaとAngularJSで開発を行っているのですが、時刻を取得し更新するプログラムが動きません。
ソースコードは下にアップロードしています。
https://jsfiddle.net/da5goyvL/1/
(https://gist.github.com/anonymous/31a1c1aa48bfe6673cb97c333b238b43)

一応、実行時の時刻は表示されるのですが、intervalで時刻の更新ができていません。
console.logでnow_secondsの内容を出力させてみると(intervalで)、きちんと取得できているみたいです。
ということは時刻が反映されていないだけだと思うのですが、その方法(時計の作りかた)をどなたかご教示願います。
0376Name_Not_Found
垢版 |
2018/03/20(火) 00:35:06.77ID:???
別タブなり別アプリなり開いてる間も処理し続けるとか、最初からそういうものでなきゃ「迷惑だからやめろ」って思うんだが……
0377Name_Not_Found
垢版 |
2018/03/20(火) 00:42:34.07ID:???
this.seconds に now_secondsを代入した後に now_seconds を変更しても this.seconds とは連動せんからな、そりゃ変わらんだろうよ
0378Name_Not_Found
垢版 |
2018/03/20(火) 00:51:38.27ID:???
ライブラリ使うとそんなこともわからない人材ができあがるのか
ソース見てないけど
0379Name_Not_Found
垢版 |
2018/03/20(火) 00:55:33.80ID:???
裏でこっそりマイニングさせようとしてて
スリープとか別アプリとかされた時にサーバに通知させたい動機だったりして
0380Name_Not_Found
垢版 |
2018/03/20(火) 01:02:11.82ID:???
var a=[1,{b:true},3];
var b=a.concat();
b[2]=5;
a[1].b=false;
console.log(a);//[1,{b:false},3]
console.log(b);//[1,{b:false},5]

concatでシャローコピーしたつもりなのですが
a[2],b[2]は成功
しかし、a[1],b[1]のオブジェクトはどっちもfalseになっていて
干渉していました・・・

forで繰り返して構築する以外に
完璧なシャローコピー(?)をするにはどうしたらいいですか
0381Name_Not_Found
垢版 |
2018/03/20(火) 02:20:16.77ID:???
これはだめ?
b = JSON.parse(JSON.stringify(a))
0383Name_Not_Found
垢版 |
2018/03/20(火) 03:02:34.64ID:???
>>380
>シャロー
シャローではなくディープだろう
シャロー( shallow )は「浅い」
0386Name_Not_Found
垢版 |
2018/03/20(火) 06:24:41.95ID:???
JSON.parseは循環参照に対応していないので平坦化/組み立ての作業が必要
0387Name_Not_Found
垢版 |
2018/03/20(火) 07:40:52.00ID:d02cAYYX
質問です
var A.prototype.hoge = function(){
this.array = [];
}

var B.prototype.hoge = function(){
console.log(A.prototype.array.length);
}
とやってもAのthis.arrayが取得できません
どのように取得したらよいのでしょうか?
0388Name_Not_Found
垢版 |
2018/03/20(火) 08:37:32.48ID:???
何をやりたいのか意味不明だけど、A.prototype.hoge(); しないとarrayが作られないじゃん
それとvarいらんだろ
0389Name_Not_Found
垢版 |
2018/03/20(火) 12:46:26.35ID:hIzW1Vha
>>377
次のようにコード書き換えてみたのですが、表示が変化しないです。
var date = new Date();
this.hours = date.getHours();
this.minutes = date.getMinutes();
this.seconds = date.getSeconds();

var timer = $interval(function(){
this.hours = new Date().getHours();
this.minutes = new Date().getMinutes();
this.seconds = new Date().getSeconds();
}, 1000);
もしかして、intervalサービス中でUIの書き換えを行うことはできないのでしょうか(デッドロック阻止??)?
0392Name_Not_Found
垢版 |
2018/03/20(火) 14:49:36.90ID:???
angularとか小洒落たもんつかってんな
0393Name_Not_Found
垢版 |
2018/03/20(火) 21:15:00.40ID:???
アドブロックブロックの原理ってどうなってんのあれ?
解除したいんだけど。
0394Name_Not_Found
垢版 |
2018/03/20(火) 21:18:29.67ID:???
・そのサイトを使うのをやめる
・そのサイトがアドブロックブロックやってることを宣伝拡散
0395Name_Not_Found
垢版 |
2018/03/20(火) 22:16:12.31ID:???
アドブロックブロック対策のために
検出不可能なアドブロックを作りたい
0396Name_Not_Found
垢版 |
2018/03/21(水) 00:55:49.00ID:???
tampermonkeyで実行してるスクリプトの変数に
コンソールからアクセス出来る?
0397Name_Not_Found
垢版 |
2018/03/21(水) 14:28:54.86ID:???
>>395
今は要素を消したり隠したりを表のレイヤーでやるから感知されうるが
Houdini系APIを利用してレンダリングのレベルで調整すればバレにくくなる
ただそれでも今ではどうしても痕跡が残るが
もし拡張機能からより上位のレイヤーを調整できるようにさせてもらえれば可能かも
0398Name_Not_Found
垢版 |
2018/03/21(水) 14:43:19.41ID:???
>>397
完璧を目指すと最悪ブラウザ作ることにはなるんだろうなっては思ってる

あと要素を消したり隠したりするからバレるわけだよね。
それをやらなければいい。やり方はあって(というか昔やってた)

画像の場合は透明画像にすり替える。他の形式もそれぞれダミーにすり替える。
要素は消さない。ただ見えないだけ。
これだけで結構検出は難しくなると思うよ

あとはJavaScriptによる自動操作、HTMLを書き換えると検出されそうだから
ページが読み込んでるいずれかのJavaScriptファイルを書き換えて
匿名関数の即時実行で処理させる。またwindow.openなどの関数を
オーバーライドして処理を割り込ませる

アイデアは有るけどそれを拡張機能として作るのが面倒だなw
0399Name_Not_Found
垢版 |
2018/03/21(水) 14:46:50.35ID:???
あと拡張機能でHTTPプロキシみたいなことできるんだろうか?
できなければプロキシ作れば良いんだけどhttps対応がめんどいな
0400Name_Not_Found
垢版 |
2018/03/21(水) 15:05:57.00ID:???
逆の観点で言って、プロキシでフィルター通しても
画面に本来必要不可欠な処理と統合されたら対応不可能になるんじゃない?
0401Name_Not_Found
垢版 |
2018/03/21(水) 15:54:55.89ID:???
>>400
そういうのが広告である以上、広告配信側からの制限も有るので
統合するのは難しいと思ってる。つまりサイト側は広告内容には手を出せない

広告を表示しないようにするからバレるわけで
サイト側は広告を表示したつもりだけど広告内容が無害なものにすり替わる
サイト側は広告内容に手を出せないという前提を満たしている限りどうしようも


例えばポップアップウインドウ。これはポップアップを
出さなくするのではなくポップアップを出すのだけれど、
内容を広告ではなく自動でクローズするHTMLにすり替える
これでポップアップウインドウが開いたかどうかの判定を騙せる

透明広告画像にすり替えるのも同じ理由ね。
サイト側は表示したつもりになっている
0402Name_Not_Found
垢版 |
2018/03/21(水) 16:07:07.44ID:???
javascript OFF、iframeも遮断、できればサードパーティURLも遮断、が一番
それをわかってるからchromeとかfirefoxはjavascript切る設定を見えなくしてる
結局javascriptが害悪
0403Name_Not_Found
垢版 |
2018/03/21(水) 16:16:36.63ID:???
>>402
その理屈だとHTMLが害悪ってことにならんのか?
0404Name_Not_Found
垢版 |
2018/03/21(水) 16:35:35.74ID:???
イベントリスナーに変数渡したいのだがやり方がわからない
セッションストレージに一旦突っ込んでよびだせばいい?
それともグローバル変数にするか?

検索したら
https://qiita.com/rukiadia/items/03aaa8955c0f6576a5e7
が出てきたけど初心者の自分にはやり取りが難しくて結局どうなのかよくわからん。
0405Name_Not_Found
垢版 |
2018/03/21(水) 16:40:53.78ID:???
害悪はターゲティング広告や(第三者を介した)アクセス解析
HTMLというよりjavascript, cookie, refererだな
iframeですら呼び出し元がわからなければ広告手段としては劣るようになる
これらが欠けるほどターゲティング広告等は成立しづらくなる
0406Name_Not_Found
垢版 |
2018/03/21(水) 16:45:58.36ID:???
>>404
前段のどっちでもいい、それで問題がなければ一向に構わない

後段はjavascriptによって
<button>を
<button data-hoge="渡したい変数の中身">にして
関数でdata-hoge(コード中ではbuttonElement.dataset.hogeになる)を使ってるだけ
要するにjavascript側で保持するんじゃなくてhtmlに保持させる格好
これでもいい
0407Name_Not_Found
垢版 |
2018/03/21(水) 17:35:45.62ID:???
cssのposition:absoluteと
JSの e.pageX の座標は一致するの?
0408Name_Not_Found
垢版 |
2018/03/21(水) 17:39:08.64ID:???
>>404
のコメ欄より

addEventListener を使用している場合は、第二引数で handleEvent プロパティを持つオブジェクトを指定して下さい。

document.querySelector('.jscBtn').addEventListener('click', {name: 'my name', handleEvent: function handleEvent (event) {
console.log(this.name); // "my name"
}}, false);
0409Name_Not_Found
垢版 |
2018/03/21(水) 20:21:17.67ID:???
>>405
害悪は派手な広告であって
ターゲティングとかはどうでもいいでしょ
0410Name_Not_Found
垢版 |
2018/03/21(水) 20:28:46.69ID:???
>>409
見た目派手すぎる広告をどうにかしたいだけだったら
アドブロックブロック対策的には
広告のサイズをwidth: 10px !important; overflow: hidden; とかするだけで完了すんじゃね
要素消してない、隠してない、srcset属性変わらない、つまり検知できない
0411Name_Not_Found
垢版 |
2018/03/21(水) 20:47:58.48ID:???
>>409
どうでもいいなら
ターゲティング広告の法規制が議論されたり対策が進められたり
Google Analyticsが違法認定されたり、なんてことは起きないはずだからな
0412Name_Not_Found
垢版 |
2018/03/21(水) 22:11:58.49ID:???
>>408
そういやそういう仕様があったなw

jQueryで書くとこうなる。DOM API作ってるやつ
センスなさすぎだろう

$('.jscBtn').on('click', {name: 'my name'}, function(event) {
console(event.data.name); // "my name"
});
0413Name_Not_Found
垢版 |
2018/03/21(水) 22:29:08.80ID:???
>>408
へー。
名前付き引数でhandleEventに関数いれればできるのかあ。
勉強なった。
MDNみたけどそんなん記述見つからんかったなあ。
0414412
垢版 |
2018/03/21(水) 22:44:18.81ID:???
× console(event.data.name); // "my name"
○ console.log(event.data.name); // "my name"


>>404
リンク先読んで頭痛くなってきた
なんでこいつらこんな馬鹿なやり取りしてるんだ?

あんたが初心者だから難しくてわからないんじゃない。
リンク先の奴らが初心者で試行錯誤してるから、それ見てもわからないのは当たり前

まずセッションストレージはたかがイベントリスナーに変数を渡す程度では重すぎる
グローバル変数も、どこで書き換えられるか分からんのだから使ったらダメ

>>408のようにaddEventListenerの機能に助けてもらうのもありだけど
それを使わないとするなら、最初に出るべきコードはこれだろう

var handler = (function(data) {
 return function() {
  console.log(data.name);
 }
}({name: 'my name'}));

なれないと見にくいだろうけど↑は関数(イベントリスナー)を返す無名関数をすぐに実行する書き方
その関数に変数を紐づけているという形

document.querySelector('.jscBtn').addEventListener('click', handler, false);
0415Name_Not_Found
垢版 |
2018/03/21(水) 22:49:15.11ID:???
というかタイトルが「引数を渡す」で???ってなる
0416412
垢版 |
2018/03/21(水) 22:53:06.72ID:???
>>413
その書き方はJavaScriptっぽくないからね

何故かと言うと、その書き方は(昔の?)Javaのように
引数に関数を使用できない言語のための書き方
(DOM APIはJavaScriptだけの仕様ではないことに注意)

引数に関数を渡せないから、代わりに特別なメソッドを用意したオブジェクトを渡す

擬似言語で書くならば、こんな使い方を想定した仕様

class MyHandler implements Handler {
 constructor(data) {
  this.data = data
 }
 override handleEvent() {
  console.log(this.data.name)
 }
}
var handler = new MyHandler({name: 'my name'})

document.querySelector('.jscBtn').addEventListener('click', handler, false);
0417Name_Not_Found
垢版 |
2018/03/21(水) 22:57:44.39ID:???
>>414
逆にイベントハンドラで使いたい変数の中身を
addEventListener()後の処理で動的に変えたいとかもありうるわけで
そうすると414の書き方だと固定になるし変数あてても拘束されるのでは

あれはダメ、これはダメ、〜〜べき、って断定し過ぎじゃね?
0418412
垢版 |
2018/03/21(水) 22:59:28.65ID:???
>>413
JavaScriptは、ハッシュもオブジェクト(Object型クラスのインスタンス)なので
>>416の擬似コードに比べれば、>>408のように簡潔に書けるけど

> 名前付き引数でhandleEventに関数いれればできるのかあ。
解釈としては、イベントハンドラ関数の代わりに
イベントハンドラ関数が定義されているオブジェクトを渡す
と考えたほうが良いだろう
0419Name_Not_Found
垢版 |
2018/03/21(水) 23:41:10.48ID:???
そもそもイベントハンドラに何かを渡したいという設計が間違っている
そんなことをするとただ複雑になっていくのみ
イベントはイベントでただの一連の処理を継続するトリガーと考えるべき
つまりPromiseだとかObservableを使って抽象化する
0420Name_Not_Found
垢版 |
2018/03/22(木) 00:00:32.53ID:???
Observableと言えばリアクティブプログラミング
0422Name_Not_Found
垢版 |
2018/03/22(木) 00:41:22.47ID:???
バグのほとんどは、設計から生じる

素人は思いつきだけで、奇妙な設計をするから、バグる。
よく使われる・普遍的な、設計・デザインパターンじゃない

特に、素人が好きなのは、状態・外部に依存すること。
関数を抜けた後に、何かの状態を保存したがる。
これがダメ

理想的なのは、状態を持たない、関数型プログラミング
0424Name_Not_Found
垢版 |
2018/03/22(木) 01:00:39.21ID:???
jQuery使っておけ。多くのユースケースでベストな方法を用意してる

$('.jscBtn').on('click', {name: 'my name'}, function(event) {
 console.log(event.data.name); // "my name"
});
0426Name_Not_Found
垢版 |
2018/03/22(木) 01:34:40.93ID:???
>>422
そうはいっても素人は良い設計なんかわからないからね。
手本が必要。
だからよく設計されたライブラリを使ってみるのが良い。
jQueryとか
0427Name_Not_Found
垢版 |
2018/03/22(木) 01:44:08.33ID:???
しつけー自演だな。ライブラリスレじゃねーんだよボケ。
あらゆる質問についてそれ用のライブラリつかえばいいよってのは言語スレで出す回答じゃねーんだよボケ。
0428Name_Not_Found
垢版 |
2018/03/22(木) 01:45:52.29ID:???
え?自演じゃないよ。
単にライブラリの話をしてるだけ
0429Name_Not_Found
垢版 |
2018/03/22(木) 01:47:34.29ID:???
じゃあスレ違いだな。
ライブラリスレもjQueryスレもあるし。
0430Name_Not_Found
垢版 |
2018/03/22(木) 01:49:39.96ID:???
ここでjQueryに関連する話が出たら、
そりゃここでもするよ

ここでブラウザの話がでたら
ブラウザの話するでしょ?
0431Name_Not_Found
垢版 |
2018/03/22(木) 01:51:53.64ID:???
自分で出しといて出たらじゃないだろ白々しい
0433Name_Not_Found
垢版 |
2018/03/22(木) 01:57:47.42ID:???
>>417が気になるんだけど
これどっちが正しいの
0434Name_Not_Found
垢版 |
2018/03/22(木) 02:01:36.70ID:???
JSで何らかのデータを生成しても、
JSはセキュリティ上ユーザのPC上にそれを「ファイルとして」データを保存することはできなくなってると理解しています。
でもダウンロードでファイルを保存できるのだから
JSで生成したデータを一旦サーバに送ってサーバ上でファイルにして
それをクライアント側で改めてダウンロードするようにすればファイルとしてデータを保存できるってことですか?

そこで質問なのですが
クライアント側でサーバを介せずに、ユーザスクリプトで生成したデータを
ダウンロードする操作を擬似的に行って
ファイルに保存することってできないのですか?

ーー
まだJSはじめて間もなくてものすごく初歩的で頓珍漢な質問かもしれませんが、
勘違いしてるとおもうとこあったらつっこんでくさい。
0435Name_Not_Found
垢版 |
2018/03/22(木) 02:04:55.48ID:???
>>434
できるよ。

ちょっとアイツが書くから
まっといて
0436Name_Not_Found
垢版 |
2018/03/22(木) 02:18:49.41ID:???
>>433
どっちってどの話?
addEventListener()後の処理で動的に変えたいという話なら
こうすればいいわけで、別に何の問題もないよ
っていうかこの場合、dataをイベントハンドラに結びつける必要もないわけで

var data = {name: 'my name'}

var handler = (function(data) {
 return function() {
  data.name = 'your name'
 }
}(data));

document.querySelector('.jscBtn').addEventListener('click', handler, false);

setTimeout(function() {
 alert(data.name);
}, 5000)

セッションストレージやグローバル変数の話であれば、
この用途でそんなの使うとかありえないっていうのが正しい

>>417が言ってるのは徒歩1分の距離にあるコンビニに
車で行ってもいいでしょって言ってるレベル
0437Name_Not_Found
垢版 |
2018/03/22(木) 02:38:16.49ID:???
それはセッションストレージよりかなり軽いってこと?
0438Name_Not_Found
垢版 |
2018/03/22(木) 02:39:39.15ID:???
>>436
こういうことだな

var originalData = 'hoge';
// case2: var originalData = ['hoge'];
// case3: var originalData = {'name':'hoge'};

var handler = (function(recievedData) {
 return function() {
  console.log(recievedData); // 'hoge'
// case2:   console.log(recievedData[0]); // 'fuga'
// case3:   console.log(recievedData.name); // 'fuga'
 }
}(originalData));

document.querySelector('.jscBtn').addEventListener('click', handler, false);

originalData = 'fuga';
// case2: originalData[0] = 'fuga';
// case3: originalData.name = 'fuga';

値渡しされる内容の変数だと、外部の変更を受けず、
逆に言えば外部での変更を反映させたいと思っても反映させられない
// イベントハンドラ内部のconsole.logを再代入にしてどうすんだ

参照渡しされる内容の変数だと、その変数を参照できれば変更されうる
MyApp.somePropertyみたいな
グローバル変数を使うかどうかは単にその蓋然性の多寡に過ぎない

ついでにstorageは正直ちょっとやそっとじゃ体感できない差だと思うが
0439Name_Not_Found
垢版 |
2018/03/22(木) 02:41:53.98ID:???
というか、質問者が変数って言ってるんだから
オブジェクトそのものをそのまま渡すqiitaのURLのコメの条件を採用する必要がない
0440Name_Not_Found
垢版 |
2018/03/22(木) 02:45:04.95ID:???
> ついでにstorageは正直ちょっとやそっとじゃ体感できない差だと思うが
速度が問題なんじゃない。適してない道具を使うなということ
セッションストレージは情報を永続化させるもので
用途に有ってない道具を無理やり使うと想定外のバグを引き起こす
0441Name_Not_Found
垢版 |
2018/03/22(木) 02:46:33.19ID:???
>>440
> 速度が問題なんじゃない。

> まずセッションストレージはたかがイベントリスナーに変数を渡す程度では重すぎる

言ってることが変わってる
0442Name_Not_Found
垢版 |
2018/03/22(木) 02:53:36.04ID:???
重いっていうのは速度だけの話じゃない
無駄全般の話しだ
メモリも食うしストレージも食う
読み書きするコードも無駄だろう
0443Name_Not_Found
垢版 |
2018/03/22(木) 03:53:45.23ID:???
日本語の使い方がおかしい
わざと曖昧な言葉使ってののか
適当なのかしらんけど

プログラミング言語以前に日本語からちゃんとしたほうがいいわ
セッションストレージが永続ってのもしっくりこんし
重いの範囲も広く使いすぎ
0444Name_Not_Found
垢版 |
2018/03/22(木) 04:45:30.79ID:???
言うに事欠いてどこにケチ付けてんだワロタw
計算機科学用語のpersistantの訳語だろうがw
もしかして永久に続かないからおかしいもん!とか思ったのかな?アホスwww
訳語が日本語としておかしいのは「仮想」とか「束縛」とかもそうだと思うが。数学用語もそう。
ある文脈で通じるお約束でそもそものそこにケチ付けてもしょうがないだろ。
どうしてもやりたいなら言語学板ででもやれば?w
0445Name_Not_Found
垢版 |
2018/03/22(木) 05:20:51.61ID:???
localStorageはsessionStorageと比べて
永続性がある、永続的、ということはある
0446Name_Not_Found
垢版 |
2018/03/22(木) 05:22:28.69ID:???
本題スルーすごいですね
0447Name_Not_Found
垢版 |
2018/03/22(木) 05:26:48.29ID:???
ソフトウェアエンジニアリングの世界で
永続とか重いとか普通に使うだろ初心者かよ
0448Name_Not_Found
垢版 |
2018/03/22(木) 05:39:22.72ID:???
persistentはIT分野(Web関係では特に)
どっちかっていうと「持続的」じゃないか?
切るまでは持続するってことでpersistent connectionとか
永続はどちらかといえばpermanentな気がする
0450Name_Not_Found
垢版 |
2018/03/22(木) 06:01:44.27ID:???
本題スルーで有耶無耶で草
0451Name_Not_Found
垢版 |
2018/03/22(木) 06:02:42.27ID:???
また初心者のせいで言葉遊びに興じてるのか
0452Name_Not_Found
垢版 |
2018/03/22(木) 06:42:32.58ID:???
localStorage使うならMap用意するとか共有スコープに変数取るとかでも良いじゃん
そういうパターンと、リスナセット時に指定するパターンと、
同期的に書いてそのままのスコープで変数を使っていくパターンの3つがある
どれを使うかは状況によるし、お好みで
0453Name_Not_Found
垢版 |
2018/03/22(木) 06:50:07.99ID:???
ストレージ用語だと
Persistent(永続、ただし永遠に残るわけではなく、消えて欲しくないデータということ)
<->
Temporary(一時、ただし即座に消えるわけではなく、消えても良いデータということ)
0454Name_Not_Found
垢版 |
2018/03/22(木) 07:08:57.75ID:???
>>452
というより性質が違うんだから
目的や環境によって、良い悪いや好みではなく使い分けでは
0455Name_Not_Found
垢版 |
2018/03/22(木) 10:38:38.26ID:???
質問者はイベントリスナーに変数を渡したいとしか言ってない
勝手にそれ以上のことをしようとするな
0456Name_Not_Found
垢版 |
2018/03/22(木) 11:49:13.24ID:???
相手の空気読めずに仕事できないやつ多そう
0457Name_Not_Found
垢版 |
2018/03/22(木) 12:34:42.16ID:???
空気を読まないと行けないようなつまらん非効率な職場が理想なんか?
ただ単に上司の指示管理能力不足なだけだろ
0460Name_Not_Found
垢版 |
2018/03/22(木) 13:38:33.90ID:???
>>459
だからあいつが書くから待てっていってるだろ
0461Name_Not_Found
垢版 |
2018/03/22(木) 14:45:14.40ID:???
>>460
アイツは今忙しいのでおまえが答えてやれよ
0462Name_Not_Found
垢版 |
2018/03/22(木) 14:53:26.09ID:???
>>434,>>459
まさに考えている通りの手段で実装できる
今だとURL.createObjectURLを使うのがベターでググればいくつかサンプルも出るよ
0463Name_Not_Found
垢版 |
2018/03/22(木) 18:24:39.12ID:???
cssでdiv要素に {draggable: ture}追加して
dragendのイベントが発生した時に発火するイベントリスナーをつくって
要素を動かせるようにしたんだが動かんのだけど?
動かんと言うかドラッグできないんだが
時々まれに何かの拍子でドラッグできたりするんだが
またできなくなる。
なにこれ?
ふざけてんの?
0464Name_Not_Found
垢版 |
2018/03/22(木) 19:09:16.69ID:???
divにcssで背景画像か背景色を明示指定してみたら?
0465Name_Not_Found
垢版 |
2018/03/22(木) 21:48:04.89ID:???
まぁ、試しにやってみただけで他にやりようはあるんだけど
draggableつかって変わったやり方ためしてみたかっただけ。
0466Name_Not_Found
垢版 |
2018/03/22(木) 23:30:27.18ID:???
draggable なウィジェットなんて、jQueryUI でも使えば?
0467Name_Not_Found
垢版 |
2018/03/23(金) 07:42:38.22ID:7fKruZ4F
var sato = "hello";
function tanaka(v){return v;}
とある場合
tanaka(sato);←"hello"ではなく変数名"sato"が返って来るようにしたい
javascriptで使われた変数名を取得する方法ってありますか?
tanaka(sato,"sato");のような方法ではなく田中関数で変数名取得したいです
0468Name_Not_Found
垢版 |
2018/03/23(金) 12:33:37.94ID:???
そのような田中関数があったとして田中(1) とか田中({}) は何を返すことになるのかな
0469Name_Not_Found
垢版 |
2018/03/23(金) 12:34:54.99ID:???
それは無理な話
「"hello"」は家では「sato」というあだ名で呼ばれていて、学校では「v」というあだ名で呼ばれているということだから
0470Name_Not_Found
垢版 |
2018/03/23(金) 12:39:03.48ID:???
with-proxyを使えば可能かもしれない
value-proxyが無いと完璧な振る舞いはできないが
0471Name_Not_Found
垢版 |
2018/03/23(金) 12:41:58.15ID:???
>>463
確かdropだかdragoverだか他のイベントをいくつか処理する必要があったはず
俺も毎回慣れなくて調べる
0472Name_Not_Found
垢版 |
2018/03/23(金) 12:58:44.08ID:???
Object.keysとってwindowを走査すれば見つかるとは思うけど
文字列のペアが欲しいなら最初から連想配列として扱うべき
0473Name_Not_Found
垢版 |
2018/03/23(金) 15:23:21.58ID:dCiy5Oyf
>>467
const sato = () => { return 'hello' };
function tanaka(v){
console.log(v.name); //=>sato
console.log(v()); //=> hello
}
tanaka(sato);
0474Name_Not_Found
垢版 |
2018/03/23(金) 15:27:17.68ID:???
前提をイジるという高度なテク。
社会ではよく使う。
0475Name_Not_Found
垢版 |
2018/03/23(金) 21:48:25.89ID:clqmqM/e
>>471
kwsk
0476Name_Not_Found
垢版 |
2018/03/24(土) 05:49:05.09ID:???
エスパーの俺は
変数名取得なんてしないでスタックトレースを手動で出せばいいじゃないかと提案
0477Name_Not_Found
垢版 |
2018/03/24(土) 13:48:47.82ID:???
拡張機能作ってるんだけど(つまり他人が作ったサイト)

同じドメインの別のページの情報をページを移動せずに取得することって出来る?
0478Name_Not_Found
垢版 |
2018/03/24(土) 16:10:54.45ID:???
fetchかXMLHttpRequestを使えばいいよ
ブラウザ拡張機能なら大体は同等の拡張用APIもある
0479Name_Not_Found
垢版 |
2018/03/24(土) 21:03:35.91ID:???
各種設定を持たせるオブジェクトって、
今でも普通のオブジェクトでいいのですか?
それともMapオブジェクトの方がいいのでしょうか?
0480Name_Not_Found
垢版 |
2018/03/24(土) 21:16:35.79ID:???
普通にオブジェクトで良いんでない、JSONと相性良いし
使い勝手に困る様ならそれから変えても遅くはない
0482Name_Not_Found
垢版 |
2018/03/24(土) 21:18:48.55ID:???
>>480
ありがとうございます

>>481
何でいきなりスイッチ入ったんですか?
0483Name_Not_Found
垢版 |
2018/03/24(土) 21:19:02.75ID:???
特に理由がなければ普通のオブジェクトで良い

Mapの方が厳密な実装だが、
書き方が面倒くさい
リテラルぐらい用意しろと
0484Name_Not_Found
垢版 |
2018/03/24(土) 21:20:26.93ID:???
>>482
剃れとか言うからだろ!
俺の頭、剃れもんなら剃ってみろハゲ!!
0485Name_Not_Found
垢版 |
2018/03/24(土) 21:20:45.03ID:???
>>483
>書き方が面倒くさい

同意です
いまいちイケてないんですよね・・
0486Name_Not_Found
垢版 |
2018/03/24(土) 21:25:01.60ID:???
せめてこういう使い方ができないとダメだな

var map = new Map({a: 1, b: 2});
console.log(map["a"]);
map["a"]++;
map["a"] = 2;
0487Name_Not_Found
垢版 |
2018/03/24(土) 21:34:28.79ID:???
お手軽重複除去のために産まれてすぐ殺されるSetさんよりマシ。
var arr = ['a', 'b', 'b', 'c', 'c', 'c'];
var arrDistinct = [...new Set(arr)];
0488Name_Not_Found
垢版 |
2018/03/24(土) 21:57:25.36ID:???
剃る髪も無い開発者って・・・
0490Name_Not_Found
垢版 |
2018/03/24(土) 22:24:20.35ID:???
setは集合mapは写像
数学的周辺ではよく使う
かもしれない
0491Name_Not_Found
垢版 |
2018/03/24(土) 22:28:34.01ID:???
数学者「set(集合)はどういう時に使うものでしょうか?」
プログラマ「はい!重複除去のためです!UNIQする時に使います!」
数学者「・・・」
0492Name_Not_Found
垢版 |
2018/03/24(土) 22:29:01.21ID:???
mapって何のためにあるん?
オブジェクトじゃダメなん?
0493Name_Not_Found
垢版 |
2018/03/24(土) 22:31:25.31ID:???
キーにオブジェクト(っていうかポインタ?)が使える連想配列
って感じ?
0494Name_Not_Found
垢版 |
2018/03/24(土) 22:34:04.96ID:???
var key = 'a';
// var key = '__proto__';
var obj = {};
obj[key] = obj[key] ? obj[key] + 1 : 1;

文書に出現する、単語の数を数える場合、
その単語が未登録なら1、すでに登録されているなら、1増やす

こういう場合に、たまたま、__proto__ という単語を登録しようとするとバグル。
obj.__proto__ を上書きするから

var wordsMap : Map<String, Int> = new Map();
wordsMap["a"] = 1;
trace(wordsMap["a"]);

上は、Haxe のMap のコードだが、ES4 変換後のコードでは、
wordsMap["$" + key]
のように、キーの前に、$ 文字を連結している

他にも、
var obj = {x : {}};
のように、オブジェクト内のオブジェクトを使う事もできるが、
この方法でも、__proto__ ではバグル
0495Name_Not_Found
垢版 |
2018/03/24(土) 22:35:28.82ID:???
javascriptに楽に書けて簡単にループ扱えて便利な連想配列が無いのが悪い
0496Name_Not_Found
垢版 |
2018/03/24(土) 22:43:01.41ID:???
>>494
結局$連結するなら
毎回key = '$'+key;すればobjでも問題ないのでは・・・
0498Name_Not_Found
垢版 |
2018/03/25(日) 03:09:09.02ID:???
phpですらできるこういう記述がjavascriptにはできない
foreach( 連想配列 as キー => 値 )
 foo( 値*3, キー );

>>497
そっくりそのままこれできる?
0500Name_Not_Found
垢版 |
2018/03/25(日) 04:24:51.46ID:???
ライブラリで定義された関数使っとるだけやんけワロタw
「javascriptでは出来ませんごめんなさい」って言うのがよっぽど悔しいんだねwwwww
0501Name_Not_Found
垢版 |
2018/03/25(日) 04:24:54.09ID:???
>>499
わざわざfunction()にしなきゃいけないとか変な仕様
0502Name_Not_Found
垢版 |
2018/03/25(日) 04:38:57.47ID:???
言語構造の問題でそっくりそのままなんて不可能なんだから
そっくりそのままは不可能と言えばいいのに
0503Name_Not_Found
垢版 |
2018/03/25(日) 05:41:33.75ID:???
>>498
as構文がないから全く同じにはできないが、似たような書き方にはできる

const obj = {a:1, b:2, c:3};
for( const [k, v] of Object.entries(obj) ){
foo(v * 3, k);
}

const iterable = new Map([['a',1],['b',2],['c',3]]);
for( const [k, v] of iterable ){
foo(v * 3, k);
}

const array = [1, 2, 3];
array.forEach((v, k) => {
foo(v * 3, k);
});
0504Name_Not_Found
垢版 |
2018/03/25(日) 06:39:43.03ID:???
こういう時はMap使いやすいよね
0505Name_Not_Found
垢版 |
2018/03/25(日) 07:24:14.18ID:???
ローカル変数でもconstを使う必要ありますか?
上書きをするかしないかいちいち考えるよりも
全部letにした方が面倒くさくなくていいと思います
使われる範囲が広い変数の場合にはconstにすることにも意味があると思いますが
0506Name_Not_Found
垢版 |
2018/03/25(日) 07:34:11.56ID:???
>>505
不意の書き間違いやケアレスミスを防ぐためだけなので
ミスがないのなら、letでもvarでも問題ない
0507Name_Not_Found
垢版 |
2018/03/25(日) 08:29:41.17ID:???
基本全てをconstにしておいて変更の可能性をletで示す
ってのが理想論だけどまあvarじゃなけりゃ良いやって感じ
0508Name_Not_Found
垢版 |
2018/03/25(日) 08:49:21.73ID:???
構文は人間様が読めれば良いだけ
0509Name_Not_Found
垢版 |
2018/03/25(日) 09:19:39.63ID:???
全部varでなんか問題あります?
0511Name_Not_Found
垢版 |
2018/03/25(日) 12:14:24.51ID:???
回答ありがとうございます
ふと思ったのですが、なるべく全部constになるようにするっていう方向もありますね
しかし非破壊的な関数を挟むと再代入が発生するので
破壊的な関数を用意するという方向で。
メソッドチェーンで繋げてコードがすっきりというメリットもありますし
0512Name_Not_Found
垢版 |
2018/03/25(日) 12:44:28.54ID:???
>>505
> 上書きをするかしないかいちいち考えるよりも
> 全部letにした方が面倒くさくなくていいと思います

むしろ、上書きされると、この変数はどこで変更されているんだろう?って
考えないといけなくなるので、constの方が良い
もうこれ以上変更されないわけだから
0513Name_Not_Found
垢版 |
2018/03/25(日) 12:48:26.95ID:???
>>503
なるほど、lodashのentries(toPairs)はそう使うんですね

const obj = {a:1, b:2, c:3};
for( const [k, v] of _.toPairs(obj) ){
  foo(v * 3, k);
}
0514Name_Not_Found
垢版 |
2018/03/25(日) 12:50:56.22ID:???
>>508
> 構文は人間様が読めれば良いだけ

でもそれが重要なんだよな。
機械であれば変数名なんて適当でも良い

じゃあ機械様が読めれば良いのか?というと違う
コードは人間も読み書きするものなんだから
人間様が読めなければいけない
機械に合わせるのではなく人間に合わせるべき
0515Name_Not_Found
垢版 |
2018/03/25(日) 13:56:35.83ID:???
lodashのwithout関数で
除外するものを配列として与えたいのですが、
それは出来ないのでしょうか?
0516Name_Not_Found
垢版 |
2018/03/25(日) 13:59:55.88ID:???
>>515
あんたがほしいのは differenceじゃないの?
0517Name_Not_Found
垢版 |
2018/03/25(日) 14:00:55.32ID:???
まあ without でも スプレッド演算子使えばできるけど
0518Name_Not_Found
垢版 |
2018/03/25(日) 14:12:18.96ID:???
>>516
そうでした
微妙に異なる関数が揃ってるんですね
ありがとうございました
0519Name_Not_Found
垢版 |
2018/03/25(日) 16:56:58.32ID:???
固有とか列挙可とかでうっかり変なバグ出したくないから
ループさせるコレクションは配列使ってるわ

それでもライブオブジェクトとかいう余計なお世話でハマったりするけど
0520Name_Not_Found
垢版 |
2018/03/25(日) 17:07:02.62ID:???
>>519
それ日頃からバグになりやすいコードを書いてるってことじゃね?

バグになりにくい(?)データ型を使うんじゃなくて
バグになりにくいコードを書いたほうが良いよ

バグになりにくいという観点で不適切なデータ型を使うと
そのせいで本来ならやらなくてよかったコードが必要になるので
余計バグが増える
0521Name_Not_Found
垢版 |
2018/03/25(日) 17:15:45.36ID:???
>>520
フワッとした中身ないアドバイス()いらん
0522Name_Not_Found
垢版 |
2018/03/25(日) 17:19:11.80ID:g4s2nLcu
>>521
ふわっとしてるのは、バグになる理由とか書いてないからだよ
ライブオブジェクトでバグとかもさ理由書いてないし
(どうせ要素数でループとかしてるからだろうけど、
それを書いてないからふわっとせざるを得ない)
0523Name_Not_Found
垢版 |
2018/03/25(日) 17:25:32.28ID:???
一般論としてコードというのは一番手を抜いた状態が
最善な方法になっていないといけない

ましてや手を抜くとバグになる状態っていうのは一番やばい
もしそんな状態が有るとするならまずそれを解決すべき
0524Name_Not_Found
垢版 |
2018/03/25(日) 18:07:49.37ID:sD1JXPIO
pjaxを試してるんだけど
Firefoxでリロードしたとき、挙動おかしくならない?
http://develop.syake-labo.com/pjax/
こういうデモとかで、途中でリロードしたら戻るボタン押してもページが変わらなくなる。
Chromeなら大丈夫なんだけど。
どうすればいいんだろう。
0525Name_Not_Found
垢版 |
2018/03/25(日) 18:10:05.60ID:sD1JXPIO
↑追記
Firefoxでも更新ボタンだったら大丈夫だった。
アドレスバーでEnter押した時におかしくなる。
0526Name_Not_Found
垢版 |
2018/03/25(日) 19:55:36.12ID:???
>>523
その一般論、見たことないんだけど
同様のこと論じてるサイトや文献教えてくれ
0527Name_Not_Found
垢版 |
2018/03/25(日) 21:38:16.18ID:???
>>522
だからいらねぇつってんのw
日本語わからんのかw
0528Name_Not_Found
垢版 |
2018/03/25(日) 23:01:22.09ID:???
lodashで、_([1,2,3]みたいな感じのオブジェクト指向スタイルにしたものを
生の配列に戻すにはどうすればいいのでしょうか?
toArrayとかそれっぽいと思ったのですが、出てくるのはオブジェクトでした
0530Name_Not_Found
垢版 |
2018/03/25(日) 23:23:46.28ID:???
>>525
Fxはキャッシュが良く効くからね
まあChrome以外は無視しとけばOk
0533Name_Not_Found
垢版 |
2018/03/26(月) 00:03:03.77ID:???
>>526
「バグになりやすいコード」で検索して出てきた一番目

> これに対する私の見解であるが、一言で言ってしまえば、
> 「無理をしない」である。
> あらゆることについて無理をしない。
> 無理をせずに自明なコードだけ書いていればバグの入る余地がなくなる。
> Haskellをやりだしてから細かいことを書かなくなった
> (書きたくなくなった)。やりたいことを書けばいいのである。
> これはある意味で富豪的プログラミングに通じるのであるが、
> 今回の話は富豪的というところにとどまらない。
> 徹底的に首尾一貫して手を抜けというのである。

> 逆に言うと、手を抜くために思慮深くなれ、ということだ。
> プログラムを書く前に、ちょっと待った。
> ゆっくりと考えを巡らせてもっと簡素にかけないかを考える。
> ここで言う簡素というのはプログラムの長さではない。
> コード化する際に、いかに考える余地が入らないかである。
0534Name_Not_Found
垢版 |
2018/03/26(月) 00:26:18.00ID:???
一般論とグーグル検索一番目が一致する概念ってこと?
0536Name_Not_Found
垢版 |
2018/03/26(月) 00:33:43.39ID:???
グーグルは検索履歴によって表示する結果をかえるから
一番目に出てくるのは検索者の傾向をふまえた主観といってもかごんではない。
0537Name_Not_Found
垢版 |
2018/03/26(月) 00:35:47.86ID:???
>>536
はい、なのでシークレットモードで検索した
一番目の結果を貼りました。それが>>533です。
リンク貼り忘れていましたねw

バグのないプログラムの書き方 - 純粋関数型雑記帳
http://d.hatena.ne.jp/tanakh/20050306
0539Name_Not_Found
垢版 |
2018/03/26(月) 00:37:34.06ID:???
でさー、グーグルトップ=一般論って理屈はどっからでてきたの?
0540Name_Not_Found
垢版 |
2018/03/26(月) 00:40:06.25ID:???
逆、Googleトップだから一般論なんじゃなくて
一般論だからGoogleトップに出てきた
0541Name_Not_Found
垢版 |
2018/03/26(月) 00:42:39.40ID:???
>>540
一般論だからGoogleトップに出てきた
逆の意味わかってんのか?
俺は⇛なんてつかってないぞ?

だからそれを証明してくれw
どっからでてきたんだw
0542Name_Not_Found
垢版 |
2018/03/26(月) 00:45:27.64ID:???
一般論の定義と

グーグルトップのでてくるメカニズム

をそれぞれせつめしてくれ
0543Name_Not_Found
垢版 |
2018/03/26(月) 00:46:11.11ID:???
俺も ⇛なんてつかってないが?
0544Name_Not_Found
垢版 |
2018/03/26(月) 00:48:18.41ID:???
オブジェクトの分割代入で、
キーとは別の変数に代入することは出来ないのでしょうか?
const {width,height} = {width:100,height:100};
これが普通ですが
const {a,b} = {width:100,height:100};
こんな感じに別の名前の変数に代入したいのです
0545Name_Not_Found
垢版 |
2018/03/26(月) 00:48:27.62ID:???
>>542
一般論の定義なんてものはない。数学じゃないんだからさw
こういう場合は一般論の意味を調べるべき

https://dictionary.goo.ne.jp/jn/13688/meaning/m0u/

出典:デジタル大辞泉(小学館)

ある特定の、または個々の具体的な事柄を考えないで、
広く全体を論じる議論。世間に広く認められると考えられる論。「一般論として述べる」
0546Name_Not_Found
垢版 |
2018/03/26(月) 00:50:35.90ID:???
一般論というのはいいすぎでした。
検索で出てきたサイトでみたことをかきましたって認めればいいだけ。
0547Name_Not_Found
垢版 |
2018/03/26(月) 00:51:47.36ID:???
>>545
グーグルトップにでてくるメカニズム 、は?
0548Name_Not_Found
垢版 |
2018/03/26(月) 00:54:14.95ID:???
>>547
ある単語(この場合は「バグになりやすいコード」)に
最も適切なものがヒットする。

そしてそのサイトでも同様のことが語られていた。
一般的なことだからこそ、このスレ以外のその他のサイトでも語られてる
0549Name_Not_Found
垢版 |
2018/03/26(月) 00:55:55.47ID:???
別にGoogleトップであることは何も関係ないんだよ。

一般論の意味より、世間に広く認められると考えられる論なんだから
それが色んな場所で使われていることを証明すればいい

で簡単に見つかったサイトでも論じられていた
0550Name_Not_Found
垢版 |
2018/03/26(月) 01:08:52.08ID:???
>>548
ある単語(この場合は「バグになりやすいコード」)に
最も適切なものがヒットする。

はいうそw
一般論=グーグルトップはどう考えても結びつきませんw
一般論であることを示したいなら他の論拠を出さないと無意味
0551Name_Not_Found
垢版 |
2018/03/26(月) 01:10:34.14ID:???
>>530>>523と、
>>533の引用部分、似た言葉を使ってはいるけど
内容同じと思いきやそうじゃないな
0552Name_Not_Found
垢版 |
2018/03/26(月) 01:17:44.66ID:???
533を読んでみたけど

難解な処理を書かない、読んですぐ意図がわかるコードを書く、
遠くで宣言された変数の代入・再利用などわかりづらいことをしない、
そうすればバグが目に見えて減ると思う、

と、こういう主張だった
全然違くね?使ってる単語が似てるっぽいURLを後付で見つけてきただけじゃね?
0553Name_Not_Found
垢版 |
2018/03/26(月) 01:21:38.74ID:???
あと、>>533を主張してるURLは、例にならってGoogleで調べたところ
他の1つのURLで引用されているのみだった
これでは一般的、世間に広く認められている、とはとても言えない
0554Name_Not_Found
垢版 |
2018/03/26(月) 01:46:51.52ID:???
>>552
いや、あってるよ?
だから俺は疑問なんだ。

>>519がなんで固有とか列挙可で変なバグを出すのか?
ライブオブジェクトで変なバグを出すのか?

俺はここ数年(十年超えるかもね)そんなことでバグを出したことはない
かと言って、ぜったいにバグを見逃ししないぞと気を張って作業してるわけじゃない

俺のコーディングスタイルは最小のコード記述量で書くこと
書く量が少なければそこに入るバグも最小になる
もちろん難解な処理なんてないし、意図が変わるコード
遠くで宣言する変数とか再代入もしない、まさにそのサイトで主張している通り

それで俺はそんなバグなんか起きてないのに、
>>519がそんなことでバグでハマるのはそもそもの書き方に
問題が有るんじゃないかってこと。

おそらく些細なバグが起きないように、毎回対策のためのコードを書いてるのが原因じゃないか?
俺は些細なバグが起きないように、コードを書かない状態で対策されてる状態にしている。
0555Name_Not_Found
垢版 |
2018/03/26(月) 01:47:34.82ID:???
× 意図が変わるコード
○ 意図がわかりにくいコード
0556Name_Not_Found
垢版 |
2018/03/26(月) 02:08:06.90ID:???
>>520「書かなくていいコードを書くからバグが出る」
>>533「手を抜いた状態が最善でなければならない」
>>533「手を抜くとバグるというのはヤバい」

Googleで出てきたURL「人間が見てわかりやすいコードはバグが出ないと思う」

曖昧な表現で逃げ、主張をコロコロ変える>>554はバグってるな
0557Name_Not_Found
垢版 |
2018/03/26(月) 02:12:08.76ID:???
>>554いわく
>俺のコーディングスタイルは最小のコード記述量で書くこと
>書く量が少なければそこに入るバグも最小になる

>>537のURLいわく

>ゆっくりと考えを巡らせてもっと簡素にかけないかを考える。
>ここで言う簡素というのはプログラムの長さではない。

「まさにそのサイトで主張している通り」って
0558Name_Not_Found
垢版 |
2018/03/26(月) 02:19:13.05ID:???
なんか伸びてるとおもってきたら
バカが暴れてるのか
0559Name_Not_Found
垢版 |
2018/03/26(月) 02:23:08.54ID:???
>>557
タイプ数って勘違いしたのかw
面倒くさいな

そりゃ横に長い行を短くするのに一時変数に入れたりはするよ
そういうことじゃなくて、実行行と言ったら良いか?
定義行(代入行)ではなく処理の数を減らすんだよ。

と言ったら関数の先まで数えて同じとか言いそうだなw
コードというのは汎用的な処理とビジネス固有の処理に分けることができる
コード全体から汎用的な処理を切り離すことで、ビジネス固有の処理を減らすんだよ

汎用的な処理っていうのは、他で十分テストされ、例えば他のプロジェクトとかでも使われ
仕様が大きく変化することも、互換性が壊れる形で変化したりもしない、安定しているコード
だから基本読み飛ばすことができる。

読み飛ばせる部分を多くして、ビジネス固有の処理をへらす。これがバグをでなくするための方法
>>519はそういう所を毎回書いてるからバグだしてるんじゃねーのって話
0560Name_Not_Found
垢版 |
2018/03/26(月) 02:25:51.73ID:???
書けば書くほどボロが出る
その口でこうすればバグが最小になると言う
0561Name_Not_Found
垢版 |
2018/03/26(月) 02:29:40.88ID:???
じゃあ反論どうぞ

ってか>>519はどんなコード書いてんのかって話なんだ
0562Name_Not_Found
垢版 |
2018/03/26(月) 02:35:27.91ID:???
ライブなコレクションってgetElementsByClassName()の戻り値とかでしょ

ループに使うのがforでもfor inでもかかわりなく
ループの最初で別の変数に移して参照を持っておかないと
処理中に対象要素がなくなったら問題が出る
そういうもんじゃないの?
0563Name_Not_Found
垢版 |
2018/03/26(月) 02:41:43.05ID:???
>>562
そういう場合は処理中に対象要素がなくなるような書き方をしなければいい
ループの配列から取り除くのとDOMから取り除くことを同時にやるからそうなる
0564Name_Not_Found
垢版 |
2018/03/26(月) 02:46:31.97ID:???
仮に「最小のコード記述量=バグが最小になる」が
「コード分離して使い回せば記述量が減る」という意図だったとして
コードを分離できる状況かどうかや抽象性の設定などの問題もおいておくとして

しかしそれでもコード分離の話は>>537のURLには出てきていないな
0565Name_Not_Found
垢版 |
2018/03/26(月) 02:49:40.07ID:???
>>563
ライブなコレクション使うときはあれをしてはいけないこれを書いてはダメ
などと神経使わなきゃいけないのは使いづらい
そういう意味では>>537のURLの人が言ってることと同じだと思うんだけど

神経使わないで済むようにポインタじゃなくて文字列使えとか
スタックオーバーフローを怖がらずに定義どおりに再帰関数を書けとか
0566Name_Not_Found
垢版 |
2018/03/26(月) 02:50:52.41ID:???
>>537のURLの趣旨はまとめるとこういうこと
「(速度やリソース消費など難が多少あっても)やりたいことをストレートに書けばバグが出ない」
富豪的プログラミングへの言及や神経を使うポインタを避ける

どの辺が「まさにそのサイトで主張している通り」なんですか
0567Name_Not_Found
垢版 |
2018/03/26(月) 02:51:15.56ID:???
>>564
> しかしそれでもコード分離の話は>>537のURLには出てきていないな

そりゃそうよw

だって>>537のURLを出したのは
>>526
> その一般論、見たことないんだけど

って言ったからで、その一般論というのは
この話なんだから

> 一般論としてコードというのは一番手を抜いた状態が
> 最善な方法になっていないといけない
>
> ましてや手を抜くとバグになる状態っていうのは一番やばい
> もしそんな状態が有るとするならまずそれを解決すべき
0569Name_Not_Found
垢版 |
2018/03/26(月) 02:56:13.92ID:???
>>565
> ライブなコレクション使うときはあれをしてはいけないこれを書いてはダメ
> などと神経使わなきゃいけないのは使いづらい
> そういう意味では>>537のURLの人が言ってることと同じだと思うんだけど

そういうこと。
神経を使わずに適切なコードが書ける状態になってないのが問題という話

コード書く時に神経使っちゃダメだよ?レビューする方も神経使うだろ?
あれこれ考えて抜けがないよな?抜けがないよな?と何度も確認しなきゃ安心できないコードよりも、
ひと目見ただけで、このコードにバグはないと言い切れるコード、
逆にどうやればこのコードにバグを入れられるんだよ?みたいな方が良いに決まってるだろ?
0570Name_Not_Found
垢版 |
2018/03/26(月) 03:01:41.20ID:???
>>569
勘違いさせちゃって悪いんだけど、565のそのレスは
どちらかといえばむしろ>>519のほうが
>>537のURLと同じようなこと言ってると思う、っていう意味なんだ

hasownpropertyとか考えなくて良いようにオブジェクトを使わないで済む方法を選択
バッファ長や\0とか考えなくて良いようにポインタを使わないで済む方法を選択
ほら
0571Name_Not_Found
垢版 |
2018/03/26(月) 03:05:06.56ID:???
ライブコレクションでハマるパターンは以下のようなもの

1. ある条件の要素のコレクションを取得
2. 全要素をループ
3. 条件1に該当するものは、要素に対して処理を行う
4. 条件2に該当するものは、要素を削除する
5. 削除によって「全要素」の内容が変わってしまう
6. 2に戻る(「全要素」の中身が代わってしまってるのでバグになる)

これは以下のように書けば良い

1. ある条件の要素のコレクションを取得
2. 条件1に該当するものだけをフィルタして処理をする
3. 条件2に該当するものだけをフィルタして削除

シンプルになってバグではまることもない
0572Name_Not_Found
垢版 |
2018/03/26(月) 03:06:12.96ID:???
>>570
ライブなオブジェクトでハマってる時点で
問題解決してねーだろw
0573Name_Not_Found
垢版 |
2018/03/26(月) 03:14:29.94ID:???
>>571
変換などにより静的な配列を用いるのが確実
参照を保持している限り回収されず他関数等による影響も受けない
処理の順番や構造を気にする必要もなくなる
0574Name_Not_Found
垢版 |
2018/03/26(月) 03:14:36.76ID:???
ループを二回に分ければスッキリするのに
なぜか一つのループで別々の処理を行うやつが多い

>>571の例では要素に対しての処理と要素の削除
この別々の処理に対してループを使いまわしするのがいけない

なんでループを使いまわしてしまうのか?という答は
ループ処理を書くのが面倒くさいからではないのか?

だが>>571の下を見れば分かる通り、ループそのものがなくなってる。

ループ処理を書くのが面倒だからというのはわかるが、
1つのループにしてかつ注意して書くよりもそもそもループを無くした方が良い
根本的な問題を解決するのではなく、対処療法的な方法を取るから
逆に面倒になってることに気づこう
0575Name_Not_Found
垢版 |
2018/03/26(月) 03:17:57.09ID:???
>>573
> 参照を保持している限り回収されず他関数等による影響も受けない
> 処理の順番や構造を気にする必要もなくなる

じゃあどうするかって話だけど答えられる?
「ライブなコレクション」を保持して、ループで
一つ一つ処理している限りその問題は解决しない

>>571の後者の方法を更にシンプルにしよう(最初からそうしておけって?w)

1. ある条件の要素かつ条件1に該当するものだけをフィルタして処理をする
2. ある条件の要素かつ条件2に該当するものだけをフィルタして削除

たったの2工程。しかもこれ1と2の順番を逆にすることだってできる
0576Name_Not_Found
垢版 |
2018/03/26(月) 03:29:28.19ID:???
>>575
君の話は、前提として
・順番を逆にすることができる
・各々の処理が相互に関係しない
という処理である場合のみ利用可能すなわち汎用性に乏しいのでは
静的な配列にしてしまえばまず問題がない
答えられるかというのは何をだ
0577Name_Not_Found
垢版 |
2018/03/26(月) 03:36:54.00ID:???
>>576
> 静的な配列にしてしまえばまず問題がない

ではそこが問題だな。
"毎回" 静的な配列になるようになっていないのが問題

静的な配列にするのが "追加作業" になっているならば
それを追加作業ではなく、標準(一番楽な書き方)で
そうなるようにしておくのが正しい

追加作業だとどうしても手抜きで見逃してしまう
ましてや追加作業が必要な場合がレアケースだと絶対にハマる
0579Name_Not_Found
垢版 |
2018/03/26(月) 04:05:26.68ID:???
そんなオールスターいらんwww
0580Name_Not_Found
垢版 |
2018/03/26(月) 04:13:04.26ID:???
変な引用文と改行入れてんのはいつもの荒らしだから触んのやめなさいよ

>>544
const {width:a, height:b} = {width:100, height:100};
0581Name_Not_Found
垢版 |
2018/03/26(月) 04:21:42.08ID:???
>>580
そんな書き方があったのですねー
ありがとうございました
0582Name_Not_Found
垢版 |
2018/03/26(月) 10:23:32.60ID:???
>>579
オールスターって何?
単に一番単純な書き方が一番安全にするという話だけど
安全側に倒しておくだけ
0584Name_Not_Found
垢版 |
2018/03/26(月) 11:50:52.84ID:???
https://dictionary.goo.ne.jp/word/en/all-star/

((限定的)) (ある地域・リーグの中から選抜された)一流選手をそろえた,オールスターの
((限定的)) スター総出演の,人気俳優をそろえた
━━ [名詞] 〔スポーツ〕 ((通例 all-stars)) オールスターチームに選ばれた選手.

やっぱり意味が分からん。何をそろえたの?
0587Name_Not_Found
垢版 |
2018/03/26(月) 16:07:20.25ID:???
ネットの記事で、jQueryやlodashの機能は今では標準のJSに取り込まれているので
使う必要がないという記述を見ました
そうなのでしょうか?
自分はそこそこは取り込まれているものの、
やはり今でも使った方がいいように思います
0588Name_Not_Found
垢版 |
2018/03/26(月) 16:11:11.06ID:???
取り込まれているのが本当なら、
jQueryやlodash使っていれば、これからも使えるってことだよ
だって標準で取り込まれたんだからw
0589Name_Not_Found
垢版 |
2018/03/26(月) 16:55:07.46ID:???
必要だと思った奴だけ使えばいい
必要かどうか自分で判断できないと開発はやっていけない
0590Name_Not_Found
垢版 |
2018/03/26(月) 19:00:37.43ID:???
なるべくライブラリを使わない方針にしても
生JSがカバーしてない部分が出てくる
→その部分はライブラリを使う
→全面的にライブラリの作法に則った方が全体として綺麗になる
ってなりがちですよね
0591Name_Not_Found
垢版 |
2018/03/26(月) 19:06:46.41ID:???
なりがちじゃないかもしれませんね
0592Name_Not_Found
垢版 |
2018/03/26(月) 20:24:35.39ID:???
自分のブログ内の記事タイトルをランダムに表示させるスクリプトを作成することは可能でしょうか?
下記サイトのようにボタンをクリックするとランダムで過去記事のタイトルリンクが表示されるというものです
http://www9.plala.or.jp/oyoyon/html/script/randomlink.html

ツールを埋め込めば簡単なのですが、ページが重くなってしまうのでできればJavascriptやphpなどで対応できたらと考えてます
よろしくお願いします
0595Name_Not_Found
垢版 |
2018/03/26(月) 20:53:26.70ID:???
>>587
lodashはおいといて、jQueryで言うとその互換性担保の役割と
仮想DOM的な役割は終わりつつあるのは確かだと思う

jQueryって、荒れた凸凹の溶岩の上でも耐えられるオリハルコンの仮設住居を置いて
強制的にその中で作業させるくような感じだからね
でも今からは地面の荒れもだいぶ収まってきて気が利いた砂利くらいが引いてあるようになったから
いきなり仮設ドーンじゃなくて、舗装から少しずつ構築していって
必要十分な建物を作っていく方が良いんじゃないかって感じなのよ
0596Name_Not_Found
垢版 |
2018/03/26(月) 21:02:53.32ID:???
>>592
javascriptにできないことはない
史上最強の言語
0597Name_Not_Found
垢版 |
2018/03/26(月) 21:20:47.26ID:???
jQueryに「仮想DOM的な役割」(プギャーハライテーwww)などない。徹頭徹尾生DOMをイジるためのライブラリだ。
0598Name_Not_Found
垢版 |
2018/03/26(月) 22:07:26.50ID:SO96wGYY
>>593
>>594
>>596
ありがとうございます
トライしてみます
0599Name_Not_Found
垢版 |
2018/03/26(月) 22:11:44.01ID:???
オリハルコンとかゲーム脳が過ぎるんじゃないかね
0600Name_Not_Found
垢版 |
2018/03/26(月) 22:19:31.11ID:???
たしかにjQueryの互換性を吸収する役割はかなり小さくなったと思います
でもquerySelectorがあっても
removeClassみたいなのはないのでは?
複雑な処理ではありませんが、わざわざ自分で書きたくはありません
0601Name_Not_Found
垢版 |
2018/03/26(月) 22:22:01.35ID:???
element.classList.add() / element.classList.remove() のことか?
0602Name_Not_Found
垢版 |
2018/03/26(月) 22:26:43.20ID:???
>>601
ん?あったんですか?
メソッドも揃ってるなら、そろそろ脱jQueryしてみてもいい時期なのかもしれませんね
0604Name_Not_Found
垢版 |
2018/03/26(月) 22:58:10.99ID:???
揃える髪も無いくせに・・・
0605Name_Not_Found
垢版 |
2018/03/26(月) 23:20:28.85ID:???
ちょっと前に
子ノードに探してるものがあるかどうかのチェックの質問あって
forで探せよっておこられてたけど
あれもメソッドがあるw
0606Name_Not_Found
垢版 |
2018/03/26(月) 23:41:50.54ID:???
その流れは知らんけど既に目当てのnodeが参照できているなら
Node#contains() で結果をbooleanで取れる
0607Name_Not_Found
垢版 |
2018/03/26(月) 23:43:57.91ID:???
classListなんてIE10から既に対応しているという
0608Name_Not_Found
垢版 |
2018/03/27(火) 00:14:28.24ID:???
>>602
> メソッドも揃ってるなら、そろそろ脱jQueryしてみてもいい時期なのかもしれませんね
脱jQueryを目的としている時点でjQueryは使い続けられることが
容易に想像できるよな。手段が目的になってるわけだから

残念ながらDOM APIにあるのはjQueryのサブセットだ
更に言うならば事あるごとにループが必要でjQueryのような
簡潔な記述は到底不可能だ

DOM APIが勝っているのは、実行速度と初回ダウンロードサイズだが
実行速度はマシンスペックの高さでスマホでも問題になってないし
ダウンロードサイズはCDNを使うことで他のサイトのキャシュが活かせる
そうなるとライブラリを使わないほうが記述量は増えるので
現実的にはjQueryを使ったほうがサイズが減ることも多い
0609Name_Not_Found
垢版 |
2018/03/27(火) 00:27:15.02ID:???
ところでCDN使うってことは
CDNにどこからのアクセスかリファラでバレてしまうってことだよね?
0610Name_Not_Found
垢版 |
2018/03/27(火) 00:28:46.08ID:???
>>608
各サイトでバージョンバラッッバラなんだが…
加えてminじゃない奴使ってるクソサイトまで…
0611Name_Not_Found
垢版 |
2018/03/27(火) 00:43:26.53ID:???
>>610
バラバラでも無限にあるわけじゃないしw

それから自分のサイトから配信するよりもCDNを使ったほうが高速で、
自分のサイトのトラフィックを減らすという効果もある
全部自分で書くと、その分自分のサイトで配信する量が増えてしまうが
jQueryにそれを逃してやると、減らせるわけさ
0612Name_Not_Found
垢版 |
2018/03/27(火) 01:20:29.62ID:???
イベントリスナの掃除とかまで考えると
もうjQuery使えばいいじゃんってなりますね
jQueryを使わなくなるのは、jQueryの代わりをしてくれるライブラリやフレームワークを使う時なのかも
0615Name_Not_Found
垢版 |
2018/03/27(火) 05:08:35.51ID:???
>>597
あるよ
jQueryは機能の拡充ではなくて基盤から提供し直す
ライブラリというよりフレームワークに近いものだから
0616Name_Not_Found
垢版 |
2018/03/27(火) 06:01:02.77ID:40/0KQpl
jQueryのソースコード読んでたら
elem = elements[ index ];
if ( !elem.style ) {
continue;
}
こんな記述があったんだけどstyleがfalseになることってあるの?
0617Name_Not_Found
垢版 |
2018/03/27(火) 08:08:50.08ID:???
>>615
> ライブラリというよりフレームワークに近いものだから
プログラマが書いたコードから呼び出すのがライブラリ
プログラマが書いたコードを呼び出すのがフレームワーク
jQueryはどうみてもライブラリだ
0618Name_Not_Found
垢版 |
2018/03/27(火) 17:39:41.98ID:???
そもそもjQueryを使うデメリットってありますか?
0619Name_Not_Found
垢版 |
2018/03/27(火) 18:48:03.66ID:???
もちろん仮想DOM勢には劣るものの大抵のサイトの規模ならDOM操作の保守性は少し上がるかな。ただ一ヵ所二ヵ所くらいしかDOM操作しないのに導入するとたったそれだけのためにjQueryという巨大コードのパースが完了するまで待たされる。容量も増える。
一ヵ所二ヵ所くらいならDOMAPIで書けやと思うじゃん。
ところがあいつら書かないんじゃなくて書けないんだよな。
調べる気もなし。
強いていうならそういうゴミを量産してしまうのがデメリット。
0620Name_Not_Found
垢版 |
2018/03/27(火) 18:54:39.97ID:???
労力と生産性
人生には限りがある
時間を大切にね
0621Name_Not_Found
垢版 |
2018/03/27(火) 18:59:08.66ID:???
forループ内でsetTimeout書いてsetTimeoutの中の処理がおわったら次のループに行くようにしたいんだけど
どうすればいいのでしょう?

for () {
for () { setTimeout() }
}
な感じです。
0622Name_Not_Found
垢版 |
2018/03/27(火) 19:53:07.24ID:???
promiseとreduceを使え。
setTimeoutのコールバックのケツでresolveしろ
0623Name_Not_Found
垢版 |
2018/03/27(火) 21:12:51.30ID:???
>>620
jQueryを導入する無駄な時間を大切にね
0624Name_Not_Found
垢版 |
2018/03/27(火) 21:30:52.09ID:???
>>619
> もちろん仮想DOM勢には劣るものの大抵のサイトの規模ならDOM操作の保守性は少し上がるかな。ただ一ヵ所二ヵ所くらいしかDOM操作しないのに導入するとたったそれだけのためにjQueryという巨大コードのパースが完了するまで待たされる。容量も増える。

はっきり書いておきましょう。

ただ一ヵ所二ヵ所くらいしかDOM操作しないのに
"仮想DOM" を導入すると
多数のJavaScriptファイルを読み込んだ上に
HTMLを大きく書き換えないといけないから
仮想DOM勢、つまりReactは導入されないんですよ
0625Name_Not_Found
垢版 |
2018/03/27(火) 21:32:50.33ID:???
ついでに仮想DOMが敗北したという話を見つけたので書いておきますね

https://html5experts.jp/shumpei-shiraishi/21754/

> laco しかし、仮想DOMは速かったけど、Angularも追いついちゃいましたね。
> しかも仮想DOMなしで。結局仮想DOMってどうだったのかなあ…と。
> 「ポイント、そこじゃなくない?」っていう(笑)。 (筆者注: ここ、lacoさんがイベントを盛り上げるため煽ってくれてます)
>
> koba04 まあ、仮想DOMだからこそ、ただの関数みたいな形でコンポーネントを簡単に作れるようになったので…。
>
> laco でも、最近Pure Componentって入ったじゃないですか。Shallow Rendererとか。
> あれってどうなんですか?この間ものすごく疑問に思って。Pure Componentにすると、
> オブジェクトの状態を自動で見て、自動で変更検知してくれるってやつですよね。 あれって、Reactがやりたかったことなんですか?
>
> koba04 あれは、オブジェクトツリーがでかくなると仮想DOM比較のコストもバカにならないので、
> その比較すらも飛ばしたい時に使うっていう感じです。
>
> laco 仮想DOMのアルゴリズムが敗北したってことじゃないですか?(笑)
>
> shumpei 煽る煽る(笑)。
>
> koba04 基本的にはそこまで必要とするものでもなくて、よっぽどパフォーマンスが求められる場面で使われるものかなと思っています。
>
> yosuke_furukawa ぼくとしては、パフォーマンスのチューニングポイントが増えたって話だと思ってます。
> 仮想DOMの敗北については、次のサーバーサイドレンダリングでぼくが話をするんで、まあここはこれくらいでいいんじゃないかなと(笑)。
0626Name_Not_Found
垢版 |
2018/03/27(火) 21:36:02.53ID:???
・一度使い出したら全部作り直す覚悟がないと使うのをやめられない
・そんなん要りません
0627Name_Not_Found
垢版 |
2018/03/27(火) 21:44:19.01ID:???
>>624
日本語読めないのかなw
>>619が言ってるのは一ヵ所二ヵ所のDOM操作はノー仮想DOMノーjQuery、Yes生DOMAPIだよ?w
藁人形論法かな?w
0629Name_Not_Found
垢版 |
2018/03/27(火) 22:17:31.98ID:???
ajax依存のサイトのアクセス解析って一体どうやってるの?
0630Name_Not_Found
垢版 |
2018/03/27(火) 22:33:14.36ID:???
>>627
アホがw そんなことわかってるわ

>>619が一箇所二箇所しかDOM操作をしないなんて
実際にはありえない例を持ち出してきたから、

一箇所二箇所しか使わないのが世の中にありふれてるんじゃなぁ
仮想DOMなんて流行りませんわなwww
っていう皮肉言ってんだろうが
0631Name_Not_Found
垢版 |
2018/03/27(火) 22:33:26.62ID:???
生jsで書くのってそんな面倒臭い?
設計段階に比べたら時間も労力も全然かからないから
気になったことがないんだけど
0632Name_Not_Found
垢版 |
2018/03/27(火) 22:38:29.52ID:???
IEのどのバージョンまで対象にするかによる
0633Name_Not_Found
垢版 |
2018/03/27(火) 22:40:10.64ID:???
>>631
面倒くさい。特に同じ要素が複数あったら嫌になる。
書くのも面倒だし読むのも面倒
本質ではない処理が大半を締め、あれじゃバグはなくならないと思う
関数型言語を勉強すると良いよ
0634Name_Not_Found
垢版 |
2018/03/27(火) 22:41:00.51ID:???
>>630
流行る流行らないじゃなく一ヵ所二ヵ所のDOM操作ならjQueryだろうが仮想DOMだろうが等しく無駄。無能の証明。
ゴキブリ潰すのに戦車がないと戦えませんと言って泣いているようなもの。
0635Name_Not_Found
垢版 |
2018/03/27(火) 22:43:02.60ID:???
DOM APIが基本的に手続き型の構造をしているのが問題
一行ずつ処理を眺めていないと最終的な結果がわからない

それに対してjQueryだとコードが宣言的になる。
「なになに(セレクタ)は、こうだ」という風に宣言的に書けるから
状態を気にしなくて良くなる。

それはCSSの書き方と違い。(CSSも宣言的な言語)
0636Name_Not_Found
垢版 |
2018/03/27(火) 22:43:51.97ID:???
>>634
> ゴキブリ潰すのに戦車がないと戦えませんと言って泣いているようなもの。

ゴキブリ潰すのにはスリッパ(jQuery)で十分戦えますよ?
例えが変ですねw
0637Name_Not_Found
垢版 |
2018/03/27(火) 22:46:16.00ID:???
>>633
同じ要素が複数で面倒って意味がわからない
腕が悪いやつのHTML設計で苦労させられてる感じ?
0638Name_Not_Found
垢版 |
2018/03/27(火) 22:47:29.68ID:???
>>632
IE9とIE9以前が対象に入ることがなくなってきた
平和でいいわ
0639Name_Not_Found
垢版 |
2018/03/27(火) 22:49:08.18ID:???
>>635
DOMガチャガチャいじらなきゃならない場合結局DOMの初期状態から操作ごとにどのようにDOMが変化するか実行順に追ってかないとセレクトスカるが…
操作対象全要素にidふってあれば別だが。
0640Name_Not_Found
垢版 |
2018/03/27(火) 22:50:17.23ID:???
>>637
普通コンポーネント的に設計しますよね?
例えば画面上にJavaScriptで拡張された入力フィールドが複数あるとか

jQueryを使うと一つだけでも複数あっても
まったく同じ書き方ができます。

それはCSSと同じなんですよ。

.klass { color: red } とすると
class=klassである要素が全て赤になります。
同等のことをjQueryで書くと
$('.klass).css({color: 'red'}) です。
CSSと文法が少し違うだけと考えられます。

でもDOM APIじゃこうは行きません
0641Name_Not_Found
垢版 |
2018/03/27(火) 22:51:14.95ID:???
>>639
> DOMガチャガチャいじらなきゃならない場合結局DOMの初期状態から操作ごとにどのようにDOMが変化するか実行順に追ってかないとセレクトスカるが…

そういう書き方になっちゃうからDOM APIはだめなんですね。
バグが減らないといったのはそういうことです。
0643Name_Not_Found
垢版 |
2018/03/27(火) 22:52:56.53ID:???
DOM APIの話でしょ? 同じことをDOM APIですると
もっとひどいことになるんですからw
0644Name_Not_Found
垢版 |
2018/03/27(火) 22:55:04.93ID:???
>>640
それこそ意味がわからない
同じイベントハンドラ関数を適用すれば良いのでは
上位層でまとめて面倒みてもいいし
処理が少し違うだけなら大部分を再利用可能に作ればいいし
0645Name_Not_Found
垢版 |
2018/03/27(火) 22:55:46.87ID:???
いや、jQuery。
DOMを操作するんだから操作前と操作後でDOMが変化するのは変わらん。
その状態にあったセレクタ書くには結局上から見てくしかない。
0646Name_Not_Found
垢版 |
2018/03/27(火) 22:56:55.06ID:???
>>644
> 同じイベントハンドラ関数を適用すれば良いのでは
今はイベントハンドラの話なんかしてませんが?
0647Name_Not_Found
垢版 |
2018/03/27(火) 22:58:47.17ID:???
>>646
じゃあ「例えば画面上にJavaScriptで拡張された入力フィールドが複数あるとか」のところを
もっと具体的に話してもらえないかな
どんな状況で何がどう面倒なのか全然わからない
0648Name_Not_Found
垢版 |
2018/03/27(火) 23:00:05.07ID:???
>>645
> DOMを操作するんだから操作前と操作後でDOMが変化するのは変わらん。

それが間違った使い方。DOMを操作するとメンテナンス性が下がる
DOMは基本操作してはいけない。見た目を変えたいならそれはCSSでやるべきこと
見た目はCSSというのは、なんども言われてる話だろ

CSSで変えるのだから、ウェブデザイナが手動でclassを変更することで
JavaScriptを必要とせずに、状態に応じた見た目を作ることができる。
作業の分担ができる。JavaScriptでやるのは状態(クラス等)を変えるのみ

DOM APIでDOMをガシガシ操作なんかするからバグ減らないんだよ。
0649Name_Not_Found
垢版 |
2018/03/27(火) 23:00:47.74ID:???
ある要素から特定の親の要素取得するのってどうやってやるの?
jQueryでいうところの .parents('.foo') みたいなの
.parent() は .parentNode で取れるけど .parents('.foo') にあたるのはないよね
parentNode でループしながら
if (element.classList.contains('foo')) するしかないのかな
0650Name_Not_Found
垢版 |
2018/03/27(火) 23:02:33.65ID:???
>>648
おいおいjQueryは基本DOM操作のためのライブラリだろ…
DOM操作に使うなってんなら用なしだわ。
0651Name_Not_Found
垢版 |
2018/03/27(火) 23:03:41.43ID:???
入力行を増やしたり減らしたりする
これDOM操作ですよね
0652Name_Not_Found
垢版 |
2018/03/27(火) 23:04:34.43ID:???
>>651
jQuery君が言うにはそういうことにjQuery使ってはいけないらしい。
0656Name_Not_Found
垢版 |
2018/03/27(火) 23:09:42.10ID:???
>>647

https://jsfiddle.net/wamwg7b0/

じゃあ例えばコレ

数値を入れたらsuccess(緑)になる入力フィールド×5

JavaScriptのコードだけ転載すると、これだけ
入力フィールドがいくつ有ってもこれだけだし、
ループも条件判定もない。

$('[type="text"]').on('keyup', function() {
 $(this).toggleClass('success', $.isNumeric(this.value))
})

keyupというイベントのタイミングで
「入力値が数値ならsuccesである」を適用する
宣言的というのはこういう事
0659Name_Not_Found
垢版 |
2018/03/27(火) 23:20:54.67ID:???
>>656ってイベントハンドラの話だよな・・・それとも俺の目が腐ってるのか
0660Name_Not_Found
垢版 |
2018/03/27(火) 23:23:08.99ID:???
>>659
検索に引っ掛かったのがそれだったんだろwww
0661Name_Not_Found
垢版 |
2018/03/27(火) 23:56:31.59ID:???
>>649
var elements = document.getElementsByClassName( 'footer-menu' ) ;
elements[0].parentNode.removeChild(elements[0]) ;

素のJavaScript だと、自分自身を削除するのにも、
一旦親を取得して、親から子供を削除する

頭おかしいw
0662Name_Not_Found
垢版 |
2018/03/28(水) 00:06:18.45ID:???
jQueryはセレクタで選択される対象が仮に存在しなくても
その後のメソッドでエラーが出ないところがいいですね
これは生JSでは出来ないのでは?
0665Name_Not_Found
垢版 |
2018/03/28(水) 02:04:48.89ID:???
>>661
document.getElementById('661').remove()


はい、お前のくそコメント消えましたw
0667Name_Not_Found
垢版 |
2018/03/28(水) 02:46:44.72ID:???
>>665
おい。それclassじゃできないぞ

document.getElementsByClassName('.hage665').remove()
0668Name_Not_Found
垢版 |
2018/03/28(水) 02:47:34.83ID:???
$('.hage665').remove()

素晴らしい。これ以上減らせと言われてもできないレベル
0669Name_Not_Found
垢版 |
2018/03/28(水) 02:54:54.84ID:???
getElementsByClassNameはネイティブで、対する$の実装は何百行ものjavascriptコードだけどな。
この点はいくら強調してもし過ぎるということはない。
0670Name_Not_Found
垢版 |
2018/03/28(水) 02:58:40.88ID:???
あれ?jQuery君jQueryはDOM操作するものじゃない!jQueryでDOM操作してはいけない!って言ってたのにw
意見コロコロ、てのひらクルクル、頭パッパラパーwww
0672Name_Not_Found
垢版 |
2018/03/28(水) 09:07:59.29ID:???
汎用性の高いモノに対しての利便性向上、jQueryはこれに尽きる
このことを否定するならプログラミングを否定するのと同様
プログラミングは芸術作品ではなく、コンピューターに意図的に処理をさせることが目的
個人の意図の範疇
0674Name_Not_Found
垢版 |
2018/03/28(水) 11:46:03.36ID:GLWrEKsB
生jsでjQueryを再現するには
基本的に配列を生成して配列を返す処理をしなければいけないですね?
たとえ要素が一つと分かっていても、
getElementIdではなくquerySelectorを使って、
たとえ要素がなくてもその後のメソッドチェーンでエラーが出ないようにしないと
再現にはなりません
0675Name_Not_Found
垢版 |
2018/03/28(水) 11:59:47.26ID:???
まったく同じにしたいならjQueryくんじゃないがさすがにjQuery使えよ。
jQuery内部でquerySelector使ってるよ。
jQuery再実装とかwww
0676Name_Not_Found
垢版 |
2018/03/28(水) 12:32:12.15ID:???
それはその通りですね
結局jQueryを使うか使わないかということよりも
関数型パラダイムに則って書くかどうかの方が重要なのでしょうね
0677Name_Not_Found
垢版 |
2018/03/28(水) 12:53:40.72ID:???
jQueryを使えば確かにクラスで複数の要素を取得して楽に処理できるけど
普通はそんなことあまりしないからな
jQueryが当たり前なってるからHTMLの段階でなるべくjQueryで扱いやすいように設計してるだけ
jQueryを使う気が最初から無ければそれで組みやすいように設計するだけ

つまりjQueryに考え方が依存して過剰評価しているだけ
0678Name_Not_Found
垢版 |
2018/03/28(水) 12:58:52.02ID:???
>>677
> jQueryを使えば確かにクラスで複数の要素を取得して楽に処理できるけど

jQuery君によればjQueryでDOM操作してはいけないらしいぞw
0679Name_Not_Found
垢版 |
2018/03/28(水) 13:31:50.16ID:???
簡単に云うとですね
ここの質問に出てくるようなレベル、失礼、用途ならjQueryを使った方が利便性が向上するということなんです
0680Name_Not_Found
垢版 |
2018/03/28(水) 14:41:35.92ID:???
当たり前だ。何百行もコードロードして利便性が下がるライブラリなんか死んでしまえ。
そうではなくてここはjavascript の質問用スレだから。
0681Name_Not_Found
垢版 |
2018/03/28(水) 14:45:40.81ID:???
定期的にjQueryの話題が出てきて不毛な議論がループするので禁止してくれ
0682Name_Not_Found
垢版 |
2018/03/28(水) 20:03:10.81ID:???
>>677
> jQueryを使えば確かにクラスで複数の要素を取得して楽に処理できるけど
> 普通はそんなことあまりしないからな

え? CSSでclass使うでしょ?
そのclassに当てはまるもの全てに処理することってよくあるよ
0685Name_Not_Found
垢版 |
2018/03/28(水) 22:28:13.59ID:???
>>682
いや、そんなにないと思う
どちらかと言えばそれは当てはまるもの全てに処理したいから、class使ってねということだろう
そういう場合はカスタムエレメントでも使ったほうが良い
そうすれば要素が作られた時、挿入されたときに即座に適宜処理ができるんだから

あとから要素をclassで検索して機能を付与するとか、
スマートな解決策のように見えるかもしれないけど、それって実際はただのハックだからね?
どっかの誰かが作った物があって、それに対してハックしたいなら非常に便利が良いと思うよ
でも今どき、オマケでJSによってページを補正するみたいな開発や考え方はしないからね

HTML5の勧告に纏わる公式文書にも書いてあったけど、
HTMLっていうのはアプリケーションプラットフォームになってるんだよ
つまり土台であって、その上にJSとか乗っかって1つのものができるわけ
それが横並びだとか、化粧程度だとか、もしくはJSはHTMLを改造するためのドリルみたいに
捉えてるのだとしたら、その考え方は古臭いと思うよ
0686Name_Not_Found
垢版 |
2018/03/28(水) 23:31:40.90ID:???
> そういう場合はカスタムエレメントでも使ったほうが良い

そのカスタムエレメント作る用途で使えるって話でしょ?

っていうか、どうやってそれ作るの
ちょっとサンプル書いてみてよ
0687Name_Not_Found
垢版 |
2018/03/28(水) 23:32:38.83ID:???
> HTMLっていうのはアプリケーションプラットフォームになってるんだよ
それは一部の話ね。

ブログ、ニュース、企業サイト、情報掲載と、
これらウェブの大半はアプリケーションじゃない
0688Name_Not_Found
垢版 |
2018/03/28(水) 23:39:11.04ID:???
jQueryはいまカスタムエレメントを実現するのに
一番適しているってことで
0691Name_Not_Found
垢版 |
2018/03/29(木) 01:33:56.47ID:???
135 名前:Name_Not_Found[sage] 投稿日:2018/03/28(水) 23:39:20.81 ID:???
685Name_Not_Found2018/03/28(水) 22:28:13.59ID:???
>>682
いや、そんなにないと思う
どちらかと言えばそれは当てはまるもの全てに処理したいから、class使ってねということだろう
そういう場合はカスタムエレメントでも使ったほうが良い
そうすれば要素が作られた時、挿入されたときに即座に適宜処理ができるんだから

あとから要素をclassで検索して機能を付与するとか、
スマートな解決策のように見えるかもしれないけど、それって実際はただのハックだからね?
どっかの誰かが作った物があって、それに対してハックしたいなら非常に便利が良いと思うよ
でも今どき、オマケでJSによってページを補正するみたいな開発や考え方はしないからね

HTML5の勧告に纏わる公式文書にも書いてあったけど、
HTMLっていうのはアプリケーションプラットフォームになってるんだよ
つまり土台であって、その上にJSとか乗っかって1つのものができるわけ
それが横並びだとか、化粧程度だとか、もしくはJSはHTMLを改造するためのドリルみたいに
捉えてるのだとしたら、その考え方は古臭いと思うよ
686Name_Not_Found2018/03/28(水) 23:31:40.90ID:???
> そういう場合はカスタムエレメントでも使ったほうが良い

そのカスタムエレメント作る用途で使えるって話でしょ?

っていうか、どうやってそれ作るの
ちょっとサンプル書いてみてよ
687Name_Not_Found2018/03/28(水) 23:32:38.83ID:???
> HTMLっていうのはアプリケーションプラットフォームになってるんだよ
それは一部の話ね。

ブログ、ニュース、企業サイト、情報掲載と、
これらウェブの大半はアプリケーションじゃない
0692Name_Not_Found
垢版 |
2018/03/29(木) 01:34:13.97ID:???
136 名前:Name_Not_Found[sage] 投稿日:2018/03/29(木) 00:37:32.00 ID:???
jq関係ないけど
HTMLがアプリケーションプラットフォームって考え方は
ぶっちゃけ危険極まりないよね・・・
0693Name_Not_Found
垢版 |
2018/03/29(木) 01:35:48.16ID:???
>>692
俺もそう思う。
HTMLで文書じゃなくてアプリケーションを作るっていうのは
ごく一部だよ

大抵はHTMLとCSS、そしてJavaScriptでちょっと味付け
これから変えていこう!なんて波は来てない
誰も求めてない
0694661
垢版 |
2018/03/29(木) 02:25:21.50ID:???
素のJS のremove では、動かないブラウザがあるから、
素のJSでは、661 のように書く

だから互換性が高い、jQuery のremoveを使った方がよい

一々、各ブラウザの機能を調べて、素のJSで対応するのが面倒くさい。
古いブラウザを使っている奴もいるし
0695Name_Not_Found
垢版 |
2018/03/29(木) 02:42:40.44ID:???
classに対して処理振るのが最善なケースってどんなのがある?

同じ処理つけたい要素を不定数生成しなきゃいけないときは
createElementの時listenerつけたりhandlerの内側でやらせる手がある

classで処理振ると他の場所でclassを
使いまわしされたら想定外のバグが出そう
個人レベルの小規模なら問題にならないかもだけど
0696Name_Not_Found
垢版 |
2018/03/29(木) 03:09:18.27ID:???
>>695
それ単にクラスの名前つけルールが無いと困るって言ってるだけだよ。
CSSでも発生する問題

.enabledというクラス名を付けていたら、
他の場所で使い回されて困った。
これと何も変わらん
0698Name_Not_Found
垢版 |
2018/03/29(木) 03:28:57.23ID:???
classを使う最善なケースが出ないとなあ
0699Name_Not_Found
垢版 |
2018/03/29(木) 06:45:30.60ID:???
カスタムエレメントどうやって作るの?という質問の意味が分からない
好きな要素をextendsしてregisterElementするだけじゃないか
そこにjQueryを使う?好きにしたら良いと思うが、
やっぱりjQueryありきの考え方だねと言わざるを得ないね
でも他のライブラリとかも使うかもしれないし、
jQueryで処理しちゃあ生要素に戻して他で処理するみたいなクソコードになると思うよ
それなら最初からjQUeryで完結させたほうが良い
jQueryはそういう他との相容れなさが欠点だからね

remove()が使えない? 使いたい機能があって使えない環境があるなら
ポリフィル書くなり用意するなりすればいいじゃないか
そんな100も200も要るようなことなんて無いしね
それが面倒だからjQuery使うというのはOK
だけど最初から使ったほうが良いという考え方はNG
この違いが分かるか?

結局jQueryありきの価値観の人達って、他と相容れないjQueryを使いすぎて
例えばちょっとポリフィルを作って数個の素朴なライブラリを組み合わせて使うとか、
他のフレームワークを使った方が今回は良いんじゃないかとか考える能が無くなってるんだよ
jQueryだってやり方によっちゃ組み合わせて使える力も持ってるけど
上のカスタムエレメントの件で分かるように使いこなせてないしね
要するに考え方がいつまで経っても超古臭くて閉鎖的なんだよね
とりあえずjQuery使っとけばいいだろうみたいなのはやっぱり良くないよ
物は1つ1つ考えて良く使わないと
0700Name_Not_Found
垢版 |
2018/03/29(木) 09:12:18.22ID:???
他と相容れないってw
JavaScriptに取り込まれてること自体が
jQueryの多大な貢献を示していると思うけど
0701Name_Not_Found
垢版 |
2018/03/29(木) 09:30:48.27ID:???
>>699
> カスタムエレメントどうやって作るの?という質問の意味が分からない
> 好きな要素をextendsしてregisterElementするだけじゃないか

だから、このスレか、jsfiddleなどに
実際に動くコードを一つ書くだけですよ。
0702Name_Not_Found
垢版 |
2018/03/29(木) 10:37:36.50ID:???
通常四行必要なところが三行になります!とか
一行で書けます!とか
そんなせせこましい次元じゃなくて

100行必要なところが1行になります!とか
一般に実装されてなくて個人で実装するには難易度が高い関数が使えます!
とか、そういうのないの
0703Name_Not_Found
垢版 |
2018/03/29(木) 10:44:12.75ID:???
ライブラリってそういうもんだが
0704Name_Not_Found
垢版 |
2018/03/29(木) 10:51:31.26ID:???
jQueryを否定できるのは生JavaScriptではなくて
jQueryを超克したライブラリだと思います
そういうライブラリないんですか?
0705Name_Not_Found
垢版 |
2018/03/29(木) 11:43:35.50ID:???
>>703
例えば今は必要性薄くなってきたけどsha512使うためのライブラリとか
zip/unzipするためのライブラリとか
自分で書くには行数すごくなるしいろいろと問題もある

むしろライブラリってこういうのが基本で
jQueryみたいなのは今やどっちかっていうと
「ショートカット集&ポリフィル集」じゃないの?
0707Name_Not_Found
垢版 |
2018/03/29(木) 12:41:05.40ID:???
悔しかったらjQueryに勝るシンプルなsource書いてね
0708Name_Not_Found
垢版 |
2018/03/29(木) 12:45:10.44ID:???
jQueryの代替を提供してるのはフレームワークばかりの感じがします
置き換えたらDOM操作以外の余計なものまで付いてくるので困りますね
0709Name_Not_Found
垢版 |
2018/03/29(木) 13:04:03.46ID:???
なにせjQuery君によるとDOM操作用のライブラリでは無いらしいからな。
0710Name_Not_Found
垢版 |
2018/03/29(木) 19:55:10.17ID:???
>>699
横から申し訳ない
カスタムエレメントってどういうときに使うもの?
いまいち理解できんのでよかったら教えてくれ
0711Name_Not_Found
垢版 |
2018/03/29(木) 21:09:34.90ID:???
カスタムエレメントがほしいって思ったことがない
つまりHTMLパーツのコンポーネント化っていう
概念がなくて行き当たりばったりでCSSでデザインしてるだけ

こういうやつもいるからjQueryでクラス使って
コンポーネントに対して処理をする便利さが理解できないんだろうな
0712Name_Not_Found
垢版 |
2018/03/29(木) 21:11:31.53ID:???
>>708
それな

jQueryの代替のフレームワークはJavaScriptのフレームワークで
HTML+CSSメインの作り方からJavaScriptメインに
代わってしまう。

わかりやすく言えばプログラミングできなきゃ
HTMLも表示できない。jQueryの利用者が今も増え続けてる理由だよ
0714Name_Not_Found
垢版 |
2018/03/29(木) 21:42:35.71ID:???
>>710
要素をカスタムしたい場合、という回答では不十分か?
今回の件に限らないけど、どうして何かしら例を出した程度の場合に
そいつにその物事についての説明やサンプルを求めるのかがさっぽり理解できない

俺の考えを知りたいのか?、それとも俺を試してるつもりなのか?
そんなの適当にググって出てくるサイトの筆者の方がよっぽど詳しいし
よっぽどためになる事書いてあるに決まってるだろう
俺はカスタムエレメントの申し子じゃないんだからさ

でもとりあえず上のclassの話で回答しておくと、
要素に何かしらの機能や性質を持たせる、という考え方と違うものとして
何かしらの機能や性質を持った要素が定義してあって、それを使うという考え方を挙げた

例えば一部で幾つか配列操作メソッドがほしいときに、
Array.prortotype、もしくはArrayのインスタンスにメソッドがを定義するのではなく、
Arrayをextendsしたクラスを用意しておいて、必要なときではそちらでインスタンスを作るということ、
このたとえならjQueryはlodashを使うことに近いのかもしれない

ただし、そのlodashは入出力がArrayではなく、独自のArrayLikeオブジェクトになってるって感じ
そこがちょっと無視できないポイント
つまり基本的にlodash世界内で完結するように書くものであって、
lodashに一旦通して配列を加工して、lodash空間はそこで一旦終わらせて、
次に別のものに通していくってことが、ロジック上難しいのではないけれど、概念上困難ということになる
0715Name_Not_Found
垢版 |
2018/03/29(木) 22:04:11.59ID:???
俺が変わりに答えてあげるけど
jQueryならサクッとできることが
カスタムエレメントだとすごく大変
0717Name_Not_Found
垢版 |
2018/03/30(金) 06:52:38.70ID:???
>>716
>>685でズバリ具体例を言ってるだろ、コードが欲しいってことか?
具体的に何の具体例をどういう目的で欲してるのかも分からんし
そんなん比較で色々書いてたら俺が書いてきた長文以上の量になるだろう
複数の要素を扱うってことで例を考えるとHTMLだけでもそれなりになるし
書く意味も分からんし書く気は無いよ
0718Name_Not_Found
垢版 |
2018/03/30(金) 09:17:14.08ID:???
なんでイライラしてるやつばかりなんだ?
0719Name_Not_Found
垢版 |
2018/03/30(金) 09:49:24.92ID:???
親を殺したjQueryがのさばってるから
0720Name_Not_Found
垢版 |
2018/03/30(金) 12:52:02.63ID:???
custom components は、React とかだろ

JS は、Ruby, Python みたいに、
バッテリー同梱(batteries included)じゃないから、
標準ライブラリ・フレームワークが無く、自分で探さないといけない

各ブラウザ・スマホの実行環境を考慮した結果、標準にしない方がよい。
標準にすると、性能などで困るメーカーが出てくる
0721Name_Not_Found
垢版 |
2018/03/30(金) 19:14:16.00ID:???
>>720
Reactは1ミリもweb component/custom elementと関係ありません。
知ったかするな!
しいていうならPolymerだバカ
0722Name_Not_Found
垢版 |
2018/03/30(金) 19:19:46.51ID:???
Railsにincludedされてるバッテリー風情がイキがっててワロタwwwww
0723Name_Not_Found
垢版 |
2018/03/30(金) 22:48:15.83ID:???
Web Componentsが各ブラウザでネイティブに実装されたら
今のAngularやReactなどのフレームワークは死滅する
一番の問題はフレームワークと共存できないということ
フレームワーク側もシェア維持のためにWeb Componentsに対応するのだろうが
今と作り方がまったく変わってしまう


だけどjQueryはただのライブラリなので、Web Componentsと共存できる
部分的にjQuery、部分的にWeb Componentsを使と言うことが可能
またWeb Components時代になってもコンポーネントとコンポーネントをつなぐ
必要がある。ここにjQueryは使うことができる。
コンポーネントが見つからない場合、今までどおりjQueryを使うこともできる
混ぜて使うことが可能。これがjQueryの大きなメリット
0724Name_Not_Found
垢版 |
2018/03/31(土) 00:30:49.88ID:???
jqの配信終わったら即死じゃん
0725Name_Not_Found
垢版 |
2018/03/31(土) 07:29:59.18ID:???
カスタムタグとかカスタムエレメントとかウェブコンポーネントとか
正直全部どうでもいい

そんなのより
全部のブラウザでasync/await使えるようにしてくれよ
いつだよ
0726Name_Not_Found
垢版 |
2018/03/31(土) 08:00:50.34ID:???
IEが死ぬのを期待した方がまだ早い
0728Name_Not_Found
垢版 |
2018/03/31(土) 13:27:22.99ID:???
期待せずに死んだものとして触らないのも手段だぞ
0729Name_Not_Found
垢版 |
2018/03/31(土) 14:16:59.43ID:???
>>713
「jQueryは死んだ」というのが流行ってただけで
実際はむしろ成長中だったのですね
0730Name_Not_Found
垢版 |
2018/03/31(土) 14:29:55.59ID:???
urlにおもいっきりJavascriptライブラリって書いてあるやんけ。
しいていうならJavascriptは永久に100%
Javascriptはお釈迦さま。てのひらの上で一番うまく踊れるのが誰か競ってるのがライブラリ。
0731Name_Not_Found
垢版 |
2018/03/31(土) 14:38:57.00ID:???
>>730
ブラウザがお釈迦様。手のひらの上で踊らされてるのがフロントエンドエンジニア。
0732Name_Not_Found
垢版 |
2018/03/31(土) 14:56:18.13ID:???
>>730
リンク先には各ライブラリのシェアだけではなく
ライブラリを使わないというNoneもはいってるよ

だから正確には、どのライブラリ or ライブラリを使わないで競ってることになる
ライブラリを使わないっていうのは素のJavaScriptを使うという意味だ

お前が言うJavaScriptはライブラリを使わないという意味じゃなかったのか?
それともjQueryを使っていてもJavaScript100%に含まれる
(だからこのスレの話題としてOKってことか)

Noneの割合は年々減っている。現在は23.7%。
最近は一年で1%減るぐらいのペース
jQueryはその逆で一年で1%増えるぐらいのペース
0733Name_Not_Found
垢版 |
2018/03/31(土) 14:57:49.07ID:???
正直手のひらの上で踊らされてるのは、
流行りものに流されっぱなしの
JavaScripterだけな気がするw

jQuery使いはストイックだよ
もう10年も踊ってない
0734Name_Not_Found
垢版 |
2018/03/31(土) 14:57:59.58ID:???
ライブラリは言語に足りない部分を実現して
言語の未来の形を先取りしているものなので、お釈迦様というのは言い過ぎではないでしょうか?
ライブラリに先導されてJavaScriptはその後をヨチヨチと付いてきているのですから
むしろライブラリの方がお釈迦様的です
0735Name_Not_Found
垢版 |
2018/03/31(土) 15:03:09.84ID:???
ライブラリはjavascriptで実現可能なことしか実現できない。
javascriptで書かれてるからなw
0736Name_Not_Found
垢版 |
2018/03/31(土) 15:05:49.53ID:???
高級言語はアセンブラで実現可能なことしか実現できない。

できることと言ったら実現可能なことを、早く安く作れるだけだ
ライブラリもそれと同じ
こればっかりはアセンブラでは実現できないw
0737Name_Not_Found
垢版 |
2018/03/31(土) 18:25:49.15ID:???
イベントリスナが効かなくなったのでおかしいな〜と思っていたのですが
ready前にイベントリスナをDOMに直接登録していたからでした
逆に言うとイベントをデレゲーションする場合は
readyをいちいち待たずに登録処理を始めていいということでしょうか?
0738Name_Not_Found
垢版 |
2018/03/31(土) 19:26:18.25ID:???
>>732
その None にはスクリプトすら使わないというのは入っているのかな?
0741Name_Not_Found
垢版 |
2018/04/01(日) 01:14:46.06ID:???
>>740
調査方法載ってないんだよな
調査方法載ってないデータはクソ
0742Name_Not_Found
垢版 |
2018/04/01(日) 01:16:27.24ID:???
>>741
調査方法は以下に書いてますね
https://w3techs.com/faq

> 調査方法載ってないデータはクソ
あなたの主張からすると調査方法載ってるので
クソではないということになりました。

英語わからないならGoogle翻訳使うといいですよ。

> どの技術がサイトで使用されているかをどのように知っていますか?
>
> 主に、Webページのダウンロード時にサイト自体が提供する情報を使用します。
> 言い換えれば、私たちは検索エンジンのようなWebページを取得し、その結果を分析します。
> さらに、Alexa、Google、Microsoft、ipinfo.ioなどのソースから公に入手可能な情報を使用しています 。
0743Name_Not_Found
垢版 |
2018/04/01(日) 01:17:22.96ID:???
> あなたのウェブサイトアナライザはどのくらい正確に機能しますか?
>
> ウイルススキャナがファイルを検索してウイルスを特定する方法と同様に、
> 技術の使用を特定する特定のパターンをWebページで検索します。この検索には、
> 正規表現とDOMトラバーサルの組み合わせを使用します。私たちは、
> テクノロジーの使用に関する数千の指標を特定しました。これらの指標は異なる優先順位を持ち、
> 具体的な状況における指標の特定の組み合わせの有無に基づいて、我々は結論に至る。

> これらは、指標によって使用される情報の例です。
>
> ウェブページのHTML要素
> 特定のHTMLタグ(ジェネレータのメタタグなど)
> JavaScriptコード
> CSSコード
> サイトのURL構造
> オフサイトリンク
> HTTPヘッダー(Cookieなど)
> 特定の要求に対するHTTP応答(圧縮など)

> アナライザーを構築するためには多くの研究が必要でしたが、
> 私たちは常にそれを改善し続けています。可能な限り最高のウェブサイトアナライザにしたいと考えています。
0744Name_Not_Found
垢版 |
2018/04/01(日) 01:18:18.72ID:???
> あなたの情報はどれくらい正確ですか?
>
> 彼らが望むのであれば、ウェブサイトはほとんどの技術を隠すことができるため、
> このタイプの調査は100%正確であることは不可能です。
> 詳細については、免責事項も参照してください。テクノロジーの識別に何らかの
> エラーを起こさないよう確実にする方法はありません。偽陽性と偽陰性の
> バランスをとる方法を見つけようと試みます(できるだけ多くを削除した後)、
> 残りのエラーは他の技術よりもむしろ一つの技術に集中しないようにします。
> 私たちの目標は、最も正確で信頼性の高いWeb技術調査を提供することです。
> その結果、この質問に対する答えは、可能な限り正確です。我々は、
> 私たちがその目標からあまり遠く離れていないと信じています。

ここまで言ってるからUser Agent使って判断みたいな
単純なことはしてないでしょうね
0745Name_Not_Found
垢版 |
2018/04/01(日) 01:21:42.58ID:???
わざわざjqueryスレの書き込みを転載コピペしてまでここでやる根性に脱帽
0746Name_Not_Found
垢版 |
2018/04/01(日) 01:40:23.67ID:???
もう5年以上同じようなことやってるからライフワークなんだろ
0748Name_Not_Found
垢版 |
2018/04/01(日) 03:07:44.92ID:???
>>747
マーケットシェア、96.1%もあるんだが・・・
減ったと言っても一年で0.2%
これだと半分以下になるまで何年かかることやら

それよりか、0.8%しかなく一年で0.1%しか増えてないReact、
0.6%しかなく同じく一年で0.1%しか増えてないAngularを
心配したほうが良くないか?
0749Name_Not_Found
垢版 |
2018/04/01(日) 03:13:24.04ID:???
>>747
よく話題になってるVue.jsとかAngularとかReactもここまで使われてないとは・・
lodashよりunderscoreの方が人気なのも意外
0750Name_Not_Found
垢版 |
2018/04/01(日) 03:28:18.32ID:???
> lodashよりunderscoreの方が人気なのも意外

Underscoreの方がオリジナルだからね。
そもそもBackboneのためのライブラリみたいなもんだから
Backboneでも使われてる
0751Name_Not_Found
垢版 |
2018/04/01(日) 04:21:44.05ID:???
証拠なし根拠なしだから論証にすらなっていないので反論の必要がない

データを否定するもなにも
w3techsのはデータじゃなくて妄想
それを根拠に語るお前も妄想
0752Name_Not_Found
垢版 |
2018/04/01(日) 04:28:20.37ID:???
>>751
w3techsはちゃんと根拠書いてますよ?

お前「地球は太陽の周りなんか回ってない」
ガリレオ「証拠あります。地球は回っています」
お前「それは証拠じゃない。お前の妄想だ」
ガリレオ(考えられる脳みそないのかな?)

ガリレオ「じゃあ太陽が回っているという根拠は?」
お前「お前の妄想が間違いなんだから、太陽は回ってる」
ガリレオ「いや聞いてるのは太陽が回っているという証拠ですよ?」
お前「地球が回ってる=お前の妄想=それが間違いということは太陽が回ってることだろ!」
ガリレオ(論理的に考えられる脳みそないのかな?)

ガリレオ「太陽が回っているという証拠はないんですね?」
お前「お前が間違ってるのが証拠だ!」
0753Name_Not_Found
垢版 |
2018/04/01(日) 07:26:15.36ID:???
お人形さん遊びかな?w
0754Name_Not_Found
垢版 |
2018/04/01(日) 09:25:19.92ID:???
そういやwappalyzerでもほとんど見たことないもんな
angularとか
0755Name_Not_Found
垢版 |
2018/04/01(日) 09:58:45.37ID:???
jq信者のエイプリルフールってことやな!
0756Name_Not_Found
垢版 |
2018/04/01(日) 10:02:32.53ID:???
emberっていうのは見る
アップルのサイトがそれ
0757Name_Not_Found
垢版 |
2018/04/01(日) 10:11:05.24ID:???
最近のモダンJSフレームワークがほとんど使われてないとしても
パラダイムが新しいのは確かですし、今後の流れがそっちに行くのも確かなので
勉強しておくに越したことはないですね?
0758Name_Not_Found
垢版 |
2018/04/01(日) 13:45:14.69ID:???
勉強しないと上手く扱えないフレームワークとか本末転倒だから
0759Name_Not_Found
垢版 |
2018/04/01(日) 16:46:39.69ID:???
indexedDB使ったことある人いる?
あったら感想きかせて
面倒くさいとか、かんたんとか、ライブラリ使ったほうが良いとか。
なんでもいいのので
0760Name_Not_Found
垢版 |
2018/04/01(日) 16:56:24.41ID:???
主にトップページしか検索の対象にしてないってかいてるやんw
クソデータ決定だなw
0761Name_Not_Found
垢版 |
2018/04/01(日) 16:56:40.67ID:???
ほらな。だから日本語に翻訳してコピペする必要があるんだよ(苦笑)
しっかり書いてある。英語を読まないから見つけられない

> あなたはホームページだけ、あるいは内部のページだけを分析しますか?
>
> それはサイトについて既に知っているものに依存します。
> しばしばそれはホームページでしかありません。
> 多くの場合、我々はより深くクロールします。
0762Name_Not_Found
垢版 |
2018/04/01(日) 16:56:57.06ID:???
> Do you analyze only the home page or also inner pages?
>
> That depends on what we know already about the site.
> Often it's only the home page, in many cases we crawl deeper.

なお翻訳前の英語。短いから手動で訳してあげると


あなたはホームページだけを解析しますか? それとも内部のメージも?
私達がすでに知っているサイトの内容に依存します。
しばしば、それはホームページだけですが、多くの場合、私達は深くクロールします。
0763Name_Not_Found
垢版 |
2018/04/01(日) 17:02:17.48ID:???
比率は何対何かぜんぜん分からんなこれ。計測仕様もクソもない
0765Name_Not_Found
垢版 |
2018/04/01(日) 17:04:21.96ID:???
jQueryキチガイが湧いとるなw
0766Name_Not_Found
垢版 |
2018/04/01(日) 17:05:39.24ID:???
>>757
> 最近のモダンJSフレームワークがほとんど使われてないとしても
> パラダイムが新しいのは確かですし、今後の流れがそっちに行くのも確かなので
> 勉強しておくに越したことはないですね?

俺の経験から言うと、Backboneが一時期はやったが
俺がまともに勉強する前に消えた
Knockoutも使う前に消えたな

Angular1は仕事で使うから勉強したんだが
名前こそAngularだがコードの書き方は
まったく違ったものになってしまった

これらは2014年ごろ、主流のJavaScriptフレームワークだったものだ
https://qiita.com/takuhito-h/items/15655309aef0889cfb62
https://qiita.com/icoxfog417/items/3c68e1a4de7121658e29

2014年当時は今(非比較的)よく使われてるフレームワークは
生まれてないから生まれて間もない状況


何が言いたいかと言うと、今は新しいパラダイムが普及する前に
更に新しいパラダイムが出てる状況なんだよ
つまり将来主流になるパラダイムは、まだ世の中に生まれてない可能性が高いってこと

そんな中10年以上も生き残ってるのはjQueryだけだったりする
0768Name_Not_Found
垢版 |
2018/04/01(日) 17:11:46.74ID:???
依存患者を量産するのが生き残る秘訣
0769Name_Not_Found
垢版 |
2018/04/01(日) 17:14:05.13ID:???
>>759
これが必要な場面のほとんどは鯖側でやったほうが楽で健全という結論
0770Name_Not_Found
垢版 |
2018/04/01(日) 17:14:08.40ID:???
>>767
localForage, dexie.js, ZangoDB and JsStore
あたりが紹介されてるの見たけど
dexieってのが一番いいの?
0771Name_Not_Found
垢版 |
2018/04/01(日) 17:16:36.48ID:???
>>769
なんとかクライアントでやりたいです。
0772Name_Not_Found
垢版 |
2018/04/01(日) 17:18:53.01ID:???
>>770
一番かどうかは知らん。ポイントは生で使うより断然簡単になるか、やたら容量増えないか、遅くならないか、かな。
至れり尽くせりの重いライブラリでもいいのか、薄いラッパーがいいのかは用途と好みだろ。
0774Name_Not_Found
垢版 |
2018/04/01(日) 17:23:45.39ID:???
>>771
サーバーと同期したいならPouchDBとかいいぞ!クライアント側はindexedDBが使われてるぞ!
0775Name_Not_Found
垢版 |
2018/04/01(日) 20:37:41.16ID:???
>>759
今だったらPromise化してasync/awaitでやりたいと思うだろうが
イベントループ挟むとセッションが切れるのと、
特殊コールバックのせいで単純なPromise化ができないっていうのが一番のネック
パラメータも構造に依存したりするので構造化もしにくい
0776Name_Not_Found
垢版 |
2018/04/01(日) 21:38:31.71ID:FmwDfjO/
>>713

> ここ二ヶ月の間73.2%から増えてないから
> とうとう上げ止まったか?と思ったら今月73.3%になった
> よかった。jQueryの利用者はまだ増え続けてたんだ。

ということだったが、正確には今月(4月)ではなく
3月終わり頃のデータだった。

https://w3techs.com/technologies/history_overview/javascript_library/all
今見てみたら4/1で更新されており、73.4%に増えていたよ。
0777Name_Not_Found
垢版 |
2018/04/01(日) 21:40:02.72ID:???
>>775
> 特殊コールバックのせいで単純なPromise化ができないっていうのが一番のネック

逆、イベント(コールバック)っていうのは大部分が
Promise化できないもので、一部の特殊なものだけがPromise化できる
Promise化できる方が珍しいんだよ
0778Name_Not_Found
垢版 |
2018/04/01(日) 21:41:51.58ID:???
いつからjavascriptのライブラリのシェアをウォッチするスレになったのか。
ほんとjQueryバカは各スレでやりたい放題で程度が低い。
崩壊学級の小学生みたいだ。
0779Name_Not_Found
垢版 |
2018/04/01(日) 21:44:45.05ID:???
JavaScript(None = ライブラリを使ってない)のシェアをウォッチするスレですよw
0780Name_Not_Found
垢版 |
2018/04/01(日) 21:52:58.05ID:???
ライブラリを使うということはライブラリが書かれている言語を間接的に使うということ。コンパイル言語ではないのだから、その言語は唯一、Javascriptのみ…!
0781Name_Not_Found
垢版 |
2018/04/01(日) 21:59:09.73ID:???
jQuery信奉者はキチガイがおおいみたいね
0782Name_Not_Found
垢版 |
2018/04/01(日) 23:24:21.55ID:???
信奉者も何もこのシェアだと使ってない方が異端だろう
0783Name_Not_Found
垢版 |
2018/04/02(月) 00:10:36.01ID:???
何、ライブラリの話?別スレ行ってくれないかな?w
0784Name_Not_Found
垢版 |
2018/04/02(月) 00:26:33.70ID:???
信奉者だから
使ってる使ってないじゃないから
日本語も分からんバカなのか
0785Name_Not_Found
垢版 |
2018/04/02(月) 00:28:44.03ID:???
もっと正確に言うと
スレ違いのスレで再三やめろといわれてのにしつこくあらし行為を行うレベルでJQueryの話題を出すキチガイな。
0786Name_Not_Found
垢版 |
2018/04/02(月) 10:35:55.95ID:???
その中で重めの非同期処理をするイベントリスナがあり、
処理中には同じイベントが発生して欲しくはありません
これをスマートに書くにはどうしたらいいでしょうか?
簡単なやり方は、イベントリスナの外にフラグになる変数を用意しておいて、
イベントリスナの中でそのフラグを立てて排他的に処理するという方法ですが
外に変数を設置するのはイケてない気がしますし
一度に一度しか呼び出せない関数を、もっとスマートに作る方法がありそうな気がします
どういうものでしょうか?
0787Name_Not_Found
垢版 |
2018/04/02(月) 10:36:49.23ID:???
「イベントが発生して欲しくはありません」と書きましたが
イベントは発生してもいいですね
その中で排他処理をスマートにしたいのです
0788Name_Not_Found
垢版 |
2018/04/02(月) 12:45:21.21ID:???
>外に変数を設置するのはイケてない気がしますし

要件で考えりゃいいだろ
イケてるイケてないって考えを捨てろ
0789Name_Not_Found
垢版 |
2018/04/02(月) 12:53:47.18ID:???
>>777
多くのWebAPIを見るにそんな事は無いし
イベントであればObservableやasync generator化すればいいが
IDBの場合、それも難しい
0790Name_Not_Found
垢版 |
2018/04/02(月) 12:55:30.71ID:???
>>786
イベントリスナをオプションでonceにして、処理が完了したら登録し直しは駄目なん?
0791Name_Not_Found
垢版 |
2018/04/02(月) 12:58:45.00ID:???
オブジェクトオブザーバブルってなかったことリスト行きしたんじゃなかったっけ?
0793Name_Not_Found
垢版 |
2018/04/02(月) 15:25:30.59ID:???
>>790
実は最初に考えたのが、イベントリスナの一時的な付け外しでしたが
なんかうまくできなかったのです・・

結局、select要素のonchangeイベントだったので
select要素をdisableにするという簡単な形で無効にしました
ありがとうございました
0797Name_Not_Found
垢版 |
2018/04/02(月) 22:30:17.05ID:???
かなり前からcorejsにpolyfill入ってるやつ
0798Name_Not_Found
垢版 |
2018/04/03(火) 14:23:44.32ID:???
解釈の原因は解釈者が持つ自分ルール。解釈の自由は責任を伴う
言葉風紀世相の乱れはそう感じる人の心の乱れの自己投影。人は鏡
憤怒は一時の狂気、無知無能の自己証明。中途半端な知識主ほど激昂
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)
他人に不自由(制約)を与えれば己も不自由(不快)を得る
問題解決力の乏しい者ほど自己防衛の為に礼儀作法マナーを要求
情報分析力の低い者ほどデマ宗教フェイク疑似科学に感化洗脳
自己肯定感の欠けた者ほど「己の知見こそ全で真」に自己陶酔
人生経験の少ない者ほど嫌いキモイ怖いウザイ憎い想定外を体験
キリスト教は世界最大のカルト。聖書は史上最も売れているト本
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的義務使命はない
宗教民族領土貧困は争いの原因ではなく口実動機言訳(原因帰属錯覚)
虐め差別犯罪テロ紛争は根絶可能。必要なのは適切十分な高度教育
体罰は指導力問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の徴候。奇人変人の当選は議員数過多の証左

感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・)
0799Name_Not_Found
垢版 |
2018/04/03(火) 15:07:41.70ID:???
後ろに書かれている関数は呼び出せるのに
後ろに書かれているクラスはnew出来ないのは何故ですか?
あほなのでしょうか?
0800Name_Not_Found
垢版 |
2018/04/03(火) 16:07:03.91ID:???
俺もその仕様でえっ?てなった。
ホイスティング理解できないバカに合わせた結果。
今からでもfunction宣言と合わせて欲しいぜ
0801Name_Not_Found
垢版 |
2018/04/03(火) 18:28:01.77ID:???
確かに今から変更しても
よほど変なコードを書いていない限り問題も出ないでしょうし
変えて欲しいですね
0802Name_Not_Found
垢版 |
2018/04/03(火) 19:21:14.40ID:???
そもそも関数のときからホイスティングが嫌なら宣言文じゃなく宣言式使って変数に代入すりゃいいだけだったんだ。
クラスだってせっかく文・式両方用意しといて何やってんだと思った。

確かに機能的には困るものではないが、ソースファイル上のコードレイアウトが無意味に制限されるよね。
あほに合わせたせいで。

関数でもクラスでもいいけど、詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやついるだろ。
もしかしたらダメだと言うやつもいるかもしれんがその是非は問題じゃない。なんでそれを言語仕様で制限されんとならんのじゃということ。
0803Name_Not_Found
垢版 |
2018/04/03(火) 19:25:23.17ID:???
今日なんか嫌なことあったの?
0804Name_Not_Found
垢版 |
2018/04/03(火) 19:59:06.59ID:???
勢いというか思想というか、が強すぎてちょっと引くけど

>詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやつ

はい
好きです
0805Name_Not_Found
垢版 |
2018/04/03(火) 21:09:26.80ID:???
jQueryでなんとかならないのでしょうか?>クラス
0806Name_Not_Found
垢版 |
2018/04/03(火) 21:11:50.02ID:???
あのーjQueryってDOM操作用ライブラリなんですけど。
最近は調子にのって盛り込んだ本分と関係ない便利機能はコアから取り除いていってるんですけど。
0807Name_Not_Found
垢版 |
2018/04/03(火) 22:55:20.18ID:???
調子に乗って盛り込んだわけじゃなくて、昔はCSSのアニメーションとかなかったし
Ajax周りの互換性がブラウザごとになくて、必要だから入れたんだよ
0808Name_Not_Found
垢版 |
2018/04/03(火) 23:00:46.04ID:???
>詳細な実装は下に置いといて、上から抽象度の高いコードをサッと読めるってレイアウト好きなやつ

いや、普通に考えると、1クラスで1ファイルにして、
それをimportするのが普通なので、そもそもやり方が悪いとしか
0809Name_Not_Found
垢版 |
2018/04/03(火) 23:18:01.65ID:???
まあ確かにimport使って話だなw

でもimportはIEは言うまでもなく、Firefoxは現在の59は対応してないし(次の60から対応する)
Androidも最新以外は対応してないという状況だから
スマホ・タブレット対応するならきついだろう。

だからといって諦める必要はなく、そこででてくるのがbabelなわけ
babelを使ってビルドしてしまえば古いブラウザでも対応できる
0810Name_Not_Found
垢版 |
2018/04/03(火) 23:19:08.06ID:???
それが普通だとは思いませんでした
みんなインポートっていうのを使ってるんですか?
0811Name_Not_Found
垢版 |
2018/04/03(火) 23:30:23.87ID:???
俺はずっと前からモジュール使ってるな。
メンテナンス性をあげようと思ったらファイルに分けるのが普通だし、
昔から <script>を複数書いてたでしょ?

それも多くなりパフォーマンスが気になりだしたから
ファイル結合から始まって、最終的にモジュールにして
webpackとかでビルドするようになったな
0812Name_Not_Found
垢版 |
2018/04/04(水) 01:35:29.11ID:???
勉強してみます
ありがとうございました
0813Name_Not_Found
垢版 |
2018/04/04(水) 02:46:04.62ID:???
lodashのdelay関数がsetTimeoutより優れている部分は何ですか?
0814Name_Not_Found
垢版 |
2018/04/04(水) 03:09:42.01ID:???
setTimeoutが発動する前に同じ種類のsetTimeoutを実行しようとしたら
前の分はキャンセルする
という処理をしたいのですが
一番いい方法はどういうものでしょうか?
lodashのdelayはそういう機能を追加してるんじゃないかとも思ったのですが
ほとんどsetTimeoutと同じっぽいですね
0815Name_Not_Found
垢版 |
2018/04/04(水) 03:22:36.57ID:???
setTimeoutやdelayの第三引数にchannelを指定したら
その前の同名channelのタイマーはキャンセルするみたいなイメージです
0816Name_Not_Found
垢版 |
2018/04/04(水) 06:16:51.16ID:???
ちょとラップして書けばいいだけじゃん
timeridと種類関連付けてmapで持っておけばいいだけなんだから
0817Name_Not_Found
垢版 |
2018/04/04(水) 07:07:02.71ID:???
>>813
lodashのdelayの優れている点は引数を持たせられること

>>814
そういうときは、lodashのthrottleかdebounceを使うんだよ
タイマー自体に持たせるんじゃなくて
多すぎるイベント(タイマー含む)を間引く関数を併用する
0818Name_Not_Found
垢版 |
2018/04/04(水) 09:14:18.60ID:???
間引く髪の毛も無いクセに・・・
0819Name_Not_Found
垢版 |
2018/04/04(水) 09:24:00.40ID:???
「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?
0820Name_Not_Found
垢版 |
2018/04/04(水) 10:16:38.42ID:???
>>816
ラップしたものを書いたら、たしかにすぐに書けました

>>817
>引数を持たせられること
なるほど。引数を持たせられるっていうのはなんとなく関数型っぽい気がします

>throttleかdebounce
debounceを見たら、欲しいのはまさにこれでした

ありがとうございました
0821Name_Not_Found
垢版 |
2018/04/04(水) 23:55:48.60ID:???
>>819
> 「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?

面倒くさいだろうけどお題が小さいw
jQuery使って数行なら、jQuery使わなくても、その2倍ぐらいで書けるので
面倒くさくない、頑張ればできるって言いそうw
同じ2倍でも1000行と2000行じゃ大きな差なんだけどね

作ってみた
https://jsfiddle.net/rmhzz1c4/

jQueryで6行、jQuery使わないならその2倍で12行ぐらいかな?
(コードゴルフ的なのは禁止で)
0822Name_Not_Found
垢版 |
2018/04/05(木) 00:06:06.28ID:???
classで切り替えるとして、これでいいの?

document.getElementById('targetTd').addEventListener( 'click', function(e){
 var children = e.target.parentNode.getElementsByTagName('th')
 for(var i=children.length-1; 0<=i; i-- )
  children[i].classList.toggle('highlight');
}, false );


ほとんどの場合<th>は<tr>の最初にあるだろうから以下のほうが短い
document.getElementById('targetTd').addEventListener( 'click', function(e){
 e.target.parentNode.firstElementChild.classList.toggle('highlight');
}, false );
0823Name_Not_Found
垢版 |
2018/04/05(木) 00:13:17.65ID:???
特定のtdではなく特定のテーブルや全テーブルの全部のtdだったら
documentやtable elementに対してaddEventListenerして、1行目でe.target.tagNameを見ればいいな
0824Name_Not_Found
垢版 |
2018/04/05(木) 00:18:49.92ID:???
>>822
動かん

ぱっと見でもクリックした列を判定するコードがないし
なんでchhildrenの後ろから探索してるのかも分からん
(コピペプログラマに見える)

classList.toggleしかしてないので同じ列をクリックするたびに
反転するだろうってのが容易に想像できる

e.targetがtdだとして、そのparentNodeはtrだ。

複数テーブルが有った場合は、まあもともとの要件には
入ってないが、対応しているとなお良い

これでいいの?って仕様を聞いてるのかと思ったら
書いたコードにバグがないの?って意味かよw
0825Name_Not_Found
垢版 |
2018/04/05(木) 00:20:13.08ID:???
>>822-823は行
行じゃなくて列なら確かにめんどい

colspanやrowspanがどうなってるかわからん
1つでもあれば盛大にズレるんで
確実なところでtd.dataset.に何か目印つけるな
これが一番健全だと思う
0826Name_Not_Found
垢版 |
2018/04/05(木) 00:20:29.38ID:???
これも元の要件に書いてないが、クリックしたらその列のヘッダーセルの
色を変えるとして、その他の列のヘッダーセルの色は解除だろって思う。
そのコードも入ってないな。
0827825
垢版 |
2018/04/05(木) 00:22:06.74ID:???
>>826
rowspan/colspanは元の要件に入ってないけど使われたら全部瓦解するよな
対応必要じゃないんか?
0828Name_Not_Found
垢版 |
2018/04/05(木) 00:22:45.12ID:???
> colspanやrowspanがどうなってるかわからん
そんなの要件に入ってないだろ

そんな事を考える前に、まずちゃんと動くもの作れw
0829Name_Not_Found
垢版 |
2018/04/05(木) 00:23:37.63ID:???
>>827
> 対応必要じゃないんか?

これは要件が決まらないと実現不可能だから
対応のしようがない
0830Name_Not_Found
垢版 |
2018/04/05(木) 00:23:37.64ID:???
このように設計が重要かつもっとも時間がかかるものなのである

コーディングの時間の多寡を考えてはいけない
0831Name_Not_Found
垢版 |
2018/04/05(木) 00:24:11.78ID:???
時間がかかるのは設計じゃねーよw
要件だろが
0834Name_Not_Found
垢版 |
2018/04/05(木) 00:25:18.84ID:???
jqueryがDOM操作で大活躍!できるクソ曖昧な要件出してjqueryをageましょう
0835Name_Not_Found
垢版 |
2018/04/05(木) 00:25:44.59ID:???
客から言われたわけでもないのに、勝手に仕様を
盛りだくさんにしていく馬鹿っているよなw
0836Name_Not_Found
垢版 |
2018/04/05(木) 00:26:49.46ID:???
>>833
えっ だって要件不確定で実現不可能とか言っちゃうならこれ

>その他の列のヘッダーセルの色は解除だろ

「クリックした列の列の背景色をトグル切り替え」かもしれないじゃん
0837Name_Not_Found
垢版 |
2018/04/05(木) 00:28:15.39ID:???
俺の要件推測は良い推測!
おまえの要件推測は悪い推測!

jq以前の脳の構造上の欠陥問題
0838Name_Not_Found
垢版 |
2018/04/05(木) 00:29:02.11ID:???
動かないのは推測以前だろw
0839Name_Not_Found
垢版 |
2018/04/05(木) 00:29:24.22ID:???
俺よりダメなやつがいるから俺は悪くない!
だそうです
0840Name_Not_Found
垢版 |
2018/04/05(木) 00:30:17.70ID:???
要件が曖昧なら、推測で作ってもいいよ。
だけど、動かないのは論外だから
0841Name_Not_Found
垢版 |
2018/04/05(木) 00:31:09.71ID:???
っていうか文句言う前に、動くもの作れよ。
良い・ダメ以前の問題。
物を作れなきゃ、論外
0842Name_Not_Found
垢版 |
2018/04/05(木) 00:31:15.71ID:???
もっとちゃんと泳がせたほうが面白かったのに
0843Name_Not_Found
垢版 |
2018/04/05(木) 00:33:57.03ID:???
っていうか、>>819

> 「表のセルをクリックしたらその列のヘッダーセルの色を変える」とかjquery使わないと面倒くさくない?

「その列のヘッダーセルの色を変える」と明らかに書いているのに、
>>822は、その行を変えているわけで、問題自体を理解してない。

この問題は「列」だからこそ難しいと言ってるのに
その前提を満たしてない
0844Name_Not_Found
垢版 |
2018/04/05(木) 00:35:11.48ID:???
うんうんそうだね>>822君は勘違いだねー

「実現不可能」wwww
0845Name_Not_Found
垢版 |
2018/04/05(木) 00:42:32.38ID:???
はい、ついでに行クリックで行のヘッダを変えるやつ

https://jsfiddle.net/pztcepet/

$(document).on('click', 'tr', function() {
 $(this).addClass('selected').siblings().removeClass('selected')
});
0846Name_Not_Found
垢版 |
2018/04/05(木) 00:43:54.75ID:???
>>844
「実現不可能」っていうのはrowspanやcolspanの話だって気づいてるか?
勘違いしてるのはあんたじゃない?
0847Name_Not_Found
垢版 |
2018/04/05(木) 00:48:53.33ID:???
>>822 と同じ仕様ならこんな感じかな。thが最初になくても良い
(正確には複数のtable対応だけど、jQueryだと一つに対応するのも複数に対応するのも手間が変わらない)

https://jsfiddle.net/uwf0xu71/

$(document).on('click', 'tr', function() {
$(this).toggleClass('selected');
});
0848Name_Not_Found
垢版 |
2018/04/05(木) 00:51:27.35ID:???
>>822はお題を間違えている上に
間違えたお題用のHTMLじゃないと動作確認ができず
そのHTMLすら書いてないんじゃ、どうしようもないなw

誰も検証できない。せめてお題ぐらい間違えるな。
もしくは動くものをjsfiddleなりで用意しろ
0849Name_Not_Found
垢版 |
2018/04/05(木) 00:57:44.39ID:???
あんまりいじめすぎるなよ
問題勘違いしただけだろ

まあ>>822も行なら簡単すぎだなって所で気づくべきだが
0850Name_Not_Found
垢版 |
2018/04/05(木) 01:00:57.17ID:???
>>847をアロー関数を使って一行になおしてみた
$(document).on('click', 'tr', e => $(e.currentTarget).toggleClass('selected'));

普通に関数を一行にしたほうが短かったw
$(document).on('click', 'tr', function() { $(this).toggleClass('selected') });
0851Name_Not_Found
垢版 |
2018/04/05(木) 01:03:54.62ID:???
簡単な「行」で遊んでる所悪いが、本当のお題は >>822 の「列」だからな

動くコードで出てるのは、jQuery版のこれだけ( >>821

$(document).on('click', 'td', function() {
 var index = $(this).siblings().addBack().index(this) + 1;
 $(this).closest('table')
  .find('th.selected').removeClass('selected').end()
  .find("th:nth-of-type(" + index + ")").addClass('selected');
});

アンチjQueryは頑張れ。これ真似するだけだろ?
0852Name_Not_Found
垢版 |
2018/04/05(木) 12:46:42.81ID:???
短くかければいいのなら単にhoge()と呼べば済むライブラリを提供すればいい
それと同じで君の回答と言うのは質問者の成長を微塵も考えていない自己満足のコードなんだよ
おかしな方向で張り合ってる暇があったらきちんとロジックやAPIの説明を交えた
質問者の為になって次から独り立ちできるような回答を心掛けろ
0853Name_Not_Found
垢版 |
2018/04/05(木) 12:52:31.24ID:lV/eAogS
ほげー
0854Name_Not_Found
垢版 |
2018/04/05(木) 14:23:48.00ID:???
オブジェクトにイベントリスナを登録
オブジェクトにイベントを発火させると、イベントリスナを順次呼ぶ
みたいな仕組みを作る時の定石みたいのありますか?
自分でonメソッドやonceメソッドやtriggerメソッドを実装することも
そんなに手間ではなさそうですが
使ったら便利になるパーツが既に揃ってるんじゃないかという気もします
0855Name_Not_Found
垢版 |
2018/04/05(木) 19:26:13.32ID:???
>>854
いろいろ調べたのですが
普通に自分で実装するのが一番早かったです
0856Name_Not_Found
垢版 |
2018/04/05(木) 21:15:06.64ID:???
イベントと言いつつただちょっと伝播するコールバックがしたいだけだろ
0858Name_Not_Found
垢版 |
2018/04/05(木) 23:23:46.06ID:???
>>852
> 短くかければいいのなら単にhoge()と呼べば済むライブラリを提供すればいい

そういうライブラリがあるなら教えてくれ
0859Name_Not_Found
垢版 |
2018/04/05(木) 23:30:36.42ID:???
>854
> みたいな仕組みを作る時の定石みたいのありますか?

あるよ。EventEmitterとかいうのがそれ
node関連でよく使われているがブラウザでも使える

EventEmitterとかEventEmitter2とかEventEmitter3とかEventEmitter4とか
あるので注意なw


なお、いつものことだが

jQueryはDOM要素だけでなく任意のオブジェクトに対してonでイベントハンドラを定義できる
たったこれだけで、あなたの希望のものが実現できるよ

var obj = { foo: 'bar' };

$(obj).on('myevent', function() {alert(this.foo)});
$(obj).on('myevent', function() {alert(1)});
$(obj).on('myevent', function() {alert(2)});

$(obj).trigger('myevent');
0860Name_Not_Found
垢版 |
2018/04/06(金) 00:22:07.96ID:???
>>859
ありがとうございます
EventEmitterというのは、聞いたことのある言葉ですが、
そういうものだったのですね
jQueryも使えることは調べていて知りましたが
イベントを実装するためにオブジェクト自体がjQueryオブジェクトになってしまうのはどうか?
と思ってやめたのでした
ありがとうございました
0861Name_Not_Found
垢版 |
2018/04/06(金) 02:31:45.36ID:???
EventEmitterを継承するようにしたら、思っていた感じになりました
ありがとうございました
0862Name_Not_Found
垢版 |
2018/04/08(日) 09:35:52.90ID:???
> イベントを実装するためにオブジェクト自体がjQueryオブジェクトになってしまうのはどうか?
別にjQueryオブジェクトにはならないよ
0863Name_Not_Found
垢版 |
2018/04/08(日) 13:56:28.83ID:???
var arr=[];
function p(n){
arr.push(n);
}
p({id:'hoge',age:20});
p({id:'fuga',age:18});
console.log(arr);

これをクラスぽく書くにはどうしたらいいですか?
var my=function(){
this.arr=[];
}
my.prototype.p=function(n){ this.arr.push(n);return this; }
var a=new my();
a.p({id:'hoge',age:20});
a.p({id:'fuga',age:18});
var b=new my();
b.p({id:'moge',age:30});
b.p({id:'muga',age:38});
console.log(a);
console.log(b);

この.pを無くしてa({})やb({})という風にしたいのです
0864Name_Not_Found
垢版 |
2018/04/08(日) 14:18:18.42ID:???
Constructorから作るインスタンスを素のオブジェクトじゃなくて関数にしたいってことかな
ならConstructor内のthisを無視してthis拘束した関数作ってprototypeに色々付けてそれreturnすればいい
0865Name_Not_Found
垢版 |
2018/04/08(日) 18:01:23.99ID:???
this無視するのに拘束・・?
0868Name_Not_Found
垢版 |
2018/04/09(月) 01:42:45.30ID:???
jQueryスレで聞いてください。
0869Name_Not_Found
垢版 |
2018/04/09(月) 02:40:22.35ID:???
>>863
それはどうみても、クラスじゃない
new演算子も不要だから、クロージャでぐぐれ
0870Name_Not_Found
垢版 |
2018/04/09(月) 04:17:02.10ID:???
>>867
そもそもDOM APIがでてこないんじゃないの?
アレな人はJavaScriptの話題だけしろーっていって
DOM APIの話はOKとかダブルスタンダードなこと言ってるけど
JavaScriptにDOM APIは関係ないからね
その本はあくまで言語の話しかしないでしょう。
でもライブラリを使って短くしましょうぐらいは言うかもね
0871Name_Not_Found
垢版 |
2018/04/09(月) 06:26:55.39ID:???
>アレな人はJavaScriptの話題だけしろーっていって
>DOM APIの話はOKとかダブルスタンダードなこと言ってるけど

ここがWEB製作板で扱う話題が以下なんだから当然では・・・
・HTML、CSSなどのサイト制作の技術
・JavaScript、VBScriptなどのクライアントサイドプログラム
0872Name_Not_Found
垢版 |
2018/04/09(月) 06:30:56.20ID:???
ついでに言えばテーマがリファクタリングの本なんだから
DOM APIが出ようが出まいが関係ないだろう・・・
0873Name_Not_Found
垢版 |
2018/04/09(月) 06:36:27.90ID:???
>>871
ここはWebクライアントサイド技術の板なんだから
ブラウザに標準搭載のDOMが関係ないわけないだろ
ただオプションであるライブラリの1つを
さも当たり前かのように扱うなということを皆言ってる

料理でいうと、「砂糖・塩」と「親子丼の素・牛丼の素」は
いくら同じ調味料でも違うし
基本的に後者を使うのがスマートだと思い込んでる事自体が
料理愛好家によって批判されてるんだよ
0875Name_Not_Found
垢版 |
2018/04/09(月) 11:43:48.70ID:???
クロージャでやってみました>>869
https://jsfiddle.net/4ed98ue3/1/

本当は別のクラスにこういう機能を組み込みたかったのですが
それだとa.p({})みたいに.pを書かないといけなくなってしまうのです

・arrayにプッシュするときは.pみたいなのを書かずa({})でできる
・それ以外の機能は”.なんたら”を書く
みたいな感じです
0876Name_Not_Found
垢版 |
2018/04/09(月) 11:55:36.23ID:???
phpの $array[] = $newvalue; みたいな?
0877Name_Not_Found
垢版 |
2018/04/09(月) 13:11:48.54ID:???
こんな感じ?
var my=function(){
var that = this;
this.arr = [];
return function(n){ that.p(n); return that; };
}
my.prototype.p=function(n){ this.arr.push(n); return this;};
my.prototype.get=function(n){ return this.arr[n];};
var a=new my();
var c = a({id:'hoge',age:20});
a({id:'fuga',age:18});
var b=new my();
var d = b({id:'moge',age:30});
b({id:'muga',age:38});
c.p({id:'nuga',age:48});

console.log(c);
console.log(d);
console.log(c.get(c.arr.length - 1));
0878Name_Not_Found
垢版 |
2018/04/09(月) 13:45:14.33ID:???
>>877
そうです
できました!

ありがとうございました。
0879Name_Not_Found
垢版 |
2018/04/09(月) 15:58:37.99ID:???
文章編集用のtextareaと、操作用のbuttonがあります
textareaにフォーカスがある時に操作用のbuttonをクリックした時にも
textareaのフォーカスは奪いたくありません
デフォルトイベントを殺そうと、
buttonのclickイベントリスナの中で
preventDefaultとstopPropagationをしても、フォーカスは失われます
フォーカスを奪わないようにするにはどうすればいいのでしょうか?
0880Name_Not_Found
垢版 |
2018/04/09(月) 16:33:17.76ID:???
>>879
button に focus イベントが来るから
そこで textarea.focus() を呼べばいいんじゃないか?
0881Name_Not_Found
垢版 |
2018/04/09(月) 16:33:54.84ID:???
>>879
ふと思い出してmousedownをpreventDefaultしたら
フォーカスを奪わないと確認できました
こういう場合、
デフォルトイベントを殺すためのmousedownイベントと
clickイベントを別々に設定するのでしょうか?
clickイベントの代わりにmousedownイベントを使うようにしたら、
イベントリスナを一つにまとめることが出来ますが
clickの代わりにmousedownを使うのは、それはそれでどうなのかと思います
どうやるのがセオリーですか?
0882Name_Not_Found
垢版 |
2018/04/09(月) 16:35:44.81ID:???
>>880
それでも同じ結果になりそうですが
出来れば最初からフォーカスを取りたくないです
0883Name_Not_Found
垢版 |
2018/04/09(月) 21:22:01.82ID:???
>>881
click イベントはマウス専用じゃないから分けたほうがいいと思う
マウス等は使えない環境だとどうあるべきか考えてみるといいかも
0884Name_Not_Found
垢版 |
2018/04/09(月) 21:33:22.25ID:???
スマホみたいにtextarea触ると入力画面に遷移する環境をどう扱うかで分かれそう
PCだけなら地道にtextarea操作時に常時キャレットの位置を記録しておいて
何かあったらfocus()してキャレットを元に戻すまで一まとめにしてしまうのが
面倒だけど一番な気がする
そういう実装をエディタ系でたまに見る
0885Name_Not_Found
垢版 |
2018/04/09(月) 21:58:51.47ID:???
>>883-884
ありがとうございます
mousedownはpreventDefaultだけするようにしました
こういう挙動が問題だと今日始めて気づいたのですが、
皆さん色々工夫してるということが分かって何か安心しました
ありがとうございました
0886Name_Not_Found
垢版 |
2018/04/09(月) 22:07:54.89ID:???
>>885
今やってるのは要するにあれ?textarea内の一部の文章をマウス等で選択して
ボタン押すとそこの部分だけ太字に => フォーカスがががが
0887Name_Not_Found
垢版 |
2018/04/10(火) 15:01:18.87ID:???
そもそも、focus を奪わないって無理だろ

focusは、PC 内で同時に、1つのアプリの、1つのコントロールしか持てないから、
コントロールに入力する・ボタンを押すなどの際には、focusを奪う必要がある

また、focusを持つコントロールは、見えていないといけない

focusは、PC の資源。
何かのアプリが動くと、しょっちゅう、focusが奪われる。
それがウザイ
0888Name_Not_Found
垢版 |
2018/04/11(水) 00:10:50.41ID:???
クリック対象がフォーカスを持たないものなら
フォーカスを奪わなくできる
0889Name_Not_Found
垢版 |
2018/04/11(水) 00:28:07.82ID:???
tabでフォーカス移動でいるかどうかとは違って
divだろうとspanだろうとimgだろうとフォーカスは持つし取れるんじゃないの
0890Name_Not_Found
垢版 |
2018/04/11(水) 20:22:19.70ID:???
アロー関数ってどういう必要性から導入されたの?
0891Name_Not_Found
垢版 |
2018/04/11(水) 20:50:14.95ID:???
JSは即時関数やら関数定義を大量にする必要が出てくるのに
functionって長いじゃん、それが理由
#案とかいろいろあったよ
0893Name_Not_Found
垢版 |
2018/04/11(水) 22:49:53.60ID:???
>>890
関数の引数に、値のように見える関数を渡したいから

array.sort(比較関数) みたいにね。

ここ、比較関数を渡すんだけど、function() だったらいかにも関数じゃん?
じゃなくて、比較処理値みたいに関数っぽくないものを渡したくない?

array.sort( (a, b) => b - a ) みたいにね。

ほら、これ引数に関数を渡してるように見ないでしょ?
まるで値、実体は関数なんだけど、関数に見えない。値みたい
それがアロー関数の素晴らしい所


これは関数なんだけど、関数だとおもっちゃいけない。
値だ。そういう処理をする値だ。と考えると
thisが変わっちゃうなんてありえないって思えてくるでしょ?
それがアロー関数の素晴らしい所
0895Name_Not_Found
垢版 |
2018/04/12(木) 00:43:12.05ID:???
>>892
javaやらrubyやらが涙ぐましい努力をして導入したのとは違い、javascriptは元から関数が第一級オブジェクトであるのでその通り。
でも短くかけるようになるだけでも嬉しいじゃん。
this使う場合もたいていbindしなくてよくなるから短くなるぞ。
0896Name_Not_Found
垢版 |
2018/04/12(木) 03:01:12.33ID:???
まあ使えなくても困りはしない

アロー演算子は言語仕様だから
オレオレライブラリで代用したりはできないけど


どうでもいいけど
function( ... ){ ... }( ... )[ ... ]
とかのクソわかりづらい記述が俺は大嫌いだ
0897Name_Not_Found
垢版 |
2018/04/12(木) 05:25:46.63ID:???
(function( ... ){ ... })( ... )[ ... ]じゃないか?w
そういうときこそ変数に入れて分けよう。
var hoge = function( ... ){ ... }
var fuga = hoge( ... )
var piyo = fuga[ ... ]
一行で書くのはたいていはパフォーマンスのためというより変数の名前考えるのがダルいから。ソースは俺。
分からないなら分かりやすく書こう。
0898Name_Not_Found
垢版 |
2018/04/12(木) 05:47:58.22ID:???
クソな書き方するワンライナークズって死ねばいいよね という話だろ
0899Name_Not_Found
垢版 |
2018/04/12(木) 17:12:46.53ID:???
変数名かんがえるのが面倒なので便利サイト教えてください
0900Name_Not_Found
垢版 |
2018/04/12(木) 19:59:38.20ID:???
別に漢字とか使ってもいいんやで
0901Name_Not_Found
垢版 |
2018/04/12(木) 20:51:14.38ID:???
頭ん中で翻訳すればすぐ
0902Name_Not_Found
垢版 |
2018/04/12(木) 21:03:54.26ID:???
>>896

アロー演算子は言語仕様だから
オレオレライブラリで代用したりはできないけど
トランスパイラを使えば代用できる
0904Name_Not_Found
垢版 |
2018/04/12(木) 23:30:08.93ID:???
c++やphpじゃないんだから…
0906Name_Not_Found
垢版 |
2018/04/12(木) 23:57:22.24ID:???
>>903
すまんすまんw
>>896に引きづられた(っていうか前半はコピーしただけ)
0907Name_Not_Found
垢版 |
2018/04/13(金) 00:11:57.46ID:???
スマートさのかけらもない弁解
0908Name_Not_Found
垢版 |
2018/04/13(金) 00:19:21.42ID:???
new演算子と併用できないんだし
=>がアロー演算子、アロー演算子を用いて宣言された関数がアロー関数、なんじゃないの?
0909Name_Not_Found
垢版 |
2018/04/13(金) 00:34:51.14ID:???
どこぞの書き方がいっぱいある言語もクソだと思うが
省略できます省略できます省略できますもクソだと思う
多少なら構わんが
0910Name_Not_Found
垢版 |
2018/04/13(金) 00:47:43.70ID:???
>>907
なんのこっちゃ
仕様で演算子の定義にないでしょ
0912Name_Not_Found
垢版 |
2018/04/13(金) 01:02:50.35ID:???
>>909
両方rubyじゃんクソ過ぎワロタwwww
0913Name_Not_Found
垢版 |
2018/04/13(金) 01:07:24.42ID:???
保守するのが自分じゃないならどんな書き方してもいい
6重IFネストしてもいいぞ
0914Name_Not_Found
垢版 |
2018/04/13(金) 12:16:39.80ID:???
focusoutした時、イベントオブジェクトのrelatedTargetには新しくフォーカスされた要素が入っていますが
ネットでこれはchromeでしか使えないという情報を見かけました
同じものはdocument.activeElementにも入っているはずなので、
汎用性を考えてこっちを使う方がいいでしょうか?
0915Name_Not_Found
垢版 |
2018/04/13(金) 12:22:24.17ID:???
よく知らんけどタイミング大丈夫なの?
0917Name_Not_Found
垢版 |
2018/04/13(金) 13:29:19.71ID:???
>>916
ありがとうございます
chromeでしか使えないというのは古い情報だったようですね
またactiveElementは、focusoutの時点ではまだ設定されていませんでした
0918Name_Not_Found
垢版 |
2018/04/13(金) 20:58:35.49ID:???
>>917
jQueryはそこらへんの違いを吸収していた気がする
0919Name_Not_Found
垢版 |
2018/04/14(土) 03:42:39.78ID:???
>>905
質問者じゃないけどこれ凄くいいですね
早速プラグインをphpstormに入れました
0920Name_Not_Found
垢版 |
2018/04/14(土) 07:13:23.43ID:???
localStorageは保存時にJSON.stringify
読み込み時にJSON.parse
をかけて使うものなのでしょうか?
0921Name_Not_Found
垢版 |
2018/04/14(土) 07:21:56.86ID:???
だとすれば、setItemやgetItemにJSONへのエンコードとデコードを組み込んで
デフォルトで文字列以外の値も受け取れるようにした方が良かったのではないでしょうか?
0922Name_Not_Found
垢版 |
2018/04/14(土) 07:53:56.36ID:???
そんなこと言われても…
0923Name_Not_Found
垢版 |
2018/04/14(土) 10:26:51.04ID:???
>>905
これ知らなかった。地味にすごく便利w
0924Name_Not_Found
垢版 |
2018/04/14(土) 10:40:21.31ID:???
>>920>>921
localStorageがドキュメント型DBなのならそうだけど、あくまでキーバリュー型DBだから。
保存されるのは文字列。
それ以上でも以下でもない。
そこを勘違いさせるようなAPIを標準で入れてしまうのはよくない。
オブジェクトのようにアクセスできるようにしたらオブジェクトと同じように使われることを促進してしまうが、API下ではたとえ一部のキーが対象の操作であっても文字列全体の読み出しや文字列全体の書き込みが発生してしまう。
用途によってIndexedDBやその他のローカルDBライブラリを活用を検討すべき。
内部でIndexedDBを使い(非対応ブラウザのためのフォールバックあり)、ドキュメント型DBのインターフェースを提供するようなのもある。
簡単だからと言って何でもかんでもlocalStorage使うのはよくない。
0925Name_Not_Found
垢版 |
2018/04/14(土) 10:40:24.08ID:???
>>921
ありえないな。
JSON使ってディープコピーを実現するとか
馬鹿なことを言ってるやつがいるが、
そんなことをするとデータが壊れる。

その前提を知ってるならJSON文字列に
変換するのは自分でやることもできるんだから
あえてlocalStorageにもたせる必要性がない
0926Name_Not_Found
垢版 |
2018/04/14(土) 10:41:07.36ID:???
>>924
> localStorageがドキュメント型DBなのならそうだけど、あくまでキーバリュー型DBだから。
> 保存されるのは文字列。

それは説明になってない。
キーバリュー型DBだからって文字列専用じゃなきゃいけない理由なんてない
0927Name_Not_Found
垢版 |
2018/04/14(土) 10:49:21.51ID:???
仕様の話ならまだしも策定された仕様の是非の話はきっと別に良い場所があるんじゃないかな
0928Name_Not_Found
垢版 |
2018/04/14(土) 13:01:23.65ID:???
オブジェクト丸ごとぶち込む様な雑な使い方すんなって事だよ
0929Name_Not_Found
垢版 |
2018/04/14(土) 13:57:04.83ID:???
>>924-925
なるほど
確かにそうですね
ありがとうございました
0930Name_Not_Found
垢版 |
2018/04/15(日) 01:03:56.93ID:???
var constant = (any) => {
return (_) => {
return any;
};
};

ってコードがあるんだけど
二行目のカッコの中にあるアンダーバーって何?
0931Name_Not_Found
垢版 |
2018/04/15(日) 01:08:24.66ID:???
それよりもな。一般的にアロー関数はreturnや{}を使わないもんだ

var constant = (any) => (_ => any);
0932Name_Not_Found
垢版 |
2018/04/15(日) 01:11:39.88ID:???
おっと質問に答えてなかったな。
引数は利用しませんっていう時に時々使われる変数名だ
0933Name_Not_Found
垢版 |
2018/04/15(日) 01:20:30.41ID:???
配列から任意のオブジェクトを破壊的に削除するシンプルな方法ありますか?
lodashのwithoutはシンプルですが非破壊的です
ループとspliceを使ったらできそうですが、そんなにコードを書くならwithoutの方がいいです
0934Name_Not_Found
垢版 |
2018/04/15(日) 01:30:09.78ID:???
どのくらいのコードなら
破壊的という要件を満たさない方がいいと判断するのか書いてくれないと
0936Name_Not_Found
垢版 |
2018/04/15(日) 02:16:05.66ID:???
非破壊でなく、何かしら変化させちゃったらみんな破壊的なんだから今回どういう条件なのか書いてもらわないと…
例えばfindIndexとdeleteで短く書くと歯抜けになるがそれでいいの?
もちろんインデックス連番になるよう詰めることも出来るが当たり前だがその分のコードは増える。
条件をだな、
0937Name_Not_Found
垢版 |
2018/04/15(日) 02:29:07.16ID:???
lodashのwithoutの破壊的版ってことだろ
それぐらい読み取れよ
0938Name_Not_Found
垢版 |
2018/04/15(日) 02:31:55.57ID:???
へー、今見たら、lodashのドキュメントページにREPLがついてた。
つまりその場ですぐにサンプルコードを実行、
そして書き換えて実行してみることができる。
便利だな。いつからだろ
0939Name_Not_Found
垢版 |
2018/04/15(日) 02:51:37.33ID:???
読んだがこれを破壊的にやりたい理由がさっぱり分からん。何かしらメリット出るのか?
非破壊ならvanillaでもfilter一発なのに。
0940Name_Not_Found
垢版 |
2018/04/15(日) 03:05:43.36ID:???
許してやってくれ
ライブラリ好きの彼は破壊的という言葉を使ってみたかったんだ
0941Name_Not_Found
垢版 |
2018/04/15(日) 03:14:01.56ID:???
>>939
配列を参照している何かが他にある場合とかじゃない?
0942Name_Not_Found
垢版 |
2018/04/15(日) 03:27:18.59ID:???
再代入しなければ宣言をconstに出来ますし
配列オブジェクトを作り直すより維持する方がイケてると思います
lodashのpullで出来ました
0943Name_Not_Found
垢版 |
2018/04/15(日) 03:35:42.13ID:???
>>940
おいおいw破壊的なものがすきなわけ無いだろ
0944Name_Not_Found
垢版 |
2018/04/15(日) 03:43:12.32ID:9Y5uuXDs
>>941
イケてる感がどこに由来するのかと考えるとそういうことだと思います
広い範囲で使われる、スカラー値以外の変数に再代入するのは抵抗あります
クロージャに入り込む可能性もありますし
0945Name_Not_Found
垢版 |
2018/04/15(日) 06:50:30.62ID:???
普通はバグりたくないから、非破壊的なものを使う。
破壊的なものを使う場合は、メソッドチェーンとかで、処理を続けたい場合だけ

ところで君ら、lodash 厨に聞くが、
日本語に翻訳したドキュメントページを作ったかね?

もし作っていなければ、早く作りたまえ!
0946Name_Not_Found
垢版 |
2018/04/15(日) 10:32:58.79ID:???
> 破壊的なものを使う場合は、メソッドチェーンとかで、処理を続けたい場合だけ

メソッドチェーンは同じオブジェクトに対して操作するものでなければならない
という定義があるのかどうか明確じゃないし、
あんたがどういう意味で言ってるのか知らんが、
単にメソッドの連続で処理を続けたいだけなら非破壊的であってもできる

例えばこんな感じだな。メソッドの連続で処理を続けているが非破壊的
https://lodash.com/docs/4.17.5#prototype-chain

var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];

// A sequence with explicit chaining.
_(users)
.chain()
.head()
.pick('user')
.value();
// => { 'user': 'barney' }
0947Name_Not_Found
垢版 |
2018/04/15(日) 10:39:19.80ID:???
配列で、頭の要素内の何かを使いたくて、頭が[0]と保証されてない、ってどんだけ異常な環境で仕事してんの
0949Name_Not_Found
垢版 |
2018/04/15(日) 12:12:31.11ID:???
>>945
バグりたくないから非破壊的にするとは?
オブジェクトは普通上書きしませんし
配列オブジェクトもオブジェクトのように扱うようにするということで
バグは関係ないと思いますが・・
ローカル変数ならオブジェクトをポイ捨てするのもいいですが
公的性質を持っているオブジェクトなら上書きする方がバグに繋がると思います
0952Name_Not_Found
垢版 |
2018/04/16(月) 03:22:43.49ID:???
配列に配列を破壊的に追加したい場合
Array.prototype.push.apply(array,array1)
とやりますが、
これと同じことをやる関数はlodashにないのでしょうか?
こういう書き方はシンプルじゃないので、
こういうのこそlodashにあって欲しいのですが見当たりません
他のやり方があるのでしょうか?
0953Name_Not_Found
垢版 |
2018/04/16(月) 03:37:30.62ID:???
javascriptで作ってもらったウェブアプリの出来がいいかわるいか
どのあたりを見てどうやって判断すればいいんでしょうか?
0954Name_Not_Found
垢版 |
2018/04/16(月) 04:51:18.87ID:???
>>952
いや、lodashは関数型っぽくするライブラリだから
破壊的なメソッドの方が違和感あるよ
ただの便利ツールじゃないんだからさ
そこの所は認識間違ってるので訂正しておいてね
0955Name_Not_Found
垢版 |
2018/04/16(月) 06:29:35.61ID:???
>>952 array.push(...array1)でいいじゃない
>>953 全部を見て君が素直にどう感じるか
0956Name_Not_Found
垢版 |
2018/04/16(月) 09:59:22.05ID:???
回答ありがとうございます

>>954
関数型言語的な性質が大きいのは確かですが
破壊的メソッドも複数提供してるのでそこは是々非々では?

>>955
その書き方をすっかり忘れていました
こういう場合に使うんですね・・!

ありがとうございました
0957Name_Not_Found
垢版 |
2018/04/16(月) 15:49:02.81ID:wBM3V2Kg
chromeで画像検索結果等から、画像を自PCにダウンロードして自分のブログへ画像アップロード
というような画像アップロード簡易プログラムといったものを作成したいと思っています。

この一連の処理を一度行うプログラムの開発を試みています。
画像を右クリックすると「ブログにアップする」などみぎっクリックメニューなどを作成するのが目標です。

PHPで自分のブログに画像をアップロードする、というものは一応できたのですが、
chromeで画像のURLを取得するといった、
ブラウザ上の処理はjavascriptと思うのですが、
javascriptでもしURLを取得できたとしても、PHPの側に変数をどう受け渡せばよいのか
調べてもはっきりわからない状態です
そもそもの言語も大体javascriptとかPHPあたりでよいと思うのですが、
どうすればうまくいきますでしょうか…。
0959Name_Not_Found
垢版 |
2018/04/16(月) 16:31:58.17ID:wBM3V2Kg
>>958
いえ、認められているフリー素材のみです!!


javascriptでサーバーにアップロードうんぬんというそういうものは出来ないし、
PHPでブラウザ上のものを色々操作したりデータ取得等できないし、
ここをどう融合するのか…という
クリップボードを利用して変数の出し入れ、など思ったのですが
そこもよく分からず・・
しかし、画像右クリック、デスクトップ等に保存、
それぞれの自分のブログで画像アップロードボタン系を押して、画像を選択して、
などここは絶対にプログラミングの知識がすごく使える場面だと思うのですが…。
0960Name_Not_Found
垢版 |
2018/04/16(月) 17:03:37.66ID:???
//JS側
fetch('PHPのURL', {
method: 'POST',
mode: 'cors',
body: new URLSearchParams({url: '画像のURL'}),
});

//PHP側
header("Access-Control-Allow-Origin: *");
$_POST['url']; //これが画像URL
0961Name_Not_Found
垢版 |
2018/04/16(月) 19:25:38.49ID:ukfttz2j
>>953
変数名や関数名に一貫性があるかとか

複雑なプログラムのデザインが正解かどうかなんてプロでも簡単にはわかんない

メンテしやすいかどうかとかムード。
0962Name_Not_Found
垢版 |
2018/04/16(月) 19:30:23.02ID:???
javascripter()らしいお粗末な回答どうもw
0963Name_Not_Found
垢版 |
2018/04/16(月) 23:44:37.81ID:???
http://webings.net/js/dentaku/
このソースコードのjavascriptの部分の流れが良く理解出来ません
1.
if(val >= 0 && val <= 9) { // 電卓に表示する数列を作成
if(flag == 0) {
disp = val;
disp2 = "0";
flag = 1;
}
else {
disp = disp + val;
disp = parseFloat(disp);
}

数字のボタンを押した際の処理内容はここですよね?
どうして129と連続で入力した際は出力に129と出るのですか?
何故毎ループでdispが1→2→9と上書きされていかないのですか?


2. else {
if(disp) の部分

if(disp)は何を判定してるのですか?
switch(flag)で計算内容を判定していますが、このflagは、このあとの処理の
if(val == "=") {}で設定されるのではないのですか?


質問多くて申し訳ないですがよろしくお願いします
0964Name_Not_Found
垢版 |
2018/04/17(火) 01:17:48.98ID:???
>>957-959
スクレイピングは、Ruby で、Selenium WebDriver を使う。
静的なページなら、Mechanize

ブラウザで、ページの画像を右クリックすると、画像のURL がわかるとかは、
ブラウザのプラグインを使わないと無理だろ
0965Name_Not_Found
垢版 |
2018/04/17(火) 01:28:13.60ID:???
>>963
こういう、1行ずつ説明していない、日記のような、
他人に教えていない、サイトを見たらダメ

他人のプログラムを解析するのは、自分で書いていないから、やたらと時間が掛かるし、
その割には、自分で書いていないから、いくら分析しても、自分の力が向上しない

他のサイトを見て、1行ずつ自分で書いて、実行して確かめながら、勉強すべし
0966Name_Not_Found
垢版 |
2018/04/17(火) 02:04:41.60ID:???
下のコードを実行するとnが9000超えると
Uncaught RangeError: Maximum call stack size exceeded
というエラーがでるのですがどうすればいいのでしょう?
7万回くらい回したいんですが。。。

var locateBalls = (n, array, func, ) => {
if (n > 8900) {
//console.log(balls)
return balls;
} else {
//console.log("n: "+ n)
//console.log("x: " + ball.x + " y: "+ ball.y)
return locateBalls(n+1, func(), func);
}
}

locateBalls(0, balls, createBall)
0967Name_Not_Found
垢版 |
2018/04/17(火) 02:06:20.13ID:???
>>963
dispっていうのはおそらくdisplayの略
画面に表示されている文字列
valっていうのはおそらくvalueの略
現在入力した文字

> disp = disp + val;

文字と文字を+すると、くっつく。
例えば "a" + "b" だと"ab" になる
よってこの行で、画面が "1" で入力が "2" だと
dispには"12" がはいる。同様に"9"を押すと "129" となる

> if(disp)は何を判定してるのですか?
正直言ってぱっと見じゃ分からん。
+−×÷押した時にdispが空になってるから
それ以外の時に処理するものなんだろうけど
なんでこんな判定になるのか。そもそも普通の電卓は画面が空白に
なったりしない。直感的でないので分からんし、
クソコード(俺ならこんなコード書かない)なんで読み解きたくもない

>>965も言ってるけど、これは自分で勉強して、こんなの作ってみましたって
だけなんで勉強には不適切
0969966
垢版 |
2018/04/17(火) 02:18:31.37ID:???
>>966
ちなみに公開とかするコードじゃないので自分の環境だけでできればいいです。
0970Name_Not_Found
垢版 |
2018/04/17(火) 02:30:01.65ID:???
>>966
>どうすればいいのでしょう?

7万も再帰させない方法を考えればいいでしょう
0971Name_Not_Found
垢版 |
2018/04/17(火) 03:26:31.64ID:???
>>961
同意
設計まで踏み込まにゃならんからな

逆にいえば一目見ただけで判断出す奴は
歴史に残る程の大天才か、もしくは人間未満のクズ
0972Name_Not_Found
垢版 |
2018/04/17(火) 04:26:03.60ID:???
>>966
JavaScript には、末尾再帰が無いのか?

末尾再帰すると、スタックに積まずに、
while loop の形に展開してくれる最適化

それか、スタックサイズを大きく設定するとか。
ただし、swap が起きて、すごく遅くなるかも
0973Name_Not_Found
垢版 |
2018/04/17(火) 06:37:36.04ID:???
>>971
出来の良さにコードの質は関係ないよ
逆にコードの質が良いことをアプリの出来が良いとは消して言わない
0974Name_Not_Found
垢版 |
2018/04/17(火) 06:53:06.95ID:???
>>972
あるがまだSafariくらいしか実装していない
0975Name_Not_Found
垢版 |
2018/04/17(火) 08:51:56.76ID:???
ecmaの仕様に入ったから末尾再帰はいずれすべてのブラウザに実装されるがあえて言いたい。
末尾再帰は甘え。
なぜ末尾再帰にするのか?
それはブラウザでループに置き換えられるから。
そんな志と抽象レベルの低いこと考えながら使うくらいなら再帰なんてやめちまえ。
再帰はアルゴリズムをスマートに書き表せるから素晴らしいのだ。
forループに変換できるかどうかは関係ない。
それが目的なら最初からfor書け。
0976Name_Not_Found
垢版 |
2018/04/17(火) 09:01:13.11ID:???
要らないところでむやみやたらに再帰使っても可読性が落ちるだけ
0977Name_Not_Found
垢版 |
2018/04/17(火) 09:08:54.59ID:???
フォルダ内のサブディレクトリ含むすべてのファイルの列挙とか、ツリー構造扱うときは再帰使わないと逆に分かりにくい。
何でもかんでも可読性が落ちると言ってるバカは自分が理解できないから貶めてるだけ。
分からないのお前だけだよw
0978Name_Not_Found
垢版 |
2018/04/17(火) 10:59:45.26ID:???
コード中のハンドラ登録部分が探しにくいのですが
いい方法はありませんか?
だらだら長いメソッドチェーンになって関数単位になっているわけではないので
何で検索したらいいのか?ってなります
0979Name_Not_Found
垢版 |
2018/04/17(火) 20:20:52.98ID:???
なれると再帰による反復のほうがシンプルで読みやすいのに
0980Name_Not_Found
垢版 |
2018/04/17(火) 21:30:42.91ID:???
なれるも慣れないも再起なんて意識するようなものではないと思うがな
0981Name_Not_Found
垢版 |
2018/04/17(火) 21:36:10.52ID:???
くっだらないマウントw
意識しなくてよかったならわざわざ言うまでもない。
慣れなかったなら慣れればいいだけ。
それだけのこと。
俺様は賢いから慣れるもなにも意識したことなんてない!ないんだ!聞いて聞いて!誉めて讃えてーっ、てかwww
0982Name_Not_Found
垢版 |
2018/04/17(火) 21:39:27.70ID:igkWy4Si
>>977
それは「再帰しなきゃできない」じゃない?

あれ?できるか、まぁ泥臭いこと書きたい初心者はほっときましょう。
0983Name_Not_Found
垢版 |
2018/04/17(火) 21:48:21.91ID:igkWy4Si
>>980
そりゃ980は頭いいのかもしれないけどな

普通プログラムはじめて再帰処理ってのはこんがらかるポイントだと思うよ

自分で自分を呼ぶ?なんじゃそりゃー つってな

あと三項演算子とか正規表現
0984Name_Not_Found
垢版 |
2018/04/17(火) 22:36:33.92ID:???
JavaなりCなりどっちだったか忘れたけど
サブディレクトリ漁りとかで再帰覚えたっけな

JavaScriptだと……なんかいい例が思いつかん
入口がJavaScriptだと再帰を勉強する材料が少ないのかも
0985Name_Not_Found
垢版 |
2018/04/17(火) 23:36:08.60ID:???
>>965
>>967
ありがとうございます
自分で1から考え直しているのですが、

var operatpr に"+"や"x"を入れた際に、
switch(operator)
とやるのは面倒くさいので、
ans = parseInt(disp) operator parseInt(disp)
みたいにする方法有りませんかね?
0986Name_Not_Found
垢版 |
2018/04/17(火) 23:38:57.73ID:???
>>985
追記
文字列で全部連結してevalで実行するような感じです(ただ、evalは使いたくないです)
0987Name_Not_Found
垢版 |
2018/04/17(火) 23:56:11.28ID:???
動的型付言語ウザすぎる
Int型じゃねーのかよお前死ね
0988Name_Not_Found
垢版 |
2018/04/18(水) 00:07:07.34ID:???
なんで、stringはval.toString()なのに、intはval.toInt([radix])じゃなくてparseInt(val[, radix])なんですか
統一性がない
0989Name_Not_Found
垢版 |
2018/04/18(水) 00:16:58.44ID:???
文字列は文字列で
parseInt("0"+variable, 10)なんてキモい書き方しないとNaNになるクソ言語
0990Name_Not_Found
垢版 |
2018/04/18(水) 00:20:37.13ID:???
>>957
あえて省いてるのかも知れんけど
もし拡張機能の使用を前提にしてるならそう書かないと答えようが無いよ
0992Name_Not_Found
垢版 |
2018/04/18(水) 00:40:17.93ID:???
parseInt('123'); // int 123 妥当
parseInt('0123'); // int 123 わかる 頭が0な文字列でも第2引数省略しても8進数扱いされなくなった
parseInt('abc'); // NaN わかりたくないけど、100歩譲ってわかるとしておこう
parseInt('abc123'); // NaN クソが
parseInt(''); // NaN shine
0993Name_Not_Found
垢版 |
2018/04/18(水) 00:50:55.51ID:???
よく分からんが、abcという文字列も数値に変換しろ!
って言ってんのか?
0994Name_Not_Found
垢版 |
2018/04/18(水) 01:01:26.36ID:???
c++やjavaで文字列値・整数値のキャストに面倒があっても許容できる
php 柔軟
js クソ
0995Name_Not_Found
垢版 |
2018/04/18(水) 01:22:15.74ID:???
jsは動的なのがそもそもゴミ
キャストが面倒くさいのもゴミ
0997Name_Not_Found
垢版 |
2018/04/18(水) 01:44:56.67ID:???
ひとりで何やってるの?
0999Name_Not_Found
垢版 |
2018/04/18(水) 02:01:54.08ID:???
>>994
いや、数値以外の文字が入っていても
無視するほうがおかしいだろw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 42日 7時間 16分 59秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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