miércoles, 19 de septiembre de 2007

Diseño Interactivo: El Nuevo Rol Indispensable en los Equipos de Desarrollo de Software, Conferencia en SG '07

Como parte del SG'07 Conferencia y Expo estaré presentando una conferencia titulada: "Diseño Interactivo: El Nuevo Rol Indispensable en los Equipos de Desarrollo de Software".

La colaboración efectiva entre diseñadores y desarrolladores de software es un tema que me parece será cada vez más indispensable ejecutar de manera efectiva en empresas de software. Si les interesa asistir, por favor registrense al evento, me parece que vale mucho la pena (independientemente de mi ponencia) ya que habrá conferencias de personalidades importantes del desarrollo de software a nivel internacional.

Artículo sobre Tendencias en Desarrollo Embedded Publicado

Software Guru publica en su número de Septiembre-Octubre 2007 un artículo mío sobre "Embedded Software, Estado Actual y Tendencias". Este número incluye varios artículos sobre desarrollo embedded, incluyendo entre ellos también uno de Carlos Maya, un colega de emLink donde presenta como lanzar automáticamente un programa al arrancar Windows CE 6.0.

Les recomiendo mucho esta revista, en mi opinión es la publicación más seria sobre desarrollo de software que tenemos en México.

domingo, 15 de julio de 2007

Lo Mejor del Microsoft Worldwide Partner Conference (En mi Opinión)

La semana pasada estuve en Denver en el Microsoft Worldwide Partner Conference. Es la primera vez en varios años (desde 2001) que asisto a este evento y me pareció bastante bueno. En esta conferencia Microsoft se enfoca más a la parte de negocio que a la técnica. Decidí enfocarme totalmente a las conferencias de negocios ya que hay otros eventos mejores para lo técnico (como el Professional Developer Conference o Mix).

Dos pláticas en particular me parecieron excelentes y por si solas hicieron que valiera la pena el precio de admisión (nada barato en USD 1,600.)

La mejor sin duda fue "Karaoke Capitalism" de Jonas Ridderstrale (coautor del libro del mismo nombre y de uno anterior llamado "Funky Business"). Jonas es un excelente presentador y ha dedicado su investigación a la importancia en los negocios de la creatividad, la diversidad y las emociones como elementos clave para verdaderamente diferenciarse y alcanzar un éxito sustentable.

Otra excelente plática fue "The Starfish and the Spider" también del coautor del libro del mismo nombre Rod A. Beckstrom. El centro de la plático consistió en las ventajas de organizaciones descentralizadas en el mundo actual, desde las redes terroristas hasta el software libre. Rod utilizó ejemplos históricos para comparar organizaciones centralizadas con descentralizadas y me pareció en principio una teoría de management interesante.

Compré ambos libros y cuando los haya leído estaré compartiendo aquí mis puntos de vista.

viernes, 18 de mayo de 2007

Seguridad en Aplicaciones .NET: Dos Elementos Básicos

Hace unos días revisé una aplicación en .NET de un corporativo con la idea de encontrar posibles vectores de ataque. En general la aplicación está muy bien construida.

Sin embargo, hay un par de cosas que permiten atacarla y que estoy seguro que se presentan en muchos casos como este. En primer lugar la aplicación no estaba ofuscada. Siendo una aplicación cliente en Windows Forms, eso hace que sea fácil para cualquier atacante revisarla simplemente usando una herramienta como .NET Reflector de Lutz Roeder. Esta pequeña herramienta es una maravilla y genera código C# o VB altamente legible a partir de un ejecutable o DLL .NET. La ofuscación hace el código prácticamente ilegible e incremente varios órdenes de magnitud la dificultad de hacer una ingeniería en reversa. La herramienta más popular para ofuscar es Dotfuscator.

Una vez analizando el código es muy fácil invocarlo desde un programa hecho por nosotros para que haga cosas maliciosas. Marcar una clase como internal o un metodo como private o protected no es ninguna protección frente a un atacante ya que las reglas de acceso son aplicadas por el compilador, no por el .NET Framework. Invocar metodos privados o crear instancias de clases internas es perfectamente posible usando reflection.

¿Como protegerse? Este es justamente uno de los escenarios para los que Microsoft incluyó Code Access Security en .NET. Es posible marcar nuestras funciones y tipos para que sólo puedan ser utilizados por código que provee cierta evidencia. La evidencia soportada ya por .NET puede ser:

· URL: El url desde el cual se descargó el código.
· Site: Únicamente el hostname del URL.
· Zone: La zona de seguridad (definida por Internet Explorer)
· Hash: Un hash del assembly.
· Strong Name: El código debe de estar firmado por un publicador específico.

Además es posible definir nuestra propia evidencia a la medida en caso necesario.

Así que, recuerden verificar que quien esté llamando a su código esté autorizado para hacerlo si no quieren que alguien use su código para cosas indebidas.

miércoles, 25 de abril de 2007

Conferencia de Seguridad con .NET 3.0 en WebSec 2007

Mañana Jueves 26 voy a dar un breve taller sobre algunas de las nuevas funcionalidades de seguridad de .NET 3.0 y Vista en el evento WebSec organizado por Sm4rt e IDC. Específicamente, hablaremos de CardSpace, User Account Control y los modelos de seguridad de WCF. Pueden descargar la presentación de emLink aquí.

Está en formato de PowerPoint 2007. Si la quieres abrir en PowerPoint 2003 necesitas los convertidores que están aquí.

miércoles, 18 de abril de 2007

The Region: El Sitio Mundial de los MSDN Regional Directors

Esta semana la comunidad de MSDN Regional Directors de todo el mundo lanzamos el sitio "The Region". Este sitio es un consolidado de los blogs y las actividades de los MSDN Regional Directors de todo el mundo. Está en inglés pero de cualquier manera lo recomiendo como un excelente resumen de nuestros pensamientos como comunidad.

Un efecto secundario de este lanzamiento es que ocasionalmente estaré publicando entradas a mi blog en inglés (es la única manera de ser incluido en "The Region"). Sin embargo, cuando lo haga, siempre publicaré también la entrada equivalente en español.

domingo, 8 de abril de 2007

Vista Bridge: Utilizando Nuevas Características de Vista desde .NET 3.0

El kit de desarrollo para Windows Vista que se puede obtener de http://www.microsoft.com/downloads/details.aspx?familyid=c2b1e300-f358-4523-b479-f53d234cdccf&displaylang=en incluye todo lo necesario para que podamos desarrollar aplicaciones para este nuevo sistema operativo. De particular relevancia es la librería que viene incluida como ejemplo para controlar nuevas funciones de Windows Vista que no se alcanzaron a incorporar dentro del .NET Framework 3.0. Esta librería se llama VistaBridge y la podemos encontrar en la ruta C:\Archivos de Programa\Microsoft SDKs\Windows\v6.0\Samples\CrossTechnologySamples.zip después de instalar el SDK.
VistaBridge incluye tres proyectos:

· VistaBridgeControls contiene dos custom control para WPF que nos permiten crear con facilidad un Aero Wizard. Este tipo de wizards incluyen el nuevo estándar de Windows Vista, que representa la primera actualización importante para los wizards desde 1997 (¡hace ya bastante tiempo!)

· VistaBridgeLibrary contiene una librería completa para generar un nuevo tipo de diálogos cuya intención es sustituir y mejorar de manera radical a nuestro viejo amigo que existe desde la primera versión de Windows. El nuevo tipo de diálogos se conoce como TaskDialogs y nuestro viejo amigo es nada más y nada menos que el MessageBox. También incluye librerías para manipular con facilidad los nuevos diálogos comunes para apertura y salvado de archivos de Windows Vista y una clase auxiliar para ejecutar procesos o componentes con elevación de privilegios bajoi UAC (User Account Control).

· VistaBridgeDemoApp es una sencilla aplicación WPF que demuestra algunas de las funciones de las librerías de este ejemplo del SDK.

Este ejemplo del SDK es un excelente inicio para conocer como aprovechar las nuevas características de Vista desde aplicaciones Windows Forms o WPF. Puedes darle a tus aplicaciones un "look" mucho más moderno sin demasiado esfuerzo.

jueves, 29 de marzo de 2007

Evento ProNet Code Camp de la Comunidad. NET del D.F.

El Lunes pasado tuve el honor de dar una conferencia dentro de la gira ProNet Code Camp de Microsoft en el evento organizado por Developers Dot Net en la UNITEC campus Coyoacán. Esta plática la voy a volver a dar el próximo Martes 24 de Abril en el siguiente evento de la gira que será en el ITAM organizado por la Comunidad .NET del D.F.

Registrate aquí para el evento del 24 de Abril en el ITAM.

Entretanto, a solicitud de algunos de los asistentes que amablemente me contactaron, pueden bajar los ejemplos de código de aquí. Estos ejemplos fueron desarrollados en la Comunidad .NET del D.F. por Raúl Guerrero y un servidor. Espero que les sean de utilidad.

domingo, 25 de marzo de 2007

¿Qué es Aero en Windows Vista?

Windows Vista es el primer sistema operativo de Microsoft diseñado para aprovechar el hardware de aceleración gráfica de las PCs recientes para todas las ventanas. En versiones anteriores este hardware únicamente era explotado por aplicaciones de 3D que utilizaran las interfaces de programación de DirectX o de OpenGL. Este hardware es tan poderoso que en algunos modelos de PC rivaliza o incluso supera en poder al procesador central.
Windows Vista ofrece dos niveles de interfaz gráfica. La más simple se llama “Aero Basic“ y ofrece mejoras relativamente menores con respecto a Windows XP. La principal es el nuevo explorador de archivos y diálogos como los que vimos en la sección anterior. La versión más completa de la interfaz se llama “Aero Glass” e incluye una reingeniería completa del motor de despliegue gráfico de Windows. Esta versión está disponible en todas las versiones de Windows Vista excepto la “Home Basic”, siempre y cuando el hardware de video sea suficientemente poderoso[1]. Las principales ventajas que ofrece “Aero Glass” son:

· Ventanas con bordes translúcidos
· Animaciones de ventanas completas al minimizar y maximizar
· Vistas preliminares “en vivo” de todas las ventanas desde la barra de herramientas de Windows
· Windows Flip y Windows Flip3D sustituyen al Alt+Tab tradicional ofreciendo una vista preliminar del contenido de cada ventana, en 3 dimensiones en el caso de Flip3D (Tecla Windows + Tab)

Para soportar estos efectos nuevos en Windows Vista, fue necesaria una reingeniería completa de la arquitectura de dibujo del sistema operativo. Vista introduce el WDDM (Windows Display Driver Model). Por esta razón, para soportar los efectos de Aero Glass necesitamos estar utilizando un controlador de video específicamente diseñado para Windows Vista. Los controladores WDDM soportan la virtualización de los recursos de hardware de video. Es decir, los recursos pueden ser compartidos y negociados entre las diferentes aplicaciones que se están ejecutando.

Además del nuevo modelo de controladores de video, Windows Vista introduce al mercado DirectX10, una interfaz de programación para controlar las funciones más recientes del hardware de video que permitirá construir juegos de video aún más realistas. DirectX10 no es compatible con DirectX9. Sin embargo, las versiones 9 y 10 pueden coexistir en un solo equipo. DirectX10 no es necesario para ejecutar “Aero Glass”.

El componente de Windows Vista que se encarga de soportar la funcionalidad de Aero es el Desktop Windows Manager (DWM). DWM es un motor de composición muy poderoso que se encarga de dibujar el contenido de cada ventana del sistema operativo en un mapa de bits distinto en su propia sección de la memoria de video que después “compone” en la pantalla final que ven los usuarios. DWM está implementado en el ejecutable dwm.exe de Windows Vista. Funciona con una arquitectura cliente/servidor que permite incluso que el procesamiento o rendering de una escena en 3D sea realizado en un equipo, mientras que la presentación final se hace en otro. Así Vista ofrece soporte de primer nivel a funciones como el escritorio remoto[2]. A diferencia de versiones anteriores de Windows, con “Aero Glass” cuando movemos una ventana las ventanas que estaban detrás de esta no se invalidan ni se tienen que redibujar. El DWM puede entonces mezclar el contenido de una ventana con el de las ventanas que se encuentran detrás, permitiendo así el efecto translúcido de la interfaz “Aero Glass”. Lo más interesante es que es posible solicitarle al DWM que una parte del área cliente de nuestra ventana queremos que se dibuje con este efecto translúcido. El DWM controla todos los efectos “Glass” y restringe el acceso a ellos. Dado que el efecto translúcido se presenta en el área no cliente de todas las ventanas en Vista, en el momento en el que una aplicación no compatible intenta dibujar dentro de esta área, Vista regresa temporalmente al modo “Aero Basic” para todas las aplicaciones.

[1] Con un hardware insuficientemente poderoso, Windows Vista siempre funciona con la interfaz “Aero Basic”.

[2] Los programadores familiarizados con OpenGL podrán reconocer este tipo de arquitectura cliente/servidor.

martes, 13 de marzo de 2007

El MVP Summit

Esta semana voy a estar en el MVP Summit en Seattle. En particular me llama la atención la conferencia de Anders Heljsberg sobre LINQ....

jueves, 22 de febrero de 2007

Bill Gates va a dar personalmente el premio al mejor gadget mexicano para Windows Vista

Hola, hoy avisó Microsoft México que personalmente Bill Gates va a entregar el premio al mejor gadget mexicano durante su visita a México en Marzo. Así que si te llama la atención estrechar la mano del hombre más rico del mundo, este es tu chance. El consurso se cierra el 28 de Febrero que viene. Las bases están aquí.

lunes, 19 de febrero de 2007

Propiedades Dependientes en WPF

En .NET 3.0 se introduce un nuevo tipo de propiedades que extienden la funcionalidad de las propiedades tradicionales del CLR de .NET. Varias de las clases de WPF exponen este tipo de propiedades. A primera vista, podemos utilizar estas propiedades de la misma forma como utilizamos propiedades cualquiera. Sin embargo, existen diferencias importantes de las cuales debemos estar conscientes para comprender mejor el funcionamiento de WPF. Las propiedades dependientes le ofrecen a la infraestructura de WPF un mecanismo simple para modificar su valor de manera dinámica. Esta capacidad de afectar dinámicamente el valor de una propiedad es utilizada por WPF para soportar la siguiente funcionalidad:

1. Soporte a Recursos

En WPF podemos establecer directamente el valor de una propiedad directamente ligada a un recurso utilizando XAML así:

<dockpanel.resources>
<solidcolorbrush color="Red" key="MiBrocha">
<dockpanel.resources/>
<button content="Soy rojo" background="{DynamicResource MyBrush}">

En este caso la propiedad Background toma su valor del recurso llamado MiBrocha. Para poder fijar una propiedad con el valor de un recurso es necesario que esta sea una propiedad dependiente.

2. Ligado a Datos (Data Binding)

El ligado a datos de WPF se establece igualmente utilizando propiedades dependientes.

<button content="{Binding XPath=Team/@TeamName}"/>

En este ejemplo el contenido del botón está ligado a una ruta específica definida con XPath dentro de una fuente de datos XML. Sin embargo, para el ligado de datos, aunque es necesario utilizar propiedades dependientes, hace falta además que estas implementen la interface INotifyPropertyChanged.

3. Estilos

El manejo de estilos de WPF depende también de las propiedades dependientes. Los estilos están relacionados con el sistema de propiedades porque típicamente contienen setters o triggers que afectan el valor de las propiedades como vimos con anterioridad.

4. Animación

La animación en WPF consiste en cambiar el valor de una propiedad a través del tiempo. Para esto WPF también utiliza las propiedades dependientes.

5. Herencia de Valores

La herencia de valores de propiedades no tiene nada que ver con la herencia tradicional de la programación orientada a objetos. La herencia de valores se trata de propagar el valor de una propiedad desde un objeto hacia sus hijos en un árbol. Por ejemplo, podemos definir una propiedad dependiente a nivel de un Grid. Los elementos que existen dentro del Grid
pueden heredar el valor de la propiedad dependiente del que se ha fijado. Esto simplifica, por ejemplo, que todos los elementos gráficos dentro de un contenedor compartan el color del fondo u alguna otra propiedad similar.

Gracias a la herencia de valores habilitada por las propiedades dependientes, los siguientes dos fragmentos de código producen exactamente el mismo resultado gráfico en WPF:

<window class="EjemplosSimples.PropiedadesDependientesDos" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock fontsize="20">Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

<window class="EjemplosSimples.PropiedadesDependientesUno" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" fontsize="20" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock>Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

¿Encuentras la diferencia? El tamaño de la fuente en el segundo caso se establece a nivel de la ventana mientras que en el primero se establece en el bloque de texto.

jueves, 15 de febrero de 2007

Sáquale Provecho a la Búsqueda Integrada de Windows Vista

Windows Vista incorpora un poderoso motor de búsqueda que indexa todos los documentos existentes en la PC de manera automática. Ofrece la misma funcionalidad que Windows Desktop Search 3.0 pero viene ahora incluido con el sistema operativo. La búsqueda está presente en múltiples puntos del sistema operativo incluyendo:


· El Explorador de Archivos
· El Explorador de Internet
· Los Diálogos de Selección de Archivos
· El Panel de Control
· El Menú de Inicio


Adicionalmente, aplicaciones como Microsoft Outlook 2007 aprovechan el motor de búsqueda y se integran con él.
Como desarrolladores, podemos extender la búsqueda de Windows Vista de dos maneras:


· Podemos desarrollar aplicaciones que consuman el motor de búsqueda de Windows para presentarle resultados al usuario.
· Podemos desarrollar aplicaciones que extiendan el sistema de búsqueda de Windows para permitirle, por ejemplo, buscar nuevos tipos de documentos o con propiedades distintas.

Para desarrollar un consumidor de búsqueda la manera más simple es utilizar el proveedor OLE DB de búsqueda que viene incorporado a Windows. Es muy sencillo buscar utilizando este proveedor. Para establecer una conexión, basta con utilizar la siguiente cadena de conexión:

string connectionString = @"Provider=Search.CollatorDSO;Extended Properties='Application=Windows'";

Necesitamos saber además cual es la sintaxis que acepta este proveedor OLE DB para procesar nuestras consultas. En general, todas las consultas son de la siguiente forma:


SELECT [propiedades] FROM [nombredemaquina.]SYSTEMINDEX..SCOPE() [WHERE [predicados]]

Para nuestra fortuna, el SDK de Windows incluye un excelente ejemplo de desarrollo sobre la búsqueda que contiene una implementación básica. Este ejemplo lo podemos encontrar normalmente en C:\Archivos de Programa\Microsoft SDKs\Windows\v6.0\Samples\CrossTechnologySamples.zip\WindowsIndexSearchApp

En este ejemplo podremos encontrar las piezas más importantes que necesitamos. ¿Que columnas (propiedades) están soportadas? ¿Como especifico los predicados (filtros) de mis búsquedas?

miércoles, 17 de enero de 2007

¿Cual es la relación de .NET 3.0 con .NET 2.0?

El Microsoft .NET Framework 3.0 es una extensión de la versión 2.0. No modifica sustancialmente las áreas funcionales de la versión anterior como Windows Forms 2.0, ASP.NET 2.0, la librería de clases base y el CLR. En ese sentido, el cambio de 2.0 a 3.0 es muy diferente del cambio que se había dado entre versiones anteriores. Se trata de una liberación aditiva donde se agrega funcionalidad nueva más que generacional dónde se evoluciona la funcionalidad anterior.


Image Hosted by ImageShack.us

Los elementos verdes son los que se introducen en esta nueva versión, mientras que los azules se mantienen igual que en la versión 2.0. Es importante considerar que al instalar la versión 3.0 del .NET Framework, siempre se instala también la versión 2.0 de este. Es decir, el instalador de la versión 2.0 está incluido en el de la versión 3.0. Por esta razón, la versión 3.0 es 100% compatible con la versión 2.0.

martes, 9 de enero de 2007

Hay que apurarse - Desafío Gadget de Microsoft

Les recuerdo que el "Desafío Gadget" de Microsoft está abierto hasta el 14 de Marzo. Es una buena oportunidad de dar a conocer su talento como desarrolladores Vista. Más información en:

http://www.microsoft.com/spanish/msdn/latam/desafiogadget/terminos.aspx

jueves, 4 de enero de 2007

Service Pack 1 para Visual Studio 2005 Liberado

Recientemente Microsoft liberó el Service Sack 1 para Visual Studio 2005. Lo pueden descargar de aquí: http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&DisplayLang=en . Tiene muchas correcciones de bugs y además implementa el soporte oficial para que VS2005 funcione en Vista.