Entradas

Jenkins sobre Docker

Imagen
Jenkins es una conocida herramienta  open-source  de integración continua.Es muy útil en desarrollo de software para automatizar compilaciones, pruebas de unidad e integración, y despliegues. Hoy vamos a aprender a configurar Jenkins en un contenedor de Docker para automatizar la compilación y un test de unidad sobre un proyecto alojado en GitHub. Para este ejemplo emplearemos el proyecto JSex , un intérprete de expresiones sobre objetos JSON. Instalar Docker y Jenkins En este tutorial partimos con Docker instalado. Si no lo tenemos instalado, podemos hacerlo siguiendo las instrucciones de Docker Store . Creamos y ejecutamos un nuevo contenedor para Jenkins: docker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins_home:/var/jenkins_home jenkinsci/jenkins Explicación: docker run crea y ejecuta un nuevo container . Si la imagen (jenkinsci/jenkins) no se encuentra, la descarga de Docker Hub . -d lanza el contenedor en modo daemon (demonio), es decir,

Actualizar No-IP en Linux

Imagen
No-IP es un servicio muy interesante que nos permite registrar subdominios de forma gratuita. Muchos de nosotros tenemos una IP dinámica en casa, es decir, cada vez que reiniciemos nuestro router, se nos asignará una dirección IP diferente. Esto hace necesario actualizar continuamente la dirección del subdominio, bien desde la página web o bien desde un programa externo. No-IP ofrece clientes de actualización para Windows, Linux y Mac OS. El de Windows es muy interesante, pero en el caso de Linux decidí crear un programa propio. En lugar de ejecutarse como un servicio que actualice la IP y duerma, es un simple script que se registra en Cron como una tarea periódica. Se puede descargar del repositorio de GitHub: GitHub: vikman90/ip-update O bien se puede descargar directamente con Git desde Linux. Proporciona un instalador que lo hará todo por nosotros. Para descargarlo y configurarlo, hacemos así: $ git clone https://github.com/vikman90/ip-update.git $ cd ip

Cambiar carpeta personal en Linux

Imagen
En ciertas ocasiones nos puede interesar almacenar nuestros archivos personales en una ubicación diferente a la carpeta home  de Linux, pero al mismo tiempo nos convenga acceder a ellos como si estuvieran allí. Por ejemplo, si usamos dual boot  con Windows y Ubuntu, o tenemos Linux instalado en una máquina virtual, es buena idea enlazar nuestra carpeta personal al directorio donde tenemos nuestra información. Ya que los sistemas operativos actuales clasifican los archivos de forma similar, es recomendable mantener la carpeta personal original de cada uno individualmente (para configuraciones y archivos que no queramos compartir) y vincular cada directorio (Documentos, Imágenes...) a la carpeta correspondiente en la ubicación maestra. Más abajo ofrezco un script en Bash que hace esto mismo: renombra cada carpeta de nuestro home  (o la ubicación que escojamos) y crea una serie de enlaces a los directorios que guardan nuestra información. Se configura fácilmente en las pri

Uso de switch en programación

Imagen
Orange switches artwork. Valentin Ruhry. ¿Para qué sirve la sentencia switch en C/C++ o Java? ¿Por qué los profesores insisten en que lo usemos, porque es más bonito? ¡Pues sí! No olvides que un código claro favorece una lectura más comprensible. Pero no somos nosotros los únicos que nos beneficiaremos: nuestro programa puede ser más eficiente. Recuerda que cuantas más y mejores pistas demos al compilador, mejor código podrá generar . Es cierto que un switch tiene el mismo diagrama de flujo que un if-else , pero es más estricto respecto a la condición. En primer lugar sólo admite expresiones constantes , y en segundo estamos usando etiquetas , con lo que se lo estamos poniendo muy fácil al compilador para que genere una tabla de functores . Precaución : no utilices etiquetas y sentencias goto en C/C++. Por ejemplo, supongamos este sencillo código en C: if (x == 1) a(); else if (x == 2) b(); else if (x == 3) c(); else if (x == 5) d(); else error(); Es mu

Búsqueda paralela de números primos

Imagen
"Sieve for Seven", Scot Nelson . Los números primos son aquellos números naturales mayores que 1 que sólo tienen dos divisores: el 1 y él mismo. Hay muchos problemas en Matemáticas relacionados con los números primos, algunos de ellos aún sin resolver, como la Conjetura de Goldbach . El objetivo de hoy será hallar todos los números primos hasta 2·10 9 . Existen varios algoritmos para obtener listas de números primos, tal vez el más común sea la criba de Eratóstenes , que consiste en escribir una lista con todos los números que queremos estudiar y, partiendo del primero, tachar todos sus múltiplos, y repetir el proceso cada vez con el primer número que no hayamos tachado. Este algoritmo presenta dos problemas: Es destructivo (consiste en descartar), por lo que a priori consume demasiada memoria, y mucho tiempo en escribir candidatos. Eliminar objetos de una lista impide trabajar con ella desde otra hebra, ni siquiera para iterar, con lo que perdemos la posibilid

Algoritmo de relleno

Imagen
Esta historia parte de un pequeño proyecto de antaño en el que intenté implementar la herramienta de relleno de Paint o Photoshop. Estamos hablando de un algoritmo de relleno por difusión : el objetivo es pasar por todos los puntos no coloreados partiendo de uno arbitrario y la solución se antojaba sencilla: un algoritmo de  backtracking .  Estuve cerca de lograrlo pero cuando la superficie a rellenar era medianamente grande, el programa se colgaba por desbordamiento de pila . El problema es que, al tratarse de una función recursiva , con cada paso que daba había que guardar en la pila el punto anterior, y si el espacio es grande podemos estar hablando de miles o millones de pasos. Esta información se guarda en la pila de llamadas , una zona de memoria especialmente rápida... y pequeña. La solución es muy fácil: convertir la función recursiva en iterativa , y guardar cada punto a explorar dentro de un contenedor de pila ( QStack en la biblioteca Qt), cuyos datos se a

Milestones en Alexis Viernes

Imagen
Los Milestones volvemos a la carga y estaremos este fin de semana en Alexis Viernes ,  un conocido restaurante sito entre Atarfe y Santa Fe, con música en vivo. Tocaremos versiones de los 70's y 80's, junto a temas más actuales. Entre nuestro repertorio están Donna Summer, Elvis Presley, Tina Turner, Blues Brothers y Bee Gees. ¡La entrada es gratis!  Os esperamos allí el sábado a las 12 de la noche (entre sábado y domingo).