Showing posts with label opensource. Show all posts
Showing posts with label opensource. Show all posts

Wednesday, May 17, 2017

Blockchain y Software Libre, una combinación explosiva

Portada de El Economista
Artículo en elEconomista.es
Artículo en el 'elEconomista.es' sobre la relación inherente entre Blockchain y el Software Libre.

Se puede afirmar sin temor a equivocarse que si hoy conocemos Bitcoin, Blockchain y multitud de otras tecnologías afines disruptivas, sin duda se lo debemos en gran parte al movimiento a favor del Software Libre.

En el artículo destaco la importancia del software libre en la industria del software y en la sociedad, aclaro las diferencias entre términos que a menudo se confunden entre sí, como son el software de código abierto, el software libre y el software gratuito.

Por último incido en la importancia de haber seleccionado una licencia para el código de Bitcoin, tan abierta y garantista con las libertades de los usuarios como la MIT License, así como los efectos tan favorables que ha tenido en el desarrollo del ecosistema Blockchain actual.

https://www.eleconomista.es/economia/noticias/8359143/05/17/El-Blockchain-para-impulsar-el-codigo-abierto-y-el-software-libre.html

Tuesday, April 02, 2013

Bitcoin conference at Juan de Mariana

Here it comes the long awaited video of the Bitcoin conference I hosted at the Juan de Mariana Institute along with another bitcoin expert, F. Moreno:

[The video is in Spanish for our loved Spanish Speaking Bitcoin community]


Wednesday, December 07, 2011

Protección de datos mediante códigos de redundancia

Muchos de nosotros somos usuarios habituales de utilidades de compresión de datos como 7zip o gzip, pero llegado el momento de realizar un backup la fiabilidad de los datos se vuelve tanto o más importante que el tamaño.

dvdisaster working on a damaged CD
Dvdisaster en pleno proceso de reconstrucción
Es por ello que utilidades como dvdisaster nos ayudan a proteger la información que almacenamos en CDs, DVDs o incluso discos Blu-Ray mediante códigos de redundancia Reed-Solomon. Si a la hora de grabar un DVD de 4,7GB de capacidad lo llenásemos con aproximadamente 4GB de datos y añadiésemos el resto con datos de redundancia estaríamos protegiendo el dvd ante algo más que serios arañazos, deterioros causados por luz ultravioleta o simplemente el paso del tiempo. 

Otra utilidad altamente interesante es par2 (Parity Archive), pues permite crear ficheros de redundancia adicionales que pueden ser utilizados posteriormente para reconstruir archivos parcialmente dañados. Interfaces gráficas como la de QuickPar en Windows o PyPar2 en Linux facilitan la creación, verificación o reconstrucción de datos mediante estos archivos de extensión ".par2". 

Imaginemos que creamos algunos ficheros par2 con redundancia suficiente como para proteger varios cientos de imágenes almacenadas en un directorio compartido. Años después podremos detectar si alguna de estas imágenes o sus etiquetas exif han sido modificadas, en cuyo caso tendremos la opción  de reconstruir las imágenes para devolverlas a su estado original.

Wednesday, May 04, 2011

Zsync: Alternativa a rsync para sincronizar grandes ficheros

Siempre me he sentido atraído por la elegancia con la que rsync solventa mediante algoritmos tipo ‘window checksum’ la necesidad de descargar grandes ficheros partiendo de versiones parciales.

Sin embargo rsync ahorra ancho de banda permitiendo intercambiar únicamente los bloques de datos modificados enviándolos de forma incremental (llamados deltas) a costa de un consumo elevado de CPU tanto en el cliente como el servidor.
 
Este elevado consumo de procesador tanto en la aplicación cliente como en el servidor tiene el grave inconveniente de no escalar adecuadamente, pues unos pocos clientes concurrentes son capaces de saturar a un servidor no excesivamente potente.

En el modelo de distribución actual de servicios, es muy habitual encontrarnos con que un fichero voluminoso, digamos una imagen de CD o DVD de una distribución de Linux debe ser descargada por múltiples clientes. De esta forma si en vez de tener que hacer los pesados cálculos computacionales de checksums de bloques una y otra vez, el servidor almacenase esta información en algún otro sitio, la ganancia sería enorme.

Pues bien, zsync permite hacer justamente esto, en el servidor se computan una sola vez los checksums necesarios y se almacenan en un fichero adicional con extensión .zsync. Este fichero .zsync es consultado por los clientes que desean sincronizar y son ellos los únicos que realizan los cómputos necesarios para averiguar que bloques han de descargar. Una vez la versión zsync que corre en el cliente conoce los bloques que ha de descargar, esta procede a descargarlos mediante el protocolo HTTP 1.1 abriendo múltiples conexiones simultáneas para obtenerlos.

Imaginemos un escenario bastante frecuente.

Tras haber descargado la versión Alternate del CD de Ubuntu 11.04 a 64 bits. Posteriormente cambiamos de idea y preferimos la versión server. Aunque ambas imágenes .iso son distintas muchos de los paquetes de ambas versiones serán los mismos por lo que es de esperar que ambos ficheros tengan algunas partes comunes, de hecho en este caso con zsync nos ahorramos descargar casi la mitad del contenido de nuevo.

En este caso, como el 48.9% del contenido de la versión server era igual a la de la versión alternate que ya habíamos descargado, nos hemos ahorrado descargar 357 MB.

Por cierto, el comando fue algo tan simple como:
$ zsync -i ubuntu-11.04-alternate-amd64.iso http://releases.ubuntu.com/releases/11.04/ubuntu-11.04-server-amd64.iso.zsync
zsync, rsync, jigdo, metafiles, torrents, ... todos ellos intentan atajar el problema de distribuir grandes ficheros por la red a miles de usuarios, pero cada una tiene sus propias particularidades, ¿Para vosotros cuál es la mejor de ellas, alguna preferencia?