X



+ JavaScript の質問用スレッド vol.124 + [転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2015/03/22(日) 16:19:45.75ID:nW67tQ7U
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

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


+ JavaScript の質問用スレッド vol.123 +
http://peace.2ch.net/test/read.cgi/hp/1423915644/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
0003デフォルトの名無しさん
垢版 |
2015/03/22(日) 20:33:02.07ID:1wCihzEM
いちもつ
0004デフォルトの名無しさん
垢版 |
2015/03/24(火) 19:09:07.42ID:QjPcCXDL
ここは乗っとりたいという子が自演するスレだそうです

8 :Name_Not_Found:2015/03/22(日) 22:54:21.29 ID:???
>>7
ライブラリ禁止スレの次スレを乗っ取りたいからです。

9 :Name_Not_Found:2015/03/22(日) 23:09:36.52 ID:???
ついでにプログラム板も乗っ取りました。
0005デフォルトの名無しさん
垢版 |
2015/03/26(木) 20:09:55.85ID:xZ2N6kXB
>>1
多数の意見ってwww

匿名で何言ってんのこの馬鹿
0007デフォルトの名無しさん
垢版 |
2015/04/03(金) 09:58:58.17ID:3TYLs1en
jqueryでイベントを要素につけられた状態の時、
その要素からそのイベントハンドラを探し出す方法ってどうやるの?
0008デフォルトの名無しさん
垢版 |
2015/04/03(金) 13:04:41.65ID:JiHctTne
jQueryの質問は、
web制作管理板の以下のスレで、聞いて

jQuery ライブラリ 総合質問所 vol.4
ttp://peace.2ch.net/test/read.cgi/hp/1400313626/l50

+ JavaScript の質問用スレッド vol.121 +
ttp://peace.2ch.net/test/read.cgi/hp/1410603104/l50
0013デフォルトの名無しさん
垢版 |
2015/04/04(土) 23:11:10.83ID:gFSr8b2w
>>10
おお。どもです。助かります。
0016デフォルトの名無しさん
垢版 |
2015/04/06(月) 15:12:21.06ID:Ncf6BVzv
俺は CSV は Windows で JScript で ADO でやることに決めている。
これはつまりそこに適合しない物をまず適合するように微調整してから Windows 環境に投げるということを意味する。
0018デフォルトの名無しさん
垢版 |
2015/04/11(土) 01:17:32.92ID:jprZbhPv
>>17
JavaScriptの仕様的には入れても問題ない。
だが特殊なことでもない限りやめておけ。

jQueryやPrototypeは数くない例外だ
本当はやってはいけないことをやったが
それを大きく上回るメリットがあったから受けいれられた。
0019デフォルトの名無しさん
垢版 |
2015/04/11(土) 04:20:03.52ID:SRcv3XHB
prototypejsはPHP/Ruby畑の外人がまだJSに精通する前に書いちゃったからああなった。
その流行を横目に見ながら露骨にライバル心を示しつつcssQueryを発展させてjQueryは世に出た。
jQueryのメンバーはJSに精通していたからcssQueryに$なんて使っていなかったがprototypejsで一般化してしまった$を使ってユーザー取り込みを図り成功した。
0020デフォルトの名無しさん
垢版 |
2015/04/11(土) 11:27:12.18ID:jprZbhPv
prototype.jsは、その名の通りプロトタイプを拡張して
標準のオブジェクトに便利メソッドを追加するライブラリ

jQueryはCSSセレクタを使って取得したオブジェクトを
関数型的に処理するライブラリ

どちらも同じ$で要素を取得できるけど、
ぜんぜん違うライブラリなんだよな。
0021デフォルトの名無しさん
垢版 |
2015/04/11(土) 14:12:17.35ID:7I+CDN4A
ありがとうございます。
いろんなサイトのソースを見てるとあきらかにjQueryじゃないのに$を使ってて疑問に思い質問しました。
0022デフォルトの名無しさん
垢版 |
2015/04/11(土) 16:33:35.56ID:jprZbhPv
$を含んだ関数は少ないが$を使った変数ならある。
オライリーから出てる本の何かで
jQueryオブジェクトは、DOM要素と区別しやすように$という
プリフィックスを変数名につけるというやり方が紹介されていた。

$が含まれた関数を使っているものとしては他にprototypeがあるな。
$が含まれた変数だとAngularJSが$scopeとか使ってる。
Backboneにも$elがあるな。

jQueryじゃなくてもその他のライブラリか、
もしくは変数ではないか?
0026デフォルトの名無しさん
垢版 |
2015/04/12(日) 10:13:21.19ID:v6BfYYFV
&{...} を流用すればよかったのに敢えて ${...} を作った慇懃無礼さには苦笑させられた。中の人はやっぱりprototype.js以降のニワカたちを小馬鹿にしている。
0028デフォルトの名無しさん
垢版 |
2015/04/12(日) 15:08:57.03ID:4195b+YJ
だからといって少数派が良いってことにもならない。

どちらがいいかは確定しないが
確率的には多数派が良いことが多い。

ってわざわざ言わんとだめなの?
0030デフォルトの名無しさん
垢版 |
2015/04/12(日) 19:23:34.86ID:pMOjV96Q
>>28
良いか悪いかわからん判断材料は検討するだけ無駄と言うこと
「多数派の方が良いことが多い」や「それは少数派の意見」もあなたが無根拠に主張しているもので参考にならない
0031デフォルトの名無しさん
垢版 |
2015/04/12(日) 22:09:45.04ID:PnxXuVRG
>>30
何を言ってるのかわからん。
今から検討しろって話じゃない。

過去の人間が検討していいと判断して決めた結果だという話だ。
事実を言ってるだけだよ。

お前が過去の検討に参加してなくて知らないから
うんぬんかんぬんとかどうでもいいよ。
知らないなら口を挟まなくていい。
0033デフォルトの名無しさん
垢版 |
2015/04/14(火) 20:30:58.43ID:oXtat876
>>32
何のソース?
変数名に$をつけるのは昔はだめだったが、
新しい仕様では良くなったというソース?
0034デフォルトの名無しさん
垢版 |
2015/04/14(火) 21:00:24.90ID:Xiiro3Z7
>>33
アホか、それは>>24で既に出てるし、ツリー上でも一回も言及してないだろ
>>30で引用した「多数派の方が良いことが多い」と「それは少数派の意見」のソースだよ
0037デフォルトの名無しさん
垢版 |
2015/04/15(水) 07:39:23.48ID:XXGDvkA3
>>33
巷を見ればわかるでしょ。

PHPじゃあるまいし。変数名に$つけてるような奴のページは、一発で
閉じていいよ。
0040デフォルトの名無しさん
垢版 |
2015/04/20(月) 08:10:16.03ID:ZV6mzr+5
>>38
気持ち悪いっつーか、馬鹿そのものだな。
少なくともプロジェクトでそんなことやってる奴いたら、真っ先に外すわ。
0042デフォルトの名無しさん
垢版 |
2015/08/20(木) 10:19:02.54ID:AI+Bnl3O
Jquery AJAX についてのスレが無さそうだったので
ここで投稿させて頂きます。
違ってたら誘導お願いいたします。

WEBフォームでinput type="file" のタグ1つと実行ボタン1つだけのアップロード画面があり、
そこで選択された内容をアップロードする画面をご想像ください。

ただし、同名のファイルがある場合上書き確認のConfirmダイアログを出し、OKならば登録用のサーブレットを呼び出すようなことをしたいと思っております。

このとき、Jqueryで一旦確認用のサーブレット(とりあえずJAVAですが原語はPHPでもなんでもOK)にファイル名を$.AJAXを使用し、ファイル名をinputタグから取得しPOSTとして投げて戻り値に
存在するかどうかを返してもらってから実際の登録部分にSubmitしています。

このとき最初の確認用サーブレットでは問題がなく、その後の登録用サーブレットで ファイルが取得できなく困っています。
(直接登録用サーブレットを呼べば問題なく登録できることは確認済みです。)

ファイルが最初の確認サーブレットに投げられていて(画面全ての内容がPOSTされていると思われる)、登録用サーブレットに送られないのかなと思っております。
これを回避する方法として、最初の確認の際にセッション名なりでファイルを保存し、実登録の際にそのファイルを使えばいいとも思うのですが
スマートでないのと、実運用が始まってしまっているのであまり手を入れたくありません。

フォームを追加してそこだけ投げれるようなことはできないかと考えましたがそれも難しそうです。

もし、同じような事を解決されている方がいらっしゃいましたらヒントでも構いませんのでご教示いただければと思います。
(Jqueryにこだわる必要はなく、自分でXMLHttpRequest を作ればいけるだろ的なものまで なにでも構いません。)

宜しくお願い致します。
0043デフォルトの名無しさん
垢版 |
2015/08/20(木) 11:32:09.76ID:VSuX9QdW
最初のクリックでsubmitキャンセルしてないだけとか凡ミスじゃね
実際のコード見ないと何とも言えんが
0044デフォルトの名無しさん
垢版 |
2015/08/20(木) 12:56:42.20ID:nUlMI+yi
>>42
処理の流れだけ見ると静的フォームなので jQuery の介在する余地がありませんが、k^jQuery はどの処理を担当してるのでしょう?
form送信先の書き換え?手動のsubmitはせず、ajax()?
本番用とは別にテスト用フォーム、コードを書いて切り分けした方が良さそうですが。
ちなみに、ライブラリスレはこちらです。

JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/
0045デフォルトの名無しさん
垢版 |
2015/08/20(木) 13:51:38.33ID:AI+Bnl3O
>>43
 確認してみましたがtype=button でclickイベント捕まえて拾って自分でsubmitさせているので
凡ミスも含めてそこは問題ないようです。
 
>>44
ありがとうございます。
次回からそちらで質問することにします。

ひとまず自作でHttpXmlRequestオブジェクトのインスタンス化から行い、$ajax部分を置き換えると上手くいってしまいました。。。
逆になんか気持ち悪いのでちょっとJqueryのフルタイプを使用して、送信時にどんなことやってるか軽く探ってみることにしてみます。

スレ汚しすみませんでした。
0048uy ◆Qawu9.2l1E
垢版 |
2015/11/22(日) 02:28:27.45ID:+n9aAbt6
Dart「js吐くンゴww」
Type・CoffeeScript「ワイも吐くンゴwwワイらの時代ンゴww」
Opal「ヨロシクニキーwwwwwwwwwwwwwwwwwwwwwwwww」
Ruby「おっOpalゥー!!!!!!wwwwwwwwwwwwwwwwwwwwwwwww」
Dart・Type・CoffeeScript「」

JavaScript「(=・ω・=)キャーRubyさんステキ!!」
0051デフォルトの名無しさん
垢版 |
2016/03/15(火) 19:03:56.77ID:Ar6pzjDU
すいません、javascriptの文字列をRails側に渡したいのですがどうすればいいですか。
0053デフォルトの名無しさん
垢版 |
2016/03/15(火) 21:21:56.56ID:Ar6pzjDU
プログラム起動時ってなんのことですかTT
RoRでjavascriptと連携したいんですが。
0056デフォルトの名無しさん
垢版 |
2016/04/12(火) 17:23:46.41ID:MBVppC7j
JavaScriptで数字を
0.0
0.
10.0
などと書くのは文法的に間違いですか?
0
10
が正解ですか?
0059デフォルトの名無しさん
垢版 |
2016/04/12(火) 22:15:05.20ID:5vXA5zdQ
いや、君の質問も意味が判らん。
いずれかの処理系が文法エラーと言ってる?
0060デフォルトの名無しさん
垢版 |
2016/04/12(火) 22:20:28.23ID:MBVppC7j
>>59
javascriptの文法で正しいのか間違っているのかと言う質問のどこに不明な点が有りますか?
0062デフォルトの名無しさん
垢版 |
2016/04/13(水) 12:25:44.95ID:+MVeX0Dr
>>60
・どこかの処理系がエラーにしたのか?
・浮動小数点型が扱えるのにリテラルが書けないと思う理由は?
0063デフォルトの名無しさん
垢版 |
2016/04/13(水) 14:16:16.59ID:nq2ahLv0
特定の処理系の話ではない。
文法的に正しいかどうかという質問だぞ。
誰も分からないようだ。
0065デフォルトの名無しさん
垢版 |
2016/04/13(水) 18:37:49.66ID:+MVeX0Dr
>>63
質問の意図をはかりかねている。
何故
 0.0
 0.
 10.0
と書くのが文法的に間違いだと思ったのか。
小数点以下が0なら整数で書くという意図なのか?
自分が書いたコードの中で、こう書いた行でエラーでも出たのか?
0067デフォルトの名無しさん
垢版 |
2016/04/13(水) 22:19:10.72ID:+MVeX0Dr
そりゃ不思議だろ。
試してみりゃスグに判る、文法的に間違いとは思えない事を
疑問に思いつつ、なぜそう考えるのか意図を隠してるんだから。
0068デフォルトの名無しさん
垢版 |
2016/04/13(水) 23:05:51.57ID:4zzv2zOm
試せば一瞬で分かるようなことを質問をすること自体が不明
こいつは他の言語でも一々聞いて回ってるのか?
0070デフォルトの名無しさん
垢版 |
2016/04/13(水) 23:51:11.02ID:obtZo0BS
多分何もわからなくて困ってるだけだよ。
dotinstallって検索してみて
0071デフォルトの名無しさん
垢版 |
2016/04/14(木) 12:09:34.21ID:rJmmubWG
>>69
もはや質問ですらない。

勉強もしていないしするつもりもない馬鹿の戯言。回答する必要はない。
0072デフォルトの名無しさん
垢版 |
2016/04/15(金) 03:57:45.31ID:goHZ67UE
整数なら、0, 10 と書く。
浮動小数点なら、0.0, 10.0 と書く

まあ、整数で書けるなら、整数で書いた方が、わかりやすそう

JSの内部では、どちらも数値型で、整数で書いても、
浮動小数点に変換されるから、見た目だけの問題だが
0073デフォルトの名無しさん
垢版 |
2016/07/31(日) 11:42:53.41ID:Ik3c6uxO
質問です。

GetObject()メソッドで、オートメーションサーバーアプリケーションのオブジェクトを取得したい場合、
第2引数に、そのアプリケーションのクラスの文字列を指定すればいいということはわかったのですが、
肝心の「クラスの文字列」を知るには、どうすればいいのでしょうか?

具体的にやりたいことは、下記のサイトにある、
起動済みVisual Studio IDEにIDE外部からファイル名と行番号を指定してファイルをオープンさせる
というjava scriptを、Visual C# 2010 Express に対して使用したいと考えています。

スクリプトのコメントには、
Visual StudioおよびVisual Studio Expressの場合について、クラスの文字列が書かれているのですが、
Visual C# 2010 Expressの場合、これらの文字列ではオブジェクトを取得できませんでした。

試しに
"VCSExpress.DTE" ← VCSExpressはVisual C# 2010 Expressのexeファイル名
などとやってみたのですが、ダメでした。

制御したいアプリの、クラスの文字列は、どうすれば知ることができますか?
007473
垢版 |
2016/07/31(日) 11:52:23.16ID:Ik3c6uxO
すみません、WebサイトのURLを貼り忘れました。

サイトのURLを書いて再度投稿ようとしたのですが、
なぜか「NGワード」と言われて投稿できないようです。

「"Visual Studio IDEにIDE外部から"」でググってトップに出てくるサイトが、該当サイトです。
0075デフォルトの名無しさん
垢版 |
2016/07/31(日) 15:15:06.89ID:JTJLwIya
【閲覧注意】戦闘に巻き込まれて頭部を切断された少女の遺体。これがリアルなシリア。
http://dqnworld.com/archives/34.html
これが本当の戦争の恐怖。この少女には大人の戦争は関係ないですからね。巻き込まれた少女の遺体を持って何か
を訴えかけている男たちの映像です。

【閲覧注意】シリアで反体制派の兵士が顔を吹き飛ばされてしまう瞬間。
http://dqnworld.com/archives/89.html
スローモーションが怖すぎる・・・。

【閲覧注意】アッラーフアクバルを叫びながら少年を斬首する映像を公開する。
http://dqnworld.com/archives/3975.html
点滴?のようなものが見えるんだけど。助けられた少年じゃなかったのか。助けられた所を強奪されてアッラーフ
アクバル?なのかしら・・・。

【閲覧注意】磔にされた戦闘機パイロットの遺体。シリアにて。
http://dqnworld.com/archives/3996.html
今日のアッラーフアクバル動画。

【閲覧注意】この首吊り自殺、足スレスレだけど本当に死ねてる?
http://dqnworld.com/archives/4001.html
中国で撮影された首吊り自殺の映像です。既に死んでいると書いてあるけど自分で揺らしているようにみない?www

妻の目の前でぶっ飛ばされた旦那さん?これは死んだかな(°_°)
http://dqnworld.com/archives/4004.html
さすがにこれだけ飛ばされたら助からないかな・・・。

【閲覧注意】あおむけでゲロを吐きまくっている男性。助けてやれよ・・・。窒息するぞ(@_@;)
http://dqnworld.com/archives/4007.html
これ結構危ないんじゃないの?撮影してないで横向きにしてやれよ。これ窒息する可能性あるだろ。
0077デフォルトの名無しさん
垢版 |
2016/07/31(日) 18:51:03.01ID:BwQhep53
シリヤ
しりぃゃ

ぷぷぷー
0078デフォルトの名無しさん
垢版 |
2017/06/05(月) 17:51:29.40ID:JsHdDFEH
・devtoolsの cosoleでセレクタを指定してEnterした時に
 出て来る、「context」と「__proto__」ってどういった情報なの?
 中身の調べ方がよくわからない。

・jQueryの attrメソッドで、
<a href="">foo</a>
 <a href="">bar</a>
 <a href="" data-bazz="bazz">bazz</a>
に対して、

$('a').attr('data-bazz');
と指定しても "bazz" が取得できずに undifined が返ってくるのはどうして?
この指定は間違っているの?
0079デフォルトの名無しさん
垢版 |
2017/06/05(月) 22:34:43.28ID:hT8phHO4
>>78
attrはセレクタにマッチした最初の要素の属性を返すから。

ついでにいうと、data-bazzを取得するなら$('a').data('bazz')の方が良い。
こちらも同じく最初の要素の値を返すが。
0080デフォルトの名無しさん
垢版 |
2017/06/06(火) 05:36:12.23ID:Q6prYP2u
jQueryの質問は、web制作管理板の、jQueryのスレに書き込む方がいい

あっちの板の方が、人が多い
0082デフォルトの名無しさん
垢版 |
2017/06/07(水) 19:41:37.35ID:raeS6ONM
ライブラリのドキュメントに書かれている通りの
オブジェクトやメソッド呼び出したら undifinedだった場合、
みんなはどうしてるの?
devtool上の sourceにはファイルが認識されていて入るが調べ方がわからない。
0084デフォルトの名無しさん
垢版 |
2017/06/07(水) 21:40:57.76ID:smhEU+cH
JavascriptとPHPって併用するケースが少なくないから
自分が書いてるコードの言語を区別するって意味で
JavascriptではjQueryのセレクタ以外で$使わないのと
変数、関数のネーミング自体を
Javascript→functuonName(), variableName
PHP→functuon_name(), variable_name
みたいに区別する様なルール付け見たいな思想を持ってた方がいい
0085デフォルトの名無しさん
垢版 |
2017/06/07(水) 22:02:14.26ID:kUtim7jQ
>>84
そういう細かい話は
(有名な)コーディングスタイルを採用する
という行為に内包されてる。

考えるべきは、どのコーディングスタイルを採用するかであって
その最低条件として、そのスタイルであることをチェックするツールが
存在すべきこととしてあれば、ネーミングルールとか些細なこととして考える必要がなくなる
0086デフォルトの名無しさん
垢版 |
2017/06/08(木) 20:06:05.36ID:Qf2wUSm0
動作確認ってdevtoolと JSFiddleのどっちがいいんかね?
0089デフォルトの名無しさん
垢版 |
2017/06/10(土) 09:40:34.77ID:68/Y0PIZ
window.addEventlistener("load",function(){

の所で、TypeError: window.addEventlistener is not a function
と言うエラーです。

書き方が違うのかも知れません
0091デフォルトの名無しさん
垢版 |
2017/06/10(土) 14:50:55.49ID:68/Y0PIZ
環境によりwebGL自体が使えないかも知れません
タイプミスが多いです。調べてみます。

ありがとうございました
0092デフォルトの名無しさん
垢版 |
2017/06/10(土) 23:31:32.86ID:pLUZQjiK
var a = [ "a", "i", "u", "e", "o", "k", "s" ];
という配列があって、
例えば
var b = a[ 5 ] + a[ 2 ] + a[ 6 ] + a[ 2 ] + a[ 5 ] + a[ 4 ];
とするのと同じ結果を得たいのですが、

var b = a.hoge(5, 2, 6, 2, 5, 4).join("");

var b = hoge(a, 5, 2, 6, 2, 5, 4).join("");

var b = hoge(a, [ 5, 2, 6, 2, 5, 4 ]).join("");
みたいな感じに短くかけたりしますか?標準関数?を使って
0093デフォルトの名無しさん
垢版 |
2017/06/10(土) 23:47:05.80ID:ZRXNskxD
>>92
[5,2,6,2,6,5,4].map(aIndex => a[aIndex]).join("");
0094デフォルトの名無しさん
垢版 |
2017/06/10(土) 23:47:27.24ID:TJyr+hnH
>>92
今回はlodashを使うまでもないな。残念。

var a = [ "a", "i", "u", "e", "o", "k", "s" ];
var b = [5, 2, 6, 2, 5, 4].map(function(i){ return a[i] }).join('');

これでできるよ。

最近のブラウザだけとかbabel、typescriptを使うのであれば、以下のようにもっと短く書ける

var b = [5, 2, 6, 2, 5, 4].map(i => a[i]).join('');
0096デフォルトの名無しさん
垢版 |
2017/06/11(日) 13:46:05.02ID:QGjh7z3B
アンスコJS使えよ
0097デフォルトの名無しさん
垢版 |
2017/06/13(火) 23:29:09.86ID:LBkAuNWW
このためだけにアンスコを使うということはありえないと思う
既にアンスコが導入されている場合であれば当然使うべきだと思う
何も前提の無い単発の質問では備考程度に遠慮すべきだと思う
0098デフォルトの名無しさん
垢版 |
2017/06/14(水) 01:03:55.89ID:pO0H9gtO
webでの動画閲覧環境を作っているのですが、
今動画を選択するたびにサーバにリクエストしてswfを毎回ロードしています。
swfオブジェクトをJavaScript側にロードさせておきたいのですが、swfオブジェクトは3つあります。
動画形式Aを再生するplayerA.swfと動画形式Bを再生するplayerB.swfと、
動画形式Cを再生するplayerA.swfのプラグインであるplayerC.swfです。
AとBは単純にswfを呼び出すだけなのですが、CはAに引数としてswfのpathを渡さないといけません。
ソースにすると、
<object data="playerA.swf">
<param name="FlashVars"plugin=playerC.swf">
</object>
こういう感じです。
playerCのバイナリをメモリにロードさせて、playerCという識別子を与えて、
js://playerCみたいにして呼び出したりする仕組みがあったりしませんか?
0099デフォルトの名無しさん
垢版 |
2017/06/14(水) 11:51:09.40ID:cht2PpgI
BlobURLがあるが、Flash側で受け付けてくれるかは分からんし、そんなことしなくても普通はキャッシュが効く
問題になるはずのないことが問題になっているのなら、何かが根本的におかしい
0100デフォルトの名無しさん
垢版 |
2017/06/14(水) 12:05:55.97ID:pO0H9gtO
>>99
なるほど、ありがとうございます。
ようは304を返せばいいということですね。
簡単なwebサーバでいいので自前で実装していました。
適当に200返してたのが問題だったというわけですね。
0101デフォルトの名無しさん
垢版 |
2017/06/15(木) 20:07:26.70ID:ZfWiPaVQ
var aaa = {bbb:{ccc: null}};
function foo(objname) {
 let objname = eval(obj);
 let newvar = .........
 return newvar;
}
eval("aaa.bbb.ccc="+foo("aaa.bbb.ccc"));

こういうコードでevalを使わないやり方は可能でしょうか?
単にaaa.bbb.ccc = newvar;
でいいじゃないかと思うかもしれませんが、
実際は変更したいオブジェクトを列挙してforで同じ関数(foo)を使って変更します
0102101
垢版 |
2017/06/15(木) 20:20:50.53ID:ZfWiPaVQ
function foo(objname)のところ訂正です

let objname = eval(obj);

let obj = eval(objname);
0103デフォルトの名無しさん
垢版 |
2017/06/15(木) 21:25:31.60ID:rHqMsizD
function getValue(obj, objname){
return objname.split(".").reduce((o,p)=>o[p],obj);
}
obj = getValue("bbb.ccc", aaa);

実際にはnullチェックとか必要かもしれんが
0107デフォルトの名無しさん
垢版 |
2017/06/25(日) 10:27:56.52ID:qM6DTshc
質問させて下さい
webアプリを作ってるんですが、なぜかiOSだけがセレクトボックスを選択直後にフリーズします。
エラーが出るのは以下のコードになります。
エラー回避策はエラー用の変数を作ってfor文の後でアラート表示させるようにしました。
これはiOSの仕様なのかコードの問題なのかどちらなのでしょうか?
ちなみにMac、Windows、アンドロイドは問題ありませんでした。


function selboxOnchange(){
var sel = document.getElementsByClassName('selelements');
for(var I = 0;i < sel.length;i++){
if(sel[I].selectedIndex == hoge[I].selectedIndex)
{
alert("コメント");
}
}
};
0108107
垢版 |
2017/06/25(日) 10:29:12.22ID:qM6DTshc
すみません。
一部、"i"が大文字になっていますが全て小文字です^^;
0110デフォルトの名無しさん
垢版 |
2017/06/28(水) 10:06:12.99ID:+O8L6XqQ
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
0111デフォルトの名無しさん
垢版 |
2017/06/28(水) 10:06:47.78ID:+O8L6XqQ
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する

Railsはマイナー、メジャーのアップデートが半年以内に必ずある

客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく

気づいてから1年以内に通知すれば、5年間無料保証ゲット

つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな

376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378>>379>>375
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
0113デフォルトの名無しさん
垢版 |
2017/06/29(木) 04:37:42.46ID:iEm4e1Xa
質問です。次のコードはエラーになります。
var hoge=1;
if(true){
let hoge=2;
if(true){
let hoge=hoge;//エラーになる
console.log(hoge);//2が出力されて欲しい
}
}
グローバルでない、参照できる位置関係にある、同じ名前の変数を
参照することは可能ですか。どんな方法がありますか。
0114デフォルトの名無しさん
垢版 |
2017/06/29(木) 04:50:52.34ID:SZfALoS9
不可能です。そんなコードを書かないでください。
そしてlintツールを使ってください
そのようなコードを書いたら警告が出るようにできます。
0115デフォルトの名無しさん
垢版 |
2017/06/29(木) 06:29:52.69ID:xsuY0QwQ
基本的には不可能
ブロックを抜けたときにもとに戻したいのなら
入ったときにtmp変数にでも保存して出るときに書き戻すとかはできるよ
0116113
垢版 |
2017/06/29(木) 06:59:55.73ID:iEm4e1Xa
>>114-115
ありがとうございました。
0117デフォルトの名無しさん
垢版 |
2017/08/16(水) 23:44:42.21ID:B52P9TPV
ajaxでcors対応されていない他サイトのHTML取得したいんだけど、
jsonpで取得してもHTMLで返ってくるから
「Uncaught SyntaxError: Unexpected token <」
ってなるんだけど、回避方法って何があるの?
どなたか教えてください
0118デフォルトの名無しさん
垢版 |
2017/08/17(木) 08:41:36.11ID:XHT+AQOf
オフラインのローカルのみのjavascriptだけでは、
txt,tsv,csv,jsファイル等の読み込みは出来るようですが?
更新、書換え、上書き、書出しは出来ないのでしょうか?
0119デフォルトの名無しさん
垢版 |
2017/08/17(木) 12:28:20.03ID:Q7A+EFnW
>>117
jQuery の設定項目を参照。色々できる

$.ajaxSetup({ // 全体の設定
data: {format: 'xml'},
timeout: 60 * 1000
});

jQuery で、Yahoo Query Language (YQL)を使って、
他のサイトにアクセスする方法もある

この板にはあまり人がいないから、web制作管理板で聞いて

>>118
Local Storage, Node.js, Electron とか?

この板にはあまり人がいないから、web制作管理板・WEBプログラミング板で聞いて
0120デフォルトの名無しさん
垢版 |
2017/08/18(金) 07:13:33.61ID:r9Ad8ntQ
ふだんExcelのVBA使いでこれならかなり本格的なこともできるスキルがあります。
でもWebに興味が出てきたのでJavascriptをメモ帳ではじめました。

不便なのはExcelVBAのような
・コード書くときのインテリセンスでの入力補助
・ブレークポイントを使ってF8のコマ送り
・F8のコマ送りのときに変数の値を見る
ことなどなど、メモ帳だから当然そんなのできません。

Javascriptの入門書はいつくか読んでますがそんな便利なことができる開発環境のことには全くふれていません。
Javascriptやってる人は開発ツールは何を使ってますか?
その使用率みたいな円グラフみたいなのもないでしょうか?
0121デフォルトの名無しさん
垢版 |
2017/08/18(金) 07:19:31.99ID:WJ2Inw/Y
>>120
vs.code で開発して chrome で確認の組み合わせが最強だよ
やりたいことはそれで全て可能だと思う

最近作ったゲーム
https://hasemonmon.net/df5/

オールJavascriptだよ
これからはJavaScriptの時代だから勉強しといて損は無いと思う
0122デフォルトの名無しさん
垢版 |
2017/08/18(金) 08:38:59.20ID:MkY1nhvU
IE11, Edge でも、F12 を押すと、「F12 開発者ツール」が起動する。
ブラウザで右クリックして「要素の検査」でも、起動する

F12 開発者ツールの使い方を参照

コンソール画面の下に、ソースコードを書いて、
「Ctrl + Enter」で実行できる
0123デフォルトの名無しさん
垢版 |
2017/08/18(金) 09:39:41.35ID:r9Ad8ntQ
>>121-122
ありがとうございます。研究してみます。
0124デフォルトの名無しさん
垢版 |
2017/08/22(火) 22:08:26.05ID:oX6Q/c4t
特定の文字({}等)で囲まれた部分 以外 の文字列を処理したい。replaceと正規表現で頑張ったのだけど、囲まれた部分まで文字列処理が行われてしまう。
どうしたら良いでしょうか?
0126デフォルトの名無しさん
垢版 |
2017/08/23(水) 05:26:51.23ID:3TTPCtU/
'abc{12{3}} abc{}'.replace(/([^{}]+?)({.*?})/g, '[$1]$2') //-> "[abc]{12{3}}[ abc]{}"
あとは後ろを関数にしてうまく行きそうです。ちょっとやってみます。
ありがとう
0127デフォルトの名無しさん
垢版 |
2017/08/23(水) 21:31:19.08ID:3TTPCtU/
'abc{123}abc{123}abc'.replace(/(.+?)({.+?})/g, '[$1]$2') //-> "[abc]{123}[abc]{123}abc"
'abc123abc123abc'.replace(/(.+?)({.+?})/g, "[$1]$2") //-> "abc123abc123abc"

めっちゃ漏れるぅ
0128デフォルトの名無しさん
垢版 |
2017/08/23(水) 22:26:45.25ID:ztktxeFn
"{123}abc{{abc".replace(/(\{.*?})|(.+?(?=\{.*?})|.+)/g, (不特定, 特定, 非特定) => 特定 || `<${非特定}>`);
改行を跨ぐなら.を[\s\S]に
0129デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:10:27.75ID:xgssE3PG
正規表現は奥が深いですね……。これで入れ子でないキャプチャができるようになりました。
ありがとうございます。
入れ子はさすがに再帰しないと無理みたいですね。やってみます。
0130デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:29:44.67ID:LiUup8WI
>>129
PEG.jsを使うって手もある。そっちの方が簡単かも。
あんまり正規表現で頑張っても可読性下がるしね
0131デフォルトの名無しさん
垢版 |
2017/08/29(火) 00:56:58.36ID:87zhIwVV
//ボールクラス
var Ball = function() {
this.x = 0;//X座標
this.dx = 0;//X方向の速度
this.y = 0;//Y座標
this.dy = 0;//Y方向の速度
}

// 移動後の座標を求めて、呼び出し元のoldPosの値を更新したい
Ball.prototype.move = function(position, move) {
position += move;
}

var ball = new Ball();
ball.move(this.x, this.dx);//X方向の移動
ball.move(this.y, this.dy);//Y方向の移動

こんな感じで、クラスのメンバ変数の組を入力引数に
特定処理(この例ではmove)をして、その結果でメンバ変数の値を更新しようと思っています。
が、上記のmoveメソッドだとpositionが値渡しなのでBallのx, y, zは更新されません。

プリミティブ型でなくオブジェクト型をmoveに渡せばいいかな、と思って
Ball.prototype.move = function(positionAndMove) {
positionAndMove.positon += positionAndMove.move;
}
ball.move({position:this.x, move:this.dx});//X方向の移動
こんな感じで改造してみました…が、moveに渡した無名オブジェクトのpositionは
更新されているようですが、その元ネタのBallのthis.xは更新されません。
(無名オブジェクトを作る際に、this.xはただの値渡しであって
「無名オブジェクトのposition」とのつながりは無い?)

this.xを複数回書かずに済む、なにかスマートな方法は無いでしょうか?
0133131
垢版 |
2017/08/29(火) 07:35:23.49ID:87zhIwVV
上記Ballが複数あって、それぞれが自分の座標をメンバ変数として
持ってるイメージなんですが、設計上変なのですか?
0134デフォルトの名無しさん
垢版 |
2017/08/29(火) 10:22:05.85ID:s3JZZVoh
Ball.prototype.move = function() {
this.x += this.dx;
this.y += this.dy;
}
ball.move();//移動

普通はこうする
0136デフォルトの名無しさん
垢版 |
2017/08/29(火) 10:45:59.23ID:+5r2zOXc
たとえば select にonchange つけたとき
selectで何が選ばれたか はイベントオブジェクトに入っていない?
0137デフォルトの名無しさん
垢版 |
2017/08/29(火) 11:48:45.92ID:sgTDSrY2
>>133
>ball.move(this.x, this.dx);//X方向の移動
>ball.move(this.y, this.dy);//Y方向の移動
上記のコードのthisはballを指してない。実体はwindowだからundeifnedが入ってると思われる。

だからあえて踏襲するなら
ball.move(ball.x, ball.dx);//X方向の移動
ってことになる。
thisがそれぞれの文脈でどこを示しているかは勉強しなきゃいけないけど
thisがballのインスタンスになるのは今回はmoveの実装内だけ。
0138デフォルトの名無しさん
垢版 |
2017/08/29(火) 12:54:23.72ID:M5SL5GoR
ゲームエンジンの、Cocos2d-x(JS版)では、
cc.Sprite(画像クラス)は、cc.Node から、派生しているけど、
cc.Node のメソッドも使える

getPosition(), getPositionX(), getPositionY(),
setPosition(newPosOrxValue, yValue), setPositionX(x), setPositionY(y)

getPosition()の戻り値は、cc.Point。
setPosition の引数は、(x, y)か、cc.Point(_x, _y)

this.setPosition(this.getPosition().x + 10, this.getPosition().y)

JavaScript版Cocos2d-x かんたんゲーム開発、2015
原題:Learning Cocos2d-JS Game Development
Emanuele Feronato 著
http://www.emanueleferonato.com/

著者のサイトでは、Phaser の作品が多い

Phaser(フェイザー)は、Pixi.jsをコアにして、
サウンドとか衝突判定とか物理演算を追加した2Dゲーム開発フレームワーク。
マルチプラットフォームで、オープンソース(MITライセンス)
0139131
垢版 |
2017/08/29(火) 20:54:57.78ID:87zhIwVV
皆様ありがとうございます。
結局、
var Ball = function() {
this.x = 0;//X座標
this.dx = 0;//X方向の速度
this.y = 0;//Y座標
this.dy = 0;//Y方向の速度
}を
var Ball = function() {
this.xParam = {position: 0, move: 0};//X座標(現在値、速度)
this.yParam = {position: 0, move: 0};//Y座標(現在値、速度)
}
と、各変数をオブジェクトに格納するよう変えて
Ball.prototype.move = function(positionAndMove) {
positionAndMove.positon += positionAndMove.move;
}
ball.move(ball.xParam);//X方向の移動
ball.move(ball.yParam);//Y方向の移動
のような感じでmoveを使用することで解決しました。
0140131
垢版 |
2017/08/29(火) 21:07:56.73ID:87zhIwVV
>>134
サンプルくらい単純ならそうしたのですが、実際の処理はボール移動ではなくもっと複雑です。
x, y…に該当する概念が7個くらいあり、
moveメソッドで見る変数も各々5種類くらいあります。
なので、そのやり方だと感覚的には
Ball.prototype.move = function() {
this.x += Math.min(this.constX * this.dx , this.minX) + this.adjustX…;
this.y += Math.min(this.constY * this.dx , this.minY) + this.adjustY…;
(以下5行以上コピペして一部だけ書き直し)
}
みたいなコードになってしまいます。
>>135
たしかに、class構文を使った決めた方が保守性がよくなりそうですね。
>>136
すみません、即席サンプルの単純ミスです。
>>138
誤解与えてすみません。「ボール移動」はただの単純化説明用サンプルです。
実際のコードでやっていることは全く関係ないです。
0141デフォルトの名無しさん
垢版 |
2017/08/30(水) 06:20:41.18ID:CwX8twwO
プログラミングしていくうちに、
Unity, UE4, Cocos2d-x(JS版), Godot などの、
ゲームエンジンへ移行していくはず

日本人の開発者は、jsdo.it でも作っている。
他人のソースコードも見れる
0142デフォルトの名無しさん
垢版 |
2017/08/30(水) 19:39:07.01ID:ewso/TS4
エロ画像ブログ巡回してると画像の下に
「二次元画像詳細検索 Google画像検索」
とあって画像の詳細を知らんべることができる
これはJavaScriptで作られているようだが、詳細がよく解らない
どういった感じで作られているのでしょう?
0144デフォルトの名無しさん
垢版 |
2017/08/31(木) 17:02:29.19ID:wDdLgKjd
高騰中の仮想通貨Liskがこれで作れるらしいんだが、詳細教えて
0145デフォルトの名無しさん
垢版 |
2017/09/02(土) 13:56:45.51ID:JUCPFkwW
JavaScript の勉強を始たばかりです。
言語のリファレンスになる本を探しているのですが、ないでしょうか?
いくつか買ってみたのですが、ブラウザオブジェクトの使い方ばかり書いてあります。(まあ仕方ないですが)

with文って何?とか、名前空間どうなってるのとか。昨日知ったのですが、セミコロンの自動挿入とか。そんなのが分かると嬉しいです。
よろしくお願いします。
0148デフォルトの名無しさん
垢版 |
2017/09/02(土) 18:52:24.90ID:KtcnwiAx
>>146-147
ありがとう。
ちなみにサイは買った。蝶は見て見るわ。

ECMA Script の仕様書が分かりやすいかも。
JS やってる人はどうしてるの?細かい仕様とか気にならないのかな。
0149デフォルトの名無しさん
垢版 |
2017/09/03(日) 12:00:03.28ID:xFesh8nH
mdn以上に正確に書かれている書籍はない
あるなら教えてくれ

ECMS scriptの仕様書は実装者向けで難解だ
mdnで曖昧な時に頑張って読む
0150デフォルトの名無しさん
垢版 |
2017/09/03(日) 12:01:25.10ID:DIhXI1rF
JavaScriptは仕様以外の部分が多いので
仕様だけをみても使い物にならんからな。

例えばブラウザの機能はすべてJavaScriptの仕様の範囲外だ
0151デフォルトの名無しさん
垢版 |
2017/09/03(日) 13:05:04.70ID:uToqw/FJ
関数呼び出しで戻り値を受け取らなければ
その関数は今呼んだ関数が終わってから実行されるんですか?
0153デフォルトの名無しさん
垢版 |
2017/09/03(日) 14:50:30.58ID:xFesh8nH
>>150
アホか?
どんな言語だって、開発対象への知識が必要なのは変わらない javascriptが特別なわけじゃない
0156デフォルトの名無しさん
垢版 |
2017/09/03(日) 17:39:25.34ID:xFesh8nH
> 仕様だけを見ても使い物にはならないと言ってる
そうは言っとらん

> JavaScriptは仕様以外の部分が多いので
> 仕様だけをみても使い物にならんからな。
javascriptが特殊だと言っている
0158デフォルトの名無しさん
垢版 |
2017/09/04(月) 09:16:19.32ID:WrS0lJ8W
うむ、助詞は日本語ネイティヴ以外には難しいと言い訳はできるな

「javascriptも」のつもりで「javascriptは」と書いてしまった
朝鮮人ならありえる
0159デフォルトの名無しさん
垢版 |
2017/09/04(月) 23:45:53.39ID:ERq8KL0N
違うぞ。
指摘されても認めてないだろ。本質的に分かってないんだよ。
間違ったんじゃない。間違っていることを認識出来てないんだ。

そして在日韓国人は「日本語が下手糞なこと」を絶対に認めない。
なぜならそれは彼等の存在意義に関わるかららしい。
(日本語が上手いというのが唯一本国韓国人に対するアピールポイントらしい)
だが実際はここで見れば分かるとおり、日本語も韓国語も駄目駄目だ。
だから彼等はまともな(厳密な)議論をしたことがない、というか成立しない。
つまり彼等は議論が出来ない、というか、
彼等内で行われている議論は全く正確さ/厳密さを欠いている物でしかない。
そして彼等はそれで議論が出来ていると勘違いしている。声闘の文化もあるしね。

これが本質的な問題で、いわゆる日本人の議論下手とは全く異なる方向なんだ。
日本人のは単に場慣れしてない、
或いは色々面倒になることを避けて意見を言わない、またはオブラートに包む、
みたいな感じだが、こちらが言ったことは確実に通じていて、
下手すれば助詞の一つで揚げ足を取られたり、いきなりブチ切れられたりする。
これなら放置しておいても場数を詰めば上達するし、
2chに来ている連中はそこそこ出来る奴が多いのも事実だ。

韓国人のは本気で通じてないんだよ。その知能がないんだ。
だから厳密な/正確な議論が出来る人達にとっては邪魔でしかない。
ところが彼等はそれで出来ていると勘違いしている。
というかそれ以上の厳密さで議論する場に参加したことがないから、
そういうまともな議論が出来る(存在する)ことを知らないんだよ。
だから自分たちのレベルが低いことを認識出来ない。
当然ここと同じ事を彼等が得意な(つもりの)韓国語でもやっているはずだし、
同様に本国韓国人にも嫌われるのは自然な成り行きだ。
もちろん他の理由も多々あるにしてもね。

韓国人死ね
0160デフォルトの名無しさん
垢版 |
2017/09/04(月) 23:46:16.66ID:ERq8KL0N
しかしこれは本当に本質的な問題で、ここでプチ日本語講座をやったところで解決しない。
馬鹿が馬鹿であることを自覚出来ないってのは常だからね。
短期的な解決法はとにかく韓国人というか
「議論が成立するレベルの日本語が使えない奴」を排除していくことだ。
これについては俺は何度も「お前ら自身が損をするから発言を慎め」と言ってきたが彼等は聞かない。
(まあ彼等は上手いつもりだからそうなるのも自然ではあるのだが)
だからどうにもならないよ。

レベルの低い奴が混ざるだけで迷惑だ、ということを彼等は認識出来てない。
そして彼等(というか在日韓国人コミュニティ)はこの理由で
「正統に排除」されるのを差別だといってゴネてきた連中だ。
東大が入試で馬鹿を「正統に排除」するのは区別であり、差別ではない。
同様に、2chで2chに不十分な日本語の奴を排除するのも区別でしかない。
彼等にはこれを理解する知能すらないんだ。
マジで彼等は腐っているし、本国韓国人からもゴミ扱いされて当然だ。

マジで韓国人は死ね

一朝一夕には解決しない。話しても通じない。
となると、「在日韓国人はいるだけで迷惑だ」ということを地道に彼等に教えてやるしかない。
在日韓国人が全員自殺してくれるのが一番助かるんだが。

なんつーか、彼等は迷惑行為を行っているのだが、その自覚がないんだよ。
そりゃ今後とも在日韓国人は死ねと言われ続けるだろうし、至極当然の成り行きでしかないのだが、
彼等はそれを差別だといってゴネるだろうし、
それに対して余計にブチ切れる奴もでるだろうしで、悪循環だね。

在日韓国人が全員自殺してこの悪循環を断ち切ることを切に願う。
つか、ゴキブリは半島に帰れマジで。
0164デフォルトの名無しさん
垢版 |
2017/09/05(火) 23:21:08.39ID:aMThYtmb
俺は韓国人について詳しいのではなく、単純に状況を分析出来るだけだけどな。
匿名掲示板では不思議なことは起こらない、俺はこの点が気に入っている。
在日韓国人が本国でも嫌われているのは、在日韓国人自体がマジで糞だからだよ。
あらゆる点でね。ここに挙げたのも一つ。

C#のスレでも暴れてるだろ。
http://mevius.2ch.net/test/read.cgi/tech/1492843013/783

だが他の連中が呆れている。理由は、
1) そもそも日本人なら脳内補完されてしまう(気づかないかも、程度の誤字)
2) C#userなら当然何のことを言っているのか分かる
だからそこをあげつらうのはなんの為?って感じになってる。
ところが当の本人は本気で分かってなくて、煽って答えを出させようとしている。
マジで糞だろ。死ねでしかない。

在日韓国人みたいな馬鹿はいるだけで迷惑だ。
だから彼等が嫌われるのは当然であり、これは区別であり、差別ではない。
ということを周知徹底し、韓国人を無視するようにしていかないといけない。
つーか、そうしないと議論が進まない。

韓国人死ね

つっても結局は非韓三原則、これが一番分かりやすいのだが。

韓国人に対しては、
助けない、教えない、関わらない

しっかりと韓国人がクズであることを指摘しつつ、(攻撃されたら反論)
後は放置して勝手に死ぬのを待て、ってことだね。(助けない、教えない、関わらない)
韓国人に対してエネルギーを使うこと自体が勿体ない。
0165デフォルトの名無しさん
垢版 |
2017/09/20(水) 21:50:19.54ID:ZyDsW00i
文字数制限の為、二回に分けて書き込ませていただきます。
各テーブルの背景色を条件に処理を分けたいと思い、いろいろと試していますが上手くいきません。
テスト用に書いたもので、背景色(#000000または#ffffff)ごとに合計値をresuleBまたはresultWに合計していきたいのですが、
背景色の取得がうまくいっていないようです。
今後別の処理を記述するため、できれば背景色をキーに分岐を行いたいと思っています。
解決の為、アドバイスをいただければと思います。
よろしくお願いいたします。
0166>>165
垢版 |
2017/09/20(水) 22:01:50.45ID:ZyDsW00i
>>165
NGワードに引っかかってしまいコードが書き込めないのでまた、後ほど書き込ませていただきます。
0167>>165
垢版 |
2017/09/20(水) 22:33:57.96ID:ZyDsW00i
function testForm(){
var table = document.getElementsByName("table");
var sumB = 0;
var sumW = 0;
for(i = 0 ; i <= 1 ; i++){
var line = table[i].parentNode;
var result = getComputedStyle(line,'');
if(result.background == "#000000"){sumB = sumB + parseInt(table[i].value);
}else{sumW = sumW + parseInt(table[i].value);}
}
var B = document.getElementById("resultB");
var W = document.getElementById("resultW");
B.innerHTML = sumB;W.innerHTML = sumW;
}

<table border="1">
<tr id = "line1" style="background-color:#000000">
<td><input type="text" name="table" value="0" onBlur=testForm()></td></tr>
<tr id = "line2" style="background-color:#ffffff">
<td><input type="text" name="table" value="0" onBlur=testForm()></td></tr>
</table>
<table border="1" style="width:30px;">
<tr id = "resultLine">
<td id = "resultB"></td>
<td id = "resultW"></td>
</tr>
</table>
</form>お願いいたします。
0168デフォルトの名無しさん
垢版 |
2017/09/20(水) 23:57:51.37ID:VZIyuCp2
>>165
まず背景色をキーにするのはダメ
なぜなら色をどうするかはCSSの仕事だから。
背景色の代わりにクラスを使う

document.getElementsByNameで table を取ってくるのが意味不明
この場合だと tr だろう?

ループの終了判定が1固定なのがだめ。trの数にするべき
0169デフォルトの名無しさん
垢版 |
2017/09/20(水) 23:59:37.05ID:VZIyuCp2
訂正。読み間違えた。ここはとりあえずOK。とりあえずだが

> document.getElementsByNameで table を取ってくるのが意味不明
> この場合だと tr だろう?
0170デフォルトの名無しさん
垢版 |
2017/09/21(木) 00:21:05.95ID:ZVbKGIwn
id = "line1" とか id を付ける理由がわからん。
サンプルコードなら余計なものは消すべし

tableは複数変えてくるのであれば、
tablesとかいう変数にする。
が、そもそも変数名が適切じゃない。
とりあえずfield(fields)に解明する

.parentNodeじゃなくて、.parentNode.parentNode

でここまでは序の口
0171デフォルトの名無しさん
垢版 |
2017/09/21(木) 01:12:09.67ID:ZVbKGIwn
ここまでの途中結果
https://jsfiddle.net/52qcoLt7/3/

resultB と resultW の2つを一つのループで計算してるから
処理がわかりづらくなってる。
別々に計算する。そのための関数を作る
https://jsfiddle.net/52qcoLt7/4/

細か不要なところを削る
https://jsfiddle.net/52qcoLt7/5/

これ以上短くするにはjQueryがないと逆に面倒なのでjQuery化
https://jsfiddle.net/52qcoLt7/6/

sum関数を使って少しわかりやすくする
https://jsfiddle.net/52qcoLt7/7/

sum関数などというものを自分で作るよりlodash使ったほうがいいや
https://jsfiddle.net/52qcoLt7/8/

ES6のアロー関数を使う
https://jsfiddle.net/52qcoLt7/9/

もう関数の中にまとめちゃえ
https://jsfiddle.net/52qcoLt7/10/

見づらくなったので修正
https://jsfiddle.net/52qcoLt7/11/
0172デフォルトの名無しさん
垢版 |
2017/09/21(木) 01:16:29.67ID:ZVbKGIwn
修正後
$(document).on('blur', '[name="input"]', function() {
 const toInt = el => parseInt(el.value);
 const getValues = selector => $(selector).find('[name="input"]').get().map(toInt);
 $('#resultB').text(_.sum(getValues('.classB')));
 $('#resultW').text(_.sum(getValues('.classW')));
});

<table border="1">
 <tr class="classB">
  <td><input type="text" name="input" value="0"></td>
 </tr>
 <tr class="classW">
  <td><input type="text" name="input" value="0"></td>
 </tr>
</table>
<table id="result" border="1">
 <tr>
  <td id="resultB"></td>
  <td id="resultW"></td>
 </tr>
</table>

.classB {
background-color: #000000;
}
.classW {
background-color: #ffffff;
}
#result {
width: 30px;
}
0173>>165
垢版 |
2017/09/21(木) 21:43:40.32ID:+hyTnlbF
>>168
ご回答ありがとうございます。
無事解決しました!

結果vbaで作り直すことになりましたが……
今回のことも一つの経験として、次につなげたいと思います。
0174デフォルトの名無しさん
垢版 |
2017/09/26(火) 17:15:57.30ID:UanF2VW9
・「DOM要素」「JavaScriptオブジェクト」
 「文字列」ってどういうふうに認識を分ければいいですか、
・どういうときに、「DOM要素」をいじり、
・どういううときに「JavaScriptオブジェクト」で処理し
・どういうときに「文字列」として扱うべきなのか教えてください。
0175デフォルトの名無しさん
垢版 |
2017/09/26(火) 17:18:46.94ID:UanF2VW9
・具体例

> $0
<div class=​"guide">
​<a 略> </a>​"
|"<a 略> </a>​"
|"<a 略> </a>​"
|"<a </a>​
</div>​

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

> dir($0)
VM22805:1 div.guide
accessKey: ""
align: ""
assignedSlot: nullattributes:
NamedNodeMap {0: class, length: 1}
baseURI: "https://www.2ch.net/";childElementCount: 4
childNodes: (9) [text, a, text, a, text, a, text, a, text]
....

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

> $0.innerHTML
"
​<a 略> </a>​"
|"<a 略> </a>​"
|"<a 略> </a>​"
|"<a </a>​
"
0176デフォルトの名無しさん
垢版 |
2017/09/27(水) 12:23:59.68ID:p2MS+Nsv
山田祥寛(よしひろ)、翔泳社
10日でおぼえる jQuery 入門教室 第2版

この本を読め
0177デフォルトの名無しさん
垢版 |
2017/10/04(水) 18:54:10.62ID:QAubw1tX
http://www.myu.ac.jp/~akizuki/sct/js/picture/pc_size.htmlみたいに
入力して指定した要素(div等)の大きさをリアルタイムに変えられるようにしたいけど、コードうまくできない
Chromeとかのデベロッパーツールを使えばいいじゃんと言われるオチだけど、cssとか詳しくない人に入力してチェックしてもらうためなので
ググっても関係ない情報ばかり引っかかるお
0179デフォルトの名無しさん
垢版 |
2017/10/04(水) 20:37:27.97ID:XYwgRbbh
>>177
一行目から行くぞ。
今時DOCTYPEを使わないのはありえない
META HTTP-EQUIVが大文字だったり小文字だったり、意味もわからずコピペしている証拠
今時Shift_JISとかありえない
languageは古い属性いまどき使わない
関数の中の変数にvar(もしくはletやconst)がない
evalは使うな
; の前にスペースはいらない
document.size.value_xなんて参照はいまどきしないgetElement○○を使え
bgcolorなどの物理属性は使うなcssを使え
centerなどのタグも使うな
brは連続して使うな
tableじゃない場所にtableを使うな
20年ぐらい前に素人が書いたコードにしか見えない
0181デフォルトの名無しさん
垢版 |
2017/10/04(水) 23:54:58.26ID:AL97hIHS
jqplotで凡例の項目の一部をデフォルトfalseにしたいのですが
どのようにすればできるでしょうか?

例えば以下のサンプルサイト様の凡例「花子」を
初期起動時にはデフォルトでfalseにするイメージです
http://alphasis.info/2012/04/jquery-plugin-jqplot-line_charts-legend-numberrows/

よろしくお願いします
0183183
垢版 |
2017/10/05(木) 06:42:50.41ID:lUKxKZuz
すみません、自分一人ではどうしても解決できないことが有ってご質問させていただきます。

【やりたいこと】
任意の数の制御点(0=≦x =<511、0=< y =<1000)を格納した配列を基に、三次Bsplin補完を実行し、
生成された曲線の座標からx=0からx=511までをインデックスとして、y座標を出力したいのです。

任意の数の制御点を生成して、昇順に並べる関数は作りました。
また、Bsplin補完を実際に生成する関数もネットから拾ってきて既に出来ているものがあります。

次にコードを載せます。
0184183
垢版 |
2017/10/05(木) 06:51:04.01ID:lUKxKZuz
function interpolation(top_elements){

var sp = new Spline();
sp.init(top_elements);

var t = variation;/* any value as parameter */ ;
var val = sp.culc(t);

}


このようなものです。top_elementsは私が作った[x,y]を任意個格納した二次元配列です。
Spline()がBspline補完をする、外部から拝借した関数になります。

tの値を変えたりして何度かやっているのですが、曲線を生成した、ということは、
xもyも連続的なはずですよね?xが512個のインデックスだとしたら、それに対応するyは
当然滑らかにはならないでしょうが、それでもいきなり飛び出た値が出るとか、そういったことはないと思います。

今のままだと、ほとんどxの値に対してランダムというか、作っている人間には突飛な値ばかり出力されてしまいます。
ようするに滑らかな曲線にならないのです。

どなたかご教授お願いします・・・Spline関数に間違いはないと思います。
0185183
垢版 |
2017/10/05(木) 07:23:50.95ID:lUKxKZuz
補遺:二次元配列top_elementsは、xの昇順になっています。
0188183
垢版 |
2017/10/05(木) 18:50:12.30ID:lUKxKZuz
>>186

そうします。
そもそもスプライン補完とスプライン曲線を混同していました。
制御点の間を結ぶのがスプライン補完なんですね・・・

勉強不足で失礼しました。
0191デフォルトの名無しさん
垢版 |
2017/10/05(木) 22:47:29.02ID:SUARUJDC
別に宿題でも良いんだが
この手のアルゴリズムはちょっと調べたらCやJavaなんかでの実装が山ほど見つかるじゃん
コピペ手直しならまだ宿題やったってことで良いと思うけど
そこまで人にさせるのはちょっとね
0192デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:12:32.57ID:gy3l/p8u
すみません質問なのですが
HTMLファイルを IE11 でローカルで開いて遊ぶゲームの制作中で
データを保存する機能の部分でエラーが出ます。

Chromeだと問題ないのですがIE11だと動きません。
(未定義または NULL 参照のプロパティ 'setItem' は取得できません)

var storage = localStorage;
storage.setItem("item1", "soda");
console.log(storage.getItem("item1"));

IE11の仕様でローカル書込できない場合
何か回避方法はありますでしょうか。
0193デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:37:43.35ID:TJk1AKwf
ローカルで開いてもらうんなら
そもそもElectronとか使って配布すれば良いじゃない
0195デフォルトの名無しさん
垢版 |
2017/10/10(火) 15:40:09.98ID:nIcnTX/z
次々にDOMの内容が時間とともに書き換わるホームページで
特定の要素が開いたときにすでに存在しているか、これから存在するか、
の2パターンのうち、存在するまで待って何かするにはどうすればいいですか。
やったことはタイマーで3秒くらい待ってから調べる方法ですが
低スペックのパソコンだと時間がズレるのでつかえませんでした。
0196デフォルトの名無しさん
垢版 |
2017/10/10(火) 19:16:14.99ID:aq9ImRxa
ハックならsetTimeoutで十分でしょ
きっちりやりたいのならMutationObserverでも試してみたら?
0197192
垢版 |
2017/10/10(火) 23:39:33.60ID:2O1kjtT1
>>193
>>194
助言ありがとうございます。
これらを試してみます。
0198デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:31:33.94ID:brH66jkE
スマホのwebアプリを作ってるのですが、beforeunloadのようにホーム画面に戻った時や
強制終了した時に発火するイベントはありますか?
iOSとandroidの両方に対応させたいです。
宜しくお願い致します。
0200デフォルトの名無しさん
垢版 |
2017/10/12(木) 00:26:26.49ID:yL279Uuu
phantomJS使って画面キャプチャして保存してるんですが
どうしても画像が保存されません…
htmlを出力してみるとアクセスは出来てるみたいなんですが。
コードは以下です。
var page = require('webpage').create();
page.open('http://yahoo.co.jp', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
0201デフォルトの名無しさん
垢版 |
2017/10/12(木) 00:31:54.06ID:yL279Uuu
http://www.ugtop.com/spill.shtml
ここ見るとMIMEタイプが以下になってるのが原因でしょうか?
普通のブラウザでアクセスするのと比較するとこれくらいしか違いがないので。
[phantomJS]
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Chrome]
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
0203デフォルトの名無しさん
垢版 |
2017/10/12(木) 01:39:40.89ID:yL279Uuu
>>202
ここ見てやったんですが、保存までやってくれるんじゃないんですかね?
ttps://qiita.com/makoto1007/items/a54ff3ded2114a0d5433
0204デフォルトの名無しさん
垢版 |
2017/10/12(木) 03:24:44.94ID:BE/Y4M/4
1行ずつ、デバッグ実行して、エラーメッセージを取得して、そのメッセージで検索する

ファイルI/O 関連のエラーなら、ブラウザが対応していないとか、
フォルダが無いとか、書き込みできないとか、アクセス権限とか、色々ある

まず、どの原因か、エラーメッセージを取得して、解明する

Linux なら、strace のような、
OS のAPI の呼び出しをチェックするような、コマンドがあって、
どのAPIでエラーが起こっているのか、わかるけど
0205デフォルトの名無しさん
垢版 |
2017/10/13(金) 13:57:58.99ID:OVzYuRNW
function Hoge() {
}
Hoge.piyo = 123;
var hoge = new Hoge();

とかした場合にhogeからHoge.piyoにアクセスする方法はある?
0207デフォルトの名無しさん
垢版 |
2017/10/13(金) 23:41:18.31ID:JHJOvcP0
関数をコンストラクタにして、インスタンスを作りたいのか?

var A = function(x) {
this.y = x;
}

var aa = new A(3);
var bb = new A('a');

console.log(aa, bb);
0208デフォルトの名無しさん
垢版 |
2017/10/14(土) 09:16:31.69ID:vAiN4XDf
これとは意図が違うの?
function Hoge() {
}
Hoge.prototype.piyo = 123;
var hoge = new Hoge();
console.log(hoge.piyo);
0209デフォルトの名無しさん
垢版 |
2017/10/14(土) 11:14:33.00ID:rczcWznS
インスタンスの意味がわからないのなら、
オブジェクト指向を知らないという事だから、JavaScript は無理

JS は、prototype と言って、普通のオブジェクト指向じゃないから、さらにややこしい

まずこの本で、普通のオブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014

それから、JSのprototype を学ぶ
0210デフォルトの名無しさん
垢版 |
2017/10/14(土) 12:52:58.47ID:ZBrjxXQC
いきなりprototypeでいいんじゃないかな。
たしかにjsのprototypeは分かりにくいけどクラス使う言語からやってくると、もっとわかんなくなりそう
0211デフォルトの名無しさん
垢版 |
2017/10/14(土) 13:33:10.91ID:6KISst0f
JavaScriptでもclassからやったほうがいいんじゃないかな?
classほうがわかりやすいし。それからprototypeでも遅くはないよ。
そもそもprototypeって普段から意識して使ったこと無いしね
内部実装よりも言語仕様の方が重要
0212デフォルトの名無しさん
垢版 |
2017/10/14(土) 17:00:10.76ID:PFh9gSOM
分かりにくいのはprototypeプロパティの意義であって
それはプロトタイプベースの本質ともオブジェクト指向の本質とも関係はなく
ただのJSのチンケな旧クラスシステムということでしかない

学習としては__proto__を使って素直で本質的なプロトタイプベースOOPを覚えるか
class構文を使ってよりまともな新クラスシステムに慣れる形が良い
0214デフォルトの名無しさん
垢版 |
2017/10/15(日) 01:15:59.00ID:y0fiNdyH
class {
プロパティ
メソッド
}

普通の言語で、これで済む所を、JS では自分で実装していかないといけない

メソッドは、__proto__ で、親クラスへつなげて行くとか、
実行環境を作る人と、同じ技術を学ばなければならない。
こんなのは、インタープリタを作る人の話

オブジェクト指向をわかっていない奴だと、
.constructor, .prototype とか、何もわからずに使うだけ
0215デフォルトの名無しさん
垢版 |
2017/10/15(日) 05:30:29.29ID:8UsxszRz
それはちょっと違うかな
物は言いようでクラスに縛られること無くOOPが出来るというのはプロトタイプベースのメリットだけど、
だから自作しないといけないというわけではなくてプロトタイプベースに標準のクラスシステムがあっても何も矛盾しない

というかJSはES5までプロトタイプの設定ができなくて
予め用意された貧弱なクラスシステムを使わざるを得ないといけないということが問題で、
むしろ変わったクラスベース言語と言っても良いくらいだった
.constructor, .prototypeもオブジェクト指向の本質とは何の関係もない、ただJSのクラスシステムの癖なだけ

というか元々JSは手続き型チックに使うことを想定された簡潔なDOM操作スクリプト言語として作られたのであって
それに一応OOPもできますよと言うことでnew演算子を取ってつけただけ
プロトタイプベースなのも、崇高な目的があるわけじゃなくて
OOPが最低限できる素朴な仕組みを用意できれば良かったから
0216デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:07:06.61ID:FZpcfz8T
なんでもありの言語にお堅い規約やらなんやらを詰め込もうとするから無理がでてくる
0217デフォルトの名無しさん
垢版 |
2017/10/16(月) 11:28:22.60ID:S65ZEl8x
まあ単に素朴なだけだけどね
鋼の様な硬い制限は言語のメリットを殺すだけで良くないが、一方で柔軟さ活かせばゴムの様に「矯正力」を発揮させる事ができる
固い考え方に於いての問題を問題として弾くのではなく、問題を飲み込み問題では無くす事ができる
その様にJSらしいプログラミング思想を受け入れることがJS克服の鍵
0218デフォルトの名無しさん
垢版 |
2017/10/16(月) 21:47:15.44ID:PHvG/+lj
jsは凄くやらかい言語だよね。欲を言えばマクロが欲しいけど、現状でも割と何でも出来る
0219デフォルトの名無しさん
垢版 |
2017/10/17(火) 01:16:06.64ID:1Z+ZTC/f
マクロはsweet.js型のが検討された事があるがまだまだデコレータとか先に検討すべき機能はたくさんあるし
Object.observeみたいにその時の流行りと勢いで大胆な機能を入れると、後悔することが教訓になっているので慎重にもなるだろう

今は立案から策定までのペースが早くて10年後もその機能があって良いのかを考えにくくなってる
慎重で優秀なメンバーがいるおかげか高Stageでギリギリ落とされるものもチラホラ
その時は不満でも1年くらいして落ち着いて考えてみるとやっぱり入れ無くて良かったのかなと思える
0220デフォルトの名無しさん
垢版 |
2017/10/17(火) 08:50:09.14ID:JpL3v0uM
そういえば末尾最適化が来てたっけChromeに
あれアロー関数かつ三項演算子でも使えるんかね。今度実験してみよ
0221デフォルトの名無しさん
垢版 |
2017/10/17(火) 23:45:33.60ID:h1VDlomm
すみません洋書でも知ってたら教えて頂きたいのですが、
jqueryをネイティブのJSに書き直す方法を網羅した
リファレンス本や虎巻、早見表等の書籍がありましたら
教えて下さい。
0222デフォルトの名無しさん
垢版 |
2017/10/18(水) 00:40:19.37ID:HhDhJUF4
>>221
不完全なのならネットにいくらでもあると思う。
でも網羅してるのはないだろうね。
例えば、onの二番目の引数にselectorを使用した書き方(旧delegate)とか
置き換える方法が書いてあるの見たことない。
http://js.studio-kingdom.com/jquery/events/delegate

網羅しているのがあれば、jQueryがどれだけ複雑な処理を
簡単にかけるかってのがよく分かるんだけどな。

この際だからネイティブのJSに置き換えるんじゃなくて
ReactとかAngularに置き換えたら?
はっきり言って他のフレームワークに置き換える意味はあるけど
jQueryをネイティブのJSに置き換える意味は殆どないよ
0223デフォルトの名無しさん
垢版 |
2017/10/18(水) 01:18:00.87ID:BXrTaZiI
jQuery は、タグにイベントハンドラーを付けて、

そのタグの先祖のタグを削除しても、メモリリークをしないほど、すごい!
0224デフォルトの名無しさん
垢版 |
2017/10/18(水) 10:01:32.88ID:DiuuPMDh
jQueryをどう使ってるかによるんじゃない?
Promise、Animation、Fetchなんかは置き換えできるよね
でも一番地味な要素の取得・操作やイベント周りは結局ラッパーを書くことになると思うよ

そこだけjQuery使うというのも大有りだけど、もしasync-awaitを広範囲に使っているのなら
組み合わせが難しくなるので完全に外すことを検討して良いと思う

awaitとイベントを柔和させるためにはasync-iteratorやObservableが必要だけど、まだ実装されてないからね
まあwhile(await)を使って工夫すればなんとかそれっぽく書けるんだけど、
今はまだObservable系のフレームワーク使った方が良いかもね
0225デフォルトの名無しさん
垢版 |
2017/10/18(水) 21:29:42.35ID:HhDhJUF4
jQueryのAjaxは、Fetchには置き換えられないよ。
Fetchは仕様のレベルでJavaScriptのXMLHttpRequestの機能の
一部しかサポートされていない。今新しい仕様策定中

Promise(Deffered)は仕様が少し違うけど、
これ実質Ajaxぐらいしか使ってないので、Fetchが置き換えれないのなら
Promiseに置き換える作業も発生しない。

Animationは置き換えは置き換えでもJavaScriptではなくCSSに置き換えだね

jQueryを使ったコードがたくさんあるなら、比較的最近のブラウザでしか
動かないasync-awaitを使っていることはないだろう

将来はasync-iteratorやObservableに変わるということは
今JavaScriptネイティブの古き良きaddEventListenerに変更する意味はあるのだろうか?
あと数年ブラウザネイティブでasync-iteratorやObservableがサポートされるまで
jQueryのままで良いんじゃね? どうせまた変えなきゃいけなくなるし。
コードは少ないほうが置き換える手間も少なくなるよ
0226デフォルトの名無しさん
垢版 |
2017/10/18(水) 21:42:54.57ID:DiuuPMDh
Fetchで置き換えられない具体的で有意義な例を出して欲しい
例えばキャンセルは出来るという議論前出てたよね
0229221
垢版 |
2017/10/18(水) 23:24:44.84ID:gezDC8oz
皆さんご助言ありがとうございます。
ReactとかAngularも検討してみます。
ネイティブの実装方法知らなくても
結果が同じなら書き換えなくていいかもです。
どうもありがとうございます。
0230デフォルトの名無しさん
垢版 |
2017/10/19(木) 02:13:50.99ID:EggJcvPa
>>224は脱jQueryの指針を表したつもりで
jQueryのそれと全く同じ使い勝手のものが標準にあると言う気もないけど
そもそもjQueryの機能を完全にカバーできるかで考えるのも変だと思うけどな

因みにキャンセルや進歩状況はbody使えばできるんでなかったか?
0231デフォルトの名無しさん
垢版 |
2017/10/19(木) 08:00:15.95ID:o0C7Dgua
調べてみた
キャンセル:
res = await fetch(''); reader = res.body.getReader(); reader.cancel(); OR res.body.cancel()
ダウンロードプログレス:
res = await fetch(''); reader = res.body.getReader(); ......
アップロードプログレス:
(できない)

ただし注意点としてプログレスは勿論キャンセルも実質、最初からReadableStreamで取って行ってるときでないと使えない
つまり、req.text()と先にしておいて、後でそれを予想外に長引いているからとreq.body.cancel()などキャンセルしようということはできない
まあプログレスやキャンセルが必要なのって大きいファイルの取得のときでしょ、
それで大きいファイル取得するときは最初からblobチャンク取っていく形で良いでしょ、ってことなのかもしれないが
一応素晴らしい解決方法もある

Response、body、ReadableStreamが再利用不可なのが問題なので、新しく作ってバイパスしてやればいい
つまり、ストリームに割り込むという考え方が必要
res = await fetch(''); reader = req.body.getReader();
res2 = new Response( new ReadableStream({...readerから読み込む...}), {...ヘッダを複製...}); ←キャンセルしたりプログレスが取れる
text = await res2.text()
0232デフォルトの名無しさん
垢版 |
2017/10/19(木) 08:22:28.68ID:o0C7Dgua
あーでもアップロードプログレスはできないって情報あったけど
よく考えたらrequest bodyにストリーム使えるわけだから出来そうだな
0233名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 09:36:57.74ID:dFN+CZG0
JavaScriptの配列で中身はあるのにforinがまわらない、chromeの開発ツールで見ると1行目の[]の中身がなくて、>でオブジェクト開くと中身があるみたいな状態なんだけど、どなたか経験あります?
説明が難しくて伝わらなかったらごめん
0237名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:05:57.85ID:j2iheZbd
配列(Array)の場合はfor inじゃなくてfor(var i=...) とか forEachを使うのはなぜですか?
0239名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:25:42.64ID:j2iheZbd
>>238
そうするとわたしの秘密の情報も漏れてしまうのでイヤです。
0241名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 16:38:06.12ID:j2iheZbd
>>240
じゃあ指切りげんまんしてくれるかな?
0243名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 17:07:32.86ID:j2iheZbd
>>242
じゃいくよ。
あなたも指出して。

  _n
 ( l    _、_
  \ \ ( <_,` )
   ヽ___ ̄ ̄  )
     /    /
「指切りげんまんウソついたら針1000本の〜ます」
0244名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 17:32:49.16ID:j2iheZbd
こら、早く指出せよ
0246名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 18:03:02.65ID:ZsHOZNag
>>245
何でそういう嘘つくの?
0249233
垢版 |
2017/10/23(月) 07:04:58.81ID:dBI0Tow6
>>239
知らない間に私に成り代わった何者かが
投稿していたようだ。

foreachね。やってみるわ。
サンクス
0250233
垢版 |
2017/10/23(月) 07:14:40.31ID:dBI0Tow6
すまん、あと連想配列なんだわ。
キャプチャは今携帯だから貼れないから後ではる
0252デフォルトの名無しさん
垢版 |
2017/10/23(月) 13:24:35.32ID:EOed3a7c
自己解決しました。
ファイルを配列に打ち込むライブラリが非同期だったので、処理で使えなかったみたい。
初歩的なミスでした
0253デフォルトの名無しさん
垢版 |
2017/10/23(月) 17:29:06.71ID:Ig1NMcyK
多分もう少し、『誠実に』質問できてたらその日中に解決したと思うよ
ついでに見てる人を困らせることも荒らされることも無かった
0254デフォルトの名無しさん
垢版 |
2017/11/05(日) 08:20:11.81ID:30Y/ALms
node.jsの質問もここで大丈夫ですか?

winstonで取得したdiscordのログをdropboxに上げたいんですが、
ローカルにファイルは保存されているのに
ファイル名の変数が未定義とのエラーが出ます
どうすればうまく定義できるんでしょうか?

https://imgur.com/6Pk8q1b
実際の実行結果がこれで
https://imgur.com/ti3Pdkp
ローカルのファイル一覧がこれです
何度も試した結果大量のファイルが溜まっています
https://www.axfc.net/u/3860035?key=source
件のコードがこれです
スクリプトの名前は読み替えて下さい
まだ書きかけなので不要なライブラリも呼び出したりしており、
スパゲティ化してると思いますがご容赦ください
よろしくお願いします
0255デフォルトの名無しさん
垢版 |
2017/11/05(日) 11:55:47.11ID:30Y/ALms
ひとまず自己解決
varとかconstとかってローカル変数だったのね……
普段使わないから知らなかった
スレ汚し失礼しました
0257デフォルトの名無しさん
垢版 |
2017/11/13(月) 07:37:16.57ID:Cp9C2uqN
コメントで
/*!
...
*/
のように ! がついてるコメントの名称と意味を教えてください
0259デフォルトの名無しさん
垢版 |
2017/11/13(月) 18:01:54.37ID:RXMQG+No
Googleは最近そういう記号でもまともに検索できるようになったんだからググったら良いと思うよ
0260デフォルトの名無しさん
垢版 |
2017/11/13(月) 20:13:27.57ID:EexnuGm1
初心者です。「this. は.以降の変数を自分自身のコンパイラーとして呼べる」
と書籍に書いてあったのですが、イマイチ分かりません。
噛み砕いて教えていただけたら嬉しいです
0263デフォルトの名無しさん
垢版 |
2017/11/13(月) 20:54:47.92ID:AfQlhP1w
Haxe の、this は、常にインスタンス自信を指すけど、

悪名高い、JavaScript のthisは、そうじゃないから嫌われている。
すごく複雑だから、検索して
0264デフォルトの名無しさん
垢版 |
2017/11/13(月) 22:49:11.94ID:RXMQG+No
全然複雑じゃない
複雑だと思うから複雑なだけであって、実際は第0番目の引数ということでしか無い
引数が色んな値になり得るのは当たり前で、どんな場合にどんな値が来るのかを知らないといけないのも当然
難しく考える必要は一切ない
0265デフォルトの名無しさん
垢版 |
2017/11/14(火) 00:36:38.93ID:XnMPPPKZ
>>264
これな。関数a内でthisが使われていた場合
aの呼び出し方でthisが何かが決まる
somthing.a() だったら a内のthisはsomthingを示す。
a() だったらwindow.a() or global.a()のシンタックスシュガーと考えるので
a内のthisはwindow or globalとなる。

a = a.bind(something) ってすると、
関数aのthisはsomethingに強制できるから
a() だとしてもthisはsomthingを指す。
0266デフォルトの名無しさん
垢版 |
2017/11/14(火) 07:55:00.49ID:dgQmKgaa
応用の部分がややこしいだけで、基本はメソッドを呼び出した時のオブジェクト(インスタンス)自身
基本を理解してないのに応用から始めるから理解できないだけ
0267デフォルトの名無しさん
垢版 |
2017/11/14(火) 11:29:27.42ID:+3XzgWpP
>>262
260の者です。
正確に覚えていないのですが、このような趣旨が書かれていました。
僕の勝手な解釈で投稿した感じです
0268257
垢版 |
2017/11/14(火) 12:25:45.28ID:7jNyp118
誰もわかりませんか?
0269デフォルトの名無しさん
垢版 |
2017/11/14(火) 13:41:14.06ID:SW/qgnh7
>>267
エスパーすると、コンパイラーではなくレシーバーだろ、つまり
proto = { prop: hoge }
obj = Object.create(proto)
のとき、obj.propと記述すると
ベースがproto、参照名がprop、this値がobjという参照型の値が作られる

その値が解決されるときにthis値のobjをレシーバーとして、参照名と共に
ベースであるprotoの[[Get]]関数が呼ばれる
もし直接解決の代わりに()演算子によって関数呼び出しされると
結果的にthis値のobjが解決後の関数値をもって作られたコンテキスト上でthis変数のように振る舞う
0271257
垢版 |
2017/11/14(火) 18:06:19.25ID:7jNyp118
>>270
名称は?
0272デフォルトの名無しさん
垢版 |
2017/11/14(火) 18:56:23.36ID:dgQmKgaa
>>271
webpackやGruntやGulpやら、何種類もある
ビルド/ビルドツールとかタスクランナーと呼ばれてる

SASSに相当するのは一般名AltJS、具体名はTypeScript、CoffeeScriptなどなど
0273デフォルトの名無しさん
垢版 |
2017/11/14(火) 22:54:40.95ID:hkMQtuZT
> SASSに相当するのは一般名AltJS、具体名はTypeScript、CoffeeScriptなどなど

はい、はずれ〜ワラワラ

SASSはCSSにコンパイルするもので、AltJSじゃありませ〜ん。JSなんてどこにも出てきませ〜ん
0275257
垢版 |
2017/11/15(水) 07:29:16.78ID:y5EK2afH
/*! ←このコメントの名称を聞いてるのですが・・・
0277デフォルトの名無しさん
垢版 |
2017/11/15(水) 08:11:23.56ID:ak6TxLhd
>>257
多分Qt形式のドキュメントコメント。
doxygenで使ったりする。
間違ってたらごめん。
0278デフォルトの名無しさん
垢版 |
2017/11/15(水) 23:10:11.83ID:JIFjS5yg
つか、以前唐突に何も根拠なく「韓国人は優秀ニダ」と連呼し始めたのはこれかよ。

韓国政府、日本に関係改善の意思を伝える「韓国人材の日本企業への就職拡大の必要性を強調。日本も共感」★4
http://lavender.5ch.net/test/read.cgi/news4plus/1510660601/

韓国って国家単位で詐欺してるよな。
韓国人なんて詐欺国家の末端構成員だから全く信用ならねえ。
つか、あいつら嘘つき過ぎてて、辻褄とかそういうの考えないのな。
韓国人が優秀なことにするのなら、頭脳流出の心配を一ミリでもしろよアホ共め。

韓国人死ね
0279デフォルトの名無しさん
垢版 |
2017/11/18(土) 10:41:15.63ID:ts5n7/sY
javascript勉強中の初心者です。
宜しくお願いします。

伝の心という難病患者さんが使用するソフトがあるのですが、
https://www.youtube.com/watch?v=GpcY_UMoiLY&;t=97s

このように、
ボタンを自動で選択して、一定時間後自動で隣の項目に移動し、最後はまたもとのボタンに戻る
というコードをどう書いたらいいのか教えていただけませんでしょうか。

自分なりに調べて、setTimeoutなどがあるというのはわかったのですが
何分初心者なのでうまく行きません。
宜しくお願いします。
0281
垢版 |
2017/11/18(土) 11:46:18.95ID:OVm4Skm9
>>279
伝の心久しぶりに聞いたな。専門分野だ。

画面のコントロールにID振っておいて、
タイマーのメインループで一つずつ「次のコントロール」を選んでる
var current = 0
var max=10
function selNext(){
$('#ctr'+current).focus()
current=(current+1) % max
}
みたいになってる。
0282
垢版 |
2017/11/18(土) 11:48:05.45ID:OVm4Skm9
障害者の人の操作体系、日本語入力のときの句点の次には割り込みで確定に一度フォーカスするとか、色々小細工があったはず。
0283デフォルトの名無しさん
垢版 |
2017/11/18(土) 12:15:21.06ID:llwTwelI
TAB順でいいなら、一定時間後にタブ押すとかTabIndexだっけ?を使えば良いかもな
ID順にならない移動があるなら

['#a', '#c,' '#d'] みたいに配列に入れておいて
その順番での移動を再生するみたいな感じになるだろうな
0285
垢版 |
2017/11/19(日) 00:20:38.43ID:LuozPxgy
>>284
setIntervalが一番近い動き。

このカーソルと言うか選択肢移動は経時で自動的に順番に選択されて、
決定にあたるキー操作のみでユーザーは操作する。瞬目をプルキンエ像から判定とか、マイクロスイッチを辛うじてでも動く部分で押すとか。
>>283
が、決定の差し込みとかダイアログの選択肢への切り替えとか考えるとベストだと思うけど、
確か幾つかの操作体系自体がパナのパテントだから調べないといかんはず。
0286デフォルトの名無しさん
垢版 |
2017/11/19(日) 09:48:24.65ID:lkOoO3E5
ブレークポイントでデバッグする方法について教えてください

Window.openした後の行でブレークするにはどうすればよいのでしょうか?
F12画面を常に表示させても新しいタブやウィンドウが表示させた後では間に合いません。
0288デフォルトの名無しさん
垢版 |
2017/11/20(月) 17:57:53.01ID:NlfseZma
プルダウンでdefaultのままだった場合に送信ボタンが押せないようにしたいのですがどうすればいいでしょうか?
0292デフォルトの名無しさん
垢版 |
2017/11/21(火) 13:01:06.42ID:TQKi5Xp5
>>287
ありがとうございます。
alertより全然いいですね。

ただ、ソースに手を入れずブレークする方法ないですかね。
ユーザーのシステムから自社システムにリダイレクトして自社システムに入ってくるので、できれば自社システムで解決したいです。
0293デフォルトの名無しさん
垢版 |
2017/11/23(木) 17:44:46.79ID:1SOgFX2j
FireGestureやFoxyGesturesのJS記述に関する質問は大丈夫でしょうか。
他に飛んだほうがよければ教えていただけると助かります。
0295デフォルトの名無しさん
垢版 |
2017/11/24(金) 03:00:15.28ID:KiUMltEw
node.jsではプログラム名を記述せずとも
node .
でプログラムを実行出来ますが、
プログラム名はどう推定しているのでしょうか?
package.jsonを見て決めていると思っていたのですが、
package.jsonがなくてもindex.jsを実行しました
0299デフォルトの名無しさん
垢版 |
2017/11/25(土) 03:09:00.02ID:7N3/BfvS
package.jsonがなければindex.jsを実行するようになっているんですね

>>296
うすうす分かってはいましたが、確かめたかったのです

>>297
ググって自己解決すればそれで終わりですが
質問をすれば、>>298のように知らなかった人も知ることが出来ますよね?
何のための質問スレだと思ってるんですか?
0300デフォルトの名無しさん
垢版 |
2017/11/25(土) 05:33:34.88ID:ThHbjkCN
ここは自ら学ぼうとしたけどどうしてもわからない人のための救済スレだよ
ググるなんて一番最初にすること
0301デフォルトの名無しさん
垢版 |
2017/11/25(土) 10:08:18.15ID:FWelsGSm
>>299
日本語読めないゴミクズは消えろ 二度と来るな

>(4) 常に自発的に調べる心構えを持ってください。
>  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
>  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
0302デフォルトの名無しさん
垢版 |
2017/11/25(土) 11:44:48.76ID:JS4CjxNP
>>301
役に立たないテンプレに従う必要などありませんよ
ただの書かれた文字です
法律でもなければ憲法でもないのです
分かりますね?
0303デフォルトの名無しさん
垢版 |
2017/11/25(土) 11:51:03.05ID:JS4CjxNP
node.jsにはrequireをしなくても使えるコアモジュールがありますが
そういうモジュールのことを何と呼びますか?
node.jsに標準添付のモジュールを標準モジュール、
グローバルオブジェクトとして組み込まれているこの種のモジュールのことを
コアモジュール、と呼ぶと思っていたのですが
コアモジュールは標準添付のモジュールのことでした
ではグローバルオブジェクト化されているモジュールの呼び名は?
ドキュメントを見ても、それっぽい名前がない気がします
どうなのでしょうか?
0307デフォルトの名無しさん
垢版 |
2017/11/25(土) 13:25:15.61ID:uC06z7qi
>>305
ここは質問スレです
ゴミというのは質問と回答以外の書き込みをする者のことです
分かりますね?
0308デフォルトの名無しさん
垢版 |
2017/11/25(土) 13:26:46.79ID:uC06z7qi
>>304
ないのですか?
「グローバルオブジェクト化されたコアモジュール」
とでも呼ぶしかないのでしょうか?
0309デフォルトの名無しさん
垢版 |
2017/11/25(土) 13:35:55.88ID:FWelsGSm
>>307
最高に頭が悪いな

弱者は強者の作ったルールに従わなければならない
このスレでは情報を持つものすなわちオレが強者で、情報を持ってなくて質問しているお前が弱者だ

わかるか? ゴミクズ
0311デフォルトの名無しさん
垢版 |
2017/11/25(土) 14:45:30.90ID:uC06z7qi
>>309
大抵の質問スレには、
質問者になら無知で無能な自分も偉そうに出来ると勘違いした、
あなたのような最底辺のドクズが巣くっているものです
ですから自分がまず質問スレですることは、あなたのような連中を追い出すことです
見るたびに殴りつけますので、今後お見知りおきを。
分かりましたね?
0312デフォルトの名無しさん
垢版 |
2017/11/25(土) 15:21:08.83ID:99QBz+fh
荒らしに構うな。
荒らしと会話するな

荒らしと会話する者も、荒らしと同じ!
0314デフォルトの名無しさん
垢版 |
2017/11/25(土) 18:52:33.44ID:FWelsGSm
>>311
お前の無能っぷりは当たり前に出来る検索すら出来ない事で証明されている
知能が劣っているお前が、どういう手段で追い出してくれるのか楽しみでしょうがない

まあ、頑張ってみろ
0315デフォルトの名無しさん
垢版 |
2017/11/28(火) 02:34:55.73ID:llZrhpn1
node.jsに、rubyで言うirbみたいな
インタラクティブなインターフェイスはないでしょうか?
0317デフォルトの名無しさん
垢版 |
2017/11/28(火) 08:42:37.86ID:nYQtzTcH
>>311
おい、ゴミクズ
追い出すはどうした? 逃げ出すの間違いか?
0319デフォルトの名無しさん
垢版 |
2017/11/28(火) 21:25:15.44ID:nYQtzTcH
頭悪そうな質問だと思ってたら 案の定ゴミクズの質問だったか?

追い出すはどうした?
0320デフォルトの名無しさん
垢版 |
2017/11/28(火) 21:55:01.66ID:PkJOT8pW
荒らしに構うな。
荒らしと会話するな。
会話すると、ずっと荒らしが続くだけ

荒らしと会話する者も、荒らしと同じやぞ!
0321デフォルトの名無しさん
垢版 |
2017/11/29(水) 00:46:00.93ID:NqL6/Qja
JavaScriptではPHPの$$varみたいなことは出来ないのでしょうか?
node.jsでモジュールを読むのに、一行ずつrequireを記述するのではなく
モジュールを記述した配列を回して読みたいです
全てのモジュールを格納するオブジェクトを作って
各モジュールをそのプロパティにするようにしたら出来ると思いますが
それはnode.jsの作法的に良くないのでしょうか?
0322デフォルトの名無しさん
垢版 |
2017/11/29(水) 01:12:44.54ID:NqL6/Qja
モジュールを読むたびに名前空間をガンガン汚していくのってどうなんでしょう
変数名を決める時にも、
その変数名が何らかのモジュールの名前で使われていないかを
いちいち気にしないといけないのってイケてないですよね?
モジュールは他の変数とのバッティングが起きないように、
特有のプレフィックスを付けた変数に読むようにした方がいいと思います
$fsとか$httpとか。
そうですね?
0323デフォルトの名無しさん
垢版 |
2017/11/29(水) 01:37:28.79ID:lXeLFRwv
>>322
なんかわざとらしいけど、今時のやり方をすれば
グローバル変数は使わないで作れる
そのためのモジュールシステム
0325デフォルトの名無しさん
垢版 |
2017/11/29(水) 02:05:27.98ID:NqL6/Qja
importですか
見た記憶はありますが何か分かっていませんでした
調べてみます
ありがとうございました
0326デフォルトの名無しさん
垢版 |
2017/11/29(水) 20:03:19.07ID:Va1ZfTbH
検索すればすぐにヒットする愚問をスレ違いのスレで垂れ流してるゴミクズ

追い出すはどうした?

>>320
お前が一番相手してるぞ マヌケ
0327デフォルトの名無しさん
垢版 |
2017/11/30(木) 00:49:24.21ID:IRGu1MZY
PHPはphp.netにドキュメントが集積されていて
そこを検索すれば大抵のことは分かるのですが、
node.jsにはそういう場所はないのでしょうか?
https://nodejs.org/にコアモジュールのドキュメントはありますが
いまいち見にくい感じです
この公式サイトがnode.jsの最良のドキュメントなのでしょうか?
いいドキュメントのある場所があれば教えて下さい
0328デフォルトの名無しさん
垢版 |
2017/11/30(木) 02:39:03.46ID:eLldrsxy
PHPは言語及び環境と豊富なAPIのセットだが
Nodeはサーバ構築の為の最低限の環境とAPIしかない
それを知るにはそこで十分
0329デフォルトの名無しさん
垢版 |
2017/12/01(金) 01:46:38.66ID:Pv6jsFPS
そうですか
どうも引っかかるところが多くて学習がサクサク進まない気がしますが
慣れでしょうか
ありがとうございました
0330デフォルトの名無しさん
垢版 |
2017/12/01(金) 08:48:40.71ID:2kltAqhV
基本的なJSの非同期の使いこなしと
サーバーの立場は知っておかないと躓くかもな
0331デフォルトの名無しさん
垢版 |
2017/12/01(金) 09:47:18.01ID:AT8KOZxB
>>329
多分node.jsを体系的に学ぼうとするからサクサク進まないのでは?
何がやりたいかによって全然変わってくるからなぁ
実はnpmを使いたいだけだったとかあり得る話
0332デフォルトの名無しさん
垢版 |
2017/12/01(金) 18:00:25.82ID:5uJXNlV4
過去の経緯を知っていると最近のjsとnodeはよくなってきたなあとも思えるが、初学者にはまだまだとっちらかった学びにくい界隈だろうな
0333デフォルトの名無しさん
垢版 |
2017/12/01(金) 18:06:30.81ID:AT8KOZxB
>>332
大概ReactとかVueとかなら簡単に使えるようにするためのbootstrap環境用意してるからそっちを使ったほうがいい。
0334デフォルトの名無しさん
垢版 |
2017/12/01(金) 19:52:18.61ID:XI19UOB5
MicrosoftやgithubのログインみたいにID パスワードが合ってるかどうかの判断を画面切り替えないでやるのってJavaScriptでは無理なんかな?
0337デフォルトの名無しさん
垢版 |
2017/12/01(金) 23:31:08.67ID:2kltAqhV
JSとしてはただサーバーに問い合わせるだけだぞ?
Ajaxじゃん
実際ログイン管理をするのはサーバー
0340デフォルトの名無しさん
垢版 |
2017/12/02(土) 00:28:15.90ID:UE7qzU9L
例えば、localStorage から値を取得して、それと比較して

一致していれば、
<div id="passw">OK</div>

不一致なら、
<div id="passw">ダメ</div>

とかに更新するだけだろ

実際には、localStorage じゃなくて、どこかのサーバーに問い合わせるけど
0341デフォルトの名無しさん
垢版 |
2017/12/02(土) 00:33:02.19ID:4pFOIwNa
<div id="message">…</div>
divタグ内の要素が増えたとき、もしくは
特定の関数が呼ばれたときハンドリングする方法はありませんか?
onchangeでもonreloadでも感知できません。
0344デフォルトの名無しさん
垢版 |
2017/12/02(土) 03:38:45.44ID:UE7qzU9L
>>341-342
React では、DOM の追加・削除・変更のタイミングで、
ライフサイクル・メソッドが呼ばれるけど

>>343
DOM 操作なら、jQuery が簡単

それと、質問はこのスレよりも、web制作管理板のJS スレで聞いた方が良い。
向こうの板の方が、人が多いから
0345デフォルトの名無しさん
垢版 |
2017/12/02(土) 08:39:48.21ID:CkwJjnIF
Web制作板は荒れているので、プログラム板で質問しても良い
実際には人数が多いのではなく、少人数が馴れ合ってるだけ
0346デフォルトの名無しさん
垢版 |
2017/12/02(土) 09:06:09.90ID:KabSb+PE
VSCodeはデフォルトでnode.jsのデバッグができるんですね
これはすごくいいのでは?
当然ですが標準モジュールもJavaScriptで書かれているので、
デバッガで追っていけば関数のインターフェイスや処理も良く分かります
PHPに比べてドキュメントの整備がいまいちに見えたのは、
ソースコードを見れば分かるだろということかもしれませんね
0347デフォルトの名無しさん
垢版 |
2017/12/02(土) 12:16:56.69ID:gOjO7QJq
Nodeの数少なく基礎的で単純なAPIに
あれ以上何の説明がいると言うんだろうか?
0349デフォルトの名無しさん
垢版 |
2017/12/02(土) 14:04:42.19ID:WQRORJsZ
>>347
「ゆとり女には無理」って説明だろうね。
つかNodeスレで聞けよな。

ただまあここら辺がPHPerが馬鹿にされる原因でもあるのだろう。
PHPは言語が糞過ぎて類推が利かなすぎる。だから全部マニュアルを読んで覚える物だと感違いしてるのさ。
0351デフォルトの名無しさん
垢版 |
2017/12/02(土) 16:19:41.28ID:Wi8X5cnu
>>349
web制作版がクライアントサイドJavaScript、
プログラム板がサーバサイドJavaScript、
つまりnode.js用のスレだと認識していますが違うのですか?
おかしなことを言う人がいるものですね
0352デフォルトの名無しさん
垢版 |
2017/12/02(土) 16:32:35.34ID:WQRORJsZ
>>351
どこを見てそんな解釈が?
おまえは多分一生上達しないタイプだ。偶にいるんだよ、何でこいつは相変わらずセンス無いままなのだろう、て奴が。
多分、プログラマ辞めて違う職種に転職した方がいいぞマジで。見込みなしだよ。
0354デフォルトの名無しさん
垢版 |
2017/12/03(日) 02:09:45.76ID:qnn1ynO5
VSCodeのIntelliSenseで出てくるヒントが
何か見覚えのないよく分からない記法なので、
これは何なのか?と思っていたのですが、TypeScriptのようです
普通のJavaScriptで書かれた情報が出てきて欲しいのですが、
どう設定すればいいのでしょうか?

>>352
頭の悪い意見ですね
説得力皆無です

>>353
それはごもっともです
0356デフォルトの名無しさん
垢版 |
2017/12/03(日) 04:45:44.80ID:qnn1ynO5
入力補完は型定義ファイル(拡張子d.ts)によって行われる
そしてこの型定義ファイルとはTypeScriptのファイル
ということのようなので、TypeScriptによる説明しかないのでしょうか?
むしろTypeScriptを使えという圧を感じないでもありません、
(VSCodeもTypeScriptもMS製なので)
TypeScriptはAngularにも採用されているし、おそらくいいものなのでしょうけど、
今すぐに使いたいとも思いません
単にJSDocのコメントを表示して欲しいだけなのですが
それは出来ないのでしょうか?
0357デフォルトの名無しさん
垢版 |
2017/12/03(日) 05:33:22.31ID:e/8zs/a/
相変わらず検索ということをしないなぁ
自分が書いた文そのままアドレスバーに打ち込めよ
0358デフォルトの名無しさん
垢版 |
2017/12/03(日) 13:41:20.68ID:1Lfl4AAz
TypeScriptの記法が良く分からなかったのですが
よく見たら引数の型をはっきり書いてるんですね
これは、率直にいってJavaScriptより良さそうです
実際IntelliSenseがTypeScriptベースで、素のJavaScriptの情報を提供していないのは
それがJavaScriptよりもいいものだ、という確信があるからでしょう
IntelliSenseが何を書いているか分かる程度には
TypeScriptを勉強するのが一番いいと思いました
もしかして生JavaScriptは終わりつつある言語なのでは?

>>357
検索で済んだら質問スレいらないんですよ
0359デフォルトの名無しさん
垢版 |
2017/12/03(日) 21:39:29.63ID:e/8zs/a/
ここは君のふと思いついた疑問を垂れ流すスレじゃないから
本当に困った人ができるだけ検索するなり自己解決しようとしても分からなかったことを聞くスレだからね
自分で助かろうとする人を救うスレだから、勘違いしないように
0360デフォルトの名無しさん
垢版 |
2017/12/03(日) 22:29:37.45ID:CdnEE9AY
Haxe でも、FlashDevelop がデフォルトエディタだけど、
VS Code 用のプラグインもある

検索すれば?
0361デフォルトの名無しさん
垢版 |
2017/12/04(月) 14:00:35.10ID:bcJqUv+k
Haxeっていう言語は知らなかったのですが

>Adobe Flashおよび独自のNekoVMで実行可能なバイトコードにコンパイルされるほか、
>JavaScript、ActionScript、C++、C#、Java、PHP、Python、Luaへの
>ソースコードの変換が可能

すごくトリッキーな、面白い言語ですね
全然性質の違うJavaScriptにもCにも変換するというのがすごい
0362デフォルトの名無しさん
垢版 |
2017/12/04(月) 14:50:24.83ID:bcJqUv+k
Haxeについてのネット上の記事を読んでみましたが
AltJSとしてはやはり無理があるようですね
言語をコンバートできたとしても
APIの部分でのすりあわせがあるので。
開発者がゲームを作っている人らしく、
そういう人じゃないとまず作らないような、野生感満点のプロダクトですね
0363デフォルトの名無しさん
垢版 |
2017/12/04(月) 23:20:05.94ID:7G6x18yw
世の中には同じ疑問を持っているやつが沢山いて、そいつら向けの解説記事も沢山ある
検索してそう言う記事や文献がないと言う事は、その問題が解決されていないと言う事だ

検索で済めば質問スレは不要とか言ってるバカは検索能力が欠如していて、文献を読む能力も皆無なのだろう

googleがあれば質問スレなんか不要
と言う事で、次スレは立てないように
0365デフォルトの名無しさん
垢版 |
2017/12/05(火) 00:04:14.36ID:KWhjoBwr
>>358みたいな馬鹿は死ねでいいだろ

ただ、こういう馬鹿も一定数居るところを見ると、
有料で初心者質問チャットをすると成立するのかね?
知恵遅れのベストアンサーってこれか?と思って調べてみたが、換金は無理っぽいんだが。
0366デフォルトの名無しさん
垢版 |
2017/12/05(火) 00:28:22.51ID:MhmSijC3
毎年必ず初心者は出てくる
小学生、幼稚園児、乳児、いつからプログラミングを始めても必ず初心者の状態はある
だから初心者というのはいなくならない
0367デフォルトの名無しさん
垢版 |
2017/12/05(火) 00:33:10.00ID:KWhjoBwr
いやそういう意味じゃねえよ
検索しない馬鹿は死ね、だろ

つかこのスレ相変わらず日本語が通じねえな
0369デフォルトの名無しさん
垢版 |
2017/12/05(火) 02:07:41.11ID:hFLcfi/C
次スレの代わりに
バカに検索キーワードを教えてあげるスレ
0370デフォルトの名無しさん
垢版 |
2017/12/05(火) 02:10:55.64ID:hFLcfi/C
>>368
ローカルルールさえ守れないゴミクズをゴミクズと呼ぶ事は法律でも憲法でも禁止されていないと
ゴミクズは消えろ
0371デフォルトの名無しさん
垢版 |
2017/12/05(火) 02:12:30.66ID:hFLcfi/C
ローカルルールを守らないスレ荒らしに回答する事は荒らしに加担する事なので慎むように
0372デフォルトの名無しさん
垢版 |
2017/12/05(火) 02:21:01.49ID:yXQoPrVt
クライアントJavaScriptでは

function test(){
console.log('function called');
}
var fnName = "test";
window[fnName]();

みたいな形で変数に関数名を入れて呼ぶことが出来ますが
node.jsでは出来ないのでしょうか?
そのスコープをオブジェクト化ものがあればいいのですが。
0375デフォルトの名無しさん
垢版 |
2017/12/05(火) 22:29:23.97ID:E5nY6LZp
>>372の件ですが
function test(){
console.log('function called');
}
var fnName = "test";
eval(fnName+'()');

で出来ました
evalは使うべきでないものという先入観があってすっかり忘れていましたが、
本当に使うべきではないのかをよく検討すべきですよね?
外からやってきたダーティーな値を引数にする場合や
パフォーマンスがよほどシビアな場合以外は
特に使っても問題ないと思います
どうなのでしょうか?
0378デフォルトの名無しさん
垢版 |
2017/12/05(火) 23:17:41.42ID:bv7GN3wK
eval とか、グローバル変数などは、仕事では使えない

ほとんどの本や、プロジェクトで禁止されている
0379デフォルトの名無しさん
垢版 |
2017/12/06(水) 00:04:27.12ID:6mLln89k
Nodeでは最上位オブジェクト名はglobalまたはrootまたはGLOBALだけど
function test(){}
で定義してもglobal.testにマッピングされないようなので、
global['test']()でも呼び出せないですね。

var a = {};
a.test = function(){};
a['test']();
程度にとどめておくのがいいかと。
0380デフォルトの名無しさん
垢版 |
2017/12/06(水) 00:52:15.86ID:yAnE7imd
ご回答ありがとうございます

>>378
JavaScriptにはスコープのオブジェクトみたいなものがない、
ということが問題なので、グローバルかどうかはあんまり関係ないですよね
関数の中に入れても、
グローバルスコープと違う呼び出し方ができるわけではないので

>>379
たしかに関数を入れるコンテナオブジェクトを用意した方が
コードがすっきりするし、いいですね
関数を配列に入れると可読性が下がるので抵抗があったのですが
オブジェクトに入れればいいんだなって気づきました
ありがとうございました
0382デフォルトの名無しさん
垢版 |
2017/12/06(水) 01:10:47.84ID:yAnE7imd
VSCodeってGit連携もイケてますし、
JavaScript/TypeScript用のプレイグラウンドの拡張機能もありますし
node.jsとの相性最高なのでは?
いまいちイモい感じだったMSが、こんなモダンなエディタを無料で提供するなんて
いい時代ですね

>>381
何故そう思ったんですか?
不思議な発想ですね
0383デフォルトの名無しさん
垢版 |
2017/12/06(水) 07:48:21.64ID:0Ad3mlcJ
>>373
質問スレでは質問と回答以外は禁止とでも言うのか?

それは法律でも憲法でも無いよな
ゴミクズは消えろ
0384デフォルトの名無しさん
垢版 |
2017/12/06(水) 07:50:30.30ID:0Ad3mlcJ
>>376-377
バカでも答えられるバカな質問なので、つい答えたくなるが

荒らしには構うな
0385デフォルトの名無しさん
垢版 |
2017/12/06(水) 10:05:51.53ID:gu2sxgoY
Nodeとか関係なくグローバルオブジェクト=グローバルスコープがJSの仕様何だから>>379は間違いだけどな
0386デフォルトの名無しさん
垢版 |
2017/12/06(水) 15:40:54.20ID:s/vk2t6t
youtubeのapiとかgoogleのとか使いたいときって
NODE。JSというのをインストールすればいいんですか?
NODE.JSというのはサバ―サイドらしいんですけど
サバ―じゃなくてもいいんですか?
0389デフォルトの名無しさん
垢版 |
2017/12/06(水) 17:31:28.95ID:EVkWZnTM
荒らしは質問スレなら問答無用に質問者に偉そうにできると勘違いしているゴミなので
質問者と回答者で協力し、技術圧で追い出しましょう
ひたすら技術的な話だけしていれば自然と消えて行きます
0390デフォルトの名無しさん
垢版 |
2017/12/06(水) 17:57:00.02ID:6mLln89k
>>380
スコープのどこに書くかで動作が若干違います

グローバルスコープで定義するとwindowにマッピングされます

function test1(){}
window.test1(); //呼び出し可能


しかし、関数内で定義した場合はwindowにマッピングされません

(function(){
function test2(){}
window.test2(); // 未定義エラー
})()


>>380の書き方からすると、この違いについて理解されていると思いますが、
スコープの最上位オブジェクトは存在しません(スクリプトからアクセスできない)ので、何かにマッピングされるということはありません

後者の状況でwindowから呼び出したい場合は
window.test2 = function(){};
(Nodeでは global.test2 = function(){}; )
という形で定義する必要があります

が、windowやglobaのプロパティ・メソッドとして定義することは
グローバル変数と同じ扱いなので、あまりお勧めしません
0391デフォルトの名無しさん
垢版 |
2017/12/06(水) 19:25:11.50ID:Gv6Lsm12
普通、各オブジェクトを1つずつ、グローバル変数にはしない。
そうすると、グローバル変数の数が多すぎる

モジュール(1つのファイル)全体で、1つのグローバル変数にする
0392デフォルトの名無しさん
垢版 |
2017/12/06(水) 20:50:30.84ID:E7ZMan5g
韓国人とゆとりは殺せ
この意味が理解されないうちはこのスレが機能することもないだろうさ

>>389
おまえが荒らしだよ
0393デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:44:39.73ID:Nz0YboQ1
くっそ初心者の質問で悪いんですが、
指南してもらえると嬉しいです。
下記のコードで同じ画像を4つ横に並べようと思ってるんですが、並びません。
なんとなく理由は思い浮かぶんですが、
(getElementByIdで渡されたのは値ではなく、参照的扱い?)
どう書けばかっこよく書けるのか分かりません。
かっこいいJavaScripterになりたいので厳しめに教えてください。

<img id="gazou" src="image/gazou.png" width="200" height="200">

var dispGazou= function(){
for(var i = 0; i < 4; i++){
var k = document.getElementById("gazou");
k.style.marginLeft = (parseFloat(k.width) * i) + "px";
dA.appendChild(k);
}
}
0394デフォルトの名無しさん
垢版 |
2017/12/07(木) 00:48:56.51ID:VqpUyywF
>dA.appendChild(k);
dA という変数が存在しない

スタイルの設定など、DOM 操作なら、jQuery が簡単

それと、質問はこのスレよりも、web制作管理板のJS スレで聞いた方が良い。
向こうの板の方が、人が多いから
0397デフォルトの名無しさん
垢版 |
2017/12/07(木) 00:55:39.17ID:kyxQutt+
あ、説明忘れてた。removeAttrしてるのは、
同じIDを複数作ることは許されてないから
0398デフォルトの名無しさん
垢版 |
2017/12/07(木) 03:26:45.64ID:3cBZxP60
>>389
荒らすなゴミクズ
0400デフォルトの名無しさん
垢版 |
2017/12/07(木) 08:39:08.46ID:X4iAmJSx
>>394
すみません。下記が抜けていました。
dA = document.getElementById("dispArea");

<div id="disprArea"></div>

>>396
要素の複製は知りませんでした。
無事解決しました。
ありがとうございます。

レスして頂いたお二方、ありがとうございました。
0401デフォルトの名無しさん
垢版 |
2017/12/07(木) 19:33:03.11ID:UFJ/HYJM
httpモジュールやrouterモジュールを使って
node.jsでちょっとしたサーバを作っています
routerはexpressの一部を切り出したモジュールで、
express同様、
router.use(bodyParser.json());
みたいな感じにミドルウェアを登録します
リクエストボディ関連で良く分からない挙動が出ているので、
bodyParserで処理する前のリクエストボディを確認したいのですが、
どうやればいいのでしょうか?
0402デフォルトの名無しさん
垢版 |
2017/12/07(木) 19:48:15.48ID:UFJ/HYJM
httpのrequestハンドラの中にブレークポイントを設定して
requestオブジェクトを見てみても、それらしいものがないものが見当たりません
socketとかconnectionを持っているので、
これを使ってストリームを読んだりするのでしょうか?
0404デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:52:29.78ID:e0K/WWuz
流されてしまったので>>386もお願いします。
0405デフォルトの名無しさん
垢版 |
2017/12/08(金) 04:08:48.08ID:mLINq33C
>>404
クライアントサイドJavaScript=ブラウザの上で動くJavaScript
サーバサイドJavaScript=OSの上で動くJavaScript

という意味です
Windowsやmacのような一般的なパソコンがあるなら、node.jsも使えますよ
0407デフォルトの名無しさん
垢版 |
2017/12/08(金) 09:04:19.59ID:s68wsKP7
俺も中学でJS知ったときはこんな感じで下手くそな自演して悦に入ってたわ
自尊心は高くアピールしたいけど臆病なんだよな、分かるよ
0409デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:09:34.41ID:ihDnRLCG
node.js界ではrequestにreq、responseにres
という変数名を当てていることが多いようですが
自動補完が発達した今では、
セコい省略をするよりも分かりやすい変数名を付ける方を優先すべき、
と思っていたのでモヤモヤします
reqやresを使う合理的な理由はあるのでしょうか?
0410デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:29:04.97ID:/arVeZ+Z
>>409
ようするに可読性が十分であるかが問題の焦点だよ
長過ぎる名前っていうのも実は場合によっては読みにくい
ローカル変数のような使い捨て変数に長過ぎる名前をつけるなんてありえないから

まず短い名前が許されるのは、その変数のスコープが小さい場合
俺のルールでは一文字の変数に略して良いのは、その変数が一行のスコープしか存在しない場合だな
例えば requests.map(r => foo(r)) みたいな感じな。
なぜ一文字でいいかというと、それはその一行を見るだけでrが何を意味するのかわかるからだ。

reqやresは関数やブロックの中でだけ使われる変数ならOKだ。
大体予想がつき、それを確定するにはその前後数行を読めばいいだけ
だから関数やブロックと言っても短い行数(どんなに長くても30行程度)である必要がある
だけど普通はその程度で書く。書かなければいけないレベル。だから短くても許される

省略してはいけないのは、略称を見ても予想がつかないもの。
この時予想がつくかどうかは、その人のバックグラウンドできまるわけだが
少なくともプログラミングをしているのだからソフトウェア用語は略しても
(スコープが小さいことが前提だが)予想がつく
あとはその業務で誰もがそう略しているといえるようなものだけだなそうでないものは略してはいけない

> 自動補完が発達した今では、
自動補完は「書く時」にサポートしてくれるものであって「読む時」にサポートしてくれるものじゃない。
ぶっちゃけ書く時間というのは無視できる。読むときのほうが何度も読むし時間がかかる

その時コードが読めればそれで十分なんだよ。だから予想がつく略であればOK
そのためにも数十行程度のスコープであることが前提
名前を省略するなっていうのは、とても大きなスコープの場合の話
技術力が高い人ほど、関数の行数は短くなり、わかりやすくなり、略した変数を使う権利が与えられるw

手段と目的を履き違えたらダメだよ。略がいけないのは読んだ人がわかりにくいからで
別にわかりにくくないのであれば、略してOK
0411デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:12:56.78ID:as7dcCOb
>>410
長々と乙だが、お前らゆとりの問題はそこなんだよ。
お前らがそんなレスをしている限り、お前らが居るスレが良スレになることはない。
誰を助けるべきか、よく考えろ。

パヨクがグダグダよく言っているが、あれは単なる論点のすり替えだ。騙されてはいけない。
韓国人やパヨクが嫌われているのは、迷惑行為をしているからでしかない。差別ではなく、区別だ。
お前はこのnode女を飼うつもりなのか?それでスレが良くなるとでも思っているのか?
お花畑すぎるのも、周りの人には大迷惑だということに気づけ。
ここら辺に関してゆとりは全く傍若無人だから嫌われるし、
俺は「ゆとりも殺さないといけない」と結論づけてる。

もっとも、被害を被るのは結局お前らであり、
また、自覚してないようだが、既にそうなっているんだがな。
0412デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:41:15.62ID:ihDnRLCG
>>410
ありがとうございます
resとかreqが使われるのは、コールバックの仮引数です
ローカル変数なので
あえて省略して刹那感を出しているのかもしれませんね
node.jsはモジュールを読み込む変数に一般名詞を使うことが多いので
一般名詞を使うとモジュールっぽく見えてしまう、ということもありそうです

>>411
何を言っているんですか??
馬鹿な人はだいたいネトウヨですね
しかしJavaScriptスレにまでネトウヨが湧くとは・・(呆れ
0416デフォルトの名無しさん
垢版 |
2017/12/09(土) 10:21:28.93ID:/arVeZ+Z
スコープは短く。それができたなら変数名を短くする権利が与えられる
が正解な
0417デフォルトの名無しさん
垢版 |
2017/12/09(土) 10:25:04.49ID:4JIsVpvA
ゴミクズの質問は
1 ゴミクズ以外の誰でも検索すれば一発でわかる
2 正答が存在しないことがわかりきっている

1はローカルルールにやめろとかいてあるし
2はこんな場末の掲示板でやっても見せ合いオナニーにしかならん

本当にゴミクズ
0418デフォルトの名無しさん
垢版 |
2017/12/09(土) 11:15:52.51ID:as7dcCOb
>>412-413
まあお前らが居る限り、
俺がどんだけ努力しても(俺流のやり方では)スレが正常化しないと分かってしまったからね。
俺は田んぼに肥料をやってたくさん米をならすことは出来るが、
それが全部お前らイナゴのエサになってしまうだけだと分かったら、
先にイナゴを殺すしかないだろ。だから、俺は

韓国人死ね
ゆとり死ね

な訳だ。ただし俺が老害化していて、俺の考えが間違っている可能性
(ゆとり流の別解法が存在する可能性)も勿論残っているから、俺はとりあえず傍観モードな訳だ。
お前らの回答には間違いも散見されるが、それについて指摘するつもりもない。
お前らのやり方で正常化するようなら、お前らの勝ちでいいし、俺ら老害は去るべきではある。
ただ本来は、お前らがルールだというのなら、お前らが新たに立てた別スレでやるのが筋であって、
旧来のスレを乗っ取ってやっているお前らにはどだい無理だというのも自明なんだが。
(お前らはお前らだけで人を集めるだけの魅力/能力がない、と自己証明している。
本当に良いスレが出来れば自然と人はそっちに流れるものでしかないんだが)

他言語スレ見て見ろ。JavaScriptのスレが如何に酷いかはよく分かる。
そして、2chのスレはどこでも同じような雰囲気だ。
それは「そういう物しかできないから」であり、また、「そうじゃないと持続しない」からなんだよ。
2chはずっとシステムを変えてない。
その中でお前らみたいに色々努力する奴も必ずいるし、俺も俺なりに抗ってみた時期もある。
でも結局、落ち着いているところに落ち着いている、というのが今の2chだ。
それ以上の物を作るのは相当に難しい。
今なぜこうなっているのかすら理解できないお前らみたいな馬鹿にはこれを凌駕するのは到底無理なわけだが、
まあそれでもお手並み拝見はするべき、だから傍観してる。

>>417の言うことは全く正解だ。
なぜ検索しないのかは俺にもさっぱり分からない。つか、検索した方が早いだろ。
0419デフォルトの名無しさん
垢版 |
2017/12/09(土) 11:59:56.41ID:88o+DXYi
>>412

要は、ある程度普及した略語は略語として扱おう、ぐらいに思っといたら良いと思うよ。
iって変数はだいたいループカウンタだなあ、ぐらい。
0420デフォルトの名無しさん
垢版 |
2017/12/09(土) 13:02:57.59ID:eKIgo3Je
ふと思ったんですが、非同期関数の中から投げられた例外ってどうなるんでしょうか?
処理がtryブロックをとっくに抜けたタイミングで
コールバック関数の中から投げられた例外って、catchできないですよね・・?
0421デフォルトの名無しさん
垢版 |
2017/12/09(土) 13:25:06.55ID:eKIgo3Je
try {
setTimeout(()=>{
throw '!';
},1000);
}catch(e){
console.log('cought:'+e);
}

console.log('tryの外');

とやったら、やはりcatch出来ませんでした
catchする方法はないのでしょうか?
そもそも例外と非同期処理の間に相容れないものがある気がします
処理が失敗した時、
その失敗にどう対応するかは後で考えようという場合に、とりあえず例外を投げるようにしておく、
という方針がありますが
それが使えないということですよね?
0422デフォルトの名無しさん
垢版 |
2017/12/09(土) 13:34:40.91ID:/arVeZ+Z
>>421
setTimeoutはどのオブジェクトに生えてるメソッドだと思う?
そうwindow。いつもは省略しているがwindow.setTimeoutが
正式なメソッド名

だからwindow自身にエラーをキャッチする方法がある
それが何かは俺の次のやつに書かせようw
0426デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:50:28.56ID:zmyZSbxv
>>420-421
オライリーの「初めてのJavaScript 第3版」に書いてあるけど、

例外処理は、コールバック関数の内外とか、
コンテキストが異なるものには、対応できない

co, Koa のジェネレータ・ランナーを使えば、
例外処理を、同期的に書ける
0431デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:18:20.75ID:ML6lMJWk
>>430
確認してもわからないから、どれに対する理由がほしいのかって聞いてるんだが?
言えないなら、それまでってことでいいよ
0432デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:01:28.67ID:Rt5tAWZZ
つまり、

韓国人死ね

だろ。つかマジで、最低限の会話が成立しないと無理だろ。
0434421
垢版 |
2017/12/10(日) 04:52:47.16ID:rMheBEyi
ご回答ありがとうございます
知らない言葉も出てきて、すぐには消化できないのでゆっくり見ていきます
ありがとうございました
0435デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:21:10.58ID:rMheBEyi
とりあえず、初めてのJavaScriptをぽちりました
「Brendan Eichはコンピュータサイエンスに関するしっかりとした知識をもっており、
とても洗練されたアイデアをJavaScriptに注ぎ込みました。
多くの点で時代の最先端を行くもので、
大多数の開発者がその素晴らしさに気づくには15年もの時間がかかりました。」

これは本当にそう思いますねぇ
0437デフォルトの名無しさん
垢版 |
2017/12/10(日) 07:16:37.65ID:ML6lMJWk
>>436
だから何も指摘されるようなことは書いてないって
それなのに指摘すると言うんだから、お前にはそれがどれかを
言う義務がある
0438デフォルトの名無しさん
垢版 |
2017/12/10(日) 07:48:06.08ID:rMheBEyi
>>424の人は、文字通りの単なる荒らしだと思いますよ
JavaScriptにすらたいして興味ないんじゃないですか?
全くなければJavaScriptスレを覗きもしないので、少しは興味があるでしょうが
0439デフォルトの名無しさん
垢版 |
2017/12/10(日) 08:51:23.89ID:Rt5tAWZZ
>>436
分かるとは思うが、そいつは煽り抜きでガチのアスペだぞ。マジでこんな感じ。
> 心理学的に言えば、部分部分でサポートがないと、
> 細かい点は認知していないと言うことが明白ですね。
> http://fanblogs.jp/hasuraa/archive/261/0
こんなところで油売ってるのではなく、病院に行った方がいいと思うんだが。 👀
Rock54: Caution(BBR-MD5:842eac59f97f47c0d6fb1bed016df49c)
0442デフォルトの名無しさん
垢版 |
2017/12/10(日) 14:35:24.89ID:ML6lMJWk
正しいことをしている人に「間違ってる!」とだけ言い放って
どこが?と聞いたら「自分で考えろ!」と言って
討論(?)に勝った気になってるんですよw
0443デフォルトの名無しさん
垢版 |
2017/12/10(日) 14:52:45.19ID:LGKWxZaW
マジレスすると、
>>416 で「が正解な」と言うのは理由なく「間違ってる!」と言っているのと同じでそこが突っ込まれてるんだと思うぞ
もしかすると書いた本人はその気がないのかも知れないが、そう受け取られてしまう書き方だというのを自覚した方がいいよ
0444デフォルトの名無しさん
垢版 |
2017/12/10(日) 15:05:18.12ID:Rt5tAWZZ
>>443
マジレスすると、

ガチアスペ ID:ML6lMJWk
Node糞女荒らし ID:rMheBEyi

以外は全員それ分かってるけどな。
現実として、このレベルで無駄に諍いが起きるほど日本語が不自由なやつは死ねでしかないだろ。
そして当人たちは君や俺が今何言ってるかも理解できないんだぜ。
だって俺のこの書き込みは事の発端のやり取りより難しいわけでさ。マジでどうしようもない。

韓国人死ね マジで

ただなあ、さすがにこのレベルのやり取りは、2chでもなかなかないんだがなあ。
JavaScriptだけ異常に馬鹿揃いなのは本当に不思議なんだが。
0445デフォルトの名無しさん
垢版 |
2017/12/10(日) 16:45:18.19ID:uhJerKM5
今Javascript勉強中の初心者です。、
HTML、cssもある程度読み書きいけるようになってきたのですが、
jQueryに手を出そうと考えています。
そこで質問なのですが、
実際の業務では、jQueryは使われるものなのでしょうか?
それとも実際の業務ではJavascriptはバニラのような状態で使用されるものなのでしょうか?
業務経験者の方がいらっしゃったら教えていただけたらと思います。
0447デフォルトの名無しさん
垢版 |
2017/12/10(日) 18:06:39.50ID:uhJerKM5
>>446
ありがとうございます。
jQueryも使えるように取り組みます。
業務がVB.NET()なので、
Javascript楽しくて仕方ないです。
転職できるように頑張ろうと思います。
0448デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:02:11.89ID:QIqSykkT
「初めてのJavaScript」を読んでいますが
配列を
['a',
'b',
'c',]
みたいに末尾要素の後ろにコンマを書く書き方って、今では許容されているのですね
これはPHPでは出来るのにJavaScriptでは出来ない書き方だと思っていましたが、
JavaScriptの仕様からすると本来出来るもので、
実装が仕様に追いついてきたとのこと。
時代は進歩しているものですね?
0450デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:10:53.52ID:i9S99WfY
今では関数定義や呼び出しの引数でも末尾カンマ使えるよ
っていうか配列の末尾カンマ問題はただ古いIEがJScript実装だったってことで
IE9以降はオブジェクトも含めて問題ないでしょ
0451デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:43:06.76ID:K5F4H8OZ
>>449
昔のJavaScriptの仕様だと許されてなくてJSONはそれに準拠している。
許されるようになったのはES5あたりじゃなかったかな。
0452デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:44:23.68ID:ML6lMJWk
JavaScriptは配列に限って昔から末尾のカンマを許容していた
ECMAScript 3では、末尾のカンマは許容されていなかった
ECMAScript 5.1では、配列とオブジェクトの両方で末尾のカンマは許容される
ECMAScript 2017では、関数の引数の末尾のカンマが許容されるようになった
0453デフォルトの名無しさん
垢版 |
2017/12/11(月) 22:16:57.15ID:+TRAJ54C
ID:eKIgo3Je = ID:rMheBEyi = ID:uhJerKM5 = ID:QIqSykkT な。
まあお前らがその程度だからこのスレもこの程度なんだが。
0460デフォルトの名無しさん
垢版 |
2017/12/12(火) 11:31:40.43ID:tSfAvCPq
普通のアプリケーションとは
プログラムをテキストファイルにかいて
インタープリターに送ると
アプリケーションが始まるものです。
0461デフォルトの名無しさん
垢版 |
2017/12/12(火) 14:28:11.85ID:YM2U+6VB
Nodeはどちらかと言うとバッチのイメージ
OS上で動く普通のアプリをJSで書きたいのならWinストアアプリとかの方向なんじゃないかな
もしくはWeb技術使いたいのならElectronとかから、単純なWebアプリまで沢山選択肢はある
0462デフォルトの名無しさん
垢版 |
2017/12/12(火) 14:56:29.79ID:m2RQFNY8
クロージャというのは、
周囲のスコープを保持している関数のことでも、
関数を「包み込んでいる」スコープのことでもなく、
スコープと関数をまるごと包み込んでいる目に見えない何かのことなのでしょうか?
今までは、周囲のスコープを保持している関数のことを、
スコープを閉じ込めたもの=クロージャ、だと思っていましたが
「初めてのJavaScript」を読むとどうも違うようです
0463デフォルトの名無しさん
垢版 |
2017/12/12(火) 15:06:14.25ID:m2RQFNY8
関数=コードとして目に見える
スコープ=ブロックや関数という形で目に見える
クロージャ=目に見えない抽象的な概念

という感じでしょうか?
これはなかなか理解しにくいですよね
「初めてのJavaScript」は、とてもいい本、
おそらくJavaScript本の中で最良の部類の本ですが、
書名から連想するような初心者向けの本では全くないですね!
0465デフォルトの名無しさん
垢版 |
2017/12/12(火) 16:27:23.61ID:abEQ9Zko
あいかわらず、検索すらしないゴミクズ
スレ荒らしには構わないように
0466デフォルトの名無しさん
垢版 |
2017/12/12(火) 19:02:11.06ID:dRU/liaf
クロージャーは一種の記憶メモリ的な感じ?
0467デフォルトの名無しさん
垢版 |
2017/12/12(火) 21:14:31.67ID:m2RQFNY8
本来一回限りで消えてしまう関数スコープを
無名関数にそれへの参照を保持させることですぐには消えないものにする
という一種のテクニックです
技術的にはそんなに難解ではないのですが、
用語法が分かりにくいんですよね
クロージャって何のこと指して言ってるの?っていう。

>>465
ハーゲ
0469デフォルトの名無しさん
垢版 |
2017/12/13(水) 00:22:32.40ID:SAZcFDe1
var outFunc = function(){
var count = 0;
return function(){ return ++count; };
}();

console.log(outFunc()); // 1
console.log(outFunc()); // 2

クロージャは静的スコープ。簡易クラス

内側の関数から見て、スコープ外のcount を使っている。
一見、スコープの外側の環境を閉じ込めているように見えるが、
実際にはその変数をコピーしておらず、ただ参照しているだけなので要注意!

内側の関数を戻した、外側のoutFunc をクラスと見れば、
count がメンバー変数(プロパティ)で、内側の関数がメソッドになる。
メソッドでメンバー変数を更新すれば、更新後のメンバー変数が保持されるのは当たり前
0470デフォルトの名無しさん
垢版 |
2017/12/13(水) 00:29:51.85ID:SAZcFDe1
初めてのJavaScript 第3版、オライリー、2017

これを読むには、数年以上の勉強が必要。
ES6(2015) の本だから、Babel で、ES5 に変換して実行する。
初心者は、ES3, ES5, ES6 の順番に勉強する方が良い

特に、ES6ではクラス構文もできて、
オブジェクト指向に近くなったから、難易度が急上昇した

漏れは、10言語は知っているけど、この本に苦戦中
0471デフォルトの名無しさん
垢版 |
2017/12/13(水) 07:14:43.01ID:u+kiVKe2
>>466
>>469
荒らしに反応することもスレ荒らし
そんな事もわからないボケにふさわしく、理解不足なレスを返しているところは笑えるが
ここはネタスレじゃ無いので引っ込んでろ
0472デフォルトの名無しさん
垢版 |
2017/12/13(水) 07:29:26.28ID:u+kiVKe2
>>467

> ですから自分がまず質問スレですることは、あなたのような連中を追い出すことです
ハーゲとレスする事でした 大爆笑
0473デフォルトの名無しさん
垢版 |
2017/12/13(水) 07:30:57.93ID:u+kiVKe2
>>467
ハーゲ

これで追い出せるのかな 大爆笑
0474デフォルトの名無しさん
垢版 |
2017/12/13(水) 11:05:15.10ID:p2PjkbUD
>>469
ありがとうございます
たしかにふるまいはクラスに似ていますね
静的スコープというのはレキシカルスコープというやつですね
たまに本の中で見かけるけど、良く分からず、分からないままにしていた言葉です
いま検索したところ、「JavaScript Good Parts」の中に
「JavaScriptの関数は、(大部分は)レキシカルなスコープを持つファーストクラスオブジェクトである」
と言及がありました。しかしその後、「レキシカルなスコープ」については説明がない
こんな風に、ただ出てくるだけの言葉、という印象があり、
今まで流していたのですが、これを機に勉強したいと思います
ありがとうございました
0475デフォルトの名無しさん
垢版 |
2017/12/13(水) 15:17:12.86ID:OuVjfgAH
>>474の件ですが
レキシカルスコープを分からなかったというより
ダイナミックスコープを知らなかっただけでした
ダイナミックスコープはコードの実行時にコールスタックを辿って変数を決める方式で
関数の中でローカルとして宣言されていない変数を見つけると、
処理系はコールスタックを辿り、呼び出し元のスコープの中で変数を探す
それを変数が見つかるか、グローバルスコープに突き当たるまで繰り返す
そういうものが
ダイナミックスコープだというのですが、
そんなの見たことがありません
それもそのはずで、
現代のプログラミング言語のほとんどがレキシカルスコープを採用しているとのこと。
そしてレキシカルスコープはダイナミックではないスコープ、
つまり現代のほとんどのプログラマーが「スコープとはこういうものだ」
と考えているスコープです
つまり構文の包含関係によって変数が決められる方式です
構文の包含関係に基づくので、変数が解決されるのは構文解析時です
そんなわけで普段プログラムを書いていて、
レキシカルスコープとダイナミックスコープの違いを意識することはあまりなさそうですが
処理系の内部動作にまで視点を広げた時には、
興味深いトピックとして立ち上がってきそうですね
0476デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:01:59.92ID:u+kiVKe2
>>474-475,469
まずは、ローカルルールなんか守らなくて良いとほざいてるゴミクズとそれにレスするカスを追い出そう

ハーゲ
0478デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:58:36.06ID:uoR9h+SG
ググれないブス >>475
朴訥おじさん >>470
ガチアスペ >>431

の3人で別スレ立てて、好きなようにやってみろ。
俺はそっちには行かないし、そこが繁盛するならそれでいいし。


お前らが駄目なのは、良い物をより良い物が倒す実力主義ではなく、
良い国に悪い韓国人がたかる背乗り主義だからなんだよ。
だから少しマシになってもすぐお前らによって潰されてしまう。
しかもお前らはそれを未だに自覚できてない。学習能力0だなマジで。


韓国人死ね


脱線するが、経団連もこの辺完全にお花畑老害になっている。
自分達の国を自分達で改善できないゴキブリ韓国人なんて呼んだ所で、
この国が良くなる筈もない。悪くなるに決まっている。
だから移民なんてそんなに簡単じゃない。

お前らがスレを上手く運営できると思っているのなら、
実際にお前らで別スレを立てて繁盛させ、結果的に人をそこに集め、旧来のスレを殺してみせろ。
これは実力主義であり、正しいスレの殺し方だ。
ゴキブリ韓国人流の背乗り主義はマジでやめろ。誰の為にもならない。
0479デフォルトの名無しさん
垢版 |
2017/12/13(水) 22:26:39.76ID:OuVjfgAH
何か気持ち悪い人が棲息していますが昔からなんでしょうか?
質問者と回答者で力を合わせて浄化を目指しましょう
0481デフォルトの名無しさん
垢版 |
2017/12/13(水) 22:54:52.19ID:OuVjfgAH
ちなみに>>474のJavaScript Good Partsの箇所ですが
JavaScriptでJavaScriptを実装するという面白い試みを紹介している箇所だったので
その記事が載っている「ビューティフルコード」をぽちりました
少し読みましたが、これも良書のにおいがプンプンします
こういうセレンディピティが起きるのが質問スレの醍醐味ですね
0482デフォルトの名無しさん
垢版 |
2017/12/14(木) 01:38:00.53ID:bGPtLfUR
静的スコープは、Ruby, Groovy では、{ }, block で作れる。
モジュール・クラスも、{ }で囲むだけで、スコープを作れる

でも、JS では、スコープの機能は、function にしたから、
スコープを作るために、functionをネストしなければならない。
モジュール・クラスのスコープを作る場合も、functionを使わなければならない

つまり、スコープと関数の概念を切り離せていない。
関数スコープだけなのは、Python と同じ

でも、Ruby, Groovy では、ネストしなくてよい

Rubyのblock(処理)を、オブジェクトとして持ち運ぶ場合は、
proc に変換して、どこでも実行できる。
つまり、第一級関数と同じ

JS みたいに、functionを使って、スコープを作るのは、ややこしいだけ
0483デフォルトの名無しさん
垢版 |
2017/12/14(木) 01:39:01.61ID:LEbaYuuB
>>432
あー、うん。数年前の知識だね。
今じゃ当てはまらないから、そのレスは無視するね
ゴミ、捨てるね
0484デフォルトの名無しさん
垢版 |
2017/12/14(木) 01:43:59.68ID:LEbaYuuB
JavaScriptの場合は

let func = () => console.log("ok");

func()
みたいにして実行できるけど、

Rubyだと、

func.call() みたいにしないといけないのがダサいんだよな
callってなんだよwww
0485デフォルトの名無しさん
垢版 |
2017/12/14(木) 02:02:21.42ID:LEbaYuuB
http://hamuhamu.hatenablog.jp/entry/2015/05/01/050530

> Rubyのメソッドは、変数への代入が出来ないので、第一級オブジェクトではない。
> 第一級オブジェクトではないから変数への代入が出来ないといったほうが正しいのかも。
>
> Rubyのメソッドをクロージャとして扱うには Proc や lambda を使います。
> 厳密に言うと Rubyにおいて Proc や lambda を扱ったものは、第一級オブジェクトではないらしい。
0486482
垢版 |
2017/12/14(木) 03:26:42.01ID:bGPtLfUR
まあ漏れが言いたかったのは、JS のfunction を使う場合、
別に関数として呼び出すわけじゃない

多くの場合、スコープが欲しいだけだから、{ } で十分。
一々、function を使わされるのが、誤解を招く

言語に、関数スコープしか無いから
0488デフォルトの名無しさん
垢版 |
2017/12/15(金) 02:30:34.13ID:OK9q/vji
まあ何でもかんでも{}で足りるというわけでもない
その点での即時関数の代わりにGoogleが推してるdo文は実際欲しい
O.oの二の舞いにならなければよいが
0489デフォルトの名無しさん
垢版 |
2017/12/15(金) 02:54:50.32ID:/sicteF5
純粋関数を
1.同じ入力に対しては同じ出力を返す。
2.「副作用」をもたない。つまりプログラムの状態を変えない。
と「初めてのJavaScript」は説明します
そして関数外部にあった変数をクロージャに含んで、
スタティック変数のように使うようにしたことを、「副作用がなくなった」と言います
スタティック変数的な変数であっても
「プログラムの状態」には変わりがないのでは?
とも思うのですが、ここでいう「プログラムの状態」というのは、
関数の外の変数、という意味なのでしょうか?
またオブジェクトのメンバを変更するオブジェクトメソッドは
副作用があるのでしょうか?ないのでしょうか?
0490デフォルトの名無しさん
垢版 |
2017/12/15(金) 07:29:42.36ID:yuhdgz4g
またgoogle一発で回答に辿りつける質問をしてやがる
相当に知能が低いんだろうな

荒らすな ハーゲ
0491デフォルトの名無しさん
垢版 |
2017/12/15(金) 12:20:54.74ID:/sicteF5
>>490
またハゲた発想ですね〜
ツルッパゲです
ググったんですか?見つかったんですか?
それならそれをここに書けばいいのです
ググって見つかってはい終わりじゃないんですよ
情報は検討しなければならないのです
ネットに書かれてあればそれが事実だ、真実だ、とはならないんです
そのために質問スレがあるのです
分かりますね?
0492デフォルトの名無しさん
垢版 |
2017/12/15(金) 19:10:29.62ID:OK9q/vji
>>489
定義は難しいというか、本来プログラミング言語のものではないので無理がある
例えば同じ引数を与えると必ず同じ値を返す関数と言ってもいいが、
内部的にMathを利用していて、それが書き換えられた場合まで突かれると厳しい
まあそこまで厳密ではなくて良いとすれば、反対にMathのような関数外の変数を書き換える
関数と言っても良いが、これでもループを形成すれば副作用的なものは作れる(モナド)

結局純粋関数かどうかなんて実用的なプログラミング言語には関係ない話で考えなくても良い
それよりかは、「外部変数を書き換えないようにする」とかもっと具体的な部分に注目したほうが良い
0493デフォルトの名無しさん
垢版 |
2017/12/15(金) 19:40:38.29ID:yuhdgz4g
>>491
普通に検索すれば一発でたどり着くしわかりきっている事なので普通のスレ住民には問題無い

ローカルルールなど知らんと宣言してるスレ荒らしの無能さに起因する事情など考えてやる必要はない

消えろ ハーゲ
0494デフォルトの名無しさん
垢版 |
2017/12/15(金) 22:49:36.49ID:QRFEcBGB
>>489
>>491
ググレブス
ゴキブリ韓国人死ね

本当にお前の投稿が他の人の役に立つと思っているのなら、結果で示せ。
新スレを立てて、お前の投稿を繰り返し、人が集まるかどうかやってみろ。
本当に良いスレなら自然と人が集まるものだ。

これすら試す勇気もないのだから、お前はゴキブリ韓国人と同レベルだよ。
0495デフォルトの名無しさん
垢版 |
2017/12/16(土) 00:32:27.16ID:ArLhqftT
>>489
クロージャ内の変数が更新されても、副作用はある。
状態が変化した

ただ、外部には副作用がないから、内部に限定した・封じ込めたという意味
0496デフォルトの名無しさん
垢版 |
2017/12/16(土) 03:45:36.96ID:cfKhsYp6
ご回答ありがとうございます
>>492
モナドと言う語をプログラミング周辺で初めて聞きましたが
関数型言語の用語なんですね

>>495
やはりそうですか
引数も変えず、外の変数も変えず、
ただ返り値だけを自由に出来るのが副作用のない関数なのでしょうね

>>493-494
あなたがたは(一人かも知れませんが)何一つ代わり映えのしない不毛な戯言を
ロボットのように延々と繰り返していますが、なんでこのスレにいるんですか?
0497デフォルトの名無しさん
垢版 |
2017/12/16(土) 09:08:48.12ID:TBmZZU6f
>>492
>>495
お前も迷惑だからそのブスと他スレ立てて出て行け

良い事をしているつもりならそれは完全に勘違いだ
犯罪者に対してエサをやることは反社会行為だ
ちゃんと自覚しろ

そもそもお前らがこのスレに固執する意味はないはずだ
なぜここで迷惑行為を続ける?他スレ立てれば済む話だろ
Web板にも捨てるほどスレはあるし

>>496
死ねよブス
0498デフォルトの名無しさん
垢版 |
2017/12/16(土) 12:17:20.92ID:PI7Fni2Y
ブックマークレットに登録したMutationObserverを使って変更を検知できるようになったのですが、
ページがリロードされるとMutationObserverで登録した処理が
無効になってしまいます。どうすればいいでしょうか。
0499デフォルトの名無しさん
垢版 |
2017/12/16(土) 12:25:26.17ID:plaGBrRo
>>498
ブックマークレットは自動的に実行できないので
ページ開いた時に実行できるブラウザ拡張機能を使用する
例えば、Tampermonkey とかな

ちなみに俺はこれを使って、ページを開いたらすぐに
ダウンロードボタンを押すようにしているw
0502デフォルトの名無しさん
垢版 |
2017/12/17(日) 18:01:20.58ID:RetSeKI5
配列についての質問なのですが、
配列にプロパティを持たせたい場合、
どのように宣言すれば良いでしょうか。
下記のようなことがしたいと考えています。

var cell = new Array(3){
プロパティ1つ目 x;
プロパティ2つ目 y;
};

上記のようなことがしたい場合、
x,yの要素を持つクラスを作成し、
配列でインスタンスを作成するしかないでしょうか?

何か良い方法があれば御指南頂ければと思います。
よろしくお願いします。
0503デフォルトの名無しさん
垢版 |
2017/12/18(月) 01:18:31.16ID:TbHEuMcS
あるクラスのインスタンスを、欲しい数だけ作る

それらを、配列(入れ物・コンテナ)に入れる
0504デフォルトの名無しさん
垢版 |
2017/12/18(月) 02:24:48.51ID:AyELD5Wz
var cell = new Array(3);
としたなら、cellはArrayのインスタンス

>x,yの要素を持つクラスを作成し、
>配列でインスタンスを作成するしかないでしょうか?

この辺の意味が分からんけど、

cell.プロパティ1つ目 = x;
cell.プロパティ2つ目 = y;

としない、またはできない理由は何?
0505デフォルトの名無しさん
垢版 |
2017/12/18(月) 03:52:52.68ID:y8UTlrAF
よく分からんが、
3x3の2次元配列を用意してcell[x][y]とアクセスできるCellクラスを作りたいってことか?
0506デフォルトの名無しさん
垢版 |
2017/12/18(月) 05:39:05.31ID:y8UTlrAF
それとも
cell[0]へのアクセサcell.x
cell[1]へのアクセサcell.y
を定義したいということだろうか
0507502
垢版 |
2017/12/18(月) 09:08:59.64ID:GCevG/T9
質問が悪く、すみません。
アクセスの仕方としては、

cell[0].x = 保管したい値1;
cell[0].y = 保管したい値2;

のような感じです。

オセロの作成を色々手探りでやっているのですが、
cellには画像、x座標、y座標のデータを持たせて、
画像のクリックイベントで格納しておいたx座標y座標を使いたいと考えています。
cellのインデックスには空、白、黒の3つを割り当てたいと考えています。

長々とすみません。
0508デフォルトの名無しさん
垢版 |
2017/12/18(月) 11:48:27.42ID:QFnOzmP0
{x,y}の配列が作りたいって事ね
一時はTypedObjectとかあったけど、
まあそれに倣わなくても地道にループで初期化するので良いと思うけどね
どうしても最大限抽象化したいのならProxyArray案もあるけど
0509デフォルトの名無しさん
垢版 |
2017/12/18(月) 12:01:43.50ID:gMlWIj9K
>cellのインデックスには空、白、黒の3つを割り当てたいと考えています。

これがよくわからん
0510デフォルトの名無しさん
垢版 |
2017/12/18(月) 12:05:17.13ID:AyELD5Wz
cell[0] = {};
cell[0].x = 保管したい値1;
cell[0].y = 保管したい値2;

cell[0]はObjectクラスのインスタンスとも言えるけど、そこまで深く考えなくてもいいと思う
0511502
垢版 |
2017/12/18(月) 23:23:12.95ID:GCevG/T9
日本語が不自由ですみません...

やりたかったのは>>510さんのようなことでした。
これで作ってみようと思います。

ありがとうございました。
0512デフォルトの名無しさん
垢版 |
2017/12/18(月) 23:28:13.94ID:SUjpjhtq
おいおい、ここまで話を進めたのはいいけど、
最初の初期化であれば普通はこう書くだろ?

var cell = [{x: 値1, y:値2}];
0514デフォルトの名無しさん
垢版 |
2017/12/18(月) 23:56:31.62ID:TbHEuMcS
普通に、マス目のクラスを作って、メソッドも加える

そのインスタンスを、64個作って、配列に入れておく
0515デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:41:12.80ID:XZb67Fvp
他のゲームならコマのオブジェクトを作るほうがいいかもしれんけど
オセロなら8x8のマスのオブジェクトに空・白・黒の状態持たせたほうがいいよねぇ
0516デフォルトの名無しさん
垢版 |
2017/12/20(水) 00:05:23.45ID:I9jY9U5H
すみません、もしこのスレで
axiosを使っている人がいましたら
伺いたいのですが

activexobject(microsoft.xmlhttp)を呼び出す方法と
もしそれがなければ改造方法の指南を受けたいです。
よろしくお願いします。
0518デフォルトの名無しさん
垢版 |
2017/12/20(水) 07:56:45.40ID:LPYqovlm
クラウドワークスやランサーズで作成依頼しなよ
0519516
垢版 |
2017/12/20(水) 23:53:51.72ID:I9jY9U5H
すみません、
Vueのコンポーネント作成で使いたいと思いました。
昔のIEでローカル配置データの読み込みができたらと考えていました。
0520デフォルトの名無しさん
垢版 |
2017/12/21(木) 00:18:55.83ID:hxAUg2rz
ローカルファイルとか、OS のネイティブAPI を使うのなら、Electron。
Electron から、Angular, React, Vue を使う

Electronではじめるアプリ開発
~JavaScript/HTML/CSSでデスクトップアプリを作ろう
野口 将人・倉見 洋輔、2017
0521デフォルトの名無しさん
垢版 |
2017/12/21(木) 16:16:41.07ID:id1EZsfE
分かりにくくて申し訳ないです。

<body onload=“function a();”>


function a(){
sum = new Sum()
}


function Sum(){
...........略
}

3つのカタマリ は別ファイルなのですが、実行するとUncaught ReferenceError:Sum is not difinedと出てしまいます。
不備が分かる方、問題点を教えていただけるととても助かります。

上から順にHTML. script.js script-2jsで
javascriptはscriptタグを2つ並べて参照しました。
<script>〜</script>
<script>〜</script>
0523デフォルトの名無しさん
垢版 |
2017/12/21(木) 17:32:55.79ID:id1EZsfE
>>522
順序を入れ替えましたが、ダメでした.......
0524デフォルトの名無しさん
垢版 |
2017/12/21(木) 18:59:15.11ID:oRquw3RP
まともに質問できないゴミクズ質問者に見当違いの答えを返すアホ回答者
ゴミクズ質問者のせいで終わったスレ

原因は確実に9文字のアレだな
0525デフォルトの名無しさん
垢版 |
2017/12/21(木) 19:32:01.61ID:id1EZsfE
>>524
その9文字を教えていただけると助かります
0527デフォルトの名無しさん
垢版 |
2017/12/21(木) 21:10:06.93ID:0DSNwaJI
3つのファイルは同じ場所にあるの?
後aとSumはもういいからhtmlを省略せずに示してくれると分かりやすい
0528デフォルトの名無しさん
垢版 |
2017/12/21(木) 23:24:13.84ID:hxAUg2rz
><body onload=“function a();”>
全角文字を使うな。
半角ダブルクォーテーションにする

<body onload="function a();">
0529デフォルトの名無しさん
垢版 |
2017/12/22(金) 19:09:03.87ID:qarTviTk
>>527
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>gaming</title>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
<script src="script-2.js"></script>
<script src="script-3.js"></script>
<script src="script-4.js"></script>
<body onload="initial()">
<h1>javascript game!</h1>
<p>click here to start game</p>
<canvas id="canvas" style="background-color:#eef;" width="800" height="400" onclick="start();">
<audio id="item_get" preload="auto">
<source src="item _get.mp3" type="audio/mp3"></audio>


</body></html>

コピペする時点で、変な処理が加わった可能性もあるのですが、構造はこのようです。
0530デフォルトの名無しさん
垢版 |
2017/12/22(金) 19:17:47.53ID:qarTviTk
>>529
>>521のa();に当たる部分がinitial();でinitial();に含まれる処理→Sumがdefinedになってしまいます。
どうぞよろしくお願いします
0531デフォルトの名無しさん
垢版 |
2017/12/22(金) 19:19:43.35ID:qarTviTk
>>529
何度も連投で申し訳ないのですが、initial()が含まれるのがscript-4
Sum();が含まれるのがscript-3です
0532デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:19:07.25ID:6yk8gXaG
>>531
めんどくせーから、やり方教えるから自分でやれ

まずひとつのファイルに書いて動くかどうか確認しろ
動かなかったら動くと思うところまで削って確認しろ

動いたら、ファイルを分けるなどして動かなくなる
ところまで戻していけ

そうすりゃどこに原因が有るかわかる
0533デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:35:37.49ID:qarTviTk
>>532
そうですね、自分でいろいろいじってやってみます!
0534デフォルトの名無しさん
垢版 |
2017/12/22(金) 23:01:02.77ID:RZt5N+k9
そんなにファイルを分けているなら、CommonJS でも使えば?

Node.js, Electron, Webpack, Babel, jQuery とか
0535デフォルトの名無しさん
垢版 |
2017/12/23(土) 00:09:58.18ID:p1jtMZEV
オブザーバーの利点が今ひとつ解らない。
カスタムイベント用意して
個別にそのイベントリスナー登録すればすむのに
管理オブジェクトがオブザーバーリスト持ったり
専用の関数を継承したり等
何故態々面倒な事をするのだろうか。
0536デフォルトの名無しさん
垢版 |
2017/12/23(土) 00:51:49.01ID:FPRjmoIB
Mediator
中央管制塔のように全体を統轄する

「Observer Mediator」で検索!

自分でやったら、イベントの削除とかが面倒くさい。
削除しなかったら、ずっとメモリを使い続ける(メモリリーク)

イベントを取り付けた要素の、先祖の要素が削除された場合に、
イベントを削除する機会を失うから、メモリリークになる

jQuery では、そういう場合でも、メモリリークにならないから、すごい!
0537デフォルトの名無しさん
垢版 |
2017/12/23(土) 05:07:57.15ID:SOP9Z5sy
もう随分前からNative-JS間の循環参照の問題は解決して
参照が残ってなければ消えるけどな
ネイティブの実装も極めて特定の場合に参照が残っている場合でも消えてしまうんだが
jQueryはそれをより気にせずアグレッシブに消すというだけで良し悪しがある
0538536
垢版 |
2017/12/23(土) 23:45:25.73ID:FPRjmoIB
Backbone.js ではメモリリークになるけど、

jQuery ではならない、って聞いた
0539デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:34:11.59ID:WeE5WMFr
node.jsでのファイルの存在確認には
fsモジュールのaccessメソッドが使われますが、
ファイルがないと例外が投げられます(同期の場合)
この挙動おかしくないですか?
ファイルがあるならtrue、ないならfalseを返せばいいはずです
例外は何かしら例外的な事象を知らせるために投げられるものですが
ファイルの有無を調べるメソッドにおいて、
ファイルがないことは例外的事象でも何でもありません
何でこんなことになってるのでしょうか?
0540デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:43:46.49ID:o8ETW9H4
下記のコードについて質問です。
配列内容をシャッフルするコードのようなのですが、
forの動作に疑問を持ったので教えて頂ければと思います。

・,(カンマ)で区切ってある箇所は連続して処理されるという認識で間違いないでしょうか?
・for文が止まる理由は、for文の真ん中の条件式の k; が0になる=false と判断されるということでしょうか?

Array.prototype.shuffle = function() {

for(var j, x, k = this.length; k; j = Math.floor(Math.random() * k), x = this[--k], this[k] = this[j], this[j] = x);

return this;
};


質問が分かりづらかったらすみません。
よろしくお願いします。
0542デフォルトの名無しさん
垢版 |
2017/12/24(日) 15:41:38.56ID:A3ERayLu
>>540
意味がわからないのは、そのコードの可読性が低いから、
だめだよ。そんな書き方をしたら

普通に書こう。前提として for(ここ; ここ; ここ) の「ここ」の部分は省略できる

まず、一番目の「ここ」は初期化なのだから forの外に移動できる

Array.prototype.shuffle = function() {
 var j, x, k = this.length;
 for(; k; j = Math.floor(Math.random() * k), x = this[--k], this[k] = this[j], this[j] = x);
 return this;
};

そして、3番目の「ここ」はループの中に入れることができる

Array.prototype.shuffle = function() {
 var j, x, k = this.length;
 for(; k;) {
  j = Math.floor(Math.random() * k), x = this[--k], this[k] = this[j], this[j] = x
 }
 return this;
};
0543デフォルトの名無しさん
垢版 |
2017/12/24(日) 15:45:14.80ID:A3ERayLu
あとは整形しよう

Array.prototype.shuffle = function() {
 var j, x, k = this.length;
 for(; k;) {
  j = Math.floor(Math.random() * k);
   x = this[--k];
   this[k] = this[j];
   this[j] = x;
 }
 return this;
};

そしてforではなくwhile使ったりと普通の書き方に書き直す

Array.prototype.shuffle = function() {
 var k = this.length;
 while(k) {
  var j = Math.floor(Math.random() * k);
  k--;
  var x = this[k];
  this[k] = this[j];
  this[j] = x;
 }
 return this;
};
0544デフォルトの名無しさん
垢版 |
2017/12/24(日) 16:00:39.17ID:A3ERayLu
ES6使った最新の書き方だとこうなるかな

Array.prototype.shuffle = function() {
 for (let i = this.length; i > 0; i--) {
  const a = i - 1;
  const b = Math.floor(Math.random() * i);
  [this[a], this[b]] = [this[b], this[a]];
}
 return this;
};
console.log([0,1,2,3,4,5,6,7,8,9].shuffle());

そしてlodashにはshuffle関数は用意されてるので何も作る必要はないw

https://lodash.com/docs/4.17.4#shuffle
0545540
垢版 |
2017/12/24(日) 16:21:10.56ID:o8ETW9H4
>>541-544
返信ありがとうございます。
Javascriptはライブラリが豊富なんですね。
もっと勉強してライブラリも扱えるように頑張ります。
0549デフォルトの名無しさん
垢版 |
2017/12/25(月) 20:32:26.17ID:A5UkwOIg
loadash使うなら別に>>540のコードの可読性なんて関係ないし
ケツつけ無くてもそのまま使えばいいよね
それともloadashの中身も読めってことかな?
0550デフォルトの名無しさん
垢版 |
2017/12/26(火) 04:19:36.08ID:TqP2PjCC
今回は仕事でデバッグするわけじゃないんだから可動性は関係ない
勉強では可読性は時間をかけてほぐせばいいだけ
ただ初心者はアルゴリズムの理解力がないからどのみち他人のコードを読むのは辛いのが当たり前
0551デフォルトの名無しさん
垢版 |
2017/12/26(火) 13:57:09.06ID:92mUXoN6
youtube player api で動画を再生しているdivの画像を取得
(youtube動画のフレーム画像を取得)
する方法はありますか?
0553デフォルトの名無しさん
垢版 |
2017/12/26(火) 18:26:24.24ID:rRAcDTGz
素人なりに firefox の addon を書いている最中なのですが
それに適した質問スレなどはありますか
このスレが最適でしょうか
0554デフォルトの名無しさん
垢版 |
2017/12/26(火) 21:25:20.55ID:TqP2PjCC
今の拡張機能界はChromeベースのがWeb標準になって
Firefox/Edgeもそれとかなりの互換性持ってるから
ここで聞いても答えてくれやすいと思うよ
結構難しいAPIも多いしね
0557デフォルトの名無しさん
垢版 |
2017/12/28(木) 12:36:05.48ID:YvqDgyTx
イマドキのJavaScriptの書き方2018
https://qiita.com/shibukawa/items/19ab5c381bbb2e09d0d9
これの「辞書・ハッシュ用途はオブジェクトではなくてMapを使う」
っていうところですが、
オブジェクトをハッシュとして使うことのデメリットなんて実際上ないし、
Mapの書き方の方がイケてないと思うのですが、どうなのでしょうか?
特にMapオブジェクト生成時に、キーと値を配列で渡しているのが気になります
そもそもオブジェクトをハッシュとして使うというアイデアからJSONが生まれて
JSONが現在も広く使われているのに、
わざわざMapに書き換えるのってアホくさいと思います
そうですね?
0561デフォルトの名無しさん
垢版 |
2017/12/28(木) 13:09:05.03ID:YvqDgyTx
オブジェクトではキーと値の一対一の対応が明確なのに
Mapオブジェクトを使う方法ではそこここに配列が介在していて
そのあたりがぼやけています
これはハッシュ専用のオブジェクトを使うというアリバイだけのために
支払うコストとしては多すぎます
そうですね?

>>560
ハーゲ
0563デフォルトの名無しさん
垢版 |
2017/12/28(木) 16:16:29.91ID:YvqDgyTx
なるほど
それはオブジェクトにはないメリットですね
用途によっては適所がありそうです
ありがとうございました
0565デフォルトの名無しさん
垢版 |
2017/12/28(木) 20:42:21.94ID:E7wukrMJ
本当にゴミクズ ドキュメントに書いてある事を指摘されて
「なるほど」

生きている価値がない
0566デフォルトの名無しさん
垢版 |
2017/12/28(木) 20:45:46.92ID:E7wukrMJ
>>562
ゴミクズは能力最底辺なので、初心者でさえ回答できる質問しか出来ない
したがって簡単に答えられるが
荒らしにエサを与えるな

わかったかね 以後注意するように
0567デフォルトの名無しさん
垢版 |
2017/12/28(木) 21:27:26.25ID:MFN1+dHK
>>566
相変わらすハゲですね〜
オブジェクトをハッシュとして使ってきた用法に関しては
依然としてオブジェクトの方がいいと思いますよ
ただMapにはMapの使い道がある、と言っているのです
分かりますね?
0569デフォルトの名無しさん
垢版 |
2017/12/28(木) 22:08:55.36ID:E7wukrMJ
>>566
荒らしにエサを与えると>>567のようにはしゃぎ出す 二度とエサを与えるな
0570デフォルトの名無しさん
垢版 |
2017/12/28(木) 22:14:09.65ID:E7wukrMJ
>>562
ゴミクズの見分け方は簡単
検索すれば一発でわかる事
一次ドキュメントに書かれている事をまとまりのない長文で聞く

二度とエサを与えるな
0571デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:15:07.71ID:EahqhR5N
>>562
ちなみにお前はどんなスレが欲しいんだ?
或いは、自分が何をやっているのか理解しているか?


君の回答よりもMDNの方が詳しく正確に書いてある。
つまりこのブスはMDNすら読んでいないことが確定的に分かっている。

その上で、回答をするのなら、今後ともMDNすら読んでいない奴が質問を繰り返すことになる。
それが君の望むスレなのか?
或いは、君はゴキブリ韓国人と同様、日本人が集まる場所を破壊するのが目的なのか?

MDNすら読め無い馬鹿が集うスレが欲しいのなら、君らがそれを新たに作るのは自由だ。
ただ、ここはそうじゃない。
最低限ググってから質問しろという、2chではごく当たり前のスレだ。
それを無理に乗っ取って回答を続けることは、背乗りゴキブリ韓国人と同レベルだと理解できてるか?

もっと長期的視点で考えろ。
0572デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:26:54.90ID:VRkNjdBa
var key = 'a';
// var key = '__proto__';
var obj = {};
obj[key] = obj[key] ? obj[key] + 1 : 1;

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

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

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

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

他にも、
var obj = {x : {}};
のように、オブジェクト内のオブジェクトを使う事もできるが、
この方法でも、__proto__ ではバグル
0573デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:55:13.26ID:AeGE7eie
つまり、キーとしてそういうものが入らないと
断定できるならば問題ない

キーとなるものはコードに書かれている文字のみで
ユーザーが入力したテキストを入れるとかない限り
心配する必要はないということさ
0576デフォルトの名無しさん
垢版 |
2017/12/29(金) 13:13:32.16ID:PDOKco2M
Object.prototypeの問題は
obj={__proto__:null}
obj=Object.create()
で解決するから別にそこがオブジェクトリテラルと比べて
殊更取り上げる程のMapの特徴と言うわけでもない
0577デフォルトの名無しさん
垢版 |
2017/12/30(土) 00:33:29.23ID:GFw+RV/O
Object.create(null)もいいが、Mapの利点はforEachで定義順で列挙可能とか、iterableなオブジェクトを生成しやすいとか、あたりじゃないかね
0578デフォルトの名無しさん
垢版 |
2017/12/30(土) 12:38:52.32ID:tmNQ0max
全部一次ドキュメントに*日本語でも*記述されてる事だね
ゴミクズ質問者とそれに集るゴミクズ回答者
0579デフォルトの名無しさん
垢版 |
2017/12/31(日) 11:37:26.89ID:lfwJq0IT
JSに一次ドキュメントはない
コメントほぼ無しの仕様書と二次三次ドキュメントだけ
0580デフォルトの名無しさん
垢版 |
2017/12/31(日) 13:14:45.77ID:WrKHDnuU
ゴミクズ回答者はWeb標準のドキュメントがMDNに統合される事(既に統合は進んでいる)を知らないようだ

ゴミクズ回答者にとっては、時間と金をかけて必死で積み上げた取って置きの知識だろうけど
今は無料で即時に入手出来るんだよ

Mapの利点を長々と解説してたが、三平方の定理を発見した古代人がドヤ顔で解説してるようで滑稽だったよ
0582デフォルトの名無しさん
垢版 |
2017/12/31(日) 17:46:10.92ID:GvxCaHuK
初歩的な質問失礼。
ある非同期関数があるとき、それをwrapして同期版を作るうまい方法ってないですかね?
fs.open()を使ってfs.openSync()を作るようなイメージ。
0584デフォルトの名無しさん
垢版 |
2017/12/31(日) 19:05:55.34ID:lWm8BqoC
promise

generator runner は、promise と組み合わせて、非同期処理を同期的に書ける。
つまり例外処理を使える(同じコンテキスト)

co, Koa を使う
0586584
垢版 |
2017/12/31(日) 22:12:55.50ID:lWm8BqoC
generator runner
非同期のpromise をラップして、同期処理にしたもの

同期f(){
yield 非同期のpromise;
}

yield で、promise が満たされるまで止まる
0587デフォルトの名無しさん
垢版 |
2017/12/31(日) 22:49:12.39ID:GvxCaHuK
>>586
回答ありがとうございます。
けどこれyieldで止まります?同期f()はgeneratorですよね?
単にnext()でPromiseが返るだけのような。
0588584
垢版 |
2017/12/31(日) 23:30:23.91ID:lWm8BqoC
co, Koa を使う

それを見て
0589584
垢版 |
2018/01/01(月) 00:11:22.41ID:W1EVIqcJ
yield 非同期のpromise;

yield で、promise が満たされるまで止まるように、iterator, generator を作ると、
ES2017 の、async/await と同じになる

それが、co, Koa なんだろう
0590デフォルトの名無しさん
垢版 |
2018/01/01(月) 05:14:25.34ID:E9GYpYJ8
>>580
それは二次ドキュメントが統合されるってことだよ
ってか、君は何なん?ゴミクズに野次を飛ばして楽しむ傍聴人?
ドキュメントがあるで済むなら言語質問スレなんていらんがな
0591デフォルトの名無しさん
垢版 |
2018/01/01(月) 07:54:04.98ID:M7PJ0p4R
>>589
やっぱりなにか勘違いしてる。
async/await使ったってfs.openSync()のような同期処理は無理でしょ。
0592デフォルトの名無しさん
垢版 |
2018/01/01(月) 09:38:37.62ID:RL3ivRC9
>>590
ドキュメントにそのまま載っている内容を質問する馬鹿は死ねでいいでしょ
ググれないブスも死ねでいい
0593デフォルトの名無しさん
垢版 |
2018/01/01(月) 12:41:21.48ID:UtygSLzQ
>>592
気持ちは分かるが、説明書を読むのと、人から教えられるのではやっぱ感触が違うからな
ROMってる奴のほうが多いと思うし、その人の為、もしくは例え既知であってももう一度それに付いて考えてみる機会ができたという点で為になってると思うよ
0594デフォルトの名無しさん
垢版 |
2018/01/01(月) 13:52:41.65ID:RL3ivRC9
>>593
ならねーよ。死ねよ。

考える機会が欲しいのなら、自分でMDNを定期的に読み返せば済む。
自己完結できない奴は上達しないし、そもそもプログラマに向いてない。


小学1年生の教科書を毎年読み返しても、お前みたいな小学1年生レベルの馬鹿から進歩できないだろ。
JavaScriptのスレはマジで酷いぞ。少しは他スレも読んでみるといい。
当然他スレにも初心者は沸いているわけでね。
何故JavaScriptだけこんなに酷いのかは、俺にはいまだによく分からんが。

568のqiita、20年やっててこの程度しか書けないのか?と思うよ。
JavaScripterは、文法にだけやたらこだわっていて、プログラマとしては全く上達してない。
0595デフォルトの名無しさん
垢版 |
2018/01/01(月) 14:22:31.88ID:E9GYpYJ8
>>594
そんなことないと思うよ
これを機にMapについてより深く知った人も多いと思うし
自分もこれまでMapをどう使ってきたかなって思い起こす機械になったし
沢山の物があるWeb学習において重要なことは、
機会があった時に深く知ることを繰り返すことだと思うよ

基礎を完璧に抑えて応用を学んだ行くというのは不可能
だから時々基礎に立ち返る価値はいつになってもあるし、
例えMDNが90点で、ここの情報が2,30点の集まりだったとしても、
色んな人の色んな角度から情報を理解するってことも重要

JSもだし、Webっていうのは皆で作っていくものだからね
言葉の定義や何が良いことかっていうのも、
その瞬間に世界のJSerやWebデベロッパーが何をどう考えているかで変わってくる
だから文法や文脈に拘るっていうのもとても大切なことで
JSerやWebデベロッパーにとってそのすり合わせのための機会っていうのも重要

正解が無く、むしろその自由さが良いこととされている環境だが、だからこそ常に正解を見つけていかないといけない
だから皆が独自に正解を考えるが、実際その環境で何が正解と言えるかというと皆の意見の総和ということになる
だから自分のこだわりを認めてもらおうと、広めようと躍起になって良く揉めるが、それも環境の進化のために必要なこと
その点中央政権があったり、よりプロプライエタリな他言語環境とは雰囲気が違うのは当然
0596デフォルトの名無しさん
垢版 |
2018/01/01(月) 14:57:35.96ID:RL3ivRC9
>>595
ゴミクズ韓国人な私はいつまで経っても馬鹿のまま、まで読んだ。


まあとにかく、ググればすぐ分かること、或いはMDNに明示的に書いてあることすらも受け付けるというのなら、
そういう連中を集めて、新しいスレを作ってくれないかな?
何故、既存のスレを乗っ取ろうとする?背乗り韓国人なら死ねよマジで。

韓国人死ね

君がそう思っている。
俺はそうは全く思ってないし、こちらが2chでは主流派だ。
Web流を自負するなら、背乗りではなくて、フォークで決着するべきだ。
何故それをしない?
それで、君達の新しいスレが繁栄し、持続すれば、君達が正しかったことになる。

お前が言っていることは、まんまゴミクズ在日韓国人の言い訳と同じだ。
お前みたいな在日韓国人は死ねとしか思わないね。


既に何度も言っているが、
俺は君たちが新しく作ったスレには行かないし、Web板のスレにも投稿しない。
それで、俺が居るスレと、俺が居ないスレで、どっちが良くなるか勝負しようと何度も誘っている。
俺が居ないスレの方が良いスレになるようなら、俺の存在価値は無い証明になる。
逆に、君たちの居ないスレの方が良いスレになるようなら、お前らがゴミでありゴキブリである証明になる。
こういう、建設的な勝負をしようと既に何度も誘っている。
お前らは受ける勇気もないヘタレだ。属国5000年のヘタレなDNAは伊達ではない、というところか。

再度言う、韓国人死ね
0597デフォルトの名無しさん
垢版 |
2018/01/01(月) 17:45:00.75ID:Xbk+w4sV
ある要素にaddEventListenerでイベントリスナを登録したんですが
この要素を削除すればイベントリスナも削除されますか?
見えない所に残ったままになりませんかね?
要素を削除する前にremoveEventListenerをするべきでしょうか?
0600デフォルトの名無しさん
垢版 |
2018/01/01(月) 23:10:17.69ID:W1EVIqcJ
>>597
ある要素に、EventListener を付けて、その要素の先祖の要素を削除すると、
EventListener が付いたままになって、メモリリークを起こすのでは?

Backbone では、メモリリークになるけど、
jQuery では、削除した要素の、すべての子孫の要素の、
EventListener も削除するからメモリリークにならない、と何かで読んだことがある

まあ、デバッグして確かめるしかない
0601デフォルトの名無しさん
垢版 |
2018/01/02(火) 12:07:09.51ID:tr5O7MN9
>>597
>>600
お前らもいい加減死ね

何度目だその質問?だし、
過去スレどころかこのスレ内で既に回答されてるし、
回答600も間違ってるし。

全ての点において救いようがない。


まあそれでも、お前らがそれに価値があると思うのなら、フォークしろ。
つまり、別スレとして新たな方式、お前らが目指している、

・同じ質問を何度でもおk
・ググってすぐ見つかる事も質問してよし
・MDNに明示的に書いてあることも質問してよし
・日本語が不自由でもよし
・間違った回答も歓迎
・ゴキブリ韓国人も歓迎

を作って、試してみればいい。
俺は無理だと思うが、この見立てが間違っているのなら、俺が老害である証明になる。
そうではなく、お前らでまともに成立するスレを作れないのなら、お前らこそが荒らしなんだよ。
マジでそれを自覚して、背乗りは止めろ。誰のためにもならない。

韓国人死ね
0602デフォルトの名無しさん
垢版 |
2018/01/02(火) 19:51:20.73ID:BCempIdS
フォークは無意味
分けるんなら「質問スレ」を消して両方別名でpart1から始めるべき
0603デフォルトの名無しさん
垢版 |
2018/01/02(火) 20:43:56.15ID:zTWSIcjp
フォークなんて何の意味もない
質問スレなんだから質問と回答だけを書け
ハゲは消え失せろ
以上
0604デフォルトの名無しさん
垢版 |
2018/01/02(火) 21:32:54.72ID:tr5O7MN9
一応Web板にも質問スレはあって、そこも十分機能しているわけだから、
お前らが乱入してこなければ、フォークとして機能しているんだよ。
だからとりあえずWeb板に戻って、そこで自由にやってくれないかな?
俺は何度もそっちには口出ししないと宣言している。

お前らに足りないのはIDではなく、お前ら自身の民度だと、お前らにも分かってきていると思うけど、
それでもIDが欲しければ、Web板民で話し合って、
君らで自由にテンプレ作ってIDありの板でスレ立ててみればいい。
それで君らのスレの方が繁栄すれば、君らの勝ちだよ。分かりやすい話だ。

ただなあ、ググレカスなのは2chのみならず、Web全体の文化であり、
何故そうなっているのかすら理解できず、
「ウリが正しいニダ」と声闘をするゴキブリ韓国人級の知能では、どうにもならないとは思うけど。
まあそれでも、やってみて、まずは己の無力さを理解することだね。

韓国人死ね
0605デフォルトの名無しさん
垢版 |
2018/01/02(火) 21:50:54.97ID:oQl8slaZ
乱入ワロタw
お前のスレじゃねーんだよゴミ
お前が出て行けばそれで誰にとってもハッピーなんだって分からんか?
0606デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:44:21.14ID:tr5O7MN9
まあ、世界中から韓国人が死滅すれば、世界はずいぶんマシになるよ。
韓国人の一番の問題は、韓国人が何故嫌われているのか全く理解できないことだからね。

韓国人死ね

そしてお前らの問題は、お前らが韓国人と同じ事をやっていることを理解できないことだ。
まずはそれを理解しないと始まらない。
俺が言っている方針、

・まずググレ
・公式ドキュメントに書いてあることを質問するな
・過去スレを読め

なんてのは、2ch/Web全体の文化であって、
少なくとも何故こうなっているのか理解できない馬鹿にこれを凌ぐ物を作ることは出来ない。
君らは君らが馬鹿であることを自覚するところから始めないといけない。本当に終わってる。

俺が出て行っても、状況は変わらんよ。これはWeb全体の文化だから。
相手を追い出しさえすれば全て解決というのは、完全に在日ゴキブリ韓国人の論理だね。


それはそうとして、これは結局例のコピペ「コミュニティの一生」の終末状態であり、
https: dic nicovideo jp/a/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AE%E4%B8%80%E7%94%9F
2chにはこれを防ぐための方策がないのも事実だ。
そこで俺はこれについての対策を持った掲示板を立ち上げたいとは思っているんだが、
仕様についてアイデアがある奴はいるか?

例えば、ふたばの仕様、
・1はスレ内の任意のレスを消せる(style.display = 'none';)
・1によって3回消されたらその人はスレ内BAN
で解決するかね?
或いは、他のアイデアがあれば是非。
0607デフォルトの名無しさん
垢版 |
2018/01/02(火) 23:03:44.84ID:BCempIdS
自分で調べろというのはごもっともだがそれはどちらかと言うとマナーの範疇
そういう人にググれカスだの半年ROMってろって言うのまで含めて2chの文化だが
それはあくまで背中を押すような一種の愛情表現であって
不愉快だからスレから出て行けというのとは違うけどな
今このスレに大事なのはもっと気軽に馬鹿な質問をしてもらうことで
そういうのを消すことじゃないだろう
0608デフォルトの名無しさん
垢版 |
2018/01/02(火) 23:09:26.66ID:BCempIdS
つうかなんか悲しいよな
ここはJSを「自ら学ぶ人のための」質問スレッド
つまり質問者のためのスレで、回答者はその質問者を助けるためにいるわけなのにな
いつの間にか自分が嫌いな質問は許さん
自分が好きな回答ができない流れは許さんっていうのが増えたよな
質問者の数が減ったら大事にすべきなのに、むしろ立場が弱くなってきてるよな
0609デフォルトの名無しさん
垢版 |
2018/01/02(火) 23:18:25.90ID:tr5O7MN9
>>607,608
まあ君がどう思おうが君の勝手だが、
もし俺を追い出したいと思っているのなら、俺にアイデアを出してみてくれないか?
俺がそっちにかかりきりになれば、当然こっちは疎かになるし、win-winだろ。

2chのシステムでは、荒らしに居座られたら対策がない。
そして、今現在はそれ以前の、荒らしが荒らしと自覚できてないという状態だ。
日本語も通じないし、言うこともきかないし、さすがにどうにもならないよ。

韓国人死ね
0610デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:19:54.04ID:1Yhs3Yxn
>>609
君の末尾の文句は荒らし行為じゃないの?
もしなんでも良いから〇〇死ねと末尾に付ける人が居たとして
君はそれは荒らしだと思わないの?
0612デフォルトの名無しさん
垢版 |
2018/01/04(木) 20:46:48.25ID:iFtzCaCZ
【2chスレの一生】

日本人が良スレを作る

良スレだからゴキブリ韓国人が集まってくる

住み着いたゴキブリ韓国人が居場所を守るために主張し始める

良スレを作った日本人達が見切りをつけて居なくなる

残ったゴキブリ韓国人達がスレを乗っ取る

ゴミスレなので誰も居なくなる


2chはこれを防ぐシステムを持ち合わせていない。
ここが致命的な弱点で、改善すべきだ。
俺は何とかして2chを

・韓国人の居る、現在の2ch
・韓国人の居ない、新しい2ch

にフォークしようとしている。
それで新2chの方が継続的に盛り上がるようなら、

・韓国人は殺すべき

という結論が承認/共有されることになる。
俺はこれを試そうとしている。
アイデア出しだけでも協力してくれれば助かる。
0613デフォルトの名無しさん
垢版 |
2018/01/05(金) 12:56:13.85ID:u+R3cpJk
例えば手続き的にwordカウントするときkeyを単語、valueをカウンタにするじゃん。
objectなら o['hoge'] += 1 みたいな足しこみやインクリできるけど、Map だと明示的にget して1足してsetするのがセオリーなの?
0617デフォルトの名無しさん
垢版 |
2018/01/05(金) 15:04:08.28ID:dWX0Moq5
>>613
そう
でも処理速度的にボトルネックになることは無いだろうし
Mapを継承したクラスにincメソッドを実装すればいいと思う
0618デフォルトの名無しさん
垢版 |
2018/01/08(月) 13:36:18.81ID:TtlW0DEg
React代替のライブラリとしてhyperappがqiitaで話題ですけど、
1kbのライブラリがReact+reduxと代替になるってすごいですよね。
逆になんでReactって単なるUIライブラリなのにこんなにサイズがでかいんですかね?
Reactの優位点ってエコシステムとしてって以外に何があるんですかね?
0619デフォルトの名無しさん
垢版 |
2018/01/08(月) 15:48:15.94ID:fUd4CoSB
Reactはまんまエコシステムじゃん
ReactNativeだってあるしReactNativeWebだってあるくらいだし
0620デフォルトの名無しさん
垢版 |
2018/01/09(火) 11:23:44.59ID:3WGrgmwx
代替にならないからに決まってるじゃん
1KBのライブラリなら読めばいいのに
0621デフォルトの名無しさん
垢版 |
2018/01/09(火) 11:39:04.13ID:6pl2SrRj
>>620
機能だけを観るとreact+redux+非同期ミドルウェア
が1kbのライブラリに置き換わるというのが凄く魅力的なんですけど。

逆にReactにしかできないことが見当たらなくて、じゃあhyperappでいいじゃん
って思っちゃったんですよね。
もちろんiOSとかAndroidで使いたいとなったらReactNativeがある点で優位なんですけど、、、、、いまのところchrome-extensionで使う予定なんで、reactから移行してもいいのかもと思い始めた次第です。
0622デフォルトの名無しさん
垢版 |
2018/01/10(水) 11:01:01.36ID:AcbVN6ZK
hyperappでいいじゃんと言うけど
それWebAPIも発展してきたしフレームワークもライブラリもそろそろ要らないよねってことだぞ
ただ非同期周りとかちょっとまだ手が届かない所があるよねって感じ
chrome-extensionとか小規模なものだとそれこそ何にも要らないと思うぞ
0623デフォルトの名無しさん
垢版 |
2018/01/11(木) 03:04:00.15ID:A2H3qaeb
Node.jsで
const exec = require('child_process').exec;
みたいに
モジュール自体じゃなくてモジュールのメンバを変数に代入する書き方がありますが
こういう書き方のメリットは関数名などが短くなることの他にありますか?
どっちみちモジュールを全部読んでから一部をエクスポートしてるだけなので
メモリの節約にはならないですよね
0625デフォルトの名無しさん
垢版 |
2018/01/11(木) 10:35:44.35ID:A2H3qaeb
なるほど…
じゃあ使うものだけを読む方が望ましいですね
ありがとうございました
0626デフォルトの名無しさん
垢版 |
2018/01/12(金) 00:07:56.61ID:H+rlZVu0
var str = "1\r\n2\r\n3\r\n\r\n4";
var arr = str.split(/\r\n/);

ブラウザでこのarr.lengthを取得すると当然5になります
ですが、WSHのJScriptでarr.lengthを取得すると4になります
何故か空行が削除されてしまうのです
これをマトモに動かすにはどうすればいいのでしょうか?
Windowsは10ですか、多分Windowsのバージョンは関係ないですよね
0628デフォルトの名無しさん
垢版 |
2018/01/12(金) 05:29:30.16ID:HxZ583lI
f(){ g(){h()}}
でhだけが非同期関数の時hが呼び出されるのはfかgのどっちの後ですか?
現在実行中の関数のあとしか書いて無くて、fもgも実行しているのでどちらか
わかりませんでした。
0629デフォルトの名無しさん
垢版 |
2018/01/12(金) 08:41:18.56ID:bX2X9CX8
その書き方じゃ何を表しているのか正確に分からんし
順番が知りたければ関数にalertでもconsole.logでも置けばいいだけじゃないか
0631デフォルトの名無しさん
垢版 |
2018/01/12(金) 09:32:36.57ID:H+rlZVu0
非同期関数をその中に書いたら同期関数にできる関数があれば
何も考えずに同期化出来ていいのではないでしょうか?
そういうのはありますか?
0632デフォルトの名無しさん
垢版 |
2018/01/12(金) 13:15:59.75ID:7wn4t2Jc
同期「的」に書ける方法はあるよ
でも理由があって非同期になってるわけだから、
それが他の部分と必ずしも結合できるとは考えない方がいいし
あんまりこねくり回すとタイミングバグが起きたりもする
その辺きちんと整理できる能力が必要
取り敢えずPromiseとメソッドチェーンを理解してからasync-await
0633デフォルトの名無しさん
垢版 |
2018/01/12(金) 20:07:58.33
electronでVisualStudioみたいなドッキングやフロートとかができるパネルレイアウトを実現するものはありますか?
0634デフォルトの名無しさん
垢版 |
2018/01/12(金) 20:12:02.87
質問変えます
VSCodeと同じレイアウト(右のパネル、タブ)を実現するものはありますか?
0635デフォルトの名無しさん
垢版 |
2018/01/13(土) 00:02:40.02ID:/br76GKn
同期的で思い出したけど、JavaScript・・・じゃないな
ブラウザのDOMの仕様からalert, confirm, promptって廃止されないの?
だってこれら同期的に動くクソだもの
0636デフォルトの名無しさん
垢版 |
2018/01/13(土) 00:20:03.56ID:UQ6+XXz2
NW.jsはビルドしたファイルを実行すると
ソースディレクトリがテンポラリディレクトリに展開されてそこで実行され
元のexeファイルのあるカレントディレクトリを取得できないという問題があります
ポータビリティを担保するためにカレントディレクトリにデータを保存したいので、
これは望ましくありません
Electronではこういうことはないのでしょうか?
0637デフォルトの名無しさん
垢版 |
2018/01/13(土) 04:50:51.10ID:xaNBQnI8
>>635
同期で動くのが必ずしも悪いこととは限らない
昔みたいにブラウザごと操作ブロックするものではなくなったし
0638デフォルトの名無しさん
垢版 |
2018/01/13(土) 05:57:23.59ID:Hqj5QnSW
>>634
VSCodeはelectronで作られている。
VSCodeを作った人たちは、electronでVSCodeのレイアウトを実現したわけだ。
0640デフォルトの名無しさん
垢版 |
2018/01/13(土) 07:53:38.29ID:9rLeDqe4
>>636
Electron アプリは、Node.js によって実行される

その際、package.json という設定ファイルに、
"main": "main.js"
とか書くと、そのファイルから起動される

この本を読む

Electronではじめるアプリ開発
~JavaScript/HTML/CSSでデスクトップアプリを作ろう
野口 将人・倉見 洋輔、2017
0642デフォルトの名無しさん
垢版 |
2018/01/13(土) 12:13:53.04ID:v/Is/Qmn
的外れと言う割に的外れでない回答がない件
それもそのはず的外れでないであろう回答をエスパーして
基本的で曖昧な疑問に答えるのは大変すぎるから

だから皆取り敢えずコンテキストが近くて
具体的で為になりそうな点に絞って回答してるというのに
それを的外れというのはそれこそ的外れ
0643デフォルトの名無しさん
垢版 |
2018/01/13(土) 13:33:46.15ID:UQ6+XXz2
>>640
ありがとうございます
ただそのくらいは知ってます・・
NW.jsもnode.jsとwebkitから作られていて
両者が非常に良く似ていることからした質問です
ビルドされたバイナリの挙動は実際に使ってみないと分からないので
0644デフォルトの名無しさん
垢版 |
2018/01/13(土) 13:39:59.76ID:aBZLjG9C
>583 名前:デフォルトの名無しさん[sage] 投稿日:2017/12/31(日) 19:02:39.26 ID:B2mtcXzM
>ないです

「的外れでない回答」はこれだろ?
0647デフォルトの名無しさん
垢版 |
2018/01/14(日) 00:54:38.03ID:O8f654ld
質問です!
初めてjavascriptでWEBアプリを作ってるんですが、時間によって変化するデータを記録してブラウザに表示させるために
グローバル変数を使用しているのですが、そのデータが50種類近くあり、全てグローバル変数に保持させています。
ネットで調べると、グローバル汚染なる言葉があり、グローバル変数は極力使用するべきでないとありました。
でも、50種類近くのデータを保持し、各関数の中で計算させたりブラウザに数値を表示させるにはグローバル変数でしか無理なんじゃ無いかと思います。
初心者な質問ですがよろしくおねがいします!
0648デフォルトの名無しさん
垢版 |
2018/01/14(日) 01:11:56.05ID:ShEBZxSB
まあ別に幾らでもやりようはあるが、
その分だとまずコードを今の1/5から1/10ぐらいに減らすべきだろうな
無駄なコードが多すぎるだろう
0649デフォルトの名無しさん
垢版 |
2018/01/14(日) 03:20:01.37ID:V1AuijCV
electronでデベロッパーツールにログを出力するのはどうすればいいのでしょうか?
console.logするとシェルのコンソールにログが出力されますが
これだとソース版の実行時にしかログが見られません
0651デフォルトの名無しさん
垢版 |
2018/01/14(日) 09:01:40.77ID:V1AuijCV
何と言うのか知りませんがバイナリにビルドする前の状態です
0652デフォルトの名無しさん
垢版 |
2018/01/14(日) 09:37:43.17ID:Ljf3EvZ6
>>649
サンプル通り作ってあるなら
mainWindow.loadURL(`file://${__dirname}/index.html`);
というような感じでindex.htmlをロードして表示していると思うけど
このindex.html内でconsole.logすればデベロッパー内でログを見れる
0653デフォルトの名無しさん
垢版 |
2018/01/14(日) 11:41:12.08ID:V1AuijCV
>>652
そうなのですか
ありがとうございます
Electronは触った感じNW.jsよりも技術者寄りでイケてる感じがしますが
その分複雑なところがありますね
0654デフォルトの名無しさん
垢版 |
2018/01/14(日) 12:42:53.06ID:V1AuijCV
>>636の件ですが
Electronの場合はビルドしたバイナリでも、
実行時のカレントディレクトリが正しく取得できました
まぁ当たり前の動作ではありますが・・。
NW.jsの方が古いプロダクトのようですが、
Electronに架橋するのがその歴史的意義で、既に使命を終えたんじゃないかと思います
Electronを触ったらもうNW.jsに戻ろうとは思えません
0655デフォルトの名無しさん
垢版 |
2018/01/15(月) 16:39:11.95ID:oyJFiKwa
エディタのVS Code, Atom が、Electron 製だろ

これらのエディタを使ってみれば、Electron で、何でも出来ることが良くわかる
0656デフォルトの名無しさん
垢版 |
2018/01/15(月) 23:04:54.06ID:A1ZxBlI8
まあバイナリファイルの読み書きさえできれば
なんでもできるのは当たり前なんだけどなw
0657デフォルトの名無しさん
垢版 |
2018/01/17(水) 13:55:03.66ID:ZK8OrRcg
titleを書き換えるブックマークレットを作っています
chrome開発者ツールのconsoleで
document.title = 'test';
とすると、何の問題もなく書き換わります
が、これを
javascript:document.title = 'test';
としてブックマークに登録してブックマークレットとして実行すると、
titleだけでなくdocumentの内容自体がtestという文字列に置き換わってしまいます
何が間違っているのでしょうか?
0659愛知人
垢版 |
2018/01/17(水) 14:32:13.86
resList.forEach(resNumber => {
$(`.resListPanel li.resItem[data-number="${resNumber}"]`).clone().appendTo(resListTree);
});

resListの要素数が70個だと2秒もかかるんだがどうする?
0660愛知人
垢版 |
2018/01/17(水) 14:41:23.85
const resItemList = resList.map(resNumber => {
return $(`.resListPanel li.resItem[data-number="${resNumber}"]`).clone();
});

これでもほぼ同じ
0661愛知人
垢版 |
2018/01/17(水) 14:44:03.32
resList.map(resNumber => {
return $(`.resListPanel li.resItem[data-number="${resNumber}"]`);
});

これでもほぼ同じ
0662デフォルトの名無しさん
垢版 |
2018/01/17(水) 14:54:28.73ID:ZK8OrRcg
>>658
undefinedを返さないとその値でページを置き換えるようになっているのですね
ありがとうございました
0663デフォルトの名無しさん
垢版 |
2018/01/17(水) 15:09:47.60ID:ZK8OrRcg
ブックマークレットはaタグのhrefにjavascript:と書いた時と
同じ動作をするもののようです
ここに書いたコードは返り値の返却が求められていることから、
ある種の関数として実行されていると推測します
ですがブックマークレットの解説が書かれたサイトには、
名前空間を汚染しないように即時関数で全体を囲む方がいいと書いてあります
しかしブックマークレットがすでに関数になっているのですから
即時関数にしなくても汚染は防げるのではないかと思ったのですが
どうなのでしょうか?
0665デフォルトの名無しさん
垢版 |
2018/01/17(水) 16:14:37.66ID:ZK8OrRcg
>>664
returnを書いたら動作するからです
じゃあ違うんですか?
それならなぜreturnと書けるのでしょうか?
0666デフォルトの名無しさん
垢版 |
2018/01/17(水) 16:42:16.33ID:ZK8OrRcg
<a href="javascript:var a = 1;return;">test</a>
と書いてみたら
SyntaxError: Illegal return statement
と出ました
ブックマークレットはaタグとは似て非なるもののようですね
0667デフォルトの名無しさん
垢版 |
2018/01/17(水) 16:50:55.42ID:ZK8OrRcg
javascript:var a=1;return;
というブックマークレットと
javascript:alert(a);
というブックマークレットを作り、
最初のブックマークレットを実行してから次のブックマークレットを実行すると
aはundefinedだと言われました
やはりブックマークレットは関数として実行されているようです
aタグの場合は、あるタグで宣言代入した変数を
他のタグのコードから参照できました
0669デフォルトの名無しさん
垢版 |
2018/01/17(水) 17:01:43.92ID:ZK8OrRcg
>>668
エラーを出しつつundefinedを返してるのかとも考えましたが
実際コンソールみてもエラー出てませんし。
というかもう答え出てますよね?
0671デフォルトの名無しさん
垢版 |
2018/01/17(水) 21:31:52.74ID:/j2ucEK2
chromeで試しましたが出ませんよ
ブラウザによって実装が異なる可能性もあるので他のブラウザは知りませんが
ブックマークレットという性格上、自分が使うブラウザで問題なければ別にいいです
0672デフォルトの名無しさん
垢版 |
2018/01/17(水) 21:32:24.29ID:HnamRG99
JavaScriptは最終的にビルドしてWebAssemblyに
するのが常識になっていくんじゃないかなーって
思っているんだけどどうですか?
0673デフォルトの名無しさん
垢版 |
2018/01/18(木) 07:04:32.02ID:iW6wdbys
>>672
それは将来の素のJS≒TSをWASMにコンパイルしてリリースするのが常識になるかってこと?
既にトランスパイラやバンドラが使われているように、幾らか規模のある企業案件では良く使われることになると思うよ
あとはブラウザの拡張機能のようなパッケージ化されるものではそれが基本になると思う

だけど常識と言えるかどうかは分かんないね
2030年ごろにJSに実質的な寿命が来たとして、
その時に多くの言語から安全簡潔にWASM化する環境が整っていて、
ブラウザベンダー達が新しい言語を実装しないことを決定すればそうなるんじゃない?
0674デフォルトの名無しさん
垢版 |
2018/01/18(木) 15:48:38.59ID:kHRH5E2e
electronてメインプロセスとレンダラプロセスのJSはディレクトリを分けた方がいいと思うのですが
どうディレクトリを分けるのがスタンダードなんでしょうか?
0676デフォルトの名無しさん
垢版 |
2018/01/18(木) 21:59:02.60ID:CTvnuGUK
>>673
> その時に多くの言語から安全簡潔にWASM化する環境が整っていて、

その多くの言語からWASM化するってのはビルドですよね?
聞きたかったのはJavaScriptが生き残るかどうかじゃなくて
ビルドツールなしっていうのは考えられない世界になるのかなーって話です。
0677デフォルトの名無しさん
垢版 |
2018/01/18(木) 23:08:03.44ID:4fewSOLi
>>676
JavaScriptを普通に書きたいという需要が多い限りそんな世界にはならないということ
全てがHTTP2になるかっていうのとも似てる
0678デフォルトの名無しさん
垢版 |
2018/01/19(金) 08:45:48.44ID:679xh41H
WASMが普及するとブラックボックス化して、Webへのアクセスの危険度が上がる気がする。メルトダウンとかが話題なくらいなんだから慎重に行かないとね。
とりあえずWASMはDOMに直接アクセスできないとか色々制限があるから
0679デフォルトの名無しさん
垢版 |
2018/01/19(金) 16:29:34.99ID:fVyCmoDl
>>675
ありがとうございます
すごくシンプルなアプリなので
main.jsとmainWindow.jsを同じディレクトリに置くことにしました
0681デフォルトの名無しさん
垢版 |
2018/01/19(金) 19:52:16.50ID:IX0btOHh
>>678
メルトダウンはCPUのバグなんだからそれを引き合いに出すのは無茶だと思う
ただタイミングアタックって言うのは事前の想定が難しい脆弱性攻略法だからね

例えばサーバでパスワードやハッシュが正しいかチェックする際
正解の文字列と==で比較するとそれ即ち脆弱性になる
なぜなら==は大抵の場合文字列の頭からの1文字1文字合っているか確認していって、
間違っている場合そこで打ち切るから、サーバのレスポンス時間の統計を取れば
現実的な試行回数で正解文字列が頭から推測できていってしまう

SQLインジェクションとかよく騒がれるので、外から来たデータの扱いは
個人運営のサイトでも必ず相当に気にすると思うが、
内の状態を外に微塵も漏らさないための気配りができている場合は少ない

今回のCPU騒動の対策としてperformance.now()の精度が100nsに落とされたりしたが
過去にあったJSで外部画像やiframeにフィルタを書ける際の処理の重さから内容を推測したりとか
数msの精度があれば十分に成功するものもある

Web標準規格者、ブラウザ開発者のような大勢の優秀な技術者でも度々見落としてしまうのが
この手のバグなんだから、ある意味で仕方がない
0682デフォルトの名無しさん
垢版 |
2018/01/19(金) 21:15:34.22ID:acEC53C4
>>678
> WASMが普及するとブラックボックス化して、Webへのアクセスの危険度が上がる気がする。

スマホアプリと同じ状態になるだけだよ
危険度は今とまったく変わらないか、
ブラウザのセキュリティ内でしか動かないから
スマホアプリよりも安全
0683デフォルトの名無しさん
垢版 |
2018/01/19(金) 21:17:41.12ID:acEC53C4
WASMはJavaScriptでできることしかできないから、
その意味でも安全といえる。

ソースコードが読みづらいってだけ
JavaScriptで難読化するのと変わらない

どうせ難読化されて無くても殆どの場合JavaScriptのコードを
なんて見ないんだから関係ない

よってWASMで危険になんかならない
0684デフォルトの名無しさん
垢版 |
2018/01/19(金) 21:47:23.03ID:IX0btOHh
いや、JSのASTのバイナリのようなものというのはスタートラインであって
将来的には変わっていくと思うよ
現時点でも例えばSIMD APIを使ってSIMD命令を明示的に記述できるけど
もしここ関連でバグがあればより危険ってことになるからね
0686デフォルトの名無しさん
垢版 |
2018/01/19(金) 23:04:17.50ID:IX0btOHh
バカタレ
なんで俺がわざわざこれを選んで挙げたか少しは考えることもできないのか?
JavaScriptでもできることになる予定だったけど撤廃される流れになってるだろ
現にV8はサポートしないことを決めて削除した
https://bugs.chromium.org/p/v8/issues/detail?id=6020&;desc=2#c3
そのくらいの時系列知っとけ
0690愛知人
垢版 |
2018/01/20(土) 00:25:29.74ID:sgAjbMHf
廃止された
0692デフォルトの名無しさん
垢版 |
2018/01/20(土) 02:09:47.09ID:87fvh5f6
検索って言う超巨大なアプリストアがあるんだけど知ってる?
PWA云々ってのもこの流れの中の一つ
0693デフォルトの名無しさん
垢版 |
2018/01/20(土) 02:32:41.46ID:/fOBA6h7
>>692
> 検索って言う超巨大なアプリストアがあるんだけど知ってる?
知らない。ストアってことは有料なんだよね?
0694デフォルトの名無しさん
垢版 |
2018/01/20(土) 10:26:21.47ID:L3x0kWif
どれだけアプリストアでセキュリティチェックされようと
超低レベルなCPUにバグがあっちゃお終いだし、
もしくは人がチェックするのも無理だから
超高レベルな悪意も防ぎようがない
0695デフォルトの名無しさん
垢版 |
2018/01/21(日) 01:14:29.51ID:NRBAbRyX
JSからも攻撃可能なメモリの同じ部分への超連続書き込みで
隣接セルを書き換えるって言うのも根本的な修正策は無いしね
0696デフォルトの名無しさん
垢版 |
2018/01/21(日) 11:52:06.76ID:BpnGcMgt
ElectronでネイティブのNodeモジュールを使う場合
リビルドが必要になりますが
このリビルドしたモジュールはアーキテクチャが同じなら
他のマシンでも使えるのでしょうか?
0697デフォルトの名無しさん
垢版 |
2018/01/21(日) 21:54:46.27ID:Ycn/1JW2
各OS で、コンパイル済みバイナリは異なるから、バイナリで持ち運べない。
ソースコードで持ち運んで、各OSでビルドする

Linux では、ディストリビューション間でも、バイナリが異なるかも知れない
0698デフォルトの名無しさん
垢版 |
2018/01/21(日) 22:08:15.10ID:SRhvhCOq
ただし例外もあって例えばUbuntuでコンパイルしたバイナリは
Windows上のWSL(Ubuntu)で動く
WSLがUbuntuでビルドしたバイナリを動く仕組みを提供しているからだ
0699デフォルトの名無しさん
垢版 |
2018/01/21(日) 22:29:06.24ID:bZyUZ2Tg
OSが違う時に走らないのは仕方ないですが
OSとアーキテクチャが同じなら、普通の実行ファイル同様、他のマシンでも走りますよね
ありがとうございました
0700デフォルトの名無しさん
垢版 |
2018/01/21(日) 22:54:53.47ID:NRBAbRyX
ネイティブモジュールは他の実行ファイルとは全く違う
V8のバージョンが変わると容易に壊れる
0701デフォルトの名無しさん
垢版 |
2018/01/22(月) 00:51:54.11ID:Q2QTYk20
実行ファイルというのはモジュールのことではなく、
バイナリビルドしたアプリのことでした
ネイティブモジュールのリビルドが必要なのはV8のバージョンアップなどとの擦り合わせなのですね
ありがとうございました
0702デフォルトの名無しさん
垢版 |
2018/01/22(月) 21:32:51.06ID:DF13VOU4
Single Page Applicationのデザインは
他のウェブサイトとは要件が少し違うと思います
ウェブページというよりもアプリケーションそのものなので。
SPAのデザインに関して参考になる本とかサイトとかありますか?
0704デフォルトの名無しさん
垢版 |
2018/01/24(水) 02:51:55.33ID:jTLtMl0d
SPAって主にはただの普通のWebサイトにPjax導入した物を言うと思うぞ
それ以上の専用の設計がされているものはWebアプリって言う
0705デフォルトの名無しさん
垢版 |
2018/01/25(木) 00:44:44.26ID:dhevK8dt
electronで、現在ソースで実行されているのかバイナリで実行されているかを
コードの中で判断するにはどうすればいいのでしょうか?
ソースでの実行時のみにデベロッパーツールを開くようにしたいです
0706デフォルトの名無しさん
垢版 |
2018/01/25(木) 02:17:02.57ID:oIA0WROS
AngularとReactどっちがいい?
0707デフォルトの名無しさん
垢版 |
2018/01/25(木) 02:24:41.78ID:viLdLLlb
>>705
専用APIあるのかもしれないけどその他の方法として
フォルダ内にバイナリファイルがあるかどうかで調べればいい
0709705
垢版 |
2018/01/25(木) 09:59:15.16ID:ix7/3m0P
__dirname+'/実行ファイル'
の有無を調べたのですがうまく動きませんでした
どうもビルドとは言っても実行ファイルの中にJSが組み込まれているわけではなく
resources/app配下のJSを実行しているようです
それなら上の上の上のディレクトリの実行ファイルの有無を調べればいいと思ったのですが
それも何故かうまくいかず。
(書き方が悪かっただけかもしれません。未検証)
他の方法はないかと探して
path.basename(app.getPath('exe')) == 'electron.exe'
なら開発環境と判別するという方法にたどり着きました
もっといい方法もあるのかもしれませんが
0710デフォルトの名無しさん
垢版 |
2018/01/25(木) 21:01:11.78ID:swiRhF/5
Railsアプリケーションには、production、development、testの3種類の環境があるけど、

Electron には、そういう環境変数は無いの?
0711デフォルトの名無しさん
垢版 |
2018/01/26(金) 00:11:29.64ID:blIs49uE
ドキュメントのappやprocessやEnvironment Variablesをざっと見ましたが
それっぽいのは見当たりませんでした
ビルドと言ってもelectron.exe相当の実行ファイルの名前や属性が変わるくらいなので
本質的な違いはないという思想なのかもしれません
0712デフォルトの名無しさん
垢版 |
2018/01/26(金) 11:30:01.98ID:1vUlDhuw
初心者です。お願いします。
node.jsで以下のコードを実行したら、
TypeError: "callback" argument must be a functionというエラーが出ました。

var webclient = require("request");

function test(){
webclient.post({
url: "https://mevius.5ch.net/tech/subback.html";},
function (error, response, body){
console.log(body);
});
};
setInterval("test()",2000);

test()単体では動くのですが、定期的に実行するにはどうすればいいか教えてください。
0713愛知人
垢版 |
2018/01/26(金) 11:34:15.05
"test()"→test
0714712
垢版 |
2018/01/26(金) 11:39:58.87ID:1vUlDhuw
ありがとうございますできました!
JS触って非同期処理?とか初めての概念が出てきてそっちが原因だとずっと勘違いしてました…
0716デフォルトの名無しさん
垢版 |
2018/01/26(金) 13:22:15.41ID:YGk40oMZ
それで分かるレベルならこんなとこに質問に来ないと思うが…

「なるほど、文字列だからいけなかったんだね!
setInterval(test(),2000);
これでよし!」

こうなるのがオチ。>>713の態度が正解だと思う。
0718デフォルトの名無しさん
垢版 |
2018/01/28(日) 03:49:02.94ID:4n9pDwZC
>>716
違う
今回のことに限らずエラー文に答えがあるんだから
それを読み解けるように努力していこうねということ
0719デフォルトの名無しさん
垢版 |
2018/01/28(日) 10:48:20.37ID:Wu8LfGNM
function f(){
return new Promise(resolve=>resolve (f());
}
なぜこの関数をthenすると無限ループになるのか教えてください。
fが評価されるのは一回にしかおもえないのですが教えてください。
0721デフォルトの名無しさん
垢版 |
2018/01/28(日) 11:36:08.21ID:Wu8LfGNM
thenしたときじゃなくてnewしたときにプロミスの中身は実行されるということですか?
0722デフォルトの名無しさん
垢版 |
2018/01/28(日) 11:41:05.63ID:Wu8LfGNM
>>721
そうみたいですね。勘違いしてました。
0723デフォルトの名無しさん
垢版 |
2018/01/28(日) 11:41:56.05ID:IPHcqH8X
>>719
function f(){
 return new Promise(resolve=>resolve (f());
}



function f(){
 let p = new Promise(resolve => {
  return resolve (f());
 });
 return p;
}



function f(){
 let p = new Promise(resolve => {
  console.log(1);
 });
 console.log(2);
}
f();

↓出力結果

1
2

つまり、f関数が戻るより前 = p が得られるより前にnew Promiseに渡した関数が
実行されるから。引数の関数は即時関数のようにすぐに実行されるんだよ。
その中でfを呼び出しているから再帰になる
0724デフォルトの名無しさん
垢版 |
2018/01/28(日) 12:08:11.95ID:Wu8LfGNM
解決策思いついたので発表させてください。
function f(){
return ()=>new Promise(resolve=>resolve(f()));
}
thenのとき関数に括弧をもう一つ付けます。
0725デフォルトの名無しさん
垢版 |
2018/01/28(日) 12:30:57.25ID:wTu9papE
jsbinみたいなプレイグラウンドでローカルで実行できるものはないかと思ったのですが
jsbinはNode.jsで動いていてまさにローカルで実行できると知りました
ですが
https://github.com/jsbin/jsbin/blob/master/docs/running-your-own-jsbin.md
ここにある通りにnpm install -g jsbinとやっても警告とかいろいろ出てエラーになります
いろいろなパッケージの今のバージョンとは合わないっぽい感じです
jsbinをローカルで動かすための方法をまとめたサイトとかないでしょうか?
あるいは、今のNodeの環境ですんなりローカルで使えるプレイグラウンドはないでしょうか?
0727デフォルトの名無しさん
垢版 |
2018/01/29(月) 16:38:42.59ID:AA0oVADy
EventEmitterは
onメソッドが呼ばれる前にemitされたら(現実的にはなかなかないでしょうが)
onメソッドが呼ばれたタイミングでコールバックが呼ばれるのでしょうか?
0728デフォルトの名無しさん
垢版 |
2018/01/29(月) 18:56:51.98ID:u565O0DO
ブラウザのEventは同イベントループ中なら順序は関係ないが
NodeのEventEmitterはそれはできない
0729デフォルトの名無しさん
垢版 |
2018/01/29(月) 20:06:02.96ID:AA0oVADy
そうなんですか
まぁまずあり得ないので、それでも問題ないという判断なのでしょうね
ありがとうございました
0730デフォルトの名無しさん
垢版 |
2018/01/30(火) 03:21:45.76ID:8qCjhhbY
イベントはイベントループのスタックに登録されるといった概念上自然なのはブラウザの方
Nodeの方はemitされるとイベントループを経由せずに直接関数を呼んでるだけの簡単な実装
この違いはPromiseの挙動に慣れてたりすると複雑なシーンやObservable的なライブラリでバグの元になるかもしれない
0731デフォルトの名無しさん
垢版 |
2018/01/30(火) 04:36:39.97ID:n415njgH
なにいってんだ?ブラウザとかイベントループとかそういうレベルの話じゃねーよ

基本的な設計を考えてみろ
イベントを受信する側は一体いくつ存在すると思ってる?
イベントを送信する側一つに対して、イベントを受信する側は複数存在するだろ

ブラウザで言えば、buttonのclickに対してaddEventListerで
イベントハンドラを複数結びつけることができる。

> onメソッドが呼ばれる前にemitされたら(現実的にはなかなかないでしょうが)
> onメソッドが呼ばれたタイミングでコールバックが呼ばれる
を実現するにはどうするか考えてみろ。

あとからイベントハンドラが設定される可能性を考えるということは
イベントハンドラが設定されていたとしても、全ての発生したイベントの情報を
ずーっと保持し続ければいけないということだ。

だってそうだろ? clickのイベントハンドラが1つ有ったとしても、もしかしたら
将来2つめのイベントハンドラが設定されるかもしれないんだから。
そんなメモリの無駄な使い方なんかやりません。

例えばWindowのloadイベントとかに限れば一回発動したら二回目は発動しないから、
onメソッドが呼ばれたタイミングでコールバック発動しても良いかもしれないが、
そういうのは特定のイベント特有の話だ。

特定のイベントに限って、onメソッドが呼ばれたタイミングでコールバック発動するための
サポート機能を持たせるのはありかもしれんが、少なくとも基本的な機能として
onメソッドが呼ばれる前に発生したイベントを保持するなんてことはまずしない
それはブラウザとかNodeとか関係ない一般的な設計としてだ
0733デフォルトの名無しさん
垢版 |
2018/01/30(火) 10:33:59.80ID:FpOWlTjM
>全ての発生したイベントの情報をずーっと保持し続ければいけない

たしかにmousemoveなどを考えたら恐ろしいことになりますね

Node書くならEventEmitterについて知っとくべし
https://qiita.com/yuku_t/items/d69d3a2c7dafa7d04e87
疑問のきっかけはこのページを読んだからなのですが、
非同期関数の中でEventEmitterオブジェクトを生成し、
非同期処理完了後にemitを呼ぶようにしてから、EventEmitterを返却。
EventEmitterを受け取った呼び出し元は、それにonメソッドを発行するという流れですが
このように書いた非同期処理はどんなに処理が軽いものであっても
onよりも先に終わることはないと、JavaScriptのメカニズム的に保証されている、
と考えていいのでしょうか?
0734デフォルトの名無しさん
垢版 |
2018/01/30(火) 11:22:22.63ID:FpOWlTjM
setTimeoutやsetIntervalの処理はイベントキューに登録される。
イベントキューから取り出されるのは、メインスレッドの処理が終わった時。
つまり何らかの処理の最中にイベントが実行されることはない。
ということのようですね
関数から抜けたタイミングとかにもイベントが発生し得るのではないかと
漠然と思っていたのですが、そうではなくて、
すっかり処理が終わった時にのみイベントキューが消化される
なのでEventEmitterも確実に機能することが保証されているのですね
ありがとうございました
0735デフォルトの名無しさん
垢版 |
2018/01/30(火) 12:02:02.30ID:8qCjhhbY
>>731
お前こそ何言ってるんだ?
ここまで話されていることは全ての発生したイベントの情報をずーっと保持し続ければいけないと言うことにはならない
ただイベントの発火を同期でなく必ず次のイベントループ時に持ち越すというだけで
その同期中でのリスナと発火の順序は問わないということ
そしてこれは重要
基本的に遅延処理だが値を指定した際にキャッシュやエラーですぐコールバックが呼べる状況もある
そういうときにEventレイヤーで非同期を保証することでハンドラの設定順序による無用なバグを防ぐことができる
0736デフォルトの名無しさん
垢版 |
2018/01/30(火) 19:52:08.77ID:04Xagkxs
>>731
JavaScriptなんてそんなもん。
馬鹿な質問に馬鹿が答え、しかもそれが間違っていることも割と普通で、馬鹿が再生産されてる。
現場とか壮絶だと思うよ。
間違ってもないコードを間違っていると言われ、間違っているように書き直させられるのでは、
まともなプログラマは寄りつかない。そして馬鹿に純化され、余計に馬鹿が再生産されるという悪循環。

というかな、根本的に分かってない奴が多すぎる。(プログラマとして未熟)
そして、質問者が馬鹿なのは致し方無しとしても、
回答者は他の回答者のレベルが分かるはずなのだから、
状況を把握して、自分は回答すべきか黙っておくべきか適切に判断しないといけない。
これも出来ない奴がJavaScripterには多すぎる。
(インターネット掲示板の使い方が未熟=人間として未熟)
これについては他Web系のPHP/Goは他言語並みにマシで、JavaScriptだけ酷いのはちょっと不思議なんだが。

そしてこの糞女はマジでそろそろ死んで欲しい。
根本的にこいつは分かってない。(どこが間違っているかは教えてやらないが)
お前らもこの糞女に対してレスする意味があるのかよく考えろ。
レスする=そいつにとって有効情報がでてくる=そいつが居着く事になる。

誰を殺し、誰を生かすかは回答者が決められる。
スレの質が低いのは、回答者のモラルが低いからだ。
迷惑しかかけないゴキブリ韓国人を殺すのは、正しいことだ。
人権屋は最近旗色が悪くて問題のすり替えに躍起だが、それに騙されてはいけない。
現実問題として、畑でいい野菜を育てる為には、
害虫は駆除しないと話にならないし、そのために農薬を使うわけでね。

匿名掲示板上で殺すのは躊躇しなくていい。
理由は簡単で、匿名掲示板上は原理的に差別がない場所だからだ。

韓国人死ね
0737デフォルトの名無しさん
垢版 |
2018/01/30(火) 19:53:15.14ID:04Xagkxs
そして>>731,735のようなやりとりはやればいい。
どうやらお前らはこれを望んでいるようだし、今のお前らには必要なのだろう。
ただな、冷静に考えれば分かるはずだが、これ自体もずれていて、お前らは、
・何が仕様なのか
を議論しているが、それは本来は仕様書なりMDNを読めば終わる話だ。議論するものじゃない。
他言語では、
・仕様を分かった上で、それについてどう思うか/どうそれを生かすか
を議論している。
JavaScriptは比較的簡単な言語だ。
何故お前らがいつまでも仕様理解にトラップされているのか、俺にはよく分からない。

韓国人死ね

例えばな、>>730
× スタック
○ キュー
君がプログラマなら、この2つは正しく使い分けないといけない。今回は特に。
そして確かにNodeのEventEmitterは若干仕様が不適切だ。
NodeのAPIに合わせるなら、EventEmitterSyncと命名されてしかるべきだった。
https://nodejs.org/api/events.html#events_asynchronous_vs_synchronous

という話をするのならまだ分かるんだよ。
ただまあ、今回脱線しているのはそもそものこの糞女が根本から間違っているからであって、
君らが悪い感じでもないが。
0738デフォルトの名無しさん
垢版 |
2018/01/30(火) 19:56:08.40ID:FpOWlTjM
>>736
前から思ってたがなんで女扱いなんだよ
意味不明の思い込みを炸裂させてんじゃねーぞハゲ
0739デフォルトの名無しさん
垢版 |
2018/01/30(火) 20:44:18.42ID:04Xagkxs
>>738
いや間違いなくお前は糞女だよ。典型的な女のレスばかりだろ。
というかお前、むしろそれが分からないのはヤバイと思うが。

とはいえ、匿名掲示板上でのこの手の水掛け論の決着は非常に単純で、
・大多数の人にとって、どう見えるか
でしかない。
お前がどれだけ嘘の主張をしても、レスはどう見ても女でしかないし、誰も信じないよ。

ただこの際性別なんてどうでもいい。
お前はお前自身が荒らしであることを自覚して、死んでくれマジで。
お前がいる限り、スレの質はどんどん落ちていく。
だからお前は荒らしなんだよ。
敬語を使わないとか、死ね死ね言ったりとかは本質じゃないんだよ。
731-735のやりとりも、特に意味がない。(お互いそれなりに理解できている)
齟齬が発生しているのはスタートポイントがおかしいからであって、彼らの問題ではない。
正しいポイントから議論すれば彼らは噛み合うし、いい議論になったかもしれん。

ただ>>731,735がよく分からんのは、
君らはどうでもいいところでバトル始める癖に、自分では始めないことだ。
今回もこの糞女のスタートポイントから始めてるからおかしくなってる。
議論したいことがあるのなら、君らが勝手に始めればいいのさ。

韓国人死ね

一応>>731にもポイントを明示しておこうか?
> そんなメモリの無駄な使い方なんかやりません。
若干揚げ足取りだがこれは間違っていて、
一番少メモリの実装はフックでデイジーチェインする古来の方法だ。
ただしJavaScriptはそんなことはせず、イベントテーブルを持っていると思うがね。
0743デフォルトの名無しさん
垢版 |
2018/01/30(火) 21:35:06.14ID:FpOWlTjM
>>725の件ですが
VSCodeにそういう拡張機能はないかと思ったのですが
プレビュー系の拡張機能はJavaScriptが動かないものばかりです
VSCodeもElectronで動いているのですから、
webviewに表示すればJavaScriptも動くものが作れるのでは?
と思うのですが、そうはいかないのでしょうか?
0744デフォルトの名無しさん
垢版 |
2018/01/30(火) 21:39:37.02ID:dOWZ5By/
よく読んだけど、すごく長文で話をして嫌われる俺の長文よりひどいものを久しぶりに見たな。

何を語ってるのかよくわからん。
もしかして、すごく鋭い事を言ってるつもりなのかな。

EventEmitterSyncとモジュール自体にSync付けるのもよくやからんし、
emitが同期的に走ることを問題にしたいんだろうけど、そもそも同期非同期の関数を用意する場合は同期の方にSyncつけようね、ってルールだろ。
片方だけの時には関係ない。API眺めたら気づくだろ、常識的に考えて。
0745デフォルトの名無しさん
垢版 |
2018/01/30(火) 21:39:39.31ID:FpOWlTjM
Electronを使えばわりと簡単にプレイグラウンドが作れるんじゃないか
と思うのですが、そういうものはもうありそうな気もします
ですが、検索しても見つかりません
ないのでしょうか?
0747デフォルトの名無しさん
垢版 |
2018/01/31(水) 00:18:26.95ID:AGfG6JhI
>>733
なんか外野が喚いているようだがw

> >全ての発生したイベントの情報をずーっと保持し続ければいけない
>
> たしかにmousemoveなどを考えたら恐ろしいことになりますね

そういうこと。仮に1日後にonするようなコードがあったら
onするより前に発生したイベントを全部伝えることの恐ろしさがわかるよね?
そんな設計にするわけがない。基本としてonより前に発生したイベントを捕まえることはない


余談だが、jQueryのreadyメソッド = $(function() {}) は
DOM APIではDOMContentLoadedを使えばいいと思うかもしれないが
実はDOMContentLoadedイベントが発生した後に、readyを呼び出しても
ちゃんとイベントハンドラは呼び出されるという違いが有る

つまりonするより前に発生したイベントを伝えるような挙動をしている。
DOMContentLoadedはページごとに一回しか発生しないのもあって
ユーザーにとって便利なようにそうなるように作られているんだ。

setTimeout(function() {
 $(function() {
  alert('ready'); // 呼び出される
 });

 document.addEventListener("DOMContentLoaded", function() {
  alert('DOMContentLoaded'); // 呼び出されない
 });
}, 3000);
0748デフォルトの名無しさん
垢版 |
2018/01/31(水) 00:29:53.93ID:V9tZNzCA
chrome-extenionを作っておりましてサイドバーの機能をiframeで作りました。
iframe内でUI操作をするので大部分のロジックがirame内に集中しているのですが
通信ができないためbackground.js側にメッセージ送信を介して外部と通信するような仕様になっています。
こんな状況でバグトラッキングを行いたいと思ったらどういうライブラリが考えられるでしょうか?
0749デフォルトの名無しさん
垢版 |
2018/01/31(水) 07:42:48.27ID:BP4ujqwj
>>746
日本人が日本語で書いても理解できないなんて、まるで
日本人でないみたいだなぁ。
Syncの付け方間違ってるよ、って。
0750デフォルトの名無しさん
垢版 |
2018/01/31(水) 13:45:04.77ID:UN5/9QWx
>>747
別に必ず全部保持して全部伝える必要性は無くね?
最後のイベント保持して伝えて欲しいっていうユースケースは多いと思うよ
最近はaddEventListener第三引数にオプションオブジェクトが指定できるようになってて
間隔間引く提案とか色々されてきてるから、最後のイベントを得るようにもできるようになると思うよ
0751デフォルトの名無しさん
垢版 |
2018/01/31(水) 21:21:51.20ID:c/p2e2Pj
>>749
韓国人死ね

お前らはそうやってすぐ声闘するのも特徴だ。
喚けばそれが事実として認識されるのは、韓国人には馬鹿しかいないから。
それで日本人を騙すのはもう無理だ。ウザイだけだから韓国人はマジで死ね。

俺の日本語に問題があるから意味が取れないという主張で俺を叩く気なら、
少なくとも>>744内の日本語は完璧じゃないといけない。(日本人的には)

間違いなく言えるのは、>>744,749は韓国人であること。
・この程度の簡単な論理すら理解できない。
・749は744の日本語の間違いに気づけないからこそ「追い打ちできる」と勘違いしている。

分かるか?表面的な書き込みではなく、相手がどうしてそういう書き込みに至ったかを読みとるんだ。
叩くなら叩くでいいとして、
肝心の先鋒744があの日本語では、普通の日本人なら二の矢を継ぐ気にはならんだろ。
そして俺はそれを正面から分かりやすく指摘してるのに、(746)
749は出てきた。この感覚の違いを読みとるんだ。
もっと単純に言えば、自分だったら何を選択するか?を考えればいい。(黙るってのも含めて)
そこで自分と違う反応をしたのなら、それは君と彼の立ち位置の違いなんだよ。
自分の立ち位置を正しく理解できているのなら、相手の立ち位置を逆算できる。
「違和感」を感じ取って、それを頼りに辿るんだよ。

JavaScriptのスレだけ酷いのは、お前らが酷いからだよ。
技術レベルも酷いが、緊喫の問題はお前らの人間レベルだ。
だから上記をよく読んで読み方を学び、このスレの何が問題なのか、各自で理解しろ。
そして誰を殺すべきか、きちんと考えろ。

繰り返すが、匿名掲示板上で殺すのは躊躇しなくていい。
それは純粋に書き込みが酷かったからであり、ここは差別の存在しようのない世界だ。
似非人権屋、パヨク、韓国人は纏めて殺していい。
0754デフォルトの名無しさん
垢版 |
2018/01/31(水) 22:16:11.79ID:AGfG6JhI
>>750
> 最後のイベント保持して伝えて欲しいっていうユースケースは多いと思うよ

例えばどんなユースケース?

念の為に言っておくと最後のイベントが送られているというのは
例えば1時間前に起きたイベントをonでイベントハンドラを付けた時に伝えられるとか、

あるオブジェクトが複数種類のイベントを送信する時onchangeとかonkeydownとか
onkeyupとonclickとかonmousemoveとかその全部が送られてくるっていうことだからね
(最後の一種類しか送られてこないとしたらonmousemoveでほとんど打ち消されるだろう)

そんなことをされても迷惑な場合しか思いつかない
0755デフォルトの名無しさん
垢版 |
2018/01/31(水) 22:23:25.32ID:AGfG6JhI
まだ勘違いしてる点がありそうだから補足しておくと
「最後のイベントを伝える」ということの意味は

イベントを送信するsenderオブジェクトがいたとして
そのsenderオブジェクトからevent1というイベントが送信される

一時間後、reciever1がon('event1', function() })すると
すぐにイベントハンドラが呼び出される。

その一時間後、reciever2がon('event1', function() })すると
やっぱりイベントハンドラが呼び出される

その一時間後に、reciever3がon('event1', function() })するかどうかは
未来にならないとわからないので、最後のイベントであるevent1を
ずーっと保持し続けなければならないということ
0756デフォルトの名無しさん
垢版 |
2018/01/31(水) 23:54:12.91ID:reY+vhDf
>>754
mousemoveが複数送られた時、最後の一つだけあればいいよね。それならメモリも少ないし
ってことじゃないのか
0757デフォルトの名無しさん
垢版 |
2018/02/01(木) 00:09:52.90ID:f2opCj6I
>>756
だからそれをどういう時にそれを使いたいのか?ってことなんだ
なんども一時間後にと言ってることから推測してくれ

画面をスクロールとかしてそのイベントを発生させた
要素が画面外にある時、mousemoveを受け取って、
それでやりたいことがあるのか?ってこと

「よくあるユースケース」というがそのユースケースが思いつかないよ
逆に予想外のことが起きたとしか思わないだろう。

なんで今その要素触ってないのに、その要素からmousemouveイベとが
発生したんだ?って混乱するだけでしょ。
0758デフォルトの名無しさん
垢版 |
2018/02/01(木) 00:23:21.61ID:f2opCj6I
もちろん限られたユースケースなら考えつくと思うよ
だけど基本機能に組み込むほどの需要ないだろ?
0760デフォルトの名無しさん
垢版 |
2018/02/01(木) 00:44:40.56ID:AVafL46K
>>751
と言うか、
>>744が日本語として完璧である必要は無いし、逆に>>751>>744で挙げているSyncと言うかサフィックスの付け方の間違いの指摘(同期関数には無差別につけるべき、ではない)に対しての反論が含まれてるべきだと思うが。
斜めに読んだ感じ「間違ってました、ごめんなさい」が言えずに長文で論点をそらしにかかってるようにしか取れない。

だから、三行で、別の話は持ち出さずに命名規則としてソースを出して反論して。
0761デフォルトの名無しさん
垢版 |
2018/02/01(木) 02:54:01.72ID:Nsc0tqbW
>>757
これからはasync-awaitとESModuleが主流になってくるけど
それで必要になったときにロードかけて、例えば君が言ってたDOMCLなんかをそのモジュールから登録すると取りこぼすのよ
他に実際困ったケースを挙げるとmessageとか
取りこぼしを考えると無駄にやり取りのロジックが必要になる
0762デフォルトの名無しさん
垢版 |
2018/02/01(木) 07:11:39.48ID:gPQ21xlq
うーん
キャンバスでマウスの動きに合わせて特殊なラインを書くモードのボタンを押したときに
そのモジュールがロードされるまでのイベントを取りこぼしてしまうっていうのを想像したが
それだと最後の1つだけじゃ機能不足になるな
出来る限り個別の機能はモジュールに任せてメイン側で特別な工夫はしたくないとしたらどうすればいいのだろう

イベント発生を止めて貯めるということができればいいか
その間他のモジュールにも影響が出てしまうけれど、逆に他のモジュールと足並み揃えられるから現実的か
だけどモジュールによっては足並みを揃えない方が良い場合もあるだろうし
これでもモジュールが止めるまでの間、メイン側で行ったとしても実際イベントが伝播してくるイベントループと、
イベントを貯め始める処理を開始するまでの間にループがいくらか回ってしまう可能性がある

async世界で抽象化してると、イベントが起きてそのイベントハンドラの中ですぐ何かをすると言うことが難しくなる
モバイルで音声鳴らすときにも同じような問題がある
つまり、クリックされてその流れで音声鳴らすコードを書いても
思ったより間隔が開いて(確か100msくらい開くと駄目)しまうかも知れない
ということでそこだけ特別な書き方をしないといけないという問題

イベントは本当に難しい
0763デフォルトの名無しさん
垢版 |
2018/02/01(木) 21:31:43.40ID:huK8Ijw8
>>759-760
韓国人死ね

意味が取れないことを隠す為に「斜めに読んで」と言い訳している時点でお察し。
俺の日本語について文句を言っているのにひよるとか、マジで韓国人ですと自白しているようなもの。
(これは749の時点で既にそうだが)
お前らの立場なら、どんどん俺の日本語の問題点をあげつらってこないとおかしいだろ。
こういった、整合性が全くなく、ただ叫ぶのも連呼リアンの特徴。

「三行」の主張も中身は同じ。
俺の日本語に駄目出し出来るほど日本語が上手いつもりなら、三行にこだわるとか頭おかしいだろ。
2chの長文なんて、世間では短文だ。一瞬で読めなくてどうする?
MDNにしても、どのページも三行では書いてない。
三行しか読めないようなら、今後プログラマを続けるのは無理だ。辞めた方がいい。
池沼韓国人はマジで死ね。


まあとにかく、このスレをよくする為にはどうすればいいか、お前ら自身が考えろ。
ただそれ以前に、お前らはいろいろ読めてない。
少なくとも、俺が具体的に示していることくらいは読めるようにしろ。
そうすれば、もっと匿名掲示板を楽しめるようになるから。

そして、日本語/論理が通じない韓国人を殺すことを躊躇するな。
お前らが大学生だとして、幼稚園児に研究室に乱入してこられても困るだろ。
適当になだめて、出ていってもらうのが妥当だ。そうじゃないと研究室が機能しない。
お前らが議論したいのなら、議論に耐えない日本語/論理能力の人は出ていってもらうのが妥当だ。
これは本当に当たり前の話だ。パヨクやゴキブリ韓国人に騙されてはいけない。
レベルの高い奴らが深く話し込みたいとして、馬鹿がそれを邪魔する権利はない。
0764デフォルトの名無しさん
垢版 |
2018/02/01(木) 21:53:33.09ID:AVafL46K
>>763
日本語が問題じゃないからあげつらわないよ。バカなの?
お前の考えてるSyncというプレフィックスの付け方が問題で、そしてそれは間違ってるって言ってるんだけど。

間違ってたか合ってたかの二択で答えられるようにしたのに、まるで日本人では無いかのように感情に基づいた(しかも意味のない)長文だな。

で、間違いか正解かどっちだったの?
0765デフォルトの名無しさん
垢版 |
2018/02/01(木) 21:56:05.46ID:AVafL46K
三行と言ったのは、
「合ってるor間違ってる」
「それはこういう理由」
「謝辞or訂正」
で充分だからであって、三行以上読まないって言ってる訳じゃ無い。
三行にまとめられなきゃ無能だよと言ってるだけだ。
0766デフォルトの名無しさん
垢版 |
2018/02/01(木) 22:01:36.78ID:hOC/kj1k
> 三行しか読めないようなら、今後プログラマを続けるのは無理だ。辞めた方がいい。

そりゃ誰だって中身もないのに無駄な長文は読みたくないっしょ
簡潔な文が書けないと今後プログラマを続けるのは無理だからやめた方がよい
0769デフォルトの名無しさん
垢版 |
2018/02/01(木) 23:55:48.50ID:huK8Ijw8
>>764
韓国人死ね

> 日本語が問題じゃないからあげつらわないよ。バカなの?
なら俺の投稿を全部読み直し、お前の間違いを謝るのが先だな。
というか、日本人ならそうする。
0770デフォルトの名無しさん
垢版 |
2018/02/01(木) 23:58:34.24ID:f2opCj6I
>>761
> 君が言ってたDOMCLなんかを
何の話なのか分からんが、正しい使い方をして取りこぼしているなら
ライブラリの問題としか思わんが。
まあ実際は間違った使い方をしてるだけだろうね。
コード書いてごらん? 修正してあげるから
0771デフォルトの名無しさん
垢版 |
2018/02/02(金) 00:57:19.53ID:sA1ck48z
>>770
上で挙がってたjQueryのreadyはDOMContentLoaded過ぎても効くし、
DOMCLには対応するdocument.readyStateがあるよねってこと

例えばじゃあ今からマウスの位置に何かを表示しますってしようとしても
そこからマウスが動かなくていつまで経ってもmousemoveイベントが起きないといつまでも表示されないし、
もちろんそれで致命的な何かが起きるわけではないけれど、
今Webでもリッチなアプリが作れるようになってきてる訳でそういう細かいデザインも気になってくる
かと言ってあまり複雑なことはしたくないということ

だからdocument.readyのように
documentレイヤーだけでいいからlastEvent.mousemoveみたいなのがあったら結構楽になる
でも一々イベント履歴をチェックするのも面倒だから、できればaddEventListenerで取りたいけど、
実際無制限にするわけには行かないから、一つの落とし所としてはここからイベントを貯めるという指定ができるようにすること
0772デフォルトの名無しさん
垢版 |
2018/02/02(金) 00:58:53.41ID:ZTxWGWCM
> 上で挙がってたjQueryのreadyはDOMContentLoaded過ぎても効くし、
readyはイベントじゃないからね

だからなんなんだ?としか思えないが
何が言いたいんだ?
0773デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:01:39.79ID:sA1ck48z
>>770
そうすれば、ターゲットがクリックされたことを機会に、ターゲットをフリーズさせて、
その間にドラッグするためのモジュールを読み込んでそこから再開するというようなことができる
ただ厳密に言うと、async-await、observable的に書いたりフレームワーク使うと
そのイベントの直接のハンドラ呼び出しから同期的に処理が続くとは限らない、
例えばasync関数を呼び出すとそれは次回のジョブキューに登録され、おそらくブラウザだと次回のイベントループ時に処理される

それが組み合わさってくると、クリックされたことを契機に、それからの別のイベントを把握しようと考えても
その一瞬以下の間に1つ2つ取りこぼすロジック上の可能性を残してしまう
そしてこれが発生すると迷惑な事象、つまりバグ挙動になることが多い
ドラッグくらいじゃそんなに大したことにはならないと思うが、メッセージングとかだと0に近い可能性でも駄目なので
確実性を出すためにメッセージにidを振るだとか、再送要求を設計するとか面倒くさい気遣いがかかってしまう

結局はモバイルの音出しの問題のようにasyncな世界を外れたフックが必要になるんだけど、
そこを愚直に書くと汚らしくなるので、今のジョブキューや今のイベントループといった状態を得るためのAPIが要るんじゃないかと思う
ちょっと違うが、ECMAにZoneという、これまたまあまあ違うがNodeの昔のdomain的雰囲気を持ったAPIが提案されてるが
そういうのがいいのかもしれない
0774デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:02:25.06ID:ZTxWGWCM
>>771
> 例えばじゃあ今からマウスの位置に何かを表示しますってしようとしても

今のマウスの位置に何かを表示したいのか
それとも一時間前に発火したイベントのマウスの位置に
何かを表示したいのかはっきり言ってしてくれる?
0775デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:03:44.69ID:ZTxWGWCM
> documentレイヤーだけでいいからlastEvent.mousemoveみたいなのがあったら結構楽になる

いらん。documentのmousemoveで
xとyを保存するだけでいい。

それだけで解決できる問題なのに
イベントの仕組みを複雑化させて
需要の少ないユースケースに対応するのはアホ
0776デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:05:23.52ID:sA1ck48z
>>772
要するに、asyncな世界でイベントハンドリングを確実に綺麗に上手くできやすくするための
なんらかの、そして幾つかの標準による補助機能が必要という話
たとえばaddEventListnerの第三引数のオプションの指定を増やす
抜本的な改革はその方向じゃ難しいかも知れないが、
0778デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:15:47.94ID:sA1ck48z
>>774
話が噛み合っていないね
ここから先と指定できればいいが、ずっと貯めておくのは非現実的だし、
ならそういう標準的な補助の話を一旦抜きとしても一般的な話をしてもやっぱり
マウスダウンが起きた、ではここから先のマウス移動を見よう、としてもasyncな世界だと
onmousedown=e=>onmousemove=
みたいな同期的なロジックではないのだから、
クリックが起きてから、マウスの移動を検知し始めるまでに1つイベントが走ってしまうかもしてない

つまり、マウスダウンされた瞬間超人的なスピードでマウスが動いた場合、取りこぼすということ
ドラッグの話の場合大げさなことかもしれないが、
それでも同期的に書いてた頃はイベントループという仕組みでこういうケースも保護されていた
でもそれが無くなると、本当に様々な心配事が出てきて、それは実際起きうることだったりもするという話

その一つの解決策は、onmousedown=に直接フックして、同期的に>>775の処理だけでもしとくことだが、
そうするとせっかくの抽象化async世界が壊れる
それなら最初から同期的に昔からの書き方で書いとけばいいということになる
そういう問題
0779デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:21:12.58ID:ZTxWGWCM
> つまり、マウスダウンされた瞬間超人的なスピードでマウスが動いた場合、取りこぼすということ

うん? それが最後のイベントをonした瞬間に再生したら解決できるとでも?

Aの位置でマウスダウン発生、超人的なスピードでBの位置に移動、
onしてマウスダウンを捕まえたら、今Bの位置にいるのに
Aの位置でマウスダウン発生だよね
0780デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:35:18.66ID:sA1ck48z
>>779
最後のイベントだけでは有効なケースはより限られるという話はした
ただそれでもDOMC.L.みたいなケースには有効
だからそういうのもあるけど、もしくはここから先イベントを貯めると言うことができればいいかもという話もして、
それも完璧じゃないけど、改善作は欲しいよねという話になってる

だけどここまで考えてやっぱりObservableAPIが良いのかなと思い始めた
つまりdragstart = mousedown.flatMap(() =>mousemove
とかした際にそのフレームワークがしっかり可同期的に設計されていれば
とりあえず、mousedownからmousemoveまでの間の取りこぼしはなくなる

もちろんfor await dragとかをしてもそこは非同期だから
そのドラッグから次に何かをするまでの間は気をつけないといけないけれど、
こういうようにイベントを組み合わせて1つのイベントとして固めておくと言うことができればかなりの問題緩和策になる

問題はObservableが標準に入ったとき、async generatorとかあるのに対し内部的に同期で回せる設計でやってくるのかということだな
0781デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:36:39.52ID:ZTxWGWCM
なんかこの人が何を勘違いしているかわかった気がするわw

説明めんどくせーなー、
イベントの情報っていうのを
わかってないんだよなー

イベントを只の割り込みみたいな扱いをして
イベントの情報を使うのじゃなくて
割り込みが発生した時点の情報をかき集めて
処理しようとしてるんだな。

イベント発生時点で情報をもたせればいいだけなのに

うん、やっぱりコードの書き方が間違ってるってわかったから
もういいよw
0782デフォルトの名無しさん
垢版 |
2018/02/02(金) 01:57:53.92ID:sA1ck48z
>>781
だから例えば、ドラッグ=マウスダウン→flatmap:マウスムーブ→until:マウスアップ、と設計するように
あるイベントが発生してそれから先また別のイベントを補足したいってことはよくあるけど
同期的に書いてそのイベントループ中にイベントの補足を開始できればいいけど
async関数使ってると原理的にそこが保証されないコードになることがあるよね
それを簡単に改善できる方法ってないのかなって話だよ

イベント発生時点でやれば良いって言っても
async関数でイベントをawaitしてるとイベントが起きたループとは実際処理が走るのはずれるのよ
つまり
new Promise((_ok)=>{ok=_ok}).then(e=>console.log('P'))
のとき
onclick=e=>{
ok(e)
console.log('C')
}
とすると、C→Pの順番で呼ばれるでしょ?

Promiseってのか解決と同時にコールバックが走るわけじゃないんだから、
そこで隙間が開いてしまって、積み重なるとタイミングバグの元になるのよ
それを確実に回避するためにはイベントハンドラを使って同期的に処理を書き連ねていかないといけないから
async世界と相性悪いねって話だよ
0783デフォルトの名無しさん
垢版 |
2018/02/02(金) 02:15:59.03ID:ZTxWGWCM
>>782
onした時点で最後のイベント発生してほしいという話と
全く関係ないない。

えとな、お前が言いたいのは、
イベントが発生した順番で、
イベントハンドラが呼び出されてほしい
ってだけだろ

それだけだろ。いちいち話を複雑にさせやがって

UDPの順番は保証されませんという
問題を解決する話と一緒だ。
0784デフォルトの名無しさん
垢版 |
2018/02/02(金) 13:49:28.44ID:qHIAWkxQ
node.jsでUTF8ファイルにBOMを追加するという処理を書きました
BOMというのはFEFFという2バイトのバイナリなので
ファイルに書き込む文字列の先頭に
'\ufeff'
を付加すればいいとネットで知り、そのとおりにやって実際に動作しています
\uを使ってバイナリを書き込むことに関して疑問を持ちました
\uという記法は4桁の16進数でUnicode文字を記述する方法とあります
Unicode文字は「任意のバイナリ」とイコールではないと思いますが、
どうなのでしょうか?
今回はFEFFが偶然unicodeのコードの範囲におさまっていたから問題なく書けたのでしょうか?
それともこの書き方でどんなバイナリデータでも書けるのでしょうか?
だとしたら「Unicode」っていう必要あるか?と思うのですが、どうなのでしょうか?
0785デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:10:56.79ID:gQB0gokN
バイナリの2バイトFEFFを付加するという認識が間違ってて
UnicodeのU+FEFF ZERO WIDTH NO-BREAK SPACEを
書き込むというのが正しい
0786デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:14:50.57ID:gQB0gokN
うっかり投稿してしまった
U+FEFFはUTF-16(Unicode)としてはFEFFと呼称されるが
実際にファイルに書き込まれる時はエンディアンによってバイト順序が変わる
ビッグエンディアン=FE FF
リトルエンディアン=FF FE

だからファイルを開く際にOSが先頭2バイトを見て
FE FFならビッグエンディアンのUTF-16
FF FEならリトルエンディアンのUTF-16と判断できる
0787デフォルトの名無しさん
垢版 |
2018/02/02(金) 14:47:14.31ID:OKvpFX8E
>>769
謝罪だけを求めるなんてどこの国の人なんでしょ。

とりあえず、おまえがあってたか間違ってたかを答えて。
その結果俺の行動は考えるよ。
お前の自己責任で謝罪が得られていないようなもんだ。
0788デフォルトの名無しさん
垢版 |
2018/02/02(金) 15:30:38.66ID:qHIAWkxQ
>>785-786
FEもFFもUnicodeのコード領域に含まれたUnicode文字列なのですね
\u記法を任意のバイナリを書き込むために使うことは、できるかどうかしりませんが、
たとえできたとしても推奨はされない方法ということでしょうね
ありがとうございました
0789デフォルトの名無しさん
垢版 |
2018/02/02(金) 16:18:08.94ID:qHIAWkxQ
FEとFFが別々の意味かと勘違いしていました
FEFFで「ZERO WIDTH NO-BREAK SPACE」という一文字なのですね
0790デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:51:14.28ID:ZJzCT+jY
ついでだから、何故韓国人を殺さなければならないか、さらに説明しておく。

非韓三原則
韓国人には、助けない、教えない、関わらない

日本人はディベートが下手だが、これは場数を踏んでないからだ。
論理は出来ている。上手くなる為には後は場数を踏むしかない。
>>757から一連のレスは(内容はさておきディベートの形式は)まあまあだ。
だから、やりたいのなら気が済むまでやればいい。

それに対して、韓国人>>760は糞だ。
これはパヨク/韓国人/ヤクザの論法で、相手にしても何も得られない。
だから相手をしてはいけない。韓国人/ヤクザは無視して殺すべきだ。

違いを見分けるのは(知っていれば)簡単だ。
ディベートはある事柄に対し「どちらがいいか」を決着する物だ。
だから通常戦術は「相手の意見を否定しつつ、『自分の意見を補強』(ここ大事)する」ことになる。
自分の意見が優勢なら+、劣勢なら−としてスコアを付けると、
通常、双方の発言で0を挟んで天秤のように振れ、発言毎に、+1, -2, +2, -1 といった経路を辿る。

これに対して、パヨク/韓国人/ヤクザの論法はそうじゃない。
「相手を否定すること」だけを目的とし、自説の補強は全く行わない。
そして「対応できない相手が悪い」と連呼し、精神的に参らせるわけだ。
ヤクザやパヨクがよくやっている手だから見たことあると思うが。
この場合、上記スコアを付けるのなら、0から+方向にしか振れず、意見が広がっていかない。
典型的には「対案を出せ」と対策されるケースだ。
相手は否定するばかりで、新しい知見を出さないものだから、
結局自分の意見の範囲でしか広がらず、ブレストにもならない。

韓国人死ね
0791デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:52:10.85ID:ZJzCT+jY
> 命名規則としてソースを出して反論して (>>760)
ディベートに持ち込み、どちらが優位か結論を出す気なら、
760自身が「命名規則としてソースを出して」自説を補強すれば、それで済む。
それをせず、相手に要求して連呼するのはヤクザのやり方。上記通りだ。
相手にしたところで、何も得られない。だから無視して殺さなければならない。

多分、韓国人流の精神的勝利法の一環なんだと思うが、
そもそも、匿名掲示板上で勝った負けたしても意味無いだろ。
ここでやるべきなのは、「その案件について、一番妥当だと思える意見は何か」であって、
それを「誰が言ったか」は価値がないと見なすから匿名なのであって。

だから、何であっても、「それについては俺はこう思う、理由はこうだから(自説の補強)」が匿名掲示板での基本スタイルで、
相手に対して優位に立つ為の「相手の意見を否定する」戦術は基本的に必要ない。
そしてどっちの意見が妥当かは読者が勝手に判断するだけ。
相手の意見を全部否定できたとしても、スコアは0には戻るが、+にはならない。
つまり、否定するだけだと引き分けには持ち込めるが、絶対に勝てない。
勝つ為に+にしたいのなら、自説の補強をするしかないんだよ。しない時点でアホ確定だ。

だから繰り返すが、
> 命名規則としてソースを出して反論して (>>760)
この発言だけでこいつは馬鹿だと分かる。相手をしても何も得られない。
勝ちたいのなら、勝手にソースを出して自説の信者が増えるよう努力すればいいだけの話だ。
それが妥当かどうかは読者が勝手に判断してくれる。俺が否定しようがしまいが、関係ない。


ということを念頭に置きつつ、ディベートしたい奴は気が済むまでやればいい。場数を踏めば上手くなる。
ここは匿名掲示版なんだから、基本戦術は、「俺はこう思う、理由はこう(自説の補強)」でよろしく。
他人の意見を否定しても勝てない。勝つ気なら、よりよい意見で「上書き」することを目指せ。
あんまり酷いようなら行司してやるよ。
とはいえ、今のところ「余計なお世話」になりそうなのはいいことだね。

韓国人死ね 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0792デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:52:57.96ID:EToJkcFD
うーん、同期関数しか用意しない場合はSyncはつけるべきじゃない、と何度言ったらわかるのかな。
requireって非同期でうごくっけ?とか色々あるだろうに。
0793デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:53:36.67ID:ZJzCT+jY
さらについでに講評しとくと、
>>777の時点で理解できないのは777がアホだから。
そこまでに十分な説明はなされているし、俺には通じてる。説明も下手ではない。

> そうすれば、ターゲットがクリックされたことを機会に、ターゲットをフリーズさせて、
> その間にドラッグするためのモジュールを読み込んでそこから再開するというようなことができる(>>773)
JavaScriptはそのように設計はされていない。
だからこれをやりたいのなら、何らかのサポートが必要なのも事実。
とはいえ、このやり方が必要かは議論になるだろう。

> だけどここまで考えてやっぱりObservableAPIが良いのかなと思い始めた (>>780)
> async世界と相性悪いねって話だよ (>>782)
はっきり言えばJavaScript含めて一般のプログラミング言語は
同期的に処理が行われる前提だからそもそも相性が悪い。
と言っても通じないだろうから簡単に説明すると、

var a = 1; // (A)
a = a + 1; // (B)
console.log(a); // (C)

とあった場合、(A)(B)(C)の順に処理されて2が出力されることを当然だと思ってるだろ?
世の中にはそうじゃない言語もある。
https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AD%E3%83%BC%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

韓国人死ね
0794デフォルトの名無しさん
垢版 |
2018/02/02(金) 22:55:10.28ID:ZJzCT+jY
>>782(続き)
プログラミング言語ではないが、verilogで説明すると、

assign a = b;

は b が変化するたびに再評価されて a = b が定常的には保証される。
JavaScriptで言えば

Object.observe(b, function(){ a = b;});

とほぼ同じと考えていい。
だからverilogの場合は(A)(B)(C)は独立な関数であって、実行順は規定されない。
必要なときに必要な順で評価される。この点はHaskellも同じで、例えば、

console.log(b);
assign b = a + 1;
assign a = 1;

については、JavaScriptならundefinedになるが、verilogとHaskellでは2と正しく評価される。
だからHaskellについて詳しいのなら、そっちから考えてもいいだろう。
Haskellは遅延評価でしかないが、初期値の計算方法自体はデータフロー型と似ているところがある。

君はイベントをデータフロー的に接続することを考えている。
それが効率がいいのかは俺には分からない。
ただし、一般的にverilogは難しいとされるから、その方法は流行りにくいだろう。
JavaScriptでは関数単位で非同期だが、verilogは行単位で非同期で、これについて行けない奴が多い。
JavaScriptでもそうだが、同期的に書きたがる奴はいるだろ?
結局の所、同期的に書けること自体が簡単なんだよ。そして簡単なことは重要な事なんだ。
君はJavaScriptをverilog化しようとしている。それは多分受けない。

韓国人死ね
0795デフォルトの名無しさん
垢版 |
2018/02/02(金) 23:08:38.80ID:EToJkcFD
ソースも何もなぁ。
最初に自分が張ったURLから辿れるように
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking
であるように
All of the I/O methods in the Node.js standard library provide asynchronous versions, which are non-blocking,
and accept callback functions. Some methods also have blocking counterparts, which have names that end with Sync.
いくつかは、Syncで終わる、対応する非同期関数の同期版があるよ(同期関数だからSyncだとは言ってない)、とか
https://github.com/nodejs/node/issues/5
で議論されてるように、とてもライトウェイトな同期関数はもういいんじゃねえの?

みたいな話に落ち着くんじゃない?

requireの名前がrequireSyncに変わったらまた声高らかに演説してくれたら良いよ。
変わらないうちは、同期関数しかない物は別にSyncで終わる必要はないと言いたいが。
0796デフォルトの名無しさん
垢版 |
2018/02/02(金) 23:13:56.08ID:EToJkcFD
>>794
verilogが常にすべて同時に動くのはそういう問題じゃないだろ。

メッセージポンプが全てって割とあるんじゃねえの?
メッセージポンプだけじゃなくてデータも一方向にしか流さないFlux的な考え方が何度めかの流行りだったんだし。
0797デフォルトの名無しさん
垢版 |
2018/02/02(金) 23:34:40.13ID:ZJzCT+jY
>>795
それに対する返答も、俺は既に書いている。
日本語が読めるつもりなら、俺の投稿を理解できるまで読み返し、ちゃんと自殺しろ。

韓国人死ね
0798デフォルトの名無しさん
垢版 |
2018/02/02(金) 23:39:27.35ID:3zbIMbyp
最近書いたコード、ほとんどすべての行にawaitが入っててさながら「await地獄」だったわ。
0800デフォルトの名無しさん
垢版 |
2018/02/03(土) 00:19:45.31ID:fnYqaptp
繰り返すが、韓国人を殺すことを躊躇するな。
お前らにも彼らの論理の稚拙さは分かるだろ。邪魔なだけだ。
なぜJavaScriptのスレにだけゴキブリ韓国人が溜まるのかはさっぱり分からないが、
とにかくこのスレを正常化する為にはまずは汚物を消毒するしかない。

お前らの議論スキルが低すぎるから、韓国人やパヨクの詭弁に騙される。
だから俺がグダグダとお前らに議論のやり方を説明している。
冷静に見て、彼らは邪魔してるだけだ。それに気付け。そしてきちんと殺しきれ。
例えば、>>795>>742の時点で書けるレスだ。
それを書かないのは、意図的に邪魔しようとしているか、そもそも議論の能力がないか。
区別する必要はない。どちらも殺処分でいい。邪魔なだけだ。

韓国人死ね

対して>>747は、基本的に自説の開陳&補強で突っ走ってるだろ。
匿名掲示板上の議論はこれで正しい。だからまあまあの議論になる。
>>778に関しては、自分で修正できているし、説明も議論も十分上手い。まあ要らん世話だろうがね。

今のお前らは、仮にジェンヌと同じ削能力を与えられたとしても、
誰が問題なのか分からず、スレを良くできない。
これでは良いスレは持てない。民主主義と同じで、自分たちの議論能力以上のスレは持てないのだよ。
だからお前らにはまず議論上手になってもらう必要がある。
リアルの議論はリアルタイム性がありなかなか難しいが、
ここでの議論は、何度でも読み返せるし、じっくり考えられる。この点は学習には向いている。
だからまずは議論が上手くなってくれ。そして誰が問題なのか、ちゃんと見抜けるようになってくれ。

ゴキブリ韓国人マジで死ね
邪魔するだけの奴を殺すことを躊躇する必要はない
0801デフォルトの名無しさん
垢版 |
2018/02/03(土) 07:38:45.12ID:/s0TJm2l
Electronでアプリを作っている者ですが
CSS Grid Layoutというものを知りました
今まではHTML5+CSS3で苦労してレイアウトしていたのですが
簡単にレイアウトできるCSS Grid Layoutというものがあり、
それはもうChromeで、つまりElectronで使えると。
今まで何してたんだろうと思わずにはいられません
JavaScripterといえどもCSS方面のキャッチアップも怠ってはいけないですね?
0804デフォルトの名無しさん
垢版 |
2018/02/04(日) 05:03:12.23ID:18SFip1y
HoudiniはローレベルAPIだからこれが早々古くなるのは考えにくい
半年後だとまだHoudiniの一部が実装中の段階だと思う
0805デフォルトの名無しさん
垢版 |
2018/02/04(日) 11:43:44.83ID:fLIvj+46
HoudiniというのはCSSをJavaScriptで操作できるようにするものなのですね
Electronを使いはじめてから、ブラウザ対応を考えなくていい良さをしみじみと実感したので
ブラウザ間の差異が吸収されていく流れは歓迎です
ありがとうございました
0806デフォルトの名無しさん
垢版 |
2018/02/04(日) 12:14:34.20ID:1FtHLig+
Houdiniって低レベルAPI用意してやったからお前ら自分たちで好きなライブラリ作って勝手にやれよ、という標準団体からのメッセージだから
このスレにもその内難しくてセンシティブな低レベルAPIの質問と、誰もが初めて聞くようなマイナーライブラリの質問が増えてくるんだろうな

JSは色々自由な所が多いが、どういう構文使ってどういうAPI使うかは、標準やブラウザの実装状況から判断すれば良かった
でもこれからはライブラリの作者とユーザーが考えないといけなくなりそうだね
0807デフォルトの名無しさん
垢版 |
2018/02/04(日) 12:30:29.21ID:QNMeWZU4
JSの世界ってそんな感じだよな
標準で提供するのは低レベルAPIです。
あとはjQueryなり好きなライブラリを作って
それを使ってください
0808デフォルトの名無しさん
垢版 |
2018/02/04(日) 16:36:41.51ID:18SFip1y
最終的にはオレオレCSSの定義からペイント、レイアウトまでJSで行えるのがHoudiniだから
jQuery時代のラッパーライブラリとは次元が違ってくるとは思うけどな
0809デフォルトの名無しさん
垢版 |
2018/02/04(日) 16:39:21.65ID:Aaw/PB9H
> オレオレCSSの定義からペイント、レイアウトまで

ん? それってレンダリング周りしかできないってこと?
じゃあDOM操作のjQueryとはかぶらないのか
0810デフォルトの名無しさん
垢版 |
2018/02/04(日) 19:33:02.43ID:18SFip1y
>>809
その通り
レイアウトを担当する所謂jQueryライブラリには関係があるかも知れないが、本体とは関係ない
ただ仕様群のうちTyped OMだけは幅広いユーザーやライブラリに影響もとい恩恵がある
0811デフォルトの名無しさん
垢版 |
2018/02/05(月) 11:43:34.20ID:rrC2uMN7
ReactとTypeScriptはHTMLに型を与えてくれた。
IDE経由で必要なプロパティが分かるのはほんとありがたい。

cssもそういう方向に進んでくれたらありがたい
0812デフォルトの名無しさん
垢版 |
2018/02/05(月) 14:03:07.36ID:Ubmn5+B6
値を文字列として読み書きするのが.innerHTMlのように時代遅れになる日も近いな
0813デフォルトの名無しさん
垢版 |
2018/02/06(火) 12:17:27.83ID:xnYBrrOR
上で話題になってたことと関連して
今年はロックやスケジューリング機能が入ったマルチスレッドDOMの話が進みそう
今非同期を使い倒さないといけないのって、結局UIスレッドが1つでメインスクリプトはそれを妨害しないように動かないといけないからで
Houdiniと一緒にDOMもパーツ毎に別スレッドで制御できれば、ただ同期的に書けばいいだけになるよね
0814デフォルトの名無しさん
垢版 |
2018/02/06(火) 17:27:24.12ID:xat7U2Z1
>>813

マルチスレッドになるとかやべえ。
iOSアプリだって描画系はシングルスレッドで動かしてるし、絶対デットロックするだろ。
0816デフォルトの名無しさん
垢版 |
2018/02/06(火) 23:49:08.32ID:8DjF9uYT
マルチスレッド自体はWorkerや非同期XHR、タイマーなどでもできるが
マルチスレッドDOMって何ぞ?
0818デフォルトの名無しさん
垢版 |
2018/02/07(水) 00:51:26.45ID:58msOu+q
読んでないけど、ページを論理的に分割する方法があれば
マルチスレッドDOMは実現できるでしょ?
コンポーネントに分割して外部とやり取りする
インターフェース経由でしかアクセス出来ないようにすれば良い
0819816
垢版 |
2018/02/07(水) 07:05:53.98ID:ZpMnd+tU
メニューと本文を別々にロードするようなものなら、XHRを2つ使えば可能なんだけど
マルチスレッドDOMはJSでやるものではなくブラウザの実装の問題じゃないのかな

たしかにテーブルや複雑な段組み表示で描画が待たされるけど
上部のレイアウトが決まらないと下部の描画ができないのはどうしようもない

擬似フレーム、レイヤー、サイドバーを別スレッドで描画するというのならできそうではあるけど
(ブラウザを作るのは人ごとなので、言うだけなら何とでも言える)
iframeで分割してpostMessage()するのは現行規格でもできるけどね
0820デフォルトの名無しさん
垢版 |
2018/02/07(水) 10:57:44.93ID:aUUcrJfq
rustを使って開発してるFirefoxの
レンダリングエンジンはマルチコアに最適化してるんだっけ
ということはマルチスレッドでDOMが動いてる?
とりあえず最終的な描画部分はマルチスレッドになったとしてもjs側はシングルスレッドのままな気がする。
そもそも描画系以外の処理はserviceWorkerとか使えばマルチスレッドぽくなるんだからそれで良くないか?
0821デフォルトの名無しさん
垢版 |
2018/02/07(水) 18:14:47.81ID:v+xEfL1+
レイアウトとレンダリングに関してはすでにHoudiniで定義されている
Workerはオーバーヘッドが大きいのでWorkletという
レンダリングエンジンの各作業スレッドの拡張ポイントとしてJSを動かす仕組みで行う

あとある部分のレイアウトが完全に決まっていなくてもとりあえずの値で確定させて描画ができる
画像が読み込み中の場合を考えたらいい
0822デフォルトの名無しさん
垢版 |
2018/02/07(水) 20:15:34.39ID:ZpMnd+tU
単にマルチスレッドで複数の要素をアニメーションさせたいだけであれば、
アニメーションさせたい要素の数だけタイマーを生成すれば可能かと
(ただしJSアニメーションはCSSアニメーションに比べて処理速度が遅い)

シングルスレッドのアニメーション(タイマーを1つ生成)

function anim_all(){
要素Aをアニメーション;
要素Bをアニメーション;
requestAnimationFrame(anim_all);
}
requestAnimationFrame(anim_all);

マルチスレッドのアニメーション(タイマーを2つ生成)

function anim_a(){
要素Aをアニメーション;
requestAnimationFrame(anim_a);
}
function anim_b(){
要素Bをアニメーション;
requestAnimationFrame(anim_b);
}
requestAnimationFrame(anim_b);
0824デフォルトの名無しさん
垢版 |
2018/02/07(水) 20:45:47.82ID:ZTCS93cG
ついでだから聞くんだけどxhrをworkerで動かしてるサンプルがあったんだけど
あれって普通にxhr使うより早くなんの?
0825デフォルトの名無しさん
垢版 |
2018/02/08(木) 02:27:56.97ID:VQ9z9vC7
ファイルを取得するとこまでは殆ど関係ないけど
それを使って重い処理をWorkerでするのなら
取得もWorkerでするのが普通でしょ
0826デフォルトの名無しさん
垢版 |
2018/02/12(月) 00:04:36.56ID:pR3wczEv
JavaScriptで大文字と小文字の使い分けをどうしているのかが最大の謎
たとえばJavaなら
Hoge hoge = new Hoge();
ならば、「hoge」はインスタンス、そして「Hoge」はクラス名
だと分かる。

ところが、JSの場合、
var hoge = new Hoge();
のとき「Hoge」はクラスではなくこちらも「オブジェクト」だから、
「hoge」も「オブジェクト」「Hoge」も「オブジェクト」じゃん?
だけど片方は大文字で片方は小文字だから結局「頭が大文字な変数」と
「頭が小文字な変数」の何を見分けていいかわからなくなる。
「hoge」があったときにこれがオブジェクトなのか関数なのか
プロトタイプなのかコンストラクタなのか一体何者なのかさっぱり分からん。
0827デフォルトの名無しさん
垢版 |
2018/02/12(月) 00:17:33.53ID:uxSxkNmu
>>826
実体が○○だから、こうするって考え方は初心者だよ
どうしたいのか、どういう意図を込めたいのか、その考えをコードに反映させる。
と言っても意味がわからないだろうな。

古いGoogleのコーディング規約だがその一節にこういうものが有る
http://cou929.nu/data/google_javascript_style_guide/#constant-values

> 一定で不変であることを意図した値には CONSTANT_VALUE_CASE のように定数としての名前をつけます.
> 加えて, すべてを大文字にし単語をアンダースコアで区切るようにすることは
> @const (その値は overwrite できない) という意味にもなります..

これが書かれた当時はconstというものはなく、実体は只の変数にすぎない。
只の変数に「定数である」という意図を込めるために、全部大文字にするわけだ

Hogeも同じ。実体が関数かオブジェクトかってのは関係ない。
例え実体は関数やオブジェクトであっても、それ(Hoge)にクラスだよという
意図を込めるために大文字で始める。
ならばそれを見た人は、Hogeをクラス名だと考えるようにしないといけない
(もちろんコーディング規約次第だが)

Hogeをどのように作り出すかは関係なく、大文字で始まっているのだからそれはクラス
逆に言えば、クラスとして見せたいから大文字で始める。そういう意図を込めるわけだよ。

コードっていうのは自分の考えを反映させて書くもの。
コードがどうなっているかではなく、自分がどうしたいか。
そして読むときは書いた人の意図を読み取れるようなろう。
実体が何かで考えているうちはまだまだ初心者

> 「hoge」があったときにこれがオブジェクトなのか関数なのか
一般的にはhogeが名詞ならオブジェクト。動詞なら関数。
0828デフォルトの名無しさん
垢版 |
2018/02/12(月) 10:56:03.12ID:Bjvkgrzm
馬鹿は答えるな。node.jsのwsモジュールでws.oncloseに関数を代入するやりかたと
ws.on('close',callback)を使うやりかたのなにが違うのか分かりません。
教えてください。
0832デフォルトの名無しさん
垢版 |
2018/02/13(火) 11:27:41.20ID:ckcHf5yp
HTMLとCSSをレンダリングするようなやつです
floatのアルゴリズムを知りたいのです
0837デフォルトの名無しさん
垢版 |
2018/02/14(水) 15:28:31.17ID:J4+KYKOE
それは現実的じゃないと思うな
直リンクとSPAでの遷移が違うと不自然だし
SPAでの遷移で存在しない場合リダイレクトするのも不自然だし
今だとServiceWorkerとかもあるし
0842デフォルトの名無しさん
垢版 |
2018/02/15(木) 00:56:50.81ID:YSj3CECL
SPAとしての決まりはあんまりない感じなんですかね?stackoverflowを見るとgoogleがリダイレクトで404で飛ばすようにサービス作ってるからそれでいいのでは?という話でした。
0843デフォルトの名無しさん
垢版 |
2018/02/15(木) 02:21:06.62ID:+9FZRT3l
SPAっていうのもピンきりだから
mobile jQueryを使ったりしてただ単にリクエスト量削減のオマケなら404を返せばいいし、
アプリケーションと呼ぶようなものならそうしなければいい
0844デフォルトの名無しさん
垢版 |
2018/02/15(木) 06:30:29.99ID:+9FZRT3l
>>842
Googleの場合色んな検索窓があるページがSPAだけど、
考え方によっちゃヒットの無いキーワードでの検索っていうのは
404に当たるものだけど返してないよね

逆にそういう1つのアプリケーション内で
404にリダイレクトせざるを得ない事なんて考えにくいよね
0847デフォルトの名無しさん
垢版 |
2018/02/15(木) 08:11:26.78ID:CMBfD/sb
>>844
> 考え方によっちゃヒットの無いキーワードでの検索っていうのは
> 404に当たるものだけど返してないよね

ないわ〜
0849デフォルトの名無しさん
垢版 |
2018/02/15(木) 10:01:16.08ID:6MYE6XLg
>>848
言いなおそう

検索結果が0件であることと、検索結果を表示するためのページが存在しないことと、
検索結果を表示するためのページからリンクをたどった先のページが存在しないことは別物
0850デフォルトの名無しさん
垢版 |
2018/02/15(木) 10:04:09.93ID:8SUVFt/S
んで、質問内容は、リンクを辿った先のページがない時に
404を返すにはどうするかって話だろ
0851デフォルトの名無しさん
垢版 |
2018/02/15(木) 10:45:25.62ID:6MYE6XLg
いつ404を返すべきかはさておき

返し方はとりあえず >>841 に書いた
静的ファイルならApacheやnginxが勝手に返してくれるし
PHPやほかの言語ならそれぞれの言語のスレに行ってくれ
0853デフォルトの名無しさん
垢版 |
2018/02/15(木) 12:40:11.35ID:8SUVFt/S
>>851
> 返し方はとりあえず >>841 に書いた

吹いたw SPA、おい、S・P・Aだ
nodeはサーバーサイド側での返し方だろ

お前SPAしらんだろ? SPAなんだからクライアントJavaScriptの話で
PHPや他の言語は関係ないし、静的ファイルでもない

SPAで構成されたすべてのURLが一つのHTMLが呼び出される状況で
すべてのURLに含まれてしまう存在しないURL に対して
どうやってクライアントJavaScriptで404を返すのかって話だろうが

ついてこれてないぞw
0855デフォルトの名無しさん
垢版 |
2018/02/15(木) 13:05:22.69ID:8SUVFt/S
独立したページ?それは曖昧な言い方だな

SPAっていうのは、一つのページ(HTML+JavaScript)が
複数のURLを持っているものなんだよ。

もちろん一つのURLだけを持つのもありだが、
それだとSEO的にあまり良くないからな

一見複数のページが有るように見えても実際は
一つのページになってるように作るのがSPAだ
0856デフォルトの名無しさん
垢版 |
2018/02/15(木) 13:10:14.71ID:1CgTZOOO
> 複数のURLを持っているものなんだよ。

持ってないよ。複数のURLどれでも同じページ返してjsでパスに応じて内容切り替えてるだけだよ。
0857デフォルトの名無しさん
垢版 |
2018/02/15(木) 13:16:17.44ID:8SUVFt/S
> 複数のURLどれでも〜内容切り替えてるだけだよ。

それ複数のURL持ってますねwww
0859デフォルトの名無しさん
垢版 |
2018/02/15(木) 13:34:00.16ID:8SUVFt/S
で、話を戻すと

複数のURLどれでも同じページを返す・・・
ということは

複数のURL(存在しないページ含む)のどれでも同じページを返す
から単純にやったら404にはならないということ

URL直接入力だったらサーバーが介在する余地があるからまだどうにかなるが、
存在しないページに対してSPAからアクセスした時に
そのページ(URL)をどうやって404にするのか?という話がでてくる
0860デフォルトの名無しさん
垢版 |
2018/02/15(木) 15:32:52.51ID:9pb3TF19
>>849
別もんじゃないよ
動的なアプリケーションの場合
所在地としてのURLとコンテンツの在り処には最早関係がない

逆に別にx.cgiが存在してもそれに対するクエリがコンテンツ検索のためのものなら
場合に応じてcgiが404を返したって問題ないんだから
Googleの挙動だって最初期の論文や日記くらいしかなかったWebではありえないことなのよ
今や重要なのは定義でなくどう使われてるかの意図
0861デフォルトの名無しさん
垢版 |
2018/02/15(木) 15:43:52.20ID:xvxGqpCI
ひとまず
https://stackoverflow.com/questions/37334220/how-do-i-return-a-http-404-status-code-from-a-spa
上記リンクの情報に従うと
404 page にリダイレクトさせることでステータスコードを返すって方法しかない
ということでいいでしょうか?

js側でステータスコードを返したようにブラウザに認識させる方法とか
あるのかなーと期待していたんですが、、、
0863デフォルトの名無しさん
垢版 |
2018/02/15(木) 16:33:58.37ID:ilr6oKXN
どうせSEOのために仕方なくでしょ。
ソフト404でいいと思うんだがSPA推してるくせにgoogleマジなにやってんの。
0864デフォルトの名無しさん
垢版 |
2018/02/15(木) 17:23:29.73ID:6MYE6XLg
サーバー側のCGIが404を返すことは何の問題もない
PATH_INFOで動作しているCGIは404や300番台も返すことがある
例えば、 ttps://www.amazon.co.jp/dp/abcdefg
ブラウザ内部では200と404を区別してるだろうけど、見た目には200と404の違いはない


404を返す方法じゃなくて、返ってきた404コードをどのように扱うかは
SPAに限ったことではなく、Ajax全般に言えることだが
フレームワークはフレームワークにその書き方が用意されてなかったらどうにもならんだろ

生のJavascriptの場合

if( xhr.status === 200 ){

}else if( xhr.status === 404 ){
//たとえばalert()して終わり
//responseTextやあらかじめ用意しておいたエラーページを表示してpushState()
//locationでそのURLに移動する
}

自分はlocationで移動する方法はあまりいい方法とは思えんけどな
0865デフォルトの名無しさん
垢版 |
2018/02/15(木) 18:15:02.91ID:aKcpIhES
SPAでも、ルーターで判定するだけじゃないの?
俺はそうしてるけど。
SPAなんだから、誰がどうその404と言う情報が欲しいかというと、多分エンドユーザだよ。
となると、ごく当たり前のように404に相当するコンポーネントを出すしか出来ないだろ。
それが正しく404として扱われてるか、はGoogle Search Consoleで確か確認できる。
むしろ404として扱われていないかを確認するためにも、Search Consoleは見るべきかと。
0866デフォルトの名無しさん
垢版 |
2018/02/15(木) 19:02:16.42ID:6MYE6XLg
>>864 に書いた
> //たとえばalert()して終わり
> //responseTextやあらかじめ用意しておいたエラーページを表示してpushState()
> //locationでそのURLに移動する
この部分の書き方にどんな種類があるのかを知りたいのではなく、
サーバーは404を返したけど、クライアント(フレームワーク・ルーター)が反応しないということであれば
フレームワーク・ルーターには
if( xhr.status === 200 ){
}
これしか書かれてないわけだから、
あきらめて200で処理する(いわゆるソフト404)か、フレームワーク・ルーターを作り直せという返事になる
0867デフォルトの名無しさん
垢版 |
2018/02/15(木) 19:49:37.33ID:lFngoqEs
>>864
返ってきたコードをどう扱うかは自由だが
locationで移動しない場合、検索エンジンなどに404を伝えるにはどうするんだよ
0868デフォルトの名無しさん
垢版 |
2018/02/15(木) 19:53:50.40ID:aKcpIhES
>>866
サーバが返すも何も、SPAで、fetchのレスポンスがなんて話なら、そりゃアプリケーション内部の話であってユーザには全く関係が無いかと。
そんな台所事情でエラーメッセージを出すのは404でもなんでもなく、デスクトップアプリで予期できるexceptionを吐いたときにexceptionをそのまま出力しちゃうぐらい悪手では?
かつ、少なくとも、その場合はサーバ側のロジックも結果なしという結果、にすべきなんじゃないかな。
本当にそのリソース(API)がデグレなりクライアントのキャッシュなりでバージョン不一致なりの理由で存在しない場合との切り分けが難しくなる。
RESTのAPIだから、なんて場合は404を返したいのはわかるんだけど、危険な原理主義ではないかなぁ。
0869デフォルトの名無しさん
垢版 |
2018/02/15(木) 20:57:04.69ID:6MYE6XLg
>>867
HTTPヘッダの404を見て404で登録される
https://support.google.com/webmasters/answer/35120?hl=ja
URLエラーのタイプ、一般的なURLエラーのソフト404の説明書きを参考

ただ、フレームワークが200しかサポートしていない、にもかかわらず404で処理したい
というのであれば、まあ、locationしかないんじゃないかなと思うんだけど
検索エンジンに、SPAのURLとlocationでジャンプしたURLが同一だということを理解できるのかなぁ


>>868
ブログにニュース記事へのリンクを張った後に、
ニュース記事を削除した場合に404を返すようにしている
Google SEO的には410のほうがいいかもしれないけど

ページを追加、削除し、そこにリンクを張った過去のブログを更新しないことなんかはよくあることだし、制作時に対応できない

検索結果0件(コンテンツのない、またはSEOの重要度が非常に低いURLが存在する)のと、
URLそのものが存在しないのとは区別すべきというのが自分の考え方だから
0870デフォルトの名無しさん
垢版 |
2018/02/15(木) 21:03:46.64ID:fKqsgF6j
どんなURLでも同じページをサーバーが返して
そのページがデータをフェッチして表示するようなもので
クローラからのアクセスの時のみ404レスポンスを返すのはありなのか?
Googleは特別扱いするなとか言いつつ、クローラを考慮した仕様も出してるから
どうしたらいいのか難しい
0871デフォルトの名無しさん
垢版 |
2018/02/15(木) 21:05:43.22ID:fKqsgF6j
つまり検索エンジンに載せたくないという理由で
実際ページが表示できるかに関わらず404を返していいのかということ
SPA用のスマートな方法は用意されているのだろうか
0872デフォルトの名無しさん
垢版 |
2018/02/16(金) 09:40:25.43ID:kN3UBOMP
>>869
自分が言いたいのはURLを動的に解釈している場合は多かれ少なかれ
URLはコンテンツの静的な住所という大原則からは外れてしまっているということ
つまり「URLそのものが存在しない」という判定が自明でなくなる
0873デフォルトの名無しさん
垢版 |
2018/02/16(金) 10:54:49.83ID:ijGXrmYh
さて、むそろそろ俺の登場かな?
この問題はねSPAだからといってパフォーマンスさげないよね?
無駄なことはしないよね?という話で解決するんだよ。

例えば、http://example.com/foo/1 とかにアクセスした時、
index.html に30x のリダイレクトしたりはしない
なぜかって? リダイレクトしたらパフォーマンス落ちるでしょ?

つまりね。PATH_INFO(でいいかな?)の情報を持った状態で
サーバーサイドアプリが呼び出されるんだよ
そこでサーバーサイド側の仕組みを使って404を返せばいい

SPAの話なのに何を言ってるのと思うかもしれないけど、
ちゃんとしたSPAっていうのはF5を押しても同じ画面が表示されるし
URLも http://example.com/foo/1 のままになるもの

SPAは/foo/1のデータをAjaxで読み込むものだと思ってるかもしれないけど、
それは他のページから辿った場合で、直接 http://example.com/foo/1
アクセスした場合は、JavaScriptで取ってくるそのデータを最初からHTMLに埋め込むものなんだよ。
なぜかって? ページアクセスして表示されてからデータを取りに行くとパフォーマンスさがるだろ?
だからSPAは基本Ajaxでデータを取るのは間違ってないんだけど、最初のページに限っては
最初からHTMLに埋め込んでおく。埋め込むことができるってことは、
データが見つからない時に404を返すことも容易

そして検索エンジンとかは、基本的にAjaxを使ってデータを読んだりしない。
読むことも有るかもしれないけど、Ajaxリクエスト(Content-Type: application/json)として
そのページを読み込むことはないだろう。だからいま問題にしているどうやって404を返すか?という
話は実は当てはまらない。検索エンジンは http://example.com/foo/1 を直接読み込むのだから

Ajaxによるリクエスト、つまり別ページを読み込んでからSPAの処理としてページを読み込む場合は
そのリクエストを404にすればよい。たしかにページ自体は404にはならないんだけどね。
でも検索エンジンには関係ない話
0874デフォルトの名無しさん
垢版 |
2018/02/16(金) 11:13:52.52ID:PV55M7JN
>>873
今現在はサーバサイドレンダリングは不要で、GoogleBotはちゃんとjsを解釈してくれます。
但しchrome41相当なんでES2015はダメでES5にトランスパイル必須ですが。
0875デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:12:33.62ID:ijGXrmYh
> GoogleBotはちゃんとjsを解釈してくれます。

なにを解釈しているかちゃんと分かってますか?

解釈していると主張しているだけで、何をどう解釈しているかは
非公開のはずですが? どうして問題ないと信じられるのでしょうか?
0877デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:34:28.83ID:ijGXrmYh
>>876
それで今はサーバーサイドレンダリングの話なんですか?
404にサーバーサイドレンダリングなんか関係ないでしょ
0878デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:37:37.23ID:PV55M7JN
>>877
>SPAは/foo/1のデータをAjaxで読み込むものだと思ってるかもしれないけど、
>それは他のページから辿った場合で、直接 http://example.com/foo/1
>アクセスした場合は、JavaScriptで取ってくるそのデータを最初からHTMLに埋め込むものなんだよ。
>なぜかって? ページアクセスして表示されてからデータを取りに行くとパフォーマンスさがるだろ?
>だからSPAは基本Ajaxでデータを取るのは間違ってないんだけど、最初のページに限っては
>最初からHTMLに埋め込んでおく。埋め込むことができるってことは、
>データが見つからない時に404を返すことも容易

ここに対するツッコミをしただけですよ。
0879デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:49:30.63ID:L6Zw5BDk
>>873
それはSSRする場合というごく少数のSPAの場合であって、
大体はpathinfo効かせて、htmlにリダイレクトさせると思うんだが。
悪手よ。二種類のルーターの同時保守は。

hoge/foo/1は、hogeへの/foo/1というルートのパラメータであって、パスじゃない。pathinfoの時もね。
ajaxでURLとしてのfoo/1を取得するかどうかも、SPA次第であって、実はそんなこと関係なくクライアントサイドの処理で済むものなのかもしれない。

なので、404というステータスはhtmlに対してはユーザが見れうるが、各パスに対しては見ようがない。
SPAのAはApplicationのAだからね。
0880デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:54:41.12ID:ijGXrmYh
>>878
突っ込みになってないよ?
パフォーマンスの点から、最初から表示に必要なデータを
HTMLに埋め込むって言ってるんだから
0881デフォルトの名無しさん
垢版 |
2018/02/16(金) 12:57:19.71ID:6wcMGkCt
pathinfo?
pathnameのこと?

ApplicationのAだから?
railsやexpressやspringでサーバーサイドで作ったものはApplicationではない???
0882デフォルトの名無しさん
垢版 |
2018/02/16(金) 13:01:32.14ID:ijGXrmYh
>>879
> 悪手よ。二種類のルーターの同時保守は。

そんなもんする必要が無いだろ?

http://example.com/foo/1 にアクセスしたら
どうせクライアントサイドから /api/foo/1とか呼び出すんだろ?

ならその呼び出す命令の代わりに、
サーバーサイド側で http://example.com/foo/1 でアクセスした時に
同じ /api/foo/1 を呼び出せばいいだけ

汎用化できるから保守の必要はない
0883デフォルトの名無しさん
垢版 |
2018/02/16(金) 13:04:20.87ID:ijGXrmYh
/api/foo/1と書いたけど、もちろん /foo/1 でもよい。

その場合、Ajax(Content-Type: application/json)からのリクエストか
どうか判別してそのページのデータのみを返すか、
HTMLを返すか切り分ければいい
0888デフォルトの名無しさん
垢版 |
2018/02/16(金) 17:56:44.52ID:L6Zw5BDk
>>887
だから、>>882の通りにはいかないでしょ。
リクエストのURIと同じURIのリソースを呼び出すこともあれば呼び出さないこともあるSPAだと。
アプリケーションのなかで一意なURIと、Webサーバとして配信してるURIは混同するほうがおかしい話で。
クライアントサイドだけが生成するものの404は、クライアントサイドだけでさばくべきかと。
クライアントサイドだけが生成するものってのは、サーバに持ち込まない事がセキュリティ上の担保になるようなブラウザで生成するものになるだろうけど。
0889デフォルトの名無しさん
垢版 |
2018/02/16(金) 18:24:29.38ID:ijGXrmYh
>>888
> リクエストのURIと同じURIのリソースを呼び出すこともあれば呼び出さないこともあるSPAだと。

それはページ内部の話だろ。クローラーからすりゃ関係ない話

クローラーが記録するのはブラウザのアドレスバーに表示される
あのURLのみと考えればいい。そのURLに対してGETリクエストを行うだけ


そもそもお前、SPAの初期ページの読み込みが遅いって問題と解決方法知ってるか?

https://qiita.com/takeshy/items/b7e1b6bd30d12ecb02c6
> 1.データを別々にAjaxで取得
> 各CollectionやModelがRESTを使ってデータをAjaxで取得するので、
> リクエスト数が多くて遅くなる上に、ブラウザの同じサイトに対しての同時リクエスト数制限にひっかかります。

> 1.に関しては、初期画面のHTMLにAjaxで取得予定のデータを予め埋め込んでしまい、
> 初期データとして使うことで初期画面表示時のAjax呼び出しをなくしました。

https://qiita.com/takeshy/items/ba8b3ee4606993c1c5b8

> 初期表示時にサーバとの通信を極力行わない
> SPAで作成する場合、各モデルごとにサーバとデータを同期する必要がありますが、
> データを初期のHTMLにJSONデータとして埋め込んでしまうことで、Ajax通信を回避することが可能です。

どうせこれやるんだから、この時にデータが見つからなければ404を返すだけの話だろ
0890デフォルトの名無しさん
垢版 |
2018/02/16(金) 18:31:57.24ID:ijGXrmYh
>>888
> クライアントサイドだけが生成するものの404は、クライアントサイドだけでさばくべきかと。
> クライアントサイドだけが生成するものってのは、サーバに持ち込まない事がセキュリティ上の担保になるようなブラウザで生成するものになるだろうけど。

クライアントサイドだけが生成されるものというのはURLを持たないってことか?
URLを持たないページならクローラーの対象とならないんだから
そんなのどうでもいいだろ。URLがなb「ならクローラ=[はこねーよw

まさかURLを持たなくてもクロールしてくれるとか思ってねーよな?
クローラーがクリックイベントまでシミュレートして、URLは変わらないのに
ページ辿ってくれるとか思ってねーよな?しねーからなそんなこと

> https://www.bricoleur.co.jp/blog/archives/2628
> 原文:
> We don’t “click” during rendering so any click event will be ignored,
> but we do execute JavaScript that is triggered by for example onLoad events.
> > 原文:
> (Googlebotは)ページをレンダリングする際に何も「クリック」しない。
> 従って、クリックイベント(によって発生する動的なコンテンツ)は無視する。
> しかし、onLoadイベントなどがトリガーとなるようなJavaScriptについては実行する。

クローラーの動きとしては
1. ページを読み込んでレンダリングする
2. そのページのURLをかき集める
3. そのページは一旦閉じSPAが終了されてるのと同じ状態から、かき集めたURLの一つを読み込む

だからな。SPAアプリをクローラーが操作してくれるわけじゃない。
SPAの画面をそのままクロールしてくれるんじゃなくて、その状態からF5(画面更新)を
押して表示されたものしか見てくれないからな。だからURLがあることは必須
0892デフォルトの名無しさん
垢版 |
2018/02/16(金) 19:30:14.75ID:PV55M7JN
>>891
React-router-dom触ってると
onclickで遷移する仕組みがチュートリアルで紹介されてないんだよね。
(よく探すとあるけど。)

GoogleBotが辿ってくれるためにはAnchorである必要があるってことで
そのためにonClickじゃなくてLinkタグを使って遷移処理するようにするってことだね。
非同期通信を介してレンダリングすると一々Stateに保存してLinkタグを書くのがシンドいと思ってたんだけどSEOのためだったんだなぁ
0893デフォルトの名無しさん
垢版 |
2018/02/16(金) 19:33:28.56ID:ijGXrmYh
なってるといいよねw

どちらにしろURLがないコンテンツは
クロールしてくれないことに変わりないんだがな
0894デフォルトの名無しさん
垢版 |
2018/02/16(金) 19:36:08.89ID:ijGXrmYh
>>892
リンクタグを使った所で、そのリンクを
アドレスバーに入れて表示されないと意味ないからね

クローラーはリンクのみを取り出してアドレスバーに入れて
表示されたものを、そのURLのコンテンツとして認識する

そこからクリックして変化したものまでクロールしてくれない
(普通に考えれば当たり前だが)
0895デフォルトの名無しさん
垢版 |
2018/02/16(金) 19:45:34.13ID:uCgPr+rC
クリックじゃなく遅延して表示してるのはどうなるんだろ?何秒か適当にwaitしてから取ってんのかな?それとも
0896デフォルトの名無しさん
垢版 |
2018/02/16(金) 19:54:10.08ID:ijGXrmYh
>>895
運次第だろ?

1秒毎に変わるページでも作って、それがクロールされるかとか
やってみたら?少なくとも全部クロールされることはないだろうね

クリックされると副作用が現れるということで、
ページ上にクリックできるものが複数あって、
じゃあどれをクリックしたものをクロールされるのか?とかさ
考えてみれば不可能だってわかると思うんだが

クローラーがJavaScriptを実行するというのは
JavaScriptで動的に出したもの全てをクロールして
くれるわけじゃないことはわかるでしょ?

クロールされるのは指定したURLを表示して(JavaScriptで)
レンダリングした最初の画面ぐらいに思っておいたほうが良いよ
そこからのonclickは動かないとみなした方がいい
もちろんレンダリングした結果に含まれるリンクにはURLが書いてあるので
新たなクロール対象になる。
onclickの場合はURLが書いてないのでクロール対象にならない
0899デフォルトの名無しさん
垢版 |
2018/02/16(金) 23:25:00.48ID:wAiK151t
とりあえず、404って書いた画面表示しときゃいいだろ。
それで不満だって言うのなら何が気に入らないのかちゃんと挙げて議論。
0900デフォルトの名無しさん
垢版 |
2018/02/16(金) 23:57:21.24ID:ijGXrmYh
>>898
あるURLに対してクローラーがアクセスしてくる場合には
サーバーサイド側で404を表示できる。

なぜならサーバーサイド側でそのリクエストを処理するから
その時にデータがなければ404を返せる

Ajaxを使ってアクセスする場合は、そのリクエストで404を返せばいい
0901デフォルトの名無しさん
垢版 |
2018/02/17(土) 00:03:35.35ID:NuxITAVF
何を怒り狂ってるかわからんが、クローラがちゃんとクロールしてるかどうかの調べ方は書いただろう。

>>889
ページ内部の話だから、むしろ関係ないんだよ。
SPAなんだから。
ウェブページ豪華版みたいな扱いされても困るわ。
SPAが重いって問題とは別問題。

>>890
URLじゃなくてURIとしては持つだろうね。
持つって言ってるでしょ。
それはユーザにとっての識別子であって、クローラに対してどうするかは、クローラがクライアントとなってどうするかによる。
その調べ方は書いた。

なんか大きめの勘違いしてない?
SPAはwebページとは限らないよ。
0902デフォルトの名無しさん
垢版 |
2018/02/17(土) 00:06:15.35ID:NuxITAVF
ajaxを使って、同じURIから同じリソースを使うなら、クライアントで描画する必要無いよね。
そのURIの情報をDOMごと貰えばいい話になる。
どこのClassicASPのUpdatePanelの話なのかわからんレベルで無能じゃん。
アプリケーションだよ。
0903デフォルトの名無しさん
垢版 |
2018/02/17(土) 00:49:10.87ID:RdZUuX+v
> ajaxを使って、同じURIから同じリソースを使うなら、クライアントで描画する必要無いよね。

あ、なるほどwwwww

そううかお前、サーバーサイドでレンダリングするって思っちゃってるんだwwww
SPA初心者だな。

クライアントでレンダリングするのに必要なデータをJSONでHTMLで埋め込むんだよ
そしてクライアントサイドでレンダリングするんだよ。
>>889のリンク先にもそう書いてあんだろ

で、クライアントでレンダリングするためのデータがなかったら、
404を返すだけの話だよ。
0904デフォルトの名無しさん
垢版 |
2018/02/17(土) 00:49:44.01ID:RdZUuX+v
>>901
> SPAはwebページとは限らないよ。

え?なに? お前のSPAはF5押したら
初期画面に戻っちゃうの?
使いづれぇなぁw
0906デフォルトの名無しさん
垢版 |
2018/02/17(土) 02:48:01.65ID:+Fv80jjb
そもそも、pathinfo使ってリダイレクトさせるのは別に動的なphpやサーブレットなんかだけが対象じゃなくて、htmlでも良いんだよ。
そのhtmlはサーバから取らなくてもサービスワーカーなりなんなりでブラウザ内で処理しちゃえるから、トラフィックは発生しない。
ブラウザ内でindexedDBなり使って復帰すればそれでいいんだから、同じURIにリクエスト投げる必要もなく、ブラウザ外に問い合わせて表示データを取る必要もない。

アプリケーションなの。APIが返す値を表示するだけのブラウザじゃないのよ。SPAと言うのは。
0909デフォルトの名無しさん
垢版 |
2018/02/17(土) 12:10:00.79ID:W+GNXAq+
F5で完全に戻らないとしてもURLだけで
そのアプリケーションの全ての値が復元できるとも限らない
0910デフォルトの名無しさん
垢版 |
2018/02/17(土) 13:29:52.85ID:+Fv80jjb
それはURIだけで、サーバがすべての値を返すとは限らない、と同じ意味だよね。
0911デフォルトの名無しさん
垢版 |
2018/02/17(土) 13:39:20.93ID:Q9uAGfUQ
クローラーはURIだけでアクセスしてくるので
URIから読み取れないデータはクロールされません。

またGoogleの検索結果にSPAのJSONが
クロールされた形跡は見られませんね。
もしそのJSONがクロールされていれば
検索結果に出るはずですから
0912デフォルトの名無しさん
垢版 |
2018/02/17(土) 14:18:23.54ID:W+GNXAq+
その理屈は正しくない
もしJSONも認識できて人並みの知能があった場合
それを検索結果に出さないという判断をすべきだから
0914デフォルトの名無しさん
垢版 |
2018/02/17(土) 14:54:23.92ID:QcCOFhat
SPAのJSONという時点でダム端みたいな使い方しかして無いとわかってしまう悲しさがあるな。
ブラウザは単なるレイアウトエンジンじゃないぞw

うちのログにはSPAだけがルーティングしてるアドレスに向かってのクエリはあるから、逆にajaxしてるからクローラにそこで諦められてんじゃないの?
0915デフォルトの名無しさん
垢版 |
2018/02/17(土) 17:47:46.20ID:QcCOFhat
よくよくこいつがなんで馬鹿な事言ってるか考えてみたんだが、URIだけでアクセスしてくるが、その与えられたURIだけでルータが割り振ったあとコントロールのJS内で画面と内容をレンダリングできてしまうがある事を想定してないんだろうな。
URIで指定されたコードをバーコードとして画面に表示するとか色々作ったが、そう言うのは多分想定外なのかなと思ったわ。

HTTPとしてGETするリソースと、ブラウザにあるコンテンツを求めるために示されるURIはイコールじゃない。
だからHTTPサーバはindex.html/jsに相当する内容をいつでも同じように返すし、サービスワーカーが動いてればそのサーバへの問い合わせすらしない。
いつでも、そのhtmlやjsが、自身に与えられたURIから、コンテンツを作る。
0917デフォルトの名無しさん
垢版 |
2018/02/17(土) 18:27:57.81ID:nikLB5DZ
>>915
いや、そうじゃなくて
「その与えられたURIだけでルータが割り振ったあとコントロールのJS内で画面と内容をレンダリング」
という処理をするためには、

1. URIからサーバーにリクエストを投げる
2. サーバーからindex.html/js相当を貰う
3. クライアントのJSでURIから画面と内容を表示するのデータを貰うためにサーバーにリクエストを投げる
4. サーバーから画面と内容を表示するためのデータを貰う
5. そのデータを使って画面と内容をレンダリングする

の3〜4のサーバーへのリクエストの処理について考察できてないんでしょ?

そしてSPAでは2回サーバーにリクエストを投げるのが当たり前で解決できない問題だと思い込んじゃってる。
まともなSPAだとここを1回にする。理由は2回リクエストを投げるとパフォーマンスが落ちるから。

2回サーバーにリクエストを投げる方法だと2の時点で200が返ってきてしまい、4の時点で404を返すことになるが、
リクエストを1回にした場合は、2の段階でindex.html/js相当+画面と内容を表示するためのデータを貰うことになるので
この時点で404を返すことができる。
0918デフォルトの名無しさん
垢版 |
2018/02/17(土) 20:48:04.60ID:QcCOFhat
>>917
違うよ。3は、必ずしも存在しないって言ってるの。
SPAでは2回リクエストを送ることもあるだろうし、リクエストを送らない事もあるって言ってるの。
まともなアプリケーションでは、一回も送らなくて済むならば送らない。
htmlやjsをサービスワーカーでキャッシュしてれば、そもそももっと話が変わってくる。
(特定のURI以下へのリクエストをサービスワーカーでキャッシュから解決するだけ)
さらに、URIの中身で画面が作れる場合、アプリケーションから見てそれは本当に唯一無二のURIだよ。Locatorではなく、Identifier。

お前は、最低一回リクエストするはずだ、という思い込みというか、それ以外の方法を知らないんだと思うよ。
要はウェブページプラスαの考え方。
0919デフォルトの名無しさん
垢版 |
2018/02/18(日) 02:19:09.25ID:dp9S/ZRw
>>918
今、話をしてるのはクローラーの話だって分かってない?

クローラーはクッキーやローカルストレージは使わない
https://www.suzukikenichi.com/blog/googlebot-uses-a-web-rendering-service-that-is-based-on-chrome-41/
ページレンダリング中に一時的に使ってるかもしれないが読み込み時に毎回クリアされる

クローラーっていうのは、HTMLを取得(ページをレンダリング)する処理と、URLをかき集める処理が別れている
そしてクローラーは自分が知ってるURLに対してGETリクエストを送る
だから一回もリクエストを送らないということはありえないんだよ。

クローラーはブラウザじゃない。ブラウザのように前の状態というのを持たない。
だからアプリの作りが例えサーバーと通信しない作りであっても
知ってるURLに対して初回アクセスと同じようにかならずGETリクエストを送ってくる
そしてクッキーやローカルストレージは持たない

クローラーは必ずSPAのアプリケーションの特定のURLに対して直接GETでアクセスしてきており
(アクセスしない = 最新の情報がわからないのだからクロールされてるページ内容の更新を行わない)
なおかつ初回アクセスと同じようにデータは空なのだから、状態は200か404のどちらかに決定することが可能
(まあ他にもリダイレクトとかあるだろうけどいずれにしろどれかに決定できる)

クローラーがブラウザと同じようにクライアントサイドだけでアプリを動かしているかもしれないじゃないか
とか頓珍漢なこと言うなよ? それなにもクロールしてないからw クローラーの使命を果たしていない
0920デフォルトの名無しさん
垢版 |
2018/02/18(日) 11:26:35.43ID:S5M53+XI
それって今のGoogle Botの話でしょ?
クローラが一般的にそうである必要はないよ
Google Botも重要なサイトでは高機能長時間のクロールをしてるって噂もあるし
0922デフォルトの名無しさん
垢版 |
2018/02/18(日) 11:53:05.84ID:AYB00j0e
クソみたいな長文で自分の理解が及んでませんでしたって言い訳されても困るわ。
それも織り込んで話してる。
0923デフォルトの名無しさん
垢版 |
2018/02/18(日) 13:52:18.73ID:dp9S/ZRw
>>920
長時間クロールっていうのはたくさんのページを
まとめてクロールしてるってだけ。動きは変わらない。

> クローラが一般的にそうである必要はないよ
個人的にしか使わないクローラーは別として
一般的なクローラーは、不特定の人が見るわけだから
このような動きになる。
0925デフォルトの名無しさん
垢版 |
2018/02/18(日) 13:55:42.29ID:AYB00j0e
要はURIだけで画面が作れる画面ってのはあるんだよ。
URIがデータの時な。
クライアントサイドだけで(JSで処理される)リンクをたどる、のはやってくれてるよ。
リファラ見るとわかる。
そのサーバではindex.htmlと同じ内容を返してる、JSでレンダリングされた内容しか含まないURLもちゃんと検索結果に上がってくるんだよなぁ。

ajax!json!ブラウザに上のURLと同じURLでAPIがjsonを返すんだ!と狂って叫ぶ前に、ちゃんと理解すれば良いのに。
ブラウザ上のURLと同じURLで実はJSONを返してる、とか、逆にクローラは無視しにかかるだろ。
クローラはブラウザセッション、状態をすべて忘れてそのURLをレンダリングするんだぞ。
SPAなんにもわかってねえな。
0926デフォルトの名無しさん
垢版 |
2018/02/18(日) 13:59:45.98ID:dp9S/ZRw
>>921
SEOの話とは違うね。
ページが見つからない時、どうやって404を返すべきかどうかの話

SPAがどうたらとか、サーバーにアクセスしないときがどうとか
言っているが、それらは全く関係ないってことを言ってる。

普通にサーバーにアクセスされた時にデータがなければ404を返せばいい
どんなページもURIを持っていればサーバーにアクセスされうる
(その典型的な例がクローラーってだけの話)

サーバーにアクセスしないときは〜なんて考える必要はない。
そもそもアクセスされないなら何も出しようがないだろ?
0927デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:07:51.73ID:dp9S/ZRw
>>925
> 要はURIだけで画面が作れる画面ってのはあるんだよ。
> URIがデータの時な。

URIがデータだったとしても、(そもそも全てのURIがそうなんだがw)
話は関係ない。

URIを持っていればサーバーにアクセスされうる
SPAの場合にサーバーにアクセスしない場合もあるってだけで

ブラウザでF5を押したりクローラーからアクセスされる。
だから必ずしも作る必要はないが、ちゃんと作るならば
サーバー側の処理は必要。その時にデータがなければ404を返せばいい
(URIの情報しか使わないというのならそれは200だろうけどな)


> クローラはブラウザセッション、状態をすべて忘れてそのURLをレンダリングするんだぞ。
> SPAなんにもわかってねえな。

そもそもレンダリングする前に、クローラーはSPAであることもわすれて
URIに対してサーバーにアクセスする。ここでSPAのことを考えること自体が意味ないんだよ

ちゃんと作るならば、サーバーにアクセスされた時に必要なデータがなければ404を返せばいいだけ
データの有無の話でAjaxによるアクセスかどうかとかの違いも考える必要はない。
どんな内容を返すか?のために考えるのであって、データがないときは404
0928デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:17:14.66ID:AYB00j0e
>>927
だから、サーバにアクセスされても、indexと同じものを返すよ。サーバからのリソースは。
F5を押されたって同じだ。

そのURIにデータがあるか無いかは、クライアント次第なんだから、サーバが返すのは不可能。
もちろんデータのうち、ユーザが作るようなもの、クローラがそもそも「生成しようがない」ものは拾えなくて当然というか、
クローラには一生生成できないURIで表現されるので、検索結果には上がらんし、そういうデータの一覧画面は空として上がるだろう。上がらないようにしたけど。

ただ、アプリケーションだけがハンドリングする静的なコンテンツ、はクローラが拾う。
それはサーバリソースと全く関係なく、jsにバンドルした内容から描画してる画面なんかも含まれるわな。
OSSのライセンス一覧とロゴのaboutなんかとか、特定のコンポーネントだったり、色々あるだろうが。

お前が言ってるSPAはアプリケーションと言うより、ブラウザのレンダリング力を借りたダム端なんだろう。
ダム端知らないなら早めに言ってね。言い換えるから。
0929デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:20:48.05ID:F2O3xW/S
>>925
> そのサーバではindex.htmlと同じ内容を返してる、JSでレンダリングされた内容しか含まないURLもちゃんと検索結果に上がってくるんだよなぁ。

そういう話はしてないんだなぁw

SPAでページがない時に404を返したい。どうすればいいか。という話

答は、今までと何も変わらない。
サーバーにアクセスした時にページを表示するために
必要なデータがなければ404を返せばいい


反論としてSPAだとサーバーにアクセスされない場合が〜とかいうから
どのページでもURIを持っていれば、サーバーにアクセスされる可能性があります。
特にクローラーは必ずサーバーにアクセスしてきます。
その時に404を返せば良いのです。という話
0930デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:25:32.86ID:F2O3xW/S
>>928
お前、前提がおかしいぞ?

今は、サーバーにデータが無い場合に404を返すにはどうするかの話だ
そもそもHTTPステータスはサーバーが返すもの。サーバーでしか判断できない

ダム端も全く関係ない話。クライアントの端末がなにであるかとか
クライアントがブラウザとかクローラーとか、SPAか否かとか
そういったクライアントは完全に無視できる話なんだよ。

お前が言いたいのはクライアントが○○の場合には〜と
全部クライアントの話ししかしてね〜じゃんか
クライアントは関係ないんだよ。忘れていい。
0931デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:30:39.49ID:F2O3xW/S
クライアントが関係ないっていうのはクローラーの例を使っても説明できる。

つまり、あなたのクライアントと、私(クローラー)のクライアントはデータを共有していません。

あなたのクライアントでは何かデータが表示されるんでしょうが、
私(クローラー)のクライアントはあなたのデータなんか知りません。

あなたのクライアントでSPAが動いていようが
私(クローラー)のクライアントでは動いていません
ってことなんだよ
0932デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:42:23.81ID:F2O3xW/S
クローラーが高度なレンダリング機能を備えているから
JavaScriptが動くっていうのも、クライアントの話なんで関係ない
単にレンダリングするってだけ


ここでSPAが〜とか言ってくるやつは、
レンダリングされる=SPAとしてクローラーが動くって
考えちゃってるんだろうなって思う。

もう少し具体的にいうと

クローラーが、Aというページを読み込んで表示されたBというリンクをクリックして
(History APIでURIが変わった時に)A+Bとなった情報を保存する
と思い込んじゃってるんでしょう?

そういうクローラーを作ることは可能だが、そんなことはしない。
なぜなら、Bというリンクをクリックした時にサーバーにアクセスしないかもしれないから
それを許すとクローラーのマシンの中だけで無限にアドレスが作れる。
しかもそのアドレスは他人がアクセスできるとは限らない。
クローラーというクライアントが生成したクローラー専用のURIになる。

実際の動きはこう
クローラーが、Aというページを読み込んで表示されたBというリンクを巡回するURIとして記録する
別のタイミングでHistoryAPIなんか使わずにBというURIでサーバーにアクセスして表示されたものを保存する

で、ここで重要なのは クローラーの "例から" 分かる通り URIを持つならばサーバーにアクセスする可能性がある
サーバーにアクセスされた時に404を返せば良いんだよっていう話をしている。
0933デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:42:58.66ID:AYB00j0e
>>929
だから、結論を言うと、SPAで404にあたる場合に、表示するかなんてサーバが関与する事ではない。
ルータの二重管理にもなる。

だから、SPAでソフト404を出すしかない。

って言ってるんだが。
0934デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:44:45.48ID:AYB00j0e
>>931
>>932
その「単にレンダリングするだけ」がダム端そのものだと言っとるんだよ。
お前は2010年あたりから進化してないのかよ。

あと、クローラのクライアントでもレンダリングされてるよ。
確認してこいよw
0936デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:48:58.99ID:F2O3xW/S
>>933
だからSPAなんて忘れろってw

SPAを使おうが使うまいが、サーバーにアクセスされる時に
データがなければ、サーバーが404を返せばいいだけだって言ってる。

URIを直接ブラウザで開くならば、そのタイミングで404を返せばいいし、
History APIでURIを変えただけならば、その時にAjaxでリクエストあればそのタイミングで404を返せばいい
(その時にAjaxでリクエストがなければそもそも404を変えしようがない)

404をどう返すかの話をしていて、404をどう表示するかの話はしてないんだよ。
0937デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:49:05.24ID:AYB00j0e
サーバは、API以外同じコンテンツをどのURLでも吐くもんだろ。SSR無しのSPAなら。
だから頭おかしい発想になってるんだと思うが。
404である、とか、一旦Webページの発想から離れられないもんか、
Dreamweaverでシコシコ画面作ってる「ウェブ屋」でもあるまいし。
0938デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:51:07.76ID:F2O3xW/S
>>934
> その「単にレンダリングするだけ」がダム端そのものだと言っとるんだよ。

https://www.nttpc.co.jp/yougo/%E3%83%80%E3%83%A0%E7%AB%AF%E6%9C%AB.html

> つまりダム端末は、自分で計算したりデータを保存したり出来ない“頭の悪い端末”という意味で、
>英語では dumb-terminal(ダム・ターミナル)という。それを日本語化して
>「ダム端末」、略して「ダム端」と呼ぶことも多い。

レンダリングする頭があればダム端にはならんが?w
0939デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:53:33.03ID:AYB00j0e
>>936
なんで忘れなければいけないんだ…?
>>834
が発端だろ。

URLをブラウザで叩いて、404であるかどうかって時点で違うよね。
ajaxがどうのと言ってるけど、ajaxなんか発生しない、単なる画面切り替えのhistoryAPI操作もあるよね。
それは、もとの画面が切り替わった状態、として扱われるべきだよね。リロードの時。
でも、使うのはSSR無しだと同じコンテンツだよね。だからpathinfo使うんだよね。
頭おかしくなってるのはこのへん。

で、画面切り替えではなく、手入力で変なアドレス入れられると、
「切り替えるはずの画面が無かった」なんて判断は、JS側にしか出来ないよね、って言ってる。
0940デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:54:06.49ID:AYB00j0e
>>938
ダム端もレンダリングしてくれるよ。
エスケープシーケンスで。
お前色々知らなすぎるだろ。
0941デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:56:10.32ID:F2O3xW/S
>>937
> サーバは、API以外同じコンテンツをどのURLでも吐くもんだろ。SSR無しのSPAなら。

コンテンツとHTTPステータスは別。

同じコンテンツを返しても、HTTPステータスは違っても良い。
極端な話、404を返しながら、コンテンツを返すことだってある

それからSPA(それはクライアントの話)によってサーバーが挙動を変えるわけじゃない。
サーバーにとってクライアントがなにでどうやって動いているかは関係ない

(サーバー側が手抜きだから)HTTPステータスが全部200を返してしまう。
ページがなくても200を返してしまう。って話だから
それならサーバー側をちゃんと作りましょうで終わる話
0942デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:56:39.90ID:F2O3xW/S
>>940
コンテキスト理解してないのか?
このスレで言うレンダリングとは、HTMLのレンダリングだよ
馬鹿かw
0943デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:57:37.94ID:AYB00j0e
SPAはアプリケーションであって、Webページの軽量版でもおしゃれ版でもリロードなし版でも無い。
一つの画面に1リクエストでもない。
アプリケーションなんだから。
こいつの頭の中でポップアップする子画面とかどう処理されてるのか謎過ぎる。
0945デフォルトの名無しさん
垢版 |
2018/02/18(日) 14:59:24.98ID:AYB00j0e
>>942
うん?
ただレンダリングするだけなら、ダム端と同じ、は

ただHTMLをレンダリングするだけなら、ただエスケープシーケンスをレンダリングするダム端と同じだ、と言ってるんだが。

コンテキスト読めてる?
0946デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:05:53.24ID:F2O3xW/S
>>939

> >>936
> なんで忘れなければいけないんだ…?
> >>834
> が発端だろ。

だから、SPAがどうのこうのって考えてる事自体が間違いなんだよ
>>834のリンク先のソフト404エラーの内容見てみ?
SPAの話であるとか全く関係ない

リンク先引用しようか?
> ソフト 404 エラーとは、サイトの URL にアクセスしたときに、
> ページが存在しないことを示すページと 200 レベル(成功)のコードがブラウザに返されることです

「サイトの URL にアクセスしたときに」って書いてあるだろ。
SPAでもなんでも構わないが、サイトのURLにアクセスしない時には全く関係ない話。

(SPAで)サイトのURLにHistory APIで変更すると、サーバーにアクセスしなくても画面に表示できる〜とか
いいだすから、おいおいってなる。前提が違うだろ。サーバーにアクセスしない時は考える必要がない。
サイトの URL にアクセスしたときの話なんだから

ただのa要素のリンクだろうがHistory APIで変更しようが関係ない。どちらも同じURLだ。
そのURLに対して「サイトのURLにアクセスした時に」404を返すのがソフト404対策なんだよ。

で、発端の>>834へのレスだ
> SPAを作る時にページが存在しない場合にをどうやって404を返せばいいんでしょうか?

「サイトの URL にアクセスされたときに」データがなければ404を返せばいい
SPAとか考える必要はない。
0948デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:08:12.87ID:AYB00j0e
>>946
だから、データが無いか知ってるのはアプリケーションになってしまうのが、SPAだから、問題になってるんだよ。
お前が最初の時点から読み間違えてるの。
バカなの。
いいかげん認めて。めんどくさくなってきた。
技術者なら知らないことを知りませんでしたと言うのは大切だよ。
0949デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:09:00.51ID:AYB00j0e
>>947
ウキウキとダム端について間違った事語って、知らない事が出てきたらこうなる。
楽な生き方だな。
0951デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:10:43.79ID:F2O3xW/S
>>948
> だから、データが無いか知ってるのはアプリケーションになってしまうのが、SPAだから、問題になってるんだよ。

404ってサーバーが返すものだぞ?
サーバーがデータがないとクライアントに返すものなのに、
データが無いか知ってるのがアプリケーション?
サーバーと関係ない話なら最初から404とか200ですら出てこないだろ。
問題になるどころか、問題そのものがない
0952デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:16:19.87ID:F2O3xW/S
ん? もしかして>>834もそうなのかもしれないが、他のやつも
404が「サーバーから返すもの」
つまり HTTPというプロトコルを使ってクライアントから
サーバーにアクセスした時に、サーバーからクライアントへ
返すものだって分かってないのか?
0953デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:19:01.00ID:F2O3xW/S
404はHTTPプロトコルレベルの話なんだから、

仮にHTMLとJavaScriptだけで動くものがって
一切サーバーとアクセスしない=HTTPプロトコルを使わない場合
には、当然HTTPプロトコルレベルの話であるHTTPステータスコード404(200も)はでてこない。

これは常識だよね?
ここまではいいよね?
0954デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:36:21.08ID:Ct2k6iqr
そもそも>>834の言う

>SPAを作る時にページが存在しない場合に

の解釈が違っている気がする。
俺はそもそもどういう状況のことを言っているのか理解できなかったが。
0955デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:46:08.25ID:AYB00j0e
一切アクセスをしないと言えど、リロード時にはリクエストは飛ぶからな。サービスワーカーにでも。
その時帰ってくるのはコンテンツとしては200、ただしHTML/JSが表示するのは存在しないというエラーになるだろうが。

プロトコル上の404と、ソフト404(≒200)はもちろん区別ついてるが、一般的にソフト404と呼ぶんだよ。
ソフト404ってのはプロトコル上のエラーコードを概念的な名前として使ってるだけであって。

お前が、周りが何を問題にしてるかわかってないんだろう。

いろんな問題をごちゃまぜにした結果馬鹿な事言ってると思いたいわ。
0956デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:48:40.21ID:F2O3xW/S
>>954

俺はHTTPステータスコード404を返したいんだから、
HTTPプロトコルでサーバーにアクセスのは当然の話として

> SPAを作る時にページが存在しない場合にをどうやって404を返せばいいんでしょうか?
というのは今現在200が返ってきてしまって困っているという状況には
>>917 で説明したパターンで起こるのを知っているからその話だと理解した

下手な作りだと、例えば http://example.com/foo/1 でデータがなくて
普通のウェブアプリだと404が返ってくる状況でも、(下手な)SPAの作りだと
>>917みたいに一旦 SPA(Single Page Application)のシングルに相当するページを表示してから、
(404になる)データを読み込むという流れだから、200になってしまう。

これを404にするにはどうすればいいかの話をしていたんだが?



そうか、やけにサーバーにアクセスしないことも有るって強調していたのは
HTTPリクエストを伴わないからそもそもHTTPの404の話なんかでてこないことに
気づいていなかったんだろうな。その時点で話について来れてなかったのか
0957デフォルトの名無しさん
垢版 |
2018/02/18(日) 15:52:23.09ID:F2O3xW/S
>>955
> 一切アクセスをしないと言えど、リロード時にはリクエストは飛ぶからな。サービスワーカーにでも。
> その時帰ってくるのはコンテンツとしては200、ただしHTML/JSが表示するのは存在しないというエラーになるだろうが。

サーバーにリクエスト投げてデータが無いなら404を返せよ。アホかw

サーバー側の実装がクソだから200になるんだろ
>>834はそれをやめたいって話だろ
(なんでやめたいかの話でSEOに脱線したわけだが)
0958デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:00:36.45ID:AYB00j0e
違うよ。

SPAだと、example.com/
以下はHTTPで返すものは同じコンテンツを返して当然だと言ってるの。
例外はexample.com/api/xxxxみたいなAPIのURL。 
その後についてくるfoo/1というのは、アプリケーションに対するパラメータであって、HTTPサーバがハンドリングする「ための」ものではない、と。

example.com/history/2017
というURIは、historyの2017分、というSPAへのパラメータであって、それが存在するかどうかはHTTPサーバは知りようが無い。
というか、historyが存在するかどうかも関係ない。

アプリケーションは、history/2017というルートから、適切なコントロールとapiで、ログイン認証したり、履歴ページを表示したり、そこに、ログインユーザ(またはpuiblicな)の2017年分のデータをapiから取得して並べたりする。
apiのレスポンスとして404もわかるが、その404は200データなしとは異なるよね、ってのが前半に言ってた事で。

200になってしまう、と言うのは話がおかしくて、200で当然だが、なんだよ。
レスポンスを404にしたいんじゃなくて、404というレスポンスの値に相当する表示を表現するにはどうしたら良いか、の話だろ。
0959デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:01:57.46ID:F2O3xW/S
> SPAだと、example.com/
> 以下はHTTPで返すものは同じコンテンツを返して当然だと言ってるの。

ほんと呆れる。クライアントのことなんかなんけいないって言ってるのに
まーだクライアントがSPAで動いているとーとか言ってやがる
0960デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:02:58.40ID:AYB00j0e
>>957
違う。お前は本当に馬鹿なんだと思う。
そして、データなしは404とは違う。404は未検出、だ。データなしは200の空レスポンスとは相当意味合いが違う。
0962デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:04:48.58ID:F2O3xW/S
> 一切アクセスをしないと言えど、リロード時にはリクエストは飛ぶからな。
自分でリロードした時にサーバーにリクエスト飛ぶと言ってるくせにw

> その後についてくるfoo/1というのは、アプリケーションに対するパラメータであって、HTTPサーバがハンドリングする「ための」ものではない、と。
HTTPサーバーがハンドリングするだろ。その時に404返せって
言ってるのにこいつは理解しない



お前の作ったクソSPAは200を返すんだって何度も繰り返し言わなくてもわかってるわ
それがクソだから修正して404を返すようにしろって話だ。
0963デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:05:01.09ID:AYB00j0e
>SPAを作る時にページが存在しない場合にをどうやって404を返せばいいんでしょうか?
なんだから、SPAの話をして当然だろ。

SPAよくわかんないから旧石器時代の話します、とかもう間抜けすぎるからやめて。
0964デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:08:10.52ID:AYB00j0e
>>962
違うよね。
HTTPサーバは関与できない。
その処理はクライアントの実装次第で、サーバ側の処理としては存在しないから。
その二重管理は間違ってるし、ユーザしか知り得ない情報をサーバに持ち込むのは全く持って意味が無いというかデメリットしかない。
ユーザしか知り得ないことを正しく知らないのは大切。
だから、HTTPサーバは、pathinfoでなりなんなり、好きな方法で良いが、静的なコンテンツを吐く。

そもそもお前は404の意味もちょっと間違ってる。
0965デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:09:10.37ID:F2O3xW/S
>>960
> そして、データなしは404とは違う。404は未検出、だ。データなしは200の空レスポンスとは相当意味合いが違う。

リソースとして考えろ、中の実装は忘れろ。

URI、例えば http://example.com/foo/1 というURIで示したい
リソースをNot Foundとしたいなら404だ。

http://example.com/foo/1 を表示した時、周りに広告やらカテゴリやら
いろんなデータがついてることよくあるよな? 例えそんなのがあったとしても

http://example.com/foo/1 というURIで示したいリソース」がないなら404にするんだよ
SPAのhtml/jsがあったからって200にするな

抽象化して物事を考えられないのか
基準は「http://example.com/foo/1 というURIで示したいリソース」だ
まわりの関係ないもので判断するんじゃねーよ
0966デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:10:19.39ID:AYB00j0e
>>962
そもそも、ページ(正確にはSPAの画面)は存在するんだよ。
そして、画面は一つのリソースから構成されてるわけじゃないんだから。
200で画面出して、集まったデータ分表示するのはまっとうでしょ。
そこで、APIが200のデータなしではなく404返したなら、完全なるエラー画面に飛ばす必要があるかもしれんが。
0967デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:11:12.18ID:F2O3xW/S
>>963
お前、質問者が
HTMLを作る時にページが存在しない場合にをどうやって404を返せばいいんでしょうか?
っていったら、HTMLの話すんのか?

404を返すのはHTTPサーバー(or ウェブアプリ)なんだから、
質問者が関係ないものを持ち出してきたものとして、HTMLの話ではなく
HTTPサーバー(or ウェブアプリ)の話をするだろ
0968デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:13:01.23ID:F2O3xW/S
>>966
画面が存在するのと404を返すのは別の話

カスタム404ページとか調べてこい
画面は存在するが、404を返している。

そして忘れんなよ? HTTPステータスコードは
HTTPプロトコルで、サーバーにアクセスした時に
サーバーから返す時に使うものだ
0969デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:14:21.22ID:AYB00j0e
>>965
リソースとして考えて、空と、見つからない、は断じて違うもの。

実装論だと、apiの互換性がなくなって旧ver消したなら、APIが見つからない、404。
apiはあってて、処理も正しく行われて、データなかったよ、は404とは限らない。
なら、APIが見つからないと切り分ける必要あるよね。

抽象化すると、
あるものは200
見つからないものは404
あったけど中身入ってないよ、は200
探し方が悪い、は400
お前には見せられない、は403
名乗れ、は401
サーバとして答えられん、は500系。

お前が抽象化できてないよ。
完全な実装論じゃん、
0971デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:15:04.37ID:AYB00j0e
>>968
それも知ってるよ。知ってるからこういう話してるんだよ。

お前が言ってるリソースは、全部旧石器時代の話。
0972デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:18:20.71ID:AYB00j0e
>>967
このどうやって404を、ってのは、存在しないものをどうやったら手に入れられるか、って話であって、
たとえ話に近いだろ。
そこに、いや、ajaxが、とかアスペのようにHTTPサーバについて一所懸命に勉強したつたない知識で騒がないで。
0973デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:21:22.10ID:F2O3xW/S
「URIが指し示すリソース」っていうのが分からんのかもなw

例えば以下の適当なページは404を返してくる
https://support.google.com/websearch/answer/dsfasdfasdfa

だが、画面上は検索ボックスやGoogleアプリのリンクや
ログイン状態といった「リソース」が表示されてる

>>966の馬鹿げた理屈では
> そして、画面は一つのリソースから構成されてるわけじゃないんだから。
> 200で画面出して、集まったデータ分表示するのはまっとうでしょ。

この適当なページにたいして>>966では200を出すのがまっとうだと言っているが
見ての通り、googleはそんなことはしていない。

なぜなら「URIが指し示すリソース」というのは(これはヘルプなので)
ペルプの1ページのことで、まわりにあるごちゃごちゃしたリソースのことではないから
もちろんこの周りにあるごちゃごちゃしたリソースにSPAのシステムも含まれる

画面が出るから200とかアホすぎw SPAだから200にするんだとかアホすぎw
200にするか404にするかは「URIが指し示すリソース」の存在の有無が基準だ
0978デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:32:27.92ID:AYB00j0e
一つの画面が一つのリソースからできてるわけでないってのもわかるか。
画面を動かすとアドレスが変わるけど、リロードしてもSSRしていないリソースはそのまま落ちてくるのもわかるな。
0981デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:33:52.75ID:AYB00j0e
>>979
そっちはWebページ、俺が挙げたのはSPA。
だから、おまえは旧石器時代の人間で、Webページからはなれて考えろって俺が言ってるの。
0982デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:35:12.53ID:AYB00j0e
SPAでも同じ話だろ、って言いたいんだろうが、全然違うことがわかったよな。

技術についてこれねえやつは発言しないでくれるかな。
COBOLでは〇〇だった、とかドヤってくる無能そっくりなんだわ。
0983デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:35:57.85ID:F2O3xW/S
あ、なるほど、こいつURIリソースが見つからないのと
検索結果が見つからないをごっちゃにしてるのかw
0984デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:37:11.71ID:AYB00j0e
>>983
違うよ。
中でAPI呼んでるでしょ。
そのレスポンス見てみ?

これ以上間抜けさらさんと謝ればどうだ?
0985デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:37:25.16ID:F2O3xW/S
>>981
> そっちはWebページ、俺が挙げたのはSPA。

SPAで404が返ってこないものを出して
200が返ってきましたーって意味ねーだろw

SPAを使って404を返してくるものをもってこいって。
画面に地図表示されて明らかに404じゃないのに
404でてないとかいわれてもな(苦笑
0988デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:39:19.18ID:WV1p31YW
>>985
だから、帰ってこないものなんだよ。
そう言ってんじゃん。

今回のアドレスも、404に相当するsnack出てるよねw
0991デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:41:39.82ID:F2O3xW/S
>>988
> だから、帰ってこないものなんだよ。
> そう言ってんじゃん。

SPAはすべて200を返すものって言いたいのかな?w
0992デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:43:00.60ID:WV1p31YW
実在するもの叩いたら、今回出てるのtoastわかると思うんだがな。

>>980
そうだよ。だからURIなの。httpとhttpsは違うものでしょw
Androidで見たら、前者叩いたらマップが開くんだよ。
0996デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:45:27.99ID:F2O3xW/S
>>993
だから質問者はSPAで404を返すにはどうするかって話をしてるんだろ。
全てじゃないというのならやり方があるわけで、
そのやり方を聞いているんだろ
何が言いたいんだおまえは。
0997デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:45:58.61ID:WV1p31YW
逆に「サーバしか知らない事」はクライアントで判断出来るわけねえじゃんw
0999デフォルトの名無しさん
垢版 |
2018/02/18(日) 16:47:33.18ID:WV1p31YW
何が言いたいんだと言ってるやつが一番わかってないだけの大舞踏会のおしまいw
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1064日 0時間 28分 55秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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