Signals y Slots en Qt C++

Intro El framework para GUIs Qt dispone de un mecanismo de intercomunicación entre objetos llamado Signals & Slots. Esto es especialmente útil para notificar cambios en widgets a otros widgets o procesos. Una Signal (señal) es emitida cuando ocurre un evento en particular. Los widgets (subclases de QObject) tienen muchas señales predefinidas para notificar sobre sus propios eventos y nosotros podemos crear nuevas señales también en esos widgets o en nuestro propio código. ...

December 27, 2020 · 3 min · José Luis Patiño Andrés

Instalación de NodeJS & NPM en Ubuntu/Debian

Añadir repositorio oficial Primero hay que añadir el repositorio oficial de NodeJS para distribuciones Debian. Esto lo hacemos fácilmente con un script que nos proporcionan y que se puede descargar de aquí: https://deb.nodesource.com/setup_12.x curl -sL https://deb.nodesource.com/setup_14.x > setup_14.x Podemos elegir otras versiones si fuera necesario y las hubiera. Cambiamos los permisos del script: chmod +x setup_14.x Ejecutamos el script y nos añade la clave de firmado del repositorio y el repositorio a nuestra lista de APT: sudo ./setup_14.x ...

July 1, 2020 · 1 min · José Luis Patiño Andrés

Gestor de paquetes Helm para Kubernetes

Instalación En la página de Helm podemos encontrar la documentación. Para instalar Helm de forma manual podemos descargar los binarios de GitHub en su página de releases. También podemos instalarlo con Snap: sudo snap install helm Inicialización Antes de usar Helm tenemos que inicializarlo: helm init Quizá tengamos que añadir un nuevo repositorio desde el que descargar paquetes: helm repo add stable https://kubernetes-charts.storage.googleapis.com/ Es posible que la instalación de Helm no configure los permisos necesarios para instalar paquetes efectivamente. En este caso tendremos que crear un cluster role binding: ...

April 7, 2020 · 2 min · José Luis Patiño Andrés

Configurar cluster Kubernetes

Intro Este artículo es una muy pequeña referencia para configurar un cluster Kubernetes. El cluster constará de un nodo “master” y un par de nodos más sobre los que se podrán desplegar pods de aplicaciones de forma distribuida. Para configurar nuestro cluster Kubernetes podemos hacer uso de las máquinas virtuales creadas en el artículo “Clúster de VMs con VirtualBox”. Requisitos Este cluster Kubernetes utilizará Docker como tecnología de contenedores. Por tanto, tendremos que asegurarnos que las máquinas tienen instalado y configurado Docker. ...

March 5, 2020 · 2 min · José Luis Patiño Andrés

Cluster de VMs con VirtualBox

Motivación En determinados entornos, por ejemplo y especialmente si nos vemos obligados a trabajar en sistemas Windows, puede ser necesario desplegar un pequeño cluster de máquinas virtuales Linux para probar conceptos, aprender nuevas tecnologías o configurar “laboratorios” para experimentar o entrenar habilidades. Aqui vamos a describir como se puede crear un pequeño cluster de 3 máquinas virtuales basadas en Ubuntu Server 18.04 utilizando VirtualBox. Las máquinas estaran disponibles tanto a través de una dirección IP dinámica asignada por el mismo router al que se conecta el host Windows como a través de una IP estática que asignaremos nosotros y que las mantendrá efectivamente en una subred desde la que podrán comunicarse unas con otras. ...

March 3, 2020 · 4 min · José Luis Patiño Andrés

Inspección de ficheros XML grandes con `less`

En ocasiones podemos necesitar inspeccionar ficheros XML de gran tamaño (del orden de cientos de MB) para por ejemplo comprobar su esquema o incluso asegurarnos de que un determinado contenido está presente en el fichero. Abrir grandes ficheros XML en un navegador web es lento y se corre el riesgo de hacer inusable o incluso tumbar el navegador, por muy moderno o potente que sea el equipo. Editores de texto como Vim o Emacs también pueden acabar de la misma forma si cargamos ficheros de cientos de megas, o incluso de GB. ...

February 12, 2019 · 1 min · José Luis Patiño Andrés

Seleccionar duplicados en PostgreSQL

La siguiente consulta devuelve elementos duplicados en table cuyos valores para las columnas column_1 y column_2 son idénticos: SELECT column_1, column_2, COUNT(*) FROM my_table GROUP BY column_1, column_2 HAVING count(*) > 1; Usando esta consulta, podríamos borrar todos los elementos duplicados de forma automática mediante esta otra consulta: DELETE FROM my_table AS main USING ( SELECT column_1, column_2, COUNT(*) FROM my_table GROUP BY (column_1, column_2) HAVING COUNT(*) > 1 ) AS duplicates WHERE main.column_1 = duplicates.column_1 AND main.column_2 = duplicates.column_2; SQLAlchemy Esta misma consulta se puede hacer mediante SQLAlchemy de la siguiente forma: session.execute( select( my_table.column_1, my_table.column_2, func.count(my_table.id).label("count") ).from(my_table).group_by(my_table.column_1).having( func.count(my_table.id) ).all()

October 12, 2018 · 1 min · José Luis Patiño Andrés

Generar CSV con PostgreSQL

Utilizando el siguiente comando podemos volcar los resultados de una consulta en PostgreSQL a un fichero CSV sin salir de la consola (Bash, Zsh…): psql -h [URL] -u [USUARIO] -d [NOMBRE] -c "COPY (SELECT * FROM tabla_bd) TO STDOUT WITH CSV HEADER DELIMITER ',';" > resultado.csv

September 4, 2018 · 1 min · José Luis Patiño Andrés

Configuración de AWS ECR

Pasos Ejecutar: aws ecr get-login --no-include-email --region <REGIÓN_AWS> Copiar y ejecutar la salida del comando anterior. Ejecutar: docker run --rm --entrypoint=bash -it 1234567890.dkr.ecr.amazonaws.com/<IMAGEN>:<VERSIÓN>

September 15, 2017 · 1 min · José Luis Patiño Andrés

Uso del gestor de paquetes Yum.

Mostrar todas las versiones disponibles del paquete <paquete>: yum --showduplicates list <paquete> | expand Instalar paquete: yum install <paquete> Actualizar paquete: yum update <paquete> Desactualizar paquete (anterior versión): yum downgrade <paquete> Limpiar caché de repositorios (refrescar datos del repo): yum clean expire-cache

September 20, 2016 · 1 min · José Luis Patiño Andrés