Escenario Una manera de preparar los exámenes es practicando con aquellos de años anteriores. Para los que estudiamos en la UNED, el centro de Calatayud cuenta con un extenso repositorio de PDFs de exámenes de previas convocatorias. Problema Los PDFs suelen ser de aquellos generados a partir de imágenes y no de texto lo que…
Confirmación antes de apagar
Escenario ¿Nunca te ha pasado de arrepentirte de pulsar la tecla intro después de teclear «shutdown» o «reboot»? Problema A mí sí, y si el comando en cuestión es «shutdown» más todavía. Estaría bien que antes de ejecutarse un apagado o inicio, me pidieran confirmación. Solución Para que así sea, basta con seguir estos pasos….
cURL error 60: SSL certificate problem: unable to get local issuer certificate
Escenario Todo empezó con el aviso de un proveedor. Un plugin de WordPress fallaba con el siguiente error: cURL error 60: SSL certificate problem: unable to get local issuer certificate Problema Una búsqueda rápida con Google me lleva a la conclusión de que hay que editar el fichero de configuración php.ini. A fin de averiguar…
Oracle JDK 7 is NOT installed.
Escenario El otro día me avisaron que una de las decenas de webs bajo mi responsabilidad tenía el certificado caducado. A principio de mes estuve actualizando los certificados de todos los servidores, pero éste se me pasó. Problema Al no ser una web a la que demos mucho uso, tenía actualizaciones de seguridad pendientes de…
ssh: connect to host: Connection refused
Escenario Esta mañana ha ocurrido algo inexplicable, por lo menos, como suele pasar en este dominio, hasta que hemos dado con la solución; luego parecía obvio. Nos avisan que una de las máquinas de nuestra red negaba el acceso por SSH provocando el siguiente error:
1 |
ssh: connect to host maquina port 22: Connection refused |
Lo primero que pensamos es podía estar relacionado con…
Restringir acceso a un bucket de AWS s3 por IP
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…