miércoles, noviembre 26, 2008

Aprendiendo sobre Rhino Mocks y StructureMap

En el proyecto nuevo que estoy realizando en Avanzis estoy intentando poner en práctica las buenas prácticas que voy aprendiendo.

En mi blog de la empresa he publicado dos artículos que tienen que ver con inyección de dependencias (dependency injection) y mocking que os pueden resultar interesantes.

Primeros pasos con StructureMap y la Inyección de Dependencias

y

Utilizar Rhino Mocks y StructureMap en pruebas unitarias con NUnit

Os recomiendo leerlos en ese orden.

Saludos!

viernes, julio 04, 2008

Mi nuevo blog en Avanzis

!Por fin tenemos un blog en Avanzis!

A partir comenzaré a publicar algunos de mis avances en programación, ideas sobre la Web 2.0 y negocios, en esta dirección:

http://www.avanzis.com/blogs/richard-chamorro

Os invito a que lo visitéis ya que tiene algunos artículos sobre programación que os pueden resultar interesantes. Por ejemplo mi último pequeño, pero importante, descubrimiento:

Cómo ignorar los acentos en SQL Server

¡Hasta pronto!

jueves, abril 10, 2008

Mejorar rendimiento y reducir consumo de Memoria en Vista

2GB de memoria no son suficientes para desarrollar en Visual Studio y tener Aero de Vista activado.

Me he decidido a desactivar Aero, y aquí por si alguien más necesita hacerlo:

  • Panel de control > Sistema y mantenimiento > Información y herramientas de rendimiento
  • En la parte derecha, seleccionar: "Ajustar efectos visuales"
  • Desactivar la casilla "Habilitar la composición de escritorio".
  • Y pulsar sobre "Aceptar".

Ahora Vista parecerá un poco más feo, pero en mi caso el proceso dwm.exe ha pasado de consumir 86MB a consumir 4MB.

Merece la pena.

Saludos,

Richard

lunes, abril 07, 2008

TryToGetValue en diccionarios genéricos

Hasta ahora casi siempre que quería obtener el valor de en un diccionario para una cierta palabra clave, primero hacía la comprobación de que esa palabra clave existe para evitar que se lanzaran excepciones.

Un ejemplo sin mucho sentido::

Dictionary<string, int> values = 
                new Dictionary<string, int>();  

string key = "clave"
int value = 0;

if (values.ContainsKey(key))  
    value = values[key];  

Si no se hace esta comprobación y se intenta acceder a un elemento de la colección que no existe, lanzará una excepción.

Navegando entre las propiedades de una colección genérica he encontrado por casualidad el método "TryToGetValue()" que puede ayudar a tener un código más elegante ya que no hace falta comprobar cada vez si el índice existe.

Dictionary<string, int> values =
                new Dictionary<string, int>();   

string key = "clave";  
int value = 0

value.TryToGetValue(key, out value);

Saludos!

Richard.

viernes, marzo 14, 2008

Cómo hacer que el Url Rewriting en IIS 7 funcione como en IIS 6

Comenzamos a probar nuestras aplicaciones con IIS 7 y me he llevado una alegría al comprobar que por fin se pueden configurar y ejecutar múltiples sitios web en Window Vista.

De acuerdo, eso está muy bien, pero ahora tengo que conseguir configurar el IIS 7 para que funcione la redirección de URLs que tenemos programado en ASP.NET.

Por suerte no he sido el primero:

http://www.improve.dk/blog/2006/12/11/making-url-rewriting-on-iis7-work-like-iis6

Mark Rasmussen nos explica paso a paso cómo lo ha configurado y los errores que se ha encontrado por el camino. ¡Gracias Mark!

martes, febrero 12, 2008

Múltiples sitios web en una solución de Visual Studio 2008

Cuando tienes en una solución que contiene varios proyectos web y quieres depurar, Visual Studio 2008 por defecto te abre un servidor web para cada uno de ellos.

Esto resulta muy incómodo cuando sólo quieres depurar un único proyecto. Para cambiar ese comportamiento y que sólo arranque el servidor web que estás depurando, tienes tienes que seleccionar cada uno de los otros proyectos y en sus propiedades (las que salen generalmente abajo a la derecha, pulsando la tecla F4), cambiar "Always Start When Debugging" a "False".

lunes, septiembre 24, 2007

Utilizando 'sp_msforeachdb'

Hoy quería hacer una consulta en más de 20 bases de datos de forma simultánea de un servidor SQL.

Una opción era abrir cada una de las bases de datos, crear una nueva consulta, y ejecutarla para ver los resultados. Bueno, no es demasiado trabajo, pero ¿y si quiero modificar los parámetros de la consulta? Demasiado trabajo.

Por suerte, SQL Server 2005 (y no sé si el 2000 y anteriores) tiene un procedimiento almacenado no documentado que te permite ejecutar una consulta para todas las bases de datos de un servidor.

sp_msforeachdb

Aquí tenéis un ejemplo de utilización que además comprueba que la tabla de la base datos que voy a consultar exista para evitar errores:

exec sp_msforeachdb 'use [?];
if Exists(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='
'BASE TABLE'' AND TABLE_NAME=''nombre_de_tabla'')
BEGIN
select '
'?'' as DatabaseName, * from nombre_de_tabla;
END;'



El signo de interrogación se sustituye de forma automática por el nombre de la base de datos en la que se está ejecutando la instrucción.


Espero que os resulte tan útil como a mí.


¡Hasta pronto!