9.19.2007
Diseño Interactivo: El Nuevo Rol Indispensable en los Equipos de Desarrollo de Software, Conferencia en SG '07
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
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.
7.15.2007
Lo Mejor del Microsoft Worldwide Partner Conference (En mi Opinión)
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.
5.18.2007
Seguridad en Aplicaciones .NET: Dos Elementos Básicos
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.
4.25.2007
Conferencia de Seguridad con .NET 3.0 en WebSec 2007
Está en formato de PowerPoint 2007. Si la quieres abrir en PowerPoint 2003 necesitas los convertidores que están aquí.
4.18.2007
The Region: El Sitio Mundial de los MSDN Regional Directors
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.
4.08.2007
Vista Bridge: Utilizando Nuevas Características de Vista desde .NET 3.0
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.
3.29.2007
Evento ProNet Code Camp de 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.
3.25.2007
¿Qué es Aero en Windows Vista?
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.
3.13.2007
El MVP Summit
2.22.2007
Bill Gates va a dar personalmente el premio al mejor gadget mexicano para Windows Vista
2.19.2007
Propiedades Dependientes en WPF
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.
2.15.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]
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?
1.17.2007
¿Cual es la relación de .NET 3.0 con .NET 2.0?
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.
1.09.2007
Hay que apurarse - Desafío Gadget de Microsoft
http://www.microsoft.com/spanish/msdn/latam/desafiogadget/terminos.aspx