Ir al contenido principal

Entradas

Mostrando entradas de 2021

La regla del Boy Scout

  Los Boy Scouts tienen una regla sobre el lugar donde acampan, siempre hay que dejar la zona del campamento en mejor estado de como se encontró al llegar. Si esto lo extrapolamos al mundo de la Calidad del Software, se podría decir que siempre que realicemos cualquier modificación intentemos mejorar el código que nos encontramos. Todos los que llevamos tiempo programando sabemos que con el paso del tiempo, si estamos evolucionando un proyecto el código se va deteriorando. La culpa de esto normalmente es nuestra (de los desarrolladores), que por diversas causas (presión, incidencias bloqueantes,...) empezamos a hacer que el código se degrade. Si conseguimos aplicar esta regla, podremos mejorar un poco la calidad de nuestro software. Por supuesto esto solo es posible si no estamos trabajando bajo presión, y es posible dedicar un poco de tiempo a realizar estas mejoras. Os voy a poner un pequeño ejemplo a mejorar. Supongamos que tenemos la siguiente función: public boolean rest...

Recargando

Cuando llega Agosto normalmente estoy muy sobrecargado y necesito tomarme unas semanas para respirar y descansar del mundo informático. Normalmente aprovecho este mes para “desconectar” e intentar retomar antiguos (y saludables) hábitos. Además este año ha sido “diferente”, mi vida laboral ha pegado un giro de 180 grados, y todavía me estoy acostumbrando. A veces necesito enfocar toda mi atención en otra cosa, sin tener pensamientos en segundo plano, y este verano me propuse resolver el cubo de Rubik. También he conseguido recuperar dos buenas costumbres: La lectura : me gusta mucho leer, pero hace unos años, de repente, dejé de hacerlo. Últimamente al año me leía sólo dos o tres libros. Gracias a “ Good Reads ” y “ EBiblio ”, he conseguido retomar la lectura. Este año llevo más de 20 libros. Jugar al ajedrez : me encanta el ajedrez, y ¿sabéis cuánto tiempo llevaba sin jugar? Más de diez años... Estuve buscando una aplicación con vídeos para que mis peques aprendieran de forma amena lo...

Lectura para el verano

Este verano he decidido cerrar el portátil y aprovechar para leer. Me he decidido por "Código Limpio" que es un repaso a las bases de la programación (la puerta de entrada al mundo de QA). Para ser un libro técnico se lee muy bien, y está escrito con muchos ejemplos. Ideal para leer con este calor. Me está ayudando a corregir algunos pequeños vicios y ya he empezado a programar siguiendo algunos de sus consejos. Ya llevo casi la mitad del libro y estoy muy contento, así que os lo recomiendo sin dudarlo. Y vosotros, ¿me recomendáis algún libro técnico?

Tests dinámicos con JUnit5

  Hoy os quiero hablar de los  test dinámicos . Cuando pensamos en realizar test, normalmente tenemos muy claro las funcionalidades que queremos comprobar, pero a veces esas funcionalidades varían con el paso del tiempo, y nuestras pruebas tienen que adaptarse a estos cambios. Aquí es donde entran en juego los test dinámicos. Os voy a poner un par de ejemplos de este tipo de test: Imaginaros que tenéis que chequear un menú dentro de una pagina web, y ese menú actualmente tiene 4 opciones. Puede pasar que dentro de unos meses las opciones aumenten. Un test dinámico, primero leerá todas las opciones que tiene el menú, y después realizará las pruebas establecidas por cada una de ellas. Pensar en una base de datos que se carga todos los días a las 03:00 AM, y a las 04:00 AM se lanzan una serie de consultas de BBDD para verificar que la información es correcta. Imaginaros que algunas consultas se leen de un directorio que contiene ficheros *.QRY en los cuales están las consult...

Apache Derby vs. SQLite

Hoy os traigo un pequeño análisis para contaros las diferencias entre dos bases de datos que nos pueden venir muy bien para proyectos pequeños o para infraestructuras con un tamaño inicial reducido. La primera se llama SQLite ( https://www.sqlite.org ), y es un sistema de base de datos que se encuentra dentro de muchas aplicaciones que utilizamos normalmente como navegadores o aplicaciones del móvil. Es muy ligera, cada base de datos se gestiona dentro de un solo fichero y es ideal para procesos que no necesitan acceso concurrente. Por ejemplo para una aplicación de consola que se ejecuta periódicamente, y lo único que necesita es actualizar la información a través de un solo hilo en cada ejecución. La otra se llama Apache Derby ( https://db.apache.org/derby/ ), esta base de datos también se ejecuta en memoria, ocupa muy poquito espacio, y la mayor diferencia es que está preparada para procesos concurrentes. Por ejemplo una aplicación web donde varios hilos pueden escribir/consultar a ...

Procesando ficheros grandes en JAVA

Llevamos unas semanas con varias filtraciones de datos, hace unas semanas hubo una de Facebook, y hoy hemos tenido otra con datos de una empresa de telefonía... Cuando nos enteramos de estas cosas, nos gustaría saber si se han filtrado nuestros datos, pero para eso hay que tener los datos (algo que a veces es difícil de encontrar) y después tener las herramientas para abrir esos ficheros. En los dos casos que he comentado, los ficheros eran texto plano, en formato CSV. El primero ocupaba 800 MB y el segundo 5,36 GB Yo no he conseguido abrir ninguno con las herramientas habituales. Así que he escrito un pequeño programa que lee línea a línea cualquier fichero, busca en cada línea la cadena que nos interese, y las coincidencias que encuentra las escribe en otro fichero. Podéis acceder a ese desarrollo desde aquí:  https://github.com/tecnificados/bigFileOpps Espero que os sea útil. Nos vemos pronto. Muchas gracias a  Hugo y a Valandil por su ayuda consiguiendo los datos.

Spring Boot: un CRUD hecho y derecho

  Este es el quinto (y último) artículo de la serie sobre  Spring Boot  que comenzamos el mes de Febrero. Estos son los anteriores: Introducción Página inicial con Bootstrap Spring Boot: Trabajando con bases de datos Spring Boot: Seguridad básica El proyecto con el que estamos trabajando esta en GitHub y esta es su URL:   https://github.com/tecnificados/boot Hoy vamos a coger todo lo que hemos aprendido y transformar nuestras diferentes pruebas en un CRUD de Incidencias.  Antes de nada, ¿qué es eso? CRUD es un acrónimo de CREATE, READ, UPDATE Y DELETE. Cuando alguien nos habla de este término, a lo que se refiere es a un proyecto que permite realizar estas operaciones sobre una o más entidades. En los diferentes commits que he hecho estos dos días he ido añadiendo operación por operación los diversos cambios en un nuevo Controlador ( IncidenciasController ), y añadiendo las diferentes JSPs: Creo que se pueden seguir muy fácilmente, por lo que esta vez no vo...

Spring Boot: Seguridad básica

Este es el cuarto artículo de la serie sobre  Spring Boot  que comenzamos el mes de Febrero. Estos son los anteriores: Introducción Página inicial con Bootstrap Spring Boot: Trabajando con bases de datos El proyecto con el que estamos trabajando esta en GitHub, esa es su URL:   https://github.com/tecnificados/boot Hoy vamos a empezar a trabajar con Spring Security a nivel muy básico. Los cambios que vamos a comentar se corresponden con algunos commits del 28 de Marzo de 2021: Hasta ahora hemos tocado la seguridad muy de refilón, solo hemos dicho que las páginas que hemos ido creando no requerían ningún tipo de seguridad. Ahora vamos a crear una página que sí requiera estar identificado, y para realizar esa autenticación vamos a crear una página simple de login. Una de las características que trae de serie Spring Security es protección contra CSRF : entre otras cosas nos garantiza que nadie nos manipula el código de nuestras páginas cuando estamos trabajando con un f...

Spring Boot: Trabajando con bases de datos

Este es el tercer artículo de la serie sobre  Spring Boot  que comenzamos hace el mes pasado, los anteriores los tienes aquí: Introducción Página inicial con Bootstrap El proyecto con el que estamos trabajando esta en GitHub en la siguiente URL:  https://github.com/tecnificados/boot Hoy vamos a empezar a trabajar con bases de datos, la configuración ya la establecimos en el anterior post, así que hoy vamos empezar a utilizar esa conexión. Los cambios que vamos a comentar se corresponden con los commits del 12 de Marzo de 2021: Clases de acceso a datos, modelo, servicio y script de BBDD (Commit 92a6848 ) El objetivo de hoy es crear un tabla y trabajar con ella (insertando, borrando,...), así que lo primero que tenemos que hacer es crear esa tabla a través de un script, lo tenéis en el fichero ' incidencia.sql ' en la carpeta ' scripts ': CREATE TABLE incidencia (   id int(11) NOT NULL,   titulo varchar(255) DEFAULT NULL,   descripcion varch...

Spring Boot: Página inicial con Bootstrap

  Este es el segundo artículo de la serie sobre Spring Boot que comenzamos hace dos semanas, si quieres ver el primero puedes acceder pulsando aquí . En el primer artículo vimos cómo descargar nuestro proyecto configurado para nuestros intereses y listo para ser importado en nuestro IDE (nosotros usaremos Eclipse ). Lo primero que vamos a hacer es importar el proyecto: File -> Import Existing Maven Projects Seleccionamos el fichero pom.xml en la carpeta donde lo hemos descomprimido y esperamos unos segundos Cuando acabe la importación, esta es la estructura que nos aparecerá: Con Spring Boot no necesitamos configurar el servidor, ya se encarga él de facilitarnos la vida. Lo único que tenemos que hacer es arrancar la clase BootApplication.java , que se encargará de arrancar Tomcat y dejar nuestra aplicación funcionando en el puerto 8080.  Y si todo fuera bien, podríamos acceder a través de la URL:  http://localhost:8080/ Pero ahora mismo tenemos un error de conexión c...

Spring Boot: Introducción

  Este el primero de una serie de artículos donde nos vamos a meter en Spring Boot . Aquí en Tecnificados llevamos años trabajando con Spring , así que os voy a contar un poco de qué se trata. Spring es un framework de desarrollo que contiene muchos proyectos (o módulos) que nos ayudan en el desarrollo de aplicaciones JAVA . Por ejemplo, el más conocido es  Spring  MVC , que nos ayuda a generar aplicaciones web siguiendo el Modelo Vista Controlador, ayudado por la inyección de dependencias, que es la autentica revolución de este framework. También podemos usar  Spring Data para ayudarnos con las conexiones de BBDD, o Spring Security para securizar nuestra aplicación de diversas formas,... Si queréis profundizar más acerca de los diferentes proyectos, podéis acceder a esta página:  https://spring.io/projects Volviendo a Spring Boot , vamos a hacer un pequeño repaso a las fase de creación de un proyecto web sin utilizarlo: Seleccionaríamos las librerías (J...

SQuirreL SQL Client - Un cliente para dominarlos a todos

Llevaba bastante tiempo buscando un cliente SQL (con entorno gráfico) que fuera ligero y que pudiera utilizar con distintas bases de datos (Oracle, SQL Server, PostgreSQL, MySQL, SQLite,...) y buscando un cliente para Apache Derby me he encontrado con esta maravilla. Toda la información del proyecto se encuentra aquí:  http://www.squirrelsql.org Está desarrollado con JAVA (versión desde 1.8 a 14), para empezar ese es el único requisito que tenemos que cumplir. En la sección de descargas tenemos que elegir el jar que se ajuste a nuestro sistema operativo. Una vez descargado, hacemos doble click en él, y se inicia un instalador de tipo next, next, next... En el caso de Windows la ruta por defecto, da un error por permisos: Yo la he cambiado a " D:\squirrel " y todo ha acabado bien. Una vez instalado, si lo ejecutamos, veremos una pantalla en blanco, antes de nada debemos pulsar en la pestaña " Drivers " de la izquierda: Y aquí se despliega una lista con todos los dri...