martes, 12 de mayo de 2020

Copias de seguridad con AOMEI Backupper



Con la llegada de la última actualización de Windows 10 tenía claro que quería actualizar, pero pasando antes por un formateo, y según lo que decían los medios especializados, no me atrevía a hacerlo sin hacer un backup total del sistema. 

Estuve buscando alguna herramienta que me permitiera hacer una "imagen" del sistema, que me dejara restaurarla a través un USB autoarrancable y que fuera gratuita.

Y rápidamente llegué a la herramienta AOMEI Backupper, que cumple todo lo que yo buscaba (sólo te piden tu email).

Tienen la versión "free" para el hogar, y la versión "profesional" más orientada a las empresas, yo me quedé con la primera.

Es muy fácil de instalar y se apoya en asistentes para hacer todas las tareas que ofrece, por lo que es muy intuitivo y rápido. Además hace los backups "en caliente", así que puedes estar navegando tranquilamente mientras se genera la copia de seguridad.

Las opciones que ofrece son las siguientes (lo que necesitamos, ni más ni menos):


Si elegimos respaldar, las opciones se multiplican por dos:



Pero como se puede ver, siguen siendo operaciones que comprendemos.

Además nos deja generar un USB para realizar la tarea de respaldo, desde el menú "Herramientas" en la pantalla principal:



Yo seleccioné basado en Windows PE, y funcionó perfectamente.


En definitiva, que pasa a ser una de mis utilidades indispensables.

Si os interesa podéis acceder a su página desde este enlace: https://www.ubackup.com/download.html

sábado, 18 de abril de 2020

Algoritmia III: divide y vencerás



Briefing: En estos días de confinamiento, me cuesta mucho sentarme y escribir algo para Tecnificados, entre unas cosas y otras no tengo tiempo, y el poco que me sobra estoy demasiado cansado como para redactar un artículo. En un ratillo, he conseguido escribir este, que es bastante sencillote...

Continuamos los diversos tipos de algoritmos, vamos a hablar de los famosos "divide y vencerás", su idea se basa en descomponer un problema en varios problemas más pequeños, resolver estos, y combinar sus soluciones. Normalmente, la recursividad nos acompañará en este tipo de soluciones.

Estos algoritmos se utilizan muchísimo en Big Data.

Este es el enunciado del problema que vamos a resolver usando este tipo de algoritmo:

   En el programa de la Casa de Empeños, hace unos días llevaron una bolsa de monedas de plata. Rápidamente llamaron a un experto, y este dijo que había una moneda falsa, pero para tasarla necesitaba saber si pesaba más o menos que las auténticas. En la oficina, solo tienen una balanza de dos pesas, para poder comparar el peso de una o varias monedas. 

  Vamos a diseñar un algoritmo y a implementar su solución, utilizando Divide y Vencerás. 

La solución en esta URL: La solución en nuestro repositorio: https://github.com/tecnificados/algoritmos/tree/master/divide

(Imagen Principal generada con https://es.cooltext.com/)

domingo, 1 de marzo de 2020

Ubuntu en Android 2: ahora con JAVA


En el anterior post (https://www.tecnificados.com/2020/02/ubuntu-en-android.html) os comentaba que acaba de descrubrir el emulador "Termux", y todas las cosas que en teoría se podían hacer con él.

Esta semana he estado probándolo, y en este artículo os quiero comentar todo lo que he hecho y el resultado final de las pruebas.

Mi objetivo como os comenté, era poder lanzar tareas programadas, por lo que vendría fenomenal utilizar "cron". Misteriosamente no venía instalado en la imagen que estamos utilizando, pero nada que no se arregle con los comandos: apt install cron y service cron start (arrancamos el servicio).

Una vez hecho ya tenía preparado el "ejecutor" de mis tareas.

Para probarlo bien, necesitaba lanzar una tarea periódica que actualizara datos continuamente, así se me ocurrió utilizar el IBEX 35, programe un pequeño script sh en Linux que descarga el json, y lo subía al repositorio.

Para esto también me instalé "curl" (apt install curl) y "git" (apt install git).

Después de esto, solo necesitaba programar cron con el comando crontab -e.

Añadí esta línea:


1,30 8-18 * * 1-5       /root/termuxTest/ibex35.sh

Y con esta expresión conseguí que el script se ejecutara en el minuto 1 y 30 desde las 8 hasta las 18 de lunes a viernes.

Las pruebas fueron todo un éxito:


Pensar que todos estos commits los hacía mi móvil mientras yo estaba en otra cosa.

Algunos me habéis preguntado por la batería, la verdad es que sí he notado que me gasta un poco más, pero como mucho un 10%.

Os dejo aquí el código del script que utilicé, por si os pudiera servir de algo:

cd "$(dirname "$0")"
date=$(date '+%Y-%m-%d %H:%M:%S')
echo $date
git pull
curl 'urlDondeConseguirLosDatosEnJSON'  > ibex35.json
git add .
git commit -m "Datos actualizados $date"
git push

Una vez que verifiqué esto funcionaba, me instale JAVAapt install openjdk-11-jre

También me instalé maven: apt install maven

Y después cloné mi repositorio evaluador (https://github.com/tecnificados/evaluador), me generé el jar y con este pequeño script:


rm -f datosgobes.csv
wget http://ondemand2.redes.ondemand.flumotion.com/redes/ondemand2/Datosabiertos/datosgobes.csv
java -jar evaluador.jar

Ya consigo ejecutar mi evaluador de Portales de Datos Abiertos desde el móvil. Podéis verlo en este vídeo:


Como conclusión final: puedo ahorrarme el servidor que tenía pensando contratar. Para tareas que no requieren mucha CPU, mi móvil tiene la potencia necesaria para realizar este tipo de tareas.

martes, 18 de febrero de 2020

Ubuntu en Android


Llevaba unos cuantos días dándole vueltas para contratar un servidor on line. Lo necesito para lanzar procesos puntuales y de manera periódica. No necesito mucha CPU ni RAM, y aunque no lo necesito 24 horas encendido, no he encontrado ningún servicio que tenga estas características y que sea económico.

Pero pensando y pensando, se me ocurrió la idea de cargar los procesos en mi móvil (Android), y lanzarlos desde allí. Pero Android no viene con JAVA...

Me puse a buscar, y encontré un programa en la tienda de Google llamado "Termux" (https://play.google.com/store/apps/details?id=com.termux), que es un emulador de la consola de Linux.

Cuando leí la palabra "emulador" se me encendieron los ojos, y empecé a pensar, pues si es un emulador podré instalar JAVA (si, si se puede), y luego dije, si me instalo GIT y MAVEN no me para nadie (si, también se puede), después fui más allá y se me ocurrió instalar Ubuntu, porque claro, si lo tengo, en mi móvil habría una potencia  muy interesante. Pues sí, amigos también es posible.

Y ahora os voy a contar cómo hacerlo:

  1. Nos instalamos Termux como si fuera una aplicación más desde la tienda de Google (enlace de más arriba).
  2. Utilizando el gestor de paquetes de Termux nos instalamos "wget". Escribimos el comando: pkg install wget -y
  3. Ahora nos instalamos proot, para tener disponibles unas cuantas funcionalidades que necesitaremos más adelante. Comando: pkg install proot -y
  4. Ahora vamos a crear un directorio donde descargar Ubuntu: Comando: mkdir ubuntu
  5. Accedemos al directorio que acabamos de crear: cd ubuntu
  6. Ahora nos descargamos un script para instalar la versión de Ubuntu más reciente (se encuentra en el repositorio de Neo-Oli: https://github.com/Neo-Oli/termux-ubuntuComandowget https://raw.githubusercontent.com/Neo-Oli/termux-ubuntu/master/ubuntu.sh
  7. Ahora descargamos la imagen de Ubuntu a traves del script con Bash. Comandobash ./ubuntu.sh
  8. Y para terminar ejecutamos Ubuntu con el comando: bash ./start-ubuntu.sh
Y ya hemos acabado, todo esto solo hay que hacerlo una vez. En el futuro solo tendremos que iniciar Termux y ejecutar los pasos 5 y 8.



En la imagen podéis ver que la versión de Ubuntu que tengo es la 19.04 (Disco Dingo)

Próximamente probaré a lanzar un proceso "complejo" que requiera funcionalidades de Ubuntu y JAVA.

Os mantendré informados.



domingo, 19 de enero de 2020

Algoritmia II: algoritmos voraces


Los algoritmos voraces son muy fáciles de entender y de implementar, por lo que se usan muy a menudo en programación.

Imaginaros un problema como este: en la mesa hay diez fragmentos de tarta de diferente grosor y peso, y un comensal quiere elegir los dos trozos que sean más grandes.

Al utilizar un algoritmo voraz, primero seleccionará el elemento de mayor peso y grosor, una vez seleccionado ya no puede volver a elegirlo, porque el algoritmo se lo ha "comido", de ahí su nombre.

Para solucionar el problema anterior mediante un algoritmo voraz podríamos realizar los siguientes pasos:

  1. recorremos los diez fragmentos de tarta buscando el mas grande
  2. escogemos el más grande
  3. recorremos los nueve fragmentos restantes buscando el más grande
  4. escogemos el más grande

Seguro que se os ocurren un par de formas de optimizarlo (como ordenar previamente los trozos).

Ahora vamos con un problema un poco más complejo:

En Tecnificados hemos organizado un festival de cine de terror. Durante 24 horas se proyectarán N películas diferentes en las 10 salas disponibles de cine de Metro City (cada película solo se proyectará una vez a lo largo del festival). En la programación aparecen todas las películas que se van a proyectar, junto con el título, duración de la película y otros datos, se indica la sala de proyección y la hora de comienzo.

Una persona desea planificar su maratón de cine, teniendo en cuenta que el único objetivo es ver el máximo número posible de películas. 

Debemos realizar un algoritmo voraz para realizar ese maratón.

La solución en nuestro repositorio: https://github.com/tecnificados/algoritmos/tree/master/voraz

(Imagen Principal generada con https://es.cooltext.com/)

miércoles, 8 de enero de 2020

Algoritmia: presentación

Para comenzar el año voy a iniciar una serie de artículos relacionados con los diferentes tipos de algoritmos.

Mi idea es comentar en cada artículo un diferente tipo de algoritmo (el primero será voraz), y mostrar una solución a un problema codificado en JAVA.

Se admiten sugerencias.

Imagen de cabecera obtenida de: https://es.wikipedia.org/wiki/Archivo:Algoritmo_de_Anillo.png

domingo, 15 de diciembre de 2019

31 Ayuntamientos con Portales de Datos Abiertos

(Imagen generada con https://es.cooltext.com/)

Hoy quiero hacer un pequeño chequeo del estado de los Portales de Datos Abiertos Municipales, ahora que estamos a punto de terminar el 2019.

Aprovechando que el evaluador está "terminado", he generado un subinforme: solo con los Ayuntamientos que tienen Portales de Datos Abiertos (31).

Vamos a ordenar por calidad de los datos, empezaremos con cuatro estrellas. Solo tenemos a 17 Ayuntamientos con esta puntuación, ordenamos por el número de conjuntos de datos con cuatro estrellas ordenados de mayor a menor:
  1. Gijón (119)
  2. Cáceres (116)
  3. Santander (82)
  4. Madrid (70)
  5. Santa Cruz de Tenerife (67)
  6. Sant Feliu de Llobregat (37)
  7. Las Palmas de Gran Canaria (27)
  8. Barcelona (21)
  9. Cartagena (20)
  10. Badia del Vallès (11)
  11. Alcobendas (8)
  12. Rivas-Vaciamadrid (8)
  13. Lorca (4)
  14. Valencia (4)
  15. Zaragoza (3)
  16. Bilbao (2)
  17. Donostia/San Sebastián (1)
Ahora vamos a ordenar por aquellos conjuntos de datos con tres estrellas. Aquí ya tenemos a bastantes más, así que nos vamos quedar con un Top 20. Ordenamos por el número de conjuntos de datos con tres estrellas ordenados de mayor a menor:
  1. Gijón (630)
  2. Arganda del Rey (601)
  3. Málaga (596)
  4. Barcelona (382)
  5. Madrid (258)
  6. Alcobendas (191)
  7. Lorca (179)
  8. Bilbao (176)
  9. Torrent (174)
  10. Valencia (106)
  11. Vitoria-Gasteiz (80)
  12. Donostia/San Sebastián (64)
  13. Las Palmas de Gran Canaria (63)
  14. Zaragoza (62)
  15. Rivas-Vaciamadrid (48)
  16. Villanueva de la Serena (44)
  17. Santa Cruz de Tenerife (21)
  18. Alcoy (20)
  19. San Sebastián de los Reyes (15)
  20. Sant Feliu de Llobregat (8)
Por último, ordenamos por cantidad de conjuntos de datos (algo poco relevante, no se trata de cuantos más mejor). También nos quedamos con el top 20. Este es el resultado:
  1. Málaga (875)
  2. Gijón (781)
  3. Arganda del Rey (625)
  4. Barcelona (462)
  5. Madrid (436)
  6. Alcobendas (199)
  7. Bilbao (190)
  8. Lorca (188)
  9. Torrent (175)
  10. Vitoria (Gasteiz (150)
  11. Zaragoza (136)
  12. Cáceres (116)
  13. Valencia (115)
  14. Las Palmas de Gran Canaria (90)
  15. Santa Cruz de Tenerife (90)
  16. Santander (88)
  17. Donostia/San Sebastián (65)
  18. Rivas Vaciamadrid (57)
  19. San Sebastián de los Reyes (51)
  20. Sant Feliu de Llobregat (47)
Los resultados me parecen bastante sorprendentes.

Por supuesto, podéis acceder a los datos que he utilizado en el repositorio de los últimos artículos:
https://github.com/tecnificados/evaluador/tree/master/informes

Recordar que el origen de los datos es el catálogo de datos.gob.es, y todo el proceso de generación de datos está en el repositorio anterior: https://github.com/tecnificados/evaluador.

lunes, 9 de diciembre de 2019

Evaluador de Portales de Datos Abiertos - Parte VI (final)


Y llegamos a la última parte de esta serie de artículos relacionados con el Evaluador de Portales de Datos Abiertos.

Ya están en el repositorio los últimos cambios que permiten generar el informe con la puntuación de los distintos conjuntos de datos.

He llegado sólo a cuatro estrellas, porque como ya os comenté, para la quinta estrella necesitaría consumir los formatos semánticos (4 estrellas) y examinar si hay Linked Data.

También hay que tener en cuenta que no he chequeado todas las URLs, para así verificar si están disponibles, y si de verdad devuelven el formato que se indica.

Todas estas mejoras las quiero ir implementando poco a poco en próximas entregas.

También quiero añadir un par de informes nuevos y una serie de puntuaciones en plan Top Ten de diversas categorías. 

Además quiero automatizar todo el proceso, Tweet incluido.

Aquí tenéis los informes en diferentes formatos: 


En concreto el informe de la puntuación en CSV está aquí.

Y el código en el mismo repositorio, ahí podéis ver cómo he asignado las estrellas, aunque está explicado en el anterior artículo.

Cualquier duda, o pregunta, ya sabéis dónde estoy.

domingo, 24 de noviembre de 2019

Evaluador de Portales de Datos Abiertos - Parte V

                                 Imagen obtenida de: https://5stardata.info/es/

Hoy vamos a hablar de la puntuación de los diferentes formatos. Esta puntuación se estableció por Tim Berners Lee hace unos años. Si lo resumimos rápidamente sería así:
  1. Cualquier formato con licencia abierta: 1 estrella. Es decir, cualquier conjunto de datos que contenga al menos un fichero y esté alojado en un portal de Datos Abiertos, tendrá al menos esta puntuación. Ejemplo: un PDF.
  2. Cualquier formato reutilizable: 2 estrellas. Si puedes descargar un fichero del Portal de Datos Abierto y puedes modificarlo, su conjunto de datos tendrá al menos 2 estrellas. Ejemplo: un fichero Excel.
  3. Formato abierto: 3 estrellas. Si ademas de editarlo, lo puedes hacer sin software propietario, este conjunto de datos tendrá 3 estrellas. Un fichero CSV.
  4. Utilización de URIs: 4 estrellas. Si en el formato se están utilizando URIs (semánticos). Ejemplo: RDF, JSON-LD, Turtle,...
  5. Utilización de Linked Data: 5 estrellas. Ademas de utilizar URIs, utilizar URIs externas a tu fuente para generar Linked Data.
Y ahora vamos a puntuar todos los formatos que aparecen en datos.gob.es, de esta forma podremos dar un paso más en el evaluador.

Los voy a escribir clasificándolos por el número de estrellas que he asignado:

Formatos con 1 estrella:


PDF
PNG
JPG

Formatos con 2 estrellas:


Atom
DBF
DGN
DjVu
DOC
DOCX
DWG
DXF
ECW
ELP
ePub
HTML
MDB
OCTET-TREAM
SHP
SOAP
TIFF
WFS
WMS
WMS-XML
XHTML
XLS
XLSX

Formatos con 3 estrellas:

ASCII
Calendar
CSV
CSW
GDB
GeoJSON
GeoRSS
GML
GPX
JSON
KML
KMZ
LAS
MARC
ODS
ODT
PC-Axis
plain
RSS
RTF
SCORM
TBX
TMX
TSV
vCard-XML
WCS
XBRL
XML

Formatos con 4 estrellas:

JSON-LD
N3
TURTLE
RDF-N3
RDF-Turtle
RDF-XML

Formatos con 5 estrellas:

De momento no voy a tratar con la quinta estrella, tendría que cargar la información y verificar que se usa Linked Data.

Formatos sin estrellas: 

Los he clasificado así, porque no son formatos como tales, la mayoría son clasificaciones inexactas, y otros como API o SOLR, son servicios que complementan el Portal de Datos Abiertos.

API
GZIP
Solr
SPARQL
SPARQL-JSON
SPARQL-XML
XML-APP

Y después de esta clasificación, solo nos falta añadir la programación y generar los informes. Pero esto lo haremos en el próximo artículo.

¿Estáis de acuerdo con esta clasificación?

domingo, 17 de noviembre de 2019

Evaluador de Portales de Datos Abiertos - Parte IV



Y seguimos con la serie del evaluador, lo primero que quiero es dar las gracias a tod@s los que han contactado conmigo por este proyecto. Vamos a seguir poco para poder generar un evaluador gracias los datos que se publican en datos.gob.es

Esta semana he generado el primer informe (aunque todavía no es el definitivo), he generado una tabla con cada organismo publicador, el número de conjuntos de datos que contiene y todos los formatos que utiliza.

El informe está en formato Markdown (como ya os comenté Github lo interpreta automáticamente) y en formato CSV, así podemos trastear con el fácilmente.

Aquí tenéis sus URLs:
Toda la lógica de generación del informe está en la clase "InformeOrganismoFormatos.java", todo sigue en el repositorio que he estado utilizando en las últimas entradas (aquí).

Lo único que hago es iterar por la estructura de datos que definimos la semana pasada e ir construyendo la salida, para al final escribirla.

Los resultados son bastante curiosos, es increíble pero hay portales que solo tienen PDFs...

En el próximo artículo, puntuaremos los diferentes formatos para poder evaluar todos los portales.