RSS 2.0 Atom 1.0 CDF  
JASoft.org - Monday, August 11, 2008
El blog de José Manuel Alarcón Aguín. Programación .NET y mucho más...
 

Como ya habréis visto anunciado en muchos sitios, desde hoy está disponible el Serive Pack 1 de Visual Studio 2008, que incluye muchas nvedades.

Las principales a destacar son las siguientes:

Plataforma .NET

  1. Mejoras de rendimiento de entre el 25 y el 40% en aplicaciones WPF. Y sin tener que cambiar ni una sola línea de código.
  2. Nuevos sistemas de acceso a datos: Entity Framework y Data Services, así como soporte para las nuevas características de SQL Server 2008.
  3. Algunas mejoras en WCF.

Visual Studio 2008:

  1. Soporte para SQL Server 2008 (salido la semana pasada)
  2. Mejores diseñadores de WPF.
  3. Diseñadores para acceso a datos con Entity Framework.
  4. Mejoras en Team Foundation Server relacionadas con el control de versiones, control de items de trabajo y migración desde Source Safe entre otras. Cabe destacar una gran mejora de rendimiento en servidores de TFS con gran cantidad de proyectos, tanto en el servidor como en el cliente.

En cuanto a lo que a mi me interesa, que es el desarrollo Web, las principales mejoras tienen que ver con la inclusión de Dynamic Data, para crear rápidamente aplicaciones orientadas a datos, los ADO.NET Data Services para exponer datos como servicios REST, el soporte para el historial del navegador en AJAX, mejoras en el Intellisense de JavaScript que ahora soporta a muchas bibliotecas conocidas como ExtJS o  Scriptaculous, y la posibilidad de combinar varios scripts en uno automáticamente para disminuir las descargas individuales de este tipo de archovos desde el servidor (lo que mejora el rendimiento).

Ah, también una cosa muy interesante: .NET 3.5 SP1 añade soporte para Click-Once en Firefox, que ahora está ya al alcance de esta estupenda forma de distribuir aplicaciones:

Y como detalle simpático comentar que además el SP1 cambia el icono asociado a Visual Studio, que ahora incorpora la versión en todos los tamaños de accesos directos:

Mi opinión personal

Me parece estupendo todo lo que sean avances, pero Microsoft debería plantearse el actual ritmo de innovación que tiene. Lleva varios años (desde que salió VS2005) dando una caña que no es normal. Cada vez es más dificil estar al día, incluso a la gente que está todo el día con esto (entre los que no me incluyo). Y luago hay quien dice que Microsoft no innova. Eso lo dicen los que no pasan de manejar Word, imagino.

Además, no sé qué manía ha cogido Microsoft últimamente de llamarle "Service Pack" a cosas que realmente son casi nuevas versiones completas del producto, con nuevas tencologías incluidas. A este ritmo van a sacar la nueva versión de Visual Studio y la gente aún estará empezando a ponerse bien al día con VS2005 :-(

En fin, valor y al toro :-)

Monday, August 11, 2008 8:55:35 PM (Hora de verano romance, UTC+02:00)  #    Comments [2]   Noticias Programación | Visual Studio  |  Trackback

¿Has experimentado problemas al reproducir audio con Windows Vista? Por ejemplo: cuando cambias de canción o comienzas a reproducir una, tarda varios segundos en empezar mientras pone "Cambiando medio". O por ejemplo: justo antes de terminar una canción (en el 90% más o menos) de repente durante un par de segundos la canción se oye entrecortada.

Bueno, esto es lo que me pasaba a mi hasta hace poco. El motivo es, por lo visto, que mi tarjeta de sonido no es la bomba precisamente (es un portatil orientado a empresa) y sus controladores no son totalmente compatibles con la nueva pila de sonido de Windows Vista. Al parecer es un problema común según he podido constatar hablando con algunos amiguetes.

Resulta que Vista incluye una nueva pila de procesamiento de sonido que nos permite obtener por software algunas características interesantes, y en concreto unas cuantas mejoras de sonido. Puedes verlas yendo a Panel de Control·Sonido y viendo las propiedades de los altavoces:

Si te interesa conocer todos los detalles técnicos del nuevo sistema de sonido de Vista y cómo sacarle partido a todo ello, incluso desde tus propios programas, puedes echarle un vistazo a esta página en Microsoft. Hará las delicias de los más frikis.

Para el resto de los mortales, entre los que me incluyo, que a duras penas sabemos para qué diablos valen estos cuatro ajustes que se ven en la figura de arriba, lo mejor es desactivarlo todo.

Esas mejoras no se llevan bien con algunos sistemas de sonido como el de mi portatil. Incluso aunque no tengas inguna de ellas activada, mientras no marques la opción "Desactivar todos los elementos" esta característica seguirá influyendo en tu sonido puesto que aunque no haga nada el sonido se pasa por este nivel de la pila antes de salir por los altavoces.

Si estás sufriendo los problemas que describo al principio del post simplemente marca la casilla como muestro en la figura para desactivar esta parte de la pila del sistema de sonido. A partir de ese momento verás cómo tus canciones empiezan a reproducirse al instante y no se vuelven a entrecortar jamás :-)

Espero que le sirva a alguien...

Saturday, August 09, 2008 11:38:42 AM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Sistemas operativos | Trucos y consejos genéricos  |  Trackback

SQL Server dispone de una versión embebida que es tan interesante como desconocida y poco utilizada. Se trata de SQL Server Compact Edition. La mayor parte de la gente la desecha como opción porque la asocia con crear aplicaciones para dispositivos móviles (como PDAs o teléfonos), pero lo cierto es que tiene una cantidad espectacular de aplicaciones en entornos de escritorio.

Para empezar esta versión ligera de SQL Server es gratuita y compatible con su hermano mayor, con multitud de características avanzadas como SGBD. No necesita tener instalado un servicio permanentemente en ejecución en el sistema y es extremadamente ligera (tanto que puedes usarla en un teléfono, así que eso lo dice todo). Una de las características más interesantes es la de todas las opciones de sincronización que ofrece, que nos permiten replicar y mantener en sincronismo datos entre sistemas homogéneos, por lo que la hace ideal para aplicaciones que deban trabajar conectadas de forma no permanente y para almacenamiento local.

Se le puede sacar partido para multitud de casos. Por ejemplo, imagínate una aplicación de TPV (ventas por terminal) que se usa en una red de tiendas y que almacena sus datos en una base de datos central. ¿Qué pasa cuando falla la conexión a Internet? ¿Te vas a quedar sin poder facturar?. Obviamente no. Pues en este caso SQL Server Compact es un gran aliado ya que te permitiría implementar en tu TPV de manera sencilla una solución de almacenamiento local sin instalación compatible con SQL Server que funcionase cuando no hay conexión y que sincronizase de manera automática los datos cuando vuelva a haber conectividad.

Microsoft SQL Server Compact 2008 SP1: Referencia CompletaEn general cualquier situación que requiera un almacenamiento avanzado, incluso con simultaneidad de acceso por parte de varios usaurios, pero que no justifique el hecho de instalar un SQL Server completo es el lugar apropiado para usar SQL Server Compact.

Y la aparición del Service Pack 1 para este entorno con la inclusión de soporte para Entity Framework o posibilidad de usarla en entornos de 64 bits la hacen más potente todavía.

Total, que el hecho de que esta BD sea tan infrautilizada nos ha llevado a sacar desde Krasis Press un nuevo libro específicamente dedicado al tema (y el más grande que hemos hecho hasta el momento, con bastante más de 400 páginas). Su autor, José Miguel Torres, es un gran experto en este campo con muchos años de experiencia real en este tipo de aplicaciones de Smart Client comentados. Además el libro se ha concebido como una referencia completa que inluye todo lo que necesitas para dominar el entorno: desde su puesta en marcha y utilización, hasta su despliegue en entornos de producción, pasando por utilización, el lenguaje SQL, su acceso con ADO.NET 3.5, entornos de sincronización y todo tipo de conceptos sobre arquitectura de aplicaciones. Incluye por supuesto las novedades del SP1 aparecido esta misma semana. ¡Más fresco imposible! :-)

Desde mi punto de vista un "must have" que todo programador de .NET debería conocer.

En la página del libro en Krasis Press tenéis toda la información, incluyendo un completo índice e introducción y el código fuente de ejemplo completo. Si lo compras te lo enviamos a casa por mensajero gratuitamente (dentro de la península) :-)

Friday, August 08, 2008 8:34:23 AM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Noticias Programación | SQL Server  |  Trackback

Desde ayer los suscriptores de MSDN y Technet ya puede descargarse la versión definitiva de SQL Server 2008.

Se trata de una gran noticia :-)

Si eres suscriptor, ahí te dejo los enlaces:

Las versiones en otros idiomas distintos al inglés se irán colocando en las próximas semanas.

Thursday, August 07, 2008 10:47:58 AM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Noticias Programación | SQL Server  |  Trackback

Hay veces que necesitaremos usar programáticamente un ScriptManager dentro de una página, por ejemplo para añadir dinámicamente referencias a Scripts o a servicios Web o WCF. Para ello deberemos automatizar el control ScriptManager que toda página AJAX debe tener, pero ¿qué pasa si no existe ese control?

Para asegurarnos de que el control está añadido a la página y que podemos utilizarlo podemos emplear el método estático GetCurrent de la clase ScriptManager para verificar su existencia, así:

public static bool IsScriptManagerPresent(Page p)
{
   ScriptManager Smgr = ScriptManager.GetCurrent(p);
   return (Smgr != null);
}

Con esta sencilla función podremos averiguar si hay un Scriptmanager presente o no.

Es interesante notar que este método funciona y devuelve el valor correcto incluso cuando el ScriptManager no está presente en la página actual sino en la página plantilla (Master Page) que la contiene. No obstante es importante darse cuenta de que en ese caso devovlerá true incluso si la Master Page tiene un ScriptManager aunque no tengamos un ScriptManagerProxy (SMP) en la nuestra, por lo que si obtuviésemos una referencia al ScriptManager estaríamos trabajando directamente con el de la MP aún sin un SMP.

Wednesday, August 06, 2008 8:54:58 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   AJAX | ASP.NET  |  Trackback

A ver, una rapidita que me voy de fin de semana :-)

A lo  mejor alguna vez usando una herramienta de monitorización de red (o un simple netstat) has observado que tu ordenador está haciendo peticiones a una URL "sospechosa" como esta: http://sqm.msn.com/sqm/wmp/sqmserver.dll

"¡Diosss! ¡Es cierto, Microsoft nos espía!" habrá pensado más de uno, jajaja

Bueno, realmente es una forma de espiarte anónimamente, pero es una para la que tú explícitamente has dado permiso.

Se trata ni más ni menos del "Programa de mejora de la experiencia del cliente de Microsoft" y que has aceptado como una opción cuando instalabas Visual Studio, SQL Server u otros productos abarcados por la iniciativa. Este programa recopila información anónima sobre el uso de los productos, su rendimiento, etc... para ayudar a microsoft en su mejora contínua, así que no debe preocuparte: no es spyware :-)

¿Cómo me lo quito de encima?

Bueno, cada programa tiene su sitio para desconectarlo. Por ejemplo en Visual Studio 2008 vete a "Help·Customer Feedback Options" (o similar en catellano) y verás aparecer este diálogo:

Desde el mismo se explica en qué consiste el progrma y se da la opción de desactivarlo.

Friday, August 01, 2008 5:40:06 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Visual Studio  |  Trackback

En mi anterior post comentaba los peligros de usar alegremente los controles UpdatePanel de AJAX y mostraba con la excelente herramienta Fiddler cómo eran las peticiones que se enviaban y recibían.

Alguien me ha preguntado cómo hago para poder utilizar Fiddler con el servidor Web de desarrollo que viene con Visual Studio (conocido comunmente como Cassini), ya que por mucho que actives Fiddler por defecto no captura las peticiones hechas a dicho servidor.

El servidor de desarrollo sólo admite peticiones locales y accedemos a ése a través de una URL del tipo:

http://locahost:3572/miapp

Eligiendo un puerto aleatorio de cada vez.

Cuando lanzas Fiddler éste se coloca como proxy de Internet Explorer interceptando todas las llamadas que hace éste a las páginas Web. Lo que ocurre es que IE cuando detecta que una llamada se va a hacer en local (contra localhost vamos) automáticamente hace caso omiso de los posibles proxy que hubiera y lanza la petición directamente, de ahí que Fiddler no funcione.

Podemos solucionar este problema de una manera sencilla usando el siguiente truco.

Modificación al vuelo de la URL en Fiddler

La herramienta Fiddler nos permite responder a diferentes eventos mientras realiza una petición, los cuales podemos interceptar con código de Script. Se puede ver el ´codigo por defecto de estos eventos usando el menú "Rules" de fiddler, así:

Uno de estos eventos se produce justo antes de lanzar la petición desde el proxy y se llama "OnBeforeRequest". Por lo tanto podemos modificar la URL local para que IE piense que es externa, y volver a modificarla en el evento mencionado antes de que el proxy lance la petición. La manera más fácil es añadir a la palabra 'localhost' un punto justo al final. Así IE no la reconocerá como la URL local y la petición pasará a través de Fiddler. En el evento OnBeforeRequest sólo tenemos que añadir los siguiente al principio:

        if (oSession.host.substr(0, 10)=="localhost.")
        {
                 oSession.host=oSession.host.replace("localhost.", "127.0.0.1");
        } 

Esto hace que cuando Fiddler detecta una petición a cualquier url que empiece por "localhost." la transforma en una llamada a la misma URL dentro de "127.0.0.1", que es equivalente.

Obviamente podríamos usar cualquier otro añadido a la URL local para cambiar la petición. Incluso en lugar de un simple punto añadir un subdominio especial del estilo ".local", para que fueran URLs del estilo "localhost.local" o algo así, cambiando por tanto el pequeño código de intercepción en el evento, pero el punto es el camino más rápido y va de maravilla.

Así que ya sabes, haz ese retoque en el evento, y a partir de entonces lanza tu aplicación y justo tras haber lanzado Fiddler añádele un punto a localhost al final para que Fiddler entre en acción y puedas analizar con detalle todo el trasiego de información entre cliente y servidor que produce tu aplicación, incluyendo peticiones AJAX encualquier puerto :-)

Tuesday, July 29, 2008 4:26:03 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   AJAX | ASP.NET  |  Trackback

Las tecnologías de Microsoft han adolecido tradicionalmente de un problema que es a la vez, paradójicamente, su mayor ventaja: la sencillez aparente de uso. Pienso que  la clave del éxito de Windows, Office y otros muchos productos de la casa de Redmond ha sido y es su sencillez de uso. Pero esta misma sencillez de uso se convierte también un arma de doble filo: hace que la gente se quede en la superficie de las cosas, sin comprender bien las consecuencias de lo que hacen. Ha pasado toda la vida con las versiones de servidor de Windows, y ha pasado y pasa con las herramientas de desarrollo. Al ser fáciles de configurar y utilizar la gente enseguida "controla" la tecnología correspondiente, lo cual es un error grave.

En este caso me estoy refiriendo en concreto a la tecnología ASP.NET AJAX que tanto facilita el desarrollo de aplicaciones de interfaz avanzada para la Web. Desde mi punto de vista el Update Panel es una obra de arte que debería llevar un premio al diseño de componentes y arquitecturas. Antes de su existencia la creación de aplicaciones AJAX era compleja, a pesar de los diversos frameworks para ello que existían. El uso de los Update Panel convierte en algo realmente sencillo el crear aplicaciones Web con capacidad de respuesta rápida y sin refresco de página. Una maravilla vamos.

Lo cierto es que su sencillez ha hecho que la gran mayoría de los que los utilizan lo hagan sin un buen criterio. Todo el mundo "sabe" hacer aplicaciones AJAX hoy en día. Los lamentos vienen después cuando las aplicaciones deben escalar y ser eficientes, como en casi todos los casos en los que se ve a diferencia entre un buen y un mal programador.

Veamos qué pasa cuando colocas un Update Panel en una página ASPX para hacer algo tan tonto como actualizar la hora actual en una etiqueta. En una página vacía colocas un ScriptManager, un Update Panel y dentro de éste una etiqueta y un botón. al pulsar el botón asignas en un evento de servidor la hora actual a la etiqueta, así:

    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToShortTimeString();
    }

Una chorrada total. Vale ahora ejecutas y voilá!, mágicamente el Update Panel hace su trabajo y ves aparecer la hora en la eiqueta sin hacer un postback tradicional al servidor ysin que la página ni siquiere parpadee.

Estupendo. Pero vamos a analizar qué pasa entre bambalinas y más en concreto qué información se envía y se recibe a y desde el servidor. Para ello he utilizado a mi fiel amigo Fiddler, el analizador de tráfico que más me gusta. El resultado de la petición de ida y vuelta del Update Panel es el que se puede ver en esta figura:

En la parte de arriba podemos ver la petición que se envía y en la de abajo la respuesta recibida. ¡En total 889 caracteres (casi 1 KB) para realmente obtener una información (la hora) que ocupa solamente 8 caracteres!

Impresionante. Ahora imagínate esta situación en una página compleja en la que el avezado programador se ha dedicado a dejar caer UpdatePanels por doquier (cosa muy común y una mala práctica). Ahí es nada.

Existen formas mucho más eficientes de conseguir lo mismo eficientemente usando el mucho más amplio framework de ASP.NET AJAX, tal y como se explica en nuestro curso de ASP.NET AJAX.

La conclusión es que hay que utilizar las tecnologías con cabeza y comprendiendo lo que se hace. Lo fácil de usar es un arma de doble filo.

Sunday, July 27, 2008 1:37:20 PM (Hora de verano romance, UTC+02:00)  #    Comments [2]   AJAX | ASP.NET  |  Trackback

Hace un rato, al llegar a casa y quitar de suspensión mi portátil, me encuentro con que me saltan actualizaciones del Sistema Operativo, lo cual me pareció raro porque aún ayer o anteayer tuve que instalar unas cuantas. "Será importante", me dije.

Tengo la buena costumbre de repasarlas siempre antes de que admitir que se instalen, y así me voy enterando de qué me instalan los chicos de Redmond todos los meses. El caso es que la primera de las actualizaciones (KB955020) de hoy ocupaba bastante (56,3 MB) y según indicaba era para actualizar los diccionarios de inglés y alemán (mi sistema de casa está en castellano).

Primera noticia que tengo de que Windows (y no Word u Outlook) incorpora "de serie" un diccionario. Oye, y además resulta que la actualización es considerada importante y me dice que seguramente tengo que reiniciar el equipo:

El caso es que claro, me voy a la KB a ver qué tipo de actualización es esta, porque no me gusta nada reinicair mi equipo y descargarme casi 60MB por una chorrada, y cual sería mi sorpresa cuando veo esto (pulsa la imagen para ir al original):

¿Comorrrrrl? Que mi Windows no va a reconocer en inglés y alemán palabras tan útiles como "Friendster," "Klum," "Nazr," "Obama," o "Racicot". Diosss, me tengo que bajar cuanto antes esta actualización ;-)

¡Hombre, por Dios!, menuda tomadura de pelo, no me fastidies. Imagino que tiene que haber sido un despiste, porque sino no se entiende tamaño desatino. En fin, ya sabes, desmarca la descarga de esa actualización y ahorrarás ancho de banda, tiempo, un reinicio y contribuirás a que Internet vaya un poquito más rápido. Lástima que en el ordenador de la oficina no pueda evitar que se instale (por eso esta mañana tuve que reiniciarlo, en fin).

No digas que no te lo avisé, jeje

Friday, July 11, 2008 5:47:30 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Sistemas operativos  |  Trackback

Este es un truco muy sencillo pero que puede resultar realmente útil.

Cuando estamos navegando por Internet en busca de información hay veces que nos interesa guardar ciertos contenidos pero:

· A lo mejor no nos permite guardarlos a disco.

· Está deshabilitado copiar y pegar mediante JavaScript (fácil de solucionar, pero un "peñazo")

· La información no nos interesa exactamente cómo está, sino que queremos quitar cosas o añadir algunos comentarios propios que los complementen.

· La página tiene muchas otras cosas alrededor que nos sobran.

· Etc...

Para estos casos hay un snippet de JavaScript puede sernos de gran utilidad. Al utilizarlo lo que conseguimos es que cualquier página que estemos visualizando se convierta en editable, de forma que podamos modificarla a voluntad antes de copiarla (o cortarla) para almacenar el contenido. Así podremos quitar lo que no nos guste, redimensionar gráficos, mover partes de un lado a otro, añadir comentarios, etc... Realmente útil.

Para tenerlo a mano siempre haz lo siguiente:

  1. navega a cualquier página. Por ejemplo: about:blank (que es una página en blanco).
  2. Agrega esa página a tus favoritos, por ejemplo en la sección de "Vínculos" para que esté siempre a mano en la barra de herramientas
  3. Edita el favorito con el botón derecho·Propiedades. En la URL sustituye tu página por el siguiente texto:

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

¡Listo! Ahora a disfrutar y a editar a tu gusto las páginas :-)

Por cierto, esto funciona tanto en Internet Explorer como en Firefox.

Wednesday, July 09, 2008 11:21:38 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   Trucos y consejos genéricos  |  Trackback
Copyright © 2008 José Manuel Alarcón Aguín. All rights reserved.