<?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, 17 Sep 2008 21:53:58 +0000</pubDate>
		<generator>http://icebeat.bitacoras.com/post/rss</generator>
		<language>en</language>
				<item>
			<title>Sincronizar Subtítulos .srt</title>
			<link>http://icebeat.bitacoras.com/post/298/sincronizar-subtatulos-srt</link>
			<comments>http://icebeat.bitacoras.com/post/298/sincronizar-subtatulos-srt#comments</comments>
			<pubDate>Wed, 17 Sep 2008 21:53:58 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>php</category>
<category>script</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/298/sincronizar-subtatulos-srt</guid>
			<description><![CDATA[<p>Algunas veces no sé porque pero la función del VLC para manipular los segundos de los subtítulos no funciona correctamente, suele ocurrir cuando no están bien sincronizados. La mejor forma es bajarte un programita y alterar la linea de tiempo. No entiendo la razón pero no he encontrado ninguna aplicación web que lo haga así que me he creado una clase en PHP para manipular los archivos .srt</p>

<pre><code>&lt;?php

class Subtitle {

    function Subtitle($srt) {
        $this-&gt;name = $srt;
        $this-&gt;file = @file_get_contents($srt);
    }

    function time($time=0) {
        $this-&gt;time = $time;
        $this-&gt;file = preg_replace('!([0-9:]{8}),([0-9]{3}) --&gt; ([0-9:]{8}),([0-9]{3})!e',
                    '$this-&gt;sync("\\1").",\\2 --&gt; ".$this-&gt;sync("\\3").",\\4"', $this-&gt;file);
    }

    function sync($time) {
        $time = strtotime($time);
        $time = $time+$this-&gt;time;
        return date('H:i:s', $time);
    }

    function save($name='') {
        if($name) $this-&gt;name = $name;
        $fp = @fopen($this-&gt;name, 'w');
        if(!$fp) return false;
        fwrite($fp, $this-&gt;file);
        fclose($fp);
        return true;
    }

}
?&gt;</code></pre>

<p>Su uso es muy fácil, solo tienes que pasar la ruta del archivo e indicar cuantos segundos quieres añadir o quitar, si quieres quitar solo tienes que poner el valor en negativo.</p>

<pre><code>$subs = new Subtitle('subs.srt');
//añadir 5 segundos, quitar -5
$subs-&gt;time(5);
//si no le pasas un nuevo nombre reemplaza el archivo
$subs-&gt;save();</code></pre>

<p>Lo único que hace es manipular los segundos, consiguiendo que puedas ir sincronizando poco a poco aquellos subtítulos que por cualquier razón no coinciden con el archivo de video bajado.</p>
]]></description>
			<content:encoded><![CDATA[<p>Algunas veces no sé porque pero la función del VLC para manipular los segundos de los subtítulos no funciona correctamente, suele ocurrir cuando no están bien sincronizados. La mejor forma es bajarte un programita y alterar la linea de tiempo. No entiendo la razón pero no he encontrado ninguna aplicación web que lo haga así que me he creado una clase en PHP para manipular los archivos .srt</p>

<pre><code>&lt;?php

class Subtitle {

    function Subtitle($srt) {
        $this-&gt;name = $srt;
        $this-&gt;file = @file_get_contents($srt);
    }

    function time($time=0) {
        $this-&gt;time = $time;
        $this-&gt;file = preg_replace('!([0-9:]{8}),([0-9]{3}) --&gt; ([0-9:]{8}),([0-9]{3})!e',
                    '$this-&gt;sync("\\1").",\\2 --&gt; ".$this-&gt;sync("\\3").",\\4"', $this-&gt;file);
    }

    function sync($time) {
        $time = strtotime($time);
        $time = $time+$this-&gt;time;
        return date('H:i:s', $time);
    }

    function save($name='') {
        if($name) $this-&gt;name = $name;
        $fp = @fopen($this-&gt;name, 'w');
        if(!$fp) return false;
        fwrite($fp, $this-&gt;file);
        fclose($fp);
        return true;
    }

}
?&gt;</code></pre>

<p>Su uso es muy fácil, solo tienes que pasar la ruta del archivo e indicar cuantos segundos quieres añadir o quitar, si quieres quitar solo tienes que poner el valor en negativo.</p>

<pre><code>$subs = new Subtitle('subs.srt');
//añadir 5 segundos, quitar -5
$subs-&gt;time(5);
//si no le pasas un nuevo nombre reemplaza el archivo
$subs-&gt;save();</code></pre>

<p>Lo único que hace es manipular los segundos, consiguiendo que puedas ir sincronizando poco a poco aquellos subtítulos que por cualquier razón no coinciden con el archivo de video bajado.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Novedades</title>
			<link>http://icebeat.bitacoras.com/post/297/novedades</link>
			<comments>http://icebeat.bitacoras.com/post/297/novedades#comments</comments>
			<pubDate>Wed, 17 Sep 2008 21:39:42 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>madrid</category>
<category>scripts</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/297/novedades</guid>
			<description><![CDATA[<p>Muchas gracias a todo el mundo que me ha ayudado en la búsqueda del piso, he podido orientarme y encontrarlo, la verdad que los pisos en Madrid no son una gran maravilla, sobre todo lo que cuestan, pero es lo que tiene venir a la capital.</p>

<p>Durante estas semanas he podido disfrutar un poco de lo que es la ciudad, he ido a la presentación de los Premios de Bitacoras.com y saludar a mis amigos, me he acercado al MadinSpain una iniciativa de Domestika.org y el sabado me di una vuelta por la noche en blanco de Madrid.</p>

<p>Tengo muchas ganas de experimentar, ahora que por desgracia tengo mas horas libres de la cuenta me pondré a investigar sobre  cosas que tengo en mente. Ya tengo preparado varios scripts, es cuestión de el subirlos al blog.</p>
]]></description>
			<content:encoded><![CDATA[<p>Muchas gracias a todo el mundo que me ha ayudado en la búsqueda del piso, he podido orientarme y encontrarlo, la verdad que los pisos en Madrid no son una gran maravilla, sobre todo lo que cuestan, pero es lo que tiene venir a la capital.</p>

<p>Durante estas semanas he podido disfrutar un poco de lo que es la ciudad, he ido a la presentación de los Premios de Bitacoras.com y saludar a mis amigos, me he acercado al MadinSpain una iniciativa de Domestika.org y el sabado me di una vuelta por la noche en blanco de Madrid.</p>

<p>Tengo muchas ganas de experimentar, ahora que por desgracia tengo mas horas libres de la cuenta me pondré a investigar sobre  cosas que tengo en mente. Ya tengo preparado varios scripts, es cuestión de el subirlos al blog.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Piso en Madrid</title>
			<link>http://icebeat.bitacoras.com/post/296/piso-en-madrid</link>
			<comments>http://icebeat.bitacoras.com/post/296/piso-en-madrid#comments</comments>
			<pubDate>Wed, 13 Aug 2008 23:01:07 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>help</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/296/piso-en-madrid</guid>
			<description><![CDATA[<p>Hace ya 10 días que estoy en Madrid, durmiendo en un piso "puente" hasta que encuentre piso, pero tengo un problema, en esta ultima semana no he parado de buscar y no encuentro nada, así que mi ultimo recurso es poner en la red un anuncio vendiendo mi alma.</p>

<p>Si alguien de Madrid o alrededores conoce un piso que este en Alquiler por favor avisadme, y bueno como ultimo recurso también algún piso compartido.</p>

<p>Muchas gracias de antemano, donde se han metido los pisos? existen?</p>
]]></description>
			<content:encoded><![CDATA[<p>Hace ya 10 días que estoy en Madrid, durmiendo en un piso "puente" hasta que encuentre piso, pero tengo un problema, en esta ultima semana no he parado de buscar y no encuentro nada, así que mi ultimo recurso es poner en la red un anuncio vendiendo mi alma.</p>

<p>Si alguien de Madrid o alrededores conoce un piso que este en Alquiler por favor avisadme, y bueno como ultimo recurso también algún piso compartido.</p>

<p>Muchas gracias de antemano, donde se han metido los pisos? existen?</p>
]]></content:encoded>
		</item>
				<item>
			<title>Nueva etapa en Tuenti.com</title>
			<link>http://icebeat.bitacoras.com/post/295/nueva-etapa-en-tuenti-com</link>
			<comments>http://icebeat.bitacoras.com/post/295/nueva-etapa-en-tuenti-com#comments</comments>
			<pubDate>Thu, 24 Jul 2008 10:25:29 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>bitacoras.com</category>
<category>tuenti.com</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/295/nueva-etapa-en-tuenti-com</guid>
			<description><![CDATA[<p>Hace aproximadamente un año y pico hable sobre una nueva <a href="http://icebeat.bitacoras.com/post/253/diplomado-en-diseafico">etapa</a> en mi vida, la profesional, el momento en que termine mi carrera para centrarme en trabajar. A los pocos meses, en septiembre del año pasado, me <a href="http://icebeat.bitacoras.com/post/270/bitacoras-com-4-aaos-y-250-000-blogs">incorporé</a> al equipo de bitacoras.com para formar parte de la renovación del proyecto.</p>

<p>Durante estos 11 meses he aprendido bastante y le he dedicado mucho tiempo al proyecto, mis compañeros han sido fenomenales (especial mención a David) y el ambiente que se respira en bitacoras.com es de lo mejor. Sin embargo la decisión de marcharme a Tuenti viene condicionada (ademas de la oferta) por un abanico de características que hacen que se convierta mi marcha en un nuevo reto para mi, donde me pueda seguir formando y aprendiendo. Esto no es un adiós sino un hasta luego, porque los buenos amigos no se pierden aunque no estés cerca de ellos.</p>

<p>Mi marcha implica residir en Madrid y trabajar en las oficinas, un cambio que anda costando (la búsqueda de un piso en Madrid (me echáis un cable?) ), voy a echar de menos a mi novia (ella ya me echa de menos y aun no me he ido :( ), los detalles de mi madre y la idea de ir a vivir a Madrid (que obviamente no es Cádiz).</p>

<p>Muchas gracias a mi familia, mi novia y mis amigos por apoyarme y aconsejarme en esta nueva etapa.</p>
]]></description>
			<content:encoded><![CDATA[<p>Hace aproximadamente un año y pico hable sobre una nueva <a href="http://icebeat.bitacoras.com/post/253/diplomado-en-diseafico">etapa</a> en mi vida, la profesional, el momento en que termine mi carrera para centrarme en trabajar. A los pocos meses, en septiembre del año pasado, me <a href="http://icebeat.bitacoras.com/post/270/bitacoras-com-4-aaos-y-250-000-blogs">incorporé</a> al equipo de bitacoras.com para formar parte de la renovación del proyecto.</p>

<p>Durante estos 11 meses he aprendido bastante y le he dedicado mucho tiempo al proyecto, mis compañeros han sido fenomenales (especial mención a David) y el ambiente que se respira en bitacoras.com es de lo mejor. Sin embargo la decisión de marcharme a Tuenti viene condicionada (ademas de la oferta) por un abanico de características que hacen que se convierta mi marcha en un nuevo reto para mi, donde me pueda seguir formando y aprendiendo. Esto no es un adiós sino un hasta luego, porque los buenos amigos no se pierden aunque no estés cerca de ellos.</p>

<p>Mi marcha implica residir en Madrid y trabajar en las oficinas, un cambio que anda costando (la búsqueda de un piso en Madrid (me echáis un cable?) ), voy a echar de menos a mi novia (ella ya me echa de menos y aun no me he ido :( ), los detalles de mi madre y la idea de ir a vivir a Madrid (que obviamente no es Cádiz).</p>

<p>Muchas gracias a mi familia, mi novia y mis amigos por apoyarme y aconsejarme en esta nueva etapa.</p>
]]></content:encoded>
		</item>
				<item>
			<title>Agregador social en Bitacoras.com</title>
			<link>http://icebeat.bitacoras.com/post/294/agregador-social-en-bitacoras-com</link>
			<comments>http://icebeat.bitacoras.com/post/294/agregador-social-en-bitacoras-com#comments</comments>
			<pubDate>Tue, 27 May 2008 15:50:19 +0000</pubDate>
			<dc:creator>IceBeat</dc:creator>
			<category>agregador</category>
<category>bitacoras.com</category>
			<guid isPermaLink="false">http://icebeat.bitacoras.com/post/294/agregador-social-en-bitacoras-com</guid>
			<description><![CDATA[<p>Hoy estrenamos funcionalidad en <a href="http://bitacoras.com/">Bitacoras.com</a>: el agregador social. Introducimos la posibilidad de votar y comentar anotaciones, al estilo Digg/Meneame, pero con referencias. Todos los enlaces entrantes a una anotación otorgan votos que dependen de la posición de las bitácoras y los usuarios en los correspondientes TOP.</p>

<p>Todos los detalles los comenta mi compañero <a href="http://bitacoras.com/usuario/perdomo">Perdomo</a> en la <a href="http://bitacoras.com/noticias/archivos/agregador-social-en-bitacorascom.php">noticia</a> del lanzamiento.</p>

<p>Pues eso, que estrenamos nuevo corte de pelo :).</p>
]]></description>
			<content:encoded><![CDATA[<p>Hoy estrenamos funcionalidad en <a href="http://bitacoras.com/">Bitacoras.com</a>: el agregador social. Introducimos la posibilidad de votar y comentar anotaciones, al estilo Digg/Meneame, pero con referencias. Todos los enlaces entrantes a una anotación otorgan votos que dependen de la posición de las bitácoras y los usuarios en los correspondientes TOP.</p>

<p>Todos los detalles los comenta mi compañero <a href="http://bitacoras.com/usuario/perdomo">Perdomo</a> en la <a href="http://bitacoras.com/noticias/archivos/agregador-social-en-bitacorascom.php">noticia</a> del lanzamiento.</p>

<p>Pues eso, que estrenamos nuevo corte de pelo :).</p>
]]></content:encoded>
		</item>
				<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>
			</channel>
</rss>