Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : HB                                   2:5020/400     18 Jul 2001  15:13:45
 To : All
 Subject : Как HЕ нужно генерировать unique id (was: Re: unique visitors)
 -------------------------------------------------------------------------------- 
 
 kan wrote in <995344771@p1.f69.n5050.z2.ftn>...
 
 >C:\Program Files\Far>perl
 >print (time.{}.$$."blah")
 >^Z
 >995344520HASH(0x1a7f10c)96blah
 >
 >Т.е. это пpосто для выделения памяти под новый хэш, адpес
 >не может быть одним и тем же.
 
 Еще как может.
 
 Вы, по непонятным мне причинам, полагаете, что 2 процесса, у к-рых в одном и
 том же месте программы time() возвращает одно и то же, запущены
 *одновременно*. Следовательно, и pids у них разные, и на одну и ту же
 область памяти они не могут ссылаться, и т. п...
 
 Беда в том, что один и тот же time() не означает одного момента времени. Он
 означает одну до-олгую *эпоху* длиной 1 сек. Ладно, от слов -- к делу. Все
 проверяется под Windows NT 4.0 (про Unix пару слов в конце)
 
 c:\> for /l %i in (1, 1, 100) do @perl -lwe "print time, {}, $$" >>log
 
 c:\> perl -we "++$h{$_} while <>;
 
                for (keys %h)
                  {print(qq'$h{$_} times: $_'), $n+=$h{$_} if $h{$_}>1; }
                print qq'Not unique: $n out of 100\n'" log
 7 times: 995453089HASH(0x1b9f05c)273
 2 times: 995453088HASH(0x1b9f05c)260
 7 times: 995453089HASH(0x1b9f05c)292
 7 times: 995453089HASH(0x1b9f05c)268
 2 times: 995453088HASH(0x1b9f05c)280
 2 times: 995453088HASH(0x1b9f05c)263
 7 times: 995453089HASH(0x1b9f05c)286
 2 times: 995453088HASH(0x1b9f05c)246
 7 times: 995453089HASH(0x1b9f05c)297
 7 times: 995453089HASH(0x1b9f05c)289
 2 times: 995453088HASH(0x1b9f05c)292
 7 times: 995453089HASH(0x1b9f05c)299
 2 times: 995453088HASH(0x1b9f05c)268
 2 times: 995453088HASH(0x1b9f05c)286
 7 times: 995453089HASH(0x1b9f05c)260
 2 times: 995453088HASH(0x1b9f05c)297
 2 times: 995453088HASH(0x1b9f05c)289
 7 times: 995453089HASH(0x1b9f05c)280
 7 times: 995453089HASH(0x1b9f05c)246
 7 times: 995453089HASH(0x1b9f05c)263
 2 times: 995453088HASH(0x1b9f05c)299
 Not unique: 97 out of 100
 
 Из 100 запусков, значения time.{}.$$ уникальны лишь в 3% случаев.
 Хорошенькая "уникальность"! :)
 
 Под Unix картина иная, т. к. pids присваиваются по-другому, они не
 повторяются в течение гораздо более долгой эпохи, чем 1 сек. Тем не менее, и
 в Unix об уникальности time.{} (без $$) речи быть не может. А с $$ тоже
 могут быть нюансы, например, если дело под mod_perl, или те, о которых
 сказал Ян Александровский.
 
 И вообще, идея использовать для уникального идентификатора что-то
 детерминированное (time, {}, $$, ip address, что угодно; любая комбинация из
 всего этого...) -- очень наивная и плохая идея. Это сродни написанию своего
 генератора случайных чисел, примитивного и с кучей багов и подводных камней.
 
 --
 HB      mailto:npecca@yahoo.com?subject=Usenet
 --- ifmail v.2.15dev5
  * Origin: VoronezhSvyazInform ISP (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 unique visitors   Victor Mironov   12 Jul 2001 13:33:27 
 unique visitors   Vovik Alyekhin   12 Jul 2001 14:56:10 
 Re: unique visitors   Andrew A. Sabitov   12 Jul 2001 17:49:53 
 unique visitors   Yan Alexandrovsky   12 Jul 2001 18:29:32 
 Re: unique visitors   Andrew A. Sabitov   13 Jul 2001 07:32:57 
 unique visitors   Yan Alexandrovsky   13 Jul 2001 12:27:41 
 unique visitors   kan   14 Jul 2001 00:09:25 
 Re: unique visitors   Pavel Ammosov   15 Jul 2001 17:31:18 
 unique visitors   kan   16 Jul 2001 00:06:42 
 Re: unique visitors   Lena@lena.kiev.ua   16 Jul 2001 23:24:19 
 unique visitors   kan   17 Jul 2001 08:35:40 
 Как HЕ нужно генерировать unique id (was: Re: unique visitors)   HB   18 Jul 2001 15:13:45 
 Как HЕ нужно генерировать unique id (was: Re: unique visitors)   kan   22 Jul 2001 09:57:11 
 Re: Как HЕ нужно генерировать unique id   Pavel Ammosov   25 Jul 2001 03:50:23 
 Re: Как HЕ нужно генер ировать unique id (was: Re: uniq ue visitors)   Andrew A. Sabitov   27 Jul 2001 06:35:22 
 Re: unique visitors   Artem Chuprina   02 Aug 2001 18:57:01 
 unique visitors   pavel kurnosoff   13 Jul 2001 02:21:33 
Архивное /ru.cgi.perl/6307508f1599.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional