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

domingo, 1 de septiembre de 2019

¿Necesitas una VPN? Te recomiendo ProtonVPN


Hace unas semanas estaba programando en la playa (me encanta programar) cuando de repente no podía descargar las dependencias que necesitaba a través de Maven. Después de mirar logs vi que mi problema era que mi IP había sido baneada de https://mvnrepository.com, estaba conectado a través del teléfono móvil, y no tenía mucho margen de maniobra.

Después de darle unas vueltas, pensé que la forma más rápida era buscar una VPN y probarlo.

Googleando un poco encontré el proyecto ProtonVPN (https://protonvpn.com/), de los creadores de ProtonMail (https://protonmail.com/).

Ambos proyectos surgen de un grupo de científicos del CERN, querían conseguir privacidad (real) en sus cuentas de correo electrónico, y amparándose en las leyes suizas han conseguido un servicio de email totalmente seguro y privado. El problema era que la privacidad de la red utilizada para conectarse a ese servicio podía ser baja o nula, así que ahora han sacado su propia VPN para conseguir privacidad absoluta.

Tiene varias características que me convencieron desde el principio:

  • Simple y fácil de instalar: instalador de tipo "next, next, next", sin adware de ningún tipo.
  • Modelo freemium: tiene varias modalidades, y una de ellas tiene coste cero
  • Muy ligera: mi sistema operativo no se ha resentido en absoluto. Tras varios años trabajando con muchas VPNs, ésta es sin duda la más limpia que he probado.
  • Registro rápido y eficiente: en menos de un minuto te has registrado en su web.
  • Alta velocidad de descarga: más de un mega por segundo, para lo que yo necesito...
Para utilizarlo, una vez instalado, sólo tenemos que hacer login en la aplicación:


A continuación se nos desplegará la aplicación en pantalla completa con un mapa del mundo para elegir a dónde queremos conectarnos. Para no perdernos en la configuración, lo mejor es buscar el botón "Quick Connect" a la izquierda:


Lo pulsamos y en menos de 20 segundos ya estamos conectados.

La interfaz cambia, y ahora en el mapa nos aparece desde dónde estamos conectados:


Si ahora nos conectamos a cualquier servidor para saber cuál es nuestra IP nos aparece esta información:



Y como podéis ver la velocidad de descarga roza los dos megas por segundo:



En definitiva, si necesitáis una VPN tanto para uso ocasional como para temas más serios os recomiendo ProtonVPN. 

Está disponible para teléfonos móviles, varios sistemas operativos... Vamos que no tenéis excusas.

lunes, 20 de abril de 2015

Maven entra en Juego



Hoy quiero hacer una pequeña introducción sobre Maven.

Aunque no es fundamental para un desarrollador de Java, sí que es un primer paso que nos facilitará la vida en cualquier proyecto que vaya creciendo.

Si quieres empezar a utilizar un nuevo framework o librería lo más normal del mundo es descargarte los ficheros necesarios, copiarlos a tu carpeta de librerías, incluirlas en tu proyecto y a codificar.

Esto que a priori, parece algo sencillo, se puede empezar a complicar: la librería A, puede requerir la libreria B, y ésta a su vez la C, pero B requiere también D, y esta última no se lleva bien con la última versión de C...

Y aquí llega Maven para ayudarnos.

¿Qué es Maven? 

Es una herramienta para gestionar y construir proyectos. Entre otras funcionalidades nos ayuda a gestionar dependencias, y eso es lo que vamos a ver en este artículo.

¿Cómo funciona?

Maven introduce el concepto de Artefacto: es una librería y todo lo necesario para que ésta funcione bien (dependencias, configuración,...)

Cuando en un proyecto se utiliza Maven, existe el fichero "pom.xml", aquí se introduce la lista de todas las librerías (dependencias).

Todas se descargan en un repositorio común de nuestro disco duro sin que tengamos que preocuparnos por ellas.

¿Cómo uso Maven? 

Ahora mismo esta herramienta ya está integrada en la mayoría de IDEs de desarrollo ("Eclipse" entre otros).

¿Un ejemplo?

En todo proyecto siempre solemos necesitar escribir logs, para eso normalmente yo utilizo la librería "log4j". 

La manera tradicional para usar esta librería sería ir a su web: http://logging.apache.org/log4j/1.2  para desacargarla. Pero con Maven lo que tenemos que hacer es buscar sus datos en el repositorio central de Maven.

Para esto vamos a buscarla en esta web: http://mvnrepository.com, buscamos log4j y después de un par clicks llegamos a esta URI: http://mvnrepository.com/artifact/log4j/log4j/1.2.17. En la pestaña de abajo podemos ver el formato de Maven para utilizar esta dependencia:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

El proyecto "MavenLogExample" esta cargado en Eclipse, inicialmente está configurado sin Maven y tiene la librería dentro del proyecto.

Tiene una clase y en su método Main sólo hay estas líneas:

try {                          
    PropertyConfigurator.configure("log4j.properties");
    log.info("Sistema de log iniciado");                        

} catch (Exception e) {
    e.printStackTrace();  
}

Dentro del proyecto esta la carpeta "lib" que contiene el .jar de "log4j".

Vamos a empezar a usar Maven en este proyecto y a quitarnos la librería del proyecto (con esto ahorramos mucho espacio, imaginaros un proyecto con cien librerías).

Primer paso: darle al proyecto naturaleza Maven

Seleccionamos el proyecto, botón derecho del ratón, pulsamos "Configure" y "Convert to Maven Project".




Nos aparece esta pantalla:



Podemos rellenar los datos "name" y "description" o pulsar "Finish".

Tardará unos segundos en generarnos el fichero "pom.xml". Y aparecerá en la pantalla así:


Si queremos ver cómo es el fichero, podemos pinchar en la última pestaña inferior: "pom.xml"

Veremos que contiene algo parecido a esto:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MavenLogExample</groupId>
  <artifactId>MavenLogExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


Segundo Paso: configuración de nuestra librería

Nosotros vamos a añadir la dependencia de "log4j" dentro de <dependencies/> que se escribe después de </build> . Nos quedará así:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MavenLogExample</groupId>
<artifactId>MavenLogExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>

Ahora ya podemos borrar la librería del proyecto y eliminar su dependencia de la configuración.


Si volvéis a ejecutar veréis que todo funciona perfectamente.

Tenéis este proyecto en nuestro repositorio público: https://bitbucket.org/tecnificados/public

Hay dos commits: el inicial sin Maven y el segundo con Maven y sin la librería de log dentro del proyecto.

Espero que os sea útil.