<?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>Jorge Iván Meza Martínez &#187; Google</title> <atom:link href="http://blog.jorgeivanmeza.com/tag/google/feed/" rel="self" type="application/rss+xml" /><link>http://blog.jorgeivanmeza.com</link> <description>The Fire Within Me: &#34;knowledge will set you free&#34;</description> <lastBuildDate>Tue, 31 Jan 2012 18:18:13 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Instalar Google Chrome en GNU/Linux CentOS 6</title><link>http://blog.jorgeivanmeza.com/2011/08/instalar-google-chrome-en-gnulinux-centos-6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-google-chrome-en-gnulinux-centos-6</link> <comments>http://blog.jorgeivanmeza.com/2011/08/instalar-google-chrome-en-gnulinux-centos-6/#comments</comments> <pubDate>Sun, 21 Aug 2011 15:35:34 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[CentOS]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[yum]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=39666</guid> <description><![CDATA[Introducción. El artículo presentado a continuación describe el procedimiento necesario para instalar el navegador web Google Chrome en GNU/Linux CentOS 6 utilizando repositorios Yum.  Este procedimiento probablemente aplique también para otras versiones de CentOS y Fedora. Instalación. Crear el nuevo &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/08/instalar-google-chrome-en-gnulinux-centos-6/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>El artículo presentado a continuación describe el procedimiento necesario para instalar el navegador web Google Chrome en GNU/Linux CentOS 6 utilizando repositorios Yum.  Este procedimiento probablemente aplique también para otras versiones de CentOS y Fedora.</p><h2>Instalación.</h2><p>Crear el nuevo repositorio de Yum.</p><p><span
style="font-family: 'courier new', courier;"># vi /etc/yum.repos.d/google-chrome.repo</span></p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">[google-chrome]</span><br
/><span
style="font-family: 'courier new', courier;">name=google-chrome</span><br
/><span
style="font-family: 'courier new', courier;">baseurl=http://dl.google.com/linux/chrome/rpm/stable/<strong>i386</strong></span><br
/><span
style="font-family: 'courier new', courier;">enabled=1</span><br
/><span
style="font-family: 'courier new', courier;">gpgcheck=1</span></p><p>Si se desea la versión de<em> 64 bits</em> utilizar la siguiente descripción del repositorio.</p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">[google-chrome]</span><br
/><span
style="font-family: 'courier new', courier;">name=google-chrome</span><br
/><span
style="font-family: 'courier new', courier;">baseurl=http://dl.google.com/linux/chrome/rpm/stable/<strong>x86_64</strong></span><br
/><span
style="font-family: 'courier new', courier;">enabled=1</span><br
/><span
style="font-family: 'courier new', courier;">gpgcheck=1</span></p><p>Instalar los paquetes deseados.</p><p><span
style="font-family: 'courier new', courier;"># yum &#8211;nogpgcheck install google-chrome-stable</span></p><p>Además de la versión <em>estable</em> también es posible instalar la versión <em>en desarrollo</em> (<span
style="font-family: 'courier new', courier;">google-chrome-beta</span>) y la <em>inestable</em> (<span
style="font-family: 'courier new', courier;">google-chrome-unstable</span>).</p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/08/instalar-google-chrome-en-gnulinux-centos-6/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Google Chrome y los puertos inseguros: ERR_UNSAFE_PORT</title><link>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-chrome-y-los-puertos-inseguros-err_unsafe_port</link> <comments>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/#comments</comments> <pubDate>Fri, 03 Jun 2011 00:45:49 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=17721</guid> <description><![CDATA[Introducción. Aparentemente Google Chrome incluye características de seguridad obligatorias como esta que impide que el usuario acceda a servidores a través de ciertos puertos considerados inseguros aunque eso sea realmente lo que se desea. A continuación se define el procedimiento &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Aparentemente <a
href="http://www.google.com/chrome/" target="_blank">Google Chrome</a> incluye características de seguridad <em>obligatorias</em> como esta que impide que el usuario acceda a servidores a través de ciertos puertos considerados inseguros aunque eso sea realmente lo que se desea.</p><div
id="attachment_17723" class="wp-caption aligncenter" style="width: 815px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/06/Selection_014.png"><img
class="size-full wp-image-17723" title="Selection_014" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/06/Selection_014.png" alt="Error puertos inseguros de Google Chrome" width="805" height="190" /></a><p
class="wp-caption-text">Error puertos inseguros de Google Chrome</p></div><p>A continuación se define el procedimiento necesario para indicarle a Chrome que efectivamente se desea acceder a esos puertos.</p><h2>Procedimiento.</h2><p>La única opción es indicarle a Chrome desde el momento de su ejecución cuales son los puertos que se consideran seguros para permitir conexiones mas allá de los estándar.  Para hacer esto es necesario indicar el parámetro <span
style="font-family: 'courier new', courier;">&#8211;explicitly-allowed-ports</span> seguido por la lista de puertos separados por comas.  Por ejemplo:</p><p><span
style="font-family: 'courier new', courier;">$ /usr/bin/google-chrome &#8211;explicitly-allowed-ports=4444,5555,6666</span></p><p>Por facilidad, especialmente en la plataforma Windows, se recomienda modificar el acceso directo a la aplicación para que la modificación perdure.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalando Google Chrome en GNU/Linux Ubuntu 11.04 (y otros)</title><link>http://blog.jorgeivanmeza.com/2011/05/instalando-google-chrome-en-gnulinux-ubuntu-11-04-y-otros/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-google-chrome-en-gnulinux-ubuntu-11-04-y-otros</link> <comments>http://blog.jorgeivanmeza.com/2011/05/instalando-google-chrome-en-gnulinux-ubuntu-11-04-y-otros/#comments</comments> <pubDate>Thu, 12 May 2011 01:38:54 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Browser]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Ubuntu]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=16078</guid> <description><![CDATA[Introducción. Google Chrome es el navegador desarrollado por Google.  En lo personal lo utilizo bastante aunque prefiero utilizar Firefox durante el desarrollo de aplicaciones web. Desde su sitio web es posible descargar los paquetes DEB (Debian y Ubuntu) o RPM &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/05/instalando-google-chrome-en-gnulinux-ubuntu-11-04-y-otros/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p><a
href="http://www.google.com/chrome/" target="_blank"></a><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/new-chrome-logo.png"><img
class="alignleft size-full wp-image-16079" title="new-chrome-logo" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/new-chrome-logo.png" alt="" width="99" height="97" /></a>Google Chrome es el navegador desarrollado por Google.  En lo personal lo utilizo bastante aunque prefiero utilizar <a
href="http://www.getfirefox.com/" target="_blank">Firefox</a> durante el desarrollo de aplicaciones web.</p><p>Desde su sitio web es posible descargar los paquetes DEB (Debian y Ubuntu) o RPM (Fedora y OpenSuse) para su instalación sin embargo he encontrado dificultades con algunas librerías que son dependencias del navegador.  Por este motivo es mas práctico utilizar directamente el repositorio que Google provee y cuyo procedimiento se describe a continuación.</p><h2>Procedimiento de instalación.</h2><p>Descargar e instalar la llave pública del repositorio de Google.</p><p>$ <span
style="font-family: courier new,courier;">wget -q -O &#8211; https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -</span></p><p>Agregar el repositorio de Google a la lista de repositorios conocidos por el sistema operativo.</p><p>$ <span
style="font-family: courier new,courier;">sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" &gt;&gt; /etc/apt/sources.list.d/google.list'</span></p><p>Actualizar el índice de paquetes de los repositorios.</p><p>$ <span
style="font-family: courier new,courier;">sudo apt-get update</span></p><p>Instalar la versión <em>estable</em> de Google Chrome.</p><p>$ <span
style="font-family: courier new,courier;">sudo apt-get install google-chrome-stable</span></p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/05/instalando-google-chrome-en-gnulinux-ubuntu-11-04-y-otros/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>En dónde estoy y hacia dónde me dirijo ? (versión Google)</title><link>http://blog.jorgeivanmeza.com/2011/03/en-donde-estoy-y-hacia-donde-me-dirijo-version-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=en-donde-estoy-y-hacia-donde-me-dirijo-version-google</link> <comments>http://blog.jorgeivanmeza.com/2011/03/en-donde-estoy-y-hacia-donde-me-dirijo-version-google/#comments</comments> <pubDate>Wed, 16 Mar 2011 18:10:49 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Software geográfico]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[geolocalización]]></category> <category><![CDATA[georreferenciación]]></category> <category><![CDATA[GIS]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Maps]]></category> <category><![CDATA[rutas]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=14813</guid> <description><![CDATA[Introducción. Esta semana decidí experimentar un poco mas con la versión 3 del API de Google Maps que fue liberado hace relativamente poco.  Esta vez, quise hacer un prototipo sencillo pero interesante que integrara las principales funcionalidades que el servicio &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/03/en-donde-estoy-y-hacia-donde-me-dirijo-version-google/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Esta semana decidí experimentar un poco mas con la versión 3 del API de Google Maps que fue liberado hace relativamente poco.  Esta vez, quise hacer un prototipo sencillo pero interesante que integrara las principales funcionalidades que el servicio de Google Maps ofrece en los navegadores web actuales.</p><p>En este caso utilicé los mapas, la geocodificación y el trazado de rutas de Google y el servicio de geolocalización basada en el navegador web para obtener la siguiente funcionalidad.</p><ul><li>El servicio de geolocalización del navegador web permite situar al usuario en el espacio sin el uso de un GPS, esto gracias a una aproximación que aparentemente depende de la infraestructura del ISP.  A través de este servicio hace un par de meses lograba una geolocalización casi precisa de mi casa, mientras que recientemente sugiere que vivo en Cali/Valle, una ciudad que queda a unas 3 horas de viaje.</li><li>El servicio de mapas permite situar gráficamente dos puntos: uno el del usuario geolocalizado y otro, un punto de destino que se elige libremente con el botón izquierdo del ratón.</li><li>El servicio de rutas de Google permite trazar el camino necesario para llegar desde el punto de orígen hasta el punto de destino distinguiendo si el recorrido se hace caminando o conduciendo un vehículo.  Este servicio se complementa con el servicio de direcciones que determina las indicaciones que se deben seguir para llegar efectivamente al destino elegido.</li><li>El último servicio utilizado corresponde con el de geocodificación que permite convertir el nombre de una ubicación (una ciudad por ejemplo) a su correspondiente coordenada geográfica (latitud y longitud).  Esto se utiliza para el sistema de <em>teletransportación</em> del usuario que permite ubicarlo en cualquier lugar que se especifique.</li></ul><p>El aprovechamiento de estos APIs desde Javascript fue muy simple de implementar y fácilmente se desarrolló el prototipo.  Desafortunadamente Google no cuenta con el servicio de trazado de rutas en Colombia, motivo por el cual estoy revisando los servicios ofrecidos por BingMaps y OpenStreetMaps para continuar mi experimentación.</p><h2>El prototipo.</h2><div
id="attachment_14821" class="wp-caption aligncenter" style="width: 670px"><a
href="http://demo.jorgeivanmeza.com/GMaps/WhereAmI/"><img
class="size-full wp-image-14821" title="screenshot" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/03/screenshot.png" alt="Prototipo de aplicación - Where am I and where am I heading to ?" width="660" height="423" /></a><p
class="wp-caption-text">Prototipo de aplicación - Where am I and where am I heading to ?</p></div><h2>Enlaces.</h2><ul><li>Prototipo funcional del proyecto.<br
/> <a
href="http://demo.jorgeivanmeza.com/GMaps/WhereAmI/" target="_blank">http://demo.jorgeivanmeza.com/GMaps/WhereAmI/</a></li><li>W3C Geolocation API specification.<br
/> <a
href="http://dev.w3.org/geo/api/spec-source.html" target="_blank">http://dev.w3.org/geo/api/spec-source.html</a></li><li>Google Maps API Family.<br
/> <a
href="http://code.google.com/apis/maps/index.html" target="_blank">http://code.google.com/apis/maps/index.html</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/03/en-donde-estoy-y-hacia-donde-me-dirijo-version-google/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Instalar Chromium Browser en Linux Ubuntu 9.10</title><link>http://blog.jorgeivanmeza.com/2009/12/instalar-chromium-browser-en-linux-ubuntu-9-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-chromium-browser-en-linux-ubuntu-9-10</link> <comments>http://blog.jorgeivanmeza.com/2009/12/instalar-chromium-browser-en-linux-ubuntu-9-10/#comments</comments> <pubDate>Sun, 06 Dec 2009 23:33:45 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Browser]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[Chromium]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Ubuntu]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=2185</guid> <description><![CDATA[Actualización. Ubuntu 10.x. Este procedimiento continúa vigente si cambios para las versiones 10.04 y 10.10 de Ubuntu. Introducción. Chromium Browser (Chrome) es el navegador web de Google que desde hace un tiempo puede ser descargado y utilizado en la plataforma &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/12/instalar-chromium-browser-en-linux-ubuntu-9-10/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Actualización.</h2><h3>Ubuntu 10.x.</h3><p>Este procedimiento continúa vigente si cambios para las versiones 10.04 y 10.10 de Ubuntu.</p><h2>Introducción.</h2><p><em>Chromium Browser</em> (<em>Chrome</em>) es el navegador web de Google que desde hace un tiempo puede ser <a
href="http://www.google.com/chrome/" target="_blank">descargado</a> y utilizado en la plataforma Windows.  Desafortunadamente aún no hay una versión (<em>release</em>) oficial para la plataforma Linux, sin embargo es posible instalarlo en Ubuntu mediante un PPA de frecuente actualización.</p><h2>Instalación.</h2><h3>Agregar el repositorio.</h3><p><span
style="font-family: courier new,courier;">$ sudo add-apt-repository ppa:chromium-daily/ppa</span></p><h3>Instalar los paquetes.</h3><p><span
style="font-family: courier new,courier;">$ sudo aptitude update</span></p><p><span
style="font-family: courier new,courier;">$ sudo aptitude install chromium-browser chromium-codecs-ffmpeg</span></p><h2>Ejecución.</h2><p><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2009/12/screenshot_007.png"><img
class="aligncenter size-full wp-image-2186" title="screenshot_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2009/12/screenshot_007.png" alt="screenshot_007" width="740" height="486" /></a></p><p>Ejecutar la aplicación desde el menú de programas a través de la siguiente ruta.</p><p
style="padding-left: 30px;"><strong>Applications</strong> &gt; <strong>Internet</strong> &gt; <strong>Chromium Web Browser</strong>.</p><p>O desde la línea de comando como se muestra a continuación.</p><p><span
style="font-family: courier new,courier;">$ /usr/bin/chromium-browser &amp;</span></p><h2>Enlaces.</h2><ul><li>Instalación y puesta a punto de Chromium en GNU/Linux.<br
/> <a
href="http://bitelia.com/2009/11/instalacion-y-puesta-a-punto-de-chromium-en-gnulinux" target="_blank">http://bitelia.com/2009/11/instalacion-y-puesta-a-punto-de-chromium-en-gnulinux</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/12/instalar-chromium-browser-en-linux-ubuntu-9-10/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Configurar una cuenta de GoogleApps for Domains con Pidgin</title><link>http://blog.jorgeivanmeza.com/2009/11/configurar-una-cuenta-de-googleapps-for-domains-con-pidgin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configurar-una-cuenta-de-googleapps-for-domains-con-pidgin</link> <comments>http://blog.jorgeivanmeza.com/2009/11/configurar-una-cuenta-de-googleapps-for-domains-con-pidgin/#comments</comments> <pubDate>Mon, 09 Nov 2009 14:28:56 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GoogleAppsForDomains]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Pidgin]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=2127</guid> <description><![CDATA[Introducción. Las cuentas de Google Apps for Domains proveen además del correo electrónico (GMail) otros servicios de Google como la mensajería instantánea (GTalk).  El problema surge al intentar configurar estas cuentas en un cliente de mensajería múltiple como Pidgin ya &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/11/configurar-una-cuenta-de-googleapps-for-domains-con-pidgin/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Las cuentas de <em>Google Apps for Domains</em> proveen además del correo electrónico (GMail) otros servicios de Google como la mensajería instantánea (GTalk).  El problema surge al intentar configurar estas cuentas en un cliente de mensajería múltiple como Pidgin ya que estas no funcionan con las configuraciones por defecto de GTalk o de XMPP.</p><h2>Procedimiento.</h2><p>Abra el diálogo de administración de cuentas: <strong>Accounts</strong> &gt; <strong>Manage Accounts</strong> o presione <strong>CTRL+A</strong>.</p><p>Presione el botón <strong>Add &#8230;</strong> para crear una nueva cuenta.</p><p>Ingrese la siguiente información requerida.</p><ul><li><strong>Protocolo</strong>: XMPP.</li><li><strong>Nombre de usuario</strong>.</li><li><strong>Dominio</strong>: su dominio de <em>Google Apps for Domains</em>.</li><li><strong>Alias local</strong>: el nombre que desee que se muestre para su usuario.</li></ul><p>Seleccione la pestaña <strong>Advanced</strong> y provea la siguiente información.</p><ul><li><strong>Requiere SSL/TLS</strong>: seleccionado.</li><li><strong>Puerto de conexión</strong>: <span
style="font-family: courier new,courier;">5222</span>.</li><li><strong>Conectar al servidor</strong>: <span
style="font-family: courier new,courier;">talk.google.com</span>.</li></ul><p>Presione el botón <strong>Guardar</strong>.</p><h2>Enlaces.</h2><ul><li>How do I configure Pidgin to connect to <em>Google Talk</em> for my domain ?<br
/> <a
href="http://www.google.com/support/a/bin/answer.py?hl=en&amp;answer=49147" target="_blank">http://www.google.com/support/a/bin/answer.py?hl=en&amp;answer=49147</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/11/configurar-una-cuenta-de-googleapps-for-domains-con-pidgin/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Impedir el acceso a los &#039;bots&#039; a un sitio web</title><link>http://blog.jorgeivanmeza.com/2009/10/impedir-el-acceso-a-los-bots-a-un-sitio-web/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=impedir-el-acceso-a-los-bots-a-un-sitio-web</link> <comments>http://blog.jorgeivanmeza.com/2009/10/impedir-el-acceso-a-los-bots-a-un-sitio-web/#comments</comments> <pubDate>Wed, 14 Oct 2009 18:26:07 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[.htaccess]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=2057</guid> <description><![CDATA[Introducción. Los bots de los motores de búsqueda son las aplicaciones que contínuamente están revisando los sitios web y sus enlaces para indexar sus páginas.  Esto es bueno porque es precisamente lo que permite funcionar a los buscadores web y &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/10/impedir-el-acceso-a-los-bots-a-un-sitio-web/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Los <em>bots</em> de los motores de búsqueda son las aplicaciones que contínuamente están revisando los sitios web y sus enlaces para indexar sus páginas.  Esto es bueno porque es precisamente lo que permite funcionar a los buscadores web y mantener su información actualizada, sin embargo también es malo para quienes mantienen los sitios si estos acceden con demasiada frecuencia y utilizan demasiados recursos del servidor, además también es posible que se desee mantener información oculta a los ojos de estos motores de búsqueda.</p><p>Para hacer esto se les indica o se les niega el acceso a nuestro sitio a estas aplicaciones.</p><h2>Procedimiento.</h2><h3>Utilizando el archivo <span
style="font-family: courier new,courier;">robots.txt</span>.</h3><ul><li>Este archivo se debe ubicar en la raíz del sitio web.</li><li>Es una indicación <em>amable</em> a los <em>bots</em> para que cumplan lo que allí se especifica.</li><li>Es posible que <em>bots</em> malintencionados hagan caso omiso de estas indicaciones.</li></ul><p>Impedir el acceso a <span
style="text-decoration: underline;">todo</span> el sitio a <span
style="text-decoration: underline;">todos</span> los <em>bots</em>.</p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;"># Go away<br
/> User-agent: *<br
/> Disallow: /</span></p><p>Impedir el acceso a la carpeta /blog del sitio al <em>bot</em> de Google.</p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;"># Don't index my blog<br
/> User-Agent: Googlebot<br
/> Disallow: /blog/</span></p><h3>Desde el archivo .htaccess.</h3><ul><li>Las modificaciones se realizan en el archivo .htaccess del sitio web.</li><li>Estas políticas son mas restrictivas y no pueden ser obviadas por los <em>bots</em>.</li><li>Debe concerse con precisión la red de la cual proviene el <em>bot</em> ya que se impedirá su acceso por parte del servidor de páginas.</li><li>Es posible que existan otros clientes válidos que intenten acceder desde las ubicaciones especificadas, por ello la dirección especificada deberá ser lo mas precisa posible.</li></ul><p>Impedir el acceso al <em>bot</em> de Google.</p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;">Limit GET HEAD POST<br
/> order allow,deny<br
/> deny from 66.249<br
/> allow from all</span></p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/10/impedir-el-acceso-a-los-bots-a-un-sitio-web/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Como crear un mapa con GoogleMaps version 2, en pasos simples</title><link>http://blog.jorgeivanmeza.com/2009/09/como-crear-un-mapa-con-googlemaps-version-2-en-pasos-simples/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-crear-un-mapa-con-googlemaps-version-2-en-pasos-simples</link> <comments>http://blog.jorgeivanmeza.com/2009/09/como-crear-un-mapa-con-googlemaps-version-2-en-pasos-simples/#comments</comments> <pubDate>Mon, 28 Sep 2009 20:02:34 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GoogleMaps]]></category> <category><![CDATA[Hiper]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[PHP]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=2022</guid> <description><![CDATA[Introducción. Utilizar el API de Google Maps para crear mapas interactivos con Javascript en nuestros sitios web es muy fácil de implementar.  Este servicio ofrece dos alternativas: los Mapplets que se ejecutan de manera asíncrona, directamente en el sitio de &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/09/como-crear-un-mapa-con-googlemaps-version-2-en-pasos-simples/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Utilizar el API de <a
href="http://maps.google.com/" target="_blank">Google Maps</a> para crear mapas interactivos con Javascript en nuestros sitios web es muy fácil de implementar.  Este servicio ofrece dos alternativas: los Mapplets que se ejecutan de manera asíncrona, directamente en el sitio de <a
href="http://maps.google.com/" target="_blank">maps.google.com</a> y los desarrolladores sólo debemos especificar y albergar un documento XML donde se encuentra la especificación y los datos del mapa.  Por el otro lado están los mapas implementados directamente con el API de manera síncrona, se incrustan en nuestras propias páginas web y su comportamiento se define a través del Javascript que implementemos.</p><p>En otras ocasiones me he referido a los <a
href="http://blog.jorgeivanmeza.com/tag/GoogleMapplets/" target="_blank">Mapplets</a> por esto la implementación de hoy la vamos a realizar utilizando el API síncrono.</p><h2>Objetivo.</h2><p>El objetivo del presente artículo es el de visitar a Cuba donde ubicaremos marcadores sobre 5 ciudades de este país y asociaremos globitos con mensajes personalizados que aparecerán cuando el usuario haga clic sobre las diferentes ciudades.</p><div
id="attachment_2024" class="wp-caption aligncenter" style="width: 650px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2009/09/Objetivo_Cuba5.png"><img
class="size-full wp-image-2024" title="Objetivo_Cuba5" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2009/09/Objetivo_Cuba5.png" alt="Resultado final" width="640" height="478" /></a><p
class="wp-caption-text">Resultado final</p></div><h2>Procedimiento.</h2><h3>Condiciones inciales.</h3><p>Para el desarrollo de esta mini aplicación vamos a utilizar PHP y <a
href="http://en.wikipedia.org/wiki/Vanilla_software" target="_blank">vanilla</a> Javascript, es decir, no nos apoyaremos en ningún <em>framework</em> de Javascript adicional a lo comúnmente soportado por los navegadores web actuales.</p><p>En mi caso, mi servidor web de destino será <a
href="http://demo.jorgeivanmeza.com/" target="_blank">http://demo.jorgeivanmeza.com/</a>.  Es muy importante determinar esto para la próxima etapa, la creación de la llave del API.</p><h3>Creación de la llave del API.</h3><p>Acceda al siguiente enlace y cree su propia llave para el API de Google.  Es necesario especificar el dominio bajo el cual se ejecutará la aplicación web.  En el caso de desarrollar la aplicación de manera local, puede obtener una llave para <a
href="http://localhost/" target="_blank">http://localhost/</a> y después la deberá modificar antes de desplegarla en el servidor de producción.  Si no especifica el dominio correcto, la aplicación no podrá generar el mapa.</p><p
style="padding-left: 30px;"><a
href="http://code.google.com/apis/maps/signup.html" target="_blank">http://code.google.com/apis/maps/signup.html</a></p><p>Es necesario contar con una cuenta de Google, así que de no contar con una es necesario <a
href="http://mail.google.com/mail/signup" target="_blank">abrirla</a> antes de intentar crear una llave del API.</p><h3>Creación de una estructura básica para la página web.</h3><p>Cree el archivo <span
style="font-family: courier new,courier;">simpleGoogleMaps.php</span> (o como desee llamarlo) en una ubicación pública de su servidor web (bajo el <span
style="font-family: courier new,courier;">DOCUMENT_ROOT</span>).  Agregue siguiente contenido al archivo y guárdelo.</p><pre class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;head&gt;
    &lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /&gt;
    &lt;meta name="Author" content="Jorge Iván Meza Martínez - http://jorgeivanmeza.com/ - jimezam@gmail.com" /&gt;
    &lt;meta name="Description" content="Demostración Simple de Google Maps" /&gt;
    &lt;title&gt;Demostración Simple de Google Maps&lt;/title&gt;
    &lt;!-- Llave del API --&gt;
    &lt;!-- Estilos CSS --&gt;
    &lt;!-- Implementación Javascript --&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;!-- Ubicación del mapa --&gt;
&lt;/body&gt;
&lt;/html&gt;</pre><h3>Especificar la Llave del API.</h3><p>En el contenido del archivo PHP actualice el siguiente código por la marca de <span
style="font-family: courier new,courier;">Llave del API</span>.</p><pre class="php">&lt;script src='http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;hl=es&amp;key=XXXXX' type='text/javascript'&gt;&lt;/script&gt;</pre><p>Reemplace la cadena <span
style="font-family: courier new,courier;">XXXXX</span> por su Llave del API específica que obtuvo durante el paso anterior correspondiente.</p><h3>Especificar la ubicación del mapa.</h3><p>El mapa se generará en un <span
style="font-family: courier new,courier;">div</span> que determinemos dentro del <span
style="font-family: courier new,courier;">body</span> para tal fin, este puede estar integrado normalmente con el resto del diseño de la página.  En nuestro caso particular debido a su simplicidad, el contenido de la página será solamente dicho <span
style="font-family: courier new,courier;">div</span>.</p><p>Reemplace la etiqueta <span
style="font-family: courier new,courier;">Ubicación del mapa</span> con el siguiente código.</p><pre class="php">&lt;div id='MiMapa'&gt;Aqui viene el mapa!&lt;/div&gt;</pre><p>Es necesario identificar al <span
style="font-family: courier new,courier;">div</span> con un <span
style="font-family: courier new,courier;">id</span> único que utilizaremos posteriormente.</p><h3>Actualizar el estilo del mapa.</h3><p>El siguiente paso es el especificar un estilo para el <span
style="font-family: courier new,courier;">div</span> que contendrá al mapa.  Este estilo finalmente dependerá del diseño de la página.  Para este caso utilizamos CSS para definirle un alto y un ancho al mapa.</p><p>Reemplace la etiqueta <span
style="font-family: courier new,courier;">Estilos CSS</span> con el siguiente código.</p><pre class="css">&lt;style content="text/css"&gt;
#MiMapa
{
    width: 640px;
    height: 480px;
}
&lt;/style&gt;</pre><h3>Especificar la implementación Javascript.</h3><p>El código faltante hace referencia a código Javascript que va a determinar el contenido y comportamiento del mapa.  Reemplace la etiqueta <span
style="font-family: courier new,courier;">Implementación Javascript</span> con el siguiente código base.</p><pre class="javascript">&lt;script type='text/javascript'&gt;
// El código de las siguiente secciones se incluye aquí ...
&lt;/script&gt;</pre><h3>Preparar el mapa.</h3><p>Para crear el mapa y establecer sus parámetros iniciales se realizan las siguientes acciones.</p><ol><li>Verificar que exista la compatibilidad adecuada con el navegador.</li><li>Crear la instancia del mapa asociada al <span
style="font-family: courier new,courier;">div</span> especifico.</li><li>Establecer la ubicación inicial del mapa.</li><li>Establecer el tipo inicial del mapa.</li></ol><p>Para hacer esto creamos al objeto <span
style="font-family: courier new,courier;">mapa1</span> y a la función <span
style="font-family: comic sans ms,sans-serif;">prepararMapa</span> con el siguiente código.</p><pre class="javascript">/*
 * Objeto que hace referencia al mapa desplegado.
 */
var mapa1 = null;
/*
 * Establece los parámetros iniciales del mapa instanciando
 * al objeto 'mapa'.
 *
 * @param String  - Nombre del DIV que albergará al mapa.
 * @param Double  - Latitud donde se centrará el mapa.
 * @param Double  - Longitud donde se centrará el mapa.
 * @param Integer - Altura donde se centrará el mapa.
 *
 * @return el mapa en éxito, null en fracaso.
 */
function prepararMapa(div, centerLat, centerLang, centerAlt)
{
    /* Verifica que el navegador sea compatible con
       Google Maps */
    if (GBrowserIsCompatible())   // [1]
    {
        /* Crea la instancia del objeto 'mapa' asociándole
           el div correspondiente */
        mapa = new GMap2(document.getElementById(div));    // [2]
        /* Centra el mapa en la ubicacion (latitud, longitud
           y altura) especificadas */
        mapa.setCenter(new GLatLng(centerLat, centerLang), centerAlt);     // [3]
        /* Establece el tipo de mapa.  Disponibles:
               - G_NORMAL_MAP
               - G_SATELLITE_MAP
               - G_HYBRID_MAP
           Enlace: http://code.google.com/apis/maps/documentation/controls.html */
        mapa.setMapType(G_HYBRID_MAP);      // [4]
        /* Establece el comportamiento por defecto de los
           elementos del UI del mapa.
           Enlace: http://code.google.com/apis/maps/documentation/reference.html#GMap2.setUIToDefault */
        mapa.setUIToDefault();
        /* Éxito */
        return mapa;
    }
    else     /* Fracaso */
        return null;
}</pre><h3>Agregar un marcador.</h3><p>Posteriormente implementamos la función <span
style="font-family: courier new,courier;">agregarMarcador</span> que se ocupará de agregar un marcador creado con cierta información específica al mapa.  Su código es el siguiente.</p><pre class="javascript">/*
 * Agrega un marcado con la información especificada
 * al mapa.
 *
 * @param GMap2   - Referencia externa al mapa.
 * @param Double  - Latitud donde se centrará el mapa.
 * @param Double  - Longitud donde se centrará el mapa.
 * @param String  - Mensaje que tendrá la burbuja asociada.
 *
 * @return void.
 */
 function agregarMarcador(mapa, latitud, longitud, mensaje)
 {
    /* Crea el punto asociado a la longitud y latitud
       especificadas. */
    var punto = new GLatLng(latitud, longitud);
    /* Crea un marcador asociado a la ubicación anterior */
    var marcador = new GMarker(punto);
    /* Establece que en el evento 'onclick' del marcador
       muestre la burbuja con el mensaje especificado */
     GEvent.addListener(marcador, "click", function()
     {
         mapa.openInfoWindowHtml(punto, mensaje);
     });
     /* Agrega el marcador recién creado al mapa */
     mapa.addOverlay(marcador);
 }</pre><h3>Información de las ciudades de Cuba.</h3><p>Los marcadores del mapa corresponderán como se dijo anteriormente, con cinco ciudades de Cuba que se predefinieron y de las cuales se conoce su ubicación: latitud y longitud.  Su información se almacena en el arreglo puntos en el cual cada una de sus celdas corresponde con una ciudad.</p><pre class="javascript">/* Información para los marcadores del mapa: Ciudades de
 * Cuba. */
 var puntos = new Array(
    {
        'nombre'  : 'La habana',
        'latitud' : 23.132,
        'longitud': -82.364
    },
    {
        'nombre'  : 'Santa Clara',
        'latitud' : 22.4,
        'longitud': -79.967
    },
    {
        'nombre'  : 'Bayamo',
        'latitud' : 20.379,
        'longitud': -76.643
    },
    {
        'nombre'  : 'Las Tunas',
        'latitud' : 20.962,
        'longitud': -76.951
    },
    {
        'nombre'  : 'Manzanillo',
        'latitud' : 20.343,
        'longitud': -77.117
    }
 );</pre><p>Para automatizar el proceso de agregación de los marcadores basados en la información de los <span
style="font-family: courier new,courier;">puntos</span> creamos a la función <span
style="font-family: courier new,courier;">agregarMarcadores</span> cuya misión es la de invocar repetidas veces a la función <span
style="font-family: courier new,courier;">agregarMarcador</span>.  En ella se define además el contenido del globito de cada uno de las ciudades (<span
style="font-family: courier new,courier;">mensaje</span>).</p><pre class="javascript">/*
 * Automatiza el agregar los marcadores basados en la
 * información del arreglo de puntos.
 *
 * @param GMap2   - Referencia externa al mapa.
 * @param Array   - Información de los marcadores a agregar.
 *
 * @return void.
 */
 function agregarMarcadores(mapa, informacion)
 {
    for(var i=0; i&lt;informacion.length; i++)
    {
        var nombre   = puntos[i]['nombre'];
        var latitud  = puntos[i]['latitud'];
        var longitud = puntos[i]['longitud'];
        var mensaje  = "Este es &lt;b&gt;" + nombre + "&lt;/b&gt;,&lt;br /&gt; su latitud es &lt;b&gt;" +
                       latitud + "&lt;/b&gt;&lt;br /&gt; y su longitud es &lt;b&gt;" + longitud + "&lt;/b&gt;.";
        agregarMarcador(mapa, latitud, longitud, mensaje);
    }
 }</pre><h3>Finalmente, el programa principal.</h3><p>En este fragmento del código definimos la ejecución del programa principal del mapa.  Se ejecuta tan pronto como la página se encuentra cargada (<span
style="font-family: courier new,courier;">onLoad</span>) y desarrolla las siguiente actividades.</p><ol><li>Prepara el mapa.</li><li>Verifica que el mapa haya sido creado exitosamente.</li><li>Agrega los marcadores sobre las ciudades especificadas.</li></ol><p>Su código es el siguiente.</p><pre class="javascript">/* Inicio del programa Javascript (setup) */
window.onload = function()
{
    /* Solicita la creación del mapa especificando el DIV
       que lo albergará y la ubicación (latitud, longitud,
       altura). */
    mapa1 = prepararMapa('MiMapa', 21.4, -79.8, 7);
    if(mapa1 == null)
    {
        alert("Su navegador no incluye soporte para Google Maps!");
        return false;
    }
    /* Solicita la agregación de los marcadores de ejemplo
       especificando la referencia al mapa y el arreglo con
       la información de los puntos */
    agregarMarcadores(mapa1, puntos);
    return true;
}</pre><h3>Listo!</h3><p>Probar la página web utilizando un navegador como <a
href="http://getfirefox.com/" target="_blank">Firefox</a>.</p><h2>Enlaces.</h2><ul><li>Programa de demostración &#8211; versión 0.1.<br
/> <a
href="http://demo.jorgeivanmeza.com/GMaps/SimpleDemoCuba/" target="_blank">http://demo.jorgeivanmeza.com/GMaps/SimpleDemoCuba/</a></li><li>Google Maps API Versión 2.<br
/> <a
href="http://code.google.com/apis/maps/" target="_blank">http://code.google.com/apis/maps/</a></li><li>Abrir una cuenta de usuario con Google.<br
/> <a
href="http://mail.google.com/mail/signup" target="_blank">http://mail.google.com/mail/signup</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/09/como-crear-un-mapa-con-googlemaps-version-2-en-pasos-simples/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Utilizar GMail como SmartHost desde Linux Debian 5</title><link>http://blog.jorgeivanmeza.com/2009/07/utilizar-gmail-como-smarthost-desde-linux-debian-5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utilizar-gmail-como-smarthost-desde-linux-debian-5</link> <comments>http://blog.jorgeivanmeza.com/2009/07/utilizar-gmail-como-smarthost-desde-linux-debian-5/#comments</comments> <pubDate>Tue, 07 Jul 2009 15:43:30 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[Exim]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Linux]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=1844</guid> <description><![CDATA[Introducción. Un servidor que utilizo frecuentemente para el desarrollo de aplicaciones web que se encuentra basado en Debian 5 no estaba enviando los correos de las aplicaciones ni de un par de scripts que había escrito hace un tiempo para &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/07/utilizar-gmail-como-smarthost-desde-linux-debian-5/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Un servidor que utilizo frecuentemente para el desarrollo de aplicaciones web que se encuentra basado en Debian 5 no estaba enviando los correos de las aplicaciones ni de un par de <em>scripts</em> que había escrito hace un tiempo para la creación de copias de seguridad.</p><p>Al revisar los <em>logs</em> encontré este mensaje: <span
style="font-family: courier new,courier;">Mailing to remote domains not supported</span>.</p><p>La solución es realizar la configuración del Exim 4, sin embargo tenía un detalle adicional que lo hacía interesante.  Para la empresa propietaria del servidor estoy utilizando <em>Google Apps</em> para gestionar su correo electrónico, así que el <a
href="http://en.wikipedia.org/wiki/Smarthost" target="_blank"><em>SmartHost</em></a> tenía que ser con GMail, SSL (el puerto indicado) y autenticación.</p><h2>Procedimiento.</h2><p>Para este procedimiento se supone que el nombre del servidor es <strong><span
style="font-family: courier new,courier;">desarrollo.dominio.com</span></strong>.</p><p>1. Crear una cuenta de correo en GMail/<em>Google Apps</em> para el <a
href="http://en.wikipedia.org/wiki/Open_mail_relay" target="_blank"><em>relay</em></a> del servidor de correo.</p><p
style="padding-left: 30px;">Nombre de usuario: <span
style="font-family: courier new,courier;"><strong>desarrollo_relay</strong></span><br
/> Contraseña: <strong><span
style="font-family: courier new,courier;">password_relay</span></strong></p><p>2. Realizar la configuración de Exim.</p><p><span
style="font-family: courier new,courier;">$ su -<br
/> </span></p><p><span
style="font-family: courier new,courier;">$ dpkg-reconfigure exim4-config</span></p><ul><li>General type of mail configuration: <strong>mail sent by smarthost; received via SMTP or fetchmail</strong></li><li>System mail name: <strong>localhost</strong></li><li>Ip Address to listen on: <strong>127.0.0.1</strong></li><li>Other destinations~: <strong>desarrollo.dominio.com</strong></li><li>Machines to Relay for: <strong>&lt;vacío&gt;</strong></li><li>IP address or hostname of the outgoing smarthost: <strong>smtp.gmail.com::587</strong></li><li>Hide local mail name in outgoing mail: <strong>No</strong></li><li>Keep number of DNS queries minimal: <strong>No</strong></li><li>Delivery method for local mail: <strong>mbox format in /var/mail/</strong></li><li>Split configuration into small files: <strong>Yes</strong></li></ul><p>3. Configurar la información del cliente de acceso.</p><p><span
style="font-family: courier new,courier;">$ vi /etc/exim4/passwd.client</span></p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;">gmail-smtp.l.google.com:<strong>desarrollo_relay</strong>@<strong>dominio.com</strong>:</span><strong><span
style="font-family: courier new,courier;">password_relay</span></strong><br
/> <span
style="font-family: courier new,courier;">*.google.com:</span><strong><span
style="font-family: courier new,courier;">desarrollo_relay</span></strong><span
style="font-family: courier new,courier;">@</span><span
style="font-family: courier new,courier;"><strong>dominio.com</strong></span><span
style="font-family: courier new,courier;">:</span><strong><span
style="font-family: courier new,courier;">password_relay</span></strong><br
/> <span
style="font-family: courier new,courier;">smtp.gmail.com:</span><strong><span
style="font-family: courier new,courier;">desarrollo_relay</span></strong><span
style="font-family: courier new,courier;">@</span><span
style="font-family: courier new,courier;"><strong>dominio.com</strong></span><span
style="font-family: courier new,courier;">:</span><strong><span
style="font-family: courier new,courier;">password_relay</span></strong></p><p><span
style="font-family: courier new,courier;">$ chmod 640 /etc/exim4/passwd.client</span></p><p><span
style="font-family: courier new,courier;">$ chown root:Debian-exim /etc/exim4/passwd.client</span></p><p>4. Actualizar la lista de correspondencias de direcciones de correo.</p><p><span
style="font-family: courier new,courier;">$ vi /etc/exim4/email-addresses</span></p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;"><strong>root</strong>@localhost:    <strong>desarrollo_relay@dominio.com</strong></span></p><p><span
style="font-family: courier new,courier;">$ chmod 640 /etc/exim4/email-addresses</span></p><p>5. Verifique la configuración actual del Exim.</p><p><span
style="font-family: courier new,courier;">$ vi /etc/exim4/update-exim4.conf</span></p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;">dc_eximconfig_configtype='<strong>smarthost</strong>'<br
/> dc_other_hostnames='<strong>desarrollo.dominio.com</strong>'<br
/> dc_local_interfaces='<strong>127.0.0.1</strong>'<br
/> dc_readhost='<strong>desarrollo.dominio.com</strong>'<br
/> dc_relay_domains="<br
/> dc_minimaldns='<strong>false</strong>'<br
/> dc_relay_nets="<br
/> dc_smarthost='<strong>smtp.gmail.com::587</strong>'<br
/> CFILEMODE='<strong>644</strong>'<br
/> dc_use_split_config='<strong>true</strong>'<br
/> dc_hide_mailname='<strong>false</strong>'<br
/> dc_mailname_in_oh='<strong>true</strong>'<br
/> dc_localdelivery='<strong>mail_spool</strong>'</span></p><p>6. Reiniciar el servicio del MTA.</p><p><span
style="font-family: courier new,courier;">$ /etc/init.d/exim4 restart</span></p><h2>Enlaces.</h2><ul><li>Exim Internet Mailer.<br
/> <a
href="http://www.exim.org/" target="_blank">http://www.exim.org/</a></li><li>Google Apps.<br
/> <a
href="http://www.google.com/a/cpanel/domain/new?hl=es" target="_blank">http://www.google.com/a/cpanel/domain/new?hl=es</a></li><li>Configure Exim4 on Debian Etch/Lenny/Sid to use Gmail as a SmartHost.<br
/> <a
href="http://tarsysco.com/blogs/2008/06/18/configure-exim4-on-debian-etchlennysid-to-use-gmail-as-a-smarthost/" target="_blank">http://tarsysco.com/blogs/2008/06/18/configure-exim4-on-debian-etchlennysid-to-use-gmail-as-a-smarthost/</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/07/utilizar-gmail-como-smarthost-desde-linux-debian-5/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Búsquedas en Google Search desde PHP</title><link>http://blog.jorgeivanmeza.com/2009/03/busquedas-en-google-search-desde-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=busquedas-en-google-search-desde-php</link> <comments>http://blog.jorgeivanmeza.com/2009/03/busquedas-en-google-search-desde-php/#comments</comments> <pubDate>Mon, 16 Mar 2009 03:32:37 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[GoogleSearch]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[PHP]]></category> <guid
isPermaLink="false">http://www.jorgeivanmeza.com/blog/?p=1540</guid> <description><![CDATA[Introducción. Anoche se me ocurrieron algunos experimentos para hacer pero con varios de ellos terminé concluyendo que necesitaba hacer algunas búsquedas a través de Google Search para verificar si mis hipótesis se podían implementar o no.  Pensé que iba a &#8230; <a
href="http://blog.jorgeivanmeza.com/2009/03/busquedas-en-google-search-desde-php/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Anoche se me ocurrieron algunos experimentos para hacer pero con varios de ellos terminé concluyendo que necesitaba hacer algunas búsquedas a través de <a
href="http://code.google.com/apis/ajaxsearch/" target="_blank">Google Search</a> para verificar si mis hipótesis se podían implementar o no.  Pensé que iba a ser muy fácil encontrar ejemplos de esto en PHP, sin embargo sólo pude encontrar <a
href="http://code.google.com/apis/ajaxsearch/documentation/" target="_blank">un documento</a> realmente interesante al respecto.  Resulta que casi toda la documentación hace referencia a Javascript en AJAX, mientras que los lenguajes no-Javascript como PHP o Flash deben hacerlo a través de REST.  Al final, mis ideas no resultaron; al parecer Google no genera la información que yo necesitaba en formato Google Search, tampoco en XML válido.  Sin embargo aprendí como utilizar Google Search desde PHP y terminé escribiendo una clase muy sencilla para encapsular su uso y una demostración de la misma.</p><h2>Demostración.</h2><div
id="attachment_1541" class="wp-caption aligncenter" style="width: 857px"><a
href="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2009/03/googlesearchshot_0-1.png"><img
class="size-full wp-image-1541" title="googlesearchshot_0-1" src="http://www.jorgeivanmeza.com/blog/wp-content/uploads/2009/03/googlesearchshot_0-1.png" alt="Demostración de GoogleSearch 0.1" width="847" height="363" /></a><p
class="wp-caption-text">Demostración de GoogleSearch 0.1</p></div><h2><span
style="font-family: courier new,courier;">GoogleSearch.class.php</span>.</h2><p>De manera muy general estos son los pasos que se deben realizar para ejecutar una búsqueda en GoogleSearch.</p><p>Crear una instancia de la clase GoogleSearch.</p><pre name='code' class="php">    $gs = new GoogleSearch();</pre><p>Establecer la configuración de la búsqueda.</p><pre name='code'  class="php">    $gs -&gt; setKey('SU_PROPIA_LLAVE');
    $gs -&gt; setSize('large');
    $gs -&gt; setLang('es');
    $gs -&gt; setReferrer('http://localhost');
    $registro = (isset($_GET['registro'])) ? filter_input(INPUT_GET, 'registro', FILTER_SANITIZE_SPECIAL_CHARS) : 0;
    $palabrasClave = (isset($_GET['palabrasClave'])) ? filter_input(INPUT_GET, 'palabrasClave', FILTER_SANITIZE_SPECIAL_CHARS) : '';</pre><p>Solicitar la búsqueda.</p><pre name='code'  class="php">    $gs -&gt; fetch($palabrasClave, $registro);</pre><p>Verificar si hubo éxito en la búsqueda.</p><pre name='code'  class="php">    if($gs != null &amp;&amp; $gs -&gt; getResponseField('responseStatus') == 200) { ... }</pre><p>Recorrer los registros obtenidos y mostrar su información.</p><pre name='code'  class="php">                $length = $gs -&gt; getResultsCount();
                for($i=0; $i&lt;$length; $i++):
                    // Obtiene el iésimo resultado.
                    $result = $gs -&gt; getResult($i);
                    // Muestra su información.
                ?&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            &lt;a href='&lt;?= GoogleSearch::getResultField($result, 'url'); ?&gt;'&gt;
                                &lt;?= GoogleSearch::getResultField($result, 'title'); ?&gt;
                            &lt;/a&gt;
                            &amp;nbsp;
                            &lt;a href='&lt;?= GoogleSearch::getResultField($result, 'url'); ?&gt;' target='_blank'&gt;
                                [&lt;span style='font-size: 10px;'&gt;Nueva ventana&lt;/span&gt;]
                            &lt;/a&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td class='campo_contenido'&gt;
                            &lt;?= GoogleSearch::getResultField($result, 'content'); ?&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            &lt;span class='verde'&gt;&lt;?= GoogleSearch::getResultField($result, 'visibleUrl'); ?&gt;&lt;/span&gt; -
                            &lt;a href='&lt;?= GoogleSearch::getResultField($result, 'cacheUrl'); ?&gt;'&gt;En caché&lt;/a&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;&amp;nbsp;&lt;/td&gt;
                    &lt;/tr&gt;
                &lt;?php endfor; ?&gt;</pre><h2>Enlaces.</h2><ul><li>Descarga de la clase <span
style="font-family: courier new,courier;">GoogleSearch</span> y su demostración.<br
/> <a
href="http://demo.jorgeivanmeza.com/PHP/GoogleSearch/" target="_blank">http://demo.jorgeivanmeza.com/PHP/GoogleSearch/</a></li><li>Sign-up for an AJAX Search API Key.<br
/> <a
href="http://code.google.com/apis/ajaxsearch/signup.html" target="_blank">http://code.google.com/apis/ajaxsearch/signup.html</a></li><li>Developer's Guide.<br
/> <a
href="http://code.google.com/apis/ajaxsearch/documentation/" target="_blank">http://code.google.com/apis/ajaxsearch/documentation/</a></li><li>Class Reference.<br
/> <a
href="http://code.google.com/apis/ajaxsearch/documentation/reference.html#_intro_fonje" target="_blank">http://code.google.com/apis/ajaxsearch/documentation/reference.html#_intro_fonje</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2009/03/busquedas-en-google-search-desde-php/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
