Archivos de autor Alfredo Jiménez

PorAlfredo Jiménez

Actualización de WordPress 5.2.

Compartir:

 

 

Desde hace algunas semanas, tenemos disponible la actualización WordPress 5.2. Esta nueva versión tiene importantes mejoras en funcionalidad y seguridad.

Hemos estado aplicando la actualización para aquellos clientes que utilizan esta plataforma, afortunadamente sin imprevistos que reportar.

Aprovecho para compartir una de las nuevas características incluidas:  el modo de recuperación.

Normalmente, cuando falla un plugin o tema en WordPress muchas veces la administración quedaba inaccesible, y para recuperar el control no quedaba más remedio que desactivar manualmente el plugin o tema desde FTP o el panel del hosting, o incluso desactivarlos todos. (Fuente)

Con nuestros clientes mitigamos esto utilizando ambientes de prueba, donde aplicamos primero las actualizaciones en una copia del sitio y solo las implementamos en el sitio original (ambiente de producción) una vez comprobemos con éxito dichas actualizaciones.

Sin embargo, un administrador que decida instalar o actualizar un nuevo plugin por su cuenta en su sitio WordPress, antes, podría terminar sin acceso al sitio e inclusive al panel administrativo.

Ahora, cuando se produce un error fatal, aparece una pantalla de error que informa al usuario/visitante de que el sitio está experimentando dificultades técnicas.

Pero lo más importante es que, cuando se produce un error de este tipo, se enviará un correo electrónico a la dirección de correo electrónico del administrador, informando sobre el problema e incluyendo un enlace secreto a una nueva función llamada «modo de recuperación». (Fuente)

Esto, sumado a nueva funcionalidad como  las características de salud del sitio introducidas en la versión 5.1, brindan mayor seguridad en el uso diario de esta popular plataforma.

Si deseas conocer más detalles sobre esta nueva funcionalidad, puedes seguir el siguiente enlace:

WordPress 5.2 «Jaco»

 

Compartir:
PorAlfredo Jiménez

Aprendiendo un poco sobre Nette

Compartir:

Hay un proyecto que, a simple vista, creo no muchos tomarían. Sin embargo, no sería nuestra primera vez entrando a un proyecto sin documentación técnica y la posibilidad de muchos problemas internos.

En este caso, por un lado fue peor de lo esperado. Por otro, la poca funcionalidad incluida creo permitirá ir reemplazando el código problemático por alternativas más fáciles de gestionar.

La «plataforma» utilizada originalmente para el proyecto básicamente es un diseño desde cero en PHP de su creador original. Y por motivos que no puedo entender, en vez de utilizar un framework o un CMS reconocido como base, se decidió por una mezcla que resultó en malas practicas como código lasaña y vulnerabilidades fáciles de evitar con solo aprovechar la experiencia de otros proyectos a código abierto. Para efectos de explicar mejor la situación, no había un framework en uso.

Como recrear el sitio desde cero se propuso, pero no fue aceptado, lo que estuve pensando era como ir implementando mejores practicas en mi trabajo. Tal vez no serán Las Mejores Practicas, pero al menos vamos en el camino correcto y si no resultan al final en una mejor plataforma, al menos me hicieron más fácil el trabajo actual.

Lo primero fue tan sencillo como implementar un control de versiones. Un git init, .gitignore, git add y commit después tendría la oportunidad de «forkear» hacia un mejor ambiente de trabajo. Otro git clone después tendría un ambiente de desarrollo separado al ambiente de pruebas para ir mostrando los avances al cliente.

Usando composer pude obtener algunas librerías, también con su propio manejo de versión, para generar PDFs y también adquirí una licencia para un gestor de imágenes. Estos cambios el cliente los podía percibir rápidamente y a través de código probado por muchos y no solo por el propietario.

Donde vino un reto interesante fue en implementar lo que a futuro sería un mejor manejo de lista de control de accesos y gestión de usuarios. Estuve revisando varios proyectos, pero la mayoría requerían adaptarse a un framework u otro. Y justamente framework es lo que no teníamos.

Aquí es donde sobresale una alternativa llamada Nette. Desconocida para mi hasta entonces, prometía ofrecer el control de acceso a través de manejo de usuarios y roles que requería. Una búsqueda en Google me informó que el proyecto es bastante popular y lleva muchos años en desarrollo, lo que me ofreció algo de confianza en que el código ha sido probado. Pero lo que más me llamó la atención fue el énfasis que hace el proyecto en ser modular. La idea es que el framework tiene varios módulos: Seguridad, Unit Testing, Base de Datos, Plantillas, Debugging, entre otras a través de plugins. No tienes que usar el «core» obligatoriamente y puedes de manera independiente acoplar los módulos que necesites.

Para mi proyecto, la idea de poder usar composer y su funcionalidad de autoloading para acoplar la verificación de roles en las páginas a través de este modulo me pareció genial. Al finalizar, pude poner todo a funcionar como necesitaba, aunque no todo fue perfecto.

Una curiosidad de Nette, es que aunque parece ser enormemente popular y tiene una comunidad activa, la misma no parece tener como idioma principal el inglés. La consecuencia de esto es que la documentación existente no es siempre la más completa. Y aunque es cierto que es modular, la documentación se enfoca en el uso de esos módulos dentro de un proyecto que usa el core de Nette.

En mi caso, para poder simplificar el uso de Nette, termine acoplando los modulos de Seguridad, Base de Datos y Cache. Este último porque es utilizado por los dos anteriores. Fue un poco difícil encontrar ejemplos claros de como hacer los llamados a las funciones fuera un proyecto 100% Nette. Eventualmente, pude toparme con algunos Issues en Github de otros desarrolladores en una situación similar a la mía y aunque sus problemas eran distintos, el código y llamados me sirvieron para ir armando todo.

El motivo de querer usar el módulo de Database de Nette fue doble: Por un lado, porque habían ejemplos más claros de como acceder a los datos de usuarios y sus roles y también porque, pensando a futuro, evitaría depender del uso de código espagueti que actualmente abunda en el código original. La idea es que en lo que los proyectos requieran mejorar funcionalidad de un módulo del proyecto actual, ese código lo pueda ir reemplazando por llamados al framework de Nette.

El resultado final, es que la nueva funcionalidad para verificar roles permite, por ejemplo, usar 1 línea de código en vez de 3 a 6, cargando un archivo que dependía exclusivamente de sesiones php, no soportaba cookies y donde era trivial cambiar datos que identificaban al usuario de la sesión a través de parámetros GET. También adicionaba el uso de almacenaje de contraseñas cifradas en vez de las cleartext que habían. Además, pude quitar este código, que afortunadamente estaba «comentado», pero la idea de que fue escrito para un trabajo de producción (cobrando) de hace un par de años aún me causa tristeza:

Necesito usar un formato para presentar código en este blog. Pero les aseguro que este bloque se queda como imagen, no queremos que nadie lo copie y pegue sin querer.

Me encantaría saber, aparte de chifear el proyecto (por lo que nos los culparía jamás), que alternativas tomarían ustedes para mejorar las malas practicas, o mejor aún si han utilizado Nette: cuáles han sido  y sus experiencias con el framework, ya sea en su uso completo o individual?

Compartir:
PorAlfredo Jiménez

El Primer Café

Compartir:

Son las 12:55A.M., pero La Cafeteria siempre estará abierta para la tertulia. Es la ventaja de una cafeteria virtual.

Estos serán los objetivos de La Cafeteria:

  1. Informar sobre el día a día de labores en Independent Solutions
  2. Hablar de tecnología en general o cosas geek, hasta donde yo pueda (el resto lo rellenaré con fotos de RuJack)

Adicionalmente los introduzco a la más nueva funcionalidad de nuestro sitio web: ¿Cuántos cafés se han servido en La Cafeteria?

Esta novedosa función (por ahora manual) permitirá compartir con ustedes nuestro compromiso al caféal trabajo. Podrán fácilmente conocer el nivel de cafeína aproximado (medido en shots de espresso) que tenemos acumulado en nuestros sistemas. Más cafés = Más vida = Más trabajo = Más Clientes Felices.

Esperamos así compartan también con nosotros. ¡Salud!

Compartir: