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

<channel>
	<title>Web Archivos | Develooping</title>
	<atom:link href="https://www.develooping.com/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.develooping.com/category/internet/</link>
	<description>Web design and programming</description>
	<lastBuildDate>Sun, 05 May 2024 17:20:36 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>No soy un robot</title>
		<link>https://www.develooping.com/no-soy-un-robot/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Sun, 05 May 2024 17:20:36 +0000</pubDate>
				<category><![CDATA[Humanidad]]></category>
		<category><![CDATA[Inclasificable]]></category>
		<category><![CDATA[Política]]></category>
		<category><![CDATA[Prensa]]></category>
		<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.develooping.com/?p=9016</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/no-soy-un-robot/">No soy un robot</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/no-soy-un-robot/">No soy un robot</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Premium</title>
		<link>https://www.develooping.com/premium/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 16 Dec 2020 20:55:05 +0000</pubDate>
				<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Inter]]></category>
		<category><![CDATA[Religión]]></category>
		<guid isPermaLink="false">https://www.develooping.com/?p=7575</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/premium/">Premium</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/premium/">Premium</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Something went wrong</title>
		<link>https://www.develooping.com/something-went-wrong/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Mon, 14 Dec 2020 18:18:13 +0000</pubDate>
				<category><![CDATA[Cine]]></category>
		<category><![CDATA[Estados Unidos]]></category>
		<category><![CDATA[Humanidad]]></category>
		<category><![CDATA[Inclasificable]]></category>
		<category><![CDATA[Internacional]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Opinión]]></category>
		<guid isPermaLink="false">https://www.develooping.com/?p=7569</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/something-went-wrong/">Something went wrong</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/something-went-wrong/">Something went wrong</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fuentes</title>
		<link>https://www.develooping.com/fuentes/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 16 Sep 2020 09:16:57 +0000</pubDate>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Fake News]]></category>
		<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Diseño Gráfico]]></category>
		<category><![CDATA[Salud]]></category>
		<guid isPermaLink="false">https://www.develooping.com/?p=7332</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/fuentes/">Fuentes</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/fuentes/">Fuentes</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Carros, carretas y carritos</title>
		<link>https://www.develooping.com/carros-carretas-y-carritos/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Fri, 29 Nov 2019 19:09:01 +0000</pubDate>
				<category><![CDATA[Ecología]]></category>
		<category><![CDATA[Economía]]></category>
		<category><![CDATA[Historia]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Tierra]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=6018</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/carros-carretas-y-carritos/">Carros, carretas y carritos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/carros-carretas-y-carritos/">Carros, carretas y carritos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Alibebé</title>
		<link>https://www.develooping.com/alibebe/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Mon, 26 Nov 2018 21:22:28 +0000</pubDate>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=4241</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/alibebe/">Alibebé</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/alibebe/">Alibebé</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Descarga aquí</title>
		<link>https://www.develooping.com/descarga-aqui/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 29 Nov 2017 22:30:10 +0000</pubDate>
				<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Humor]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=4592</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/descarga-aqui/">Descarga aquí</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/descarga-aqui/">Descarga aquí</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Buscando en Google</title>
		<link>https://www.develooping.com/buscando-en-google/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Sun, 12 Nov 2017 11:49:36 +0000</pubDate>
				<category><![CDATA[Sociedad]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Pobreza]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=4625</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/buscando-en-google/">Buscando en Google</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/buscando-en-google/">Buscando en Google</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>El resto de su vida</title>
		<link>https://www.develooping.com/el-resto-de-su-vida/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Thu, 09 Nov 2017 07:30:20 +0000</pubDate>
				<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Sociedad]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=4631</guid>

					<description><![CDATA[<p>La entrada <a href="https://www.develooping.com/el-resto-de-su-vida/">El resto de su vida</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrada <a href="https://www.develooping.com/el-resto-de-su-vida/">El resto de su vida</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Influencers e influenciados</title>
		<link>https://www.develooping.com/influencers-e-influenciados/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 04 Oct 2017 14:47:37 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Opinión]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2760</guid>

					<description><![CDATA[<p>Influencio Arístides tiene aproximadamente 20 millones de subscriptores en su canal de YouTube. Eso si, cuando lees los comentarios, encuentras pocas señales de vida inteligente. Muchos son tan tontos, que aunque hayan sido publicados por humanos, sus autores parecen incapaces de superar el test de Turing.</p>
<p>La entrada <a href="https://www.develooping.com/influencers-e-influenciados/">Influencers e influenciados</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Influencio Arístides tiene aproximadamente 20 millones de subscriptores en su canal de YouTube. Eso si, cuando lees los comentarios, encuentras pocas señales de vida inteligente. <strong>Muchos son tan tontos, que aunque hayan sido publicados por humanos, sus autores parecen incapaces de superar el test de Turing</strong>.</p>
<p>Muchas compañías han visto en Influencio una buena herramienta para <strong>cautivar a una legión de jóvenes que lo han convertido en un ídolo</strong>, así que ahora está estudiando una oferta que podría sumarse a los anuncios que ya ha hecho para Pony, Santa, Kit Rat, Vellogs, Comino&#8217;s Pizza y Oscar Rayer.</p>
<p><strong>Las nuevas plataformas informáticas necesitan tener también sus propios ídolos y su propia mitología para poder competir con los medios de entretenimiento tradicionales</strong>. Para alimentar la leyenda se habla de los ingresos que obtienen algunos <em>youtubers</em> famosos, pero el sistema no podría funcionar sin la participación de millones de aspirantes anónimos. Casi ninguno gana nada, algunos pocos ganan una pequeña cantidad que no da ni remotamente para plantearse vivir de ello, y solo unas pocas estrellas (muy, muy pocas) pueden vivir a costa de todo esto.</p>
<p>Es verdad que los medios tradicionales han perdido credibilidad entre los más jóvenes, que no confían en los sistemas de comunicación clásicos, ni en las empresas, ni en los políticos… pero los han reemplazado por otros que, a pesar de presentarse como novedad o alternativa a lo antiguo, reproducen y multiplican todos los vicios y defectos de sistemas que ya parecían caducos hace tiempo.</p>
<p>Entre los subscriptores de Influencio hay montones de niños con edades cada vez menores, a los que no les ha dado tiempo a desarrollar una personalidad ni ideas propias sobre casi nada. Aún así piensan que pueden llegar a triunfar como él, ya que <strong>le perciben como alguien normal que hace vídeos desde su habitación</strong>, como ellos… y no les falta razón.</p>
<p>En la actualidad, las leyes en España imponen un <a href="https://support.google.com/accounts/answer/1350409?hl=es-419" target="_blank">límite de edad de 14 años para tener una cuenta de Google</a>. Este límite oscila entre los 13 y 16 años según el país, pero en la práctica no existe ningún tipo de control sobre este tema y <strong>cualquier niño puede convertirse en mayor por arte y gracia del engaño digital</strong> sin que medie ninguna comprobación.</p>
<p>Cada vez hay más <strong>niños con móviles o <em>tablets</em> y cuentas propias, cuyas opiniones valen para cualquier plataforma tanto como las opiniones de un premio Nóbel</strong>. Porque si algo tienen las plataformas actuales es que <strong>centran su atención en la cantidad</strong>; es algo que les interesa y pueden medir con facilidad. La calidad es algo que por ahora no pueden cuantificar y como consecuencia la tratan con poca consideración.</p>
<p>Eso podría explicar algunas paradojas del medio digital. Por poner solo un ejemplo, en YouTube podrás encontrar varias copias de Ciudadano Kane, una obra maestra que sentó buena parte de las bases del lenguaje cinematográfico moderno, pero que en el mejor de los casos no llega a las 100.000 visitas, mientras que cualquier vídeo de recopilación de gatitos multiplica fácilmente ese número por 50.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>La entrada <a href="https://www.develooping.com/influencers-e-influenciados/">Influencers e influenciados</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>El fin de Google</title>
		<link>https://www.develooping.com/el-fin-de-google/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Tue, 01 Aug 2017 17:15:00 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Opinión]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2458</guid>

					<description><![CDATA[<p>Últimamente las multinacionales tecnológicas presumen del uso de inteligencia artificial, pero la verdad es que, hoy por hoy, utilizar la palabra inteligencia referida a los algoritmos informáticos empleados no deja de ser una profunda infravaloración del término y su significado.</p>
<p>La entrada <a href="https://www.develooping.com/el-fin-de-google/">El fin de Google</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Últimamente las multinacionales tecnológicas presumen del uso de <a href="http://www.develooping.com/deep-learning/">inteligencia artificial</a>, pero la verdad es que, hoy por hoy, <strong>utilizar la palabra inteligencia referida a los algoritmos informáticos empleados no deja de ser una profunda infravaloración del término</strong> y su significado.</p>
<h5>Inteligencia artificiosa</h5>
<p>Es verdad que se ha avanzado mucho en reconocimiento de imágenes, se han mejorado las traducciones haciendo que los humanos enseñen a las máquinas, se ha conseguido que los ordenadores se acerquen un poco más a interpretar correctamente el significado de algunas expresiones y se ha progresado en tecnologías predictivas. Y como es lógico, también se ha logrado que la inteligencia artificial sea más eficiente que la humana en determinadas áreas.</p>
<p>Con los avances en inteligencia artificial, los ordenadores también pueden reconocer elementos de una fotografía o un vídeo. Pueden identificar rostros, algunas expresiones faciales, escanear el audio para detectar palabras o localizar contenidos con derechos protegidos, pero <strong>por ahora seguirán siendo incapaces de detectar el valor artístico de una fotografía o la gracia de una escena en vídeo</strong>.</p>
<p>A pesar de todos los avances logrados hasta la fecha, ninguna de las técnicas de inteligencia artificial está exenta de errores.<strong> Los algoritmos más &#8220;inteligentes&#8221; de Google aún son incapaces de saber si un texto tiene un mínimo de calidad o si transmite con mayor o menor fortuna una idea</strong>. Por eso, siempre colocarán en mejor posición cualquier texto que cumpla fielmente con unas recomendaciones relacionadas con parámetros que pueden cuantificar.</p>
<h5>Buscar nuevos caminos</h5>
<p>Recordemos que <strong>Google llegó a ser lo que es por introducir en los buscadores tradicionales un factor de ordenación basado en la relevancia</strong>. Que hubiera muchos sitios con vínculos a una web indicaba que ésta debía tener relevancia. Una vez establecido esto, parecía evidente que los vínculos procedentes de lugares más relevantes debían aportar más valor que los que procedían de lugares con poca o nula relevancia.</p>
<p>Sobre esta idea inicial se han ido añadiendo nuevos criterios y complejos algoritmos, pero la base sigue siendo la misma.</p>
<p>Evidentemente a Google le va buena parte del negocio en devolver resultados coherentes con las búsquedas, pero ya solo puede conseguir esa coherencia dictando las condiciones y los factores que tendrán en consideración. Eso <strong>ha condicionado enormemente la creación de contenidos, que deben someterse a determinadas reglas, integrar determinados elementos y adoptar determinadas formas si quieren ser tenidos en consideración</strong>.</p>
<h5>Dictadura digital</h5>
<p>Es comprensible que esta situación pueda ser considerada por algunos algo parecido a <strong>una forma de dictadura</strong>. Usar determinados criterios, como por ejemplo el tiempo de estancia en una página, podría aportar información relevante, pero cuando es un dato que solo pueden conocer si se han añadido en ella códigos de Google, los resultados siempre serán sesgados y primarán aquellas páginas que hacen uso de sus productos.</p>
<p><strong>La historia humana en general, y la de la informática en particular, está llena de imperios que cayeron y fueron reemplazados por otros</strong>. La supremacía digital que Microsoft ostentó en otros tiempos ahora pertenece a Google, entre otras cosas porque la primera no supo ver en su momento la importancia que iba a desarrollar internet en el futuro de la informática.</p>
<p><strong>Google triunfó sobre otros buscadores porque dio con una mejor manera de  ordenar los resultados</strong>. Desde entonces legiones de especialistas intentan interpretar los algoritmos de Google y usan los más variados métodos con idea de influir en los resultados en un medio en el que la posición puede ser determinante en el éxito de un negocio. Google, por su lado, <strong>dicta recomendaciones y va modificando su algoritmo para intentar dejar fuera a aquellos que no los siguen</strong>.</p>
<p>Todo esto hace que la situación actual sea algo incoherente, ya que aunque ahora usen algoritmos de inteligencia artificial, éstos no dejan de ser básicos, específicos e insuficientes. Por ahora siguen obteniendo mejores resultados aquellos contenidos que siguen las recomendaciones del buscador. Pero <strong>lo que busca una persona no es el resultado que mejor haya aplicado las recomendaciones de Google, sino el que mejor responda su consulta</strong>.</p>
<p><strong>Este juego del gato y el ratón</strong> —gente creando contenidos de forma que mejore su posición, y Google intentando devolver los resultados más relevantes— <strong>podría acabarse si se consiguiera avanzar en inteligencia artificial tanto como para poder devolver las cosas a la casilla de salida, cuando los contenidos no tenían que someterse a las reglas impuestas por los motores de búsqueda</strong>.</p>
<h5>Ávidos de resultados</h5>
<p>Como dije antes, Google llegó a ser lo que es por encontrar un método que permitía devolver resultados más fiables en las búsquedas y desde entonces ha avanzado bastante. Pero no hay duda de que, de la misma forma que en su momento desbancó a los buscadores más usados, <strong>si surgieran nuevos métodos capaces de entender inteligentemente lo que se busca y dar resultados más coherentes sin tener que imponerle al contenido el cumplimiento de determinados requisitos, las cosas podrían volver a cambiar</strong>.</p>
<p>En Google lo saben bien y por eso  han invertido enormes cifras en nuevas tecnologías como la computación cuántica y la inteligencia artificial. Tampoco han dejado de integrar servicios para hacerse más imprescindibles y explorar otras vías de negocio por si algún competidor llega antes a esa meta. Pero como ya ha ocurrido en el pasado, podría ser que el futuro no viniera de donde Google cree. Aunque todas las grandes compañías parecen tener claro que la inteligencia artificial jugará un papel importante, al final <strong>la clave no es la tecnología utilizada sino descubrir qué mejoras te darán ventaja sobre la competencia</strong>, y el futuro siempre ha tenido la cualidad de ser diferente de lo que se esperaba. <strong>No sería la primera vez que vemos caer a un gigante</strong>.</p>
<p>La entrada <a href="https://www.develooping.com/el-fin-de-google/">El fin de Google</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Colorear parte de imagen con Canvas</title>
		<link>https://www.develooping.com/colorear-parte-de-imagen-con-canvas/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 24 May 2017 16:44:21 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2324</guid>

					<description><![CDATA[<p>En esta ocasión ampliaremos lo explicado anteriormente para ofrecer una solución que permite colorear dinámicamente parte de una imagen y que funciona en todos los navegadores recientes, tanto en escritorio como en dispositivos móviles.</p>
<p>La entrada <a href="https://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de imagen con Canvas</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Hace unos días publiqué una entrada en la que explicaba cómo hacer uso de la propiedad CSS mix-blend-mode para conseguir <a href="/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">colorear parte de una imagen</a>. Pero como suele ocurrir frecuentemente, los navegadores de Microsoft se han quedado atrás en la adopción de esa propiedad a pesar de ser una recomendación oficial, así que la solución planteada no funcionaba correctamente en ellos. En esta ocasión ampliaremos lo explicado anteriormente para ofrecer <strong>una solución que cubre todos los navegadores recientes</strong>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Como ya teníamos una solución válida para la mayoría de los navegadores, lo primero que haremos es detectar si el navegador soporta los efectos de fusión de capas por CSS, para ofrecerle una solución alternativa en caso contrario. Y como siempre que queremos detectar si el navegador soporta o no determinada propiedad, lo mejor es echar mano de <a href="https://modernizr.com/download?backgroundblendmode-setclasses" target="_blank" rel="noopener noreferrer">Modernizr</a>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img fetchpriority="high" decoding="async" width="600" height="300" src="https://www.develooping.com/wp-content/uploads/2017/05/css-background-modernizr.gif" class="vc_single_image-img attachment-full" alt="modernizr" title="css-background-modernizr" /></div>
		</div>
	</div>
	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Para construir nuestro script de detección de propiedades, seleccionamos &#8220;CSS Background Blend Mode&#8221; y pulsamos el botón &#8220;Build&#8221;. Eso es todo, no necesitamos detectar nada más. En nuestro caso lo hemos renombrado como modernizr-backgroundblend.js</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="Modernizr">&lt;script type="text/javascript" src="js/modernizr-backgroundblend.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;

if (Modernizr.backgroundblendmode) {
  	// mix-blend-mode supported
} else {
  	// mix-blend-mode not-supported (use canvas)
}
&lt;/script&gt;</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>La página</h5>
<p>La idea es seguir conservando la versión anterior en aquellos navegadores en los que funciona, y ofrecer una alternativa a través de canvas para los demás. Es cierto que la opción basada en canvas funcionaría correctamente en todos los navegadores recientes, pero mantendremos también la versión anterior por razones de rendimiento.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="La página completa">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
	&lt;meta charset="UTF-8" &gt;

	&lt;title&gt;Change Image Color&lt;/title&gt;

	&lt;link rel="stylesheet" href="styles/styles.css"&gt;
	&lt;link rel="stylesheet" href="styles/jquery.simplecolorpicker.css"&gt;

	&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js"&gt;&lt;/script&gt;
	&lt;script type="text/javascript" src="js/jquery.simplecolorpicker.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="js/modernizr-backgroundblend.js"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div id="tshirt_container"&gt;
	&lt;img src="images/white-t-shirt.jpg" class="tshirt_layer" id="tshirt_layer_1"&gt;
	&lt;img src="images/guy.png" class="tshirt_layer" id="tshirt_layer_2"&gt;	
&lt;/div&gt;

&lt;select name="colorpicker-shortlist" id="colorpicker"&gt;
  &lt;option value="#7bd148""&gt;Green&lt;/option&gt;
  &lt;option value="#5484ed"&gt;Bold blue&lt;/option&gt;
  &lt;option value="#a4bdfc"&gt;Blue&lt;/option&gt;
  &lt;option value="#46d6db"&gt;Turquoise&lt;/option&gt;
  &lt;option value="#7ae7bf"&gt;Light green&lt;/option&gt;
  &lt;option value="#51b749"&gt;Bold green&lt;/option&gt;
  &lt;option value="#fbd75b"&gt;Yellow&lt;/option&gt;
  &lt;option value="#ffb878"&gt;Orange&lt;/option&gt;
  &lt;option value="#ff887c"&gt;Red&lt;/option&gt;
  &lt;option value="#dc2127"&gt;Bold red&lt;/option&gt;
  &lt;option value="#dbadff"&gt;Purple&lt;/option&gt;
  &lt;option value="#e1e1e1"&gt;Gray&lt;/option&gt;
  &lt;option value="#cabdbf"&gt;#cabdbf&lt;/option&gt;
&lt;/select&gt;

&lt;script type="text/javascript"&gt;
$(window).load(function() {//we need to be sure that the images have loaded 

	if (Modernizr.backgroundblendmode) {// mix-blend-mode supported

    	$('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
		$('select[name="colorpicker-shortlist"]').on('change', function() {
    		$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
  		});	

	} else {// mix-blend-mode not-supported (use canvas)

        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint &gt;&gt; 16) &amp; 255;
    		color_array[1] = (bigint &gt;&gt; 8) &amp; 255;
    		color_array[2] = bigint &amp; 255;
    		return color_array;
		}

        $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');

        $('select[name="colorpicker-shortlist"]').on('change', function() {

    		multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

    		redraw();

  		});

  		function redraw(){

  			imageBottom = document.getElementById('tshirt_layer_1');
  			$('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);

			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);

			// Get the CanvasPixelArray from the given coordinates.
			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;

			//multiplyColor = [80, 120, 10];
			multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

	    	// Loop over each pixel and change the color.
			for (var i = 0, n = pix.length; i &lt; n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); // red
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]); // green
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]); // blue
    			// pix[i+3] is alpha channel (ignored)
			}
			// Draw the result on the canvas
			ctx.putImageData(imgData, 0, 0);

			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}

		}

		redraw();

	}

})
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si lo comparas con la solución planteada en la entrada anterior verás que la parte</p>
<pre class="lang:js decode:true " title="mix-blend-mode supported">if (Modernizr.backgroundblendmode) {// mix-blend-mode supported

    	$('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
		$('select[name="colorpicker-shortlist"]').on('change', function() {
    		$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
  		});	

}</pre>
<p>es esencialmente idéntica y que todo lo nuevo ha sido añadido si no se cumple la condición (else).<br />
También verás que hemos cambiado <code>$(document).ready(function() {</code> por <code>$(window).load(function() {</code><br />
Esto es así porque necesitamos asegurarnos de que las imágenes han sido cargadas para poder hacer operaciones con ellas.</p>
<p>La programación para crear un efecto multiply aplicando un color a una imagen se basa directamente en <a href="http://albertogasparin.it/articles/2011/05/html5-multiply-filter-canvas/" target="_blank" rel="noopener noreferrer">lo explicado en esta página</a> añadiéndole algunas variaciones. En primer lugar lo hemos &#8220;empaquetado&#8221; en una función (redraw), y le hemos añadido una nueva función (hexToRgb) para convertir los valores devueltos por el selector de colores al formato de array [r,g,b] que necesita.</p>
<p>Como necesitamos poder aplicar la función múltiples veces, dentro de la misma usamos la expresión jQuery <code>$('#tshirt_container canvas').remove();</code> para eliminar el elemento canvas antes de volverlo a recrear.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="else">else {// mix-blend-mode not-supported (use canvas)

        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint &gt;&gt; 16) &amp; 255;
    		color_array[1] = (bigint &gt;&gt; 8) &amp; 255;
    		color_array[2] = bigint &amp; 255;
    		return color_array;
		}

        $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');

        $('select[name="colorpicker-shortlist"]').on('change', function() {

    		multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

    		redraw();

  		});

  		function redraw(){

  			imageBottom = document.getElementById('tshirt_layer_1');
  			$('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);

			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);

			// Get the CanvasPixelArray from the given coordinates.
			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;

			//multiplyColor = [80, 120, 10];
			multiplyColor = hexToRgb($('select[name="colorpicker-shortlist"]').val());

	    	// Loop over each pixel and change the color.
			for (var i = 0, n = pix.length; i &lt; n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); // red
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]); // green
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]); // blue
    			// pix[i+3] is alpha channel (ignored)
			}
			// Draw the result on the canvas
			ctx.putImageData(imgData, 0, 0);

			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}

		}

		redraw();

	}

</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El CSS</h5>
<p>Modernizr también introduce las clases  <code>.backgroundblendmode</code> y <code>.no-backgroundblendmode</code> para poder realizar selecciones en nuestro CSS basados en la detección de esta propiedad. Nuestro CSS queda prácticamente idéntico al del ejemplo anterior, pero aprovechamos para añadir la propiedad CSS <code>mix-blen-mode: multiply</code> solo en el caso de estar soportada.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="Estilos">.simplecolorpicker{
 max-width: 300px;
}
.simplecolorpicker span.color[data-selected]:after {
  content: '\2714'; /* Ok/check mark */
  width: 12px;
  display: block;
  padding-left: 4px
}

/*t-shirt*/
#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
}

#tshirt_container .tshirt_layer, #tshirt_container canvas{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}

#tshirt_layer_1{
 z-index: 1;
}

#tshirt_layer_2{
	z-index: 3;
}
.backgroundblendmode #tshirt_layer_2 { 
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}

.no-backgroundblendmode  #tshirt_layer_2  { 
/*styles if background blend mode is not supported*/ 
}

#tshirt_container canvas{
 	z-index: 2;
}</pre>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El resultado</h5>
<p>Aquí tienes el resultado de todo el código anterior. Puedes usar el botón &#8220;Descargar&#8221; al final de la página para bajarte una copia con todos los scripts, estilos y archivos necesarios.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="tshirt_container"><img decoding="async" id="tshirt_layer_1" class="tshirt_layer" src="/wp-content/uploads/2017/05/white-t-shirt.jpg" alt="t-shirt background" /><img decoding="async" id="tshirt_layer_2" class="tshirt_layer" src="/wp-content/uploads/2017/05/guy.png" alt="guy with t-shirt" /></div>
<p><select id="colorpicker" name="colorpicker-shortlist"><option value="#7bd148">Green</option><option value="#5484ed">Bold blue</option><option value="#a4bdfc">Blue</option><option value="#46d6db">Turquoise</option><option value="#7ae7bf">Light green</option><option value="#51b749">Bold green</option><option value="#fbd75b">Yellow</option><option value="#ffb878">Orange</option><option value="#ff887c">Red</option><option value="#dc2127">Bold red</option><option value="#dbadff">Purple</option><option value="#e1e1e1">Gray</option><option value="#cabdbf">#cabdbf</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="/wp-content/themes/bridge-child/js/jquery.simplecolorpicker.js"></script>
<!--<script type="text/javascript" src="/wp-content/themes/bridge-child/js/modernizr-backgroundblend.js"></script>-->
<script type="text/javascript">
jQuery(window).load(function() {

	if (Modernizr.backgroundblendmode) {
  	
    	jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
   	 	jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
		jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    		jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
  		});	
  	  		 		
  		
	} else {


        function hexToRgb(hex) {       
            var color_array = new Object();
            hex = hex.replace(/[^0-9A-F]/gi, '');
    		var bigint = parseInt(hex, 16);
    		color_array[0] = (bigint >> 16) & 255;
    		color_array[1] = (bigint >> 8) & 255;
    		color_array[2] = bigint & 255;
    		return color_array;
		}
 
        jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
        
        
        jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    		
    		multiplyColor = hexToRgb(jQuery('select[name="colorpicker-shortlist"]').val());
    		
    		redraw();
    		
  		});
  		
  		function redraw(){
 		
  			imageBottom = document.getElementById('tshirt_layer_1');
  			jQuery('#tshirt_container canvas').remove(); 
			canvas = document.createElement('canvas');
			canvas.width = imageBottom.width;
			canvas.height = imageBottom.height;
			imageBottom.parentNode.insertBefore(canvas, imageBottom);
		
			ctx = canvas.getContext('2d');
			ctx.drawImage(imageBottom, 0, 0);
		

			imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			pix = imgData.data;
		

			multiplyColor = hexToRgb(jQuery('select[name="colorpicker-shortlist"]').val());
		

			for (var i = 0, n = pix.length; i < n; i += 4) {
    			pix[i  ] = multiply(multiplyColor[0], pix[i  ]); 
    			pix[i+1] = multiply(multiplyColor[1], pix[i+1]);
    			pix[i+2] = multiply(multiplyColor[2], pix[i+2]);

			}

			ctx.putImageData(imgData, 0, 0);
		
			function multiply(topValue, bottomValue){
  				return topValue * bottomValue / 255;
			}
		
		}
		
		redraw();
		
  		
	}


    
})
</script>

		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:center;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

<a  itemprop="url" href="/wp-content/uploads/2017/05/change-image-color-canvas.zip" target="_self"  class="qbutton  center default" style="">Descargar</a>	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de imagen con Canvas</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cambiar el color de parte de una imagen</title>
		<link>https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Fri, 19 May 2017 10:17:55 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2223</guid>

					<description><![CDATA[<p>Si has usado Photoshop o algún otro programa de tratamiento de imágenes, puede que hayas empleado los modos de fusión de capas para conseguir colorear determinadas zonas de una imagen. Ahora, con algunas de las nuevas propiedades de CSS3 podemos replicar este mismo efecto de forma dinámica.</p>
<p>La entrada <a href="https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">Cambiar el color de parte de una imagen</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si has usado Photoshop o algún otro programa de tratamiento de imágenes, puede que hayas empleado los modos de fusión de capas para conseguir colorear determinadas zonas de una imagen. Con el uso de una máscara para seleccionar la forma y una capa de color en modo &#8220;multiply&#8221; podemos colorear el área que deseemos. Ahora, <strong>con algunas de las nuevas propiedades de CSS3 podemos replicar este mismo efecto de forma dinámica en una página web</strong>.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="534" height="476" src="https://www.develooping.com/wp-content/uploads/2017/05/photoshop.jpg" class="vc_single_image-img attachment-full" alt="capas en photoshop" title="photoshop" srcset="https://www.develooping.com/wp-content/uploads/2017/05/photoshop.jpg 534w, https://www.develooping.com/wp-content/uploads/2017/05/photoshop-300x267.jpg 300w" sizes="(max-width: 534px) 100vw, 534px" /></div>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>En la imagen superior puedes ver un ejemplo del uso de las capas que permitiría conseguir este resultado. Solo cambiando el color de la capa en modo &#8220;multiply&#8221; vemos cambiar el color de la camiseta, colocada en una capa inferior.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_single_image wpb_content_element vc_align_center">
		<div class="wpb_wrapper">
			
			<div class="vc_single_image-wrapper   vc_box_border_grey"><img decoding="async" width="300" height="450" src="https://www.develooping.com/wp-content/uploads/2017/05/layers.jpg" class="vc_single_image-img attachment-full" alt="" title="layers" srcset="https://www.develooping.com/wp-content/uploads/2017/05/layers.jpg 300w, https://www.develooping.com/wp-content/uploads/2017/05/layers-200x300.jpg 200w" sizes="(max-width: 300px) 100vw, 300px" /></div>
		</div>
	</div>
	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Al igual que Photoshop, <strong>los principales navegadores soportan la fusión de capas en modo &#8220;multiply&#8221;</strong>. La única excepción importante la constituyen los navegadores de Microsoft, aunque los desarrolladores de la compañía ya han indicado que lo tienen bajo estudio y posiblemente lo implementarán para principios de 2018. En este estado de cosas ya no es descabellado plantearse hacer uso de ese modo de mezcla, ya que tiene un soporte mayoritario.</p>
<p>En esta ocasión vamos a centrarnos en cómo conseguir este efecto en los <a href="http://caniuse.com/#feat=css-mixblendmode" target="_blank">navegadores que soportan la propiedad CSS mix-blend-mode</a>, que como ya he dicho son la mayoría, y más adelante ofreceremos una solución alternativa para otros navegadores.</p>
<h5>Ponle la camiseta</h5>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="imagenes">&lt;div id="tshirt_container"&gt;
	&lt;img src="images/white-t-shirt.jpg" class="tshirt_layer" id="tshirt_layer_1"&gt;
	&lt;img src="images/guy.png" class="tshirt_layer" id="tshirt_layer_2"&gt;	
&lt;/div&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Lo primero que hemos hecho es colocar la imagen del chico con la camiseta como un png con el hueco de la camiseta transparente, y debajo la camiseta sin color.</p>
<p>Usamos las posiciones y la propiedad z-index para colocar una sobre otra, y a la imagen del chico le añadimos la propiedad mix-blend-mode con el valor multiply.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="CSS">#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
}

#tshirt_container .tshirt_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}

#tshirt_layer_1{
 z-index: 1;
}

#tshirt_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Dale color</h5>
<p>Llegados a este punto, ya podemos comprobar que <strong>con solo añadirle un color de fondo</strong> (background-color) a la imagen superior (<span class="crayon-k ">#tshirt_layer_2), <strong>podemos colorear la camiseta</strong>.</span></p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:css decode:true " title="Color de fondo">#tshirt_layer_2{
	background-color: #7bd148;
}</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>También podemos usar un script que nos permita asignar dinámicamente el color de fondo a partir de una selección por parte del usuario. Existen multitud de selectores de color basados en jQuery o directamente en JavaScript que realizan esta tarea y puedes elegir el que mejor se adapte al uso que le vayas a dar.</p>
<p>Yo particularmente he pensado en su aplicación en una tienda, en la que un producto puede tener un número limitado de variaciones de color. Para ello he usado <a href="https://github.com/tkrotoff/jquery-simplecolorpicker" target="_blank">jQuery Simple Color Picker</a>.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Deja que seleccionen</h5>
<p>No hay problema si has decidido usar cualquier otro selector de color, ya que todo lo que hay que conseguir es permitir al usuario escoger un color y asignar la propiedad background-color de la imagen principal según el valor escogido.</p>
<p>Si vas a usar jQuery Simple Color Picker nos queda poco para tener nuestro selector funcionando. En su propia página de GitHub se muestra cómo hacerlo. Empezaremos por añadir un &#8220;select&#8221; con las opciones que necesitemos.</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:xhtml decode:true " title="Selector de Colores">&lt;select name="colorpicker-shortlist" id="colorpicker"&gt;
  &lt;option value="#7bd148""&gt;Green&lt;/option&gt;
  &lt;option value="#5484ed"&gt;Bold blue&lt;/option&gt;
  &lt;option value="#a4bdfc"&gt;Blue&lt;/option&gt;
  &lt;option value="#46d6db"&gt;Turquoise&lt;/option&gt;
  &lt;option value="#7ae7bf"&gt;Light green&lt;/option&gt;
  &lt;option value="#51b749"&gt;Bold green&lt;/option&gt;
  &lt;option value="#fbd75b"&gt;Yellow&lt;/option&gt;
  &lt;option value="#ffb878"&gt;Orange&lt;/option&gt;
  &lt;option value="#ff887c"&gt;Red&lt;/option&gt;
  &lt;option value="#dc2127"&gt;Bold red&lt;/option&gt;
  &lt;option value="#dbadff"&gt;Purple&lt;/option&gt;
  &lt;option value="#e1e1e1"&gt;Gray&lt;/option&gt;
  &lt;option value="#cabdbf"&gt;#cabdbf&lt;/option&gt;
&lt;/select&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Solo nos quedaría cargar el script (ten presente que es dependiente de jQuery) e indicarle qué hacer</p>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<pre class="lang:js decode:true " title="Scripts">&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript" src="js/jquery.simplecolorpicker.js"&gt;&lt;/script&gt;

&lt;link rel="stylesheet" href="jquery.simplecolorpicker.css"&gt;

&lt;script type="text/javascript"&gt;
$(document).ready(function() {

    // asigna valor por defecto
    $('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
    $('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());

    //cambia el color según la selección
    $('select[name="colorpicker-shortlist"]').on('change', function() {
    	$('#tshirt_layer_2').css('background-color', $('select[name="colorpicker-shortlist"]').val());
    });

})
&lt;/script&gt;</pre>

		</div> 
	</div> 
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Puedes encontrar una explicación más detallada en la propia página del plugin. No nos vamos a extender más en él ya que para nuestro propósito podríamos haber usado cualquier otro.</p>
<h5>El resultado</h5>
<p>Veamos el resultado obtenido al ponerlo todo junto en una aplicación práctica de uso genérico.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="tshirt_container"><img decoding="async" id="tshirt_layer_1" class="tshirt_layer" src="/wp-content/uploads/2017/05/white-t-shirt.jpg" alt="t-shirt background" /><img decoding="async" id="tshirt_layer_2" class="tshirt_layer" src="/wp-content/uploads/2017/05/guy.png" alt="guy with t-shirt" /></div>
<p><select id="colorpicker" name="colorpicker-shortlist"><option value="#7bd148">Green</option><option value="#5484ed">Bold blue</option><option value="#a4bdfc">Blue</option><option value="#46d6db">Turquoise</option><option value="#7ae7bf">Light green</option><option value="#51b749">Bold green</option><option value="#fbd75b">Yellow</option><option value="#ffb878">Orange</option><option value="#ff887c">Red</option><option value="#dc2127">Bold red</option><option value="#dbadff">Purple</option><option value="#e1e1e1">Gray</option><option value="#cabdbf">#cabdbf</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<style type="text/css">
.simplecolorpicker.picker {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1051;
  display: none;
  float: left;
  min-width: 160px;
  max-width: 283px;
  padding: 5px 0 0 5px;
  margin: 2px 0 0;
  list-style: none;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, .15);
  -webkit-border-radius: 4px;
     -moz-border-radius: 4px;
          border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
     -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  -webkit-background-clip: padding-box;
     -moz-background-clip: padding;
          background-clip: padding-box;
}
.simplecolorpicker.inline {
  display: table;
  padding: 6px 0;
  margin: auto;
}
.simplecolorpicker span {
  margin: 0 5px 5px 0;
}
.simplecolorpicker.icon,
.simplecolorpicker span.color {
  display: inline-block;
  cursor: pointer;
  border: 1px solid transparent;
}
.simplecolorpicker.icon:after,
.simplecolorpicker span.color:after {
  content: '\00a0\00a0\00a0\00a0';
}
.simplecolorpicker span.color[data-disabled]:hover {
  cursor: not-allowed;
  border: 1px solid transparent;
}
.simplecolorpicker span.color:hover,
.simplecolorpicker span.color[data-selected],
.simplecolorpicker span.color[data-selected]:hover {
  border: 1px solid #222;
}
.simplecolorpicker span.color[data-selected]:after {
  color: #fff;
}
.simplecolorpicker span.vr {
  border-left: 1px solid #222;
}

#tshirt_container{
 position: relative;
 width: 300px;
 height: 450px;
 display: table;
 margin: auto;
}
.simplecolorpicker{
 max-width: 300px;
}
.simplecolorpicker span.color[data-selected]:after {
  content: '\2714';
  width: 12px;
  display: block;
  padding-left: 4px;
}
#tshirt_container .tshirt_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 450px;
}
#tshirt_layer_1{
 z-index: 1;
}
#tshirt_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}
.simplecolorpicker.icon, .simplecolorpicker span.color {
    width: 16px;
}
</style>
		</div>
	</div>

	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>La economía del método es clarísima. Hemos usado dos imágenes en lugar de trece. El dibujo de la camiseta, en este caso, forma parte de la misma imagen png del chico, pero no sería difícil usar una imagen independiente que también cargara dinámicamente en función de la selección del usuario.</p>
<h5>¿Qué nos queda?</h5>
<p>Bien, como ya sugerí en el párrafo anterior, basándose en estas técnicas se podrían implementar todas las variaciones de una tienda de camisetas usando como base muy pocas imágenes y colocando encima el dibujo seleccionado.</p>
<p><strong>En los casos en los que hay muchas variaciones de color la ventaja es más que evidente</strong>. En el ejemplo de abajo vemos que solo dos imágenes sustituyen a 24 variaciones.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 12px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<div id="shoes_container"><img decoding="async" id="shoes_layer_1" class="shoes_layer" src="/wp-content/uploads/2017/05/shoes.jpg" alt="shoes background" /><img decoding="async" id="shoes_layer_2" class="shoes_layer" src="/wp-content/uploads/2017/05/shoes.png" alt="shoes" /></div>
<p><select id="colorpicker2" name="colorpicker-longlist"><option value="#ac725e">#ac725e</option><option value="#d06b64">#d06b64</option><option value="#f83a22">#f83a22</option><option value="#fa573c">#fa573c</option><option value="#ff7537">#ff7537</option><option value="#ffad46">#ffad46</option><option value="#42d692">#42d692</option><option value="#16a765">#16a765</option><option value="#7bd148">#7bd148</option><option value="#b3dc6c">#b3dc6c</option><option value="#fbe983">#fbe983</option><option value="#fad165">#fad165</option><option value="#92e1c0">#92e1c0</option><option value="#9fe1e7">#9fe1e7</option><option value="#9fc6e7">#9fc6e7</option><option value="#4986e7">#4986e7</option><option value="#9a9cff">#9a9cff</option><option value="#b99aff">#b99aff</option><option value="#c2c2c2">#c2c2c2</option><option value="#cabdbf">#cabdbf</option><option value="#cca6ac">#cca6ac</option><option value="#f691b2">#f691b2</option><option value="#cd74e6">#cd74e6</option><option value="#a47ae2">#a47ae2</option></select></p>

		</div> 
	</div> 
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<style type="text/css">
#shoes_container{
 position: relative;
 width: 300px;
 height: 225px;
 display: table;
 margin: auto;
}

#shoes_container .shoes_layer{
 position: absolute;
 display: table;
  width: 300px;
 height: 225px;
}

#shoes_layer_1{
 z-index: 1;
}

#shoes_layer_2{
	z-index: 2;
	-o-mix-blend-mode: multiply;
	-ms-mix-blend-mode: multiply;
	-moz-mix-blend-mode: multiply;
	mix-blend-mode: multiply;
	-webkit-mix-blend-mode: multiply;
}
</style>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="/wp-content/themes/bridge-child/js/jquery.simplecolorpicker.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('select[name="colorpicker-shortlist"]').simplecolorpicker('selectColor', '#7bd148');
    jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
	jQuery('select[name="colorpicker-shortlist"]').on('change', function() {
    	jQuery('#tshirt_layer_2').css('background-color', jQuery('select[name="colorpicker-shortlist"]').val());
  	});
    jQuery('select[name="colorpicker-longlist"]').simplecolorpicker('selectColor', '#ac725e');
    jQuery('#shoes_layer_2').css('background-color', jQuery('select[name="colorpicker-longlist"]').val());
	jQuery('select[name="colorpicker-longlist"]').on('change', function() {
    	jQuery('#shoes_layer_2').css('background-color', jQuery('select[name="colorpicker-longlist"]').val());
  	}); 	
})
</script>
		</div>
	</div>

	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Sin embargo, como dije con anterioridad, <strong>Explorer y Edge no producen el efecto deseado por su falta de soporte a la propiedad mix-blend-mode</strong>. Ambos cambiarán el color de fondo de la imagen según seleccionemos, pero se comportará de forma opaca y no se fusionará con la imagen inferior. Aunque se ha anunciado un futuro soporte por parte de Edge, en la actualidad esta es la situación.</p>
<p>Por ahora vamos a dejarlo aquí. <strong>Más adelante explicaremos la manera de conseguir el mismo efecto en esos navegadores</strong>. Para los que no puedan esperar puedo anticiparles que la solución cosiste en <a href="http://albertogasparin.it/articles/2011/05/html5-multiply-filter-canvas/" target="_blank">realizar un filtro multiply a través de una función aplicada sobre un elemento canvas</a>.</p>
<p>Mientras encuentro tiempo para elaborar esa exlicación, con el siguiente botón puedes <strong>descargar todos los archivos necesarios</strong> para poner en práctica lo que te he contado en esta página. Espero que te sea de utilidad.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:center;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper"><a  itemprop="url" href="/wp-content/uploads/2017/05/change-image-color.zip" target="_self"  class="qbutton  center default" style="">Descargar</a>	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style='background-color:#fcf9e0; text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p><strong>Actualización</strong>: Si estás interesado en una nueva versión que funciona en todos los navegadores, visita nuestra nueva entrada: &#8220;<a href="http://www.develooping.com/colorear-parte-de-imagen-con-canvas/">Colorear parte de una imagen con Canvas</a>&#8220;</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/cambiar-el-color-de-parte-de-una-imagen-dinamicamente/">Cambiar el color de parte de una imagen</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>De SEO</title>
		<link>https://www.develooping.com/de-seo/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Tue, 18 Apr 2017 16:33:32 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=2015</guid>

					<description><![CDATA[<p>Si, lo has adivinado. Este texto habla de SEO. Es verdad que internet está plagadita de páginas que tratan el tema, que aconsejan estrategias para ganar posiciones en los resultados de las búsquedas, que explican lo que Google  considera correcto y lo que no, lo que podría ayudarte a escalar puestos y lo que podría perjudicarte…</p>
<p>La entrada <a href="https://www.develooping.com/de-seo/">De SEO</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Si, lo has adivinado. <strong>Este texto habla de SEO</strong>. Es verdad que internet está plagadita de páginas que tratan el tema, que aconsejan estrategias para ganar posiciones en los resultados de las búsquedas, que explican lo que Google  considera correcto y lo que no, lo que podría ayudarte a escalar puestos y lo que podría perjudicarte…</p>
<p>Y no es difícil adivinar que <strong>este texto también habla de DESEO</strong>. Porque todo el que deposita ilusión en un proyecto desea verlo funcionar. Pero cuidado, porque muchos parecen empeñados en crearte una crisis existencial diciéndote que no existes si no estás en internet, o en la primera página de Google, o en Facebook o en cualquier otra plataforma social… y claro, supongo que querrás existir.</p>
<p>Google solo devuelve 10 resultados en su primera página, así que existir te va a costar lo tuyo.</p>
<h5>¿Quieres ser de los primeros? Sé único.</h5>
<p>Pretender alcanzar las primeras posiciones de Google, si acabas de llegar y perteneces a un sector con una competencia normal es, cuando menos, iluso.</p>
<p>Es verdad que encontrarás a &#8220;profesionales&#8221; que se aprovecharán de tu deseo y te dirán lo que quieres escuchar, prometiéndote colocar tu página en los primeros puestos. Y no es que esto no pueda conseguirse, pero en internet, como en la vida misma, el camino para destacar en algo consiste en diferenciarse de la competencia, aplicar una buena estrategia enfocada al resultado y dedicar tiempo y esfuerzo en crear contenidos únicos y útiles.</p>
<p><strong>Desconfía de los que dicen que hacen SEO y crean contenidos de pésima calidad y nula utilidad</strong>, enfocados exclusivamente a recopilar palabras clave con la errónea idea de que eso mejorará la posición en los buscadores. El algoritmo de Google, cambiante y en continua evolución, es cada vez más &#8220;inteligente&#8221; y capaz de detectar y penalizar este tipo de contenido. Si bien todavía está lejos de ser perfecto, está claro cual es su tendencia.</p>
<h5>¿Quieres que lleguen a ti? Llega tú a ellos.</h5>
<p>Puedes hacer lo que quieras, pero mi consejo es que no crees contenidos porque piensas que Google los va a valorar, sino porque piensas que los van a valorar tus visitantes. De nada sirve aparecer en las primeras posiciones si estos enlaces conducen a contenidos de bajísima calidad y van a provocar que tu visitante prefiera saltar a la siguiente opción que le ha dado el buscador.</p>
<p><strong>Piensa en tus visitantes</strong> y crea contenidos que les interese y les ayude. <strong>Sé natural y evita el texto escrito para buscadores</strong>. Los títulos y las negritas sirven fundamentalmente para estructurar el texto y reforzar las ideas principales, no para acumular palabras clave.</p>
<p>Al final son las personas las que validarán tu web y van a usar tus servicios o comprar tus productos. Miedo me da pensar en cómo quedaría &#8220;Cien años de soledad&#8221;, por poner un ejemplo, si lo retocara algún &#8220;experto&#8221; en SEO.</p>
<h5>¿Quieres que te localicen? Encuéntrate.</h5>
<p>La naturaleza de tu negocio influirá directamente sobre las estrategias de comunicación que necesitarás plantear, y también sobre las estrategias de posicionamiento. Ambas deberían ser fruto de un análisis profundo, ya que <strong>no existe un método universal aplicable a cualquier tipo de web</strong>, empresa o actividad.</p>
<p>Si alguien te ofrece algo parecido a &#8220;un paquete básico de posicionamiento por XX euros&#8221; te aconsejo que lo mires y remires bien ( en especial si XX no es un número muy alto). Ya he visto demasiadas veces como <strong>malas estrategias SEO han supuesto un perjuicio para la web que debían ayudar a posicionar</strong>.</p>
<p>Piensa en el producto que ofreces, dónde está tu público y qué busca. Imaginemos tres ejemplos de negocios localizados en Málaga: un empresa dedicada al alquiler turístico vacacional, una tienda online que vende perfumes y cosméticos, y un restaurante con servicio a domicilio. Aunque las tres están ubicadas en la misma ciudad van destinadas a públicos muy diferentes. La primera no tiene clientes locales y debería esforzarse en llegar a gente de fuera, especialmente extranjeros. La segunda, en nuestro ejemplo, pretende alcanzar al público nacional. Los clientes de la tercera residen en la localidad. Es bastante obvio que cada una necesita una estrategia diferente enfocada a sus clientes.</p>
<h5>¿Quieres resultados? Analízalos a fondo.</h5>
<p>El orden en que Google devuelve los resultados de una búsqueda depende de muchos factores. Entre ellos, Google usa la geolocalización para priorizar resultados cercanos. También tu historial de búsquedas ayuda a obtener conclusiones sobre tus preferencias y ofrecerte resultados más acordes a ellas. Ambos comportamientos pueden resultar útiles pero <strong>en algunas ocasiones pueden inducir a engaños</strong>.</p>
<p>Imagina la empresa de alquiler turístico del apartado anterior. Supongamos que su &#8220;especialista SEO&#8221; le muestra que ha logrado que aparezca una página en una posición aceptable buscando los términos &#8220;Holiday apartment in Malaga&#8221; (recuerda que la mayoría de sus clientes potenciales son extranjeros). Lo que parece un logro podría ser solo una ilusión.</p>
<p>En mi caso he hecho una sencilla prueba con esa misma búsqueda. Primero he buscado normalmente en Google, conservando mi historial de búsquedas y usando un navegador que, como la inmensa mayoría, reporta mi localización. Luego me he fijado en alguna empresa local que salga en la segunda o tercera página (lo siento, en este sector los resultados más relevantes están copados por los grandes portales).</p>
<p>Después he realizado exactamente la misma búsqueda usando el navegador <a href="https://www.torproject.org/projects/torbrowser.html.en" target="_blank">Tor</a> y el buscador <a href="https://www.startpage.com/" target="_blank">StartPage</a> (que consulta en Google pero no guarda datos). Curiosamente el resultado en el que me fijé anteriormente ha desaparecido. No hay ni la menor señal de la página, y ocurre lo mismo desde cualquier país extranjero. <strong>Si la empresa quería llegar a visitantes de otros países, los resultados que se obtienen cuando realiza una búsqueda local solo le están confundiendo</strong>.</p>
<p>Como decía al principio, encontrarás miles de textos más o menos técnicos sobre SEO. Mi intención con éste es solo aclarar algunas dudas frecuentes y, si puede ser, evitar problemas a las muchísimas personas que seguramente están interesadas en enteder algo más sobre el posicionamiento en buscadores y prefieren que no les hablen con siglas, jerga especializada, términos técnicos o palabrería SEO.</p>
<p>&nbsp;</p>
<p>La entrada <a href="https://www.develooping.com/de-seo/">De SEO</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La internet que queremos</title>
		<link>https://www.develooping.com/la-internet-queremos/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 05 Oct 2016 16:14:05 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1915</guid>

					<description><![CDATA[<p>He de confesarlo. Hay cosas que no me gustan en la internet que hemos creado. Y supongo que a ti te pasará lo mismo. Puede que no te conozca, pero es una deducción lógica. Todos encontramos cosas que no nos gustan del mundo, así que no iba a ser distinto con internet.</p>
<p>Paradójicamente, participamos en la construcción del mundo en el que vivimos aunque nos quejemos de él. Internet no es distinto, y aunque muchos creen que son otros quienes lo hacen, lo hacemos entre todos.</p>
<p>La entrada <a href="https://www.develooping.com/la-internet-queremos/">La internet que queremos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>He de confesarlo. Hay cosas que no me gustan en la internet que hemos creado. Y supongo que a ti te pasará lo mismo. Puede que no te conozca, pero es una deducción lógica. <strong>Todos encontramos cosas que no nos gustan del mundo, así que no iba a ser distinto con internet</strong>.</p>
<p>Paradójicamente, participamos en la construcción del mundo en el que vivimos aunque nos quejemos de él. Internet no es distinto, y aunque muchos creen que son otros quienes lo hacen, lo hacemos entre todos.</p>
<p>En el &#8220;mundo real&#8221; siempre me ha llamado la atención la forma en que mucha gente se queja de la enorme diferencia entre ricos y pobres. Normalmente se lamentan los pobres, los ricos no suelen protestar por sus privilegios y justifican su posición en supuestos méritos propios. Pero esa queja casi nunca va acompañada de un intento de cambiar las cosas, sino de un deseo de cambiar de posición, lo que de ninguna manera acabará realmente con esa desigualdad.</p>
<h5>Humanos y ornitorrincos</h5>
<p>Por regla general, <strong>quien se queja de ser pobre no desea acabar con la injusticia, sino con su pobreza</strong>. Desea estar en el lugar del rico, por lo que es habitual que proyecte sus ilusiones en juegos de azar, un negocio redondo, un golpe de fortuna… De esta forma inconsciente, reconociendo el valor de lo que el rico tiene y su deseo de alcanzarlo, el pobre le está dando muchísimo más poder.</p>
<p>A estas alturas pueden haber pasado varias cosas: Podrías haberte perdido y estar preguntándote… ¿pero qué tiene que ver ésto con internet? También podrías pensar que lo que he dicho hasta ahora no es más que un conjunto de obviedades, o incluso peor todavía, un conjunto de tonterías o conclusiones ilógicas.</p>
<p>Pero sigamos… lo que conté antes sobre ricos y pobres tiene muchas semejanzas con cosas que hacemos en la web y que vuelven a demostrar lo absurdos y contradictorios que podemos ser los humanos. ¡<strong>Y luego nos parecen raros los ornitorrincos</strong>!</p>
<h5>Mucho poder y pocas manos</h5>
<p>Uno de los principales responsables de la internet que conocemos, Tim Berners-Lee ha expresado en múltiples ocasiones <a href="http://www.xataka.com/privacidad/a-tim-berners-lee-no-le-gusta-la-internet-actual-asi-que-quiere-reinventarla" target="_blank">su descontento con el monstruo en que se está convirtiendo la web</a>: básicamente <strong>un gigantesco mecanismo de control y espionaje</strong> en manos de unos pocos. Nada que ver con la idea original de una web descentralizada que iba a diluir el poder de los estados o con la utopía del conocimiento compartido.</p>
<p>A mucha gente puede horrorizarle el poder que se está depositando en unas pocas compañías privadas. Pero al igual que el pobre que ansía ser rico en lugar de querer cambiar las cosas, seguimos alimentando esa desigualdad.</p>
<h5>Dando de comer al monstruo</h5>
<p>Cuando uno coloca el código de Analytics en su web, aunque pueda parecerlo, lo que está haciendo no es obtener información sobre las visitas que recibe ni sobre los hábitos de sus usuarios. Realmente es al revés: se los está dando a Google, cuyos medios si que le permiten analizarlos en profundidad y extraer un conocimiento extremadamente valioso de manera absolutamente gratuita. El usuario de Analytics solo obtiene una información parcial y segmentada, unas pequeñas migajas a cambio de alimentar al monstruo. Para ello, a modo de troyano consentido, tiene que colocar el código espía de Google. <strong>Le abrimos la puerta al vampiro y le concedemos permiso para entrar</strong>.</p>
<p>Otros &#8220;servicios&#8221; no son muy diferentes de lo anterior. Si usas Gmail, Google tiene tu correo, si usas sus aplicaciones de negocios tiene tus documentos. Monitoriza lo que ves, lo que haces y dónde vas…</p>
<p>Muchos actúan como si los intereses de Google fueran absolutamente filantrópicos, creyendo ingenuamente que les mueve el bien común. Pero cualquier análisis de sus estrategias deja bastante claro que la compañía, la más valorada del mundo en la actualidad, no es más que el hijo más avanzado del capitalismo. Y sus sistemas de control del individuo hacen que cualquier autoritarismo sea un juego de bebés . <strong>¿Es realmente ésta la internet que queremos?</strong></p>
<p>La entrada <a href="https://www.develooping.com/la-internet-queremos/">La internet que queremos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>La importancia del mantenimiento: los papeles de Panamá</title>
		<link>https://www.develooping.com/la-importancia-del-mantenimiento-los-papeles-panama/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Thu, 14 Apr 2016 22:08:52 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1762</guid>

					<description><![CDATA[<p>Desde que se hicieron públicos los famosos "papeles de Panamá", no pasa un día sin que se conozcan nuevos nombres de personalidades y famosos que constituyeron sociedades offshore a través de la compañía Mossack Fonseca. Si visitamos su página web, nos llama poderosamente la atención que una empresa que gestiona grandes fortunas utilice una web hecha en WordPress con uno de los temas gratuitos que traía por defecto allá por 2010</p>
<p>La entrada <a href="https://www.develooping.com/la-importancia-del-mantenimiento-los-papeles-panama/">La importancia del mantenimiento: los papeles de Panamá</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Desde que se hicieron públicos los famosos &#8220;<strong>papeles de Panamá</strong>&#8220;, no pasa un día sin que se conozcan nuevos nombres de personalidades y famosos que constituyeron sociedades offshore a través de la compañía <a href="http://www.mossfon.com/" target="_blank">Mossack Fonseca</a>.</p>
<p>Si visitamos su página web, nos llama poderosamente la atención que una empresa que gestiona grandes fortunas utilice una web <strong>hecha en WordPress con uno de los temas gratuitos que traía por defecto allá por 2010</strong> (twentyten). Puede que así quieran mantener una imagen discreta, pero esta falta de cuidado por sus webs les ha llevado a un serio problema.</p>
<p>Según la compañía <a href="https://www.wordfence.com/" target="_blank">Wordfence Security</a>, autora de unos de los principales módulos de seguridad para WordPress (que en Develooping instalamos por defecto en todas los sitios que realizamos), <strong>tanto el servidor como las diferentes webs de la empresa presentaban graves problemas de seguridad</strong>. Ésta en concreto usaba una versión de Revolution Slider (un plugin de WordPress para generar esos pases de diapositivas que parecen una constante de las páginas principales de las webs actuales) con vunerabilidades conocidas.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Cómo saber si mi tema o mis plugins son vulnerables</h5>
<p>WordPress es extraordinariamente popular, <strong>es usado en más de la cuarta parte de los sitios web del mundo, y su número sigue en aumento</strong>. Su facilidad de uso, versatilidad y posibilidades lo han convertido en la plataforma preferida por la mayoría para desarrollar sitios de la más variada naturaleza. Pero, precisamente <strong>su éxito le convierte en una de las presas preferidas por los hackers</strong>.</p>
<p>Mirar el listado de plugins de cualquier página, su tema y versión de WordPress es tan fácil como ver el código de la misma. Con esta información podemos ir a consultar las posibles vulnerabilidades de sus componentes en sitios como <a href="https://wpvulndb.com/" target="_blank">WPScan Vulnerability Database</a>, cuya base de datos crece y se actualiza cada vez que se descubre un nuevo agujero de seguridad.</p>
<p>El código abierto tiene grandes ventajas, pero no hay duda de que facilita mucho la tarea de los hackers. Una web no mantenida ni actualizada y con nulas o escasas medidas de seguridad, es muy probable que tarde o temprano termine cayendo presa de alguien con intenciones muy diferentes a aquellas con las que se creó.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>¿Y cómo me protejo?</h5>
<p>Pese a todo lo anterior, <strong>mantener tu web hecha en WordPress bien protegida no es tan difícil</strong> si observamos una serie de precauciones:</p>
<ul>
<li>Mantener WordPress actualizado con los últimos parches de seguridad.</li>
<li>Utilizar temas y plugins procedentes de lugares de confianza o el propio repositorio de WordPress.</li>
<li>Asegurarnos de que no se le conocen vulnerabilidades al tema y procurar mantenerlo actualizado.</li>
<li>Mantener actualizados los plugins. Asegurarnos antes de instalarlos de que no se les conocen vulnerabilidades.</li>
<li>Utilizar contraseñas seguras y cambiar los datos de acceso de forma periódica.</li>
<li>Utilizar plugins de seguridad que añadan medidas de protección extra y monitoricen los accesos.</li>
</ul>
<p>&nbsp;</p>
<p>Evidentemente, contado así parece muy sencillo. Pero muchas veces las cosas no son tan perfectas. Podría haber motivos que no nos permitieran tener todo corriendo sobre las últimas versiones. Podría ser que un plugin muy necesario no funcionara correctamente en la última versión de WordPress o presentara algún conflicto con otro. Y evidentemente también podría haber problemas ajenos a WordPress, procedentes del propio servidor web o alguna otra tecnología implicada.</p>
<p>En cualquier caso, si no se tienen al menos unos conocimientos medios de estos temas, siempre es aconsejable recurrir a un especialista.</p>

		</div> 
	</div> </div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/la-importancia-del-mantenimiento-los-papeles-panama/">La importancia del mantenimiento: los papeles de Panamá</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS Shapes: Contornear imágenes con texto</title>
		<link>https://www.develooping.com/css-shapes-contornear-imagenes-texto/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Sun, 10 Apr 2016 22:27:55 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1705</guid>

					<description><![CDATA[<p>Mejora el aspecto de tus páginas con esta solución para contornear texto alrededor de imágenes basada en CSS con una alternativa en jQuery para aquellos navegadores que aun no han incorporado esta posibilidad.</p>
<p>La entrada <a href="https://www.develooping.com/css-shapes-contornear-imagenes-texto/">CSS Shapes: Contornear imágenes con texto</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Las últimas reencarnaciones de los estándares HTML y CSS trajeron considerables mejoras. HTML5, entre otras aportaciones, incorporó nuevas marcas ( canvas, video, svg…) y elementos semánticos (nav, article, section…). Por su lado, CSS3 tampoco se quedó corto y llegó con nuevos selectores y propiedades. Juntos, supusieron un importante avance en las posibilidades de la web.</p>
<p>Pero aunque la versión definitiva de las especificaciones de HTML5 se publicó a finales de 2014, y las especificaciones de CSS3 son bastante anteriores, hay que entender que <strong>ambos estándares no son adoptados de manera absoluta por los navegadores</strong>. La W3C, el organismo hay detrás de las especificaciones de ambos estándares, sugiere y recomienda, pero en última instancia son los creadores de navegadores los que validan esas recomendaciones incorporándolas en sus programas. Seguramente, <strong>llegarán HTML6 y CSS4 sin que haya habido una implantación completa de sus predecesores</strong>. Es por ello, que a veces, cuando queremos hacer uso de alguna nueva prestación, vemos que ésta no ha sido adoptada completamente por todos los navegadores.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>De todas formas…</h5>
<p>Para nuestro propósito usaremos la <a href="https://www.w3.org/TR/css-shapes/" target="_blank">especificación CSS Shapes del W3C</a>. Lamentablemente, por ahora no funciona en todos los navegadores (no te preocupes, que hay solución). En <strong>caniuse.com</strong> podemos <a href="http://caniuse.com/#feat=css-shapes" target="_blank">consultar cúales soportan esta especificación</a> y comprobaremos que hay algunos importantes que por ahora se han quedado fuera.</p>
<p>Siempre que nos encontremos con situaciones parecidas, es necesario <strong>determinar las prestaciones del navegador</strong> para servirle una opción que se adapte a sus posibilidades. Y para ello no conozco mejor alternativa que <strong>modernizr</strong>, que nos ofrece métodos rápidos y eficaces para detectar las prestaciones del navegador.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Moderniza tu página</h5>
<p>Una de las ventajas de modernizr es que puedes construir una versión solo con las prestaciones que te interesa detectar, lo que lo hace especialmente ligero. En nuestro caso solo <strong>vamos a detectar si el navegador soporta CSS Shapes</strong>, con idea de usarlas en caso afirmativo u ofrecer una alternativa si no es así.</p>
<p>Para ello nos dirigimos a <a href="https://modernizr.com/download?shapes-setclasses" target="_blank">modernizr.com/download?setclasses,</a> nos aseguramos de que está seleccionado <em>CSS Shapes</em> y le damos al botón &#8220;<em>Build</em>&#8221; para descargar el script que nos permitirá detectar si el navegador dispone de esta prestación.<br />
<img loading="lazy" decoding="async" class="size-medium wp-image-1771" src="http://www.develooping.com/wp-content/uploads/2016/04/pantalla-modernizr.gif" alt="pantalla-modernizr" width="600" height="286" /></p>
<p>Una vez bajado podemos renombrarlo como <strong>modernizr-shapes.js</strong> e insertarlo en nuestra página.</p>
<pre title="modernizr" lang="html"><script src="js/modernizr-shapes.js" type="text/javascript"></script></pre>
<p>Usado en nuestra página nos permite detectar con facilidad si nuesto navegador soporta &#8216;<em>shapes</em>&#8216;</p>
<pre title="modernizr shape" lang="javascript">    if (Modernizr.shapes) { 
       // soportado 
    } else { 
       // no soportado 
    }</pre>
<p>Lo que hemos hecho hasta ahora solo nos sirve para diferenciar si un navegador soporta o no <em>CSS shapes</em>. Veamos ahora qué hacer en cada caso. </p>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Si nuestro navegador está en forma</h5>
<p>Si el navegador soporta las formas CSS hay varias maneras de definir una que sirva para que el texto se ciña a su contorno. En nuestro caso, vamos a usar la propiedad CSS <strong>shape-outside</strong> apuntando a un gráfico svg que define la silueta.</p>
<p>Empecemos por ver los elementos HTML y a continuación el CSS</p>
<pre title="CSS Shapes" lang="html">
<img loading="lazy" decoding="async" class="chuckie-shape" src="chuckie.png" alt="" width="262" height="434" /> Aliquam sodales ante id nunc pulvinar, sit amet dignissim lectus vehicula. Maecenas vel placerat lacus. Nulla rhoncus augue dignissim dapibus iaculis.
</pre>
<pre title="CSS Shapes" lang="CSS">.textwrap-container{
 text-align: justify; 
}
.chuckie-shape {
 float: left;
 width: 272px;
 padding-right: 10px;
 -webkit-shape-outside: url('chuckie.svg');
 -moz-shape-outside: url('chuckie.svg');
 -ms-shape-outside: url('chuckie.svg');
 -o-shape-outside: url('chuckie.svg');
 shape-outside: url('chuckie.svg');
}
</pre>
<p>La propiedad shape-outside contiene la url del archivo svg que ves a continuación.</p>
<p><img decoding="async" style="padding-right: 5px;" src="/wp-content/uploads/2016/04/chuckie.svg" alt="" align="left" />SVG (<em>Scalable Vector Graphics</em>) es un formato vectorial que, <a href="http://caniuse.com/#search=svg" target="_blank">como puedes comprobar en caniuse</a>, es soportado por todos los navegadores. Puedes crearlo con software propietario (Illustrator, Corel Draw…), software gratuito (InkScape…) e incluso online. Con el HTML y el CSS anteriores ya podemos lograr que el texto se ciña al espacio reservado en los navegadores que entienden la propiedad (Safari, Chrome y algún otro).</p>
<p>Pero… <strong>¿Por qué hemos puesto la propiedad shape-outside con tantos prefijos</strong>, incluyendo los que pertenecen a navegadores no soportados?<br />
La respuesta es simple: <strong>nos anticipamos al día en que el resto de los navegadores se incorporen</strong>. Y si no lo hacen, tampoco hay que preocuparse, les ofreceremos una alternativa.</p>
<p>Para encontrarla <strong>hemos probado dos soluciones</strong> posibles: <a href="http://blogs.adobe.com/webplatform/2014/05/12/css-shapes-polyfill/" target="_blank">CSS Shapes Polyfill</a> y <a href="http://www.jwf.us/projects/jQSlickWrap/" target="_blank">jQSlickWrap</a>. En mi experiencia, el primero, aunque tiene la ventaja de no depender de jQuery, presenta serios problemas de rendimiento y ya no es mantenido de forma activa. <strong>jQSlickWrap</strong>, si bien depende de jQuery, se ha comportado perfectamente en mis pruebas además de ser más flexible, así que <strong>basaremos en él nuestra solución</strong>.</p>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>¿Y qué pasa con el resto?</h5>
<p>Para Explorer, Firefox y el resto de navegadores que a la hora de escribir esto aún no soporta la propiedad <em>shapes</em>, empezaremos por <a href="https://raw.githubusercontent.com/jasonwyatt/jQSlickWrap/master/jquery.slickwrap.js" target="_blank">bajar jQSlickWrap</a> y <a href="http://jquery.com/download/" target="_blank">jQuery</a> para usarlos en nuestra página.</p>
<pre title="slickwrap" lang="html"><script src="js/jquery-1.12.3.min.js" type="text/javascript"></script><script src="js/jquery.slickwrap.js" type="text/javascript"></script></pre>
<p>Después, basta con invocar slickwrap con la siguiente sintaxis</p>
<pre title="slickwrap" lang="javascript">    $(document).ready(function(){
       $('.chuckie-shape').slickWrap({resolution:26});
    });
</pre>
<p>Para un mejor rendimiento, es aconsejable que asignemos a <em>resolution</em> el valor del interlineado del texto en pixels. Si lo deseas, puedes consultar la página de jQSlickWrap para mayor información sobre su uso y ajustes.</p>
<p>Recuerda que ya habíamos solucionado este tema para algunos navegadores, y que esta nueva solución va dirigida al resto. Veamos ahora cómo ponerlo todo junto para cubrir todas las posibilidades.</p>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El código final</h5>
<pre title="El código final.CSS3 Shapes - Contorneo de texto" lang="html"><script src="js/jquery-1.12.3.min.js" type="text/javascript"></script><script src="js/jquery.slickwrap.js" type="text/javascript"></script><script src="js/modernizr-shapes.js" type="text/javascript"></script><script type="text/javascript">// <!&#091;CDATA&#091;
if (Modernizr.shapes) { // soportado, así que no hay que hacer nada } else { $(document).ready(function(){ $('.chuckie-shape').slickWrap({resolution:26}); }); }
// &#093;&#093;></script>
<div class="wrapper">
<p class="textwrap-container"><img loading="lazy" decoding="async" class="chuckie-shape" src="chuckie.png" alt="" width="262" height="434" />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ullamcorper dolor in justo lobortis, eu facilisis massa pharetra. Integer vehicula porttitor nulla nec consectetur. Proin tempus varius erat vitae varius. Vivamus sit amet eros suscipit, dignissim orci a, tincidunt lacus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec mollis commodo libero sit amet suscipit. Vivamus accumsan turpis et mauris viverra, nec congue dolor feugiat. Morbi feugiat dignissim odio, venenatis euismod lectus malesuada maximus. Sed tempor ligula vitae vestibulum tincidunt. Nullam at eleifend urna. Ut interdum luctus malesuada. Curabitur vitae mauris vitae dui tincidunt pellentesque sed ac lacus. Praesent quis orci tellus. Proin auctor sem at elit condimentum, eu lacinia neque cursus. Vivamus dignissim tincidunt dictum. Maecenas tincidunt venenatis risus ac molestie. Donec id posuere mi. Pellentesque at metus in nisl sollicitudin semper id at quam. In laoreet ex eu neque aliquam pharetra. Nulla facilisi.

&nbsp;

</div>
&nbsp;
</pre>
<p>El archivo styles.css nos queda, añadiéndole algún otro detallito, como sigue</p>
<pre title="El código final" lang="CSS">.wrapper{
display:block;
width: 500px;
}
.textwrap-container{
text-align: justify; 
-webkit-hyphens: auto; 
-moz-hyphens: auto; 
hyphens: auto;
}
.chuckie-shape {
float: left;
width: 272px;
padding-right: 10px;
-webkit-shape-outside: url('chuckie.svg');
-moz-shape-outside: url('chuckie.svg');
-ms-shape-outside: url('chuckie.svg');
-o-shape-outside: url('chuckie.svg');
shape-outside: url('chuckie.svg');
}
</pre>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>El resultado</h5>
<p>Con todo lo visto anteriormente obtenemos como resultado algo parecido al texto que ves a continuación y que puede servirte de guía para adaptarlo a tus propias necesidades modificando las imágenes y los estilos. Y añadiendo imaginación nos permitirá efectos más complejos.</p>
<p class="textwrap-container"><img loading="lazy" decoding="async" class="chuckie-shape" src="/wp-content/uploads/2016/04/chuckie.png" alt="contorneo de texto" width="262" height="434" />Se acercó sigilosamente, no pude verlo venir. Sin darme cuenta, se ciñó a mi silueta. Aliquam sodales ante id nunc pulvinar, sit amet dignissim lectus vehicula. Maecenas vel placerat lacus. Nulla rhoncus augue dignissim dapibus iaculis. Quisque nulla nulla, fringilla fringilla aliquam et, tincidunt ut ante. Sed volutpat vulputate venenatis. Maecenas convallis, lacus faucibus posuere iaculis, quam sem tincidunt nunc, eu porta elit erat eu ante. Praesent a volutpat ex. Pellentesque imperdiet feugiat nisl cursus dignissim. Nam eget lorem nec leo porta aliquet at eget dui. Cras convallis, mauris ac posuere porta, magna ligula scelerisque diam, et auctor neque enim eget purus. Praesent massa felis, pulvinar eu mi nec, ultricies mollis arcu. Integer molestie nisl tortor, vitae consequat sem sollicitudin eget. Aliquam massa purus, placerat sed vulputate non, placerat nec risus. Ut et purus semper, molestie magna id, faucibus turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>
<strong>Puedes descarga todo el código completo con los scripts, el archivo CSS y las imágenes del ejemplo pulsando el siguiente botón</strong></p>
<div style="text-align: center;"><a class="qbutton" href="/wp-content/uploads/2016/04/css3-shapes.zip">Descargar</a></div>
<div class="message_info"><i class="fa fa-info-circle"></i><br />
El uso de archivos svg en estilos CSS, como en este ejemplo, está sujeto a CORS, un protocolo de seguridad que por defecto impide hacer determinados tipos de peticiones entre servidores, por lo que no funcionará en Safari ni Chrome en modo local. No habrá ningún problema cuando lo subas a un servidor.</div>

		</div> 
	</div> </div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_js" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="/wp-content/themes/bridge-child/js/jquery.slickwrap.js"></script>
		</div>
	</div>
</div></div></div></div></div><br />
<div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_js" >
		<div class="wpb_wrapper">
			<script type="text/javascript" charset="UTF-8">
            jQuery(document).ready(function(){
           if (Modernizr.shapes) {
                  // supported
           } else {
           jQuery('.chuckie-shape').slickWrap({resolution: 26});
           }
            });
</script>
		</div>
	</div>
</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/css-shapes-contornear-imagenes-texto/">CSS Shapes: Contornear imágenes con texto</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vídeos de fondo en iOS (con autoplay)</title>
		<link>https://www.develooping.com/videos-fondo-ios-autoplay/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Fri, 01 Apr 2016 08:08:03 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Descargas]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1566</guid>

					<description><![CDATA[<p>Últimamente habrás encontrado más de un sitio (como nuestra página principal) que usa vídeos como fondos.</p>
<p>Usando la marca video de HTML5 y su atributo autoplay, es posible hacer que empiecen de forma automática sin necesidad de acción por parte del usuario. Con el CSS adecuado puede colocarse como fondo y ajustarse al ancho de la pantalla.<br />
Sin embargo, habrás visto que esas páginas suelen sustituir ese vídeo por una imagen fija en sus versiones para móvil.</p>
<p>La entrada <a href="https://www.develooping.com/videos-fondo-ios-autoplay/">Vídeos de fondo en iOS (con autoplay)</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Últimamente habrás encontrado más de un sitio (como nuestra <a href="http://develooping.com">página principal</a>) que usa vídeos como fondos.</p>
<p>Usando la marca <strong>&lt;video&gt;</strong> de HTML5 y su atributo <strong>autoplay</strong>, es posible hacer que empiecen de forma automática sin necesidad de acción por parte del usuario. Con el CSS adecuado puede colocarse como fondo y ajustarse al ancho de la pantalla.</p>
<p>Hasta aquí todo bien. Sin embargo, habrás visto que esas páginas suelen sustituir ese vídeo por una imagen fija en sus versiones para móvil. Esto se debe principalmente a que Apple y Google, entendiendo que el pobrecito usuario de móvil podría disponer de un consumo de datos más limitado que el de ordenadores, han desactivado la posibilidad de que los vídeos comiencen automáticamente para evitarles sorpresas y gastos innecesarios. Y en el caso de iOS, además, el vídeo ni siquiera se reproduce dentro de la página.</p>
<p>No es que quiera contradecir los filantrópicos principios que han motivado a ambas compañías a tomar tal decisión, pero ya sabéis que hay gente que no soporta bien los límites impuestos. Buscando una solución, encontré el <a href="https://github.com/Stanko/html-canvas-video-player" target="_blank">código de Stanko en GitHub</a> (no, no vende tabaco), que permite reproducir vídeos inline en móviles sobre un elemento <strong>&lt;canvas&gt;</strong>. <strong>Quede claro que todo el mérito es suyo y que yo solo me he limitado a modificar su código para mis propósitos</strong>.</p>
<h5>Que empiece ya, que el público se va</h5>
<p>Ok, vayamos al grano. Como suelen decir, en la vida todo tiene solución. Así que empecemos por el principio y veamos el código estándar para insertar un vídeo con HTML5.</p>
<pre title="video HTML5" lang="html">
<video class="video" poster="img.jpg" autoplay="autoplay" loop="loop" muted="muted">
	<source src="littlegirleyes.webmhd.webm" type="video/webm" />
	<source src="littlegirleyes.mp4" type="video/mp4" />
	<source src="littlegirleyes.oggtheora.ogv" type="video/ogg" />
	Tu navegador no soporta video HTML5.
</video></pre>
<p>Ya que vamos a usarla como fondo, añadiremos a la marca <strong>&lt;video&gt;</strong> los atributos <strong>autoplay</strong>, para que empiece automáticamente, <strong>loop</strong> para que reproduzca en bucle, y <strong>muted</strong> para eliminar el sonido. He puesto el vídeo en los tres formatos estándares para aumentar el número de navegadores alcanzados, si bien, hoy en día la práctica totalidad respondería perfectamente solo con un archivo mp4 <a href="http://caniuse.com/#feat=mpeg4" target="_blank">como puedes ver en caniuse.com</a>. Por ese motivo, una vez mostrado el ejemplo genérico, <strong>a partir de aquí usaré solamente el archivo mp4</strong>.<br />
Añadimos también el atributo <strong>poster</strong> para mostrar una imagen estática mientras el vídeo carga y un poquito de CSS para hacer que el vídeo se adapte al elemento que lo contiene.</p>
<pre title="un poquito de CSS" lang="CSS">video{
  width: 100%;
}
</pre>
<p>Como resultado del código anterior obtenemos el siguiente vídeo.<br />
<video style="width: 100%;" poster="/wp-content/uploads/2016/04/littlegirleyes.jpg" autoplay="autoplay" loop="loop" muted="muted"><source src="/wp-content/uploads/2016/04/littlegirleyes.webmhd.webm" type="video/webm" /><source src="/wp-content/uploads/2016/04/littlegirleyes.mp4" type="video/mp4" /><source src="/wp-content/uploads/2016/04/littlegirleyes.oggtheora.ogv" type="video/ogg" />Tu navegador no soporta video HTML5.</video><br />
Si estás visitando esta página con un ordenador, verás que el vídeo se reproduce automáticamente en bucle. Pero si estás usando un móvil la cosa cambia. En otra ocasión nos ocuparemos de Android. Ahora, como dice el título, <strong>veamos qué pasa en iOS y cómo resolverlo</strong>.</p>
<h5>iOS: ni inline, ni autoplay</h5>
<p>Pues si, una pena. Si nos estás viendo desde un iPhone o un iPad, en lugar de un vídeo en movimiento verás una imagen estática con una marca encima esperando a que la pulses para ponerse en marcha. Y si pulsas sobre ella la cosa empeora. El vídeo no se reproduce en la página, sino que se abre a toda pantalla. Recuerda que nuestro propósito inicial era <strong>usarlo como fondo</strong>, así que este comportamiento, por mucha carita de niña buena que ponga el vídeo, no nos vale.<br />
Afortunadamente, tal como indiqué antes, nuestro amigo Stanko ha creado el estupendo script <a href="https://github.com/Stanko/html-canvas-video-player" target="_blank">HTML canvas video player</a> que <strong>nos permite reproducir un video de forma inline</strong> en un iAparato, y con pequeñas modificaciones conseguiremos que funcione para nuestro propósito.<br />
Su funcionamiento es sencillo, aunque requiere alguna marca más que un vídeo HTML5 estándar. Para empezar colocamos el vídeo, un elemento canvas y un par de div anidados que servirán de barra de tiempo, y lo metemos a su vez en otro div para tenerlo localizado.</p>
<pre title="video HTML5" lang="html">
<div class="video-inline">
  <video class="video" poster="img.jpg" autoplay="autoplay" muted="muted">
	<source src="littlegirleyes.mp4" type="video/mp4" />
	Tu navegador no soporta video HTML5.
  </video>
  <canvas class="canvas"></canvas>
  <div class="video-timeline js-timeline">
	<div class="video-timeline-passed js-timeline-passed"></div>
  </div>
</div>
</pre>
<p>Después cargamos el archivo JavaScript</p>
<pre title="Canvas Video Player" lang="javascript">
	<script src="js/canvas-video-player.js"></script>
</pre>
<p>E insertamos las instrucciones para que funcione</p>
<pre title="Canvas Video Player" lang="javascript">
<script type="text/javascript">
var canvasVideo = new CanvasVideoPlayer({
    videoSelector: '.video',
    canvasSelector: '.canvas',
    timelineSelector: '.js-timeline',
    framesPerSecond: 25,
    autoplay: true,
    audio: false
});
</script>
</pre>
<p>Si lo único que querías era poder <strong>reproducir vídeos inline en iPhones y iPads</strong> puedes bajártelo y obtener más información sobre sus opciones y métodos <a href="http://stanko.github.io/html-canvas-video-player/" target="_blank">aquí</a>.<br />
Pero si lo que quieres es usarlo para poner un vídeo de fondo, necesitará unas pequeñas modificaciones y seguir leyendo un poquito más.</p>
<h5>Un poquito más a fondo</h5>
<p>Como indicaba, nuestro propósito es poder usar el vídeo como fondo, así que hay pequeños detalles que conviene modificar para ajustar el script a nuestras necesidades.<br />
Para empezar, una prestación del script original es hacer que se pare o reanude la reproducción cada vez que se hace click sobre el vídeo. Un comportamiento que no nos viene bien para usar el vídeo como fondo. El script original tampoco permite hacer loops, y es posible que queramos que nuestro fondo sea un bucle perpetuo.<br />
Para añadir estas dos prestaciones he añadido dos nuevas opciones: makeLoop y pauseOnClick</p>
<pre title="Canvas Video Player" lang="javascript">
<script>
		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
</script>
</pre>
<p>En esta nueva versión modificada, makeLoop es un valor booleano que permite indicar si queremos que el vídeo se ejecute en bucle. A pauseOnClick puede asignársele el valor false para evitar pausar el vídeo cuando se detecta un click.<br />
Hay que aclarar que, al igual que en la versión inicial, <strong>para que el autoplay funcione es necesario desactivar el audio</strong>. Eso no debería preocuparnos, ya que lo queremos como imagen de fondo.<br />
Por último, recordemos que no hay problemas con ordenadores de escritorio, así que mejor ponemos un condicional que haga que éstos sigan usando el vídeo HTML5 y los iCacharros su versión corriendo sobre canvas. Así, nos quedaría lo siguiente</p>
<pre title="Canvas Video Player" lang="javascript">
<script>
	var isIOS = /iPad|iPhone|iPod/.test(navigator.platform);
	
	if (isIOS) {

		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
	}else {
		// Use HTML5 video
		document.querySelectorAll('.canvas')[0].style.display = 'none';
	}	
</script>
</pre>
<h5>¿El fin?</h5>
<p>Bueno, tanto como el fin no. La versión mostrada es mejorable y, por ahora, no plantea qué haremos con Android, algo que dejaremos para otra ocasión. Poniéndolo todo junto, la página nos queda como sigue</p>
<pre title="Canvas Video Player" lang="javascript">
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" >
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, width=device-width">

	<title>HTML canvas video player</title>

	<link rel="stylesheet" href="styles.css">
</head>

<body>
		<div class="video-responsive">
			<video class="video" muted="muted" loop="loop" autoplay="autoplay">
				<source src="littlegirleyes.mp4" type="video/mp4">
				Your browser does not support HTML5 video.
			</video>

			<canvas class="canvas"></canvas>
			
			<div id="over_video">Look at me</div>
		</div>

	<script src="canvas-video-player.js"></script>


	<script>
	
	var isIOS = /iPad|iPhone|iPod/.test(navigator.platform);
	
	if (isIOS) {
 
		var canvasVideo = new CanvasVideoPlayer({
			videoSelector: '.video',
			canvasSelector: '.canvas',
			timelineSelector: false,
			autoplay: true,
			makeLoop: true,
			pauseOnClick: false,
			audio: false
		});
		
	}else {
		
		// Use HTML5 video
		document.querySelectorAll('.canvas')[0].style.display = 'none';
		
	}	
	
	</script>
</body>
</html>
</pre>
<p><a href="/canvas-video-player" target="_blank">Pulsa aquí</a> para ver en otra ventana el resultado de lo anterior (si tienes uno, puedes mirarlo en tu iPhone), con el <a href="/canvas-video-player/styles.css" target="_blank">CSS</a> correspondiente y <a href="/canvas-video-player/canvas-video-player.js" target="_blank">el script</a> de Stanko modificado.<br />
<strong>También puedes bajártelo todo juntito, con un vídeo de prueba y el script original pulsando aquí</strong></p>
<div style="text-align:center;"><a href="/wp-content/uploads/2016/04/html-canvas-video-player.zip" class="qbutton">DESCARGAR</a></div>

		</div> 
	</div> </div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/videos-fondo-ios-autoplay/">Vídeos de fondo en iOS (con autoplay)</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Flash revive como HTML5 gracias a Swiffy</title>
		<link>https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Mon, 29 Feb 2016 23:37:52 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/?p=1504</guid>

					<description><![CDATA[<p>Si llevas ya algunos años recorriendo internet quizás recuerdes la moda de las intros en Flash. No había web que no tuviera una animación "chula" y llenita de efectos que había que saltarse para poder ir al contenido. Aunque el pobrecito Flash realmente no tenía la culpa. Algunos desarrolladores, entre los que me incluyo, nos esforzábamos por hacer entender que, como todas las tecnologías, era buena siempre que se usara de manera correcta y se aprovecharan sus ventajas y prestaciones. Eran los tiempos en los que no teníamos HTML5, ni CSS3 y las posibilidades de Flash y su ActionScript estaban muy por delante de lo que podía hacerse con otras herramientas. A pesar de ello, se utilizó mayormente para dificultar la usabilidad y el acceso a la información.</p>
<p>La entrada <a href="https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/">Flash revive como HTML5 gracias a Swiffy</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>Si llevas ya algunos años recorriendo internet quizás recuerdes la moda de las intros en Flash. No había web que no tuviera una animación &#8220;chula&#8221; y llenita de efectos que había que saltarse para poder ir al contenido. Aunque el pobrecito Flash realmente no tenía la culpa. Algunos desarrolladores, entre los que me incluyo, nos esforzábamos por hacer entender que, como todas las tecnologías, era buena siempre que se usara de manera correcta y se aprovecharan sus ventajas y prestaciones. Eran los tiempos en los que no teníamos HTML5, ni CSS3 y las posibilidades de Flash y su ActionScript estaban muy por delante de lo que podía hacerse con otras herramientas. A pesar de ello, se utilizó mayormente para dificultar la usabilidad y el acceso a la información.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>¿La muerte de Flash?</h5>
<p>La irrupción masiva de móviles y tablets, con su escaso o nulo soporte para Flash, y las nuevas posibilidades que incorporaban los últimos estándares hizo que muchos terminaran dando por muerta esta tecnología. De hecho, incluso yo mismo llevaba ya muchísimo tiempo sin hacer nada con Flash hasta que hoy he descubierto Swiffy de Google, un conversor de Flash a HTML5 que puede hacer que tus archivos SWF lleguen a mayor audiencia y funcionen en todos los dispositivos modernos.</p>
<p>Aunque Swiffy está lejos de ser perfecto, es ideal para convertir animaciones, pequeños juegos o banners con los que generalmente hace un buen trabajo, pero puede fallar con proyectos complejos o que hagan uso de prestaciones no soportadas. Además, es incapaz de convertir archivos superiores a 1MB lo que supone una gran limitación.</p>
<p>Si tienes archivos SWF de menos de 1MB, puedes convertirlos a HTML5 <a href="https://developers.google.com/swiffy/convert/upload" target="_blank">subiéndolo a la página de Swiffy</a>. Si dispones de Adobe Flash también puedes <a href="https://developers.google.com/swiffy/convert/flash-extension" target="_blank">bajarte e instalar la extensión</a> que te permitirá guardar tus archivos .fla como HTML5. Hay que tener presente que la extensión tiene la misma limitación de 1MB y que no es compatible con la versión Creative Cloud de Flash. Y aunque animaciones y proyectos simples pueden convertirse sin más, en proyectos más complejos podría ser necesario readaptar algo de código para &#8220;su nueva vida&#8221; o replantear las interacciones para su uso con dispositivos táctiles.</p>
<p>Al usar cualquiera de las dos versiones obtendremos una página .html compatible con todos los dispositivos, que incluye los scripts necesarios para emular el proyecto Flash mediante JavaScript.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Un pequeño juego de ejemplo</h5>
<p>Para que veas las posibilidades de esta tecnología aquí te dejo una versión del juego clásico <em>snake</em> que debería funcionar en cualquier dispositivo y navegador reciente.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script type="text/javascript" src="https://www.gstatic.com/swiffy/v7.4/runtime.js"></script>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<script>
      swiffyobject = {"as3":false,"frameRate":12,"frameCount":2,"backgroundColor":-1,"frameSize":{"ymin":0,"xmin":0,"ymax":8000,"xmax":4000},"fileSize":7977,"v":"7.4.1","internedStrings":["direccion","derecha","izquierda","arriba","69E69E38k38k","::::::","inicia","60G0Z20o20e","sensor",":50g0ya00O:a:00Ea00o:a:00e","cuadrado","0I0I0r0r","::::05q705e","gusano","::::0j0j","282g::282g0j0j",":80F0Ra:60ca60m:a:60Cc","cuadrado0","t0p0h0h","ponleotro","::::0d:","puntos","pierde","puntua","::::80B0L","colocabola","0h0d00f0p","length",":80F2Ra:60ca60m:a:60Cc","0C0C060d060d"],"version":7,"tags":[{"type":9,"actions":[{"constants":["#13","Array","xprevia","yprevia","#17","i","#10","_root.cuadrado","root.cuadrado","#0","#1","#21","diferenciax","diferenciay","#25","mueve","xbola","ybola","bola","#2","#3","abajo","_root","_x","_y","#27",".sensor","#8","hitTest","#22","#23","#19","push","gotoAndStop"],"type":136},{"type":305,"value":"#6"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":0,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":2,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":3,"type":304},{"type":305,"value":0},{"index":1,"type":304},{"type":64},{"type":79},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"type":305,"value":0},{"index":4,"type":304},{"type":79},{"index":5,"type":304},{"type":305,"value":1},{"type":29},{"index":5,"type":304},{"type":28},{"type":305,"value":4},{"type":72},{"type":18},{"type":157,"target":75},{"index":1,"type":303},{"index":4,"type":304},{"type":78},{"index":6,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":16384},{"type":305,"value":100},{"index":5,"type":304},{"type":28},{"type":71},{"type":71},{"type":36},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":305,"value":40},{"type":305,"value":10},{"index":5,"type":304},{"type":28},{"type":12},{"type":11},{"type":35},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":8,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":79},{"index":5,"type":304},{"index":5,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":27},{"index":1,"type":303},{"index":9,"type":304},{"index":10,"type":304},{"type":79},{"index":1,"type":303},{"index":11,"type":304},{"type":305,"value":0},{"type":79},{"index":12,"type":304},{"type":305,"value":10},{"type":29},{"index":13,"type":304},{"type":305,"value":0},{"type":29},{"type":305,"value":0},{"index":1,"type":303},{"index":14,"type":304},{"type":82},{"type":23},{"type":305,"value":0},{"index":1,"type":303},{"index":15,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#25"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":16,"type":304},{"type":305,"value":10},{"type":305,"value":10},{"type":48},{"type":12},{"type":29},{"index":17,"type":304},{"type":305,"value":10},{"type":305,"value":10},{"type":48},{"type":12},{"type":29},{"index":1,"type":303},{"index":18,"type":304},{"type":78},{"type":305,"value":0},{"index":16,"type":304},{"type":28},{"type":35},{"index":1,"type":303},{"index":18,"type":304},{"type":78},{"type":305,"value":1},{"index":17,"type":304},{"type":28},{"type":35}]},{"type":60},{"type":305,"value":"#1"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":10,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"#2"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":19,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"#3"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":20,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"abajo"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":9,"type":304},{"index":21,"type":304},{"type":79}]},{"type":60},{"type":305,"value":"mueve"},{"args":[],"type":155,"body":[{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":79},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":10,"type":304},{"type":73},{"type":18},{"type":157,"target":46},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":10},{"type":71},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":19,"type":304},{"type":73},{"type":18},{"type":157,"target":68},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":10},{"type":11},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":20,"type":304},{"type":73},{"type":18},{"type":157,"target":90},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":10},{"type":11},{"type":79},{"index":22,"type":304},{"type":28},{"index":9,"type":304},{"type":78},{"index":21,"type":304},{"type":73},{"type":18},{"type":157,"target":112},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":10},{"type":71},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":0},{"type":72},{"type":18},{"type":157,"target":129},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":305,"value":190},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":78},{"type":305,"value":190},{"type":103},{"type":18},{"type":157,"target":146},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":23,"type":304},{"type":305,"value":0},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":0},{"type":72},{"type":18},{"type":157,"target":163},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":305,"value":190},{"type":79},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":78},{"type":305,"value":190},{"type":103},{"type":18},{"type":157,"target":180},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":24,"type":304},{"type":305,"value":0},{"type":79},{"index":5,"type":304},{"type":305,"value":1},{"type":29},{"index":5,"type":304},{"type":28},{"index":22,"type":304},{"type":28},{"index":0,"type":304},{"type":78},{"index":25,"type":304},{"type":78},{"type":72},{"type":18},{"type":157,"target":280},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":33},{"index":26,"type":304},{"type":33},{"type":28},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"index":28,"type":304},{"type":82},{"type":18},{"type":157,"target":218},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":29,"type":304},{"type":82},{"type":23},{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":34},{"type":79},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"type":34},{"type":79},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"type":305,"value":1},{"type":11},{"type":78},{"type":35},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":3,"type":304},{"type":78},{"index":5,"type":304},{"type":28},{"type":305,"value":1},{"type":11},{"type":78},{"type":35},{"index":5,"type":304},{"index":5,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":183},{"index":22,"type":304},{"type":28},{"index":18,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"type":305,"value":1},{"index":22,"type":304},{"type":28},{"index":4,"type":304},{"type":78},{"index":27,"type":304},{"type":78},{"index":28,"type":304},{"type":82},{"type":18},{"type":157,"target":303},{"type":305,"value":0},{"index":22,"type":304},{"type":28},{"index":30,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#23"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":1,"type":303},{"index":11,"type":304},{"index":1,"type":303},{"index":11,"type":304},{"type":78},{"type":80},{"type":79},{"type":305,"value":0},{"index":1,"type":303},{"index":31,"type":304},{"type":82},{"type":23},{"type":305,"value":0},{"index":1,"type":303},{"index":14,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#19"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"index":5,"type":304},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":25,"type":304},{"type":78},{"type":29},{"index":1,"type":303},{"index":4,"type":304},{"type":78},{"index":6,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":16384},{"type":305,"value":100},{"index":5,"type":304},{"type":28},{"type":71},{"type":71},{"type":36},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":0},{"type":305,"value":1000},{"type":35},{"index":7,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"type":305,"value":1000},{"type":35},{"index":8,"type":304},{"index":5,"type":304},{"type":28},{"type":71},{"type":305,"value":1},{"index":1,"type":303},{"index":0,"type":304},{"type":78},{"index":32,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":305,"value":"#22"},{"args":[],"preloads":["_root"],"registerCount":2,"suppress":7,"type":142,"body":[{"type":305,"value":2},{"type":305,"value":1},{"index":1,"type":303},{"index":33,"type":304},{"type":82},{"type":23}]},{"type":60},{"type":7}]},{"paths":[{"data":["::000da:000da000d:a:000Dc"],"fill":0}],"flat":true,"bounds":":000d000d000d","fillstyles":[{"color":-3289651,"type":1}],"id":1,"type":1},{"depth":1,"id":1,"type":3,"matrix":0},{"paths":[{"data":["::000da:000Da000d:a:000da000D:"],"line":0}],"flat":true,"bounds":"#29","linestyles":[{"color":-3407872,"width":60}],"id":2,"type":1},{"depth":2,"id":2,"type":3,"matrix":0},{"paths":[{"data":[":0I0Ia:0ra0r:a:0Rc"],"fill":0}],"flat":true,"bounds":"#11","fillstyles":[{"color":-3407872,"type":1}],"id":3,"type":1},{"frameCount":1,"id":4,"type":7,"tags":[{"depth":1,"id":3,"type":3,"matrix":0},{"type":2}]},{"frameCount":1,"id":5,"type":7,"tags":[{"depth":1,"id":3,"type":3,"matrix":"#15"},{"depth":2,"name":"#8","id":4,"type":3,"matrix":"#14"},{"type":2}]},{"depth":3,"name":"#17","id":5,"type":3,"matrix":"::::00r00r"},{"paths":[{"data":["::0Ib8C:4F7bbZzZ3fb:7cz4fbzz4fzb7c:3fZbz7B7b4FbA7C7B3FbZ7B3F7Bc"],"fill":0}],"flat":true,"bounds":"#11","fillstyles":[{"color":-13312,"type":1}],"id":6,"type":1},{"frameCount":1,"id":7,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":"564n::564n0k0k"},{"type":2}]},{"depth":6,"name":"control","id":7,"type":3,"matrix":"958E::958E48C0r","actions":[{"actions":[{"type":305,"value":0},{"type":305,"value":"_root"},{"type":28},{"type":305,"value":"#6"},{"type":82},{"type":23}],"events":128,"key":0},{"actions":[{"type":305,"value":0},{"type":305,"value":"_root"},{"type":28},{"type":305,"value":"mueve"},{"type":82},{"type":23}],"events":64,"key":0},{"actions":[{"constants":["_root","#0","#1","#2"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":1},{"actions":[{"constants":["_root","#0","#2","#1"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":2},{"actions":[{"constants":["_root","#0","abajo","#3"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":14},{"actions":[{"constants":["_root","#0","#3","abajo"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":1048576,"key":15}]},{"frameCount":1,"id":8,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":0},{"type":2}]},{"frameCount":1,"id":9,"type":7,"tags":[{"depth":1,"id":6,"type":3,"matrix":"#15"},{"depth":2,"name":"#8","id":8,"type":3,"matrix":"#14"},{"type":2}]},{"depth":8,"name":"bola","id":9,"type":3,"matrix":"::::48C01f"},{"descent":226,"ascent":984,"leading":29,"name":"Helvetica Neue Bold Condensed","glyphs":[{"data":":6e9Oa:9oa5m:a:9Oc","unicode":".","advance":246},{"data":":6x28Fa9ciboix4cbjym9fad2ka:9gaD6kbC7dL6gbI8bX0dbOk0DkbX:9CIbOIX4CbJYM9FaD2Ka:9Gad7Kbc7Dl5Gbi8Bx0DboK0dKc::7Ib1H:6L3cb6D2c9F6hbV3e7B3laE5nb:7ij4pbk7f7c9jbz2d0g9eb4dr0krb1h:6l1Cb6d1C9f5Hbo6C7b3Lae5Nb:7IJ4PbK7F7C9JbZ2D0G1Fb3DS0KSc","unicode":"0","advance":492},{"data":":6v25GbL2f4E9hb3D8b6K8baN:a:6ia5n:a:12ea7n:a:25Gc","unicode":"1","advance":492},{"data":":4x25Gb7K:1Q5eb7B7b1D6fbM8cM9ha:8ba1n:ac4EbbZk6DbiSx0CbpK4dKb6c:4evbrwr8faC9daK0daW7ca9C0da0F5ea0G3gb0C6c0E4gbT8c0C0hbI2dI0ia46d:a:4Ka73B:beUw9Dbs8B1e8Ea2h6Ga3e3Ebu7B4c4Ebn8Bt8Eaf5Fb:8DM4HbN7C0D3Fb3E1E4P1Ec","unicode":"2","advance":492},{"data":":4x25Gb4J:9O3eb7Bz0D7fbN0dN4ia5m:ac7DbbUj7CbiPwYa9cHb6c:3eubrvr4gaE3daN6caZzbPi9Cia9D:a:7ia0e:b0c:9djbrj8b8bbkqn9cad7daC5dbBuK7cbIpYybOi2Dib8D:4F3CbP3CQ7Ia1N:a:cb:6j2e3pbz9b5f3db0do3ioa8fEa4eOb7dS3g1Eb7b2C6c1Gbi9Ci6Gb:8F9B4Kb9B5D0J7Ea:Bb2eK2h2Eb9b2D9b7Jb:8DN4HbN5C1D8Eb5E5D4O5Dc","unicode":"3","advance":492},{"data":":73b40Ea:75ba4N:a2n75Bc:P5Ra0X54da:1la8y:a:0oa5m:a:0Oa9f:a:5Ka9F:a:60Dc","unicode":"4","advance":492},{"data":":8e10Ga7B94ca2m:bd1Cu9DbqR9dRa1dgbphzybiqn7dad5gb:1gT6jbT5c6F5cbX:8CLbOKV9BbHRJ9CaB9Ca1N:a:tb:1cg6fbh5c1c5fbv1c5f9db2ds1ksa4kRb5dR2g4Ebz5C6c4Hbj9Dj0Kb:3DH4HbH2D8B4GbT3C4E3Eb5CT7HTb7D:0Hmb3Cl3E1daB:ao5Pa7z:a:4Kc","unicode":"5","advance":492},{"data":":0y62Ca7chaywbr2cr6jaC7ebBzJ5dbItX1cbPj3DjbZ:1DJbPKY0CbISL6DaC7Eb:4Gs6JbiOxWbpH8cHc:h63Cb0I:9M4cb9D4c2G0ibY0h8B8laD9nb:6fg8lbg1f1c8jbx6d9f3gb5d7b1l7bb1f:6jQb5dP3g9Db5e5F5e0Sb:0EI1IbJ2D1C2GbU0C5E7Db4CQ2HQb9D:3Hqb4Cq3E6daB:a:6Cac4Gbc4Cm8EbjY8b9CbqM6dMb7c:2evbowo6fa1n:bA3ER8HbQ5C4D7Eb8BU4F1Ca6GIc","unicode":"6","advance":492},{"data":":w10Ga:7la05c:b3E2g2I8nb9C6g6F1ob7B4g4D7nbP2gX7ma4o:bi7G7b6Obq9G4d6Obz7G2f0Ob5c2G0h6Ma:2Kc","unicode":"7","advance":492},{"data":":6x28Fb6c:4exbryr5gb:2eT7gbSx2Exb3C:2EXbTYT7Gb:0Er5GbrX4eXc::96ba1djaz7bam9cad9daD9dbCwM0dbJqZ7bbPi1DibY:1DIbPJZ7BbJQM0DaD9Dad9DbcVm9CbjQz7BbpJ1dJc::93Cb9I:6O7db7E6d7E3oae1dbeur1dbls2c5cbto9dva:bb1Fm2I2fbOxW4ebG9bG3fb:2cg0gbh8c3c1gbx3c0g4eb5dv1lvb6g:1lVb6dV0g4Eby3C3c1Gag0Gb:4CG3FbH0CW4Eb1C9D2I2Fa:Bb8bG8dVbtP2c5CbmTr1Daf1Db:7J7E3Ob8BW7F5Ca9HLc","unicode":"8","advance":492},{"data":":2x28Fby:1djbpky0cal6dac7eaE3fbDzN2daXxbPh8Chb3D:2F2CbIPM2DaE3Fac7EbbZj6DbiSx0CbpJ3dJc:g7Ib3L:9Q7fb8B3c1D1hbN8dN1kb:0ei1ibj1d1c2gbu0c5e7db4cq2hqb9d:3hQb4cQ3e5Dab:a:5caC4gbC4cM8ebJy7B9cbQm7Dmb7C:2EWbOWO4Fa1N:ba2er8hbq5c4d6eb8bu4f9ba6gha9gIb5cH9eXb0e2C3g7Hbw6E8b8Lad0Ob:6FG8LbG1F1C8JbX6D9F5Gb5D8B1L8Bc","unicode":"9","advance":492},{"data":":9z22Fb2d:7fpbyo7c7dbm1cq8gad0kaD4lbE1eS1hbM1c7C4dbWn2Fna6F:a:14Ec:7N9Ja:31ga2w:a7fEa5eQa3d9BbsQ4c0DbnWx2Eap5Fbl1Gl8Pb:0HI6NbI6F6C2Ka1C1Da2D1Cb7DY4LYc","unicode":"D","advance":588},{"data":":1e31Ga:31ga19d:a:1La71B:a:6Sa6x:a:1La6X:a:2Qa1z:a:1Lc","unicode":"E","advance":493},{"data":":9e31Ga:31ga7n:a:31Gc","unicode":"I","advance":264},{"data":":0z22Fa8dgbsg1cubx9bx4hb:8bG9dbGuT4cb8B7b2G7ba5F:a:2Vc:8N9Ja:31ga8n:a:92Ba9g:a5iMb3dM3g0Db0cZ7d8Fbq2Dq9Ib:1DJ0HbJ0D4C0GbW1C2F0Eb8CS5ISc","unicode":"P","advance":531},{"data":":9z22Fb1e:6gybzyz6gb:0cG1ebGuV4cbNl5Cra7Dga1F:a:1Uc:8N9Ja:31ga8n:a:09Ca9g:b6d:5fybtxv7fad0nad2dbctn5ca0p:a:FbTK7B2DaF9HaB4EaC4DaK3EaU6CbLN3CWa7DMa:Bb2fN2i0Fb9b7D9b0Lb:8DL4HbM5C9C8EbYX1F5Cb6CL2HLc","unicode":"R","advance":569},{"data":":9y45Ga4Imb1Dm2G0db0C7b5D7fbO1dO5ib:5dk9gbl4c6c1fbxz0f5db5ct5h6ca1fxa1dzav2cbgrg3db:wG0dbGqU8bb7Bv0Fva8DHbSH0CWbLNP5CaD7Da:Ua7N:a:0cb:1j4e5obz7b1g1da7jna7jNb7dM0h9Cb4c7B0e9Fbq2Dq0JaF1FbF8BV1EbPW2D3Db7BT9F8Ca4K9Db7DT1F3DbOWO7Ead1CbdPm8BazSa1dGb3d:2f8bbr9br1ha2n:a:Ub:2EQ9HbQ8C7D2Fb1CX2G4Ca1IKc","unicode":"S","advance":531},{"data":":m31Ga:1la9o:a:10fa8n:a:10Fa9o:a:1Lc","unicode":"T","advance":492}],"id":10,"bold":true,"type":5},{"leftMargin":0,"color":-1,"indent":0,"thickness":0,"leading":40,"selectable":true,"gridFit":0,"type":13,"align":2,"mode":0,"rightMargin":0,"variable":"#21","bounds":"0D0D70f70f","id":11,"embed":true,"sharpness":0,"font":10,"height":400},{"depth":11,"id":11,"type":3,"matrix":"#12"},{"data":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADEAMQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/q5pek6hrV8llptpLdXDY+SNc4GQMk9FGSMk4A70aTpl1rWrWum2ab7i5kEacEgZ6k4BOAMknsATX1H4N8Haf4N0gWtqBJcyYNxcsuGlb+ijJwvb3JJKbsNK5wnhj4HWduFuPEd19rk/59bYlYx94cvwzfwnjbggj5hXpmk+HtH0KDydM022tVKhWaOMBnAGBubqxGTySTyfWr7P2H50wknqahyGkS5UdxRuHqPzqGilcdibcPUfnRuHqPzqGii4WJtw9R+dG4eo/OoaXFFxku4eo/OjcPUfnUWKKLgS7h6j86Nw9R+dRUUXAl3D1H50bh6j86ixSYouBNuHqPzo3D1H51DRRcVibcPUfnRuHqPzqGilzBYdPb291BJDPFFNFIpV0dAyspGCCDwQR2ri/EXwn8M67CTb2i6XdBcJLZqEXocbk+6wycnGGOANwFdlTg5HXkU1ILHy94v+Hut+EJS9xF9psDkreQKSgGcAPx8jHI4PHOATg1ydfZs8EN5bSQTxpNDKhR43UMrKRggg9QRXzd8TfAI8H6lHc2JdtKvGbygwJMDDnYW6EY5U5yQD6ZOidyWjg6KKKYj3X4H+GPs2nXPiS4X95dZgtuekYPzHg92XGCARs44avWnb+EfjVDw/pUeh+HtP0yLaVtoFjLKgUMwHzNgdCzZY9eSeTVwnJJrOTKQlFFFSUFFFLigBKWilxTASlxRRQAYooooAKMUUUAGKKKKAEoxS0UANopaSkAUUUUAKrbTVDxJocHiXw7eaTOdq3MZCvgnY45VsAjOGAOM84xV6pEOV+lNMTPja7tZ7G9ns7lPLngkaKRMg7WU4IyOOooruvjLp/wBh+IU83mbxe28dxjbjZxsx7/cz+OO1FakH0ieFOPSoamb7p+lQ1kzQKKKUUgAUtFFMAooooAKKWigQmKXFFFABikxS4ooATFFLRQAlFGKKBhikpaDSAbRS0lABUkfeo6kj/iprcD5/+Ov/ACO9l/2Dk/8ARstFHx1/5Hey/wCwcn/o2WitEQ9z6Cb7p+lQ1M33T9KhrORYClopRQAUUUUAFLRRQIKXFFFMAopcUYoASilxRigBKTFOpKAEopTSUgEooNFAwNIaWkoASpI/4qjNSR/xULcD5/8Ajr/yO9l/2Dk/9Gy0UfHX/kd7L/sHJ/6NlorREPc+gm+6fpUIqZvun6VEKzZYUtAooAKUUgpaBBS0CimAUtFKKAExS4oooAMUmKWigBKCKWkoASg0ppKAEpKWkNIAoNFFAxDT4/4qZT4/4qFuB8//AB1/5Hey/wCwcn/o2Wij46/8jvZf9g5P/RstFaIh7n0E33T9KiFSt90/SoqzZYoooFFAAKWgUCgQtKKSlFMAFLQKKAClxQKKADFJS0UAJQaKKAENJS0lAAaSlNJSASiiihjEp8f8VNNOj/ioQHz/APHX/kd7L/sHJ/6Nloo+Ov8AyO9l/wBg5P8A0bLRWiIe59BN90/Soqlb7p+lRCs2WKKKBRQAooFIKWgQtKKSlFMBRRSCloAUUUlLQAUUUGgBKKKKAEpKWkoADSUppKQCUUUUMYGnR/xU2nR/xUID5/8Ajr/yO9l/2Dk/9Gy0UfHX/kd7L/sHJ/6NlorREPc+gm+6fpUQqVvun6VCKzZY4UUCigAFLSUtAhaWmilpgLS0gooAWiiigAooooAKQ0ZooADSUUGgBDQaKQ0gCiig0DEp8f8AFTDT4/4qFuB8/wDx1/5Hey/7Byf+jZaKPjr/AMjvZf8AYOT/ANGy0VoiHufQTfdP0qGpm+6fpUNZyLFpaQUooAKBRRQAtKKQUUCFpaTNFMBaKSigBaKSigBc0lFFABSUUUgCkoooGFBoNJQAGnx/xVHUkf8AFQtwPn/46/8AI72X/YOT/wBGy0UfHX/kd7L/ALByf+jZaK0RD3PoJvun6VDUzfdP0qGs5FhS0lFIBwopKXNABRmiimAtFJRmgQ7NGaSigBc0ZpKKACiikzQAtJRRQMKKKKQCUhpTSUAFSR/xVHUkf8VNbgfP/wAdf+R3sv8AsHJ/6Nloo+Ov/I72X/YOT/0bLRWiIe579bzx3VrFcQSLLFKiujqwZWUjIII4IIPWm1xvwn8Rx674KtrclFutNVbWVFwDtUfI2Mk4KgDJxlg2BgV2jrhs9jWckUhtFFFIYUtJRQA7NFJmimAtFGaKACiiii4rBRRRRcLBRRRmgYUUUlIAoJpKKACiiigAqSMcE1GBk4FOlmitLaSeeRIoYkLu7sFVVAyWJPQAd6aA+fPjjPFN47gSORGaGwjSQK2SrbnbB9DhgcehB70Vx3izXD4k8U6hq+zYtxLmNSMEIAFXIyedoGeeuaK1MzT+Hni9/CHiWOeQ5sLnEN2pLYCZHzgDOWXkjg8EgYzmvqGCeG8to54JElhlQOjowZXUjIII4IxXxlXeeAfibe+Dx9huYnvNKZtwi3YaAk/MUzwRjJ2nAJ7jJymrjTPpEqVPNNqjofiTR/EtqbjSb+K5VfvKpw6ckDcpwy52nGQM4yK0yinpxWbRVyKipPL9/wBKPL9/0osxkdFSeX7/AKUeX7/pRZgMzRT/AC/f9KPL9/0oswGUtO8v/a/Sjy/9r9KLANzRTvL/ANr9KPL/ANr9KLAMop/l/wC1+lHl+/6UWYDM0lSeX7/pR5fv+lFmBHRUnl+/6UeX7/pRZgR0AZ6VIIx3NNmlhtLeSeeVIYY1LPI7BVVQMkkngADvRYB6Lt5PWvJvjL42WysT4a0+VTc3K/6YyOd0ScELx3bvk/d6jDA0eNvjLa2Sy2HhordXBVla9/5ZwtnHygj5+hIP3fu/eGRXhcssk8zzTSPJLIxZ3diWZjySSepq0iGxlFFFUIKKKKAJrW7ubG5S5s7iW3nTOyWFyjLkYOCORwTXdaf8ZfF9l5gmuLW+3Yx9ptwNmM9Nm3rnvnoMYoooAv8A/C9vE/8Az4aR/wB+pf8A45R/wvbxP/z4aR/36l/+OUUVIw/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigA/wCF7eJ/+fDSP+/Uv/xyj/he3if/AJ8NI/79S/8AxyiigA/4Xt4n/wCfDSP+/Uv/AMco/wCF7eJ/+fDSP+/Uv/xyiigCKf44+KpoZI0g0uFmUgSRwNuUn+IbnIz9QR7Vx2ueLNe8SFP7X1Oa5RMFYzhUBGcHaoAzyecZ5ooqhGNRRRQAUUUUAf/Z","width":196,"id":12,"type":8,"height":196,"mask":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAADECAYAAADApo5rAAACLElEQVR42u3TyRGDMBREQfJPGh/w0QaJRYX+dFdNBvOWdV2XwYNWo7+5iACBDAoCpgtDCAjjoSBg+jCEgDBuDAJKRSEEhHExCCgbhRgQxckgoHwUYkAUnUFATBRiQBSCQBD9QUBcFGJAFIKA9iAgNgpBIIidICA6CkEgiD9BQHwUggBBwO8oxACCAEFAUxDANwpBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggAEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAEIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggBBgCBAECAIEAQIAgQBggAEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIEAYIAQYAgQBAgCBAECAIQBAgCBAGCAEGAIEAQIAgQBAgCBAGCAEGAIEAQIAgQBAgCBAGCgJQgRAFbB4IAQYAgoD0IURAfgyBgJwhREB2DIOAgCFEQG4MgEERDEKIgMgZBIIjGIERBXAxHQYiCqBgEgSA6gxAFMTG0BiEKImLoCUIUlI+hNwhRUDqGM0GIgrIxnA1CFJSM4UoQwqBUCHcFIQrKxHBXEMJg+hCeCEIYTBvCk0EIg+lCGBGEMJgmhJFBCITXBvCGIMxeuw8pGH8CJeygXQAAAABJRU5ErkJggg\u003d\u003d"},{"paths":[{"data":[":24C99Db8F:7K5da83h:b0E5D9K5Dc:79G0fb3D9d3D5ka:47fb:7f3d6ka:78Hc:06iGa:91hb9d0E9d2La:47Fb:1G9D2Lc:93H98hb1e7d9k7da47f:b9f:0l7Dc"],"fill":0},{"data":[":8d8Sa:5ga6x:a:6xa6X:a:5ga42C8Sa42c8Sc:04E6Ya:oa:78ha:ma06i:a:Ga:91Ha:Hc"],"fill":1},{"data":[":8d8Sa42C8sa42c8sa:5Ga6x:a:6Xa6X:a:5Gc"],"fill":2},{"data":[":50d46Db9d1e9d2la:47fb:2g9D2l:Ggb1E7d0L7da47F:b8F:9K7D:MMb3D9D3D6Ka:47Fb:6F3d5K:oOb9d5D7k5Da47f:b9f:9k5d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"5536F02800C02800c5536F56D52d","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":13,"type":1},{"frameCount":1,"id":14,"type":7,"tags":[{"depth":1,"id":13,"type":3,"matrix":0},{"type":2}]},{"depth":12,"id":14,"type":3,"matrix":"::::10i989e","actions":[{"actions":[{"constants":["_root","#0","#1","#2"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":[":23C99Db9F:0L7da86h:b1E7D9K7Dc:2m1fa:78hb3d0E3d6Ka:47Fb:7F3D5Kc:06IGb9D0e9D2la:47fb:1g9d2la:91Hc:i99hb9d5d8k5da47f:b8f:8k5Dc"],"fill":0},{"data":[":8D8Sa42c8sa42C8sa:5Ga6X:a:6Xa6x:a:5Gc:02D4Ya:ga:91ha:ha06i:a:Na:78Ha:Nc"],"fill":1},{"data":[":8D8Sa:5ga6X:a:6xa6x:a:5ga42c8Sa42C8Sc"],"fill":2},{"data":[":56d38Db3d8d3d5ka:47fb:6f3D6k:Nnb0E5d8K5da47F:b9F:8K5D:IHb9D1E9D2La:47Fb:2G9d2L:gGb1e7D0l7Da47f:b8f:9k7d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"5536F02800c02800C5536F56d52D","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":15,"type":1},{"frameCount":1,"id":16,"type":7,"tags":[{"depth":1,"id":15,"type":3,"matrix":0},{"type":2}]},{"depth":14,"id":16,"type":3,"matrix":"::::110c989e","actions":[{"actions":[{"constants":["_root","#0","#2","#1"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":["::94Ba8s42ca5G:a:6xa6X:a:6Xa5G:a8s42Cc:23C5Tb7F:5K3daIhaEeb7D1e7D9ka:47fb:9f7d0laeeabbb0e9d2l9da47f:b1g:2l9DabBafFb5d0E5d9Ka:47Fb:8F5D7KaFGaHHb0E3D6K3Dc"],"fill":0},{"data":[":52D56Da:maeEaiHc:78h:ahhafga:Oc:06I99ha:gag:aBBaEEc:06iAaFfaBbah:a:Hc"],"fill":1},{"data":["::94Ba8S42ca5g:a:6xa6x:a:6Xa5g:a8S42Cc"],"fill":2},{"data":[":54d41Db5d9d5d7ka:47fb:9f5D9k:Hhb1E9d2L9da47F:b2G:2L9D:GGb7D1E7D0La:47Fb:8F7d9K:nMb8d3D5k3Da47f:b6f:6k3dahhafg::83haFfaBb:98H93HaeEaiH:G06iaBBaEE"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"7264w::7264w52D56D","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":17,"type":1},{"frameCount":1,"id":18,"type":7,"tags":[{"depth":1,"id":17,"type":3,"matrix":0},{"type":2}]},{"depth":16,"id":18,"type":3,"matrix":"::::10t899d","actions":[{"actions":[{"constants":["_root","#0","abajo","#3"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"paths":[{"data":[":24C99Db1G:2L9da91h:b0E9D2L9Dc:77G8eb5D9d5D8ka:47fb:8f5d8ka:83Hc:06iBa:86hb7d1E7d9Ka:47Fb:9F7D0Lc:91H99hb9d3d5k3da47f:b7f:6k3Dc"],"fill":0},{"data":[":3l94Ba:6xa5g:a8S42ca8S42Ca5g:a:6Xc:31C6Oa:ia:83ha:na06i:a:Ma:86Ha:Gc"],"fill":1},{"data":[":3L94Ba:6xa5G:a8s42ca8s42Ca5G:a:6Xc"],"fill":2},{"data":[":52d43Db7d1e7d0la:47fb:8f7D9k:Mmb9D3d6K3da47F:b6F:5K3D:ONb5D0E5D8Ka:47Fb:9F5d8K:hIb1e9D2l9Da47f:b2g:2l9d"],"line":0}],"bounds":"#4","fillstyles":[{"color":-3685702,"type":1},{"transform":"68336C::68336C52d56d","bitmap":12,"type":5},{"color":-5432538,"type":1}],"linestyles":[{"color":-10066330,"width":140}],"id":19,"type":1},{"frameCount":1,"id":20,"type":7,"tags":[{"depth":1,"id":19,"type":3,"matrix":0},{"type":2}]},{"depth":18,"id":20,"type":3,"matrix":"::::10t079g","actions":[{"actions":[{"constants":["_root","#0","#3","abajo"],"type":136},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":78},{"index":2,"type":304},{"type":73},{"type":18},{"type":18},{"type":157,"target":16},{"type":305,"value":0},{"index":0,"type":304},{"type":28},{"index":3,"type":304},{"type":82},{"type":23}],"events":4096,"key":0}]},{"type":2},{"depth":3,"type":4},{"depth":6,"type":4},{"depth":8,"type":4},{"depth":11,"type":4},{"depth":12,"type":4},{"depth":14,"type":4},{"depth":16,"type":4},{"depth":18,"type":4},{"paths":[{"data":[":::a000d:a:000da000D:a:000D"],"line":0}],"flat":true,"bounds":"#29","linestyles":[{"color":-65536,"width":60}],"id":21,"type":1},{"depth":2,"replace":true,"id":21,"type":3},{"mode":0,"records":[{"color":-3407872,"x":"0h9x1w7z76b4l9x0w","y":460,"glyphs":"nBcDbcaE","text":"PERDISTE","font":10,"height":480}],"thickness":0,"bounds":"5i1k22r54c","id":22,"gridFit":0,"sharpness":0,"type":6,"matrix":"#5"},{"depth":3,"id":22,"type":3,"matrix":"::::00j710d"},{"paths":[{"data":["#9"],"line":0},{"data":["#16"],"fill":0}],"flat":true,"bounds":"#7","fillstyles":[{"color":-1576202,"type":1}],"linestyles":[{"color":-5056280,"width":20}],"id":23,"type":1},{"ascent":717,"name":"Verdana_10pt_st","glyphs":[{"data":":07c17Ga:3ja07c:a:3Jc:09D3ja:2ja2j:a:2Jc:07c:a:2ja3j:a:2Jc:15F2ja:07ca3j:a:07Cc:12e:a:07ca2j:a:07Cc:14F07ca:3ja2j:a:3Jc:07c:a:3ja3j:a:3Jc:10D3ja:2ja07c:a:2Jc","unicode":"O","advance":845},{"data":":5t12Ea:2ja07c:a:2Jc:10D07ca:3ja3j:a:3Jc:07c5Ta:3ja07C:a:2ja07c:a:3ja07C:a:2ja09d:a:10Dc","unicode":"a","advance":640},{"data":":07c12Ea:2ja3j:a:2Jc:08C:a:12ea3j:a:07Ca2j:a:3Ja2J:a:2Jc","unicode":"r","advance":436},{"data":":2j17Ga:5ta2J:a:2ja2j:a:08ca3j:a:08Ca5t:a:2Ja5T:a:5Tc::15fa:2ja5t:a:2Jc","unicode":"t","advance":538}],"id":24,"type":5},{"mode":0,"records":[{"color":-13421773,"x":"#18","y":200,"glyphs":":cAA","text":"Otra","font":24,"height":200}],"thickness":0,"bounds":"#26","id":25,"gridFit":0,"sharpness":0,"type":6,"matrix":"#20"},{"paths":[{"data":["#9"],"line":0},{"data":["#28"],"fill":0}],"flat":true,"bounds":"#7","fillstyles":[{"color":-1,"type":1}],"linestyles":[{"color":-1,"width":20}],"id":26,"type":1},{"paths":[{"data":["#9"],"line":0},{"data":["#28"],"fill":0},{"data":[":90f0sa80M:a:80Ca80m:a:80c"],"line":1}],"bounds":"#7","fillstyles":[{"color":-13792334,"type":1}],"linestyles":[{"color":-13792334,"width":20},{"color":-1576202,"width":20}],"id":27,"type":1},{"mode":0,"records":[{"color":-1576202,"x":"#18","y":200,"glyphs":":cAA","text":"Otra","font":24,"height":200}],"thickness":0,"bounds":"#26","id":28,"gridFit":0,"sharpness":0,"type":6,"matrix":"#20"},{"paths":[{"data":["#16"],"fill":0}],"flat":true,"bounds":"80F0R60m60c","fillstyles":[{"color":-1576202,"type":1}],"id":29,"type":1},{"sounds":[],"records":[{"transform":"#5","depth":2,"id":23,"states":1},{"transform":"#24","depth":3,"id":25,"states":3},{"transform":"#5","depth":2,"id":26,"states":2},{"transform":"#5","depth":3,"id":27,"states":4},{"transform":"#24","depth":4,"id":28,"states":4},{"transform":"747f::486y::","depth":1,"id":29,"colortransform":"6Y5d6Y9m6Y8q::","states":8}],"id":30,"type":10,"actions":[{"actions":[{"constants":["i","_root","#13","#27","#10","removeMovieClip","#6"],"type":136},{"index":0,"type":304},{"type":305,"value":0},{"type":29},{"index":0,"type":304},{"type":28},{"index":1,"type":304},{"type":28},{"index":2,"type":304},{"type":78},{"index":3,"type":304},{"type":78},{"type":72},{"type":18},{"type":157,"target":32},{"type":305,"value":0},{"index":1,"type":304},{"type":28},{"index":4,"type":304},{"index":0,"type":304},{"type":28},{"type":33},{"type":78},{"index":5,"type":304},{"type":82},{"type":23},{"index":0,"type":304},{"index":0,"type":304},{"type":28},{"type":80},{"type":29},{"type":153,"target":4},{"type":305,"value":0},{"index":1,"type":304},{"type":28},{"index":6,"type":304},{"type":82},{"type":23},{"type":129,"frame":0},{"type":6}],"events":2048,"key":0}]},{"depth":4,"id":30,"type":3,"matrix":"::::00t000g","ratio":1},{"depth":9,"id":11,"type":3,"matrix":"#12","ratio":1},{"type":2}]};
    </script>
		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_raw_code wpb_raw_html wpb_content_element" >
		<div class="wpb_wrapper">
			<div style="text-align:center;"><div id="swiffycontainer" style="width: 200px; height: 400px;margin:auto;">
    </div>
    <script>var stage = new swiffy.Stage(document.getElementById('swiffycontainer'),swiffyobject, {});stage.start();</script></div>

		</div>
	</div>
</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style='background-color:#fcf9e0; text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>


	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p><strong>Actualización</strong>: Google ha abandonado el proyecto Swifty y su herramienta de conversión on-line, aunque sigue dando soporte a los contenidos creados anteriormente. Si dispones de alguna versión de Flash Creative Cloud con la extensión Swifty aún podrás seguir creando contenidos compatibles HTML5. Si no es así, la única alternativa actual es usar <a href="https://blogs.adobe.com/creativecloud/welcome-adobe-animate-cc-a-new-era-for-flash-professional/" target="_blank">Adobe Animate</a>.</p>

		</div> 
	</div> 	<div class="vc_empty_space"  style="height: 32px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/revive-tus-proyectos-animaciones-flash-html5/">Flash revive como HTML5 gracias a Swiffy</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Todos contra todos</title>
		<link>https://www.develooping.com/todos-contra-todos/</link>
		
		<dc:creator><![CDATA[develooping]]></dc:creator>
		<pubDate>Wed, 23 Sep 2015 11:09:52 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://www.develooping.com/develooping/?p=761</guid>

					<description><![CDATA[<p>En internet también se siguen tendencias. Y aunque cuando hablamos de comunicación siempre nos referimos a la necesidad de diferenciarse, al final parece que para muchos el miedo a ser diferentes les lleva a tomar un camino bastante transitado, que, aunque en principio puede parecer más fácil y seguro, les hará muchísimo más difícil destacar de la competencia.</p>
<p>La entrada <a href="https://www.develooping.com/todos-contra-todos/">Todos contra todos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="wpb-content-wrapper"><div class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<p>En internet también se siguen tendencias. Y aunque cuando hablamos de comunicación siempre nos referimos a la necesidad de diferenciarse, al final parece que para muchos <strong>el miedo a ser diferentes les lleva a tomar un camino bastante transitado</strong>, que, aunque en principio puede parecer más fácil y seguro, les hará muchísimo más difícil destacar de la competencia.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>En un mundo globalizado no hay panaceas globales</h5>
<p><img loading="lazy" decoding="async" class="alignleft size-full wp-image-856" src="/wp-content/uploads/2015/09/panacea1.jpg" alt="panacea" width="144" height="199" /><strong>Ese miedo a diferenciarse está programado en lo más íntimo de nuestra naturaleza</strong> y creemos que facilitará nuestra aceptación por parte de los otros. Puede que sea así en muchos ámbitos, <strong>pero para la comunicación y los negocios no funciona</strong>. Las manadas siguen a los líderes porque éstos marcan el camino.</p>
<p>Si todos los individuos decidieran tomar el mismo sendero, hacer las cosas de igual manera e imitar la conducta de sus semejantes, pronto nos veríamos abocados a un callejón sin salida, obligándonos a competir unos contra otros por los mismos recursos. Curiosamente, <strong>la estabilidad no puede basarse en una receta única sino en la diferenciación y la diversidad</strong>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Comportamiento de manada</h5>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-853 alignright" src="/wp-content/uploads/2015/09/manada1-300x249.jpg" alt="manada" width="300" height="249" srcset="https://www.develooping.com/wp-content/uploads/2015/09/manada1-300x249.jpg 300w, https://www.develooping.com/wp-content/uploads/2015/09/manada1.jpg 320w" sizes="auto, (max-width: 300px) 100vw, 300px" />Si llevas bastante tiempo usando internet habrás visto muchas cosas. Te acordarás de cuando todos querían que sus páginas web tuvieran una presentación animada realizada en Flash. En la mayor parte de los casos era <strong>puro efecto sin contenido</strong> que obligaba al usuario a esperar una carga para luego saltarse la introducción.</p>
<p>Habrás visto cómo en un tiempo todas <strong>las webs se inundaron de vínculos sociales</strong> del tipo &#8220;síguenos en facebook&#8221; y similares, como si con solo poner un logo se obrara una magia inexplicable. Todos querían sus escuditos, aunque condujeran a páginas sociales mal mantenidas y peor planteadas.</p>
<p>También habrás visto cómo han proliferado los blogs, en muchos casos poco actualizados, o sin nada que contar, utilizados como <strong>meras herramientas para ganar posición en los buscadores</strong>. Es penoso encontrarse contenidos creados para las máquinas que no son más que un recopilatorio de palabras clave para intentar &#8220;engañar&#8221; a los buscadores, y en definitiva a las personas que los usamos.</p>
<p>Es posible que también hayas notado que muchas pequeñas empresas <strong>han montado su tienda online atraidos por el mercado global sin ser conscientes de que no es fácil competir en él</strong>. Si ya es de por sí bastante difícil conseguir conquistar una posición en tu zona, cuando tu competencia es todo el mundo, tus posibilidades son muy pequeñas si no tienes un producto o un servicio claramente atractivo, una buena imagen y unas correctas estrategias de comunicación.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Cantos de sirena</h5>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-859 alignright" src="/wp-content/uploads/2015/09/sirena-300x175.jpg" alt="sirena" width="300" height="175" srcset="https://www.develooping.com/wp-content/uploads/2015/09/sirena-300x175.jpg 300w, https://www.develooping.com/wp-content/uploads/2015/09/sirena.jpg 320w" sizes="auto, (max-width: 300px) 100vw, 300px" />Quizás también te hayas parado a pensar que un mercado global implica un &#8220;<strong>todos contra todos</strong>&#8220;, así que puedes correr el riesgo de desentenderte de cuidar tus clientes y productos &#8220;de toda la vida&#8221;, y embarcarte en una batalla estéril. Puedes olvidar que <strong>la tecnología también se puede usar para dar valor añadido mejorando los servicios que ofreces</strong>, y caer en la trampa de trabajar para seguir dando poder a los buscadores y las redes sociales.</p>
<p>¿Te has parado a pensar que si no vendes quizás sea más productivo buscar tu propio camino que intentar ganarle la mano en posicionamiento a miles de empresas que ofrecen lo mismo y que además estaban antes? <strong>Quizás puede que descubras que el SEO no es tu prioridad</strong>.</p>
<p>¿Has llegado a plantearte que las redes sociales no son una imposición? Frases como &#8220;si no estás en ellas no existes&#8221; -siempre procedentes de alguien con interés en esa idea- <strong>han conseguido llenar las páginas de las redes sociales de ruido, uno de los principales enemigos de la comunicación eficaz</strong>.</p>
<p><strong>La principal responsabilidad de estos hechos no recae en los clientes, atraídos por modernos cantos de sirenas, sino en los &#8220;profesionales&#8221; que además de no librarles del espejismo -muchas veces porque también viven en él y de él-, intentan sacar provecho de necesidades falsas, o, cuando menos, hacen literalmente lo que el cliente les piden sin analizar su eficacia ni proponer alternativas</strong>.</p>

		</div> 
	</div> </div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">	<div class="vc_empty_space"  style="height: 20px" ><span
			class="vc_empty_space_inner">
			<span class="empty_space_image"  ></span>
		</span></div>

</div></div></div></div></div><div      class="vc_row wpb_row section vc_row-fluid " style=' text-align:left;'><div class=" full_section_inner clearfix"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper">
	<div class="wpb_text_column wpb_content_element ">
		<div class="wpb_wrapper">
			<h5>Nadie tiene siempre la razón</h5>
<p>Y aunque seas un cliente no eres una excepción. No hay duda, los profesionales deben saber oir a sus clientes y entender sus necesidades. Esto es importante porque <strong>son responsables de analizar sus proyectos, estudiar su viabilidad y coherencia, orientarle en lo que necesitan y proponer las soluciones individualizadas que mejor se adaptan a sus requisitos</strong>. Algo imprescindible si no queremos que acaben haciendo exactamente lo mismo que los demás e inmersos en una batalla de todos contra todos.</p>

		</div> 
	</div> </div></div></div></div></div>
</div><p>La entrada <a href="https://www.develooping.com/todos-contra-todos/">Todos contra todos</a> aparece primero en <a href="https://www.develooping.com">Develooping</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
