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'……
Argument list too long!
Escenario Después de más de 11 años de fiel servicio ha llegado el momento de cambiar de NAS. Hasta ahora había estado usando una máquina con FreeBSD y la interfaz web Nas4Free. Para el nuevo servidor, he optado por instalar Ubuntu y gestionar la administración web con webmin. El soporte de Ubuntu para el sistema…
Instalación y configuración de Guacamole 1.3
Escenario Necesitamos acceder de manera remota a nuestro entorno de trabajo y hemos decidido que guacamole es nuestra mejor opción. Permite el uso de protocoles estándares como VNC, RDP y SSH No requiere instalar software en las máquinas de los usuarios. Gracias a HTML5, una vez instalado en un servidor, puedes acceder a tu escritorio…
Cómo recuperar ficheros borrados de Amazon Linux
Escenario Tenemos una aplicación de tipo SpringBoot desplegada en una instancia ec2 de Amazon, con el sistema operativo Amazon Linux. Para sincronizar los cambios con el código desplegado en producción utilizo rsync en este script de bash:
1 2 3 4 5 6 7 8 |
#!/bin/sh USER=ec2-user HOST=acme.com APPLICATION_DIR=/home/marcos/NetBeansProjects/acme_web DESTINATION_DIR=/var/app/acme/web cd ${APPLICATION_DIR}; rsync -rltvz * --exclude=target --exclude=node_modules/* --exclude=node --exclude=*.log --exclude=src/main/resources/public/ ${USER}@${HOST}:${DESTINATION_DIR} exit 0 |
Ayer cuando desplegué, la aplicación no compilaba en el servidor remoto. Era debido a que una clase…
Sonata Admin: cómo redireccionar un usuario según su rol
Escenario Una aplicación symfony 4.4 con el framework Sonata Admin 3.78.1 cuenta con una página de login para que los administradores del sitio puedan gestionar sus clientes. Ahora queremos que los clientes puedan usar la misma página de login para acceder a sus datos personales como, por ejemplo, sus facturas. Para la gestión de usuarios…
Sonata Admin: el calendario no se cierra
Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php // src/Admin/InvoiceAdmin.php namespace Acme\Admin; use Sonata\AdminBundle\Admin\AbstractAdmin; use Sonata\DoctrineORMAdminBundle\Filter\DateRangeFilter; use Sonata\Form\Type\DateTimeRangePickerType; /** * * @author Marcos */ class InvoiceAdmin extends AbstractAdmin { protected function configureDatagridFilters(DatagridMapper $datagridMapper) { $datagridMapper->add('createdAt', DateRangeFilter::class, array( 'label' => 'created_at', 'field_type' => DateTimeRangePickerType::class )); } } </php> |
Y la siguiente clave bajo form_themesen el fichero config/packages/twig.yaml:
1 2 3 4 5 6 |
twig: default_path: '%kernel.project_dir%/templates' debug: '%kernel.debug%' strict_variables: '%kernel.debug%' form_themes: - '@SonataForm/Form/datepicker.html.twig' |
Problema El calendario no se cierra automáticamente cuando se selecciona…