Función para calcular la distancia entre dos coordenadas en MySQL

Llevo un par de días trabajando con coordenadas geográficas en un proyecto personal, por lo que voy a hablar del tema estos días.

Para saber qué distancia separa dos coordenadas recurrimos a la fórmula del Haversine, o fórmula del semiverseno. Delego la parte matemática teórica y vamos a la parte MySQL, que supongo que es lo que estabas buscando cuando llegaste aquí. Os dejo el código y una pequeña explicación paso a paso. La función requiere cuatro variables (latitud y longitud de cada uno de los puntos) y devuelve el resultado en kilómetros.

/*vamos a inicializar nuestras variables,
en este caso con un valor constante
pero en vuestro caso lo podéis hacer
con datos sacados de una consulta Select*/

Set @Lat1 = 42.880501;
Set @Lng1 = -8.545732;
/*Son las coordenadas de la catedral de Santiago
o eso me ha dicho DuckDuckGo*/ 

Set @Lat2 = 53.731951;
Set @Lng2 = -6.877150;
/*Como segundo punto he elegido una calle cualquiera 
en Kells, Irlanda*/

/*Y ahora aplicamos la función SQL 
Que nos devolverá la distancia en kilómetros*/

SELECT (acos(sin(radians(@Lat1)) * sin(radians(@Lat2)) + 
cos(radians(@Lat1)) * cos(radians(@Lat2)) * 
cos(radians(@Lng1) - radians(@Lng2))) * 6371) as distanciaKm;

/*el resultado con estos datos es de 
1212.8306071122186 kilómetros*/

/*Si quieres el resultado el millas
cambia el valor 6371 en la función
por 3959*/

Próximamente veremos como hacerlo este cálculo con Javascript, que es mucho más divertido.

Consejos para asegurar tu red WiFi

Soy una persona que valora mucho las formas. Por ejemplo, cuando un vecino logró colarse en mi WiFi el verano pasado ya me encargué de dejarlo claro que mejor no andar jodiendo con esos temas. En cambio, cuando llegó un nuevo vecino y me ofreció compartir los gastos no sólo le he dejado usarla, sino que se lo dejo de gratis (aunque me ha regalado unas botellicas de vino, un chaval agradecido).

2000px-Wi-Fi_Logo.svg

En todo caso, la mayoría de la gente no quiere a otros pululando por su red ¿cómo podemos fortificarla?. Vamos con una serie de consejos (que, por otra parte, no pueden garantizar protección total, eso por desgracia es una quimera):

  • Utiliza un cifrado fuerte, WPA/WPA2 – PSK es el más robusto para redes domésticas. No es infalible, desde luego, pero sí bastante más consistente que otras opciones.
  • El nombre de la red (el SSID) puede ser utilizado para crackearla con un ataque de diccionario, así que cambiarlo será una de las primeras cosas que deberías hacer (y pones un nombre que probablemente no esté en los diccionarios habituales, tipo CaghoN0KaRaLloDTeUPae).
  • Cambiar la contraseña por defecto es otro must. Hay herramientas para crackear redes que se basan en los algoritmos que usan las compañías para generar las contraseñas por defecto. Como siempre que hablamos de claves, usa una contraseña fuerte (puedes servirte de un generador aleatorio de contraseñas).
  • Desactiva el WPS (por los motivos expuestos en el enlace).
  • Cambia periódicamente la contraseña y el nombre de la red, y apágala cuando no la estés usando. El tiempo es un factor fundamental para encontrar la clave, por tanto si lo apagas le estás limitando ese tiempo al atacante, mientras que un cambio de contraseña tirará por tierra todo el trabajo ya realizado. Tienes la opción de ocultar la WiFi también, pero yo nunca le he acabado de ver la práctica, ya que el atacante puede configurar su equipo para buscar redes ocultas.
  • Seguramente la configuración de tu router te permita hacer un filtrado por MAC (hablo de media access control, no de orenadores con manzanitas).Todos los routers suelen tener esta opción, basta con que accedáis al mismo, la busquéis, hagáis una lista blanca con las MAC de vuestros dispositivos y bloqueéis el resto. Es un coñazo si un amigo viene a casa y quiere conectarse a la WiFi, y puede ser burlado, pero es un escollo más para el atacante.
  • Fortifica tu Router: Si alguien logra romper tu contraseña, a pesar de toda la seguridad extra aplicada, lo que menos te interesa es que entre en la configuración de tu punto de acceso. Esencial, desde luego, es cambiar tanto la contraseña por defecto como el usuario (una simple búsqueda en Google te puede decir la del tuyo). Básico tambien es tener el firmware actualizado. Pero la medida más efectiva, que permiten casi todos los routers y que además no genera mucho problema al 90% de los usuarios, es restringir el acceso al router vía WiFi, para que sólo puedan acceder a él los usuarios conectados mediante cable, lo cual ya te da un plus de fortificación.

Con esta serie de consejos, ya te lo comentaba arriba, no lograrás la seguridad completa e infranqueable (lo dicho, una quimera, no existe a día de hoy, y seguramente no existirá), pero al menos ganarás bastantes puntos respecto a lo que supone dejar todas las configuraciones por defecto.

Script para gestión de backups de PostgreSQL en FreeBSD

No recuerdo si había comentado que estaba en plena migración tecnológica laboral, trabajando con el SGBD libre PostgreSQL y el sistema operativo (libre, of course) FreeBSD. Y el primero de los trasteos era simple ¿cómo automatizo los backups? Ya habíamos hablado de este tipo de cuitas alguna vez por aquí, así que vamos a ver cómo con un script, y haciendo uso de Cron, podemos lograrlo:

#!/bin/sh
# pgsql backups --datosde conexion
db_user="tu_usuario"
db_name="tu_base_de_datos"
db_dumpdir="/var/backups/carpeta"
date_format="`date +%Y-%m-%d.%H:%M`"

#ARRIBA CAMBIA LOS EJEMPLOS POR LOS DATOS QUE CORRESPONDAN. 
 
# BORRAMOS LOS BACKUPS MÁS VIEJOS
# PARA NO SATURAR
# EN ESTE CASO, LOS QUE TENGAN MÁS DE
# 4 SEMANAS

expire_time="+4w"
 
# Begin Script #
/usr/local/bin/pg_dump -U $db_user $db_name -f "$db_dumpdir/$db_name-$date_format.pgsql"
/usr/bin/find $db_dumpdir -d 1 -Btime $expire_time -delete

Con este ya tenemos un script que nos genera un backup de la base de datos en nuestra carpeta de copias de seguridad y además borra los que tengan más de cuatro semanas, para que no saturemos el disco duro. Y ahora, como dijimos antes, necesitamos Crontab para automatizar la copia. Asumamos que guardamos el script en la dirección /usr/local/scripts/pg_backup.sh, porque somos gente ordenadita (al menos a la hora de organizar discos duros). En nuestro caso ejecutaremos el script cada 6 horas:

# crontab -e
* /6 * * * /usr/local/scripts/pg_backup.sh > /dev/null 2>&1

Y con esto ya tenemos la cuestión de automatizar las copias de seguridad solventada.

#JeSuisAaron

Aaron Swartz

Estos días muchos enarbolan la bandera de la libertad de expresión (algunos con una desfachatez equivalente a llamarnos gilipollas a la cara) bajo el hashtag #JeSuisCharlie. Hoy tristemente nos toca recordar que hace dos años nos dejó una mente brillante, la de un joven prodigioso que decidía acabar con todo y quitarse la vida justo antes de enfrentarse a un juicio en el que le pedían 50 años de cárcel y casi cuatro millones de dólares. Se le acusaba de haber descargado diversos estudios académicos de la red de bibliotecas universitarias JSTOR, con la «intención de compartirlos en páginas P2P«.

Dos años ya. Conviene no olvidarle. Conviene no olvidar quién le persiguió y por qué, para cuando vuelvan a ponerse tras la pancarta de la «libertad«. No olvidemos a Aaron Swartz.

Usando Unity Web Player en Linux, con Pipelight

Si bien desde la cuarta versión de Unity3D el popular motor gráfico permite exportar proyectos para Linux, a día de hoy seguimos careciendo de una forma de usar el complemento de Unity para el navegador, el Unity Web Player. Esto es porque hace uso de Silverlight de Microsoft, que sí está disponible para Windows (como es lógico siendo productos del mismo fabricante) y MacOS.

Entonces ¿nos quedamos sin poder usarlo en Linux? No, claro que no. El proyecto Pipelight nos da la herramienta para que no echemos en falta Silverlight en Linux.

El proceso de instalación variará según la distribución que utilicemos, pero puedes verlos todos en la página oficial del proyecto. Aquí veremos las instrucciones que yo seguí en Ubuntu, para el resto de distribuciones me remito al enlace:

sudo add-apt-repository ppa:pipelight/stable
sudo apt-get update
sudo apt-get install --install-recommends pipelight-multi
sudo pipelight-plugin --update

Tras la instalación de Pipelight habrá que habilitar los plugins que queremos usar. El comando que hace esto es:

sudo pipelight-plugin --enable nombreDelPlugin
##En nuestro caso, para Unity, sería
sudo pipelight-plugin --enable unity3d

Esto no sólo os permitirá utilizar Unity3D, sino otros complementos como Adobe Flash, Acrobat Reader, etc. Podéis verl toda la información en el enlace.

Utilizando Team Viewer dentro de una LAN

Una función poco conocida del popular software para acceo remoto TeamViewer es que, además de permitir la conexión vía internet (de una forma extremadamente cómoda para un usuario que no tenga muchos conocimientos, ya que requiere mucha menos configuración que VNC) admite configurar el programa para, cuando queremos acceder a un equipo de nuestra red local, hacerlo a través de ella en lugar de usar la conexión estándar por internet. ¿Qué logramos con esto? Generalmente nuestra red local va a tener más ancho de banda que nuestra conexión a internet, así que la conexión será más rápida.

¿Cómo lo configuramos? Pues debemos hacerlo tanto en el cliente como en el servidor, y en ambos casos no es muy complicado, se hace gráficamente en un par de clicks:

  • En el equipo que queremos controlar:
    1. Abrimos TeamViewer y en la pantalla de conexión nos vamos, en el menú superior, a EXTRAS >> OPCIONES
    2. Ahí hay una opción, junto a combo desplegable, llamada Conexiones de LAN entrantes
  • Ahora vamos con el equipo servidor:

    1. Necesitos saber la IP del equipo cliente en la LAN. Las opciones son múltiples, tanto en Windows como en Linux. Puede consultarse a través de la consola de comandos, mirando las propiedades de la red…
    2. Una vez sepamos la Ip del cliente ya sólo necesitamos la contraseña de TeamViewer (la misma que para una conexión normal) para acceder a él. Básicamente nos conectamos como siempre, pero poniendo la IP del equipo en lugar del habitual ID para conexión, luego insertamos la contraseña como siempre y estamos conectados.

De esta sencilla forma podremos conseguir mayor velocidad en nuestras conexiones dentro de redes locales. He de reconocer que aunque sea software privativo, TeamViewer es una solución cojonuda para solucionar problemas mediante acceso remoto. Hay buenas alternativas libres a nivel de funcionalidad, pero por desgracia no tanto a nivel de sencillez, y muchas veces lo que necesitamos es que el que esté al otro lado del teléfono pueda entender lo que tiene que hacer sin perder mucho tiempo (sí, claramente me estoy intentado justificar por usar software privativo, y en serio que me jode usarlo). Aunque próximamente hablaremos por aquí de ese tema y de soluciones alternativas).

Open Bay, la evolución lógica de Pirate Bay

Al final el ataque policial contra The Pirate Bay acabará teniendo unas consecuencias totalmente inesperadas para los intereses económicos tras el mismo, y además parece que puede hacer evolucionar el proyecto hacia un nuevo nivel.

Tras el cierre del popular sitio de intercambio de Torrents su código fue liberado en GitHub. La idea era simple: en lugar de tener todo centralizado en una web se crearía un enorme enjambre de sitios, dificultando así las posibilidades de machacar el servicio, ya sea por la vía jurídica/policial o mediante ciberataques. ¿El resultado de esta iniciativa? 372 copias de The Pirate Bay funcionando tan solo una semana después de la publicación, además de más de 500 forks que ha permitido mejoras en el código.

Estos clones de The Pirate Bay se nutren de una copia de una base de datos de torrents que combina resultados de isoHunt, Kickass Torrents y los datos del Pirate Bay Original.

Irónicamente la guerra legal y policial, cuyo objetivo era cerrar el sitio original, acaba provocando una nueva oleada de sitios, dejando de nuevo patente el poder del código abierto.

Pin WPS ¿por qué se recomienda desactivarlo?

El sistema WPS fue promovido como un standar de seguridad en 2007 para redes wifi, que además permitía simplificar la configuración de las mismas haciendo uso de un código PIN de 8 dígitos para conectar nuevos dispositivos a la red.

En 2011 dos especialistas en seguridad, Stefan Viehböck y Craig Heffner, descubrieron (cada uno trabajando por su cuenta) una vulnerabilidad en este sistema, en la forma en que los routers devuelven la respuesta a la inserción de un pin erróneo, lo cual facilita a los atacantes obtener dicho código por medio de un ataque por fuerza bruta. Una vez han conseguido dicho código, los atacantes puede hacerse con la clave de la wifi de manera rápida utilizando unas simples herramientas comunes.

No existe más solución que desactivar la opción del pin WPS en vuestro router para protegeros de este ataque. Me encantaría daros una explicación de cómo hacerlo… pero no hay explicación genérica posible, ya que en cada router es distinto, por lo que os tocará recurrir a algún buscador para encontrar las instrucciones de vuestro modelo. En cualquier caso, lo normal es hacer lo siguiente:

  • Accedéis al router desde vuestro navegador, introduciendo la ip del mismo en la barra de direcciones (podéis saber la ip del router mirando vuestra configuración de red, ya que ahí aparece con el nombre de «Puerta de Enlace«).
  • Lo normal es que os pida un usuario y contraseña para acceder al mismo. Si se lo habéis configurado previamente ya lo sabréis, si nunca lo habéis hecho lo más probable es que tenga la que trae por defecto el dispositivo. Suele venir en el manual del dispositivo, y si no lo tenéis a mano es posible que la encontréis en algún foro realizando una simple búsqueda.
  • Una vez en la configuración del router buscáis la opción de «Habilitar Seguridad WPS«, «Habilitar WPS«, «PIN WPS«… en fin, hay múltiples posibles nombres según el router, pero os hacéis una idea de que tiene que poner WPS en algún sitio. Allí lo desconectáis, si es posible (algunos routers no permiten desactivarlo)

Efecto 2038 ¿qué es? ¿ trae el próximo apocalipsis?

No, desde luego que no será el fin de la humanidad, como tampoco en su día el Efecto 2000. Pero alguno ha visto el titular y ha pensado ¿Qué es el efecto 2038?. Primero toca hacer un poco de historia y reflexión.

La primera reflexión es ¿cómo le decimos a un ordenador que mida el tiempo? Convertir la fecha ya la hora en algo que una computadora regida por dígitos binarios pudiera entender y con lo que pudiera trabajar era un tema complejo. Cuando el Instituto de Ingeniería Eléctrica y Electrónica se puso a estandarizar este tema creó la norma IEEE 1003, también llamada POSIX a propuesta de Richard Stallman, donde se define que la hora, tomando a los sistemas UNIX como referencia, se expresa con un entero con signo, de 32 bits, que marca los segundos transcurridos desde el 1 de enero de 1970.

¿Qué significa que el número de segundos se almacene en un entero con signo? Pues que de los 32 bits que se usarán para guardar el número el bit menos significativo (el que está a la izquierda) se utiliza para guardar el signo (es decir, si el número es positivo o negativo) y los 31 bits restantes para guardar el resto del número, implicando que el número más grande que podemos guardar es 231-1.

Cuando lleguen las 03:14:07 UTC del 19 de enero de 2038 el número almacenado en un equipo de 32 bits como fecha será el 01111111 11111111 11111111 11111111, que pasado a decimal serían 2.147.483.647 segundos que habrían transcurrido entre la fecha de referencia de inicio y ese momento. Un segundo después el número almacenado pasaría a ser 10000000 00000000 00000000 00000000, recordando que el bit de la izquierda se interpreta como el signo, que acaba de cambiar, por lo que la cifra sería negativa: -2.147.483.648 segundos, o lo que es lo mismo, «viajaríamos en el tiempo» al 13 de diciembre de 1901. Es posible que hace poco hayas leído una noticia sobre que Youtube cambió su contador de visitas por culpa del gran número de reproducciones del Gangnam Style, era exactamente este mismo problema.

El comportamiento de determinados programas y sistemas ante esta eventualidad es algo que no podemos aventurar, como pasaba hace 15 años cuando hablábamos del Y2K, el efecto 2000. Aunque un día hice la prueba en un equipo antiguo y no me generó problemas más allá del salto de fecha (reconozco que no le trasteé mucho, a fin de cuentas era un equipo que iba para trashware).

Por otra parte, ya hace unos años que trabajamos con sistemas de 64 bits por lo que esta eventualidad está solucionada para varios milenios (pensad que al ser cifras binarias la cantidad aumenta exponencialmente). Todavía quedan equipos de 32 bits, ahora mismo de hecho os escribo desde uno, pero en el transcurso de los años estos irán retirándose para dar lugar a nuevos equipos. Es muy poco probable que en 2038 nos encontremos con equipos o software pensado para 32 bits, así que si el apocalipsis llega no lo hará por ahí, por este lado puedes estar tranquilo.

Periolisto considera que Linux es una alternativa a Google… como buscador (marca España 100%)

Por la tarde veía el vídeo compartido en muros de facebook, y posteriormente también me encontraba un artículo sobre el tema en el blog de Victor Hck.

Os pongo en situación: programa de debate/tertulia en TVE, donde debaten sobre el tema del Canon AEDE (bueno, eso no se debate, están todos de acuerdo con la línea oficialista) y el cierre de Google News en España. Se abre una línea de discusión interesante en el programa: el monopolio de facto que tiene Google y al que la Comisión Europea, capitaneada por el comisario Almunia (recordemos, uno de los que hundió al PSOE post-Felipe en la mayoría absoluta de Aznar), ha intentado meter mano infructuosamente durante el último lustro. Entonces vemos una gran perla que muestra el nivel periodístico (más bien periolístico) de los medios españoles. Uno de los periolistos opina que la comisión europea debe propulsar una alternativa a Google, porque sus competidores se han quedado por detrás (Yahoo y Bing, como si no se tratara de proyectos con empresas billonarias detrás), cito la conversación, grosso modo, que va a continuación de que afirmen que se necesita crear una alternativa:

-No, si lo hay, pero no funciona.
-Pues que funcione, porque (blah blah)…
-«Linus», se llama «linus».
-No, eso no..
-Es un método operativo que funciona como…

Esto me lleva a plantear varias cuestiones:

  • Ya que la televisión pública la pagamos con nuestros impuestos, sobre todo desde que no tiene publicidad ¿podrían molestarse al menos en llevar a alguien que sepa algo del tema del que va a hablar? (es una pregunta retórica, ya que obviamente seguirán llevando a sus siervos apaniaguados, que ladren la versión oficial)
  • Es cierto que Google, como ya he dicho arriba, en la práctica tiene un monopolio como buscador en Europa, pero ¿es posible hacer algo para revertir la situación?, porque realmente existen alternativas a Google, y alternativas perfectamente funcionales, algunas además apoyadas por empresas muy grandes. De hecho Bing es el buscador por defecto de Internet Explorer, navegador que viene preinstalado en el sistema operativo mayoritario en equipos de escritorio: Windows.
  • ¿Se preocupaba tanto la Comisión Europea cuando Microsoft presionaba para sacar del mercado a Linux? ¿Cuando presionaban a empresas de desarrollo para que no hicieran versiones para linux de su software? Porque a la compañía de Bill Gates prácticamente la dejaron campar a sus anchas muchos años, sin contar la gran cantidad de licencias que han vendido a la administración.
  • Puestos a meter mano al negocio de Google ¿no sería mejor buscar solución a su contabilidad creativa que les permite pagar impuestos irrisorios (no sólo a ellos, también a Amazon, Apple, Microsoft, Starbucks, Inditex) que a que tengan la mayor cuota de mercado como buscador?. Porque eso sí que sería una medida interesante, ya que hablamos de miles de millones de euros que se van a paraísos fiscales.
  • ¿No es absurdo, a la par que hipócrita, hablar del problema del monopolio Google y luego pretender que todas las gestiones del Canon se tengan que hacer a tavés de AEDE?, y ya puestos ¿han denunciado estos mismos el monopolio también de facto que ejerce la SGAE en España en temas de gestión de derechos de autor?
  • ¿Es la gente que ve estos programas consciente de la poca idea que tienen estos tertulianos, que están condicionando su opinión y cosmovisión? Y no sólo en temas sobre tecnologías, ya que cuando hablan sobre política o economía vienen a soltar perlas del mismo calibre.