<?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>HiperGalaxia &#187; php</title>
	<atom:link href="http://www.hipergalaxia.org/blog/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hipergalaxia.org/blog</link>
	<description>El conocimiento, la frontera final.</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:52:47 +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>Mostrar en pantalla los errores producidos en PHP con Apache bajo Ubuntu</title>
		<link>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu</link>
		<comments>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu#comments</comments>
		<pubDate>Wed, 28 Dec 2011 05:44:49 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php.ini]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49833</guid>
		<description><![CDATA[Introducción Mientras que en producción mostrar al usuario final la información relacionada con el error producido es un riesgo de seguridad demasiado alto, durante el desarrollo del software es una condición necesaria para entender que está pasando con el código &#8230; <a href="http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>Mientras que en producción mostrar al usuario final la información relacionada con el error producido es un riesgo de seguridad demasiado alto, durante el desarrollo del software es una condición necesaria para entender que está pasando con el código que se está probando.</p><p>En la mayoría de despliegues de Apache/PHP vienen ahora con esta opción desactivada, redireccionando por defecto los mensajes de error al archivo de registro habitualmente ubicado en <span style="font-family: courier new,courier;">/var/log/apache2/error.log</span>.</p><h2>Procedimiento</h2><p>Es posible activar la opción de mostrar los errores de PHP en pantalla a tres diferentes niveles de acuerdo con el alcance que se le desee dar a este comportamiento.</p><p>A <strong>nivel global</strong>, esta modificación aplica a todo el servidor o sitios web publicados bajo esa configuración.</p><p><span style="font-family: courier new,courier;">$ sudo vi /etc/php5/apache2/php.ini</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">error_reporting = E_ALL </span><br /><span style="font-family: courier new,courier;">display_errors = On</span></p><p>A <strong>nivel de un directorio o una aplicación</strong>, esta modificación afecta a los <em>scripts</em> ubicados bajo un directorio específico.</p><p><span style="font-family: courier new,courier;">$ vi /var/html/un/directorio/especifico/.htaccess</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">&lt;IfModule mod_php5.c&gt;<br />    php_value error_reporting E_ALL </span><br /><span style="font-family: courier new,courier;">    php_value display_errors on</span><br /><span style="font-family: courier new,courier;">&lt;/IfModule&gt;</span></p><p>A <strong>nivel de una sección de código específico</strong>, esta modificación afecta sólo una parte de un <em>script</em>.</p><p><span style="font-family: courier new,courier;">$ vi /var/html/un/script.php</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">error_reporting(E_ALL);</span><br /><span style="font-family: courier new,courier;">ini_set('display_errors','On');</span></p><h2>Aclaración adicional</h2><p>Para que los ajustes de configuración de los últimos dos niveles sean tenidos en cuenta, el directorio donde del sitio web publicado deberá tener por lo menos activa la siguiente opción.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">AllowOverride Options</span></p><p>Esta se deberá modificar bajo <span style="font-family: courier new,courier;">/etc/apache2/mods-enabled/userdir.conf</span> para los sitios personales de los usuarios (<span style="font-family: courier new,courier;">public_html</span>) o <span style="font-family: courier new,courier;">/etc/apache2/sites-enabled/*</span> para los <em>virtualhosts</em> existentes.</p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problemas cargando sqlite.so en 20090626+lfs/sqlite.so</title>
		<link>http://blog.jorgeivanmeza.com/2011/12/problemas-cargando-sqlite-so-en-20090626lfssqlite-so/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problemas-cargando-sqlite-so-en-20090626lfssqlite-so</link>
		<comments>http://blog.jorgeivanmeza.com/2011/12/problemas-cargando-sqlite-so-en-20090626lfssqlite-so/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problemas-cargando-sqlite-so-en-20090626lfssqlite-so#comments</comments>
		<pubDate>Sun, 18 Dec 2011 03:36:35 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Sqlite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49739</guid>
		<description><![CDATA[Introducción Instalando Apache+PHP+MySQL en mi equipo con GNU/Linux Mint 12 encuentro el siguiente problema después de instalar el soporte para SQLite (php5-sqlite). PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/sqlite.so' &#8211; /usr/lib/php5/20090626+lfs/sqlite.so: cannot open shared object file: No &#8230; <a href="http://blog.jorgeivanmeza.com/2011/12/problemas-cargando-sqlite-so-en-20090626lfssqlite-so/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>Instalando Apache+PHP+MySQL en mi equipo con GNU/Linux Mint 12 encuentro el siguiente problema después de instalar el soporte para SQLite (<span style="font-family: courier new,courier;">php5-sqlite</span>).</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/sqlite.so' &#8211; /usr/lib/php5/20090626+lfs/sqlite.so: cannot open shared object file: No such file or directory in Unknown on line 0</span></p><h2>La situación</h2><p>Aparentemente <a href="https://bugs.launchpad.net/ubuntu/+source/sqlite/+bug/747325" >el uso de SQLite versión 2 ha sido desestimado</a> en pos del uso exclusivo de la versión 3, sin embargo extrañamente la configuración por defecto de PHP sigue intentando cargar su librería.</p><h2>La solución</h2><p>Remover la configuración de SQLite2 de PHP y utilizar la versión 3 únicamente.</p><p><span style="font-family: courier new,courier;">$ sudo mv /etc/php5/conf.d/sqlite.ini /etc/php5/conf.d/sqlite.ini.old</span></p><p>Una vez evitado que este archivo de configuración sea tenido en cuenta el funcionamiento de PHP vuelve a la normalidad.</p><p><span style="font-family: courier new,courier;">$ php -v</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">PHP 5.3.6-13ubuntu3.3 with Suhosin-Patch (cli) (built: Dec 13 2011 18:37:10) </span><br /><span style="font-family: courier new,courier;">Copyright (c) 1997-2011 The PHP Group</span><br /><span style="font-family: courier new,courier;">Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies</span><br /><span style="font-family: courier new,courier;">    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH</span></p><h2>Enlaces</h2><ul><li>PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/sqlite.so' en Ubuntu Launchpad<br /><a href="https://bugs.launchpad.net/ubuntu/+source/php5/+bug/875262" >https://bugs.launchpad.net/ubuntu/+source/php5/+bug/875262</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/12/problemas-cargando-sqlite-so-en-20090626lfssqlite-so/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convirtiendo la documentación de FuelPHP a un único documento</title>
		<link>http://blog.jorgeivanmeza.com/2011/07/convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento</link>
		<comments>http://blog.jorgeivanmeza.com/2011/07/convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento#comments</comments>
		<pubDate>Fri, 22 Jul 2011 01:20:11 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[FuelPHP]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=36228</guid>
		<description><![CDATA[Introducción. FuelPHP es un framework para el desarrollo de aplicaciones que a pesar de su muy reciente aparición es muy interesante y prometedor para el entorno del desarrollo de aplicaciones web con software libre.  Este framework es similar a Codeigniter o Kohana en términos de su simplicidad, sin embargo no se basa directamente en ninguno [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/fuelphp-logo2.jpeg"><img class="alignleft size-full wp-image-36231" title="fuelphp-logo2" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/fuelphp-logo2.jpeg" alt="" width="92" height="92" /></a><a href="http://fuelphp.com/" >FuelPHP</a> es un <em>framework</em> para el desarrollo de aplicaciones que a pesar de su muy reciente aparición es muy interesante y prometedor para el entorno del desarrollo de aplicaciones web con software libre.  Este <em>framework</em> es similar a <a href="http://codeigniter.com/" >Codeigniter</a> o <a href="http://kohanaframework.org/" >Kohana</a> en términos de su simplicidad, sin embargo no se basa directamente en ninguno de ellos sino que por el contario, toma los conceptos e ideas de diseño exitosas de los principales <em>frameworks</em> y los integra en una única base para la implementación de aplicaciones web.</p><p>Teniendo una relativa corta edad, su desarrollo ha sido veloz y su versión 1.0 se encuentra muy <a href="https://twitter.com/#!/fuelphp/status/93485493358051328" >próxima a publicarse</a>.  La <a href="http://fuelphp.com/docs/" >documentación</a> también ha evolucionado rápidamente y se encuentra en contínua actualización.  Esta se presenta por secciones que se pueden revisar directamente siendo esto muy apropiado para las consultas rápidas de la misma sin embargo -en mi opinión personal- no es tan útil cuando se está aprendiendo del <em>framework</em> por primera vez ya que no es posible realizar una revisión o búsqueda líneal de los temas ni mucho menos imprimirlos.</p><p>Dado lo prometedor del <em>framework</em> decidí tomarme un par de minutos para desarrollar una solución que me permitiera consolidar fácilmente la documentación en un único documento para poder imprimirlo y estudiar de él.  Terminé con una pequeña herramienta basada en Javascript con jQuery que realizar esta tarea.  Debido a las limitaciones de seguridad impuestas por los navegadores es necesario que se descargue en un servidor web local la documentación para que pueda ser procesada por esta herramienta.</p><p>Debe tenerse en cuenta que los documentos generados o impresos no recibirán las contínuas actualizaciones que si recibe la versión en línea, por este motivo prefiero no distribuír el documento completo con la versión del día sino compartir el método para que pueda ser creado frecuentemente.</p><h2>Instalación.</h2><p>Crear una carpeta en el árbol de directorios (<span style="font-family: courier new,courier;">DOCUMENT_ROOT</span>) públicos del servidor de páginas.</p><p>Descomprimir la <a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/FuelPHPOneDoc_0.1.tar.gz">distribución de la herramienta</a> en el directorio web.</p><p><a href="http://fuelphp.com/" >Descargar</a> la distribución actual de FuelPHP y descomprimirla en el directorio web al mismo nivel de la herramienta. </p><p>Los archivos contenidos en la carpeta de mas alto nivel serán similares a los mostrados a continuación en la cual se utilizó la versión 1.0-RC3 del <em>framework</em>.</p><p><div id="attachment_36232" class="wp-caption aligncenter" style="width: 466px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/Selection_0011.png"><img class="size-full wp-image-36232" title="Selection_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/Selection_0011.png" alt="Contenidos de la carpeta web" width="456" height="142" /></a><p class="wp-caption-text">Contenidos de la carpeta web</p></div></p><p>&nbsp;</p><h2>Configuración.</h2><p>El único paso necesario para configurar la herramienta consiste en editar el archivo <span style="font-family: courier new,courier;">FuelPHPOneDoc/FuelPHPOneDoc.js</span> y modificar apropiadamente el valor de la variable <span style="font-family: courier new,courier;">baseUrl</span> la cual deberá contener la dirección absoluta en la cual se publicó localmente la documentación de FuelPHP.  De esta manera en el ejemplo anterior, si la carpeta pública web corresponde con la dirección <span style="font-family: courier new,courier;">http://localhost/onedoc/</span> entonces el valor de <span style="font-family: courier new,courier;">baseUrl</span> será <span style="font-family: courier new,courier;"><strong>http://localhost/onedoc/</strong>v1.0-rc3/docs/</span>.</p><h2>Ejecución.</h2><p>Acceder al URL de la herramienta utilizando un navegador web.  En el caso del ejemplo anterior sería a la dirección <span style="font-family: courier new,courier;">http://localhost/onedoc/FuelPHPOneDoc/FuelPHPOneDoc.html</span>.</p><p><div id="attachment_36233" class="wp-caption aligncenter" style="width: 818px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/FuelPHP-Framework-Documentation-Mozilla-Firefox_002.png"><img class="size-large wp-image-36233" title="FuelPHP Framework Documentation! - Mozilla Firefox_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/07/FuelPHP-Framework-Documentation-Mozilla-Firefox_002-1024x621.png" alt="Documentación de FuelPHP en un unico documento" width="808" height="490" /></a><p class="wp-caption-text">Documentación de FuelPHP en un unico documento</p></div></p><p>&nbsp;</p><h2>Requerimiento: servidor de páginas web.</h2><p>Por la razón que se mencionó anteriormente, es necesario contar con un servidor de páginas web para publicar tanto el contenido de la documentación original de FuelPHP como la herramienta para modificar su presentación.</p><p>En caso de no contarse con un servidor de páginas instalado, este podrá obtenerse de diferentes maneras: <a href="http://httpd.apache.org/" >Apache</a> (todas las plataformas), Internet Information Service (sólo Windows), <a href="http://www.apachefriends.org/es/xampp.html" >XAMPP</a> (todas las plataformas) y <a href="http://nginx.org/" >nginx</a> (todas las plataformas) entre muchos otros.</p><p>Si no se cuenta con ninguno de estos servidores de páginas web pero se cuenta con soporte para el lenguaje <a href="http://python.org/" >Python</a>, es posible utilizar temporalmente el servidor web de desarrollo que incluye este lenguaje.  Para utilizarlo será necesario abrir una terminal y ubicarse en el directorio que se convertirá en público a través de web e invocar la aplicación.</p><p><span style="font-family: courier new,courier;">$ cd /home/jimezam/tmp/FuelPHP</span></p><p>Si cuenta con soporte para Python 2.x:</p><p><span style="font-family: courier new,courier;">$ python -m SimpleHTTPServer</span></p><p>En cambio, si se cuenta con soporte para Python 3.x, la instrucción a ejecutar será la siguiente.</p><p><span style="font-family: courier new,courier;">$ python -m http.server 8000</span></p><p>En ambos casos el puerto que se utilizará para lanzar el nuevo servidor web será el <span style="font-family: courier new,courier;">8000</span> así que este tendrá que ser tenido en cuenta durante la determinación del respectivo URL.  En este caso, el URL que deberá ser consultado será <span style="font-family: courier new,courier;">http://localhost:8000/FuelPHPOneDoc/FuelPHPOneDoc.html</span>.</p><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2011/07/convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2011/07/convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/07/convirtiendo-la-documentacion-de-fuelphp-a-un-unico-documento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evitando el reemplazo de los guiones y comillas dobles en WordPress</title>
		<link>http://blog.jorgeivanmeza.com/2011/06/evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress</link>
		<comments>http://blog.jorgeivanmeza.com/2011/06/evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress#comments</comments>
		<pubDate>Sat, 04 Jun 2011 06:07:39 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=18701</guid>
		<description><![CDATA[Introducción. WordPress tiene una característica que consiste en reemplazar ciertos carácteres o cadenas en sus correspondencias mas bonitas, por ejemplo reemplaza los guiones dobles por un único guión mas largo que el normal.  Esto lo hace para embellecer los textos que se publican. Este loable objetivo puede ser interesante en la mayoría de los casos [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p><a href="http://wordpress.org/" >WordPress</a> tiene una característica que consiste en reemplazar ciertos carácteres o cadenas en sus correspondencias mas bonitas, por ejemplo reemplaza los guiones dobles por un único guión mas largo que el normal.  Esto lo hace para <em>embellecer</em> los textos que se publican.</p><p>Este loable objetivo puede ser interesante en la mayoría de los casos pero es un total infortunio para quienes publicamos código fuente o textos para ejecutarse en la línea de comando los cuales deberán transcribirse de manera fiel o simplemente fallarán debido a que cualquier variación como las propuestas les harán perder su validez sintáctica.</p><p>Hace un tiempo encontré como solución <a href="http://blog.jorgeivanmeza.com/2009/12/evitando-el-reemplazo-de-los-guiones-dobles-en-wordpress-2-9/" >modificar las líneas exactas en las cuales WordPress realiza esta inoportuna conversión</a>, sin embargo estas líneas pertenecen a un archivo del núcleo de WordPress y desafortunadamente es sobreescrito durante las actualizaciones de WordPress y por ende las modificaciones se pierden con la misma regularidad.</p><p>Para solventar esto he encontrado una solución similar que se basa en la <em>adaptación</em> de un <em>plugin</em> ya existente, así que las modificaciones perdurarán a las actualizaciones de WordPress y sólo deberán repetirse ante una posible actualización del <em>plugin</em>, las cuales por supuesto suceden con una frecuencia mucho menor.</p><h2>Procedimiento.</h2><p>Instalar y activar el <em>plugin</em> de WordPress llamado <a href="http://wordpress.org/extend/plugins/wpuntexturize/" >untexturize</a>.</p><p>Editar el contenido del archivo <span style="font-family: 'courier new', courier;">wpuntexturize.php</span>.  Por facilidad se recomienda utilizar el mismo editor de <em>Plugins</em> que provee WordPress.</p><p>Identificar el código fuente de la función <span style="font-family: 'courier new', courier;">c2c_wpuntexturize</span> y modificar su contenido de la siguiente manera.</p><pre class="php">$char_codes = array( '&amp;#8216;', '&amp;#8217;', '&amp;#8220;', '&amp;#8221;', '&amp;#8242;', '&amp;#8243;',
                     '&amp;#8212;', ' &amp;#8212; ', '&amp;#8211;', ' &amp;#8211; ', 'xn--');   // nuevo.
$replacements = array( "'", "'", '"', '"', "'", '"',
                       '---', ' -- ', '--', ' - ', 'xn&amp;#8211;');    // nuevo.
return str_replace( $char_codes, $replacements, $text );</pre><p>Si se nota, las líneas marcadas con el comentario <span style="font-family: 'courier new', courier;">nuevo</span> han sido agregadas con respecto al código fuente original del <em>plugin</em>, estas líneas corresponden con la información de los reemplazos de los guíones facultando al <em>plugin</em> a regresarlos a su presentación original mas allá de sólo las comillas dobles las cuales son la funcionalidad propia del complemento.</p><p>A partir del momento en que se realicen estas modificaciones, las entradas del blog mostrarán correctamente las comillas y guíones dobles en sus textos.</p><h2>Enlaces.</h2><ul><li>Plugin de WordPress <span style="font-family: 'courier new', courier;">wpuntexturize</span>.<br /> <a href="http://coffee2code.com/wp-plugins/wpuntexturize/" >http://coffee2code.com/wp-plugins/wpuntexturize/ </a></li></ul><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2011/06/evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2011/06/evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/06/evitando-el-reemplazo-de-los-guiones-y-comillas-dobles-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aplicación para el 6CCC: nuevo estilo para la programación</title>
		<link>http://blog.jorgeivanmeza.com/2011/05/aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion</link>
		<comments>http://blog.jorgeivanmeza.com/2011/05/aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion#comments</comments>
		<pubDate>Sat, 14 May 2011 03:05:24 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scraping]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=16145</guid>
		<description><![CDATA[Introducción. Esta es una aplicación muy sencilla que se desarrolló en PHP para el sexto Congreso Colombiano de Computación.  Todo comenzó cuando no me resultó cómoda la manera como el sitio web desplegaba la programación del evento: por bloques de auditorios siendo las filas conferencias y las columnas los días de las mismas. Este estilo [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p>Esta es una aplicación muy sencilla que se desarrolló en PHP para el <a href="http://www.6ccc.org/" >sexto Congreso Colombiano de Computación</a>.  Todo comenzó cuando no me resultó cómoda la manera como el sitio web desplegaba la programación del evento: por bloques de auditorios siendo las filas conferencias y las columnas los días de las mismas.</p><div id="attachment_16146" class="wp-caption aligncenter" style="width: 727px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_007.png"><img class="size-large wp-image-16146  " title="Selection_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_007-1024x502.png" alt="Programación del 6CCC (versión original)" width="717" height="351" /></a><p class="wp-caption-text">Programación del 6CCC (versión original)</p></div><p>Este estilo de presentación no es conveniente ya que no me permite visualizar fácilmente que conferencias se están realizando en un momento dado para poder decidir a cual de ellas asisto, es decir, el estilo idóneo de presentación de las conferencias debería ser en el que cada bloque representa un día del evento, cada fila un rango de tiempo específico y cada columna un auditorio donde se estén realizando las conferencias.  De esta manera, una vez ubicado el rango de tiempo que se desea consultar sólo será necesario revisar las columnas para determinar las conferencias a las que se puede asistir.</p><p>Ya que manipular manualmente esta información  para poder determinar cuales eran las conferencias que quería ver era demasiado engorroso decidi implementar una solución computacional muy simple.  Inicialmente la iba a desarrollar en Javascript por completo manipulando el árbol DOM pero me dí cuenta que podría serle de utilidad a otras personas también y preferí no sobrecargar al navegador del cliente con las operaciones de transformación del contenido del programa.  El resultado final fue el siguiente.</p><p style="text-align: center;">&nbsp;</p><div id="attachment_16148" class="wp-caption aligncenter" style="width: 475px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_008.png"><img class="size-full wp-image-16148 " title="Selection_008" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_008.png" alt="Programación del 6CCC (versión mejorada)" width="465" height="395" /></a><p class="wp-caption-text">Programación del 6CCC (versión mejorada)</p></div><h2>El prototipo.</h2><p>Las premisas eran las siguientes.</p><ul><li>No sobrecargar al cliente con cálculos en Javascript para facilitar la consulta desde móviles.</li><li>No requerir que se ingrese la información de la programación nuevamente, se debería tomar de la programación existente directamente.</li><li>Actualizarse automáticamente a la par de la programación original (esta última debería respetar su estructura HTML).</li><li>Facilitar la lectura de la información.</li><li>Facilitar la consulta de las conferencias presentándose en un momento específico del día y cuales se están presentando en este mismo momento.</li><li>Permitir la personalización de la presentación (esto se obtuvo mediante la implementación de una vista independiente de la lógica de procesamiento y de clases CSS).</li></ul><p>El prototipo se implementó en PHP sin ningún tipo de <em>framework</em> especializado y utilizando la técnica de <em><a href="http://en.wikipedia.org/wiki/Web_scraping" >web scraping</a></em> para obtener directamente la información de la página web original de la programación, de ahí que fuera necesario que esta respetara su estructura HTML durante las actualizaciones.  Para esto se utilizó la librería <a href="http://code.google.com/p/phpquery/" >phpQuery</a> la cual permite entre otras cosas obtener secciones de código HTML mediante rutas de selectores CSS de manera <em>similar</em> a jQuery.</p><h2>Conclusiones.</h2><ul><li>El uso de phpQuery para las necesidades del prototipo no fue tan simple ni intuitivo como lo es el uso de jQuery, sin embargo una vez entendida su implementación, permitió desarrollar la funcionalidad necesaria.</li><li>La programación original contaba con múltiples inconsistencias: diferentes formatos de fecha, la presencia de un día adicional en la programación general, la presencia de las temáticas generales de los bloques de conferencias en el mismo contenido de las conferencias, conferencias sin hora específica y, filas y columnas vacías para generar espacios en las tablas.  Por este motivo el prototipo incluye varias validaciones para solventar estos problemas que dificultan la adquisición de la información.</li><li>El prototipo toma la fecha y hora del sistema para determinar las conferencias que se están presentando actualmente (tanto para resaltarlas en el listado como para mostrarlas al inicio de la programación).  No se tuvieron en cuenta diferencias en la zona horaria.</li><li>El prototipo no pudo ser incluído en el sitio web del congreso ya que fue desarrollado utilizando PHP 5.3 (utiliza una función anónima en PHP) mientras que el <em>hosting </em>utilizado por la página era 5.2 y no se contaba con la información necesaria para <a href="http://blog.jorgeivanmeza.com/2008/03/funciones-anonimas-en-php/" >convertir la sintáxis de la función anónima al estilo antiguo</a>.</li><li>El código fuente del prototipo fue liberado bajo la licencia <a href="http://creativecommons.org/licenses/by/3.0/" >Creative Commons Attribution 3.0</a>.</li></ul><h2>Enlaces.</h2><ul><li>Demostración del prototipo, versión 0.1.<br /> <a href="http://demo.jorgeivanmeza.com/PHP/6CCCProg/0.1/" >http://demo.jorgeivanmeza.com/PHP/6CCCProg/0.1/</a></li><li>Obtener el código fuente del prototipo.<br /> <a href="http://demo.jorgeivanmeza.com/PHP/6CCCProg/" >http://demo.jorgeivanmeza.com/PHP/6CCCProg/</a></li><li>Librería phpQuery.<br /> <a href="http://code.google.com/p/phpquery/" >http://code.google.com/p/phpquery/</a></li><li>Sexto Congreso Colombiano de Computación (6CCC).<br /> <a href="http://www.6ccc.org/" >http://www.6ccc.org/</a></li></ul><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2011/05/aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2011/05/aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/05/aplicacion-para-el-6ccc-nuevo-estilo-para-la-programacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Give Me a Tweet, versión 1.0</title>
		<link>http://blog.jorgeivanmeza.com/2011/04/give-me-a-tweet-version-1-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=give-me-a-tweet-version-1-0</link>
		<comments>http://blog.jorgeivanmeza.com/2011/04/give-me-a-tweet-version-1-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=give-me-a-tweet-version-1-0#comments</comments>
		<pubDate>Sat, 23 Apr 2011 23:32:54 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[qrcode]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Sqlite]]></category>
		<category><![CDATA[traducción]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[urlshortener]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=15575</guid>
		<description><![CDATA[Introducción. Preparé el prototipo de esta aplicación web muy simple para experimentar con algunas librerías que tenía por revisar, que a pesar de ser muy sencillas de utilizar es bueno ir conociendo para determinar mas adelante cual de todas las disponibles es la idónea. Esta es de manera resumida la funcionalidad del prototipo. Obtiene cierta [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/blue_bird-mirror.png"><img class="alignleft size-thumbnail wp-image-15576" title="blue_bird-mirror" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/blue_bird-mirror-150x150.png" alt="" width="90" height="90" /></a>Preparé el prototipo de esta aplicación web muy simple para experimentar con algunas librerías que tenía por revisar, que a pesar de ser muy sencillas de utilizar es bueno ir conociendo para determinar mas adelante cual de todas las disponibles es la idónea.</p><p>Esta es de manera resumida la funcionalidad del prototipo.</p><ul><li>Obtiene cierta cantidad de tweets de ciertos usuarios predefinidos.</li><li>Los tweets son alamcenados en caché por una cantidad específica de tiempo.</li><li>El acceso a la página no requiere de ningún tipo de autenticación por parte del usuario.</li><li>Cuando el usuario accede al sitio web, el sistema elige un tweet azar y lo muestra.</li><li>La elección del tweet se realiza sobre los almacenados en el caché.  Si no hay caché o este es demasiado viejo, entonces se renueva automáticamente.</li><li>Los mensajes que no se encuentran escritos en español son traducidos automáticamente a este idioma.</li><li>Se prepara un enlace corto a la información del tweet.</li><li>Se presenta un QRCode con el enlace corto al tweet para ser fácilmente consultado por dispositivos móviles.</li></ul><h2>Herramientas.</h2><p>Estas fueron las herramientas utilizadas durante el desarrollo del prototipo.</p><ol><li>Netbeans (IDE).</li><li>SQLite (persistencia del caché).</li><li>Blueprint CSS Framework (<em>framework</em> para la presentación).</li><li>PHP (lenguaje de programación).</li><li>Yii PHP Framework (<em>framework</em> de desarrollo web).</li><li>Extensión de CURL para Yii (acceder al servicio REST fácilmente).</li><li>API REST de Twitter (obtener los mensajes).</li><li>Google Translate Service (servicio de traducción de textos).</li><li>jquery-qrcode para la generación de los códigos QR.</li><li>jquery-urlshortener que utiliza el servicio de bit.ly (acortador de URLs).</li></ol><h2>Prototipo.</h2><p style="text-align: center;">&nbsp;</p><div id="attachment_15578" class="wp-caption aligncenter" style="width: 585px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/Selection_002.png"><img class="size-full wp-image-15578  " title="Selection_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/Selection_002.png" alt="Prototipo de Give Me a Tweet" width="575" height="456" /></a><p class="wp-caption-text">Prototipo de Give Me a Tweet</p></div><h2>Instalación.</h2><p>El código fuente del protitpo puede obtenerse desde la siguiente ubicación.</p><p style="padding-left: 30px;"><a href="https://github.com/jimezam/Give-Me-a-Tweet/tree/v1.0" >https://github.com/jimezam/Give-Me-a-Tweet/tree/v1.0</a></p><p>Para la ejecución de la aplicación web se requiere que se cuente además de la infraestructura web, con PHP con soporte para SQLite y CURL, y la distribución del Yii PHP Framework (1.1.7 o similar) en una ubicación conocida.</p><p>Finalmente se deberán modificar los siguientes archivos para ajustarlos a la infraestructura local.</p><p><span style="font-family: 'courier new', courier;">index.php:</span></p><p style="padding-left: 30px;"><span style="font-family: 'courier new', courier;">$yii=dirname(__FILE__).&#8217;<strong>/../../yii-1.1.7.r3135</strong>/framework/yii.php&#8217;;</span><br /> <span style="font-family: 'courier new', courier;">$config=dirname(__FILE__).&#8217;/protected/config/main.php&#8217;;</span></p><p>Ajustar estas rutas a la ubicación real del <em>framework</em>.</p><p><span style="font-family: 'courier new', courier;">protected/views/tweet/show.php:</span></p><p style="padding-left: 30px;"><span style="font-family: 'courier new', courier;">$.shortenUrl.settings.login  = &#8216;<strong>USUARIO</strong>&#8216;; </span><br /> <span style="font-family: 'courier new', courier;">$.shortenUrl.settings.apiKey = &#8216;<strong>LLAVE DEL API</strong>&#8216;;</span></p><p>Modificar estos valores para que correspondan con la información del propietario del servicio.  Esta información se puede obtener de manera gratuita en el <a href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation#Authentication_and_Shared_Parameters" >sitio web de <em>bit.ly</em> para desarrolladores</a>.</p><p><span style="font-size: 20px; font-weight: bold;">Enlaces.</span></p><ul><li>Netbeans.<br /> <a href="http://netbeans.org/">http://netbeans.org/</a></li><li><a href="http://netbeans.org/"></a>SQLite.<br /> <a href="http://sqlite.org/">http://sqlite.org/</a></li><li>jQuery.<br /> <a href="http://jquery.org/">http://jquery.org/</a></li><li>Blueprint CSS Framework.<br /> <a href="http://www.blueprintcss.org/">http://www.blueprintcss.org/</a></li><li><a href="http://sqlite.org/"></a>PHP.<br /> <a href="http://php.net/">http://php.net/</a></li><li><a href="http://php.net/"></a>Yii PHP Framework.<br /> <a href="http://www.yiiframework.com/">http://www.yiiframework.com/</a></li><li><a href="http://www.yiiframework.com/"></a> Extensión CURL para Yii.<br /> <a href="http://www.yiiframework.com/extension/curl/">http://www.yiiframework.com/extension/curl/</a></li><li><a href="http://www.yiiframework.com/extension/curl/"></a>Introduction to developing with @twitterapi.<br /> <a href="http://dev.twitter.com/pages/intro-to-twitterapi">http://dev.twitter.com/pages/intro-to-twitterapi</a></li><li><a href="http://dev.twitter.com/pages/intro-to-twitterapi"></a>Twitter, get statuses and user timeline.<br /> <a href="http://dev.twitter.com/doc/get/statuses/user_timeline">http://dev.twitter.com/doc/get/statuses/user_timeline</a></li><li><a href="http://dev.twitter.com/doc/get/statuses/user_timeline"></a>Plugin<span style="font-family: 'courier new', courier;"> jquery.qrcode.js</span>.<br /> <a href="http://jeromeetienne.github.com/jquery-qrcode/">http://jeromeetienne.github.com/jquery-qrcode/</a></li><li>Plugin <span style="font-family: 'courier new', courier;">jquery-urlshortener</span>.<br /> <a href="https://bitbucket.org/jiaaro/jquery-urlshortener/wiki/Home" > https://bitbucket.org/jiaaro/jquery-urlshortener/wiki/Home</a></li></ul><p class='fb-like'><iframe src='http://www.facebook.com/plugins/like.php?href=http://blog.jorgeivanmeza.com/2011/04/give-me-a-tweet-version-1-0/&amp;layout=box_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=65&amp;font=lucida+grande' scrolling='no' frameborder='0' allowTransparency='true' style='border:none; overflow:hidden; width:450px; height:65px'></iframe></p><fb:share -button href="http://blog.jorgeivanmeza.com/2011/04/give-me-a-tweet-version-1-0/" type="box_count"></fb:share>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/04/give-me-a-tweet-version-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Degradar PHP 5.3 a 5.2 en GNU/Linux Ubuntu 10.10</title>
		<link>http://blog.jorgeivanmeza.com/2010/11/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-10</link>
		<comments>http://blog.jorgeivanmeza.com/2010/11/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-10#comments</comments>
		<pubDate>Wed, 03 Nov 2010 22:34:27 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[10.10]]></category>
		<category><![CDATA[5.2]]></category>
		<category><![CDATA[5.3]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[downgrade]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=11421</guid>
		<description><![CDATA[Para degradar PHP 5.3 a la versión 5.2 en GNU/Linux Ubuntu 10.10 se debe realizar el mismo procedimiento que se mencionó antes con la versión 10.04 del sistema operativo pero con una modificación del script utilizado. Es necesario reemplazar el nombre de la versión Lucid Lynx de Ubuntu por la actual Maverick Meerkat en la [...]]]></description>
			<content:encoded><![CDATA[<p>Para degradar PHP 5.3 a la versión 5.2 en GNU/Linux Ubuntu 10.10 se debe realizar el mismo procedimiento que se mencionó <a href="http://blog.jorgeivanmeza.com/2010/07/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04/" >antes con la versión 10.04</a> del sistema operativo pero con una modificación del <em>script</em> utilizado.</p><p>Es necesario reemplazar el nombre de la versión <em>Lucid Lynx</em> de Ubuntu por la actual <em>Maverick Meerkat</em> en la siguiente línea.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">grep &#8216;main restricted&#8217; /etc/apt/sources.list|grep -v &#8220;#&#8221;| sed s/<strong>lucid</strong>/karmic/g | sudo tee /etc/apt/sources.list.d/karmic.list &gt; /dev/null</span></p><p>De esta manera.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">grep &#8216;main restricted&#8217; /etc/apt/sources.list|grep -v &#8220;#&#8221;| sed s/<strong>maverick</strong>/karmic/g | sudo tee /etc/apt/sources.list.d/karmic.list &gt; /dev/null</span></p><p>Descargue el <a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/11/downgradePHP.txt" ><em>script</em> modificado</a> y continúe con las instrucciones mencionadas en el <a href="http://blog.jorgeivanmeza.com/2010/07/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04/" >artículo anterior</a>.</p><p>Si desea instalar el módulo de Apache correspondiente ejecute el siguiente comando y <span style="text-decoration: underline;">no acepte</span> la versión 5.3 para que sea instalada la anterior.</p><p><span style="font-family: courier new,courier;">$ sudo aptitude install libapache2-mod-php5</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">The following NEW packages will be installed:<br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">libapache2-mod-php5{b}<br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">0 packages upgraded, 1 newly installed, 0 to remove and 20 not upgraded.<br /> Need to get 0B/3,105kB of archives. After unpacking 8,704kB will be used.<br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">The following packages have unmet dependencies:<br /> libapache2-mod-php5: Depends: php5-common (= <strong>5.3.3-1ubuntu9.1</strong>) but 5.2.10.dfsg.1-2ubuntu6.5 is installed and it is kept back.<br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;"> The following actions will resolve these dependencies:</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Keep the following packages at their current version:<br /> 1)     libapache2-mod-php5 [Not Installed]</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Accept this solution? [Y/n/q/?] <span style="color: #ff0000;"><strong>n</strong></span><br /> The following actions will resolve these dependencies:</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Install the following packages:<br /> 1)     libapache2-mod-php5 [<strong>5.2.10.dfsg.1-2ubuntu6.5</strong> (karmic-security, karmic-updates)]</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Accept this solution? [Y/n/q/?] <span style="color: #ff0000;"><strong>y</strong></span><br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;"> The following NEW packages will be installed:<br /> libapache2-mod-php5<br /> </span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">0 packages upgraded, 1 newly installed, 0 to remove and 20 not upgraded.<br /> Need to get 2,643kB of archives. After unpacking 6,189kB will be used.<br /> Do you want to continue? [Y/n/?] <strong><span style="color: #ff0000;">y</span></strong></span></p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/11/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar Nginx y PHP en GNU/Linux Ubuntu 10.04</title>
		<link>http://blog.jorgeivanmeza.com/2010/10/instalar-nginx-y-php-en-gnulinux-ubuntu-10-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-nginx-y-php-en-gnulinux-ubuntu-10-04</link>
		<comments>http://blog.jorgeivanmeza.com/2010/10/instalar-nginx-y-php-en-gnulinux-ubuntu-10-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-nginx-y-php-en-gnulinux-ubuntu-10-04#comments</comments>
		<pubDate>Mon, 04 Oct 2010 23:13:25 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Servidor web]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9930</guid>
		<description><![CDATA[Introducción. Desde hace un tiempo había decidido probar otros servidores de páginas diferentes de Apache en busca de uno que consumiera menos recursos, especialmente para la etapa de desarrollo.  Después de una revisión a la oferta de servidores web y a los comentarios encontrados en los foros los mas opcionados son: Nginx, Cherokee y Lighttpd.  [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>Desde hace un tiempo había decidido probar otros servidores de páginas diferentes de Apache en busca de uno que consumiera menos recursos, especialmente para la etapa de desarrollo.  Después de una revisión a la oferta de servidores web y a los comentarios encontrados en los foros los mas opcionados son: <a href="http://nginx.org/" >Nginx</a>, <a href="http://www.cherokee-project.com/" >Cherokee</a> y <a href="http://www.lighttpd.net/" >Lighttpd</a>.  En esta ocasión estoy probando al primero de ellos.</p>
<h2>Instalar los paquetes necesarios.</h2>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install php5-cgi php5-cli php5-common php5-curl php5-gd php5-json php5-mcrypt php5-sqlite php5-mysql</span></p>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install spawn-fcgi</span></p>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install nginx</span></p>
<h2>Crear un directorio para el <em>virtualhost</em>.</h2>
<p>En este caso se va a utilizar el sitio web por defecto (<span style="font-family: courier new,courier;">default</span>) y se va a ubicar en <span style="font-family: courier new,courier;">/home/www/public</span>, los <em>virtualhosts</em> adicionales se crean siguiendo los mismos pasos.</p>
<p><span style="font-family: courier new,courier;">$ sudo mkdir -p /home/www/public</span></p>
<p><span style="font-family: courier new,courier;">$ sudo mkdir /home/www/logs</span></p>
<p><span style="font-family: courier new,courier;">$ sudo chown -R www-data:www-data /home/www</span></p>
<p>Establecer la configuración del virtualhost.</p>
<p><span style="font-family: courier new,courier;">$ sudo vi /etc/nginx/sites-available/default</span></p>
<pre>server {
    listen       80 default;
    server_name  localhost;
    access_log   /home/www/logs/localhost.access.log;
    location / {
        root   /home/www/public;
        index  index.html index.htm;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /home/www/public$fastcgi_script_name;
        include fastcgi_params;
    }
}</pre>
<p>Tenga en cuenta que las rutas asignadas a las variables <span style="font-family: courier new,courier;">access_log</span>, <span style="font-family: courier new,courier;">root</span> y <span style="font-family: courier new,courier;">fastcgi_param</span> se relacionan con los directorios creados en el paso anterior.</p>
<h2>Activar el <em>virtualhost</em>.</h2>
<p>En este caso se utiliza el sitio por defecto, sin embargo pueden crearse nuevos simplemente utilizando un nombre diferente para el enlace.</p>
<p><span style="font-family: courier new,courier;">$ sudo /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default</span></p>
<h2>Crear un recubrimiento para <span style="font-family: courier new,courier;">spawn-fcgi</span>.</h2>
<p><span style="font-family: courier new,courier;">$ sudo vi /etc/init.d/php-fastcgi</span></p>
<pre>#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=5 #15
PHP_FCGI_MAX_REQUESTS=1000
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
      echo -n "Starting PHP FastCGI: "
      start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}
stop() {
      echo -n "Stopping PHP FastCGI: "
      killall -q -w -u $USER $PHP_CGI
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}
case "$1" in
    start)
      start
  ;;
    stop)
      stop
  ;;
    restart)
      stop
      start
  ;;
    *)
      echo "Usage: php-fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL</pre>
<p><span style="font-family: courier new,courier;">$ sudo chmod +x /etc/init.d/php-fastcgi</span></p>
<h2>Iniciar manualmente los servicios.</h2>
<p><span style="font-family: courier new,courier;">$ sudo /etc/init.d/nginx start</span></p>
<p><span style="font-family: courier new,courier;">$ sudo /etc/init.d/php-fastcgi start</span></p>
<h2>Configurar el inicio automático de los servicios (opcional).</h2>
<p><span style="font-family: courier new,courier;">$ sudo update-rc.d nginx defaults</span></p>
<p><span style="font-family: courier new,courier;">$ sudo update-rc.d php-fastcgi defaults</span></p>
<h2>Probar el servicio.</h2>
<p><span style="font-family: courier new,courier;">$ vi /home/www/public/test.php</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">&lt;?php phpinfo(); ?&gt;</span></p>
<p>Acceder a la página web <span style="font-family: courier new,courier;">http://localhost/test.php</span> desde el equipo local.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/10/instalar-nginx-y-php-en-gnulinux-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como adjuntar imágenes a los mensajes HTML con PHPList 2.10.12</title>
		<link>http://blog.jorgeivanmeza.com/2010/09/como-adjuntar-imagenes-a-los-mensajes-html-con-phplist-2-10-12/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-adjuntar-imagenes-a-los-mensajes-html-con-phplist-2-10-12</link>
		<comments>http://blog.jorgeivanmeza.com/2010/09/como-adjuntar-imagenes-a-los-mensajes-html-con-phplist-2-10-12/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-adjuntar-imagenes-a-los-mensajes-html-con-phplist-2-10-12#comments</comments>
		<pubDate>Tue, 21 Sep 2010 17:22:15 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[FCKEditor]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHPList]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=9121</guid>
		<description><![CDATA[Introducción. PHPList es un software libre para la gestión del envío de correos masivos, muy útil para realizar campañas de mercadeo, promoción o boletines.  Es un aplicativo con una amplia funcionalidad pero su interfaz no es la mas intuitiva, por lo que algunas veces no es rápido su aprendizaje. En su sitio web definen a [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p><a href="http://www.phplist.com/" >PHPList</a> es un software libre para la gestión del envío de correos masivos, muy útil para realizar campañas de mercadeo, promoción o boletines.  Es un aplicativo con una amplia funcionalidad pero su interfaz no es la mas intuitiva, por lo que algunas veces no es rápido su aprendizaje.</p>
<p>En su sitio web definen a PHPList de la siguiente manera.</p>
<p style="padding-left: 30px;"><em>phplist is the world's most popular open source email campaign manager. phplist is free to download, install and use, and is easy to integrate with any website. phplist is downloaded more than 10,000 times per month.</em></p>
<p>La solución que se documenta en el presente artículo es la de configurar a PHPList para que permita adjuntar imágenes a los mensajes HTML.  Esto es diferente a insertar imágenes provenientes de otros sitios web ya que en este caso sólo se envían referencias externas en los mensajes, mientras que con esta nueva aproximación las imágenes se incluyen físicamente en el mensaje enviado a los clientes.</p>
<h2>Procedimiento.</h2>
<h3>Configurar el uso de FCKEditor</h3>
<p>Es necesario utilizar FCKEditor en lugar de TinyMCE como editor WYSIWYG para los mensajes.  Para esto es necesario realizar los siguientes ajustes en la configuración.</p>
<p><span style="font-family: courier new,courier;">$ vi &lt;ruta&gt;/lists/config/config.php</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">define("USEFCK",1);</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">define("USETINYMCEMESG", 0);</span></p>
<h3>Definir el directorio para almacenar las imágenes cargadas.</h3>
<p>El primer paso es crear el directorio bajo el directorio de PHPList.</p>
<p><span style="font-family: courier new,courier;">$ mkdir &lt;ruta&gt;/lists/<strong>uploadimages</strong></span></p>
<p><span style="font-family: courier new,courier;">$ chmod 777 &lt;ruta&gt;/lists/<strong>uploadimages</strong></span></p>
<p>El siguiente paso es informarle a PHPLists que utilice efectivamente el directorio recién creado.</p>
<p><span style="font-family: courier new,courier;">$ vi &lt;ruta&gt;/lists/config/config.php</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">define("FCKIMAGES_DIR","<strong>uploadimages</strong>");</span></p>
<h2>Verificación.</h2>
<p>Después de desarrollado este procedimiento ya es posible acceder al módulo para cargar imágenes en el servidor mediante el ícono <a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_004.png"><img class="alignnone size-full wp-image-9122" title="screenshot_004" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_004.png" alt="" width="17" height="16" /></a> y presionando el botón <strong>Browse Server</strong>.</p>
<div id="attachment_9123" class="wp-caption aligncenter" style="width: 965px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_005.png"><img class="size-full wp-image-9123" title="screenshot_005" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_005.png" alt="" width="955" height="444" /></a><p class="wp-caption-text">Subir imágenes al servidor para ser incluídas en mensajes de PHPList</p></div>
<h2>Solución de problemas.</h2>
<h3>Problemas con el XML generado por el servidor.</h3>
<p>Si se obtiene el mensaje "<span style="font-family: courier new,courier;">The server didn't reply a with proper XML data. Please check your configuration.</span>" cuando se accede a las imágenes almacenadas en el servidor, es necesario realizar el ajuste descrito a continuación.</p>
<div id="attachment_9124" class="wp-caption aligncenter" style="width: 623px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_003.png"><img class="size-full wp-image-9124" title="screenshot_003" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/09/screenshot_003.png" alt="" width="613" height="132" /></a><p class="wp-caption-text">Mensaje de error de PHPList</p></div>
<p>Para solucionar este bug es necesario realizar la siguiente modificación en la configuración del conector con el FCKEditor.</p>
<p><span style="font-family: courier new,courier;">$ vi &lt;ruta&gt;/lists/admin/FCKeditor/editor/filemanager/connectors/phplist/config.php</span></p>
<p>Las líneas 28 y 29 (versión 2.10.12 de PHPList) contienen las siguientes rutas incorrectas.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">} elseif (is_file('../../../../../../../../config/config.php')) {<br />
include "../../../../../../../../config/config.php"; </span></p>
<p>Deben corregirse de la siguiente manera: eliminando dos niveles inexistentes.</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">} elseif (is_file('../../../../../../config/config.php')) {<br />
include "../../../../../../config/config.php"; </span></p>
<p>Después de hecha la corrección del error, acceda o refresque el sitio y acceda al <em>plugin</em> normalmente.</p>
<h2>Enlaces.</h2>
<ul>
<li>PHPList.<br />
<a href="http://www.phplist.com/" >http://www.phplist.com/</a></li>
<li>UsingFCKEditor.<br />
<a href="http://docs.phplist.com/UsingFCKEditor" >http://docs.phplist.com/UsingFCKEditor</a></li>
<li>v 2.10.10 Upload XML Error.<br />
<a href="http://forums.phplist.com/viewtopic.php?f=17&amp;t=24547#p62700" >http://forums.phplist.com/viewtopic.php?f=17&amp;t=24547#p62700</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/09/como-adjuntar-imagenes-a-los-mensajes-html-con-phplist-2-10-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Degradar PHP 5.3 a 5.2 en GNU/Linux Ubuntu 10.04</title>
		<link>http://blog.jorgeivanmeza.com/2010/07/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04</link>
		<comments>http://blog.jorgeivanmeza.com/2010/07/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04#comments</comments>
		<pubDate>Wed, 14 Jul 2010 02:56:47 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[5.2]]></category>
		<category><![CDATA[5.3]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[downgrade]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=4951</guid>
		<description><![CDATA[Introducción. La versión mas reciente de Ubuntu, Lucid Lynx (10.04), incluye en sus repositorios por defecto la versión 5.3 de PHP la cual trae consigo una serie de modificaciones considerables que hacen que muchas de las aplicaciones requieran algún tipo de modificaciones para funcionar correctamente. Mientras se realizan estas modificaciones para actualizar las aplicaciones sea [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción.</h2>
<p>La versión mas reciente de Ubuntu, Lucid Lynx (10.04), incluye en sus repositorios por defecto la versión 5.3 de PHP la cual trae consigo una serie de <a href="http://php.net/manual/es/migration53.php" >modificaciones considerables</a> que hacen que muchas de las aplicaciones requieran algún tipo de modificaciones para funcionar correctamente.</p>
<p>Mientras se realizan estas modificaciones para actualizar las aplicaciones sea hace necesario continuar utilizando las aplicaciones existentes y para esto se debe reemplazar la versión instalada de PHP por la versión mas reciente de la serie anterior (5.2.x).  La migración no es trivial debido a que los paquetes vienen directamente de los repositorios, sin embargo si se utiliza el <em>script</em> provisto opr <a href="http://mrkandy.wordpress.com/" >KAndy</a> el proceso se simplifica enormemente.</p>
<h2>Instalación de PHP.</h2>
<p>Si aún no cuenta con PHP instalado en el equipo puede realizar una instalación básica mediante la ejecución de la siguiente instrucción.  Instale los demás paquetes que considere necesarios.</p>
<p><span style="font-family: courier new,courier;">$ sudo aptitude install apache2 php5 php5-cli php5-mysql</span></p>
<p>En este punto el equipo tendrá instalado PHP 5.3 y es el momento de degradarlo a su versión anterior.</p>
<p><span style="font-family: courier new,courier;">$ php -v</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">PHP <strong>5.3.2-1ubuntu4.2</strong> with Suhosin-Patch (cli) (built: May 13 2010 20:03:45)<br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies</span></p>
<h2>Degradar PHP.</h2>
<p>Tomar nota de los paquetes relacionados con PHP que se encuentran actualmente instalados.</p>
<p><span style="font-family: courier new,courier;">$ php_installed=`dpkg -l | grep  php| awk  &#8216;{print $2}&#8217; |tr &#8220;\n&#8221; &#8221; &#8220;`</span></p>
<p>Descargar el <em>script</em> de KAndy de la siguiente ubicación y almacenarlo con el nombre de <a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/07/downgradePHP.txt" ><span style="font-family: courier new,courier;">downgradePHP.sh</span></a>.</p>
<p style="padding-left: 30px;"><a href="http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/" >http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/</a></p>
<p>Ejecute el <em>script</em> en la máquina que se desea degradar.</p>
<p><span style="font-family: courier new,courier;">$ chmod +x downgradePHP.sh</span></p>
<p><span style="font-family: courier new,courier;">$ ./downgradePHP.sh</span></p>
<p>Recuperar los demás paquetes instalados.</p>
<p><span style="font-family: courier new,courier;">$ sudo apt-get install $php_installed</span></p>
<h2>Verificar la nueva versión de PHP.</h2>
<p><span style="font-family: courier new,courier;">$ php -v</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">PHP <strong>5.2.10-2ubuntu6</strong> with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:28:03)<br />
Copyright (c) 1997-2009 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies</span></p>
<h2>Enlaces.</h2>
<ul>
<li>Install (downgrade) php 5.2.x in Ubuntu 10.04 Lucid.<br />
<a href="http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/" >http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/</a></li>
<li>Ubuntu 10.04 and Drupal.<br />
<a href="http://civicactions.com/blog/2010/may/26/ubuntu_1004_and_drupal" >http://civicactions.com/blog/2010/may/26/ubuntu_1004_and_drupal</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2010/07/degradar-php-5-3-a-5-2-en-gnulinux-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

