JASoft.org

Cómo depurar el evento Application_End en ASP.NET

Cómo depurar el evento Application_End en ASP.NET
El evento Application_End se desata en una aplicación Web cuando ésta termina por cualquier motivo, aunque sea para reiniciarse. Escribimos un gestor de este evento dentro de Global.asax en el que incluimos cualquier tipo de código que se encargará de dejar en el estado correcto cualquier recurso global que hayamos inicializado en el evento complementario que se lanza cuando arranca la aplicación: Application_Start. Esto es válido tanto para aplicaciones Web Forms como MVC. El código que pongamos en estos eventos se lanzará únicamente cuando se arranque y se detenga la aplicación. Si queremos depurarlo desde Visual Studio, usando el servidor de desarrollo (que es lo habitual), la cosa tiene algo de truco. El problema es que no es tan fácil conseguir que se cierre la aplicación y que puedas depurarlo al mismo tiempo. Al contrario de lo que muchos programadores se piensan, cerrar el navegador no detiene la aplicación, que sigue activa por detrás, sólo cierras la sesión actual del u... [Más]

Cómo gestionar variables de sesión como un PRO

Cómo gestionar variables de sesión como un PRO
A la hora de trabajar con sesiones en C#, el mayor problema es que, al contrario que en VB, no se facilita el manejo directo de los valores como si fueran propiedades del objeto Session ni se transforman al tipo correcto para hacer operaciones como Session("Contador")++ y similares. Además, adicionalmente, hay que comprobar que las variables existan antes de poder hacer todas estas operaciones. Por ejemplo, si queremos trabajar con una cadena de texto en sesión y poder asignarle un valor, se trata de algo tan sencillo como lo es en VB ya que sólo debes asignarla directamente, así: 1: Session["TextoAGuardar"] = "Este es el texto que quiero almacenar"; Sin embargo si lo necesitamos es realizar una operación matemática es un poco más lioso ya que deberemos comprobar primero que la variable existe y contiene un valor, y ademas convertirla desde "object" que es lo que devuelve por defecto una variable de sesión, al tipo correc... [Más]

Rendimientos de carga de páginas: los conceptos “Wall Time” y “CPU Time”

Rendimientos de carga de páginas: los conceptos “Wall Time” y “CPU Time”
Esta época, entre otras muchas otras cosas, estoy trabajando en un nuevo libro de JavaScript que verá la luz en los próximos meses. Uno de los capítulos se centra en la depuración de código JavaScript usando las herramientas que ofrecen de serie los navegadores. Entre éstas, una muy interesante es el “Profiler”, disponible tanto en Chrome como en Internet Explorer, y en Firefox a través de Firebug. El profiler tiene varias sub-herramientas, como el analizador de tiempos de ejecución que nos permite obtener información detallada y estadísticas sobre los tiempos de ejecución de nuestra página, y sobre sus consumos de memoria, identificando así posibles cuellos de botella, funciones poco optimizadas, etc... E incluso bugs en el motor de renderizado de las páginas (Se han dado casos). En el libro me estoy centrando en las herramientas de desarrollo de Google Chrome, y... [Más]

Hackeando los validadores de ASP.NET

Hackeando los validadores de ASP.NET
ASP.NET Web Forms ofrece unos maravillosos controles de validación que nos permiten controlar los valores de los campos de un formulario tanto en el navegador como luego en el servidor. Así, basta con arrastrar unos cuantos controles sobre la página para validar campos obligatorios, rangos de valores, expresiones regulares, tipos de datos introducidos, etc... Incluso podemos definir nuestras validaciones personalizadas, si bien esto requiere mucho más esfuerzo por nuestra parte. Estos controles están muy bien pero, en el lado de cliente (navegador), se limitan a mostrar mensajes cuando falla alguna validación: Los mensajes podemos agruparlos en un control de resumen y cambiar el estilo que utilizan, pero no nos permiten apenas configuración del lado cliente. ¿Qué pasa si lo que necesitamos es tener mayor control sobre lo que ocurre en el navegador durante la validación? ¿Podemos hacer algo sin complicarnos demasiado la vida? Por ejemplo, un caso muy típico es querer destacar los ... [Más]

Instancias de SQL Server: ¿qué son y para qué sirven?

Instancias de SQL Server: ¿qué son y para qué sirven?
Cuando instalas SQL Server se te pide que otorgues un nombre a la instancia que estás instalando. Y cuando te conectas desde una aplicación o con el SQL Server Management Studio (SSMS) también lo haces a una instancia determinada de SQL Server. Es tan común que todos lo damos por hecho, pero realmente ¿cuántos saben qué es una instancia de SQL Server y cuál es su utilidad?. Bien, en SQL Server es posible ejecutar varias copias del servidor de datos al mismo tiempo, con sus usuarios, bases de datos y demás elementos independientes unos de otros. A cada una de esas copias se le llama “instancia”. Lo que tenemos con las instancias son varios SQL Server ejecutándose en paralelo en la misma máquina. El límite es de 50 de instancias por cada máquina. Existen dos tipos de instancias: Las instancias con nombre: se accede usando una barra inclinada hacia la izquierda seguida del nombre de la instancia, que es la forma de identificarlas. Por ejemplo: (local)\Instancia, .\Instancia, localho... [Más]

Los selectores CSS se procesan de derecha a izquierda (y por qué eso te debe importar)

Los selectores CSS se procesan de derecha a izquierda (y por qué eso te debe importar)
Las hojas de estilo en cascada o CSS son indispensables en cualquier aplicación Web no trivial. Nos permiten definir el estilo visual (e incluso el comportamiento) que mostrarán los diferentes elementos de contenido de una página o aplicación Web. Sin ellas serían imposibles la separación entre contenido y visualización o la adaptación de un mismo diseño de página a diferentes dispositivos. Todos estamos acostumbrados a escribir CSS con sus diversas combinaciones de selectores, y cuando adquieren su verdadera potencia es, precisamente, al combinar las definiciones de selectores para poder asignar estilos con mucha exactitud. Por ejemplo, imaginemos que tenemos una página con multitud de listas no ordenadas (por ejemplo colecciones de recursos en Internet) y queremos darle un estilo particular a los elementos de determinadas de estas listas. Podríamos especificar un selector como este: 1: .recurs... [Más]

Instalar Chrome en Linux Mint 12

Instalar Chrome en Linux Mint 12
Desde que Ubuntu empezó a hacer el tonto con la interfaz Unity y desde que la actualización a su última versión me ha dejado sin ratón ni forma (aparentemente) de hacer que vuelva a funcionar, estoy usando Linux Mint 12 para juguetear con Linux (y sobre todo con Mono). La verdad es que tenía que haberme cambiado hace ya tres versiones, desde que Ubuntu estrenó la apestosa interfaz Unity. Mint va de maravilla, tiene tanto software como Ubuntu y es incluso más sencillo de instalar y configurar. Sin embargo no está exento de problemas. Por ejemplo, como me niego a usar Firefox salvo para probar las aplicaciones, la mejor opción es usar Google Chrome. El problema es que te bajas el paquete de instalación para Debian y no te funciona, diciéndote todo el rato algo como esto cuando le haces doble-clic: “No se puede abrir google-chrome-stable_current_i386.deb. TEl paquete debe estar corrupto o no tienes permisos para abrir el archivo. Comprueba los permisos del archivo” Sin embargo el pa... [Más]

SQL Server: enviar automáticamente los resultados de una consulta por email

SQL Server: enviar automáticamente los resultados de una consulta por email
Hoy tuve que montar un sistema sencillo para poder enviar de manera periódica, en formato CSV, una serie de datos a unos usuarios. Los datos se obtienen a partir de una consulta más o menos compleja a una base de datos SQL Server. Lo que necesitaba era que los resultados de esa consulta, una vez a la semana, se enviaran por email a un usuario para que pudiera abrirlos en una Excel y trabajar con ellos. Para conseguirlo no quería programar ni tampoco crear ningún paquete de integración específico ni hacer nada complicado. Lo único que necesitaba era definir la consulta, el formato y el destinatario. Punto. Mala suerte: en SQL Server no hay nada incluido nativamente que nos permita conseguir algo así de manera tan directa, lo cual no deja de ser una pequeña vergüenza porque realmente es algo habitual y deberían facilitarlo un poco ¿verdad? Así que tuve que improvisar y buscar una manera de conseguirlo sin complicarme demasiado la vida. A continuación os cuento el método que se me ocu... [Más]

¡campusMVP en inglés!

¡campusMVP en inglés!
Como seguramente muchos de los lectores de este blog sabéis, tenemos un estupendo proyecto de formación on-line sobre tecnologías Microsoft llamado campusMVP. A través de él conocidos MVPs y personalidades de este mundillo ofrecen cursos on-line tutelados sobre tecnologías de Microsoft para desarrolladores. Llevamos trabajando con campusMVP en España y -en menor medida- Latinoamérica, desde el año 2005, es decir, los últimos 7 años. Además desde 2007 tenemos una editorial técnica complementaria con libros sobre las últimas tecnologías. Además de en España, ya llevamos vendiendo libros en el mercado de EEUU durante casi dos años, y la verdad es que nuestros libros funcionan muy bien allí. Nuestra metodología a la hora de crear e impartir los cursos así como la orientación al aprendizaje práctico, consiguen que un porcentaje altísimo de los alumnos nos valoren muy bien (el 87% el año pasado nos han puesto un 4 o 5 sobre 5), y que la mayoría tarde o temprano se formen de nuevo con nos... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico