Visit Mozilla.org

Generowanie GUID

z Mozilla Developer Center, polskiego centrum programistów Mozilli.


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 extensionname@organization.tld począwszy od Firefoksa 1.5.

Spis treści

[edytuj] Forma kanoniczna

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

[edytuj] Narzędzia online

[edytuj] Windows

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

[edytuj] Linux

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

[edytuj] Perl

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

[edytuj] nsIUUIDGenerator

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

[edytuj] 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.

[edytuj] Narzędzia online

[edytuj] guidgen

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

[edytuj] bash

Możesz wpisać poniższy tekst do swojego pliku .bashrc:

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} } }"
}

[edytuj] 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";