Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Java

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...

Java 15 ya está aquí

  Hace unos días que se ha liberado la versión 15 de nuestro lenguaje de programación favorito, y ya podemos probarla y actualizarnos a través de la versión OPENJDK. Se puede consultar el estado y las novedades que contiene en la URL:   https://openjdk.java.net/projects/jdk/15 Y para descargarla podemos ir al siguiente enlace:  https://jdk.java.net/15/ Para actualizarnos (en Windows), sólo tenemos que descargarnos el zip, descomprimirlo y actualizar nuestras variables de entorno: Yo lo he descomprimido en C:\java\OpenJDK15 Y he actualizado las variables de sistema "JAVA_HOME": Y "Path": Para verificarlo, solo tenemos que lanzar un "java -versión" en nuestra consola ("cmd"): Con esto, ya estamos listos para utilizar las mejoras que trae (tengo muchas ganas de probar los bloques de texto). Para acabar he hecho un pequeño proyecto de consola para consumir URLs a través del verbo HEAD, con esto podremos controlar de manera rápida si esa URL existe, s...

Algoritmia III: divide y vencerás

Briefing : En estos días de confinamiento, me cuesta mucho sentarme y escribir algo para Tecnificados, entre unas cosas y otras no tengo tiempo, y el poco que me sobra estoy demasiado cansado como para redactar un artículo. En un ratillo, he conseguido escribir este, que es bastante sencillote... Continuamos los diversos tipos de algoritmos, vamos a hablar de los famosos "divide y vencerás", su idea se basa en descomponer un problema en varios problemas más pequeños, resolver estos, y combinar sus soluciones . Normalmente, la recursividad nos acompañará en este tipo de soluciones. Estos algoritmos se utilizan muchísimo en Big Data. Este es el enunciado del problema que vamos a resolver usando este tipo de algoritmo:    En el programa de la Casa de Empeños, hace unos días llevaron una bolsa de monedas de plata. Rápidamente llamaron a un experto, y este dijo que había una moneda falsa, pero para tasarla necesitaba saber si pesaba más o menos que las auténticas. En la oficina, s...

Ubuntu en Android 2: ahora con JAVA

En el anterior post ( https://www.tecnificados.com/2020/02/ubuntu-en-android.html ) os comentaba que acaba de descrubrir el emulador "Termux", y todas las cosas que en teoría se podían hacer con él. Esta semana he estado probándolo, y en este artículo os quiero comentar todo lo que he hecho y el resultado final de las pruebas. Mi objetivo como os comenté, era poder lanzar tareas programadas, por lo que vendría fenomenal utilizar " cron ". Misteriosamente no venía instalado en la imagen que estamos utilizando, pero nada que no se arregle con los comandos: apt install cron y service cron start (arrancamos el servicio). Una vez hecho ya tenía preparado el "ejecutor" de mis tareas. Para probarlo bien, necesitaba lanzar una tarea periódica que actualizara datos continuamente, así se me ocurrió utilizar el IBEX 35, programe un pequeño script sh en Linux que descarga el json, y lo subía al repositorio. Para esto también me instalé "cur...

Procesando ficheros en JAVA

Con los últimos artículos que estoy escribiendo estoy sentando las bases de dos proyectos en JAVA. El primero es más pequeño y se basa en una aplicación de consola, y de eso vamos a hablar hoy. Voy a ir creando una pequeña aplicación de consola que lee todas las líneas de un fichero de texto. Es bastante simple, pero lo que quiero hacer es crear un proyecto con todas las necesidades que puede tener una aplicación de consola: Librerías externas Sistema de log Fichero externo de configuración Multidioma Generación de un ejecutable (jar) para su posterior uso Todo el código y los pasos están en el siguiente repositorio:  https://github.com/tecnificados/lector El entorno de trabajo con el que estoy trabajando es el siguiente: Sistema operativo: Windows 10 Openjdk version "12.0.2" 2019-07-16 IDE: Eclipse 2019-06 (4.12.0) El primer paso es crear con Maven un proyecto "quickstart" dentro de Eclipse (File -> New -> Maven Project) : Con...