Entradas

GhostCell, separando permisos de los datos en Rust

El lenguaje Rust ofrece un enfoque prometedor para la programación de sistemas seguros. Un valor puede ser un alias o puede ser mutable, pero no ambas cosas al mismo tiempo.

Pero implementar estructuras de datos basadas en punteros con acceso compartido, como grafos o listas doblemente enlazadas, requiere poder mutar estados que son alias. Para admitir tales estructuras de datos Rust proporciona una serie de APIs que ofrecen la denominada mutabilidad interior: la capacidad de mutar datos usando métodos sobre una referencia compartida. Desafortunadamente, las APIs existentes sacrifican la flexibilidad, el acceso concurrente y/o el rendimiento a cambio de la seguridad.

Este artículo académico propone una API llamada GhostCell que separa de forma segura los permisos de los datos. La propuesta se acompaña de su implementación y ejemplos y de comparativas de rendimiento con otras APIs.

Captura la pantalla para presentaciones y demos

Acabo de añadir en mi catálogo de aplicaciones habituales OBS Studio, un software de código abierto para la grabación de video y transmisión en vivo. Disponible para Linux, Mac y Windows, incluye características avanzadas no sólo para grabar directamente desde nuestra cámara web y el micrófono, también para incluir escenas de juegos, añadir imágenes fijas en vídeos, capturar una ventana o parte de la pantalla, y mucho más.

Entre muchas otras opciones, posibilita la edición de video en tiempo real de múltiples fuentes de video y audio, transiciones en la edición de escenas, filtros y mezclas en canales de audio, máscaras y correcciones de color, tipografías para titulación, y opciones para la transmisión en directo en las plataformas de streaming más conocidas como Twitch.tv, YouTube, Hitbox.tv o DailyMotion.

Inicialmente he empezado con un uso básico capturando una porción de pantalla para preparar una demostración. No me ha resultado difícil y los resultados son inmediatos.

Por cierto, si instalas desde Windows y usas Chocolatey sólo tienes que ejecutar cinst -y obs-studio.

Identificar tipografías en una página web con Fontanello

Tan sencillo como instalar Fontanello en el navegador (disponible para Mozilla Firefox y para Google Chrome) y seleccionar el trozo de texto que se quiere identificar. Luego pulsar con el botón derecho sobre el texto marcado e ir a la opción Fontanello del menú contextual. Muy útil.

Señales para matar un proceso

En sistemas GNU/Linux es posible enviar señales a los procesos para finalizar su ejecución, normalmente …

AWS S3 Glacier

Cómo eliminar un almacén («Vault») en Amazon S3 Glacier

Hace algo más de dos años que tenemos en casa un NAS TS-453a de QNAP para todo lo que tiene que ver con la reproducción multimedia (PLEX), compartir ficheros y, muy especialmente, la gestión de las copias de seguridad de los equipos de la familia. Lo recomiendo.

Todo esto, y mucho más, se puede gestionar gracias a las aplicaciones incorporadas en su sistema operativo QTS (basado en Linux). Una de estas aplicaciones es HBS (Hybrid Backup Sync) que lleva todo lo necesario para hacer copias de seguridad en la nube. En nuestro caso, «la nube» es el servicio de almacenamiento Amazon Web Services S3 Glacier.

Se necesita una cuenta en AWS y haber creado al menos un almacén (Vault) en Glacier. Con un identificador y una clave secreta de acceso proporcionada por la consola de AWS podrás configurar un nuevo espacio de almacenamiento en HBS asociado al Vault. A partir de aquí toda la gestión de los archivos y la copia de seguridad la hace HBS.

Pues a lo que iba. Hace unos días tuve que crear un nuevo almacén en Glacier para probar otras opciones con la copia de seguridad. La prueba no me convenció y decidí seguir con nuestro backup habitual. Pero, y aquí vino el problemilla, quería deshacerme del Vault porque ya no lo necesitaba. Y borrarlo no es tan inmediato como yo esperaba porque debe estar vacío para poder eliminarlo.

De primeras no encontré nada en la consola AWS que me permitiese borrar el contenido del almacén. Tenía que usar la interfaz de línea de comandos de AWS. Teniendo en cuenta que eran miles los archivos a borrar, lo mejor erar buscar alguna utilidad externa. Y alguna había. Como glaciar-vault-remove de Leeroy Brun, desarrollada en Python. También mt-aws-glacier, algo más antigüilla, desarrollada en Perl por Victor Efimov. Y no sé si la versión de prueba de CloudBerry Explorer podría haber borrado los archivos como leí en superuser.

Al final opté por un sencillo, pero elegante script PHP creado por Tobias Sell. Empecé actualizando la instancia WSL Ubuntu de mi equipo:

$ sudo apt update
$ sudo apt upgrade

para instalar la interfaz de línea de comandos de AWS:

$ sudo apt install awscli
$ aws --version

y configurar aws-cli con los datos de mi acceso AWS:

$ aws configure
AWS Access Key ID [None]: AKIA****************
AWS Secret Access Key [None]: ************************************
Default region name [None]: eu-central-1
Default output format [None]: json

Todo queda guardado en un directorio .aws en el home del usuario. Ya sólo tuve que ejecutar el script que previamente había descargado en un directorio s3 al efecto:

$ cd s3
$ php remove.php
Account Id: ************
Region: eu-central-1
VaultName: VAULT_TEST

¡¡Cuatro horas sólo para recuperar en un fichero output.json el inventario de los archivos a borrar!! Mientras que en job.json dejó la configuración del trabajo.

Luego requirió la friolera de 18 horas para el borrado de los ficheros. Por eso he querido dejar aquí registro de lo que he hecho, para recordarme que los experimentos, mejor con gaseosa.

Además, Amazon cobra por borrar archivos con menos de 3 meses de antigüedad 😓 ¡Cuidado con las pruebas!

Sobre el movimiento «No-Code»

No había leído nada sobre el «No-Code» o el Movimiento «Sin Código» y he encontrado este tuit de David Bonilla en el que difunde una lista de enlaces que preparó sobre el tema. Me la guardo:

https://gist.github.com/dbonillaf/cf8c4a18800a087020bd08528cdb0d63

Se anuncia Tokio 0.3 y se prepara el camino para la 1.0

Esta versión 0.3 funciona como una versión de Tokio 1.0 beta. Se han corregido aspectos de la API para validar los cambios antes de estabilizarlos como parte de una versión 1.0. La mayoría de estos cambios son pequeños, por lo que actualizar de la 0.2 a la 0.3 no debería ser complicado.

https://tokio.rs/blog/2020-10-tokio-0-3

Solana, una criptomoneda, pero también software basado en Rust

Este enlace no me lo guardo porque Solana sea la criptomoneda de moda, ni por su arquitectura de blockchain basada en su ya conocido algoritmo de consenso Proof of History (PoH) que permite verificar criptográficamente el paso del tiempo entre dos eventos para disparar su escalabilidad y lograr hasta 65000 transacciones por segundo.

No. Me lo guardo porque es open source, está desarrollado en Rust, y su código y mucho más está disponible en GitHub. Seguro que hay cosas interesantes para descubrir y aprender:

https://github.com/solana-labs/solana

00110010

Cincuenta años, ¡cincuenta! Lo voy a gritar, ¡¡CINCUENTA AÑOS!!

Joé, es que no me lo creo. A ver si puedo explicarlo. Es como si con diecisiete años, quizás mientras veía Creepshow 2 o qué se yo, Hellraiser por poner un ejemplo más caliginoso*; o mejor, Masters of the Universe; las fuerzas de Skeletor me hubiesen teletransportado treinta y tantos años al futuro, de golpe. Mi cuerpo ha cambiado, pero mantengo las mismas inquitudes que tenía aquel adolescente gordito, de cabeza redonda, pelo lacio rubio y grandes gafas. Leer más

Coolors, un generador de esquemas de color

Vitaminado con otras funciones. Porque Coolors.co puede usarse en línea para generar paletas de color. Pero también:

Su autor, Fabrizio Bianchi, ha creado una herramienta excelente, muy intuitiva y útil. Puedes saber más en esta guía de uso de Coolors aunque, eso sí, al igual que la herramienta, todo en inglés.