Comparar revisiones

Generación de GUIDs

Revisión 270363:

Revisión 270363 de ibnkhaldun el

Revisión 219938:

Revisión 219938 de ibnkhaldun el

Título:
Generación de GUIDs
Generación de GUIDs
Enlace amigable (slug):
Generación_de_GUIDs
Generación_de_GUIDs
Contenido:

Revisión 270363
Revisión 219938
t7    <div class="note">t
8      (Esta página se encuentra en proceso de traducción - ruego 
>a quién la complete, si no lo hago antes, retirar esta nota de es 
>tatus - Ibnkhaldun) 
9    </div>
10    <p>
11      Los <strong>GUID</strong>s son empleados por los programas 
>integrados en Mozilla para identificar de modo único a una gran v 
>ariedad de entidades, entre las que se incluyen las <a href="/en/ 
>Interfaces" title="en/Interfaces">Interfaces</a> XPCOM (en este c 
>aso, la GUID es llamada IID), los componentes (CID), y los "agreg 
>ados" (add-ons), como <a href="/en/Extensions" title="en/Extensio 
>ns">extensiones</a> y <a href="/en/Themes" title="en/Themes">tema 
>s</a>; no obstante, los "agregados" (add-ons) <a href="/en/Instal 
>l_Manifests#id" title="en/Install_Manifests#id">pueden (y debiera 
>n) ser identificados</a> mediante IDs (identificadores) de la for 
>ma <code><a class=" link-mailto" href="mailto:nombreextension@nom 
>breorganizacion.tld" rel="freelink">nombreextension@nombreorganiz 
>acion.tld</a></code> a partir de <a href="/en/Firefox_1.5_for_dev 
>elopers" title="en/Firefox_1.5_for_developers">Firefox 1.5</a>. 
12    </p>
13    <h3 id="Canonical_form" name="Canonical_form">
14      Forma canónica de una GUID
15    </h3>
16    <p>
17      La forma usual de una GUID es <code>xxxxxxxx-xxxx-xxxx-xxxx
>-xxxxxxxxxxx</code>, donde cada <code>x</code> corresponde a un d 
>ígito hexadecimal (01...9A...F). Y, debe ser única en el mundo dí 
>gital. De modo que no importa en que equipo sea instalada la enti 
>dad a la que identifica no compita con el identificador de otro o 
>bjeto o programa instalado en el mismo. Esto quiere decir, que un 
>a GUID no puede ser escrita de modo arbitrario, siguiendo el mode 
>lo canónico. Debe ser generada por una utilidad (algoritmo) que g 
>arantice su unicidad. Sería gravísimo crear un componente o una b 
>iblioteca y asignar GUIDs arbitrarias a ella y sus entidades inte 
>grantes: al distribuirla e instalarla en otros equipos podría pro 
>vocar efectos inesperados cuando los programas y utilitarios inst 
>alados en los mismos traten de hacer referencia a (o cargar) piez 
>as de software cuyos identificadores se solapan. Existen muchas u 
>tilidades que permiten generar GUIDs únicos que se ajustan a la f 
>orma canónica. Entre otras: 
18    </p>
19    <h4 id="Online_tools" name="Online_tools">
20      Herramientas en línea
21    </h4>
22    <ul>
23      <li>
24        <a class="external" href="http://www.somacon.com/p113.php
>">Generate GUID Online</a> 
25      </li>
26      <li>
27        <a class="external" href="http://www.famkruithof.net/uuid
>/uuidgen">UUID (GUID) Generator on the WEB</a> 
28      </li>
29      <li>
30        <a class="external" href="http://mozilla.pettay.fi/cgi-bi
>n/mozuuid.pl">UUID Generator for Mozilla Code</a> (tanto en forma 
> IDL como C++.h) 
31      </li>
32      <li>Se puede obtener una GUID desde algunos robots de corre
>o (tales como botbot, firebot) el canal IRC <a class="link-irc" h 
>ref="irc://irc.mozilla.org/firefox">#firefox</a> enviandoles <cod 
>e>/msg</code>ing "uuid" . 
33      </li>
34    </ul>
35    <h4 id="Windows" name="Windows">
36      Windows
37    </h4>
38    <p>
39      Los usuarios de Windows pueden emplear el utilitario <a cla
>ss="external" href="http://www.microsoft.com/downloads/details.as 
>px?FamilyID=94551F58-484F-4A8C-BB39-ADB270833AFC&amp;displaylang= 
>en">GuidGen</a> de Microsoft para obtener una GUID. (esta utilida 
>d de parte de MS Visual C++) 
40    </p>
41    <h4 id="Linux" name="Linux">
42      Linux
43    </h4>
44    <p>
45      Usar <code>/usr/bin/uuidgen</code>. Se encuentra en el paqu
>ete <code>libuuid1</code> (Debian). 
46    </p>
47    <h4 id="Mac_OS.C2.A0X">
48      Mac OS&nbsp;X
49    </h4>
50    <p>
51      Usar <code>/usr/bin/uuidgen</code>.
52    </p>
53    <h4 id="Perl" name="Perl">
54      Perl
55    </h4>
56    <p>
57      <a class="external" href="http://www.johnkeiser.com/mozilla
>/mozilla_tools.html">jkeiser's Mozilla tools</a> incluye un gener 
>ador UUID con salidas en los estilos C++ e IDL. 
58    </p>
59    <h4 id="nsIUUIDGenerator" name="nsIUUIDGenerator">
60      nsIUUIDGenerator
61    </h4>
62    <p>
63      Se puede generar un identificador UUID desde código, contan
>do con privilegios de ejecución en Mozilla, utilizando los método 
>s del objeto <code><a href="/en/XPCOM_Interface_Reference/nsIUUID 
>Generator" title="en/nsIUUIDGenerator">nsIUUIDGenerator</a></code 
>>. Ver la página enlazada para obtener detalles. 
64    </p>
65    <h3 id="COM.2FXPCOM_format" name="COM.2FXPCOM_format">
66      Formato COM/XPCOM
67    </h3>
68    <p>
69      Cuando se declaran IIDs y CIDs mediante enunciados&nbsp; <c
>ode>#define</code> en código C++ para Mozilla, suele emplearse el 
> siguiente formato: 
70    </p>
71    <pre class="eval">
72// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
73#define NS_...ID \
74{ 0xXXXXXXXX, 0xXXXX, 0xXXXX, \
75  { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX } }
76</pre>
77    <p>
78      Para generar código en este formato puede emplearse alguna 
>de las siguientes herramientas. 
79    </p>
80    <h4 id="Online_tools_2" name="Online_tools_2">
81      Utilidades en línea
82    </h4>
83    <ul>
84      <li>
85        <a class=" external" href="http://mozilla.pettay.fi/cgi-b
>in/mozuuid.pl" rel="freelink">http://mozilla.pettay.fi/cgi-bin/mo 
>zuuid.pl</a> 
86      </li>
87    </ul>
88    <h4 id="guidgen" name="guidgen">
89      guidgen
90    </h4>
91    <p>
92      <code>guidgen.exe</code>, hace parte de Microsoft Visual St
>udio, genera UUIDs en este formato. 
93    </p>
94    <div class="note">
95      (N de T. Los dos párrafos siguientes son poco claros en el 
>original - su traducción es difícil ¿alguna sugerencia? - hace fa 
>lta un texto que los haga más orientadores - no son una buena ayu 
>da) 
96    </div>
97    <h4 id="bash" name="bash">
98      bash
99    </h4>
100    <p>
101      You can put the following into your <code>.bashrc</code> fi
>le: 
102    </p>
103    <pre>
104uuidgen-c++()
105{
106       local UUID=$(uuidgen)
107       echo "// $UUID"
108       echo "#define NS__IID \\"
109       echo "{ 0x${UUID:0:8}, 0x${UUID:9:4}, 0x${UUID:14:4}, \\"
110       echo -n "  { 0x${UUID:19:2}, 0x${UUID:21:2}, 0x${UUID:24:2
>}, " 
111       echo -n "0x${UUID:26:2}, 0x${UUID:28:2}, 0x${UUID:30:2}, "
112       echo "0x${UUID:32:2}, 0x${UUID:34:2} } }"
113}
114</pre>
115    <h4 id="Perl_2" name="Perl_2">
116      Perl
117    </h4>
118    <pre>
119#!/usr/bin/perl
120$uuid = `uuidgen`;
121chomp $uuid;
122print $uuid, "\n";
123@parts = ($uuid =~ /^(.{8})-(.{4})-(.{4})-(..)(..)-(..)(..)(..)(.
>.)(..)(..)$/); 
124print "{ 0x$parts[0], 0x$parts[1], 0x$parts[2], \\", "\n", " { ";
125for (3 .. 9) {
126    print "0x$parts[$_], ";
127}
128print "0x$parts[10] } }", "\n";
129</pre>
130    <p>
131      {{ languages( { "fr": "fr/G\u00e9n\u00e9ration_de_GUID", "j
>a": "ja/Generating_GUIDs", "pl": "pl/Generowanie_GUID" } ) }} 
132    </p>

Volver al historial