Uncategorized

El manifiesto “The Twelve-Factor App”

En esta nueva colaboración con AdictosAlTrabajo.com vamos a conocer un manifiesto que contiene los puntos fundamentales que debería cumplir el desarrollo de una aplicación preparada para ser distribuida como un servicio.

https://www.adictosaltrabajo.com/tutoriales/el-manifiesto-the-twelve-factor-app/

Introspección y Reflexión en Java para testear clases de utilidades

En una nueva colaboración con el portal AdictosAlTrabajo.com, hablo sobre el uso que podemos dar en Java a los paquetes de Reflexión e Introspección que tiene desde hace algunas versiones.

Así, aprovecho para hacer un validador de clases de utilidades que comprueba que es una clase final, que tiene un constructor privado, que éste, en el caso de que lo “truquen” lanza una excepción al ser invocado, y que todos sus métodos y campos son estáticos…

Disfruta de la lectura:

Introspección y Reflexión en Java para testear clases de utilidades

Cómo usar una dependencia local en Maven

En algunas ocasiones, sobre todo en pruebas de concepto, necesitamos usar una dependencia java (un .jar) que no está en ningún repositorio.

En el caso de que usemos Maven, esto puede ser un impedimento porque no tendremos repositorio  público  en el que esté ese .jar. Para solucionarlo lo mejor es montarte un repositorio propio con Nexus por ejemplo. Pero si no tienes tiempo o eres demasiado vago, se puede hacer a través del pom.xml

¡Ojo! Esta técnica utilízala únicamente para casos puntuales en entornos de pruebas. ¡Nada de usarlo para salir a producción!

Partiendo de un pom.xml normal, declaramos un nuevo repositorio, que podemos llamar my-local-repo:

<repositories>
...
    <repository>
        <id>my-local-repo</id>
        <url>${project.basedir}/src/main/resources/</url>
    </repository>
...
</repositories>

Como puedes ver, he elegido que en src/main/resources estará el fichero .jar que quiero incluir en el proyecto. En mi caso es el fichero src/main/resources/FilterDecoratorForSpringDelegatingFilterProxy-0.0.1.jar

El siguiente paso es indicar la dependencia como si de un repositorio normal se tratase:

<dependencies>
...
    <dependency>
        <groupId>com.alberto</groupId>
        <artifactId>FilterDecoratorForSpringDelegatingFilterProxy</artifactId>
        <version>0.0.1</version>
    </dependency>
...
</dependencies>

Y ya está 🙂

Securizando conexiones a servidores web (HTTPS) con Let’s Encrypt

Hace un tiempo que se creó Let’s Encrypt como organización que prové de certificados gratuitos al que disponga de un sitio Web. Mejor dicho, certificados gratuitos y reconocidos por autoridades certificadoras. Así, cuando un usuario acceda a nuestra Web no le aparecerá el típico mensaje de que está accediendo a un sitio inseguro.

Así, pues, nos da gratuitamente certificados generados por ellos.

La instalación en un Ubuntu 14.04 no puede ser más sencilla:

  • Nos bajamos el código del programa de instalación (tenemos que tener el cliente de git): git clone https://github.com/letsencrypt/letsencrypt.
  • Accedemos al directorio con cd letsencript
  • Ejecutamos: ./letsencrypt-auto –apache
  • Y seguimos las instrucciones, indicando los nombres de los dominios que queremos securizar (www.dominio.com y dominio.com son dos dominios diferentes).

Y ya está… 🙂

Podemos comprobar cómo ha quedado con nuestro navegador o a través de: https://www.ssllabs.com/ssltest/analyze.html?d=dominio.com

Ah!

Para renovarlo ejecutamos de nuevo:  ./letsencrypt-auto

Creando vídeos time-lapse de una cámara de seguridad con FFmpeg

Recientemente he adquirido una cámara IP de seguridad para ponerla en el patio de mi casa. Ha habido robos últimamente y me gustaría saber qué sucede por las noches cuando yo no miro 🙂

Una de las funciones de esta cámara (Foscam FI9804W ) es la de poder sacar una fotografía y subirla a un FTP cada X segundos. Para no sobrecargar la red, y porque lo importante, que es la detección de movimiento, ya lo tenía activado, decidí configurarla para obtener una foto cada 60 segundos.

El resultado es que tengo una serie de imágenes capturadas cada minuto:

Schedule_20151205-081032.jpg
 Schedule_20151205-081132.jpg
 Schedule_20151205-081232.jpg
 Schedule_20151205-081332.jpg
 Schedule_20151205-081432.jpg
 Schedule_20151205-081532.jpg
 Schedule_20151205-081632.jpg
 Schedule_20151205-081732.jpg
 Schedule_20151205-081832.jpg
 Schedule_20151205-081932.jpg

Como puedes ver, refleja el día y la fecha de la captura. Combinándolas se va a poder ver el paso del día (movimiento de luces, viento, crecimiento de hojas…) en un vídeo bastante bonito.

¿Cómo puedo crear un vídeo a partir de las imágenes? En internet, sobre todo para Windows, hay multitud de opciones, pero yo quería usar algo open-source que funcionase en mi ubuntu, y eso no es otro que FFmpeg.

Sólo unos pocos pasos:

1. Nos descargamos las fotos a un directorio cualquiera en el que estén todas juntas. En mi caso me las he bajado usando “scp” porque las tengo en un servidor ubuntu también con ssh activado. También instalamos ffmpeg

sudo apt-get install ffmpeg -y

2. Si queremos usar FFmpeg, tenemos que tener las fotos con nombres consecutivos del estilo: imagen1.jpg;imagen2.jpg…. y así hasta imagen 967.jpg por ejemplo. Si falta alguna FFmpeg dejará de funcionar. ¿Cómo hacemos esto?  Fácil, gracias a la ayuda de la shell. Yo encontré esta forma:

N=1; for X in $( ls *.jpg | sort ); do mv $X imagen$N.jpg; N=$(($N+1)); done

3. Ahora tenemos todas las imágenes con el formato adecuado. Es hora de usar FFmpeg. Ejecutamos:

ffmpeg -framerate 25 -i imagen%00d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4

…donde imagen%00d.jpg quiere decir que debe tomar los nombres de ficheros del estilo imagen1.jpg …. imagen234.jpg, que es lo que necesitamos.

Y tras esperar un ratillo, dependiendo de nuestro ordenador y de la cantidad de fotos, ya tenemos el video output.mp4

El resultado final es este: https://www.youtube.com/watch?v=7m-zhjmWxaI