<?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>Teofilo Israel &#187; Programación</title>
	<atom:link href="http://teofiloisrael.com/categoria/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://teofiloisrael.com</link>
	<description>Internet, software, programacion y mas</description>
	<lastBuildDate>Mon, 14 May 2012 02:35:03 +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>YSlow da grado F a archivos comprimidos con mod_deflate (gzip)</title>
		<link>http://teofiloisrael.com/2011/07/06/yslow-da-grado-f-a-archivos-comprimidos-con-mod_deflate-gzip/</link>
		<comments>http://teofiloisrael.com/2011/07/06/yslow-da-grado-f-a-archivos-comprimidos-con-mod_deflate-gzip/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 17:55:48 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=1026</guid>
		<description><![CDATA[Logré obtener un grado A en compresión Gzip en YSlow con el siguiente código de configuración: #Comienzo Habilitar compresion gzip &#60;IfModule mod_deflate.c&#62; SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems &#8230; <a href="http://teofiloisrael.com/2011/07/06/yslow-da-grado-f-a-archivos-comprimidos-con-mod_deflate-gzip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://teofiloisrael.com/wp-content/uploads/2011/07/yslow_gzip_grade_f.jpg"><img class="size-medium wp-image-1027 aligncenter" title="yslow_gzip_grade_f" src="http://teofiloisrael.com/wp-content/uploads/2011/07/yslow_gzip_grade_f-450x160.jpg" alt="yslow_gzip_grade_f" width="450" height="160" /></a></p>
<p>Logré obtener un grado A en compresión <strong>Gzip</strong> en <strong>YSlow</strong> con el siguiente código de configuración:<span id="more-1026"></span></p>
<pre>#Comienzo Habilitar compresion gzip

&lt;IfModule mod_deflate.c&gt;
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# file-types indicated will not be compressed
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-vary
&lt;IfModule mod_headers.c&gt;
#Header append Vary User-Agent
Header append Vary User-Agent env=!dont-vary
&lt;/IfModule&gt;
&lt;/IfModule&gt;</pre>
<p>Si aún después de agregar esta configuración, reiniciar el servicio de apache y vaciar la caché de tu navegador sigues obteniendo un grado F en YSlow, ten en cuenta que YSlow puede no estar viendo los resultados de la compresión por diversos factores. En mi caso seguía teniendo un grado F porque el navegador (Firefox) no estaba correctamente configurado. Lo que hice fue abir una nueva pestaña, en la barra de navegación escribí about:config y en network.http.accept-encoding le puse el valor gzip. Luego vacié la caché, ejecuté la prueba de YSlow y obtuve Grado A en gzip.</p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2011/07/06/yslow-da-grado-f-a-archivos-comprimidos-con-mod_deflate-gzip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Permitir a los contribuidores de WordPress subir archivos</title>
		<link>http://teofiloisrael.com/2011/06/24/permitir-a-los-contribuidores-de-wordpress-subir-archivos/</link>
		<comments>http://teofiloisrael.com/2011/06/24/permitir-a-los-contribuidores-de-wordpress-subir-archivos/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 17:53:50 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=1021</guid>
		<description><![CDATA[Hola a todos, hoy les traigo un tip muy interesante para WordPress. Si eres de aquellos que necesita revisar los posts de la gente que colabora contigo antes de publicarlos, necesitas darles acceso de Contribuidor. Y si tienes bloggers invitados, &#8230; <a href="http://teofiloisrael.com/2011/06/24/permitir-a-los-contribuidores-de-wordpress-subir-archivos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://teofiloisrael.com/wp-content/uploads/2010/04/wordpress.jpg"><img class="size-full wp-image-316 aligncenter" title="wordpress" src="http://teofiloisrael.com/wp-content/uploads/2010/04/wordpress.jpg" alt="wordpress" width="500" height="500" /></a></p>
<p>Hola a todos, hoy les traigo un tip muy interesante para WordPress. Si eres de aquellos que necesita revisar los posts de la gente que colabora contigo antes de publicarlos, necesitas darles acceso de <strong>Contribuidor</strong>. Y si tienes bloggers invitados, también debes darles ese acceso. Pero el problema es que los contribuidores no pueden subir archivos a su post. Así, los contribuidores deben auxiliarse de sitios de terceros para subir archivos, lo que hace poco atractivo animarse para contribuir con tu blog.<span id="more-1021"></span></p>
<p>Para que tus contribuidores puedan subir imágenes y archivos a tus posts, simplemente agrega el siguiente código al archivo functions.php de tu tema:</p>
<pre><code>if ( current_user_can('contributor') &amp;&amp; !current_user_can('upload_files') )
	add_action('admin_init', 'allow_contributor_uploads');

function allow_contributor_uploads() {
	$contributor = get_role('contributor');
	$contributor-&gt;add_cap('upload_files');
}</code></pre>
<p>Eso es todo, happy blogging!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2011/06/24/permitir-a-los-contribuidores-de-wordpress-subir-archivos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error de entrada/salida al subir imágenes en WordPress</title>
		<link>http://teofiloisrael.com/2011/05/05/error-de-entradasalida-al-subir-imagenes-en-wordpress/</link>
		<comments>http://teofiloisrael.com/2011/05/05/error-de-entradasalida-al-subir-imagenes-en-wordpress/#comments</comments>
		<pubDate>Thu, 05 May 2011 18:27:29 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=1002</guid>
		<description><![CDATA[Las causas de este error pueden ser varias y están intimamente ligadas a los permisos. Les explicaré mi solución en particular: Como todos los permisos de todas mis carpetas están en 755, sin perder tiempo acudí al log de apache &#8230; <a href="http://teofiloisrael.com/2011/05/05/error-de-entradasalida-al-subir-imagenes-en-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://teofiloisrael.com/wp-content/uploads/2011/05/error-entrada-salida.png"><img class="size-full wp-image-1003 aligncenter" title="error-entrada-salida" src="http://teofiloisrael.com/wp-content/uploads/2011/05/error-entrada-salida.png" alt="error-entrada-salida" width="678" height="524" /></a></p>
<p>Las causas de este error pueden ser varias y están intimamente ligadas a los permisos. Les explicaré mi solución en particular:<span id="more-1002"></span></p>
<p>Como todos los permisos de todas mis carpetas están en 755, sin perder tiempo acudí al log de apache mediante SSH y monitorié en vivo qué error se producía al subir el archivo:</p>
<pre class="brush: text;">tail -f error_log</pre>
<p>Cuando subí una imagen, apareció el siguiente error:</p>
<pre class="brush: text;">[Thu May 05 11:50:17 2011] [error] [client direccionIP] ModSecurity: Access denied with code 406 (phase 2). Pattern match "^Shockwave Flash" at REQUEST_HEADERS:User-Agent. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "203"] [hostname "nombredemihost.com"] [uri "/wp-admin/async-upload.php"] [unique_id "TcLHOUPj0NIAAD65YnkAAAAD"]</pre>
<p>Claramente podemos apreciar la regla ^Shockwave Flash del archivo /usr/local/apache/conf/modsec2.user.conf que quita los permisos a la aplicación Flash. Busqué aquella línea en aquel archivo y la comenté. Problema resuelto.</p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2011/05/05/error-de-entradasalida-al-subir-imagenes-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archivo no encontrado en archivo existente</title>
		<link>http://teofiloisrael.com/2011/05/04/archivo-no-encontrado-en-archivo-existente/</link>
		<comments>http://teofiloisrael.com/2011/05/04/archivo-no-encontrado-en-archivo-existente/#comments</comments>
		<pubDate>Wed, 04 May 2011 23:29:28 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=995</guid>
		<description><![CDATA[En uno de mis blogs estuve utilizando la librería timthumb.php para cambiar el tamaño de las imágenes. Resulta que la librería funcionaba perfectamente en la máquina local y en otro servidor, pero no funcionaba bien en el servidor donde estaba &#8230; <a href="http://teofiloisrael.com/2011/05/04/archivo-no-encontrado-en-archivo-existente/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://movilcrunch.com/">uno de mis blogs</a> estuve utilizando la librería <a href="http://timthumb.googlecode.com/svn/trunk/timthumb.php">timthumb.php</a> para cambiar el tamaño de las imágenes. Resulta que la librería funcionaba perfectamente en la máquina local y en otro servidor, pero no funcionaba bien en el servidor donde estaba alojado el sitio del que les estoy hablando. Entonces indiscutiblemente concluí que era un problema específico de configuración en el servidor y me puse a investigar.<span id="more-995"></span></p>
<p>La imágenes que debían aparecer reducidas aparecían rotas. Al utilizar la función de Chrome de &#8220;abrir la imagen en pestaña nueva&#8221;, obtenía un error 404. Pero el link apuntaba a un archivo que existía. Me imaginé que el problema tenía que ver con los permisos.</p>
<p>Luego de <span style="text-decoration: line-through;">tirar varias patadas voladoras</span> probar cambiando permisos y haciendo cosas parecidas no encontraba nada. Finalmente, me puse a buscar en el log de errores de apache y encontré esto:</p>
<pre class="brush: text;">SoftException in Application.cpp:256: File "/home/nombre_de_la_cuenta/public_html/movilcrunch.com/wp-content/themes/compresstheme/timthumb.php" is writeable by group, referer: http://movilcrunch.com/wp-content/themes/compresstheme/timthumb.php?src=http://movilcrunch.com/wp-content/uploads/2011/04/sims-31.png&amp;w=170&amp;h=170&amp;zc=1</pre>
<p>En pocas palabras, el archivo timthumb.php es escribible por el grupo. Para mí que sea escribible por el grupo no es un error, pero parece ser una política del servidor. La solución, sin embargo, no es colocar permiso 755 al archivo individual. Se debe colocar permiso 755 a todos los archivos que están dentro de la carpeta, incluyendo la carpeta madre. Tengo acceso ssh, la solución en mi caso particular fue cambiar permisos recursivamente a la carpeta wp-content:</p>
<pre class="brush: text;">chmod -R 0755 wp-content</pre>
<p>La solución parece sencilla, pero duré horas para encontrarla.</p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2011/05/04/archivo-no-encontrado-en-archivo-existente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El tipo de archivo no se ajusta a las directivas de seguridad. Prueba con otro.</title>
		<link>http://teofiloisrael.com/2011/02/26/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad-prueba-con-otro/</link>
		<comments>http://teofiloisrael.com/2011/02/26/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad-prueba-con-otro/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 23:14:05 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=980</guid>
		<description><![CDATA[A partir de WordPress 2.9, la subida de cualquier tipo de archivo que no se encuentre en una lista está desactivada. Previamente a esa versión, en WordPress existía un bug mediante el cual se podía subir un archivo .php. Es por &#8230; <a href="http://teofiloisrael.com/2011/02/26/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad-prueba-con-otro/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://teofiloisrael.com/wp-content/uploads/2011/02/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad.png"><img class="alignnone size-full wp-image-982" title="el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad" src="http://teofiloisrael.com/wp-content/uploads/2011/02/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad.png" alt="el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad" width="675" height="659" /></a></p>
<p>A partir de WordPress 2.9, la subida de cualquier tipo de archivo que no se encuentre en una lista está desactivada. Previamente a esa versión, en WordPress existía un bug mediante el cual se <a href="http://core.trac.wordpress.org/ticket/10692">podía subir un archivo .php</a>. Es por eso que ahora el poder subir archivos de ciertos tipos está deshabilitado aunque seas administrador.<span id="more-980"></span></p>
<p>No me gusta utilizar plugins para resolver problemas. Viendo esta <a href="http://core.trac.wordpress.org/attachment/ticket/10692/10692.diff">línea de código</a>, se me ocurrió algo descabellado, que es agregar al archivo wp-config.php lo siguiente:</p>
<p><code>define('ALLOW_UNFILTERED_UPLOADS', true);</code></p>
<p>Resuelves el problema, pero comprometes la seguridad de WordPress.</p>
<p><a href="http://ayudawordpress.com/foro/topic/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad-prueba-con-otro">Fuente</a></p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2011/02/26/el-tipo-de-archivo-no-se-ajusta-a-las-directivas-de-seguridad-prueba-con-otro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript: Cómo sumarle días a una fecha</title>
		<link>http://teofiloisrael.com/2010/10/22/javascript-como-sumarle-dias-a-una-fecha/</link>
		<comments>http://teofiloisrael.com/2010/10/22/javascript-como-sumarle-dias-a-una-fecha/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 07:11:19 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[DatePicker]]></category>
		<category><![CDATA[Java Script]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=917</guid>
		<description><![CDATA[A continuación les muestro un ejemplo donde utilizo dos datepickers de jquery para demostrar cómo sumarle días a una fecha. Cuando selecciono una fecha en el primer date picker, el segundo se actualiza con una fecha siete días después de &#8230; <a href="http://teofiloisrael.com/2010/10/22/javascript-como-sumarle-dias-a-una-fecha/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://teofiloisrael.com/wp-content/uploads/2010/10/jquery-calendar.png"><img class="size-full wp-image-925 aligncenter" title="jquery-calendar" src="http://teofiloisrael.com/wp-content/uploads/2010/10/jquery-calendar.png" alt="jquery-calendar" width="393" height="183" /></a></p>
<p>A continuación les muestro un ejemplo donde utilizo dos <a href="http://docs.jquery.com/UI/Datepicker">datepickers</a> de <a href="http://jquery.com/">jquery</a> para demostrar cómo sumarle días a una fecha. Cuando selecciono una fecha en el primer date picker, el segundo se actualiza con una fecha siete días después de la fecha en que se ha seleccionado el primero. Los detalles de cómo se hace los dejo comentado en el código. Mira el demo en <a href="http://teofiloisrael.com/wp-content/uploads/2010/10/datepicker.html">este enlace</a>.</p>
<pre class="brush: html;">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
 &lt;link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/&gt;
 &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"&gt;&lt;/script&gt;
 &lt;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"&gt;&lt;/script&gt;

 &lt;script&gt;</pre>
<pre class="brush: javascript;"> $(document).ready(function() {
 $("#datepicker").datepicker({
 onSelect: function(dateText, inst){
 //604800000 Es el equivalente en milisegundos a 7 días. Se obtiene multiplicando 24 horas por 60 minutos
 //por 60 segundos por 1000 milisegundos por la cantidad de días deseada
 var p = new Date(Date.parse(dateText) + 604800000);
 //p cotiene la nueva fecha. Ahora la desbaratamos en un valor string en formato mm/dd/aaaa
 var curr_date = p.getDate();
 var curr_month = p.getMonth();
 //Date.getMonth() me devuelve los meses del 0 al 11, así que hay que aumentarle 1 para obtener el mes real
 curr_month++;
 var curr_year = p.getFullYear();
 //armamos nuestro nuevo string para ajustar el valor del segundo datepicker
 var newdate = curr_month + "/" + curr_date + "/" + curr_year;
 $("#datepicker2").datepicker("setDate", newdate);
 }
 });

 $("#datepicker2").datepicker();
 });</pre>
<pre class="brush: html;"> &lt;/script&gt;
&lt;/head&gt;
&lt;body style="font-size:62.5%;"&gt;
&lt;div type="text" id="datepicker"&gt;&lt;/div&gt;
&lt;div type="text" id="datepicker2"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2010/10/22/javascript-como-sumarle-dias-a-una-fecha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener la altura del documento (cross-browser) IE, FF, Chrome, etc</title>
		<link>http://teofiloisrael.com/2010/09/13/obtener-la-altura-del-documento-cross-browser-ie-ff-chrome-etc/</link>
		<comments>http://teofiloisrael.com/2010/09/13/obtener-la-altura-del-documento-cross-browser-ie-ff-chrome-etc/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 22:02:08 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=900</guid>
		<description><![CDATA[La siguiente función retorna la altura de cualquier documento sin importar el navegador. Ha sido probada en IE6/7/8, FF2/3, Safari (Windows), Google Chrome y Opera 9.5: function getDocHeight() { var D = document; return Math.max( Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, &#8230; <a href="http://teofiloisrael.com/2010/09/13/obtener-la-altura-del-documento-cross-browser-ie-ff-chrome-etc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://teofiloisrael.com/wp-content/uploads/2010/09/document-height.png"><img class="size-full wp-image-903 aligncenter" title="document-height" src="http://teofiloisrael.com/wp-content/uploads/2010/09/document-height.png" alt="document-height" width="581" height="120" /></a></p>
<p>La siguiente función retorna la altura de cualquier documento sin importar el navegador. Ha sido probada en  IE6/7/8, FF2/3, Safari (Windows), Google Chrome y Opera 9.5:</p>
<pre class="brush: javascript;">function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2010/09/13/obtener-la-altura-del-documento-cross-browser-ie-ff-chrome-etc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Convertir Arrays a variables rápidamente en PHP</title>
		<link>http://teofiloisrael.com/2010/09/03/convertir-arrays-a-variables-rapidamente-en-php/</link>
		<comments>http://teofiloisrael.com/2010/09/03/convertir-arrays-a-variables-rapidamente-en-php/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 22:32:04 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=881</guid>
		<description><![CDATA[Hay dos formas de convertir una cadena separada por comas a variables, una larga y una corta, y les muestro cóm0 a continuación: La forma larga: $miCadena = 'Un nombre,una direccion,otra direccion,un telefono,un codigo postal'; $miArreglo = explode(",", $miCadena); $nombre &#8230; <a href="http://teofiloisrael.com/2010/09/03/convertir-arrays-a-variables-rapidamente-en-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://teofiloisrael.com/wp-content/uploads/2010/09/php-logo.jpg"><img class="size-full wp-image-884 aligncenter" title="php-logo" src="http://teofiloisrael.com/wp-content/uploads/2010/09/php-logo.jpg" alt="php-logo" width="578" height="406" /></a><br />
Hay dos formas de convertir una cadena separada por comas a variables, una larga y una corta, y les muestro cóm0 a continuación:</p>
<p><strong>La forma larga:</strong></p>
<pre class="brush: php;">$miCadena = 'Un nombre,una direccion,otra direccion,un telefono,un codigo postal';
$miArreglo = explode(",", $miCadena);
$nombre = $miArreglo[0];
$direccion1 = $miArreglo[1];
$direccion2 = $miArreglo[2];
$telefono = $miArreglo[3];
$codigoPostal = $miArreglo[4];

echo "&lt;strong&gt;Nombre: &lt;/strong&gt;" . $nombre . '&lt;br /&gt;';
echo "&lt;strong&gt;Direccion 1: &lt;/strong&gt;" . $direccion1 . '&lt;br /&gt;';
echo "&lt;strong&gt;Direccion 2: &lt;/strong&gt;" . $direccion2 . '&lt;br /&gt;';
echo "&lt;strong&gt;Telefono: &lt;/strong&gt;" . $telefono . '&lt;br /&gt;';
echo "&lt;strong&gt;Codigo postal: &lt;/strong&gt;" . $codigoPostal;</pre>
<p><strong>La forma corta:</strong></p>
<pre class="brush: php;">$miCadena = 'Un nombre,una direccion,otra direccion,un telefono,un codigo postal';
list($nombre, $direccion1, $direccion2, $telefono, $codigoPostal) = explode(",", $miCadena);

echo "&lt;strong&gt;Nombre: &lt;/strong&gt;" . $nombre . '&lt;br /&gt;';
echo "&lt;strong&gt;Direccion 1: &lt;/strong&gt;" . $direccion1 . '&lt;br /&gt;';
echo "&lt;strong&gt;Direccion 2: &lt;/strong&gt;" . $direccion2 . '&lt;br /&gt;';
echo "&lt;strong&gt;Telefono: &lt;/strong&gt;" . $telefono . '&lt;br /&gt;';
echo "&lt;strong&gt;Codigo postal: &lt;/strong&gt;" . $codigoPostal;</pre>
<p>¿Quieres algún otro tip?. Déjame un comentario.</p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2010/09/03/convertir-arrays-a-variables-rapidamente-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir un arreglo (array) de PHP a JavaScript</title>
		<link>http://teofiloisrael.com/2010/08/10/convertir-arreglo-array-php-javascript/</link>
		<comments>http://teofiloisrael.com/2010/08/10/convertir-arreglo-array-php-javascript/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 15:49:35 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=859</guid>
		<description><![CDATA[En el día de ayer me sucedió que estaba utilizando un plugin de WordPress para detectar el país de procedencia de los visitantes de una página y tomar esa información para redireccionar automáticamente al idioma de esa persona. No lo &#8230; <a href="http://teofiloisrael.com/2010/08/10/convertir-arreglo-array-php-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://teofiloisrael.com/wp-content/uploads/2010/08/php-logo.jpg"><img class="size-full wp-image-886 aligncenter" title="php-logo" src="http://teofiloisrael.com/wp-content/uploads/2010/08/php-logo.jpg" alt="php-logo" width="578" height="406" /></a></p>
<p>En el día de ayer me sucedió que estaba utilizando un plugin de WordPress para detectar el país de procedencia de los visitantes de una página y tomar esa información para redireccionar automáticamente al idioma de esa persona. No lo quise hacer utilizando el User Agent del navegador, porque una persona en Francia podría estar utilizando Firefox en inglés. Para mí es más preciso utilizar <a href="http://wordpress.org/extend/plugins/wp-geolocation-js/">WP GeoLocation</a>, con el cual puedo saber la ubicación de una persona basado en la dirección ip.<br />
El caso es que formé en PHP un arreglo de los códigos de los países con sus códigos de idiomas pero no me había percatado de que <a href="http://wordpress.org/extend/plugins/wp-geolocation-js/">WP  GeoLocation</a> me daba la información en JavaScript. Como mi recién formado arreglo de PHP era muy grande, tuve que buscar una forma automatizada para convertir ese arreglo de PHP a JavaScript y esta fue la solución:</p>
<pre class="brush: php;">&lt;?php
$arreglo = array(
'clave 1' =&gt; 'valor 1',
'clave 2' =&gt; 'valor 2',
'clave x' =&gt; 'valor x',
);
?&gt;

&lt;script language="javascript"&gt;
var arr = {

&lt;?php
foreach($arreglo as $key =&gt; $values){
$arr .= "'" . $key . "'" .   " : " . "'" . $values . "'" . ",";
}
$arr =  substr_replace($arr, '', -1);
echo $arr;
?&gt;

};
&lt;/script&gt;</pre>
<p>Como pudimos apreciar en el código anterior, utilizamos un loop foreach para formar el arreglo al estilo javascript y lo almacenamos en una variable. Cuando termine el loop, nos va a sobrar una coma al final del arreglo, la cual eliminamos con el código de la línea 16. Finalmente imprimimos el arreglo en el navegador y salimos de PHP y en javascript cerramos con la llave y el punto y coma y todo listo. Puedes verificar si todo está bien desde JavaScript con <em>alert(arr[clave]);</em></p>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2010/08/10/convertir-arreglo-array-php-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agregar Botones Twitter y Facebook para tu blog de WordPress</title>
		<link>http://teofiloisrael.com/2010/05/21/agregar-botones-twitter-y-facebook-para-tu-blog-de-wordpress/</link>
		<comments>http://teofiloisrael.com/2010/05/21/agregar-botones-twitter-y-facebook-para-tu-blog-de-wordpress/#comments</comments>
		<pubDate>Sat, 22 May 2010 01:49:06 +0000</pubDate>
		<dc:creator>teo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teofiloisrael.com/?p=623</guid>
		<description><![CDATA[Si lo que deseas es agregar botones a tus artículos de WordPress para que tus usuarios los compartan con un sólo clic en Twitter y WordPress, este es tu post. Les explicaré todo el proceso paso a paso, así que, &#8230; <a href="http://teofiloisrael.com/2010/05/21/agregar-botones-twitter-y-facebook-para-tu-blog-de-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si lo que deseas es agregar botones a tus artículos de WordPress para que tus usuarios los compartan con un sólo clic en Twitter y WordPress, este es tu post. Les explicaré todo el proceso paso a paso, así que, comencemos:</p>
<p><strong>Twitter:</strong></p>
<p>Utilizaremos el plugin <strong>TweetMeme Retweet Button.</strong></p>
<ol>
<li>En el panel de control de WordPress seleccionamos <strong>Plugin / Añadir </strong>Nuevo<br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/agregar-nuevo-plugin.png"><img class="alignnone size-full wp-image-624" title="agregar-nuevo-plugin" src="http://teofiloisrael.com/wp-content/uploads/2010/05/agregar-nuevo-plugin.png" alt="agregar-nuevo-plugin" width="153" height="144" /></a></li>
<li>En el cuadro de búsqueda escribimos <strong>TweetMeme Button</strong> y hacemos clic en <strong>Buscar Plugins</strong><br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/buscar-plugins.png"><img class="alignnone size-full wp-image-625" title="buscar-plugins" src="http://teofiloisrael.com/wp-content/uploads/2010/05/buscar-plugins.png" alt="buscar-plugins" width="378" height="111" /></a></li>
<li>En el listado que aparece buscamos <strong>TweetMeme  Button</strong>. Si escribiste el nombre exactamente igual, debería ser el primero. Hacemos clic en <strong>Instalar</strong><br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/instalar-tweetmeme.png"><img class="alignnone size-full wp-image-626" title="instalar-tweetmeme" src="http://teofiloisrael.com/wp-content/uploads/2010/05/instalar-tweetmeme.png" alt="instalar-tweetmeme" width="523" height="80" /></a></li>
<li>En el Popup que aparece presionamos el botón <strong>Instalar ahora</strong>.<br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/instalar-ahora-tweetmeme.png"><img class="alignnone size-full wp-image-627" title="instalar-ahora-tweetmeme" src="http://teofiloisrael.com/wp-content/uploads/2010/05/instalar-ahora-tweetmeme.png" alt="instalar-ahora-tweetmeme" width="542" height="410" /></a></li>
<li>Luego hacemos clic en el enlace<strong> Activar Plugin</strong><br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/activar-tweetmeme.png"><img class="alignnone size-full wp-image-628" title="activar-tweetmeme" src="http://teofiloisrael.com/wp-content/uploads/2010/05/activar-tweetmeme.png" alt="activar-tweetmeme" width="569" height="171" /></a></li>
</ol>
<p><strong>Ajustes de Tweetmeme</strong>:</p>
<ol>
<li>Localiza y haz clic en Tweetmeme al final de la sección izquierda del panel de administración de WordPress.<br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/ajustes-tweetmeme.png"><img class="alignnone size-full wp-image-629" title="ajustes-tweetmeme" src="http://teofiloisrael.com/wp-content/uploads/2010/05/ajustes-tweetmeme.png" alt="ajustes-tweetmeme" width="154" height="101" /></a></li>
<li>Cambia los ajustes de Tweetmeme de acuerdo a tus necesidades. Por ejemplo, yo prefiero utilizar la ubicación manual del botón porque así puedo controlar que salga donde yo quiera insertando un código en el template.<br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/ajustes-tweetmeme-1.png"><img class="alignnone size-full wp-image-630" title="ajustes-tweetmeme-1" src="http://teofiloisrael.com/wp-content/uploads/2010/05/ajustes-tweetmeme-1.png" alt="ajustes-tweetmeme-1" width="589" height="532" /></a></li>
<li>Si elegiste la ubicación manual, entonces inserta el siguiente código donde quieres que aparezca el botón:
<pre>&lt;?php
if(function_exists('tweetmeme')) {
echo tweetmeme();
}?&gt;</pre>
</li>
<li>Finalmente, deberías obtener algo como esto:<br />
<a href="http://teofiloisrael.com/wp-content/uploads/2010/05/tweetmeme.png"><img class="alignnone size-full wp-image-632" title="tweetmeme" src="http://teofiloisrael.com/wp-content/uploads/2010/05/tweetmeme.png" alt="tweetmeme" width="579" height="460" /></a></li>
</ol>
<p><strong>Facebook:</strong></p>
<ol>
<li> Puedes seguir exactamente todos los pasos anteriores para un pluguin llamado <strong>Facebook Share (New) Button</strong>. OJO: No lo confundan con <strong>Facebook Share Button</strong>, porque ese no funciona.</li>
<li>Si escogen la opción manual, para agreguen el siguiente código en el lugar donde desdean que aparezca:
<pre>&lt;?php if (function_exists('fbshare_manual')):
echo fbshare_manual(); endif;?&gt;</pre>
<p><a href="http://teofiloisrael.com/wp-content/uploads/2010/05/facebookshare.png"><img class="alignnone size-full wp-image-634" title="facebookshare" src="http://teofiloisrael.com/wp-content/uploads/2010/05/facebookshare.png" alt="facebookshare" width="579" height="453" /></a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://teofiloisrael.com/2010/05/21/agregar-botones-twitter-y-facebook-para-tu-blog-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

