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

<channel>
	<title>Maestros del Web &#187; Javier Perez</title>
	<atom:link href="http://www.maestrosdelweb.com/author/javier-perez/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maestrosdelweb.com</link>
	<description>Un espacio para los entusiastas del web</description>
	<pubDate>Fri, 21 Nov 2008 02:02:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>10 funciones imprescindibles en Javascript</title>
		<link>http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/</link>
		<comments>http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 07:00:14 +0000</pubDate>
		<dc:creator>Javier Perez</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/</guid>
		<description><![CDATA[En la era de la información y en la denominada Web 2.0 no es posible sobrevivir sin tener un buen nivel de Javascript. En estos pequeños 10 puntos trataré de enriquecer un poco más la capacidad del lector, detallando algunos de las funciones/métodos más importantes de Javascript, junto con ejemplos prácticos. 
Javascript es un leguaje [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">En la era de la información y en la denominada <a href="http://www.maestrosdelweb.com/editorial/web2/">Web 2.0</a> no es posible sobrevivir sin tener un buen nivel de Javascript. En estos pequeños 10 puntos trataré de enriquecer un poco más la capacidad del lector, detallando algunos de las funciones/métodos más importantes de Javascript, junto con ejemplos prácticos. </span><span id="more-2828"></span></p>
<p>Javascript es un leguaje de scripting interpretado orientado a pseudo-objetos, esto es, que no existe herencia, aunque se puede conseguir clonando una clase y añadiendo más métodos o propiedades. Casi todos los navegadores existentes pueden interpretar Javascript, ya que es de hecho un estándar: <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript</a> (ECMA = European Computer Manufacturers Association). </p>
<p>Pero sólo con el lenguaje JavaScript no podremos hacer nada en una página web. También necesitaremos el <a href="http://www.maestrosdelweb.com/editorial/dom/">DOM</a> (Document Object Model). El DOM es una estructura de objetos que representa absolutamente todos los elementos que componen una web, y mediante él conseguiremos acceder a información de la página web, añadir nuevos elementos, o modificarlos. </p>
<p>Todos estos métodos pertenecen a objetos del DOM: <a href="http://developer.mozilla.org/en/docs/DOM:window">window</a>, <a href="http://developer.mozilla.org/en/docs/DOM:document">document</a> , y <a href="http://developer.mozilla.org/en/docs/DOM:element">element</a>. </p>
<h3>Función1: getElementById()</h3>
<h4>Uso:<code> var elemento = document.getElementById(id)</code>; </h4>
<p>Este método pertenece al objeto document. Con él obtendremos el objeto que hace referencia al elemento con un id concreto. Por ejemplo, queremos obtener el objeto del elemento “<code>status</code>”: </p>
<div class="codigo">
<pre>&lt;div&gt;
      &lt;span id=”status”&gt;Hola mundo...&lt;/span&gt;
&lt;/div&gt;
&lt;script type=”text/javascript”&gt;
// Obtenemos el elemento “status”
var el = document.getElementById(“status”);
// Mostramos mediante una alerta el contenido del elemento
alert(el.innerHTML);
&lt;/script&gt;</pre>
</div>
<h3>Función 2: getElementsByTagName()</h3>
<h4>Uso:<code>var array_elementos= elemento.getElementsByTagName(tag);</code> </h4>
<p>Sirve para obtener un array con todos los elementos con un tag concreto que están contenidos dentro de un elemento. Veamos una ejemplo. Queremos cambiar el color del texto de todos los elementos con tag “A” contenidos dentro del elemento con id “links”: </p>
<div class="codigo">
<pre>&lt;a href=”/”&gt;Home&lt;/a&gt;
&lt;div id=”links”&gt;
      &lt;a href=”http://google.com”&gt;Google&lt;/a&gt;
      &lt;a href=”http://ubuntu.com”&gt;Ubuntu&lt;/a&gt;
      &lt;a href=”http://debian.org”&gt;Debian&lt;/a&gt;
&lt;/div&gt;
&lt;script type=”text/javascript”&gt;
// Obtenemos el elemento con id “links”
var el = document.getElementById(“links”);
// Ahora obtenemos todos los elementos con tag A que hay
// dentro del elemento 'el'
var as = el.getElementsByTagName(“A”);
// Y finalmente recorremos el array de elementos para
// cambiarles el color a cada uno
for (var i=0; i&lt;as.length; i++) {
      as[i].style.color = '#000'; // negro
}
&lt;/script&gt;</pre>
</div>
<h3>Función3: join()</h3>
<h4>Uso: var string = array.join(string); </h4>
<p>El método <code>join()</code> pertenece al objeto Array (todos los arrays en JavaScript son un objeto Array), y nos servirá para unir todos los elementos de un array para forma una cadena de texto. Es el equivalente en PHP a implode(). Ejemplo: Queremos unir todos los nombres de un array mediante comas: </p>
<div class="codigo">
<pre>// Creamos el array de nombres
var nombres = ['Luis','Javier','Sancho','Roberto','Rafael','Manuel'];
// Unimos todos los elementos separándolos por comas
var juntos = nombres.join(“, “);
// Y lo mostramos
alert(juntos); </pre>
</div>
<h3>Función4: split()</h3>
<h4>Uso:var array = string.split(string); </h4>
<p>Al igual que join(), split() también es un método del objeto Array, aunque sirve exactamente para lo contrario: dividir una cadena de texto en un array. Siguiendo con el ejemplo anterior: </p>
<div class="codigo">
<pre>
var juntos = “Luis, Javier, Sancho, Roberto”;
var nombres = juntos.split(“, “);
for (var i=0; i<nombres.length; i++) alert(nombres[i]); </pre>
</div>
<p><strong>Truco:</strong> Usados ambos métodos conjuntamente podremos crear una función para sustituir un texto por otro en una cadena dada: </p>
<div class="codigo">
<pre>function str_replace(cadena, cambia_esto, por_esto) {
      return cadena.split(cambia_esto).join(por_esto);
}
alert(str_replace('Hola mundo!','mundo','world')); </pre>
</div>
<h3>Función5: addEventListener() / attachEvent()</h3>
<h4>Uso: Internet Explorer: elemento.attachEvent(“on”+evento, funcion);<br />
Resto de navegadores: elemento.addEventListener(evento, funcion, false); </h4>
<p>Ambos métodos hacen exactamente lo mismo, sólo que, como ocurre en otros cientos de ocasiones, <a href="http://www.maestrosdelweb.com/editorial/microsoft/">Microsoft</a> usa su propia implementación del DOM. Con este método añadiremos eventos a cualquier elemento de la página web, tal como onclick, onmouseover, onmouseout, etc. </p>
<p>Veamos un ejemplo. Crearemos una función para la abstracción de navegadores, es decir, para que funcione tanto en IE como en <a href="http://www.maestrosdelweb.com/editorial/firefox/">Firefox</a> o cualquier otro navegador; y después añadiremos el evento onclick a varios elementos DIV para que muestre su contenido mediante una alerta al hacer clic sobre ellos. </p>
<div class="codigo">
<pre>&lt;div id=”frases”&gt;
      &lt;div&gt;Hola mundo!&lt;/div&gt;
      &lt;div&gt;Foo bar&lt;/div&gt;
      &lt;div&gt;Lorem Ipsum&lt;/div&gt;
&lt;/div&gt;
&lt;script type=”text/javascript”&gt;
// Creamos la funcion para añadir eventos
function nuevo_evento(elemento, evento, funcion) {
      if (elemento.addEventListener) {
            elemento.addEventListener(evento, function, false);
      } else {
            elemento.attachEvent(“on”+evento, function);
      }
}
// Obtenemos los elementos DIV a los que queremos añadir nuestro evento onclick
var divs = document.getElementById(“frases”).getElementsByTagName(“DIV”);
// Recorremos todos los divs
for (var i=0; i&lt;divs.length; i++) {
      // Añadimos el evento onclick al div
      nuevo_evento(divs[i], “click”, function(){
            // Hacemos que muestre el contenido del DIV
           alert(this.innerHTML);
      });
}
&lt;/script&gt;</pre>
</div>
<p>Cuando hagamos clic en uno de los DIV, se nos mostrará una ventana de alerta con su contenido. </p>
<h3>Función6: focus()</h3>
<h4>Uso: elemento.focus(); </h4>
<p>Con este método conseguiremos pasar el foco a un elemento de un formulario. Ejemplo:</p>
<div class="codigo">
<pre>form&gt;
      &lt;input type=”text” id=”nombre” value=”Javier” /&gt;
      &lt;input type=”text” id=”apellidos” value=”Perez” /&gt;
&lt;/form&gt;
&lt;a href=”#” onclick=”document.getElementById(“nombre”).focus()”&gt;Nombre&lt;/a&gt;
&lt;a href=”#” onclick=”document.getElementById(“apellidos”).focus()”&gt;Apellidos&lt;/a&gt; </pre>
</div>
<h3>Función7: createElement() / appendChild()</h3>
<h4>Uso: var elemento = document.createElement(tag);</h4>
<p>Con éste método del objeto document crearíamos un nuevo elemento con un tag determinado. Ejemplo: <code>var div = document.createElement('DIV');</code></p>
<h4>Uso: elemento1.appendChild(elemento2);</h4>
<p>Con este método añadiremos el elemento “<code>elemento2</code>” a “<code>elemento1</code>”. En el siguiente ejemplo, añadiremos elementos a una lista de forma dinámica: </p>
<div class="codigo">
<pre>&lt;input type=”text” id=”texto” /&gt;
&lt;input type=”button” value=”Crear” onclick=”crear()” /&gt;
&lt;ul id=”lista”&gt;&lt;/ul&gt;
&lt;script type=”text/javascript”&gt;
function crear() {
      // Obtenemos el valor entrado en la caja de texto
      var valor = document.getElementById(“texto”).value;
      // Creamos un nuevo elemento LI
      var li = document.createElement(“LI”);
      // Añadimos el valor introducido al nuevo elemento
      li.innerHTML = valor;
      // Añadimos el elemento LI a la lista UL
      var ul = document.getElementById(“UL”);
      ul.appendChild(li);
      // Vaciamos la caja de texto
      document.getElementById(“texto”).value = “”;
}
&lt;/script&gt; </pre>
</div>
<h3>Función8: removeChild()</h3>
<h4>Uso: elemento.removeChild(hijo);</h4>
<p>Este método es el usado para eliminar elementos. Se elimina el elemento hijo del objeto. Si queremos eliminar un objeto concreto, tendremos que hacerlo de la siguiente manera: </p>
<div class="codigo">
<pre>
// Obtenemos el elemento
var el = document.getElementById(“elemento-a-eliminar”);
// Obtenemos el padre de dicho elemento
// con la propiedad “parentNode”
var padre = el.parentNode;
// Eliminamos el hijo (el) del elemento padre
padre.removeChild(el);
</pre>
</div>
<h3>Función9: setTimeout() / setInterval()</h3>
<h4>Uso:var temporizador = setTimeout(funcion, milisegundos);<br />
var intervalo = setInterval(funcion, milisegundos); </h4>
<p>Ambos métodos (objeto window) nos sirven para ejecutar código javascript cada x milisegundos, bien para que se ejecute una sóla vez (setTimeout) o bien para que se ejecute ilimitadamente (setInterval).  Ambos se pueden cancelar mediante clearTimeout(temporizador) y clearInterval(intervalo). Veamos un ejemplo, donde se muestra la hora y fecha del sistema cada segundo en un DIV:</p>
<div class="codigo">
<pre>&lt;div id=”fecha”&gt;&lt;/div&gt;
&lt;script type=”text/javascript”&gt;
      setInterval(function(){
            document.getElementById(“fecha”).innerHTML = new Date();
      },1000);
&lt;/script&gt; </pre>
</div>
<h3>Función10: alert() / confirm() / prompt()</h3>
<h4>Uso: alert(mensaje);<br />
var resultado = confirm(mensaje);<br />
var resultado = prompt(mensaje, valor); </h4>
<p>Con estos métodos (objeto window) mostraremos ventanas modales al usuario. Con <code>alert()</code> simplemente, como hemos visto en otros puntos, mostraremos un mensaje. Con <code>confirm()</code> haremos exactamente lo mismo, pero además obligará al usuario a seleccionar entre dos opciones, una positiva y otra negativa, que se devolverá como parámetro (boolean). Y con <code>prompt() </code>pediremos al usuario que introduzca un texto en una ventana modal. Veamoslo con un ejemplo:</p>
<div class="codigo">
<pre>// Pedimos al usuario que introduzca su nombre
var nombre = prompt(“Introduzca su nombre”);
// Pedimos confirmación
if (confirm(“¿Seguro que su nombre es ”+nombre+”?”)) {
      // Respuesta afirmativa...
      alert(“Hola ”+nombre);
}</pre>
</div>
<p><code>confirm()</code> es muy útil para confirmar clics en enlaces comprometidos, que hagan operaciones críticas como eliminación de datos. </p>
<div class="codigo">
<pre>&lt;a href=”http://miweb.com/delete/record?id=123” onclick=”return confirm('¿Está seguro?');”&gt;Eliminar registro&lt;/a&gt;</pre>
</div>
<p>Existen muchos más métodos a nuestra disposición, aunque hay que tener en cuenta que Internet Explorer no cumple el estándar ECMAScript/DOM (entre otros tantos estándares web), y puede que un método no funcione igual en IE que en Firefox o Safari. </p>
<p>Aprenderse el <a href="http://www.maestrosdelweb.com/editorial/dom/">DOM</a> es fundamental para poder llegar a ser un buen profesional, pero por suerte para nosotros existen librerías Javascript que nos harán la vida mucho más fácil, como <a href="http://jquery.com/">jQuery</a>, la sensación del momento entre los programadores Javascript.  </p>
<h3>Referencia</h3>
<ul>
<li><a href="http://developer.mozilla.org/en/docs/Gecko_DOM_Reference">Manual de referencia del DOM de Gecko</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Herramientas adecuadas para el diseño y desarrollo de un sitio web</title>
		<link>http://www.maestrosdelweb.com/editorial/herramientas-adecuadas-para-el-diseno-y-desarrollo-de-un-sitio-web/</link>
		<comments>http://www.maestrosdelweb.com/editorial/herramientas-adecuadas-para-el-diseno-y-desarrollo-de-un-sitio-web/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 07:00:49 +0000</pubDate>
		<dc:creator>Javier Perez</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Software Libre]]></category>

		<category><![CDATA[Software Propietario]]></category>

		<guid isPermaLink="false">http://www.maestrosdelweb.com/editorial/herramientas-adecuadas-para-el-diseno-y-desarrollo-de-un-sitio-web/</guid>
		<description><![CDATA[Las fases de un desarrollo web, así como los lenguajes de programación usados, son muy extensas y variadas, y por ello necesitamos herramientas específicas para cada una de ellas. Conoceremos a continuación las principales herramientas existentes para poder desarrollar fácilmente un proyecto web.
En el desarrollo web tenemos unas herramientas para el diseño, otras para la [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Las fases de un desarrollo web, así como los lenguajes de programación usados, son muy extensas y variadas, y por ello necesitamos herramientas específicas para cada una de ellas. Conoceremos a continuación las principales herramientas existentes para poder desarrollar fácilmente un proyecto web.</span><span id="more-2712"></span></p>
<p>En el desarrollo web tenemos unas herramientas para el diseño, otras para la maquetación, otras para la programación, y para la depuración. Todas las herramientas que usemos son muy importantes, desde el Sistema Operativo hasta el comando más insignificante, y por ello debemos elegir la más adecuada a nuestras necesidades y capacidades. </p>
<h3>Sistema Operativo </h3>
<p><img src='http://www.maestrosdelweb.com/images/web_sistemasoperativos.jpg' alt='web_sistemasoperativos.jpg' style="float:right;padding:5px" />Para desarrollar una web, lo primero que necesitamos es un Sistema Operativo, como es lógico, y su elección no es tan trivial. Hay que tener en cuenta las aplicaciones de las que dispone el Sistema Operativo y sus costes. </p>
<p>Por ejemplo, tenemos <a href="http://www.maestrosdelweb.com/editorial/microsoft/">Microsoft Windows</a>, cuyas aplicaciones son muy caras, como <a href="http://www.maestrosdelweb.com/editorial/adobehistoria/">Photoshop</a>, Dreamweaver, Fireworks, ASP .NET&#8230; Y por otro lado tenemos <a href="http://www.maestrosdelweb.com/editorial/linux/">GNU/Linux</a>, con <a href="http://www.maestrosdelweb.com/editorial/gimp/">GIMP</a>, Inkscape, Amaya, Aptana, <a href="http://www.maestrosdelweb.com/editorial/phpintro/">PHP</a> (aunque todos ellos también están disponibles en <a href="http://www.maestrosdelweb.com/principiantes/historia-de-windows/">Windows</a>).</p>
<p>Otra característica a tener en cuenta es las facilidades que el Sistema Operativo aporta al desarrollador, y en este sentido GNU/Linux se lleva de calle a Windows. Y esto es porque Windows no fue diseñado para los desarrolladores, sino para personas que no tienen muchos conocimientos sobre informática. </p>
<p>Y por el contrario GNU/Linux fue creado por desarrolladores, y para desarrolladores; y por lo tanto en GNU/Linux podemos encontrar infinidad de herramientas que nos harán la vida mucho más fácil, que además son libres. </p>
<h3>Fases de desarrollo de una web </h3>
<p>Para elegir las herramientas a utilizar, antes debemos identificar las fases del proceso que forman el ciclo de vida de un desarrollo web.</p>
<ul>
<li>
<h4>Diseño:</h4>
<p> el diseño consiste en crear esbozos de la web final mediante una herramienta gráfica, como Photoshop, GIMP o Inkscape.</li>
<li>
<h4>Maquetación HTML/CSS:</h4>
<p> la maquetación consiste en convertir los esbozos creados en la fase anterior en plantillas <a href="http://www.maestrosdelweb.com/editorial/htmlhis/">HTML</a>, su respectiva hoja de estilos, y las imágenes usadas. Es posible saltarse la fase anterior para comenzar directamente con esta fase, dependiendo de si dominamos herramientas como Photoshop o no.</li>
<li>
<h4>Programación cliente:</h4>
<p> la programación cliente consiste básicamente en Javascript. Una web puede no tener necesidad de hacer programación cliente, como puede ser una pequeña web corporativa con poca información estática, o puede que requiera enormes esfuerzos en esta fase, como ocurre con los proyectos <a href="http://www.maestrosdelweb.com/editorial/web2/">Web 2.0</a>.</li>
<li>
<h4>Programación servidor:</h4>
<p> en esta fase, que se desarrolla junto con la anterior, crearemos la aplicación web en un lenguaje de servidor, como puede ser PHP, ASP .NET, Python, Perl, etc.</li>
<li>
<h4>Depuración:</h4>
<p> esta fase enlaza la anterior con la siguiente, y es donde haremos las pruebas unitarias, aserciones, trazas, etc.</li>
<li>
<h4>Pruebas en local:</h4>
<p> en nuestro servidor local haremos todas las pruebas posibles.</li>
<li>
<h4>Subir ficheros al hosting:</h4>
<p> una vez nuestra web esté completada y bien testeada en nuestro servidor local (desarrollo), la subiremos al servidor del hosting elegido (producción). Dependiendo del hosting, podremos usar FTP, SFTP (SSH), WebDAV, o incluso <a href="http://subversion.tigris.org/ ">Subversion</a>. Yo aconsejo usar Subversion si así lo permite el servidor, por su comodidad y rapidez, además de por su principal utilidad, que es la de control de versiones.</li>
<li>
<h4>Pruebas en hosting:</h4>
<p> realizaremos las últimas pruebas en el servidor del hosting para comprobar que el cambio de servidor no ha afectado a nada. Para evitar problemas, nuestro servidor local debe tener exactamente la misma configuración que el servidor del hosting.</li>
</ul>
<h3>Herramientas: desarrollo en PHP</h3>
<p>A continuación enumeraré las herramientas básicas para el desarrollo de una web en PHP, en sus diferentes fases de diseño e implementación.</p>
<h3>Fases: diseño y maquetación</h3>
<ul>
<li><a href="http://www.adobe.com/es/products/photoshop/photoshop/">Adobe Photoshop:</a>Esta aplicación sólo está disponible en Windows, y es el más caro, aunque es el más usado y gracias a ello dispone de una gran comunidad de usuarios con los que poder contar ante cualquier problema. Con él crearemos el diseño, así como las imágenes que usemos en la maquetación.</li>
<li><a href="http://www.gimp.org/">GIMP:</a> Es el equivalente de software libre más próximo a Photoshop. Al ser libre es posible conseguirlo gratuitamente, y de hecho cualquier distribución GNU/Linux lo incluye. Al igual que en Photoshop, con él podremos crear el diseño y las imágenes de la maquetación HTML. También disponible en Windows </li>
</ul>
<h3>Fase: maquetación</h3>
<ul>
<li><a href="http://www.inkscape.org/">Inkscape:</a> El equivalente en Windows es Adobe Fireworks. Es un excelente editor gráfico vectorial con el que poder crear iconos, banners, y demás dibujos de forma muy fácil y sencilla, incluso para aquellos que no tengan demasiados conocimientos en edición gráfica digital. </li>
<li><a href="http://www.adobe.com/es/products/fireworks/">Adobe Fireworks:</a> El editor de gráficos vectoriales más fácil de usar que he tenido la oportunidad de usar, aunque no lo eché de menos cuando descubrí Inkscape. Al igual que su compañero Photoshop es muy caro, y más aún si tenemos una gran alternativa gratuita como es Inkscape.</li>
</ul>
<h3>Fases: maquetación, programación cliente</h3>
<ul>
<li><a href="http://www.maestrosdelweb.com/editorial/conociendo-los-principales-editores-de-paginas-web-del-mercado/">Dreamweaver, Aptana, Amaya:</a> Estas herramientas las describí en mi anterior artículo sobre los principales editores web del mercado, así que os remito a él para más información. Con ellos crearemos el código HTML/<a href="http://www.maestrosdelweb.com/editorial/introcss/">CSS </a>(maquetación), siendo Aptana la opción más profesional para la programación cliente (Javascript).
</ul>
<h3>Fase: programación servidor</h3>
<ul>
<li><a href="http://www.zend.com/products/zend_studio">Zend Studio:</a> Sin duda el mejor IDE existente en el mercado para desarrollo web con PHP. Es comercial, aunque no demasiado caro teniendo en cuenta la excelente herramienta que es. Además es posible descargarlo desde la web de Zend para probarlo durante 30 días.
<p>Con él crearemos fácilmente la aplicación web en PHP. Aunque podremos usar igualmente cualquier editor. Una muy buena alternativa es <a href="http://sourceforge.net/projects/phpeclipse/">Eclipse</a> con el plugin PHP.  </p>
<p>Otra aplicación muy útil que está muy ligada a Zend Studio es <a href="http://www.zend.com/products/zend_platform ">Zend Platform</a>, un módulo para Apache que permite depurar una web directamente en el navegador (Internet Explorer o <a href="http://www.maestrosdelweb.com/editorial/firefox/">Firefox</a>), además de otras funciones más complejas, como alertas configurables para que nos envíe un email por cada error ocurrido en la web, o cuando un script sobrepase un tiempo determinado de ejecución, por ejemplo.
</ul>
<h3>Fase: prueba local</h3>
<ul>
<li><a href="http://httpd.apache.org/">Apache</a> Instalar un servidor web Apache en la máquina donde desarrollamos es fundamental. De esta manera haremos pruebas rápidamente: editamos un fichero PHP, vamos al navegador, actualizamos, y vemos los cambios.</li>
</ul>
<h3>Fases: pruebas en local, depuración</h3>
<ul>
<li><a href="https://addons.mozilla.org/es-ES/firefox/addon/60">Firefox</a> / <a href="http://getfirebug.com/">Firebug / Web Developer Extension:</a> Firefox es sin duda la mejor herramienta creada en los últimos tiempos para los desarrolladores web, y con Firefox sus dos extensiones más útiles para nuestra profesión: <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> y <a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web Developer</a>.
<p>Con Firebug podremos depurar Javascript, editar HTML y CSS en la misma página para ver los cambios en tiempo real, consultar los tiempos de carga de la página en conjunto, de las imágenes, javascripts, hojas de estilo, etc, así como sus tamaños, etc. Y Web Developer nos ofrece herramientas muy útiles como ver las cookies de la web, ocultar imágenes, cambiar el tamaño del navegador a resoluciones estándar, etc.</li>
</ul>
<h3>Subir ficheros al servidor del hosting </h3>
<p>Una vez hayamos concluido todas las fases anteriores, y nuestro proyecto esté listo, deberemos subirlo al servidor del hosting. </p>
<p>La herramienta a utilizar dependerá de las opciones que nos ofrezca el hosting, que desgraciadamente en la mayoría de los casos es solamente el antiguo FTP. En Dreamweaver y Zend Studio tenemos un cliente FTP y SFTP (SSH), y la tarea consistirá simplemente en configurar el FTP y copiar y pegar los directorios que queramos subir. </p>
<p>Confío en que esta guía sirva de ayuda a la hora de afrontar un desarrollo web. Hay que tener muy en cuenta las fases de desarrollo y usar las herramientas adecuadas: la que nos resulte más fácil de usar, la más económica, la que mejor conozcamos, etc. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/herramientas-adecuadas-para-el-diseno-y-desarrollo-de-un-sitio-web/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conociendo los principales editores de páginas web del mercado</title>
		<link>http://www.maestrosdelweb.com/editorial/conociendo-los-principales-editores-de-paginas-web-del-mercado/</link>
		<comments>http://www.maestrosdelweb.com/editorial/conociendo-los-principales-editores-de-paginas-web-del-mercado/#comments</comments>
		<pubDate>Tue, 22 May 2007 07:00:00 +0000</pubDate>
		<dc:creator>Javier Perez</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Software Libre]]></category>

		<category><![CDATA[Software Propietario]]></category>

		<guid isPermaLink="false">http://www.maestrosdelweb.com/editorial/conociendo-los-principales-editores-de-paginas-web-del-mercado/</guid>
		<description><![CDATA[El desarrollo web es quizás la rama informática que aglutina más lenguajes (HTML, CSS, Javascript, PHP, Java) distintos que deben interaccionar entre sí, y por ello necesitamos un editor web que nos facilite nuestro arduo trabajo.
Son muchos los editores web existentes en el mercado (Dreamweaver, Front Page, CoffeCup HTML Editor, Homesite) cada uno con sus [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">El desarrollo web es quizás la rama informática que aglutina más lenguajes (HTML, CSS, Javascript, PHP, Java) distintos que deben interaccionar entre sí, y por ello necesitamos un editor web que nos facilite nuestro arduo trabajo.</span><span id="more-2638"></span></p>
<p>Son muchos los editores web existentes en el mercado (Dreamweaver, Front Page, CoffeCup HTML Editor, Homesite) cada uno con sus propias peculiaridades, aunque en realidad no son muy distintos unos de otros.</p>
<p>Las características principales que observamos en todos ellos son edición WYSIWYG, cliente FTP, control de versiones, autocompletado de código, resaltado de sintaxis, soporte de lenguajes de servidor, depuración, documentación en línea. </p>
<p>Y cada uno de nosotros le dará más valor a unas u otras dependiendo del entorno en el que trabaje y el trabajo específico que realice. Por ejemplo, un desarrollador novel encontrará muy útil la edición WYSIWYG, pero no así un desarrollador más experimentado, que rara vez lo utilizará.</p>
<h3>Primeros editores</h3>
<p><img src='http://www.maestrosdelweb.com/images/editor_cofee.jpg' alt='editor_cofee.jpg' style="float:right;padding:5px" />Desde <a href="http://www.coffeecup.com/html-editor/ ">CoffeeCup HTML Editor</a>, el primer editor HTML del mercado allá por 1994, mucho ha crecido la web, y con ella los editores web. </p>
<p>En aquella época las webs eran muy sencillas, construidas básicamente con HTML, y se podían crear usando cualquier editor de texto, como el Bloc de Notas, o el <a href="http://es.wikipedia.org/wiki/Vi">Vi</a>. Eran tiempos de frames, imágenes animadas horribles, y sin ningún tipo de diseño.</p>
<p>Hoy día no sólo se usa <a href="http://www.maestrosdelweb.com/editorial/htmlhis/">HTML</a> para crear una web, que incluso se usa una variante de éste, <a href="http://www.maestrosdelweb.com/editorial/haciaxhtml/">XHTML</a> . Ahora tienen la misma importancia (X)HTML, <a href="http://www.maestrosdelweb.com/editorial/introcss/">CSS</a>, Javascript/ECMAScript, o lenguajes de servidor como <a href="http://www.maestrosdelweb.com/editorial/phpintro/">PHP</a>, Java o .NET/ASP. Aún es posible crear una web con Bloc de Notas o vi, pero, a riesgo de ser un poco menos geek, los principales editores web del mercado nos harán la vida mucho más fácil.</p>
<p>Como en cualquier aspecto de la informática, no existe una única aplicación que sirva para todo, y el amplio mundo del desarrollo web no es una excepción. Cada cual utilizará la aplicación que mejor se adapte a sus necesidades. Hay que tener en cuenta si se necesita control de versiones (CVS, Subversion), cliente FTP o WebDAV, documentación en línea, lenguajes soportados, autocompletado de código, <a href="http://es.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a> (What You See Is What You Get), depuración de código, etc.</p>
<p>Pero una herramienta común para todos los desarrolladores web, es sin duda alguna <a href="http://www.maestrosdelweb.com/editorial/firefox/">Firefox</a>. Depurar una página web nunca fue tan fácil y rápido, gracias a las extensiones de las que disponemos, como Web Developer o <a href="http://getfirebug.com/">Firebug</a>. </p>
<p>Con ésta última podremos modificar por completo una página web, conviertiéndose así en un WYSIWYG imprescindible, además de un inmejorable inspector del <a href="http://www.maestrosdelweb.com/editorial/dom/">DOM</a>, y un maravilloso depurador Javascript. Pero desgraciadamente no debemos olvidar que nuestra web también debe visualizarse correctamente en Internet Explorer, donde la depuración de nuestras webs es mucho más tediosa.</p>
<h3>Editores Windows</h3>
<h3>CoffeeCup HTML Editor:</h3>
<p>Las principales características del <a href="http://www.coffeecup.com/html-editor/">CoffeeCup HTML Editor</a> son sus asistentes (inserción de imágenes, enlaces, menús DHTML, etc.) tratando a los elementos HTML como objetos con sus propiedades, resaltado de sintaxis (HTML, CSS, PHP, ASP&#8230;), editor de múltiples ficheros, cliente FTP, editor visual drag&#038;drop (WYSIWYG), y poco más. Ha quedado un tanto desfasado, aunque sigue siendo muy válido como editor HTML.</p>
<h3>Adobe Dreamweaver: </h3>
<p><img src='http://www.maestrosdelweb.com/images/editor_dreaweaver.jpg' alt='editor_dreaweaver.jpg' style="float:right;padding:5px" />Muchos hemos aprendido HTML y CSS gracias al producto de Macromedia <a href="http://www.adobe.com/products/dreamweaver/">Dreamweaver</a> (ahora propiedad de Adobe). Es muy similar a CoffeeCup aunque con mayores prestaciones, aunque también es mucho más caro. </p>
<p>En la última versión (CS3) dispone de un muy mejorado soporte de CSS, que junto a su funcionalidad de autocompletado de atributos CSS (ideal para los que empiezan) lo convierte quizás en uno de los editores más cómodos para trabajar con CSS, y por ello quizás también sea el más usado por los diseñadores web.</p>
<p>Al igual que CoffeeCup, sus asistentes harán las delicias de los más novatos, aunque de poca utilidad para los más avanzados. Incluye lo que han llamado Spry, una librería de widgets y efectos mediante Javascript, que en mi opinión ha llegado demasiado tarde y mal, puesto que existen fabulosas librerías de widgets/efectos, como <a href="http://dojotoolkit.org/ ">Dojo Toolkit</a>, <a href="http://jquery.com/ ">jQuery</a>, <a href="http://script.aculo.us/">script.aculo.us</a>, etc. Podrían haber creado asistentes para usar dichas librerías, pero han preferido usar las suyas propias.</p>
<h3>Linux / Multiplataforma</h3>
<h3>Amaya:</h3>
<p><img src='http://www.maestrosdelweb.com/images/edotor_amaya.jpg' alt='edotor_amaya.jpg' style="float:right;padding:5px" /><a href="http://www.w3.org/Amaya/">Amaya</a> es más una curiosidad que una herramienta popular. Está desarrollado por la <a href="http://www.w3.org/ ">W3C</a> (World Wide Web Consortium), la asociación que se encarga de construir los estándares web. </p>
<p>Es un navegador y un editor web, cuya peculiaridad es que permite editar directamente cualquier página web que se visualice, y que permite editar SVG y MathML, para codificar e integrar junto con HTML. Es bastante espartano y carece de asistentes, pero sus modos de vistas pueden resultar muy interesantes.</p>
<h3>Aptana:</h3>
<p><img src='http://www.maestrosdelweb.com/images/editor_aptana.jpg' alt='editor_aptana.jpg' style="float:right;padding:5px" /><a href="http://www.aptana.com/">Este editor</a> está basado en <a href="http://www.eclipse.org/ ">Eclipse</a>, e incluso puede usarse como plugin en éste. Su asistente de código (HTML, CSS y Javascript) es único, mostrando documentación en línea de todos y cada uno de los elementos, como en qué navegadores está soportada una función de Javascript o un atributo CSS. </p>
<p>Además muestra información en línea sobre las funciones Javascript propias. Viene con cliente FTP y depurador de Javascript. Pero lo mejor es verlo en <a href="http://www.aptana.tv/">funcionamiento </a>.Es el editor web más completo del mercado y además es libre (gratuito y con código fuente abierto).</p>
<h3>Zend Studio:</h3>
<p><img src='http://www.maestrosdelweb.com/images/editor_zend.gif' alt='editor_zend.gif' style="float:right;padding:5px" />Más que un editor web, <a href="http://www.zend.com/products/zend_studio">Zen Studio</a> es todo un entorno de desarrollo para PHP. Tiene autocompletado de código HTML (no para Javascript y CSS) además de para PHP, y no es posible editar en modo WYSIWYG, aunque el resaltado de sintaxis les podría valer a los desarrolladores más expertos. </p>
<p>Su punto fuerte está en su editor y depurador PHP, que a día de hoy no existe nada mejor. Su soporte para gestionar bases de datos (<a href="http://www.maestrosdelweb.com/editorial/phpforo/">MySQL</a>, MS SQL Server, Oracle, PostgreSQL, &#8230;), cliente FTP, y soporte de control de versiones integrado (CVS y Subversion), lo convierte en el mejor entorno de desarrollo web para PHP existente.</p>
<h3>En conclusión</h3>
<p>A pesar de la extensa variedad de productos que existen, sólo unos pocos son los más usados, y a pesar de ello aún queda mucho por hacer, y no existe el editor perfecto. WYSIWYG está bien para hacer una maqueta inicial, para aprender HTML y CSS, y poco más. Y es que nada se ha avanzado con este sistema de edición en toda una década, y los profesionales experimentados ni siquiera lo usan.</p>
<p>Aptana es por contra el editor más innovador, y aún le queda mucho por decir en ese sentido. Quizás el próximo paso sea el soporte para arquitectura MVC con lenguajes de servidor (edición de vistas, RAD , etc.), arquitectura que es casi un estándar en desarrollo web, y que sin embargo no disponemos de un editor que lo soporte.</p>
<h3>Lecturas de referencia</h3>
<ul>
<li><a href="http://en.wikipedia.org/wiki/HTML_editor">HTML Editor en Wikipedia (inglés)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/conociendo-los-principales-editores-de-paginas-web-del-mercado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>¿Qué es Smarty?</title>
		<link>http://www.maestrosdelweb.com/editorial/que-es-smarty/</link>
		<comments>http://www.maestrosdelweb.com/editorial/que-es-smarty/#comments</comments>
		<pubDate>Thu, 17 May 2007 07:00:20 +0000</pubDate>
		<dc:creator>Javier Perez</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.maestrosdelweb.com/editorial/que-es-smarty/</guid>
		<description><![CDATA[Smarty es un motor de plantillas Open Source para PHP que lleva muchos años en el mercado. Con él podremos realizar aplicaciones web de calidad separando el código (PHP) de la presentación (HTML/CSS). 
Cuando empezamos a desarrollar con PHP solemos hacerlo usando málas prácticas, como mezclar PHP y HTML/CSS en el mismo fichero. Pero quizás [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Smarty es un motor de plantillas Open Source para PHP que lleva muchos años en el mercado. Con él podremos realizar aplicaciones web de calidad separando el código (PHP) de la presentación (HTML/CSS). </span><span id="more-2646"></span></p>
<p><img src='http://www.maestrosdelweb.com/images/smarty.jpg' alt='smarty.jpg' style="float:right;padding:5px" />Cuando empezamos a desarrollar con PHP solemos hacerlo usando málas prácticas, como mezclar <a href="http://www.maestrosdelweb.com/editorial/phpintro/">PHP</a> y <a href="http://www.maestrosdelweb.com/editorial/htmlhis/">HTML</a>/<a href="http://www.maestrosdelweb.com/editorial/introcss/">CSS</a> en el mismo fichero. Pero quizás lo hacíamos porque desconocíamos un motor de plantillas tan potente y completo como <a href="http://smarty.php.net/">Smarty</a>. </p>
<p>El lenguaje PHP es completamente abierto, en el sentido de que no requiere desarrollar en alguna arquitectura concreta, sino que un fichero puede contener un millón de líneas con código PHP y código HTML intercalados, lo cual tiene severas desventajas y problemas: </p>
<ul>
<li>Un diseñador tendrá muy difícil manejar el código HTML/CSS de esa página.</li>
<li>La escalabilidad es prácticamente nula.</li>
<li>Mantener una aplicación así se complica progresivamente.</li>
<li>La depuración de ese tipo de aplicaciones se hace muy complicada.</li>
</ul>
<p>Pero podemos escribir aplicaciones PHP usando motores de plantillas que separan la presentación (HTML/CSS) del código (PHP), solventando de este modo todos esos problemas, y ofreciéndonos además multitud de ventajas adicionales. Este es el caso de Smarty, un motor de plantillas ya veterano en el mercado. </p>
<p>Estas son las funcionalidades que podremos disfrutar con Smarty: </p>
<ul>
<li>Plantillas limpias fáciles de usar por los diseñadores.</li>
<li>Escalabilidad.</li>
<li>Mantenimiento más sencillo (al igual que la escalabilidad, únicamente con la separación de código y presentación no se consigue un mantenimiento más sencillo, también se requerirá de una buena codificación).</li>
<li>Depuración óptima del código, al tener ficheros pequeños únicamente con código PHP.</li>
<li>Posibilidad de introducir comentarios dentro de las plantillas que no se enviarán al servidor. Ejemplo: <code>{* comentario smarty *}</code> en lugar de <code>&lt;!-- comentario HTML --&gt;</code></li>
<li>Funciones integradas que facilitan el tratamiento de variables. Ejemplos: <code>{foreach}{/foreach}</code>, <code>{if}{else}{/if}</code>.</li>
<li>Funciones asistentes para generación de código HTML. Ejemplos: <code>{html_image file=”banner.jpg”}</code> generaría <code>&lt;img src="banner.jpg" alt="" width="700" height="55" /&gt;</code></li>
<li>Expandir Smarty con más funcionalidades mediante plugins.</li>
</ul>
<p>Veamos un sencillo ejemplo de una aplicación hecha con Smarty:</p>
<h3>index.php</h3>
<div class="codigo">
<pre>
&lt;?php
include('libs/Smarty.class.php');
$frutas = array(
      array(
            'name'  =&gt; 'malus rosaceae',
            'url'  =&gt; 'http://es.wikipedia.org/wiki/Manzana',
            'image'  =&gt; 'http://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Fuji_apple.jpg/200px-Fuji_apple.jpg'
      ),
      array(
            'name'  =&gt; 'fragaria',
            'url'  =&gt; 'http://es.wikipedia.org/wiki/Fresa',
            'image'  =&gt; 'http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Chandler_strawberries.jpg/225px-Chandler_strawberries.jpg'
      ),
      array(
            'name'  =&gt; 'citrus sinensis',
            'url'  =&gt; 'http://es.wikipedia.org/wiki/Naranja_%28fruta%29',
            'image'  =&gt; 'http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Citrus_sinensis.jpg/300px-Citrus_sinensis.jpg'
      ),
);
$frutas_list = array('manzana','fresa','naranja');
$tpl = new Smarty();
$tpl-&gt;template_dir = './';
$tpl-&gt;compile_dir = './';
$tpl-&gt;config_dir = './';
$tpl-&gt;cache_dir = './';
$action = isset($_GET['action']) ? $_GET['action'] : 'list';
switch ($action) {
      case 'list':
            $tpl-&gt;assign('frutas',$frutas_list);
            $tpl-&gt;display('list.tpl');
            break;
      case 'detail':
            $id = isset($_GET['id']) ? intval($_GET['id']) : 0;
            $tpl-&gt;assign('fruta', $frutas[$id]);
            $tpl-&gt;display('detail.tpl');
            break;
}
</pre>
</div>
<p>Con esta aplicación necesitaremos dos plantillas: <code>list.tpl y detail.tpl </code></p>
<h3>list.tpl</h3>
<div class="codigo">
<pre>
&lt;html&gt;
&lt;head&gt;
      &lt;title&gt;Listado de frutas&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form&gt;
      {* Con esta sentencia crearemos el HTML de un SELECT/OPTION *}
      {html_options options=$frutas name=id}
      &lt;input type='hidden' name='action' value='detail' /&gt;
      &lt;input type='submit' value='Ver' /&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>
<h3>detail.php</h3>
<div class="codigo">
<pre>
&lt;html&gt;
&lt;head&gt;
      &lt;title&gt;{$fruta.name}&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
      &lt;h1&gt;{$fruta.name}&lt;/h1&gt;
      &lt;a href="{$fruta.url}"&gt;&lt;img src="{$fruta.image}" /&gt;&lt;/a&gt;
      &lt;br /&gt;
      &lt;a href=?action=list&gt;Volver&lt;/a&gt;
&lt;/body&gt;
</pre>
</div>
<h3>Alternativa a Smarty</h3>
<p>Otra opción totalmente válida es usar nuestro propio motor de plantillas, útil por ejemplo para proyectos pequeños que no requieran de todas las funcionalidades que ofrece Smarty. </p>
<h3>TemplateEngine.class.php</h3>
<div class="codigo">
<pre>
?php
define('TEMPLATES_DIR', './templates/');
class TemplateEngine extends stdClass {
      public function fetch($__tpl) {
            foreach (get_object_vars($this) as $__name=&gt;$__value) {
                  $$__name = $__value;
            }
            require(TEMPLATES_DIR . $__tpl);
      }
}
</pre>
</div>
<h3>index.php</h3>
<div class="codigo">
<pre>
&lt;?php
include('TemplateEngine.class.php');
$tpl = new TemplateEngine();
$tpl-&gt;frutas = array('manzana','pera','fresa','platano','mandarina');
$tpl-&gt;fetch('ficha.tpl');
</pre>
</div>
<p>Lo que en Smarty sería algo como:</p>
<div class="codigo">
<pre>
&lt;?php
include('Smarty.class.php');
$smarty = new Smarty();
$smarty-&gt;assign('frutas', array('manzana','pera','fresa','platano','mandarina'));
$smarty-&gt;display('ficha.tpl');
</pre>
</div>
<h3>./templates/ficha.tpl</h3>
<div class="codigo">
<pre>
&lt;html&gt;
&lt;head&gt;
      &lt;title&gt;Sistema de plantillas sin Smarty&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
      &lt;ul&gt;
      &lt;?php foreach ($frutas as $fruta) : ?&gt;
            &lt;li&gt;&lt;?=$fruta?&gt;&lt;/li&gt;
      &lt;?php endforeach; ?&gt;
      &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>
<p>Equivalente a la plantilla Smarty:</p>
<div class="codigo">
<pre>
&lt;html&gt;
&lt;head&gt;
      &lt;title&gt;Sistema de plantillas sin Smarty&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
      &lt;ul&gt;
      {foreach from=$frutas item=fruta}
            &lt;li&gt;&lt;{$fruta}&lt;/li&gt;
      {/foreach}
      &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>
<p>Ya no hay excusa para hacer una aplicación web en PHP de calidad. Con un motor de plantillas como Smarty podremos crear una aplicación profesional invirtiendo muy poco tiempo. </p>
<h3>Referencia:</h3>
<ul>
<li><a href="http://smarty.php.net/manual/es/">Documentación de Smarty</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/que-es-smarty/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Las 10 extensiones de Firefox más populares</title>
		<link>http://www.maestrosdelweb.com/editorial/las-10-extensiones-de-firefox-mas-populares/</link>
		<comments>http://www.maestrosdelweb.com/editorial/las-10-extensiones-de-firefox-mas-populares/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 16:35:24 +0000</pubDate>
		<dc:creator>Javier Perez</dc:creator>
		
		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://www.maestrosdelweb.com/editorial/las-10-extensiones-de-firefox-mas-populares/</guid>
		<description><![CDATA[Existen muchas extensiones para Firefox pero sin duda, estas 10 son las más conocidas y usadas por los felices usuarios de Firefox: FlashGot, Adblock Plus, Gmail Notifier, Greasemonkey, Download Statusbar, Web Developer, Firebug, del.icio.us, Google Toolbar, PDF Download.
Es difícil extraer tan sólo diez extensiones dentro de  tantas existentes, y máxime cuando cada comunidad tendrá [...]]]></description>
			<content:encoded><![CDATA[<p><span class='intro'>Existen muchas extensiones para Firefox pero sin duda, estas 10 son las más conocidas y usadas por los felices usuarios de Firefox: FlashGot, Adblock Plus, Gmail Notifier, Greasemonkey, Download Statusbar, Web Developer, Firebug, del.icio.us, Google Toolbar, PDF Download.</span><span id="more-2540"></span></p>
<p>Es difícil extraer tan sólo diez extensiones dentro de  tantas existentes, y máxime cuando cada comunidad tendrá sus propias extensiones más populares (desarrolladores, bloggers, hispanos, estadounidenses, etc.).  </p>
<p><a href="http://www.maestrosdelweb.com/editorial/firefox/">Firefox </a>quizás no sea el <a href="http://www.error500.net/firefox-20-estabilidad-consumo-memoria">navegador web más estable</a> (es muy conocido su problema con el consumo de memoria, y quizás tampoco <a href="http://meneame.net/story/windows-vista-hace-vulnerables-firefox-mediante-exploit-critico">el más seguro</a> (no tiene muchos menos errores que Internet Explorer, aunque eso sí, suelen ser errores de la plataforma donde se ejecuta y son solucionados en tiempo récord), pero sí es el mejor.</p>
<h3>¿Por qué Firefox?</h3>
<p>Porque es <a href=" https://addons.mozilla.org/es-ES/firefox/browse/type:1 ">el <a href="http://www.maestrosdelweb.com/editorial/%C2%BFcomo-elegir-un-navegador-web/">navagador</a> más personalizable</a>, y por lo tanto el que más productividad nos ofrece. Cada uno se construye su propio Firefox añadiendo las funcionalidades que necesite. No existen dos usuarios de Firefox que tengan exactamente el mismo Firefox, porque cada uno tiene sus propias extensiones, y su tema favorito. Es normal, teniendo en cuenta que existen alrededor de 1000 extensiones disponibles en la web oficial. </p>
<p>Con tantas extensiones a nuestra disposición no sólo se consigue que perdamos nuestro valioso tiempo buscando las extensiones que necesitamos, sino que además cabe la posibilidad de que pase desapercibida una extensión que nos haría la vida mucho más fácil. Por ello, a continuación muestro las diez extensiones más populares. </p>
<h3>1. FlashGot</h3>
<p><img src='http://www.maestrosdelweb.com/images/flashgot.jpg' alt='flashgot.jpg' class='lateral'/>Los que usamos Firefox encontramos a su gestor de descargas bastante ineficiente, se nos queda corto. Además, muchos usamos gestores de descarga de escritorio, como <a href="http://www.freedownloadmanager.org/">Free Download Manager</a>, <a href="http://www.getright.com/">GetRight </a>, <a href="http://www.leechget.net/es/">LeechGet</a>(Windows), <a href="http://www.gnome.org/projects/gwget/">Gwget</a>, <a href="http://kget.klik.atekon.de/">KGet</a> (Linux) o <a href="http://www.igetter.net/ ">iGetter </a>(Mac).<br />
<a href="http://flashgot.net/ "><br />
FlashGot </a>sustituye al espartano gestor de descargas de Firefox, y además lo integra con casi todos los gestores de descarga existentes. Podremos con un sólo clic descargar todos los enlaces de una página, seleccionar cuántos ficheros descargamos a la vez, resumir una descarga que interrumpimos anteriormente, etc. </p>
<h3>2. Adblock Plus</h3>
<p><img src='http://www.maestrosdelweb.com/images/adblockplus.jpg' alt='adblockplus.jpg' class='lateral'/><a href="https://addons.mozilla.org/es-ES/firefox/addon/1865">Adblock Plus</a> filtra toda <a href="http://www.maestrosdelweb.com/editorial/adsense/">la publicidad</a> gracias a su base de datos actualizada constantemente. El filtro bloqueará la mayoría de anuncios de modo totalmente automático.</p>
<p>A muchos nos molesta ver tanta publicidad en Internet, que a veces hasta nos dificulta la lectura. Pero con esta extensión nunca jamás volveremos a ver publicidad en <a href="http://www.maestrosdelweb.com/editorial/usointernet/">Internet</a>. </p>
<h3>3. Gmail Notifier</h3>
<p><img src='http://www.maestrosdelweb.com/images/gmail.jpg' alt='gmail.jpg' class='lateral'/><a href="https://addons.mozilla.org/es-ES/firefox/addon/173">Gmail Notifier</a> sirve para alertarnos sobre la llegada de un nuevo correo en Gmail, así como tener un icono de acceso rápido a este popular Webmail.</p>
<p>Incluso podemos configurarlo para que reproduzca un fichero de audio cuando llegue nuevo correo. </p>
<h3>4. Greasemonkey</h3>
<p><a href="https://addons.mozilla.org/es-ES/firefox/addon/748">Greasemonkey</a><img src='http://www.maestrosdelweb.com/images/greasemonkey.jpg' alt='greasemonkey.jpg' class='lateral'/> es una extensión que permite modificar la página web que se esté visualizando mediante scripts. Estos scripts los podemos encontrar en <a href="http://userscripts.org">userscripts.org</a>. </p>
<p>Un buen ejemplo es <a href="http://userscripts.org/scripts/show/7435">Gmail + Reader integrator </a>, que añade un panel de <a href="http://www.google.com/reader/ ">Google Reader</a> dentro de la página de Gmail, para poder leer el correo y leer a la vez nuestros <a href="http://www.maestrosdelweb.com/editorial/blogs/">blogs</a> favoritos. </p>
<h3>5. Download Statusbar</h3>
<p><img src='http://www.maestrosdelweb.com/images/statusbar.jpg' alt='statusbar.jpg' class='lateral'/>La extensión <a href="https://addons.mozilla.org/es-ES/firefox/addon/26 ">Download Statusbar</a> sustituye al gestor de descargas de Firefox, sustituyendo la ventana de descargas por pequeñas barras de progreso, una por cada fichero, situadas justo encima de barra de estado. </p>
<p>Es totalmente personalizable, y sin duda mucho más práctico que el de Firefox. </p>
<h3>6. Web Developer</h3>
<p><a href="https://addons.mozilla.org/es-ES/firefox/addon/60 ">Web Developer</a>es ideal e imprescindible para desarrolladores web.<img src='http://www.maestrosdelweb.com/images/webdeveloper.jpg' alt='webdeveloper.jpg' class='lateral'/> Sus funciones son casi interminables: deshabilitar caché, cookies, javascript, eliminar o ver las cookies, modificar el <a href="http://www.maestrosdelweb.com/editorial/introcss/">CSS</a> de una página.</p>
<p>Además, mostrar atributos de los elementos de la página, ver información de los formularios, validar <a href="http://www.maestrosdelweb.com/editorial/htmlhis/">HTML</a>, CSS&#8230; Ningún desarrollador podrá sobrevivir sin esta extensión. </p>
<h3>7. Firebug</h3>
<p><img src='http://www.maestrosdelweb.com/images/firebug.jpg' alt='firebug.jpg' class='lateral'/><a href="http://www.getfirebug.com ">Firebug</a> es otra extensión imprescindible para el desarrollador web. Con ella podremos editar el HTML de cualquier web en tiempo real.</p>
<p>Además, modificar el CSS de forma visual con autocompletado, depurar javascript con breakpoints y watchlist, observar el tiempo de carga de todos y cada uno de los ficheros de la página, ver las peticiones y respuestas <a href="http://www.maestrosdelweb.com/editorial/ajax/">AJAX</a>, etc. Nunca fue tan fácil desarrollar una web. </p>
<h3>8. del.icio.us extension</h3>
<p><img src='http://www.maestrosdelweb.com/images/delicios.jpg' alt='delicios.jpg' class='lateral'/>Todos conocemos del.icio.us, una web donde poder almacenar los enlaces que nos gustan para después poder recuperarlos. </p>
<p>Con <a href="http://del.icio.us/help/firefox/extension">esta extensión</a> nos resultará mucho más sencillo guardar un enlace en del.icio.us, y además accederemos fácilmente a sus opciones más útiles, como ver qué usuarios tienen guardado el enlace que estamos viendo, ir a la lista de enlaces más populares, etc. </p>
<h3>9. Google Toolbar</h3>
<p><img src='http://www.maestrosdelweb.com/images/googletoolbar.jpg' alt='googletoolbar.jpg' class='lateral'/>Posiblemente nuestro Firefox lo hayamos descargado con esta extensión instalada previamente. <a href="http://www.google.com/tools/firefox/toolbar/ ">Google Toolbar</a> es muy útil para tener todos los servicios de Google en una barra a golpe de clic. </p>
<p>Por ejemplo, dispondremos de una cajita de búsqueda para poder buscar imágenes, noticias, mapas, en tu buzón de gmail&#8230; Muestra el pagerank de la página que estemos visualizando, dispondremos del corrector ortográfico de Google cuando escribamos en un formulario, traducción de una página al español, y muchas funciones más totalmente personalizables. </p>
<h3>10. PDF Download</h3>
<p><img src='http://www.maestrosdelweb.com/images/pdf.jpg' alt='pdf.jpg' class='lateral'/>Cuando nos encontramos un documento PDF, tenemos que bajárnoslo y después abrirlo con el lector de PDF&#8217;s, pero con <a href="https://addons.mozilla.org/es-ES/firefox/addon/636">PDF Download</a>, al hacer clic en un documento PDF, automáticamente nos lo bajará a un directorio temporal y nos lo abrirá con nuestro lector de PDF de forma rápida y automática. </p>
<p>Aunque también lo podemos configurar para que nos baje el documento automáticamente, o que nos lo convierta en HTML. Cada usuario tendrá su propia lista de extensiones más populares, y esa es una de las grandes bondades de Firefox, su alta capacidad de personalización. </p>
<p>Una lista de extensiones útiles para cada tipo de usuario sería muy interesante, podemos obtenerla consultando <a href="https://addons.mozilla.org/es-ES/firefox/browse/type:1/cat:1/sort:popular">Mozilla Addons filtrando por categorías</a>. </p>
<h3>Lecturas de Referencia</h3>
<ul>
<li><a href="https://addons.mozilla.org/es-ES/firefox/browse/type:1/cat:all/sort:popular">Firefox Add-ons:extensiones populares</a></li>
<li><a href="https://addons.mozilla.org/es-ES/firefox/recommended ">Firefox Add-ons: Complementos recomendados</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/las-10-extensiones-de-firefox-mas-populares/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
