Escenario Una de nuestra aplicaciones web usa el servicio de almacenaje del webservice s3 de Amazon para guardar los ficheros que se suben a la web. Para ello el usuario dispone de un formulario y, una vez enviado, la aplicación utiliza el API de AWS para guardarlo en su bucket de s3. Problema En ningún…
Valor por defecto en un combo de una plantilla de Thymeleaf
Escenario En Thymleaf podemos usar el atributo th:field para enlazar la vista con el modelo:
1 2 3 4 5 |
<select th:field="*{currency}"> <option th:value="'EUR'" th:text="Euros"></option> <option th:value="'USD'" th:text="Dolares"></option> <option th:value="'YEN'" th:text="Yenes"></option> </select> |
En caso de que hubiéramos cargado estos datos del servidor, nuestro select tendría esta pinta:
1 2 3 4 |
<select th:field="*{currency}"> <option th:each="currency : ${currencies}" th:value="${currency}" th:text="${currency}"> </option> </select> |
Problema ¿Qué pasa si queremos seleccionar una divisa por defecto? En el caso de que fuera el euro tendríamos que hacer algo así,…
Spring boot y websockets
Escenario Un usuario se conecta con el móvil a su aplicación de empresa. Si es la primera vez que lo hace ésta le pide autorización para recabar su localización. La aplicación manda la localización al servidor y desde el servidor se informa a una página de monitorización. Dicha página está conectada por websocket con el…
Hibernate no puede resolver la propiedad…
Escenario En una aplicación Spring Boot v2.3.4 hay dos entidades Balance y Shop. Una tienda (shop) puede tener varios saldos y un saldo (Balance) ha de estar relacionado con una tienda. Además existen panaderías (Bakery) y sastrerías (TailorShop) que extienden la clase Shop:
1 2 3 4 5 6 7 8 9 |
@Entity public class Balance { @ManyToOne @JoinColumn(name = "shop_id") private Shop shop; ... } |
1 2 3 4 5 6 7 8 |
@Entity abstract public class Shop { @OneToMany(mappedBy = "shop") private Set<Balance> balances; ... } |
1 2 3 4 5 6 |
@Entity public class Bakery extends Shop { ... } |
1 2 3 4 5 6 |
@Entity public class TailorShop extends Shop { ... } |
Y necesito saber cuál es la fecha del…
Chart.js: cómo cambiar el idioma (locale) dinámicamente
Escenario Por un lado una aplicación que permite al usuario personalizar el idioma del sitio. Por otro, una gráfica de tipo línea temporal generada con la biblioteca Chart.js, integrada en un módulo de React con react-chartjs-2. Problema Según un comentario de un usuario de Stackoverflow, basta con un require('moment/min/moment-with-locales'); y establecer el valor de la…
Cómo acceder a partición encriptada
Escenario Hace poco he añadido un disco SSD a mi ordenador para mejorar el rendimiento del sistema operativo. Instalé un Kubuntu en el nuevo disco y lo configuré como el principal del sistema. La partición del antiguo usaba el gestor de volúmenes lógicos LVM y no fui capaz de entrar en el viejo sistema operativo,…
Cómo NO hacer iteraciones anidadas en thymeleaf 3
Escenario Me han pedido que integre en una nueva aplicación una funcionalidad de otra ya existente. No es la primera vez que me ha tocado hacerlo. Suele ser un trabajo tedioso basado en continuos copia y pega y frecuentes refactorizaciones. Una de la vistas que debo importar en la nueva aplicación muestra una tabla con…
ApexCharts.js: No funciona exportar a png
Escenario Ésta es rápida y muy específica, pero nada evidente. Me ha llevado un poco de tiempo dar con el problema. Si no utilizas apexcharts posiblemente no te vaya a interesar esta entrada. Es una biblioteca de JavaScript para dibujar gráficos a partir de datos. Problema Apexcharts ofrece la posibilidad de exportar a PNG desde…
¿Qué es www.roxoenos.xyz?
Escenario Desde hace años tengo una aplicación web apoyada en Laravel, que mantengo con frecuencia. En el servidor corren dos instancias del framework, una para la aplicación principal con Laravel 6, y otra para un API que desplegué hace poco con Laravel 7. Problema Llevo unos días notando que las páginas tardan más en cargarse,…
horario de verano y javascript
Escenario Con el fin de dibujar una gráfica cronológica, necesito generar en javascript una matriz de fechas a partir de una de inicio y otra de fin. En stackoverflow doy con una solución que considero sencilla e inteligible:
1 2 3 4 5 6 7 8 |
const getDaysArray = function (start, end) { let days = [] let day; for (days, day = new Date(start); day <= end; day.setDate(day.getDate() + 1)) { days.push(day.toISOString().split('T')[0]); } return days; }; |
Tras modificarla lo justo y probarla compruebo que devuelve una matriz de fechas de tipo '2019-02-01','2019-02-02','2019-02-03','2019-02-04'……