mozilla

Generowanie GUID

GUIDy są używane w programowaniu Mozilli do identyfikacji rożnych rzeczy włączając w to interfejsy XPCOM (ten typ GUID nazywany jest IID), komponenty (CID) oraz dodatki jak rozszerzenia oraz motywy. Dodatki mogą (i powinny) być identyfikowane za pomocą ID typu <tt>extensionname@organization.tld</tt> począwszy od Firefoksa 1.5.

Forma kanoniczna

Typową formą GUID jest <tt>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</tt>, gdzie każdy <tt>x</tt> reprezentuje cyfrę szestnastkową. Istnieje wiele narzędzi do generacji GUID w formie kanonicznej.

Narzędzia online

Windows

Użytkownicy Windows mogą użyć narzędzia Microsoftu GuidGen. (Jest ono również częścią MS Visual C++)

Linux

Użyj /usr/bin/uuidgen. Można go znaleźć w paczce libuuid1 (Debian).

Perl

Narzędzie Mozilli jkeiser's zawiera generator UUID tworzący zarówno format C++ jak i styl IDL.

nsIUUIDGenerator

UUID może zostać wygenerowany za pomocą wolnego kodu Mozilli nsIUUIDGenerator. Patrz odnośniki do strony.

Format COM/XPCOM

Podczas definiowania IID i CID za pomocą #define w kodzie C++ Mozilli możesz używać poniższego formatu:

// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
#define NS_...ID \
{ 0xXXXXXXXX, 0xXXXX, 0xXXXX, \
  { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX } }

Możesz wygenerować kod w powyższym formacie używając poniższych narzędzi.

Narzędzia online

guidgen

guidgen.exe jest częścią Microsoft Visual Studio i może generować UUID w tym formacie.

bash

Możesz wpisać poniższy tekst do swojego pliku <tt>.bashrc</tt>:

uuidgen-c++()
{
       local UUID=$(uuidgen)
       echo "// $UUID"
       echo "#define NS__IID \\"
       echo "{ 0x${UUID:0:8}, 0x${UUID:9:4}, 0x${UUID:14:4}, \\"
       echo -n "  { 0x${UUID:19:2}, 0x${UUID:21:2}, 0x${UUID:24:2}, "
       echo -n "0x${UUID:26:2}, 0x${UUID:28:2}, 0x${UUID:30:2}, "
       echo "0x${UUID:32:2}, 0x${UUID:34:2} } }"
}

Perl

#!/usr/bin/perl
$uuid = `uuidgen`;
chomp $uuid;
print $uuid, "\n";
@parts = ($uuid =~ /^(.{8})-(.{4})-(.{4})-(..)(..)-(..)(..)(..)(..)(..)(..)$/);
print "{ 0x$parts[0], 0x$parts[1], 0x$parts[2], \\", "\n", " { ";
for (3 .. 9) {
    print "0x$parts[$_], ";
}
print "0x$parts[10] } }", "\n";

Autorzy i etykiety dokumentu

Contributors to this page: Bedi, Ptak82, Mgjbot, Jmkf
Ostatnia aktualizacja: Bedi,