Tuesday, January 29, 2013

Calculando el centro de varias coordenadas geograficas en Java

Ocupaba sacar el centro de varias coordenadas en Java y encontre este articulo. Según los comentarios, es probable que de error en ciertos casos, pero para puntos muy cercanos no hay problema.
public static latlon GetCentrePointFromListOfCoordinates(List coordList)
{
    int total = coordList.size();

    double X = 0;
    double Y = 0;
    double Z = 0;

    for( idleperfromance i : coordList)
    {
        double lat = i.getLat() * Math.PI / 180;
        double lon = i.getLon() * Math.PI / 180;
         
        double x = Math.cos(lat) * Math.cos(lon);
        double y = Math.cos(lat) * Math.sin(lon);
        double z = Math.sin(lat);

        X += x;
        Y += y;
        Z += z;
    }

    X = X / total;
    Y = Y / total;
    Z = Z / total;

    double Lon = Math.atan2(Y, X);
    double Hyp = Math.sqrt(X * X + Y * Y);
    double Lat = Math.atan2(Z, Hyp);
    return new latlon(Lat * 180 / Math.PI, Lon * 180 / Math.PI);
}

class latlon
{
    double lat;
    double lon;

    public latlon(double lat, double lon)
    {
        this.lat = lat;
        this.lon = lon;
    }

    public double getLon() { return lon; }
    public double getLat() { return lat; }
}

Monday, January 28, 2013

Calculando la distancia entre coordenadas utilizando Haversine en Java

Haversine Fomula

public static double toRad(double value)
{
   return value * Math.PI / 180;
}
 
public static double getDistanceM( double lat1, double lon1, double lat2, double lon2 )
{
final int R = 6371000; 
double latDistance = toRad(lat2-lat1);
double lonDistance = toRad(lon2-lon1);

double a = Math.sin(latDistance / 2)*Math.sin(latDistance / 2) + Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);

double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double distance = R * c;
return distance;
}

Sunday, January 27, 2013

iftop – visualizar ancho de bando en consola


Este comando nos ayuda a visualizar el ancho de banda que se esta transmitiendo y recibiendo  por un interfaz de red. Revisa el trafico de red en una interfaz y muestra una tabla de ancho de banda entre un par de  maquinas.
Uso:

iftop -i eth0

Comandos utiles:
n: toggle DNS host resolution
p: pause display
h: toggle this help display

Caracteres Raros en la Consola de Linux

La terminal de linux debe de estar configurada con la información del tipo de TERMINAL que se está usando  sino al utilizar aplicaciones de consola que utilizan librerías como ncurses ( iftop, dadhi_config, dselect, make menuconfig, etc) muestran caracteres raros en sus resultados. Para corregir esto se debe de configurar la variable TERM en la consola:
export TERM=xterm

export LANG=en_US

export TERMINFO=/usr/share/terminfo

Friday, January 25, 2013

Problemas con la compilación de modulos en Ubuntu 12.10

Instale Ubuntu 12.10 en mi maquina de desarrollo para probar algunos paquetes de asterisk y al terminar de instalar tuve problemas para instalar el driver propietario de nvidia y el modulo dahdi para asterisk.

Al revisar las bitacoras de nvidia y el modulo de asterisk, los dos presentan este error:

/var/lib/dkms/nvidia-current/295.40/build/nv-linux.h:114:75: fatal error: asm/system.h: No such file or directory

El problema es que la versión actualizada del kernel que trae ubuntu no trae ese archivo pero esto se puede solventar utilizando el archivo switch_to.h como system.h:

#!/bin/bash


#entrar al directorio donde falta el archivo

cd /usr/src/linux-headers-`uname -r`/arch/x86/include/asm


#realizar un link simbolico

ln -s switch_to.h system.h


#ejecutar el proceso que recompila los modulos de kernel

/usr/lib/dkms/dkms_autoinstaller start


Saturday, January 12, 2013

Nuevo Blog

Tuve un problema con Godaddy y me perdieron todos mi archivos y no tenia respaldo. He decido hostear mi sitio en blogger para aprovechar el servicio gratuito.

Para las personas que me han pedido el código de sms-hn, desde hace años dejo de funcionar desde el momento que Tigo y Claro empezaron a utilizar Captchas.

Hasta un nuevo post.