Añadir ubicación en las fotos

Actualmente lo normal es que una foto tomada con un móvil lleve asociada la ubicación donde se tomó, es una manera de que Google nos tenga controlados, pero si haces la foto con una cámara, quizás no tengas esa información de ubicación. Hasta que Google decidió cobrar por subir más de 15 GB a tu cuenta, yo subía las fotos a Google Photos y en algunos casos que me interesaba, utilizaba la versión web para poner la ubicación de una determinada foto. Era bien sencillo, se seleccionaba una foto o varias y en la parte de arriba a la derecha, en los tres puntitos (más opciones) se desplegaba un menú que permite editar una ubicación.

Editar ubicación de una fotografía en Google Photos

Buscando una alternativa a este almacenamiento de fotos he pensado en utilizar Amazon Photos que permite almacenamiento infinito siendo cliente prime de Amazon. Lo malo es que este sistema de almacenamiento no permite añadir una ubicación (o al menos no sé cómo hacerlo), hay que subir las fotos «ubicadas».

Estuve mirando en internet y al final he optado por utilizar una herramienta llamada exiftool que permite modificar los metadatos de un fichero JPEG y añadir, entre otras cosas, la latitud y longitud del sitio donde has tomado la foto o lo que interese.

En el ejemplo tengo una bonita foto de los campos de lavanda de Brihuega y me gustaría poner la ubicación de esa foto. Tengo también una foto tomada con el móvil donde se puede ver esa ubicación, pero también se puede buscar en internet las coordenadas geográficas del sitio.

Veamos si tenemos información GPS de la foto con un sencillo comando:

$ exiftool lavanda.jpg|grep GPS

Y simplemente obtengo:

GPS Version ID : 2.3.0.0

es decir, ninguna información sobre latitud y longitud

Con la foto tomada con el móvil,

$ exiftool -s IMG_20200723_212547913_HDR.jpg |grep GPS

se obtiene bastante información sobre la ubicación:

 GPSVersionID                    : 2.2.0.0
 GPSLatitudeRef                  : North
 GPSLongitudeRef                 : West
 GPSAltitudeRef                  : Above Sea Level
 GPSTimeStamp                    : 19:25:47
 GPSMapDatum                     : WGS-84
 GPSProcessingMethod             : ASCII
 GPSDateStamp                    : 2020:07:23
 GPSAltitude                     : 1090 m Above Sea Level
 GPSDateTime                     : 2020:07:23 19:25:47Z
 GPSLatitude                     : 40 deg 47' 29.72" N
 GPSLongitude                    : 2 deg 51' 0.34" W
 GPSPosition                     : 40 deg 47' 29.72" N, 2 deg 51' 0.34" W

principalmente interesa lo que llama GPSLatitude y GPSLongitude que no es más que la latitud y la longitud del punto.

Se pueden sacar las coordenadas de otra foto o utilizando el buscador de Google, que encuentra fácilmente las coordenadas de Brihuega:

Coordenadas geográficas de Brihuega

que no coinciden exactamente porque la fotografía está tomada en los campos de lavanda y lo que te dice Google imagino que será del centro del pueblo. También se puede con el Google Maps las coordenadas simplemente haciendo clic con el botón derecho en el punto que se desee.

Una vez obtenidas las coordenadas se pueden modificar o añadir los metadatos correspondientes con la herramienta exiftool utilizando los siguientes comandos:

$ exiftool -P -GPSLatitudeRef=N lavanda.jpg
$ exiftool -P -GPSLongitudeRef=W lavanda.jpg
$ exiftool -P -GPSLatitude="40 deg 45 min 35 seg" lavanda.jpg
$ exiftool -P -GPSLongitude="2 deg 52 min 14 seg" lavanda.jpg

Y ahora se puede ver todos los datos GPS que tenemos en esta imagen:

$ exiftool -s lavanda.jpg|grep GPS
GPSVersionID : 2.3.0.0
GPSLatitudeRef : North
GPSLongitudeRef : West
GPSLatitude : 40 deg 45' 35.00" N
GPSLongitude : 2 deg 52' 14.00" W
GPSPosition : 40 deg 45' 35.00" N, 2 deg 52' 14.00" W

Una vez modificada, si la subimos a Amazon Photos o a Google Photos se puede comprobar que la localización es correcta.

Foto con coordenadas geográficas

Posiblemente existirán otros métodos, pero este no es muy complicado y la ventaja que tiene, es que teniendo un montón de fotos de un determinado sitio, si están todas en un directorio, es tan sencillo como ejecutar los comandos utilizando en vez del nombre del archivo, el tan atractivo asterisco:

$ exiftool -P -GPSLatitude="40 deg 45 min 35 seg" *.jpg

Bulos sobre el coronavirus

Sorprendentemente hay gente que en estos tiempos tan jodidos para mucha gente aprovecha para lanzar bulos por las redes sociales con no sé qué idea. ¿Se creen más listos que nadie? O son simplemente pobrecitos. Me inclino por la segunda alternativa.

Aquí entra la gente de maldita.es que hace un trabajo increíble y entre todas los temas que tocan uno de ellos es desmentir bulos que corren por las RRSS y en estos días, desmentir bulos sobre el coronavirus. Cuando escribo esta entrada, a las diez de la mañana del día 11 de abril ya llevan desmentidos más de cuatrocientos bulos, como se puede ver en la figura adjunta.

Pues bien, a lo que iba, sigo en Twitter al usuario @malditobulo y de vez en cuando sacan mensajes diciendo que hay X bulos sobre el coronavirus y ofrecen una imagen que te lleva a la URL donde ellos ofrecen la información sobre los bulos. Lo que no me gusta de este tema es que al consultar esa URL en vez de poner los nuevos bulos arriba de la página web lo van poniendo de aquellas maneras, de tal modo que cuando consulto, siempre aparece arriba el tipo del clorito de sodio y tengo que andar buceando para buscar los casos nuevos.

Me di cuenta que la URL que se consulta siempre tiene la misma estructura:

https://maldita.es/malditobulo/2020/04/10/coronavirus-bulos-pandemia-prevenir-virus/

Tiene un prefijo «https://maldita.es/malditobulo/» luego el día en formato «AÑO/MES/DÍA» y luego un sufijo «/coronavirus-bulos-pandemia-prevenir-virus».

Entonces se me ocurrió que se podía automatizar cómo encontrar nuevos bulos de manera fácil, aunque la información quede presentada de manera un poco cutre-salchicera.

Para ello hice un script en bash que se ejecuta en una máquina *nix y que presenta de una manera no muy elegante los nuevos bulos. Algo así como:

No, el Ministerio de Sanidad no ha enviado una cadena de WhatsApp con recomendaciones contra el coronavirus que pide protegerse con mascarilla
Alcohol, ajos y mascotas: los mitos sobre el coronavirus que ha desmentido la OMS
¿El COVID-19 puede transmitirse en áreas con climas cálidos y húmedos?
¿Darse un baño caliente protege del coronavirus?
¿El nuevo coronavirus puede transmitirse a través de picaduras de mosquitos?
¿El frío y la nieve matan al coronavirus?
¿Son efectivos los secadores de manos a la hora de matar el nuevo coronavirus?
¿Pueden una lámpara de desinfección ultravioleta matar el nuevo coronavirus?

Si ves algún bulo nuevo y tienes interés en saber con detalle de qué se trata se accede a maldita.es y se ve el contenido. Fácil.

Para instalar el script se puede bajar de mi repositorio de GitHub: https://github.com/miguelius1966/bulos-coronavirus

Siéntete joven

Debido al confinamiento, como no se puede salir a correr, hay que buscar alternativas. Llevo junto a mi familia, desde el día 16 de marzo siguiendo los vídeos de María Martínez que tiene un canal de YouTube donde realiza diversos ejercicios para mantenerse en forma. Por la forma de presentarse, con un «hola guapísimas» es evidente que está enfocado a mujeres, pero yo sudo de lo lindo con sus rutinas y me tiemblan las piernas con algunos de sus ejercicios, por lo que no necesito más. He visto algún vídeo de Fausto Murillo, pero son demasiado heavies para mí, me quedo con María.

Así, todos los días a las siete de la tarde nos ponemos y realizamos alguna rutina siguiendo un calendario que publica en su web. Sin ir más lejos, ayer hicimos una rutina de baile latino + adelgazamiento y otra de muslo interno. Los vídeos son muy entretenidos porque son muy variados. Algunos son de baile, otros con un palo, otros con mancuernas. Me gusta sobre todo por eso, por la variedad y porque la chica los hace muy amenos.

Me gustan tantos, que cuando acabe el confinamiento combinaré las carreras a pie con alguno de sus vídeos, ya que es bueno ejercitar otros músculos para esto del correr.

¡Gracias María! Cada día que pasa me siento más joven 😉

MySQL e IPv6

Ahora que no se puede correr voy a aprovechar para hablar de otro de mis vicios, que no es otro que linux y para ello utilizo unas cuantas Raspberry Pi con sistema operativo Raspbian.

En su momento monté este blog utilizando dos raspberries. En una monté WordPress y en otra la BBDD MySQL. Se puede montar todo en una, pero lo hice para jugar un poco.

Una de las cosas que también me gusta es el tema de IPv6, esa gran revolución que iba a llegar y que se va posponiendo poco a poco. Las dos raspberry tienen dirección de IPv6 y además la dirección IPv6 se forma utilizando la dirección MAC. Estas direcciones IPv6 se llaman de enlace-local y tienen un alcance limitado, sería lo equivalente a las direcciones privadas de IPv4 del tipo 169.254.0.0/16. Son direcciones que se utilizan si no hay DHCP, pero son direcciones que se pueden utilizar.

Por ejemplo, una raspberry tiene la MAC dc:a6:32:1b:40:be y, por lo tanto, su dirección IPv6 es fe80::dea6:32ff:fe1b:40be/64. La otra rasp tiene la MAC b8:27:eb:35:25:f7 y, por lo tanto, la IPv6 es fe80::ba27:ebff:fe35:25f7/64. La gracia de este asunto es que independientemente de la IPv4 que le dé el DHCP ambas se pueden ver.

$ ping -c 4 fe80::ba27:ebff:fe35:25f7
 PING fe80::ba27:ebff:fe35:25f7(fe80::ba27:ebff:fe35:25f7) 56 data bytes
 64 bytes from fe80::ba27:ebff:fe35:25f7%eth0: icmp_seq=1 ttl=64 time=0.558 ms
 64 bytes from fe80::ba27:ebff:fe35:25f7%eth0: icmp_seq=2 ttl=64 time=0.502 ms
 64 bytes from fe80::ba27:ebff:fe35:25f7%eth0: icmp_seq=3 ttl=64 time=0.480 ms
 64 bytes from fe80::ba27:ebff:fe35:25f7%eth0: icmp_seq=4 ttl=64 time=0.478 ms
--- fe80::ba27:ebff:fe35:25f7 ping statistics ---
 4 packets transmitted, 4 received, 0% packet loss, time 94ms
 rtt min/avg/max/mdev = 0.478/0.504/0.558/0.039 ms

Desde la otra también hace ping

$ ping -c 4 fe80::dea6:32ff:fe1b:40be
 PING fe80::dea6:32ff:fe1b:40be(fe80::dea6:32ff:fe1b:40be) 56 data bytes
 64 bytes from fe80::dea6:32ff:fe1b:40be%eth0: icmp_seq=1 ttl=64 time=0.501 ms
 64 bytes from fe80::dea6:32ff:fe1b:40be%eth0: icmp_seq=2 ttl=64 time=0.474 ms
 64 bytes from fe80::dea6:32ff:fe1b:40be%eth0: icmp_seq=3 ttl=64 time=0.485 ms
 64 bytes from fe80::dea6:32ff:fe1b:40be%eth0: icmp_seq=4 ttl=64 time=0.447 ms 
--- fe80::dea6:32ff:fe1b:40be ping statistics ---
 4 packets transmitted, 4 received, 0% packet loss, time 115ms
 rtt min/avg/max/mdev = 0.447/0.476/0.501/0.033 ms

También se puede utilizar la dirección IPv6 para entrar por SSH

$ ssh usuario@fe80::ba27:ebff:fe35:25f7

Linux raspberri_bbdd 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l
 The programs included with the Debian GNU/Linux system are free software;
 the exact distribution terms for each program are described in the
 individual files in /usr/share/doc/*/copyright.
 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 permitted by applicable law.
 Last login: Sun Mar 15 11:11:05 2020 from fe80::dea6:32ff:fe1b:40be%eth0

Pues bien, se puede hacer ping, se puede entrar por SSH, pero una de las cosas que me estaba fallando era utilizar el cliente MySQL para acceder a la base de datos. Configuré el servidor como dice la documentación y traté de entrar:

mysql -hfe80::ba27:ebff:feff:a84a -uusuario -pcontrasenia bbdd
 ERROR 2002 (HY000): Can't connect to MySQL server on 'fe80::ba27:ebff:feff:a84a' (22)

Comprobé si desde la propia máquina se podía entrar utilizando la dirección de loopback de IPv6 (::1) y vi que funcionaba:

$ mysql -h::1 -uusuario -pcontrasenia bbdd
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Welcome to the MariaDB monitor.  Commands end with ; or \g.
 Your MariaDB connection id is 10310
 Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10
 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 MariaDB [bbdd]>

Lo más gracioso es que probando desde un «linux integrado» dentro de Windows 10 ¡sí funcionaba! Eso sí me descolocó del todo. Que funcione en un linux cutre y no funcione en uno de verdad, me chafó del todo. También probé desde la línea de comandos de un Mac y tampoco funcionó.

$ mysql -hfe80::ba27:ebff:fe35:25f7 -uusuario -pcontrasenia bbdd  Reading table information for completion of table and column names  You can turn off this feature to get a quicker startup with -A  Welcome to the MariaDB monitor.  Commands end with ; or \g.  Your MariaDB connection id is 10322  Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
MariaDB [bbdd]>

La verdad es que estuve dando muchas vueltas y me he comido mucho la cabeza hasta que al final he conseguido dar con ello. Todo viene porque en IPv6 hay que especificar la interfaz por donde sale el tráfico para llegar al destino. En mi caso, la interfaz es eth0 y, por lo tanto, hay que añadir el sufijo %eth0 a la dirección IPv6. La cosa quedaría:

$ mysql -hfe80::ba27:ebff:feff:a84a%eth0 -uusuario -pcontrasenia bbdd
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Welcome to the MariaDB monitor.  Commands end with ; or \g.
 Your MariaDB connection id is 112
 Server version: 10.3.22-MariaDB-0+deb10u1 Raspbian 10
 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 MariaDB [bbdd]>

Normalmente este tipo de problemas suele ocurrir por no leer la documentación, pero en este caso no es así porque la documentación es incorrecta. En este enlace habla del asunto y no dice nada de la interfaz:

También se puede desde PHP conectar usando IPv6, que era el motivo principal por el que empecé con todo este asunto. En este caso además de añadir la interfaz hay que meterlo todo entre llaves cuadradas []. La cosa quedaría algo así:

<?php
# Se definen unas variables
define("DATABASE","bbdd");
define("PASSWD","contrasenia");
define("USER","usuario");
define("SERVER",'[fe80::ba27:ebff:fe35:25f7%eth0]');
$mysqli =  mysqli_connect(SERVER, USER, PASSWD, DATABASE);     
if ($mysqli->connect_error) {             
    die('Error de conexión: ' . $mysqli->connect_error);     
}     
echo "Conectado  satisfactoriamente\n";
?>

Primer circuito de carreras de barrio

El lunes 20 de enero tuve la oportunidad de asistir a la presentación del Primer Circuito de Carreras de Barrio de Madrid. En dicho acto presentaron las carreras que formarán parte de ese circuito en el que está incluida la Carrera Popular Barrio del Zofío de la cual soy el delegado.

Cartel del Primer circuito de carreras de barrio

La presentación se realizó en la sede de la FRAVM (Federación Regional de Asocaciones Vecinales de Madrid) y en el acto conducido por Isaías Díaz Peña hablaron David Corbacho (ideólogo del invento y el que más ha trabajado en este proyecto), Quique Villalobos (presidente de la FRAVM que creyó en este proyecto desde el comienzo) y Clara Viñarás (atleta internacional también participante en algunas carreras de barrio).

Isaías Díaz Peña, David Corbacho, Quique Villalobos y Clara Viñarás.

Se habló de la importancia de las carreras de barrio en la historia del atletismo popular en Madrid y de cómo estas carreras fomentan el que los corredores populares conozcan los barrios de Madrid, resaltando la importancia que tienen en la participación vecinal la organización de estas pruebas. También hablaron de las distintas pruebas y de la puntuación en cada una de ellas. Resumiendo:

  • 14 prueba incluyendo dos medias maratones (Fuencarral y Latina), un par de crosses (Trofeo Marathon y Salvar el pinar de la Elipa), un par de sansilvestres (Vicálvaro y Villaverde), una carrera no competitiva (Carrera del árbol) y el resto carreras de 10 km donde algunas además ofrecen la posibilidad de hacer la versión de 5 km. Para todos los gustos.
  • 11 Distritos, 150 kilómetros y 17000 participantes.
  • La inscripción al circuito se realizará automáticamente al participar en cualquier prueba.
  • Habrá una clasificación general individual y por equipos/clubs.
  • Se puntuará según el puesto y categoría de la prueba. Para optar a la general final se deberá participar en un número mínimo de pruebas.
  • Obtendrán premio los/as primeros/as clasificados/as así como los/as corredores/as con mayor número de participaciones.
  • Más información en www.carrerasdebarrio.es.

Os animo a todos a participar en las carreras del circuito, distintas pruebas todas con su idiosincrasia, que las hace únicas y donde el trato al corredor es más personalizado.

Clavado a la mala suerte

Con esta puñetera lesión que arrastro desde el mes de marzo/abril me fijé como objetivo llegar a agosto con cero molestias para poder entrenar para una media maratón en octubre; sin embargo ayer, en el colmo de la mala suerte fui a clavarme un clavo justo en el talón del pie derecho, donde tengo la fascitis plantar. Si esto no es mala suerte que venga dios y lo vea.

Bonito agujero en el talón del pie derecho

Con este nuevo contratiempo, ya no tengo claro cuando voy a poder empezar a correr de nuevo y veo cada vez más lejos la media maratón que tenía prevista.

De todos modos, no todo son malas noticias porque acudí al centro de salud para ver cómo estaba la herida y me dijeron que bien, que no estaba infectada pero que no me libraba de la antitetánica, porque ni me acuerdo de la última vez que me la pusieron.

Ahora a esperar que deje de dolerme el pie por la herida y ya de paso que se me cure la lesión. A lo mejor el pinchazo ha sido un revulsivo.

Nuevo blog

Empecé el blog de Correr es mi religión el 29 de julio de 2008, hace ya más de once años. En un principio albergado en un antiguo ordenador que tenía por casa. Luego descubrí wordpress.com y me pasé a este sitio, comprando incluso el dominio correresmireligion.com. Y durante años he estado muy contento con este servicio, pero últimamente la publicidad es cada vez más invasiva y ya estoy harto, así que he vuelto a albergar el blog en un ordenador que tengo en casa, pero si antes era un armatoste la máquina que albergaba el blog…

Servidor con gato incorporado

…Ahora es un poco más pequeño y encima consume poca electricidad y tiene la ventaja añadida de que no se sube el gato…

¡Y he conseguido migrar las 1629 entradas que tenía publicadas! Si alguien quiere saber cómo, que pregunte.

Carrera popular barrio del Zofío 2019

Después de que en 2018 la Junta Municipal de Usera decidiera que una empresa privada organizara la Carrera del Zofío y que además no lo hiciese, este año, de nuevo, la Asociación Vecinal Barrio Zofío se va a encargar de la organización de la carrera. La fecha elegida para la celebración de la carrera es el 16 de junio, así que id reservando ese domingo en el calendario para poder participar en esta gran carrera.

Y si alguno quiere inscribirse ya puede hacerlo por internet en este enlace.

Dos lustros

Hoy se cumplen dos lustros desde que empecé a escribir este blog. Es curioso como se pasa el tiempo, porque se han pasado estos diez años casi sin darme cuenta. Ya he escrito casi 1600 entradas y espero seguir escribiendo muchas más, esto indicaría que sigo corriendo aún y que no se me han pasado las ganas de escribir.

Y ya que no lo dice nadie, lo digo yo :mrgreen: :mrgreen: :mrgreen:

¡Larga vida al blog Correr es mi religión!

Futuro incierto de la Carrera Popular Barrio del Zofío

Durante 16 años la Asociación de Vecinos Barrio Zofío ha venido organizando la Carrera Popular Barrio del Zofío. El año pasado la Junta Municipal de Usera sacó a concurso un pliego donde se detallaban las actividades deportivas del distrito de Usera. En ese pliego la Junta decidió, sin pedir permiso ni preguntar nada, meter la Carrera Popular del Barrio Zofío como una prueba más. Ese pliego fue adjudicado a la empresa Doesport.

El año pasado, cuando el concurso fue adjudicado en el mes de mayo, la Asociación de Vecinos ya llevaba unos meses con la organización de la 16ª edición y debido a los compromisos adquiridos con patrocinadores, colaboradores y corredores decidió pasar por el aro, aunque no quedó satisfecha en absoluto con la fórmula arbitrada por la Junta para la realización de la carrera.

Es por ello que en el mes de octubre y desde entonces unas cuantas veces la Asociación expresó a la Junta su descontento con la fórmula utilizada, pero por supuesto, este año haciendo oídos sordos han vuelto a sacar el pliego y de nuevo la empresa adjudicataria ha sido la misma; sin embargo esta vez la Asociación ha decidido no seguirlos el juego.

Los voluntarios de la Asociación que han trabajado para sacar adelante la carrera lo han hecho de forma altruista, con el objeto de ayudar a una Asociación de Vecinos porque eso repercute en beneficio de los vecinos, pero no están dispuestos a malgastar su tiempo en que una empresa gane dinero a su costa. Es por ello que han decidido no participar en la organización de la carrera este año, así que si este año sale la carrera será «gracias» a la empresa Doesport que fue la misma que organizó de manera desastrosa el cross de Usera.

Resulta descorazonador comprobar como a este ayuntamiento se le llena la boca con palabras como «generar tejido social» y «fomentar las relaciones humanas entre los vecinos» y a la hora de la verdad apoyan a las empresas en vez de a las personas. Es muy triste.

Confiemos en que las cosas cambien el año que viene y se pueda realizar como lo hemos venido haciendo estos años.