Что такое GUID и для чего он бывает необходим? | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Прочитал в Вики про этот самый GUID, представляющий из себя 128-битовую последлвательность, разделяемую дефисами на 4 группы. Обычно записывается в 16-ричном формате.
Однако не очень понял, когда и для чего применяют этот GUID для софта или для файлов данных Может быть, у кого-то есть опыт формирования и использования этого самого GUID? |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Гм... Как-то ты странно прочитал. Выборочно...
Цитата: Это идентификатор. Его цель - идентификация чего-либо. Причем "в мировом масштабе" Т.е. можно быть уверенным, что полученный GUID будет уникален и не пересечется с каким-либо другим GUID, полученным где-то еще. Например, если ты в качестве Primary Key используешь автоинкремент, то, очевидно, что в другой копии твоего же приложения идентификаторы будут повторяться. И если встанет вопрос объединить документы из разных систем, то придется делать перекодировщик кодов. А с GUID можешь быть уверен, что коды из разных систем гарантированно будут отличаться Т.е. в рамках одного приложения GUID не особо нужен. Но если стоит задача интеграции с другим приложением, то GUID - простейший способ обеспечения уникальности идентификаторов в разных приложениях. Нет необходимости создавать какую-то систему, которая будет контролировать эту самую уникальность между разными приложениями Физически GUID - это просто 128 бит. И никаким дефисами они не разделяются. Но для человека биты тяжело воспринимаются, поэтому отображается как последовательность 16-ричных чисел разбитая на группы. Просто для удобства восприятия |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Допустим, приложения обмениваются файлами данных (файлы имеют оговоренную структуру, разумеется). Насколько понимаю, такой файл может иметь уникальный GUID с тем, чтобы этот самый файл с уникальным GUID не мог бы случайно сгенерироваться ещё "где-то"? Если это так, то тогда вот какой вопрос. А при помощи какого софта генерируется уникальный GUID? И за счёт чего достигается уникальность GUID? Есть ли какая-то спецификация по формированию GUID? |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вот тут нашёл более или менее подробное описание GUID
infostart.ru Если я правильно понял, то после того, как база данных или там отдельный файл подготовлен для "передачи на сторону", следует запросить уникальный GUID у специального сервиса (бесплатно чи шо?). После получения GUID этот самый GUID записывается в передаваемый файл. Так примерно? Исправлено 1 раз(а). Последнее : Simple777, 17.09.21 07:48 |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Тут для 1С толково расписано, спецификация тоже infostart.ru PS Поставь какой-нибудь MSSQL Express и получай из него GUID
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
Вещь очень нужная для обмена - где-то тут взял - работает уже много лет :
------------------ Тяжело согнать курсором муху с монитора ... |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> 128-битовую последлвательность
Вызови 4 раза фоксовый рандомный генератор 32-битного числа - вот и 128-битный рандом... В ГУИД только надо первый HEX-символ в 3-ей группе указать правильный, этот символ говорит о типе ГУИД-а. Вроде "4" означает "рандомный": 0593EC0E-5B78-4674-A0DC-39CFBC958324 |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Не. Чета странно это. Как я понял, эти коды GUID генерирует некий инет-сервис. И при этом этот сервис ведет учет ранее сгенерированных и выданных GUID. Поэтому непонятно, как так можно самому формировать какой-то "якобы уникальный" GUID.
|
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
В винде помнится есть для этого средство, когда-то встречалось, как можно вызывать. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
Ого, похоже я и уверен что многие другие уже мильон гуидов нигде не учтенных забрали - как бы не пришлось их сдавать обратно ... ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
128-битного случайного числа "хватит всем" на все, никто их не запоминает...
|
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
AngelOKES Сообщений: 828 Дата регистрации: 08.02.2012 |
Если их не запоминать, то рэндум штука такая, рано или поздно может повторится и тогда смысла от этого GUID сводится в нулю |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Со скидкой возьмут. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Винда просто сканирует имеющиеся и добавляет. При желании даже фоксом моно просканировать. Хотя проще ж использовать возможности ее самой. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Да, все рандомы конечной длины повторяются. В этом смысле смысл от GUID-а не 100% очевиден |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
Предлагаю в складчину забрать их как можно больше - появится дефицит, а потом глядишь и с наценкой сможем вернуть ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Тут вот хохмите, панимаиш.
А файлы мало ли куда могут передаваться. Где шуток не понимают. Лучше бы по-простому рассказали, куда вставляется этот GUID в файле. Наверное, где-то в начале или в конце файла? Или обычно оговаривается, что "со сдвигом N позиций должен находиться GUID", и штоб не паленый!.. |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Дык, в имя файла пропиши. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Можно этими ГУИД-ами (в HEX-виде) именовать файлы, чтобы они не перезатирали друг друга, когда валятся в какую-то файлопомойку (некоторые гос-конторы заставляют так именовать входящие файлы) Можно вместо автоинкрементного поля использовать для связи в табличках... Куда сам придумаешь. Это просто 128-битное случайное число, никакого сакрального значения не имеет.
|
Re: Что такое GUID и для чего он бывает необходим? | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Симпл, у нас есть приложения, в кот. БД общая для многих предприятий.
Там без GUID было бы ненадежно. Много лет пользуем * *+ Guid - 24-х разрядне * FUNCTION Guid LOCAL lcGUID, lcRES, lnByte, lnIdx, lnPnt, lnResult, lnSymbol, lnSymbolLeft, lnSymbolRight m.lcGUID=SPACE(24) DECLARE INTEGER CoCreateGuid IN ole32.DLL STRING @lcGUID m.lnResult=CoCreateGuid(@m.lcGUID) m.lcRES="" FOR m.lnIdx=1 TO 16 DO CASE * 4 3 2 1 CASE m.lnIdx < 5 lnByte=5-m.lnIdx * 6 5 CASE m.lnIdx >= 5 AND m.lnIdx < 7 IF m.lnIdx == 5 m.lcRES=m.lcRES+'-' ENDIF lnByte=11-m.lnIdx * 8 7 CASE m.lnIdx >= 7 AND m.lnIdx < 9 IF m.lnIdx == 7 m.lcRES=m.lcRES+'-' ENDIF lnByte=15-m.lnIdx * 9 10 CASE m.lnIdx >= 9 AND m.lnIdx < 11 IF m.lnIdx == 9 m.lcRES=m.lcRES+'-' ENDIF lnByte=m.lnIdx * 11 12 13 14 15 16 OTHERWISE IF m.lnIdx == 11 m.lcRES=m.lcRES+'-' ENDIF lnByte=m.lnIdx ENDCASE m.lnSymbol=ASC(SUBSTR(m.lcGUID,lnByte,1)) m.lnSymbolLeft=m.lnSymbol/16 IF m.lnSymbolLeft < 10 m.lnSymbolLeft=m.lnSymbolLeft+ASC('0') ELSE m.lnSymbolLeft=m.lnSymbolLeft-10+ASC('A') ENDIF m.lnSymbolRight=MOD(m.lnSymbol,16) IF m.lnSymbolRight < 10 m.lnSymbolRight=m.lnSymbolRight+ASC('0') ELSE m.lnSymbolRight=m.lnSymbolRight-10+ASC('A') ENDIF m.lcRES=m.lcRES+CHR(m.lnSymbolLeft)+CHR(m.lnSymbolRight) ENDFOR m.lnPnt=0 DECLARE INTEGER StringFromCLSID IN ole32.DLL STRING @lcGUID, INTEGER @lnPnt m.lcRES=SPACE(64) m.lnResult=StringFromCLSID(@m.lcGUID,@m.lnPnt) m.lcRES=SYS(2600,m.lnPnt,76) m.lcRES=STRCONV(STRCONV(m.lcRES,6,1033),2,1033) m.lcRES=SUBSTR(m.lcRES,2,LEN(m.lcRES)-2) RETURN m.lcRES Писал не я, но проблем у нас не было Исправлено 1 раз(а). Последнее : Ydin, 17.09.21 13:38 |
© 2000-2024 Fox Club  |