﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Avanzis (Blogs Producción)</title>
    <description>Avanzis (Blogs Producción)</description>
    <link>http://www.avanzis.com/rssfeed/313/896.xml</link>
    <lastBuildDate>Tue, 12 Aug 2008 14:30:19 GMT</lastBuildDate>
    <item>
      <title>Trucos FLASH: Obtención de variables desde QueryString</title>
      <description>Cada día, en el transcurrir de una &lt;strong&gt;empresa&lt;/strong&gt; dedicada al &lt;strong&gt;desarrollo web&lt;/strong&gt;, ya sea incluso en un mes de agosto, surgen a menudo nuevas especificaciones o requerimientos que nos obligan a investigar soluciones que quizás antes jamás habíamos utilizado. Además esto ocurre frecuentemente cuando se trata de &lt;strong&gt;proyectos web&lt;/strong&gt; que incorporan animaciones en &lt;strong&gt;flash&lt;/strong&gt;, donde en ocasiones la integración e interacción de dicho archivo con nuestro &lt;strong&gt;gestor de contenidos&lt;/strong&gt; requiere del ingenio, da la experiencia, pero sobre todo de la capacidad que &lt;strong&gt;actionscript&lt;/strong&gt; nos ofrece.&lt;br /&gt;
&lt;br /&gt;
Ayer mismo se nos planteó la necesidad de modificar el valor de una variable utilizada en un archivo &lt;strong&gt;flash&lt;/strong&gt; en función del valor de un parámetro del &lt;strong&gt;QueryString&lt;/strong&gt; de una &lt;strong&gt;URL&lt;/strong&gt;. Algo que, tras un par de horas de analisis y de investigación, resulta realmente sencillo de realizar, pero que dicho así de buenas a primeras parece más complejo de lo que es. Aprovecharé además para explicar como de forma sencilla podemos cambiar ciertos aspectos de un mismo fichero &lt;strong&gt;flash&lt;/strong&gt;, solamente mediante el paso directo de parámetros sobre la definición del &lt;strong&gt;object&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;PASO DE PARÁMETROS DIRECTAMENTE SOBRE EL FLASH&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
En algunas ocasiones puede interesarnos, sin mayores complicaciones, que un mismo &lt;strong&gt;flash&lt;/strong&gt; se comporte de forma diferente, cambie su color de fondo, o incluso que tenga una apariencia diferente, solamente con cambiar el valor de una de sus variables. Esto, que en apariencia resulta tan absurdo, puede ayudarnos a reutilizar un mismo fichero &lt;strong&gt;flash&lt;/strong&gt;, en varias circunstancias diferentes. Sobre todo es muy útil para ajustar por ejemplo el &lt;strong&gt;&lt;em&gt;look and feel&lt;/em&gt;&lt;/strong&gt; de un mismo fichero flash al diseño de distintos &lt;strong&gt;portales web&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Ejemplo 1.1:&lt;/strong&gt;&lt;/span&gt; Nuestro fichero &lt;strong&gt;flash&lt;/strong&gt; sustenta su fondo en una fichero de imagen que nosotros podemos cambiar a nuestro antojo. Para ello mediante la simple asignación de una &lt;strong&gt;url relativa&lt;/strong&gt; a la variable &lt;strong&gt;&lt;em&gt;imageFileName&lt;/em&gt;&lt;/strong&gt; podremos cambiar dicha imagen de fondo.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;object width="250" height="150" id="flaMovie" &lt;br /&gt;
codebase="http://macromedia.com/cabs/swflash.cab#version=4,0,0,0" &lt;br /&gt;
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;&lt;br /&gt;
    &lt;param name="movie" value="flaMovie.swf"&gt;&lt;br /&gt;
&lt;/em&gt;&lt;strong&gt;&lt;em&gt;    &lt;param name="imageFileName" value="imagen01.jpg"&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;    &lt;embed src="flaMovie.swf" bgcolor="#99CC33" &lt;br /&gt;
    type="application/x-shockwave-flash height="150" width="250"&gt;&lt;br /&gt;
&lt;/object&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Ejemplo 1.2:&lt;/strong&gt;&lt;/span&gt; Con la misma intención que en el anterior ejemplo, esta vez la variable la definimos directamente sobre la propia &lt;strong&gt;url relativa&lt;/strong&gt; de la película &lt;strong&gt;flash&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;object width="250" height="150" id="flaMovie" &lt;br /&gt;
codebase="http://macromedia.com/cabs/swflash.cab#version=4,0,0,0" &lt;br /&gt;
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt;&lt;br /&gt;
&lt;strong&gt;    &lt;param name="movie" &lt;br /&gt;
    value="flaMovie.swf?imageFilename=imagen01.jpg"&gt;&lt;/strong&gt;&lt;br /&gt;
    &lt;embed &lt;strong&gt;src="flaMovie.swf?imageFilename=imagen01.jpg"&lt;/strong&gt; &lt;br /&gt;
    bgcolor="#99CC33" type="application/x-shockwave-flash &lt;br /&gt;
    height="150" width="250"&gt;&lt;br /&gt;
&lt;/object&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
&lt;strong&gt;PASO DE PARÁMETROS POR QUERYSTRING&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
En nuestro caso en particular lo que necesitábamos es que este paso de variables se hiciera directamente desde el &lt;strong&gt;QueryString&lt;/strong&gt; de una &lt;strong&gt;url&lt;/strong&gt;. Además por cuestiones de optimización optamos porque de todas los posibles variables que puedan encontrarse en el &lt;strong&gt;QueryString&lt;/strong&gt;, tan sólo queremos tener en cuenta la variable definida como &lt;strong&gt;&lt;em&gt;tipo&lt;/em&gt;&lt;/strong&gt;, algo que podremos también controlar mediante &lt;strong&gt;actionscript&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Ejemplo 2:&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;import flash.external.*; //para poder usar externalInterface&lt;br /&gt;
&lt;br /&gt;
var paramTipo;&lt;br /&gt;
var queryString = ExternalInterface.call("window.location.search.substring", 1);&lt;br /&gt;
&lt;br /&gt;
if(queryString) {&lt;br /&gt;
    var allParams:Array = queryString.split('&amp;');&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0, index = -1; i &lt; allParams.length; i++) {&lt;br /&gt;
        var keyValuePair:String = allParams[i];&lt;br /&gt;
&lt;br /&gt;
        if((index = keyValuePair.indexOf("=")) &gt; 0) {&lt;br /&gt;
            var paramKey:String = keyValuePair.substring(0,index);&lt;br /&gt;
            var paramValue:String = keyValuePair.substring(index+1);&lt;br /&gt;
&lt;br /&gt;
            if (paramKey.toLowerCase() == "tipo") { paramTipo = paramValue; }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;Ya solamente quedará utilizar adecuadamente en nuestro código &lt;strong&gt;actionscript&lt;/strong&gt; la variable definida aquí como&lt;em&gt; &lt;strong&gt;paramTipo&lt;/strong&gt;&lt;/em&gt; para la finalidad que fuera necesaria. Con esto lo que logramos, como ya hemos comentado, es poder cambiar dinámicamente nuestra película flash en función de los valores que se han introducido en el &lt;strong&gt;QueryString&lt;/strong&gt;, lo cual nos abre un abanico de posibilidades realmente amplio.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Este &lt;strong&gt;Script&lt;/strong&gt; solamente funcionará en &lt;strong&gt;Internet Explorer&lt;/strong&gt; si nuestro &lt;strong&gt;.swf&lt;/strong&gt; integrado en el &lt;strong&gt;HTML&lt;/strong&gt; como un &lt;strong&gt;Object&lt;/strong&gt; emebedido tiene previamente definido un &lt;strong&gt;id&lt;/strong&gt;.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Podréis encontrar más información ampliada en inglés en los siguientes enlaces.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Fuente 1&lt;/strong&gt; | &lt;a href="http://blog.circlecube.com/2008/03/20/get-current-url-and-query-string-parameters-to-flash-tutorial/" title="Circlecube.com" target="_blank"&gt;Circlecube.com&lt;/a&gt; &lt;br /&gt;
&lt;strong&gt;Fuente 2&lt;/strong&gt; | &lt;a href="http://www.permadi.com/tutorial/flashQueryString/index.html" title="Permadi.com" target="_blank"&gt;Permadi.com&lt;/a&gt;&lt;br /&gt;
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/8529/805/trucos-flash-obtencion-de-variables-desde-querystring</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/8529/805/trucos-flash-obtencion-de-variables-desde-querystring</guid>
      <pubDate>Tue, 12 Aug 2008 14:30:19 GMT</pubDate>
    </item>
    <item>
      <title>Recomendaciones: Pasar de HTML a XHTML (I)</title>
      <description>En muchas ocasiones, cuando se aborda un cambio en el &lt;strong&gt;lenguaje de marcado&lt;/strong&gt; utilizado habitualmente para crear nuestras &lt;strong&gt;páginas webs&lt;/strong&gt;, como es por ejemplo el paso de &lt;strong&gt;HTML&lt;/strong&gt; a &lt;strong&gt;XHTML&lt;/strong&gt;, frecuentemente nos encontramos con problemas de varios tipos, &lt;strong&gt;atributos&lt;/strong&gt; usados de forma indebida, &lt;strong&gt;etiquetas&lt;/strong&gt; mal cerradas, e incluso en algunos casos el comportamiento de los &lt;strong&gt;CSS&lt;/strong&gt; varía, con lo que hay que volver revisarlos y redefinirlos.&lt;br /&gt;
&lt;br /&gt;
Puede parecer, y no falta razón en ocasiones, que los que diseñamos y creamos &lt;strong&gt;páginas web&lt;/strong&gt; ante un cambio de &lt;strong&gt;lenguaje de marcado&lt;/strong&gt;, no nos paramos ni un segundo a estudiar las nuevas reglas de uso y que nos limitamos a dejar que el día a día sea el que nos muestre esos nuevos cambios. Algo que puede tener su origen quizás, en nuestra condición de &lt;i&gt;autodidactas&lt;/i&gt;, al menos en mi caso. Ignoro si en el mundo de la programación sucede igual, pero para los que hacemos &lt;strong&gt;páginas web&lt;/strong&gt; creo que éste es uno de nuestros mayores hándicaps, la falta de concienciación sobre las reglas de nuestro &lt;strong&gt;lenguaje de marcado&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Ni que decir tiene que el &lt;strong&gt;lenguaje de marcado&lt;/strong&gt; que vayamos a utilizar influye de manera crítica en la forma que nuestro navegador va a interpretar los &lt;strong&gt;CSS&lt;/strong&gt;, una de las piedras angulares sobre los que sustentan nuestros &lt;strong&gt;diseños&lt;/strong&gt; y nuestras &lt;strong&gt;páginas web&lt;/strong&gt;. Es por ello por lo que no está de más conocer cuáles son algunos de los cambios más importantes que &lt;strong&gt;XHTML&lt;/strong&gt; ha incorporado, sobre todo si no queremos que nos afecte a nuestros &lt;strong&gt;CSS&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo, una de las nuevas características de &lt;strong&gt;XHTML&lt;/strong&gt; es que es &lt;strong&gt;case sensitive&lt;/strong&gt;. Podríamos pensar que ahí reside uno de los mayores conflictos con &lt;strong&gt;CSS&lt;/strong&gt;, pero este cambio introducido en &lt;strong&gt;XHTML&lt;/strong&gt;, no representa muchas diferencias con lo que se venía haciendo, ya que en &lt;strong&gt;HTML&lt;/strong&gt; la definición de atributos &lt;strong&gt;id &lt;/strong&gt;y &lt;strong&gt;class&lt;/strong&gt; también era &lt;strong&gt;case sensitive&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Entonces, ¿por qué el paso de un documento &lt;strong&gt;HTML&lt;/strong&gt; a &lt;strong&gt;XHTML&lt;/strong&gt; deriva en todos estos inconvenientes? La respuesta la podemos encontrar fácilmente en la forma que han tenido y tienen los &lt;strong&gt;navegadores de Internet&lt;/strong&gt; de interpretar el documento que se está abriendo.&lt;br /&gt;
&lt;br /&gt;
La correcta definición en la cabecera de los tipos de los documentos utilizados, ya sean &lt;strong&gt;HTML&lt;/strong&gt; o &lt;strong&gt;XHTML&lt;/strong&gt;, ha sido una práctica poco habitual en el mundo &lt;strong&gt;web&lt;/strong&gt;. Actualmente se ha convertido en algo realmente necesario, sobre todo para que los &lt;strong&gt;navegadores&lt;/strong&gt; apliquen correctamente los estándares y sepan interpretar los documentos de la forma adecuada. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ejemplo:&lt;/strong&gt; Definición de un documento de tipo XHTML 1.0 Transitional.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"&gt;&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
La ausencia de esta definición, derivaba en un conflicto realmente importante con los &lt;strong&gt;navegadores de Internet&lt;/strong&gt;, quienes al desconocer el tipo de documento que estaban procesando, y en lugar de usar al azar alguno de los estándares definidos, el &lt;strong&gt;Standar Mode&lt;/strong&gt;, adoptaban el modo de compatibilidad por defecto, o más conocido como &lt;strong&gt;Quirks Mode&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Una de las particularidades de este modo era precisamente no ser &lt;strong&gt;case sensitive&lt;/strong&gt;. Esto afectaba, y sigue afectando, no sólo a la forma de visualizar e interpretar las &lt;strong&gt;páginas web&lt;/strong&gt;, sino a la forma en la que los que desconocían esta circunstancia generaban su &lt;strong&gt;código CSS&lt;/strong&gt;. Siempre ha existido, o al menos esa es mi impresión, la tendencia de diseñar para los &lt;strong&gt;navegadores&lt;/strong&gt;, sin pensar que la solución pasa por diseñar pensando en los estándares. Unos estándares que los propios &lt;strong&gt;navegadores&lt;/strong&gt; ya son capaces de interpretar a la perfección a poco que se lo indiquemos de forma adecuada.&lt;br /&gt;
&lt;br /&gt;
Podríamos decir pues que, al margen de la experiencia de cada uno, no hay nada mejor que saber y conocer perfectamente las reglas, particularidades y características fundamentales del &lt;strong&gt;lenguaje de marcado&lt;/strong&gt; que estamos utilizando. Pero además debemos ser capaces de ver a los &lt;strong&gt;navegadores de Internet&lt;/strong&gt; como lo que son, unos simples intérpretes de nuestro código. &lt;br /&gt;
&lt;br /&gt;
Así, cuando nos topemos de nuevo con la disyuntiva, más que habitual hoy día, de que &lt;strong&gt;IE6, IE7, FF2 y FF3&lt;/strong&gt; no muestran nuestra &lt;strong&gt;página web&lt;/strong&gt; de la misma forma, sabremos reconocer que quizás el problema sea simplemente que no hemos sabido utilizar de forma adecuada todos los &lt;strong&gt;estándares&lt;/strong&gt;, &lt;strong&gt;herramientas&lt;/strong&gt; y &lt;strong&gt;lenguajes&lt;/strong&gt; de los que disponemos. 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/8504/805/recomendaciones-pasar-de-html-a-xhtml-i</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/8504/805/recomendaciones-pasar-de-html-a-xhtml-i</guid>
      <pubDate>Sun, 10 Aug 2008 13:39:36 GMT</pubDate>
    </item>
    <item>
      <title>Trucos CSS: Optimizando nuestro CSS (II)</title>
      <description>Siguiendo con uno de los temas principales abiertos este &lt;strong&gt;blog&lt;/strong&gt;, el que tiene que ver con las &lt;strong&gt;cascade style sheet&lt;/strong&gt;, los &lt;strong&gt;CSS&lt;/strong&gt;, aquí vienen una nueva tanda de &lt;strong&gt;trucos&lt;/strong&gt; y &lt;strong&gt;consejos&lt;/strong&gt; para optimizar nuestro &lt;strong&gt;código&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Como ya se ha dicho con anterioridad, hemos de intentar que nuestro &lt;strong&gt;archivo CSS&lt;/strong&gt; sea siempre lo más limpio y organizado posible. Una buena forma de lograrlo es estructurándolo de forma que podamos encontrar fácilmente las distintas &lt;strong&gt;clases&lt;/strong&gt; que hemos definido. Para ello resulta vital la inclusión de comentarios, que pueden cumplir una doble función, informar y a la vez separar o agrupar nuestro &lt;strong&gt;código&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Remarcar que los comentarios en &lt;strong&gt;CSS&lt;/strong&gt; se insertan entre las etiquetas &lt;strong&gt;/*&lt;/strong&gt; para indicar el comienzo, y &lt;strong&gt;*/&lt;/strong&gt; para marcar el final del comentario.&lt;br /&gt;
&lt;br /&gt;
Veámos un ejemplo práctico.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="text-decoration: underline"&gt;Ejemplo 1:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
/* === CABECERA ==== */&lt;br /&gt;
&lt;em&gt;.HeaderContainer { ... }&lt;br /&gt;
&lt;i&gt;.HeaderLink { ... }&lt;/i&gt;&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
/* === PIE DE PÁGINA ==== */&lt;br /&gt;
&lt;i&gt;.FooterContainer { ... }&lt;br /&gt;
&lt;i&gt;.FooterLink { ... }&lt;/i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
Como se puede observar, hemos definido dos líneas de comentarios, que nos agrupan y separan los &lt;strong&gt;CSS&lt;/strong&gt; utilizados en la implementación de la &lt;em&gt;Cabecera&lt;/em&gt; por un lado, y los utilizados en la implementación del &lt;em&gt;Pie de página&lt;/em&gt; por el otro. Cumpliendo así esa doble función que mencionabamos con anterioridad de organizar e informar.&lt;br /&gt;
&lt;br /&gt;
Además la inclusión de estos comentarios ira creciendo en importancia, a medida que se incrementen las líneas de nuestro código, y el número de atributos &lt;strong&gt;CSS&lt;/strong&gt; que vayamos definiendo. También será importante en el caso de que sean varias las personas que tengan que utilizar y trabajar sobre ese código &lt;strong&gt;CSS&lt;/strong&gt;. Cuanto más conciso, claro y definido sea nuestro &lt;strong&gt;código&lt;/strong&gt;, como ocurre generalmente en &lt;strong&gt;programación&lt;/strong&gt;, mucho mejor. 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/8130/805/trucos-css-optimizando-nuestro-css-ii</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/8130/805/trucos-css-optimizando-nuestro-css-ii</guid>
      <pubDate>Sun, 15 Jun 2008 17:11:57 GMT</pubDate>
    </item>
    <item>
      <title>Recomendaciones: Validar nuestro (X)HTML</title>
      <description>En el último &lt;strong&gt;post&lt;/strong&gt; os comentaba la importancia del buen y correcto uso de los &lt;strong&gt;estándares&lt;/strong&gt; en el &lt;strong&gt;desarrollo web&lt;/strong&gt; actual, abordado desde el punto de vista de las &lt;strong&gt;hojas de estilos&lt;/strong&gt;, o más comúnmente conocidas como &lt;strong&gt;CSS&lt;/strong&gt;. Hoy volveré a incidir en la importancia de este asunto, pero esta vez desde la perspectiva de los &lt;strong&gt;lenguajes de programación&lt;/strong&gt; que se utilizan en la composición y creación de nuestro &lt;strong&gt;proyecto web&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Como &lt;strong&gt;diseñadores web&lt;/strong&gt;, hemos de ser conscientes de la importancia de utilizar nuestras &lt;strong&gt;herramientas&lt;/strong&gt; de forma totalmente apropiada. Es por ello por lo que si optamos por crear nuestra &lt;strong&gt;página web&lt;/strong&gt; en &lt;strong&gt;XHTML 1.0 Transitional&lt;/strong&gt; o en &lt;strong&gt;HTML 4.01 Transitional&lt;/strong&gt;, por ejemplo, y además así es como lo definimos en la cabecera de nuestro código, parece razonable que procuremos desarrollar basándonos en las reglas que lo definen. Algo que aparentemente parece muy lógico y evidente, pero que no siempre es fácil de recordar y tener en cuenta, sobre todo si el código lo generamos nosotros directamente.&lt;br /&gt;
&lt;br /&gt;
Por suerte, al igual que en el caso de los validadores automáticos de código &lt;strong&gt;CSS&lt;/strong&gt; que ya comentáramos con anterioridad, el &lt;b&gt;World Wide Web Consortium (W3C)&lt;/b&gt; también ha creado un excelente servicio para validar el código fuente de nuestro &lt;strong&gt;proyecto web&lt;/strong&gt;. Un validador que automáticamente detecta el tipo de documento con el que estamos trabajando, ya sea &lt;strong&gt;XHTML&lt;/strong&gt; o &lt;strong&gt;HTML&lt;/strong&gt;, y en tiempo real nos muestra los resultados de la &lt;strong&gt;validación&lt;/strong&gt;, remarcando en caso de error la razón por la cual no es aplicable el código invalidado.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;VALIDADOR (X)HTML&lt;br /&gt;
&lt;/strong&gt;&lt;a href="http://validator.w3.org/"&gt;http://validator.w3.org/&lt;/a&gt; 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7819/805/recomendaciones-validar-nuestro-x-html</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7819/805/recomendaciones-validar-nuestro-x-html</guid>
      <pubDate>Thu, 03 Jul 2008 18:44:06 GMT</pubDate>
    </item>
    <item>
      <title>Recomendaciones: Validar nuestro CSS</title>
      <description>En el mundo actual del &lt;strong&gt;desarrollo web&lt;/strong&gt;, conceptos como &lt;strong&gt;usabilidad&lt;/strong&gt;, &lt;strong&gt;accesibilidad&lt;/strong&gt; y &lt;strong&gt;estándares web&lt;/strong&gt; se han convertido en inseparables compañeros de viaje para todo aquel que se quiera dedicar a la creación, maquetación y diseño de &lt;strong&gt;páginas web&lt;/strong&gt;, y pretenda además ofrecer a los &lt;strong&gt;usuarios&lt;/strong&gt; y &lt;strong&gt;clientes&lt;/strong&gt; un servicio de calidad.&lt;br /&gt;
&lt;br /&gt;
Muchos de estos conceptos han nacido gracias a comunidades como la &lt;strong&gt;World Wide Web Consortium (W3C)&lt;/strong&gt;, que se encarga desde &lt;strong&gt;1994&lt;/strong&gt; de guiar, especificar y definir ciertas recomendaciones o buenas prácticas, para tratar de sacar el máximo partido a las posibilidades y capacidades de la &lt;strong&gt;web&lt;/strong&gt;, pero sobre todo para homogeneizar criterios tanto para &lt;strong&gt;(X)HTML&lt;/strong&gt; como para &lt;strong&gt;CSS&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Al hilo de estas recomendaciones también se han ido creando y desarrollando interesantes &lt;strong&gt;aplicaciones web&lt;/strong&gt; con el objetivo de actuar como validadores de los &lt;strong&gt;estándares web&lt;/strong&gt; promulgados por el &lt;strong&gt;W3C&lt;/strong&gt;. Algunos de estos servicios automatizan las reglas básicas de &lt;strong&gt;(X)HTML&lt;/strong&gt; o &lt;strong&gt;CSS&lt;/strong&gt;, por ejemplo. Unas &lt;strong&gt;herramientas&lt;/strong&gt; que nos ayudan a saber si, como &lt;strong&gt;desarrolladores web&lt;/strong&gt; que somos, estamos generando un código correcto y conforme a los &lt;strong&gt;estándares web&lt;/strong&gt; del &lt;strong&gt;W3C&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;VALIDADOR CSS&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://jigsaw.w3.org/css-validator/"&gt;http://jigsaw.w3.org/css-validator/&lt;/a&gt; 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7798/805/recomendaciones-validar-nuestro-css</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7798/805/recomendaciones-validar-nuestro-css</guid>
      <pubDate>Thu, 03 Jul 2008 11:41:43 GMT</pubDate>
    </item>
    <item>
      <title>Trucos FLASH: Detener un fotograma durante un intervalo de tiempo</title>
      <description>Trabajar con &lt;strong&gt;Flash&lt;/strong&gt; supone todo un reto para los que venimos del mundo &lt;strong&gt;Web&lt;/strong&gt; ya que, aunque aparentemente sencillo, la potencia y versatilidad que encierra &lt;strong&gt;ActionScript&lt;/strong&gt; combinado con las posibilidades gráficas que ya de por si ofrece &lt;strong&gt;Flash&lt;/strong&gt;, hacen de esta &lt;strong&gt;herramienta&lt;/strong&gt; un verdadero misterio y quebradero de cabeza para los que somos relativamente ajenos al &lt;strong&gt;diseño gráfico&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Por suerte, este no es del todo mi caso, ya que siempre me he sentido atraído por la capacidad y la plasticidad visual de &lt;strong&gt;Flash&lt;/strong&gt;, la que para mi sin duda es la &lt;strong&gt;herramienta&lt;/strong&gt; más utilizada para crear &lt;strong&gt;animaciones&lt;/strong&gt; y llamativos &lt;strong&gt;efectos visuales&lt;/strong&gt;, a la espera del despegue definitivo de &lt;b&gt;Silverlight&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Por ello me atrevo ahora a dar algunos de los&lt;strong&gt; trucos&lt;/strong&gt; o &lt;strong&gt;consejos &lt;/strong&gt;que me han ayudado a sacar el máximo partido de &lt;strong&gt;Flash&lt;/strong&gt; en estos años de uso de la &lt;strong&gt;herramienta&lt;/strong&gt;. Aquí va el primero de ellos...&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;DETENER UN FOTOGRAMA DURANTE UN INTERVALO DE TIEMPO&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Muchas veces, cuando estamos trabajando con una &lt;strong&gt;animación&lt;/strong&gt;, más concretamente cuando queremos pasar de una &lt;strong&gt;transición&lt;/strong&gt; a otra, de un &lt;strong&gt;fotograma&lt;/strong&gt; a otro, puede interesarnos establecer un cierto periodo de pausa justo al cargar el nuevo &lt;strong&gt;fotograma&lt;/strong&gt;, o incluso antes de cargarlo, algo que habitualmente, si somos primerizos e inexpertos, se suele conseguir simplemente añadiendo un mayor número de &lt;strong&gt;fotogramas&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
No obstante, mediante &lt;strong&gt;ActionScript&lt;/strong&gt; podemos evitarnos la creación de &lt;strong&gt;fotogramas&lt;/strong&gt; innecesarios, manteniendo así un cierto criterio, orden y control sobre las &lt;strong&gt;escenas&lt;/strong&gt;. Además también podremos controlar en todo momento el intervalo de tiempo que queremos que se detenga nuestra &lt;strong&gt;animación&lt;/strong&gt;, sin tener que estar contando &lt;strong&gt;fotogramas&lt;/strong&gt; ni tener que hacer cálculos con los &lt;strong&gt;fps&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
El &lt;strong&gt;código&lt;/strong&gt; en que deberemos incluir como &lt;strong&gt;acción&lt;/strong&gt; en el &lt;strong&gt;fotograma&lt;/strong&gt; que queremos que se detenga por un intervalo de tiempo es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Ejemplo 1:&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;    stop();&lt;br /&gt;
&lt;br /&gt;
    function seguir():Void { &lt;br /&gt;
        play(); &lt;br /&gt;
        clearInterval(retardo); &lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
    retardo = setInterval(this, "seguir", &lt;strong&gt;3000&lt;/strong&gt;);&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
Donde el valor marcado en negrita es el intervalo de tiempo en milisegundos.&lt;br /&gt;
&lt;br /&gt;
Para los que os interese un poco más saber que se está haciendo con estas líneas de código, deciros que simplemente estamos ejecutando una parada de la &lt;strong&gt;animación&lt;/strong&gt; mediante la llamada a la función &lt;strong&gt;&lt;em&gt;stop()&lt;/em&gt;&lt;/strong&gt;. A esto le sigue una llamada a la función &lt;strong&gt;&lt;em&gt;setInterval()&lt;/em&gt;&lt;/strong&gt; que es la que se encarga de introducir el retardo tras el cual se realizará una llamada a la función que hemos definido previamente como &lt;strong&gt;&lt;em&gt;seguir()&lt;/em&gt;&lt;/strong&gt;. Esta función que hemos creado nosotros y hemos denominado arbitrariamente &lt;strong&gt;&lt;em&gt;seguir()&lt;/em&gt;&lt;/strong&gt; es la que se encarga de reanudar la &lt;strong&gt;animación&lt;/strong&gt; mediante la ejecución primero de la función &lt;strong&gt;&lt;em&gt;play()&lt;/em&gt;&lt;/strong&gt; y justo después de &lt;strong&gt;&lt;em&gt;clearInterval()&lt;/em&gt;&lt;/strong&gt;, que es la que anula y cierra la llamada inicial a &lt;strong&gt;&lt;em&gt;setInterval()&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Más información sobre las &lt;strong&gt;funciones&lt;/strong&gt; predefinidas aquí utilizadas (en inglés):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary682.html" target="_blank"&gt;&lt;strong&gt;stop () :&lt;/strong&gt; Definición en el Sitio de Adobe Flash&lt;br /&gt;
&lt;/a&gt;&lt;a href="http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary622.html" target="_blank"&gt;&lt;strong&gt;play () :&lt;/strong&gt; Definición en el Sitio de Adobe Flash&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary646.html" target="_blank"&gt;&lt;strong&gt;setInterval () :&lt;/strong&gt; Definición en el Sitio de Adobe Flash&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary141.html" target="_blank"&gt;&lt;strong&gt;clearInterval () :&lt;/strong&gt; Definición en el Sitio de Adobe Flash&lt;/a&gt; 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7710/805/trucos-flash-detener-un-fotograma-durante-un-intervalo-de-tiempo</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7710/805/trucos-flash-detener-un-fotograma-durante-un-intervalo-de-tiempo</guid>
      <pubDate>Wed, 25 Jun 2008 18:20:54 GMT</pubDate>
    </item>
    <item>
      <title>Trucos CSS: Optimizando nuestro CSS (I)</title>
      <description>Como ya comenté en mi presentación, uno de los temas principales que se abordará en este &lt;strong&gt;blog&lt;/strong&gt; es el que tiene que ver con las &lt;strong&gt;hojas de estilo&lt;/strong&gt;, también denominadas &lt;strong&gt;cascade style sheet&lt;/strong&gt; y más conocidas como &lt;strong&gt;CSS&lt;/strong&gt;, el termino que se utiliza habitualmente cuando nos referimos a ellas. &lt;br /&gt;
&lt;br /&gt;
Pues bien, las claves fundamentales a la hora de realizar un &lt;strong&gt;archivo CSS&lt;/strong&gt; es que hemos de intentar siempre, como en cualquier otro lenguaje informático, que nuestro código sea limpio, claro y conciso, pero sobre todo hemos de saber optimizar nuestras líneas de código.&lt;br /&gt;
&lt;br /&gt;
Un buen truco para empezar, muy sencillo, a la par que práctico, consiste en utilizar de forma apropiada y eficiente los &lt;strong&gt;atributos&lt;/strong&gt; de los que disponemos, ya que muchos serán los casos en los que podremos simplificar mediante el uso de un único &lt;strong&gt;atributo&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Pero veámoslo mejor con par de ejemplos.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="text-decoration: underline"&gt;Ejemplo 1:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Tenemos definidos los siguientes &lt;strong&gt;atributos&lt;/strong&gt; para las etiquetas &lt;strong&gt;div&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;div {&lt;br /&gt;
  margin-top: 10px;&lt;br /&gt;
  margin-bottom: 5px;&lt;br /&gt;
  margin-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
&lt;/em&gt;&lt;br /&gt;
No obstante podemos utilizar directamente el atributo &lt;strong&gt;margin &lt;/strong&gt;(top,right,bottom,left)&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;div {&lt;br /&gt;
   margin: 10px 15px 5px 0px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/em&gt;Como se puede observar, hemos optimizado considerablemente las líneas de CSS utilizadas, y el resultado es el mismo. Este sencillo truco se puede aplicar también al atributo &lt;strong&gt;padding&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Veamos otro ejemplo más.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="text-decoration: underline"&gt;Ejemplo 2:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;Definimos los siguientes &lt;b&gt;atributos&lt;/b&gt; para las etiquetas &lt;strong&gt;table&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;table {&lt;br /&gt;
  border-color: #000000;&lt;br /&gt;
&lt;i&gt;  border-style: solid;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;  border-width: 10px;&lt;/i&gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
No obstante podemos utilizar directamente el atributo &lt;b&gt;border &lt;/b&gt;(width,style,color)&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;table {&lt;br /&gt;
   border: 10px solid #000000;&lt;br /&gt;
}&lt;/em&gt; 
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7605/805/trucos-css-optimizando-nuestro-css-i</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7605/805/trucos-css-optimizando-nuestro-css-i</guid>
      <pubDate>Sun, 15 Jun 2008 17:11:57 GMT</pubDate>
    </item>
    <item>
      <title>Recomendaciones: Plantillas de Dreamweaver</title>
      <description>Una de las primeras cosas que aprendí en mi incorporación a &lt;b&gt;Avanzis&lt;/b&gt;, porque uno nunca deja de aprender cosas nuevas cada día, fue la utilización de &lt;b&gt;Plantillas Base&lt;/b&gt; de &lt;b&gt;Dreamweaver&lt;/b&gt;, archivos &lt;b&gt;.dwt&lt;/b&gt;, para la creación y desarrollo de un &lt;b&gt;Proyecto Web&lt;/b&gt;. Hasta aquel momento todas las &lt;b&gt;Páginas Web&lt;/b&gt; que había realizado, meramente corporativas y con apenas un nivel de profundidad, no habían necesitado de mayores exigencias que dos o tres archivos &lt;b&gt;HTML&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Pero a la hora de abordar un&lt;b&gt; Proyecto Web&lt;/b&gt; de cierta envergadura, algunos me dirán que es aplicable a cualquier &lt;b&gt;Web&lt;/b&gt; en realidad independientemente del tamaño, la necesidad de crear dichas &lt;b&gt;Plantillas&lt;/b&gt; se vuelve realmente primordial. Resulta inconcebible por ejemplo, tratar de llevar adelante una &lt;b&gt;Tienda Online&lt;/b&gt;, con cientos de productos, y tener que generar desde cero una nueva página &lt;b&gt;HTML&lt;/b&gt; por cada uno de ellos. Con las &lt;b&gt;Plantillas &lt;/b&gt;podemos definir la estructura principal de nuestra maquetación, y así por ejemplo crear un punto a partir del cual generar los &lt;b&gt;HTML&lt;/b&gt; de todos nuestros &lt;b&gt;Productos&lt;/b&gt;, pudiendo reutilizar además de manera controlada la mayoría del código necesario, que solo será modificable desde la &lt;b&gt;Plantilla&lt;/b&gt; originaria. Del mismo modo podremos habilitar &lt;b&gt;Regiones Editables&lt;/b&gt;, que nos permitirán definir nuevas líneas de código en las páginas que creemos a partir de la &lt;b&gt;Plantilla&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Además, otra cuestión realmente curiosa e interesante respecto a los &lt;b&gt;.dwt&lt;/b&gt; es que podemos optar por anidar varias &lt;b&gt;Plantillas&lt;/b&gt;, con lo que podemos por ejemplo diseccionar las distintas partes de un &lt;b&gt;Proyecto Web&lt;/b&gt;, y definir cada una de ellas por separado, heredando eso sí de una &lt;b&gt;Plantilla &lt;/b&gt;general donde podemos definir por ejemplo el &lt;b&gt;diseño&lt;/b&gt; y la &lt;b&gt;maquetación&lt;/b&gt; de la &lt;b&gt;Web&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Adicionalmente con &lt;b&gt;Avanzis Webportal&lt;/b&gt; podemos ir un paso más allá mediante la utilización de &lt;b&gt;Controles de Usuario Web&lt;/b&gt; de &lt;b&gt;ASP .NET&lt;/b&gt;, los denominados ficheros &lt;b&gt;.ascx&lt;/b&gt;, con los que podemos además llegar a utilizar un único fichero a partir del cual generar, por ejemplo, el código &lt;b&gt;HTML&lt;/b&gt; de todos los productos, logrando así reutilizar el código que nosotros consideremos oportuno en todas nuestras páginas &lt;b&gt;Web&lt;/b&gt;. Gracias a &lt;b&gt;Avanzis Webportal&lt;/b&gt; los &lt;b&gt;Desarrolladores&lt;/b&gt; podemos definir un único fichero &lt;b&gt;.ascx&lt;/b&gt; para cada tipología de información, ya sean noticias, productos, galerías de imágenes, lo cual otorga a nuestra &lt;b&gt;Aplicación&lt;/b&gt; de una gran capacidad de &lt;b&gt;escalabilidad&lt;/b&gt;.&lt;br /&gt;
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7484/805/recomendaciones-plantillas-de-dreamweaver</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7484/805/recomendaciones-plantillas-de-dreamweaver</guid>
      <pubDate>Sun, 08 Jun 2008 11:32:29 GMT</pubDate>
    </item>
    <item>
      <title>Comparativas: Photoshop vs Fireworks</title>
      <description>Cuando llegué a &lt;b&gt;Avanzis&lt;/b&gt;, hace ya más de año y medio, se sorprendieron de que a la hora de realizar un &lt;b&gt;diseño gráfico&lt;/b&gt; o algún &lt;b&gt;tratamiento de imagen&lt;/b&gt; me decantara, sin pensármelo dos veces, por utilizar &lt;b&gt;Photoshop&lt;/b&gt;, en sus versiones &lt;b&gt;CS2&lt;/b&gt; y &lt;b&gt;CS3&lt;/b&gt;, en lugar de usar &lt;b&gt;Fireworks&lt;/b&gt;, herramienta de &lt;b&gt;Macromedia&lt;/b&gt; con la que mis compañeros estaban habituados a trabajar. &lt;br /&gt;
&lt;br /&gt;
Mientras, la compra de &lt;b&gt;Macromedia&lt;/b&gt; a manos de &lt;b&gt;Adobe &lt;/b&gt;ya era un hecho consumado, e incluso habían apuestas por ver cual de los dos productos sobreviría o cual pasaría a mejor vida. Y la realidad es que aunque actualmente todavía conviven ambos, &lt;b&gt;Fireworks&lt;/b&gt; ha pasado a un discreto segundo plano.&lt;br /&gt;
&lt;br /&gt;
No obstante, en nuestra oficina sigue siendo la herramienta de edición de imagenes más ultilizada, ya que &lt;b&gt;Fireworks&lt;/b&gt; cubre las necesidades básicas de edición o creación que habitualmente se generan, que no son pocas. Por otro lado, nuestro &lt;b&gt;diseñador gráfico&lt;/b&gt;, que es quien se encarga de realizar la maquetación para nuestras webs trabaja en &lt;b&gt;Photoshop&lt;/b&gt;, y las propuestas y bocetos que realiza nos los pasa siempre en formato &lt;b&gt;PSD&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
En mi caso en particular, como ya he mencionado, soy un habitual del &lt;b&gt;Photoshop&lt;/b&gt;, algo que quizás se deba al hecho de haber probado antes mil y una herramientas diferentes, desde el &lt;b&gt;Corel Draw&lt;/b&gt; pasando por el &lt;b&gt;Paint Shop Pro&lt;/b&gt;. Pero tan solo con &lt;b&gt;Photoshop&lt;/b&gt; he visto cumplidas mis expectativas y necesidades reales de una herramienta para utilizar en todos los ámbitos del &lt;b&gt;diseño&lt;/b&gt; y la &lt;b&gt;edición de imágenes&lt;/b&gt;. Digamoslo así me he acostumbrado a usar &lt;b&gt;Photoshop&lt;/b&gt; a pesar de su aparente complejidad, repito y recalco, aparente.&lt;br /&gt;
&lt;br /&gt;
Pero, ¿realmente es mejor &lt;b&gt;Photoshop&lt;/b&gt;?, ¿o mejor nos quedamos con &lt;b&gt;Fireworks&lt;/b&gt;?. Para obtener una respuesta clara, y antes de decidirnos por una u otra aplicación, quizás haya que tener en cuenta dos factores previamente. &lt;br /&gt;
&lt;br /&gt;
El primero de ellos es el nivel de familiaridad con las &lt;b&gt;herramientas de edición de imágenes&lt;/b&gt;. Si somos usuarios avanzados, con inquietudes de diseño, y una cierta creatividad, el paso a &lt;b&gt;Photoshop&lt;/b&gt;, más que recomendable, resulta necesario. Para el resto, con necesidades más basicas como redimensionar, optimizar, lo más fácil, rápido e inmediato resulta sin duda el uso de &lt;b&gt;Fireworks&lt;/b&gt;, ya que en esta herramienta existe un cierto equilibrio entre la facilidad de uso y la calidad en los resultados.&lt;br /&gt;
&lt;br /&gt;
El segundo es el ámbito de utilización. &lt;b&gt;Diseñadores gráficos&lt;/b&gt;, &lt;b&gt;maquetadores&lt;/b&gt; y &lt;b&gt;publicistas&lt;/b&gt; en general usan en su gran mayoría &lt;b&gt;Photoshop&lt;/b&gt;, tanto por la cantidad de opciones de &lt;b&gt;retoque fotográfico&lt;/b&gt;, las infinitas &lt;b&gt;texturas&lt;/b&gt;, la perfección de los acabados, como por la versatilidad de la herramienta, y la necesidad de adaptarse a un formato estandar con las imprentas. Por otro lado, &lt;b&gt;Fireworks&lt;/b&gt; parece tener más tirón entre el mundo &lt;b&gt;Web&lt;/b&gt;, siendo sin duda su punto fuerte la optimización de las imágenes así como la rapidez y la fácilidad en el manejo.&lt;br /&gt;
&lt;br /&gt;
Pero lo mejor de todo será conocer la visión que el fabricante tiene de su propio producto. Esto es lo que podemos leer en la web de &lt;b&gt;Adobe &lt;/b&gt;sobre &lt;b&gt;Fireworks CS3&lt;/b&gt;: &lt;i&gt;"Acelere el diseño y el desarrollo de webs con el software Adobe® Fireworks® CS3, la herramienta ideal para crear y optimizar imágenes para la web, así como para diseñar rápidamente prototipos de sitios web."&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Curioso ¿verdad?...&lt;br /&gt;
</description>
      <link>http://www.avanzis.com/blogs/javier-belmonte/i/7443/805/comparativas-photoshop-vs-fireworks</link>
      <guid isPermaLink="true">http://www.avanzis.com/blogs/javier-belmonte/i/7443/805/comparativas-photoshop-vs-fireworks</guid>
      <pubDate>Tue, 03 Jun 2008 16:09:42 GMT</pubDate>
    </item>
  </channel>
</rss>