viernes, 30 de septiembre de 2011

ASP.NET Comprimido

Hace años, hacer una aplicación web que se viera bonita y dianámica era casi imposible. En estos días, los controles Ajax y los controles JQuery hacen que las paginas web se vean cada vez mas bonitas. Pero esto tiene un precio.

La cantidad de .js y .css de una pagina web pueden igualar, cuidado si no superar, el tamaño del HTML de la misma. Si el ancho de banda es un problema, nuestro sitio web puede durar una eternidad en cargar.

Para esto hay ya dos soluciones:

Comprimir los archivos de las aplicaciones
En ambientes Windows, desde el IIS 6.0 el contenido puede ser comprimido por el mismo servidor. Solamente en propiedades del sitio web, seleccionen Servicios y marquen la compresión.

IIS 7.0 también tiene lo suyo para la compresión, tanto de los archivos estáticos (imagenes, documentos) como de los dinámicos (paginas ASPX).

Comprimir el HTML en nuestra aplicación
Sin embargo también podemos programar nuestra aplicación .net para que automáticamente comprima el contenido de las paginas .aspx que envía. Esto se hace a través de un httpModule (mas información lean aquí). Este modulo o clase (que pueden descargar aquí), la agregan a su proyecto y modifican el web.config para que la use (Claro, este modulo solo comprime el HTML enviado al browser, no los archivos adjuntos).

web.config:
<system.web>
  <httpModules>
    <add type="CompressionModule" name="CompressionModule" />
  </httpModules>
</system.web>

De esta manera y sin mayor costo pueden disminuir el ancho de banda de su aplicación; claro, siempre y cuando el CPU del servidor o la velocidad de la maquina cliente no sean un punto critico.

miércoles, 28 de septiembre de 2011

¿En que tabla estaba esa columna?

Alguna vez se ha preguntado eso? Sobre todo cuando comenzamos a trabajar en un proyecto muy grande y que no es nuestro! Después de buscar esto 4 veces, decidí publicarlo aquí.
Este es el SQL para buscar en que tablas esta una columna en una base de datos SQL Server

SELECT c.name AS ColName, t.name AS TableName 
FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%MyName%'
ó
SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%MyName%'
Tomado de aquí!

Just-In-Time Debugger

Para los programadores es muy incomodo que, después de instalar alguna versión de Visual Studio, cada vez que alguna aplicación genera un error nos salga la pantalla de Visual Studio Just in Time Debugger. Y el problema no es la pantalla en si misma, sino que la aplicación funciona bien (aun con el error) si el Visual Stuidio no estuviera instalado. Si se deja la ventana allí sola, la aplicación se puede usar sin problemas, pero si le das Si o No, o la cierras, la aplicación se aborta. Esto me ha impedido usar inclusive iTunes en algunas computadoras.

Me di a la tarea de investigar en Internet, pero ninguna de las soluciones que allí encontré funciono. Después de meses, la única que encontré que funciono fue esta: Getting RID of Just-In-Time debugger. Es un poco drastica, pero la verdad me ha funcionado:
  1. Si tiene un servicio llamado Visual Studio Just in Time Debugger, deténgalo 
  2. Busque el archivo llamado C:\Windows\System32\vsjitdebugger.exe y cámbiele el nombre.
Para nosotros los desarrolladores, esto no interrumpe el proceso normal de desarrollo y depuración desde el ambiente integrado. Pero si tranquiliza el saber que no vamos a volver a ver una ventana de esas. Pero ademas, cuando la necesitemos, también sabremos como recuperara.