<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>martin.com.uy</title>
	<atom:link href="http://martin.com.uy/feed/" rel="self" type="application/rss+xml" />
	<link>http://martin.com.uy</link>
	<description>Soy nuevo en el barrio...</description>
	<pubDate>Wed, 21 Jul 2010 06:09:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
		<!-- podcast_generator="podPress/8.8" -->
		<copyright>&#xA9; </copyright>
		<managingEditor>m@rtin.com.uy ()</managingEditor>
		<webMaster>m@rtin.com.uy()</webMaster>
		<category></category>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Soy nuevo en el barrio...</itunes:summary>
		<itunes:author></itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name></itunes:name>
			<itunes:email>m@rtin.com.uy</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://martin.com.uy/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://martin.com.uy/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>martin.com.uy</title>
			<link>http://martin.com.uy</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>SPF para la direcciones de correo en tu dominio</title>
		<link>http://martin.com.uy/2010/07/21/spf-para-la-direcciones-de-correo-en-tu-dominio/</link>
		<comments>http://martin.com.uy/2010/07/21/spf-para-la-direcciones-de-correo-en-tu-dominio/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 06:09:47 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Dominios]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=356</guid>
		<description><![CDATA[
Uno de los problemas más comunes en internet es la suplantación de identidad. Una de las aristas de este tema es el caso de envío de correos en nombre de otra persona. Como los protocolos no hacen ninguna verificación en ese sentido, cualquiera de nosotros puede enviar desde la dirección usuario@servidor.com que desee (exista o [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy/images/files/original/171-nslookup.png" ><img src="http://live.martin.com.uy/images/files/medium/171-nslookup-medium.png" border="0" alt="spf para tu direccion de correo .com.uy" /></a></p>
<p>Uno de los <strong>problemas más comunes en internet es la suplantación de identidad</strong>. Una de las aristas de este tema es el caso de <strong>envío de correos en nombre de otra persona</strong>. Como los protocolos no hacen ninguna verificación en ese sentido, cualquiera de nosotros puede enviar desde la dirección usuario@servidor.com que desee (exista o no). Así se propagan muchos fraudes y spam. Sin entrar en temas de seguridad informática y técnicas de firmado, vamos a hablar de un protocolo que se desarrolló hace unos años para hacer frente a esta situación.</p>
<p>La idea de <a rel="nofollow" href="http://www.openspf.org" ><strong>SPF (Sender Policy Framework)</strong></a> es que un servidor de correo, al recibir un mensaje, tomará el dominio de la dirección remitente y le preguntará (consultando el registro TXT por DNS) las directivas. En las directivas estará indicado desde que servidores se pueden enviar emails con direcciones @dominio.com. El servidor de correo verificará si el servidor desde donde efectivamente se envió el mensaje es uno de los autorizados o no; y resolverá que hacer según la misma directiva.<br />
<span id="more-356"></span><br />
Para que quede más claro:</p>
<p>1. Yo envío un correo desde mi servidor local con la dirección usuario1@ejemplo.com como remitente a la dirección usuario2@gmail.com.</p>
<p>2. El servidor de Gmail recibe el mensaje y hace una solicitud por DNS al dominio ejemplo.com para conocer la información del registro TXT.  </p>
<p>3. En ese registro TXT está la directiva SPF de ejemplo.com que le dice si mi servidor -desde donde yo mandé el correo- está autorizado o no, y qué hacer en caso de que no (por ejemplo, rechazar el mensaje).</p>
<p>4. El servidor de Gmail ya sabe si el correo se originó en un servidor autorizado por el propietario del dominio o no. Lógicamente, si en las directivas está autorizada la IP de un shared hosting, no podemos asegurar que sea válido.</p>
<p>Obviamente para que esto funcione el servidor que recibe el mensaje debe implementar SPF. Actualmente los grandes proveedores de correo lo implementan. Si tenés una dirección @gmail.com, @hotmail.com, @yahoo.com, etc. no tenés que preocuparte. Adinet actualmente pareciera que también. Si en cambio tenés una dirección de correo @tudominio.com, vas a tener que agregar la directiva SPF en el registro TXT manualmente.</p>
<p>Ejemplo para dominio .com.uy y Google Apps como servidor exclusivo de correo:</p>
<p>En mi caso utilizo a Anteldata como hosting de DNS. Los registros MX están apuntados a los servidores de Google y el registro TXT que debemos agregar es &#8220;<strong>v=spf1 include:_spf.google.com ~all</strong>&#8220;.</p>
<p>Pueden ver más información y aprender más de la sintáxis en los siguientes lugares:<br />
- <a rel="nofollow" href="http://www.openspf.org" >http://www.openspf.org</a><br />
- <a rel="nofollow" href="https://www.google.com/support/a/bin/answer.py?answer=178723" >https://www.google.com/support/a/bin/answer.py?answer=178723</a></p>
<p>Consultas mediante nslookup:<br />
- <a rel="nofollow" href="http://network-tools.com/nslook/Default.asp" >http://network-tools.com/nslook/Default.asp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/07/21/spf-para-la-direcciones-de-correo-en-tu-dominio/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Redirigir dominios .com.uy a URLs</title>
		<link>http://martin.com.uy/2010/07/20/redirigir-dominios-comuy-a-urls/</link>
		<comments>http://martin.com.uy/2010/07/20/redirigir-dominios-comuy-a-urls/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 23:33:29 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Dominios]]></category>

		<category><![CDATA[.com.uy]]></category>

		<category><![CDATA[dominios uy]]></category>

		<category><![CDATA[redirigir dominio a url]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=355</guid>
		<description><![CDATA[
El panel de administración de Anteldata para dominios .com.uy no brinda la posibilidad de hacer redirecciones a webs ni direcciones de correo -si alguien de allí lee esto, ya queda hecha la sugerencia  -. La solución es hacer una delegación de autoridad a un servidor de DNS mediante registros NS (Name Server). Luego, en [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy/images/files/original/170-afraid.png" ><img src="http://live.martin.com.uy/images/files/medium/170-afraid-medium.png" border="0" alt="redirigir dominios .com.uy a urls" /></a></p>
<p>El panel de administración de <a rel="nofollow" href="http://nic.anteldata.com.uy" ><strong>Anteldata</strong></a> para <strong>dominios .com.uy</strong> no brinda la posibilidad de hacer redirecciones a webs ni direcciones de correo -si alguien de allí lee esto, ya queda hecha la sugerencia <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> -. La solución es hacer una delegación de autoridad a un <strong>servidor de DNS</strong> mediante registros NS (Name Server). Luego, en el servidor de DNS agregaremos URL Forwarding (o como la empresa lo llame). Por suerte hay varios <strong>hostings de DNS gratis</strong>. Propongo esta pequeña guía para hacer todo el proceso en uno de ellos, <a rel="nofollow" href="http://afraid.org" ><strong>Afraid.org</strong></a>.</p>
<p>1. Registrarse en <a rel="nofollow" href="http://afraid.org" ><strong>Afraid.org</strong></a> (gratis)</p>
<p>2. Ingresar y dirigirse a <em>Domains</em> (menu izquierdo)<br />
<span id="more-355"></span><br />
3. Click en <em>Add A Domain</em>. En el formulario que verán solo hace falta escribir el dominio completo (sin http:// ni http://www.) y elegir si desean que sea público o privado. Un dominio público permitirá a otros usuarios de Afraid.org crear subdominios (para registros A, MX, AAAA, Url forwarding, etc).</p>
<p>4. Ingresar en el <a rel="nofollow" href="http://nic.anteldata.com.uy" ><strong>Panel de Anteldata</strong></a> y dirigirse al dominio en cuestión.</p>
<p>5. Clickear <em>Administrar</em> y agregar los siguientes registros NS:</p>
<p>NS1.AFRAID.ORG<br />
NS2.AFRAID.ORG<br />
NS3.AFRAID.ORG<br />
NS4.AFRAID.ORG </p>
<p>6. Esperar a que se actualicen las DNS para que Afraid las reconozca. Puede llevar hasta 24 horas. Ingresen a la sección <em>Domains</em> de Afraid, que visitamos hoy, para comprobar el estado.</p>
<p>7. Una vez superado el punto anterior, en Afraid nos dirigimos a <em>Web Forward</em> (menú izquierdo).</p>
<p>8. Allí clickeamos <em>Add</em> y completamos el formulario. En <em>Redirect From</em> ponemos el subdominio (que puede ser vacío) y buscamos nuestro dominio en la lista. En <em>Redirect to</em> va la web a la que redirigimos. <em>Cloak</em> es para camuflarla y que el navegante en lugar de ver la dirección real en la barra de su navegador, vea nuestro dominio. <em>Page Title</em> es el título que se verá en la ventana del navegador si lo camuflamos y <em>favicon</em> el icono de la pestaña/favoritos.</p>
<p>9. Recomiendo repetir el paso 8 poniendo una vez vacío el subdominio de <em>Redirect from</em> y otra vez &#8220;www&#8221; para lograr que tanto http://dominio.com.uy como http://www.dominio.com.uy lleven al lugar correcto.</p>
<p>A las órdenes por cualquier consulta <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/07/20/redirigir-dominios-comuy-a-urls/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Instalar Gentoo Linux en VMware Workstation</title>
		<link>http://martin.com.uy/2010/07/20/instalar-gentoo-linux-en-vmware-workstation/</link>
		<comments>http://martin.com.uy/2010/07/20/instalar-gentoo-linux-en-vmware-workstation/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 08:07:56 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[gentoo]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=354</guid>
		<description><![CDATA[
Ayer terminé de instalar Gentoo en una máquina virtual VMware Workstation. Para los que no conozcan, Gentoo es diferente a la mayoría de las distros en el sentido de que no trabaja por defecto con paquetes precompilados. En su lugar, se descarga el source del repositorio y se compila en el momento según las directrices [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy/images/files/original/169-gentoo.png" ><img src="http://live.martin.com.uy/images/files/medium/169-gentoo-medium.png" alt="install gentoo 10 in vmware workstation" border="0" /></a></p>
<p>Ayer terminé de <strong>instalar <a rel="nofollow" href="http://gentoo.org" >Gentoo</a> en una máquina virtual VMware Workstation</strong>. Para los que no conozcan,<a rel="nofollow" href="http://gentoo.org" > <strong>Gentoo</strong></a> es diferente a la mayoría de las distros en el sentido de que no trabaja por defecto con paquetes precompilados. En su lugar, se descarga el source del repositorio y se compila en el momento según las directrices especificadas. </p>
<p>Se deduce de esto la cantidad de <strong>tiempo que lleva instalar algo</strong>, el <strong>nivel de dificultad para usuarios nuevos</strong> y la posibilidad de <strong>compilar programas sin determinadas funciones</strong>. Además, estamos hablando de una distribución <em>rolling release</em>, que está actualizando el software a su última versión continuamente. Como contrapartida, tenemos <strong>libertad para optimizar y hacer una configuración realmente a nuestra medida</strong>. El software estará siempre como recién salido del horno, con las nuevas funciones y bugfixes implementados. ¿Inestable? No sé, recién lo instalé. Lo que sí puedo asegurar es que si disponemos de tiempo y ganas, tenemos una excusa para aprender de lo lindo.<br />
<span id="more-354"></span><br />
<strong>Gentoo</strong> es una <strong>distribución linux</strong> que nació en el año 1999 y en 2002 tomó su nombre actual (especie de pingüinos). Tiene una <a rel="nofollow" href="http://forums.gentoo.org" >comunidad de usuarios grande</a>, siempre dispuestos a ayudar, y una <strong>excelente documentación</strong>. El <strong>gestor de paquetes se llama Portage</strong> e implementa una serie de características avanzadas, como la resolución de dependencias, que hacen que instalar algo sea un comando simple (en una configuración básica). Este sistema está inspirado en los ports de FreeBSD.</p>
<p>Si bien en algunas versiones entre 2006 y 2008 se incorporó instalador gráfico, lo cierto es que la instalación actual es en modo de texto. Eso significa que debemos hacer todo a mano. Afortunadamente contamos con el <a rel="nofollow" href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml" >Handbook</a> que será nuestro mejor amigo.</p>
<p>Para los aventureros que se animen, no voy a repetir todo el proceso pero sí un pantallazo general. Lo que hacemos es arrancar con un minimal-live-cd que nos habilita una línea de comandos con las herramientas básicas. Lo siguiente es particionar y formatear el disco (fdisk para lo primero y lo segundo depende del sistema de archivos que vayamos a usar). Bajamos el Stage3 (un sistema Gentoo básico, compilado) y trabajamos en él con un entorno chroot. Compilamos el kernel. Podemos hacerlo manualmente o con un programita llamado genkernel. Luego del kernel, siguiendo la guía, iremos instalando otro software imprescindible y las configuraciones en cada uno. Hasta allí, en algunas horas, tenemos un sistema andando en modo consola. Lo siguiente, para los que deseen, es instalar <strong>X</strong> y <strong>KDE</strong> o <strong>Gnome</strong>. Para que funcione se deben instalar Dbus, Hal y ConsoleKit. No olviden luego setear todo esto para que inicie junto con el sistema en runlevel 3 (rc-update). Si quieren entrar a KDE con el usuario root -como yo-, editen el archivo /usr/share/config/kdm/kdmrc.</p>
<p>Dejo a disposición el archivo <a rel="nofollow" href="http://martin.com.uy/sitio/xorg.conf" ><strong>/etc/X11/xorg.conf</strong></a> para hacerlo andar en una <strong>VMware 7</strong>. Las VMware-tools se pueden instalar sin problemas. Se reconoce el mouse, teclado, sonido, la tarjeta de red y todo lo que he probado hasta el momento.</p>
<p>Si todo esto no les inspira pero quieren probarlo, hay un <a rel="nofollow" href="http://www.gentoo.org/main/en/where.xml" ><strong>LiveDVD oficial</strong></a> -que me anduvo algo lento y no tiene instalador obviamente-.</p>
<p>Como conclusión, creo vale la pena probar y aprender. No sé si es una solución definitiva para aquellos que buscan cierta &#8220;comodidad&#8221; y configuración &#8220;por defecto&#8221;. Como dato anecdótico, <strong>la compilación me insumió unas 30 horas</strong> continuas <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/07/20/instalar-gentoo-linux-en-vmware-workstation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Calcular Combinatoria con Sage (matemática)</title>
		<link>http://martin.com.uy/2010/05/02/calcular-combinatoria-con-sage-matematica/</link>
		<comments>http://martin.com.uy/2010/05/02/calcular-combinatoria-con-sage-matematica/#comments</comments>
		<pubDate>Mon, 03 May 2010 02:26:53 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[matematica]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[sage]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=353</guid>
		<description><![CDATA[
Sage es un software de matemática open source, licenciado bajo GPL. Tiene interfaz web -además de la línea de comandos- y permite calcular derivadas, integrales, límites, sumatorias, ploteos (gráficas), solución de ecuaciones, desarrollos de taylor, etc. Además, con el poder de programar funciones en un lenguaje prácticamente idéntico a Python; definir funciones, llamadas recursivas, bucles [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://live.martin.com.uy/images/files/original/140-sage_logo_new.png" alt="Sage math" /></p>
<p><strong><a rel="nofollow" href="http://sagemath.org" >Sage</a> es un software de matemática open source</strong>, licenciado bajo GPL. Tiene interfaz web -además de la línea de comandos- y permite <strong>calcular derivadas, integrales, límites, sumatorias, ploteos (gráficas), solución de ecuaciones, desarrollos de taylor</strong>, etc. Además, con el poder de programar funciones en un lenguaje prácticamente idéntico a <strong>Python</strong>; definir funciones, llamadas recursivas, bucles iterativos, bloques condicionales, variables, tuplas, etc.</p>
<p>Está disponible para <strong>Mac OS X y Linux</strong>. En el caso de Linux, si tienen problemas con el paquete compilado -o quieren la última versión-, descarguen el source y compilen. En un Core 2 Duo de 2.0 Ghz demoró algo menos de 3 horas la compilación; es una aplicación grande.</p>
<p><span id="more-353"></span>En los siguientes artículos estaré compartiendo algunas funciones que pueden resultarles útiles.</p>
<p><strong>Ejemplo 1: Calcular Combinatoria</strong></p>
<p><code># Combinatoria. k es subíndice de C. n es supraíndice de C.<br />
def combinatoria(k, n):<br />
  return factorial(n) / ( factorial(n-k)*factorial(k) )</p>
<p># Llamada a la función de ejemplo<br />
print "Combinatoria 0 - 150: ",combinatoria(0, 150)</code></p>
<p>PD: El tema de la indentación en Wordpress me tiene cansado. Tengan en cuenta que se debe indentar el código como en Python.</p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/05/02/calcular-combinatoria-con-sage-matematica/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Red Hat Linux Enterprise 6 (beta)</title>
		<link>http://martin.com.uy/2010/04/24/red-hat-linux-enterprise-6-beta/</link>
		<comments>http://martin.com.uy/2010/04/24/red-hat-linux-enterprise-6-beta/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 06:54:33 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=352</guid>
		<description><![CDATA[
Red Hat Enterprise Linux 6 (beta)
Terminé de bajarme los 3.6Gb del ISO y para ser descarga directa dio bastante batalla el servidor de Red Hat: cuelgues, desconexiones y baja velocidad cada cierto tiempo.
En cuanto al SO, apenas tuve tiempo de darle una vichada muy por arriba. Es un gnome por defecto, con algunas apps desarrolladas [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy/images/files/original/136-RedHatEnterprise6.png" ><img src="http://live.martin.com.uy/images/files/medium/136-RedHatEnterprise6-medium.png" border="0" /></a></p>
<p><strong>Red Hat Enterprise Linux 6 (beta)</strong></p>
<p>Terminé de bajarme los 3.6Gb del ISO y para ser descarga directa dio bastante batalla el servidor de Red Hat: cuelgues, desconexiones y baja velocidad cada cierto tiempo.</p>
<p>En cuanto al SO, apenas tuve tiempo de darle una vichada muy por arriba. Es un gnome por defecto, con algunas apps desarrolladas por Red Hat (de configuración y una de reporte de bugs muy interesante) y lo más clásico para el usuario desktop: OpenOffice, Firefox, Pidgin, etc.<br />
<span id="more-352"></span><br />
Tiene los paquetes bastante actualizados: Kernel 2.6.32, Firefox 3.5, OpenOffice 3, Gnome 2.28.</p>
<p>La instalación comienza algo cruda (al estilo FreeBSD) pero después se pasa al instalador gráfico.</p>
<p>Está orientada al &#8220;ámbito empresarial&#8221; pero podría utilizarse perfectamente en cualquier contexto.</p>
<p>Link para la descarga e información técnica: <a rel="nofollow" href="http://live.martin.com.uy/index.php?m=livenote&#038;id=19" >http://live.martin.com.uy/index.php?m=livenote&#038;id=19</a></p>
<p>Esto es todo por el momento.</p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/24/red-hat-linux-enterprise-6-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Volviendo a GNU Wget</title>
		<link>http://martin.com.uy/2010/04/23/volviendo-a-gnu-wget/</link>
		<comments>http://martin.com.uy/2010/04/23/volviendo-a-gnu-wget/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 08:54:41 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=351</guid>
		<description><![CDATA[
Estuve utilizando el popular administrador de descargas FlashGet -para Windows, pero perfectamente emulado por Wine- hasta que hoy me encontré con un problema. Al intentar descargar el Red Hat Enterprise Linux 6 beta, apareció el error &#8220;Too many users connected&#8221; y no hubo forma de superarlo. Imagino que se trata de alguna limitación del servidor [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://live.martin.com.uy/images/files/medium/129-wget-medium.jpg" border="0" alt="" /></p>
<p>Estuve utilizando el popular <strong>administrador de descargas FlashGet </strong>-para Windows, pero perfectamente emulado por Wine- hasta que hoy me encontré con un problema. Al intentar descargar el Red Hat Enterprise Linux 6 beta, apareció el error &#8220;Too many users connected&#8221; y no hubo forma de superarlo. Imagino que se trata de alguna limitación del servidor de Red Hat para evitar abusos y la forma en que trabaja FlashGet. En Firefox empezó a bajar correctamente y al rato se cortó, por lo que hubiera tenido que empezar de 0 otra vez. Ahí decidí volver a la raíz: <strong>GNU Wget</strong> -odio todos sus <em>frontends</em>, inestables-. </p>
<p>La descarga fue correcta hasta que en cierto punto quedó nuevamente sin respuesta: &#8220;2010-04-23 04:46:04 (64,3 KB/s) - Conexión de datos: Conexión reiniciada por el par;&#8221;. Lo que me motiva a este artículo es compartir rápidamente algunos comandos para utilizar esta poderosa herramienta.<br />
<span id="more-351"></span><br />
<strong>Retomar una descarga que fue interrumpida.</strong><br />
<code>wget -c http://www.url.to/archivo.ext</code></p>
<p><strong>Limintar el ancho de banda para la descarga.</strong><br />
<code>wget --limit-rate=20k http://www.url.to/archivo.ext</code></p>
<p><strong>Enviar la descarga al background.</strong> Cada vez que inicien la sesión, silenciosamente continuará descargando.<br />
<code>wget -b http://www.url.to/archivo.ext</code></p>
<p><strong>Enviar el archivo descargado a un archivo.</strong> Esto sirve para <strong>renombrar el archivo</strong> y/o para mandarlo a un path diferente de la posición actual.<br />
<code>wget  -O /path/to/downloads/archivo.ext http://www.url.to/archivo.ext</code></p>
<p><strong>Reintentar una descarga aunque el servidor aparezca como caído.</strong> Útil para servidores inestables.<br />
<code>wget --retry-connrefused http://www.url.to/archivo.ext</code></p>
<p><strong>Reintentar una descarga n veces</strong> (0 para infinito).<br />
<code>wget -t n http://www.url.to/archivo.ext</code></p>
<p>Hay decenas más, pero hasta aquí los que me parecieron útiles. Se pueden combinar prácticamente todos ellos. Más información en &#8220;man wget&#8221; <img src='http://martin.com.uy/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/23/volviendo-a-gnu-wget/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Caracteres especiales con UTF-8,  ajax (javascript) y php</title>
		<link>http://martin.com.uy/2010/04/21/caracteres-especiales-con-utf-8-ajax-javascript-y-php/</link>
		<comments>http://martin.com.uy/2010/04/21/caracteres-especiales-con-utf-8-ajax-javascript-y-php/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 05:32:09 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[ajax]]></category>

		<category><![CDATA[caracteres especiales]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[uft-8]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=350</guid>
		<description><![CDATA[
Vamos a definir muy brevemente estos nombres:
UTF-8: uno de los estándares para la representación de caracteres Unicode (cualquier caracter que vean en el &#8220;mapa de caracteres&#8221; de su SO), utilizando de 1 a 4 bytes.
Caracteres especiales: un nombre ambiguo para referirse a símbolos distintos a los alfanuméricos. Por ejemplo: +, ¿, ?, ¨, &#38;, %, [...]]]></description>
			<content:encoded><![CDATA[<p><img border="0" src="http://live.martin.com.uy/images/files/medium/128-caracteres-especiales-medium.png" /></p>
<p>Vamos a definir muy brevemente estos nombres:</p>
<p><strong>UTF-8</strong>: uno de los estándares para la representación de caracteres Unicode (cualquier caracter que vean en el &#8220;mapa de caracteres&#8221; de su SO), utilizando de 1 a 4 bytes.</p>
<p><strong>Caracteres especiales</strong>: un nombre ambiguo para referirse a símbolos distintos a los alfanuméricos. Por ejemplo: +, ¿, ?, ¨, &amp;, %, ´.</p>
<p><strong>Ajax</strong>: mecanismo utilizado para transferir información entre el DOM de un sitio web (<strong>JavaScript</strong>) y un servidor (<strong>php</strong> en este caso).</p>
<p><strong>¿Cuál es el problema?</strong></p>
<p>Ajax utiliza algunos de los caracteres especiales para dar formato a las solicitudes que hace al servidor. Por ejemplo, con ?, = y &amp; se separan los parámetros de los envíos GET. Al mezclarse unos símbolos con otros, la información llega errónea. El otro problema es de codificación: los bytes de un caracter en otro formato equivale a un caracter distinto. Hay que tener cuidado al interpretarlos, almacenarlos y representarlos.</p>
<p><strong>Aquí va una posible solución que abarca todo el problema:</strong></p>
<p><span id="more-350"></span>1. Agregar la siguiente etiqueta a la cabecera header del HTML:</p>
<p>&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html;charset=utf-8&#8243; /&gt;</p>
<p>Atención: no copiar y pegar porque las comillas salen erróneas!</p>
<p>2. En cada solicitud a través de Ajax, escapar el texto con la siguiente función javascript:</p>
<p>encodeURIComponent(texto)</p>
<p>3. Cuando php reciba el parámetro, decodificarlo de la siguiente manera:</p>
<p>rawurldecode(utf8_decode($_POST['parametro']))</p>
<p>4. Cuando queramos devolver texto en respuesta a un pedido Ajax, utilizar lo siguiente:</p>
<p>utf8_encode($texto)</p>
<p>Listo <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/21/caracteres-especiales-con-utf-8-ajax-javascript-y-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paginación en php: menú de 7 casilleros</title>
		<link>http://martin.com.uy/2010/04/14/paginacion-en-php-menu-de-7-casilleros/</link>
		<comments>http://martin.com.uy/2010/04/14/paginacion-en-php-menu-de-7-casilleros/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 08:29:38 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[menu]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=349</guid>
		<description><![CDATA[
Ejemplo de paginación en el módulo Live Notes de http://live.martin.com.uy
Cuando el output de una función php es demasiado grande en cantidad de resultados, lo mejor es paginarlo; esto es dividirlo en páginas de un largo razonable y agregar un menú que permita navegar entre ellas. Lo que hay en el fondo es una consulta SQL [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://martin.com.uy/hosting/images/medium/126-ejemplopaginacion-medium.jpg" /><br />
<small>Ejemplo de paginación en el módulo Live Notes de <a rel="nofollow" href="http://live.martin.com.uy" >http://live.martin.com.uy</a></small></p>
<p>Cuando el output de una <strong>función php</strong> es demasiado grande en cantidad de resultados, lo mejor es <strong>paginarlo; esto es dividirlo en páginas</strong> de un largo razonable y agregar un <strong>menú</strong> que permita navegar entre ellas. Lo que hay en el fondo es una consulta SQL a la que ingresan dos variables extra: la cantidad de filas que vamos a obtener (tamaño de cada página) y a partir de cuál (página que queremos mostrar). Por ejemplo:</p>
<p>Supongamos que tenemos una tabla &#8220;nombres&#8221; con las siguientes filas:</p>
<p>1. juan<br />
2. pedro<br />
3. oscar<br />
4. maria<br />
5. gonzalo<br />
6. martin<br />
7. andrea<br />
8. emiliano<br />
9. alvaro<br />
10. federico<br />
11. nicolas<br />
12. pablo<br />
13. mateo<br />
<span id="more-349"></span><br />
Decidimos que aparezcan 5 nombres por página. Las consultas SQL serán:</p>
<p>&#8220;SELECT nombre FROM usuarios LIMIT 0, 5&#8243; (primer página)</p>
<p>1. juan<br />
2. pedro<br />
3. oscar<br />
4. maria<br />
5. gonzalo</p>
<p>&#8220;SELECT nombre FROM usuarios LIMIT 5, 5&#8243; (segunda página)</p>
<p>6. martin<br />
7. andrea<br />
8. emiliano<br />
9. alvaro<br />
10. federico</p>
<p>&#8220;SELECT nombre FROM usuarios LIMIT 10, 5&#8243; (tercera página)</p>
<p>11. nicolas<br />
12. pablo<br />
13. mateo</p>
<p>En forma genérica: &#8220;SELECT nombre FROM usuarios LIMIT n, x&#8221; (n es a partir de qué fila y x la cantidad de filas a obtener).</p>
<p>x lo vamos a decidir nosotros arbitrariamente. n lo va a decidir el visitante de nuestra página según qué haya clickeado en el <strong>menú</strong>. Podría ser, a priori, algo así: &#8220;&#8221;SELECT nombre FROM usuarios LIMIT $_GET['pagina'], 5&#8243;. <em>ATENCIÓN: nunca ingresen una variable del usuario a una consulta SQL sin revisarla antes porque son vulnerables a una inyección, el ejemplo es meramente ilustrativo.</em></p>
<p>Obviamente, siguiendo esa idea, los links para clickear en cada página se verían de esta forma: &#8220;&#8230;index.php?pagina=1&#8243;, &#8220;&#8230;index.php?pagina=2&#8243; y &#8220;&#8230;index.php?pagina=3&#8243;.</p>
<p>Como imaginarán, es poco práctico editar el menú y sus links para cada página que se genere. Lo que necesitamos es un <strong>menú automático</strong>. Ingresamos nombres en nuestra tabla y se va armando solo: agregando páginas, eliminando, mostrando las páginas cercanas a la que el usuario está actualmente, ocultando otras (no podemos mostrar 44 links por ejemplo), etc.</p>
<p>Hay distintos estilos, para cada gusto y para cada necesidad. Uno de los que más me gustan -muy versátil además- es el de 7 casilleros. Sería en su forma genérica así:</p>
<p><img border="0" src="http://martin.com.uy/hosting/images/original/125-menupaginado.png" /></p>
<p>Estamos en la página 7. Vemos la anterior, la siguiente, la primera y la última de todas. Cuando llegamos a los extremos (páginas iniciales o finales), los &#8220;&#8230;&#8221; se sustituyen por los valores y se muestra la mayor cantidad de páginas posibles. La cantidad de casilleros es fija. </p>
<p>Algo que parece tan simple, tiene cierta lógica y por eso quiero compartir con ustedes mi código:</p>
<p><strong><a rel="nofollow" href="http://martin.com.uy/sitio/material/paginacion.zip" >Descargar</a></strong></p>
<p>Está permitida la libre modificación, copia, distribución, etc. manteniendo los créditos originales.</p>
<p>La parte de MySQL queda para ustedes pero dejo un tip sobre una llamada posible:</p>
<p>$sql_total = mysql_query(&#8221;SELECT COUNT(id) FROM nombres&#8221;);<br />
$total = mysql_result($sql_total, 0);<br />
$casilleros_array = get_casilleros($total, 5, $_GET['pagina']);</p>
<p>Nota: no copien y peguen el texto porque Wordpress transforma las comillas en caracteres extraños.</p>
<p>Escucho comentarios, sugerencias, pedidos de ayuda, etc. ¡Larga vida al open source! <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/14/paginacion-en-php-menu-de-7-casilleros/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cambio de diseño en live.martin.com.uy</title>
		<link>http://martin.com.uy/2010/04/09/cambio-de-diseno-en-livemartincomuy/</link>
		<comments>http://martin.com.uy/2010/04/09/cambio-de-diseno-en-livemartincomuy/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 02:02:04 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[cafe montevideo]]></category>

		<category><![CDATA[live.martin.com.uy]]></category>

		<category><![CDATA[martin balao]]></category>

		<category><![CDATA[martin.com.uy]]></category>

		<category><![CDATA[rtin.com.uy]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=348</guid>
		<description><![CDATA[
No duraron mucho los tonos claros y el limón. Aquí va el nuevo trabajo: casi lo mismo -con alguna pequeña mejora- pero en gris oscuro y vivos rosados. 
live.martin.com.uy
No va a faltar quien diga que el de antes estaba mejor jaja
Gracias nuevamente por los comentarios 
]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy" ><img src="http://martin.com.uy/hosting/images/medium/124-livemartin-medium.jpg" border="0" alt="live.martin.com.uy martin balao" /></a></p>
<p>No duraron mucho los <a rel="nofollow" href="http://martin.com.uy/2010/04/06/livemartincomuy-minisite-personal/" >tonos claros y el limón</a>. Aquí va el nuevo trabajo: casi lo mismo -con alguna pequeña mejora- pero en gris oscuro y vivos rosados. </p>
<p><strong><a rel="nofollow" href="http://live.martin.com.uy" >live.martin.com.uy</a></strong></p>
<p>No va a faltar quien diga que el de antes estaba mejor jaja</p>
<p>Gracias nuevamente por los comentarios <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/09/cambio-de-diseno-en-livemartincomuy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>live.martin.com.uy: minisite personal</title>
		<link>http://martin.com.uy/2010/04/06/livemartincomuy-minisite-personal/</link>
		<comments>http://martin.com.uy/2010/04/06/livemartincomuy-minisite-personal/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 16:17:17 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://martin.com.uy/?p=347</guid>
		<description><![CDATA[
Quiero presentar live.martin.com.uy, un minisite personal. 
En la portada están los artículos que publico en distintos blogs -como un RSS online- con la posibilidad de ver y escribir comentarios sin tener que ingresar a cada uno. Hay también una página de &#8220;perfil&#8221;, un formulario de contacto, un shoutbox y algunos links -iré agregando otros más [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://live.martin.com.uy" ><img src="http://martin.com.uy/hosting/images/medium/123-livemartincomuy-medium.jpg" alt="live.martin.com.uy" border="0" /></a></p>
<p>Quiero presentar <strong><a rel="nofollow" href="http://live.martin.com.uy" >live.martin.com.uy</a></strong>, un minisite personal. </p>
<p>En la portada están los artículos que <strong>publico en distintos blogs</strong> -como un RSS online- con la posibilidad de <strong>ver y escribir comentarios</strong> sin tener que ingresar a cada uno. Hay también una página de &#8220;perfil&#8221;, un formulario de contacto, un <em>shoutbox</em> y algunos links -iré agregando otros más adelante-.</p>
<p>Está programado con <strong>php, javascript (AJAX) y MySQL</strong>. Además, utilicé <strong>html, css2 y Photoshop CS2</strong>. Made on <a rel="nofollow" href="http://linux.com" ><strong>Linux</strong></a> <img src='http://martin.com.uy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<span id="more-347"></span><br />
El idioma en inglés es por falta de tiempo. Los textos estáticos son imágenes, para asegurar la tipografía en todos los SOs. No es un método aconsejable para actualizar contenidos dinámicos y tampoco para posicionar en buscadores. Aunque en este caso se los podría engañar sutilmente creando divs ocultos con el mismo texto -si el texto es el mismo, debería ser lícito-.</p>
<p>Y la motivación fue agregar una firmita a los correos salientes:<br />
<a rel="nofollow" href="http://live.martin.com.uy" ><img border="0" src="http://live.martin.com.uy/live.png" /></a></p>
<p>Leo vuestros comentarios, críticas y sugerencias..</p>
]]></content:encoded>
			<wfw:commentRss>http://martin.com.uy/2010/04/06/livemartincomuy-minisite-personal/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
