Archive for the ‘Software’ Category

Cosas de GNOME: Instant apply

Tuesday, July 29th, 2008

Hace unas horas César envió un mail a un grupo de gente a la que le gusta discutir estas cosas. Él hacía referencia a éste post, en el que habla sobre un tema que habíamos tocado ya en una de nuestras discusiones: los diálogos de GNOME no tienen botón “Aceptar”, ni “Aplicar”, ni “Cancelar”… simplemente un “Cerrar” y listo. Vean, éste es el diálogo para configurar el proxy:

(more…)

Plantillas

Sunday, July 27th, 2008

Si usan GNOME y alguna distribución moderna, habrán visto la carpeta “Plantillas” presente en el directorio personal. ¿Para qué sirve? La verdad es que nunca me hice la pregunta, hasta que leí un post recién en Planet GNOME.

Si hacen click derecho en algún directorio y dirigen su mouse hacia “Crear un documento” verán lo siguiente:

Siempre me pareció poco útil esa opción. Ahora me doy cuenta que nunca había leído el texto gris desactivado: “No hay ninguna plantilla instalada” :)

(more…)

Zaspe# 0.1.0 released!

Thursday, July 17th, 2008

Estos días me hice un tiempo para publicar una versión un poco más usable de Zaspe#: ahora es posible generar reportes. Sin embargo la funcionalidad no es todavía muy configurable. Hay muchas mejoras que se pueden hacer, pero eso llevará tiempo.

Los reportes que se pueden realizar son de personas y asistencias (aquí y aquí tienen ejemplos). Éstos se producen en formato PDF. Lamentablemente no hay una forma de imprimir los reportes directamente, por lo que puede ser complicado para usuarios inexpertos.

Al final, estoy utilizando iTextSharp para generar los PDFs, no MonoReporter, que si bien actualmente puede generar reportes básicos, decidí por el momento utilizar algo ya hecho y maduro. Con MonoReporter (que utiliza GtkPrint) sí podría imprimir el reporte directamente, o ver previsualizaciones. Pero bueno, será algo a hacer más adelante.

(more…)

FLISOL 2008

Sunday, April 27th, 2008

Estoy Estaba escribiendo el post desde la FLISOL 2008. No estamos estábamos haciendo muchas instalaciones, pero si probando algunas cosas con los chicos, compartiendo algunos conocimientos, hablando…

Estas son algunas de las cosas interesantes que vimos:

(more…)

Un servidor web en 30 líneas de código

Sunday, March 30th, 2008

Interesante este post de Oren Eini. Es un código escrito en Boo (lenguaje tipo Python para .NET):

import System.Net
import System.IO

if argv.Length != 2:
    print "You must pass [prefix] [path] as parameters"
    return

prefix = argv[0]
path = argv[1]

if not Directory.Exists(path):
    print "Could not find ${path}"
    return

listener = HttpListener()
listener.Prefixes.Add(prefix)
listener.Start()

while true:
    context = listener.GetContext()
    file = Path.GetFileName(context.Request.RawUrl)
    fullPath = Path.Combine(path, file)
    if File.Exists(fullPath):
        context.Response.AddHeader("Content-Disposition","attachment; filename=${file}")
        bytes = File.ReadAllBytes(fullPath)
        context.Response.OutputStream.Write(bytes, 0, bytes.Length)
        context.Response.OutputStream.Flush()
        context.Response.Close()
    else:
        context.Response.StatusCode = 404
        context.Response.Close()
 

Y ejecutando el comando:

$ booi prueba.boo http://localhost:8085/ ~/Escritorio/

tenemos funcionando un webserver localmente. Me acuerdo como en una de las charlas de alguna de las jornadas Python en Santa Fe el disertante hacía algo similar. La verdad, muy útil este tipo de código.

Zaspe# 0.0.3

Thursday, March 27th, 2008

Ayer vino Sebastián a casa. Mientras tomábamos unos mates me comentó que en un evento en el que participó utilizó Zaspe#. Si si, ¡Zaspe# tiene un usuario! :P En realidad, quizá unos cuantos, ya que en la página de download del proyecto figuran 80 descargas al día de hoy. No no, no fui yo quien realizó las descargas para hacerles creer que algunas personas tienen algún tipo de interés, al parecer, de verdad lo tienen :) Quizá al probarlo se dieron cuenta de que todavía le falta bastante, si bien es posible registrar personas, eventos y llevar las asistencias. Lo más importante, que me comentaba el Seba, son los reportes, algo de lo que carece.

Esta aplicación me sirvió más a mí para aprender Gtk con Mono que al usuario que en un principio me había pedido este desarrollo.

En fin, Sebastián me mencionó algunos bugs que tenía la versión 0.0.2, de lo que era consciente, y ya estaban corregidos en trunk. Por lo tanto, decidí realizar este release. El proyecto está bastante parado, el problema, como dije, son los reportes. Hubo avances con MonoReporter, pero todavía nada suficiente como para poder generar listados de personas, de eventos, asistencias, etc.

MockObjects con Rhino.Mocks

Wednesday, February 6th, 2008

Cuando escribimos tests de unidad, intentamos testear una única funcionalidad. Esto muchas veces es bastante difícil, ya que generalmente necesitamos apoyarnos en otras clases distintas para cumplir con el propósito de la testeada, y terminamos probando, al final, otras cosas. Y si fallan estas clases “base”, a veces es difícil rastrear cuál es el error.

Por ejemplo, supongamos que tenga un método RegistrarAsistencia(int, int), que registra que la persona asistió al evento (los argumentos serían los IDs). Este método inventado, tendría como dependencia la clase ControladorPersonas y ControladorEventos, para levantar los objetos necesarios y realizar el registro. Pero esto (levantar los objetos Persona y Registro), a nosotros, no nos interesa probar en el test de unidad, sino verificar que el método RegistrarAsistencia realmente funciona, registrando que la persona asistió al evento.

Otro ejemplo podría ser algún método ImprimirFactura, que toma los datos del formulario, e imprime la factura. ¿Cómo podemos escribir un test de unidad para esto?

Una solución viene de la mano de la técnica de MockObjects, y Rhino.Mocks es un framework para .NET.

(more…)

Mono + NHibernate + SQLite

Sunday, December 30th, 2007

Después de usar por tanto tiempo Gentle.NET, un ORM que ha sido discontinuado, he decidido al fin comenzar a estudiar NHibernate. Los ejemplos que dan en los manuales y páginas son para Windows (con MS .NET) y SQL Server. Trabajando en GNU/Linux, hice las pruebas con SQLite.

El problema es que el driver utilizado por NHibernate para esta base de datos utiliza un binding desactualizado. Además Mono trae una implementación mejor, que soporta el standard ADO.NET 2.0, que es Mono.Data.Sqlite, disponible a partir de la versión 1.2.4.

El post es especialmente útil para aquellos que quieran utilizar en GNU/Linux (yo uso Ubuntu Gutsy), con Mono, NHibernate y SQLite, utilizando el binding Mono.Data.Sqlite. Si bien puede parecer esto tan fácil como seguir el documento QuickStart y cambiar las opciones correspondientes, no lo es si se intenta utilizar SQLite. Por eso, en este post no voy a explicar todas las cosas, ya que no me interesa y se pueden aprender en la documentación, sino que voy a desarrollar un ejemplo muy sencillo y mostrar cómo utilizar SQLite, ya que hay que solucionar unos problemas no muy triviales.

(more…)