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…
React select async
Escenario Estoy diseñando un formulario web en el que quiero mostrar un combo que se carga dinámicamente con una petición XHR. Problema Los datos a cargar cuentan con miles de registros. Necesito un combo que se cargue de manera dinámica y disponga de un autocomplete para filtrar los resultos. Solución React select es un módulo…
Elemento personalizado en menú lateral de SonataAdmin
Escenario Necesito añadir un enlace a una página personalizada en el menú lateral de Sonata Admin. En concreto uno que, en vez de dirigir a un listado de entidades, abra una página específica. La entidad en cuestión es Acme\Entity\CashOffice. Antes que nada tenemos que crear un CashOfficeAdmin en el cual usaremos el método configureRoutes para…
Synfony 4: exporter personalizado
Escenario El bunde de SonataAdmin para Symfony te permite crear listados exportables sin apenas esfuerzo. Por defecto, ofrece la posibilidad de exportar a csv, xls, json y xml. Basta con crear el fichero Admin correspondiente a la entidad. Por ejemplo si quisiéramos que un listado de facturas de nuestra aplicación pueda ser exportado a Excel,…