+ JavaScript の質問用スレッド vol.125 +

レス数が1000を超えています。これ以上書き込みはできません。
2018/02/18(日) 16:48:01.14ID:F2O3xW/S
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。


前スレ
+ JavaScript の質問用スレッド vol.124 + [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1427008785/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
2018/05/16(水) 22:41:52.64ID:U06fQouG
スレ違いじゃないならききたいんですけど
乱数で作って保存するっていうのはどこに保存すればいいんでしょうか?

識別する文字列を鯖側で乱数作成するにしても
ユーザがアカウント名として入力するでもいいんですが
配布する拡張機能側にうめこむ方法がわかりません

ユーザごとにIDをうめこんだ違うファイルを配るか
拡張機能内に何かしら入力欄を作って入力しないと無理ですよね?
2018/05/16(水) 22:46:17.65ID:kpFCptG2
>>769
自分で読み直してみて, 何がしたいのかその文章から読み取ってもらえると思う?
2018/05/16(水) 23:34:27.83ID:Y6ns+IX+
>>769
普通にストレージはchrome.storage.localとかで提供されてるけど。
エクステンションごとに保存先が独立して用意される。
ちなみにgoogle認証とかで識別したほうが楽じゃない。
乱数だとエクステンションをアンインストールしたタイミングでヒモ付が消えることになる
2018/05/17(木) 02:10:24.80ID:wyBemBjG
>>770
拡張機能をインストールしてブラゲーページをみたとき
特定の画面でDOMを抜き出す + ユーザ識別トークンを付与してサーバー送信

サーバー(PSP CGI)は受け取ったデータをユーザ識別トークンごとに保存

表示ページではユーザ全体の集計結果を公開してログインするとユーザごとの個別データが見られる

というイメージなんですけど
拡張機能側で毎回同じ識別トークンを知るor個別に作るにはどうしたらいいのかなって

PHPもJSも4月から覚えたばかりでウェブアプリつくるの自体がはじめてなので
認識が間違ってたらごめんなさい

>>771
わー ありがとうございます!

localStrageっていうの localStrage.put() get() だけで使えたので簡単そう
初回アクセス時にクライアント側で乱数を生成してlocalStrageに保存して
localStrageから取り出してつけるだけでいけそうです

これ実態はメモリじゃなくてファイルになってるんでしょうか
PCの電源落としたりセッションやIPがかわっても毎回取り出せるのかな
有効期限のないクッキーみたいなもの?

google認証軽くしらべてみたんですけど理解できなかったので自分には難しそうです
サンプルコードいくつかみたけどどれも何かしら入力文字列があったので
ユーザは何も入力しなくてもサーバー側で固有のトークンを取り出せるんでしょうか

とりあえずlocalStrage使う方向ですすめてみます
本当にありがとうございました!
2018/05/17(木) 08:24:04.09ID:b0UFX98N
>>772

oauthって、聞いたことない?
gmailは大体の人が使ってるからパスワード入力を省略できる。
2018/05/17(木) 10:27:39.72ID:X1pFA/4b
どうにもわからないことがあります
例えばHTMLの中に<a onclick="hoge()">と書いてあるとして
そのhoge関数はどのスクリプトにあるhoge()が呼ばれるんでしょうか?ブラウザでは同時にいくつものjavascriptが走っていると思うんですが

試しにGreasemonkeyでスクリプトfugaを作りそこからHTMLの適当な要素にonclick="hoge()"を追記して発火させてみると
ちゃんとGreasemonkey下のfugaスクリプト内のhoge()が呼ばれますが
ブラウザはどうしてhoge関数がGreasemonkey下のfugaスクリプト内にあると分かるんでしょうか?
動いている全てのスクリプトの関数名を走査しているんでしょうか
だとしたらhoge()とたまたま同名の関数が他のスクリプトにあったらどっちにいってしまうのか
確実にfuga内のhoge関数を呼ぶようにonclickに指定する方法はないのか
が分かりません…
2018/05/17(木) 11:02:58.88ID:clCaeeqI
>>774
何がわかんないのかよくわからないな。
同時に幾つものjsが走っているというのはあくまでタブ単位の話
複数のタブにまたがってグローバルスコープは共有しないから大丈夫
でも同名の関数が衝突することはあるから確かに気をついないとダメだね。
776774
垢版 |
2018/05/17(木) 12:03:22.10ID:X1pFA/4b
>>775
レスありがとうございます
他のタブの関数が呼ばれてしまうということは心配していないのですが
同じ1つのタブの中でもサイト作者が作ったJS、ブラウザアドオンのJS、GreasemonkeyのJS、と複数走っていますよね?
そこで同名の関数があったらどうなるんでしょう?
また確実に自分のスクリプトの中の関数を呼ぶ方法があれば知りたいです
またmin()とかmax()みたいにごく短くてありふれた名前の下位関数を作ることはよくあると思うんですが
関数名がブラウザには全部一緒くたに記憶されているんだとしたらそれすらも危険という気がしてきました
自作スクリプト全体を(function(){…})()で包んだとしても、先程の例のhoge()が呼べてしまうので
やはりmin()やmax()も宣言すれば全体から見えてしまう(上書きしている?)のでしょうか?
777デフォルトの名無しさん
垢版 |
2018/05/17(木) 12:30:50.49ID:CnmZ72XP
Greasemonkeyは使ったことないのでよく分からないけど同一スコープで同名の関数が複数定義された場合後勝ちになるよ
あと現在のスコープに関数定義が見つからない場合1つ外側のスコープを探しに行くよ
2018/05/17(木) 13:32:25.37ID:Vzlnwp7F
>>776
Browserアドオン。エクステンションに関しては別の処理系で動いているから名前衝突は起こさない。ただしDomだけは共有してる。
779774
垢版 |
2018/05/17(木) 14:00:11.16ID:X1pFA/4b
>>777-778
ありがとうございます
そこで最初の疑問になるのですが
Greasemonkeyやブラウザアドオンのjsからdocumentの要素にonclick="hoge()"等と書き加えた場合、
いざページを見ていてユーザーがその要素をクリックした時は、ブラウザからはHTML(DOM)だけを見ているのであれば
hoge()がどこのスクリプトから書き加えられたか分からない(どのスコープのその関数を呼べばいいか分からない)と思うのです。
その時でもなぜちゃんとhoge()が呼ばれるのかしっくりきません
また確実に自分のスクリプトを呼ばせる方法が知りたいです
2018/05/17(木) 17:35:57.36ID:YPyHndu4
>>779
その要素のaddEventListenerを呼び出して該当関数を渡せばいい
2018/05/17(木) 21:07:32.64ID:Yj64Z3R2
>>779
どのスクリプトファイルかを判断する必要はない
グローバルスコープは共有されるからだ
782デフォルトの名無しさん
垢版 |
2018/05/17(木) 21:44:36.42ID:CnmZ72XP
>>779
その書き方だとグローバル変数hogeかグローバルスコープに定義されているhoge関数が実行されるよ
どのファイルかを気にしているけれどJavaScriptはファイル単位でスコープが分かれるわけではないよ
ファイルAでグローバルスコープにhoge関数を定義してファイルBでbuttonのonclick属性にhogeを追加するとして、どちらのファイルも読み込まれた後にbuttonをクリックすればhogeは実行されるはずだよ
783774
垢版 |
2018/05/17(木) 22:40:53.71ID:X1pFA/4b
ありがとうございます
まとめて書きます
ファイルA.jsとファイルB.jsの作者がまったく別の人でお互いの内容を知らず、
まず順番が来たファイルAがbuttonのonclickにhoge関数を追加してhoge関数の本体も定義、
次に順番が来たファイルBがimgのonclickに(たまたま同名の)hoge関数を追加してhoge関数の本体も定義した(内容は全くの別物)という場合、
buttonやimgをクリックした時にファイルAのhoge本体とファイルBのhoge本体のどちらが呼ばれるのか?という問題が分からないのです
関数名はグローバルスコープで全て共有されるとしたら後で定義したほうが勝ちになるというのは分かるのですが
だとするとスクリプト全体を(function(){…})()で包むということの意味は何になるのでしょうか?
包んだ変数名や関数名をグローバルスコープから隠すことだと思っていたのですが
2018/05/17(木) 22:41:39.44ID:xJtGZ4kt
>>783
やってみ
2018/05/17(木) 22:42:37.94ID:4QIso6lE
>>783
関数スコープでぐぐれ
786774
垢版 |
2018/05/17(木) 22:56:03.69ID:X1pFA/4b
↑の補記
話を具体的にするために言い換えますと、
仮にファイルAはウェブサイト側のjs、ファイルBはブラウザアドオンのjsだとします
ブラウザアドオン側のjsの作者は、ウェブサイト側のjsで作って使っている関数名を全て調べて知っておく(そして衝突を避ける)
なんてことをするのは現実的ではないと思うのですが
どうやって衝突を避けるのでしょう? という疑問なのです
ファイルAのjs内で呼び合っている関数ならスコープで保護されるのは分かるのですが
HTML(DOM)のonclick等に書いてしまった場合スコープ情報が抜け落ちるような気がするのです

細かい話ですが、要素のaddEventListenerに登録する場合も、そのまま関数名だけならスコープ情報を登録してくれそうな気がしますが
関数に引数を渡したくてaddEventListener("click","function(){hoge(a,b,c)}",false)のように登録してしまった場合はやはりスコープ情報が抜け落ちそうな気がするのですが
そんなことはないのでしょうか?
2018/05/17(木) 23:11:50.85ID:pwDnHRNO
どこをどう話せば良いか分からんし、スコープ情報ってなんや?っ感じだけど

前提として衝突を100%回避するのは無理
是非はともかくjQueryやlodashなんかは1文字に全てを押し込めて衝突を避けてるけど
サイト側が$を使っちゃうとそれまでの話
2018/05/17(木) 23:55:51.71ID:XNPFfb6W
window.jQuery = window.$ = jQuery;

jQueryのソースコードでは、windowの、jQuery, $ に、
jQueryオブジェクトを代入してる

この2つだけが、グローバル変数
2018/05/18(金) 00:20:55.09ID:aN049InP
>>774
イベントハンドラーを、<a onclick="hoge()"> のように、HTML に直接書くのは、ダメ!
jQuery の、on とかで、JavaScript から設定する

モジュール管理は、Node.js が使っている、CommonJS とか。
ES6(2015) で、import文ができた

JavaScript, jQuery の質問は、
この板よりも、web制作管理板へ書き込んだ方が良い

そちらの方が、人が多い
790デフォルトの名無しさん
垢版 |
2018/05/18(金) 00:50:52.81ID:QeKi0vmL
>>787,788の言う通り完全に衝突を避けるのは不可能だけど実際上ほとんど問題にならないよ
グローバルスコープで発生する名前の衝突を避けるには不要なオブジェクトをグローバルスコープに曝さなければいいんだよ
ライブラリではそのために特定の名前に全部詰め込んでそれだけをグローバルスコープに晒したりしているよ
あとはwindow.foo.barみたいに独自のネームスペースを切り出してその中だけを使うといったやり方もあるよ
javaが分かるならパッケージ名みたいなものだと言えば伝わるかな
(function(){})()の意味は無名関数の即時実行だよ
スコープの話と絡めると良くあるのは(function(global){var foo; ... global.bar=foo;})(window)みたいな使い方だよ
この例だとグローバルスコープにbarと言う名前でfooというオブジェクトを曝してるよ
あとはえーと、addEventListenerで登録するのは関数の名前じゃなくてFunctionオブジェクトそのものだよ
無名関数も登録できるよね
リスナーが実行されるときに名前で関数を探しているわけではないんだよ
2018/05/18(金) 01:01:40.56ID:8Lfa78Q0
>>787
> 是非はともかくjQueryやlodashなんかは1文字に全てを押し込めて衝突を避けてるけど
> サイト側が$を使っちゃうとそれまでの話

jQueryもlodashも$や_をサイト側でも使っても問題ない方法を用意してるよ

jQuery.noConflict()
https://api.jquery.com/jquery.noconflict/

_.noConflict()
https://lodash.com/docs/4.17.10#noConflict
792デフォルトの名無しさん
垢版 |
2018/05/18(金) 01:04:02.60ID:QeKi0vmL
大事なことを言い忘れたよ
functionで囲うのは関数定義がスコープを生成するからだよ
2018/05/18(金) 01:18:38.25ID:+eq3xMCa
>>786
さっきも説明したと思うけど
>仮にファイルAはウェブサイト側のjs、ファイルBはブラウザアドオンのjsだとします
この場合は処理系が分離してるから。
関数名が衝突するどころかブラウザのアドオンからウェブサイト側のjs内の関数呼び出しはできない。
DOMしか共有してない。 何度も言うけどDOMしか共有してないから
2018/05/18(金) 01:19:57.68ID:+eq3xMCa
あと、質問するくらいだったら自分で検証環境つくって動かしてみたほうが早い。
2,3hで終わる話
2018/05/18(金) 02:31:19.01ID:8Lfa78Q0
>>793
DOM共有してるならなんとかなるな
mousemoveとかで呼び出したい関数をセットすればいい
2018/05/18(金) 03:14:35.64ID:eSpLSQVO
ブラウザの拡張とかの場合は特殊ケースだからあんまり深く考えてもしょうがない
Greasemonkeyはセキュリティのために何度も仕様変更してるし
2018/05/18(金) 05:58:40.33ID:TJjSUkwm
>>786
だから、関数スコープでぐぐれ
関数で括ったら、スコープが漏れない
グローバル変数は共有する必要がなければ使わないものだ
2018/05/18(金) 08:53:53.50ID:vhzZyBoJ
javascriptからtwitterにツイートするってどうすればできますか?
2018/05/18(金) 08:55:12.45ID:wWV9OIbj
A・P・I!
A・P・I!
2018/05/18(金) 09:23:31.03ID:vhzZyBoJ
JSだけでTLを取得するのはあったんですが投稿するのが他の言語しかみつからなくて…
2018/05/18(金) 11:41:13.09ID:aqq2JGgF
>>798
出来ると思うか?
悪意のWebサイト開設者が裏でJS回して「○○小学校に爆弾設置する」みたいな犯罪予告ツイートさせたらサイト訪問した奴の人生終わるぞ
だからTwitter Developer DocumentationのJSAPIにも載ってないし出来ない
2018/05/18(金) 11:47:25.25ID:aqq2JGgF
他の言語がツイート出来るのは、Twitter開発者として公式サイトから認定されて、ツール越しに発言した内容を責任持ちますという取り決めがされてるから可能なだけ。
だからJS単体で裏で勝手にツイートさせる事は不可能
2018/05/18(金) 13:23:15.34ID:wWV9OIbj
rest api使えば出来るよ。
consumer secret晒す必要あるけど。
こっそり訪問者にツイートさせたところがconsumer secretに紐付くお前が童貞されて罰を受けるだけ
2018/05/18(金) 14:19:08.65ID:vhzZyBoJ
>>801,802,803
特定のページをみはって特定の情報(DOM)がでたらツイートするBOTアカウントを作りたくて
訪問した人のアカウントで勝手にツイートするわけじゃないです
動作自体はローカルで動かすのでツイッターアカウントとパスワードwpソースにうめこんでも大丈夫なはず

他の言語でブラウザを経由せずにwgetみたいなことをやってもいいんですけど
ログイン認証があるのでログイン後に表示されるHTMLを取得する方法がわからないので
ブックマークレットだったりchrome拡張にできるjsが便利かなと

>>803
rest api で検索してみら node.js や npm のインストールがいるっていわれるんですけど
unix サーバー環境をもってないです…
2018/05/18(金) 18:07:05.49ID:wWV9OIbj
node要らないよ。
nodeでやるにしてもunixサーバーなんか要らないよ。
2018/05/18(金) 18:14:25.64ID:TWx7cy5G
>>804
もうちょっと具体的な機能の説明を頼む。
なんだかわからんけどパスワード類埋め込みだと悪用されるで。tweet自体はサーバサイドってやったほうが良い。
2018/05/18(金) 18:26:13.64ID:Dn3S2UO6
クロスオリジンの制約をどうするかって話じゃないの
2018/05/18(金) 18:29:36.01ID:WG50rlE+
BOTならサーバサイド, 常駐アプリのイメージ
JavaScriptならNodeが良いと思うけどね(Nodeすら導入出来ないなら諦めろ)
2018/05/18(金) 19:03:00.34ID:TWx7cy5G
nodeは怖くないよ。
npmくらいは使ってんだろ。普段から
2018/05/18(金) 19:40:29.64ID:vhzZyBoJ
>>806
具体的な内容まではいえないですけど情報が変化するサイトがあって
その情報を分析して特定の反応がきたときにツイートするBOTを作りたいんです
FXや株価のシグナルをつぶやくみたいなイメージに近いかもです

>>808
ほんとはcronか何かで定期的にそのサイトにHTTPアクセスにいくサーバーサイドアプリが一番なんですけど
その情報を表示するのにログインが必要なんですよね

で自分がログインした後のページのHTMLを取得する方法がわからないので
ログインまではブラウザで手動でやって
あとはjsで一定時間ごとにreloadかけてgetElementByClassとかで情報を抜き出して
分析してツイートするみたいなことをしたいのです
2018/05/18(金) 19:48:09.40ID:vhzZyBoJ
すいません まだわかりにくかったと思うので補足です

その情報を表示するサイトはぜんぜん他人のサイトでその上でJSを動かすって意味ではなくて
JSを動かすのは自分のブラウザ上だけで公開するわけでもないので
BOTのアカウント情報をうめこんでも大丈夫だと思います

JSから自分のつくったBOTアカウントにツイートさせることができればやりたいことはできそうなんです…
2018/05/18(金) 19:50:45.38ID:TWx7cy5G
>>810
https://qiita.com/sand/items/b01d7d8f3d9c1642298b
headless chrome使えば大抵のことは自動化できる
2018/05/18(金) 20:02:18.49ID:vhzZyBoJ
>>812
ありがとうございます
確かにこれならやりたいことができそうなんですが

導入にコマンドライン操作がいっぱい必要みたいですね
ためしに最初の1行をプロンプトにうってみたけど curl がないっていわれた…
コマンドラインになれてないので exe クリックするか
ブラウザ上で完結する作業以外は自分にはまだ難しそうです…

せっかく教えていただいたのにすいません
2018/05/18(金) 20:13:07.43ID:Jh0T0Bmi
分からんなら勉強しろよ
はっきり言うがお前のやりたいことはTwitterの公式APIドキュメント読めば簡単に実現出来る
自分で調べる気のない奴は向いてないからやめちまえ
2018/05/18(金) 20:17:52.21ID:vhzZyBoJ
確かにそのとおりなんですが
ツイッターもJSもそこそこ有名だから
JSからツイートするぐらいの関数なら誰かが作ってないかなと思って質問してみましたが意外といないものなんですね

時間はかかりそうですが自分でプロトコルから勉強して作ってみます
お答えいただいたかたがたありがとうございました
レベルの低い質問をしてしまって失礼しました
2018/05/18(金) 20:30:59.98ID:oVKCTGZ2
このスレに知ってる奴がいないだけで、ないはずはないので探してみるか他できくといいんじゃね
つーかツイートするだけでAPIの仕様まで理解しなきゃいけないとか欠陥言語もいいとこ
何のためのブラックボックス化だよ
2018/05/18(金) 20:52:40.06ID:TWx7cy5G
npm search twitterくらい打てよ
2018/05/18(金) 20:57:09.38ID:TWx7cy5G
今どきコードの断片をブログで共有って時代じゃないから。npm にいくらでもライブラリはある。でもnode使いたくないんだよね。
そもそもchrome extension作ろうと思ったら
yoとかである程度コードジェネレートしないとどうでもいい所で詰まるよ。
まぁいいけどさ。
2018/05/18(金) 21:04:35.72ID:WG50rlE+
「ツイートするにはこれ使ってね」とTwitter自身が言ってるWebAPIを知らずに何故ツイート出来ると思えるのか?
WebAPIの仕様を知らないといけないことが何故言語の欠陥になるのか?

>>816はひょっとしてWebAPIというものをご存じないのではないか?
2018/05/19(土) 00:50:49.48ID:UMIqrdYM
メール送るのにSMTP
HTTPリクエストするのにHttpヘッダを理解しろ
っていってるのと同じことじゃねーの?
2018/05/19(土) 01:55:16.37ID:7RqrIxbi
>>820
メールを自動化するなら少しは理解しとかなきゃダメだろ
2018/05/19(土) 01:59:23.35ID:C3obezRN
というか様々な用途で利用される標準化されたプロトコルとTwitter一社のWebAPIを比較することのバカバカしさをだな
あとは>>817と同じ
2018/05/19(土) 02:18:16.90ID:XScpv1fe
ブラウザの自動操作・マクロなら、iMacros, Selenium WebDriver

Ruby で、Mechanize, Selenium WebDriver で自動操作できる。
大学や図書館にもログインできる

パスワードを入れて、ボタンを押す。
element.send_key "パスワード"
driver.find_element(:css, 'ボタン').click

Nokogiri で、スクレイピングもできる。
ほとんど、jQuery と同じ

公開されているAPI を使わないなら、webページを自分で解析しないといけない。
どのタグに、どういう情報があるのか、分析するのが大変

API を使わずに、5ch 専用ブラウザを作れないのも、同じ理由。
自分で5ch の仕様を解析するのが、面倒だから
2018/05/19(土) 03:20:34.34ID:agmYFL3O
>>817
npmっていうコマンドがないっていわれます

>>818
使いたくないというかjs自体4月から独学で勉強はじめたばっかりで…
上位のフレームワーク的なものまで手だせる段階じゃなくて…

node.jsっていうのもよくきくので以前1回調べたんですけど
サーバー側で動作するjavascriptでスケーラビリティが必要な場合に
Apache+CGIのかわりにつかう速いウェブサーバー?って認識だったので関係ないと思ってましたが
普通にクライアントサイドjavascriptかくのにも必要な技術なんでしょうか

今回たまたま拡張機能使うのが楽そうだと思ってjsにしただけでjsはほとんどかかないので
知らなくてすむ技術なんだったらそれにこしたことはないんですが
話きいてるとそれを覚えてそのなかのツイッターライブラリ探したほうが速い感じなんですね

あのあといろいろ検索してみたんですが
javaやphpならトークン4つセットしたあとツイート内容引数1つうけとるだけでつぶやける関数があって
5,6行でツイートできるサンプルが結構でてくるのに…
javascriptだけは複雑な数十行のサンプルしかでてこない…
レン鯖かりてCGIにポストしてCGI側でツイートするほうがはやいのかな…

>>823
iMacrosって調べてみたら
>条件分岐などの操作ができない。
ってかいてあったんですけど単に操作記録してループ再生できるだけでは?
プログラミングの知識が必要ないってあるんですけど
HTMLを読んだりができないとやりたいことができない気がします

というかwebの解析自体はできててツイートしたい文字までは用意できてるんですよね…
825823
垢版 |
2018/05/19(土) 04:11:50.97ID:XScpv1fe
npm というコマンド名から、コマンドの実行ファイルを探す手順は、

OS のユーザー環境変数 Path に、
実行ファイルのあるディレクトリを追加していないと、探せない

漏れのPC で、コマンドプロンプトで入力すると、
>where node
C:\Program Files\nodejs\node.exe

>where npm
C:\Program Files\nodejs\npm
C:\Program Files\nodejs\npm.cmd

JavaScript は、Ruby よりもずっと難しいから、
先にRuby やって、無料のRails チュートリアルをやれば、
MVC, web アプリの作り方がわかる

例えば、Groovy のGrails, Node.js + Express Generator などが、Rails と同じ
826823
垢版 |
2018/05/19(土) 04:17:59.50ID:XScpv1fe
>823 に書いた通り

ブラウザの自動操作は、Ruby で、Mechanize, Selenium WebDriver

スクレイピングは、Nokogiri。
これは、jQuery と同じ
2018/05/19(土) 04:21:32.80ID:C3obezRN
>>824
黙ってNodeインストールして使えや
828823
垢版 |
2018/05/19(土) 04:34:49.32ID:XScpv1fe
Ruby で、Selenium WebDriver なら、こういう感じ

webページから、内容を抜き出して処理してから、
テキストボックスに文字列を入力して、送信ボタンを押す

driver.navigate.to "webページのURL"

element = driver.find_element(:css, '取得したいセレクター')
ここで要素から、内容を抜き出して処理する

element = driver.find_element(:css, 'テキストボックス')
element.send_key "入力したい文字列"

driver.find_element(:css, '送信ボタン').click
2018/05/19(土) 04:56:19.66ID:agmYFL3O
>>827
インストールしてみました

>>825
npmも勝手にはいってたみたいで
プロンプトにうったら動くようになりました♪

ためしに
> npm search twitter
っていろいろでてきました

とりあえずこのままjsでtwitter APIたたきにいくか
言語ごとかえてCUIでブラウザ操作してログイン後のHTMLよみにいくか
まだきめかねてますがまた明日がんばってみようと思います

リプくれたかたありがとうございました
2018/05/19(土) 06:49:42.97ID:RrTiHiLJ
>>824
そう。node.jsはサーバサイドというか、ブラウザ以外の場所でjsを使うために生み出されたけど、ライブラリ共有の仕組みが便利でブラウザで使うと便利なライブラリの共有にも使われてる。くらいの理解で。
ドットインストールとかで勉強してみるのはどうかな?いずれ使う日はくる
831デフォルトの名無しさん
垢版 |
2018/05/19(土) 10:24:52.94ID:Hm2RzZOa
  ●●●●ケネディ大統領が暗殺された●唯一の理●由は、イスラエルの核保有に反対した為である●●●
  http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/53

  この掲示板(万有サロン)に優秀な書き込みを●して、総額●148万円の賞金をゲットしよう!(*^^)v
  http://jbbs.livedoor.jp/study/3729/ →リンクが不良なら、検索窓に入れる!
2018/05/19(土) 11:32:29.92ID:agmYFL3O
あああああ

せっかくコードかけて動作させようとしたのに
アプリから twitter API 叩くための4つのキー取得するのに電話番号認証がいるみたいです…

ブラウザでログインすれば普通にツイートできるし
ツイッターの専用クライアントからは電話番号とかなしで普通にツイートできてるのに…
アプリからツイートするのだけ電話番号いるって…

twitter API 経由せずにツイートしたいってさすがにこのスレできくべき内容じゃないですよね
もうお手上げなのであきらめます
2018/05/19(土) 13:58:36.44ID:OcRErBRk
スレ違い荒らしの、Rubyクズ野郎、次見かけた時点で報復にお前の大好きなRubyスレをゲロ画像とうんこ画像で埋めてやるわ。いい加減頭来た
2018/05/19(土) 17:16:50.62ID:ttKcchMI
>>832
BOT対策でしょうかね。ロシアがアメリカの選挙に介入するのにずいぶん利用したらしいから。
2018/05/19(土) 19:05:42.83ID:xg7BKuaB
>>832
だからheadless chrome使えばと
2018/05/19(土) 19:45:08.39ID:im7Qg//H
新しいもの勉強するのいやです
2018/05/20(日) 00:34:59.78ID:FK8H6avj
>828
にやり方が書いている

Ruby + Selenium WebDriver で、ブラウザの自動操作
2018/05/20(日) 01:30:26.25ID:kuyY1fku
SeleniumはJava製のソフトだが操作には色々な言語のバインディングがある。
Java、C#、Python、Ruby、Perl、PHP、JavaScript
Java以外でよく使われてるのはご想像の通りpythonとjavascript

Seleniumは同一コードで多種のブラウザを操作できるメリットがあるがセットアップはやや面倒。
chromeに絞ってよいならばやはり今はheadless chrome使うのが楽。puppeteerというnpmパッケージ入れるだけ。
2018/05/20(日) 15:39:53.33ID:8z8yNvwA
twitter 公式API 使えとかうそ教えた奴責任もって最後まで教えてやれよ
840デフォルトの名無しさん
垢版 |
2018/05/21(月) 11:20:04.08ID:wG0UA8oX
Ruby でも、OmniAuth Twitter という、gem を使う

OmniAuthを利用して、Twitterログイン機能を作る【初心者向け】
https://qiita.com/To_BB/items/01863aa50d628c069b64
2018/05/21(月) 12:41:35.30ID:5HdLEL73
何が初心者向けだバカバカしい
842840
垢版 |
2018/05/21(月) 13:46:33.63ID:wG0UA8oX
OmniAuth Twitter という、gem を使っているから、
認証も何も、プログラミングしていないだろ

設定ファイルに記述しているだけ
2018/05/21(月) 14:39:27.82ID:iX+gFq3f
どっちにしろAPI keyとAPI secretいるって書いてるじゃん
アプリ認証なしでアカウント名とパスワードだけでツイートしたいって話じゃないのかよ
844840
垢版 |
2018/05/21(月) 14:46:37.78ID:wG0UA8oX
>828
みたいに、

Ruby の、Mechanize, Selenium WebDriver などで、
ブラウザを自動操作すれば?

アカウント名・パスワードを入力して、ツイートボタンを押す
2018/05/21(月) 14:53:14.96ID:0dJ5LmMx
なんでJSスレでRubyの回答するんだ?
JSスレできいてんだからJSのコードだしてやればいいだろ


https://qiita.com/ko-he-8/items/1bc26fd6ecdf6a8bf946

これとかどうなん?
ソースぱっと見 username password だけでいけそうだよ

new ActiveXObject( "InternetExplorer.Application" );
とかかかれてるからこれ毎回IE窓起動されんのか?
846840
垢版 |
2018/05/21(月) 15:35:31.61ID:wG0UA8oX
jQuery なら良いけど、素のJS は、あまり慣れていないから、Ruby でスマンな

Selenium WebDriver で、ブラウザの自動操作するために、
漏れは、各社のブラウザドライバーもダウンロードしてるよ

chromedriver.exe
MicrosoftWebDriver.exe - Edge 用
847840
垢版 |
2018/05/21(月) 15:40:28.69ID:wG0UA8oX
毎回、chrome, Edge が起動される。
chrome には、headless モードもあるから、画面表示なしで操作もできる

ActiveX は、やった事ない。
いつも、VBScript から、ピラフが使っている奴だろ
848840
垢版 |
2018/05/21(月) 15:59:06.92ID:wG0UA8oX
>>845
のソースコードを見たけど、VBScript, JScript などのWSH だろ。
sleep ばっかりで、これは面倒

Selenium WebDriver をすすめる
2018/05/21(月) 17:45:39.32ID:uCQ7ZqLN
Rubyの話は別スレでやれ。
selenium勧めるのはいいと思うけど、それはjsでも出来る。

お前らがRubyしか使えない事を他人に押し付けるな。
2018/05/21(月) 17:46:27.79ID:z8FBQjV3
お?Ruby使えないやつが逆ギレかw
2018/05/21(月) 17:51:14.42ID:uCQ7ZqLN
JSのスレで何言ってんだ?
2018/05/21(月) 18:06:47.93ID:0dJ5LmMx
Selenium WebDriverはjavascriptもあんだからjavascriptのコード教えてやればいいじゃん
npmも使ったことない初心者に新しい言語覚えろとか相手にされるわけないだろ
2018/05/21(月) 18:11:22.84ID:YiWPlkYS
ruby使うやつってこんなのばっかり。
禁煙の立て札の前でタバコ吸って注意した人の顔面に煙吹き掛けるようなやつら。
2018/05/22(火) 23:47:19.64ID:WjbbSvx0
Socket.IO(というよりEngine.IOやwsののperMessageDeflate)の質問です
デフォルト設定ではサーバーからクライアントへ送信するパケットのpermessage-deflateによる圧縮はメッセージ部が1024バイト以上でないと圧縮されないことになっていますが、これは今のPCスペックでも設定を変えない方が良いですか

現状ネットワーク帯域が逼迫しており何らかの対策を考えています

この1024バイト以上でないと圧縮しないというのはEngine.IO 1.6.0で定義されたと思われます
perMessageDeflateに関してはwsライブラリを参照するように書いてあり、wsのドキュメントにパフォーマンスの問題から制限を掛けたということが記載されています

備考
wsに1024バイト以上の制限がかけられたのは2.0.0の2016年12月30日
Engine.IOに1024バイト以上の制限がかけられたのは1.6.0の2015年11月29日
855デフォルトの名無しさん
垢版 |
2018/05/23(水) 09:34:28.72ID:McbJvmIi
jQuery とか、広告1つでも、30KB もあるのに、

1KB 以下の話なんて、無意味だろw
2018/05/23(水) 09:55:50.17ID:di8+0HVV
>>854
> 現状ネットワーク帯域が逼迫しており何らかの対策を考えています
別の所に原因がある
857デフォルトの名無しさん
垢版 |
2018/05/24(木) 23:30:50.81ID:bk4DKBHY
854です
ピーク時に2万3000クライアント程が同時接続しててその時にネットワーク帯域が不足するのでどうしたものかと悩んでいました
とりあえず半分の512バイトで圧縮するように設定して負荷検証してみました
実際のパケット自体は100バイト未満が6割、600〜900バイトが3割、1割はそれ以外(MAXは986バイト)
結果としては問題なく捌けているみたいですが、他のサーバーに比べるとCPU使用率が10%ほど高くなるみたいです(元々が20%前後なのでCPU負荷的には問題なさそうです)
メモリに関しては長時間の使用によってパフォーマンスが落ちるとの事なので1週間様子を見て大丈夫そうであればこれで行くことになりそうです
パケットログとサーバーの送信直前(emit直前)の時間の差はツールの問題で1ms単位でしか見れませんが遅延も問題になるほどではありません(最大の遅延で3msほどで済んでいます)
2018/05/25(金) 06:55:20.63ID:grQKF+XC
不足するなら送る対象を減らせばいいじゃない
ユーザーをパーティに分けてリーダーにだけ送信して
他のメンバーにはリーダーからP2Pで送らせるとかさ
2018/05/25(金) 21:36:15.70ID:UD8tpDYx
ファイルがダウンロードされたら、自動的にそのファイルをローカルファイルとしてJavaScriptで操作できないでしょうか?
Chromeだけでもよいので。
2018/05/25(金) 22:13:24.28ID:dKyw+i0Y
blob
2018/05/26(土) 18:52:06.00ID:u+TpUy97
Chrome拡張機能として作るしかない
2018/05/29(火) 21:22:46.60ID:lBGCoEyQ
一応確認したいんだが、
mouseoverとmouseoutの発生順って、規定されてないよね?
○○の場合だけならこの順、てのもないよね?
2018/05/30(水) 00:03:56.95ID:9PZ7zH+M
>>862
バブリング、キャプチャリングのことか?
2018/05/30(水) 00:14:21.75ID:qM8cSWzB
>>863
いや違う。書いたとおりmouseoverとmouseoutの発生順だ。

mouseout->mouseoverの順で固定されていればコードが減らせるんだが、
そうだとは誰も書いてないし、以下見る限りやはり駄目っぽいんだが、
誰か知らないかなと思って。
https://stackoverflow.com/questions/282245/what-is-the-event-precedence-in-javascript
2018/05/30(水) 00:23:38.62ID:qM8cSWzB
正確に言うと、「余分なコードを書かなくて済む」だな。

単純に、固定されていないと、
・mouseout->mouseoverの順で発生した場合
・mouseover->mouseoutの順で発生した場合
の両方を想定して書く必要があるだろ。
どっちかに固定されていれば片方だけで済み、その分コードが少なくなる。
だからプログラミングモデルとしては、固定されていた方がいいんだよ。
例えば、.NETは割と固定されてる。

ただ、上記リンクを見る限り、ブラウザの実装の余地を残す為(というのは後付だろうが)
放置って感じか。
2018/05/30(水) 07:01:37.19ID:5PTMcK7I
>>865
10年前のstackoverflowは見なくていいから仕様を読もう
https://w3c.github.io/uievents/#events-mouseevent-event-order
10年経ったら君の街でさえもあちこち変わってるだろう?
Webの世界なんてそれとは比べものにならないよ
2018/05/30(水) 07:20:54.75ID:9PZ7zH+M
>>864
> mouseout->mouseoverの順で固定されていればコードが減らせるんだが、
コードを書いて検証してみたのか?

仕様にも書いてあるようだが
https://triple-underscore.github.io/uievents-ja.html#events-mouseevent-event-order
2018/05/30(水) 07:23:38.29ID:9PZ7zH+M
すまん、重複した
2018/05/30(水) 09:09:51.12ID:qM8cSWzB
>>866-867
おお、サンクス。
確認したところ、05 November 2013 -> 25 September 2014で導入されてるね。

つか、「JavaScript mouse event order」でググッても引っかからないのは、
googleさんもうちょっと頑張ってくれ、とは思うが、
このレベルの詳細についてはMDNも未対応なのは認識した。

> コードを書いて検証してみたのか?
それは意味無いだろ。
このコードで良いかの確認は出来ないのだから。

> Webの世界なんてそれとは比べものにならないよ
それは買いかぶりすぎだ。この点はWebは10年遅れてたと断定出来る。
.NETは最初からイベントの順番は決まっており、遅くとも2005には固定されてた。
全てがWebが早いわけではないし、Webが早いってのも嘘だよ。
Webは仕様の更新頻度が高いだけ。

相変わらずおまえら信者レベルが酷いが、JavaScriptが全て良いわけではないし、
最先端な訳でも全然無いぞ。そこはマジで理解した方がいい。
asyncだってC#の方が先に導入したろ。
そしてJavaScriptはPromiseというゴミを抱えることになってしまった。

お前らは「難しくて」「最先端な」JavaScriptを使いこなす俺カッコイイ、
じゃないと困るみたいだが、全然それはないから。
JavaScriptは「簡単」だし「遅れてる」面も結構ある。
他言語をやれば分かる話なのに、理解出来ないのは、他言語が全く出来ないからだよ。
まあ全般的にHTML周りはよく出来ているのも事実だが。

むしろ他言語で実験/検証済みのこの機能が2014まで導入されなかったことが問題だ。
だから意図的に残したのか、という解釈だったが、方針変更ならさておき、
その他の件見てもJavaScriptの仕様委員会は馬鹿だから、気づかなかったのか?とも思える。
2018/05/30(水) 09:19:13.07ID:OvgslO8C
せっかく教えてやったのにこの態度か。死んでしまうといい。
2018/05/30(水) 10:08:17.11ID:PtoY56Ui
意識高い だけ 系だな。
2018/05/30(水) 12:08:58.15ID:jvVUm9ge
意識高い茸
2018/05/30(水) 12:47:47.46ID:nSbPZyY7
>>869
その変化の遅い10年越しの変更にもついてこれてないあんたは何も言えないよ
2018/05/30(水) 18:27:30.38ID:lzrT6vrR
JSが新しいなんて一度も思ったことないし、最先端が難しかったら何の意味も無い
.NETだってそもそもTaskあってのasyncなんだが
2018/05/30(水) 22:01:11.50ID:5PTMcK7I
つうかわざわざ例まで出して変化が早いから情報の鮮度に気をつけてねという意味で
「Webの世界なんてそれとは比べものにならないよ」と言ってるのに
「JSは他よりも進んでるんだぜ」と言ってるように思われるなんて心外
2018/05/30(水) 22:20:31.37ID:VXka+etT
>>869
> googleさんもうちょっと頑張ってくれ、とは思うが、
> このレベルの詳細についてはMDNも未対応なのは認識した。
こういう認識の人がJavaScriptの何たるかを語っても説得力がまるでない
二次情報をあてにして、振り回されるだけ
2018/05/30(水) 23:03:25.19ID:qM8cSWzB
2014になってようやくイベント順を固定した事なんて、全く威張れる話ではない。
それを「Webは速い(キリッ」とか、マジでヤバいってことだよ。

個人的にはWPF(2007)はHTMLを丸飲みすべきだったと思っていたが、
しなかった(出来なかった)理由はここら辺にもあるのだろう。

全般的にJavaScriptの仕様委員会の奴らからはコードを書いているニオイがしない。
これが多分、今のJavaScript界の一番の問題だ。
この仕様ではコードが書きづらい、というところが結構ある。(放置されている)

今回もそう。仕様もイマイチおかしいだろ。
プログラミングモデルとして整備するなら、

A: enter -> over -> out -> leave …入れ子(6パス=150%)
B: over -> enter -> out -> leave …W3C(5パス=125%)
C: over -> out -> enter -> leave …最速(4パス=100%)

Aのように入れ子にするのが妥当だが、何故かBになってるだろ。
これは enter は over の、leave は out の従属イベントになっていることを示唆している。
実際、実装上はそうだから、Cの順なら最速になる。(BはC比125%遅い)
ただしCはプログラミングモデルとしては意味不明だから、
一般的には「保証されていない」と表現されることになる。(for-inがこれ)
ところがこれもないだろ。
プログラミングモデルとして整合性も無し、最速でも無し。
コード書いてる奴らならAかCにする。ここら辺がちょっと違和感がある。
元々「規定無し」で来てたのをわざわざBにする意味はない。普通は決めるならAにする。

結果的にこういった間違った仕様の選択がJavaScriptを静かに殺していく。promiseもそうだ。
なお、WPFはどうなのかな?と思って確認したが、mouseover自体がない。
おそらくenter/leaveがbubbleするようになってて、それだけだ。
彼らはover/outは冗長だと判定したようだ。
2018/05/30(水) 23:03:55.11ID:qM8cSWzB
仕様書Figure2のmouseover(C)の方が分かりやすいかな?
2のoverが発生した後にenterがキャプチャ順で発生している。
本当は2のoverは5.5の所にないといけない。
そしたらenterがキャプチャ順、over/outがキャプチャ/バブル、leaveがバブル順で
綺麗に入れ子になるだろ。

C++の場合はリソース管理上厳密に入れ子必須なのだが、
JavaScriptの場合はここら辺が甘いから上達しないってのはある。
元凶は仕様委員会がゴミだから仕様がゴミになっていること。
結果、JavaScriptではゴミコードしか書けなくなっており、
お前らは美しいコードを見たことがなく、感覚が鈍いままになってる。
C++が良いとも思わないが、ある程度「ちゃんとした」環境がないと上達しない。
動けばいい、でやっている限り、動けばいい程度のコードしか書けないままだ。
JavaScriptは仕様委員会の連中がこの程度なのが最悪だ。
何を目指してこの仕様にしたのか、どういうユースケースを想定しているのか、さっぱり分からない。

お前らと話していると、技術的な面にはだいぶズレを感じる。
何度も言っているが、お前らは分かってないし、上達してない。これは自覚した方がいい。
ただ、ググッても出てこないような仕様を抑えている点を見ても、
お前らが努力してないって事はないんだろう。(これも前に言ったが)
今のお前らでは気づけないのだろうけど、
JavaScriptにはお前らの上達を阻害している要因が結構ある。
それは自覚して回避することは可能だから、信者になってマンセーするのではなく、
良い点と悪い点を冷静に見極めて行った方がいい。
そうすれば割とあっさり上達するのかもしれん。
2018/05/30(水) 23:04:22.32ID:qM8cSWzB
>>873
今更変更してて、しかもMDNに4年後も反映されてないってのは想定外だった。
もっとも、仕様化されている≠今の実装がそうとは限らない、もガンな所だが。
2018/05/30(水) 23:05:09.46ID:qM8cSWzB
>>874
JavaScriptが「プログラミング言語全般からすると」比較的簡単な言語だ、
と認識しているのならそれで問題はない。

> .NETだってそもそもTaskあってのasyncなんだが
それはない。
JavaScriptでpromiseが既に要らない子なのと同様、
C#では既にtaskは要らない子だよ。この点はC#も失敗してる。

JavaScriptは仕様委員会がパヨク化していて、ポリコレを振り回しているのがいけない。
asyncが見えていたのに「○○はpromiseを返します」なAPIとか、
httpsでしか使えません、とか、腐ってるだろ。
httpsにするかしないかはユーザ判断であって、JavaScriptの仕様委員会が決めることではない。
技術的な話に徹しておらず、結果的におかしな仕様選択になっており、次第に腐って行ってる。
何でこんなになってしまったのかは知らんが。
2018/05/30(水) 23:05:45.35ID:qM8cSWzB
>>875
他言語も最近はかなりの頻度で仕様変更してる。
JavaScriptの変化が特段早いわけでは全くない。
ただ、Webは下地が固まってないのを変更しているから、変更が大きく見えるだけ。
2018/05/30(水) 23:06:36.22ID:qM8cSWzB
>>876
俺はMDNは一次情報扱いだ。
ただし4年も遅れているとは認識出来ていなかった。
googleは結局Webページの巡回であって、pdf文書やGithubの中身の網羅までは出来てないって事だ。
冷静に考えれば当たり前だが、俺は気づいていなかった。
2018/05/30(水) 23:27:04.33ID:jvVUm9ge
> 全般的にJavaScriptの仕様委員会の奴らからはコードを書いているニオイがしない。

DOMの話なんだからJavaScriptの仕様とは関係ないだろ
そういうふうに詰めが甘いから、お前からは素人臭してしてこないんだわ
2018/05/30(水) 23:41:58.00ID:yQ3Du6Sp
MDNが一時情報?
個人のブログからネタ拾って紹介したりしてるぞ?
2018/05/30(水) 23:58:18.84ID:qM8cSWzB
>>884
そんなんあったっけ?URLよろ。
2018/05/30(水) 23:58:50.61ID:jvVUm9ge
一次情報と言ってもJavaScriptの一次情報じゃない
APIの一次情報でもない、DOMの一次情報でもない

MDNはブラウザが実装している機能の一次情報
2018/05/31(木) 00:11:33.60ID:orMHd8Xj
>>883
> DOMの話なんだからJavaScriptの仕様とは関係ないだろ
> そういうふうに詰めが甘いから、お前からは素人臭してしてこないんだわ
まさにその通りなんだが、「お前ら」は ID:qM8cSWzB に訂正しておいてくれ
DOMをJavaScript以外で扱ったことがないようだ
「Promiseが既に要らない子」はFetch全否定だし、仕様書をまともに読んだことがないのだろう
2018/05/31(木) 00:13:52.93ID:orMHd8Xj
>>886
MDNはFxの一次情報
あなたはFxだけ対応すればいいと考えているのだな
2018/05/31(木) 00:18:55.57ID:W0PTO+0n
>>888
くぷぷwww
Firefoxだけの一次情報なわけないだろwwww
2018/05/31(木) 00:29:56.42ID:93TXZv4a
全般的にお前らは無駄に意識が高すぎて、形式に拘りすぎだ。
要するに、自分にとって一番良さそうな資料を読めば良いだけ。
仕様書を読んでる俺カッコイイとか、必要ないんだよ。

俺にとってはMDNが一番マシだから、俺はそうしてる。
仕様、説明、サンプルコード、互換表、注意点、が載ってる。
仕様書は仕様しか載ってない。
MDNに同項目があるのならそっちの方が便利だ。

MouseEventOrderについて丸々抜け落ちている理由は分からない。
MDNを書いている奴らからはコードを書いているニオイはするから、
この項目の重要性が認識出来ていないとは考えにくい。
ブラウザに未実装なのか?
しかしあの仕様はどっちかというとJavaScriptの他項目と同じで、
「美しい仕様を考えた」よりは「現状のブラウザの実装を調べた」に近いから、
これも考えにくいのだが。

とはいえ、この件で妥当な「載せなかった理由」が無ければ、
MDNの項目の選定もおかしいことになり、
お前らの主張「仕様書を読め」も妥当だということになるが。
2018/05/31(木) 00:39:31.78ID:W0PTO+0n
良さそうもなにもMDNは
ブラウザが実装している機能の
一次情報だろ
2018/05/31(木) 00:40:04.45ID:zo4fWWcF
>>891
wikiみたいなもんだろ
2018/05/31(木) 01:10:48.67ID:jdhZ6mYJ
http://hkdnet.hatenablog.com/entry/2017/10/22/100000
> んで、これをちょっと読んでたんですがサンプルコードがわけわかんなかったんですよね。
> 僕が作った例のがイケてるんじゃね?と思ったのでコントリビュートしてみました。

一次情報がなんだって?wwwww
2018/05/31(木) 01:58:30.79ID:93TXZv4a
>>893>>884なのか?
なら日本語でおk
895デフォルトの名無しさん
垢版 |
2018/05/31(木) 02:05:09.38ID:l9Gqe5Tm
>>869
このオジサンは
Web > 君の街 という比較例を出しただけなのになんでC#とかasyncとかの話勝手に持ち出してきて発狂してるの???
2018/05/31(木) 02:12:29.16ID:93TXZv4a
>>895
それが分からないのはお前が馬鹿だからだ。
他の連中は反発しつつも、
「何故俺がそれをここで言うか」についてはついて来れてるだろ。
897デフォルトの名無しさん
垢版 |
2018/05/31(木) 02:39:50.83ID:l9Gqe5Tm
>>896
ああそーーっすかぁ
>>JavaScriptは「簡単」だし「遅れてる」面も結構ある。
他言語をやれば分かる話なのに、理解出来ないのは、他言語が全く出来ないからだ

こんなマウント取りやっといて10年前のstackoverflow漁ってたの図星されたから悔しかったわけじゃないんすねー

俺がバカだったんすね
すいません勉強しまーーーす
2018/05/31(木) 02:44:31.79ID:93TXZv4a
つかマジでお前ら文系プログラマっぽいよな。
突っ込んでくるところがおかしい。

折角877で仕様の不自然な点を挙げているのだから、(技術論)
仕様に詳しいつもりならそこに突っ込んでこいよ。
俺を言い負かしたいのならそこが格好の攻撃ポイントだろ。

なんつーか、マジでお前ら『文系的』揚げ足取りしかしないよな。
C/C++スレの連中も十分狂ってるが、あいつらは基本的に技術論だからいいんだよ。
お前ら、こんなレス読んでてもなんの足しにもならんだろ。
そういう姿勢が上達を妨げている、ってのもあるよ。

幼稚園児レベルの「言われたら言い返す」ではなくて、もうちょっと大人になれ。
2018/05/31(木) 02:57:35.66ID:93TXZv4a
>>897
俺がお前らにマウント取って、何の意味があるんだよ?

> こんなマウント取りやっといて10年前のstackoverflow漁ってたの図星されたから悔しかったわけじゃないんすねー
こういう風に取れる=お前はマウント取りをしたがっている、と分かる。
まあ、若いんだろうさ。
もちろんやりたければやればいいんだが、
それをしたところで何もお前の為にはならないといい加減気付け。

JavaScriptがどうなのか、というのは比較論であって、
当たり前だが他言語も知ってないと何も言えるはずがないんだよ。
そして他言語を知ってれば、マンセーではなくて、
いいところも悪いところもある、と分かるはずなんだよ。
お前らからはこの感じを受けない。
だから知りもせずにマンセーしてんじゃねーよ馬鹿共、と言っているわけでさ。

他言語と比べれば、
> JavaScriptは「簡単」だし「遅れてる」面も結構ある。
のは事実だし、具体的に挙げたろ。
それについて技術的に突っ込んでくるのではなく、
こう言ったことに対し感情的に突っ込んでくるうちはお前らは上達しないよ。
900デフォルトの名無しさん
垢版 |
2018/05/31(木) 04:43:46.19ID:lUyHhYKP
Javascriptはプログラマがオブジェクトの生存期間をコントロールしにくい。
どこからでもいつでも生存期間を延長しようと言語仕様そのものが狙ってくる。
従ってアプリ固有のマクロ程度が使用限界となる。
2018/05/31(木) 06:52:19.64ID:VUvitX/B
>>881
意味わからん
誰も他言語と比較なんてしてないんだけど
君自信も「仕様の更新頻度が高い」と認めてたじゃないか?
>>899
までに色々書いてるけど全部自分に跳ね返ってないか?
一番人の発言を変な捉え方して、意固地になってるのは君だと思うよ

そもそもね
Webって「完成物」じゃないからね、常に発展途上で皆で作っていくのがWebなの
仕様だって沢山定められているし機関もあるけど、別にそれらがWebの支配者なわけじゃない
MDNに無い? なら書き加えればいいじゃん? と思われるだけ
現状の改善のためには不満を持つことは大変よいことだけど
少なくともここはその不満を書き散らすような場所じゃない
君は街の観光案内所に行って、この街は遅れてる!認めろ!とか叫ぶ人なのか?
902デフォルトの名無しさん
垢版 |
2018/05/31(木) 07:16:03.84ID:lUyHhYKP
WebはGoogleの思い通りに改変されていくものだからね。
Googleとの対決に負けて以降、W3Cは機能していないんだから。
2018/05/31(木) 10:30:35.83ID:rWLEPxdQ
いつまでW3Cに固執してるんだよ
まともなやつならWHATWG追うだろ
2018/05/31(木) 10:36:15.36ID:TEHJ1ZB4
W3Cの方がGoogleよりも属人的だったぞ
名前は忘れたがXHTMLガン押しのカリスマおっちゃんいたジャン
その後にHTML5を進めた貢献者もそのおっちゃんだけど
良くも悪くもそのおっちゃんのセンスに振り回されてたのが昔だよ

一方Googleはデータ主義だし、各専門科は狭い分野を担当している
仕様も分散してカリスマがいない事によるデメリットもあるけど
どちらかというと今の方が個人的には気に入ってる
2018/05/31(木) 11:23:02.41ID:W0PTO+0n
> XHTMLガン押し
俺はXHTMLには否定的だったな。
XSLTは最悪の技術だった
自分のセンスが正しいことが証明されたよ
906デフォルトの名無しさん
垢版 |
2018/05/31(木) 11:35:40.15ID:lUyHhYKP
XHTMLなら決定性のあるアルゴリズムで解析できるので、セキュリティ的な意味合いで良さがあった。
カスタム・タグのセキュリティについてはHTML Tidyのプロジェクトで議論しているのでよかったらどうぞ。
基本的に悪い方向に向かっていると思います。
これを安全に扱えるのは最早Googleしかいないんじゃないでしょうか。
2018/05/31(木) 12:32:19.88ID:zIYjQOkH
「XHTMLが悪かった」というのは局所的に見過ぎてる
後方互換性がなかったのが問題だった
これについては、MSの功罪が大きい
MSがIEをアップデートしていたならば、XHTML2が生き残る道はあった
2018/05/31(木) 12:32:56.38ID:TEHJ1ZB4
構造化された文章ならその価値はあるだろうが
Webサイトと言うのはもはやそういうものとは限らないからな
909デフォルトの名無しさん
垢版 |
2018/05/31(木) 13:41:13.67ID:lUyHhYKP
タグの動作を拡張できるというのは非常に危険なことです。
Googleの野心にウェブ全体が付き合わされる必要はないんじゃないでしょうかね。
2018/05/31(木) 13:52:39.46ID:W0PTO+0n
>>907
なんでもMSのせいにするのはやめろ
911デフォルトの名無しさん
垢版 |
2018/05/31(木) 15:41:17.28ID:lUyHhYKP
ウェブ屋さんはちょっと変わった人が多いんだよね。
ネットスケープはとにかく落ちるブラウザで、直前に読んでいたページのせいで次のページが落ちるなんてこともよくあった。
ネットスケープに一番苦しめられてたはずのウェブ屋さんは何故かネットスケープマンセーしてたんだよね。
そして今、グーグルに一番苦しめられてるはずのウェブ屋さんがグーグルマンセーなんだよ。
おそらくこれ知能指数の問題じゃないかとにらんでる。
ウェブ屋さんの平均知能指数は他の業種より低いはず。
912デフォルトの名無しさん
垢版 |
2018/05/31(木) 15:44:45.97ID:lUyHhYKP
ウェブ屋さんが昔よく言ってたのは、Javascriptはたった二週間で作られた、天才じゃなければそんなことはできない、天才が作ったんだから最高の言語だ、こんな感じ。
僕は、たった二週間で作られた言語がそんなにいいわけないと考えるんだけどね。
913デフォルトの名無しさん
垢版 |
2018/05/31(木) 15:46:50.76ID:lUyHhYKP
最近のウェブ屋さんが良く言うのは、リビング・スタンダードね。
固定することなく次々仕様が改良されていく、とても素晴らしいってね。
仕様がころころ変わって一番いじめられてるはずのウェブ屋さんがそんなこと言うんだから、面白いよね。
2018/05/31(木) 15:52:03.12ID:Ptju6s6/
恥ずかしくなって長文で流すスタイル
2018/05/31(木) 16:15:39.37ID:68FMUsDq
XHTML も XSLT も別に悪いもんじゃない。もちろん JavaScript もだ。
XML Schema はだめ。
916デフォルトの名無しさん
垢版 |
2018/05/31(木) 16:25:32.27ID:lUyHhYKP
Javascriptは駄目すぎですよ。
早く捨て去った方が良い。
2018/05/31(木) 18:32:05.80ID:VUvitX/B
アンチJS見るのだいぶ久しぶりじゃない?
最近はJSer同士の喧嘩がほとんどだった気がする
いいぞ、もっとやれ
2018/05/31(木) 18:36:26.59ID:bmWKWolR
XMLは正直、SGMLよりはるかにマシだと思うけどな。
決定的なアルゴリズムと言う面でも、別にカスタムタグがあるからといって非決定的になるわけでもなく、カスタムタグ通りに動くだけであって、カスタムタグを想定していないガバガバな方がよろしくないかと。
そこまで否定的な事言ってたか?確かにTidyのIssueで何度も上がってるが、その文脈での反論には「そもそもvalidatorじゃ無いんだよ?」とツッコミ入ってたかと。

Javascriptがダメと言うのは、もう論外の発想では?
2018/05/31(木) 18:47:19.11ID:WRt4adm7
Javaよりいいだろ!いい加減にしろ!
2018/05/31(木) 18:49:36.45ID:zo4fWWcF
Living Standardを否定する人は老害じゃないかと思う
なんのための標準化なのか
2018/05/31(木) 18:55:52.19ID:4k9lsrlf
>>920
せ、生活水準?
2018/05/31(木) 20:19:38.89ID:W0PTO+0n
>>912
俺はたった二週間でできるわけないので、
その情報の出処はどこなのか、どの部分を二週間で作ったのか
それまでに似たようなものを作っていたのではないのか?って思うけどね。
923デフォルトの名無しさん
垢版 |
2018/05/31(木) 20:26:38.53ID:lUyHhYKP
>>918
Javascriptは明らかに駄目だろう。
元々はちょっとしたマクロのようなものを想定していたんだろう。
その程度のものをアプリに使おうというのが無理筋すぎる。
しかもそれがネットを介して作動するのだから、もはや気がくるってる。
2018/05/31(木) 20:27:54.03ID:W0PTO+0n
>>923
だから改良されたでしょ?
今のJavaScriptは昔のJavaScriptとはぜんぜん違うよ
925デフォルトの名無しさん
垢版 |
2018/05/31(木) 20:30:36.26ID:lUyHhYKP
>>924
いいや駄目だ。
2018/05/31(木) 20:32:53.00ID:W0PTO+0n
>>925
だめではないね。最新のJavaScriptは
他のどんな言語よりも優れてる
927デフォルトの名無しさん
垢版 |
2018/05/31(木) 20:33:51.11ID:lUyHhYKP
ウェブ屋さんはなぜ考えることをやめてしまうのだろう。
2018/05/31(木) 20:36:26.60ID:W0PTO+0n
みんなが考えた結果がJavaScriptの進化では?
2018/05/31(木) 20:51:17.69ID:cLwOw0aL
新しいJSと他の言語の比較はwasmが本格化したら考えてくれれば良いけど
最新の仕様に無頓着なのは完全に別問題、言い訳もクソもない
2018/05/31(木) 20:57:36.96ID:Ptju6s6/
クソかどうかは知らないが嫌われてはいないようだなw↓

848 デフォルトの名無しさん sage 2018/05/31(木) 13:00:56.28 ID:Mu/CSqL6
日本生まれのクソ言語Ruby『最も嫌われているプログラミング言語』堂々ランクイン!!
https://japan.zdnet.com/article/35109803/

おめでとうクソ言語!🎊
おめでとう日本の恥!!www
https://japan.zdnet.com/storage/2017/11/02/e28392adae17a191547db083133339eb/171106-zdnet-1-01-languages-1-900x675.png
2018/05/31(木) 21:22:01.06ID:zIYjQOkH
>>910
何でもMSのせいにはしていない
2018/05/31(木) 22:06:37.41ID:bmWKWolR
>>923
違うよ。当初から単なるマクロは想定してない。だろう論で話さずに、lispが作りたかったんや!って本人が言ってるあれ読んできたら良いよ。

ネットを介してが何を指してるかもわからんけど。
ブラウザ≒ランタイムなのが気に食わないのかな?
2018/05/31(木) 22:07:20.93ID:bmWKWolR
Web屋ではないけど、どうして考えることをやめたんだろう、と考えることをやめた人に言われたらちょっと面食らうな。
2018/05/31(木) 23:04:44.95ID:93TXZv4a
>>901
> 意味わからん
そりゃお前が馬鹿だからだ。

ただお前、866か?
ならそれは有効な情報だったし、多少はマジレスしよう。

今のお前の価値観は、完全に「Webしか出来ない意識高い系」そのものだ。
非Web系言語を何でもいいから一つでもやってみるといい。
そうすれば、JavaScriptの糞な所が理解出来、
自分の発言のどの部分が間違っているか分かるだろう。
2018/05/31(木) 23:18:07.71ID:W0PTO+0n
> 非Web系言語を何でもいいから一つでもやってみるといい。
> そうすれば、JavaScriptの糞な所が理解出来、
> 自分の発言のどの部分が間違っているか分かるだろう。

意訳

説明ができない。相手を説得できるだけの根拠がない
せや、相手にJavaScriptの糞な所を自分で見つけさせよう
相手が糞な所を調べられなければ、相手のせいにできるし
相手が糞な所調べれば、一石二鳥
俺って頭いい!
2018/05/31(木) 23:18:55.00ID:W0PTO+0n
>>934
ということで、お前の卑怯な戦略は封じたので、
さっさとJavaScriptが糞な所をお前が説明しろ
2018/05/31(木) 23:28:03.17ID:ge3pin8C
なんか伸びてると思ったらまた例の自称他分野の上級者くんがわいただけか

XHTMLの仕様を引き合いに出すのになぜかW3Cじゃなくて日本語wikipedia持ってきて頓珍漢なこと書いた挙げ句2018年にHTML6とかいうワード出してきたLiving Standardの存在すら知らない化石だろ

仕様書の中身覚える必要は全くないけど仕様を知りたくなった時に適切な場所で調べる能力がないのはエンジニアとして終わってんだよなあ
2018/05/31(木) 23:50:08.13ID:KdSxJ4h7
俺明日からTypeScriptでサーバサイドを書く仕事するんだ。楽しみ
2018/05/31(木) 23:59:43.67ID:rkwT15Q3
「俺がJavascriptが糞だと思う根拠を俺は説明できないからお前が他の色々な言語と比較して俺の意見としてよろしく説明しろ」
2018/06/01(金) 00:05:31.55ID:sQsdflG2
「お前はYESと言った、俺の意見はNOだ。お前は俺の代わりに調べてNOであることを証明しろ」
2018/06/01(金) 00:05:40.92ID:aed5SMKU
Webに限らず普通はまず仕様を調べて、それから実際のところどうなってんのか実装を見るものだと思うけど……
942デフォルトの名無しさん
垢版 |
2018/06/01(金) 00:12:11.30ID:BB8Kvjzn
さすがにJavascriptが素晴らしいってのはないわ。
2018/06/01(金) 00:18:20.12ID:vO+ZAFAb
うむ、JavaScriptは素晴らしくない
昔よりだいぶマシになったとは言え書かずに済むなら書きたくない言語だ
2018/06/01(金) 00:23:40.58ID:FoNGS0Kl
てかお前ら必死すぎ。
何でそんなに信者になるのか分からん。

お前らが馬鹿なままで居続けるのはお前らの自由だ。
同様に、お前らが俺のアドバイスを信じてみるのも自由だ。
結果は周りの奴ら、つまりお前らの同僚や後輩が判定してくれる。
今と同様に間抜けなことを言い続けたら馬鹿だと見なされるだけ。

JavaScriptが糞かどうかは別として、
他言語を学ぶのは上達への一つの方法ではあるから、やってみるといい。
そうすれば、JavaScriptがどうなのか客観的に分かるだろう。
そもそも、良い/悪いってのは比較論なんだから、
他言語を何一つ知らない奴が言っていい事ではないんだよ。
2018/06/01(金) 00:29:55.92ID:8Oub/YtZ
と、他言語を何一つ知らない奴。
2018/06/01(金) 00:44:59.34ID:yImADcgX
JSは昨日動いてたコードが今日のブラウザのアップデートで動きませんを回避するために、
ES5以前のこの動きは駄目だろうと言いたくなる仕様が沢山あって初心者が中級者に上がる所が辛い言語だと思うわ。
肝心のES2015も新サポートの構文増え過ぎで、勉強し始めは「これらは本当に同じ言語なのか…?」と戸惑うところが結構あったし。

でもまあ、モダンな環境に一通り触った今ならそんな糞言語だとは思わんな。
2018/06/01(金) 00:49:54.03ID:FoNGS0Kl
>>941
それは非Web系の常識だ。
JavaScriptは特に悲惨で、仕様と実装が全く同期してない。
だから割と出たとこ勝負で、それが嫌だから例のnpmの件、

・作者がnpmと揉めてコードを引き上げたら、
 それをリンクしていたWebサイトが突然軒並み動作しなくなってプチ祭り状態、
 どんな凄いライブラリなのかと思いきや、なんとたった1行!
 他言語の連中の反応はマジで冷ややか、『こいつらはコード書けないのか?』

なんて事が起きる。
仕様と実装が同期していないのも、普通に考える「実装が追いつかない」ではなく、

・仕様化されているが、実装されていない
・仕様化されているが、異なる実装になっている
・実装されているが、仕様化されていない
 (リファレンス実装無し=物によって動作がバラバラ)

の全部ある。
だから仕様を調べて…という『一般常識』だと盛大に空振りすることもよくある。

俺はこれがJavaScriptの最悪なところだと思うけど、
JavaScriptしか知らない奴はこれが普通と思っているから、話が通じない。
2018/06/01(金) 00:52:15.31ID:GvO68gYC
Haxe は良いけど、JS ではプログラミング出来ない

プログラミング部分はRuby でやって、
Rails から、jQuery, Vue.js とか使うのが一番
949948
垢版 |
2018/06/01(金) 00:56:16.06ID:GvO68gYC
Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://youtu.be/ycOeM2umXkY

伊藤淳一 Junichi Ito の動画
Rails 5.1 から、Vue.js を使う
2018/06/01(金) 01:05:40.02ID:iys/3sJ2
C++とかSQLとか
2018/06/01(金) 01:13:08.63ID:iys/3sJ2
まぁそもそもJavaScriptが嫌いなら無理して使わなくてええんやで?
ヘイトぶちまけたいなら愚痴スレ行け

ちなみに俺は素のJSは馴染まないから理由がない限りTypeScript使う
952デフォルトの名無しさん
垢版 |
2018/06/01(金) 01:23:17.88ID:BB8Kvjzn
普通に考えてあんな糞言語広めたやつは裁きの場に出るべきじゃないか?
そして死刑が執行されて民衆が納得する。
このままだと暴動起きるよ?
2018/06/01(金) 01:40:58.12ID:pL38rcyF
wasmに期待するわ…
954デフォルトの名無しさん
垢版 |
2018/06/01(金) 01:45:41.09ID:Kjs/aFNB
あんな糞言語?分かった!Rubyのことだね?w👍

848 デフォルトの名無しさん sage 2018/05/31(木) 13:00:56.28 ID:Mu/CSqL6
日本生まれのクソ言語Ruby『最も嫌われているプログラミング言語』堂々ランクイン!!
https://japan.zdnet.com/article/35109803/

おめでとうクソ言語!🎊
おめでとう日本の恥!!www
https://japan.zdnet.com/storage/2017/11/02/e28392adae17a191547db083133339eb/171106-zdnet-1-01-languages-1-900x675.png
2018/06/01(金) 07:03:22.27ID:Qgd1BTri
>>947
君は非常に大きな考え違いをしている
それは大変な間違いだよ
仕様は仕様、それを勝手に利用してる実装は実装
両者の問題を混同してはいけない

君の理屈だと例えばあるビデオコーディック対応と謳ってながら実際は
プロファイルなどによって再生できなかったり、色の再現などに関して問題が起きたり
いろんなプレイヤー間に非互換性があることに関して
そのコーディック仕様に文句を言うようなもの

そういうライセンスを与えてるならまだしも、
仕様側には世の中の実装を正す責任も権利もないし
そういうことで仕様に対して文句をいうのは完璧にお門違いの話

実装に関しても、もし〇〇対応と言っておきながら違っていたら嘘を言ってることになるが
実際はそんな具体的に対応機能を列挙してそれを価値として売ってるブラウザなんて少ないし
実装に誰から言われなくとも自分たちで気づいて直す義務があるとまでは言えない

『これとこれとこのプレイヤーでは最低でも再生できる動画を作りたい』と願うのは俺たちの方で、
あくまでそれは『俺たちの勝手な願い』なのだから、そこで生じる問題は俺たちが負うのは至極当然のこと
もし、実装に直して欲しいと願う部分があるならば、最低でもissueやパッチを投げるくらいの義務は俺たちの方にある
それなのに実装や、ましてや仕様を「悪」というのは随分おこがましいな
2018/06/01(金) 07:31:00.19ID:vO+ZAFAb
>>947
仕様を最初に調べるのが常識なのにMDNやら10年前のstackoverflowやら漁って失敗したのがオマエだろ

JSはクソだがベンダの実装がクソなことと言語がクソなことの区別がつかないオマエはそれ以下の糞

ここの区別がついてないと昔よりだいぶマシになったモダンな言語仕様通りに書いて、実装の汚いところはトランスパイラによしなにやってもらうという解決ができない
2018/06/01(金) 09:17:44.38ID:CPRw9teR
なんか今日も発狂してるな
958デフォルトの名無しさん
垢版 |
2018/06/01(金) 09:28:59.36ID:vv7FkXWB
御託並べて働きもしない奴「働く必要などない!」
御託並べて仕様も読まない奴「仕様など読む必要ない!」
2018/06/01(金) 12:43:56.91ID:UBye49NJ
生jsとトランス前提のjsでは話が変わってくると思うけどな。
前者は嫌だが、後者ならまあ普通に使えると思ってる。
※個人の意見です。
2018/06/01(金) 20:24:51.76ID:Qgd1BTri
それ生か変換かっていう話じゃなくて
ES2018使えるか、ES5どまりか、って違いじゃないの
2018/06/01(金) 22:41:52.00ID:FoNGS0Kl
>>955
日本語でおk。

> それなのに実装や、ましてや仕様を「悪」というのは随分おこがましいな
俺以外も含めて、誰も「仕様を『悪』」とは言ってない。
ちゃんと理解出来るまで読み返せ。

日本語が通じないお前に対していくら書いても通じないと分かりきっているから俺は書かない。
が、頑張って書いた分についてはポイントだけ教えてやる。

君は「他言語でも同様」「JavaScript特有」の案件の区別が付いてない。
これは、やはり君はJavaScriptしか知らないことを意味する。
その程度で、比較論をぶつのは適当ではない。

議論したいのなら、まずは話の筋を完全に理解出来るまで何度でも読み返せ。
今のお前に必要なのはそれだよ。

>>956
君はそこを攻撃ポイントだと捉えているようだが、
俺は「失敗」とは思っていない。逆に、地雷臭を感じている。


あと、JavaScripterの信者化はいったい何なんだ?
JavaScriptが糞かどうかと、お前らが糞かどうかは別の話だ。
逆に、仮にJavaScriptがものすごく素晴らしいとしても、
それを使っているお前らが素晴らしいことには全くならない。

なんだかんだでJavaとPythonが蔓延っているのは、あの程度が丁度良いからだ。
本当に頭抜けているのなら、その言語が世界を統一してしまう。かつてのCがそうだ。
JavaScriptにはそこまでの勢いなんて全くない。
これを認識出来ないのは、お前らがJavaScriptの世界に引きこもっているからだ。
2018/06/01(金) 22:47:56.06ID:sQsdflG2
C言語が世界を統一したことなんてないんだけど?
むしろCOBOLの方が使われていただろう
963デフォルトの名無しさん
垢版 |
2018/06/01(金) 23:16:03.19ID:Kjs/aFNB
分量すごいのに中身が全然ない…
日本語ってここまで薄められるんだ…
2018/06/01(金) 23:16:58.51ID:YPDAIGJS
JSの良し悪しなら言語比較スレにでも行って好きにやってくれ
CだってC89や下手すりゃK&Rで時代が止まってる様な発言したらそりゃ突っ込まれるだろうに
2018/06/01(金) 23:42:09.60ID:FoNGS0Kl
ならさっさと877,878の技術面に突っ込んで来いよ。

お前らの根本的原因はそこなんだよ。
C++のスレの連中は異様なほど技術面に執着する。
お前らは逆に、異様なほど「JavaScriptは素晴らしい」事にしたがる。
だからこういう流れになる。これもいつものことだろ。

俺は今更のこの仕様にしたこと、そしてそれが4年も放置されていることに
地雷臭を感じてる。
それについてお前らの見解はないのか?
(話を理解出来ない奴が大半だとは思うが)
2018/06/01(金) 23:42:59.95ID:96Hhk6HA
ID:FoNGS0Kl が仕様と実装の違いを理解してのは>>947を読めば分かる
2018/06/01(金) 23:44:49.99ID:sQsdflG2
> C++のスレの連中は異様なほど技術面に執着する。
暇なんだろうね。
2018/06/02(土) 05:13:14.61ID:t3xHIzYO
普通にライブラリが異なる実装がある言語は仕様と実装のズレなんていくらでもあるのにな
複数の主要な実装があるのが珍しいだけな気がする
2018/06/02(土) 07:01:45.47ID:CiIQIriy
>>961
君は良く他の言語だったら〜というが、他の言語スレだったら取り合ってもらえないだろうよ
決定的な反論をぶつけて叩き出さないのも全て、俺たちが多様性というのを尊重してるから
あいつとこいつと君と俺の意見が同じような日本語を使ってるはずなのに全然合わないように、
中央管理者の居ない状況で個々の者同士がやり取りするのは一定のルールは必要とは言え
結局細部に齟齬が生じるのが自然の摂理なんだよ

これはもうWebというものの成り立ちからくるものだから、そのポリシーを批判しても仕方がない
もちろん細かな変更はしようがあるが、今だってWebを整えたとも言えるGoogleだって、
Webを牛耳ってると非難する人が出るように明らかな改善というのを定義するのは難しい
いろんなデバイス、いろんな人間が関わっているのがWebだから、程々曖昧にしてバランスを取るしかない
そういう部分が嫌というのは気持ちは分かるが、Webから離れてくれと言うしか無い

1つ言うなれば、仕様やリファレンスに疑問を感じたら自分が直せ 君もWebの一員なんだから
結局そういう物っていうのは、残念ながら世界を作って管理してる神の書いた聖書ってわけじゃないんだよ
Webにおいて仕様やリファレンスとは、勝手に人間がこの世の仕組みや物に名前を付けてる辞書のようなものでしかない
その辞書の内容だって個々違ったりするし、最新の現実を100%表してるわけではない 絶対ってものではないんだよ
でも今更Webに神を置くことなんて不可能なのは君でも分かってくれるだろう?
ならどうしろというのさ?
2018/06/02(土) 09:04:14.65ID:EcvZfz1b
>>969
日本語でおk、マジで。
だから通じてねえと言ってるんだよ。
俺はWebを批判しているのではない。そんなことは言ってないだろ。
そもそも俺は全般的に現状肯定派だ。ここが根本的に違う。

お前らは「JavaScriptは素晴らしい」ということにしたいだけだ。
それは明確な間違いで、何にもならないから、止めろと言っている。
が、お前らのレベルはもう完全に宗教だから、好きにすればいい。
それで馬鹿なままなのは自業自得だ。
ここからは離れ、本題に行く。

> 1つ言うなれば、仕様やリファレンスに疑問を感じたら自分が直せ
これに対する感覚が決定的に違う。
お前らは若く、自分が全知全能の神で、疑問があれば「相手が間違っている」と断定している。
つまり、「現状否定派」だ。
俺は、これには「書かなかった理由があった」と推定している。
つまり、「現状肯定派」なんだよ。
だから、疑問に思ったからといって闇雲に参加して書き加えるとかはしない。
なおこの違いは要するに年の違いだから、お前らが今「現状否定派」なのは問題ではない。
それはいわゆる「若さの特権」だし、若いうちはそれでいい。

「現状肯定派」には今回の件は以下のように映る。

1. 世界中の誰も4年もMouseEventOrderをMDNに追記しようと思わなかったとは考えにくい。
2. まともなプログラマならこの項目が重要だとは認識出来る。(googleも)
3. W3Cの仕様B(877)はゴミ。
4. とりあえず手持ちの環境で軽く試したが、どうやらW3C仕様で動いているっぽい。

重要な項目が、既に実装完了の状態なのに、
誰もMDNに書こうとも思わないってのは明らかにおかしいだろ。
書きたくない理由があるんだよ。分かってて書いてない。
2018/06/02(土) 09:05:12.45ID:EcvZfz1b
可能性として俺が思いつくのは以下。

α:W3Cなんて無視
 (しかしWHATWGはHTMLだけでDOMにはノータッチのようだが)
β:現状のブラウザに未実装の物があるから宣伝を控えている?(消極的無視)
 (未実装のブラウザのライフタイム終了と共に宣伝開始か?
 しかし新機能を喧伝している状況でこれもない)
γ:W3Cの仕様が気に入らないから仕様変更するつもりか?

俺はこの中ではγかと思っているから、この仕様には乗れない=地雷臭を感じてる。
で、ここら辺についてはお前らの方が詳しいから、何か意見はないのか?と聞いている。
俺にはW3Cがこの仕様にした理由が見えないから、状況が読めない。

一応969の内容に答えておくと、
そんなことは基本的に俺は思ってないわけ。
「俺がやりさえすれば全て上手く行く」「駄目なのはお前らがやってるからだ」というのは、
ガキが巣くっているこのスレみたいな所ならともかく、
俺と同年齢層/同技術レベルの奴らも多数参加している場所ではあり得ない。
Webの現状がどうあろうと、それは関わってきた奴らがこれまで努力してきた結果であり、
そこに俺が参加したからといってたちどころに改善するなんてことはあり得ない。
こんなのは年を取った奴らは全員理解している。
(とはいえ糞は糞である事実は変わらない。
それをさも素晴らしいかのごとく言うな馬鹿タレ、という話)

だからそもそもそういう指摘をしてくること自体が若いんだよ。
ただ、それは若さの特権だから、お前は今はそれでいい。
2018/06/02(土) 09:08:40.24ID:EfxrOVAT
ここ厶板のJSスレなんだから
DOMの仕様策定に物申すなら向こうでやってよ
973デフォルトの名無しさん
垢版 |
2018/06/02(土) 09:51:52.67ID:RQ4rJlvL
向こうでやってよって、自分たちで自分たちの住処ぶっ壊して移住してきたくせによく言うよな。
2018/06/02(土) 10:39:10.12ID:HiBVCbKy
enterはoverに従属
overはmoveに従属
それで一体何が問題なのか・・
2018/06/02(土) 11:16:45.39ID:ns8PEWJM
そもそもココでJSの仕様がどうだのと長文の持論を連発し始めてる時点で仕様書もロクに読めないクズ
2018/06/02(土) 11:20:45.79ID:XIvhMjpN
お前らは分かってない君が仕様書を読めない人なのは、以前も見た
2018/06/02(土) 12:02:03.11ID:2Y0lMOjq
仕様書読めない人は他人の話も聞けない人だから
2018/06/02(土) 12:10:45.44ID:t3xHIzYO
>>970
> お前らは「JavaScriptは素晴らしい」ということにしたいだけだ。
いや、大多数はそんなこと思ってなくて、お前の技術力の無さをJavaScriptのせいにするなよと思ってるだけだぞ。
(俺はC#やJavaの方が好きだし)

> まともなプログラマならこの項目が重要だとは認識出来る
なぜ仕様書も読まずに5chに質問するやつが自分に異様な自信を持っているのかわからん
需要があればググれば質問がヒットする。単にMouseイベントの順番の重要性が低いから書いてないんでしょ。
2018/06/02(土) 12:15:22.97ID:X90L1I+w
この人マジで全く根拠のない思い込みの知ったかぶりで適当こいてるだけだから一切話聞く必要ない
別にLiving Standardが素晴らしいとは言わないけど DOM Living Standard の *存在を知らない* のはエンジニアとして論外

>>971
>(しかしWHATWGはHTMLだけでDOMにはノータッチのようだが)
つ https://dom.spec.whatwg.org
2018/06/02(土) 12:25:06.32ID:EfxrOVAT
そもそもW3Cへの批判を並べながらECMAScriptを語るってのが意味不明
DOMの話してんじゃないの
2018/06/02(土) 12:37:03.92ID:az533VkJ
そもそもJavaScript素晴らしいとか言ってんのごくわずかしかいないのに誰と戦ってるのか

ほとんどのWeb屋は英語と同じでJavaScriptがWebの共通語だから使ってるだけで、大抵別のお気に入り言語がある
2018/06/02(土) 12:43:53.45ID:RN3zjhf2
JavaScriptは現在勝ち言語なんだからわざわざ素晴らしいとかアピールする必要なんて無いだろ
そんなこと言ってる人も見ないが
2018/06/02(土) 12:53:48.90ID:t3xHIzYO
一応 >>877 に突っ込むと、「Cの順なら最速」は意味不明。
stopPropergationでenterが止まるのを見てもわかるように、overの伝搬を利用してenterを実装することを想定した仕様だと思う
入れ子ではなくセットで、overに従属するenterが後から来るのは特段不自然ではない
(C#でもClosing→FormClosing→Closed→FormClosedという順番のイベントがある)

パフォーマンスとIEとjQueryの動作を破壊してまでAを採用する理由がないならBにするのが妥当に見えるが

> WPFはどうなのかな?と思って確認したが、mouseover自体がない。
WinFormsにもWPFにもoverとenterはないと思う
何を持って「.NETは最初からイベントの順番は決まっており、遅くとも2005には固定されてた」なの?
2018/06/02(土) 12:57:18.61ID:+/nRHGaP
深刻な確証バイアス罹患者だろうからどうしようもない
2018/06/02(土) 13:14:52.90ID:EcvZfz1b
>>979
おっと?これは失敬。

確認したが、EventOrderについては記載がない。
ということは、彼らはこちらを向いていて、W3Cは参考程度の扱いって事か?
それなら一応の辻褄は合う。
2018/06/02(土) 13:18:16.74ID:B1JKBGEy
C言語って未定義が多いよね
2018/06/02(土) 13:30:13.48ID:m4wz3xzo
>>986
未定義は馬鹿が踏みがちなので、わざわざ「未定義」と注記しているのだよ
2018/06/02(土) 14:00:10.24ID:XIvhMjpN
>>980
DOMとJavaScriptの関係性を理解できてない模様
他人を批判する前に仕様書を読めといいたい
2018/06/02(土) 14:06:08.99ID:EcvZfz1b
>>983
> 何を持って「.NETは最初からイベントの順番は決まっており
「.NET Event order」でググレば俺には最初にヒットするが
> Windows フォームのイベントの順序
> https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/order-of-events-in-windows-forms
その他諸々。いちいち全部決まってるよ。
また、addEventListenerで足した順に処理される。

> (C#でもClosing→FormClosing→Closed→FormClosedという順番のイベントがある)
ClosingとClosedはobsoleteだ。
そしてセットが問題ではなく、入れ子になってないのが妥当ではないと言っている。
とはいえFormsについては最早どうでもいい。

> stopPropergationでenterが止まるのを見てもわかるように
これはアウトだろ。WHATWGとW3Cのどちらにもそれを想起させる記載はない。
ただ、俺環境では止まらないが。もういっぺん確認してみて。

> 「Cの順なら最速」は意味不明。
これは分からなくていい。
俺が最速の実装を目指したら結果的にこうなる、という例でしかない。
君が別の解になることはあり得るし、問題ではない。ただ、
> overの伝搬を利用してenterを実装する
を想定しているのならそれは俺と同じであり、
・overとoutを伝播させてenterとleaveを作る。
・だからoutよりenterが先に来ているBでは、outを事前に空伝播する必要がある。
・同様に、Aの場合はenterがoverよりも前で、overを空伝播させる必要がある。
・空伝播を一回もさせずに済むのはCの時。
だからCは伝播がそれぞれ1回ずつの4パス、Bはout*2で合計5パス、
Aはさらにoverが2回で合計6パス、という想定だ。
が、まあ、これ自体は重要ではない。
普通は決めるならAだし、あるいは規定無し=実装任せで最速実装できるようにする。
どちらでもないのはものすごく違和感がある。
2018/06/02(土) 14:41:06.71ID:EcvZfz1b
>>983
> パフォーマンスとIEとjQueryの動作を破壊してまでAを採用する理由がないならBにするのが妥当に見えるが
ちなみにこれは最初期からこの実装だった、という想定でいいのか?

ならW3Cは現行のブラウザの実装をそのまま仕様化しただけで、
当然google等が文句を言う筋はないが、
google自身はこの仕様が不味いと理解しているから賛成もせず黙っている、といったところか。

Aの場合はリソース確保/解放をenter/leaveで行い、処理をover/outで行うという、一番綺麗なソースになる。
ただしリソース確保については if (ptr==null) でoverのド頭でやってもいいから、
リソース解放のleaveが最後になっているBにしても問題はない。
だから「高速化」という名目でA->Bにすることはあり得る。
さすがにCまでやると、outの後にenterとなり、全く直感的ではなくなるので、
現行のソースが動かなくなる可能性もある。
(仕様化されていなくてもそれを想定して書いている奴はおり、結果的にそれらが動かなくなる)
だからそこまではやらなかった、というのも割と納得出来るストーリーだ。
で、Bが仕様化されてしまって、ちょ、待てよ、といったところか。

W3Cの連中はマジでコード書いてなさそうなので、googleがここら辺を説明しても通じないとは思う。
それで偉そうに言われたら、分裂するのもまあ納得出来る。
2018/06/02(土) 15:54:42.91ID:t3xHIzYO
>>989
>いちいち全部決まってるよ。
「書いてあるのだけ」決まってる。実際にはこの前後や間にMove、Layoutなんかが割り込まれる。
なお、イベントの実行順はC#では保証されない。(アクセサでイベント追加/削除を自由に定義できるため)

>stopPropergationでenterが止まる
すまん、再確認したら、拾い物のサンプルで使ってたライブラリが悪さしてたわ・・・

>最初期からこの実装だった
前そうだった気はするけど、さすがに古いバージョンを確認する気は起きん
Pointerイベントに向けて整理しただけかもしれない

ちなみに、Chromiumでは多分この報告で修正されてる。以前はそれなりに実装が異なったらしい。
https://bugs.chromium.org/p/chromium/issues/detail?id=470947

> 処理をover/outで行うという
それはレアケースな気がするが
2018/06/02(土) 19:15:14.71ID:EcvZfz1b
>>991
> なお、イベントの実行順はC#では保証されない。
マルチキャストデリゲートが登録順に実行される仕様なんだよ。
だからJavaScriptのノリでaddEventListenerしていく分には順番は保証されてる。

まあもうこれはいい。

> それはレアケースな気がするが
それはない。
mouseenterの項目見れば分かるが、それぞれが単発イベントになるから重いんだよ。
> With deep hierarchies, the amount of mouseenter events sent can be quite huge and cause significant performance problems.
> In such cases, it is better to listen for mouseover events.
> https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter
だから実行性能を取るのならover/outで組むべきで、実際そういうサイトも多い。
君にenter/leaveで組む積極的理由があるのならご自由に。
単にC#出身で知らなかっただけならover/outへの切り替えを検討した方がいい。
とはいえ単純な置き換えにはならないが。

> ちなみに、Chromiumでは多分この報告で修正されてる。
> Actual event order: mouseenter mouseover mouseleave mouseout
これは元はenter/leaveを作ってそれを伝播させる実装か。
境界跨ぎを厳密に計算して追跡出来ればこれの方が速いのかもしれん。
で、他に合わせて修正か。なるほどchromiumの連中は面白くないだろう。

これだと元凶はFFだな。以下見る限りIEもベースはバブル順だったらしいし。
> https://www.quirksmode.org/js/events_order.html
後方互換性については、逆に2015/05までのライブラリは全て問題なしだと言えるのだが、
この状況だと今更修正する感じはなさそうだな。
なら積極広報すればいいのに、とも思うが。
2018/06/02(土) 20:09:52.03ID:X90L1I+w
なんの根拠もないのにwhatwg domでググることすらしないで
>(しかしWHATWGはHTMLだけでDOMにはノータッチのようだが)
とか書いちゃうヤツだから、

自分が詳しくない分野に関する話ほどコイツの発言は無視した方がよいぞ
適当にはったりでっち上げてる可能性があるからなー
994デフォルトの名無しさん
垢版 |
2018/06/02(土) 20:35:54.76ID:X90L1I+w
>>985
>確認したが、EventOrderについては記載がない。
DOMにマウスイベントの発火順が載ってないのは当たり前だよ

>Abstract
>DOM defines a platform-neutral model for events, aborting activities, and node trees.

別に仕様書の細かいところまで読んで覚えなくてもいいけど、要旨ぐらい読んでよ、マジでマジで
995デフォルトの名無しさん
垢版 |
2018/06/03(日) 01:50:45.77ID:aiyBis5i
Google mapをちょっと大きめのディスプレーで開くと、メモリー使用がGB超えるんだよ。
これ何かおかしい方向に進んでるような。
2018/06/03(日) 16:20:59.52ID:FIkbW6E2
+ JavaScript の質問用スレッド vol.126 +
https://mevius.5ch.net/test/read.cgi/tech/1527917483/
2018/06/03(日) 16:21:20.67ID:FIkbW6E2
+ JavaScript の質問用スレッド vol.126 +
https://mevius.5ch.net/test/read.cgi/tech/1527917483/
2018/06/03(日) 16:21:51.09ID:FIkbW6E2
+ JavaScript の質問用スレッド vol.126 +
https://mevius.5ch.net/test/read.cgi/tech/1527917483/
2018/06/03(日) 16:22:07.58ID:FIkbW6E2
+ JavaScript の質問用スレッド vol.126 +
https://mevius.5ch.net/test/read.cgi/tech/1527917483/
2018/06/03(日) 16:22:24.10ID:FIkbW6E2
+ JavaScript の質問用スレッド vol.126 +
https://mevius.5ch.net/test/read.cgi/tech/1527917483/
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 104日 23時間 34分 23秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。