Archivo de la categoría: Trucos

¿Cómo saber si se ha registrado una DLL?

El registro de dlls (a través de regsvr32) no es algo declarativo, es procedural. Una dll no ofrece información sobre las cosas que tienen que ocurrir cuando se instala. Una dll simplemente proporciona dos funciones para que regsvr32 pueda llamar, una para registrarla (DllRegisterServer) y otra para desregistrarla (DllUnregisterServer). Sigue leyendo

Extensión de Visual Studio: Web Essentials de Mads Kristensen

Visual Studio 2010 es muy extensible y ha permitido a mucha gente del equipo a que prueben nuevas caracteríticas para del desarrollo web sin tener que recompilar Visual Studio. Una de esas extensiones es "Web Essentials" que ha hecho Mads Kristensen. Mads es el que se encarga de las herramientas de HTML5 y CSS3 en nuestro equipo. Sigue leyendo

Mejora tu código, código, código (III)

Continuamos con la mini serie sobre análisis estático de código con el último post de la serie.

Aquí tenéis el enlace al primero y al segundo.

Y es que en los anteriores post no hemos visto el trato con el código heredado o legacy code (ese gran hijo de ...). Y es que es un handicap muy común en nuestro día a día.

Si este código heredado no tiene contratos, vamos a obtener algunos warnings molestos del Static Checker. Sin embargo, la API de Code Contracts nos ofrece un pequeño workarround sobre esto.

Básicamente, este tipo de warnings son debidos a la falta de información - el Checker no es capaz de encontrar la información necesaria. Sin embargo, podemos dar algunos detalles.

Vamos a mirar el siguiente código:

Código con un Warning

Código con un Warning

El checker nos avisa de una posible referencia nula. Aparentemente la variable context está siendo usada sin haber sido inicializada. ¿Quién es el responsable del warning, el Checker u otra cosa?

En este caso, el aviso lo está dando ReSharper, cuyo motor de análisis identifica una posible referencia nula. ¿Pero porqué no nos lo da el Checker?, la respuesta es por la línea:

Contract.Assume(context!=null);

Y es que con esa línea le estamos diciendo al Checker que la variable context nunca va a ser nula. El Checker confía en nosotros y añade esa información a sus procesos. Resharper no ofrece soporte completo a los contratos de .NET, de ahí el aviso. Sin embargo, ReSharper soporta su propio sistema de anotaciones que podéis usar de la misma manera. Si queréis ver más detalles pasáos por aquí.

Uso óptimo del análisis estático de código.

El análisis estático es complejo, y no suele ser una ciencia exacta. Suele ocurrir que rellenamos nuestro código con información de contratos con la mejor intención, sólo para hacer que el tiempo de compilación se dispare. Para esto hay un par de soluciones que podríamos tomar para optimizar el uso de contratos y los análisis siguientes.

La primera es crear una configuración de compilación especial y habilitar las comprobaciones sólo en esa configuración. Compilamos en esa configuración de vez en cuando para obtener información, la corregimos los posibles problemas y continuamos trabajando sin el análisis estático.

La segunda es probar a usar contratos poco a poco. Aplicamos contratos de manera extensiva en el código, pero deshabilitamos los contratos a nivel de assembly. Esto lo asemos añadiendo el siguiente atributo en las propiedades del assembly:

[assembly:ContractVerification(false)]

Lo siguiente, es re-habilitar el checkeo de contratos sólo cuando estemos centrados en clases, métodos o assemblies.

Aviso

El análisis estático de código es una técnica que intenta evaluar el correcto funcionamiento de vuestro código sin ejecutarlo. Hay algunas herramientas que hacen esto. La primera es el compilador, otra es el Static Checker - un ejecutable que se integra en el proceso de compilación. En .NET, una herramienta especial aprende desde los contratos que tengáis, evalúa la información y nos muestra posibles errores y violaciones de contratos.

En el momento en el que la complejidad aumenta continuamente y el equipo de desarrollo se va quedando sin tiempo, integrar este tipo de herramientas salva algún tiempo de compilación, pero más importante, nos protege de errores feos en nuestro software.

 

Juan María Laó Ramos.

Imagen de la configuración de static checker

Mejora tu código, código, código (II)

Hace dos días vimos una pequeña introducción sobre las herramientas de análisis estático de código.

Hoy vamos a ver un poco lo que ofrece Visual Studio 2010 y .NET 4 junto a la herramienta Static Checker  creada por el equipo de Contratos de código. Sigue leyendo

Mejora tu código, código, código

Pasa muchas veces, que cuando le enseñas a alguien tu código te quedas con cara de tonto. A mi me pasa mucho, y aún sabiendo que tengo herramientas disponibles para evitarlo en gran medida. Estoy hablando de las herramientas de análisis estático de código.

Cada vez son más las herramientas disponibles. Incluso la última versión del compilador de C# busca violaciones del principio de Liskov, sin embargo no lo califica como un error sino como sólo un warning.

Visual Studio 2010 viene con una nueva característica de análisis de código que podemos usar para realizar un análisis más profundo y evitar sonrojarnos cuando enseñamos nuestro código:

Opciones de Visual Studio 2010

Opciones de Visual Studio 2010

Incluso se pueden establecer y personalizar las reglas que queremos cumplir:

Warnings de VS 2010

Warnings de VS 2010

Estas herramientas nos ofrecen avisos sólo cuando se incumplen estas reglas. Incumplir una regla no significa que haya un bug, sólo indica que hay un posible bug y es mejor hecharle un vistazo sin esperar a que aparezca Murphy por ahí diciéndonos: "te lo dije, si algo puede fallar, fallará".

Espero que os sirva, y a mi también.

Juan María Laó Ramos.

Truco: Resolver problemas comunes de SEO usando la extensión URL Rewrite

Search Engine Optimization (SEO) es importante para cualquier web que quiera publicitarse. Un porcentajo muy alto que llega a los sitios viene directamente de motores de búsqueda, y mejorar la relevancia de tu sitio en esos motores hará que más usuarios visiten tu sitio desde los buscadores. Esto puede aumentar directa o indirectamente los beneficios que recibas por tu sitio web.
En el post de hoy veremos cómo podemos usar el componente gratuito URL Rewrite Extension que corrije un montón de problemas SEO que tu sitio puede tener. Se tarda menos de 15 minutos (no hace falta tocar el código) para aplicar 4 simples reglas de URL Rewrite a tu sitio, y sólo por hacerlo hará que los motores de búsqueda dirigan más visitantes y tráfico a tu sitio. Las técnicas que vamos a ver funcionan tanto para ASP.NET Web Forms como ASP.NET MVC. También funciona con todas las versiones de ASP
[Además del blog podéis seguir a Scott en twitter: twitter.com/scottgu]
Sigue leyendo

Truco: Aumentar el tamaño de las ventanas de VS eliminado la barra de navegación HTML.

Aquí tenéis un truco que puse en twitter hace poco. Varias personas se interesaron mucho - así que he decidido postearlo aquí.

Barra de navegacion HTMl en VS 2008

Por defecto, cuando estamos editando un documento HTML en VS 2008 y en VS Web Developer 2008 Express hay un conjunto de desplegable que se renderizan inmediatamente en el editor HTML: Sigue leyendo

Trucos: Creando un método de extensión ToJSON() con .NET 3.5

A comienzos de año escribí sobre una nueva característica de C# y VB llamada "Métodos de extensión".

Los métodos de extensión permiten a los desarrolladores añadir métodos a los contratos públicos de tipos del CLR existentes, sin tener que crear subclases o recompilar el tipo original. Con esto se nos presentan un montón de nuevos escenarios (incluso en LINQ). También nos dan una forma muy conveniente de añadir un poco de azúcar sintáctico a nuestro código. Sigue leyendo

Trucos: Opciones de Desarrollo, QA, Staging, y Producción en el web.config con VS 2005

Una de las cosas que me suelen preguntar muy a menudo es: "¿cómo puedo cambiar fácilmente opciones de configuración desde el web.config cuando para indicar si está en desarrollo, en QA, staging o en producción?" El escenario más común para esto es cuando una aplicación usa diferentes cadenas de conexión a bases de datos para testing y producción. Sigue leyendo

Firefox, Visual Studio 2005 y Windows Vista

Llevo tiempo peleándome con el pequeño servidor que trae VS 2005 para hacer pruebas con páginas ASP.NET en local. El problema que tenemos los desarrolladore web es el de siempre, que si no se ve bien en Firefox e IE, etc, etc. Típica discusión cuando no se hacen las cosas bien con los estilos CSS. Afortunadamente estoy aprendiendo un poco y le voy cogiendo el truco. Sigue leyendo

Parche público para problema de rendimiento debugeando ASP.NET en VS 2005

En el último año hemos tenido varias incidencias sobre problemas de rendimiento cuando se debugean aplicaciones ASP.NET 2.0 con Visual Studio 2005. El problema en estos casos no suele ser construir el proyecto, sino que algunas veces el debugger tarda mucho tiempo en llegar al primer breakpoint una vez se ha lanzado la aplicacion (unos 45 segundos y algunas veces más). Sigue leyendo