¿Quién decís que soy yo?

Leí estos días en es.catholic.net un excelente artículo de José Luis Martín Descalzo.

El título del post hace referencia a la pregunta que Jesús le hizo una vez a sus discípulos. Pregunta que se sigue formulando hoy, y para la cual hay muchas respuestas posibles. Me quedo con éste párrafo del texto:

Y es una pregunta que urge contestar porque, si él es lo que dijo de sí mismo, si él es lo que dicen de él sus discípulos, ser hombre es algo muy distinto de lo que nos imaginamos, mucho más importante de lo que creemos. Porque si Dios ha sido hombre, se ha hecho hombre, gira toda la condición humana. Si, en cambio, él hubiera sido un embaucador o un loco, media humanidad estaría perdiendo la mitad de sus vidas.

¿Y qué cosas dijo Jesús de sí mismo? Muchas. Algunas de ellas son:

  • “Yo soy el camino, la verdad y la vida. Nadie va al Padre sino por mí.” – Juan 14,6
  • “Yo soy la luz del mundo; el que me sigue, tendrá la luz que le da vida, y nunca andará en la oscuridad.” – Juan 8,12
  • “Vengan a mí todos los que están cansados y afligidos, y yo los aliviaré” – Mateo 11,28

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

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

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! 😛 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.

La llave del saber

Ante la pregunta “¿Es Jesucristo Dios?” tenemos varias respuestas:

  • Católico: Por supuesto, Jesús es la segunda Persona de la Santísima Trinidad.
  • Judío: No, no es Dios.
  • Musulmán: No, fue un profeta como Mahoma.
  • Ateo: Dios no existe, por lo tanto Jesús no puede ser Dios.
  • Agnóstico: Puede ser, pero nosotros los hombres no podemos saber eso, no somos capaces de alcanzar la verdad.

Evidentemente no todos pueden tener razón. Si insistimos en que sí, entonces es como decir que “si” y “no” son iguales.

Interesante es la respuesta del agnóstico. Nótese que un agnóstico, ante las afirmaciones “Dios existe” y “Dios no existe” responde lo mismo: “Puede ser”. Con su “puede ser” nunca puede equivocarse, y nunca puede estar en lo cierto. Es como estar ante una pregunta de examen que nos exige responder “verdadero” o “falso”, y en lugar de analizarla bien y ver cuál es la respuesta correcta, optar por dejarla vacía.

Continuá leyendo La llave del saber

Leyendas negras

WASHINGTON D.C., 27 Ene. 07 / 04:50 pm (ACI).- Un ex espía de la KGB denunció recientemente que el Kremlin y la mencionada agencia de inteligencia rusa orquestaron una campaña en los años ‘60s contra la Iglesia Católica, en donde el principal objetivo era hacer que la gente creyera que Pío XII fue un simpatizante del régimen nazi.

La noticia es medio vieja, pero importante. Como escuché a tantos acusar a la Iglesia de apoyar a los nazis, de tener fabricas de anticonceptivos, de ser dueña de la revista Time, estar en la mafia, etc me pareció interesante postear esta.

El objetivo, según el ex espía Ion Mihai Pacepa, era “destruir a la autoridad moral del Vaticano en Europa Occidental”. “La KGB quería presentarlo como un anti-semita que había alentado el holocausto de Hitler”. Y dijo que para lograrlo la KGB quería “modificar levemente” algunos documentos originales del Vaticano, y para eso lo llamaron a él.

Como se está llevando adelante el proceso de canonización del Papa Pio XII, muchas cosas están saltando a la luz. Por ejemplo, también se lo acusaba de no oponerse a los nazis. La noticia finaliza con estas palabras del ex espía: “Al inicio de la Segunda Guerra, la primera encíclica del Papa Pío XII era tan anti-Hitler que la Real Fuera Aérea de Inglaterra dejó caer sobre Alemania 88 mil copias”.

MockObjects con Rhino.Mocks

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.

Continuá leyendo MockObjects con Rhino.Mocks