viernes, 3 de diciembre de 2010

PyPlugin aplicaciones con plugins de forma simple y sin dolor!

Una aplicación que soporta plugins sin dudas tiene un agregado importante, ya que por medio de los plugins podemos hacer que haga distintas actividades inclusive algunas para la cual la aplicación no fue pensada. Por otro lado los plugins permiten atraer programadores a nuestros proyectos ya que es más fácil aprender como hacer un plugin que aprender como funciona el núcleo de la aplicación para poder modificarla.
Como desarrolladores muchas veces nos encontramos que queremos ser capaces de tener nuestro motor de plugins pero chocamos con la pared al ver que debemos dedicarle mucho tiempo al motor de plugin y esto nos aleja de que la aplicación avance en su objetivo principal.
Por lo dicho arriba dedique mi tiempo a escribir una libreria llamada PyPlugin desarrollada en python bajo licencia GPL, PyPlugin permite que nuestras aplicaciones (python) soporten plugins desde el principio!. Se encarga de hacer el trabajo pesado, nosotros solo debemos escribir plugins.
PyPlugin basicamente agrega una capa de comunicación entre la aplicación y los plugins.
En otro post voy a hablar de los detalles técnicos de PyPlugin.
PyPlugin se compone de dos clases importantes para nosotros PyPluginManager y PyBasePlugin.
PyPluginManager es el encargado de buscar los plugins por nosotros, llevarlos a memoria, bajarlos de memoria y todas las tareas "administrativas".
PyBasePlugin es nuestra clase base para crear plugins.
Veamos un ejemplo de PyPlugin en acción.

Escribamos un plugin


from pyplugin import plugin
class MiPrimerPlugin(plugin.PyBasePlugin):
def get_info(self):
return "Soy un plugin que saluda"
def do_work(self):
return "Hola Mundo de los plugins!"


Ahora manejemos los plugins

from pyplugin import plugin_manager
folders = ('mis_plugins',)
plugin_manager = plugin_manager.PyPluginManager(folders)
#Cantidad de plugin
print "Cantidad ( %s )" % len(plugin_manager)
#No hay plugins entonces busquemos
plugin_manager.discover()
print "Cantidad ( %s )" % len(plugin_manager)
#Recorramos los plugins
for plug_name in plugin_manager:
print "Plugin ( %s )" % plug_name
#Existe "plugin_magico"?
'plugin_magico' in plugin_manager
#Hagamos que los plugins hagan algo
for plugin_name in plugin_manager:
plugin_manager[plugin_name].do_work()

miércoles, 1 de diciembre de 2010

NINJA-IDE ganador del premio!

Antes que nada agradezco a todos los que dieron su voto a NINJA-IDE en
los premio de portal programas

NINJA-IDE estuvo postulado en dos categorias y obtuvo los siguientes puestos:
1° Puesto en la categoria "Software que necesita más donaciones"(Premio otorgado al proyecto con mayores expectativas de crecimiento al obtener esta donación.)
3° Puesto en la categoria "Mejor software libre"(quedamos debajo de los grandes Firefox y Gimp, asi que no nos quejamos!!)

Los resultados fueron excelentes y sorpresivos!. Nuevamente agradezco a todos los que hicieron esto posible! este premio es un incentivo importantisimo que nos da muchas más ganas de continuar haciendo lo que nos gusta NINJA-IDE.
Esperemos que podamos liberar la version 1.0 como esta pautada para el 22 de Enero del 2011.
Saludos!