TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
twitterブーム早く終わんねーかなー
2chに晒された管理人の憩いの場。 3
富山地方鉄道ツイッター twitter
+ JavaScript & jQuery 質問用スレッド vol.8 +
みんなに教えてもらいながらサイト作る
タグなんて覚えても意味ないよ(笑)
サイト管理人にありがちなことpart.1
- これからのWEB製作者に必要なスキル -
レースクイーン・コンパニオン系サイト管理人のスレ
!!Adobe GoLive 6.0は糞だーーーーーー!!!!
+ JavaScript の質問用スレッド vol.141 +
- 1 :2019/07/05 〜 最終レス :2019/08/28
- JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
■前スレ
+ JavaScript の質問用スレッド vol.140 +
https://mevius.2ch.sc/test/read.cgi/hp/1558249632/
- 2 :
- 2 名前:Name_Not_Found[] 投稿日:2019/05/19(日) 16:08:41.33 ID:2J4OYdDV
■FAQ
◆開発者ツール(Developer Tools)の基本的な使い方
▼諸注意
- 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
- Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
- Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
▼要素を検証
1. ページ上で右クリックして [要素を検証]
2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
3. 右側のサイドバーから知りたいステータス名のタブを選択する
- [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
- [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
- [Properties] タブ … 選択したDOMノードのプロパティを表示
▼コンソール
1. JavaScript コード上で console.log('Hello, World!'); と入力
2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
3. [Console] パネルに "Hello, World!" と表示される
(※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
- 3 :
- ■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。
■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
- 4 :
- ■各種仕様 (続き)
◆ 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
■テンプレ案
http://fiddle.jshell.net/fH4cC/180/show/light/
■FAQ
http://fiddle.jshell.net/vSqKr/44/show/light/
- 5 :
- ■参考URL
ダウンロード、CDN
http://jquery.com/download/
ブラウザサポート
http://jquery.com/browser-support/
jQuery UI
http://jqueryui.com/
jQuery UI ダウンロ−ド
http://jqueryui.com/download/
リファレンス等
http://alphasis.info/
http://www.jquerystudy.info/
http://js.studio-kingdom.com/
【翻訳まとめ】jQuery 3.0 アップグレードガイド - Qiita
http://qiita.com/fmy/items/345a264a1cf2e2a73f62
- 6 :
- ■JavaScript主要ライブラリ・フレームワーク
jQuery
http://jquery.com/
jQuery UI
http://jqueryui.com/
jQuery Mobile
http://jquerymobile.com/
Lo-Dash
https://lodash.com/
Backbone.js
http://backbonejs.org/
Underscore.js
http://underscorejs.org/
AngularJS
https://angularjs.org/
Knockoutjs
http://knockoutjs.com/
RequireJS
http://requirejs.org/
D3.js
http://d3js.org/
threejs
http://threejs.org/
- 7 :
- Q. jQueryはどのバージョンを使えばいいのですか?
A. IE9以上であれば、jQuery 3.0を使用してください。
IE8以下にも対応するならば、jQuery 1.12を使用してください。
補足
jQuery 1.9 までは一系統しかなく、古いブラウザも含めて全て対応していました。
その後、古いブラウザを切り捨てるためにバージョンを分岐させました。
古いブラウザにも対応した1系(1.10、1.11、12)と
古いブラウザを切り捨てた2系(2.0, 2.1, 2.2)です。
1系と2系は対応ブラウザの違いだけで機能は全く一緒です。
機能が同じなのにメジャーバージョンが違っているのが分かりにくい
ということでバージョン番号の付け方を変えることになり、
新たに古いブラウザを切り捨てたjQuery 3.0、そして古いブラウザにも対応した
jQuery Compat 3.0がリリースされる予定でした。
しかしマイクロソフトが古いIEのサポートポリシーを変更し
サポート中であるOSで動く、最新のIEしかサポートしなくなったために、
2016年1月でVista上のIE8のサポートが終了しました。
そのため予定されていたjQuery Compat 3.0がなくなり、
jQueryは3.0に一本化されました。
- 8 :
- ■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
- 9 :
- ■JavaScript主要ライブラリ・フレームワーク 利用率
https://w3techs.com/technologies/overview/javascript_library/all
ライブラリ固有の質問はこちらへ
JavaScript ライブラリ総合質問所 vol.5
https://mevius.2ch.sc/test/read.cgi/hp/1465399470/
>>1 私見
べつに lodash だけを特別視する訳ではありませんが、vanilla JS だと長くなるコードが
lodash ならサクっと書けるコードがあったりします。
「別解として lodash の短いコードを出す」くらいはココでも良いような気がします(あくまで私見)
- 10 :
- 流石に何十スレも言われ続けてるんだから
何らかの形でちょっとずつでいいからテンプレ直していこうよ
理由があればなんで勝手に>>1変えたんだとか言わないからさ
そのままっていうのは良くない
とりあえずまず>>2以降をバッサリ変えよう
ドキュメントのリンクもMDNとES仕様のLS版以外いらないでしょ
- 11 :
- 言い出しっぺの法則は滅んだのか
- 12 :
- 何らかの形でちょっとずつでいいからテンプレ直していこうよ
↓
とりあえずまず>>2以降をバッサリ変えよう
- 13 :
- >>12
>>1に比べて>>2以降はスレ落ちを防ぐための何人が目にしてるかわからないような低価値テンプレでしょ
>>1を変えるのは慎重にならないといけないし、とりあえず手を付けなくてもいいけど
>>2以降の列挙されているのを整理することは「ちょっと」でしょ
- 14 :
- >>9
> ライブラリ固有の質問はこちらへ
>>5-7でライブラリ関連のテンプレを入れている矛盾を何とかしてくれ
- 15 :
- >>14
あっちにライブラリのテンプレが入ってないから
やむをえないでしょう
「そもそもあっちとは遥かに勢いが違う」というのも否めない
それだけ「ライブラリ固有の質問に需要がない」といえるのかも知れない
ただ lodash だと短く書けるという話はチラホラ出てるから
こっちで敢えて lodash 全面禁止する必要性があるかどうか…?
- 16 :
- ■各種仕様
◆ Standard ECMA-262
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
https://www.ecma-international.org/ecma-262/9.0/ (ECMAScript 2018)
https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ 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 和訳)
削るべきか要審議
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
- 17 :
- 3 の後半、だった
- 18 :
- >>4 は多分誰も読んでないから全て削除で良いかと
即死判定は事実上ないから
- 19 :
- 読んでいる人が殆ど居ないかも知れないが
>>8 は 2 へ繰り上げる方が良いかも
- 20 :
- 現時点での >>2 の必要性は、私には分からん
要らんという意見が多数を占めるなら、以後削ることになろうかと
- 21 :
- >>3 の前半も、
「要らん」という意見が多数を占めるなら(以下同文
- 22 :
- 整理すると
>>2 要らんのと違う?
>>3 前半は要らんのと違う?
後半は >>16
>>4 要らんのと違う?
>>5-7 維持すべきだとおもう
>>8 は2へ繰り上げるべきだとおもう
- 23 :
- くだらないことをしてるから、いつもどおり参戦したいんだが、
今、個人プロジェクトが架橋に入ってるので、
残念ながら放置。また次回のスレ立て頃に遊びに来るよ
- 24 :
- >>1 >>8 >>16 の3スレでいい
ちなみに今リンクするならES9.0ではなく10.0ね
- 25 :
- ECMAScript® 2019
https://www.ecma-international.org/ecma-262/10.0/
- 26 :
- >>15
> あっちにライブラリのテンプレが入ってないから
なら、あっちのテンプレ整備すればいい
- 27 :
- >>15で「需要がない」と言っておきながら、
> それだけ「ライブラリ固有の質問に需要がない」といえるのかも知れない
>>22でライブラリ関連のテンプレだけ残そうとする理由は何?
一貫性がなくて、結論だけ読むと、ライブラリ房に見える
- 28 :
- 現状、ライブラリは自己主張の激しい人が大半なわけで、>>1の趣旨に反する以上は専用スレでいいと思うけど
lodashがいいならシェア1位のjQueryもいいだろ、とか屁理屈こねる人が必ず出てくる
- 29 :
- >>1
> 質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
前スレでは「回答者だけ」だったルールが「質問者だけ」に改変した意図を詳しく
https://mevius.2ch.sc/test/read.cgi/hp/1558249632/22
公平性を期すなら「両方」に課すべきルールだと思う
まあ、「任意ルールは守られない強制すべき」という結論が前スレで出ているわけだが、性善説でルールを決めたのなら公平にすべき
- 30 :
- 強制じゃないと効果なしと前スレで散々言われたのに、なぜ強制でなく、しかも質問者に絞ったのか?
- 31 :
- 仕様関連で最低限残すべきは、ES2019, HTML Standard, DOM関連ぐらいで、それ以外はFAQのリンク集に追加するぐらいでいい
http://fiddle.jshell.net/vSqKr/44/show/light/
Conpatibilityはcaniuseあたりが妥当か
ライブラリは向こうでやって
- 32 :
- + JavaScript の質問用スレッド vol.140 +
https://mevius.2ch.sc/test/read.cgi/hp/1558249632/22
22 名前:Name_Not_Found (ワッチョイ 938f-h/tS)[] 投稿日:2019/05/23(木) 08:49:53.51 ID:t2rWukz00
前スレから。
このスレは age 進行でお願いします。
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
回答者は !slip:vvvvv を名前欄に
質問者のかたは
1!slip:vvvvv
みたいなかんじで、よろしくお願いいたします。
- 33 :
- >>28
jQuery / lodash ともに全面禁止にするべきなの?
- 34 :
- 主要ライブラリ列挙は要らんな
それがどんなライブラリなのかの文章がないと紹介にならないし
- 35 :
- >>33
例外を認めるぐらいなら禁止した方がいい
- 36 :
- >>33
全面禁止じゃないけど
サポートする範囲としてはES仕様と、Web標準だけというのを明記したほうがいい
特定のライブラリの機能の質問はライブラリスレですること
このライブラリを使わないといけないんですとかいうのは金払って依頼しなさいということになる
あとはパフォーマンスやらブラウザ固有の機能や実装問題も対象外
- 37 :
- つまりReactやAngularも禁止ってこと?
- 38 :
- ライブラリスレでやればいい
- 39 :
- サポートとか良く分からんし、ココは無償サポートの場でもなし
ブラウザの機能や実装の話が対象外って意味分からん
- 40 :
- >>39
そこは俺も分からなかった
標準仕様の話だけをしたい(実装の話はしたくない)意図は読み取れるが、それは>>36の好みだろと思った
- 41 :
- 実際に動くかどうかは二の次ってこと
つまり○○したいんですがどうすれば良いんですか?
Web標準の仕様にはあります。
(まだ実装されてません)
動くかどうかは話をしたくない
- 42 :
- もうそれならタイトルを変えたほうが良いんじゃねーの?
「JavaScriptとウェブ標準の仕様について語るスレ」にしたほうが良いでしょ
当初のスレの意味と違う話をしたいなら
- 43 :
- >>41
それはお前が回答する度に前提条件を前置きすればいいんじゃないか?
全体ルールにする意義が分からん
- 44 :
- >>39,40
WebはWebであってブラウザのためのものではないから
Web標準もブラウザのためだけのものではない
ブラウザはWebのためにあっても、Webがブラウザのためにあるわけではない
Webの仕様から離れて実際ブラウザがどう動くかという話はブラウザスレでやってもらわないと
パフォーマンスの話も、基本的にそれはブラウザという1アプリの話なんだからスレチ
そもそもここはJS単体の質問スレ
だけどこのスレは今Web制作板にあるので外様APIはWeb APIを中心に話すべきということになる
ブラウザの話までは含まれない
- 45 :
- >>44
ここは「Web制作のJavaScriptスレ」であって「JavaScript仕様スレ」ではないぞ?
仕様の話に限定したいなら、仕様スレでやれ
第一、仕様を理解している人だけが質問対象者なら、今までの質問者は99%アウトだ
質問スレでそんな運用が可能とは思えん
- 46 :
- これは俺の好みについて言ってるんじゃないよ
テンプレ議論からのこのスレのポリシーについて話してる
Webというものがブラウザのためだけのものでなくなって久しいんだから
基本ポリシーとしてブラウザの話も受け入れるのならば
ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる
俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってるのであって
もしなんでも受け入れてもいいよというのであれば、賛成する
だけどブラウザの話は受け入れるのに、ブラウザよりもスレが盛り上がっていない、
下手したら存在しない他のプラットフォームの質問を専用スレでやれと蹴り出すのはだめだと言っている
俺の好みの話をするならば、立派な外部スレが有るブラウザの話も受け入れるのであれば、
矮小な他プラットフォームは尚更ここで吸収してあげないといけないだろうということ
- 47 :
- >>45
仕様を理解だとかそういうことは一言も言っていない
Webというものはブラウザのためのものでなくなってから久しい
あとの言いたいことは>>46を読んでくれ
- 48 :
- Web制作板なんだから、「Web制作上、必要なJavaScript実装」は許容するに決まってるだろ
実装全体を禁止する理由がない
- 49 :
- > 基本ポリシーとしてブラウザの話も受け入れるのならば
> ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる
意味が分からん
JavaScriptなら受け入れるし、そうでないなら受け入れないんじゃないのか?
- 50 :
- >>48
そうやって「実装」必要と抽象的に言えれば勿論そうだが
実際は抽象的な実装というのではなく具体的な話になってくるでしょう?
例えばAとBどちらが高速かという話になったら
質問者がしていていなかった場合であっても話の50%はChromeの実装が今現時点でどうなっているかになるでしょう?
ただこの手の話は仕様ベースであっても>>3のように時が立つと無効になるのだから
パフォーマンスの話というのは大変慎重にしないといけない
- 51 :
- >>46
> 俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってるのであって
「無理な理由」が秘密主義で説得力皆無なんだけど
「Web技術を導入しているプラットフォーム」も曖昧だし
- 52 :
- >>51
俺は100スレ以上前からいるが
過去ここで古くはWinメトロの話題からNode上でのStreamの話題や
様々なプラットフォームの質問が足蹴にされてきたのを見てきたから
ここはJSのスレでありJSというのはスクリプト言語であり様々なプラットフォーム上で動く
そしてWebというものも今やそれ自体もプラットフォームであり様々なプラットフォーム上で動く
俺はそういうのを大事にしたいと思ってるが、
実際のところIEやChromeなど特定のプラットフォームがどうこうの話ばかり
勿論著名実装がサポートしているかどうかの話くらいなら何も問題ないと思ってるが
それ以上に各実装の性質の踏み込む話、
そういう限定されたテーマというのはJSを「自ら学ぶ」ためというよりも
限定されればされるほど、今動けばいい「制作依頼」に近くなると思っているので
できるだけ普遍的なスレにしたいとは思ってる
- 53 :
- >>52
「俺がやりたいスレ」の話はおなか一杯だから、「実質無理」に触れてくれない?
結局、君の好みの話しにしかなってないと思うんだけど
- 54 :
- >>53
実質無理というのは足蹴にされてきて
俺が無理矢理そういうのを受け入れようとしたら批判された経験からだ
だから今後もそういう質問が来たらきっと「荒れる」んでしょ?という皮肉だ
だからそうじゃないというならそれをテンプレに明記して欲しい
「Web技術を使うJSの話題であれば何でも受け入れますよ」と
それなら俺の100スレの怨念も浄化される
- 55 :
- その辺の話になると板分けの問題になってくるな
開発環境以外でのNodeの話ならム板かwebprog板じゃないか?
- 56 :
- >>50
高速化の質問についてはコードが出ているなら、「自分で試せ」で終わり
「このコードはどちらが早いですか?」
「このコードは動きますか?」
こんな質問は実装以前の問題だ
自助努力を推奨するスレとしては「自分で試せばわかる事は、自分で試せ」の答えしかない
- 57 :
- >>55
何回か大統一の話もしたこともあるけど
統一も分離も曖昧にするのもやっぱり問題が出るんだよね
やっぱり俺のワガママだったわ、これまでのレスは無視してくれ
すまなかった
- 58 :
- >>54
「君のつらい経験」や「君のやりたいこと」で煙に巻くのはどうかと思うけど…
主観的な考えが多い人だねえ
- 59 :
- 実用厳禁★独自拡張、草案段階のJavaScriptについて
https://mevius.2ch.sc/test/read.cgi/hp/1495948526/
純粋に仕様等について語りたい・空中戦をしたいならコッチだろ
このスレは理論のためのスレじゃない
- 60 :
- >>59 俺はそういうことが言いたかったんじゃないよ
- 61 :
- >>57
多分、自覚症状がないようだから、あえていうが、君の考えは「客観性」がまるでないから、受け入れられないんだよ
「俺はこうしたい」「俺はこうだった」「俺は無理だと思う」
これは全部、君の個人的な考えで他人を説得できる根拠じゃない(君を信頼している人なら受け入れるかもしれない)
100スレ前から受け入れられなかった原因も、その辺にあるのではないかと思うぞ
- 62 :
- >>52
> 過去ここで古くはWinメトロの話題からNode上でのStreamの話題や
> 様々なプラットフォームの質問が足蹴にされてきたのを見てきた
そんな大昔のことは知らん
直近2か月程度では、形式的に足蹴なんてあった覚えがない
あったというなら具体的にリンクを挙げたまえ
- 63 :
- >>60
それでは
どういうことが言いたかったのか、具体例を挙げつつ論理的に述べてくれまいか
貴殿が言いたいこと、具体的にところが把握できない
他の人々にも、把握されているようには見えない
コミュニケーションなんだから、そこんとこ頼む
- 64 :
- Web のユーザーインターフェースとして第一義に考えられるのはブラウザ
具体的には、Chrome / Safari / Firefox(状況次第で IE11 またはそれ以前)
これが大前提として共有されないんだったら前提から色々崩れるんだけど
opera とか vivaldi とか含めるとカオスだからゴメン
- 65 :
- 「回答できる」と「質問していい」は別問題だと思うのです
- 66 :
- だとしても形式的に蹴られてる記憶が無い
昔のことは知らない
- 67 :
- 俺も記憶にないなあ
「Node.jsの回答なんてお前らできないだろ?」な煽りは昔、あったような気もするが、それかね
- 68 :
- 具体例挙げるなら
Q: オブジェクトのディープコピーをしたい
A1. jQuery 使え
A2. lodash 使え
A3. 「使える」ライブラリなりプラグインなりモジュールなり使え
A4. オレオレ関数なりメソッドなり作れ
他に何かあるかな(具体例でも第5の回答例でも)
- 69 :
- >>68
それはライブラリ質問を禁止する例じゃないのか?
実装系質問を禁止する例が来ると思っていたのだが
あと、ディープコピーなら JSON.parse(JSON.stringify()) が何度も出てたし、ライブラリしか回答がなかったかのような表現は改竄が過ぎる
- 70 :
- JSON は色々問題あるじゃん
- 71 :
- >>70
それは質問者の要件に依る
そもそも、質問者はいつも質問だけして回答を放置してるから、要件不明瞭でどれがマッチするか全くわからん
- 72 :
- >>68に関していうなら、「ライブラリ房」の存在が元凶だから、彼を排除する方針を決めるだけでいい
実装系質問が実質無理な理由ではない
- 73 :
- そうそう
新たな〇〇房が現れたらその都度対応するだけの話
- 74 :
- >>44
だから実際のブラウザの話を抜きにするというのなら
実際のブラウザで動くことを前提として
質問が受け付けられなくなるんだよ。
Chromeで動きません。→実際のブラウザの話はしないでください。
- 75 :
- ■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
これもなくさんとな。仕様の話しかしないんだから
OSやブラウザのバージョンなんか関係ない
- 76 :
- 実装無視の話なんてヨソでやってくれ
誘導
実用厳禁★独自拡張、草案段階のJavaScriptについて
https://mevius.2ch.sc/test/read.cgi/hp/1495948526/
- 77 :
- >>4 の DOM のリンクだが
W3C DOM4
https://www.w3.org/TR/dom/
DOM Standard 日本語訳
https://triple-underscore.github.io/DOM4-ja.html
のみでも良いのではないかと
異論もとむ
- 78 :
- >>31 のリンク先の内容がカビ臭すぎ
どこから手をつけるのが良いか分からんけど、リンクしない方がマシなんじゃないかと(主観
- 79 :
- >>37
前スレの運用からみて
無視 or ライブラリスレ誘導で良いかと
- 80 :
- ◆ Standard ECMA-262
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
https://www.ecma-international.org/ecma-262/10.0/ (ECMAScript 2019)
https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
◆ W3C DOM4
https://www.w3.org/TR/dom/
https://triple-underscore.github.io/DOM4-ja.html (DOM Standard 日本語訳)
残すべきか要審議
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
HTML Standard 日本語訳
https://momdo.github.io/html/
(「HTML5.1 部分訳」のリンクは、最近は誰も確認していなかった模様)
- 81 :
- ◆ HTML Standard (HTML5)
https://html.spec.whatwg.org/multipage/
リダイレクトがいつまで続くものやら
あえてテンプレから消すのも手かも知れず
- 82 :
- >>74
ちゃんと書いてあることを読んでよ
あくまでWebの仕様外の話に絞って言ってるでしょ
パフォーマンスとか、細かなセキュリティポリシーの違いとか、Web仕様で定義されてる以外の
そこはブラウザ開発者の考え方次第、実装のされ方次第の問題だよねっていう所を言ってるんだよ?
- 83 :
- パフォーマンスや細かなセキュリティポリシーの違いは
Webの仕様で定義されてないって言ってる?
- 84 :
- >>82
横から口挟むけど、続けるなら、「実質無理」の理由を明らかにしてよ
見る限り、誰も納得できてないよ
- 85 :
- > 見る限り、誰も納得できてないよ
というより理由はまだ出ていない
>>68は実装じゃなくてライブラリの質問だった
- 86 :
- ああ、ひょっとして、>>50か?
>>56で論破されてから反応がないが
- 87 :
- >>46
> Webというものがブラウザのためだけのものでなくなって久しいんだから
> 基本ポリシーとしてブラウザの話も受け入れるのならば
> ブラウザ以外のWeb技術を導入しているプラットフォームの話題も受け入れないとおかしいことになる
>
> 俺はそれが実質無理だろうと思ったから、ブラウザも含めてプラットフォームの話は無しにしたほうがいいと言ってる
「実質無理」の論点ってここ?
質問者が質問する分には、幅広く間口を取っておいていいとおもうよ
回答がつくかどうかは別問題
こんなのを論拠に「ブラウザというプラットフォームの話を無しにする」って方がありえんし誰も幸せにならないだろ
メリットあるなら教えて欲しいもんだが
- 88 :
- 50スレ前からいる俺は、>>74を「仕様の質問だけに限定するのは実質無理」と受け取ったが、100スレ前からいる彼には深い考えがあるのだろう。
- コードの動作確認が出来ない
- デバッガも使えない
- 仕様を読み取ってコードを書き、思考実験を繰り返す
この困難な状況をどうやって打開するのか、実に興味深い。
若輩者の私に、ご教示頂ければ幸いである。
- 89 :
- 質問どうぞ
- 90 :
- + JavaScript の質問用スレッド vol.140 +
https://mevius.2ch.sc/test/read.cgi/hp/1558249632/
前スレ消化してからで良いだろ
- 91 :
- 実質無理と言ったのは
>>54で書いたようにそういう話題を完全に受け入れるというスタンスでもないし、
その逆でも今はないんだから、今までの様に穏やかにいられないんでしょという皮肉
そして>>82でも言ったが誰も仕様の話しかしてはいけないとは言っていない
仕様から離れたプラットフォームの話、つまり具体的に言うなら
普遍的なWebというものから離れたブラウザ固有の仕様の話は受け入れるべきかという話
デバッガは開発ツールなので今までWeb仕様とは別の体感できる動作についてて主に話してたのとは
ちょっと系統は変わるが、それでいうとそういう開発外部ツールの話を受け入れるのであれば、
同様にトランスレータだったり、オーサリングツールの話も受け入れるようにしないと
それこそ好き嫌いのとくに理由のない恣意的な差別になる
別に俺はどちらでもいいんだが、俺が一番言いたいことはそのどちらと決まってないことで
スレチだの何だのと不毛に荒れるのが嫌だから、せっかく今テンプレ議論がされてるから
この際にそういうスタンスもある程度決めて明記しておこうということ
まあそれで荒れなくなるかどうかは分からないが、少なくともどういう質問・回答の仕方をしたらいいのかの目安にはなる
- 92 :
- >>91
長文ご苦労様だが、
> 今までの様に穏やかにいられないんでしょという皮肉
根拠があなたの頭の中にしかないから、以降の話が全く頭に入って来ない
何度言われても根拠を出さないのだから、「根拠が全くない」か「感想が根拠だと思っている」のどちらかなんだろうな…
- 93 :
- 「俺はこう思う。お前らもそう思うだろ?」
→「そんなわけないだろ」(反対者多数)
→「なんで俺の思い(イメージ)を分かってくれないんだよ!」
今のところ、こんな印象
- 94 :
- 勉強中のものです。
「そこに何を代入しても何も起こらない、メモリも食わない、エラーにもならないオブジェクト」ってないものなんでしょうか。
例えば var element にDOM要素が入っているとして element.value="piyo"; という命令があるのはよくあるパターンですが、
このelementに中身が入ってないとエラーが出たりしますよね。
私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい
(element の中身が「それ」なら、何も起こらず、エラーも出ない)んです。
こういうブラックホールみたいな値やオブジェクトみたいな存在ってないんでしょうか。
- 95 :
- >>94
> このelementに中身が入ってないとエラーが出たりしますよね。
> 私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい
例
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementById
> 文書内に一致する要素がなければ null です。
.getElementById の返値をチェックすれば?
- 96 :
- >>94
jQueryがそういう設計になってる。
例えばその例ではvalueを設定しているが、
jQueryの設計では「"0個以上の要素"に対してvalueを設定する」という書き方をする。
だから要素が見つからなくてもエラーにならないし、複数見つかれば複数設定できる。
いまだにブラウザ間の互換性問題が解決したからjQueryはいらないなんて言ってるやつがいるが
こういう設計がDOM APIとは異なってる(使いやすい)ライブラリなんだよ。
で話を戻すと、jQueryでは $('.foo').val('piyo') みたいにセレクタで指定することが多いが、
$(elemment).val('piyo') みたいに単一の要素を指定することも可能。
この場合、elementの中身が入っていなくてもエラーにならない。
(elementの取得だけDOM APIを使うこともないだろうから普通にセレクタ使えばいいだろうけど)
- 97 :
- >>94
変数にする以上はメモリを消費するので、メモリを消費しない方法はない
変数にしなければ、当然、メモリは消費しない
if (typeof element !== 'undefoned' && Object(element) === element)
element.value="piyo";
メモリを度外視するなら、Object.create(null) でラップオブジェクトを作って、setterかnew Proxyでプロパティを監視する事で実装可能
- 98 :
- jQueryってメモリ消費しないんですね。ありがとうございました。
- 99 :
- >>92,>>93
なんか勘違いしてるのかもしれないけど
思いを分かってもらいたいわけではなく
何か揉めたときに、テンプレに「自ら学ぶため」という言葉があれば
まあそれを持ち出して決着を付ける事が本当に良いことかは置いといて、
一応このスレのスタンスだからと言えるでしょ
でも今のままでは、俺が折角マニアックな質問を色々調べて回答してあげても
それにスレチだなんだケチがついたときにどっちが正しいとも言えず永遠喧嘩になるでしょ
それはどちらが悪いとかじゃなくて俺と彼とで考えるこのスレで扱うものの基準が違うという事で、それが何処にも示されていない以上、個人の好みになっちゃうんだから
それで俺も彼も質問者も不幸になることはもうやめたいんだよ
俺はpart20かそこらから質問回答してきて、自分だったり他人だったり実際そうやって嫌な思いを沢山してきたから
不幸になる人が少しでも減るようにテンプレに基準を入れてほしいと言ってるの
別に崇高な一般論を理解してもらおうと主張してるわけではない
最初からそういう俺の小さなお願いのつもりだったのに
なんでこんなに突っ込まれて話が大きくなったんだろうね?
もう俺のことはスルーしていいよ
- 100 :
- >>94
falsyな時だけ「空のオブジェクト」を代入するなら、こういう書き方はある
>>97は一つのオブジェクトで一元管理する
var element = document.getElementById('foo') || Object.create(null);
>>98
そんなわけない
変数にする以上は、メモリを消費する(>>97)
- 101 :
- コードは長くなるけど変数使わないからメモリ消費しないんだぜ!
↑
そのコードを入れておくメモリが消費される
- 102 :
- >>100
この質問の本質は、そういうコードを書きたくないということでしょう?
- 103 :
- 結局何をしたいのか分からん
C言語だって char *a = "abc"; と書いたとき、ポインタ a の分だけメモリ喰うわけだしな
したいことと、典型的なコードでなってしまうことの差が
具体的に分からないと何ともいえない
https://jsbin.com/yemedon/edit?html,js,console
こういうのとは違うみたいだし
- 104 :
- 無理矢理いえば test() の返値は必ず入る
アセンブラのときにレジスタに必ず入るかどうかは知らない
0 との比較の場合はアセンブラ的には即値0が必要とならないケースが多い、はず
RISCでどうなるか等は知らない
サボリのためCASLの仕様書は読んでない
- 105 :
- 変数は必ずしもメモリを消費しない
インライン化とエリミネーションで半分程度削減される
だからデバッガを有効にしてるとメモリを食う
- 106 :
- > 私は、いちいち if (element) element.value="piyo"; というふうな中身の確認をせずに、代入をできるようにしたい
そもそも、これって vanilla JS で実現できるの?
- 107 :
- 入力があって、出力対象となるべき要素がなければ
parentNode に appendChild() するのが自然な考え方にもおもえる
無視して良いという仕様なのだろうか(そうだとしたら while で終わりか?)
メモリどうこうより仕様が気になるな
それとも「じつはライブラリ房でした」というオチなのか
- 108 :
- Rubyには通称ぼっち演算子っていってね、
a=nil
a&.foo
# =>nil
みたいに、値がnilでもエラーにならない方法があるんだよ。
どうせこれのこと言ってるんっでしょ?
でもね、コード上メモリを使ってないように見えても、
アセンブラレベルで見れば「if nil だったら nil を返す」って
コードになってて、コードの分のメモリ使ってますからw
- 109 :
- >>107
いつものRuby厨がしたり顔をしにやってきたが、
言いたいことを先に言われ、良い所を
jQuery厨に持っていかれたという流れw
- 110 :
- イケてる言語のNull条件演算子:
C#
?.
Swift
?.
Kotlin
?.
イケテナイ言語のNull条件演算子:
ブビィ
&.
ムダな認知負荷の大きいクソ言語。
- 111 :
- https://jsbin.com/hidafon/edit?html,css,js,output
ふむ…
あろうが無かろうが問題なく書ける場合もある、か
むしろ出力先等が無いのにスルーされると、バグが潜在化しそうな気もするけど、まあいいか
どういう場面で幸せになれる実装なのか分からん
strlcat / strlcpy みたいなものかしらん
- 112 :
- > むしろ出力先等が無いのにスルーされると、バグが潜在化しそうな気もするけど、
それは設計思想がわかってないから。
CSSと同じだと考えればいい。
CSSは要素があろうがなかろうがエラーにならない。
これは宣言型プログラミングの思想だよ。
https://ja.wikipedia.org/wiki/%E5%AE%A3%E8%A8%80%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
> 宣言型プログラミング(英: Declarative programming)は、
> プログラミングパラダイムの名称だが、主として2種類の意味がある。
> 第1の意味は、処理方法ではなく対象の性質などを宣言することでプログラミングするパラダイムを意味する
出力先に対して処理するという設計思想ではない。
出力先はどういう性質かというのを記述する。
要素に対して値を入れるのではなく、その要素はこういう値であるという宣言を記述する。
そうすることでその要素があればそういう値であり、要素がなければないというだけの話になる。
処理ではなく宣言なのでわかりやすくバグも少なくなる。
- 113 :
- >>102
>>100を関数化するだけで、
foo(element).value = 'bar';
と書けるし、それでも「関数を書きたくない」というなら、巨大な関数である jQuety()を定義しているコードに魅力を感じるのは本末転倒
明らかにjQueryの方がメモリ消費量が多いわけだから、「メモリ」の観点ではjQueryにメリットはない
- 114 :
- >>113
> 「関数を書きたくない」というなら、巨大な関数である jQuety()を定義しているコードに魅力を感じるのは
jQueryを使うなら「関数を書かなくていい」じゃん
「関数を書きたくない」という要望を見事に満たしている。
- 115 :
- そもそもプログラム書きたくないんですけどどうしたらいいですか?
- 116 :
- >>114
「メモリも食わない」の要件を満たしてないじゃん
- 117 :
- エラーにならないオブジェクトとかそもそもがヤバい
- 118 :
- >>116
それは「すべてのものはメモリを食う」という結論で終わったろ?
- 119 :
- そもそも、>>102は質問者なのか?
他人が悪のりしてるのか、質問者本人なのか分からん
- 120 :
- >>118
メモリ消費量が違う
- 121 :
- jQueryはscript要素を余計に書かないといけないので、面倒くさい
- 122 :
- jq談義は誰も得しないのでやめよう
- 123 :
- そんな面倒くさがりの君にプレゼント
Object(element).value = 'bar';
ライブラリ使うよりお手軽だよ!
メソッド呼び出しは要件にないから知らないよ!
そもそも、NullPointerExceptionはエラー検知として捉える向きもあるので、一概に悪いとはいえない(上で懸念されてるのはそういうことかと)
ポリシーの違いを他人を批判する理由にするのは止めよう >>1参照
- 124 :
- 無いときにエラーにしたくなくて、あるときに全ての要素を対象にしたければ
DOM APIには複数要素取得する手段がいくつもあるんだから
それでmapなんかで回せばいいだけじゃん
- 125 :
- >>112
どうだろう
CSS はデザインの話で、コンテンツそのものの話とは区別されるんじゃないかと
> 出力先はどういう性質かというのを記述
これなんてまさにそれ
オブジェクトのプロパティに値をセットしたつもりが
そもそもオブジェクトありませんでしたー
でエラーが出なくて幸せになる具体的なシーンが思いつかない、というのもある
「『対象の性質を宣言』しようとしましたが、その対象は存在しませんでした」ってことでしょう?
- 126 :
- >>124
1. elements を取得します
2. elements.length を使って for ループして item(i) 等で個々の element を取得して処理します
コレではダメ?
- 127 :
- >>124
調べたら、APIが結構拡張されててびっくりした
https://developer.mozilla.org/ja/docs/Web/API/NodeList
- 128 :
- >>127
NodeListは普通にfor(let elm of list)で回せる
- 129 :
- >>128
最近のブラウザは大丈夫なのかな
以前、調べたときには仕様はOKだったのに、iterableではない実装が結構あった
Symbolで自前定義したけど
- 130 :
- https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#Browser_Compatibility
まあ例の如く、だな
- 131 :
- >>129
モダンブラウザは皆対応してる
- 132 :
- >>130-131
便利な世の中になったね
- 133 :
- >>120
> メモリ消費量が違う
せやね。メモリが640KBしか無いような環境は問題になるだろうね。
ブラウザが動くのか知らんが
- 134 :
- 要件定義は質問者とやりな
- 135 :
- 単に大したメモリ消費量じゃないと言ってるだけ
- 136 :
- > ・回答には多様性があります。他人の回答を尊重してください
- 137 :
- jsにも ?. が実装される草案は先送りになったのかな
- 138 :
- >>137
詳しく
- 139 :
- jQueryが消費するメモリ
→大した消費量じゃない!
自前で関数ちょこっと書くのに消費するメモリ→
とんでもないメモリ消費!
- 140 :
- >>137
先送り??
tc39の制定プロセス知らないの?.
- 141 :
- その煽る気満々の内容で質問者に回答してやればいいのに、これだからマウント君は
- 142 :
- >>137
ES全体的に前みたいに大量の草案をガツガツ進める雰囲気じゃなくて
細かい仕様をより小規模なミーティングを頻繁にして少しづつ着実に落ち着いて進める感じになってる
その上でオプショナルチェーンの進歩状況はやや鈍調
本来なら輸入構文で順調に行くはずだけど、
ついでにこれもセットで欲しい機能のオプショナルコールについて問題を抱えていたので
あまり進捗してこなかったのが、直近のミーティングで前に進んだ
もう一山か二山あるだろうけど、ゴールの明かりがちらりと見えた所
- 143 :
- firefox x64 + Stylus + Greasemonkey
とあるよく利用しているサイトが今一つ使いづらいので、
Stylusの自作スクリプトで必要以上の余計な広告を非表示にし、
非同期処理させて処理の高速化を図りました。
改めてそのサイトのソースを見たらsetTimeoutで特定の広告を少し時間差を置いて表示させ、
更に時間差を置いて記事部分を表示させるなんてことをやっていることが判明。
即時表示させる手段はないかと、StylusかGreasemonkeyでsetTimeoutの無効化とか、
そのスクリプト自体の上書きか無効化が出来ないか試行錯誤中。
どなたか、何かアドバイスなど頂ければ幸いです。
- 144 :
- 元あるものを改変するのではなく記事の内容を取得して表示するリーダーアプリを作ったほうが聡い
- 145 :
- >>143
Proxydomoで書き換える
https://www31.atwiki.jp/lafe/pages/37.html
- 146 :
- 草案の話はこちら
実用厳禁★独自拡張、草案段階のJavaScriptについて
https://mevius.2ch.sc/test/read.cgi/hp/1495948526/
- 147 :
- >>133
そのまえに html コンテンツと gif / jpeg 読み込んだだけで溢れかねない
15.6MB でも足りないページは一杯ありそうだしね
都度で swap とか悪夢だろうが CF カードにキャッシュ置ければマシか
- 148 :
- …もともとがRuby房召喚のためだけの質問っぽいけど…
>>112
> 出力先はどういう性質かというのを記述する。
element がらみの場合は DOM ツリーの適切な場所に適切な要素を記述し
その要素にその性質を記述するものではないのかしらん
まとめたければ DocumentFragment 使うとか、元質問に即して言えば事前に createElement すれば良いんでないかい
ただ、元質問は「対象が存在しないときにスルー」って言ってるんだから「宣言型プログラミング」とやらは今回別に要らないでしょ
コレクションのアイテム数を数え、アイテム数を越える分は処理しなければ良いだけ
…ってのを >>111 のリンク先で書いてみたんだが…
- 149 :
- >>94
?. は、NULL 許容(エルビス)演算子だろ。
横から見ると、エルビスプレスリーに見える
Ruby では、関数名の最後の文字に、?, ! が使える
? は、真偽値を返すメソッド名に使う。
! は、レシーバーの内容を変えるメソッド名に使う
このルールがあるから、可読性が高い!
その代わりに、エルビスが使えないから、&. を使う
- 150 :
- 俗称エルビス演算子は?.ではなく?:
これだからクソ言語信者は。
?.の一般的な名前は>>110
- 151 :
- エルビス?
かつて流行した vi クローンで nvi の祖先のこと?
- 152 :
- 最近、Ruby信者をいろんなスレで見かけるのは、Rubyが下火になっているからか
多言語の機能を取り込むのは良いことだが、機能に拘るのは偏食と変わらないな
- 153 :
- 文字列が入った配列(例として["aaa","aaa","bbb","bbb","ccc","ccc",…以下1000個ほど続くとする])があるとして、
この配列を「できるだけ似た文字列が並ばないように」並び替える方法ってどんなものが考えられますか?
つまり["aaa","bbb","ccc","aaa","bbb","ccc",…] となるように並べ替えたいです
言い換えれば「できるだけ似てない文字列が隣合って並ぶように」バラけさせるアルゴリズムです
レーベンシュタイン距離でというのも考えましたが「1つ前の文字列からもっとも遠い文字列を」短絡的に並べていくのでは、上記の例でいうと
["aaa","ccc","aaa","ccc","bbb","bbb",…]
というふうに、もっとも遠い文字列を使い果たした後はむしろ近いものが並んでしまうのではないかと危惧してます
- 154 :
- もっと要件詰めなよ。仕事でそんな発注するんじゃないぞ。
- 155 :
- ソートして半分に割って一個ずつ取り出し並べていけば良いんじゃね
- 156 :
- >>153
「似た文字列」を定義する事から始めては?
- 157 :
- 「似た文字」は文字の類似度を数値で返す関数がある
という前提でいいだろ
- 158 :
- じゃあsortにその関数使ったコンパレータぶっ込んで終わり。
はい次。
- 159 :
- >>153
レーベンシュタイン距離でいいんじゃないか?
1. 同一文字をまとめて、ユニークな文字列の値、出現回数をまとめた配列(or Map)を作る
2. 隣接要素のレーベンシュタイン距離がしきい値を越えるように並べ替える
3. 1周する
4. 各要素の出現回数を -1
5. 全要素が出現回数0なら終了。一部に出現回数0があったら、2.へ、それ以外は3.へ
- 160 :
- >>153
例えば100通りランダムに並び替える
その中で10個距離が短いのを選んでそれぞれ10通りランダムに少量だけ並び替える
その繰り返しでいい
- 161 :
- >>158
素朴な疑問なんだけど、Array#sortって隣接要素の判定条件を指定出来るの?
2つの要素が似た文字列だった場合に引き離す機能がないと実装出来ないと思うんだけど
- 162 :
- >>153
"aaa"
"bbb"
"ccc"
だけなら、「setにしてdeleteしてランダムに選ぶ」を繰り返せば良くね
- 163 :
- 巡回セールスマン問題か?
- 164 :
- >>153
const length = 100
const a = ["aaa", "bbb", "ccc"]
let aryResults = []
aryResults.push(a[(Math.random()*3 | 0)]) // 2 ** 31 を下回ることが保証されているので | 0 で可
const l = length - 1
for (i = 0; i < l; i++) {
console.log(aryResults[i])
let setTmp = new Set(a)
setTmp.delete(aryResults[i])
const arrTmp = [...setTmp]
aryResults.push(arrTmp[(Math.random()*2 | 0)])
}
console.log(aryResults)
…例がわるい
「文字列が入った配列」の種類はいくつよ
- 165 :
- 例えば範囲が、1〜100 なら、
1, 100, 2, 99 みたいに取っていくと、
最後には、50 近辺の数字ばかりが残るから、ダメ!
無数のアルゴリズム・シミュレーションを繰り返して、
合計距離が多くなるように、しないといけない
- 166 :
- // 出現回数は考慮しないものとする
// 小文字アルファベット a-z から選ぶものとする
const length = 100
const threshold = 10
let a = []
let place = []
let aryResults = []
for (let i = 0; i < 26; i++) {
let strTmp = String.fromCharCode(0x61 + i)
a.push(strTmp)
place.push(-threshold)
}
for (let i = 0; i < length; i++) {
let t = i - threshold
let setTmp = new Set(a)
for (j = 0; j < 26; j++) {
if (place[j] > t) { setTmp.delete(a[j]) }
}
const arrTmp = [...setTmp]
let x = (Math.random() * arrTmp.length | 0)
place[x] = i
aryResults.push(arrTmp[x])
}
console.log(aryResults)
- 167 :
- >>153
うーん
定性的な部分をどうにかしないと書けないな
「似た文字列」
何をもって「似ている」と判断するか基準不明
「できるだけ似た文字列が並ばないように」
→どの範囲で許されるのか
高田馬場1丁目1番地、2番地…
高田馬場2丁目1番地、2番地…
高田馬場3丁目1番地、2番地…
高田馬場4丁目1番地、2番地…
高田馬場5丁目1番地、2番地…
西早稲田1丁目1番地、2番地…
西早稲田2丁目1番地、2番地…
西早稲田3丁目1番地、2番地…
西早稲田4丁目1番地、2番地…
西早稲田5丁目1番地、2番地…
とかなら、まだ分かりやすいだろうけど(高田馬場m丁目と西早稲田n丁目の遠近は度外視として)
- 168 :
- >>165
その問題は>>159で解決してるんじゃないか?
- 169 :
- 厳密には、先頭/末尾の繋ぎが未チェックという問題が残っているが…
2.のソート時に繋ぎを意識したsortにして、5.から2.へ行く前に直前要素と先頭要素を比較する処理を入れてやれば良さそうだ
- 170 :
- Set 使えば登場回数ゼロはありえないだろ
- 171 :
- >>170
>>153ではaaa,bbb,cccが何度も登場してる
そもそも、重複がなかったら、この質問は成立しないわけで
- 172 :
- >>171
それなら >>164 のように完全ランダムにするか、
3つの順列をセットとして 3P3 = 3! = 6通りから、末尾の文字と異なる文字で始まるモノで並べて行くか
完全ランダムだと残り物にバラつきが出すぎる可能性はあるけど
3つの順列で心配なら
a - b - a - c - b - c
a - b - c - a - b - c
a - b - c - b - a - c
a - b - c - b - c - a
(以下省略)
とかいう組み合わせを事前に作っておいて並べて行けば良いんじゃね
バラつき具合の判別方法は知らんけど…
- 173 :
- 難しく考えすぎ
期待値に達するまで適当に振り分続ければいいだけ
あとはその振り分けアルゴリズムが完全なランダムより賢ければ賢いだけコストが減る
それを十分な状態になるまで追求すればいいだけ
- 174 :
- >>173
振り分けアルゴリズムの質問にその回答はなかろうて
- 175 :
- 「ナップサック問題」でも「全検索」は解の1つ
エレガントではないかも知れないが、不正解という評価は誤り
- 176 :
- https://postd.cc/programmer-competency-matrix/
いきなり「レーベンシュタイン距離」と書いたとしても、他の人に理解されるとは限らん…
元質問者の場合はそうではないようだが
- 177 :
- こういう時は発送を逆転させる
つまり良い分配アルゴリズムではなく、悪い整頓アルゴリズムを考える
それで思いつくものを現実的な妥協点として良いと思う
そういう意味ではランダムは悪くない
- 178 :
- 最初ランダムで走査して固まってる部分があったら適当に入れ替えてほぐす
その繰り返しはどうだろうか?
- 179 :
- レーメンはじめました
- 180 :
- >>171
配列を splice() すれば良かろう
人にケチ付けてる暇があったら改善案出せよ無能
- 181 :
- >>175
> 「ナップサック問題」でも「全検索」は解の1つ
「全検索 アルゴリズム」でぐぐっても見つからないが、もしかして「全探索」といいたかったのか?
全探索は「全ての組み合わせを試す」というもので、1000個の要素なら、最大試行回数=1000*999*998*...*3*2*1回となる力業
> エレガントではないかも知れないが、不正解という評価は誤り
>>173は「失敗したらやり直す」なので「全探索」とは違う
「振り分けアルゴリズム」に欠陥があれば、永久に失敗するので無限ループとなるし、アルゴリズムの成功確率が低ければ、試行回数は全探索よりも高くなる可能性が高い
アルゴリズムに欠陥がない場合の最大試行回数は「1〜∞回」で運要素の高い方法
- 182 :
- >>180
>>170は
> Set 使えば登場回数ゼロはありえないだろ
とケチをつけたが、>>159の回答を咀嚼すれば「登場回数」がそういう意味ではないことが分かるはずなので、それを指摘しただけ
> 人にケチ付けてる暇があったら改善案出せよ無能
これは>>170にいいたい
- 183 :
- >>181
>>173は失敗したらやり直すのとは違うでしょ
遺伝的アルゴリズムと言ったら大げさだけど、モンテカルロ法で円周率を求めるのと同じくこの手のアルゴリズムは運任せでも現実的には収束していくんだから
この手のアルゴリズムで不運が重なって想定よりも遥かに時間がかかる事を想定するのは、計算中にマシンが突然クラッシュしたりビットアップセットを起こしたりするのを心配するようなもの
最善でなくても一定の期待値を越えれば良いというときには良いアルゴリズムだよ
- 184 :
- >>181
1000は無いだろ
選択肢3つなんだから、たとえば1002個あったと仮定して、
同じ選択肢が決して連続しないのは大前提だろ
「できるだけ似てない文字列が隣合って並ぶように」って言ってんだから
ケチばっか付けた挙句完全に誤ったこと書いてんじゃねえよ無能
- 185 :
- なんで選択肢が3つだけだと思ったんだろう…
- 186 :
- ランダムに(または、ルールで制限しつつ)シャッフルして、
許容回数実行して、最善のものを選ぶ
最良のアルゴリズムを考えなくて良いから、
これが簡単で現実的で、そこそこ良い結果も得られる
- 187 :
- 要約すると
「できるだけ似た文字列が並ばないように」並び替えるアルゴリズムは思いつかないので
「ランダムに」並び替えるアルゴリズムでごまかしましょう
- 188 :
- >>184
結局、「全検索」のアルゴリズムを説明出来てない
オレオレ用語を使わず、一般的な用語を書け
- 189 :
- 重複しない整数からなる4個以上の数列がある
例 1,2,3,4
これを並び替えて、隣り合う数の差が2以上である
並びとして次のようなものが考えられる
例 3,1,4,2
この数列が大量(例1 000個)にあるとき
隣り合う数の差が2以上に並び替えるアルゴリズムを考えよ
また、隣り合う数の差の合計が最大になるアルゴリズムを考えよ
アルゴリズムは高速であればあるほどよい
参考 隣り合う数の差の合計
3,1,4,2,5 の場合 2+3+2+3=10
4,2,5,1,3 の場合 2+3+4+2=11
- 190 :
- >>187
逆でしょ
何が効果的か根拠も自信もなくて抽象的で実装できるかもわからない理論よりも
ランダム探索でそこそこの結果を得ればいいと割り切る方が誤魔化さずハッキリしてるでしょ
- 191 :
- 1000個もいらんかね?
100個でも総当たりするのは十分しんどいレベルになるな
9.3326215443944152681699238856267e+157
- 192 :
- >>190
そこそこ結果でOKなんて誰が言ったんですか?
- 193 :
- 1文字目で分類して最も多いものから順に均等に振り分ける
その振り分け範囲内で2文字について同じように振り分けなおす
短文字ではこれを繰り返すのが最もコストが少なく並び替えられる
- 194 :
- >>189
質問は文字列だぞ?
簡単に数値に置き換えられ無いだろ
- 195 :
- >>194
きにすんな、別の問題として考えろ
- 196 :
- >>189
0,500,1,501…なら499001
500,0,999,1,998,2…なら499999
ちなみにランダムで1000回試行で350000、100000回試行で360000程度
最低限何らかのアルゴリズムは無いときつくね?
- 197 :
- うわ
マウンターばっかり
屁理屈こねまくって重箱の隅をつつきまくって
1行もコードも何も具体的なモノ書かずに
良く上から目線で書き込めるもんだ
- 198 :
- >>153 における
> 文字列が入った配列(例として["aaa","aaa","bbb","bbb","ccc","ccc",…以下1000個ほど続くとする])
の構成要素が、具体的に ["aaa,""bbb,", "ccc" ...] 以外何があるか回答がない
釣り確定だな
- 199 :
- >>198
どんな文字列が入ってきてもって意味だろ
答えられないからって釣り認定するなよ
- 200 :
- >>199
板違い
そういうのは計算機科学の研究室でやれば良いし
Web制作との関連性も皆無
- 201 :
- 誘導
プログラミングのお題スレ Part14
https://mevius.2ch.sc/test/read.cgi/tech/1558168409/
- 202 :
- https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript
こんなの発見
ライセンスは CC BY-SA 3.0
- 203 :
- このスレの質問者は、回答があってもガン無視する奴ばかり
回答に意見を返して、前向きに取り組もうとする質問者はいないのか?
「自ら学ぶ質問者」を見たい
- 204 :
- >>203
それ以前にまともな回答でてねーじゃん
呆れてどっか行ったんじゃね
- 205 :
- >>204
君のようなコミュニケーションを拒否する人は、質問者に向いてないと思うよ
- 206 :
- 皆が色んなアルゴリズムを比較しやすいように基盤を作ってみた
https://playcode.io/371956?tabs=script.js,preview,console
条件として、ある文字列のある位置の文字を取り出したときに、
同じ位置に同じ文字がある文字列がどれだけ近いかを全ての文字列の全ての文字で見ることで
似た文字列がどれだけ近くに固まっていないかの値を求めるようにした
つまりABCDのよこにBADCがあってもそれは限りなく無関係同士の文字列と評価されるので
そこが気になる人は評価計算部を変えて欲しい
それと各文字の出現頻度はだいたい均一と仮定している(Aが極端に多くてBが極端に少なかったりしない)ので、
そこも生成部に手を入れて変えて欲しい
また、距離に対して比例して評価していてすぐ隣と、1つ開いている状態はあまり違わないと評価するのでそこも手の入れどころ
とりあえず様々に実験して気がついたこととしては、
・各文字の出現頻度、組み合わせ方に偏りがない
・文字種類数が少ない
ときはそもそも、どのように並び替えても似た文字列が近くに来てしまう状況になる
例えば上の例であったような、ABCのように単純な文字列はまさにそうで、
何か組み合わせに特別な偏りが無い限り、一回ランダムにばらした状態でほぼ限界に近い
- 207 :
- 「まともな回答ない」で諦めるか、「質問の要件を追記して更なる回答を募ろう」と踏ん張るか、が判断の分かれ目
実際、要件をまともに書いた質問はほとんどない
- 208 :
- 要件をまとも書けるくらいの質問をする人ならば、
自力で解答を見つけることが出来る。
- 209 :
- 質問しようと文章でまとめてみたり、ggrks呼ばわりされないように検索してみたりしているうちに
解決方法が見つかることが稀によくある
- 210 :
- >>209
>質問しようと文章でまとめてみたり、
質問しようと文章以外の、例えば数式でまとめてみたりすることはあるのか?
とつっこんでみたり
- 211 :
- 「AしたりBしたり」と書いてあるのを「AとBしかしない」と解釈するひとって…
- 212 :
- 結局、質問者が回答を煽って、魚を期待するスレなのか
- 213 :
- 定性的発言で申し訳ないが…
…内容的には良くなったと思うよ…
マウンターと暴言のオンパレードだった訳だしね
- 214 :
- 質問者が出てこないから、「質問スレ」としては機能していないと思う
「お題」を与えられた回答者が意見交換or布教活動してるだけ
そこに、煽り、マウントが入るとgdgdになる
- 215 :
- じゃ、こっちで質問をば…
+ JavaScript の質問用スレッド vol.123 +
https://mevius.2ch.sc/test/read.cgi/tech/1491143438/183
https://leetcode.com を始めました。
そこで、質問です。
var toLowerCase = function(str) {
const length = str.length
let str_result = ""
for (let i = 0; i < length; i++) {
const char_code = str.charCodeAt(i)
if ((0x41 <= char_code) && (char_code <= 0x5a)) {
str_result += String.fromCharCode(char_code + 0x20)
} else {
str_result += String.fromCharCode(char_code)
}
}
return str_result
}
console.log(toLowerCase("Hello"))
console.log(toLowerCase("here"))
console.log(toLowerCase("LOVELY"))
こんなコードを書くのは少数派でしょうか?
- 216 :
- コテハン記憶age
- 217 :
- str_result += ((0x41 <= char_code) && (char_code <= 0x5a))
? String.fromCharCode(char_code + 0x20)
: String.fromCharCode(char_code)
…とか…
- 218 :
- そもそも条件は?
何を持ってどこまでの範囲をLowerCaseと言うの?
例えば標準ではアルファベット以外もサポートしてるよ
"Α".toLowerCase() //"α"
- 219 :
- >>218
> 何を持ってどこまでの範囲をLowerCaseと言うの?
https://leetcode.com/problems/to-lower-case/
> Implement function ToLowerCase() that has a string parameter str,
> and returns the same string in lowercase.
>
> Example 1:
>
> Input: "Hello"
> Output: "hello"
>
>
> Example 2:
>
> Input: "here"
> Output: "here"
>
>
> Example 3:
>
> Input: "LOVELY"
> Output: "lovely"
たしかに「厳密な範囲」は示されてないですね。
Example にあるものが回答できれば "solved" という状態になるので
アルファベット26文字に対する変換が出来れば充分、ということになります
- 220 :
- それで一番の目的は速度ってこと?
ならバイナリ化してWASMに渡すとかも選択肢なの?
でもそういうのって往々にしてオーバーヘッドが大きいから
例文の様に短文字だと悪手だよね
それともう一つ重要な点として大文字小文字のアルファベットしか入力されないの?
それだったらパフォーマンスとコーディングのシンプルさを両立して
チェックもせずにテーブルで変換とかも容易にできると思うけど
もしくは適当でいいのならreplace使ったりしても良いんじゃないの?
前提条件がサッパリ分からないから、まず>>215さんが
どうしてそういうコードを書いたほうが良いと思ってるのかが疑問
- 221 :
- >>215
- 222 :
- 別解が知りたいだけです
配列を2つ作って1文字毎に変換するなり、ハッシュで変換する方法もあるでしょう
>>218 のようなものも含めるなら、変換テーブルを自前で持っておく方が良いようにも思われますが
これは別問題ですね
String.replace() を MDN で読んでいて思ったんですけど
Javascript の string ってシングルトンパターンなんですかねえ
- 223 :
- >>222
プログラム板に別解があるようだが、あれで満足?
ただの別解で難の制約もないなら、いくらでもコードはありそうだけど
- 224 :
- 既に動いているコードがあるなら、別解を求める必要は普通はない
理由があるはずだが、「別解が知りたいだけ」だし、どんなコードでも受け入れると
アンケート系は勘弁して欲しいな…
- 225 :
- >>222
replaceなどの結果がキャッシュされるような仕様はないが
別にキャッシュしても仕様に違反しない
JSは仕様と実装が完全に切り離されているのでそういう部分は実装次第
別解が知りたいというけど問題が単純すぎるのでアルゴリズム的別解はない
文字を文字として見てテーブルで変換するか、
文字コードとして見て演算するかくらいしかない
だから単純にJSの基本、アルゴリズムの勉強問題として見れば問題ない
だけど良いコードパターンで書けてるかというと違う
それが今回の例で実際に問題になるかは置いといて
文字列を変換するときの一般的な良いパターンとして
まずサロゲートペアを意識すること
つまりcharCodeAtなどではなくcodePointAtを使う
もしくはfor-ofで文字を取り出す
そしてマジックナンバーは使わない
コードに突然0xなんちゃらと現れても大抵の人はそれが何を示しているのか分からない
だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく
- 226 :
- この質問者も>>203のタイプか
- 227 :
- >>225
コードに突然0xなんちゃらと現れても大抵の人はそれが何を示しているのか分からない
だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく
1行目、ものすごく驚きました
EBCDIC を採用するかどうかが実装依存だというならともかく
https://www.ecma-international.org/ecma-262/10.0/#sec-terms-and-definitions-string-value
> 4.3.17 String value
>
> primitive value that is a finite ordered sequence of zero or more 16-bit
> unsigned integer values
>
> Note
>
> A String value is a member of the String type. Each integer value in the
> sequence usually represents a single 16-bit unit of UTF-16 text. However,
> ECMAScript does not place any restrictions or requirements on the values
> except that they must be 16-bit unsigned integers.
という仕様が前提なら、us-ascii / JIS X 0301 そのままの文字コードが殆ど知られてない…
参照:
https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
https://unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT
https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
- 228 :
- > だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく
定数に格納するなら、私だったら
/*
0x41 LATIN CAPITAL LETTER A
0x61 LATIN SMALL LETTER A
0x
*/
const int_codePointAtA = 0x41
/*
0x5a LATIN CAPITAL LETTER Z
0x7a LATIN SMALL LETTER Z
*/
const int_codePointAtZ = 0x7a
とか…
即値とメソッド呼び出しの差は分かりませんが…
参照:
https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
- 229 :
- >>223
> プログラム板に別解があるようだが、あれで満足?
うーん
どこからどう見ても練習問題なのに…
- 230 :
- >>224
> アンケート系は勘弁して欲しいな…
具体的なコードが複数あるなら「アンケート」と呼ぶ余地はあるかも知れませんが
今回のコードは具体的なモノが1つしか無いので「アンケート」と呼ぶ余地はないですよ
- 231 :
- >>220
> 大文字小文字のアルファベットしか入力されないの?
回答例からみて、そう判断しました。
もちろん
https://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-5.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-8.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-13.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-14.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT
https://unicode.org/Public/MAPPINGS/ISO8859/8859-16.TXT
あたりから、変換対象は特定可能なので、
us-ascii / JIS X 0201 相当でない範囲も変換できるコードは書けるかと。
- 232 :
- > 別解
for (let i = 0; i < length; i++) {
const char_code = str.charCodeAt(i)
if ((0x41 <= char_code) && (char_code <= 0x5a)) {
str_result += String.fromCharCode(char_code + 0x20)
} else {
str_result += String.fromCharCode(char_code)
}
という部分について、他にどのような考え方があるか分かれば
色々な場面で応用が利くと考え、質問した次第です。
- 233 :
- >>220
> チェックもせずにテーブルで変換とかも容易にできると思うけど
> もしくは適当でいいのならreplace使ったりしても良いんじゃないの?
チェックの点は見落としていました
御指摘、ありがとうございます
「Acute 等がついていてサロゲートペアでない」場合を含めてチェックすべきかも知れないですね
- 234 :
- >>220
> どうしてそういうコードを書いたほうが良いと思ってるのか
古典BASICで言うところの MID$() 関数で1文字ずつ抜き出して FOR ループで回し、
条件分岐で ASC() → CHR$() というのがが真っ先に思いついたからです。
「良いと思った」というよりも、Javascript をメインで使っている人が
自然に思いつくコードを知りたいという思いがありまして。
それこそ、大抵の人はこのような発想を自然にはしないと考えられたのです。
「こういうコードを書いたほうが良いと思ってる」というよりはむしろ「『私は』自然に『思いついた』のです」
- 235 :
- >>227
codePointAt() メソッドは存じませんでした。
acute 等の The Unicode Standard Combining Diacritical Marks を含め、挙動等を確認してみます
参照:
Combining Diacritical Marks
http://www.unicode.org/charts/PDF/U0300.pdf
- 236 :
- >>225
> for-ofで文字を取り出す
これも全く思いつきませんでした
String.length 等も含め、挙動を確認してみます
- 237 :
- 【補足】
>>234
> 「『私は』自然に『思いついた』のです」
だからこそ 0x61 等が即値
- 238 :
- >>230
君の質問はこういう事
- >>215と同じ機能を実装するコード(別解)を教えて下さい
- 他に条件はありません
- いろんなコードが欲しいです
この質問は広くコードを集める為のアンケート系質問と俺は呼んでる
OKWaveだとアンケートカテゴリで質問しないと、NG
君が何某かの具体的な問題に直面しているわけではなく、ただ、広く情報を集めるのが目的だから「要件」はない
ただし、君は>>215で要件を全く出していないにも関わらず、回答に対して良し悪しを評価している
後出しで考え(要件)を出す、一番面倒なタイプの質問者
君は後出しで好き勝手にいえるから気楽だろうが、回答者は要件まっさらな状態で回答して悪評価されたらたまったものではないだろうな
- 239 :
- もらった回答で品評会開くのは勘弁だな
- 240 :
- >>215は>>99に近しいものを感じる(同じ人かもしれない)
コミュニケーション能力(他人への説明能力)に問題があるんだよな…
- 241 :
- https://mevius.2ch.sc/test/read.cgi/tech/1491143438/183-
回答をスルーしているのは、「レスするまでもない回答」という評価か
- 242 :
- >>241
"「マルチイクナイ」防止" で予防している割に、爪が甘いな
あるいは、マルチポストの問題点を理解していないのか
- 243 :
- マルチポストについてはSO.jaにまとまってた
https://ja.meta.stackoverflow.com/questions/2418/
- 244 :
- >>227
知られていないと言ったけどASCIIの範囲ならまだ予想も付きやすいかもしれない
だけどただ単にこのゲームをクリアするためではなくて
これは文字を変換する技能を問うているのだと思えば
特に日本に住んでいる我々はひらがなや漢字の文字コードでマッチさせることも有るだろう
>>228
求められない大量のマジックナンバーならそうして持っておくのも良いと思うけど
今回の場合簡単に分かりやすく求められるんだから求めたほうがより良いよ
>>234
JS界は「自然」の範囲が広いから今回のように単純な問題の場合どう書いても自然だから安心していい
ただ俺だったらこういう感じで書くかな
str.replace( /[A-Z]/gu, c => String.fromCodePoint( c.codePointAt() + 32 ) )
色んな書き方を見て知識を増やしたいというのなら、こういう書き方もできる
new TextDecoder( ).decode( new TextEncoder( ).encode( str ).map( p => p | 32 ) )
モダンな言語としてはif文for文や演算子を減らしてスッキリさせるのが良いと思う
ただバイナリ弄ったりして速度を稼ぎたいときは最適化を期待してあえて古風に書くけどね
- 245 :
- >>227
> A String value is a member of the String type. Each integer value in the
> sequence usually represents a single 16-bit unit of UTF-16 text. However,
> ECMAScript does not place any restrictions or requirements on the values
> except that they must be 16-bit unsigned integers.
という仕様が前提なら、us-ascii / JIS X 0301 そのままの文字コードとは限らないのでは?
実装依存ということだろう
- 246 :
- <div id="a">
<span class="b">あ い う え お</span>
<span class="b">か き く け こ</span>
</div>
↑ここからjQueryで
"あ い う え お\n
か き く け こ"
と、文字列を取り出しつつ改行(\n)を挟む簡単な方法ってないですかね
とりあえず
$('#a').html().replace()
でタグそのものを除去しつつ置換するか、
$('.b')に対してeachなどでループする方法くらいしか思い浮かびませんが
何か遠回りしてるような気がして
- 247 :
- >>245
UTF-16の仕様…
- 248 :
- lcoation.reload()を使って何十回も同じページをリロードしていると、
オブジェクトが捨てられないのか、メモリリークしてどんどんブラウザが遅く&不安定になっていきます
ググっても同様の質問はあるようですが、しかし綺麗な解決策は出て来ませんでした
現在のスクリプト等のことは全部忘れていいからただ単純にリロードさせたいだけなのですが
メモリリークしない方法はないのでしょうか?
実質的にリロードできれば変わったトリックでもいいのですが。
- 249 :
- >>246
親要素を取得してどうにかする、とか
表示すべきコンテンツが具体的に分からないから正確な所は何とも
- 250 :
- >>248
IIFE 使う、とか
- 251 :
- HTMLCanvasElement.getContext('webgl')で取得したRenderingContextを破棄して
再度同じCanvasElementからRenderingContextを取得することは可能ですか?
- 252 :
- >>247
ESではUTF16で無いといけないとは決められていないじゃないか
>>251
コンテキストは一度取得するとその要素に紐付いて永続的に残る
同じ状態のものを何度も取得することはできても
破棄してやり直すことは要素ごとを破棄してやり直さない限りできない
- 253 :
- >>252
ありがとうございます諦めます
- 254 :
- >>246
textContent
jQueryはライブラリスレでどうぞ
- 255 :
- >>248
本当にそういうメモリリークなのならスクリプトで対処することじゃない
Webコンテンツというのは残るものなので場当たり的な対応はすべきでない
きちんとブラウザの問題としてissueを投げて根本から対応してもらうべき
- 256 :
- 広告ブロックや動画ダウンロード等の拡張が原因だったりして
- 257 :
- 248ですが中間報告をば。
ふと、 location.reload() する直前で document.body.remove() するという手を思いつき実行してみた所
とりあえず1日程度の起動ではブラウザの挙動が悪くならなくなったっぽい気がします
まったくリークしてないかは不明
自分がググった限り(少なくとも日本語と英語圏では)この問題で質問する人はいても
有効な解決策を回答してる場面は見当たらなかったのでこれでいいかどうかは分かりません
- 258 :
- 何十回もリロードってDDoSアプリでも作ってんのか?
- 259 :
- >>257
とにかく正確に再現できる最低限の手順を用意してブラウザにissueを投げろ
ここで書いてくれたら検証してこっちでissueを調べて挙げてやってもいい
いずれにしろ今の所君がそう感じるというだけの話だからこれ以上相手にはできない
- 260 :
- >>258
Distrusting and Cynical? You May be Hurting Your Brain: Dementia Linked to Cynical Distrust : Health & Medicine : Science World Report
ttps://www.scienceworldreport.com/articles/15059/20140529/distrusting-cynical-hurting-brain-dementia-linked-distrust.htm
Why Random Acts of Kindness Matter to Your Wellbeing | Psychology Today
ttps://www.psychologytoday.com/us/blog/emotional-nourishment/201711/why-random-acts-kindness-matter-your-wellbeing
- 261 :
- 自動JS質問AIが狂ってるぞ
- 262 :
- これポップアップ用のhtmlなんですが、アラートが出ません
何らかのapiが必要なら教えてください
https://ideone.com/QScjMX
firefoxです
- 263 :
- こういうアドオンのでバッグをするには、
firefoxの場合、インスペクター>コンソール内のどの項目を使うといいんでしょうか
- 264 :
- 最近の質問は「調査の丸投げ」って感じだなー
「自ら学ぶ人」の意味をよく考えた方がいい
- 265 :
- >>252
でも usual だね
EBCDIC でも何でも良いからWeb制作に関する範囲で
UTF-16で実装「されていない」例あるの?
- 266 :
- ん?ここは実際のブラウザの話はしないんじゃなかったっけ?
- 267 :
- >>266
>>99ないし>41が「動くかどうかは話をしたくない」といってるだけ
彼一人が守れば良い
- 268 :
- >>266
実用厳禁★独自拡張、草案段階のJavaScriptについて
https://mevius.2ch.sc/test/read.cgi/hp/1495948526/
と勘違いした?
- 269 :
- >>267
> 彼一人が守れば良い
同意。まじソレな。
>>246
こんな感じ
console.log($.map($('.b'), e => e.textContent).join('\n'));
- 270 :
- >>262
それが動かないのならあなたの環境がおかしい
- 271 :
- つ
JavaScript ライブラリ総合質問所 vol.5
https://mevius.2ch.sc/test/read.cgi/hp/1465399470/
- 272 :
- >>270
どうすれば特定出来ますか
- 273 :
- >>267
お前もしつこいな
俺は「動くかどうかは話をしたくない」とは言っていないと何度も説明しただろ
Web仕様が実際どう動くかは勿論話すべき
だけどそのブラウザ固有の問題はどうなんだろうねと言っただけ
そこに関しても話すことを反対してはいないだろ
いい加減にしてくれ
- 274 :
- つうか俺はむしろマニアックだったりエッジな質問への回答を荒れることなく行える場を作りたいと長年思っていて
テンプレ議論の機会が来たと思ったのでそうした面で基準を定めた方が良いんじゃないかという問題提起をしてみたのであって
俺の思いはあるけどとにかく決まっていることが大事で、決めてくれさえすれば俺は素直にそれに従って回答をしていくと言ってるのに
どう勘違いしたら>>267みたいなほんと真反対な勘違いができるんだろうな
- 275 :
- >>273-274
>>41だけ読むと、そうは読めなくて、複数のレスを繋ぎ合わせてようやく、解読出来るか出来ないかのレベル
どこで訂正したのか知らないし、どれとどれが同じ人なのかも分からない
後出しで持論付け足しを繰り返してまで自己主張するなら、トリップを付けなよ
はっきりいって、君の説明力が低すぎるのが問題
- 276 :
- ここが本スレでいいのか?間違ってたらごめん。
MDNの更新、誰かよろしく。
https://mevius.2ch.sc/test/read.cgi/tech/1417749547/341-343
俺はこっちの板は読まないから、用があったら向こうでよろしく。
(最低限の礼儀として今週中くらいは読むけども)
- 277 :
- >>275
>>41はただの俺(>>36)をからかった荒らしレス
あと絶対に勘違いしてもらいたくないのが自己主張を俺から始めたわけではないということ
俺が>>10のレスを書いた後>>33というレスが来たから俺は33に俺の思いと一般論として>>36を書いたが
その時点では別に俺が10であるというのをアピールする必要性はない
そしてその後も36に対してのレスが色んな人に突っ込まれたためあくまで突っ込んできたその人個人に対して順次個別に説明していっただけ
断じてこれは俺が望んで始めたことではないし、いきなり自己主張を始めたみたいに言われても困る
俺は俺として基本的に俺にレスを付けた人に対して「同じ様に」個別にレスを付けてるだけで
レスも付いてない、なりすましとも言えないような幼稚なレスを見て勝手に同一人物だと混同するのは俺の責任ではない
全部読まないと分からないと言うが、そこも意味が分からない
41を読んで267の発言が出るのは分かる
だが99をどう読んでも267の発言は出ないだろう
俺が怒ってるのは俺の説明を全部推測して漏れなく見ろと言ってるのではない
誰が連続で話してるのかを想定しなかったことではなく、むしろ想定して思い込んだことに対して怒ってる
全部読むどころか、99を全く読んでいないではないか
どうして99が41と同じ、だから99の内容も読まず41が言いたいんだろうと勘違いをし、
しかもそれをコテなどを付けない俺の責任と言えるのか、それが心底訳がわからなくて驚く
基本を言うならばレスなんてそのレスだけを読んで反応すればいいだけだろう
なんで自らわざわざ難しいことをして失敗したことに対して俺が責任取らなきゃならないのか
俺も誰が同一なんて全く気にせず、最後のまとめを除き直接言われたことに対して直接答えることを繰り返しただけだから
マナーとして通しで矛盾が少ないように発言しようとはしてるが、けして連続性にこだわってはないし、
なんか俺が連続して自己主張してるみたいに捉えられると本当に困る
俺はその時その時で最も良いと思ったことを発言してるだけだから難しく考えるな
- 278 :
- >>272
https://jsfiddle.net/cjh901p6/show
これで押しても反応なけりゃどうみてもおま環
余計な拡張機能が動いてるとか原因は色々
エラーメッセージはコンソールに無いの?
- 279 :
- >>275
多分俺の説明は分かりにくいだろうからもう一レス追加するけど
俺は>>99に対して>>267のレスが付いたから
99の俺として267にレスを付けてる
まあ99とは言うが99はそれだけで完結していないので
実際はそれに含まれているレスチェーンも多分に含みはする
とにかく俺は>>99の俺として、初めて>>41と混同されたことに対して怒ってる
だから俺にレスを付けなければ別に41と他のどれを混同しようが勝手だし、
もし俺を思って41に反応したレスがあっても41は41で41に対するレスは41に対するレスなので
俺は気にしないというか、その自然な流れを尊重することにしているので入っていくことはしない、実際そうしてきた
だがそこらをもし勘違いしたとして、それは言わなかったり分かりやすくしなかった俺の責任ではない
大々的、ざっくばらんに自己主張演説を俺がしていたわけではないのだから
- 280 :
- >>277
連続性が重要でないなら、コメントを書いた人にが非難されるだけで「君でない別人」を非難されようが気にする必要はないでしょ
そして、君は「誤解するな。俺がいってるのは...」と弁解する必要もない
君が書いている事と君が過去に書いている事は何の連続性もないわけだからね
- 281 :
- >>277
> けして連続性にこだわってはないし、
> なんか俺が連続して自己主張してるみたいに捉えられると本当に困る
お前が誰かは知らんが、
>>279
> まあ99とは言うが99はそれだけで完結していないので
> 実際はそれに含まれているレスチェーンも多分に含みはする
レスチェーンをお前が書いたのなら、何連投もしてる
内容が伴っているなら良かったんだが、発展性のない愚痴を延々と語るだけで、皆がうんざりしているのがはたから見ていて良くわかった
- 282 :
- >>280
俺でない別人を非難しようが知ったことではない
だが事実Aと書いてあることをBと思い、思うだけではなく他人に嘘を教える>>267は
プログラマ精神として、回答者精神として見過ごせない
俺からすると267はJSの型は全てオブジェクトだとかいう発言と同じ
だからつい調子に乗って「解説」をしてしまった
てへぺろ
>>281
うんざりさせてしまって申し訳ない
だけど俺は最初からうんざりしていた
それに対する申し訳ないという気持ちを受け取っておこう
- 283 :
- firefoxでアドオン作ってるんですが、ページの内容を取得するにはどの辺使えばいいか教えてください
資料がなさすぎる
- 284 :
- プリミティブ型以外全部オブジェクトなんじゃなかったっけ
- 285 :
- ごめんなさい>先日御意見・御感想くださった方々
途中経過を下手に書くのもアレですが
「問答まとめ」はココに書いても良いでしょうか
- 286 :
- >>285
その無駄な1レスで聞くくらいなら素直に書いたら?
- 287 :
- >>145
ありがとうございました。そういやProxomitronをはるか昔に名前だけ知ってたのですが
こういう凄まじいソフトがあったとはw
特定部分だけ書き換えてそこそこ動くことが分かったのですが、
もうちょっと時間を掛けて詳細な使い方を調べて当初の方針通りsetTimeoutを記述している部分を
別の名前の関数に上書きし時間の部分だけ0にしてsetTimeoutに投げて動かすことができました。
試行錯誤に本当に時間がかかったなあ…
- 288 :
- >>283
コンテンツスクリプトから普通にDOM操作すればいいだけ
- 289 :
- >>282
君が書いた事実を確認できるのは君だけ
「嘘か本当か分からないもの」を推測で補完されるのは、止めようがないでしょ
「連続性に拘ってない」と君はいうけど、レスチェーン上では連続性を期待してるし、今だって期待してるからレスが成り立つわけだし
君にレスするには連続性の認識は必須
君は結局、連続性を期待していて、自分の意図が伝わらない事に腹を立ててる
その原因は、「一つのコメントで意図が伝わるように書いてないから」
君にそれが出来れば問題ないけど、今での流れを見る限り出来るとは思えない
だから、トリップをお勧めした
- 290 :
- ワッチョイすればいいのに
- 291 :
- >>288
ありがとう
- 292 :
- コンテンツスクリプトって大雑把にいうとなんですか?
これを指定しないとページの操作は出来ないというところまでわかりますた
- 293 :
- vs codeってjavascriptのインテリセンス出ませんか?
innerhtmlが出ない
- 294 :
- >>292
その名の通りコンテンツで動くスクリプト
拡張機能は通常バックグラウンドスクリプトで表示してるサイト(コンテンツ)とは独立に動く
拡張機能から表示してるサイトに干渉するにはmanifest.jsonでコンテンツスクリプトを明示する
>>293
https://mevius.2ch.sc/test/read.cgi/tech/1552615295/
- 295 :
- >>289
レスチェーン上で連続性があるのは当たり前では?
一つのコメントで意図が伝わるように云々は済まないが俺は必要性を感じていない
質問に対して回答し、それで分からないところがあるのは回答者の責任ではない
質問者が分からないけどどうでもいいやと思えばそこで話は終わりで、
質問者がここが聞きたいと思えばそこをより深く掘り下げていく
質問者が最初に質問しているのだから、自ら学ぶために流れを自由に作るのは当然質問者であるはずだ
回答者がどこまでも質問者のためを思ってこれが1レスで完結している完璧な回答だと押し付ける方がおこがましいんじゃないか?
俺は最初から全てをわかってもらおうという気持ちは一切ない
物事がそんなにシンプルだとは考えていないし、単純化して教えるのは良いことかもしれないがね
ともかく俺のレスに対して気になるところがあれば喜んでその指摘を受け入れるし
それに対して誠実にレスを返すというのが俺の流儀
俺はあくまで1回1回会話を返してるだけだからわざわざトリップを付ける必要性は感じない
トリップを付けろという君がまず付けてみればいいのでは?
というか初っ端の
>>「嘘か本当か分からないもの」を推測で補完されるのは、止めようがないでしょ
という発言から俺には理解できない
多分だけど、君は文章を読む力が弱いんだろう、そこは俺が文章を書く力が弱いのとおあいこだ
俺はどうして怒ってるのかを説明したよね
もしくは君にとっての「推測」とは、目隠しをして当てずっぽうをすることなのか?
君の脳というのはそれほどまでにスカスカなんだろうか
それとも「おあいこ」なんだろうか
むしろ君に興味が沸いてくるね
- 296 :
- >>294
どうも
ページ内のhtmlで動かすものってことですね
userchromeとusercontentの違いみたいな
- 297 :
- >>295
そりゃ、お前は困らんだろうな
困るのは周りだけ
- 298 :
- >>297
了解した。
- 299 :
- electron製のフリーソフトってあるんですか?あまり使われていない印象です
firefoxのアドオン作りつつ、electronでデスクトップアプリを作りたい
C#でもいいですけど、、、
同じjavascriptでできるのが良いなと思って、electronも少しづつやってます
- 300 :
- ツクールとかエレクトロンじゃなかった?
- 301 :
- そうなんですかね
C#もやって、javascriptもやって、となると初心者の自分にはきついので流用できるといいなーなんて。
- 302 :
- var get_html = document.getElementsByTagName("html");
window.alert(get_html);
これでhtml collectionというのが帰ってくるんですけど、htmlタグではなくて、全体を取得しちゃってる感じですかね?
- 303 :
- >>302
getelElement"s"なんだから必ずコレクションが返る仕様
get_html[0]を確認して
ちょっと質問が雑すぎるから気を付けて
- 304 :
- 配列なんですか。
まだjavascriptがよくわからなくて
ただ、htmlタグに属性を追加するなど、書き換えたかったのです
- 305 :
- 先頭の一つだけ欲しい時はdocument.querySelector("html")
- 306 :
- どうもです
- 307 :
- >>299
VS codeとかboostnote
- 308 :
- firefoxで背景を黒くするアドオン、dark readerのようなものを制作しているのですが、どこにcssを指定したら良いものでしょうか
https://mawatari.jp/archives/css-selector-priority#matome
このサイトによると優先順位が最も高いのはimportant指定したものとあります
ということは、インラインにimportant指定すればいいわけですよね
もっとスマートな方法はあるんでしょうか?
- 309 :
- それってサイトがprefers-color-schemeとか定義してたらちゃんと読み取ってくれんの?
こっちはわざわざデザイナー多く雇って画像から何から全部作ってるのに
何でもかんでも勝手に適当に一律に弄られたら困るんだけど
- 310 :
- >>308
既存より詳細度が高く、カスケード規則上で優先順位の高い宣言であれば、何でも良い
https://triple-underscore.github.io/selectors4-ja.html#specificity-rules
https://triple-underscore.github.io/css-cascade-ja.html#cascading
※これはCSSの問題でJavaScriptの質問ではない
- 311 :
- >>309
上のリンクの説明だと、インラインCSSが最も優先されるわけで、その定義を探す必要はあるんでしょうか?優先される側で指定されたものが上書きされると思っていたんですが。
- 312 :
- >>311
色に影響する定義って沢山あるし
Paint APIだってある
一律に制御することはできないしして欲しくない
- 313 :
- >>312
拡張やユーザCSSがauthor declarationsより優先されるのは自明で、それを承知で>>308は改変しようとしてる
問題が起きても責任の所在は308にあるので、気にする必要はないのでは?
- 314 :
- >>312
サイトごとに違うのでセオリーみたいなものはないってことですね
dark readerがどうやってるのかわかりませんが、一応ほとんどのサイトで機能しますね
- 315 :
- >>308
横からちょっかい出すのにスマートな方法なんてないよ
- 316 :
- >>311
誰にレスしてるの?
スレ違いのCSS質問と教えて貰ったんだから、追加質問は控えるべきじゃないの
- 317 :
- まあ、ユーザCSSで十分な要件だし、わざわざ拡張を作る必要もないよなあ
昔はProxomitronで書き換えてたけど、ブラウザも便利になったもんだ
- 318 :
- 今はProxomitronではなくFiddlerを使うらしい
- 319 :
- >>318
Fiddlerに通信内容を書き換える機能があるの?
ただのパケットキャプチャソフトだと思ってた
- 320 :
- >>319
標準機能としてユーザーエージェントの偽称機能があるぞw
Ruleの一つとして用意されており、カスタムRuleも作れる
- 321 :
- >>320
調べてみたが、結構いろいろ出来るものなんだな
このスレ的には、JScript.NET が使えるのが目玉か
https://docs.telerik.com/fiddler/Extend-Fiddler/AddRules
https://qiita.com/aaari/items/5cba39c5de448f22a1e5
https://prokusi.wiki.fc2.com/wiki/Fiddler%2BCustomRule
- 322 :
- それを言うならこのスレ民的にはキャプチャやプロキシはNodeを使うでしょ
DOMパーサとかのライブラリも豊富だし
- 323 :
- >>304
要素の操作は、jQuery が簡単!
初心者に、お勧め
- 324 :
- そろそろ本腰入れてjQueryを潰す頃か
4,5年かけてFlashを潰すため2chは勿論色んなブログを廻ったあの日のように
- 325 :
- 本腰を入れるために、まずAppleにjQueryが動かないように頼んではどうかね?
FlashもSafariで動かなくすることで徐々に潰していくことが出来た。
ウェブ標準技術で動くjQueryをどうやって動かなくするのかは知らんが(笑)
- 326 :
- 動かなくする必要はない。
これは駄目なものなんだというイメージを閲覧者に少しずつ植え付けていけるようネガティブキャンペーンをすればOK
- 327 :
- 強権的に使えなくするんじゃなくてこういう地道な取組が大事
https://github.blog/2018-09-06-removing-jquery-from-github-frontend/
https://www.google.com/amp/s/hub.packtpub.com/bootstrap-5-to-replace-jquery-with-vanilla-javascript/amp/
- 328 :
- githubがjQuery廃止、bootstrapも5から廃止と来たらそろそろラスボスWordPressから廃止来て欲しいね。
Webサイト全体の3割、CMSサイトに限れば6割のシェアを持つコイツがデフォで採用してることがjQueryのシェアを押し上げてる元凶だからね。
- 329 :
- >>308
https://mevius.2ch.sc/test/read.cgi/hp/1559446058/777 に移動したようだ
- 330 :
- >>329
諦めたみたいね
https://mevius.2ch.sc/test/read.cgi/hp/1559446058/806
- 331 :
- 1〜9 の整数の乱数が、25個ほしいです。
下の公式を、ラムダ式かメソッドにして、配列に入れてもらえませんか?
var min = 1 ;
var max = 9 ;
var a = Math.floor( Math.random() * (max + 1 - min) ) + min ;
- 332 :
- 宿題はよそでどうぞ
- 333 :
- let get_random_int = ( min, max ) => {
return Math.floor( Math.random() * (max + 1 - min) ) + min;
};
console.log( get_random_int( 1, 9 ) );
ここまでは出来ました
このメソッドを、任意の回数、例えば、25回呼んで、配列に入れるには、どうすればよいですか?
map を使うのですか?
- 334 :
- 出来ました。
ただ、乱数が偏っているような気もするが
function get_random_int( ) {
return function( ) {
const min = 1
const max = 9
return Math.floor( Math.random( ) * ( max + 1 - min ) ) + min ;
};
}
const ary = [ ...Array( 25 ) ].map( get_random_int( ) )
console.log( ary );
出力
[ 2, 8, 6, 2, 5, 7, 8, 1, 4, 6, 7, 1, 7, 7, 5, 4, 7, 4, 1, 3, 4, 5, 6, 8, 6 ]
- 335 :
- 乱数が偏ってるとかいう話題は↓で荒れてるんでここでレスしないように
Ruby 初心者スレッド Part 65
https://mevius.2ch.sc/test/read.cgi/tech/1545421414/
- 336 :
- >>330
諦めてなかった
https://teratail.com/questions/201689
相変わらず、「styleにimportantを付けたものが最も強い」といってる辺り、分かってなさそう
- 337 :
- >>334
精度を気にするのならrandom関数は自分で実装した方がいい
var rngstate = crypto.getRandomValues(new Uint32Array(2))
function MathRandom() {
var r0 = (Math.imul(18030, rngstate[0] & 0xFFFF) + (rngstate[0] >>> 16)) | 0
rngstate[0] = r0
var r1 = (Math.imul(36969, rngstate[1] & 0xFFFF) + (rngstate[1] >>> 16)) | 0
rngstate[1] = r1
var x = ((r0 << 16) + (r1 & 0xFFFF)) | 0
return (x < 0 ? (x + 0x100000000) : x) * 2.3283064365386962890625e-10
}
- 338 :
- >>337
サイコロを6回ふると同じ目がでてきます。偏ってますね。
真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。
- 339 :
- >>338
同じ数字が出てほしくないなら
予め配列を作っておいてそれをシャッフルするとかはどう?
- 340 :
- > 真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。
乱数をなんだと思っているんだ?
- 341 :
- >>340
これだと、乱数どころか規則正しい配列だよなあ
6回振れば、必ず目的の数値が1回出るわけだし
- 342 :
- 確率で言えば6回サイコロを振れば6割の確率で数字が連続することがある
偏ってないってことが偏ってるんだよ
- 343 :
- >>338
> 真の乱数というのは6回サイコロを振ったとき同じ目が出ないもんですよ。
12回サイコロを振って、同じ目が2回ずつ出るとする
出た目を順番に並べて、12個の数値を持つ数列とする
数列から適当な場所で「連続した6個の数値」を取得した場合、どこをとっても同じ目が存在しない
この数列がどういう規則性を持つのか、を考えてみるといい
- 344 :
- >>338
今コインを投げて表が出ました。
もう一度投げて表が出る確率は?
一般人「1/2」
お前(バカ)「次に表が出ると表表となって偏っている!次は裏が出て表裏とならなければ乱数とは言えない!だから次に表が出る確率は0%だ!これが正しい乱数だ!」
- 345 :
- 乱数の使用目的にもよるでしょ
ゲームとかに用いられる乱数では人間が不平等感を感じないように調整されている
- 346 :
- >>345
ゲームはそりゃ調整されてることもあるだろうね
何を言いたいのかよくわからないが
>>338がバカだって現実は何も変わらないね
- 347 :
- >>338がバカって。。。
いつからこのスレはジョークにジョークで返す余裕もなくなったんだろうね
>>339とかはあえて真面目に回答して煽り返してるが
- 348 :
- >>347
>>338がジョークって…、どの辺が笑いどころ?
- 349 :
- >>348
2chで大昔からあるバカ煽りでしょ
お前大丈夫?
ここがどこだか分かってるか?
- 350 :
- >>349
あー、誤情報を書いちゃった時に「ジョーク」といっておけば流せると妄信している人を嘲笑するやつね
- 351 :
- >>340のアドバイスが豚に真珠
>>338も>>345も「それは乱数じゃない」という事実に気が付いてない、という事に苦笑した
楽しくないジョークをありがとう
- 352 :
- >>350,351
思い込みの激しいアスペくんには難しいかったね
ここ流のコミュニケーションができないのであれば
yahoo知恵遅れにでも移ればいいよ
- 353 :
- これからは嘘八百を回答して、散々悩んで貰った後に「ジョーク」と後出しする事にしましょう。
どうぞ笑ってやってください。
- 354 :
- 正しい回答を嘘と反論するのが2chの楽しみ方だよな
質問者は右往左往して楽しんでくれ
- 355 :
- 右往左往する奴は最初からお呼びでない
嘘を嘘と分からないやつはお呼びでない
- 356 :
- 情報弱者に嘘を教えるのがここ流のコミュニケーション
知識に疎い質問者は初めから敗者なのである
- 357 :
- 当たり前
それが2chであり2ch
情弱を情弱と叩き続けて煽り続けてきたのがこのスレで
それでも食い下がってくる質問者を叩き直してきたのがこのスレ
自ら学ぶ気のない奴は来るな
初心者ですとでも書かれようものなら罵倒を浴びせたのがこのスレ
- 358 :
- 自ら学ぶ気のある人に嘘を教えて追い出すのがこのスレ
- 359 :
- 本当に学ぶ気のあるやつは勝手に学ぶ
ここに来るやつはやる気を上げてほしいだけのヘタレか制作依頼者ばかり
- 360 :
- >>359
> ここに来るやつはやる気を上げてほしいだけのヘタレか制作依頼者ばかり
それは同意
- 361 :
- 少なくとも10年くらい前はそんなこと無かった
jQueryが広く使われるようになってから変な質問をする人が多くなったと思う
- 362 :
- requestAnimationFrameを呼ぶタイミングは
コールバックの最初のほうが良いですか?後ろのほうが良いですか?
- 363 :
- >>362
こういう質問もな
他人の物差しで良し悪しを判断して貰って思考停止したいだけ
- 364 :
- 分からないなら黙ってろw
- 365 :
- 分からないんだろ、と煽っても無駄です
- 366 :
- >>362
悪い
- 367 :
- 脱jQueryとはいうけれどフロントエンドフレームワークも沼だな
- 368 :
- >>362
同じだから悩まなくていい
ただrequestAnimationFrameかrequestPostAnimationFrameかはしっかり悩まないといけない
- 369 :
- >>368は嘘だから信じないように
- 370 :
- 何がどう嘘なのか
- 371 :
- 自分の考えを述べずに他人にお伺いを立てる奴は総じて自助努力が足りない
このスレの質問者のことだ
- 372 :
- >>353-354が実践されてるみたいね
これがここ流のジョークか
- 373 :
- >>368
ありがとうございます
requestPostAnimationFrameは使わなくても良さそうでした
- 374 :
- >>373は偽物です。
- 375 :
- >>372
お前自身がジョークみたいだな
- 376 :
- >>375
よく分からんが、嘘を書いてもジョークといっておけば、流せるのがここ流のコミュニケーションらしい
- 377 :
- >>376
何が言いたいのお前
荒らしてるやつが居るから俺も荒らしてやった
どうだ!ってことか?
- 378 :
- >>377
>>347の思想の持ち主が回答したんじゃね、といっただけ
彼を支持したわけでもなし
文句があるなら、本人にいってやれ
- 379 :
- >>347に問題が有るなら>>378にも当然問題があるとわからないのか
こういう自覚の無い荒らしはたちが悪い
- 380 :
- npmでシェルスクリプトだけのパッケージを配布してもOKですか?
- 381 :
- >>379
オレオレ理論乙
- 382 :
- >>380
NG です
- 383 :
- >>382
なんでだめなんでしょうか?
規約に書いてありますか?
- 384 :
- npm で、それをインストールしても、
require, import できないから、JavaScript で使えない!
- 385 :
- *-cli みたいな、node_modules/.bin に置くことを想定したパッケージならあるんじゃね?
- 386 :
- for ( i=0; i<arr.length i++) {
if (何らかの条件) {
(何らかの処理)
return false?break?
}
(最終的な処理)
}
例えばループ中、i=2のときにifの「何らかの条件」に合致したとして
その場合は「最終的な処理」をさせずにi=3へ移行したいのですが
return false?break?のところは何と書けばよいでしょうか?
- 387 :
- continue
- 388 :
- >>387
あっそれですありがとうございます!
今までifの条件を逆にしてどうにかしてましたが、アーリーリターン的な書き方を覚えたかったので…
- 389 :
- >>338
サイコロを6回ふったとき同じ目が出ない確率を求めよ(夏休みの宿題)
- 390 :
- 数学と現実は違う
現実と人の頭の中の世界はもっと違う
数学を使って人間の頭の中の世界と向き合うのがフロントエンドエンジニア
いい加減気が付いたほうが良い
- 391 :
- カルドセプトサーガ「真の乱数とは奇数と偶数が交互に出る」
- 392 :
- 「ただし魔法は尻から出る」
- 393 :
- document.writeを使わずにインナーテキストを書き換える方法についてお訊ねしたいのですが
要素を取得してからelement.innerTextなどを書き換える以外で同じことをする方法ありますか?
- 394 :
- textContent
innerHTML
outerHTML
- 395 :
- >>393
data
- 396 :
- >>393
evaluate
- 397 :
- >>393
TreeWalker
- 398 :
- >>393
value
- 399 :
- >>398
それはテキストノードじゃなくね?
- 400 :
- >>393
NodeIterator
- 401 :
- https://i.imgur.com/LQJyUA8.jpg
- 402 :
- JSを使ってアドセンス広告を任意の位置に挿入するスクリプトを書いてるのですが、
Ins.style.display = 'block';
Ins.dataset.adClient = ‘aaaaaaa’;
Ins.dataset.adSlot= ‘111111’;
上記のような値に、レクタングルを全幅表示させる「data-full-width-responsive=‘true’」というパラーメータを追記すると、どのような構文になるのでしょうか…?
Ins.style.display = 'block';
Ins.dataset.adClient = ‘aaaaaaa’;
Ins.dataset.adSlot= ‘111111’;
Ins.dataset.full-width-responsive=‘true’;
と書いてみたところ、動作しませんでした…。
ご教授いただければ幸いです。
- 403 :
- >>402
すみません、自己解決しました。。
- 404 :
- 連投すみません;
かなり初歩的な質問なのですが、よく「document.writeは使うな」という警告を耳にしますが、あれはなぜなのでしょうか?
window.onloadイベントを記述してもNGなのでしょうか…?
現状、document.writeでスクリプトを読み込んでいるのですが、別の方法に変えたほうが良いのでしょうか?
- 405 :
- >>393はどこへ?
>>404に名前を変えて再質問してるのか?
- 406 :
- >>404
使うなというのではなく、初期から実装されてたから今では古いし、他の手段があるからという事
あとDOMを扱う時に不具合が生じるケースがある(どのような場合か知っていれば問題ない)
そのくらいか?
- 407 :
- >>401
グロ
- 408 :
- 相変わらず、自助努力する気のない丸投げ質問ばがりだな
- 409 :
- >>406
レンダリングの最適化を妨げるので使うなとされている
使わない事を誓うフィーチャーポリシーすら定義されている
- 410 :
- JavaScriptコードがレンダリングに必須な場合
どうやって最適化するんだろうか?
遅い回線使ってると時たま見るよね。
ページ読み込んでる途中はレンダリングが崩れていて、
ページ読み込み完了したらやっとまともにレンダリングされるページ
JavaScriptを非同期で読み込むことが目的になってしまって
レンダリングが人間にとって最適化されてない
- 411 :
- document.writeなんてIE6の頃ですら使わない方がいいって言われてたのになんでいまだに使いたがるんだろうか?
- 412 :
- document.writeが適切な場合だから
- 413 :
- document.write を使うと、一旦、すべての要素が消えてから、新しく作られるから!
- 414 :
- Javascriptがレンダリングに必須なことなんて殆どない
- 415 :
- >>391
線形合同法を利用してる分際で出しゃばりやがってw
- 416 :
- appendChilde的なのを期待して使っちゃう初心者は多いだろうね
実際は>>413なんだけど
- 417 :
- >>410
回線が遅いと言うだけで処理性能やストレージが満足に使えるならやりようはいくらでもある
ブラウザも先読み機能が強化されているしSWでキャッシュ周りもいじれる
- 418 :
- >>417
最適化っていうのは、単に先読みのことだったの?
ってことは回線が遅いとレンダリングが崩れるよね
- 419 :
- >>418
>>410で述べられてる最適化はまた別でしょ
同期script及びdocument.writeがどう最適化を阻害するかは
調べたら詳しく出てくるだろうからここで適当に説明することはしないけど
- 420 :
- 崩れるのが嫌ならロード終わるまで表示させなきゃいいじゃん
- 421 :
- それを実現するのが「ブロック」なんだよ
- 422 :
- すごく恥ずかしい質問なのですが
HTMLに点在するscriptタグの変数というのは共有されてるんですか??
ポリフィルとかの変数と自分のスクリプトの変数と名前が同じだとどうなるのかな???と思いました
- 423 :
- 共有される、但しモジュールならされない
後に実行された方に上書きされる
- 424 :
- だから一般的なライブラリは変数や関数名が競合しないように(function() {〜})();で囲って
必要最低限だけwindow.〜に代入して外部に公開してる
- 425 :
- >>423
やっぱりされるんですね
自分のはモジュール???ではないと思うので気をつけます
ありがとうござました
- 426 :
- >>424
ありがとうございます
入門書を読んだぐらいなので何となくしかわからないですが調べて勉強してみます
- 427 :
- オブジェクトの中身を、オブジェクト名を指名せずにキー名だけで取得できるようにする方法ないですか?
と質問しようとしましたが
let obj = {'dog': '犬', 'cat': '猫'}
Object.keys(obj).forEach( function (key){
window[ key ] = obj[ key ]
})
console.log(cat)
console.log(dog)
できちゃいましたね…
もし他にいい方法があれば教えていただきたいです
- 428 :
- >>422の疑問が湧くのももっともなんだよね
どうも解説書にこういった肝心なことが書かれてないことが多すぎる
多くのJavascript入門書に欠けている(重要な)記述
・var等の単語の語源の紹介
・スクリプト同士の変数や関数名は共有されているのかどうかの疑問
・ユーザースクリプトやブラウザ拡張機能のスクリプトは、ブラウザや、見ているページに対して、どのように存在するのか
・イベントリスナーやsetTimeout等に無名関数を登録する時変数の中身を値渡しする方法
・beautifierやLintの存在とそれらをローカルで使うためのエディタやプラグインの紹介
・ブラウザの開発ツールの使い方(特に効果的な使い方のtips)
これらを書かない著者はボンクラだわ
- 429 :
- 結果として変数が共有されるとも言えるが
もっと素直にグローバルが同じと考えたほうが良い
- 430 :
- そういや略語の一覧や元になった単語は教えたほうがいいよな
strをずっと攻撃力と思ってたわははは
- 431 :
- varはvariableで変数なんだなって分かるけどletとかdimとか未だに良く分からない・・・
- 432 :
- letはLet's la 前進のLetだし、
dimはディメンジョンのdimだろ
- 433 :
- letはもともと数学の言い回しだそうな。
Let x be 100 in the following fomula.
- 434 :
- >varはvariableで変数
それじゃまだ丸暗記の域を出ないでしょ
variという語根に「変わる」という意味があってバラエティとかバリエーションと同じ部品であって
variableは当然-able(可能)がついてるから「変わることができる」という意味だ、まで説明しないと
- 435 :
- >>434
おお、まさにそういうのを聞きたいんだよ
- 436 :
- 言語によってletが定数だったりするからカオス
- 437 :
- letが定数になるってどの言語?
- 438 :
- えっとねぇ
- 439 :
- 外から渡されたスクリプトを安全に実行するのにサンドボックスを作ろうとしているんだけど、
WebWorkerってスクリプト本体をstringで渡すことってできないんだっけ?
あるいはeval()でグローバルオブジェクトを任意に指定できたらそれが一番楽なんだが、
なんでできないんだろう。
- 440 :
- 危険だからだよwww
- 441 :
- ?
今のeval()が許されてるのに逆にそれより危険になるって?マウントとりたいにしても雑すぎ。
- 442 :
- evalが許されてることがなにか問題あるの?
サンドボックスというのは環境を隔離するものであって
evalの危険性とは全く別物なんだけど
ちなみにevalの危険性とは利用者が、利用者自身を危険にさらすことができるってことな
サーバー側が危険になるわけじゃな無いし、悪意がある人がeval使ってなにかできるわけじゃない。
evalと別のなにかの脆弱性を併用して攻撃することはあるが、
その場合は脆弱性自体が悪いのであってevalそのものは危険なものじゃない。
evalはユーザーがソースコードを書き換えられるのと同じ程度の話
- 443 :
- つまり諸刃の剣だから最終手段、と
- 444 :
- >>439
ずっと議論されてるから、もう2・3年待てばESに入る
意見があるなら今が参加するチャンス
- 445 :
- >>441
寝てたら>>442が代わりに言ってくれてたわ
もう少し深く考える癖を付けたほうが良いぞ
- 446 :
- >>439
WebWorkerを文字列から作ることはできる
だけど必ずしも安全とは言えない
- 447 :
- >evalが許されてることがなにか問題あるの?
evalが許されていること自体が問題だと言ったつもりはないが?
ただ、呼び出し元と同じグローバルオブジェクトにアクセスできるのは安全じゃないから
それを差し替えられたら良いという話。
少なくとも現状より危険になるわけじゃないから>>440は的外れだと言ったまで。
- 448 :
- >>422-429
<script>
var a = 1;
</script>
<script>
var a = 2;
</script>
<script>
console.log( a ); // 2
</script>
- 449 :
- >>428みたいなFAQをスレのテンプレに入れればいいと思う
- 450 :
- 返信が遅れてすみません;
>>405
その人とは別人ですー
>>406
>>409
なるほど…。よく「document.writeは使うなとあれほど」みたいなこと言われたのでSEOに悪いのかなと…。
レンダリングをブロックするということは、読み込み速度が遅くなったりするのでしょうか?
多用することでSEOに響くのであれば別の方法で代用したいのですが。。
通常、document.write的な動作を行いたい場合、相場としてどのような方法がメジャーなのでしょうか?
- 451 :
- SEO? あれすべてがデマだけど?
SEOにいいやり方なんて無い。
コンテンツがすべて。HTMLの書き方で差は生まれない。
- 452 :
- innnerHTML?というのはメジャーな代用法だそうですが、document.writeで作ったプログラムを全て書き換える場合に中々互換性が確保できず混乱しています…。
変数に文字列を格納→そのまま出力といったシンプルな方法はないのでしょうか。。
- 453 :
- 無理して書き換えなくてもいいと思うが
documen.writeをそのまま置き換えたいならdocument.body.innerHTML += で良いんじゃね
- 454 :
- >>450
そう遅くなる。ブラウザにもよるがdocument.writeしたことによる再レンダリングが重かった場合画面が一瞬白くなったりする事があって不格好
>>453
body直に+=するよりはdocument.createElementで適当な要素作ってそれのinnerHTMLに突っ込んでdocument.body.appendChildした方がいい気がする
- 455 :
- >>451
wordpressでテンプレ変えるだけでも結構差が出るよ
ただ、SEOにゴリゴリ特化して複雑になったものはあまり良くない
シンプルでツボだけちゃんと抑えてる物が流入量多い
アウトラインは作っておいたほうが良い
- 456 :
- >>427
with構文を使う方法(sloppyモードのみ):
let obj = {dog: '犬', cat: '猫'};
with (obj) {
console.log(cat);
console.log(dog);
}
- 457 :
- でつ ←sloppyに見える
- 458 :
- >>450
script要素ノードの弟位置にinsertAdjacentHTMLで挿入すれば良い
- 459 :
- それはスヌーピー
- 460 :
- Chromeで対応しているコーディックかの確認ができません
Firefoxでは実際の対応状況が反映されているようです
どうしたら良いでしょうか
await navigator.mediaCapabilities.decodingInfo({type: 'file', video: {
contentType: 'video/webm; codecs="av1"',
width: 3840,
height: 2160,
bitrate: 20*1024*1024,
framerate: 60,
}})
- 461 :
- chromeの場合はcodecs="av01.0.05M.08"のようにきっちり書かないとだめなのよ
- 462 :
- ありがとうございます。
contentTypeはきっちり反映されるようになりました。
ですがその他の値をべらぼうな値にしてもtrueになってしまうようです。
- 463 :
- >>454
ありがとうございます。
とりあえずその方法で置換できないか試してみます。
あとちょっと複雑なことをやっていて、
<div>
<p>りんご</p>
<p>ばなな</p>
<p>みかん</p>
<p>ぶどう</p>
</div>
↑みたいなHTMLを出力し、かつ<p>タグ内の文章をランダムで表示させており、
配列に変換してランダムに吐き出すと言うのを
【くだもの.js】
ver list[
<p>りんご</p>,
<p>ばなな</p>,
<p>みかん</p>,
<p>ぶどう</p>,
]
function Kudamono(){
var N = Math.floor(Math.random() * list.length);
document.write(list[N]);
list.splice(N,4);
}
と言う形でやっているのですが、何か良い代替案があれば教えて頂けるとめちゃ嬉しいです。自分でも試行錯誤します。
- 464 :
- あれid表示されるようになったのかな
- 465 :
- よく見たらその人と思われるレスだけid付いてるけどどうやってるの?
- 466 :
- 課金すればIDがつくんだよ
- 467 :
- こうかな
- 468 :
- 課金してみたわ
- 469 :
- やったwあたった
>>463
上の人は配列の中を文章だけにしてp=document.createElement('p')でP要素を作って
p.innerTextに配列の文章を入れなさいよってことを言いたかったじゃないの伝わってないみたいだけど
思うにそれHTMLに全部マークアップしといてランダムで隠す方が楽なんじゃないかな
イチイチ生成する意味なくないか
- 470 :
- >>469
要素を作るまではできたのですが、それを”その場に吐き出す=スクリプトを書いた場所にそのまま出力する”と言うのができないのですよね…。
例えば
<div id kudamono></div>
<scr>kudamono. js</scr>
こう書けばいかようにもなると思うのですが、、
<scr>kudamono. js</scr>
↑これだけで全て出力できるようなメソッドがわからなくて詰んでます…。
- 471 :
- insertHTMLでbodyに書き出すと本当にbody直下に書き出しといった形になってしまうので…。
本当に「document.write」と全く同じことができる書き方、現状では無いのでしょうか?
- 472 :
- >>470
scr要素って何?
- 473 :
- >>472
scriptと書いたところ謎の理由で書き込めなかったので、「scr」と略しました。
- 474 :
- >>470
なんでよ
document.getElementById('kudamono').appendChild(p)じゃだめなのか
- 475 :
- >>474
document.getElementById('kudamono')
.appendChild(p)
でやる場合、もともとのHTMLに
<div class=kudamono><./div>
と記述していないとダメですよね?
これは”無から””その場に”書き出すという
document.writeの代用にはならないんですよ…。
なぜなら<scrpt></scrpt>の記述”のみ”で成立しないので…。
- 476 :
- >>471
>>458
- 477 :
- まあ、insertBeforeの方が良いとは思うが
- 478 :
- >>475
あーそういうことか
要素を挿入したい場所の親なり兄弟なりセレクタで指定すれば同じことできるでしょ
- 479 :
- >>476
ありがとうございます。
insertAdjacentHTMLで親要素を取得して終了タグ直前に挿入、といった形で落ち着きそうです。
nextSiblingでも同じことができそうですが、レンダリング速度など考えるとどちらが良いのでしょうか?
- 480 :
- >>475
jQuery なら、これで、body に、div.kudamono を作れる。
その後に、document.getElementById('kudamono').appendChild(p) と続ければよい
<script type="text/javascript" src="file:///C:/Users/Owner/Documents/JS/jQuery/jquery-3.1.0.min.js"></script>
<script>
$( 'body' ).append( '<div class=kudamono></div>' );
</script>
- 481 :
- 修正
kudamono は、id か
>$( 'body' ).append( '<div class=kudamono></div>' );
$( 'body' ).append( '<div id=kudamono></div>' );
- 482 :
- >>479
レンダリング速度よりもXSS等のセキュリティリスクを考慮した方が良い
俺なら、insertBeforeか自作のinsertAfterで対応する
必要なら、DocumentFragmentも使う
- 483 :
- >>480
ありがとうございます。
ただ、やはりそちらのやり方ですとどうしてもbody直下への挿入となるため、<scrpt>kudamono,js</scrpt>を記述した箇所にそのままの書き出しといった形にならないため、やはりdocument.writeの代用にはならないのですよね…。
ただJQueryだとそこまでスッキリした記述ができるんですね!教えて頂いてありがとうございます。
- 484 :
- >>482
なるほどです。
insertBeforeで挿入したいのですが、.insertAdjacentHTMLの”beforeend”に該当する記述はinsertBedoreで可能なのでしょうか?
つまり
<div>
・コンテンツ
・コンテンツ
←ここに挿入するやり方がわからない(insertBefore ???)
</div>
←ここに挿入はわかる(insertBefore+nextSbling)or(nsertAdjacentHTML”beforeend”)
- 485 :
- また新たな疑問なのですが…
innerHTMLやinsertAdjacentHTMLで外部スクリプトを書き出そうとすると、一部正常に動作しないものがあるようなのですが…これは何が原因なのでしょうか?
外部から呼び出す類のスクリプト(アンケートサービスなど)を記述すると、スマホビューで表示されません(PCでは表示される)
そもそもinnerHTMLやinsertAdjacentHTMLではスクリプトを記述することができないのでしょうか?
- 486 :
- なんども質問してしまい申し訳ありません。。
他に質問ある方などいましたら是非そちらの方を優先されてください><
- 487 :
- 質問があります。質問してもいいですか?という質問をしてもいいですか?
- 488 :
- 「CSSセレクタで指定すれば可能」というレスを
スルーしてるぐらいだからそりゃできないだろな
ちょっとは自分で調べるなりすればいいのに
1から10まで教えてもらえると思うなよ
- 489 :
- function sengen(name, value) {
?????? //呼び出し元で let name = value する
}
function kidou() {
sengen('aiueo', 999);
}
kidou()
という形で呼ぶと、グローバルでもsengen()関数内でもなくkidou()関数内で
let aiueo = 999;
と変数を宣言してくれるようにする方法って何かないでしょうか?
あくまでkidou()内にはletと書かずに
無理ですかね?
- 490 :
- そんな事ができたら地獄だ
- 491 :
- オブジェクトやクラス使えよ
- 492 :
- スコープやコンテキストに触る必要があるから
唯一with-proxyで全体を囲めば限定的に可能
- 493 :
- 何をしたいかでなく何故そうしたいのかを書けよ
- 494 :
- >>484
>>480-481
にも書いたように、
jQuery では、append で、
指定した要素の最後に、引数で指定した内容を追加できる。
id=box の要素の最後に、div を追加する。
$('#box').append('<div>...</div>');
初心者に、素のJavaScript(JS)は難しいから、jQueryを学ぶ方が早い
例えば、Showroom を見るときに、多くのアバターが邪魔なので削除しているけど、
素のJSでは、要素を削除するのにも、
一々、その親要素を取得して、親から子要素を削除するように書くから、面倒
var elem = document.getElementById( 'js-avatar' );
elem.parentNode.removeChild( elem );
- 495 :
- >>485
innerHTML には、HTMLタグを書いて実行できるけど、
innerText には文字列しか書けない
素のJavaScript では、スマホ用ブラウザなどへの互換性が悪い。
新しめのメソッドなどを使うと、スマホには実装されていないなどが起きる
初心者には、互換性が高い、jQuery を勧める
jQueryを使わない場合は、自分で書いたメソッドが、どのブラウザで使えるのか、
一々、互換性を調べなければならないので、何年も掛かる
- 496 :
- 上の人じゃないんですが、括弧でくるんで
(a = document.createElement(a')).setAttribute('foo','bar')
のような書き方をするのは短く書ける以外に何か利点があるんですか?
- 497 :
- 普通は、これで良いだろ。
document.createElement( 'a' ).setAttribute( 'foo','bar' )
a = document.createElement( 'a' )
これは、a という変数を、後で使いたいから、一旦、代入するのだろう
だから、下の2行と同じ意味。
a = document.createElement( 'a' )
a.setAttribute( 'foo','bar' )
そして、それ以降で、a を使う
- 498 :
- >>479
> insertAdjacentHTMLの”beforeend”に該当する記述は
appendChild
- 499 :
- >>485
DOM API全てで外部スクリプトを書いたscript要素を挿入出来る
実行順の問題か、コードがSPに対応していないか、ノードが出現する前に参照しようとしているか、script[tyoe=defer],async,moduleを使用しているか…etc
- 500 :
- >>489
返り値にして、分割代入で受け取る
- 501 :
- ぶっちゃけ、>>493が最重要
「やりたいこと」だけ先行すると、「やりたいこと」が不適切な手段だった場合に気がつけない
「最終目標」を踏まえて、最適解を見つける必要がある
最終目標は「document.writeの代替コードが欲しい」ではなくて、
- なぜdocument.writeが必要なのか
- document.writeではなく、代替コードである必然性はあるのか
- document.writeをなぜ使用してはいけないのか
このように、「なぜその手段を選択したのか」を尋ねられたら時に「論理的な理由」を説明出来るようになって、良いコードを書けるようになる
- 502 :
- >>494
>>495
ありがとうございます。JQuery楽そうなんで換装できるよう勉強してみます
>>499
色々試した結果、その箇所だけ新たにノードを生成して個別に挿入したら正常に動作しました。実行順序の問題か、もしくは使用しているブログサービス特有の問題みたいです。ありがとうございます。
- 503 :
- >>501
そうですよね…。
一応コード全体の書き換えは終わり、実装もできそうなのですが…。
書いているブログの記事下に、過去のおすすめ記事や人気商品などをランダムで表示させるスクリプトを書いていて、記事下に<scrpt>randam.js</scrpt>と書いて一括管理しています。
ブログサービスを利用しているのでphpも使えず、jsを使うしかないというね。
- なぜdocument.writeが必要なのか
過去の記事は別のファイル(kiji.js)で管理したいので、それをjs内で呼び出して使うのにdocument.writeが便利→多用してしまうという感じです。
あと単純に「その場に書く」ということができるので便利。。(ブログサービスの都合上、cssのクラス名がpc-スマホ上で違ったりするので、クラスを指定して挿入よりその場に書き出せる方が便利)
- document.writeではなく、代替コードである必然性はあるのか
これはむしろ私が最初に疑問に思ったので質問した次第です。
使っていて特に表示速度に問題もなく、ページが真っ白になるという事もないのですが、「document.writeは非推奨」という話を何回も目にしたので、変えたほうが良いのかなと…。
- 504 :
- だから変えた方が良いって皆言ってるじゃない
これ以上は君が調べて自ら解決するべきことだよ
それで話は終わりなの ほんとしつこいね
変えなくてもいいって言ってほしいだけなんでしょ
- 505 :
- >>503
document.writeはHTML5の仕様で非推奨なはずで、だからみんな非推奨と言ってるので
使えないわけではないから、使いたければ使ってもいいんだろうけど
ただ、質問されたら、非推奨だから別の方法でって答えしか返せないのは当然だと思う
- 506 :
- 自分の言ってる事が正しいと思うなら回答を気にせずに好きに実装していいんだぞ
死ぬ程大変な思いをすることになるけど、趣味でやる分にはとてもいい勉強になる
俺はなった、ありゃーやるべきだ
>>404は好きにやってしまえば良い
- 507 :
- すみません;
質問し直します
「document.writeは使うな」という警告を耳にしますが、私は誰がなんと言おうとも頑として聞かずdocument.write使いたいので、免罪符となる「document.writeを使っても問題ない理由」をでっち上げていただけないでしょうか?
- 508 :
- (ヤバい、かなり難しい・・・)
- 509 :
- >>507
例えばstyleタグを生成する場合。
document.writeを使わないなら、DOMが構築された後に呼ばれるので
わずかに構築済みのDOM(ただしスタイルがあたってない)ものが表示されてしまう
レンダリングがブロックされてしまうというが、そもそもstyleタグを生成する場合
レンダリングをブロックしたいわけでdocument.writeを使うのは願ったり叶ったり
- 510 :
- 飯食ったり
- 511 :
- お昼寝したり
- 512 :
- 1.物理・数学の知識をjavascriptで活かすには何が一番有利?
2.ブラウザゲームが作りたい。専門書が多く出版されている物理エンジンはどれでしょうか?
- 513 :
- >>512
国内壊滅海外ならphaser
- 514 :
- 物理・数学の知識を活かすって何が言いたいのか良くわからんな
ゲーム用の物理エンジンというのも必ずしも物理学的に忠実なものではなくて
性能的、面白さを出すために擬似的なものを使うのが主流だし
- 515 :
- 自分が勝てるホームを探してるんだろw
物理・数学の知識がある(自称)のに
自分が何も作れないのは題材が悪いんだって考えてる。
- 516 :
- 数学や物理だとpythonの方が向いてるよ
物理エンジンでどうこうしたいならc#+unityだけど、別に数学の知識は不要。パラメータ変更するだけで大抵のことは出来る
- 517 :
- >>504
すみません、先述の「document.writeは使わない方が良いのか?」に関する疑問はすでに解決済みです
>>503は>>501さんの
なぜdocument.writeが必要なのか
なぜそれを使用してはいけないのか?
に対する回答を明確にせよ
という意見に回答しただけですので、
決して今「document.writeをどうしても使いたい!どうして使っちゃいけないの?」みたいなことを思っているわけではないです…。
- 518 :
- >>505
document.writeはどうして使っちゃいけないの?
→非推奨だから
で、もう既に私の疑問は解決済みです。
誤解を招くような書き方をしてすみませんでした。。
あと>>507さんは私とは別の人ですので悪しからず…。
- 519 :
- よく見たら既に使われているので支障があれば変えたいって質問内容だったのね
当然誰も読まないから>>507みたいにおもちゃにされとるだけ
- 520 :
- 非推奨なのはパフォーマンス上の理由だから、パフォーマンス出なくて構わないならどんどん使っていけ。
- 521 :
- いつの間にか使えなくなってるぞ
- 522 :
- ならねーよバーカ
- 523 :
- >>522
flashが全滅したのをもうお忘れで?
- 524 :
- flashはそもそもweb標準じゃないがw
仕様書に名前すら出てこないがwww
単なるサードパーティーのプラグインでセキュリティチョンボ大杉のうんこなので閉め出されたゴミだがwwwww
- 525 :
- さすがにflashが終わったからdocument.write終わるってのは頭おかしい。
風が吹いたからヤったとかいうのと同じレベルで意味不明。
- 526 :
- >>524
全面的に同意
ただ何故か日本では大流行で、標準機能をはるかに越えた単価だった
>>525
いや、それと同等の事が起きるって話しだよ
appleがslash締め出したように、ブラウザがdocument.writeを使えなくするのは時間の問題
標準はあまり関係ない
なぜなら標準はブラウザの実装を元に作られるから
- 527 :
- さすがに、standardから削る前に実装を廃止しちゃう早漏なブラウザメーカーはないだろう
- 528 :
- RegExpのプロパティやメソッドは一部消えるな
- 529 :
- Flashは存在を許すことで明確で積極的な害があったが
document.writeに関しては同期XHRと同じく非推奨以上にする積極的な理由がないでしょう
それに昔と違って今はFeature-Policyがあるんだからパフォーマンスの問題だって
Feature-Policy: {"disable":["sync-xhr","docwrite"]}
とか指定されているサイトでのみで最適化していけばいいという流れでしょ
- 530 :
- >>528
消える?
むしろ仕様に乗せる案がようやくStage3まで来たところだけど
- 531 :
- >>526
> ブラウザがdocument.writeを使えなくするのは時間の問題
時間の問題w
そこまで言うなら根拠だしてどうぞ。
どこでそんな話が進んでいますか?
ハヤク!
- 532 :
- >>531
非推奨
はい論破
- 533 :
- >>532
> ブラウザがdocument.writeを使えなくするのは時間の問題
ブラウザがdocument.writeを使えなくする根拠マダー?ww
おかしいなぁwwまだ使えるんだけど?www
あくしろよ嘘吐きノロマwwwww
- 534 :
- いまだにブラウザデフォがsloppyモードでwith文も使えるブラウザがdocument.write消す分けねーだろwebが壊れるわ
- 535 :
- まぁ別に100%廃止される予定だから今すぐやめろなんて言ってないぜ
phpのmysqlも10年ぐらい掛けてじっくり廃止したが、それでもやぱり大混乱が起きた。弊社です。
非推奨の機能なんて1005使わない方が良い。
単にバージョンアップが無いだけでなく、その機能はいずれ使用できなくなる。
一ヶ月しか使わないランペならともかく、ずっと使うつもりなら絶対に使うべきではない
- 536 :
- >>533-534
反論は出来ないよ
ただ、非推奨の機能なんて当然将来削除予定に上がるんだから初心者に勧めるなってだけの話しだ
- 537 :
- 正しい→非推奨だから使わない方がいい
嘘松→非推奨だから削除される
- 538 :
- ちょっと訂正、>>535は
>phpのmysqlも
>phpのmysql系の関数も
だ
>>534
俺もそう思ってたけどmysql系の関数がなくなってphp5以前の半分ぐらいかな、死滅した。
俺はいくつかのwebサイトを復旧中なんだ
日本全体では相当に多いと思う。この事実は否定できない
もちろん急ぐところは特急料金もらってる。超バブルだ。
- 539 :
- >>537
非推奨のままずっと存在した機能って何かあるの?
それと削除された機能の割合があれば教えて欲しい。体感では100%全部無くなっている。
- 540 :
- >>538
rubyやらphpやらから来た人にありがちな勘違いなんだけどjsはそれら言語と違って「仕様変更して前のはメジャーバージョンアップのとき消せばいいや」ってのが通じない言語なんだよね。
「webを壊す」とか「don't break the web」とかで検索して学んでよそこら辺の概念は。
同じように考えてたら笑われるよ。
- 541 :
- >>539
嘘乙。
セキュリティなどのやむにやまれぬ事情やベンダー固有機能とかでない限り非推奨機能でも基本残ってて使えるわ。
100%とか笑わせるなよw
- 542 :
- >>541
事情なんてしらねーよ
無くなったものはなくなっただけだ
- 543 :
- むしろ消えた機能出した方が早いだろ。すぐ出せるだろ100%らしいし
- 544 :
- >>536
誰も勧めてなんかないでしょ
というか10年後使えなくなるかもしれないから今から気をつけるって
10年前Chromeが出てから、色んな機能がユーザーアクションが必要になったり、
プレフィックス付きが無効化されたり、WebComponent周りも大きく変わったけど
それらを10年前に予測することはできないでしょ
自分が勝手に気をつけるのなら良いけれど、
今実際に決まってることとしたらFeature-Policyで抑制して行こうということなのに
勝手に使えなくなるとかいう予想を押し付けるのはおかしいと思う
Webっていうのは記録でも有るんだから昔の物がそのまま見えないと行けない
writeなんかはコンテンツの内容表示に直接影響する機能なんだから
よほどの理由がない限り廃止することはできないと考えるのが普通
TLSやHTTPの将来の一定バージョン以降ではいくつかの機能を廃止するとかはできるだろうけどね
- 545 :
- >>543
知るかwww
社内のミスならともかく、言語の仕様変更なんて共有して終わりだよ
ただ一番大きかったのはundefined
この辺りの仕様がなんか変わってえらい目にあったのは覚えてる
- 546 :
- >>544
あの〜それそのままmysql*関数に言って頂いてよろしいですかね〜
- 547 :
- 他の言語のように仕様変更してなかったことにできるならtypeof null → objectの仕様バグがいまだに残ってるわけないわな。
web技術の宿命や事情も知らないくせに門外漢が知った風な口聞かないでほしい。
- 548 :
- いいからdon't break the web で検索しろカス
mysqlやらphpと同列に語るとはヘソが茶を沸かすわ
- 549 :
- >>547
もうさすがに無理があったのでFWに投げた
>>548
思想とかしらねーよwww
結局実装すっるのはブラウザなんだから全く信用できない
- 550 :
- どういう標準作るかはどうでもいんだ
それをどう実装するかがブラウザにかかっている
全企業全部統一なら分かるけど、何故か例外をだす企業がいる
それだけの話しだ
- 551 :
- >>550
それがWebだから
そうじゃないプロプラエティな技術も沢山あるのだから
嫌ならそちらでやればいい
悪いところを無くすことは絶対にできない
良いところがあればその分悪いところがあるのだから
あとはどれを選ぶかは好みの問題
- 552 :
- そもそもWeb技術のうちどれをどれだけ採用して
どれだけ独自機能を乗せるかはブラウザの自由でしょ
ブラウザってただの1アプリなんだから
- 553 :
- >>551
webは使わざるを得ない状況になっている
使わなければ良い、はもう通じない
あとは言語の開発に参加するぐらいだ
なので俺はphpのデバッガに参加したところ。バグフィックスをバンバン出している
選ぶじゃない、作るんだよ
jsはまだ開発に参加してないけど、そろそろ行こうかなって思っている
- 554 :
- >>553
言語の開発に参加した所で君が思ってるところは変わらないでしょ
TC39でJSエンジンもWebブラウザも作ってWebを乗っ取るってこと?
それはできないし通用しないと思うよ
それにね、技術の上に理念が乗っかってできてるものの
理念を否定することはその存在そのものの消滅を意味するでしょ
WebはWebだから支持されてるんじゃない
Webの理念が受けたから今の大きなWebがあるんだから
Webって実質まだ20年くらいのもの
Webの理念を否定して仮にWebを変えられたとしても
別の存在が数年の間に取って代わるようになるだけでしょ
つまるところWebは細かい部分を変えるしか無いの
理念の部分を変えようなど机上の空論でしかないの
- 555 :
- >>554
どれだけ論破していただいても構わないんだけど、
Document.write()
が消えるか消えないか、これだけの話し
これで言えば俺は消えると思う
evaklに近いこれをどれだけ受け入れるか?
まぁそれだけの話しだな
- 556 :
- >>555
受け入れるという人はいない
それと将来まで使える形で残しておくかは別の話
document.writeはFeature-Policyで制限されたり
HTTPのバージョンで制限されることは十二分に考えられるけど
基本的には10年後も使える形で残ってるよ
自称JS仙人の俺が保証する
- 557 :
- >>530
まだ記号系のRegExp.$って使えんの?
- 558 :
- 使える
- 559 :
- そりゃ互換性が一番重要だから廃止するわけがないだろう
- 560 :
- 使おうとしたらエラー出たんだけど?
- 561 :
- >>555
残念evalも消えてません。
なーんにもお前の思う通りにならないねww
バーカwww
- 562 :
- >>560
まだ使えると書いた
今まで使えてきた環境では使え無くなったりする流れではなく使えるということ
まだ正式仕様にはなっていないので現時点でモダンブラウザ間で互換性が取れているわけではない
- 563 :
- 上で言ってるのは廃止された時、何も準備してない奴が阿鼻叫喚になるだけだな
俺は順次書き換えているからなんでもいいぞ
- 564 :
- 廃止しますって話を聞いてからでも十分間に合うで
- 565 :
- 「document.writeが非推奨」を記述している仕様書はあるの?
自分も使わないけど、あくまで機能的な面で使わないだけで、「非推奨だから使わない」は全く分からない
- 566 :
- おはようございます!
データを取りに行って、なかったときundefinedエラーになるので
try/catchでしのいでいる部分があるのですが
例えば、要素がなかったときのquerySelectorAll().length的な
別のテクニックって何かありますでしょうか?
void 0とかtypeofで比較する方法はだめでした
- 567 :
- >>565
HTML Standatdに書いてある
でも「記述している仕様書はあるのか」という判断基準は危険だよ
昨今ChromeチームがGitHubとかで公開したアイディアをWeb標準と言って自分に実装することが問題視されているけど
そのように仕様書なんて誰でも作れるもので超有名な仕様書だって大抵エディタは数人しか居ないのだから
非推奨と書いてあったってそのはそれを書いた人が非推奨と書いただけでしかなく、
仕様書がそれが法律というわけでもないし、推奨しないという言葉に明確な定義も効果も定められて居ないのだから
結局Webって皆で作るものだから、皆がどう思っていてどうしていきたいのかが重要
勿論皆と言っても自分の意見を出す人が少数居て、その中で特に引っ張っている人が少数という構図だから
基本的にはリーダーの発言発表をチェックして色んなメーリングリストに参加して雰囲気を掴んで
一緒に流れを作っていくという気概を持っておかないとね もし外部に判断基準を求めるのなら
- 568 :
- >>567
どこに「非推奨(NOT RECOMENDED)」と書いてあるの?
https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document.write()
https://momdo.github.io/html/dynamic-markup-insertion.html#document.write()
そもそも、HTML仕様における「非推奨」は HTML 4.01 まで存在したけど、HTML Standard以降はなかったと思うんだけどな…
> 非推奨と書いてあったってそのはそれを書いた人が非推奨と書いただけでしかなく、
それは「非推奨」を仕様で定義せず、各々の主観で物申してる場合の話だよね
Web標準仕様では通例的に RFC 2119 が参照される事が多いし、それに留まらず、通常は「非推奨の理由」にも仕様は言及する
重要なのは仕様における「非推奨の定義」「非推奨の理由」を正確に把握する事だよ
- 569 :
- 仕様で「非推奨」が未定義なら、彼らのいう「document.writeは非推奨」が主観的根拠を基にするもので厳格な定義じゃない
彼らの意見を目にして>>503が
> 「document.writeは非推奨」という話を何回も目にしたので、変えたほうが良いのかなと…。
のように判断するのは、ただの思考停止だよ
- 570 :
- 参考までに、HTML 4.01 の非推奨は下記URLの「推奨しない」の部分
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/conform.html#h-4.1
HTML Standard には(自分の知る範囲では)非推奨はないけど、近いのは 15.
https://momdo.github.io/html/obsolete.html#obsolete
- 571 :
- >>568
そこに書いてあるじゃない
For all these reasons, use of this method is strongly discouraged って
でも比較的大人数が長時間議論して練ってバージョンを区切って出していた時代とは違うのだから
非推奨の定義や理由だって結局少数のエディタの主観的根拠に基づくものでしか無い
今回だって警告の元はここ
https://www.w3.org/Bugs/Public/show_bug.cgi?id=9767#c32
document.write() behaviour is so crazy at this point that I've added a warning discouraging authors from using it.
あのHTML仕様界の王様、最も影響力のある人物であるHixieが「振る舞いがクレイジーだから警告しとこ」という理由で追加したものが10年も残ってる
元々はただwriteで書き込まれたスクリプトを動的に実行すべきかどうかという話でしかないのに、Hixieが主観的根拠というか気分で入れたものでしかない
仕様って言うのは結局そういうものでしか無い
- 572 :
- >>571
繰り返すが、「非推奨」と書いてない
それでも「書いてある」と主張するなら、「仕様書の警告文から判断して、非推奨だと俺は思う」と主張するのが正しい
あなたの個人的見解を聞いているのではない
仕様書は書いた通りに読むだけで主観的解釈を交えた曲解はよろしくない
- 573 :
- 仕様の「非推奨」と個人の「非推奨」の違いか
- 574 :
- >>572
警告文も仕様の一部で強く推奨しないと書いてあるのだから
それを書かれたとおりに読めばこのメソッドは非推奨なんだと言うことになるだろう
君は何?項目にNOT RECOMENDEDマークが付いてたりしないと非推奨と思わないの?
それこそ君の仕様に書いてあることに対する主観的解釈、個人的見解だと思うけど
Webに関する議論全般において通例的にRFC2119が参照されると思うのもただの君の古い考えだし
その範囲でしか非推奨という日本語訳を使えないというのも君のあまりにも頭の硬すぎる独自の考えでしょ
RFC2119のNOT RECOMENDEDはにしたって
具体的にそれを持ってこの機能が将来どうなるかとか、効果を表すものではなく
ただその仕様に従って欲しい度合いの強さを表すものでしか無い
もし仕様書に警告という形でその仕様に対するより詳しい事項がわざわざ書いてあるのに
キーワード1つ書くやり方に従っていないのであれば正式なものではないというような解釈をするのは
あまりに身勝手で意味のない考えだとしか言えないね
- 575 :
- >>566
なんのデータを取りに行くのか知らないが
普通にnullやundefinedと比較したら良いんじゃねーの?
- 576 :
- >>574
> 警告文も仕様の一部で強く推奨しないと書いてあるのだから
どの文面?
- 577 :
- 俺も「強く推奨しない」とは読めなかったわ
どこだろ?
- 578 :
- For all these reasons, use of this method is strongly discouraged.
じゃないの
- 579 :
- >>578
is strongly discouraged がそれか
- 580 :
- 要所要所で使い分ければ良いだけなのに、document.write非推奨厨は最近DOMを覚えたオレすげーなのか?
Googleアナリティクスだって少し前まではdocument.write使ってたし…
でもGoogle(Chrome)を基準にWeb標準がコロコロ替えられるのは確かに迷惑
- 581 :
- >>575
最後にちょっと書いてますがfalsyな値と比較する方法ではだめでした
- 582 :
- >>581
どうやって取得してるかまず書けよ
fetchやajax系ならstatus見ろとか助言できるだろボケ
- 583 :
- obj.prop をチェックしようとして obj 自体が null とかいうパターンだったりして
- 584 :
- 「仕様書にはこう書いてある!(`・ω・´)キリッ」
「独自解釈乙論破!」
みたいな流れは
夏だなぁ
- 585 :
- >>580
よく見返してご覧よ
変えたほうが良いかと質問者が質問してるから
変えたほうが良いけど好きにすればという声が多数でしょ
非推奨だから死んでも使うなと言ってるやつ居るか?
被害妄想は大概にしようよ
- 586 :
- >>537で終わってる
非推奨であろうがなかろうが使えなくはならない
- 587 :
- 自分のメモ帳を見返してみたら
Title:javascript アロー関数
(a,b)=>a+b,[]
//第2引数も指定できる
という謎メモを発見しましたがさっぱりです
どういうことなのか解読してみてください
- 588 :
- 解読する恩恵が欠片もない
今アロー関数のことが分かっていれば良い
無駄なことにエネルギーと時間をを使うな
- 589 :
- 最後の,[]が意味不明
- 590 :
- よくある書き方じゃん
- 591 :
- 無駄コードをよく見るなら、環境を変えた方がいいかもね
- 592 :
- 無駄?
アロー関数とカンマ演算子の関係、もしくはカンマで区切られて式として評価される区内においての挙動って
重要なポイントであり、テクニックというかコーディングスキルとして大切だと思うが
- 593 :
- >>592
>>587はカンマ演算子によって、評価値は []
アロー関数をどうやって参照して呼び出すの?
- 594 :
- >>587はおそらくArray.prototype.reduceに関するメモ。
ただし例がよくない。
最初は
[1, 2, 3].reduce((a, b) => a + b)
//=> 6
とでもやっていたのだろう。
reduceが第一引数のコールバック関数に加えて第二引数として初期値も与えられると知ってメモしたのだろうが、その際コード例を上のままにしてしまった、と。
コード例としては
[1, 2, 3].reduce((a, b) => a + b, [])
だと何がしたいのかワケワカメだからな。
なお当たり前だがこの引数リストのカンマはカンマ演算子ではない。
>>592はマヌケ。
- 595 :
- >>594
エスパーかよ
- 596 :
- >>594
カンマ演算子だけの話なんてしてなく
お前が言ってることも含んでるんだが
お前こそマヌケか?
- 597 :
- >>587は、
[1, 2, 3].reduce((a, b) => a + b, 10000) //=> 10006
とでもメモしとけばこんなことにはならなかった。
さらに言うと面倒でも
[1, 2, 3].reduce((acc, n) => acc + n, 10000)
のようにアキュムレータと値が弁別できるように書いた方がよい。
aとbじゃパッと見まるで同格みたいじゃん。
- 598 :
- >>596
>>587がカンマ演算子だとして、有効なコード例を見せてくれ
- 599 :
- >>593,598
何が言いたいのかようやく分かった
だけどそれこそが言いたいこと
(a, b) => a + b, []
が評価されて
(a, b) => a + (b, [])
になるか
((a, b) => a + b), []
になるかという話
- 600 :
- ドツボだね
バカ丸出し
下になるのは当然で、その上でカンマ前のアロー関数に意味はあるの?あるというなら有効なコード書いてみろと言ってる
- 601 :
- >>600
いくらでもあるでしょ
if(f = (a, b) => a + b, f() )
みたいなケースとか
前者になるか校舎になるか知っておかないといけないでしょ
- 602 :
- f =
- 603 :
- >>602
言いたいことは分かるが>>592を見てもらえれば分かるが
俺はより一般的な形において話していたつもりだ
一方君の言いたいことは分かるから不毛な言い争いになる前にこれでもう終わりにしよう
- 604 :
- 君らはいちいち煽りと喧嘩という名の議論()をしないとまともなコミュニケーションにならないの?
まぁこのスレに限った話ではないけど
有益な内容なんだろうけど読んでてすげー疲れるわ
- 605 :
- っていうここがどこだか忘れてる奴が多いこと
- 606 :
- 2chで品行方正な議論がしたという変態
- 607 :
- >>601
>>587の ,[] はどこへ行ったのだ?
- 608 :
- 品行方正になれとまでは思わないけど指摘がお互いにすれ違っていたりして微妙
議論するなら変に端折ったりせずにまともな文章をお互いに書け
出来ないなら仲良し同士でツイッターでもやってろ
- 609 :
- >>598に対する答えが出てない
これだけ
- 610 :
- 元々の発端は>>592
>>598が「カンマ演算子が有効なコード」を求めたが、>>587と関わりのないコードが出てきた
- 611 :
- >>607
なんで,[]に拘る必要がある?
元の質問者の質問答えるわけでもないのに
アロー関数とカンマ演算子の一般的な関係について言ってるんだが
>>609 >>601
- 612 :
- >>611
つまり、誰も質問していない「カンマ演算子の遣い方」を唐突に書きだしたという事か
- 613 :
- >>612
君は脳内メモリが1kbくらいしかないのか?
>>592で今までの流れからくる話としてカンマで区切られて式として評価される区内との場合と、
それに付け加えてついでにカンマつながりでカンマ演算子の場合も書いただけなのに
何故かカンマ演算子の部分だけを切り取って>>587と無理矢理絡めて話そうとする
頓珍漢なレスが>>593で付いたことがややこしくなった原因でしょ
どんだけ視野が狭くて自分勝手だったらそういう考え方ができるんだか
- 614 :
- >>592が>>587がカンマ演算子じゃない事に気が付けなかっただけでしょ
- 615 :
- >>614
>>587だけで評価したら取り上げたらカンマ演算子でしょ
ただしコメントの内容からするか関数呼び出し式中のカンマでしょ
だからわざわざ両方に触れて書いてるんでしょ
- 616 :
- >>615
> ただしコメントの内容からするか関数呼び出し式中のカンマでしょ
だから、「無駄コード」といわれたのに、>>592が無駄じゃない云々でカンマ演算子をとりあげる頓珍漢なレスをしてるんでしょ
- 617 :
- >>589,591は「カンマ演算子が無駄」と考えていて、>>592が「カンマ演算子を含めて、無駄じゃない」と反論しているのが争点
「カンマ演算子だと、どう考えても、おかしいでしょ」に対して「カンマ演算子にはこんな便利な使い方がある」とか「なぜ、カンマ演算子に拘る?」とか、主題(>>587)から逸れた切り返しをしていて、噛み合ってない
>>592が反論するには、「>>587でもカンマ演算子でこんなコードが書ける」と返して、>>592でカンマ演算子を取り上げるべきの正当性を主張する必要がある
- 618 :
- >>594のエスパーが正しいならそもそも>>587のカンマは単なる引数リストのカンマであってカンマ演算子ではない。
- 619 :
- >>617,618
済まないが俺としたら只々なんでそこに執拗に突っ込まれるのかが理解できない
俺が何を取り上げようが俺の勝手でしょ
俺は経緯も一通り説明したのにまだ同じ突っ込みを繰り返す理由が分からん
一体どうなったら満足なんだ?
- 620 :
- 勘違いしましたごめんなさいって一言言えば良いんじゃね
- 621 :
- その言い草だと、>>592に対しても「何を拘ってるんだ?」で終わるわけで、自分に甘く、他人に厳しい人だな
- 622 :
- >>620
実際に勘違いしていないので謝りたくはないところだが
今回は別に自分の主張も引っ張る価値もないどうでもいいものなので
君が謝って欲しいということであればそちらを取る
勘違いしましたごめんなさい
- 623 :
- あやまれって…
どっかの国のデモみたいだなレベルヒクッ
- 624 :
- 彼が長いこと引っ張るもんだから、カンマ演算子で使えるコードがあるのかと悩んでしまった
態度が大きいのがデフォなだけで、根拠があるわけではなかったみたいだな、やれやれ
- 625 :
- 自分の非を認めずどっかの国みたいに騒ぐから突っ込まれてたんだろ
- 626 :
- どっかの国みたいに謝罪と賠償を請求して騒いでるようにしか見えない
- 627 :
- 謝罪しろ。金を出せと言ってるんじゃない。
まあ、金だすっていうなら受け取るけど、
金で解決はできない。謝罪しろ。
何度、金を出しても言い続ける。次の金はまだか?
- 628 :
- 謝罪など要らん
正しい内容だけを書け
間違えたら、訂正しろ
言い訳がましい理屈を並べ立てるのが突っ込まれる原因
- 629 :
- 何様なんだこいつ
- 630 :
- 他人を否定する時には>>592のような偉そうな態度をとるが、自分が否定された時には話題を逸らして躱す、スタンスの切替が非難されてる
能動/受動共にスタンスを統一するというのは大事な事だよ
- 631 :
- >>628は当然の主張だと思うけど、他から見ると、ただの「偉そうな人」に見えるのかな
- >>587で「カンマ演算子を使った有効なコード」があるなら、それを書く
- >>587で「カンマ演算子を使った有効なコード」がないなら、「>>587はカンマ演算子ではありません。>>592は間違いでした。混乱させてごめんなさい。」と書く
事実確認を軽視して、「言葉だけの謝罪」をしているから「謝罪など要らん」といわれるんでしょ
事実確認せずにgdgdとお茶を濁しているから、>>624みたいな被害者が出てきて、ただの時間泥棒と化してる
- 632 :
- >>630
もう分かったから
俺が悪かったから勘弁して
- 633 :
- >>632
これが「言葉だけの謝罪」か
- 634 :
- >>633
慰謝料振り込むから口座と名前教えて
- 635 :
- >>631
なんだこいつ
お前のなんとか心を満たすための下らねぇ謝罪要求と、自分の正当性を延々と書き込んでたお陰で無駄にスレが消費されるわ肝心の技術的な話題が一切出てこなくなった
気分が悪いし迷惑だから俺に謝罪しろ!ここにいる全員にあやまれ!
- 636 :
- ネタには勘違いをなんとか言い訳しようとする必死さがない
- 637 :
- >>634
何も分かってない
- 638 :
- >>637
じゃあ謝罪のお手紙書くから住所教えて
- 639 :
- ここ民度悪いね
js選ばないほうがよさそう
- 640 :
- ここマウント取りたい猿が多いからね
- 641 :
- 真面目に回答や反論すると、「何必死になってんの?」と煽られる程度には民度が低い
- 642 :
- マウンターでない奴をマウンター扱いする荒らしもいるから、質が悪い
- 643 :
- Array#indexOfとArray#findIndexについて
配列からオブジェクト自身を検索するとき、どっちがいいですか?
[obj1,obj2,obj3].indexOf(obj2)
[obj1,obj2,obj3.findIndex(obj=>obj===obj2)
- 644 :
- ミスりました
[obj1,obj2,obj3].findIndex(obj=>obj===obj2)
- 645 :
- どっちでもいい
前後の状況にもよる
- 646 :
- >>645
ありがとうございます!
findIndexのほうが冗長で遅いと思ってたので
このコードを見かけて、実は挙動が違うのかなと思いまして
ありがとうございました
- 647 :
- 入れ子的な非同期通信をやりたいのですが
https://i.imgur.com/K0qlToO.jpg
こういう感じの処理をしてみたいのですが苦戦しています
(右側のthen(hoge())毎に複数$.getし、かつhoge内もthen(hoge())も順番を守る、みたいな)
↓こういう単純なやつだと上手く言ってくれるのですが
function hoge(){
return $.ajax({url:'https://jquery.com',type:'GET'}).then(_=>console.log(1)).then(_=>console.log(2))
}
$.ajax({url:'https://jquery.com',type:'GET'}).then(hoge()).then(hoge())
入れ子になると
function hoge(){
return $.ajax({url:'https://jquery.com',type:'GET'})
.then(function(){
return $.when($.ajax({url:'https://jquery.com',type:'GET'}).done(_=>console.log('$get 1-1')),$.ajax({url:'https://jquery.com',type:'GET'}).done(_=>console.log('$get 1-2')))
})
.then(_=>console.log('$get 2'))
}
Promise.all([hoge(),hoge()]);
上手くいったり行かなかったりします(おそらく通信速度の影響?)
なので最初の単純な方も上手くいってるのかどうかすら怪しいです
何かテンプレみたいなものがあればおねがいします
- 648 :
- >>647
> (右側のthen(hoge())毎に複数$.getし、かつhoge内もthen(hoge())も順番を守る、みたいな)
これってもはや同期的に処理するのとなにも違わないのでは……
- 649 :
- Promise.allとか$.whenとか使うと順番通りにならねえんじゃね?
- 650 :
- example.com みたいなサイトを使えば?
jquery.com は、テスト用のサイトじゃないだろ
タイムアウト時間も、関係あるかも
今は非同期処理に、axios を使うのが普通
- 651 :
- へぇw
非同期処理に、ねぇww
- 652 :
- >>648
説明不足でした
複数の$.getのとこは順序にこだわりなく全部終了するまでは待って欲しい程度でした
>>649
今はLOADINGみたいな変数をsetIntervalで監視してやってるのですが
何かもっとクールな方法がないものかと・・
>>650
たしかに、別のサイトでjquery読み込んでテストしてみます
axios初めて耳にしました調べてみます
- 653 :
- >>652
いやだから右側の処理をしたいんだろ?
hoge終わったら次のhogeが実行してほしいんだろ?
Promise.allは全部同時に実行されるんだから使わずに
同じような引数で右の処理を行ってくれるような関数を実装しろよ
- 654 :
- >>647
色々言いたいことあるけど最初の例で
〜then(hoge()) ←hogeを即時実行しちゃって大丈夫なの?
それともこれがjQuery wayなのか知らんけど
- 655 :
- jQuery関係なく、JavaScriptのPromiseっていうのは
こういうもんだ
- 656 :
- その"こういう"が何かを書けっつー話
自分がわかってるつもりで書いても何も伝わらねーの
- 657 :
- >>656
JavaScriptのPromiseを勉強してからもう一回来てくれる?
- 658 :
- お前が勉強しろ
- 659 :
- >>658
はい勉強しました。
これで問題解決でいいですよね
- 660 :
- 解決しますた
- 661 :
- 横からだが、>>656は何も間違ってない
- 662 :
- 解決したんだからいいだろ
- 663 :
- どっちが解決したのか分からんが、>>654が解決したなら、良かったな
- 664 :
- 本人「横からだが〜」
wwww
- 665 :
- どっちにしろ普通の頭持ってりゃここまでのレスで解決するだろ
- 666 :
- 説明もできずに「解決したんだから結果オーライ」みたいなバカしかいないの?
- 667 :
- 煽っても答えが出てくるわけではないよ
- 668 :
- そもそも答えが書ける人間は「こういう」なんて書かないしな
- 669 :
- ajaxでtimeoutはあるのですがfilesizeで何バイトダウンロードしたら通信切るやり方教えてください
- 670 :
- もっと論理的に、正確に書いてくれ!
処理A が成功したら、処理B を行うとか
プログラマーなんだから、yes/no と、順番を明確に書いてくれ!
- 671 :
- >>669
XMLHttpRequestオブジェのprogressイベントを監視しろ
- 672 :
- なんでそこまで必死なんだ?
- 673 :
- [1,21,33,46,58,64]みたいな配列があって、それぞれが1=りんご,21=スイカ,33=みかん,46=ぶどうみたいになっているんだけど、
配列内の数値が30以上50以下の時にだけ_で繋げて、みかん_ぶどうみたいに出力するのってどうすれば良いですか?
- 674 :
- 意味がわかりません
- 675 :
- >>673
俺だったらreduce使うかな
- 676 :
- >>673
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
- 677 :
- > 俺だったらreduce使うかな
は、
俺だったらfor文使うかな
と言ってるのと同じで、なにも役に立つことを言ってない
- 678 :
- >>673
すまんがまず仕様を明確に示してくれないと何も答えられん
・数字↔果物の対応関係と文字列のデータは何処にどう置いてあるのか
・_で繋げるのは分かったのでみかんとぶどうは何処から来たのか
・配列は必ず昇順なのか
- 679 :
- どっかの宿題みたいだな
- 680 :
- reduceは無いわ
filter map joinだろ
- 681 :
- Ruby で作った
require 'csv'
str = <<"EOT"
id,fruit
1,りんご
21,スイカ
33,みかん
46,ぶどう
55,なし
EOT
options = { :headers => true }
# 2次元配列
ary = CSV.parse( str, options ).each_with_object( [ ] ) { | row, ary |
ary.push [ row[ 'id' ].to_i, row[ 'fruit' ] ]
}
ary_2 = ary.select { |ary| 30 <= ary[ 0 ] && ary[ 0 ] <= 50 }
.map { |ary| ary[ 1 ] } # フルーツ名
p res = ary_2.join( "_" ) #=> "みかん_ぶどう"
- 682 :
- javascript初心者なのですが、よろしくお願いいたします。
【環境】windows10 1809、Chrome(Vivaldi)
【何をしたのか】
月イチで使う、web上の申込フォームがあります。
毎月同じような内容を入力→申込を繰り返すのですが、
その入力をブックマークレットで半自動化しようと思っています。
今回詰まっているのは、textの欄にクリップボードの文字列を貼り付けする処理の記述についてです。
【期待する結果】クリップボードの文字列を、目的の欄に貼り付けしたい。
【サンプルコード】
let chk = document.getElementsByTagName('input');
for (let i = 0; i < chk.length; i++) {
if (chk[i].type=='text'
&& chk[i].title=='利用者番号'){
chk[i].value = //クリップボードの値// ←ここの記述がわからないです
}
if (chk[i].type=='submit'
&& chk[i].value=='申込'){
chk[i].click();
}
}
- 683 :
- >>682
クリップボード chrome javascript ペーストで検索したら答えに行き着くんじゃね?
検索した上で出来なかったのなら【何をしたいのか】ではなく【何をしたのか】を書けよ
- 684 :
- await navigator.clipboard.readText()
- 685 :
- >>682
>>684でいいけど
クリップボードの読み取りはclickやkeydown等のユーザーアクションによるイベントからでないと動かないのでボタン等をページに挿入してやる必要がある
さらにブラウザのサイト設定で明示的にクリップボードを許可しておく
- 686 :
- Ruby では、powershell, clip コマンドも呼べる
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
- 687 :
- 何でもreadLineとかストリーム的に読むのって古臭いと言うか不便というか気持ち悪くないのかな
- 688 :
- オペレーターだらけなのも気持ち悪いだろ
- 689 :
- 別に絶対的に悪いということを言うつもりはないけど
Perlを引きずってるのがよく分かるね
- 690 :
- Perlはシェルスクリプトを引きずっている
- 691 :
- var tostr = {1:"りんご",21:"スイカ",33:"みかん",46:"ぶどう"};
var res = [1,21,33,46,58,64]
.filter(val => val >= 30 && val <=50)
.map(val => tostr[val])
.join("_");
たったこれだけのことをするのに>>681みたいに書かなきゃいけない言語ってやばない?
- 692 :
- 「だから滅びた…」
- 693 :
- とても初歩的な質問なんだが
Makefileを作成して(内容はwebから拾ってきたものをコピペ)package.jsonと同じディレクトリにおけばmakeコマンドが使えるようになるということらしいけど
makeコマンドを使おうとすると
>make : 用語 'make' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
ってなってしまうのはどうしたらいいんだろう?
- 694 :
- makeをインストール汁
- 695 :
- あ、makeもパッケージをインストールしないと使えないのか
上手くいったありがとう
- 696 :
- コマンドプロンプトで、そのコマンドの実行ファイル(.exe)を探すと、
漏れは、make をインストールしていないが、node.js をインストールしている場合、
where make
情報: 与えられたパターンのファイルが見つかりませんでした。
where node
C:\Program Files\nodejs\node.exe
PowerShell で、環境変数Path を表示すると、
$env:Path.split(";")
C:\Program Files\nodejs\
と表示されるので、ちゃんと、実行ファイルのあるフォルダが、環境変数Path に追加されている
つまり、実行ファイルから、拡張子を除いたものが、コマンド名となる!
ただし、その実行ファイルのあるフォルダが、環境変数Path に追加されていることが必要です!
普通は、個別のユーザー環境変数Path に追加する。
すべてのユーザーで共通にするなら、システム環境変数Path に追加する
コマンドプロンプトで、メモ帳のコマンドのパスを探すと、
where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
このように、2つ以上見つかった場合は、一番上の実行ファイルが実行される
- 697 :
- 未経験でこれからフロントエンドの開発を行うとき、生のJSを覚えるべきなのかaltJSを利用すべきなのかどちらがよい?
用途は趣味用のユーティリティを自作する程度で、経験はwindows向けにC#、androidアプリをかじった程度
- 698 :
- altJS一択
- 699 :
- × altJS一択
○ TypeScript一択
その他のaltJSは全滅した
- 700 :
- 勝手にkotlinをころすな
- 701 :
- kotlinはaltJSって言いたいの?え?(笑)え?え?(笑)
- 702 :
- JSの代替になりうるもの、つまるところ通常JSに変換できるようになっている言語で
特にDOMサポートもされているものはaltJSと呼んでいいだろう
- 703 :
- じゃあkotlinはaltJSじゃないね
- 704 :
- 生のJSというかESではいかんの?
TSとか、angular以外で使ったことない印象
- 705 :2019/08/28
- 別に好きにしたら
JS界やWeb界で確立されている手法は少ない
変化も早いし
だからとにかく好きにしたら良い
【i・Ez・S】携帯サイトのSEO【G・Y・B】
相互リンク募集スレ
Yahoo!アクセス解析
Google検索を叱りつけるスレ9
JavaScript Tips コレクション
相互リンク論
【ジャストシステム】ネットショップオーナー その4
初めてサイトを作った時を思い出すスレ
【ジャストシステム】ネットショップオーナー その4
ページミル
--------------------
代ゼミ札幌校スレッド
猫と爺と爺と爺と爺と爺と爺と爺
第3回2ちゃんねる全板人気トーナメントラシ会場98
【ドンチッチ】Dallas Mavericks 44th 【ポルジンギス】
1993年のプロ野球
陰気な嫌煙猿を晒せ!★2
【印旛部】ダブルインバース8【ベア】
[集会所] SKE48 7期生&8期生&9期生変態スレ☆21
猛暑で死にそうな喪女
悪いウルフと呼ばれても WILD&TOKIO【65】
自称女子ラーメン評論家本谷亜紀115杯
【スモールチェンジ】お菓子の容量を減らす事実上の値上げが話題 ネット上では批判声も
【PSG】Paris Saint-Germain part38
【ギズム】GISM【インスタ】 2
ななぱち【本スレ】Part1038
ラフ ◆N7U4M80v5I
☆大曲の花火・秋田の花火を語るスレ9☆
【レゲー】かっこいい曲や名曲を教えれ【音楽】
【売れない?改悪?】正直、ヤフオク疲れたスレ67
【音楽】氷川きよし2年ぶりトレンド入り アニソン動画に「断然こっち路線推したい」
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼