<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>IceBeat</title>
		<link>http://icebeat.bitacoras.com</link>
		<description>Mi vida en formato CSS</description>
		<pubDate>Wed, 14 May 2008 21:38:48 +0000</pubDate>
		<generator>http://icebeat.bitacoras.com/post/rss</generator>
		<language>en</language>
				<item>
			<title>Cosas por contar</title>
			<link>http://icebeat.bitacoras.com/post/293/cosas-por-contar</link>
			<comments>http://icebeat.bitacoras.com/post/293/cosas-por-contar#comments</comments>
			<pubDate>Wed, 14 May 2008 21:38:48 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>delicious</category>
<category>portada</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/293/cosas-por-contar</guid>
			<description><![CDATA[<p>Parece mentira que algo que suele agradar bastante me cueste escribirlo en el blog. Hace cuestión de un par de semanas esta bitácora sufrió un efecto de esos que molan bastante y que provocan una serie de acontecimientos en cadena, uno de ellos hace un par de días.</p>

<p>La estrella de esta casa es <a href="http://icebeat.bitacoras.com/?q=growl">Window.Growl</a> un script que cree hace bastante tiempo y que gracias a Paul (o eso pienso) ha llegado al mundo anglosajón.</p>

<p>Todo comienza con un <a href="http://speckyboy.com/2008/04/09/41-of-the-best-mootools-ajax-example-downloads/">listado</a> de ejemplos con mootools, el cual llega a mano de <a href="http://www.webappers.com/2008/04/21/send-notifications-instantly-with-growl-mootools/">webappers.com</a> que provoca que la gente empiece a agregarlo en del.icio.us consiguiendo la <a href="http://icebeat.bitacoras.com/images/portada-delicious.jpg">portada</a> en un par de horas.</p>

<p>Mucha gente en twitter me felicito y la verdad no me lo creía, pienso que estar en portada es bastante difícil.</p>

<p>Pues bien gracias a esto se multiplicaron por 11 el numero de visitas, una barbaridad para esta bitácora, pero tantas visitas provocan que varios usuarios lo vean y estos a su vez lo publiquen, el caso más reciente hace dos días con <a href="http://www.noupe.com/css/30-exceptional-ajaxjavascript-techniques-recently-created.html">noupe.com</a> otra buena bitácora.</p>

<p>Muchas gracias a <a href="http://anieto2k.com">Andrés</a> que me pego el aviso.</p>

<p>Creo que es algo que tenia que contar y que me ha dado mucha alegría.</p>
]]></description>
			<content:encoded><![CDATA[<p>Parece mentira que algo que suele agradar bastante me cueste escribirlo en el blog. Hace cuestión de un par de semanas esta bitácora sufrió un efecto de esos que molan bastante y que provocan una serie de acontecimientos en cadena, uno de ellos hace un par de días.</p>

<p>La estrella de esta casa es <a href="http://icebeat.bitacoras.com/?q=growl">Window.Growl</a> un script que cree hace bastante tiempo y que gracias a Paul (o eso pienso) ha llegado al mundo anglosajón.</p>

<p>Todo comienza con un <a href="http://speckyboy.com/2008/04/09/41-of-the-best-mootools-ajax-example-downloads/">listado</a> de ejemplos con mootools, el cual llega a mano de <a href="http://www.webappers.com/2008/04/21/send-notifications-instantly-with-growl-mootools/">webappers.com</a> que provoca que la gente empiece a agregarlo en del.icio.us consiguiendo la <a href="http://icebeat.bitacoras.com/images/portada-delicious.jpg">portada</a> en un par de horas.</p>

<p>Mucha gente en twitter me felicito y la verdad no me lo creía, pienso que estar en portada es bastante difícil.</p>

<p>Pues bien gracias a esto se multiplicaron por 11 el numero de visitas, una barbaridad para esta bitácora, pero tantas visitas provocan que varios usuarios lo vean y estos a su vez lo publiquen, el caso más reciente hace dos días con <a href="http://www.noupe.com/css/30-exceptional-ajaxjavascript-techniques-recently-created.html">noupe.com</a> otra buena bitácora.</p>

<p>Muchas gracias a <a href="http://anieto2k.com">Andrés</a> que me pego el aviso.</p>

<p>Creo que es algo que tenia que contar y que me ha dado mucha alegría.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Bosque virtual</title>
			<link>http://icebeat.bitacoras.com/post/292/bosque-virtual</link>
			<comments>http://icebeat.bitacoras.com/post/292/bosque-virtual#comments</comments>
			<pubDate>Mon, 21 Apr 2008 09:21:30 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>ahorro</category>
<category>energia</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/292/bosque-virtual</guid>
			<description><![CDATA[<p><a href="http://bosquevirtual.com/">Bosque Virtual</a> es una iniciativa de Unión Fenosa para contribuir con el ahorro de Energía. En un par de minutejos haces una encuesta y te envían consejos para ahorrar consumo de energía. Además plantan un árbol virtual en Second Life. Esto ultimo lo vi hace tiempo en el hormiguero, pero con arboles reales.</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://bosquevirtual.com/">Bosque Virtual</a> es una iniciativa de Unión Fenosa para contribuir con el ahorro de Energía. En un par de minutejos haces una encuesta y te envían consejos para ahorrar consumo de energía. Además plantan un árbol virtual en Second Life. Esto ultimo lo vi hace tiempo en el hormiguero, pero con arboles reales.</p>
]]></content:encoded>
		</item>
				<item>
			<title>display:none no intrusivo</title>
			<link>http://icebeat.bitacoras.com/post/291/display-none-no-intrusivo</link>
			<comments>http://icebeat.bitacoras.com/post/291/display-none-no-intrusivo#comments</comments>
			<pubDate>Wed, 16 Apr 2008 00:22:01 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>css</category>
<category>script</category>
<category>js</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/291/display-none-no-intrusivo</guid>
			<description><![CDATA[<p>Hay varias formas de ocultar información, cuando la cantidad es grande se suelen utilizar métodos como los acordeones o las pestañas, que ocultan las capas que no se quieren ver.</p>

<p>Normalmente utilizamos el evento onload para ocultar las capas, dejando un efecto visual de ahora te veo y ahora no te veo.</p>

<p>Para evitar este problema hay varias soluciones, aquí os dejo unas cuantas.</p>

<p>Escribir con document.write un style para ocultar una clase.</p>

<pre><code>   document.writeln('&lt;style type="text/css"&gt;.hide { display:none } &lt;/style&gt;');</code></pre>

<p>Añadir detrás de las capas el javascript necesario para ocultarlas</p>

<pre><code>   &lt;script type="text/javascript" charset="utf-8"&gt;
   $$('.hide').setStyle('display','none');
   &lt;/script&gt;</code></pre>

<p>Utilizar el evento domready de algunos frameworks que se dispara una vez cargado el DOM y no la página entera.</p>

<pre><code>    window.addEvent('domready', function() {
$$('.hide').setStyle('display','none');
    });</code></pre>

<p>Hay que decir que si el javascript no esta activado las capas no se ocultaran y estas podrán ser vistas sin ningún problema.</p>
]]></description>
			<content:encoded><![CDATA[<p>Hay varias formas de ocultar información, cuando la cantidad es grande se suelen utilizar métodos como los acordeones o las pestañas, que ocultan las capas que no se quieren ver.</p>

<p>Normalmente utilizamos el evento onload para ocultar las capas, dejando un efecto visual de ahora te veo y ahora no te veo.</p>

<p>Para evitar este problema hay varias soluciones, aquí os dejo unas cuantas.</p>

<p>Escribir con document.write un style para ocultar una clase.</p>

<pre><code>   document.writeln('&lt;style type="text/css"&gt;.hide { display:none } &lt;/style&gt;');</code></pre>

<p>Añadir detrás de las capas el javascript necesario para ocultarlas</p>

<pre><code>   &lt;script type="text/javascript" charset="utf-8"&gt;
   $$('.hide').setStyle('display','none');
   &lt;/script&gt;</code></pre>

<p>Utilizar el evento domready de algunos frameworks que se dispara una vez cargado el DOM y no la página entera.</p>

<pre><code>    window.addEvent('domready', function() {
$$('.hide').setStyle('display','none');
    });</code></pre>

<p>Hay que decir que si el javascript no esta activado las capas no se ocultaran y estas podrán ser vistas sin ningún problema.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Botones encriptados de PayPal con PHP</title>
			<link>http://icebeat.bitacoras.com/post/290/botones-encriptados-de-paypal-con-php</link>
			<comments>http://icebeat.bitacoras.com/post/290/botones-encriptados-de-paypal-con-php#comments</comments>
			<pubDate>Sat, 12 Apr 2008 14:22:17 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>script</category>
<category>paypal</category>
<category>php</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/290/botones-encriptados-de-paypal-con-php</guid>
			<description><![CDATA[<p>Estos días he estado ayudando aun amigo para hacer pagos con PayPal, gracias a este<a href="http://www.fortytwo.gr/blog/14/Using-Paypal-with-Rails"> tutorial de Rails</a> hemos podido crear una versión en PHP.</p>

<p>Para generar botones encriptados lo primero que tienes que hacer es crear unos certificados, una vez creados tendrás los datos necesarios para cumplimentar las opciones de la clase.</p>

<pre><code>  $config = array(
        'cert_id' =&gt; 'xxx',
        'business' =&gt; 'seller_xx@xxx.es',
        'openssl' =&gt; '/usr/bin/openssl',
        'my_cert' =&gt; 'certificates/my-pubcert.pem',
        'my_key' =&gt; 'certificates/my-prvkey.pem',
        'paypal_cert' =&gt; 'certificates/paypal_cert.pem'
    );
    //iniciamos la clase
$paypal = new PayPal($config);</code></pre>

<p>Luego hay que pasarles las variables necesarias para encriptar el botón, en la documentación de PayPal encuentras todas las variables.</p>

<pre><code>$form = array(
    'cmd' =&gt; '_xclick',
     'item_name' =&gt; 't-shirt 13',
     'item_number' =&gt; '12',
    'amount' =&gt; '4500.00'
);

$encrypted = $paypal-&gt;encrypt($form);</code></pre>

<p>Una vez encriptado solo tienes que rellenar los datos del formulario, el action y el campo hidden.</p>

<pre><code>    &lt;form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"&gt;
&lt;input type="hidden" name="cmd" value="_s-xclick"/&gt;
&lt;input type="hidden" name="encrypted" value="&lt;?PHP echo $encrypted; ?&gt;"/&gt;
&lt;input type="submit" value="Buy"/&gt;
&lt;/form&gt;</code></pre>

<p>Nos queda la parte del IPN (Instant Payment Notification) para saber si la transacción se ha ejecutado con éxito. Es curioso algunas tiendas envían el botón sin encriptar pero si hacen el IPN.</p>

<p>En la clase incluyo el ejemplo para que lo tengáis todo a mano, recordad que en el tutorial escrito en rails tenéis los pasos previos para crear los certificados.</p>

<p>Descargar <a href="http://icebeat.bitacoras.com/descarga/class.paypal.phps">class.paypal.php</a>.</p>
]]></description>
			<content:encoded><![CDATA[<p>Estos días he estado ayudando aun amigo para hacer pagos con PayPal, gracias a este<a href="http://www.fortytwo.gr/blog/14/Using-Paypal-with-Rails"> tutorial de Rails</a> hemos podido crear una versión en PHP.</p>

<p>Para generar botones encriptados lo primero que tienes que hacer es crear unos certificados, una vez creados tendrás los datos necesarios para cumplimentar las opciones de la clase.</p>

<pre><code>  $config = array(
        'cert_id' =&gt; 'xxx',
        'business' =&gt; 'seller_xx@xxx.es',
        'openssl' =&gt; '/usr/bin/openssl',
        'my_cert' =&gt; 'certificates/my-pubcert.pem',
        'my_key' =&gt; 'certificates/my-prvkey.pem',
        'paypal_cert' =&gt; 'certificates/paypal_cert.pem'
    );
    //iniciamos la clase
$paypal = new PayPal($config);</code></pre>

<p>Luego hay que pasarles las variables necesarias para encriptar el botón, en la documentación de PayPal encuentras todas las variables.</p>

<pre><code>$form = array(
    'cmd' =&gt; '_xclick',
     'item_name' =&gt; 't-shirt 13',
     'item_number' =&gt; '12',
    'amount' =&gt; '4500.00'
);

$encrypted = $paypal-&gt;encrypt($form);</code></pre>

<p>Una vez encriptado solo tienes que rellenar los datos del formulario, el action y el campo hidden.</p>

<pre><code>    &lt;form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"&gt;
&lt;input type="hidden" name="cmd" value="_s-xclick"/&gt;
&lt;input type="hidden" name="encrypted" value="&lt;?PHP echo $encrypted; ?&gt;"/&gt;
&lt;input type="submit" value="Buy"/&gt;
&lt;/form&gt;</code></pre>

<p>Nos queda la parte del IPN (Instant Payment Notification) para saber si la transacción se ha ejecutado con éxito. Es curioso algunas tiendas envían el botón sin encriptar pero si hacen el IPN.</p>

<p>En la clase incluyo el ejemplo para que lo tengáis todo a mano, recordad que en el tutorial escrito en rails tenéis los pasos previos para crear los certificados.</p>

<p>Descargar <a href="http://icebeat.bitacoras.com/descarga/class.paypal.phps">class.paypal.php</a>.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Ordenar por contexto</title>
			<link>http://icebeat.bitacoras.com/post/289/ordenar-por-contexto</link>
			<comments>http://icebeat.bitacoras.com/post/289/ordenar-por-contexto#comments</comments>
			<pubDate>Wed, 09 Apr 2008 21:20:36 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>organizar</category>
<category>ordenar</category>
<category>gtd</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/289/ordenar-por-contexto</guid>
			<description><![CDATA[<p>Hace unos días buscaba alguna aplicación web para tener un cajón desastre, una especie de tumblr para ir recopilando cosas que encuentro. Todo comienza por que andaba leyendo unos artículos de GTD para organizarme un poco mejor y pensando me di cuenta que algunas veces me cuesta horrores encontrar las cosas que guardo, sobre todo enlaces y que no estaría mal seguir un patrón para ordenarlos.</p>

<p>No se si os ha pasado alguna vez que habéis guardado un enlace pero luego al intentar buscarlo no os acordabais ni del titulo ni de los tags, solo os acordabais que iba de tal cosa o que contenía tal cosa. Desde mi punto de vista creo que podríamos organizar las cosas partiendo de 3 fases.</p>

<p>Una fase de 3 niveles jerárquicos de organización (categorías y subcategorías), otra impuesta por el usuario (tags) y una ultima obtenida por el archivo.</p>

<p>Partiendo como lo hace tumblr la primera seria organizarlo por el tipo: Texto, Enlace, Archivo, Imagen, Audio y Video, luego iríamos profundizando según su contenido o categoría ( Texto -> Snippet -> php). La ultima fase obteniendo información del archivo, si es un audio el ID3, si es un enlace el titulo de la página.</p>

<p>Un ejemplo incompleto de categorías podría ser este:</p>

<ul>
<li>texto

<ul>
<li>Articulo

<ul>
<li>html</li>
<li>doc</li>
<li>pdf</li>
</ul></li>
<li>Cita</li>
<li>Codigo</li>
<li>Password</li>
<li>...</li>
</ul></li>
<li>enlace</li>
<li>archivo</li>
<li>imagen</li>
<li>audio 

<ul>
<li>Canción</li>
<li>PodCast</li>
</ul></li>
<li>video</li>
</ul>

<p>El concepto de una aplicación web es sencillo, primero guardar el enlace y luego etiquetarlo o dejarlo en el inbox.</p>

<p>Pongamos un ejemplo: Encuentro un video en youtube que es el ultimo trailer de una película, voy a mi aplicación y guardo el enlace, en el siguiente paso la aplicación me detecta que es un vídeo y me dice que lo etiquete, me muestra un lista para decir si es un película, un trailer o un videoclip, etc. Una vez elegido me aparece otra indicando la categoría (ciencia ficción, terror, humor, etc). Luego encuentras un campo para escribir tus tags personalizados, por si quieres agrupar o buscar fácilmente y por ultimo encuentras varios campos donde la aplicación te ha sacado el titulo, la descripción y la puntuación del video.</p>

<p>Con este sistema pienso que se podría recuperar las cosas fácilmente, ya que se guardaría por contexto. En el ejemplo si no me acordara del titulo por lo menos podría saber que lo guarde como un trailer de ciencia ficción.</p>
]]></description>
			<content:encoded><![CDATA[<p>Hace unos días buscaba alguna aplicación web para tener un cajón desastre, una especie de tumblr para ir recopilando cosas que encuentro. Todo comienza por que andaba leyendo unos artículos de GTD para organizarme un poco mejor y pensando me di cuenta que algunas veces me cuesta horrores encontrar las cosas que guardo, sobre todo enlaces y que no estaría mal seguir un patrón para ordenarlos.</p>

<p>No se si os ha pasado alguna vez que habéis guardado un enlace pero luego al intentar buscarlo no os acordabais ni del titulo ni de los tags, solo os acordabais que iba de tal cosa o que contenía tal cosa. Desde mi punto de vista creo que podríamos organizar las cosas partiendo de 3 fases.</p>

<p>Una fase de 3 niveles jerárquicos de organización (categorías y subcategorías), otra impuesta por el usuario (tags) y una ultima obtenida por el archivo.</p>

<p>Partiendo como lo hace tumblr la primera seria organizarlo por el tipo: Texto, Enlace, Archivo, Imagen, Audio y Video, luego iríamos profundizando según su contenido o categoría ( Texto -> Snippet -> php). La ultima fase obteniendo información del archivo, si es un audio el ID3, si es un enlace el titulo de la página.</p>

<p>Un ejemplo incompleto de categorías podría ser este:</p>

<ul>
<li>texto

<ul>
<li>Articulo

<ul>
<li>html</li>
<li>doc</li>
<li>pdf</li>
</ul></li>
<li>Cita</li>
<li>Codigo</li>
<li>Password</li>
<li>...</li>
</ul></li>
<li>enlace</li>
<li>archivo</li>
<li>imagen</li>
<li>audio 

<ul>
<li>Canción</li>
<li>PodCast</li>
</ul></li>
<li>video</li>
</ul>

<p>El concepto de una aplicación web es sencillo, primero guardar el enlace y luego etiquetarlo o dejarlo en el inbox.</p>

<p>Pongamos un ejemplo: Encuentro un video en youtube que es el ultimo trailer de una película, voy a mi aplicación y guardo el enlace, en el siguiente paso la aplicación me detecta que es un vídeo y me dice que lo etiquete, me muestra un lista para decir si es un película, un trailer o un videoclip, etc. Una vez elegido me aparece otra indicando la categoría (ciencia ficción, terror, humor, etc). Luego encuentras un campo para escribir tus tags personalizados, por si quieres agrupar o buscar fácilmente y por ultimo encuentras varios campos donde la aplicación te ha sacado el titulo, la descripción y la puntuación del video.</p>

<p>Con este sistema pienso que se podría recuperar las cosas fácilmente, ya que se guardaría por contexto. En el ejemplo si no me acordara del titulo por lo menos podría saber que lo guarde como un trailer de ciencia ficción.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Window Growl con Mootools 1.2 Beta 2</title>
			<link>http://icebeat.bitacoras.com/post/288/window-growl-con-mootools-1-2-beta-2</link>
			<comments>http://icebeat.bitacoras.com/post/288/window-growl-con-mootools-1-2-beta-2#comments</comments>
			<pubDate>Mon, 07 Apr 2008 22:33:11 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>growl</category>
<category>script</category>
<category>mootools</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/288/window-growl-con-mootools-1-2-beta-2</guid>
			<description><![CDATA[<p>Gracias a Paul Streise, alguien que no tiene web, ha dedicado parte de su tiempo a portar el código de <a href="http://icebeat.bitacoras.com/mootools/growl/">Window.Growl</a> a <a href="http://mootools.net/download/tags/1-2b2">Mootools 1.2 Beta 2</a>.</p>

<p>Sin duda<a href="http://icebeat.bitacoras.com/mootools/growl/"> Window.Growl</a> y <a href="http://icebeat.bitacoras.com/mootools/packito/">Packito</a> son las dos joyas de esta casa y ambas las tengo un poco descuidadas, aun así tengo planes para actualizarlas pero gracias a Paul ya me he ahorrado el 50%.</p>

<p>Por mis refers he encontrado una <a href="http://www.craigjolicoeur.com/prototypegrowl/">versión</a> en Prototype, esto quiere decir que hay versiones adaptadas para <a href="ttp://icebeat.bitacoras.com/mootools/growl/">Mootools</a>, <a href="http://alexsancho.name/archives/2006/11/windowgrowl-con-jquery/">jQuery</a> y <a href="http://www.craigjolicoeur.com/prototypegrowl/">Prototype</a>, nada mal.</p>

<p>Tengo que decir que tambien un usuario ha añadido mejoras a class.image y que pronto intentare postearlo.</p>
]]></description>
			<content:encoded><![CDATA[<p>Gracias a Paul Streise, alguien que no tiene web, ha dedicado parte de su tiempo a portar el código de <a href="http://icebeat.bitacoras.com/mootools/growl/">Window.Growl</a> a <a href="http://mootools.net/download/tags/1-2b2">Mootools 1.2 Beta 2</a>.</p>

<p>Sin duda<a href="http://icebeat.bitacoras.com/mootools/growl/"> Window.Growl</a> y <a href="http://icebeat.bitacoras.com/mootools/packito/">Packito</a> son las dos joyas de esta casa y ambas las tengo un poco descuidadas, aun así tengo planes para actualizarlas pero gracias a Paul ya me he ahorrado el 50%.</p>

<p>Por mis refers he encontrado una <a href="http://www.craigjolicoeur.com/prototypegrowl/">versión</a> en Prototype, esto quiere decir que hay versiones adaptadas para <a href="ttp://icebeat.bitacoras.com/mootools/growl/">Mootools</a>, <a href="http://alexsancho.name/archives/2006/11/windowgrowl-con-jquery/">jQuery</a> y <a href="http://www.craigjolicoeur.com/prototypegrowl/">Prototype</a>, nada mal.</p>

<p>Tengo que decir que tambien un usuario ha añadido mejoras a class.image y que pronto intentare postearlo.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Un nuevo perfil</title>
			<link>http://icebeat.bitacoras.com/post/287/un-nuevo-perfil</link>
			<comments>http://icebeat.bitacoras.com/post/287/un-nuevo-perfil#comments</comments>
			<pubDate>Thu, 03 Apr 2008 21:48:17 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>debate</category>
<category>diseño</category>
<category>web</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/287/un-nuevo-perfil</guid>
			<description><![CDATA[<p>Ayer hablando con <a href="http://www.anieto2k.com/">Andrés</a> nos surgió una duda y empezamos a debatir sobre los nuevos perfiles de Desarrolladores web. Antes del boom "2.0" los perfiles estaban muy divididos, el diseñador creaba su web en photoshop y este se lo pasaba al maquetador para escribir el html/css, una vez terminada se le pasaba al programador el cual se encargaba de crear todo el backend de la pagina web.</p>

<p>Cada perfil hacia su parte y cada una de ellas no se tocaban, el diseñador podía hacer una locura que a el le daba igual como se maquetara, lo mismo pasaba con el maquetador, con esos pedazos de churros de códigos.</p>

<p>Ahora vemos que la cosa cambia, el diseñador debe saber un poco de html/css porque debe ser consciente de como se debe maquetar y ciertos aspecto de la web, el maquetador también debe saber programar y utilizar frameworks con vistas y helpers.
Y es en este punto donde entramos en el debate, quien se debe de encargar de la programación del cliente (javascript) el maquetador o el programador? en teoría el programador solo le importa recibir y gestionar los datos, ademas de enviarlos, pero no se debe de encargar de como enviarlos o recibirlos. Pongamos un ejemplo: Un carrito, quien debería encargarse de hacer un drag&amp;drop o llamadas ajax? el programador o el maquetador?</p>

<p>Creéis que se necesita un nuevo perfil? alguien que se encargue de esos detalles, y que realice la unión entre maquetación y programación? o debe ser el maquetador quien aprenda esta parte y evolucione?</p>
]]></description>
			<content:encoded><![CDATA[<p>Ayer hablando con <a href="http://www.anieto2k.com/">Andrés</a> nos surgió una duda y empezamos a debatir sobre los nuevos perfiles de Desarrolladores web. Antes del boom "2.0" los perfiles estaban muy divididos, el diseñador creaba su web en photoshop y este se lo pasaba al maquetador para escribir el html/css, una vez terminada se le pasaba al programador el cual se encargaba de crear todo el backend de la pagina web.</p>

<p>Cada perfil hacia su parte y cada una de ellas no se tocaban, el diseñador podía hacer una locura que a el le daba igual como se maquetara, lo mismo pasaba con el maquetador, con esos pedazos de churros de códigos.</p>

<p>Ahora vemos que la cosa cambia, el diseñador debe saber un poco de html/css porque debe ser consciente de como se debe maquetar y ciertos aspecto de la web, el maquetador también debe saber programar y utilizar frameworks con vistas y helpers.
Y es en este punto donde entramos en el debate, quien se debe de encargar de la programación del cliente (javascript) el maquetador o el programador? en teoría el programador solo le importa recibir y gestionar los datos, ademas de enviarlos, pero no se debe de encargar de como enviarlos o recibirlos. Pongamos un ejemplo: Un carrito, quien debería encargarse de hacer un drag&amp;drop o llamadas ajax? el programador o el maquetador?</p>

<p>Creéis que se necesita un nuevo perfil? alguien que se encargue de esos detalles, y que realice la unión entre maquetación y programación? o debe ser el maquetador quien aprenda esta parte y evolucione?</p>
]]></content:encoded>
		</item>
				<item>
			<title>Remote ID3 función</title>
			<link>http://icebeat.bitacoras.com/post/286/remote-id3-funcion</link>
			<comments>http://icebeat.bitacoras.com/post/286/remote-id3-funcion#comments</comments>
			<pubDate>Tue, 01 Apr 2008 21:55:38 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>php</category>
<category>script</category>
<category>mp3</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/286/remote-id3-funcion</guid>
			<description><![CDATA[<p>Ayer echando un vistazo a <a href="http://icebeat.muxtape.com/">muxtape</a>, un servicio muy minimalista y sencillo me di cuenta que subiendo la canción ya obtenía el titulo y el arista. La verdad es que me llamo la atención y estuve jugando un poco con las funciones ID3, pero al probar en un archivo remoto me decía que nanai de la china. Estuve buscando y encontré unas clases que usaban <code>fseek</code> y claro tampoco me valían.Al final por <a href="http://www.phpclasses.org/">phpclassess</a> di con una que buscaba en archivos remoto, pero como ya tenia el gusanillo decidí crear una función.</p>

<pre><code>function ID3($mp3='') {
    //etiquetas ID3
    $ID3 = array(
        'title' =&gt; 'TIT2', 
        'artist' =&gt; 'TPE1', 
        'album' =&gt; 'TALB'
    );
    //miramos si es un archivo mp3
    if(substr($mp3, -3, 3) != 'mp3') return false;
    //abrimos parte del archivo y leemos
    $fp = fopen($mp3, 'r'); 
    $data = fread($fp, 3000); 
    fclose($fp);
    //comprobamos que tiene ID3
    if(substr($data, 0, 3) != 'ID3') return false;
    //parseamos los tags
    foreach($ID3 as $type =&gt; $key) {
        //existe el tag?
        if(strpos($data, $key)) {
            //existe entre tags o es el ultimo?
            if(!preg_match('!'.$key.'(.*)[A-Z]{3}[A-Z1-4]{1}!Us', $data, $tag)) $tag = explode($key, $data);
            //algo raro pasa con los caracteres asi que limpiamos
            $info = $tag[1];
            $info = str_replace(' ', '...', $info);
            $info = preg_replace('![^A-Za-z0-9\./\'\(\)]+!','',$info);
            $info = str_replace('...', ' ', $info);
            $ID3[$type] = $info;
        } else {
            //si no lo encontramos lo borramos
            $ID3[$type] = '';
        }
    }
    //devolvemos el nuevo array
    return $ID3;
}

//print_r(ID3('http://algunaweb.com/mp3.mp3'));</code></pre>

<p>La función devuelve el titulo, el artista y el álbum de la canción, en caso de no poder parsear devuelve <code>false</code>.
He tenido bastantes problemas dando con la solución para arreglar un poco los textos, asi que es posible que más de una vez te encuentres con 7 o caracteres extraños.</p>
]]></description>
			<content:encoded><![CDATA[<p>Ayer echando un vistazo a <a href="http://icebeat.muxtape.com/">muxtape</a>, un servicio muy minimalista y sencillo me di cuenta que subiendo la canción ya obtenía el titulo y el arista. La verdad es que me llamo la atención y estuve jugando un poco con las funciones ID3, pero al probar en un archivo remoto me decía que nanai de la china. Estuve buscando y encontré unas clases que usaban <code>fseek</code> y claro tampoco me valían.Al final por <a href="http://www.phpclasses.org/">phpclassess</a> di con una que buscaba en archivos remoto, pero como ya tenia el gusanillo decidí crear una función.</p>

<pre><code>function ID3($mp3='') {
    //etiquetas ID3
    $ID3 = array(
        'title' =&gt; 'TIT2', 
        'artist' =&gt; 'TPE1', 
        'album' =&gt; 'TALB'
    );
    //miramos si es un archivo mp3
    if(substr($mp3, -3, 3) != 'mp3') return false;
    //abrimos parte del archivo y leemos
    $fp = fopen($mp3, 'r'); 
    $data = fread($fp, 3000); 
    fclose($fp);
    //comprobamos que tiene ID3
    if(substr($data, 0, 3) != 'ID3') return false;
    //parseamos los tags
    foreach($ID3 as $type =&gt; $key) {
        //existe el tag?
        if(strpos($data, $key)) {
            //existe entre tags o es el ultimo?
            if(!preg_match('!'.$key.'(.*)[A-Z]{3}[A-Z1-4]{1}!Us', $data, $tag)) $tag = explode($key, $data);
            //algo raro pasa con los caracteres asi que limpiamos
            $info = $tag[1];
            $info = str_replace(' ', '...', $info);
            $info = preg_replace('![^A-Za-z0-9\./\'\(\)]+!','',$info);
            $info = str_replace('...', ' ', $info);
            $ID3[$type] = $info;
        } else {
            //si no lo encontramos lo borramos
            $ID3[$type] = '';
        }
    }
    //devolvemos el nuevo array
    return $ID3;
}

//print_r(ID3('http://algunaweb.com/mp3.mp3'));</code></pre>

<p>La función devuelve el titulo, el artista y el álbum de la canción, en caso de no poder parsear devuelve <code>false</code>.
He tenido bastantes problemas dando con la solución para arreglar un poco los textos, asi que es posible que más de una vez te encuentres con 7 o caracteres extraños.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Framework iui</title>
			<link>http://icebeat.bitacoras.com/post/285/framework-iui</link>
			<comments>http://icebeat.bitacoras.com/post/285/framework-iui#comments</comments>
			<pubDate>Mon, 31 Mar 2008 22:43:31 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>iphone</category>
<category>iui</category>
<category>framework</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/285/framework-iui</guid>
			<description><![CDATA[<p><a href="http://code.google.com/p/iui/">iui</a> (User Interface (UI) Library for Safari development on iPhone) es un framework que he estado usando hace poco, toqueteandolo y probandolo, la verdad es que montas una pagina en un plis, pero deja mucho que desear si quieres interactuar con el codigo javascript, con el CSS es más facil y puedes añadir estilos y cambiar los listados.</p>

<p>Se hace un poco dificil saber cuando se disparan los eventos y controlarlos, y editar ciertas partes del diseño que cambian cuando pulsas un enlace.</p>

<p>Tienen pensando renovarlo un poco y adaptarlo a las nuevas capacidades que ofrece safari, CSS3, querySelector, animaciones CSS, base de datos.</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/iui/">iui</a> (User Interface (UI) Library for Safari development on iPhone) es un framework que he estado usando hace poco, toqueteandolo y probandolo, la verdad es que montas una pagina en un plis, pero deja mucho que desear si quieres interactuar con el codigo javascript, con el CSS es más facil y puedes añadir estilos y cambiar los listados.</p>

<p>Se hace un poco dificil saber cuando se disparan los eventos y controlarlos, y editar ciertas partes del diseño que cambian cuando pulsas un enlace.</p>

<p>Tienen pensando renovarlo un poco y adaptarlo a las nuevas capacidades que ofrece safari, CSS3, querySelector, animaciones CSS, base de datos.</p>
]]></content:encoded>
		</item>
				<item>
			<title>GTD: Color Bugs</title>
			<link>http://icebeat.bitacoras.com/post/284/gtd-color-bugs</link>
			<comments>http://icebeat.bitacoras.com/post/284/gtd-color-bugs#comments</comments>
			<pubDate>Sun, 30 Mar 2008 13:20:53 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>gtd</category>
<category>icebeat</category>
<category>tareas</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/284/gtd-color-bugs</guid>
			<description><![CDATA[<p>Siempre me pasa lo mismo, por mucho que intento adaptarme a un gestor de tareas no consigo cogerle el gusanillo. Ni <a href="http://www.anxietyapp.com/">Anxiety</a> ni <a href="http://www.culturedcode.com/things/">Things</a> consiguen engancharme, y fijo que tiene que ser por no darles una oportunidad en condiciones.</p>

<p>Asi que para la batalla diaria me he comprado una libretilla, dejando la Moleskine para ideas y proyectos.</p>

<p><img src="http://icebeat.bitacoras.com/images/gtd.jpg" alt="gtd" title="" /></p>

<p>La encontré en una tienda de todo a 100, la portada venia de lujo :).</p>
]]></description>
			<content:encoded><![CDATA[<p>Siempre me pasa lo mismo, por mucho que intento adaptarme a un gestor de tareas no consigo cogerle el gusanillo. Ni <a href="http://www.anxietyapp.com/">Anxiety</a> ni <a href="http://www.culturedcode.com/things/">Things</a> consiguen engancharme, y fijo que tiene que ser por no darles una oportunidad en condiciones.</p>

<p>Asi que para la batalla diaria me he comprado una libretilla, dejando la Moleskine para ideas y proyectos.</p>

<p><img src="http://icebeat.bitacoras.com/images/gtd.jpg" alt="gtd" title="" /></p>

<p>La encontré en una tienda de todo a 100, la portada venia de lujo :).</p>
]]></content:encoded>
		</item>
			</channel>
</rss>