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

<channel>
	<title>Dr. Danguer y Mr. Daniel</title>
	<atom:link href="http://vida.danguer.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vida.danguer.com</link>
	<description>Un blog más de un freelancer</description>
	<lastBuildDate>Sun, 31 Jan 2010 00:14:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cuidado al usar Zend_Date</title>
		<link>http://vida.danguer.com/2010/01/30/cuidado-al-usar-zend_date/</link>
		<comments>http://vida.danguer.com/2010/01/30/cuidado-al-usar-zend_date/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 00:14:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[Fechas]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Date]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=96</guid>
		<description><![CDATA[<p>En un proyecto, estaba utilizando Zend_Date para manejo de horas en diferentes zonas horarias, cuando lo estaba desarrollando empecé a tener un error porque olvidé que la fecha se actualiza cuando cambias un parámetro y el problema surge cuando cambias el mes o día y se encuentra con una fecha inexistente aunque en el código parezca correcta, por ejemplo, supongamos que estamos en el mes de febrero y queremos crear una fecha de marzo (asignaré la fecha para reproducir el error, aunque el error es cuando se utiliza la fecha actual)</p>
<pre name="code" class="php">include_once("Zend/Date.php");
$fecha_febrero = mktime(0, 0, 0, 2, 1, 2010);
$fecha = new Zend_Date($fecha_febrero);
$fecha-&#62;setDay(31);
$fecha-&#62;setMonth(3);
print "Fecha Marzo: ".date("d/m/Y", $fecha-&#62;getTimestamp());</pre>
<p>Uno esperaría que el resultado fuera: <strong>31/03/2010</strong></p>
<p>Pero en su lugar mostrará <strong>03/03/2010</strong></p>
<p>Esto es porque al hacer <code>$fecha-&#62;setDay(31)</code> el sistema intenta crear la fecha: <strong>31/02/2010</strong> que no existe, por lo que &#8220;recorre&#8221; los días restantes para quedar en <strong>03/03/2010</strong>, al asignar el mes, no tiene efecto.</p>
<p>La solución es simplemente hacerlo en orden inverso:</p>
<pre name="code" class="php">include_once("Zend/Date.php");
$fecha_febrero = mktime(0, 0, 0, 2, 1, 2010);
$fecha = new Zend_Date($fecha_febrero);
$fecha-&#62;setMonth(3);
$fecha-&#62;setDay(31);
print "Fecha Marzo: ".date("d/m/Y", $fecha-&#62;getTimestamp());</pre>
<p>Eso parecería la solución ideal (y es la recomendada por la documentación), pero no es totalmente cierta, si por ejemplo estamos en enero 31 del 2010 e intentamos asignar una fecha de febrero, siempre obtendremos una fecha de marzo:</p>
<pre name="code" class="php">include_once 'Zend/Date.php';
$fecha_enero = mktime(0, 0, 0, 1, 31, 2010);
$fecha = new Zend_Date($fecha_enero);
$fecha-&#62;setMonth(2);
$fecha-&#62;setDay(10);
print "Fecha Febrero: ".date("d/m/Y", $fecha-&#62;getTimestamp());</pre>
<p>Uno esperaría que mostrara la fecha:<br />
<strong>10/02/2010</strong></p>
<p>Pero en realidad muestra<br />
<strong>10/03/2010</strong></p>
<p>Esto porque cuando asignamos el mes, el sistema intenta crear la fecha 31/03/2010 que una vez más es incorrecta, por lo que crea la fecha 03/03/2010, pero al asignar la fecha, el resultado es un error en el mes.</p>
<p>Aunque esto no es un error, es muy peligroso porque uno puede suponer que la fecha es correcta porque&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>En un proyecto, estaba utilizando Zend_Date para manejo de horas en diferentes zonas horarias, cuando lo estaba desarrollando empecé a tener un error porque olvidé que la fecha se actualiza cuando cambias un parámetro y el problema surge cuando cambias el mes o día y se encuentra con una fecha inexistente aunque en el código parezca correcta, por ejemplo, supongamos que estamos en el mes de febrero y queremos crear una fecha de marzo (asignaré la fecha para reproducir el error, aunque el error es cuando se utiliza la fecha actual)</p>
<pre name="code" class="php">include_once("Zend/Date.php");
$fecha_febrero = mktime(0, 0, 0, 2, 1, 2010);
$fecha = new Zend_Date($fecha_febrero);
$fecha-&gt;setDay(31);
$fecha-&gt;setMonth(3);
print "Fecha Marzo: ".date("d/m/Y", $fecha-&gt;getTimestamp());</pre>
<p>Uno esperaría que el resultado fuera: <strong>31/03/2010</strong></p>
<p>Pero en su lugar mostrará <strong>03/03/2010</strong></p>
<p>Esto es porque al hacer <code>$fecha-&gt;setDay(31)</code> el sistema intenta crear la fecha: <strong>31/02/2010</strong> que no existe, por lo que &#8220;recorre&#8221; los días restantes para quedar en <strong>03/03/2010</strong>, al asignar el mes, no tiene efecto.</p>
<p>La solución es simplemente hacerlo en orden inverso:</p>
<pre name="code" class="php">include_once("Zend/Date.php");
$fecha_febrero = mktime(0, 0, 0, 2, 1, 2010);
$fecha = new Zend_Date($fecha_febrero);
$fecha-&gt;setMonth(3);
$fecha-&gt;setDay(31);
print "Fecha Marzo: ".date("d/m/Y", $fecha-&gt;getTimestamp());</pre>
<p>Eso parecería la solución ideal (y es la recomendada por la documentación), pero no es totalmente cierta, si por ejemplo estamos en enero 31 del 2010 e intentamos asignar una fecha de febrero, siempre obtendremos una fecha de marzo:</p>
<pre name="code" class="php">include_once 'Zend/Date.php';
$fecha_enero = mktime(0, 0, 0, 1, 31, 2010);
$fecha = new Zend_Date($fecha_enero);
$fecha-&gt;setMonth(2);
$fecha-&gt;setDay(10);
print "Fecha Febrero: ".date("d/m/Y", $fecha-&gt;getTimestamp());</pre>
<p>Uno esperaría que mostrara la fecha:<br />
<strong>10/02/2010</strong></p>
<p>Pero en realidad muestra<br />
<strong>10/03/2010</strong></p>
<p>Esto porque cuando asignamos el mes, el sistema intenta crear la fecha 31/03/2010 que una vez más es incorrecta, por lo que crea la fecha 03/03/2010, pero al asignar la fecha, el resultado es un error en el mes.</p>
<p>Aunque esto no es un error, es muy peligroso porque uno puede suponer que la fecha es correcta porque en el código lo parece, la solución sin embargo es trivial, asignar el primer día de un mes que tenga 31 días y asignar los valores en orden inverso (primero año, luego mes y por último día), así el código sin error sería:</p>
<pre name="code" class="php">
include_once 'Zend/Date.php';
$fecha = new Zend_Date(0, 0, 0, 1, 1, date('Y'));
$fecha-&gt;setMonth(2);
$fecha-&gt;setDay(10);
print "Fecha Febrero: ".date("d/m/Y", $fecha-&gt;getTimestamp());
</pre>
<p>Resultado (el esperado)<br />
<strong>10/02/2010</strong></p>
<p>Esto funciona en la mayoría de los casos; aunque si van a manejar diferentes zonas horarias mediante <code>setTimezone()</code> el código anterior tendrá el mismo error en los casos que la zona horaria sea menor a la zona horaria del servidor, por lo que hay que hacer algo más elaborado:</p>
<pre name="code" class="php">
include_once 'Zend/Date.php';
$fecha = new Zend_Date();
//eliminar "errores"
$fecha-&gt;setTimezone('mi_codigo_zona_horaria');
$fecha-&gt;setDay(1);
$fecha-&gt;setMonth(1);

//nuestro código
$fecha-&gt;setMonth(2);
$fecha-&gt;setDay(10);
print "Fecha Febrero: ".date("d/m/Y", $fecha-&gt;getTimestamp());
</pre>
<p>Lo peligroso del comportamiento de Zend_Date es que funcionará con errores durante algunos días/meses dependiendo de la manera en como se programe y es un poco difícil de diagnosticar por su misma naturaleza, con esto se elimina cualquier tipo de errores.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2010/01/30/cuidado-al-usar-zend_date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una hora perdida</title>
		<link>http://vida.danguer.com/2009/11/25/una-hora-perdida/</link>
		<comments>http://vida.danguer.com/2009/11/25/una-hora-perdida/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 07:12:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[strtotime]]></category>
		<category><![CDATA[Tiempo]]></category>
		<category><![CDATA[Zona Horaria]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=95</guid>
		<description><![CDATA[<p>Mientras estaba haciendo un pequeño calendario que mostrara fechas con ligas a otras parte del sitio, pensé que la manera más fácil era evitar llamar a <code><a href="http://www.php.net/strtotime">strototime</a></code>:</p>
<pre class="code">strtotime("+1 days", $time)</pre>
<p>y en su lugar utilizar directamente la suma de <code>86,400</code> segundos que es un día:</p>
<pre>60 * 60 segundos = 3600 segundos (1 hora) * 24 = 86400</pre>
<p>El calendario no tenía ningún problema hasta que noté que tenía repetido dos veces el día 1º de noviembre, los tiempos eran los siguientes (tiempo Unix):</p>
<pre>1257051600: 2009-11-01 00:00:00
1257138000: 2009-11-01 23:00:00</pre>
<p>Si hacen la suma, observarán que se sumó <code>86,400</code> segundos a una fecha y otra; pero el tiempo regresado por PHP (de hecho por el sistema Linux) es de 23 horas y no 24 horas.</p>
<p>Hice algunas pruebas en otros servidores y solo uno imprimió la fecha que esperaba (<code>2009-11-02 00:00:00</code>), la primera idea (por el cansancio) fue que era un error de PHP/Linux. Buscando un posible error, encontré algunas preguntas que como yo habían tenido un problema similar, pero mencionaban algo de la zona horaria, eso me recordó que el 1º de Noviembre en México atrasamos el reloj una hora por lo que en realidad el cálculo era correcto desde la perspectiva de Linux ya que estaba olvidando esa &#8220;hora perdida&#8221; en mis cálculos, el servidor que regresó bien la fecha estaba en otra zona horaria por lo que no compartían nuestro cambio de horario.</p>
<p>El tiempo Unix correcto es: <code>1257141600</code> no es otra cosa que es el día (<code>86400</code>) más la hora &#8220;perdida&#8221; (<code>3600</code>), este tiempo lo obtuve llamando a <code><a href="http://www.php.net/strtotime">strtotime</a></code> en PHP en lugar de calcularlo por mi cuenta.</p>
<p><strong>Moraleja</strong>: Manipular el tiempo Unix de forma directa agregando valores puede ser muy rápido y simplifica la implementación, pero si quieres hacer algo que no tenga errores utiliza siempre las funciones de tiempo de PHP/Linux.</p>
&#8230;]]></description>
			<content:encoded><![CDATA[<p>Mientras estaba haciendo un pequeño calendario que mostrara fechas con ligas a otras parte del sitio, pensé que la manera más fácil era evitar llamar a <code><a href="http://www.php.net/strtotime">strototime</a></code>:</p>
<pre class="code">strtotime("+1 days", $time)</pre>
<p>y en su lugar utilizar directamente la suma de <code>86,400</code> segundos que es un día:</p>
<pre>60 * 60 segundos = 3600 segundos (1 hora) * 24 = 86400</pre>
<p>El calendario no tenía ningún problema hasta que noté que tenía repetido dos veces el día 1º de noviembre, los tiempos eran los siguientes (tiempo Unix):</p>
<pre>1257051600: 2009-11-01 00:00:00
1257138000: 2009-11-01 23:00:00</pre>
<p>Si hacen la suma, observarán que se sumó <code>86,400</code> segundos a una fecha y otra; pero el tiempo regresado por PHP (de hecho por el sistema Linux) es de 23 horas y no 24 horas.</p>
<p>Hice algunas pruebas en otros servidores y solo uno imprimió la fecha que esperaba (<code>2009-11-02 00:00:00</code>), la primera idea (por el cansancio) fue que era un error de PHP/Linux. Buscando un posible error, encontré algunas preguntas que como yo habían tenido un problema similar, pero mencionaban algo de la zona horaria, eso me recordó que el 1º de Noviembre en México atrasamos el reloj una hora por lo que en realidad el cálculo era correcto desde la perspectiva de Linux ya que estaba olvidando esa &#8220;hora perdida&#8221; en mis cálculos, el servidor que regresó bien la fecha estaba en otra zona horaria por lo que no compartían nuestro cambio de horario.</p>
<p>El tiempo Unix correcto es: <code>1257141600</code> no es otra cosa que es el día (<code>86400</code>) más la hora &#8220;perdida&#8221; (<code>3600</code>), este tiempo lo obtuve llamando a <code><a href="http://www.php.net/strtotime">strtotime</a></code> en PHP en lugar de calcularlo por mi cuenta.</p>
<p><strong>Moraleja</strong>: Manipular el tiempo Unix de forma directa agregando valores puede ser muy rápido y simplifica la implementación, pero si quieres hacer algo que no tenga errores utiliza siempre las funciones de tiempo de PHP/Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/11/25/una-hora-perdida/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip Rápido: Completación de código en Zend Studio</title>
		<link>http://vida.danguer.com/2009/03/31/tip-rapido-completacion-de-codigo-en-zend-studio/</link>
		<comments>http://vida.danguer.com/2009/03/31/tip-rapido-completacion-de-codigo-en-zend-studio/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 23:08:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Studio]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=93</guid>
		<description><![CDATA[<p>Uso mucho el <a title="Zend Studio" href="http://www.zend.com/en/products/studio/" target="_blank">Zend Studio</a>, aunque la primera versión fue desastrosa a partir de la 6.0.1 se han esmerado muchísimo; lo único malo que me he topado es que al hacer un proyecto Zend Framework se vuelve terriblemente lento y que tiene un poco de código extra poco necesario en su plantilla; aunque la ventaja es que ya trae ejemplos de Unit Test Case para los modelos (falta probarlos a detalle =P)</p>
<p>Usualmente al construir mis clases no pongo mucha documentación por función, por tanto Zend Studio no puede &#8220;determinar&#8221; qué tipo de variable regresa esa función. </p>
<p>Para facilitar esto, lo que hago es simplemente agregar este pedazo de código:</p>
<pre name="code" class="php">
    /**
     * @return Zend_Db_Adapter_Abstract
     */
	public static function getDB() {
             /* ... aqui va el código */
         }
 </pre>
<p>Básicamente es el snippet de código para documentación pero usando solamente el tipo de objeto que regresa la función.<br />
Con esto cuando utilices la función, Zend Studio podrá fácilmente mostrarte las propiedades y métodos del objeto.</p>
]]></description>
			<content:encoded><![CDATA[<p>Uso mucho el <a title="Zend Studio" href="http://www.zend.com/en/products/studio/" target="_blank">Zend Studio</a>, aunque la primera versión fue desastrosa a partir de la 6.0.1 se han esmerado muchísimo; lo único malo que me he topado es que al hacer un proyecto Zend Framework se vuelve terriblemente lento y que tiene un poco de código extra poco necesario en su plantilla; aunque la ventaja es que ya trae ejemplos de Unit Test Case para los modelos (falta probarlos a detalle =P)</p>
<p>Usualmente al construir mis clases no pongo mucha documentación por función, por tanto Zend Studio no puede &#8220;determinar&#8221; qué tipo de variable regresa esa función. </p>
<p>Para facilitar esto, lo que hago es simplemente agregar este pedazo de código:</p>
<pre name="code" class="php">
    /**
     * @return Zend_Db_Adapter_Abstract
     */
	public static function getDB() {
             /* ... aqui va el código */
         }
 </pre>
<p>Básicamente es el snippet de código para documentación pero usando solamente el tipo de objeto que regresa la función.<br />
Con esto cuando utilices la función, Zend Studio podrá fácilmente mostrarte las propiedades y métodos del objeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/03/31/tip-rapido-completacion-de-codigo-en-zend-studio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TinyURL API &#8211; Snippet</title>
		<link>http://vida.danguer.com/2009/03/23/tinyurl-api-snippet/</link>
		<comments>http://vida.danguer.com/2009/03/23/tinyurl-api-snippet/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 18:39:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=92</guid>
		<description><![CDATA[<p>Aqui hay un snippet (pedazo de código) para utilizar el API de TinyURL (TinyAPI <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), básicamente es llamar a la siguiente dirección:</p>
<pre name="code" class="php">
http://tinyurl.com/api-create.php?url= 
</pre>
<p>y agregar al final la URL que queremos &#8220;achicar&#8221; con TinyURL, la página regresará como único contenido la URL nueva, por ejemplo:<br />
<a href="http://tinyurl.com/api-create.php?url=http://vida.danguer.com">http://tinyurl.com/api-create.php?url=http://vida.danguer.com</a></p>
<p>Da como resultado:<br />
<a href="http://tinyurl.com/dfz9c3">http://tinyurl.com/dfz9c3</a></p>
<p>El snippet para PHP es el siguiente: </p>
<pre name="code" class="php">
function get_tinyurl($url) {
     $url = "http://tinyurl.com/api-create.php?url=".urlencode($url);
     return trim(file_get_contents($url));
}
</pre>
<p> </p>
<p>Demasiado facil, no? solamente hay que invocarlo como:</p>
<pre name="code" class="php">
get_tinyurl('http://vida.danguer.com')
</pre>
<p>y obtendremos la nueva URL.</p>
]]></description>
			<content:encoded><![CDATA[<p>Aqui hay un snippet (pedazo de código) para utilizar el API de TinyURL (TinyAPI <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), básicamente es llamar a la siguiente dirección:</p>
<pre name="code" class="php">
http://tinyurl.com/api-create.php?url= 
</pre>
<p>y agregar al final la URL que queremos &#8220;achicar&#8221; con TinyURL, la página regresará como único contenido la URL nueva, por ejemplo:<br />
<a href="http://tinyurl.com/api-create.php?url=http://vida.danguer.com">http://tinyurl.com/api-create.php?url=http://vida.danguer.com</a></p>
<p>Da como resultado:<br />
<a href="http://tinyurl.com/dfz9c3">http://tinyurl.com/dfz9c3</a></p>
<p>El snippet para PHP es el siguiente: </p>
<pre name="code" class="php">
function get_tinyurl($url) {
     $url = "http://tinyurl.com/api-create.php?url=".urlencode($url);
     return trim(file_get_contents($url));
}
</pre>
<p> </p>
<p>Demasiado facil, no? solamente hay que invocarlo como:</p>
<pre name="code" class="php">
get_tinyurl('http://vida.danguer.com')
</pre>
<p>y obtendremos la nueva URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/03/23/tinyurl-api-snippet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dumpear todas las bases de datos</title>
		<link>http://vida.danguer.com/2009/02/19/dumpear-todas-las-bases-de-datos/</link>
		<comments>http://vida.danguer.com/2009/02/19/dumpear-todas-las-bases-de-datos/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 01:25:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[respaldo]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=91</guid>
		<description><![CDATA[<p>Recientemente tuve que &#8220;dumpear&#8221; todas las bases de datos de un servidor por lo que utilice un script muy simple para hacerlo:</p>
<pre name="code" class="php">
USER=root;PASS=mi_pass;for database in `echo "SHOW DATABASES" &#124; mysql --user=$USER --password=$PASS &#124; sed '1d'`; do mysqldump --user=$USER --password=$PASS $database > $database.sql; tar jcvf $database.tar.bz2 $database.sql; rm $database.sql; done
</pre>
<p>Un poco más leible:</p>
<pre name="code" class="php">
USER=root
PASS=mi_pass
for database in `echo "SHOW DATABASES" &#124; mysql --user=$USER --password=$PASS &#124; sed '1d'`
do
    mysqldump --user=$USER --password=$PASS $database > $database.sql
    tar jcvf $database.tar.bz2 $database.sql
    rm $database.sql
done
</pre>
<p>Básicamente manda todas las bases de datos y quita la linea inicial (que siempre es Databases) y por cada base de datos invoca mysqldump y por último lo comprime con bunzip2 para obtener un archivo muy pequeño y por supuesto elimina las &#8220;fuentes&#8221; de sql.</p>
]]></description>
			<content:encoded><![CDATA[<p>Recientemente tuve que &#8220;dumpear&#8221; todas las bases de datos de un servidor por lo que utilice un script muy simple para hacerlo:</p>
<pre name="code" class="php">
USER=root;PASS=mi_pass;for database in `echo "SHOW DATABASES" | mysql --user=$USER --password=$PASS | sed '1d'`; do mysqldump --user=$USER --password=$PASS $database > $database.sql; tar jcvf $database.tar.bz2 $database.sql; rm $database.sql; done
</pre>
<p>Un poco más leible:</p>
<pre name="code" class="php">
USER=root
PASS=mi_pass
for database in `echo "SHOW DATABASES" | mysql --user=$USER --password=$PASS | sed '1d'`
do
    mysqldump --user=$USER --password=$PASS $database > $database.sql
    tar jcvf $database.tar.bz2 $database.sql
    rm $database.sql
done
</pre>
<p>Básicamente manda todas las bases de datos y quita la linea inicial (que siempre es Databases) y por cada base de datos invoca mysqldump y por último lo comprime con bunzip2 para obtener un archivo muy pequeño y por supuesto elimina las &#8220;fuentes&#8221; de sql.</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/02/19/dumpear-todas-las-bases-de-datos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto inicio de dominios en Xen</title>
		<link>http://vida.danguer.com/2009/01/09/auto-inicio-de-dominios-en-xen/</link>
		<comments>http://vida.danguer.com/2009/01/09/auto-inicio-de-dominios-en-xen/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 22:47:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=90</guid>
		<description><![CDATA[<p>Algo muy útil es iniciar/apagar automáticamente dominios XEN cuando se reinicia o apaga el anfitrión (<code>dom0</code>), cuando se instala XEN, por defecto deberemos ver creado un directorio llamado <code>/etc/xen/auto</code></p>
<p>En este directorio el script <code>/etc/init.d/xendomains</code> buscará las configuraciones de las máquinas virtuales a iniciar/detener estos pueden ser vínculos simbólicos a las verdaderas configuraciones.</p>
<p>Para que todo esto suceda en primer lugar debes de tener el script <code>/etc/init.d/xendomains</code> que se instala junto con <code>/etc/init.d/xend</code></p>
<p>También debes haber habilitado el inicio de este script con el siguiente comando:</p>
<pre name="code" class="php">
update-rc.d xendomains defaults 21 20
</pre>
<p> <br />
El script <code>/etc/init.d/xendomains</code> necesita del archivo de configuración: <code>/etc/sysconfig/xendomains</code></p>
<p>En este verás una línea que contiene:</p>
<pre name="code" class="php">
XENDOMAINS_AUTO=/etc/xen/auto
</pre>
<p>Con esto definimos el directorio donde se buscarán los dominios que se auto iniciarán</p>
]]></description>
			<content:encoded><![CDATA[<p>Algo muy útil es iniciar/apagar automáticamente dominios XEN cuando se reinicia o apaga el anfitrión (<code>dom0</code>), cuando se instala XEN, por defecto deberemos ver creado un directorio llamado <code>/etc/xen/auto</code></p>
<p>En este directorio el script <code>/etc/init.d/xendomains</code> buscará las configuraciones de las máquinas virtuales a iniciar/detener estos pueden ser vínculos simbólicos a las verdaderas configuraciones.</p>
<p>Para que todo esto suceda en primer lugar debes de tener el script <code>/etc/init.d/xendomains</code> que se instala junto con <code>/etc/init.d/xend</code></p>
<p>También debes haber habilitado el inicio de este script con el siguiente comando:</p>
<pre name="code" class="php">
update-rc.d xendomains defaults 21 20
</pre>
<p> <br />
El script <code>/etc/init.d/xendomains</code> necesita del archivo de configuración: <code>/etc/sysconfig/xendomains</code></p>
<p>En este verás una línea que contiene:</p>
<pre name="code" class="php">
XENDOMAINS_AUTO=/etc/xen/auto
</pre>
<p>Con esto definimos el directorio donde se buscarán los dominios que se auto iniciarán</p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/01/09/auto-inicio-de-dominios-en-xen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener video FLV de YouTube</title>
		<link>http://vida.danguer.com/2009/01/09/obtener-video-flv-de-youtube/</link>
		<comments>http://vida.danguer.com/2009/01/09/obtener-video-flv-de-youtube/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 21:02:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[FLV]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=89</guid>
		<description><![CDATA[<p>Esta es la nueva manera de obtener el video de YouTube, los parámetros para <code>get_video.php</code> quedan iguales (<code>video_id</code> y <code>t</code>), pero <code>t</code> cambia y ahora no se obtiene al cargar el video, se tiene que llamar a otra URL para obtener esa información.</p>
<p>El método es muy fácil, los pasos son:</p>
<ol>
<li>Llamar a: <br />
<code>http://www.youtube.com/get_video_info.php?video_id=VIDEOID</code><br />
Donde <code>VIDEOID</code> es el id del video que vamos a obtener el archivo <code>FLV</code> (las ligas de YouTube para ver el video son como: <code>http://www.youtube.com/v/VIDEOID</code>)<br />
Tomaremos por ejemplo este:<br />
<code>http://www.youtube.com/get_video_info.php?video_id=HDi9OeJqwG4</code> </li>
<li>El resultado será en texto y tendrá muchas variables como:
<pre name="code" class="php">status=ok&#38;title=Rob+Dougan+-+Furious+Angels&#38;muted=0&#38;avg_rating=4.8496592845&#38;creator=eitch&#38;length_seconds=237&#38;vq=None&#38;fmt_map=&#38;token=OEgsToPDskKxBcum6P4BEStM-z3qkYZW&#38;thumbnail_url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2FHDi9OeJqwG4%2Fdefault.jpg&#38;allow_ratings=True&#38;plid=AARgErHUJPLX2RPWAAAAoABoIAE&#38;track_embed=1</pre>
</li>
<li>De aqui solamente necesitamos obtener el parámetro <code>token</code> y pasarlo al ya conocido <code>get_video.php</code>:<br />
<code>http://www.youtube.com/get_video.php?video_id=HDi9OeJqwG4&#38;t=OEgsToPDskKxBcum6P4BEStM-z3qkYZW</code></li>
</ol>
<p>Con esto ya obtendremos el FLV deseado, en PHP la rutina sería la siguiente:</p>
<pre name="code" class="php">&#60;?php
//video id por defecto
$video_id = 'HDi9OeJqwG4';

if (isset($_REQUEST['video_id']))
        $video_id = trim($_REQUEST['video_id']);

//obtener informacion
$url_info = 'http://www.youtube.com/get_video_info.php?video_id='.$video_id;
$info = file_get_contents($url_info);

$vars = array();
parse_str($info, $vars);

$url_flv = 'http://www.youtube.com/get_video.php?video_id='.$video_id.'&#38;t='.$var
s['token'];

print 'Archivo FLV: '.$url_flv;
?&#62;</pre>
<p>Con esto obtenemos la URL del archivo <code>FLV</code>.</p>
<p>Es importante notar que en Flex/Flash no se podrá cargar diréctamente <code>get_video_info.php</code> por la política del <code>crossdomain</code> de YouTube así que hay que utilizar un proxy.</p>
<p>El demo lo pueden probar desde:<br />
<a href="http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube/">http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube/?video_id=VIDEOID</a><br />
Donde VIDEOID es el id del video de YouTube de su preferencia =)</p>
<p>El código fuente lo pueden descargar de:<br />
<a href="http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube.tar.gz">http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube.tar.gz</a><br />
 </p>
<p> </p>
<p> </p>
<p> </p>
]]></description>
			<content:encoded><![CDATA[<p>Esta es la nueva manera de obtener el video de YouTube, los parámetros para <code>get_video.php</code> quedan iguales (<code>video_id</code> y <code>t</code>), pero <code>t</code> cambia y ahora no se obtiene al cargar el video, se tiene que llamar a otra URL para obtener esa información.</p>
<p>El método es muy fácil, los pasos son:</p>
<ol>
<li>Llamar a: <br />
<code>http://www.youtube.com/get_video_info.php?video_id=VIDEOID</code><br />
Donde <code>VIDEOID</code> es el id del video que vamos a obtener el archivo <code>FLV</code> (las ligas de YouTube para ver el video son como: <code>http://www.youtube.com/v/VIDEOID</code>)<br />
Tomaremos por ejemplo este:<br />
<code>http://www.youtube.com/get_video_info.php?video_id=HDi9OeJqwG4</code> </li>
<li>El resultado será en texto y tendrá muchas variables como:
<pre name="code" class="php">status=ok&amp;title=Rob+Dougan+-+Furious+Angels&amp;muted=0&amp;avg_rating=4.8496592845&amp;creator=eitch&amp;length_seconds=237&amp;vq=None&amp;fmt_map=&amp;token=OEgsToPDskKxBcum6P4BEStM-z3qkYZW&amp;thumbnail_url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2FHDi9OeJqwG4%2Fdefault.jpg&amp;allow_ratings=True&amp;plid=AARgErHUJPLX2RPWAAAAoABoIAE&amp;track_embed=1</pre>
</li>
<li>De aqui solamente necesitamos obtener el parámetro <code>token</code> y pasarlo al ya conocido <code>get_video.php</code>:<br />
<code>http://www.youtube.com/get_video.php?video_id=HDi9OeJqwG4&amp;t=OEgsToPDskKxBcum6P4BEStM-z3qkYZW</code></li>
</ol>
<p>Con esto ya obtendremos el FLV deseado, en PHP la rutina sería la siguiente:</p>
<pre name="code" class="php">&lt;?php
//video id por defecto
$video_id = 'HDi9OeJqwG4';

if (isset($_REQUEST['video_id']))
        $video_id = trim($_REQUEST['video_id']);

//obtener informacion
$url_info = 'http://www.youtube.com/get_video_info.php?video_id='.$video_id;
$info = file_get_contents($url_info);

$vars = array();
parse_str($info, $vars);

$url_flv = 'http://www.youtube.com/get_video.php?video_id='.$video_id.'&amp;t='.$var
s['token'];

print 'Archivo FLV: '.$url_flv;
?&gt;</pre>
<p>Con esto obtenemos la URL del archivo <code>FLV</code>.</p>
<p>Es importante notar que en Flex/Flash no se podrá cargar diréctamente <code>get_video_info.php</code> por la política del <code>crossdomain</code> de YouTube así que hay que utilizar un proxy.</p>
<p>El demo lo pueden probar desde:<br />
<a href="http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube/">http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube/?video_id=VIDEOID</a><br />
Donde VIDEOID es el id del video de YouTube de su preferencia =)</p>
<p>El código fuente lo pueden descargar de:<br />
<a href="http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube.tar.gz">http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube.tar.gz</a><br />
 </p>
<p> </p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/01/09/obtener-video-flv-de-youtube/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Preguntas a ayudantes de Reyes Magos</title>
		<link>http://vida.danguer.com/2009/01/07/preguntas-a-ayudantes-de-reyes-magos/</link>
		<comments>http://vida.danguer.com/2009/01/07/preguntas-a-ayudantes-de-reyes-magos/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 07:32:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Vida]]></category>
		<category><![CDATA[Preguntas]]></category>
		<category><![CDATA[Reyes Magos]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=88</guid>
		<description><![CDATA[<p>Estas son algunas de las preguntas que les hacen a los ayudantes de Reyes Mago (yo por ejemplo <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) al vender juguetes</p>
<ul>
<li><strong>¿Esta muñeca es de carne y hueso?</strong><br />
Para referirse a muñecas &#8220;tipo Barbie&#8221; y que muevan las extremidades, pero dan ganas de decirle que &#8220;si, las compramos a unos reductores de cuerpo de África&#8221;</li>
<li> Después de que enseñas un juguete que tiene luces, se mueve y hace sonidos no falta el que te pregunta inocentemente: <strong>¿Usa pilas?</strong><br />
No que va,  es un organismo carbónico que fue diseñado genéticamente para realizar ese comportamiento, hay granjas de estos seres</li>
<li>Después de mostrar un juguete que hace las mil maravillas (se mueve, &#8220;esquiva obstáculos&#8221;, tiene sonido, luces, a veces salta, control remoto, etc, etc, etc) te llegan a preguntar: <strong>¿Solamente eso hace?</strong><br />
Para responder: &#8220;Si también plancha la ropa, pasea al perro, navega por internet, y todo lo que necesites&#8221;</li>
<li>Cuando enseñas helicópteros o aviones cuyo costo es menor a los 100 pesos, te preguntan: <strong>¿Y no vuelan?</strong>&#8230;.  Si claro puede llevar 10 pasajeros y hacer viajes internacionales</li>
</ul>
<p>Pero no sólo se limita a eso, en la tienda de mis padres una vez preguntaron: <strong>&#8220;¿Y si contiene todos los países?&#8221;</strong> refiriéndose a un globo terráqueo sacapuntas de 10 pesos y de unos 10 centímetros de diámetro.</p>
<p> </p>
]]></description>
			<content:encoded><![CDATA[<p>Estas son algunas de las preguntas que les hacen a los ayudantes de Reyes Mago (yo por ejemplo <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) al vender juguetes</p>
<ul>
<li><strong>¿Esta muñeca es de carne y hueso?</strong><br />
Para referirse a muñecas &#8220;tipo Barbie&#8221; y que muevan las extremidades, pero dan ganas de decirle que &#8220;si, las compramos a unos reductores de cuerpo de África&#8221;</li>
<li> Después de que enseñas un juguete que tiene luces, se mueve y hace sonidos no falta el que te pregunta inocentemente: <strong>¿Usa pilas?</strong><br />
No que va,  es un organismo carbónico que fue diseñado genéticamente para realizar ese comportamiento, hay granjas de estos seres</li>
<li>Después de mostrar un juguete que hace las mil maravillas (se mueve, &#8220;esquiva obstáculos&#8221;, tiene sonido, luces, a veces salta, control remoto, etc, etc, etc) te llegan a preguntar: <strong>¿Solamente eso hace?</strong><br />
Para responder: &#8220;Si también plancha la ropa, pasea al perro, navega por internet, y todo lo que necesites&#8221;</li>
<li>Cuando enseñas helicópteros o aviones cuyo costo es menor a los 100 pesos, te preguntan: <strong>¿Y no vuelan?</strong>&#8230;.  Si claro puede llevar 10 pasajeros y hacer viajes internacionales</li>
</ul>
<p>Pero no sólo se limita a eso, en la tienda de mis padres una vez preguntaron: <strong>&#8220;¿Y si contiene todos los países?&#8221;</strong> refiriéndose a un globo terráqueo sacapuntas de 10 pesos y de unos 10 centímetros de diámetro.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2009/01/07/preguntas-a-ayudantes-de-reyes-magos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Usando rsync para transferencias rápidas entre linux</title>
		<link>http://vida.danguer.com/2008/11/26/tip-usando-rsync-para-transferencias-rapidas-entre-linux/</link>
		<comments>http://vida.danguer.com/2008/11/26/tip-usando-rsync-para-transferencias-rapidas-entre-linux/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 07:37:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[replica]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=87</guid>
		<description><![CDATA[<p>Usualmente uso el famosímo <code>scp</code> para transferir archivos, el problema es que al parecer <code>scp</code> es muy lento cuando se trata de muchos archivos pequeños. </p>
<p><code>rsync</code> es un comando para hacer réplicas de un directorio a otro lugar, lo que hace es checar el comparar los directorios y copiar todos los archivos que hayan sido modificados, que sean nuevos o incluso que hayan sido elminados para hacer una copia exacta.</p>
<p>La gran ventaja de <code>rsync</code> es que aparte de crear una réplica, es sorprendentemente rápido, en especial con archivos pequeños.</p>
<p>El uso es muy simple:</p>
<pre>rsync -az -e ssh FUENTE usuario@servidor:DESTINO</pre>
<p>Eso es todo, para que funcione ambos servidores deben tener el programa <code>rsync</code> instalado, <code>FUENTE</code> es el directorio local a copiar (o puede ser un archivo), <code>DESTINO</code> es el directorio del servidor remoto a donde se copiará.</p>
<p>La opción <code>-az</code> envia la información compresa y <code>-e ssh</code> indica que hay que usar el programa <code>ssh</code> para transferir los archivos (con esto se puede enviar también mediante <code>ftp</code>, etc)</p>
<p>Otra opción que uso mucho es <code>--delete</code>, de esta manera <code>rsync</code> también borrará los archivos &#8220;extra&#8221; para que la copia sea exacta. Hay que tener cuidado, porque en algo descuidado se pueden borrar los archivos locales (inversión de parámetros)&#8230; algo que me pasó una vez, pero tenía respaldo =).</p>
<p> </p>
<p> </p>
]]></description>
			<content:encoded><![CDATA[<p>Usualmente uso el famosímo <code>scp</code> para transferir archivos, el problema es que al parecer <code>scp</code> es muy lento cuando se trata de muchos archivos pequeños. </p>
<p><code>rsync</code> es un comando para hacer réplicas de un directorio a otro lugar, lo que hace es checar el comparar los directorios y copiar todos los archivos que hayan sido modificados, que sean nuevos o incluso que hayan sido elminados para hacer una copia exacta.</p>
<p>La gran ventaja de <code>rsync</code> es que aparte de crear una réplica, es sorprendentemente rápido, en especial con archivos pequeños.</p>
<p>El uso es muy simple:</p>
<pre>rsync -az -e ssh FUENTE usuario@servidor:DESTINO</pre>
<p>Eso es todo, para que funcione ambos servidores deben tener el programa <code>rsync</code> instalado, <code>FUENTE</code> es el directorio local a copiar (o puede ser un archivo), <code>DESTINO</code> es el directorio del servidor remoto a donde se copiará.</p>
<p>La opción <code>-az</code> envia la información compresa y <code>-e ssh</code> indica que hay que usar el programa <code>ssh</code> para transferir los archivos (con esto se puede enviar también mediante <code>ftp</code>, etc)</p>
<p>Otra opción que uso mucho es <code>--delete</code>, de esta manera <code>rsync</code> también borrará los archivos &#8220;extra&#8221; para que la copia sea exacta. Hay que tener cuidado, porque en algo descuidado se pueden borrar los archivos locales (inversión de parámetros)&#8230; algo que me pasó una vez, pero tenía respaldo =).</p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2008/11/26/tip-usando-rsync-para-transferencias-rapidas-entre-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eso pasa por no darle navidad a su cartero</title>
		<link>http://vida.danguer.com/2008/11/24/eso-pasa-por-no-darle-navidad-a-su-cartero/</link>
		<comments>http://vida.danguer.com/2008/11/24/eso-pasa-por-no-darle-navidad-a-su-cartero/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 07:11:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Vida]]></category>
		<category><![CDATA[Cartero]]></category>
		<category><![CDATA[Sepomex]]></category>
		<category><![CDATA[Simpsons]]></category>

		<guid isPermaLink="false">http://vida.danguer.com/?p=86</guid>
		<description><![CDATA[<p>Es de todos sabido que el grandioso servicio postal mexicano es muuuuy lento, lamentablemente muchas veces no lo puedes evitar, a mi me llegan revistas de ACM y otras subscripciones por este medio.</p>
<p>Hay veces que quisiera contratar otras subscripciones (de revistas de Estados Unidos principalmente) pero la verdad es que llegan con algunos meses de atraso (un mes despúes se puede considerar como que se esmeraron) y llegan dos de tres o una de dos =(</p>
<p>Pues la semana pasada tocaron a la casa y cuando pregunté, me dijeron &#8220;correo&#8221;, me dije internamente; caray pues tal vez quieren que firme algo. Cuando estaba por abrir recordé que en esos días era el &#8220;día del cartero&#8221; y dije, seguramente me van a pedir &#8220;aguinaldo&#8221;</p>
<p>Como buen profeta, para eso me estaba esperando, y para entregarme un recibo de telmex (para que no se viera tan &#8220;interesado&#8221;). Saludo muy cordial y sin hablar mucho me dice: &#8220;lo molesto con lo de la bonificación&#8221;. Me dije internamente &#8220;y eso que es &#8216;voluntaria&#8217;&#8221;, le di algo del cambio que tenía (no mucho, no poco <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) y se fue.</p>
<p>Lo bueno ha sido que en esta semana han llegado muchísima correspondencia, de hecho me acaba de llegar una revista de ACM de Noviembre, antes de cumplir un mes de enviada &#62;=), realmente eso es sorprendente, espero que el cartero no se olvide que le di bonificación para que al menos un par de meses no se me pierda o retrase la correspondencia =).</p>
<p>Por cierto el título es de un capítulo de los Simpsons (Mama Simpson) donde pasa algo similar <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></description>
			<content:encoded><![CDATA[<p>Es de todos sabido que el grandioso servicio postal mexicano es muuuuy lento, lamentablemente muchas veces no lo puedes evitar, a mi me llegan revistas de ACM y otras subscripciones por este medio.</p>
<p>Hay veces que quisiera contratar otras subscripciones (de revistas de Estados Unidos principalmente) pero la verdad es que llegan con algunos meses de atraso (un mes despúes se puede considerar como que se esmeraron) y llegan dos de tres o una de dos =(</p>
<p>Pues la semana pasada tocaron a la casa y cuando pregunté, me dijeron &#8220;correo&#8221;, me dije internamente; caray pues tal vez quieren que firme algo. Cuando estaba por abrir recordé que en esos días era el &#8220;día del cartero&#8221; y dije, seguramente me van a pedir &#8220;aguinaldo&#8221;</p>
<p>Como buen profeta, para eso me estaba esperando, y para entregarme un recibo de telmex (para que no se viera tan &#8220;interesado&#8221;). Saludo muy cordial y sin hablar mucho me dice: &#8220;lo molesto con lo de la bonificación&#8221;. Me dije internamente &#8220;y eso que es &#8216;voluntaria&#8217;&#8221;, le di algo del cambio que tenía (no mucho, no poco <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) y se fue.</p>
<p>Lo bueno ha sido que en esta semana han llegado muchísima correspondencia, de hecho me acaba de llegar una revista de ACM de Noviembre, antes de cumplir un mes de enviada &gt;=), realmente eso es sorprendente, espero que el cartero no se olvide que le di bonificación para que al menos un par de meses no se me pierda o retrase la correspondencia =).</p>
<p>Por cierto el título es de un capítulo de los Simpsons (Mama Simpson) donde pasa algo similar <img src='http://vida.danguer.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://vida.danguer.com/2008/11/24/eso-pasa-por-no-darle-navidad-a-su-cartero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
