<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nokrosis &#187; Extensiones Firefox</title>
	<atom:link href="http://nokrosis.com/tag/extensiones-firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://nokrosis.com</link>
	<description>Tecnología, programación, entretenimiento, conocimiento.</description>
	<lastBuildDate>Fri, 07 May 2010 13:11:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Extensiones Firefox: Estableciendo nuestro entorno de desarrollo</title>
		<link>http://nokrosis.com/2009/04/extensiones-firefox-estableciendo-nuestro-entorno-de-desarrollo/</link>
		<comments>http://nokrosis.com/2009/04/extensiones-firefox-estableciendo-nuestro-entorno-de-desarrollo/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 08:57:14 +0000</pubDate>
		<dc:creator>Nokrosis</dc:creator>
				<category><![CDATA[Extensiones para Firefox]]></category>
		<category><![CDATA[Extensiones Firefox]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XUL]]></category>

		<guid isPermaLink="false">http://nokrosis.com/?p=121</guid>
		<description><![CDATA[Este es el primero de una serie de posts con los que aprenderé y compartiré mis avances en la creación de Extensiones para Firefox, espero que sea de ayuda para quienes comienzan iniciándose con su desarrollo. Este tutorial lo realizaré usando Ubuntu 8.10 y Firefox 3.0.8. Para comandos específicos de tu sistema operativo puedes revisar [...]]]></description>
			<content:encoded><![CDATA[<p>Este es el primero de una serie de posts con los que aprenderé y compartiré mis avances en la creación de Extensiones para Firefox, espero que sea de ayuda para quienes comienzan iniciándose con su desarrollo.</p>
<p class="warning">Este tutorial lo realizaré usando Ubuntu 8.10 y Firefox 3.0.8. Para comandos específicos de tu sistema operativo puedes revisar la <a href="https://developer.mozilla.org/en/Setting_up_extension_development_environment" target="_blank">documentación de Mozilla</a></p>
<h2>¿Qué necesito saber?</h2>
<ul>
<li>Javascript</li>
<li>Nociones de XML</li>
<li>Estar familiarizado con la línea de comando</li>
<li>Conocimiento básico de inglés (sobre todo para leer información externa a esta guia)</li>
<li>Sed de aprendizaje</li>
</ul>
<p>En este primer post, realizaremos lo siguiente:</p>
<ul>
<li>Estableceremos un entorno de desarrollo sencillo</li>
<li>Crearemos una pequeña extension de prueba que nos permitirá probar nuestro entorno.</li>
</ul>
<p><span id="more-121"></span></p>
<h2>Estableciendo el entorno de desarrollo sencillo</h2>
<p>Lo primero que debemos hacer es crear un perfil distinto al que usamos en Firefox con la finalidad de que, en caso de ocurrir algún error grave, no dañemos los datos que tenemos guardados en nuestro firefox como Marcadores, Extensiones,Preferencias, etc.</p>
<p>Esto lo conseguimos corriendo Firefox desde la línea de comandos con los siguientes parámetros:</p>
<pre>firefox -no-remote -P dev</pre>
<p>Con esto estamos corriendo Firefox usando el Perfil &#8220;dev&#8221;. Al correrlo por primera vez, se lanzará el Administrador de perfiles de firefox. Pulsaremos el botón &#8220;Create Profile..&#8221; y estableceremos el nombre de nuestro perfil de desarrollo &#8220;dev&#8221;, de esta forma tendremos dos perfiles distintos: default, que es el predeterminado y dev, que será nuestro perfil de desarrollo.</p>
<p><img class="aligncenter size-medium wp-image-124" title="Profile Manager" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-firefox-choose-user-profile-300x193.png" alt="Profile Manager" width="300" height="193" /></p>
<p class="info">Para correr Firefox con este perfil sin usar la línea de comandos, podemos crear un acceso directo o un launcher dependiendo de nuestro sistema operativo.</p>
<p>Una vez iniciado nuestro navegador con el perfil de desarrollo, procedemos a modificar la configuración que nos será útil en el momento del desarrollo. Esto lo realizamos ingresando &#8216;about:config&#8217; en la barra de direcciones. Obtendremos una advertencia. Ya que somos desarrolladores y sabemos lo que hacemos (ajá), aceptamos y prometemos con la mano en el pecho que serémos cuidadosos.</p>
<p style="text-align: center;"><a href="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-aboutconfig-mozilla-firefox.png"><img class="aligncenter size-medium wp-image-126" title="about:config Advertencia" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-aboutconfig-mozilla-firefox-300x260.png" alt="about:config Advertencia" width="300" height="260" /></a></p>
<p style="text-align: left;">Utilizaremos el Filtro para buscar las variables de configuración. En caso de no existir las crearemos con <strong>Click derecho -&gt; Nuevo -&gt; Lógico. </strong>Estas son las variables que modificaremos y el valor que debemos establecerle.</p>
<ul>
<li><strong>javascript.options.showInConsole</strong> = <strong>true</strong>. Guarda los errores en los archivos del chrome en la <a rel="internal" href="https://developer.mozilla.org/en/Error_Console">Consola de errores</a>.</li>
<li><strong>nglayout.debug.disable_xul_cache</strong> = <strong>true</strong>. Deshabilita el cache de XUL de tal forma que los cambios a las ventanas y diálogos no requieren reiniciar.</li>
<li><strong>browser.dom.window.dump.enabled</strong> = <strong>true</strong>. Nos permite usar la sentencia dump() para imprimir en la consola standard. Ver <span class="lang lang-en"><code><a rel="internal" href="https://developer.mozilla.org/en/DOM/window.dump">window.dump</a></code> </span>para mas información.</li>
<li><strong>javascript.options.strict</strong> = <strong>true</strong>. Habilita las advertencias estrictas de JavaScript en la consola de errores.</li>
<li><strong>extensions.logging.enabled</strong> = <strong>true</strong>. Enviará información más detallada acerca de problemas con la instalación y actualización en la Consola de errores.</li>
</ul>
<p>Posteriormente instalaremos alguna extensión que nos ayude en la creación y pruebas de nuestra nueva extensión. Para este tutorial usaré la extensión <a href="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer&#8217;s Extension</a> que es específica para nuestra tarea y es un todo en uno para el desarrollo de extensiones. Si encuentras más útil alguna otra, puedes usarla y si crees que es mejor que ésta, coméntalo y comparte.</p>
<p>Descargamos e instalamos la extensión de la forma clásica presionando el botón verde que dice &#8220;Add to Firefox&#8221; y reiniciamos el navegador. (Automáticamente reiniciará en el perfil de desarrollo). Encontraremos los comandos de la extensión en el menú Herramientas.</p>
<p><img class="aligncenter size-full wp-image-130" title="Extension Developer's Extension" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-extension-developer.png" alt="Extension Developer's Extension" width="557" height="347" /></p>
<p style="text-align: left;">Ahora creamos una carpeta en donde comenzaremos a desarrollar nuestra extensión. Puede ser en cualquier lugar, ya que la extensión que acabamos de instalar nos permite indicarle en qué directorio trabajaremos. Yo específicamente hice una carpeta &#8216;extensiones&#8217; dentro de la que trabajaré todas las extensiones que voy a hacer.</p>
<p style="text-align: left;">Dentro de esta carpeta crearemos nuestra primera extensión que nos servirá de prueba para comenzar nuestro desarrollo. Esta carpeta será llamada &#8216;hola_mundo&#8217;.</p>
<p style="text-align: left;">Una vez creada la carpeta vamos al menú Herramientas -&gt; Extension Developer -&gt; Extension Builder.  En esta ventana comenzaremos a crear nuestra nueva extensión. El primer dato solicitado es &#8220;Working Directory&#8221; que será específicamente la carpeta de nuestra nueva extensión. Notaremos que al seleccionar la carpeta de nuestra extensión (hola_mundo). Se le asignará automáticamente el nombre de la carpeta a nuestra extensión (aunque podremos cambiarlo manualmente).</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-131" title="Extension Builder" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-extension-builder.png" alt="Extension Builder" width="500" height="400" /></p>
<p style="text-align: left;">Una extensión es un archivo empaquetado en un formato zip con una extensión xpi (pronunciada zippy). Dentro de él tendremos la siguiente estructura básica de archivos (extisten más carpetas y compontentes, pero éstos son los mínimos requeridos).</p>
<pre style="text-align: left;">install.rdf
chrome.manifest
chrome\
   content\</pre>
<p>El archivo install.rdf es un archivo xml con una estructura definida que contendrá información acerca de nuestra extensión como el nombre del creador (osea nosotros), la versión de la extensión, las versiones de firefox en donde funciona, etc. Dado que de momento estamos estableciendo el entorno y la extensión de desarrollo nos genera el archivo de una forma más sencilla, aún no ahondaremos en las opciones completas del <a href="https://developer.mozilla.org/en/Install_Manifests" target="_blank">manifiesto de instalación</a>.</p>
<p>El archivo chrome.manifest es otro archivo clave para la extensión, en él registraremos nuestros archivos de la extensión. Así que creamos nuestro archivo de texto chrome.manifest y guardamos lo siguiente en él.</p>
<pre>content hola_mundo chrome/content/
overlay chrome://browser/content/browser.xul chrome://hola_mundo/content/hola_mundo.xul</pre>
<p>De esta manera estamos diciendo a Firefox que registre el contenido &#8220;hola_mundo&#8221; que se encuentra en la ruta (relativa a chrome.manifest), &#8216;chrome/content/&#8217;. No olvides la diagonal al final, ya que de no ser así, el contenido no será registrado. En la línea siguiente registramos una superposición al chrome original del navegador mediante un archivo XUL que crearemos en un momento.</p>
<p>Luego creamos la carpeta &#8216;chrome&#8217; y dentro de ella la carpeta &#8216;content&#8217;. Dentro de ésta última es donde crearemos nuestro archivo XUL.</p>
<p class="info">XUL es una estructura XML que utiliza Firefox para definir y presentar sus elementos en la ventana, e incluso la ventana misma (esto se denomina Chrome). Con un archivo XUL podemos extender y manipular la estructura y disposición de los elementos en la ventana del navegador.</p>
<p class="info">CHROME es el nombre que se le da precisamente a los elementos del navegador que no forman parte del sitio que estamos visitando, como la barra de estado, botones de navegación, etc. No se debe confundir con Google Chrome, ya que precisamente se le dio ese nombre al navegador de manera sarcástica ya que éste carece de CHROME.</p>
<p style="text-align: left;">Creamos un archivo llamado hola_mundo.xul dentro de nuestra carpeta content y le agregamos el siguiente texto:</p>
<pre style="text-align: left; padding-left: 30px;">&lt;?xml version="1.0"?&gt;
&lt;overlay id="hola_mundo"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
&lt;statusbar id="<strong>status-bar</strong>"&gt;
    &lt;statusbarpanel id="mi-panel" label="Hola Mundo !"  /&gt;
&lt;/statusbar&gt;
&lt;/overlay&gt;</pre>
<p>Con este último archivo estamos modificando la estructura básica del navegador. Estamos superponiendo un panel al elemento<strong> status-bar</strong> con el identificador &#8216;mi-panel&#8217; y una etiqueta &#8220;Hola Mundo!&#8221;.</p>
<p>Ahora volvemos a la Herramienta Extension Builder y volvemos a cargar nuestra carpeta &#8220;Hola Mundo&#8221;. Ahora editaremos la información básica de nuestra extensión, presionamos el botón &#8220;Edit install.rdf&#8221; y nos presentará un formulario que llenaremos con la información de nuestra primera extensión.</p>
<p style="text-align: center;"><a href="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-edit-installrdf.png"><img class="aligncenter size-medium wp-image-133" title="Install.rdf" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo-edit-installrdf-174x300.png" alt="Install.rdf" width="174" height="300" /></a></p>
<p>Presionamos &#8220;Save&#8221; (No hay algun aviso explícito de que se haya guardado, así que confiemos en que lo hizo) y presionamos Close para cerrar la ventana.</p>
<p>Ahora, podemos notar que ya está activo el botón &#8220;Build Extension&#8221;, lo presionamos para que nos genere el archivo XPI. Vemos en la barra de estado que aparece la leyenda: Built hola_mundo.xpi</p>
<p>Ahora vamos a nuestra carpeta de la extensión y encontraremos nuestra extensión empaquetada y lista para probar. La abrimos con nuestro Firefox de desarrollo. y la instalamos como cualquier extensión normal. Nos pedirá reiniciar Firefox.</p>
<p>Al reiniciarse veremos que nuestra extensión ¡ya está corriendo en Firefox !. En la barra de estado en la esquina inferior derecha observaremos nuestra superposición &#8220;Hola Mundo!&#8221;. Felicidades !! acabamos de dar el primer paso en la creación de extensiones.</p>
<p><img class="aligncenter size-full wp-image-134" title="Hola Mundo" src="http://nokrosis.com/wp-content/uploads/2009/04/pantallazo.png" alt="Hola Mundo" width="342" height="255" /></p>
<p>Más adelante veremos tareas más avanzadas y cómo podemos ayudarnos con la extensión para desarrolladores de extensiones que instalamos en nuestro Firefox de desarrollo.</p>
<p>Espero tus comentarios, trackbacks, dudas y sugerencias.</p>
]]></content:encoded>
			<wfw:commentRss>http://nokrosis.com/2009/04/extensiones-firefox-estableciendo-nuestro-entorno-de-desarrollo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
