<?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>PicaTeclas</title>
	<atom:link href="http://picateclas.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://picateclas.net</link>
	<description></description>
	<lastBuildDate>Mon, 03 Jan 2011 12:10:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Error &#8220;Aborted Push&#8221; al hacer commit con TortoiseHG</title>
		<link>http://picateclas.net/posts/error-aborted-push-al-hacer-commit-con-tortoisehg/</link>
		<comments>http://picateclas.net/posts/error-aborted-push-al-hacer-commit-con-tortoisehg/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 12:10:58 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[breves]]></category>
		<category><![CDATA[aborted push]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[repositorio]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tortoisehg]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=145</guid>
		<description><![CDATA[Al trabajar con repositorios de Mercurial gestionados con Tortoise HG puede recibirse el error "Aborted push" al enviar un conjunto de cambios a un repositorio externo (ejecutando un comando push, en definitiva). Para permitir los cambios en un repositorio desde clientes remotos habremos de cambiar la opción de "Allow push" a "*", y la opción [...]]]></description>
			<content:encoded><![CDATA[<p>Al trabajar con repositorios de Mercurial gestionados con Tortoise HG puede recibirse el error "Aborted push" al enviar un conjunto de cambios a un repositorio externo (ejecutando un comando <em>push</em>, en definitiva).</p>
<p>Para permitir los cambios en un repositorio desde clientes remotos habremos de cambiar la opción de "Allow push" a "*", y la opción "Require SSL" a "False".</p>
<div id="attachment_146" class="wp-caption aligncenter" style="width: 573px"><a href="http://picateclas.net/wp-content/uploads/2011/01/opciones-servidor-tortoisehg.png"><img class="size-full wp-image-146" title="opciones-servidor-tortoisehg" src="http://picateclas.net/wp-content/uploads/2011/01/opciones-servidor-tortoisehg.png" alt="" width="563" height="602" /></a><p class="wp-caption-text">Opciones del servidor de Tortoise HG</p></div>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/error-aborted-push-al-hacer-commit-con-tortoisehg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Combinar todas las librerías externas en un sólo JAR en Netbeans</title>
		<link>http://picateclas.net/posts/combinar-todas-las-librerias-externas-en-un-solo-jar-en-netbeans/</link>
		<comments>http://picateclas.net/posts/combinar-todas-las-librerias-externas-en-un-solo-jar-en-netbeans/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 15:46:06 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[IDEs]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[distribución]]></category>
		<category><![CDATA[jar]]></category>
		<category><![CDATA[librerías]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=141</guid>
		<description><![CDATA[Al compilar con el script ant que trae integrado NetBeans, obtendremos un JAR con la aplicación y una carpeta "lib" con las librerías externas para hacerla funcionar. De cara a distribuir la aplicación esto no es lo más interesante, ya que si es una aplicación de escritorio será más conveniente combinarlo todo en un sólo [...]]]></description>
			<content:encoded><![CDATA[<p>Al compilar con el script ant que trae integrado NetBeans, obtendremos un JAR con la aplicación y una carpeta "lib" con las librerías externas para hacerla funcionar. De cara a distribuir la aplicación esto no es lo más interesante, ya que si es una aplicación de escritorio será más conveniente combinarlo todo en un sólo archivo, incluídos binarios y librerías externas.</p>
<p>Una posibilidad para generar el archivo que incluya todo sería hacerlo a mano (renombrando el jar a .zip y editándolo, por ejemplo), aunque si se va a hacer varias veces es más cómodo hacerlo desde el propio IDE, integrado en el proceso de compilación de Netbeans.  Para ello, editaremos el archivo build.xml localizado en la carpeta raíz del proyecto, y añadimos este texto antes de &lt;project&gt;:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p141code2'); return false;">Ver código</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1412"><td class="code" id="p141code2"><pre class="xml" style="font-family:monospace;">    &lt;target name=&quot;-post-jar&quot;&gt;
        &lt;jar jarfile=&quot;${dist.jar}&quot; update=&quot;true&quot;&gt;
            &lt;zipfileset src=&quot;${dist.jar}&quot; includes=&quot;**/*.class&quot; /&gt;
            &lt;zipfileset src=&quot;lib/libreria1.jar&quot; excludes=&quot;META-INF/*&quot;/&gt;
            &lt;zipfileset src=&quot;lib/libreria2.jar&quot; excludes=&quot;META-INF/*&quot;/&gt;
            &lt;manifest&gt;
                &lt;attribute name=&quot;Main-Class&quot; value=&quot;com.ejemplo.ClasePrincipal&quot;/&gt;
            &lt;/manifest&gt;
        &lt;/jar&gt;
    &lt;/target&gt;</pre></td></tr></table></div>

<p>Debemos añadir cada una de las librerías a incluir en el JAR con una línea zipfileset. Este añadido al script permitirá que NetBeans genere un archivo .JAR para el proyecto, que incluye tanto nuestro código como las dependencias, al utilizar la opción "Clean&#038;Compile" del IDE.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/combinar-todas-las-librerias-externas-en-un-solo-jar-en-netbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar apt-get tras un proxy</title>
		<link>http://picateclas.net/posts/configurar-apt-get-tras-un-proxy/</link>
		<comments>http://picateclas.net/posts/configurar-apt-get-tras-un-proxy/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 08:00:23 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[breves]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=117</guid>
		<description><![CDATA[Para configurar el acceso de apt-get a los repositorios a través de un proxy podremos hacerlo a través de Synaptic ( Sistema-&#62;Administración-&#62;Gestor de paquetes Synaptic), y una vez abierto en el menú Configuración-&#62;Preferencias-&#62;Red. La opción a configurar es “Configuración manual del proxy”, introduciendo los datos de conexión al proxy. Otra opción es configurarlo a través [...]]]></description>
			<content:encoded><![CDATA[<p>Para configurar el acceso de apt-get a los repositorios a través de un proxy podremos hacerlo a través de Synaptic (<em> Sistema-&gt;Administración-&gt;Gestor de paquetes Synaptic</em>), y una vez abierto en el menú Configuración-&gt;Preferencias-&gt;Red. La opción a configurar es “Configuración manual del proxy”, introduciendo los datos de conexión al proxy.</p>
<p>Otra opción es configurarlo a través de la línea de comandos, con los siguientes comandos:<br />
<code><br />
export HTTP_PROXY=http://username:password@proxyserver.net:port/<br />
export FTP_PROXY=http://username:password@proxyserver.net:port/<br />
</code></p>
<p>Para hacer el cambio permanente:<br />
1. Editaremos el archivo /etc/bash.bashrc como root<br />
2. Pondremos los dos comandos anteriores</p>
<p>Vía | <a href="http://www.trucoslinux.net/utilizando-apt-get-a-traves-de-proxy-ubuntudebian.html">Trucoslinux</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/configurar-apt-get-tras-un-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acelera la carga de wordpress activando la compresión</title>
		<link>http://picateclas.net/posts/acelera-la-carga-de-wordpress-activando-la-compresion/</link>
		<comments>http://picateclas.net/posts/acelera-la-carga-de-wordpress-activando-la-compresion/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 18:45:42 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[fragmentos útiles]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[compresión]]></category>
		<category><![CDATA[zlib]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=110</guid>
		<description><![CDATA[Acelerar la carga de tu blog (hecho con wordpress) activando la compresión "zlib", siempre que tu host lo soporte, es tan sencillo como añadir lo siguiente en el header.php de tu theme: &#60;?php ini_set('zlib.output_compression', 'On'); ini_set('zlib.output_compression_level', '1'); ?&#62; Esto permitirá que los datos se transmitan desde tu servidor hasta el navegador del visitante comprimidos, ahorrando [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_112" class="wp-caption aligncenter" style="width: 495px"><a href="http://picateclas.net/wp-content/uploads/2010/06/compresionwordpress.jpg"><img class="size-full wp-image-112 " title="compresionwordpress" src="http://picateclas.net/wp-content/uploads/2010/06/compresionwordpress.jpg" alt="Podéis observar la mejora en la cantidad de información transmitida al cargar una web..." width="485" height="416" /></a><p class="wp-caption-text">Podéis observar la mejora en la cantidad de información transmitida al cargar una web...</p></div>
<p style="text-align: left;">Acelerar la carga de tu blog (hecho con wordpress) activando la compresión "zlib", siempre que tu host lo soporte, es tan sencillo como añadir lo siguiente en el header.php de tu theme:</p>
<p><code lang="php"><br />
&lt;?php<br />
ini_set('zlib.output_compression', 'On');<br />
ini_set('zlib.output_compression_level', '1');<br />
?&gt;<br />
</code></p>
<p>Esto permitirá que los datos se transmitan desde tu servidor hasta el navegador del visitante comprimidos, ahorrando un tiempo de transmisión interesante. Para comprobar si tienes activado el soporte de zlib, puedes observar la salida de phpinfo en tu servidor. Y para comprobar si está funcionando la compresión, prueba la herramienta de <a href="http://www.port80software.com/support/p80tools.asp">Port80</a>.</p>
<p>Vía | <a href="http://www.wprecipes.com/compress-wordpress-output-and-speed-your-blogs-load-speed">WPRecipes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/acelera-la-carga-de-wordpress-activando-la-compresion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acceder a una variable de scriplet con JSTL (y viceversa)</title>
		<link>http://picateclas.net/posts/acceder-a-una-variable-de-scriplet-con-jstl-y-viceversa/</link>
		<comments>http://picateclas.net/posts/acceder-a-una-variable-de-scriplet-con-jstl-y-viceversa/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 08:08:13 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[fragmentos útiles]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[jstl]]></category>
		<category><![CDATA[scriptlets]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=104</guid>
		<description><![CDATA[Aunque mezclar scriptlets y JSTL en las páginas JSP es una mala práctica (hace el código mucho más difícil de mantener), a veces es complicado de evitar tener que compartir variables entre código java incrustado en los JSP (scriptlets) y las etiquetas JSTL. Para poder compartir valores de variable entre ambos existe el contexto de [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque mezclar <a href="http://java.sun.com/products/jsp/tags/11/syntaxref11.fm5.html">scriptlets</a> y <a href="http://java.sun.com/products/jsp/jstl/">JSTL</a> en las páginas JSP es una mala práctica (hace el código mucho más difícil de mantener), a veces es complicado de evitar tener que compartir variables entre código java incrustado en los JSP (scriptlets) y las etiquetas JSTL. Para poder compartir valores de variable entre ambos existe el contexto de la página:</p>
<h3>Acceder a una variable de un scriptlet con JSTL</h3>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p104code8'); return false;">Ver código</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1048"><td class="code" id="p104code8"><pre class="java" style="font-family:monospace;">&lt;% String miVariable = &quot;Cadena&quot;; pageContext.setAttribute(&quot;miVariable&quot;, miVariable); %&gt;</pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p104code9'); return false;">Ver código</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1049"><td class="code" id="p104code9"><pre class="java" style="font-family:monospace;">&lt;c:out value=&quot;miVariable&quot;/&gt;</pre></td></tr></table></div>

<h3>Acceder a una variable de JSTL mediante scriptlets</h3>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p104code10'); return false;">Ver código</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10410"><td class="code" id="p104code10"><pre class="java" style="font-family:monospace;">&lt;c:set var=&quot;miVariable&quot; value=&quot;Cadena&quot;/&gt;</pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p104code11'); return false;">Ver código</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10411"><td class="code" id="p104code11"><pre class="java" style="font-family:monospace;">&lt;%
String miVariable= (String)pageContext.getAttribute(&quot;miVariable&quot;);
out.print(miVariable);
%&gt;</pre></td></tr></table></div>

<p>Las variables usadas pueden ser objetos complejos, siempre que se importen mediante</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p104code12'); return false;">Ver código</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10412"><td class="code" id="p104code12"><pre class="java" style="font-family:monospace;">&lt;%@page import=&quot;paquete.nombre.de.la.clase&quot;%&gt;</pre></td></tr></table></div>

<p>Vía | <a href="http://www.melandri.net/2009/09/16/scriptlet-and-jstl-variable-sharing/">Alessandro Melandri</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/acceder-a-una-variable-de-scriplet-con-jstl-y-viceversa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obtener el espacio ocupado por las bases de datos de MySQL</title>
		<link>http://picateclas.net/posts/obtener-el-espacio-ocupado-por-las-bases-de-datos-de-mysql/</link>
		<comments>http://picateclas.net/posts/obtener-el-espacio-ocupado-por-las-bases-de-datos-de-mysql/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 12:08:23 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[fragmentos útiles]]></category>
		<category><![CDATA[disco]]></category>
		<category><![CDATA[espacio]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=102</guid>
		<description><![CDATA[En The Arctel Journal tienen un pequeño y útil fragmento de código MySQL para obtener el espacio ocupado por los datos de las distintas bases de datos MySQL de un servidor: SELECT table_schema, count(*) TABLES, concat(round(sum(table_rows)/1000000,2),'M') rows,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,round(sum(index_length)/sum(data_length),2) idxfrac FROM information_schema.TABLES group by table_schema; O la versión en Mb y miles de filas [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://arcterex.net/blog/archives/2008/08/20/finding_mysql_table_disk_usage.html">The Arctel Journal</a> tienen un pequeño y útil fragmento de código MySQL para obtener el espacio ocupado por los datos de las distintas bases de datos MySQL de un servidor:</p>
<blockquote>
<pre><code><tt><tt>SELECT
   table_schema, count(*) TABLES,
   concat(round(sum(table_rows)/1000000,2),'M')
   rows,concat(round(sum(data_length)/(1024*1024*1024),2),'G')
   DATA,concat(round(sum(index_length)/(1024*1024*1024),2),'G')
   idx,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G')
   total_size,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
   information_schema.TABLES group by table_schema; </tt></tt></code></pre>
</blockquote>
<p>O la versión en Mb y miles de filas (en vez de GB y millones de filas):</p>
<blockquote><p>SELECT table_schema, count(  *   )<br />
TABLES , concat( round( sum( table_rows )  /1000, 2  ) ,  'K'  )<br />
ROWS , concat( round( sum( data_length )  /  ( 1024 *1024  ) , 2  ) ,  'Mb'  )<br />
DATA , concat( round( sum( index_length )  /  ( 1024 *1024  ) , 2  ) ,  'Mb'  ) idx, concat( round( sum( data_length +  index_length )  / ( 1024 *1024  ) , 2  ) ,  'Mb'  ) total_size, round( sum( index_length )  / sum( data_length ) , 2  ) idxfrac<br />
FROM information_schema.TABLES<br />
GROUP  BY table_schema;</p></blockquote>
<p>Para ejecutarlo podemos recurrir a PhpMyAdmin, alguna herramienta similar, ejecutar el comando mediante la consola o crear un pequeño script que lo ejecute y muestre los resultados en pantalla...</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/obtener-el-espacio-ocupado-por-las-bases-de-datos-de-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encontrar ficheros en Solaris</title>
		<link>http://picateclas.net/posts/encontrar-ficheros-en-solaris/</link>
		<comments>http://picateclas.net/posts/encontrar-ficheros-en-solaris/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 16:25:59 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[buscar]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[encontrar]]></category>
		<category><![CDATA[ficheros]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=100</guid>
		<description><![CDATA[Buscar ficheros en la línea de comandos de Solaris es muy sencillo, aunque hay que adaptar ligeramente el comando: find / -name nombre.extension -print Donde se puede sustituir / por la ruta completa o relativa desde la que buscar.]]></description>
			<content:encoded><![CDATA[<p>Buscar ficheros en la línea de comandos de Solaris es muy sencillo, aunque hay que adaptar ligeramente el comando:</p>
<blockquote><p><code>find / -name nombre.extension -print</code></p></blockquote>
<p>Donde se puede sustituir / por la ruta completa o relativa desde la que buscar.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/encontrar-ficheros-en-solaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expresión regular para encontrar vídeos de YouTube en un texto</title>
		<link>http://picateclas.net/posts/expresion-regular-para-encontrar-videos-de-youtube-en-un-texto/</link>
		<comments>http://picateclas.net/posts/expresion-regular-para-encontrar-videos-de-youtube-en-un-texto/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:48:47 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[código]]></category>
		<category><![CDATA[fragmentos útiles]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[expresión regular]]></category>
		<category><![CDATA[miniaturas]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regular expression]]></category>
		<category><![CDATA[vídeos]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=98</guid>
		<description><![CDATA[Con la siguiente expresión regular podremos encontrar los identificadores de los vídeos que se encuentren en vídeos de youtube (tanto como links como si están incrustados): /youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&#38;\w;=\+_\-]*/ Esto permite extraer el identificador único del vídeo, que sirve para enlazarlo, incrustarlo u obtener su imagen. Por ejemplo, para obtener la URL de la imagen thumnail del [...]]]></description>
			<content:encoded><![CDATA[<p>Con la siguiente expresión regular podremos encontrar los identificadores de los vídeos que se encuentren en vídeos de youtube (tanto como links como si están incrustados):</p>
<p><code>/youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&amp;\w;=\+_\-]*/</code></p>
<p>Esto permite extraer el identificador único del vídeo, que sirve para enlazarlo, incrustarlo u obtener su imagen. Por ejemplo, para obtener la URL de la imagen thumnail del vídeo podremos usar:<br />
<code lang="php"><br />
preg_match('/youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&amp;\w;=\+_\-]*/',$texto);<br />
$img="http://i2.ytimg.com/vi/{$match[1]}/default.jpg";</code></p>
<p>Vía | <a title="View user profile." href="http://picateclas.net/user/147742">d0t101101</a> en el <a href="http://drupal.org/node/88192#comment-877835">Foro de Drupal</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/expresion-regular-para-encontrar-videos-de-youtube-en-un-texto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirección 301 (permanente) de un subdominio a una nueva dirección</title>
		<link>http://picateclas.net/posts/redireccion-301-permanente-de-un-subdominio-a-una-nueva-direccion/</link>
		<comments>http://picateclas.net/posts/redireccion-301-permanente-de-un-subdominio-a-una-nueva-direccion/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 19:27:05 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[administración]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[redirección]]></category>
		<category><![CDATA[subdominio]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=96</guid>
		<description><![CDATA[Por determinadas razones se puede querer cambiar la dirección en la que se aloja una web en un servidor Apache. Para evitar que se pierda el posicionamiento web de las páginas existentes, se debe crear una redirección permanente, de modo que cuando un navegador solicite un fichero con la URL antigua sea redirigido de una [...]]]></description>
			<content:encoded><![CDATA[<p>Por determinadas razones se puede querer cambiar la dirección en la que se aloja una web en un servidor Apache. Para evitar que se pierda el posicionamiento web de las páginas existentes, se debe crear una redirección permanente, de modo que cuando un navegador solicite un fichero con la URL antigua sea redirigido de una manera transparente al nuevo dominio. Esto es aplicable también al tráfico proveniente de buscadores, de modo que el buscador (google, yahoo, bing...) actualizará sus índices para hacer constar la nueva dirección del contenido, preservando el posicionamiento ya ganado.</p>
<p>Esto se realiza mediante una redirección 301, de carácter permanente. Hay diversas maneras de hacerlo, una de las más sencillas es a través del fichero de configuración .htaccess, en el que deberemos añadir lo siguiente:</p>
<blockquote><p>RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^subdominioantiguo\.tuweb\.com<br />
RewriteRule ^(.*)$ http://servidornuevo.com/$1 [R=301,L]</p></blockquote>
<p>La URL de la nueva dirección puede incluir o no www antes, y puede estar en otro servidor o en el mismo. Además, esta redirección preservará las peticiones que lleguen (si cargabas /contacto en el servidor antiguo, esta redirección te llevará a /contacto en el servidor nuevo).</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/redireccion-301-permanente-de-un-subdominio-a-una-nueva-direccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creación de un bot de twitter sencillo con PHP</title>
		<link>http://picateclas.net/posts/creacion-de-un-bot-de-twitter-sencillo-con-php/</link>
		<comments>http://picateclas.net/posts/creacion-de-un-bot-de-twitter-sencillo-con-php/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 01:12:50 +0000</pubDate>
		<dc:creator>zetxek</dc:creator>
				<category><![CDATA[código]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://picateclas.net/?p=94</guid>
		<description><![CDATA[Twitter tiene un API bastante sencillo sobre el cual se pueden desarrollar aplicaciones de un modo bastante fácil. Con unas pocas líneas podemos montar un bot de twitter que cada hora envíe un mensaje, como explico en BloqNum. $username = 'nombreDeLaCuenta'; $password = 'passwordDeLaCuenta'; date_default_timezone_set('Europe/Madrid'); $hora = date('g'); if ($hora == '1') $message = "Xa [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter <a href="http://apiwiki.twitter.com/">tiene un API bastante sencillo</a> sobre el cual se pueden desarrollar aplicaciones de un modo bastante fácil. Con unas pocas líneas podemos montar un bot de twitter que cada hora envíe un mensaje, como <a href="http://bloqnum.com/posts/la-torre-de-la-berenguela-te-da-la-hora-en-twitter/">explico en BloqNum</a>.</p>
<p><code lang="php"><br />
$username = 'nombreDeLaCuenta';<br />
$password = 'passwordDeLaCuenta';</code></p>
<p><code lang="php">date_default_timezone_set('Europe/Madrid');</p>
<p>$hora = date('g');</p>
<p>if ($hora == '1')<br />
$message = "Xa é a unha... ";<br />
else<br />
$message = "Xa son as ".$hora."... ";</p>
<p>for ($i = 0; $i &lt; $hora; $i++){<br />
$message .= 'TOLON! ';<br />
}</p>
<p>$url = 'http://twitter.com/statuses/update.xml';</p>
<p>$curl_handle = curl_init();<br />
curl_setopt($curl_handle, CURLOPT_URL, "$url");<br />
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);<br />
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);<br />
curl_setopt($curl_handle, CURLOPT_POST, 1);<br />
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");<br />
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");<br />
$buffer = curl_exec($curl_handle);<br />
curl_close($curl_handle);</p>
<p>if (empty($buffer)) {<br />
echo '--error-'.$message;<br />
} else {<br />
echo '--exito-'.$message;<br />
}<br />
</code></p>
<p>Después, con un proceso de cron se automatiza la ejecución del cliente cada hora, para que se publique el mensaje cada 60 minutos. Este archivo enviará el mensaje cada vez que se visite, con lo cual si se quiere proteger habría que añadirle una contraseña o no ponerlo en una ruta accesible públicamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://picateclas.net/posts/creacion-de-un-bot-de-twitter-sencillo-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

