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!

miércoles, 24 de noviembre de 2010

OPENCoffee creciendo en silencio!

En este post quiero contarles acerca del estado de OPENCoffee, para el que no sepa es una aplicación cliente-servidor realizada en Python y PyQt con el objetivo de administrar "cyber cafes", pero no se limita a esto ya que es capaz de administrar cualquier tipo de red en donde se encuentre un "server" monitoreando los "clientes", como por ejemplo, universidades, colegios, sector público, empresas, etc.
Al día de hoy se nos hace casi imposible poder dedicarnos full-time a OPENCoffee por razones obvias! y esto lleva a que la aplicación crezca "en silencio", cabe aclarar que somos 2 personas realmente las que aportamos código.
Al día de hoy OC está en un 90% listo para tener una release funcional y con buenas caracteristicas.
Voy a mostrarles algunas capturas de pantallas para que vean como va creciendo la aplicación y obviamente dejo la invitacion abierta para aquel que quiera unirse al team de desarrollo, no es necesario que sean unos hackers de Python y/o PyQt ya que le podemos dar una mano en eso, pero obviamente es un plus ;).
Aca van los screen!




lunes, 22 de noviembre de 2010

Visor de Simbolos en NINJA-IDE!

Para los que no sepan formo parte del equipo que desarrolla NINJA-IDE (un IDE para python hecho en python con la ayuda de la libreria PyQt binding de Qt para python), para más info www.ninja-ide.org.ar.
Llevamos poco tiempo de desarrollo pero realmente el avance que hemos tenido es muy bueno, al punto que estamos desarrollando NINJA-IDE en NINJA-IDE y continuamente agregamos nuevas funcionalidades.
Hay que agradecer a la comunidad por el buen feedback que estamos teniendo ya sea aportando ideas, reportando bug o simplemente alentando al desarrollo.
Bueno, hecha la introducción vamos al centro del post.
Hace unos días que me hice cargo de la tarea de crear el Visor de simbolos, que nos permite visualizar y navegar los Symbols (clases, atributos, métodos, funciones, etc) que contiene el archivo actual.
Para el desarrollo del visor utilicé la libreria de refactoring ROPE que la verdad tiene cosas interesantes, debido a la poca documentacion, tuve que ponerme a leer el código y los unittest de rope antes de ver por donde arrancar, el esfuerzo valio la pena.
El visor ya esta incluido en NINJA-IDE desde anoche. Se agregadon dos shortcuts   "ALT+1" para navegar los archivos del proyecto  y "ALT+2" para movernos a los symbols.
Para los impacientes, aca les dejo dos capturas, una del visor y otra de como queda funcionando en el IDE.


domingo, 21 de noviembre de 2010

Inagurando el blog



Hoy finalmente me decidí a abrir mi blog. La idea es escribir sobre distintos temas referidos a informática, programación, seguridadm algoritmos, etc.  Con el tiempo voy a ir posteando sobre los proyectos que me interesan y las cosas que me parezcan interesantes.