<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Tutoriales de Desarrollo y Diseño Web | Web.Ontuts</title>
	
	<link>http://web.ontuts.com</link>
	<description>Tutoriales y Recursos Web de Calidad en Español</description>
	<lastBuildDate>Tue, 09 Mar 2010 11:27:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/web-ontuts" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="web-ontuts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">web-ontuts</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Reducir el tiempo de carga Web: Seleccionando el Formato de Imagen</title>
		<link>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-seleccionando-el-formato-de-imagen/</link>
		<comments>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-seleccionando-el-formato-de-imagen/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 11:27:36 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[formato]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2890</guid>
		<description><![CDATA[Segundo capítulo de la serie "Reducir el tiempo de carga Web" con el que pretendemos mostrar el camino de cara a mejorar la velocidad de carga de nuestras web, reduciendo así el tiempo de espera del usuario que tanto valor tiene a día de hoy. En esta ocasión revisaremos conceptos básicos relacionados con los diferentes formatos de imagen... ¡No os lo perdáis!]]></description>
			<content:encoded><![CDATA[<h3>Este tutorial forma parte de una serie</h3>
<ul>
<li><a href="http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http">Ir a la 1ª Parte &#8211; Minimiza las Peticiones HTTP</a></li>
<li><a href="http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-seleccionando-el-formato-de-imagen">Ir a la 2ª Parte &#8211; Seleccionando el Formato de Imagen</a></li>
</ul>
<h3>¿Por qué optimizar las imágenes?</h3>
<p>Como habíamos visto en el primer capítulo sobre <a href="http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http">minimizar las peticiones HTTP</a>, estábamos intentando reducir el número de peticiones HTTP combinando todas nuestras imágenes en una única imagen. Reduciendo el número de imágenes estamos reduciendo también el número de peticiones HTTP.</p>
<p>Ahora que tenemos un menor número de imágenes a cargar, necesitamos <strong>reducir el tamaño</strong> de estos archivos en disco, reduciendo así el tiempo de carga de nuestra web.</p>
<p>En este artículo trataremos de conocer los métodos de reducción para los 3 formatos de imagen más comunes:</p>
<ul>
<li><strong>GIF</strong></li>
<li><strong>JPEG</strong></li>
<li><strong>PNG</strong></li>
</ul>
<p>A continuación analizaremos estos 3 formatos por separado, tratando de aportar una descripción clara y casos de uso para cada tipo de imagen.</p>
<h3>Imágenes GIF</h3>
<p>GIF es un tipo de imagen formada por una paleta de <strong>256 colores</strong> indexados. Para cada pixel de la imagen tenemos su correspondiente color indexado. GIF es un formato de imagen  <strong>sin pérdida</strong>, es decir, la imagen original no pierde calidad en cada modificación o guardado.</p>
<blockquote><p>GIF es el formato ideal para mostrar <strong>animaciones</strong> de carga y otros tipo de imágenes animadas.</p></blockquote>
<p>Además soporta transparencia y animaciones. El tipo de <strong>transparencia</strong> es &#8220;<strong>booleano</strong>&#8220;, un pixel puede ser o completamente transparente o completamente opaco, sin términos medios. En la actualidad, mucha gente sigue utilizando los GIF como <strong>animación</strong> para reflejar la carga de contenido via AJAX.</p>
<p>Actualmente podemos utilizar el formato GIF sin riesgos, ya que ha sido liberado de los problemas con patentes que le acechaban en el pasado.</p>
<h3>Imágenes JPEG</h3>
<p>JPEG no tiene la limitación de sólo 256 colores, pero <strong>no soporta transparencias</strong>. Este tipo de imagen puede contener <strong>millones de colores</strong> manteniendo una gran compresión por lo que es especialmente interesante y recomendado para el muestreo de <strong>fotos</strong> e imágenes de grandes dimensiones.</p>
<blockquote><p>JPEG es el formato ideal para la muestra de <strong>fotos</strong> e imágenes de grandes dimensiones manteniendo un tamaño aceptable.</p></blockquote>
<p>A diferencia de los GIF, JPEG sí que es un <strong>formato con pérdida</strong>, por lo que en cada modificación y posterior guardado estamos perdiendo calidad respecto a la imagen original, por lo que es muy recomendable mantener la imagen original siempre que trabajemos con este formato.</p>
<h3>Imágenes PNG: PNG8 y Truecolor PNG</h3>
<p>PNG es un formato <strong>sin pérdida</strong> y podemos dividirlo en dos tipos de imagen:</p>
<ul>
<li><strong>PNG8</strong></li>
<li><strong>Truecolor PNG</strong></li>
</ul>
<h4>PNG8</h4>
<p>PNG8 es un formato de paleta de <strong>256 colores</strong>, como lo eran las imágenes GIF&#8230; por tanto: ¿qué diferencia PNG8 de GIF?</p>
<ul>
<li><strong>Pros</strong>: Normalmente tiene un tamaño menor en disco y además soporta transparencias de tipo variable.</li>
<li><strong>Contras</strong>: Este formato no soporta animaciones.</li>
</ul>
<h4>Truecolor PNG</h4>
<p>Por otra parte, tenemos Truecolor PNG (PNG24 y PNG32), el cual soporta <strong>millones de colores</strong> como ocurre con los JPEG&#8230; ¿qué lo diferencia del JPEG?</p>
<ul>
<li><strong>Pros</strong>: Es un formato sin pérdida y soporta transparencia variable.</li>
<li><strong>Contras</strong>: Tiene un tamaño en disco más grande en la mayoría de ocasiones.</li>
</ul>
<p>Por tanto podríamos afirmar que el formato <strong>Truecolor PNG</strong> debería ser empleado en la mayoría de las ocasiones para <strong>material imprimible</strong>, manuales de ayuda&#8230; además de ser un excelente formato intermedio entre las numerosas ediciones de una imagen JPEG.</p>
<h3>Conclusión final</h3>
<p>Repasando lo aprendido en este segundo capítulo, podemos sacar en claro el siguiente uso para cada tipo de imagen:</p>
<ul>
<li><strong>GIF</strong> es el formato ideal para <strong>animaciones</strong>.</li>
<li><strong>JPEG</strong> es el formato ideal para las <strong>fotos</strong>.</li>
<li><strong>PNG8</strong> es el formato ideal para <strong>todo lo demás</strong> iconos, imágenes de fondo, etc.</li>
</ul>
<p>¡Esto es todo para esta segunda entrega! En la siguiente entrega trataremos de analizar los distintos <strong>métodos de optimización de imágenes</strong> para saber cómo reducir el tamaño de las mismas una vez hemos seleccionado el formato apropiado.</p>
<p>¡Nos vemos en la próxima publicación!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-seleccionando-el-formato-de-imagen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logos que Inspiran Volumen #9</title>
		<link>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-9/</link>
		<comments>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-9/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 16:41:55 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[Logos]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[logos]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2869</guid>
		<description><![CDATA[Noveno capítulo perteneciente a la categoría <a href="category/inspiracion">inspiración</a> con la cual pretendemos recopilar logos que evoquen inspiración y despierten el lado creativo que llevamos dentro. ¡Deja volar tu creatividad e imaginación!]]></description>
			<content:encoded><![CDATA[<h3>A cerca de esta recopilación</h3>
<p>En este noveno volumen de &#8220;Logos que Inspiran&#8221; continuamos recopilando logos con un buen acabado visual, algunos destacan por ser realmente ingeniosos por la forma en que han logrado recrear las formas, otros son más sencillos pero de una gran calidad&#8230; en definitiva, logos que realmente impresionan e inspiran y que tratarán de despertar tu imaginación.</p>
<h4>Game Underground</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/03/gameunderground.png" alt="Game Underground" /></center></p>
<h4>FIVE</h4>
<p><center><a href="http://www.behance.net/luiz_adelino"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/five.png" alt="FIVE" /></a></center></p>
<h4>Noodle Bar</h4>
<p><center><a href="http://www.monok.es/diseno-web/p47/noodle-bar.html"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/noodlebar.png" alt="Noodle Bar" /></a></center></p>
<h4>Pregg</h4>
<p><center><a href="http://pregg.net"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/pregg.png" alt="Pregg" /></a></center></p>
<h4>Sex Lovers</h4>
<p><center><a href="http://www.brigadacreativa.com"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/sexlovers.png" alt="Sex Lovers" /></a></center></p>
<h4>Beast Media</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/03/beastmedia.png" alt="Beast Media" /></center></p>
<h4>Wild Sugar</h4>
<p><center><a href="http://www.convergeteam.com"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/wildsugar.jpg" alt="Wild Sugar" /></a></center></p>
<h4>Fotomimi</h4>
<p><center><a href="http://fotomimi.cz"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/fotomimi.png" alt="Fotomimi" /></a></center></p>
<h4>Dmitriev Sommlier</h4>
<p><center><a href="http://www.antongridz.com"><img src="http://web.ontuts.com/wp-content/uploads/2010/03/dmitriev.png" alt="Dmitriev Sommlier" /></a></center></p>
<h4>Café Expresso</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/03/cafeexpresso.png" alt="Café Expresso" /></center></p>
<h3>Reflexión final</h3>
<p>Espero que os sea de utilidad y realmente estas colecciones despierten vuestro ingenio&#8230; Recordad que aceptamos sugerencias de cualquier tipo y que podréis hacérnoslas llegar desde nuestro <a href="http://twitter.com/ontuts">twitter</a>, <a href="/contacto">sección de contacto</a> o <a href="http://www.facebook.com/pages/Ontuts/154311857472">página facebook</a>.</p>
<p>¡Nos vemos en la próxima publicación!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-9/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reducir el tiempo de carga Web: Minimiza las Peticiones HTTP</title>
		<link>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http/</link>
		<comments>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 14:10:58 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[optimización]]></category>
		<category><![CDATA[peticiones http]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2791</guid>
		<description><![CDATA[Primer capítulo de la serie "Reducir el tiempo de carga Web" con el que pretendemos mostrar el camino de cara a mejorar la velocidad de carga de nuestras web, reduciendo así el tiempo de espera del usuario que tanto valor tiene a día de hoy. En esta ocasión revisaremos conceptos básicos relacionados con las peticiones http... ¡No os lo perdáis!]]></description>
			<content:encoded><![CDATA[<h3>Este tutorial forma parte de una serie</h3>
<ul>
<li><a href="http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http">Ir a la 1ª Parte &#8211; Minimiza las Peticiones HTTP</a></li>
<li><a href="http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-seleccionando-el-formato-de-imagen">Ir a la 2ª Parte &#8211; Seleccionando el Formato de Imagen</a></li>
</ul>
<h3>¿Por qué deben importarnos las Peticiones HTTP?</h3>
<p>Echando un vistazo a algunos <a href="http://developer.yahoo.net/blog/archives/2007/03/high_performanc.html">artículos interesantes</a> acerca de la optimización del Front-End, podemos conocer datos tan aplastantes como que el <strong>80% del tiempo</strong> que tarda en cargar una página se debe al tiempo de descarga de componentes del <strong>Front-End</strong>.</p>
<p>Por otra parte, Tenni Theurer <a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/">comenta en su blog</a> que <strong>entre un 40% y un 60%</strong> de los visitantes de un sitio web tienen su <strong>cache vacía</strong>, por lo que cobra todavía mas relevancia el tiempo de respuesta en la parte del Front-End.</p>
<blockquote><p>Cuando hablamos de <strong>Front-End</strong> nos estamos refiriendo a la parte de la web que interactúa con el usuario, principalmente: javascript, css, imágenes, flash&#8230; etc. Supone un <strong>80% del tiempo</strong> de carga de una web.</p></blockquote>
<p>Si el 80% del tiempo de carga de nuestro sitio web se debe principalmente a los siguientes componentes:</p>
<ul>
<li>Javascript</li>
<li>CSS</li>
<li>Imágenes</li>
<li>Flash</li>
</ul>
<p>Reducir en número todos estos componentes hará que el <strong>renderizado</strong> de nuestra página sea más ágil y que el <strong>número de peticiones</strong> HTTP disminuyan, por lo que nuestra web cargará mucho más rápido.</p>
<p>De buenas a primeras podemos pensar que simplificando nuestros diseños web podremos ahorrar en número de peticiones HTTP, pero en realidad necesitamos encontrar un <strong>equilibrio</strong> entre optimización y diseño.</p>
<p>¡Veamos algunas prácticas recomendadas para tratar de reducirlas!</p>
<h3>Reduciendo las Peticiones HTTP</h3>
<p>Partimos de la base de que no queremos sacrificar nuestro diseño original, sino que queremos encontrar el equilibrio entre el diseño y la velocidad de carga para ello es recomendable seguir los siguientes consejos que describimos a continuación.</p>
<h4>Aplicando la técnica de CSS Sprites</h4>
<p>El uso de <strong>CSS Sprites</strong> es la mejor forma de reducir el número de peticiones de imágenes. En la mayoría de nuestros diseños y maquetaciones empleamos a menudo la propiedad de CSS background-image.</p>
<p>Por ejemplo, si tenemos 5 divisiones en las que se le está aplicando 5 imágenes de fondo distintas mediante background-image, tenemos un total de 5 peticiones de imágenes. En muchos casos podemos <strong>simplificar</strong> esas 5 imágenes en una única imagen, por tanto reduciremos el número de peticiones de 5 a 1.</p>
<p>¿Cómo conseguirlo? Quizás os venga bien este <a href="http://web.ontuts.com/tutoriales/introduccion-comprension-y-utilizacion-de-los-css-sprites-parte-i/">tutorial sobre CSS Sprites</a> que hemos publicado hace relativamente poco tiempo.</p>
<h4>Combinando archivos CSS</h4>
<p><strong>Combinar archivos CSS</strong> es otra práctica recomendada. En algunos casos podemos tener más de un archivo CSS, encontrando la forma de juntar todo el código CSS en <strong>un único archivo</strong> hará que todo sea más rápido.</p>
<p>Si por ejemplo tenemos varios archivos CSS pequeños, será mucho <strong>más óptimo juntarlos</strong> todos en un único y más grande archivo CSS porque una vez cargue estará en cache para futuras visitas / sesiones, evitando cargar varios pequeños archivos de CSS según la sección en la que nos encontremos.</p>
<h4>Combinando archivos de script</h4>
<p><strong>Combinar archivos de script</strong> es otra buena práctica que podemos aplicar. En algunos casos es más complicado implementar varios archivos de script en un único archivo, pero como hemos dicho es importante, el tiempo que nos ahorra puede ser considerable y es la mejor forma de optimizar tus páginas.</p>
<p>Recuerda que puedes / debes <strong>minimizar</strong> todos tus <strong>scripts</strong> para conseguir archivos de menos peso, en algunos casos estamos hablando de un 50% menos de espacio en disco, lo cual es muchísimo como para no tenerlo en cuenta.</p>
<h3>Recomendación de última hora: YSlow</h3>
<p>Para los más curiosos os aconsejo que instaléis en vuestro firefox la extensión para el plugin Firebug <a href="http://developer.yahoo.com/yslow/">YSlow</a> de Yahoo. Con YSlow podréis comprobar y comparar tiempos de carga de vuestra web, ver dónde está flojeando vuestra optimización, consejos para mejorarla&#8230; etc.</p>
<p>Gracias a <a href="http://blep.blogspot.com/">Javier Santana</a> por el chivatazo, yo la verdad es que la uso a menudo, pero se me había pasado por alto y lo veo altamente recomendable. Seguramente trataremos esta y otras herramientas en alguno de los próximos capítulos, pero es algo por lo que empezar.</p>
<h3>Conclusión final</h3>
<p>¡Esto es todo para esta primera entrega! Recordad que reducir el número de peticiones HTTP es el <strong>primer paso</strong> en el proceso de optimización, especialmente para nuevos visitantes que tienen que cargar en cache todo el Front-End de nuestra página web.</p>
<p>En la siguiente entrega trataremos de analizar los distintos <strong>tipos de imágenes</strong> para saber qué utilizar en cada caso para posteriormente recomendar distintas técnicas para la reducción de las mismas.</p>
<p>¡Nos vemos en la próxima publicación!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/tutoriales/reducir-el-tiempo-de-carga-web-minimiza-las-peticiones-http/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Nos inspira… Identidad en Tarjetas de Visita</title>
		<link>http://web.ontuts.com/inspiracion/nos-inspira-identidad-en-tarjetas-de-visita/</link>
		<comments>http://web.ontuts.com/inspiracion/nos-inspira-identidad-en-tarjetas-de-visita/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 11:49:53 +0000</pubDate>
		<dc:creator>Pauline Bernier</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[tarjetas de visita]]></category>
		<category><![CDATA[tipografia]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2709</guid>
		<description><![CDATA[En este nuevo capítulo de la saga "inspiración", nos dedicaremos al papel de las tarjetas de visita en la construcción y difusión de la identidad de una empresa o marca. Las tarjetas se han convertido en una manera de demostrar su creatividad y de llamar la atención. El contraste entre las antiguas tarjetas formales y las nuevas es obvio y vamos a ver unos ejemplos encontrados en la web.]]></description>
			<content:encoded><![CDATA[<h3>Acerca de esta recopilación</h3>
<p>Las tarjetas de visita han sido el objeto de la creatividad de muchos diseñadores y son ahora más que una manera de dar sus datos de contacto a un futuro colaborador. Se trata de expresar la <strong>identidad</strong>, la personalidad y la eficacia de la empresa en un trocito de papel que solía ser blanco, rectangular y que se podía perder facilmente.</p>
<p>Ahora la forma y la tipografía se han convertido en detalles indispensables para distinguirse de otras empresas y dan un toque muy personalizado para que la tarjeta de visita permita <strong>recordar</strong> y vizualizar inmediatamente de qué se trata la empresa y también el contacto que tuvo lugar entre los dos colaboradores.</p>
<blockquote><p>Al contrario que en tiempos pasados, las tarjetas de visita son ahora una nueva vía de diferenciación entre la competencia, jugando con las formas, materiales, colores, tipografía&#8230; podemos llegar a calar en la memoria visual de nuestros colaboradores o posibles clientes.</p></blockquote>
<p>Los <strong>materiales</strong> también son muy importantes y nos damos cuenta de que la variedad de materiales utilizados en la concepción de tarjetas de visita de &#8220;nueva generación&#8221; es muy amplia desde papel hasta plástico pasando por metal, lana&#8230;</p>
<p>Actualmente existe una plena <strong>libertad</strong> en cuanto al <strong>formato</strong> y a los <strong>colores</strong> de la tarjeta. La multitud de nuevas posibilidades multiplica las maneras con las que cada empresario puede quedarse en la memoria de su contacto.</p>
<h3>Ideas, imágenes y conceptos</h3>
<p>Como todo buen artículo de inspiración, lo importante terminan siendo los ejemplos&#8230; veamos algunos recopilados en la web.</p>
<h4>Ogilvy</h4>
<p>La iniciativa de Ogilvy, la agencia internacional de publicidad, marketing y RRPP consiste en adaptarse a la situación de crisis actual reduciendo el tamaño de las tarjetas tras la baja generalizada de los presupuestos. Sin embargo, con el diseño llamativo se desprende la idea de un condensado de eficacia y que a pesar de la crisis consiguen alcanzar sus retos sin perder tiempo ni dinero.</p>
<p><center><a href="http://www.behance.net/Gallery/Undersized-Recession-Business-Cards/219433"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas1.jpg" alt="Ogilvy" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Undersized-Recession-Business-Cards/219433"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas2.jpg" alt="Ogilvy" /></a></center></p>
<p>Asimismo vemos que el mensaje de las tarjetas se enfoca ahora mucho más en la imagen que al contacto propio. Como algunas marcas famosas que ya no necesitan indicar su nombre y cuyo logo ya es suficiente para reconocerlas, el objetivo es aquí enfocar sobre la imagen gráfica y crear un vínculo automático entre ella y la actividad de la marca. La creación de un juego interactivo también aporta un valor añadido a la iniciativa.</p>
<h4>Master of Disguise</h4>
<p>La inserción del juego en algo en principio serio y neutro como las tarjetas de visita es una muy buena manera para crear una memoria positiva.</p>
<p><center><a href="http://www.behance.net/Gallery/Master-of-Disguise/164393"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas3.jpg" alt="Master of Disguise" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Master-of-Disguise/164393"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas4.jpg" alt="Master of Disguise" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Master-of-Disguise/164393"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas5.jpg" alt="Master of Disguise" /></a></center></p>
<h4>Pablo Afieri</h4>
<p>De esta manera las tarjetas de visita se pueden convertir en anécdotas.</p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards-08/146187"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas6.jpg" alt="Pablo Afieri" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards-08/146187"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas7.jpg" alt="Pablo Afieri" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards-08/146187"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas8.jpg" alt="Pablo Afieri" /></a></center></p>
<h4>Bracket</h4>
<p>Jugando con la forma de ver las tarjetas&#8230;</p>
<p><center><a href="http://www.behance.net/Gallery/Bracket--Business-Card/60614"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas9.jpg" alt="Bracket" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Bracket--Business-Card/60614"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas10.jpg" alt="Bracket" /></a></center></p>
<h4>Orient Express Noodle bar</h4>
<p>Los negocios más tradicionales como puede ser un bar no se quedan atrás&#8230;</p>
<p><center><a href="http://www.behance.net/Gallery/Orient-Xpress-A-Noodle-Bar/119025"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas11.jpg" alt="Orient Express Noodle bar" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Orient-Xpress-A-Noodle-Bar/119025"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas12.jpg" alt="Orient Express Noodle bar" /></a></center></p>
<h4>Tarjetas originales del diseñador elBarbon!</h4>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards/108839"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas13.jpg" alt="Tarjetas originales del diseñador elBarbon!" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards/108839"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas14.jpg" alt="Tarjetas originales del diseñador elBarbon!" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards/108839"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas15.jpg" alt="Tarjetas originales del diseñador elBarbon!" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Business-Cards/108839"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas16.jpg" alt="Tarjetas originales del diseñador elBarbon!" /></a></center></p>
<h4>Groundwave design</h4>
<p>Groundwave apuesta por diseños vectoriales elegantes y sencillos además de la tipografía.</p>
<p><center><a href="http://www.behance.net/Gallery/Ancillary-Magnet-Brand-Identity-_amp-Business-Card/91601"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas17.jpg" alt="Groundwave design" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Ancillary-Magnet-Brand-Identity-_amp-Business-Card/91601"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas18.jpg" alt="Groundwave design" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Ancillary-Magnet-Brand-Identity-_amp-Business-Card/91601"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas19.jpg" alt="Groundwave design" /></a></center></p>
<h4>Couldbe studios</h4>
<p><center><a href="http://www.flickr.com/photos/couldbe/1547584297/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas20.jpg" alt="Couldbe studios" /></a></center></p>
<h4>Albert Polyakov</h4>
<p>Este diseñador nos muestra una forma más agresiva de lo habitual&#8230; no dejará a nadie indiferente.</p>
<p><center><a href="http://www.behance.net/Gallery/business-card/87415"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas21.jpg" alt="Albert Polyakov" /></a></center></p>
<h4>Danny Ngan</h4>
<p><center><a href="http://www.flickr.com/photos/dn/76444016/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas22.jpg" alt="Danny Ngan" /></a></center></p>
<h4>Felix Von de Weppen</h4>
<p>Diseños sencillos&#8230; pero cargados de ingenio.</p>
<p><center><a href="http://www.behance.net/Gallery/Fast-Easy-Business-Cards/193901"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas23.jpg" alt="Felix Von de Weppen" /></a></center></p>
<p><center><a href="http://www.behance.net/Gallery/Fast-Easy-Business-Cards/193901"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas24.jpg" alt="Felix Von de Weppen" /></a></center></p>
<h4>Valentina Alvarado por Pepe</h4>
<p><center><a href="http://www.behance.net/Gallery/BUSINESS-CARDS/164938"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas25.jpg" alt="Valentina Alvarado" /></a></center></p>
<h3>Ya no hay límites</h3>
<p>Ya no hay límites, el diseño y los colores no son suficientes y las formas cobran especial interés en algunos de los diseñadores más atrevidos.</p>
<h4>Michael Fryer</h4>
<p><center><a href="http://www.behance.net/Gallery/Self-Promotion/92383"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas26.jpg" alt="Michael Fryer" /></a></center></p>
<h4>Sid Skulluxus</h4>
<p><center><a href="http://www.flickr.com/photos/thebottomlesspaddlingpool/3165564777/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas27.jpg" alt="Sid Skulluxus" /></a></center></p>
<h4>Kevin Mitnick</h4>
<p><center><a href="http://www.flickr.com/photos/ranh/106709219/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas28.jpg" alt="Kevin Mitnick" /></a></center></p>
<h4>Geeyen</h4>
<p><center><a href="http://www.flickr.com/photos/8161412@N08/504086881/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas29.jpg" alt="Geeyen" /></a></center></p>
<h4>Emerson Taymor</h4>
<p><center><a href="http://www.flickr.com/photos/etaymor/2595031952/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas30.jpg" alt="Emerson Taymor" /></a></center></p>
<h4>Petit Coeur por Marye-Linn</h4>
<p><center><a href="http://www.flickr.com/photos/marielynn/3583445340/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas31.jpg" alt="Petit Couer" /></a></center></p>
<h4>openthewindow.net por Martin Ringlein</h4>
<p><center><a href="http://www.flickr.com/photos/mringlein/425820294/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/tarjetas32.jpg" alt="openthewindow.net" /></a></center></p>
<h3>Nos gusta</h3>
<p>Nos gusta la plena libertad que han tomado los diseñadores y que les ha permitido crear trabajos de calidad. El verdadero objetivo de las tarjetas de visita puede ahora cumplirse y la multitud de diseños <strong>creativos</strong> y <strong>geniales</strong> permite la plena <strong>competencia</strong> a la que se dedican las empresas.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/inspiracion/nos-inspira-identidad-en-tarjetas-de-visita/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Logos que Inspiran Volumen #8</title>
		<link>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-8/</link>
		<comments>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-8/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 13:59:15 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[Logos]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[logos]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2690</guid>
		<description><![CDATA[Octavo capítulo perteneciente a la categoría <a href="category/inspiracion">inspiración</a> con la cual pretendemos recopilar logos que evoquen inspiración y despierten el lado creativo que llevamos dentro. ¡Deja volar tu creatividad e imaginación!]]></description>
			<content:encoded><![CDATA[<h3>A cerca de esta recopilación</h3>
<p>En este octavo volumen de &#8220;Logos que Inspiran&#8221; continuamos recopilando logos con un buen acabado visual, algunos destacan por ser realmente ingeniosos por la forma en que han logrado recrear las formas, otros son más sencillos pero de una gran calidad&#8230; en definitiva, logos que realmente impresionan e inspiran y que tratarán de despertar tu imaginación.</p>
<h4>Valenwine</h4>
<p><center><a href="http://brandstack.com/logo-design/details/16394"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/valenwine.png" alt="Valenwine" /></a></center></p>
<h4>Quantum</h4>
<p><center><a href="http://hyperian.ru/portfolio/quantum.html"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/quantum1.png" alt="Quantum" /></a></center></p>
<h4>Colourfruit</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/02/colorfruit.png" alt="Colourfruit" /></center></p>
<h4>Aqua</h4>
<p><center><a href="http://logopond.com/gallery/detail/24721"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/aqua.png" alt="Aqua" /></a></center></p>
<h4>Egg</h4>
<p><center><a href="http://logopond.com/gallery/detail/18058"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/egg.png" alt="Egg" /></a></center></p>
<h4>Fuel</h4>
<p><center><a href="http://logopond.com/gallery/detail/44892"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/fuel.png" alt="Fuel" /></a></center></p>
<h4>Soda</h4>
<p><center><a href="http://logopond.com/gallery/detail/18222"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/soda.png" alt="Soda" /></a></center></p>
<h4>Golf Lessons Online</h4>
<p><center><a href="http://www.mudemedia.dk"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/golflessons.jpg" alt="Golf Lessons Online" /></a></center></p>
<h4>CO2</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/02/co2.png" alt="CO2" /></center></p>
<h4>Tres Peces</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/02/trespeces.png" alt="Tres Peces" /></center></p>
<h3>Reflexión final</h3>
<p>Espero que os sea de utilidad y realmente estas colecciones despierten vuestro ingenio&#8230; Recordad que aceptamos sugerencias de cualquier tipo y que podréis hacérnoslas llegar desde nuestro <a href="http://twitter.com/ontuts">twitter</a>, <a href="/contacto">sección de contacto</a> o <a href="http://www.facebook.com/pages/Ontuts/154311857472">página facebook</a>.</p>
<p>¡Nos vemos en la próxima publicación!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-8/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nos inspira… Creativos para Haití</title>
		<link>http://web.ontuts.com/inspiracion/nos-inspira-creativos-para-haiti/</link>
		<comments>http://web.ontuts.com/inspiracion/nos-inspira-creativos-para-haiti/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 11:04:49 +0000</pubDate>
		<dc:creator>Pauline Bernier</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[haiti]]></category>
		<category><![CDATA[moda]]></category>
		<category><![CDATA[tipografia]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2593</guid>
		<description><![CDATA[Continuamos con la sección de inspiración "Nos inspira...", en esta ocasión ponemos nuestra atención en los diseños que nacen apartir de las catástrofes humanitarias, concretamente sobre Haití y de cómo pueden llegar a influír tanto en diseño, tipografía, arte o incluso la moda. Las situaciones de emergencia despiertan el lado creativo de todos nosotros... ¡No os lo perdáis!]]></description>
			<content:encoded><![CDATA[<h3>La solidaridad en los momentos difíciles</h3>
<p>Como comentábamos en la entradilla, en este capitulo nos enfocaremos sobre los diseños que nacen de catástrofes humanitarias y cómo tanto el diseño, la tipografía, el arte o incluso la moda se ponen al servicio de causas y apoyan la difusión y concienciación mediáticas. Veremos unos ejemplos de trabajos creativos desarrollados especificamente para ayudar <strong>Haiti</strong>.</p>
<blockquote><p>Las emergencias humanitarias generan olas de <strong>solidaridad</strong> como lo hemos visto con el tsunami en 2004 y vemos que incluso los diseñadores ponen su arte al servicio de los países en crisis.</p></blockquote>
<p>En situaciones de urgencia emergen trabajos de creatividad para llamar la <strong>atención</strong> de los ciudadanos y aunque se puede discutir las formas de intervención, mucha inspiración se destaca de los dramas y de los grandes cambios de la sociedad que sean tanto naturales como políticos como lo hemos visto con la campaña de apoyo a Obama el año pasado.</p>
<p>Ahora nos enfocaremos en unos diseños creados específicamente para concienciar a la población sobre el terremoto que ocurrió en Haiti en Enero de este año.</p>
<p>Todos hemos visto carteles de ayuda para Haiti en casi todos los sitios, paradas de autobus, revistas, periódicos&#8230; Cabe saber que tanto las organizaciones humanitarias como individuos han trabajado para crear diseños que captan la atención e incentivan el apoyo.</p>
<h3>Design for Haití de Aaron Perry-Zucker</h3>
<p>En <a href="http://www.designforhaiti.com/">Design for Haiti</a> podréis encontrar ejemplos de diseños de la web creada por <a href="http://www.fastcompany.com/user/aaron-perry-zucker">Aaron Perry-Zucker</a>, diseñador, co-creador de <a href="http://www.bignewideas.com/">Big New Ideas</a> y fundador de <a href="http://designforobama.org/">Design for Obama</a>.</p>
<p>Con esta web el autor invita a todos los diseñadores, artistas, programadores&#8230; a subir su diseño para crear una galería de ayuda a la causa. La iniciativa da consejos e información a los lectores y explica las técnicas que se suele utilizar en el contexto solidario como por ejemplo la &#8220;promoción&#8221; cuyos visuales tienen por objetivo entrenar una acción o el diseño infográfico que tiende a explicar una situación.</p>
<h3>Aperryz</h3>
<p><center><a href="http://www.designforhaiti.com/index.php?p=93"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti1.jpg" alt="Haití 1" /></a></center></p>
<h3>ChrisM70</h3>
<p><center><a href="http://www.designforhaiti.com/index.php?p=99"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti2.jpg" alt="Haití 2" /></a></center></p>
<h3>pedrow</h3>
<p><center><a href="http://www.designforhaiti.com/index.php?p=110"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti3.jpg" alt="Haití 3" /></a></center></p>
<h3>Otras iniciativas</h3>
<p>Más allá de Design for Haití tenemos a diseñadores independientes que han producido varias técnicas e ideas diferentes para enfocar e informar la gravedad y urgencia de la situación.</p>
<h4>Christopher Griego</h4>
<p><center><a href="http://www.behance.net/Gallery/awareness-poster-Hospitals-in-Haiti/392907"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti4.jpg" alt="Haití 4" /></a></center></p>
<h4>Neos Brand</h4>
<p><center><a href="http://www.behance.net/Gallery/Ayudemos-a-HaitA/398413"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti5.jpg" alt="Haití 5" /></a></center></p>
<h4>James Zwadlo de Zola Media</h4>
<p><center><a href="http://www.behance.net/Gallery/Help-Haiti/397730"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti6.jpg" alt="Haití 6" /></a></center></p>
<h4>Chip Allison de Upstairs Basement</h4>
<p><center><a href="http://www.behance.net/Gallery/who-will-rise-up/396229"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti7.jpg" alt="Haití 7" /></a></center></p>
<p><center><a href="http://designora.com"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti8.jpg" alt="Haití 8" /></a></center></p>
<h4>Nicholas Cornwall</h4>
<p><center><a href="http://www.behance.net/Gallery/Nightmare-in-HaAti/395990"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti9.jpg" alt="Haití 9" /></a></center></p>
<h4>Kode Logic y Pete Harrison</h4>
<p><center><a href="http://www.behance.net/Gallery/United-we-Heal-respect-Haiti/393912"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti10.jpg" alt="Haití 10" /></a></center></p>
<h4>Miron Kiriliv</h4>
<p><center><a href="http://www.behance.net/Gallery/S_O_S_-Haiti-poster/392596"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti11.jpg" alt="Haití 11" /></a></center></p>
<h4>Thodoris Manolopoulos de Bluetit Design Studio</h4>
<p><center><a href="http://www.behance.net/Gallery/AhITI/392356"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti12.jpg" alt="Haití 12" /></a></center></p>
<h4>Ariel Salcé de Salcé Designs</h4>
<p><center><a href="http://www.behance.net/Gallery/Help-Haiti/391825"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti13.jpg" alt="Haití 13" /></a></center></p>
<h4>Kyle Ellis Photography</h4>
<p><center><a href="http://www.behance.net/Gallery/Help_Heal_Haiti/355994"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti14.jpg" alt="Haití 14" /></a></center></p>
<h4>Xnexno</h4>
<p><center><a href="http://xnexno.deviantart.com/art/Help-Haiti-150942552"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti15.jpg" alt="Haití 15" /></a></center></p>
<h3>La Tipografía</h3>
<p>La tipografía también tiene un papel notable en este movimiento e incluso se organizan subastas de trabajos de diseñadores para recaudar fondos.</p>
<h4>Josep Patau, famoso tipográfico catalán</h4>
<p><center><a href="http://graffica.info/2009/12/28/pack-tipografico-de-josep-patau-for-haiti/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti16.jpg" alt="Haití 16" /></a></center></p>
<h4>Ibán Ramón, diseñador valenciano</h4>
<p><center><a href="http://graffica.info/2009/12/26/we-love-geometry-for-haiti/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti18.jpg" alt="Haití 18" /></a></center></p>
<h3>La Moda</h3>
<p>Finalmente, la moda participa en acciones de apoyo con la creación de camisetas y otros artículos de prenda. En los Estados Unidos, el <a href="http://www.cfda.com/">CFDA</a> (Council of Fashion Designers of America) se ha unido para lanzar &#8220;Fashion for Haiti&#8221; y recaudar fondos para la asociación <a href="http://www.facebook.com/clintonbushhaitifund">Benefit Clinton Bush Haiti Fund</a> con la creación de camisetas exclusivas. <a href="http://arnell.com/">Peter Arnell</a>, especialista en branding, diseñó el logo.</p>
<p><center><a href="http://www.cfda.com/america%E2%80%99s-fashion-industry-launches-%E2%80%9Cfashion-for-haiti%E2%80%9D/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti17.jpg" alt="Haití 17" /></a></center></p>
<h3>Creaciones en flickr</h3>
<p>Como no iba a ser menos, en flickr existen multitud de creaciones relacionadas con la catástrofe de Haití.</p>
<h4>Mike Fretto</h4>
<p><center><a href="http://www.flickr.com/photos/jaredswafford/4286247277/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti19.jpg" alt="Haití 19" /></a></center></p>
<h4>James Martin y Jayne the Pain</h4>
<p><center><a href="http://www.flickr.com/photos/jayne_the_pain/4300168989/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti20.jpg" alt="Haití 20" /></a></center><br />
<center><a href="http://www.flickr.com/photos/jayne_the_pain/4300169641/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti21.jpg" alt="Haití 21" /></a></center></p>
<h4>Got Phi</h4>
<p><center><a href="http://www.flickr.com/photos/got-phi/4274804458/"><img src="http://web.ontuts.com/wp-content/uploads/2010/02/haiti22.jpg" alt="Haití 22" /></a></center></p>
<h3>Concursos</h3>
<p>También se organizan varios <strong>concursos</strong> y <strong>charlas</strong> de diseñadores para pensar y apoyar la reconstrucción del país como <a href="http://www.facebook.com/pages/Uniting-Designers-in-Disaster/260831422646">Uniting Designers in Disaster</a>, un foro abierto a diseñadores de todas las disciplinas para unirse y desarrollar ideas e iniciativas. El objetivo principal es &#8220;pensar para actuar&#8221; para fomentar acciones concretas de reconstrucción.</p>
<p>También se promueven otras operaciones como <a href="http://sleekdesign.canalblog.com/archives/2010/02/05/16802608.html">Opération Core77: Design an Emergency Shelter</a> iniciada por el <a href="http://www.core77.com/">webzine epónimo</a> y <a href="http://www.spontaneousarchitecture.net/">Spontaneous Arquitecture</a> cuya meta es diseñar estructuras y ayudar a los supervivientes. El concurso está abierto hasta el 28 de febrero.</p>
<h3>Nos gusta</h3>
<p>Nos gusta el poder que consigue la imagen en movimientos de amplitud tan grande. La multitud de trabajos que se desarrollan en todos los sitios del mundo demuestra que el sector del diseño <strong>no es nada superficial</strong> y que tiene un verdadero <strong>impacto</strong> sobre la gente.</p>
<p>Aunque se trate seguramente mucho de marketing, tales iniciativas permiten conectar con el instinto solidario de cada persona y sacarnos incluso un minuto de nuestra comodidad gracias a unas técnicas más sutiles que las imagenes televisivas y a veces, más impactantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/inspiracion/nos-inspira-creativos-para-haiti/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Mini Aplicaciones Web con Python y Juno: Parte II</title>
		<link>http://web.ontuts.com/tutoriales/mini-aplicaciones-web-con-python-y-juno-parte-ii/</link>
		<comments>http://web.ontuts.com/tutoriales/mini-aplicaciones-web-con-python-y-juno-parte-ii/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 12:45:26 +0000</pubDate>
		<dc:creator>javisantana</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[juno]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2341</guid>
		<description><![CDATA[En esta segunda entrega correspondiente a la serie Mini Aplicaciones Web con Python y Juno vamos a utilizar el framework juno y la potencia de python para construir una pequeña aplicación web, un servidor de integración continua. ¡No os lo perdáis!]]></description>
			<content:encoded><![CDATA[<h3>Este tutorial forma parte de una serie</h3>
<ul>
<li><a href="http://web.ontuts.com/tutoriales/mini-aplicaciones-web-con-python-y-juno-parte-i/">Ir a la 1ª Parte &#8211; Mini Aplicaciones Web con Python y Juno</a></li>
<li><a href="http://web.ontuts.com/tutoriales/mini-aplicaciones-web-con-python-y-juno-parte-ii/">Ir a la 2ª Parte &#8211; Mini Aplicaciones Web con Python y Juno</a></li>
</ul>
<h3>Descripción de la aplicación</h3>
<p>Te preguntarás, ¿qué diablos es eso de un servidor de integración continua? Tiene un nombre espectacular, pero no es más que un servicio web que ejecuta un comando y almacena si la ejecución de ese comando fue bien o mal. Lo normal es que ese comando se encargue de compilar, pasar los test y otras tareas de una aplicación cada vez que hacemos un commit. Puedes leer un poco más sobre <a href="http://es.wikipedia.org/wiki/Integraci%C3%B3n_continua">integración continua</a> en la wikipedia.</p>
<p>En este tutorial vamos a usar bastantes cosas, por una parte vamos a dar un interfaz web donde se puedan ver si la aplicación ha pasado los test en cada commit, además llamaremos a procesos externos, lanzaremos threads y todo en poco más de 100 líneas de código.</p>
<p>El modo de funcionamiento de la aplicación es simple. Cuando se le indique a través del intefaz web, se va a bajar el último código disponible del repositorio que le indiquemos al arrancar y va a lanzar el proceso de compilación o test y mostrará los resultados en la web.</p>
<h3>Base de datos</h3>
<p>Primero es configurar juno y la base de datos. En este caso usamos sqlite (una base de datos embebida) y el fichero de base de datos es cipy.db. No habría problema es especificar mysql u otra.<br />
El puerto lo cambiamos a 8000 para evitar que se pegue con un servidor web que podamos tener en el 80.</p>
<blockquote><p>Un <b>build</b> no es más que una serie pasos que se ejecutan para obtener el producto final. Suele estar asociado a un binario final. Dentro de esos pasos normalmente está la compilación, ejecución de test, creación de paquetes instalables, etc, etc. En web lo habitual es hablar de <a href="http://en.wikipedia.org/wiki/Software_deployment">deploy</a>.</p></blockquote>
<p>Además preparamos la tabla de builds, es decir, la tabla donde quedan registrados todos los builds de la aplicación. Los campos son:</p>
<ul>
<li><strong>date</strong>: fecha cuando se lanzó el build</li>
<li><strong>result</strong>: resultado. 0 si falla 1 si todo fue bien</li>
<li><strong>output</strong>: en el proceso de compilación/test puede que se genere un log por la salida standard, quedará registrado en esta variable</li>
<li><strong>finished</strong>: indica si el proceso ha terminado</li>
<li><strong>rev</strong>: revisión que a la que corresponde ese build (sha1 si es git, un número natural si es subversion)</li>
</ul>
<pre name="code" class="python">
init({'db_location': 'cipy.db', 'dev_port':8000})
Build = model('Build', date='str', result='int', output='str', finished='boolean', rev='str');
</pre>
<p>Vayamos a por la interfaz web.</p>
<h3>Interfaz web</h3>
<p>El interfaz web tiene dos partes, la primera que es donde se muestra al usuario los builds y los resultados de cada uno y luego tenemos dos servicios que sirven para lanzar los builds e indicar el resultado final de un build.</p>
<h4>interfaz de usuario</h4>
<p>Vamos a mostrar los últimos 10 builds, por tanto, usando el API de base de datos se recogen los 10 últimos ordenados en orden descendente y se meten en una lista. Es fácil ver la equivalencia a una consulta SQL. Esos datos se le pasan al template html para que los represente. Además le pasamos el path donde está el repositorio alojado en la máquina.</p>
<pre name="code" class="python">
@route('/')
def index(web):
  builds = find(Build).order_by(Build.id.desc()).limit(10).all();
  template("index.html", { 'builds': builds, 'project_path': repo_path })</pre>
<p>En la parte HTML tenemos dos partes interesantes. Por una parte como renderizar los datos que nos pasa el controlador (index), usando un bucle en el cual, en función de si el build ha finalizado o no o si el build fue bien o no muestra los datos. El sistema de templates es ni más ni menos que python, así que si sabes python no tendrás problema en usarlo.</p>
<p><!-- HtmL --></p>
<pre name="code" class="html">
{% for b in builds%}
&lt;li&gt;&lt;span class="date"&gt;{{b.date}}&lt;/span&gt;
          {% if b.finished %}
             rev: {{ b.rev }}
             {% if b.result == 0 %}
                &lt;span class="ok"&gt;PASS&lt;/span&gt;
             {% else %}
              &lt;span class="fail"&gt;FAIL&lt;/span&gt;
             {% endif %}
             &lt;a id="{{b.id}}" class="show_output" href="#"&gt; show output &lt;/a&gt;&lt;/li&gt;
             &lt;div class="output"&gt;
                {{b.output}}&lt;/div&gt;
          {% else %}
            &lt;span class="building"&gt;building...&lt;/span&gt;
          {% endif %}
   {% endfor %}
</pre>
<p>En la parte javascript, se usa jquery para el manejo del DOM y hacer peticiones AJAX.</p>
<p>La primera parte se encarga de ocultar o mostrar lo que mostró por pantalla el comando que ejecutó el servidor de CI.</p>
<pre name="code" class="javascript">
$(document).ready(function() {
          $(".output").hide();
          $(".show_output").click(function() {
            out = $(this).attr('id');
            $("#"+out+"_output").toggle();
          });
</pre>
<p>La segunda parte lanza una petición al servicio web de la aplicación (más adelante se explica en detalle) cuando se pincha en el enlace de build.</p>
<pre name="code" class="javascript">
$("#build").click(function(){
            $("#build_msg").html("starting...");
            $.post("/build",callback=function(data) {
                $("#build_msg").html(data);
                location.reload();
            });
          });
</pre>
<p>Por último si hay algún build activo se recarga la página cada 30 segundos para mostrar el resultado en caso de que haya acabado.</p>
<pre name="code" class="javascript">
if($('.building').length != 0)
{
  setInterval(function(){
    location.reload();
  },30*1000);
}
</pre>
<h4>servicios</h4>
<p>El servicio de lanzamiento del build es muy simple, lanza el un comando <img src='http://web.ontuts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Cuando se le llama recoge la versión actual del repositorio, crea un objeto Build (añade un registro en la base de datos) indicando que hay un trabajo lanzado y por último lanza un hilo donde se baja actualiza la copia local del repositorio y ejecuta el proceso de compilación. Cuando el proceso termine llamará al servicio explicado más abajo para indicar que ha terminado.</p>
<pre name="code" class="python">
@route('/build')
def build(web):
  #coge la última revisión
  data, ret = cmd(scm_cmds[repo_type]['rev'], repo_path);

  # crea el objeto build que indica que el proceso ha sido creado
  b = Build(date=datetime.datetime.now().strftime("%b%d %H:%M"), finished=False, rev=data[:6])
  b.save(); # lo almacena en la BBDD

  # lanza el thread para ejecutar el build
  # la función que ejecutará el thread es build_work y se le pasan los argumentos en la variable args
  threading.Thread(target=build_work, args=(b.id,)).start();
  return "scheduled!"
</pre>
<p>Y como sabe este servidor qué comando debe lanzar cuando le ordenamos que haga un build. Algunos servidores de IC se configuran en el interfaz web el comando a lanzar, nosotros vamos a usar otro sistema, ejecutaremos un fichero predefinido. El fichero REPO/.ci/build será el que lance la aplicación cada vez que se lance un proceso de build y en función del valor de retorno la aplicación dará por válidos los test o no.</p>
<p>Por último tenemos el servicio que indica a la aplicación web que se ha terminado de ejecutar el comando REPO/.ci/build, para que almacene el resultado y se pueda ver en el interfaz web. Lo interesante de este servicio es que muestra como recoge los datos pasados como parámetros de una petición POST, usando el <a href="http://es.diveintopython.org/odbchelper_dict.html">diccionario</a> web.input(). Sólamente se limita a recoger los datos y actualizar la base de datos.</p>
<pre name="code" class="python">
@route('/finish')
def build_finished(web):
    b = find(Build).filter(Build.id == web.input()['id']).one()
    b.finished = True;
    b.output = web.input()['output'];
    b.result = web.input()['ret'];
    b.save();
    return "ok";
</pre>
<h3>lógica</h3>
<p>Por último la aplicación usa el API de python para ejecutar los comandos de sistema, recoger los resultados, lanzar hilos y hacer peticiones http. Si tienes curiosidad puedes ver las funciones cmd, exec_ci_cmd y build_work. La más interesante es esta última, en la cual después de lanzar el comando, llama al servicio &#8220;finished&#8221; que hemos visto antes para indicar el estado del proceso una vez terminado.</p>
<pre name="code" class="python">
def build_work(build_id):
    cmd(scm_cmds[repo_type]['reset'], repo_path);
    data, ret = exec_ci_cmd("build");
    if ret != None:
      data = data.replace("\n", "
");
    else:
      data = "%s file not found, i don't know how to build" % join(CIPY_FOLDER, "build");

    # llamar al servicio web (POST)
    params = urllib.urlencode({'id': build_id,  'output': data, 'ret': ret})
    urllib.urlopen("http://127.0.0.1:8000/finish", params).read();

    # hooks, comandos que se lanzan después de ejecutar el comando
    if ret == 0:
      exec_ci_cmd("build_pass");
    else:
      exec_ci_cmd("build_failed");
</pre>
<h3>Conclusión</h3>
<p>Con este tuto terminamos la serie sobre juno. En resumen podemos decir que no es un framework válido para grandes aplicaciones web, sin embargo sí es útil para pequeños servicios como este.</p>
<p>Como curiosidad decir que esta pequeña aplicación web la uso en mi trabajo en un linux sobre un embebido y se dedica a compilar una aplicación con cada commit. Para enlazar son los commits de subversion símplemente tenemos que usar wget en el post-commit-hook:</p>
<pre name="code" class="python">
#!/bin/sh
wget http://ciserver/build -O/dev/null
</pre>
<p>¡Nos vemos en próximas publicaciones!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/tutoriales/mini-aplicaciones-web-con-python-y-juno-parte-ii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>81 Iconos Pixel Art de Social Media</title>
		<link>http://web.ontuts.com/recursos/81-iconos-pixel-art-de-social-media/</link>
		<comments>http://web.ontuts.com/recursos/81-iconos-pixel-art-de-social-media/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 12:16:41 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Recursos]]></category>
		<category><![CDATA[gratis]]></category>
		<category><![CDATA[iconos]]></category>
		<category><![CDATA[pixelart]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2546</guid>
		<description><![CDATA[Nueva recopilación de iconos gratuíta, en esta ocasión compartimos con vosotros 81 iconos gratis y de alta calidad en estilo pixelart para emplear en vuestros proyectos, ya sean de carácter personal o comercial. Es realmente impresionante la calidad que pueden llegar a alcanzar iconos hechos a mano y pixel a pixel, ¡no los perdáis de vista!]]></description>
			<content:encoded><![CDATA[<h3>¿Qué contiene el Set de Iconos?</h3>
<p>El <a href="/tag/iconos/">pack de iconos</a> está diseñado a mano mediante la técnica pixelart para proyectos de caracter comercial o personal. Contiene un total de 81 iconos de un gran acabado visual.</p>
<blockquote><p>El set de iconos de <strong>Pixel Art</strong> es especialmente útil para proyectos que necesiten iconos para social media. Son un total de <strong>81 iconos</strong> disponibles en formato <strong>.PNG</strong> para utilizar de forma libre en tus proyectos personales y comerciales.</p></blockquote>
<p>Los iconos están disponibles en <strong>tres sets</strong>, uno de dimensiones <strong>32&#215;32</strong> pixels, otro a <strong>16&#215;16</strong> pixels y finalmente una versión larga en <strong>formato botón</strong>. Como siempre os dejamos con una imagen previa para que le echéis un vistazo antes de descargarlos.</p>
<h3>Imagen Previa del Pack de Iconos</h3>
<p>Son realmente bonitos:</p>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/02/all-icons.jpg" alt="Preview de Iconos de Social Media en Pixel Art" title="Vista Previa del Set de Iconos de Social Media en Pixel Art" /></center></p>
<p>El pack es ofrecido por el artista <a href="http://www.nouveller.com/">Benjamin Reid</a>, que no duda en colaborar con toda la comunidad y poner a nuestra disposición estos iconos de social media que a buen seguro nos ahorrarán mucho tiempo de búsqueda y/o creación en nuestros proyectos y diseños.</p>
<p>¡Espero os sirvan para vuestros proyectos!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/recursos/81-iconos-pixel-art-de-social-media/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aprendiendo a utilizar la librería cURL en PHP</title>
		<link>http://web.ontuts.com/tutoriales/aprendiendo-a-utilizar-la-libreria-curl-en-php/</link>
		<comments>http://web.ontuts.com/tutoriales/aprendiendo-a-utilizar-la-libreria-curl-en-php/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 11:23:24 +0000</pubDate>
		<dc:creator>Iván Guardado</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2215</guid>
		<description><![CDATA[Analizamos y explicamos la librería cURL, una herramienta que permite transferir información con sintaxis de URL. Soporta gran variedad de protocolos (HTTP, FTP, LDAP...) y esta funciona en gran variedad de sistemas operativos. En esta ocasión la utilizaremos en el entorno que a nosotros nos interesa, en PHP.]]></description>
			<content:encoded><![CDATA[<h3>Introducción: Conociendo la librería cURL</h3>
<p>¡Hola a todos! despues de un mes de bastante trabajo y poco tiempo libre para escribir, vuelvo a la carga con un nuevo tutorial en PHP.</p>
<p>Quien no conozca la librería cURL, igual se ha preguntado muchas veces cómo hacen los sitios web para mostrar contenido de otras páginas en la suya. Por ejemplo, se preguntará cómo funciona la famosa aplicación que revisa los links escritos en el texto de una web y muestra una previsualización en miniatura.</p>
<p>O sin ir más lejos, puede que alguna de estas preguntas pasen por su cabeza alguna vez: <strong>¿cómo imprimes en una web el contenido RSS de un dominio ajeno?</strong>, <strong>¿cómo descargas una imagen de un servidor ajeno para no hacer abuso de recursos?</strong>, <strong>¿cómo es posible iniciar sesión en hotmail para extraer los contactos?</strong>. La respuesta es común para todas esas preguntas: usando <strong>cURL</strong>.</p>
<blockquote><p><strong>cURL</strong> te permite <strong>crear conexiones</strong> con distintos protocolos bajo distintos SO para poder conectar tus aplicaciones con otros entornos, como el web, Active Directory, etc</p></blockquote>
<p>cURL es una herramienta que permite abrir conexiones en una amplia variedad de protocolos y que está disponible tanto como herramienta de consola (para ejecutar directamente con comandos) como en librería (para usar en vuestro código) y que permite hacer prácticamente todo: manejo de cookies, descarga de ficheros binarios, envíos de parámetros GET y POST, etc.</p>
<p>Es tan potente y fácil de usar, que podemos crear sin muchos problemas un <strong>crawler</strong> que recorra páginas web para analizar información, al estilo de por ejemplo el Google Bot.</p>
<h3>cURL en PHP</h3>
<p>Antes de nada, os recuerdo que podéis ver la documentacion de cURL para PHP desde <a title="Librería cURL en PHP" href="http://php.net/manual/en/book.curl.php">la página oficial</a>. Todas las funciones y constantes predefinidas tienen el prefijo &#8216;curl_&#8217; y &#8216;CURL&#8217; respectivamente, por lo que no hay problema en identificarlas en el código y recordarlas se hace un poco más fácil.</p>
<p>Toda conexión con cURL comienza con curl_init, que nos devolverá un manejador (<em>handler</em>) en caso de éxito o <em>FALSE</em> en caso de fallo. Este manejador será necesario para usar las demás funciones y estará disponible hasta que se llame a la funcion curl_close(). Vamos a ver un ejemplo sencillo:</p>
<pre name="code" class="php">
$handler = curl_init("http://www.google.es");
$response = curl_exec ($handler);
curl_close($handler);
echo $response;
</pre>
<p>Al ejecutar este pequeño trozo de código, lo que estáis haciendo es abrir una conexión con la página de Google, descargar el contenido como si de un navegador se tratase, e imprimirlo como si fuese contenido propio.</p>
<p>Como véis es muy fácil, pero normalmente suele complicarse un poco más la cosa, porque por ejemplo, hay webs que devuelven una respuesta u otra según el navegador en el que te encuentras, o en un idioma u otro dependiendo del valor de las cabeceras HTTP. Para definir las cabeceras todas correctamente, se usa la función curl_setopt().</p>
<blockquote><p>Con la funcion curl_setopt() podemos establecer las <strong>cabeceras HTTP</strong> para recibir el contenido adecuado.</p></blockquote>
<p>Para indicarle al servidor remoto que tu idioma preferido es el castellano y que tu navegador es Firefox:</p>
<pre name="code" class="php">
curl_setopt($handler, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1");
curl_setopt($handler, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
</pre>
<p>Puedes ver la gran lista de opciones que puedes configurar <a title="Opciones de cURL" href="http://www.php.net/manual/en/function.curl-setopt.php">aquí</a>. Normalmente cuando tienes algún problema con alguna conexión,  sueles encontrar la solución jugando con estas opciones.</p>
<h3>Envío de formularios POST</h3>
<p>Muchas veces la información que necesitamos está sometida a enviar parámetros con el método POST. No pasa nada, cURL como ya hemos dicho, nos permite hacer esto sin mucho esfuerzo. Imagina que queremos iniciar sesión en una web para acceder a nuestro contenido via cURL.</p>
<p>Lo primero que tenemos que hacer es iniciar sesión desde un navegador e identificar que parámetros POST se envían para que el login tenga éxito, esto se puede ver de forma muy fácil con la herramienta <a href="http://getfirebug.com/">Firebug</a> para <a href="http://www.mozilla.com/es-ES/">Mozilla Firefox</a>.</p>
<p>Imaginemos que estos son los parámetros que se envían:</p>
<ul>
<li><strong>user</strong>: ontuts</li>
<li><strong>password</strong>: test</li>
<li><strong>url</strong>: http://www.example.com/login</li>
</ul>
<p>Bien ya sabemos todo lo que necesitamos, ahora toca crear el código:</p>
<pre name="code" class="php">
$url = "http://www.example.com/login";
$postData = array("user" =&gt; ontuts, "password" =&gt; "test");
/*Convierte el array en el formato adecuado para cURL*/
$elements = array();
foreach ($postData as $name=&gt;$value) {
   $elements[] = "{$name}=".urlencode($value);
}
$handler = curl_init();
curl_setopt($handler, CURLOPT_URL, $url);
curl_setopt($handler, CURLOPT_POST,true);
curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
$response = curl_exec ($handler);
curl_close($handler);
</pre>
<p>Con este código lo que hacemos es acceder a la url pero enviando datos adjuntos que el server interpretará y nos devolverá la repuesta adecuada.</p>
<h3>Manejando Cookies</h3>
<p>En el ejemplo anterior vemos un ejemplo de cómo iniciar sesión en una web, pero si lo probáis comprobaréis que una vez iniciada la sesión, en la próxima petición ya no tendréis acceso.</p>
<p>Eso es debido a que por lo general, cuando inicias sesión, el servidor te genera una cookie que tienes que guardar y que identifica tu sesión para corroborar que eres tu y no otra persona malintencionada (como si fuese una tarjeta de identificación) la que está accediendo.</p>
<p>Por defecto cURL no guarda las cookies pero es fácil obligarle a que lo haga:</p>
<pre name="code" class="php">
//Código de inicio de cURL
//........
//
$cookie_file = "/tmp/".time();
curl_setopt($handler, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($handler, CURLOPT_COOKIEJAR, $cookie_file);
$response = curl_exec ($handler);
curl_close($handler);
</pre>
<p>Es importante advertir que para que las cookies se guarden correctamente, el usuario de apache (normalmente www-data) tiene que tener acceso de lectura y escritura en el directorio que especifiques.</p>
<p>Si juntamos esto con el ejemplo anterior, podríamos crear un script que se conecte por ejemplo a Facebook y escriba algo en tu muro automáticamente, o que recupere una lista de tus amigos, etc&#8230;</p>
<h3>Una clase para facilitar las cosas</h3>
<p>Por último os dejo una clase que he creado hace un par de meses para un proyecto. No se puede decir que sea una clase general ni mucho menos, pero funciona perfectamente para lo que la he usado: inicios de sesión y extracción de datos. Podéis modificarla a vuestro antojo para adaptarla a vuestras necesidades:</p>
<pre name="code" class="php">
/**
 * Clase para gestionar las conexesiones y peticiones a servidores remotos
 */
class HttpConnection {
    private $curl;
    private $cookie;
    private $cookie_path="/cookies";
    private $id;

    public function __construct() {
        $this->id = time();
    }
    /**
     * Inicializa el objeto curl con las opciones por defecto.
     * Si es null se crea
     * @param string $cookie a usar para la conexion
     */
    public function init($cookie=null) {
        if($cookie)
            $this->cookie = $cookie;
        else
            $this->cookie = $this->cookie_path . $this->id;

        $this->curl=curl_init();
        curl_setopt($this->curl, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1");
        curl_setopt($this->curl, CURLOPT_HEADER, false);
        curl_setopt($this->curl, CURLOPT_COOKIEFILE,$this->cookie);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
        curl_setopt($this->curl, CURLOPT_COOKIEJAR, $this->cookie);
        curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($this->curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER,true);
        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($this->curl, CURLOPT_TIMEOUT, 60);
        curl_setopt($this->curl, CURLOPT_AUTOREFERER, TRUE);
}
    /**
     * Establece en que ruta se guardan las cookies.
     * Importante: El usuario de apache debe tener acceso de lectura y escritura
     * @param string $path
     */
    public function setCookiePath($path){
        $this->cookie_path = $path;
    }
    /**
     * Envía una peticion GET a la URL especificada
     * @param string $url
     * @param bool $follow
     * @return string Respuesta generada por el servidor
     */
    public function get($url,$follow=false) {
        $this->init();
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_POST,false);
        curl_setopt($this->curl, CURLOPT_HEADER, $follow);
        curl_setopt($this->curl, CURLOPT_REFERER, '');
        curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, $follow);
        $result=curl_exec ($this->curl);
        if($result === false){
            echo curl_error($this->curl);
        }
        $this->_close();
        return $result;
    }
    /**
     * Envía una petición POST a la URL especificada
     * @param string $url
     * @param array $post_elements
     * @param bool $follow
     * @param bool $header
     * @return string Respuesta generada por el servidor
     */
    public function post($url,$post_elements,$follow=false,$header=false) {
        $this->init();
        $elements=array();
        foreach ($post_elements as $name=>$value) {
            $elements[] = "{$name}=".urlencode($value);
        }
        $elements = join("&#038;",$elements);
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_POST,true);
        curl_setopt($this->curl, CURLOPT_REFERER, '');
        curl_setopt($this->curl, CURLOPT_HEADER, $header OR $follow);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $elements);
        curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, $follow);
        $result=curl_exec ($this->curl);
        $this->_close();
        return $result;
    }
    /**
     * Descarga un fichero binario en el buffer
     * @param string $url
     * @return string
     */
    public function getBinary($url){
        $this->init();
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_BINARYTRANSFER,1);
        $result = curl_exec ($this->curl);
        $this->_close();
        return $result;
    }
    /**
     * Cierra la conexión
     */
    private function _close() {
        curl_close($this->curl);
    }
    public function close(){
        if(file_exists($this->cookie))
            unlink($this->cookie);
    }
}
</pre>
<h4>Modo de uso</h4>
<pre name="code" class="php">
$http = new HttpConnection();
$http-&gt;setCookiePath("/my_cookie_path/");
$http-&gt;init();
echo $http-&gt;get("http://www.google.es");
$http-&gt;close();
</pre>
<h3>Como conclusión&#8230;</h3>
<p>La librería cURL puede llegar a ser extramadamente útil en muchas ocasiones: podemos crear scripts automáticos que entren en determinadas páginas web e interaccionen por nosotros, recoger datos de forma automática y guardarlos en una base de datos, indexar contenido de otras páginas a modo de buscador, recoger todas las imágenes de una misma página como hace facebook al compartir sus enlaces&#8230;</p>
<p>Si bien puede que muchos de vosotros no la conocieseis, seguro que para próximos proyectos se os viene a la cabeza esta librería y terminaréis haciendo un buen uso intensivo de cURL <img src='http://web.ontuts.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>¡Nos vemos en el próximo tutorial!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/tutoriales/aprendiendo-a-utilizar-la-libreria-curl-en-php/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Logos que Inspiran Volumen #7</title>
		<link>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-7/</link>
		<comments>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-7/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:33:53 +0000</pubDate>
		<dc:creator>Adrián Mato</dc:creator>
				<category><![CDATA[Inspiración]]></category>
		<category><![CDATA[Logos]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[logos]]></category>

		<guid isPermaLink="false">http://web.ontuts.com/?p=2498</guid>
		<description><![CDATA[Retomamos la serie "Logos que Inspiran" con esta séptima edición perteneciente a la categoría <a href="category/inspiracion">inspiración</a> con la cual pretendemos recopilar logos que evoquen inspiración y despierten el lado creativo que llevamos dentro. ¡Deja volar tu creatividad e imaginación!]]></description>
			<content:encoded><![CDATA[<h3>A cerca de esta recopilación</h3>
<p>En este séptimo volumen de &#8220;Logos que Inspiran&#8221; continuamos recopilando logos con un buen acabado visual, algunos destacan por ser realmente ingeniosos por la forma en que han logrado recrear las formas (como es el caso del logo &#8220;Ass&#8221;), otros son más sencillos pero de una gran calidad&#8230; en definitiva, logos que realmente impresionan e inspiran y que tratarán de despertar tu imaginación.</p>
<h4>Click</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/click.png" alt="Click" /></center></p>
<h4>Ice</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/ice.png" alt="Ice" /></a></center></p>
<h4>San Francisco Acupuncture</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/sanfranciscoacupunture.png" alt="San Francisco Acupuncture" /></center></p>
<h4>Vine Creatives</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/vinecreatives.png" alt="Vine Creatives" /></center></p>
<h4>Ass</h4>
<p><center><a href="http://www.behance.net/bitencourt"><img src="http://web.ontuts.com/wp-content/uploads/2010/01/ass.png" alt="Ass" /></a></center></p>
<h4>Lookout</h4>
<p><center><a href="http://www.mylookout.com/"><img src="http://web.ontuts.com/wp-content/uploads/2010/01/lookout.png" alt="Lookout" /></a></center></p>
<h4>New Leaf</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/newleaf.jpg" alt="New Leaf" /></center></p>
<h4>Candela</h4>
<p><center><a href="http://blog.carlosvidal.pe/"><img src="http://web.ontuts.com/wp-content/uploads/2010/01/candela.png" alt="Candela Design Studio" /></a></center></p>
<h4>Fast Food</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/secdoner.png" alt="Fast Food" /></center></p>
<h4>Le Ballet Théatral de Montréal</h4>
<p><center><img src="http://web.ontuts.com/wp-content/uploads/2010/01/leballet.jpg" alt="Le Ballet Théatral de Montréal" /></a></center></p>
<h3>Reflexión final</h3>
<p>Llevábamos un par de semanas sin publicar nada de esta serie de inspiración&#8230; ya eran horas, ¿no?. Trataremos de seguir actualizando esta serie al menos una vez por semana como de costumbre.</p>
<p>Espero que os sea de utilidad y realmente estas colecciones despierten vuestro ingenio&#8230; Recordad que aceptamos sugerencias de cualquier tipo y que podréis hacérnoslas llegar desde nuestro <a href="http://twitter.com/ontuts">twitter</a>, <a href="/contacto">sección de contacto</a> o <a href="http://www.facebook.com/pages/Ontuts/154311857472">página facebook</a>.</p>
<p>¡Nos vemos en la próxima publicación!</p>
]]></content:encoded>
			<wfw:commentRss>http://web.ontuts.com/inspiracion/logos-que-inspiran-volumen-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
