Eclipse: ¿qué plugins recomiendan?

Desde que dejé el trabajo, mis actividades han cambiado lo suficiente como para no haber escrito casi nada en el blog. Es decir, si antes pasaba gran parte del tiempo viendo y escribiendo código en C# o PHP, desde hace algún tiempo he tenido que volver a usar java -- un lenguaje al que al principio me costó volver a adaptarme debido a ciertas diferencias y peculiaridades que este último tiene (ejm. generics).

Cuando utilizaba C#, la herramienta más efectiva para programar en ese lenguaje, en mi opinión porsupuesto, era la combinación de Visual Studio y Resharper. Actualmente, cada vez que ejecuto Eclipse, algo que sin duda extraño de esa época, es esa facilidad de hacer las cosas en el menor tiempo posible.

Es por eso que me gustaría que aquellos que utilicen Eclipse me regalen un poco de su tiempo para recomendarme algún plugin. Plugins que por ejemplo agreguen más opciones para hacer refactoring, para la navegación y lectura de un proyecto existente de manera un poco más efectiva o que en general permitan trabajar un poco más rápido.

¿Cómo reducir el consumo de memoria de algunos plugins de WordPress?

Uno de los problemas derivados del uso de plugins en WordPress es el consumo de memoria, el cual es proporcional al número de plugins activos o más específicamente al número de líneas de código que el interprete de PHP tiene que cargar y ejecutar en cada petición.

Una forma para lidiar con este problema en determinados plugins es separar la definición de éstos (añadir filtros, acciones, etc) del código que implementa su funcionalidad, de este modo podemos cargar el código sólo si se cumplen ciertas condiciones.

Como ejemplo, voy a tomar el popular Google XML Sitemaps que con sólo activarlo aumenta unos 600 KB el consumo de memoria anterior y dada las características de este plugin, solamente debería ejecutarse cuando se genera o modifica contenido. Este proceso es relativamente sencillo:

  • Crear un nuevo archivo en el mismo directorio del plugin anterior. Para el ejemplo lo llamaremos sitemap_plugin.php.
  • Ubicar y mover los metadatos (nombre y datos del autor) del plugin al nuevo archivo. Para el ejemplo movemos las líneas 30 a 37 de sitemap.php:
    php:
    <?php
    /*
     Plugin Name: Google XML Sitemaps
     Plugin URI: http://www.arnebrachhold.de/redir/sitemap-home/
     Description: This plugin will generate a sitemaps.org compatible sitemap of your WordPress blog which is supported by Ask.com, Google, MSN Search and YAHOO. <a href="options-general.php?page=sitemap.php">Configuration Page</a>
     Version: 3.0
     Author: Arne Brachhold
     Author URI: http://www.arnebrachhold.de/
     */

    ?>
  • A continuación se debe indentificar y mover la parde donde se "registran" los filtros y acciones (add_filter, add_action, etc.) que hacen que el plugin sea invocado. Para el ejemplo, esta parte se encuentra en las líneas 3652 a 3656 de sitemap.php, lugar donde se invoca al método Enable de la clase GoogleSitemapGenerator:
    php:
    <?php
    /*
     Plugin Name: Google XML Sitemaps
     Plugin URI: http://www.arnebrachhold.de/redir/sitemap-home/
     Description: This plugin will generate a sitemaps.org compatible sitemap of your WordPress blog which is supported by Ask.com, Google, MSN Search and YAHOO. <a href="options-general.php?page=sitemap.php">Configuration Page</a>
     Version: 3.0
     Author: Arne Brachhold
     Author URI: http://www.arnebrachhold.de/
     */


    if(defined('ABSPATH') && defined('WPINC')) {   
            if ( is_admin() || defined('XMLRPC_REQUEST') && constant('XMLRPC_REQUEST') && !empty($HTTP_RAW_POST_DATA) ) {
                    require_once(dirname(__FILE__) . '/sitemap.php');
                    add_action("init", array("GoogleSitemapGenerator","Enable"), 1000,0);
            }
    }
    ?>

    La condición de la línea 12 sirve para filtrar el tipo de peticiones que llegan al blog, en otras palabras el plugin sólo se cargará si entramos a la parte de administración* o se hace una petición a través de XMLRPC.

  • Desactivar y volver a activar el plugin una vez hecho los cambios.

Con este simple cambio hecho sobre el plugin Google XML Sitemaps se reduce el consumo de memoria para la mayoría de peticiones que se realizan sobre un blog, sin embargo, sacrificando un poco de funcionalidad todavía se puede optimizar un poco más usando WP-Cron.

*: En realidad el método is_admin() sólo verifica que la URL contenga wp-admin/, no necesariamente significa que estamos en el panel de administración.

Nueva actualización: WordPress 2.3

Luego de pedir que me habilitaran el acceso por SSH y poner la página de mantenimiento del blog por unas horas, finalmente terminé de modificar algunos plugins y parte de los temas que uso para que sean compatibles con WordPress 2.3, pero esta vez, para facilitar las actualizaciones futuras, estoy usando una rama del servidor de control de versiones de WordPress. 😉

El proceso de actualización es -- como siempre -- simple y por suerte para mi, los temas y casi todos los plugins que uso eran compatibles con WordPress 2.3, sólo tuve que agregar cierta funcionalidad al plugin "All in One SEO Pack".

Si notan algo raro y tienen algo de tiempo para reportarlo, les agradezco de antemano su colaboración. 🙂