aboutsummaryrefslogtreecommitdiff
path: root/files/es/generación_de_guids/index.html
blob: 6fb035653b9334b53bb91d781d1e01dedb77e662 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
---
title: Generación de GUIDs
slug: Generación_de_GUIDs
---
<div class="note">(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 estatus - Ibnkhaldun)</div>
<p>Los <strong>GUID</strong>s son empleados por los programas integrados en Mozilla para identificar de modo único a una gran variedad de entidades, entre las que se incluyen las <a href="/en/Interfaces" title="en/Interfaces">Interfaces</a> XPCOM (en este caso, la GUID es llamada IID), los componentes (CID), y los "agregados" (add-ons), como <a href="/en/Extensions" title="en/Extensions">extensiones</a> y <a href="/en/Themes" title="en/Themes">temas</a>; no obstante, los "agregados" (add-ons) <a href="/en/Install_Manifests#id" title="en/Install_Manifests#id">pueden (y debieran) ser identificados</a> mediante IDs (identificadores) de la forma <code><a class=" link-mailto" href="mailto:nombreextension@nombreorganizacion.tld" rel="freelink">nombreextension@nombreorganizacion.tld</a></code> a partir de <a href="/en/Firefox_1.5_for_developers" title="en/Firefox_1.5_for_developers">Firefox 1.5</a>.</p>
<h3 id="Canonical_form" name="Canonical_form">Forma canónica de una GUID</h3>
<p>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 entidad a la que identifica no compita con el identificador de otro objeto o programa instalado en el mismo. Esto quiere decir, que una GUID no puede ser escrita de modo arbitrario, siguiendo el modelo canónico. Debe ser generada por una utilidad (algoritmo) que garantice su unicidad. Sería gravísimo crear un componente o una biblioteca y asignar GUIDs arbitrarias a ella y sus entidades integrantes: al distribuirla e instalarla en otros equipos podría provocar efectos inesperados cuando los programas y utilitarios instalados en los mismos traten de hacer referencia a (o cargar) piezas de software cuyos identificadores se solapan. Existen muchas utilidades que permiten generar GUIDs únicos que se ajustan a la forma canónica. Entre otras:</p>
<h4 id="Online_tools" name="Online_tools">Herramientas en línea</h4>
<ul> <li><a class="external" href="http://www.somacon.com/p113.php">Generate GUID Online</a></li> <li><a class="external" href="http://www.famkruithof.net/uuid/uuidgen">UUID (GUID) Generator on the WEB</a></li> <li><a class="external" href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl">UUID Generator for Mozilla Code</a> (tanto en forma IDL como C++.h)</li> <li>Se puede obtener una GUID desde algunos robots de correo (tales como botbot, firebot) el canal IRC <a class="link-irc" href="irc://irc.mozilla.org/firefox">#firefox</a> enviandoles <code>/msg</code>ing "uuid" .</li>
</ul>
<h4 id="Windows" name="Windows">Windows</h4>
<p>Los usuarios de Windows pueden emplear el utilitario <a class="external" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94551F58-484F-4A8C-BB39-ADB270833AFC&amp;displaylang=en">GuidGen</a> de Microsoft para obtener una GUID. (esta utilidad de parte de MS Visual C++)</p>
<h4 id="Linux" name="Linux">Linux</h4>
<p>Usar <code>/usr/bin/uuidgen</code>. Se encuentra en el paquete <code>libuuid1</code> (Debian).</p>
<h4 id="Mac_OS_X">Mac OS X</h4>
<p>Usar <code>/usr/bin/uuidgen</code>.</p>
<h4 id="Perl" name="Perl">Perl</h4>
<p><a class="external" href="http://www.johnkeiser.com/mozilla/mozilla_tools.html">jkeiser's Mozilla tools</a> incluye un generador UUID con salidas en los estilos C++ e IDL.</p>
<h4 id="nsIUUIDGenerator" name="nsIUUIDGenerator">nsIUUIDGenerator</h4>
<p>Se puede generar un identificador UUID desde código, contando con privilegios de ejecución en Mozilla, utilizando los métodos del objeto <code><a href="/en/XPCOM_Interface_Reference/nsIUUIDGenerator" title="en/nsIUUIDGenerator">nsIUUIDGenerator</a></code>. Ver la página enlazada para obtener detalles.</p>
<h3 id="COM.2FXPCOM_format" name="COM.2FXPCOM_format">Formato COM/XPCOM</h3>
<p>Cuando se declaran IIDs y CIDs mediante enunciados  <code>#define</code> en código C++ para Mozilla, suele emplearse el siguiente formato:</p>
<pre class="eval">// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
#define NS_...ID \
{ 0xXXXXXXXX, 0xXXXX, 0xXXXX, \
  { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX } }
</pre>
<p>Para generar código en este formato puede emplearse alguna de las siguientes herramientas.</p>
<h4 id="Online_tools_2" name="Online_tools_2">Utilidades en línea</h4>
<ul> <li><a class=" external" href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl" rel="freelink">http://mozilla.pettay.fi/cgi-bin/mozuuid.pl</a></li>
</ul>
<h4 id="guidgen" name="guidgen">guidgen</h4>
<p><code>guidgen.exe</code>, hace parte de Microsoft Visual Studio, genera UUIDs en este formato.</p>
<div class="note">(N de T. Los dos párrafos siguientes son poco claros en el original - su traducción es difícil ¿alguna sugerencia? - hace falta un texto que los haga más orientadores - no son una buena ayuda)</div>
<h4 id="bash" name="bash">bash</h4>
<p>You can put the following into your <code>.bashrc</code> file:</p>
<pre>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} } }"
}
</pre>
<h4 id="Perl_2" name="Perl_2">Perl</h4>
<pre>#!/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";
</pre>
<p>{{ languages( { "fr": "fr/G\u00e9n\u00e9ration_de_GUID", "ja": "ja/Generating_GUIDs", "pl": "pl/Generowanie_GUID" } ) }}</p>