@Brian R. Bondy: Обратите внимание на то, что это не решение, как только Ваша команда достигает определенного количества людей/задач, обработанных параллельно на проекте.
, Как только отдел QA вовлечен в обеспечение качества, усилия должны были обеспечить, одна установка на происходящее ответвление просто слишком высоки. Думайте SOA/клиенты/серверы/веб-сервисы/базы данных , все из которых должны быть обеспечены на ответвление .
Это решение испытывает недостаток также в этапе интеграции.
Соответствующий стандарту UUID может быть одним из нескольких вариантов, он выглядит следующим образом:
AAAAAAAA-BBBB-CCCC-DDDD-FFFFFFFFFFFF
Первая (шестнадцатеричная) цифра номера Часть DDDD определяет вариант.
Если это один из 8,9, A, B, он соответствует текущей спецификации (0-7 зарезервированы для обратной совместимости, C, D зарезервированы для Microsoft, а E, F зарезервированы для использования в будущем)
Если это соответствует текущей спецификации, проверьте первую цифру частиCCCC, которая определяет Версия UUID:
Просто случайным образом выбирается версия 4.
Версии 3 и 5 генерируются путем хеширования и отбрасывания некоторых битов, что означает, что у вас практически нет шансов восстановить какую-либо информацию из них. Подробную информацию о том, как его создать, можно найти в RFC4122 или на веб-странице UUID Generator .
Мне не удалось найти UUID версии 2, поэтому я не проверял, как извлечь данные. (Стандарт также позволяет использовать случайный адрес вместо этого, если вы устанавливаете бит «широковещательная / многоадресная рассылка» MAC-адреса.)
Следующий фрагмент perl анализирует MAC-адрес и время из uuid версии 1:
my $uuid="AAAAAAAA-BBBB-CCCC-DDDD-FFFFFFFFFFFF";
$uuid=~tr/-//d;
my $time_low=hex substr($uuid,2* 0,2*4);
my $time_mid=hex substr($uuid,2* 4,2*2);
my $version =hex substr($uuid,2* 6,1);
my $time_hi =hex substr($uuid,2* 6+1,2*2-1);
my $time=($time_hi*(2**16)+$time_mid)*(2**32)+$time_low;
my $epoc=int($time /10000000) - 12219292800;
my $nano=$time-int($time/10000000)*10000000;
my $clk_hi =hex substr($uuid,2* 8,2*1);
my $clk_lo =hex substr($uuid,2* 9,2*1);
my $node =substr($uuid,2*10,2*6);
$node=~/^(..)(..)(..)(..)(..)(..)$/ || die;
$node="$1:$2:$3:$4:$5:$6";
print "time: ",scalar localtime $epoc," +",$nano/10000,"ms\n";
print "clock id: ",$clk_hi*256+$clk_lo,"\n";
print "Mac: $node\n";
my $byte=hex $1;
if(hex($1)&1){
print "broadcast/multicast bit set.\n";
};
И И последнее, но не менее важное: есть несколько назначенных UUID, например, для разделов GPT .
Не обязательно надежный способ, потому что в зависимости от типа UUID он может быть сгенерирован полностью из случайных битов, на основе временных меток или на основе MAC-адреса. Так что вы можете получить часть этой информации, но вы не можете гарантировать, что получите что-нибудь.
Официальная ссылка на это RFC 4122 , которая, вероятно, должна дать вам достаточно информации для извлечения данные, хотя вам, вероятно, не стоит слишком на них полагаться.
You could look at the version of the Uuid, but that can only be trusted if you are sure the Uuid is valid (see http://tools.ietf.org/html/rfc4122). The version will tell you what kind of Uuid you have, and using that you can extract specific bits of information.
Если это UUID версии 1, MAC-адрес будет состоять из последних двенадцати шестнадцатеричных цифр.