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
- Generowanie GUID online
- Generator sieciowy UUID (GUID)
- UUID Generator for Mozilla Code (both IDL and C++.h forms)
- Ostatecznie, można uzyskać GUID od jednego z botów (tj. botbot, firebot) na kanale IRC #mozilla za pomocą /msg "uuid".
[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";