Mostrando las entradas con la etiqueta herramientas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta herramientas. Mostrar todas las entradas

Que trae de nuevo Eclipse Luna

Como todos los años, viene mi review de que puede parecer interesante en la nueva versión de Eclipse. Este año eligieron una palabra bien "castellana", le tocaba a la letra "L" (el nombre anterior había sido Kepler y el anterior Juno): Luna.
Lo más llamativo de esta versión es el soporte para java 8, pero ya veremos eso con más detalle. Inicialmente podemos apreciar un nuevo logo mucho más flat, acorde a estos tiempos. El splash-screen es mucho más chico y sobrio que antes, me parece acertado el cambio, lo hace más serio y más maduro. A simple vista parece mucho más rápido que las versiones anteriores, seguramente asociado a las mejoras que continuamente se implementan relacionadas a la performance.
Para repasar, comenzaremos con las mejoras en la plataforma, lo primero que llama la atención, es tener por fin el soporte para split editors, algo que es muy interesante y se puede acceder con un par de atajos de teclado.
Otra cosa interesante es el agregado de un nuevo tema dark, a simple vista me parece muy bueno, pero no me gusta como quedan algunos iconos, ya que se ve que quedan pixeles blancos en el borde (algunos fueron rearmados con formato png, pero quedan varios con problemas de transparencia todavía), es algo que deberían mejorar. Lo bueno, sin embargo, es que al fin lograron implementar de que no sea necesario reiniciar la IDE para que tome los cambios del nuevo tema seleccionado.
Nuevo theme
Otra de las cosas nuevas es que ahora hay dos modalidades para las vistas minimizadas, una que es la original, en la cual se muestran "flotando" sobre las demás vistas, cuando uno hace click en el ícono correspondiente; y una nueva en la cual en vez de mostrar la vista superpuesta, se muestra en su ubicación original. Personalmente creo que me sigo quedando con la versión original ya que prefiero que no afecte el layout de las demás vistas.
Otro de los pequeños detalles que si hacen la vida del programador un poco más fácil, es la opción de abrir un explorador de windows en la ubicación en la que se encuentra un archivo. Para acceder a esa opción, click derecho sobre el archivo, "Show in" y luego "System Explorer".
Bueno, luego moviéndonos a las mejoras para los desarrolladores java, la estrella es el manejo de la sintaxis nueva que trae java 8. Lo mejor es la conversión automática de código que puede representarse de mejor manera usando expresiones Lambda. Se puede hacer en un método específico o a nivel global.
Soporte para expresiones lambda
También se puede convertir de expresiones block a expresiones body de un solo paso y ver el método implementado por la instancia de la interfaz utilizada, simplemente pasando el mouse por encima del símbolo "->" o el "::".
Con la venida de las anotaciones de tipo (JSR 308), el compilador de eclipse lleva el análisis de posibles NullPointerExceptions al siguiente nivel, ya que prácticamente puede detectar todos los errores de este tipo en tiempo de ejecución. Solo es necesario utilizar las anotaciones @Nullable y @NonNull de forma correcta en la definición de los parámetros de los métodos.
El depurador también ganó nuevas características relacionadas a lo nuevo que trae java 8, como por ejemplo poner breakpoints adentro de las expresiones lambda.
Eso en lo que respecta a una pasada muy por arriba de las cosas nuevas en la versión base. También como es de costumbre, hay numerosos cambios en todo el ecosistema de plugins de este megaproyecto.
En fin, me parece que este año se notan un poco más las mejoras que en lo que fue kepler, más que nada por lo que es java 8. Igualmente se nota que el esfuerzo se imprime sobre los plugins y no sobre la IDE que sigue bastante parecida a la primer versión.
Alguna otra funcionalidad que valga la pena mencionar?
Saludos!

Maven: Como cambiar la versión de mi proyecto

Una de las quejas que suelo escuchar con respecto a Maven, es acerca de lo complicado que puede ser mantener las versiones de nuestros proyectos y componentes, actualizadas. Es verdad, si uno intenta hacerlo manualmente (es decir tocando "a pata" los pom.xml), es bastante engorroso y error-prone.
Hasta hace un tiempo existía una manera de, por ejemplo, incrementar la versión de todos los componentes, usando el plugin Release de Maven, pero ese plugin les da miedo a todo el mundo (es uno de los plugins más potentes y complejos).
Otra manera que he visto que se ha usado bastante, de mantener las versiones, es usar variables definidas dentro de los pom.xml padre, las cuales se replican en todos los pom.xml hijos. Si bien esta manera parece a primera vista, cómoda y elegante, si la ubicamos dentro de un contexto de releases frecuentes, involucrando a servidores de integración y sobre todo, al plugin de Release, termina siendo un problema, ya que no conozco manera de que dicho plugin "entienda" esas variables.
Digamos, pasando en limpio: es una forma más simple de seguir toqueteando los pom.xml de forma manual. Pero sigue siendo lo mismo.
Otro problema que tiene el enfoque anterior es que si estamos visualizando un pom.xml hijo, no sabemos cual es la versión actual, no nos queda otra que "subir" al pom padre y verlo ahí. De esto se deriva, de que si conseguimos ese pom.xml de algún artefacto, tampoco a primera mano, no tenemos forma de saber que versión es.
Corolario: La versión siempre debería estar presente en los pom.xml, el uso de variables para esto no es una buena idea.
Esto nos lleva al principio, como podemos hacer para trabajar con las versiones de los pom.xml, sobre todo cuando los proyectos son cada vez más y más grandes?
Y esto es solo la punta del iceberg, no hablamos acerca de, por ejemplo, como trabajar con las versiones de las dependencias de nuestros proyectos.
Ejemplo: pasaron 2 años de que nuestro proyecto está funcionando, y queremos mantener actualizadas las versiones de las dependencias, como hacemos? investigamos una por una cual es la última versión y vamos incrementando las mismas en cada sección dependencies de cada pom? ... y que pasa si nuestro proyecto tiene 50 modulos diferentes? como hacemos para incrementar las versiones de todos de forma simple?
Lo mismo para los plugins de maven que estamos usando ... en fin, debería existir algo para lidiar con estos temas, no?

Maven Versions Plugin

Por suerte hoy en día existe un buen plugin para trabajar con las versiones de nuestros proyectos. Este plugin tiene muchos goals, en los cuales destaco los siguientes:

  • versions:display-dependency-updates: Muestra por pantalla las nuevas versiones que existen en los repositorios que usamos, de cada una de las dependencias de nuestros proyectos.
  • versions:display-plugin-updates: Idem anterior, pero de los plugins de maven que utilizamos.
  • versions:update-parent: Actualiza la versión de nuestro "pom padre" para que apunte a la última versión disponible. Esto es muy útil si contamos con un "super pom" en nuestra organización con definiciones comunes a todos los proyectos.
  • versions:set: Este es el goal más interesante y más útil: lo que hace es justamente cambiar la versión de nuestro proyecto a nivel global. Es decir, si los componentes de nuestro proyecto tienen dependencias entre sí, las mismas también se actualizan.
  • versions:use-releasesversions:use-next-releases y versions:use-latest-releases: sirven para reemplazar las versiones snapshots por releases, incrementar al próximo release o directamente reemplazar las versiones por el último release disponible
  • versions:use-next-snapshots y versions:use-latest-snapshots: Lo mismo que lo anterior pero con SNAPSHOTS
  • versions:commit y versions:revert: Permiten implementar todos estos cambios de forma pseudo-transaccional, es decir, si no estamos conformes con los cambios (o el proyecto no compila, o no corre) podemos volver a las versiones originales de los pom.xml
En fin, existen otros goals más, pero con estos ya se puede trabajar bastante bien con versiones de proyectos grandes de forma segura y rápida.
Se animan a usarlo?

Eclipse Kepler: Que hay de nuevo?

Hola, les cuento que si bien ya pasaron unos días que salió esta nueva versión de Eclipse, recién ahora me pude tomar unos minutos y pegarle una mirada.
Comencé leyendo un poco en los famosos New and Noteworthy, y la verdad que me quedó un sabor a poco en la boca. Esperaba más para un año de desarrollo de esta poderosa IDE.
Igualmente uno de los cambios que más promocionan son varias mejoras en la performance, por lo que me lo descargué y comencé a usarlo en algunos proyectos y comparar la velocidad con la versión anterior (Juno). Apenas lo descargué y lo utilicé, vi que el splash-screen es muy similar al anterior (Juno), no hubo un gran rediseño en esa parte.
Luego cuando terminó de cargar, noté que el look & feel sigue siendo el mismo que Juno, tampoco hubo un gran avance ahí. Lo primero que hago es sacarle el look & feel por defecto, y activar el clásico, ya que el nuevo no me gusta.
Luego, lo primero que hice fue descargar los plugins que más uso (subclipse, springide, hibernate-tools, vaadin, etc.), usando el Eclipse Marketplace. Como novedad, no fue necesario instalar Maven, ya vino con el soporte para esta herramienta incluida en la distribución. Como mala noticia, el plugin de Vaadin no funcionó, ya que no puedo abrir las pantallas para editarlas visualmente :(
Entre tantos reinicios y la mar en coche, note un poco más de velocidad, que haciendo la misma tarea en Juno, pero quizá puede ser un error de percepción.
Mientras instalaba los plugins, repasé las New and Noteworthy, y esto es lo que me pareció más interesante:

  • Posibilidad de convertir de forma automática los if-then-else en sentencias switch
  • Convertir los ifs, en ifs invertidos con sentencia return, para simplificar el código.
  • Mejor manejo de herencia de anotaciones @Nullable
  • Análisis de anotaciones @NonNull y @Nullable
  • Análisis más avanzado para posibles resource leaks (ejemplo: dejar streams abiertos)
  • Mejoras varias para la visualización de javadocs a nivel de paquete
Sustituir if-then-else con switch
Esto si hablamos de las mejoras de la IDE sin tener en cuenta los proyectos satélites, los cuales son los más jugosos. Acá lo interesante es que EGit se libera como parte de la distribución core, lo cual habla acerca de la importancia cada vez más creciente de Git en el mundo del desarrollo.
WTP (versión 3.5) tiene varios cambios, entre ellos soporte para Java EE 7, y las versiones más recientes de JSF, JPA y WebServices.
También anunciaron una nueva versión de Eclipse Orion, la IDE 100% web para desarrollar en Javascript. 
Personalmente creo que estaría bueno una versión para desarrollar en JAVA, ahí creo que estaríamos hablando de algo realmente impresionante.
Volviendo a las cosas que probé, una de ellas, fue abrir un workspace creado con Juno, no tuve ningún problema, lo abrió perfectamente sin tirar ningún error, lo cual es bueno para adoptarlo rápidamente.
Conclusión: muy pocos cambios para justificar un año de desarrollo. Si bien es una ide super completa y estable, creo que, o tienen que invertir más en marketing, anunciando de forma un poco más clara las cosas nuevas de los proyectos satélites, o bien dedicarse a agregar características más innovadoras.
Ahora no me parece extraño que en Google hayan elegido abandonar a Eclipse como IDE para desarrollar extensiones para construir aplicaciones en Android, y hayan migrado a InteliJ Idea.
Ustedes encontraron alguna otra característica interesante?
Nos leemos!

Herramientas para acceder a recursos del servidor

Hoy voy a contarles de un par de herramientas que me parecieron interesantes, para cuando tenemos el caso de que en algún entorno (producción / preproducción / etc.), se nos dificulta acceder a recursos necesarios para poder mantener nuestros aplicativos. En este caso apunto a dos recursos en particular: el filesystem y la base de datos.

Accediendo al Filesystem

En este caso, me encantó la simplicidad de esta herramienta, no se trata de nada más ni nada menos que un simple archivo .jsp El proyecto en particular del que les hablo es jsp File Browser.
Es básicamente una JSP (y opcionalmente una hoja de estilos) que si la agregamos en nuestro aplicativo JEE, nos ofrece un simple pero poderoso FileBrowser del lado del server. Para instalarlo simplemente tenemos que copiar dicha página en cualquier directorio del contenido web de nuestros aplicativos java. Luego para acceder simplemente tipeamos accedemos a dicha jsp directamente. 
Obviamente que una alternativa válida, es embeberla dentro de un iframe, y dejarla disponible como una opción de menú a la cual, solo los administradores pueden acceder.
La jsp nos permite poder browsear el filesystem del server, pero ademas, poder aplicar las siguientes acciones:
Operaciones de archivos y directorios: Create Dir, Create File, Move File, Copy Files, Rename File, etc. Creo que son bastante autoexplicativas
Upload File, para subir archivos Download Selected Files as a Zip, nos permite descargar los archivos como un zip
Además podemos visualizar los archivos (viene muy bien para, por ejemplo, ver los logs de nuestro aplicativo) y tambien nos da la opción de editar archivos.

Accediendo a la base de datos

En este caso les voy a contar de algo un poco más completo que la herramienta anterior.
Se trata de un explorador de base de datos web. A diferencia del anterior estamos hablando de todo un aplicativo web, que se puede descargar e instalar como una aplicacion web java (archivo .war).
El proyecto en cuestión es dbideas. Está basado en el exitoso framework web extjs.
Es interesante porque muchas veces es complejo poder alcanzar las bases de datos de ciertos entornos, entonces mediante esta herramienta podemos hacerlo mientras podamos acceder a dicho server vía web. Permite gestionar múltiples conexiones a diferentes bases de datos, y soporta varios dialectos. 


La interfaz recuerda a proyectos tales como DBVisualizer y SQuirrelSQL, pero vía web. Obviamente que con muchisimas menos funcionalidades. Igualmente permite ejecutar sentencias SQL arbitrarias y sentencias de modificación de la estructura de la base de datos. Además en diferentes pestañas se puede ver información de Primary Keys, Foreign Keys, etc. En este caso, quizá, lo conveniente es modificar el archivo web.xml y agregar restricciones de seguridad para que solo usuarios administradores puedan acceder.
Las dos herramientas parecen viejas, y no descarto probablemente de que haya mejores y más actualizadas, pero en poco tiempo fue lo mejor que pude encontar para necesidades puntuales que estaba teniendo. Un detalle no menor, es que las dos están disponibles para su uso gratuito.
Espero que les haya interesado y nos vemos en el próximo post!

Construyendo proyectos .NET usando Maven

Los que me conocen saben que por lo general tiendo a usar Maven para todo, pero si lo hago, es porque estoy convencido de que está bueno tener un marco para ciertas tareas repetitivas, y despues de haber visto tantos enfoques, creo que lo que propone maven es bastante razonable, para prácticamente cualquier lenguaje.
Pero la idea de este post, no es hablar de lo que ofrece Maven, sino de describir cuales son las alternativas que existen hoy en día para poder utilizarlo en proyectos de la plataforma de Microsoft.
Cabe aclarar de que en mi carrera como desarrollador, comencé utilizando la plataforma .NET, antes que JAVA, cuando todavía estaba apareciendo, allá por el año 2000 (12 años ya pasaron, dios!). Luego la vida me llevó al mundo de la tacita de café, en el cual descubrí otras formas de construir aplicaciones; y luego de unos años me volví a enfrentar nuevamente a la tarea de arquitecturar y de trabajar con aplicativos de este sabor.
Acostumbrado como estaba a sistemas alineados con los lineamientos propuestos por Maven, debo confesar que pasé por varios estados de ánimo al ver que me faltaban ciertas características que ya las consideraba como básicas en todo proyecto de desarrollo, como ser el layout común de estructura de directorios, manejo de dependencias, de versionado, de releases, etc.
Entonces comencé a buscar diferentes maneras "hacer andar maven" con .NET. Ahorrando los detalles de la búsqueda, llegué a dos alternativas diferentes: NPANDAY y maven-dotnet-plugin.

NPANDAY

El primero es un proyecto al cual seguí por algunos años, comenzó como un tímido port de los plugins core de Maven pero evolucionó mucho a lo largo del tiempo, y actualmente se encuentra como proyecto incubadora en el cúmulo de Apache, lo cual no es poco.
El enfoque de este proyecto es acercar maven a los desarrolladores .NET, facilitando la vida a los que están acostumbrados a trabajar la mayor parte del tiempo, con la IDE N°1 de la plataforma: Visual Studio.
Tal es así que el proyecto está dividido en dos grandes partes: por un lado el gran conjunto de plugins que permiten hacer las tareas rutinarias (compilar, empaquetar, construir, liberar, etc.) del proyecto utilizando Maven y por otro lado un plugin para Visual Studio que permite realizar ciertas tareas (ciertas modificaciones a los archivos pom.xml, agregar dependencias, construir, etc.) desde adentro de la IDE.
Al comenzar a investigarlo, una de las cosas que no me gustó demasiado, es que el proyecto en sí, se aleja mucho de la filosofía Maven, en el sentido de que para comenzar tenemos que seguir una Guía de Instalación. Nada más alejado del espíritu Maven, de ser un software que se autoinstala en cierta manera, ya que todas  las partes que lo componen se van descargando a medida que se va utilizando. En las primeras etapas del proyecto, incluso, uno tenía que descargarse todo el repositorio completo para poder utilizarlo, y nuevas versiones de NPANDAY obligaban a tener nuevas versiones del repositorio! ... muy Microsoft :)  ... por suerte hoy en día todo está subido al repositorio mundial.
Otro de los problemas a los cuales me enfrenté, fue al hecho de que el plugin para Visual Studio, solo funciona si lo tenemos funcionando en idioma Ingles (a tenerlo en cuenta, ya que lamentablemente este tema todavía no está solucionado).
Con respecto a la documentación, que si bien existe y es bastante, me da la sensación de estar bastante desorganizada, uno no sabe por donde comenzar, sobre todo si ya tenemos un proyecto funcionando y lo queremos hacer andar con Maven, no hay una guía simple de como hacerlo. Tampoco si queremos empezar desde cero, sobre todo lo que es relacionado al manejo de dependencias. Una buena página para los que quieran comenzar, es la que muestra el listado de plugins existentes.
La verdad que luego de intentar utilizarlo llegué a varios problemas (como por ejemplo la falta de plugins de reporting, y un no muy buen esquema de directorios para el testing unitario) por lo que lamentablemente tuve que seguir buscando a ver si no existía alguna alternativa.

Maven-dotnet-plugin

Por suerte existe, este proyecto apareció tímidamente en la n-ésima búsqueda en google, y terminó sirviendo totalmente para lo que estaba necesitando. El enfoque es totalmente diferente: está pensado para las personas que ya conocen Maven, y que lo necesitan para poder construir proyectos en .NET
En este caso olvídense de plugins de visual studio y de grandes características. Es un simple proyecto que lo que intenta resolver es justamente, poder construir proyectos .NET usando Maven.
Ya desde el sitio oficial uno ya se siente a gusto con el layout utilizado, obviamente generado automáticamente por los plugins de Maven. Este proyecto si bien tiene algunas limitaciones (ej. no pude hacer andar el manejo de dependencias, lo cual lamentablemente es bastante malo), pose algunas características muy interesantes, como por ejemplo muchos plugins de reporting que funcionan de lo más bien con servidores de construcción como Jenkins (lo más interesante es que tenemos el reporte de DRY gracias al plugin CPD), una idea inicial de empaquetado de aplicaciones WEB, un muy buen enfoque de estructura de directorio e integración con Galio para el unit testing, todo esto a la Maven-way, es decir, se descarga cuando se usa.

Conclusión

Se que probablemente lo que esperaban es un análisis más detallado de las características de cada uno, pero les puedo dejar como conclusión, despues de haber utilizado las dos herramientas lo siguiente: NPANDAY se ve como un proyecto más grande, con más plugins, más líneas de código y más esfuerzo de fondo. Lamentablemente todavía tiene muchos problemas que lo hacen prácticamente inusable, y para colmo de males, el proyecto parece haberse detenido en la versión 1.4.0-SNAPSHOT, una pena realmente, ojalá en algún momento lo retomen y lo continúen. Con respecto a maven-dotnet-plugin, lo recomiendo, si bien es mucho más humilde y más simple, funciona, hace lo que promete y bien, y nos abre las puertas a tener proyectos similares, ordenados, liberables y construíbles contínuamente.
Nos vemos en el próximo post.

Eclipse Juno: Primeras impresiones

Todavía me estoy descargando la nueva versión de eclipse, pero ya tengo ganas de escribir un poco acerca de lo que pude advertir en las notas de lo nuevo que trae este release de una de las IDES más usadas para programar en lenguaje JAVA, y algunos otros como PHP, C++, etc.
Eclipse es un megaproyecto que, seguramente como a varios colegas, prácticamente me acompañó en toda mi vida de programador JAVA. Cuando me refiero a megaproyecto, me refiero a que ya tiene más de 20 años, lo cual no es poco en la vida de una IDE. También me refiero a que en realidad no es un único proyecto isolado, sino que es una organización incubadora de pequeñas joyas (como Mylyn, WTP, etc.) que viven dentro del ecosistema del mismo nombre.
Para los que no lo conocen (si es que hay alguien) o que no siguen los releases, hace un tiempo que se adoptó el formato de releases sincronizados anuales, con un nombre relacionado a lunas, dioses antiguos o científicos famosos. Esto fue necesario por la enorme cantidad de proyectos con versiones que dependen entre si (por ejemplo ahora fue un release de 72 proyectos simultáneos).

Nuevo y que valga la pena anotarlo

Leyendo un poco las famosas New and Noteworthy, lo primero que vemos es que despues de mucho tiempo, se optó por hacer un profundo rediseño del look & feel. La razón es adoptar un enfoque más moderno, y ocultar un poco de líneas, sobre todo en los elementos que no tienen el foco. Personalmente por lo que pude ver en las capturas, no me parece feo, pero me da la impresión de que tiene muchos espacios no aprovechados.
Relacionado a la usabilidad, pareciera que todos los elementos son un poco más flexibles. Ahora las vistas se pueden situar en el espacio de los editores, esto viene muy bien para vistas que muestran mucha información (como por ejemplo la Problems View). También se pueden disponer de forma dividida, para poder maximizar un editor, y al mismo tiempo tener una vista en la misma zona. Relacionado a esto, ahora los editores se pueden desatachar y convertirse en ventanas independientes.
Una cosa que me pareció curiosa, es que se puede seleccionar una intersección de vistas, y arrastrando se pueden dimensionar varias vistas al mismo tiempo.
Una de las cosas que por mucho tiempo diferenció a eclipse de otras IDEs, es que mantiene un "estado" de los archivos, interno e independiente de lo que ocurre por fuera de la IDE. Es decir que si uno tocaba un archivo con un editor externo, luego al trabajar con Eclipse, era necesario hacer un "refresh" (F5) sobre el mismo, para que tome los cambios. Ahora en esta nueva versión, existe un mecanismo habilitado por defecto, que lo que hace es hacer esa actualización de forma automática y en background.
Con respecto a lo que me pareció más llamativo, de lo nuevo que trae para los desarrolladores JAVA, tenemos resaltado de las llaves que engloban al código sobre el cual estamos parados (antes solo se hacía cuando estábamos parados sobre una de las llaves), posibilidad de asociar un editor a los archivos .class que no tienen código fuente asociado (antes era para todos los .class), detección de leaks cuando trabajamos con recursos y diferentes análisis para cuando trabajamos con las anotaciones @NonNull y @Nullable.
En fin, no son muchas cosas (igualmente acá estamos hablando solamente del core de la IDE, probablemente existan muchos más cambios en los proyectos satélites como WTP, etc.), pero vale la pena probarlo, ya que probablemente junto con estos new features, probablemente haya muchos bugfixes.
Terminé de bajarlo, asi que lo pruebo y les cuento!

Herramientas: BoxCryptor

Si bien esto no está directamente relacionado con el desarrollo y la programación, me pareció una herramienta muy útil, para los que quieran almacenar sus creaciones en la nube, sin tener que dejar cada archivo expuesto a la merced de los términos y condiciones de los servicios más populares.
BoxCryptor es una herramienta bastante simple. Esencialmente se trata de un aplicativo que permite encriptar nuestros archivos, antes de que se escriban en un filesystem. Como encripta cada archivo por separado, es especialmente útil e interesante, para subir, luego, lo generado a servicios como DropBox, Google Drive o Sky Drive.
La forma de uso es bastante simple, luego de instalarlo, tenemos que crear un directorio, en cuyo interior se va a almacenar todo lo que necesitemos de forma encriptada. Si ya tenemos funcionando algún servicio de cloud hosting, lo conveniente es seleccionar un directorio ya sincronizado.
Luego nos preguntará el nombre de un drive (lo probé utilizando la versión Windows), el cual servirá para trabajar con nuestros archivos. Luego de este paso ya lo podemos utilizar.
Una vez que esté en funcionamiento, lo único que hay que hacer, es arrastrar lo que querramos proteger, al drive creado, y automáticamente lo va a ir encriptando en el directorio que seleccionamos previamente, y luego esto será sincronizado de forma automática.
Lo que me pareció interesante, es que podemos volver cualquier archivo a una versión anterior (ej, usando Google Drive o DropBox), y el archivo encriptado se restaurará sin generar problemas de checksum o cosas por el estilo. La versión free tiene el limitante de que solo nos permite tener una carpeta encriptada al mismo tiempo, pero podemos ir eliminando y seleccionando cada carpeta que querramos sin mayores complicaciones, por lo que se puede usar para varios directorios (no al mismo tiempo).
Muy recomendable!