Q. IDを板毎ではなくスレッド毎に生成することはできますか?(2006-02-27版)
A. お好きな方法で。
■ 1つ目の案
HOST+日にち+板アカウントで生成してるんじゃなかったっけ。
まぁスレッドごとにID生成したいなら生成の時にスレッドキーも放り込んでやればいいんじゃないかな。
スレッドキーからsaltを作成して、一回余計にcryptかける。
やってることは単純だが、実装するとなるとめんどい。
まぁスレッドごとにID生成したいなら生成の時にスレッドキーも放り込んでやればいいんじゃないかな。
スレッドキーからsaltを作成して、一回余計にcryptかける。
やってることは単純だが、実装するとなるとめんどい。
galadriel.pl
sub MakeID 内
sub MakeID 内
my ($server,$column) = @_;
↓
my ($server,$column,$key) = @_;
$ret = substr(crypt(crypt($str,$times[5]),$times[3]+31),$column);
↓
my @slt = ('.','/','0'..'9','A'..'Z','a'..'z');
my $saltbykey = $slt[$key & 63] . $slt[($key & 4095) >> 6];
$ret = >substr(crypt(crypt(crypt($str,$times[5]),$times[3]+31),$saltbykey),$column);
vara.pl
137行目あたり
137行目あたり
$id = $oConv->MakeID($oSys->Get('SERVER'),8);
↓
$id = $oConv->MakeID($oSys->Get('SERVER'),8,$oSys->Get('KEY'));
■ 2つ目の案
galadriel.plはいじらずに、
vara.pl
137行目あたり
vara.pl
137行目あたり
$id = $oConv->MakeID($oSys->Get('SERVER'),8);
↓
$id = $oConv->MakeID(substr($oSys->Get('KEY'), -8),8);
だけで実質的に十分な感じ。
.