|
Publicado el 31/Dec/2007
Hasta ahora no había realizado más que pequeñas pruebas de LINQ, pero recientemente he cambiado de proveedor de hosting (al de momento magnífico discountASP) que ya proporciona soporte para .NET 3.5 y me he decidido a usarlo un poco más. En concreto he creado una nueva página de links, donde he puesto de momento los links que tengo alojados en del.icio.us y mis elementos compartidos de Google Reader, que es el lector RSS que utilizo. Tanto del.icio.us como Google Reader proporcionan acceso a los elementos públicos mediante una URL que ofrece un documento RSS en el primer caso (http://del.icio.us/rss/amezcua) y un documento ATOM en el segundo (http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast). Teniendo esto en cuenta, el funcionamiento de la página es realmente sencillo. Sin entrar en detalles los pasos realizados son: 1º Al cargar la página se obtiene un documento XML a partir de la URL para cada uno de los documentos anteriores. Esto es tan sencillo como: XDocument xmlDoc = XDocument.Load(urlServicio);
2º Una vez se dispone del documento se obtiene, mediante una consulta LINQ, una colección de elementos extrayendo los datos deseados del XML original. Por ejemplo, para el caso de del.icio.us se quiere obtener una colección de objetos con dos campos, 'title' y 'url':
var itemList = from item in xmlDoc.Descendants("{http://purl.org/rss/1.0/}item")
select new
{
title = (string)item.Element("{http://purl.org/rss/1.0/}title"),
url = (string)item.Element("{http://purl.org/rss/1.0/}link")
};
3º Cuando se tiene la colección creada (itemList) se puede utilizar DataBinding para vincular esta lista de elementos a cualquier control. En mi caso lo he vinculado a un control DataList. En el control DataList simplemente se especifica que se quieren mostrar los campos 'title' y 'url' definidos antes:
dlDelIcioUsItems.DataSource = itemList;
dlDelIcioUsItems.DataBind();
Como se puede ver hay, sin contar el control de errores, 4 líneas de código para cargar un documento XML remoto y mostrarlo en una página Web, bastante impresionante, teniendo en cuenta que para hacer algo similar hasta ahora lo que hacía era disponer de una clase que defina la estructura del documento, cargar el XML remoto en un XmlReader, deserializar el documento a la clase y finalmente obtener la colección de items interna de esa clase.
Una de las cosas que hay que destacar es el uso de los namespaces de XML. Como se ve en la consulta LINQ, para acceder a cada uno de los elementos del documento hay que especificar el namespace XML en el que se encuentra
{http://purl.org/rss/1.0/}
lo que define completamente al elemento XML concreto. Esta sintaxis, tal como está en el ejemplo, no me acaba de gustar, así que se puede mejorar de la siguiente forma:
XNamespace deliciousNS = "http://purl.org/rss/1.0/";
var itemList = from item in xmlDoc.Descendants(deliciousNS + "item")
select new
{
title = (string)item.Element(deliciousNS + "title"),
url = (string)item.Element(deliciousNS + "link")
};
En este caso se define un objeto XNamespace con el namespace adecuado y se utiliza en todos aquellos sitios donde se necesite especificar el nombre completo del elemento. Como el tipo XNamespace sobrecarga el operador '+' se puede usar simplemente añadiendo entre comillas el nombre del elemento XML. Esto no se encuentra en la mayoría de los ejemplos publicados por ahí sobre LINQ to XML, donde se utilizan documentos XML sin definición de namespaces, cosa que no es muy habitual en el mundo real ¿no?
Publicado el 04/Nov/2005
Revisando todo lo que tenía por ahí tras recibir mi nuevo i-mate JasJar, me he encontrado con 5 dispositivos que he usado/uso habitualmente (uno de ellos es prestado para un proyecto). De momento, uno está retirado por completo, el primero de la foto, pero le estoy buscando alguna utilidad (algo de domótica ???).
De izquierda a derecha y de arriba hacia abajo son: Compaq iPaq 3660 (Pocket PC 2000, IR) comprado en un TechEd en Amsterdam, HP iPaq 5450 (Pocket PC 2003, IR, Bluetooth, WLAN), Motorola MPX 200 (Smartphone 2003, GSM, GPRS, IR), Qtek 9090 (Pocket PC 2003 SE Phone Edition, IR, Bluetooth, WLAN, GSM, GPRS) y por último i-Mate JasJar (Pocket PC 2005 Phone Edition, IR, USB, Bluetooth, WLAN, GSM, GPRS, UMTS), que es el que uso habitualmente desde ayer como Pocket PC y teléfono móvil.

En la foto faltaría un antiguo handheld de Compaq, parecido en formato al JasJar aunque más grande (no recuerdo el modelo concreto), que ya se jubiló y me lo desguazaron para extraerle 'sus partes'.
Publicado el 04/Aug/2005
Debido al creciente Spam en los comentarios del blog, he deshabilitado esta característica hasta que encuentre una solución.
Si quieres ponerte en contacto conmigo usa la página de contacto del Web.
Publicado el 19/Jul/2005
He añadido una nueva utilidad a la sección de herramientas. Se trata de un componente que permite enviar ‘pings’ de ICMP a equipos remotos desde aplicaciones Compact Framework en dispositivos Windows Mobile 2003.
Podéis descargar sólo el ejecutable para Pocket PC, aunque también disponéis del código para incorporarlo en vuestras aplicaciones.
Espero que resulte interesante.
Publicado el 26/Apr/2005
Por si alguien las quiere. Sólo tenéis que pedirlas.
Publicado el 16/Dec/2004
He añadido una nueva herramienta al Web que puede que os sea útil. Esta herramienta permite copiar una estructura de directorios de un sitio a otro, ya sea en la máquina local o en la red, sin copiar los archivos originales.
Permite realizar esta operación de manera recursiva, incluyendo todas las carpetas (y sus subcarpetas) del directorio de origen.
A mi me ha resultado útil para el mantenimiento de estructuras de carpetas donde almaceno archivos de log, y en migraciones de servidores.
Espero que os pueda servir también.
Publicado el 15/Dec/2004
Después de unos días actualizando servidores (en los que se aloja este blog y que yo mismo mantengo), voy a intentar ponerme al día en lo que al blog se refiere (sin ningún orden especial).
- Google sigue con sus experimentos y recientemente ha publicado un nuvo site llamado Google Suggest en beta todavía. En este site, han modificado un poco la página inicial de Google para que se muestren una serie de sugerencias según se va escribiendo la cadena de búsqueda. Lo hace mediante llamadas XML a los servicios Web que publica. A mi me parece una idea interesante, veremos en qué acaba.
- En este mismo sentido, MSN ha publicado su barra de herramientas que proporciona búsqueda en Internet, resalta las cadenas de búsqueda en las páginas encontradas, bloqueo de popups, integración con Messenger y Hotmail, etc. De la misma forma, ya tiene disponible la versión beta, en ingles sólo, de la barra de herramientas junto con la búsqueda en disco local, al estilo de la utilidad presentada recientemente por Google. Desgraciadamente no lo he podido probar porque no se instala en Windows Server, que es con lo que paso la mayor parte del tiempo. Aún así, ha recibido buenas críticas, así que ya me contaréis.
- Una nueva empresa llamada 'dotnetcpu' acaba de presentar un kit compuesto de hardware y software que se orienta a el mercado de aplicaciones embedded. Consiste en una placa de bajo consumo de energía que se puede programar directamente con .NET, lo que resulta muy interesante. Está pensada para el desarrollo de aplicaciones de robótica, sensores, captura automática de datos, etc. Si veo el momento, igual compro uno para continuar con un proyecto que tengo abandonado de una estación meteorológica amateur

- Según se publica en este artículo de Microsoft Watch, parece que Microsoft va a publicar un SDK para desarrollar juegos para Tablet PC. Si ya tenía ganas de tener uno (después de haber probado durante unos 15 días uno prestado) ahora ya no tengo excusa

- Por último, supongo que muchos ya sabréis que se ha lanzado una versión preliminar de WinFX para Windows XP. WinFX, para los que no lo sepáis, es la nueva plataforma de presentación (es decir, de creación del Interface de Usuario) de Windows. Incialmente se presentó unicamente como parte de Longhorn, pero parece que se va a hacer disponible para los usuarios de Windows XP también. Está disponible para su descarga para los suscriptores de MSDN, y necesita la versión 2.0 de .NET Framework (aún en beta). En cuanto haga pruebas con ello, os contaré cómo es.
Espero que por el momento esto os sirva de entretenimiento...
Publicado el 10/Oct/2004
En la sección de herramientas hay una nueva entrada de una utilidad que podéis descargar. Se llama BasicHTTPClient y es un utilidad que permite realizar consultas HTTP básicas en texto plano a un servidor Web y obtener el texto completo de la respuesta.
La diseñé para probar el desarrollo de servicios Web XML de manera que pudiese controlar completamente la solicitud a realizar (incluyendo cabeceras HTTP) y ver la respuesta exacta que da el servidor.
A mi me resulta útil, espero que a vosotros también 
Publicado el 10/Oct/2004
He añadido al Web Site una nueva sección de eventos donde encontraréis algunas de las presentaciones que he ido impartiendo en distintos sitios y acerca de temas diversos.
Espero que os resulten interesantes.
Publicado el 15/Sep/2004
Añadida nueva sección de links al Web Site
Publicado el 13/Sep/2004
Páginas modificadas para que incorporen soporte de XHTML y CSS.
|