Wednesday, August 25, 2004

Wonderful User Interface

El Microsoft Center for Information Work (MSCIW), fue uno de los ganadores en uno de los eventos de diseño mas importantes del mundo, Industrial Design Excellence Award, hace un año atras.



Este proximo entorno de trabajo, propuesto por Microsoft, estara orientado a incrementar la productividad de nosotros, es decir todo aquel que interactua con una PC para su trabajo del dia a dia.

Incluira productos de los prototipos que han sido planeados dentro de ese amplio conjunto de ideas que emergen del equipo de Microsoft Research y otras divisiones de Microsoft.

Desde otra perspectiva

Click para ver en popup

La interfaz de usuario deberia ser muy diferente a las que actualmente apreciamos en nuestra PCs.

Podria ser algo como lo que podemos ver en el siguiente link, para sacar provecho de ese precioso monitor pantalla enormemente ancha, que vemos en la primera imagen.

Click para ver en popup

Simplemente, alucinante!!!

El proximo release de Windows, codename Longhorn, que seria liberado el 2006, no participara concretamente de todas estas bondades, aun. Pero es el inicio para ello.

Longhorn - Contact User Experience
http://www.msdn.microsoft.com/longhorn/default.aspx?pull=/library/en-us/dnaero/html/wux_topic_contacts.asp

Esto ultimo no deberia verse tan distante o lejano en el tiempo. Si se tiene la curiosidad de experimentar con ello, ahora en nuestras PCs, solo es cuestion de preguntar ¿como lo consigo? ;)

MSN Web Messenger, Wow Yeah!!!

Los primeros dias de agosto fue liberada la version web de MSN Messenger.

http://webmessenger.msn.com/

A pesar que contabamos con diferentes medios para poder estar online a traves de nuestra propia cuenta, cuando no teniamos el permiso para poder instalar el cliente del MSN Messenger o el firewall bloqueaba los puertos. Algunos de esos medios no brindaban una autentificacion Passport.NET directa hacia el usuario por lo que nuestro muy codiciado password podia estar viajando por la red a su libre albedrio. Nada seguro por cierto.

Algunos hemos usado Hopster desde hace algun tiempo atras cuando nos encontrabamos enclaustrados en algun ambiente si salida al MSN Messenger. Con algunas limitaciones como no poder usar la Web Cam o el Audio, pero a no tener nada ;)

Ahora no tendremos que hacer tantos artificios para poder estar online con nuestro contactos.

A pesar que solo brinda un numero limitado de conecciones, pues aun es un trial. Sigue siendo una opcion interesante.

Asi que si ves un iconito con el mundo verde-azul dentro de tu lista de contactos, te percataras que ese contacto esta logeado sobre el nuevo MSN Web Messenger.

Por cierto, uno de los requerimientos para usarlo es:

Sobre Microsoft Windows
- Microsoft Internet Explorer 5.0 +,
- Netscape 7.0 +,
- Mozilla 1.6 +

Desde estos browser con soporte JavaScript:
Podria trabajar sobre OS-X (con Camino) y Linux (con FireFox).

Al parecer tambien trabaja sobre MAC OS 8/9 con IE 5.1 :)

Tuesday, August 24, 2004

Handling Events and Delegates

Una de las cosas mas interesantes que trajo consigo la llegada de ASP.NET, aya por el año 2002, fue la posibilidad de encapsular logica e interfaz de usuario a traves de los ahora muy conocidos Web User Controls.

Esto nos ha permitido reutilizar dichas funcionalidades a lo largo de nuestro projecto web, permitiendo reducir algunas lineas de codigo, haciendo mas sencillo y flexible los posteriores mantenimientos.

Sin embargo, la manera profesional de trabajar con los Web User Controls consiste en definir eventos, a partir de los cuales se envian mensajes hacia la entidad que los contenga, que generalmente son Pages u otros Web User Controls.

La intencion esta en que las paginas ASP.NET, asuman el rol de gestores de los eventos de los diferentes Web User Controls que contengan dentro de el.

Les alcanzo un pequeño ejemplo que podria mostrar lo sencillo que es definir un evento para un Web User Control, haciendo uso de un Delegate que define cierta firma a la que se ha de ajustar el evento que deseamos publicar.


Archivo .ASCX


<%@ Control Language="c#" AutoEventWireup="false" Codebehind="SearchEngine.ascx.cs" Inherits="DemoWebAppCSharp.Event.SearchEngine"%>
<asp:TextBox id="_text" runat="server"></asp:TextBox>
<asp:Button id="_go" runat="server" Text="Go"></asp:Button>

--- End File ---

Este archivo define como se ha de estructurar la interfaz del usuario para este Web User Control en particular.

Algo tan simple como un TextBox y un Button para un sencillo buscador.


Archivo .ASCX.CS



namespace DemoWebAppCSharp.Event
{
using System;
using UserInterface;

/// <summary>
/// Definimos el delegate que define la firma con la que publicaremos el evento
/// </summary>
public delegate void ClickedEventHandler( Object sender, ClickedEventArgs e );

/// <summary>
/// Este Web User Control hereda de un clase que permite encapsular
/// cierta funcionalidad similar para todos los controles de
/// nuestro projecto web
/// </summary>
public class SearchEngine : CustomControl
{
protected System.Web.UI.WebControls.TextBox _text;
protected System.Web.UI.WebControls.Button _go;

/// <summary>
/// Publicamos el evento Clicked del tipo ClickedEventHandler
/// el delegate que habiamos definido lineas arriba
/// </summary>
public event ClickedEventHandler Clicked;

/// <summary>
/// Es requisito sobre-escribir este metodo para todo Web User Control
/// que diga decente :)
/// </summary>
/// <param name="e">Uhmmm... obvio!!!</param>
protected override void OnInit( EventArgs e )
{
base.OnInit( e );

// Enganchamos el metodo SearchEngine_Load al evento Load del control
this.Load += new EventHandler(SearchEngine_Load);

// Enganchamos el metodo Go_Click al evento Click del Button
this._go.Click += new EventHandler( this.Go_Click );
}

private void SearchEngine_Load(object sender, System.EventArgs e)
{
}

/// <summary>
/// Este metodo estara enganchado al evento Click del Button
/// que se muestra en la interfaz del usuario del Web User Control
/// y soltara el evento propio de este control para dicha accion Clicked.
/// </summary>
/// <param name="sender">Una instancia de quien ocasiona el evento</param>
/// <param name="e">Informacion del evento</param>
private void Go_Click(
Object sender,
EventArgs e )
{
// Lanzamos el evento Clicked. Alguien lo gestionara y sino no hay problema
if( this.Clicked != null )
this.Clicked( this, new ClickedEventArgs( this._text.Text ) );
}
}

/// <summary>
/// Esta clase encapsula cierta informacion particular para el evento Clicked
/// del Web User Control que estamos implementando SearchEngine.
/// Lo unico que enviara es el texto que fue ingresado en el TextBox del
/// control para que se realize la accion esperada del usuario.
/// </summary>
public class ClickedEventArgs : EventArgs
{
private String _text;

public ClickedEventArgs( String Text )
{
this._text = Text;
}

public String Text
{
get { return this._text; }
set { this._text = value; }
}
}
}

--- End File ---

Aqui implementamos la manera en como nuestro Web User Control ha de interactuar con el usuario. En funcion a las opciones que permitamos, realizaremos ciertas acciones a traves de Eventos. En este caso particular, al hacer 'click' sobre el Button lanzaremos el evento Clicked propio de este Web User Control.

Para ello tenemos que engancharnos al evento Click del Button y dentro de su implementacion disparar nuestro propio evento, Clicked.

Debido a que tenemos la intencion de enviar cierta informacion a traves del evento. La manera de llevarlo a cabo es usando el definiendo una clases que herede de EventArgs. En nuestro caso particular ClickedEventArgs. El cual solo cuenta con una propiedad llamada Text, donde colocaremos el dato que haya ingresado el usuario sobre el TextBox del Web User Control.

El evento que publicaremos debe ajustarse al Delegate que hemos definido, ClickedEventHandler. Este delegate se ajusta a cierta firma, propia para este evento.

No hubiera sido necesario definir este Delegate si no hubieramos visto conveniente una firma particular para el evento o enviar informacion a traves de el.

En ese caso, hubiera sido suficiente definir el evento Clicked del tipo EventHandler, el delegate por default. De ese modo, ya no seria necesario enviar informacion adicional como parte del evento. Entonces tendrias que usar EventArgs.Empty en el momento de lanzar el evento Clicked.



Archivo .ASPX



<%@ Register TagPrefix="Custom" TagName="SearchEngine" Src="SearchEngine.ascx" %>
<%@ Page language="c#" Codebehind="Holder.aspx.cs" AutoEventWireup="false" Inherits="DemoWebAppCSharp.Event.Holder" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Holder</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table>
<tr>
<td>
<Custom:SearchEngine id="_engine" runat="server"></Custom:SearchEngine></td>
</tr>
<tr>
<td>
<asp:TextBox id="_show" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</form>
</body>
</HTML>

--- End File ---

Este archivo contiene el Web User Control y un TextBox.

La intencion con propositos de testeo, es la de pintar el texto ingresado por el TextBox del Web User Control sobre el TextBox de la Page.


Archivo .ASPX.CS



namespace DemoWebAppCSharp.Event
{
using System;
using UserInterface;

/// <summary>
/// Esta es la pagina que contendra el Web User Control que hemos implementado
/// Por cierto, hereda de una pagina que define cierta funcionalidad similar
/// para todas las paginas de nuestro proyecto web.
/// </summary>
public class Holder : CustomPage
{
protected System.Web.UI.WebControls.TextBox _show;
protected SearchEngine _engine;

/// <summary>
/// Del mismo modo, que para el Web User Control es requisito para
/// toda Page que se diga decente.
/// </summary>
/// <param name="e"></param>
protected override void OnInit( EventArgs e )
{
base.OnInit( e );

// Enganchamos el metodo Holder_Load al evento Load de la page
this.Load += new EventHandler(Holder_Load);

// Enganchamos el metodo Engine_Clicked al evento Clicked de Web User Control
this._engine.Clicked += new ClickedEventHandler( this.Engine_Clicked );
}

private void Holder_Load(object sender, System.EventArgs e)
{
}

/// <summary>
/// Este es el metodo que se enganchara al evento Clicked del Web User Control
/// y que dentro de su implementacion realizara la tarea que creemos
/// conveniente. Pero dicha accion estara dentro de la jurisdiccion de la Page.
/// </summary>
/// <param name="sender">La instancia de quien genera el evento</param>
/// <param name="e">Informacion propia de este evento</param>
private void Engine_Clicked(
Object sender,
ClickedEventArgs e )
{
// Algo tan sencillo como pintar el texto ingresado por el control sobre otro TextBox
this._show.Text = e.Text;
}
}
}

--- End File ---

Para llevar a cabo dicho testeo, tenemos que subscribirmos al evento Clicked del Web User Control. De esa manera, coger la informacion que trae consigo el evento para poder realizar una accion. En este caso, ClickedEventArgs nos brinda el dato que el usuario hubiera ingresado sobre el TextBox del Web User Control. El cual nosotros cogeremos para poder colocarlo sobre el TextBox de la Page.

Monday, August 23, 2004

Searching .NET PetShop 4.0...???

Leyendo el blog de Chris Strevel, uno de los fundadores de Intellekt.NET una joven empresa mejicana dedicada a las Tecnologias de Informacion, me encontre con este post:

Microsoft .NET PetShop
http://intellekt.ws/dottextweb/chris/archive/2004/08/07/361.aspx

Curiosamente, Chris nos cuenta sobre la nueva version liberada del .NET PetShop. A lo que le preste atencion inmediatamente, pensando que seria algun nuevo release.

Me dispuse a ingresar al GotDotNet, pero solo encontre la version con la que ya venia trabajando desde hace un tiempo :(

¿Que paso Chris? ¿Por que nos haces esto?

Wednesday, August 18, 2004

Windows XP Service Pack 2

Microsoft, a liberado el nuevo service pack para Windows XP, esta ultima semana que paso.

Este parche, esta orientado muy verticalmente al tema de seguridad. Que por cierto, es una de las preocupaciones de mayor prioridad dentro de las instalaciones de Redmond.

Sin embargo, existen algunos escenarios en los que estas nuevas prestaciones para Windows XP a traves de este nuevo Service Pack, impactan sobre nuestras aplicaciones de hoy. Es tarea de la gente de soporte, plataforma y desarrollo conocer mas fondo lo nuevo que trae esta segunda version para poder tomar los correctivos necesarios.

Claro si en tu centro de labores siguen con W98. No te preocupes de nada :)

Les alcanzo algunos links que podrian serles de utilidad para este nuevo dolor de cabeza.

Vídeos, instrucciones paso a paso y mucho más
http://support.microsoft.com/default.aspx?scid=fh;[ln];xpsp2cnfghowto

Interesantes videos que nos permitiran apreciar como configurar nuestras PCs con Windows XP + SP2

Microsoft Windows XP SP2 Screenshots
http://www.microsoft.com/presspass/press/2004/aug04/0806WinXPSP2Images.asp

Darle un ojito a estos screen-shots para darse una idea de lo que nos toca vivir.

Windows XP Service Pack 2 - Overview Developers
http://www.tonygoodhew.com/downloads/DEV270WindowsXPSP2DeveloperOverview-tgoodhew.zip

Esta es una presentacion que nos muestra el punto de vista de los developers para con el SP2 del WXP

Source Code for Demo
http://www.tonygoodhew.com/downloads/democode.zip

Los codigos fuentes de las demos que se realizaron en esta presentacion.

Microsoft Windows XP Service Pack 2 Platform SDK RC2
http://www.microsoft.com/downloads/details.aspx?FamilyID=9be921b3-585e-47d9-bcc1-980879b69b34&displaylang=en

Para poder hacerle un build a los Projectos de C++.NET que vienen con el source code deben bajarse el Platform SDK para el Service Pack 2.

Y obviamente haberse descargado el Service PAck 2, pe.
http://www.microsoft.com/downloads/details.aspx?FamilyId=049C9DBE-3B8E-4F30-8245-9E368D3CDB5A&displaylang=en

Friday, August 13, 2004

3D Support in Longhorn 4074

Aplicaciones tan impactantes -como se prensentan en este screenshot- podran realizarse en la proxima version de Windows, codename Longhorn.



Este ejemplo fue presentado en el ultimo WinHEC.

Si tienen instalado el Longhorn Build 4074 y su respectivo SDK. Entonces podran apreciarlo en su propia PC, descargando el codigo fuente desde aqui.

http://www.microsoft.com/downloads/details.aspx?familyid=9C1724D1-B63E-4D7D-835A-FF94A1FAD311&displaylang=en

Tener en cuenta que un requesito, aun para este build, es contar con una tarjeta aceleradora 3D como la GeForce FX 5900, ATI 9800 XT o alguna superior. Para el 2006 estas tarjetas seran mucho mas comodas de lo que ahora estan. Y seran parte de la configuracion basica para una PC de oficina. Como tener un procesador de 4GHz, HDD de 200GB, Memoria de 1GB DDR-II, etc.

Vale recalcar, que es necesario contar con el SDK que le corresponde al Build 4074, para poder compilar los fuentes y obtener el resultado esperado. Los SDKs de los build anteriores de Longhorn como el 4051 liberado en el PDC de octubre del año pasado, no te permitiran compilar siquiera. Pues muchos namespaces han sido cambiados y algunas propiedas dejadas en desuso.

System.MSAvalon --> System.Windows

.Visible (True/False) --> .Visibility (Visibility enum)

En caso, tengas los .EXE de una aplicacion para Longhorn, ya no es necesario contar con el SDK. Solo ejecutarlo.

Longhorn 4074 - WinHEC Build

El nuevo build de Longhorn, el codename para el proximo release de Windows, fue liberado en el ultimo WinHEC realizado en Mayo de este año.

http://www.microsoft.com/whdc/winhec/default.mspx

Podras instalarlo, sobre una particion de tu HDD o sobre una instancia de tu VPC2004, por cierto en este ultimo escenario, se demora un tiempo excesivamente largo. Lo ideal seria realizarlo de la primera forma.

Al testear el build te percataras que un pequeño bug. Simplemente no podras crear carpetas a traves de la interfaz del Windows Explorer. He aqui la solucion.

/***
Click on Start, then Run.
Type regedit, click on OK.
Go to HKEY_CLASSES_ROOT/.Folder (not Folder but .Folder with a dot) Double-click on (Default)
Type "Folder" (without the quotes) in the value data zone, then click on OK.
Close regedit.
***/

Nada es perfecto :)

Thursday, August 12, 2004

Windows Longhorn Glass Look

Aero es un conjunto de recomendaciones, lineas guia y valores en la experiencia de usuario, que permitiran a tus aplicaciones obtener un mayor provecho de las nuevas bondades que tendremos sobre el nuevo release de Windows, codename "Longhorn".

http://w3future.com/2003/glass/glass.html

Este link solo intenta mostrar que tan agradables podrian ser las nuevas interfaces de usuario de nuestras futuras aplicaciones. Obviamente no usa Longhorn para esto, aun. Solo JavaScript, CSS, filtros IE, etc.

Muy bonito. ¿Verdad?