domingo, 14 de septiembre de 2014

Instalar y configurar ELMAH

Como todos sabemos el trabajo de un programador no es perfecto y por eso, haciendo caso al refrán,  es mejor prevenir que curar.  Un buen desarrollador de software tendrá en cuenta crear un log para monitorizar aquellos errores de programación y de cualquier otro tipo que puedan suceder en la aplicacíón que se desarrolla.


Al respecto el programador tiene varias opciones:


  • Crearse por sí mismo un sistema de control de errores dentro de su aplicación. Si es hábil podrá migrar este sistema a futuros desarrollos.

  • Utilizar librerías ya implementadas que cubren la funcionalidad de control de errores.

En mi caso yo recomiendo ELMAH (Error Logging Modules and Handlers) que permite crear un sistema automático de guardado de errores y además crear la infraestructura (tablas y procedimientos en base de datos y librerías .Net) para utilizarlas como servicio de logging.


Este post intentará explicar cómo instalar y configurar ELMAH para una aplicación o sitio web en asp.net.


Paso 1. Descargar las librerías de ELMAH.


El primer paso que deberás hacer es descargarte las librerías de ELMAH en tu sitio web asp.net. Esto lo puedes hacer manualmente (en este enlace) o mediante el administrador de paquetes NuGet de Visual Studio (Menú Tools – Library Package Manager – Manage NuGet Packages for Solution…)


Instalar y configurar ELMAH


En la ventana emergente buscaremos en nuget.org (Online) con la palabra clave ELMAH y lo instalaremos en nuestra aplicación Web.


Una vez instalado veremos que nos ha referenciado algunas librerías nuevas y nos habrá modificado el web.config.


Paso 2. Ejecutar el script de la base de datos.


ELMAH puede utilizar una base de datos sqlserver para guardar los errores que se van generando. El siguiente paso será crear la estructura de la base de datos a través de un script que podremos descargar aquí.


Paso 3. Utilizar la monitorización de errores.


En este punto ya podremos ver una de las ventajas de ELMAH. Utilizaremos la url http://”misitio.com”/elmah.axd para monitorizar los errores por pantalla.


Por ejemplo,


si lanzamos una excepción manualmente en nuestro código…


ELMAH Excepción manual


lo ejecutamos y después de lanzado el error vamos a la url http://”misitio.com”/elmah.axd veremos una pantalla donde aparece lo siguiente:


Error monitorización ELMAH


Es útil, pero en este punto el error no se ha guardado en la base de datos, de hecho si no te interesa guardarlo en un almacenamiento persistente podrás saltarte el paso 2 y los siguientes.


Paso 4. Configurar la base de datos.


Para enlazar ELMAH con la base de datos es necesario indicarle cual es la cadena de conexión. Para ello deberemos ir al web.config y añadir la cadena de conexión dentro de la sección que define la etiqueta <elmah>


ELMAH cadena de conexión


Si nos fijamos en la etiqueta errorLog, se le está indicando que para el tipo de módulo sqlerrorlog utilice la cadena de conexión con el nombre “DefaultConnection” que la hemos definido previamente en el web.config.


Si la cadena de conexión es correcta los errores se empezarán a guardar en este punto en la base de datos.


En futuros posts veremos algunas configuraciones extra que podemos utilizar con ELMAH como son el envío de mails, seguridad, etc…


 



Instalar y configurar ELMAH

lunes, 11 de agosto de 2014

Qué es Visual Studio LightSwitch

Con esta tecnología Microsoft pretende llevar el campo de desarrollo a manos que no se dedican especialmente a la programación.


Su utilización se asemeja a lo que pueda ser access comparado a cualquier gestor de base de datos.


En visual studio 2013 puedes elegir entre crear una aplicación LightSwitch de escritorio o una de tipo web.


Si bien todas estas soluciones rápidas de desarrollo son muy poco personalizables puede llegar en alguna ocasión a ser interesante para desarrollar una aplicación de una manera rápida y sencilla.


Más Info



Qué es Visual Studio LightSwitch

domingo, 10 de agosto de 2014

Como añadir una nueva entrada a un fichero po y mo

Si utilizas la aplicación Poedit para editar tus traducciones de WordPress te habrás fijado que no existe ningún botón ni ninguna opción para añadir una nueva fila o traducción al fichero.


Para poder añadir una nueva entrada a un fichero po y mo tan solo debes olvidarte al principio de Poedit y editarlo con un procesador de textos cualquiera (por ejemplo notepad++) y copiar una fila como la siguiente.


#: ../header.php:391 ../header.php:442

msgid “Just type and press ‘enter’”

msgstr “Teclea y pulsa intro”


La primera fila es un comentario que indica en que sitios se está utilizando la traducción.


La segunda fila (la que empieza por msgid) significa que el id del mensaje es lo que va entre comillas. Lo ideal es que para todos tus ficheros de idiomas existan los mismos ids. Es común sobretodo cuando descargas plantillas que se hayan olvidado en los ficheros de traducción algunas claves con lo que la traducción no se realizará. En este caso obtendrá el valor por defecto que contiene el fichero de idioma por defecto.


La tercera fila (comienza por msgstr) es el sitio donde se realiza la traducción en el idioma que pertenezca el fichero a editar.


Una vez hemos introducido estas 3 filas con su correspondiente traducción al idioma y guardado el archivo po podremos abrir este mismo archivo con Poedit. Ahora podremos ver que con esta app se visualiza la nueva entrada que anteriormente no estaba.


El último paso es guardar con Poedit y se generará o actualizará el fichero mo.


Estos dos últimos ficheros (po y mo) son los que utilizaremos para su correcta traducción.



Como añadir una nueva entrada a un fichero po y mo

sábado, 9 de agosto de 2014

Eventos de ratón para un marcador en Google Maps

A continuación se enumerarán los distintos eventos que son disparados cuando se interactua con el ratón sobre un marcador de Google Maps.




google.maps.event.addListener(marker, "click", function (e) log("Click"); );
google.maps.event.addListener(marker, "dblclick", function (e) log("Double Click"); );
google.maps.event.addListener(marker, "mouseover", function (e) log("Mouse Over"); );
google.maps.event.addListener(marker, "mouseout", function (e) log("Mouse Out"); );
google.maps.event.addListener(marker, "mouseup", function (e) log("Mouse Up"); );
google.maps.event.addListener(marker, "mousedown", function (e) log("Mouse Down"); );
google.maps.event.addListener(marker, "dragstart", function (mEvent) log("Drag Start: " + mEvent.latLng.toString()); );
google.maps.event.addListener(marker, "drag", function (mEvent) log("Drag: " + mEvent.latLng.toString()); );
google.maps.event.addListener(marker, "dragend", function (mEvent) log("Drag End: " + mEvent.latLng.toString()); );



Eventos de ratón para un marcador en Google Maps

viernes, 8 de agosto de 2014

Google Maps: crear un marcador con etiqueta

Antes de nada hay que indicar que es necesario añadir la referencia a la api de google maps para realizar lo que hace este post. Para crear un marcador que muestre una etiqueta con Google Maps podremos seguir el siguiente ejemplo. Marcador-google-maps


Crear un marcador básico


La clase google.maps.InfoWindow será la que nos permita visualizar la etiqueta. Estará asociada a un mapa y un marcador cuando decidamos abrirla con el comando: iw.open(map, marker); Si nos fijamos el lugar donde se mostraría la información sería en el click del marcador ya que hemos registrado un manejador del evento correspondiente en la última línea, esto desencadenará la visualización de la etiqueta.


var latLng = new google.maps.LatLng(49.47805, -123.84716); var homeLatLng = new google.maps.LatLng(49.47805, -123.84716); var map = new google.maps.Map(document.getElementById('map_canvas'), zoom: 12, center: latLng, mapTypeId: google.maps.MapTypeId.ROADMAP ); var marker = new MarkerWithLabel( position: homeLatLng, draggable: true, map: map, labelContent: "A", labelAnchor: new google.maps.Point(22, 0), labelClass: "labels", // la clase CSS para la etiqueta labelStyle: opacity: 0.75 ); var iw = new google.maps.InfoWindow( content: "Home For Sale" ); google.maps.event.addListener(marker, "click", function (e) iw.open(map, marker); ); 


Google Maps: crear un marcador con etiqueta

jueves, 7 de agosto de 2014

Problema con firma en Outlook, una imagen ha dejado de mostrarse

Puede que te ocurra esto…


Has estado mandando correos con tu firma que contiene una imagen sin problemas hasta el día de hoy, pero de la noche a la mañana la imagen ya no se ve como debería en los nuevos correos que envías. Cuando redactas el correo la imagen no se ve y en su lugar aparece una imagen tipo auto-forma que puedes girar, expandir o contraer.


Esto es lo que le pasó a una persona que trabaja conmigo y aprovechó que estaba por ahí para pedirme que lo arreglara… ¡sí hombre! ¡como si yo conociera Outlook al dedillo!


El caso es que después de darle algunas vueltas sin encontrar solución decidí reiniciar el programa y de esta manera tan sencilla se solucionó.


 



Problema con firma en Outlook, una imagen ha dejado de mostrarse

viernes, 1 de agosto de 2014

Bases de datos para desplegar con una aplicación .Net

Cómo realizar una instalación de una aplicación nativa en cliente que utilice una base de datos pero sin tener que realizar la instalación completa de sqlserver u oracle por ejemplo que dificultan el despliegue de todo el sistema.


Para solucionar este problema, de momento, he encontrado estas soluciones.


  • Desplegar una base de datos de tipo SQL Server CE (Compact Edition) junto a la aplicación. Cómo desplegar una Base de datos SQL Server Compact con una aplicación.

  • Utilizar SQLite. Es una base de datos que se integra en ficheros casi planos y que es fácil de desplegar con una solución en Visual Studio. Existe una librería en .Net (System.Data.SQLite.dll) que permite acceder. También debe funcionar con Entity Framework pero esto todavía no lo he podido comprobar.

  • Siempre puedes usar un fichero Access para este tipo de despliegues.

 



Bases de datos para desplegar con una aplicación .Net