<?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>Javi Vicente &#187; programación</title>
	<atom:link href="http://www.javivicente.com/categoria/programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javivicente.com</link>
	<description>Programador madrileño en Barcelona</description>
	<lastBuildDate>Thu, 26 Jan 2012 09:16:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Añadir fotos en miniatura en el feed de wordpress</title>
		<link>http://www.javivicente.com/2012/01/13/anadir-fotos-en-miniatura-en-el-feed-de-wordpress.html</link>
		<comments>http://www.javivicente.com/2012/01/13/anadir-fotos-en-miniatura-en-el-feed-de-wordpress.html#comments</comments>
		<pubDate>Fri, 13 Jan 2012 09:27:05 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/?p=1892</guid>
		<description><![CDATA[Como podéis ver en la parte superior de la portada del blog, aparecen unas fotos en miniatura que pertenecen a mi fotolog, algo abandonado, por cierto. Los datos se obtienen del feed pero WordPress por defecto no incluye una URL a la imagen porque, entre otras cosas, dejaría de ser válido, no estándar. Pero si [...]]]></description>
			<content:encoded><![CDATA[<p>Como podéis ver en la parte superior de la portada del blog, aparecen unas fotos en miniatura que pertenecen a mi <a href="http://fotolog.javivicente.com">fotolog</a>, algo abandonado, por cierto.</p>
<p>Los datos se obtienen del feed pero <strong>WordPress por defecto no incluye una URL a la imagen</strong> porque, entre otras cosas, dejaría de ser válido, no estándar. Pero si valoras más poder utilizarlo a que valide, puedes utilizar una pequeña función que se incluye en el fichero <em>functions.php</em> del theme.</p>
<p>El código es el siguiente:</p>
<p><code><br />
function ThumbRSS() {<br />
	global $post;<br />
	if ( has_post_thumbnail( $post->ID ) ) {<br />
		$thumbpic = get_the_post_thumbnail( $post->ID, 'thumbnail' );<br />
	}</p>
<p>	echo '
<thumb>'.$thumbpic.'</thumb>';<br />
}</p>
<p>add_filter('rss_item', 'ThumbRSS');<br />
</code></p>
<p>Ahora ya puedes incluir las últimas fotos de tu fotolog creado con WordPress de forma muy sencilla.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2012/01/13/anadir-fotos-en-miniatura-en-el-feed-de-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error en Google Sitemap Generator</title>
		<link>http://www.javivicente.com/2009/02/02/error-en-google-sitemap-generator.html</link>
		<comments>http://www.javivicente.com/2009/02/02/error-en-google-sitemap-generator.html#comments</comments>
		<pubDate>Mon, 02 Feb 2009 20:53:28 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[google sitemap generator]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[sitemap]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/?p=1764</guid>
		<description><![CDATA[Uno de los plugins de WordPress que más recomiendo instalar es Google Sitemap Generator. Y sobre este plugin va la solución a un error que aparece cuando se publica un post en WP 2.7 fundamentalmente. A mi no me ha pasado, pero a Jaime le pasó el otro día y me pidió ayuda. Según él, [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los plugins de WordPress que más recomiendo instalar es <a href="http://www.arnebrachhold.de/projects/wordpress-plugins/google-xml-sitemaps-generator/">Google Sitemap Generator</a>. Y sobre este plugin va <strong>la solución a un error que aparece cuando se publica un post en WP 2.7</strong> fundamentalmente.</p>
<p>A mi no me ha pasado, pero a <a href="http://www.inkilino.com">Jaime</a> le pasó el otro día y me pidió ayuda. Según él, cuando se publicaba el post aparecía:</p>
<p><code><strong>Fatal error</strong>: Allowed memory size of 16777216 bytes exhausted (tried to allocate 500001 bytes) in <strong>$HOME/wp-includes/class-snoopy.php on line 894</strong></code></p>
<p>Me puse a buscar la solución y el <strong>problema estaba en la memoria al generar el sitemap</strong>. En la página de configuración general, entre las muchas opciones se puede <strong>ampliar la memoria</strong>. Si la amplías por ejemplo a 50 MB, ya no te aparecerá el error.</p>
<p>Después eran palabras de <del datetime="2009-01-31T20:23:46+00:00">peloteo</del> agradecimiento</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2009/02/02/error-en-google-sitemap-generator.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como cachear una página web en PHP</title>
		<link>http://www.javivicente.com/2009/02/01/como-cachear-una-pagina-web-en-php.html</link>
		<comments>http://www.javivicente.com/2009/02/01/como-cachear-una-pagina-web-en-php.html#comments</comments>
		<pubDate>Sun, 01 Feb 2009 08:05:27 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/?p=1753</guid>
		<description><![CDATA[Todos sabemos las ventajas y desventajas que tiene cachear una página web, principalmente ventajas cuando trabajamos con bases de datos (MySQL, SQL Server, etc) aunque desventajas cuando suele cambiar la web muy a menudo. Por esta razón vamos a suponer que trabajamos con una página estática que coge datos de una base de datos que [...]]]></description>
			<content:encoded><![CDATA[<p>Todos sabemos las ventajas y desventajas que tiene <strong>cachear una página web</strong>, principalmente <strong>ventajas cuando trabajamos con bases de datos</strong> (MySQL, SQL Server, etc) aunque <strong>desventajas</strong> cuando suele cambiar la web muy a menudo. Por esta razón vamos a suponer que trabajamos con una página estática que coge datos de una base de datos que se actualizan una vez al día.</p>
<p>Lo primero que debemos hacer es <strong>crear un directorio llamado <em>cache</em></strong> por ejemplo y <strong>darle permisos de escritura para todos los usuarios</strong>. Esto se hace porque normalmente crearemos el directorio con un usuario y apache se ejecuta con otro usuario:</p>
<p><code>chmod 777 cache</code></p>
<p><span id="more-1753"></span>Ahora, dentro del directorio <strong>crearemos el fichero de la clase</strong> <em>cache.class.php</em> con el siguiente contenido:</p>
<p><code><br />
&lt;?php</p>
<p>class cache<br />
{<br />
    var $cache_dir; // path ó ruta donde se almacena la cache<br />
    var $cache_time; // tiempo en que expira la cache (en segundos)<br />
    var $caching = false; //true, para cachear<br />
    var $cleaning = false; //true, para limpiar y actualizar<br />
    var $file = ''; // path o ruta del script a cachear</p>
<p>    function iniciar($path='',$time,$action=NULL){<br />
        global $_SERVER;</p>
<p>        $this->cache_dir = $path;<br />
        $this->cache_time = $time;<br />
        $this->cleaning = $action;<br />
        $this->file = $this->cache_dir."cache_".md5(urlencode($_SERVER['REQUEST_URI'])); //md5, encriptado por seguridad</p>
<p>        //condicional: Existencia del archivo, fecha expiración, acción<br />
        if (file_exists($this->file) &#038;&#038; (fileatime($this->file)+$this->cache_time)>time() &#038;&#038; $this->cleaning == false){<br />
          readfile($this->file);<br />
          exit();<br />
        } else {<br />
          $this->caching = true;<br />
          //grabamos buffer<br />
          ob_start();<br />
        }<br />
    }</p>
<p>    function cerrar(){<br />
    	 if ($this->caching){<br />
          //Recuperamos información del buffer<br />
          $data = ob_get_clean();<br />
          // mostramos información<br />
          echo $data;<br />
          //borramos cache si existe<br />
          if(file_exists($this->file)){<br />
          		unlink($this->file);<br />
          }<br />
          //escribimos información en cache<br />
          $fp = fopen( $this->file , 'w' );<br />
          fwrite ( $fp , $data );<br />
          fclose ( $fp );<br />
       }<br />
    }</p>
<p>} // Fin clase Cache<br />
?&gt;<br />
</code></p>
<p><small><a href="http://www.javivicente.com/codigo-wp/cache.class.phps" target="_blank">Descargar el fichero .phps</a></small></p>
<p>Por último sólo queda <strong>crear el fichero index.php que llamará a esa clase </strong>y contendrá el código que deseamos cachear:</p>
<p><code><br />
&lt;?php<br />
//incluimos la clase cache<br />
include('cache/cache.class.php');<br />
//Creamos instancia de la cache<br />
$cache1 = new cache();<br />
//Con cache por media segundos.<br />
$cache1-&gt;iniciar('cache/',1800,false);?&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Prueba cache&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
Hora cacheada: &lt;?php echo date("d-m-Y G:i",time()); ?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>&lt;?<br />
$cache1-&gt;cerrar();<br />
//Cerramos cache</p>
<p>?&gt;</code></p>
<p><small><a href="http://www.javivicente.com/codigo-wp/indexCache.phps" target="_blank">Descargar el fichero .phps</a></small></p>
<p>Cualquier duda o sugerencia, se tendrá en cuenta.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2009/02/01/como-cachear-una-pagina-web-en-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metadatos EXIF</title>
		<link>http://www.javivicente.com/2009/01/22/metadatos-exif.html</link>
		<comments>http://www.javivicente.com/2009/01/22/metadatos-exif.html#comments</comments>
		<pubDate>Thu, 22 Jan 2009 18:16:27 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/?p=1711</guid>
		<description><![CDATA[Si tenéis un fotolog o si simplemente queréis acceder a las propiedades EXIF de fotografías mediante lenguaje PHP, la cosa no es extremadamente complicada. Antes de nada decir que estos metadatos, aunque se pueden modificar de las fotografías, vienen ya cargados por defecto con varios valores de cómo se tomó esa fotografía. Por decir, pueden [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.javivicente.com/wp-content/uploads/2009/01/exifsample.png" alt="exifsample" title="exifsample" width="450" height="327" class="centro-borde size-full wp-image-1713" /></p>
<p>Si tenéis un fotolog o si simplemente queréis acceder a las <strong>propiedades EXIF</strong> de fotografías mediante <strong>lenguaje PHP</strong>, la cosa no es extremadamente complicada. Antes de nada decir que estos metadatos, aunque se pueden modificar de las fotografías, vienen ya cargados por defecto con varios valores de cómo se tomó esa fotografía. Por decir, <strong>pueden indicar desde la cámara y modelo</strong> con que fue captada hasta el <strong>tipo de flash, intensidad</strong> y otras variables que algunos ni sabemos qué son.</p>
<p>Para utilizarlo, en primer lugar deberemos tener compilado PHP con la opción <em>&#8211;enable-exif</em>. Si no lo tenemos, podremos leer el <a href="http://es.php.net/manual/es/exif.setup.php">manual de configuración</a>. Para los usuarios de Windows, es necesario que en el archivo <em>php.ini</em> aparezcan activadas las dos librerias <em>php_mbstring.dll</em> y <em>php_exif.dll</em>.</p>
<p><span id="more-1711"></span>Si todo está listo, ya podremos comenzar a trabajar con la función <a href="http://es.php.net/manual/es/function.exif-read-data.php"><em>exif_read_data</em></a>. Si no os queréis leer las instrucciones y queréis ir <em>a lo rápido</em>, un ejemplo:</p>
<p><code><br />
		&lt;? $path = 'var/www/public_html/javivicente/fotolog/imagen1.jpg';<br />
		$exif=exif_read_data($path,0,true); ?&gt;<br />
</code></p>
<p>La variable <em>$exif</em> contendrá un multiarray de dos dimensiones que podréis visualizar con un simple <code>var_dump($exif);</code></p>
<p>Yo estoy ultimando un nuevo proyecto en el que he tenido que utilizar esto, y creo que a finales de semana os lo presentaré.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2009/01/22/metadatos-exif.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminar líneas vacías de un fichero</title>
		<link>http://www.javivicente.com/2009/01/02/eliminar-lineas-vacias-de-un-fichero.html</link>
		<comments>http://www.javivicente.com/2009/01/02/eliminar-lineas-vacias-de-un-fichero.html#comments</comments>
		<pubDate>Fri, 02 Jan 2009 21:35:49 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[lineas vacias]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2009/01/02/eliminar-lineas-vacias-de-un-fichero.html</guid>
		<description><![CDATA[Una de las cosas que más nervioso me pone es la cantidad de líneas en blanco que dejan algunos editores de texto online (véase WordPress) en los diferentes ficheros PHP, HTML o cualquier otro de texto. Si tenéis acceso a consola desde cualquier ordenador con Linux instalado (supongo que cualquier friki con Mac OS sirve) [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que más nervioso me pone es la cantidad de <strong>líneas en blanco</strong> que dejan algunos editores de texto online (véase WordPress) en los <strong>diferentes ficheros PHP, HTML o cualquier otro</strong> de texto.</p>
<p>Si tenéis acceso a consola desde cualquier ordenador con Linux instalado (supongo que cualquier friki con Mac OS sirve) podéis ejecutar:</p>
<p><code>sed '/^$/d' fichero.php > tt<br/><br />
mv tt fichero.php</code></p>
<p>Se utiliza el comando <a href="http://es.wikipedia.org/wiki/Sed_(inform%C3%A1tica)">sed</a> que tengo muchas ganas de poder exprimirlo a tope pero es harto complicado.</p>
<p>Ahí está mi nuevo truquillo para el nuevo año. Que lo utilicéis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2009/01/02/eliminar-lineas-vacias-de-un-fichero.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open source de redes sociales: elgg e insoshi</title>
		<link>http://www.javivicente.com/2008/08/28/open-source-de-redes-sociales-elgg-e-insoshi.html</link>
		<comments>http://www.javivicente.com/2008/08/28/open-source-de-redes-sociales-elgg-e-insoshi.html#comments</comments>
		<pubDate>Thu, 28 Aug 2008 18:41:46 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[opensource]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[insoshi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[redes sociales]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2008/08/28/open-source-de-redes-sociales-elgg-e-insoshi.html</guid>
		<description><![CDATA[En su día WordPress se popularizó por llegar en el momento justo y además, por ser bueno, estar desarrollado en un lenguaje fácil, popular y además ser de muy fácil instalación. Ahora parece que se están popularizando las redes sociales tipo facebook o tuenti. Es por eso que aprovechando que por temas de trabajo me [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.javivicente.com/wp-content/uploads/2008/08/insoshi_elgg.jpg' alt='insoshi_elgg.jpg' class="centro-borde"/></p>
<p>En su día <a href="http://www.wordpress.org">WordPress</a> se popularizó por llegar en el momento justo y además, por ser bueno, estar desarrollado en un lenguaje fácil, popular y además ser de muy fácil instalación. </p>
<p>Ahora parece que se están popularizando las redes sociales tipo <a href="http://www.facebook.com">facebook</a> o <a href="http://tuenti.com">tuenti</a>. Es por eso que aprovechando que por temas de trabajo me ha tocado buscar alguna, os voy a presentar dos, que a mi parecer, son de lo mejorcito que hay: <strong>elgg e insoshi</strong>.</p>
<p><span id="more-1667"></span><strong>Elgg</strong></p>
<p><a href="http://elgg.org">Elgg.</a> está escrito en <strong>PHP 5.2</strong>y necesita del motor de base de datos <strong>MySQL 5</strong>, además de módulos de Apache <em>mod_rewrite</em> y <em>PHP5</em>, así como otras aplicaciones (<a href="http://docs.elgg.org/wiki/Installation/Requirements">requisitos completos</a>). Por supuesto que es de fácil instalación, un gran punto a favor y será instalar y listo. No se tarda más de 5 minutos para alguien con ligera soltura, pero para los más novatos no hay problema, ya que dispone de una <a href="http://docs.elgg.org/wiki/Installation">buena documentación</a>, eso sí, en inglés.</p>
<p>Yo sinceramente no le he <em>metido mucha mano</em> pero al igual que la aplicación preferida de blogs, acepta temas y <em>plugins</em> por lo que la personalización está asegurada. Además, pretenden explotar esta última característica para vender servicios a empresas y particulares que prefieran que se lo den todo hecho.</p>
<p>Dispone de una <a href="http://test.elgg.org/">página de test</a>. No tiene nada que ver con IE aunque el icono sea parecido.</p>
<p><strong>Insoshi</strong></p>
<p>Por otro lado, <a href="http://portal.insoshi.com/">Insoshi</a> está escrito en <strong>Ruby on Rails</strong>. La <a href="http://sites.google.com/a/insoshi.com/insoshi-guides/Installation">instalación</a> es más costosa que la anterior pudiendo elegir entre varias vías, pero no recomendable para los más novatos. Primero es necesario instalar el módulo de lenguaje para Linux (<a href="http://www.debian-administration.org/articles/329">instrucciones para Debian</a>) y como motor de bases de datos acepta <strong>MySQL y PostgreSQL</strong>.</p>
<p>Como digo, es una aplicación mucho más costosa de instalar, pero mucho más completa y con varias posibilidades de personalización. También es mucho más estable y robusta.</p>
<p>Antes de instalarlo, lo puedes probar en su <a href="http://demo.insoshi.com">página demo</a>.</p>
<p>Si alguien se anima a probar alguna a fondo, que nos lo comente, así como si necesita ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2008/08/28/open-source-de-redes-sociales-elgg-e-insoshi.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.6</title>
		<link>http://www.javivicente.com/2008/07/15/wordpress-26.html</link>
		<comments>http://www.javivicente.com/2008/07/15/wordpress-26.html#comments</comments>
		<pubDate>Tue, 15 Jul 2008 07:57:43 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2008/07/15/wordpress-26.html</guid>
		<description><![CDATA[A través del blog oficial de WordPress, me entero de la nueva versión 2.6 que se ha lanzado hace apenas 4 horas. Entre las mejoras destacan: Revisión de posts: útil para blogs multiusuarios pero sin apenas utilidad para un único usuario, aunque siempre útil puesto que permitirá ir viendo la evolución de los posts en [...]]]></description>
			<content:encoded><![CDATA[<p>A través del <a href="http://wordpress.org/development/2008/07/wordpress-26-tyner/">blog oficial de WordPress</a>, me entero de la nueva versión 2.6 que se ha lanzado hace apenas 4 horas.</p>
<p>Entre las mejoras destacan:</p>
<ul>
<li><strong>Revisión de posts</strong>: útil para blogs multiusuarios pero sin apenas utilidad para un único usuario, aunque siempre útil puesto que permitirá ir viendo la evolución de los posts en cuanto al contenido como si fuera una wiki.</li>
<li><strong>Publicar con marcadores</strong>: si no recuerdo mal, esta opción ya estaba. Permite publicar directamente en tu blog el enlace que estás visitando en este momento si previamente has guardado un código en el marcador. Entiendo que se ha mejorado para aceptar vídeos de Youtube, fotos de Flickr y otros servicios Web.</li>
<li><strong>Vista previa del theme</strong>: Cuando se selecciona un diseño, se abre una ventana donde se visualiza con el contenido actual, es decir, muestra el cambio previo a la aceptación de este sin tener que <em>despistar</em> a nuestros lectores y permitir un óptimo <em>debug</em>.</li>
</ul>
<p>Hay otras menos importantes pero que se han tenido en cuenta en la nueva versión que podéis ver en el enlace anterior y en español en <a href="http://www.inkilino.com/2008/07/15/wordpress-26-tyner-liberada/">Inkilino</a>. Por último, un vídeo para que sea todo más visual y fácil de comprender:</p>
<p><embed src="http://v.wordpress.com/mARhRBcT/fmt_std" type="application/x-shockwave-flash" width="400" height="250" flashvars="blog_domain=http://wordpress.org/development/2008/07/wordpress-26/&#038;width=400&#038;height=250"> </embed>  </p>
<p>Para terminar, su descarga está <a href="http://wordpress.org/wordpress-2.6.zip">en el enlace</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2008/07/15/wordpress-26.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ProFTPd + MySQL en debian</title>
		<link>http://www.javivicente.com/2007/11/26/proftpd-mysql-en-debian.html</link>
		<comments>http://www.javivicente.com/2007/11/26/proftpd-mysql-en-debian.html#comments</comments>
		<pubDate>Mon, 26 Nov 2007 09:07:50 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2007/11/26/proftpd-mysql-en-debian.html</guid>
		<description><![CDATA[Antes de nada decir que finalmente conseguí hacer viable la autenticación MySQL para acceder a un servidor ProFTPD en debian 4.0, a pesar que luego dejé de utilizarlo por tema de permisos. El objetivo de todo esto es permitir acceder via ftp a un usuario virtual, es decir, sin estar dado de alta como usuario [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de nada decir que finalmente conseguí hacer viable la autenticación MySQL para acceder a un servidor ProFTPD en <strong>debian 4.0</strong>, a pesar que luego dejé de utilizarlo por <strong>tema de permisos</strong>. </p>
<p>El objetivo de todo esto es permitir acceder via ftp a un usuario virtual, es decir, sin estar dado de alta como usuario en la máquina y que, sin embargo, le sea transparente. <a href="http://www.howtoforge.com/proftpd_mysql_virtual_hosting">Un tutorial muy bueno</a> (inglés) me permitió conseguir lo que lograba, excepto un pequeño error al final cuando ya intentaba acceder desde el cliente ftp:</p>
<p><code>ie 421 Service not available, remote server has closed connection</code></p>
<p>El problema era que ProFTPD por defecto carga módulos de C tanto de MySQL como de Postgres, algo que <em>se da de tortas</em> y no funciona bien. La solución pasa simplemente por comentar la línea que hace la llamada al módulo Postgres (queremos que funcione con MySQL) en el archivo <code>/etc/proftpd/modules.conf</code>:</p>
<p><code>#LoadModule mod_sql_postgres.c</code></p>
<p>Una vez hecho esto, el servidor permitirá la autenticación siempre y cuando <strong>hayamos seguido el tutorial</strong>.</p>
<p>El problema de permisos que comentaba antes es muy simple. <strong>Todos los usuarios tienen el mismo permiso sobre los archivos</strong>, ya que eso se configura en el archivo <code>/etc/proftpd/proftpd.conf</code>. Esto puede llegar a ser un problema y es el inconveniente principal para que a mi, personalmente, no me sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2007/11/26/proftpd-mysql-en-debian.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google AdSense mobile</title>
		<link>http://www.javivicente.com/2007/09/21/google-adsense-mobile.html</link>
		<comments>http://www.javivicente.com/2007/09/21/google-adsense-mobile.html#comments</comments>
		<pubDate>Fri, 21 Sep 2007 16:38:41 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2007/09/21/google-adsense-mobile.html</guid>
		<description><![CDATA[Ya hace dos días que llevo viendo en la página de AdSense la posibilidad de crear bloques de anuncios para móviles, de igual manera que para páginas webs. No es que esté de acuerdo en tener publicidad en el móvil, y creo que no va a tener mucho éxito, pero por probar, que no quede. [...]]]></description>
			<content:encoded><![CDATA[<p>Ya hace dos días que llevo viendo en la página de AdSense la posibilidad de crear <strong>bloques de anuncios para móviles</strong>, de igual manera que para páginas webs. No es que esté de acuerdo en tener publicidad en el móvil, y creo que no va a tener mucho éxito, pero por probar, que no quede.</p>
<p>Hay una diferencia fundamental y es el lenguaje de programación que se utiliza. JavaScript no es soportado por WML, XHTML o CHTML, de manera que es necesario utilizar PHP, CGI/Perl, ASP o JSP en las páginas donde se colocarán los anuncios.</p>
<p>Hoy me ha dado por probarlo en un blog de prueba de <a href="http://www.blogdeblogs.com">Blog de Blogs</a> pero no debe de andar muy fina la aplicación o página a la que se llama mediante <code>require</code> en PHP puesto que da un error. Mi sorpresa es cuando accedo con el navegador del ordenador y al llamar al <a href="http://pagead2.googlesyndication.com/pagead/show_ads.php">fichero</a> desde la barra de direcciones, me da la opción de descargar el fichero en php.</p>
<p><span id="more-1620"></span>El código es: </p>
<blockquote><p>
&lt;?php</p>
<p>/**<br />
<br /> * Copyright (C) 2007 Google Inc.<br />
<br /> *<br />
<br /> * Licensed under the Apache License, Version 2.0 (the &#8220;License&#8221;);<br />
<br /> * you may not use this file except in compliance with the License.<br />
<br /> * You may obtain a copy of the License at<br />
<br /> *<br />
<br /> *     @license http://www.apache.org/licenses/LICENSE-2.0<br />
<br /> *<br />
<br /> * Unless required by applicable law or agreed to in writing, software<br />
<br /> * distributed under the License is distributed on an &#8220;AS IS&#8221; BASIS,<br />
<br /> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br />
<br /> * See the License for the specific language governing permissions and<br />
<br /> * limitations under the License.<br />
<br /> */</p>
<p>$google_dt = time();</p>
<p>function google_append_url(&#038;$url, $param, $value) {<br />
<br />  $url .= &#8220;&#038;&#8221; . $param . &#8220;=&#8221; . urlencode($value);<br />
<br />}</p>
<p>function google_append_globals(&#038;$url, $param) {<br />
<br />  google_append_url($url, $param, $GLOBALS["google"][$param]);<br />
<br />}</p>
<p>function google_append_color(&#038;$url, $param) {<br />
<br />  global $google_dt;</p>
<p>  $color_array = split(&#8220;,&#8221;, $GLOBALS["google"][$param]);<br />
<br />  google_append_url($url, $param,<br />
<br />                    $color_array[$google_dt % sizeof($color_array)]);<br />
<br />}</p>
<p>function google_get_ad_url() {<br />
<br />  $google_ad_url = &#8220;http://pagead2.googlesyndication.com/pagead/ads?&#8221;;<br />
<br />  $google_scheme = ($GLOBALS["google"]["https"] == &#8220;on&#8221;)<br />
<br />      ? &#8220;https://&#8221; : &#8220;http://&#8221;;<br />
<br />  foreach ($GLOBALS["google"] as $param => $value) {<br />
<br />    if ($param == &#8220;client&#8221;) {<br />
<br />      google_append_url($google_ad_url, $param,<br />
<br />                        &#8220;ca-mb-&#8221; . $GLOBALS["google"][$param]);<br />
<br />    } else if (strpos($param, &#8220;color_&#8221;) === 0) {<br />
<br />      google_append_color($google_ad_url, $param);<br />
<br />    } else if ((strpos($param, &#8220;host&#8221;) === 0)<br />
<br />               || (strpos($param, &#8220;url&#8221;) === 0)) {<br />
<br />      google_append_url($google_ad_url, $param,<br />
<br />                        $google_scheme . $GLOBALS["google"][$param]);<br />
<br />    } else {<br />
<br />      google_append_globals($google_ad_url, $param);<br />
<br />    }<br />
<br />  }<br />
<br />  google_append_url($google_ad_url, &#8220;dt&#8221;,<br />
<br />   		    round(1000 * array_sum(explode(&#8221; &#8220;, microtime()))));</p>
<p>  return $google_ad_url;<br />
<br />}</p>
<p>$google_ad_handle = fopen(google_get_ad_url(), &#8220;r&#8221;);<br />
<br />while (!feof($google_ad_handle)) {<br />
<br />  echo fread($google_ad_handle, 8192);<br />
<br />}<br />
<br />fclose($google_ad_handle);</p>
<p>?&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2007/09/21/google-adsense-mobile.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lanzada la beta 3 de WordPress 2.3</title>
		<link>http://www.javivicente.com/2007/09/11/lanzada-la-beta-3-de-wordpress-23.html</link>
		<comments>http://www.javivicente.com/2007/09/11/lanzada-la-beta-3-de-wordpress-23.html#comments</comments>
		<pubDate>Tue, 11 Sep 2007 07:55:04 +0000</pubDate>
		<dc:creator>Javi Vicente</dc:creator>
				<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.javivicente.com/2007/09/11/lanzada-la-beta-3-de-wordpress-23.html</guid>
		<description><![CDATA[Hoy ha sido el lanzamiento oficial de la última de las betas de WordPress 2.3 que saldrá de las versiones de prueba el próximo lunes. Como en cualquier versión, ésta última corrige los bugs encontrados en la beta 2 y sirve para detectar nuevos fallos antes de la versión final. Además, de forma paralela se [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy ha sido el <a href="http://wordpress.org/development/2007/09/wordpress-23-beta-3/">lanzamiento oficial</a> de la última de las betas de WordPress 2.3 que saldrá de las versiones de prueba el próximo lunes. Como en cualquier versión, ésta última corrige los bugs encontrados en la beta 2 y sirve para detectar nuevos fallos antes de la versión final.</p>
<p>Además, de forma paralela <a href="http://sigt.net/archivo/lanzado-wordpress-223.xhtml">se lanzó el sábado la versión WordPress 2.2.3</a>, que no hace más que corregir los fallos graves de seguridad y que recomiendan actualizar inmediatamente.</p>
<p>Como dice <a href="http://mangasverdes.es/2007/09/11/wordpress-23-beta-3/">Manuel Almeida</a>, ¿quién se atreve a actualizar estando la 2.3 a las puertas?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javivicente.com/2007/09/11/lanzada-la-beta-3-de-wordpress-23.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

