@oop_ru

Страница 60 из 785
Роман
12.01.2017
12:26:18
Что-то более случайное чем random_bytes()?

Evgeniy
12.01.2017
12:28:13
она не гарантирует уникальность

Роман
12.01.2017
12:31:10
Ну да, про уникальность понял, можно время примешать, но всё равно гарантии не будет. Хотя наверное вероятность совпадения будет ничтожно малой.

Evgeniy
12.01.2017
12:32:55
да, это так проблема из пальца)

Google
Evgeniy
12.01.2017
12:33:08
потому что у тебя изначальный вариант вполне нормальный и понятный)

имхо

Роман
12.01.2017
12:34:26
вот так посмотри http://pastebin.com/tztdfQX2
Не понял преимущества твоего способа, ведь в нём минусом будет дальнейшее расширение метода. Если захочу что-то добавить и вместо одной строки придётся две делать и больше.

Evgeniy
12.01.2017
12:35:06
что именно захочешь добавить ? в setUid

он именно говорит что он проставляет значение в setUid и все хватит, остальное свои методы

можно даже внутри setUid проверять уникальность и валидировать)

я не говорю что оно лучше

Роман
12.01.2017
12:35:59
Ну вот чтобы прям 100% уникальность была (ну или 99,(9)) то мне нужно будет время туда примешать, хэш его, хэши сконкатенировать и т.д.

Evgeniy
12.01.2017
12:36:12
неа

можно нафигарить что то типо этого

вот так можно сделать )) http://pastebin.com/2ZFc8n0Z

но на самом деле это плохо )

:D

Google
Evgeniy
12.01.2017
12:39:48
и уникальность науровне процесса

можно проверять в бд и тд)))

что тоже не плохо

Роман
12.01.2017
12:41:48
Нет, все объекты независимы и проверять негде их уникальность, она должна быть "гарантированной". Хоть и в кавычках. ?

Evgeniy
12.01.2017
12:42:29
насколько важна случайность uid ?

сделай авто инкремент

я бог костылей :D

Роман
12.01.2017
12:43:21
Нет, тогда перебор возможен. Это внешний доступ будет. Да ладно, я ещё сам думаю над реализацией. А вас тут путаю, не выложив всех условий.

Ну это не костыль в определённых случаях. ?

Evgeniy
12.01.2017
12:44:25
если критична уникальность и важна случайность то надо хранить прошлые варианты и проверять не было ли их раньше

если уникальность не настолько важна и можно использовать алгоритмы которые с редкой веростностью дают энтропию)

Роман
12.01.2017
12:57:23
Думаю что это будет уникально: $this->uid = hash('md5', microtime(true)) . bin2hex(random_bytes(16)); Даже если время будет одинаковое (при синхронизации оно повторится), вероятность того, что в одну микросекунду сгенерируется такая же случайная строка, ничтожно мала.

Evgeniy
12.01.2017
12:59:30
hash('md5', microtime(true)) обладает энтропией тут может быть не одна секунда)

:D

микросекунда0

:D

Роман
12.01.2017
13:00:20
? ну это уже фантастика.

Evgeniy
12.01.2017
13:00:27
колизия )

ну это математика)))

она жестока)

Google
Роман
12.01.2017
13:00:42
Я в курсе, но вероятность ничтожна.

Evgeniy
12.01.2017
13:00:47
а тут все идеалисты)

на самом деле я уже говорил и первый вариант достаточен)))

Sergey
12.01.2017
13:02:09
Я в курсе, но вероятность ничтожна.
открыть 2 keepalive соединения на сервере с пингом <1ms и отправить 2 запрос

f4rt~
12.01.2017
13:02:14
version_compare для >= 7.0.0 bin2hex(random_bytes(32)); для остальных либо bin2hex(mcrypt_create_iv(32,PARAM) или bin2hex(openssl_random_pseudo_bytes

Evgeniy
12.01.2017
13:02:41
или /dev/urandom

:D

Роман
12.01.2017
13:03:25
открыть 2 keepalive соединения на сервере с пингом <1ms и отправить 2 запрос
Так мы же говорим про сочетание двух частей. Вторая генерирует криптографически случайные байты. И вероятность совпадения ничтожна. А то что хэш времени может повториться - да, при синхронизации например, т.е. когда время снова будет таким же.

Ну или при одновременных запросах.

Роман
12.01.2017
13:04:48
Вообще согласен. ?

В общем вернулись к началу.

Evgeniy
12.01.2017
13:05:15
случайные != уникальные

Роман
12.01.2017
13:05:22
$this->setUID(bin2hex(random_bytes(16)));

Нет, они именно уникальные будут.

Из-за их количества. И вероятности повториться.

Sergey
12.01.2017
13:05:39
случайные != уникальные
уникальные != случайные

guga
12.01.2017
13:06:13
там, на днях, дядько боб будет вещать про tdd и котлин, кому-то интересно?

Aleh
12.01.2017
13:07:21
uuid для слабаков?

Роман
12.01.2017
13:08:29
uuid для слабаков?
Она не случайна.

Google
Aleh
12.01.2017
13:08:53
продолжи мысль

Evgeniy
12.01.2017
13:08:59
на вики

https://habrahabr.ru/post/135364/ вот и на хабре

Sergey
12.01.2017
13:09:31
Она не случайна.
Version 4 UUIDs are generated using random or pseudo-random numbers.

Evgeniy
12.01.2017
13:09:36
uuid не гарантирует отсутствие коллизии

Sergey
12.01.2017
13:09:40
зависит от реализации

Evgeniy
12.01.2017
13:10:53
uuid он случаен, но не гарантирует что не будет колизии

Aleh
12.01.2017
13:13:28
для исключения колизии нужна центральная точка, которая скажет есть такое или нет, а еще лучше скажет, какой id юзать

но там вроде изанчально такой задачи нет

то, что здесь обсуждалось

Admin
ERROR: S client not available

Evgeniy
12.01.2017
13:15:03
на ровном месте к коду который в 99% работает

и придумали проблему

Aleh
12.01.2017
13:15:32
а?

мы тут вроде решили проблему

guga
12.01.2017
13:17:25
конечно)
https://twitter.com/intellijidea/status/817008962239426560

Andrew
12.01.2017
13:19:20
Warning: The webinar is full.

Aleh
12.01.2017
13:49:31
будем ждать онлайн(

Yura
12.01.2017
22:03:20
Google
Yura
12.01.2017
22:04:31
уверен, что достаточно маленькая, чтобы об этом не думать

Evgeniy
12.01.2017
22:13:27
зависит от объема данных, доводилось сталкиватся с наступлением этой самой ситуации

но это было на старой работе и сейчас пофиг)

Роман
13.01.2017
05:01:56
Запись с rsdn: "Экономить их надо! А то все, кому не лень, генерируют и генерируют, не напасешься! Опомнитесь! Мировой запас UUID’ов ограничен! Подумайте об экологии в следующий раз, как рука потянется к кнопке «Сгенерировать»! И обязательно отдавайте старые ненужные UUID’ы на утилизацию. Что мы оставим потомкам-то? " ?

Sergei
13.01.2017
05:02:55
это старинный текст кажется, "Ecology of GUID"

da horsie
13.01.2017
05:32:06
Ive heard similar things being said about curly braces

And semicolons

Sergei
13.01.2017
05:33:26
well, GUIDs are clearly a limited resource while semicolons are not

da horsie
13.01.2017
05:34:05
Like bitcoins huh

Sergei
13.01.2017
05:34:54
:)

Sergey
13.01.2017
08:09:15
Where can i find GUID exchange?

Alex
13.01.2017
11:21:11
Господа, вот скажите, как правильно принято назыать интерфесы? Сейчас по пыхе: Есть у меня несколько классов-сервисов, которые могут срать ошибками. С их названием проблем нет. Есть Интерфейс для них, который хз как правильно обозвать. Есть трейт HasErrors, название которого тоже с натяжкой подходит, ибо слова Errorable не существует. Короче, беда у меня с именованием. Может кто подскажет какие-то общие принципы как и что обзывать, чтоб понятно было потом понятно каждому склонному к насилию психопату

Alex
13.01.2017
11:32:32
А интерфейсы для ошибок в принципе нужны?
да хз. Для строгости пилю. Чтоб если возможны ошибки, то класс мог с ними работать и я в это был бы уверен

замена Errorable меняется легко на hasError
тут речь больше про именование самого трейта, а не метода, но я его так и назвал.

Aleh
13.01.2017
11:34:10
ну мол зачем ошибке интерфейс

Страница 60 из 785