Monthly Archives: October 2010

Configurar una cuenta de mensajería con Google Apps for Domains en Empathy

Procedimiento.

Ingrese al diálogo de configuración de cuentas (Messaging and VoIP Accounts) a través del siguiente menú o presionando F4.

Edit > Accounts.

Presione el botón de agregar una cuenta (Add).

Seleccione Google Talk como protocolo de la cuenta.

Ingrese su dirección de correo (Login ID) y su correspondiente contraseña (Password).

Acceda a la configuración avanzada de la cuenta (Advanced).

Configuración de cuenta GTalk (Google Apps)

Configuración de cuenta GTalk (Google Apps)

Seleccione las siguientes casillas de verificación.

  • Encriptación requerida (Encryption required).
  • Use SSL antíguo (Use old SSL).

Especifique la siguiente información bajo la sección (Override server settings).

  • Servidor (server): talk.google.com.
  • Puerto (port): 5223.

Presione el botón Aceptar (Apply) para almacenar los cambios.

Enlaces.

Instalar GNU/Linux Ubuntu 10.10 desde una unidad USB

Introducción.

Desde que descubrí la creación de LiveUSB con GNU/Linux he utilizado este método para instalar el sistema operativo en computadores y servidores.  Mientras que Ubuntu incluye su propia herramienta para este fin, otras distribuciones pueden ser utilizadas fácilmente mediante el uso del paquete Unetbootin.

El procedimiento no generaba ningún inconveniente hasta que intenté utilizarlo para instalar la versión 10.10 de Ubuntu.

Escenario.

Para instalar la versión 10.10 de GNU/Linux Ubuntu se descargó su correspondiente imagen ISO.

En un equipo con Ubuntu 10.04 se creó el LiveUSB mediante el procedimiento habitual, utilizando la aplicación usb-creator-gtk.

Se inició el equipo al cual se le va a instalar el sistema operativo con la LiveUSB como unidad de inicio (boot).

Problema: Unknown keyword in configuration file.

Al iniciarse el equipo desde la LiveUSB preparada con Ubuntu 10.10 se obtiene el siguiente mensaje que impide su instalación.

SYSLINUX 3.63 Debian-2008-07-15 EBIOS Copyright (c) 1994-2008 H. Peter Anvin
Unknown keyword in configuration file
boot:

Aparententemente hay un problema con la versión de syslinux incluída en Ubuntu 10.04 que impide la correcta ejecución de la LiveUSB.

Solución: actualizar syslinux.

Obtener la versión de syslinux mas actualizada del repositorio de paquetes oficiales.

$ wget http://mirrors.kernel.org/ubuntu/pool/main/s/syslinux/syslinux_4.01+dfsg-3ubuntu1_amd64.deb

$ wget http://mirrors.kernel.org/ubuntu/pool/main/s/syslinux/syslinux-common_4.01+dfsg-3ubuntu1_all.deb

Remover la versión actual de syslinux.  Tenga en cuenta que este paso también remueve otro software asociado como el usb-creator y el unetbootin.

$ sudo aptitude remove syslinux

Instalar la nueva version de syslinux recién descargada.

$ sudo dpkg -i syslinux-common_4.01+dfsg-3ubuntu1_all.deb syslinux_4.01+dfsg-3ubuntu1_amd64.deb

Volver a instalar el paquete usb-creator.

$ sudo aptitude install usb-creator-common usb-creator-gtk

Volver a generar la LiveUSB como lo indica el procedimiento original.

Enlaces.

Instalar Nginx y PHP en GNU/Linux Ubuntu 10.04

Introducción.

Desde hace un tiempo había decidido probar otros servidores de páginas diferentes de Apache en busca de uno que consumiera menos recursos, especialmente para la etapa de desarrollo.  Después de una revisión a la oferta de servidores web y a los comentarios encontrados en los foros los mas opcionados son: Nginx, Cherokee y Lighttpd.  En esta ocasión estoy probando al primero de ellos.

Instalar los paquetes necesarios.

$ sudo aptitude install php5-cgi php5-cli php5-common php5-curl php5-gd php5-json php5-mcrypt php5-sqlite php5-mysql

$ sudo aptitude install spawn-fcgi

$ sudo aptitude install nginx

Crear un directorio para el virtualhost.

En este caso se va a utilizar el sitio web por defecto (default) y se va a ubicar en /home/www/public, los virtualhosts adicionales se crean siguiendo los mismos pasos.

$ sudo mkdir -p /home/www/public

$ sudo mkdir /home/www/logs

$ sudo chown -R www-data:www-data /home/www

Establecer la configuración del virtualhost.

$ sudo vi /etc/nginx/sites-available/default

server {
    listen       80 default;
    server_name  localhost;
    access_log   /home/www/logs/localhost.access.log;
    location / {
        root   /home/www/public;
        index  index.html index.htm;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /home/www/public/$fastcgi_script_name;
        include fastcgi_params;
    }
}

Tenga en cuenta que las rutas asignadas a las variables access_log, root y fastcgi_param se relacionan con los directorios creados en el paso anterior.

Activar el virtualhost.

En este caso se utiliza el sitio por defecto, sin embargo pueden crearse nuevos simplemente utilizando un nombre diferente para el enlace.

$ sudo /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Crear un recubrimiento para spawn-fcgi.

$ sudo vi /etc/init.d/php-fastcgi

#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=5 #15
PHP_FCGI_MAX_REQUESTS=1000
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
      echo -n "Starting PHP FastCGI: "
      start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}
stop() {
      echo -n "Stopping PHP FastCGI: "
      killall -q -w -u $USER $PHP_CGI
      RETVAL=$?
      echo "$PHP_CGI_NAME."
}
case "$1" in
    start)
      start
  ;;
    stop)
      stop
  ;;
    restart)
      stop
      start
  ;;
    *)
      echo "Usage: php-fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

$ sudo chmod +x /etc/init.d/php-fastcgi

Iniciar manualmente los servicios.

$ sudo /etc/init.d/nginx start

$ sudo /etc/init.d/php-fastcgi start

Configurar el inicio automático de los servicios (opcional).

$ sudo update-rc.d nginx defaults

$ sudo update-rc.d php-fastcgi defaults

Probar el servicio.

$ vi /home/www/public/test.php

<?php phpinfo(); ?>

Acceder a la página web http://localhost/test.php desde el equipo local.

Convertir coordenadas geográficas grados-minutos-segundos a notacional decimal (2): versión simple

Introducción.

El método que utilizo habitualmente para realizar la conversión entre notaciones de coordenadas se basa en el método descrito anteriormente y es mas simple aunque aparentemente tiene un ligeramente mayor margen de pérdida de decimales en los cálculos.

A continuación se describe rápidamente las fórmulas matemáticas utilizadas para estos cálculos y se presentan los enlaces para la aplicación de deomstración y el formulario en Excel para pruebas.

Procedimiento.

Notación Grados-Minutos-Segundos a notación decimal.

latitude_sign = (latitude_dir == "N") ? 1 : -1;
latitude  = (latitude_deg  + (latitude_min / 60.0)  + (latitude_sec / 60.0 / 60.0))  * latitude_sign;

longitude_sign = (longitude_dir == "E") ? 1 : -1;
longitude = (longitude_deg + (longitude_min / 60.0) + (longitude_sec / 60.0 / 60.0)) * longitude_sign;

Notación Decimal a notación Grados-Minutos-Segundos.

latitude_deg = Math.floor(Math.abs(latitude));
latitude_min = Math.floor((Math.abs(latitude) – latitude_deg) * 60);
latitude_sec = Math.ceil(((Math.abs(latitude) – latitude_deg) * 60 – latitude_min) * 60);
latitude_dir = (latitude_sign > 0) ? "N" : "S";

longitude_deg = Math.floor(Math.abs(longitude));
longitude_min = Math.floor((Math.abs(longitude) – longitude_deg) * 60);
longitude_sec = Math.ceil(((Math.abs(longitude) – longitude_deg) * 60 – longitude_min) * 60);
longitude_dir = (longitude_sign > 0) ? "E" : "W";

Enlaces.

Convertir coordenadas geográficas grados-minutos-segundos a notacional decimal

Historial.

Versión 0.2Versión mejorada apropiando el código de  Anthony T. Holdener.
(mayor precisión en los cálculos) 
Versión 0.1aSimplificación de los cálculos realizados.
Versión 0.1Basado en la implementación de la aplicación de FCC.
(este artículo) 

Introducción.

Finalmente pude encontrar el método para convertir las coordenadas geográficas desde la notación grados-minutos-segundos a la notación decimal y viceversa.  La aplicación de la FCC para esta conversión me ayudó bastante.

La utilidad de esta conversión radica en que muchas veces se manejan las coordenadas en el formato GMS (latitud 5o4'59" norte y longitud 75o30'0" oeste) mientras que muchas páginas web y aplicaciones (incluído Google Maps) requieren la información en la notación decimal (latitud 5.083056 y longitud -75.5).

Durante los experimentación se creó una clase en Javascript que expone dos métodos simplificados para realizar estas conversiones.  Los cálculos pueden ser fácilmente migrados a otros lenguajes de programación ya que sólo utilizan funciones matemáticas como floor, abs y round además de los operadores aritméticos.

Demostración.

Para la prueba y demostración de la clase Javascript se desarrolló un formulario muy sencillo que permite realizar la transformación de coordenadas geográficas entre las dos notaciones mencionadas.

Demostración de la conversión de coordenadas

Demostración de la conversión de coordenadas

En la demostración puede verificar las coordenadas enunciadas anteriormente las cuales corresponden con la ciudad de Manizales/Caldas/Colombia.

Notación GMS.

  • latitud: 5o4'59" N
  • longitud: 75o30'0" W

Notación decimal.

  • latitud: 5.083056
  • longitud: -75.5

Enlaces.