私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.121 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
SHIFT+ENTERのキーコードが13でENTERになっているのですが
SHIFT押しながらENTERおしたときと
単にENTERを押した時の区別って出来ますか?
SHIFT押しながらENTERおしたときと
単にENTERを押した時の区別って出来ますか?
innerTextとtextContentは若干挙動が違うらしい
支障が無ければinnerHTMLを使ったほうが良いらしい
支障が無ければinnerHTMLを使ったほうが良いらしい
>>454
引数を渡すようにすればその中に入ってるはずだ
http://so-zou.jp/web-app/tech/programming/javascript/event/handler/key/#no3
引数を渡すようにすればその中に入ってるはずだ
http://so-zou.jp/web-app/tech/programming/javascript/event/handler/key/#no3
>>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
まだいるか分からないけど訂正すると
.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
var a = new Array1();
a[3].x = 1;
a[7].y = 2;
上のようにできる、プロパティの付いた配列のクラスらしきものを実現したいのですが
どのようにすればできるでしょうか?
変数のプロパティだけでいいなら
var foo = new Foo();
function Foo()
{
this.x = null;
this.y = null;
}
みたいな感じにはなると思うのですが・・・
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;
配列の初期長を決めて、あらかじめインスタンスを必要個数分だけ作っておくのはどう?
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;
>>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を使うという方法もある
なるほど、配列の長さが変化するのなら、>>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を使うという方法もある
>>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("");
}
下記の関数を見つけました。
この関数は衝突なく安全に利用できますか?
理解できる方は、各処理の解説もして頂ければ助かります。。。
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
ただの10進数⇒62進数変換
ただの10進数⇒62進数変換
暗号学的なhashもあれば、単にデータを区別する値もhashと言うよな
何の目的に使うのか知らんが、それを読む限り、10進数を62進数にしているように見える。
若干並びを入れ替えているみたいだが。
単純すぎてパスワード保存用とかには使えないぞ。
ちゃんとしたハッシュアルゴリズムを実装すべきだと思うが。
若干並びを入れ替えているみたいだが。
単純すぎてパスワード保存用とかには使えないぞ。
ちゃんとしたハッシュアルゴリズムを実装すべきだと思うが。
10進数⇒62進数変換ではなかったな。
62進数に近い何かをやってる
62進数に近い何かをやってる
>>476
これでいーですかー?w
http://e-words.jp/w/E3838FE38383E382B7E383A5E580A4.html
> 元になるデータから一定の計算手順により求められた、【規則性のない固定長の値。】
> その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための
> 計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。
>
> 【ハッシュ値は元のデータの長さによらず一定の長さとなっており】、同じデータからは必ず同じハッシュ値が得られる一方、
> 【少しでも異なるデータからはまったく異なるハッシュ値が得られる。】
> 【不可逆で情報量の欠損を含む計算過程を経るため、ハッシュ値から元のデータを復元することはできない。】
>
> また、【元のデータよりハッシュ値の方が短い場合(実用上はほとんどの場合が該当する)】、
> 複数の異なるデータから同じハッシュ値が生成される(ハッシュ値の衝突)ことになるが、
> あるデータとそのハッシュ値から、【同じハッシュ値を持つ別のデータを効率よく探索することはできない。】
よってハッシュではありません。
反論あるならどうぞ?
これでいーですかー?w
http://e-words.jp/w/E3838FE38383E382B7E383A5E580A4.html
> 元になるデータから一定の計算手順により求められた、【規則性のない固定長の値。】
> その性質から暗号や認証、データ構造などに応用されている。ハッシュ値を求めるための
> 計算手順のことをハッシュ関数、要約関数、メッセージダイジェスト関数などという。
>
> 【ハッシュ値は元のデータの長さによらず一定の長さとなっており】、同じデータからは必ず同じハッシュ値が得られる一方、
> 【少しでも異なるデータからはまったく異なるハッシュ値が得られる。】
> 【不可逆で情報量の欠損を含む計算過程を経るため、ハッシュ値から元のデータを復元することはできない。】
>
> また、【元のデータよりハッシュ値の方が短い場合(実用上はほとんどの場合が該当する)】、
> 複数の異なるデータから同じハッシュ値が生成される(ハッシュ値の衝突)ことになるが、
> あるデータとそのハッシュ値から、【同じハッシュ値を持つ別のデータを効率よく探索することはできない。】
よってハッシュではありません。
反論あるならどうぞ?
これは最小完全ハッシュ関数だな
shuffleTableをその名の通りシャッフルすれば、shuffleTable毎に一意性のある値が算出されるんじゃね
ただ、確証は無い。衝突の有無は知らん
shuffleTableをその名の通りシャッフルすれば、shuffleTable毎に一意性のある値が算出されるんじゃね
ただ、確証は無い。衝突の有無は知らん
ちなみに整数を文字列にしているので、
元のデータ量よりもハッシュ値(と称する別のもの)
の方が多くなっている。
元のデータ量よりもハッシュ値(と称する別のもの)
の方が多くなっている。
>>480
wikipediaくらい見てくれば?反論できないのは君の方と気付くよ
wikipediaくらい見てくれば?反論できないのは君の方と気付くよ
Wikipediaの最小完全ハッシュ関数例を見てもわかるように
最小完全ハッシュ関数は、John Smith -> 1, Lisa Smith -> 0, Sam Doe -> 3, Sandra Dee -> 2
という風に、データが小さくなっているからハッシュなんですよ?
ただの進数変換もどきは逆にデータ量が大きくなっていて
なんのためにあるのかさっぱりわかりませんw
最小完全ハッシュ関数は、John Smith -> 1, Lisa Smith -> 0, Sam Doe -> 3, Sandra Dee -> 2
という風に、データが小さくなっているからハッシュなんですよ?
ただの進数変換もどきは逆にデータ量が大きくなっていて
なんのためにあるのかさっぱりわかりませんw
なお、create62Hash(0,shuffleTable)がA
なお、create62Hash(1,shuffleTable)がB
なお、create62Hash(2,shuffleTable)がC
とハッシュにありまじき予測可能な順番で並んでいるのは
進数変換だからいいとして
create62Hash(61,shuffleTable)が9
create62Hash(62,shuffleTable)がAC
となっており、AAじゃない所を見ると
バグってますねこれ。
なお、create62Hash(1,shuffleTable)がB
なお、create62Hash(2,shuffleTable)がC
とハッシュにありまじき予測可能な順番で並んでいるのは
進数変換だからいいとして
create62Hash(61,shuffleTable)が9
create62Hash(62,shuffleTable)がAC
となっており、AAじゃない所を見ると
バグってますねこれ。
shuffleTableを変更すればランダムになるというのは
間違いです。
0~9、A-Z、a-zの文字がそれぞれ置き換わるだけで、
順番はランダムになっていません。
これもハッシュではないことの根拠の一つです。
間違いです。
0~9、A-Z、a-zの文字がそれぞれ置き換わるだけで、
順番はランダムになっていません。
これもハッシュではないことの根拠の一つです。
大元はこれ、
http://workline.xii.jp/texts/oneday_url/
> やってることは進数変換と一緒で、62進で1ケタずつ値を見て、
> それをchr()で対応する文字に変換しています。
やってることは進数変換と一緒と書いてあるとおり
名前がおかしいだけの話です。
やってることが進数変換なら
進数変換(+文字単純置換)です
http://workline.xii.jp/texts/oneday_url/
> やってることは進数変換と一緒で、62進で1ケタずつ値を見て、
> それをchr()で対応する文字に変換しています。
やってることは進数変換と一緒と書いてあるとおり
名前がおかしいだけの話です。
やってることが進数変換なら
進数変換(+文字単純置換)です
wikipediaより
>あるデータが与えられた場合にそのデータを代表する数値を得る操作、
>または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または単にハッシュという。
と定義されてる
つまり、データとハッシュ値が結びつくなら固定長である必要も、元の文字より大きくなっても問題ない
単なる進数変換でも広い意味でハッシュと言える
>あるデータが与えられた場合にそのデータを代表する数値を得る操作、
>または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または単にハッシュという。
と定義されてる
つまり、データとハッシュ値が結びつくなら固定長である必要も、元の文字より大きくなっても問題ない
単なる進数変換でも広い意味でハッシュと言える
> あるデータが与えられた場合にそのデータを代表する【数値を】
数値ではないのでハッシュ変換ではありません
数値ではないのでハッシュ変換ではありません
>>492-493
バレバレな自作自演をみたw
バレバレな自作自演をみたw
create62Hashは入力された引数の数値を
何の処理もせずに、単純に文字列に進数変換しているので
ハッシュ処理としては何もしていません。
何の処理もせずに、単純に文字列に進数変換しているので
ハッシュ処理としては何もしていません。
499
定義の範囲内でハッシュと呼べるけど?
反論出来てない
間違いを認められないと本当の馬鹿だぞ
定義の範囲内でハッシュと呼べるけど?
反論出来てない
間違いを認められないと本当の馬鹿だぞ
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.121 + (1001) - [100%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.141 + (881) - [97%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.129 + (926) - [97%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.131 + (1000) - [97%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.120 + (1002) - [97%] - 2014/11/8 1:15
- + JavaScript の質問用スレッド vol.122 + (1004) - [97%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.122 + (116) - [97%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.129 + (981) - [97%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.128 + (1001) - [97%] - 2016/2/26 6:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [97%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.123 + (966) - [97%] - 2020/10/20 2:30
- + JavaScript の質問用スレッド vol.127 + (1001) - [97%] - 2016/2/4 0:15
- + JavaScript の質問用スレッド vol.127 + (160) - [97%] - 2021/7/16 9:30
- + JavaScript の質問用スレッド vol.126 + (952) - [97%] - 2015/11/18 13:15
- + JavaScript の質問用スレッド vol.126 + (348) - [97%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.123 + (1002) - [97%] - 2015/4/27 23:30
トップメニューへ / →のくす牧場書庫について