Ebook gratis: diseccionando una aplicacion en C#

Esta disponible en esta URL el ebook en ingles Disecting a C# Application: SharpDevelop que les recomiendo leer. Es una muy interesante recopilacion de la experiencia que reunio el equipo de desarrollo de SharpDevelop (para quienes no lo sepan, es un entorno de desarrollo para .NET gratuito y libre), y hay bastante material para leer de las experiencias ajenas de desarrollo con estas tecnologias, en una aplicacion de un tamaño considerable.

DotText Password Hashing

Volviendo un poco a temas mas mundanos, mientras termino la configuracion de un nuevo site de weblogs con DotText, y revisando un poco el codigo, me encontre con la necesidad de cambiar un password de usuario en uno de los weblogs creados.

DotText guarda los passwords de usuario/administracion como un hash en Sql Server, asi que extraje esta parte del codigo del DotTextHelper que es la aplicacion que viene por default para crear los weblogs en la base de datos.

using System;
using System.Text;
using System.Security.Cryptography;

namespace DotTextPasswordHasher
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
			if(args.Length == 0 || args.Length > 1)
			{
				Console.WriteLine("Error: only one parameter expected, that is, the password to hash");
			}
			else
			{
				string cleanString = args[0].ToLower();
				byte[] buffer1 = new UnicodeEncoding().GetBytes(cleanString);
				byte[] buffer2 = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(buffer1);
				Console.WriteLine(BitConverter.ToString(buffer2));

			}
		}
	}
}

Pueden bajar la version compilada desde aqui.

Evaluando los riesgos en el desarrollo del software

Una de las principales tareas en el proceso de desarrollo de software es lidiar con los riesgos que aparecen ligados a todos los proyectos. Es uno de los requisitos del proceso unificado de desarrollo el tener una lista de riesgos, pero esto no significa que una vez elaborada esta lista se guarda en un cajon o se archiva en un documento de los tantos que se elaboran. Al contrario, esta lista debe servir como guia a lo largo del ciclo de vida, de manera de ir reduciendo estos riesgos en forma paulatina. Esto es, la lista de riesgos debe ocupar un lugar importante en la documentacion de soporte del proyecto, los riesgos deben ser identificados tempranamente, documentados con su descripcion, impacto, tamaño, importancia e ideas acerca de como deben reducirse. Debe haber un responsable en el equipo de trabajo que se encargue del seguimiento, y lo mas importante, los riesgos deben identificarse y enfrentarse tempranamente, reconocerlos, asumirlos y enfrentar los problemas anticipadamente.