| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > GUID |
| Автор: Rennigth 24.6.2004, 16:05 |
| global universal id но мля.... что это и счем его едят, то есть на кой нужен.. и как мне идентифицировать файлы по GUID. |
| Автор: stab 24.6.2004, 16:14 | ||
GUID - Global Unique IDentifier. Целое число, занимает 128 бит. Испоьльзуется для идентитифкации чего либо, т.е. что-то типа случайного числа. Создается функцией CoCreateGuid.
а что за файлы? |
| Автор: Rennigth 24.6.2004, 16:24 |
| Мне надо написать CGI-модуль, для передачи файлов через Интернет клиенту Файлы должны идентифицироваться по GUID ну в принципе я файлы то передаю а как я понял они должны выбираться (т.е. какой передавать) по Guid |
| Автор: stab 24.6.2004, 16:28 |
| Таблицу завести где в соотвествие GUID ставится файл или просто файлы обозвать в GUID формате, например {04B1A7E3-4379-39D2-B003-57AF524D9AC5}.txt. з.ы. не совсем понимаю, что требуется сделать |
| Автор: _hunter 24.6.2004, 16:31 |
| файлы нужно не по GUID идентифицировать ( разве что сам его в них запишеш) а по чему-то тира MD5Sum |
| Автор: Rennigth 24.6.2004, 16:38 |
| да вроде разобрался нашел старую какуюто базу на серваке где все файлы типа {EEC6BE6E-97D4-4BDF-BDAF-1D101E7B81D5}.jpg правда и сам в этом юмора пока не вижу |
| Автор: _hunter 24.6.2004, 16:43 |
| это сделано только для того, чтобы исключить возможность (понизить вероятность возможно это имаджи для аватаров ( каждый пользователь имеет свой GUID по которому ищется аватар ) да много чего еще может быть |
| Автор: <Spawn> 24.6.2004, 19:48 | ||
Вряд ли ты в своей жизни дублика встретишь - если я привильно помню описалово, то если генерить GUID-ы со скоростью 1 000 000 в секунду, то вероятность его повторения равна 5 % за время существования вселенной |
| Автор: Петрович 24.6.2004, 22:50 | ||||
сори за offtop, но данное высказывание навеяло в памяти одну поучительную байку.
Это я к тому, что в жизни и тем более в программировании, если уж существует даже небольшая вероятность наступления какого-либо события, считайте что оно обязательно наступит, причем в самый неподходящий момент. А что касается GUID, то его генерация устроена так, что он в принципе не должен повторяться, в период предполагаемой жизни компьютеров существующей архитектуры. В общем, на наш век и век наших детей, внуков, правнуков, ... должно хватить. Более того, фирма Microsoft, изобретатель GUID, утверждает что любой сгенеренный GUID уникален в мировом масштабе. Т.е. другого такого не существует в нашем мире, отсюда и его название: Global Unique Identifier! Именно поэтому он очень удобен для идентификации разных сущностей. Например, вы имеете две БД одинаковой структуры на разных компьютерах. Если при этом вы будете использовать для идентификации записей GUID, то, даже сгенеренные на разных компьютерах записи, при слиянии БД не будут конфликтовать. Так-же можно поступить и с файлами. |
| Автор: Maverick 25.6.2004, 09:27 |
| Я где-то читал, а может не читал.... Что эти номера сгенерены от номеров оборудования, которые уникальны от производителя... по-моему, от серийных номеров сетевых карт, что-то такое... очень смутно помню.... |
| Автор: Петрович 25.6.2004, 10:27 | ||
Почти правильно. Если точнее, то в генерации GUID учавствует MAC-адрес сетевой карты, если таковая конечно установлена в компьютере. Суть в том, что весь диапазон MAC-адресов поделен между производителями контроллеров Ethernet. Это обеспечивает уникальность MAC-адреса каждого существующего сетевого Ethernet-контроллера. Естественно, этим очень удобно пользоваться при генерации GUID. Правда, некоторое время назад, встречал статьи о том, что некоторые китайские нелегальные производители сетевых контроллеров стали использовать чужие (естественно, сами-то не зарегестрированны) MAC-адреса. А обнаружилось это при столкновении таких совпадающих адресов в одной локальной сети! Естественно, при таком раскладе, уже будет трудно гарантировать ГЛОБАЛЬНУЮ уникальность GUID. Надеюсь, что ситуация не выйдет из под контроля. Сразу скажу: как обеспечивается ГЛОБАЛЬНАЯ уникальность GUID сгенеренного на компьютерах не оснащенных сетевыми контроллерами, или оснащенными не Ethernet-контроллерами я не знаю. |
| Автор: _hunter 25.6.2004, 19:14 | ||||
на 2000/XP MAC адрес не используется:
а вот алгоритм: http://www.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01.txt |
| Автор: Петрович 25.6.2004, 20:30 | ||
Я не очень хорошо владею англицким языком, но насколько я понял, имеется ввиду что под 2000/XP, GUID генерится так, что не позволяет по сгенереннуму значению определить сетевой адрес сгенерившего его компьютера. Т.е. он все равно используется, но пропускается через необратимое преобразование. Может и не так. |
| Автор: Петрович 25.6.2004, 20:52 |
| Да. Почитал документ по ссылке, псмотрел что генерит мой Win. Похоже что мой WinXP (в Delphi по Ctrl+Shift+G) генерит GUID версии 4 (13-й шеснадцатеричный разряд = 4) в которой предписанно в качестве кода узла использовать случайное число. Более того, если я правильно понял, то бит multicast в поле узла тоже установлен что свидетельствует о том что вместо адреса было использовано случайное число. |