Exportación e importación en MySQL a la UTF-8.
La solución pasa por utilizar la línea de comandos…
La solución pasa por utilizar la línea de comandos…
Escenario Llevo usando Hangouts de Google desde que reemplazó a Google Talk en el 2013, el cual estuve usando desde que salió en el 2005. No uso otro medio de mensajería instantánea, quitando ocasionalmente algún SMS. Hace un año o dos corrió el rumor de que Google iba a retirar Hangouts, pero de momento, aquí…
Escenario Tenemos una aplicación corriendo sobre Spring Boot que usa Hibernate como ORM. Una de las tablas se llama Group, se utiliza para almacenar los distintos grupos a los que puede pertenecer un usuario. Problema La entidad de java que representa la tabla de grupos tiene esta pinta:
|
1 2 3 4 5 6 7 8 9 10 |
@Entity public class Group { private String name; private String description;; // Setters y Getters omitidos. } |
Sabía que group es una palabra…
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…
Escenario En el trabajo usamos Apache Guacamole para conectarnos a nuestros escritorios de la oficina desde casa. Apache Guacamole proporciona una puerta de entrada HTML5 para conectar con servicios de acceso remoto, como pueden ser VNC o RDP. Consta de dos : el servidor y el cliente que no tienen por qué correr en la…
Escenario Por exigencias de un tercero debemos adaptar nuestro servicio web para que sea compatible con autenticación por JWT. Hasta ahora las llamadas al API se hacían desde dentro de la aplicación usando las mismas credenciales del usuario autenticado por cookie. La configuración de la cadena de filtros de Spring Security es la siguiente:
|
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 26 27 28 29 30 31 32 33 34 35 36 37 |
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .headers() .frameOptions() .disable() .addHeaderWriter(new StaticHeadersWriter("Content-Security-Policy", "frame-ancestors 'self'")) .and() .csrf() .requireCsrfProtectionMatcher(new AndRequestMatcher(CsrfFilter.DEFAULT_CSRF_MATCHER, new RegexRequestMatcher("^(?!/api/)", null))) .and() .authorizeRequests() .antMatchers("/").fullyAuthenticated() .antMatchers("/client/**").hasAnyAuthority("CLIENT", "SUPER_ADMIN", "ADMIN") .antMatchers("/admin/**").hasAnyAuthority("SUPER_ADMIN", "ADMIN") .antMatchers("/actuator/**").hasAnyAuthority("SUPER_ADMIN", "ADMIN") .antMatchers("/api/auth/**").permitAll() .antMatchers("/api/**").hasAnyAuthority("ADMIN", "SUPER_ADMIN", "CLIENT", "API_USER") .and() .formLogin() .loginPage("/user/login") .successHandler(successHandler()) .failureUrl("/user/login?error=true") .defaultSuccessUrl("/") .usernameParameter("username") .and() .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/user/logout")) .deleteCookies("remember-me") .logoutSuccessUrl("/user/login") .and() .rememberMe() .userDetailsService(userDetailsService); return http.build(); } |
…
A menudo me he encontrado con que, para corregir un bug de un programa o simplemente añadir una funcionalidad nueva, basta con aplicar un parche (patch) al código fuente. En Linux / UNIX disponemos de un comando llamado patch que aplica un fichero diff o patch a un fichero de código fuente.
Muchas gracias, me funcionó 100% es para la migración de un proyecto, nuevamente gracias por compartir.