Pasar al contenido principal
Penyaskito Blog

Main navigation

  • Home
Language switcher
  • English
  • Español
User account menu
  • Iniciar sesión

Sobrescribir enlaces de ayuda a la navegación

  1. Inicio

Drupal

Por penyaskito, 2 Mayo, 2021
Captura de pantalla de XHGui, mostrando información de una petición a WordPress

Analizando el rendimiento de Drupal, WordPress o cualquier aplicación php con DDEV, XHProf y XHGui

He llegado a los contenedores en Docker muy tarde. Probablemente debido a que mi trabajo en los últimos años no dependía de versiones de PHP, siempre usaba la última disponible, y siempre usé MySQL/MariaDB como motor de base de datos. Para un servidor que gestionaba usé LXC para tener aplicaciones en contenedores, y me funcionó bien, pero nunca tuve que tocarlo a menudo, y mi amigo Andrés me ayudó la mayoría de las veces. Docker me parecía confuso y, sujétame el cubata, pensé que era una moda, así que no quise aprenderlo. Así soy yo, todo un visionario, saludo en la escalera siempre y soy amigo de mis amigues.

Con alguna dificultad, pero llegué a comprenderlo, y desde entonces he adoptado y me apasionaron herramientas como docker-compose. Y cuando tuve que trabajar en un proyecto con Drupal usando Postgres, mi mejor amigo fue DDEV, abstrayendo las complejidades de docker-compose pero manteniendo la libertad para personalizar el entorno a tus necesidades. Así que es mi elección como plataforma de desarrollo la mayoría de las veces. Y por fortuna, es software libre.

El contrato implícito no-forzado del software libre es que tienes que contribuir si tienes la oportunidad de mejorarlo*. En contribuciones menores que hice la comunidad de DDEV fue acogedora y entusiasta, gracias Randy! Así que últimamente necesitaba buscar cuellos de botella de rendimiento en una web, y he estado trabajando en integrar XHProf con XHGui en DDEV. He contribuido la receta, así que tú también puedes usarlo en menos de 5 minutos! Puedes verlo aquí (en inglés): XHGui integration in DDEV documentation. Si crees que es necesario traducirlo, déjame un comentario.

* Aclaración: no digo que tengas que contribuir, no todes tenemos el mismo privilegio que yo. Pero *si ya lo hiciste, intenta contribuirlo*. 

Si habilitas XHProf, ya proporcionado por DDEV, monitoriza tu aplicación, pero necesitas capturar esa información y enviarla a algún sistema que te haga sencillo explorarla y entenderla. Ahí interviene perftools/php-profiler. Tiene la capacidad de gestionar que datos necesitamos en el análisis, y enviarlos a XHGui. XHGui corre en un contenedor independiente, recibe los datos, los almacena en una base de datos mongodb en otro contenedor, y los renderiza en tú navegador, dónde podrás verlos en diferentes listados, grafos y gráficos que te permitirán entender mejor que está pasando en tu aplicación. Puedes también comparar distintas peticiones a una misma página y ver cómo evoluciona el rendimiento con el paso del tiempo. El análisis e interpretación de esos datos es un tema complejo en sí, así que no entraré en más profundidad en este artículo.

Así que las buenas noticias son que puedes integrar esto ahora en cualquier proyecto que uses con DDEV, en menos de 5 minutos. La documentación es específica para Drupal 8+ (que usa composer) y WordPress (que no usa composer, aunque puedes hacerlo gracias a roots/bedrock), por lo que cubre ejemplos para diversos tipos de aplicaciones PHP. ¡Espero que sirva!

Como bonus, también he escrito un comando para (des)activar xhprof en DDEV sin tener que reiniciar el proyecto, escribir un comando de quince líneas, o hacer ssh al contenedor. Está en la misma página de DDEV-contrib, pero probablemente sea aceptado en DDEV pronto.

¡Gracias a Randy "rfay" Fay, Andrey "andypost" Postnikov y Mateu "e0ipso" Aguiló por consejos, ayuda e inspiración para completar esto! 

Tags

  • php
  • XHProf
  • DDEV
  • XHGui
  • WordPress
  • Drupal
  • Drupal planet
Por penyaskito, 26 Abril, 2021
Selenium IDE se usó para borrar spam

Actualización sencilla de un blog personal de Drupal 7 a 9: algunos consejos para migrar

Bienvenida a otro blog con una infraestructura compleja para tener cuatro visitas. Ya era hora.

Este artículo estaba previsto que fuera una guía detallada de como usé las herramientas de migraciones de Drupal para actualizar de D7 a D9, pero, siendo sincero, fue bastante sencillo, así que me quedaré en un par de consejos. Ten en cuenta que mi último intento de escribir terminó bastante rápido, por lo que hubiera sido más rápido hacer la migración a mano. Pero como alguien que ha contribuido a la iniciativa de migrate y las migraciones de Drupal a Drupal, me daba penita que nunca lo he usado en un proyecto real. 

Mi sitio origen es un D7 con el módulo blog, que fue eliminado en D8 del core. Podría haber usado el módulo contribuído enlazado, pero quería sólo un tipo de contenido "artículo" de aquí en adelante. En lugar de crear una migración personalizada, quise darle una oportunidad a Drupal Migrate UI.

A pesar de no tener una migración personalizada y tener que pensar en cómo mapeamos el contenido para migrar, algo principal a tener en cuenta: la actualización es el mejor momento para hacer limpieza.

La actualización de tu web es el mejor momento para hacer limpieza de contenidos. P.ej. borrar spam.

Así que el primer paso fue borrar spam. Usé una cuenta gratuita de Mollom (DEP, gracias por tu ayuda), pero no repensé mi estrategia para prevención de spam cuando el servicio cerró. Miles de comentarios y usuarios registrados estaban en mi base de datos, y eso estaba realentizando mis primeros intentos de migración. Parcheé Drupal 7 para que los formularios de comentarios y usuarios me permitieran borrar más entidades de una vez y aseguraran que eran todos spam modificando las consultas a la base de datos. Después grabé con Selenium IDE una automatización para borrarlos. Incluso siendo más rápido programarlo o algunas consultas SQL, a veces hay un pequeño placer en ver mi navegador hacer cosas por mí.

Después de limpiar morralla, el proceso es muy sencillo. Instalar Drupal Migrate UI y sus dependencias, seguir el procedimiento y esperar a que termine. Pero es una buena idea auditar tu contenido después de la migración, para asegurar que no has olvidado contenido o configuraciones en el proceso. Especialmente porque estas actualizaciones no permiten aún la marcha atrás (rollback) -  no te preocupes si tienes migraciones personalizadas, en ese caso si está soportado.

Audita tu contenido después de la migración. Has podido dejarte algo atrás.

En mi caso, tuve que reiniciar porque mi contenido multiidioma no estaba migrado. Rápidamente descubrí que las configuraciones de multilenguaje deben hacerse antes de la migración de tu contenido. Instala los módulos relacionados si ese es tu caso, y revisa tu estrategia de traducción y sus configuraciones antes de migrar, por ejemplo, tus tipos de contenidos y taxonomías. 

Si tienes contenido multiidioma, revisa tu estrategia y configuraciones acordemente antes de la migración.

En mi caso, tenía etiquetas en castellano e inglés, que no estaban relacionadas entre sí a pesar de ser el mismo término en el sitio de origen. A partir de ahora, gracias en parte al mejor soporte desde Drupal 8 para sitios con diversos idiomas, quería cambiar eso. Hice esas relaciones manualmente, y aquí estamos. 

He elegido el nuevo tema experimental Olivero y el nuevo tema experimental de administración Claro porque son bonitos, más accesibles y funcionales, pero también porque probarlos es una gran forma de ayudar a que mejoren.

Dejo para otro momento mi elección de módulos contribuidos para la web, alguna incidencia que tuve que solventar con un pequeño módulo custom, y la configuración de mi infraestructura basada en contenedores de Docker. Prometo que lo contaré antes de que pasen otros tantos años.

Tags

  • multiidioma
  • migraciones
  • hola-mundo
  • Drupal
  • Drupal planet
Por penyaskito, 10 Noviembre, 2012

Drupalcamp Spain 2012

El pasado 20 y 21 de octubre se celebró en Madrid la tercera edición del mayor evento nacional de Drupal en España, la Drupalcamp Spain 2012. El sábado participé en un panel con Pedro Cambra, Ramon Vilar, Juampy Novillo y José Reyero sobre cómo contribuir a Drupal, a través de las múltiples maneras de colaborar: módulos, temas, traducciones, documentación, difusión, eventos... El material que utilizamos de guión está disponible en Slideshare:

Contribuir en Drupal: Por dónde empiezo? from Christian Lopez

El domingo participé de una sesión donde intenté descubrir los cambios respecto al multiidioma en la próxima versión de Drupal, Drupal 8, cuya salida está prevista para Agosto de 2013. El material utilizado de guión está también disponible en Slideshare:

Multilenguaje en Drupal 8 from Christian Lopez

Los videos de estas charlas, junto al del resto de sesiones, estarán disponibles próximamente en el canal de Vimeo de la Asociación Española de Drupal.

Durante el fin de semana también tuvo lugar la primera Asamblea de la Asociación Española de Drupal, de la cual salí como miembro de la Junta. Espero poder contribuir con ella a la difusión de Drupal en España.

Y después de un fin de semana cargado de emociones, un avión hacia Frankfurt. Pero eso ya es otra historia.

Imagen de cabecera: Algunos derechos reservados por Pedro Lozano

Tags

  • Drupal
  • Drupalcamp
  • Drupalcamp Spain
  • AED
  • multiidioma
  • contribuyendo
  • sesiones
  • slideshare
  • Drupal planet
Por penyaskito, 29 Septiembre, 2012

Cumplimiento de la LOPD con el módulo LOPD de Drupal

Según el tipo de datos personales que almacenes, la Ley Orgánica de Protección de Datos establece un nivel de seguridad de protección de los datos. Este nivel es el que determina las medidas a tomar para su cumplimiento. Para ayudar a este cumplimiento, he arrancado un proyecto en Drupal.org, LOPD, y se ha publicado la primera versión. En esta versión únicamente se registran los accesos y desconexiones de usuarios, y se exponen a través del módulo views. Si se te ocurren funcionalidades que debería proporcionar este módulo, por favor, házmelas llegar en un comentario o en la cola de peticiones del módulo LOPD en Drupal.org.

Tags

  • LOPD
  • Drupal
  • Drupal Contrib
Por penyaskito, 25 Septiembre, 2012

Flujo de trabajo con Git y submodules para despliegues de Drupal

Quizá has visto el gran artículo sobre Despliegue de Drupal con Git Submodules, de Randy Fay. Gestiono este sitio usando esa estrategia, pero a veces olvido cómo se realiza cada operación. Por ello, las recojo aquí para mi propia referencia.

Para obtener toda la información sobre los submodules: 

git submodule foreach git fetch origin 

Ahora en el directorio de cada submódulo hacemos:

git pull 

Si queremos cambiar de rama de ese submódulo, usamos:

git branch -a # ver las ramas disponibles
git checkout 7.x-2.x # la rama a la que deseamos cambiar

Para comitearlo, vamos a la carpeta contrib otra vez y hacemos:

git add contrib-module-name 

Para terminar, actualizamos:

drush updb --debug -y 

Quizá encuentres algunas advertencias por dependencias no resueltas. En ese caso, para añadir la dependencia:

git submodule add --branch 7.x-1.x git://git.drupal.org/project/entity.git sites/all/modules/contrib/entity 

Finalmente, para actualizar el core:

git merge drupal/7.x drush updb --debug -y 

Una vez hecho esto en nuestro sitio de DESARROLLO, y comprobado que todo funciona correctamente, actualizamos en el servidor tras la copia de seguridad de rigor:

git pull
git submodule update --init 
drush updb --debug -y

Tags

  • git
  • git submodules
  • workflow
  • Drupal
Por penyaskito, 17 Agosto, 2012

Participando en Drupalcon Munich D8MI Sprint (en remoto)

Después de participar en el Sprint D8MI del Drupal Developer Days, me entristecía no poder asistir al de la Drupalcon de Munich, pero decidí participar en remoto.

Hice una llamada al Grupo de Drupal de Sevilla, y Jesús Balsera (jsbalsera) y Juan Fernández (@Maxtorete) se unieron.

Empezaremos hoy, y estaremos participando hasta el próximo domingo, si todo va bien y no abandonamos ninguno por el camino (eso espero). 

Este es el foco actual de D8MI, y aquí hay algunas notas que tomé sobre tareas en las que me gustaría que trabajáramos:

 

  • http://drupal.org/node/1733746 => D8 installer is broken if selecting a non-English language on installation => Drupal core, install system, normal, needs work, 3 comments, 1 IRC mention
This is a problem when installing D8 in another language. A patch is attached, but needs some work.
@penyaskito did the initial work.
@jsbalsera managed to fix the requested changes and use drupal_classloader_register instead of include_once. Other sprinters did more tweaks and it was committed :-)
http://drupalcode.org/project/drupal.git/commit/3f92626
 
  • http://drupal.org/node/1738178 => Javascript library localisation vs localization => Drupal core, locale.module, normal, fixed, 5 comments, 5 IRC mentions
Minor string fix, reported by @penyaskito.
http://drupalcode.org/project/drupal.git/commit/428226c
 
  • http://drupal.org/node/1392208 => Impossible to install Drupal in a non-English language when following the provided instructions => Drupal core, install system, normal, needs review, 12 comments, 2 IRC mentions
@Gabor & @penyaskito.
http://drupalcode.org/project/drupal.git/commit/ea5de2e
 
  • http://drupal.org/node/1637348 => Import Gettext .po files in progressive batches to avoid time limits => Drupal core, language system, normal, fixed, 28 comments, 15 IRC mentions
@penyaskito worked on this at Barcelona and has been completed now.
http://drupalcode.org/project/drupal.git/commit/7e79095
 
  • http://drupal.org/node/1658842 => Introduce a translations:// stream wrapper to access the .po file directory => Drupal core, language system, normal, needs work, 12 comments, 3 IRC mentions
@penyaskito working on it. NW.
 
  • http://drupal.org/node/1738330 => Confusing Language negotiation when accessing / => Drupal core, language.module, normal, active, 0 comments, 2 IRC mentions
@jsbalsera working on it
 
  • http://drupal.org/node/253157 => Add a new user permission "Translate own nodes" => Drupal core, translation.module, normal, needs work, 31 comments, 3 IRC mentions
Needs rerolling, functionality tests and upgrade tests.
@penyaskito rerolled it.
@maxtorete is writing functional tests. NW
 
  • http://drupal.org/node/1189184 => OOP & PSR-0-ify gettext .po file parsing and generation => Drupal core, locale.module, normal, needs work, 256 comments, 70 IRC mentions
Properly test this.
Minor follow-ups.
 
  • http://drupal.org/node/1632384 => Import available language data and translations form translation server => Drupal core, locale.module, normal, needs review, 13 comments, 5 IRC mentions
 
 
  • http://drupal.org/node/1627006 => Collect project information for translation update => Drupal core, locale.module, normal, needs review, 23 comments, 5 IRC mentions
Work started
 
  • http://drupal.org/node/1191488 => META: Integrate l10n_update functionality in core => Drupal core, locale.module, normal, active, 12 comments, 4 IRC mentions
This is a major issue broken into smaller pieces. Those ones needs care. Doesn't look specially easy.
 
 
Veamos a dónde llegamos.

Tags

  • sprint
  • DrupalCon Munich
  • D8MI
  • contribuyendo
  • Drupal
  • Drupal Core
Por penyaskito, 5 Agosto, 2012

Charla en Drupal Sevilla: Contribuyendo a Drupal

El pasado miércoles, participé en la reunión mensual de agosto del Grupo de Sevilla en Drupal, contando mi experiencia contribuyendo a Drupal.

Revisamos los procesos de contribuir traducciones, el proceso de aprobación de themes y módulos, cómo reportar problemas, cómo contribuir un parche y cómo puedes involucrarte en el progreso de las iniciativas de Drupal 8. También hicimos un rápido repaso a qué podemos esperar de Drupal 8.

El material que usé está basado en "One Drupal 8 Slide Deck To Rule Them All" de Webchick. Para referencia, lo he subido a Slideshare: Contributing to drupal from Christian Lopez

También he guardado en Del.icio.us la colección de enlaces de referencia que estuvimos viendo.

Tags

  • Drupal
  • charlas
  • contribuyendo
  • Sevilla
Por penyaskito, 5 Agosto, 2012

OOP & PSR-0-ify gettext .po file parsing and generation

Hace un año, comenzó una refactorización de la generación y parseo de archivos Gettext .po en Drupal.

Finalmente, esa tarea se ha cerrado. Estuve colaborando con Sutharsan, ClemensTolboom, GaborHojtsy y Attiks en esta tarea en el sprint del Drupal Developer Days, y después del sprint hemos (bueno, mayormente Gábor...) conseguido completarlo y que fuera commiteado.

El nuevo diseño se parece a esto:

Gettext design

(Diagrama por Gábor Hojtsy)

Estoy muy agradecido por su ayuda en involucrarme en contribuir en la iniciativa D8MI, y espero poder contribuir en más tareas dentro del sprint D8MI. Se agradece cualquier ayuda :-)

Tags

  • D8MI
  • Drupal Core
  • Drupal
  • contribuyendo
  • commit
  • multiidioma
Por penyaskito, 14 Junio, 2012

Drupal D8MI Sprint: Día 3

Tercer día del sprint, con Peter, Clemens y yo trabajando en Gettext. Es el último día de Clemens, por lo que esperábamos hacer grandes avances :-)

El día empezó bien, y no me quedo bloqueado con tonterías como en los días previos. Seguimos con el refactoring y finalmente hemos podido eliminar core/includes/gettext.inc. ¡Bien!

Gracias a las explicaciones de Gábor hemos entendido que se espera de la API por lotes para importar archivos PO, despedazando cada archivo en múltiples tramos. Ahora creo que podremos avanzar en esto, pero quizá en otra issue ya que esta ha crecido demasiado y partirla puede ser útil. Peter ha escrito algunos tests de integración, y yo he terminado de arreglar el manejo de plurales y la limpieza de algunos métodos. Gracias Clemens por tu paciencia, ¡esperemos que podamos avanzar sin ti en los próximos días!

Tags

  • Drupal
  • D8MI
  • contribuyendo
  • sprint
  • Barcelona
  • iniciativas
  • Drupal Core
  • i18n
  • parches
Por penyaskito, 14 Junio, 2012

Drupal D8MI Sprint: Día 2

Ya fallé actualizando el blog el martes, pero al menos vaya aquí un breve resumen.

Clemens y yo seguimos trabajando en el componente Gettext en el sandbox D8MI. Estuve un poco perdido y tuvimos una llamada en Skype por la mañana en la que me explicó qué esperaba. Limpiamos código y seguimos refactorizando. Algunos commits al sandbox, pero mucho trabajo pendiente. Afortunadamente, Attiks se unió por la tarde, ¡más manos (y cerebro) en el código!

Tags

  • Drupal
  • D8MI
  • contribuyendo
  • sprint
  • Barcelona
  • iniciativas
  • Drupal Core
  • i18n
  • parches

Paginación

  • 1
  • Siguiente página
Drupal

Archivo mensual

  • Enero 2022 (1)
  • Mayo 2021 (2)
  • Abril 2021 (1)
  • Noviembre 2012 (1)
  • Septiembre 2012 (3)
  • Agosto 2012 (3)
  • Junio 2012 (6)

Contenido reciente

Reescribiendo el historial de commits de git para editar el autor y el email de commits pasados
3 years 4 months ago
Drupal JavaScript behavior para destacar líneas de pedido editadas en el carrito de Drupal Commerce
3 years 11 months ago
Analizando el rendimiento de Drupal, WordPress o cualquier aplicación php con DDEV, XHProf y XHGui
4 years ago

Comentarios recientes

I would recommend taking a…
1 year 8 months ago
This looks interesting
1 year 9 months ago
Thanks for the comment
3 years 11 months ago

Blogs que sigo

  • Mateu Aguiló "e0ipso"
  • Gábor Hojtsy
  • Pedro Cambra
  • The Russian Lullaby, davidjguru
  • Can It Be All So Simple
  • Maria Arias de Reyna "Délawen"
  • Matt Glaman
  • Daniel Wehner
  • Jacob Rockowitz
  • Wim Leers
  • Dries Buytaert
Syndicate

Pie de página

  • Drupal.org
  • LinkedIn
  • GitHub
  • Mastodon
  • Twitter
Funciona con Drupal