Wednesday, November 26, 2008

event srcElement Firefox bug

Siguiendo con la saga de posts sobre Firefox y el trabajo adicional que implica hacer que el aplicativo se vea relativamente bien sobre este browser.

Debes tener en cuenta que, en la medida de los posible, el desarrollo empieze a desarrollarse sobre Firefox pues este browser es mas estricto tanto en su presentacion como en la interaccion con el usuario y sus scripts.

El muy usado event.srcElement NO sirve para Firefox. Tan simple y claro como eso.

Lo que sucede es que cada funcion de javascript que asocies a un evento de algun element HTML deberia utilizar esta firma: Foo( this ).

De esa manera el event.srcElement quedaria relegado.

function Foo( src )
{
   /* Utilizas src como si fuese event.srcElement */
}

Good coding!

parentElement Firefox bug parentNode

Cuando desarrollas para Firefox debes liar con algunas dificultades. Firefox maneja un modelo distinto para ciertas cosas que Internet Explorer regala a discrecion.

Por ejemplo, en el modelo de objetos DOM del documento HTML a nivel de script, un elemento cualesquiera -en Firefox- NO cuenta con su correspondiente parentElement.

Esto podria traerte mas de una molestia, pero debes tener claro que Firefox implica algo mas de trabajo por parte del desarrollador.

Para superar este escollo, debes usar la propiedad parentNode.

if( obj.parentElement )
{
   /* usas parentElement */
}
else
{
   if( obj.parentNode )
   {
      /* usas parentNode */
   }
   else
   {
      throw 'What is your fucking browser?';
   }
}

Good coding!

Monday, November 17, 2008

UpdatePanelAnimationExtender loading

UpdatePanelAnimationExtender es uno de los controles mas usados del Ajax Control Toolkit.

UpdatePanelAnimationExtender brinda la facilidad de mostrar alguna animacion mientras el UpdatePanel demora en ejecutar la operacion que se le ha encomendado a realizar.

Por ejemplo si tuviese que mostrar informacion cuyo origen de datos requiere mayor tiempo de ejecucion, pues el UpdatePanelAnimationExtender es la opcion a usar.

NO deberias cambiar nada en tu UpdatePanel para utilizar el UpdatePanelAnimationExtender.

UpdatePanelAnimationExtender es una seccion declarativa a nivel de la pagina ASPx muy sencilla.

<cc1:UpdatePanelAnimationExtender ID="_animation" runat="server" BehaviorID="animation" TargetControlID="_update">

Donde _update es un UpdatePanel.

El elementos interno es <Animations> dentro del cual se declaran <OnUpdating> y <OnUpdated> en los cuales se definiran las acciones de animacion que se crean convenientes.

Dentro de cada una de estas, pueden definirse acciones que pueden ser <Sequence> o <Parallel> quienes han de ejecutar las acciones de animacion en orden secuencial -que seria lo ideal- o en forma paralela cada accion de manera casi concurrente.

La accion casi por default utilizada es <EnableAction> en cuya propiedad AnimationTarget se define el boton que ordena la ejecuion del proceso que se vaya a realizar para deshabilitar dicho boton mientras se encuentra ejecutando. Para que una vez realizado volver a su estado original.

UpdatePanelAnimationExtender brinda una serie de acciones a configurar en modo declarativo, para que finalmente esto sea interpretado con el Runtime del Ajax y hacer lo que le hayas configurado que haga.

Para hacer cosas mas raras puedes usar el <ScripAction> que en su propiedad Script solicita el metodo javascript a ejecutar.

En <OnUpdating> cambios los estados de los controles que tienes disponbles en la interfaz de usuario que luego en el <OnUpdated> regresas a su estado irginal.

Thursday, November 13, 2008

Remote Debugging Monitor Visual Studio

Remote Debugging Monitor permite depurar una aplicacion ASP.NET sobre el servidor. Por cuestiones de seguridad, debe entenderse que esto se realizara sobre un servidor en un entorno de Testing o algo relativamente similar.

Una forma sencilla de usarla al desarrolar aplicaciones con tu Visual Studio .NET 2008, donde las aplicaciones ASP.NET utilizan el ASP.NET Develoment Server sobre algun puerto en particular, dicho proceso utiliza la cuenta de usuario de la actual sesion de Windows.

Muy probablemente todo funcione de maravillas en tu pequeño entorno de desarrollo -tu PC- mas aun si estas en el grupo de Administradores de tu machine.

Bueno, puede que instales el IIS en tu PC para publicar tus proyectos ASP.NET en un entorno inicial de testeo.

Al probrar aquello en un simple http://localhost/myWebApp/ veras que empiezan a brotar excepciones que antes NO aparecian, pues el usuario en el que se levanta el w3wp.exe es el [NT Authority\Network service].

Pues depurar la aplicacion alli, seria ideal. ¿NO?

Para ello, abres el Visual Studio .NET 2008, vas al menu Tools y eleges la opcion Attach to process....

Te mostrara una ventana en la cual el Transport elegido es por Default, entonces deberas ingresar en el campo Qualifier el valor localhost, checkear Show processes in all sessions, hacer clic en en boton Refresh, buscar en la lista el proceso w3wp.exe y finalmente hacer clic en el boton Attach.

Luego podras ingresar en tu brower el http://localhost/myWebApp/ esperando que ante cualquier excepcion que se produzca en tu aplicacion -mientras que la manoseas- el Visual Studio .NET 2008 permitira visualizar la linea de codigo que general dicha excepcion.

Thursday, November 06, 2008

Entity Framework Visual Studio 2008

Entity Framework es una herramienta que se monta sobre el Linq To Sql para interactuar contra la Base de Datos, y brinda al developer facilidades de herencia y composicion en un modelo de clases, como Dios manda, con caracteristicas propias de OOP -Object Oriented Programing- que los ORM -Object Relational Mapping- NO nos brindaban, como lo aprendimos en la preciosa e inaplicable teoria.

En fin, Entity Framework hace el esfuerzo de encaminarnos al mundo de los objetos con aquellas caracteristicas de herencia y composicion de clases -que habiamos dejado de lado por los tools de mapeo entre un mundo de entidades y el mundo relacional- que posteriormente hagan el mapping contra las columnas de las tablas de nuestra Base de Datos.

Para poder utilizarlo es importante que descargues el Visual Studio .NET 2008 Service Pack 1 que viene junto con el .NET Framework 3.5 Service Pack 1.

Visual Studio .NET 2008 Service Pack 1 (ISO)

De manera que tendras los primeros parches de la herramienta de desarrollo por un lado y de la plataforma por el otro, todo en un mismo paquete.

Luego tendras que agregar un item ADO.NET Entity Data Model a tu proyecto y si tienes tu base de datos construida -con relationships- podras seguir el wizard y obtener todo el modelo de clases justo y necesario.

Ahora, si deseas, puedes seguir la opcion advanced, y contruir tus clases a pedal -es decir tu mismo pe- tomando en cuanta las caracteristicas del Entity Framework para definir tus campos y relaciones entre las clases.

Ya sabes, sigue el camino de la verdad.

ArgumentException Entity Framework

Cuando utilizas varios proyectos en tu solucion del Visual Studio .NET 2008 para organizar correctamente la arquitectura de tu producto de software, muy probablemente utilizes alguno para recibir alli el Data Model de tu Entity Framework y todas las clases que se definan en dicho Data Model.

Un archivo app.config se definira en aquel proyecto con una definicion del connectionString que deberas hacer COPY & PASTE -utlizando una neurona- en el web.config de tu proyecto ASP.NET, de lo contrario recibiras un mensaje como este:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

Aquel mensaje nos dice que efectivamente NO encuentra una definicion de connectionString en el web.config de tu aplicativo ASP.NET, al momento de instanciar el contexto referido a tu modelo de clases.

Tuesday, November 04, 2008

Habilitar sonido en Virtual PC 2007

Cuando estas utlizando Virtual PC 2007 sobre Windows Vista Home Premium, cierto ya se que Microsoft NO brinda soporte sobre dicho HOST, es muy probable que el sonido NO este habilitado en tus GUEST SO, sean estos: Windows 98 SE, Windows 2000 + SP4 o Windows XP + SP2.

NO hay forma legal de exigirle a Microsoft el soporte necesario para esta incidencia.

Tampoco se trata de llevarlo a juicio a mi tio Bill Gates, pero en fin.

Es asunto pasa por habilitar el sonido en los SO GUEST para poder disfrutar de ciertos videojuegos disponnibles en dichos entornos ;)

Bueno, la indicendia brota pues a pesar de haber instalado el Virtual Machine Additions correspondiente en cada SO GUEST, el sonido NO esta habilitado, teniendo como HOST al menos celebre Windows Vista Home Premium.

Que de premium NO tiene nada, te dire, mas aun si el Diccionario de la Real Academia de Lengua Española nos dice que la definicion de Premium es: algo que tiene o refleja una calidad o valor superior. Plop!

Solo falto agregar que en aquel diccionario que esa definicion NO aplica a Windows Vista Home Premium, je.

Bueno, encaminado el asunto de la incidencia sobre el sonido en los SO GUEST. ¿Cual es la solucion para este issue?

Pues el omnipresente Service Pack 1 del Virtual PC 2007, llega como chapulin colorado ;)

Virtual PC 2007 Vista Home Premium

NO hay dudas pero sorprende sobremanera.

Virtual PC 2007 -aunque UD se aferre a la idea contraria- NO brinda soporte sobre Windows Vista Home y Windows Vista Home Premium edition.

Sin embargo pareciese que sobre el Windows Vista Home Premium, todo funcionase relativamente normal, pero aquello NO implica que cada vez que tengas una incidencia sobre sobre dicho escenario, es decir, un entorno donde el Virtual PC 2007 se instale sobre un Windows Vista Home Premium, Microsoft atienda y te de el soporte que esperas, para resolver aquel issue.

Estamos claros, una cosa es que el software NO este permitido o disponible sobre un Sistema Operativo -SO- anfitrion y otra legalmente distinta es que Microsoft te brinde soporte.

Microsoft formalmente NO lo brinda, pero hay mucho usuario en la Red que al igual que tu comenta sus incidencias, algunos tienen suerte y resuelve su problema que luego comparten con everyone.

Ante esa realidad aquello del soporte para Windows Vista Home Premium deja de tener interes.

Sin embargo, a nivel empresarial, donde se distribuyen miles de licencias, a todo cristo, aquello alcanza palabras mayores, y Microsoft legalmente salva su responsabilidad de brindar un soporte donde -antes de- NO lo brinda.

Claro, Microsoft difilmente distribuya Windows Vista Home Premium a nivel empresarial, pues tiene unos paquetes de licencia que incluyen tres o cuatro maquinas virtuales por HOST, todos con sistemas operativos Microsoft, teniendo a Windows Vista Business, Vista Enterprise o Vista Ultimate como su respectivo HOST con Virtual PC 2007 incluido.

En fin, son las reglas del juego. Solo queda acomodarse u optar por VMWare Workstation 6.

InvalidOperationException ServiceModel

Cuando trabajas con WCF utilizando diferentes proyectos en tu solucion, para organizar correctamente la arquitectura del producto de software que vienes construyendo, te encontraras con algunos detallitos que debes superar.

Pues el Visual Studio .NET 2008 te ayuda en lo posible pero NO resuelve por defecto todos tus problemas ;)

En fin, si realizas algun Service References para un EndPoint sobre WCF desde un proyecto del tipo Class Library, el Visual Studio .NET 2008 creara un app.config en dicho proyecto con ciertos elementos de configuracion que despues deberas hacer COPY & PASTE al web.config de tu proyecto ASP.NET.

Dichos elementos de configuracion deberan ser colocados dentro del <system.serviceModel> de tu web.config.

Y tendras tantos, como Services References consumas en tu solucion.

De lo contrario al ejecutar tu aplicativo recibiras este mensaje, en el momento de ejecutar alguna funcionalidad expuesta en aquellos EndPoints, similar a este:

Could not find default endpoint element that references contract 'Brokers.Security.EndPointSoap' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

Claro, si haces tus Service References dentro del mismo proyecto ASP.NET jamas te encontraras con este mensaje.

Pero muy probablemente pierdas escalabilidad.

Windows Communication Foundation WCF

Cuando trates de consumir algun EndPoint sobre Windows Communication Foundation - WCF, el proyecto del tipo Class Library -desde donde realizas el Service References a dicho EndPoint publicado en algun servidor de la red- del Visual Studio .NET agregara un par de assemblies automaticamente: System.ServiceModel y System.Runtime.Serialization.

Bueno, para todo proyecto dentro de tu solucion que haga referencia al proyecto que realiza el Service Reference deberas -por ende- hacer una referencia manual a dichos assemblies.

De lo contrario recibiras un error al hacer build a tu aplicativo, similar a este:

The type System.ServiceModel.ClientBase'1<T0>' is defined in a assembly that is not referenced.

o el otro conocido mensaje de error:

The type System.Runtime.Serialization.IExtensibleDataObject is defined in an assembly that is not referenced.

Pequeño detalle que tendrias que tomar en cuenta :)

Monday, November 03, 2008

Application Error Global asax

Un mecanismo para gestionar los errores por el lado del servidor en las aplicaciones web ASP.NET, es a traves del:

Application_Error( Object sender, EventArgs e )

Alli dentro debes implementar el codigo que permita capturar la excepcion NO controlada que se produjo dentro de tu aplicativo ASP.NET.

HttpContext.Current.Server.GetLastError().GetBaseException();

Esta linea de codigo, te permitira obtener la excepcion de menor nivel, la que realmente origino la excepcion.

Es una forma de obtener el InnerException por cada una de las excepciones que fueron desencadenadas.

¿Para que usar HttpContext.Current? ¿NO bastaria con utilizar this.Server.GetLastError()?

Pues la respuesta es contundente, un reverendo NO.

En un entorno de desarrollo, en tu PC local donde tu eres amo, dueño y señor de tu develop machine, pues probablemente NO se manifiesten ciertas excepciones, que en un entorno de produccion, con mucha seguridad si se manifiesten, es por ello que es necesario una gestion de errores para tu aplicativo ASP.NET

Pero ademas, debido al mecanismo con el que funciona ASP.NET y el ciclo de manejo propio de este, en un entorno de produccion el this.Server.GetLastError() en ocasiones puede retornar un valor NULL, a pesar que se haya generado la excepcion por el lado del servidor.

HttpContext.Current.Server.GetLastError() si devuelve la informacion solicitada, es decir, la excepcion desencadenada.

Luego de capturar el Exception, puedes hacer lo que quieras con el, enviarlo por email al equipo de soporte a traves del SmtpClient del System.Net.Mail, o guardar el contenido de la excepcion en un archivo de texto a modo de log, o utlizar el EventLog del System.Diagnostics para preservar la excepcion el Visor de Eventos de las Herramientas Administrativas de tu servidor web.

En fin, muchas formas, para todos los gustos y de todos los colores.

NRG files Virtual PC 2007

NRG files es el formato de la imagen de un CD bajo el formato del Nero Burn.

Gracias al Nero podemos tener versiones compiladas de un CD en un solo archivo y distribuirlo por doquier.

Pero al usar esa imagen con el Virtual PC 2007 es probable que tengas algunos problemillas, si es que dicha imagen requiere hacer boot para el instalador de un SO.

Por ejemplo una imagen de los instaladores de un Sistema Operativo sobre ISO funciona de maravilla, en contraste con la imagen de otro SO en formato NRG.

Para muestra un boton.

La salida inmediata seria quemar la imagen en NRG a un CD y utilizarlo posteriormente a traves del uso de la unidad fisica para el lector sobre el Guest.

Otra solucion podria ser convertir el NRG a ISO, utilizando cualquier herramienta del mercado para estos menesteres.

En fin, ten encuenta que los ISO vienen soportados por default en el Virtual PC 2007.

Pero si utilizas el Virtual PC 2007 + SP1 puede ser que todo sea de maravilla :)

Sunday, November 02, 2008

Virtual PC 2007 wireless network adapter

Virtual PC 2007 es uno de los juguetes de Microsoft que mas usamos todos los dias.

Pero tiene un detallito si usas el Adaptador de Red Inalambrico, para acceder a la Red desde tu Host.

El Equipo de Virtual PC 2007 decidio NO habilitar el acceso a la Red sobre un wireless network adapter, por defecto. Es decir que nuestro Host, NO levanta el Virtual Machine Network Services para los adaptadores de red inalambricos.

Pequeño detalle, la people se pasa todo el dia buscando una solucion para este tipo de incidencia. Hay que leer.

En fin, la solucion inmediata es utlizar el Adaptador de Red tradicional, y un cable largooo de tu PC al Router :)

La solucion profesional -claro esta- pasa por ingresar a las propiedades de la Conexion de Red Inalambrica, y checkear el Virtual Machine Network Services, de manera que cuando vayas a la consola de administracion de tu Virtual PC 2007, podras configurar el Network Adapter de tu Guest PC y encontrar el Adaptador de Red Inalambrico, que antes NO encontrabas, NI de a patadas.

Claro, siembre veias las mismas cuatro opciones disponibles, en las cuales incluia, tu adaptador de red tradicional y el Shared Networking (NAT), pero al elegir este ultimo y levantar tu Guest PC, NO se podian ver en la misma LAN con tu HOST, por asuntos extremadamente tecnicos.

Pero ya tienes la solucion aqui. Choprove!

Firefox plugins web developer

Firefox es el browser ideal para desarrollar aplicaciones web con conectividad a Base de Datos, y en general todo lo que tenga que ver con la web.

https://addons.mozilla.org/en-US/firefox/

Los diferentes plugins disponibles desde el sitio web oficial de Firefox, entregan una serie de herramientas y utilidades que brindan informacion de interes tecnico para quienes desarrollamos aplicaciones web.

Facilidades de uso para todo lo que tenga que ver con el diseño y la apariencia de tus aplicaciones web, asi como con el tiempo de respuesta, volumen y contenido de los HTTP requests.

NO hay dudas Firefox es el browser!