Tutorial: Usando el Visual State Manager

mayo 16, 2009 14:03 by EugenioEstrada

image

Tras varios meses trabajando con Silverlight uno empieza a tener buenas práctivas y ver como es más productivo. Por la forma de programar con Silverlight nos obliga a manipular el layout de nuestra aplicación constantemente. Para ello tenemos tres opciones: programáticamente desde C#, con StoryBoards o usando el Visual State Manager (VSM a partir de ahora).

Para nuestro tutorial vamos a crear un control llamado AnimatedImage con un UserControl normal con un Image dentro.

<UserControl
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	x:Class="EugenioEstrada.AnimatedImage"
	Width="Auto" Height="Auto">
	<Grid x:Name="LayoutRoot">
		<Image x:Name="InternalImage">
		
		</Image>
	</Grid>
</UserControl>

Lo que queremos hacer con este control es sencillo, que al pasar el Mouse por encima de la imagen ésta se escale un 1,5. Y luego que al hacer Click (controlando el MouseDown y MouseUp del ratón) haga una animación. Para hacer las animaciones debemos definir los RenderTransform tanto del Grid como del Image:

<Grid x:Name="LayoutRoot" RenderTransformOrigin="0.5,0.5">
	<Grid.RenderTransform>
		<TransformGroup>
			<ScaleTransform/>
        		<RotateTransform/>
    			<SkewTransform/>
</TransformGroup> </Grid.RenderTransform> <Image x:Name="InternalImage" RenderTransformOrigin="0.5,0.5"> <Image.RenderTransform> <TransformGroup> <ScaleTransform/> </TransformGroup> </Image.RenderTransform> </Image> </Grid>

Sólo hemos definido el Scale, Rotate y Skew porque son los únicos que vamos a modificar luego. Y el RenderTransformOrigin define que el origen de las transformaciones será el punto central del elemento. Dentro del Grid vamos a definir el VSM y también debemos importar el namespace del VSM. Quedando así al final:

<UserControl
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:w="clr-namespace:System.Windows;assembly=System.Windows"
	x:Class="EugenioEstrada.AnimatedImage"
	Width="Auto" Height="Auto">
	<Grid x:Name="LayoutRoot" RenderTransformOrigin="0.5,0.5">
		<Grid.RenderTransform>
			<TransformGroup>
				<ScaleTransform/>
        			<RotateTransform/>
<SkewTransform/>
       </TransformGroup>
</Grid.RenderTransform>
        <w:VisualStateManager.VisualStateGroups>
<!-- A partir de ahora aquí -->
</w:VisualStateManager.VisualStateGroups>
        <Image x:Name="InternalImage" RenderTransformOrigin="0.5,0.5">
     <Image.RenderTransform>
        <TransformGroup>
        <ScaleTransform/>

        </TransformGroup>
        </Image.RenderTransform>
     </Image>
    </Grid>
</UserControl>

Ahora seguiremos dentro del VisualStateGroups, para hacernos una idea de como funciona el VSM  este define ciertos grupos de estados, por ejemplo para poder agrupar por estados que responden al mouse, estados comunes, etc. Sirve para agrupar estados de forma lógica reduciendo la combinatoria de éstos. Luego cada estado lo define un StoryBoard, que es el que establecerá el estado de la UI y luego se podrían definir transiciones entre estados para que no haya inconsistencias en el diseño. En nuestro caso solamente tendremos tresestados: Normal, MouseOver, MouseUp y todos los agruparemos en el VisualStateGroup que llamaremos CommonStates.

<w:VisualStateGroup x:Name="CommonStates">
	<w:VisualState x:Name="Normal"/>
	<w:VisualState x:Name="MouseOver"/>
	<w:VisualState x:Name="MouseUp"/>
</w:VisualStateGroup>

Para hacer esto recomiendo el uso de Microsoft Expression Blend (http://expression.microsoft.com) ya que es mucho más sencillo:

image

Empezaremos definiendo el estado Normal para verlo de ejemplo lo que hará es que desde un escalado del 150% pasará al 100% y esto se haría así:

<w:VisualState x:Name="Normal">
    <Storyboard>
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
            Storyboard.TargetName="InternalImage"
            Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
            <EasingDoubleKeyFrame KeyTime="00:00:00" Value="1.5"/>
            <EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
            Storyboard.TargetName="InternalImage"
            Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
            <EasingDoubleKeyFrame KeyTime="00:00:00" Value="1.5"/>
            <EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</w:VisualState>

 

Lo más complicado es el entender el TargetProperty que es el siguiente:

Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"

No es un acceso intuitivo (del estilo InternalImage.ScaleTransform.ScaleY) esto se debe a como funcionan las DependencyProperties de WPF/Silverlight que nos dará tema para otro artículo. Pero para hacer una vista muy rápida se debe a que las DependencyProperties son métodos estáticos que se encargan de hacer el get y el set mediante eventos. Esto nos permite luego usar todas capacidades de Data Binding que tiene tanto WPF como Silverlight. De una forma muy parecida vamos a crear los otros dos estados:

<w:VisualState x:Name="MouseOver">
	<Storyboard>
		<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="InternalImage"
			Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
			<EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="1.5"/>
		</DoubleAnimationUsingKeyFrames>
		<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="InternalImage"
			Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
			<EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="1.5"/>
		</DoubleAnimationUsingKeyFrames>
	</Storyboard>
</w:VisualState>
<w:VisualState x:Name="MouseUp">
	<Storyboard>
	    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="LayoutRoot"
			Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
			<EasingDoubleKeyFrame KeyTime="00:00:00.1000000" Value="30"/>
			<EasingDoubleKeyFrame KeyTime="00:00:00.2000000" Value="-30"/>
			<EasingDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0"/>
		</DoubleAnimationUsingKeyFrames>
	</Storyboard>
</w:VisualState>

Ahora llega el momento de escribir un poco de C#. Debemos manejar los eventos MouseMove, MouseLeave y MouseLeftButtonUp del InternalImage:

<Image x:Name="InternalImage"
	RenderTransformOrigin="0.5,0.5"
MouseMove="InternalImage_MouseMove"
MouseLeftButtonUp="InternalImage_MouseLeftButtonUp"
MouseLeave="InternalImage_MouseLeave">

 

Y la clase AnimatedImage queda de la siguiente forma con los manejadores de eventos:

using System.Windows;
using System.Windows.Controls;

namespace EugenioEstrada
{
	public partial class AnimatedImage : UserControl
	{
		public AnimatedImage()
		{
			InitializeComponent();
			VisualStateManager.GoToState(this, "Normal", false);
		}

		private void InternalImage_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
		{
			VisualStateManager.GoToState(this, "MouseOver", false);
		}

		private void InternalImage_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
		{
			VisualStateManager.GoToState(this, "MouseUp", false);
		}

		private void InternalImage_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
		{
			VisualStateManager.GoToState(this, "Normal", false);
		}
	}
}

VisualStateManager es una clase estática y la firma de su método GoToState es la siguiente:

public static bool GoToState(Control control, string stateName, bool useTransitions);

El parámetro control es aquel objeto que queremos cambiarle el estado, el stateName es el nombre del estado al que queremos cambiar y el último parámetro, useTransitions, se usa para establecer si se usarán las transiciones de estado o no, en nuestro caso como no hemos definido ninguna lo establecemos en false.

Y finalmente el resultado es el siguiente:

Tras este artículo se nos abren varias opciones de publicación como Dependency Properties, Data Binding, etc.

 http://twitter.com/eugenioestrada (tweet me!)


Actualmente calificado con 5.0 por 1 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

¡Feliz Navidad!

diciembre 23, 2008 12:49 by EugenioEstrada

Esta es nuestra felicitación navideña.


Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

silverlight 3

noviembre 26, 2008 17:51 by EugenioEstrada

El año que viene saldrá a las calles la tercera versión de Silverlight. Los datos hasta ahora lo avalan, más de 1 de cada 4 ordenadores conectados a Internet tienen Silverlight instalado. Lo cual se traduce en más de 100 millones de descargas de la versión RTM de Silverlight 2. No está nada mal, creo yo.

Bien, tras ser Silverlight una pequeña revolución, o una iluminación plateada :P, que nos ayuda a crear sitios web enriquecidos visualmente, Con ciertas novedades con respecto a su rival directo. Esta es la “no-existencia” de un lenguaje tan pobre como Action Script. A cambio nos brinda de lo mejor en cuanto lenguajes de programación C#, Python, Ruby o JavaScript, Visual Basic, etc.

Pues ya se empieza a hablar de la tercera versión la que acortará un poco las distancias con su rival.

Soporte para videos H.264, soporte para gráficos 3D, aceleración gráfico, data-bindings más ricos y más controles.

Por otra parte se completará la integración en Visual Studio y Visual Web Developer Express.

Y más cosas que tienen bajo la manga :)

Continuará en próximas betas…

http://www.lusco.eu/blog


Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

WoW. SecondLight, Surface SE?

noviembre 4, 2008 20:02 by EugenioEstrada

Hace poco tiempo, Microsoft nos sorprendió con Surface. Ahora mirad en que anda trabajando el equipo de UK.

 

Lo que haría este nuevo experiemento sería usar un papel translúcido para proyectar en él, contenido adicional. No salamente eso, sino que además detecta objetos en el aire, lo que provoco efectos "mágicos" como los que se ven en el vídeo.

http://lusco.eu/blog


Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ux series: el porqué del diseño y de la experiencia

octubre 15, 2008 23:20 by EugenioEstrada

Tengo a medias varios post que tratan el tema, como dije en el post anterior, sobre experiencia de usuario. Pero antes debemos decir de qué vamos a hablar. El concepto de experiencia de usuario engloba toda la entrada y salida de un objeto. En este caso la entrada sería la interacción del usuario con el objejo y la salida el aspecto visual.

Este concepto es realmente reciente, a pesar de que es algo que existe desde hace tiempo. Para poder realizar una interfaz de usuario hemos de necesitar de conociemientos de psicología y diseño. Un claro ejemplo en nuestro mundo informático es el siguiente:

Ejemplo:

Debemos realizar una aplicación que recoja los datos de unos asistentes en un evento que organiza una empresa para gente cercana de dicha empresa (pero no necesariamente empleados). Para ello debemos registrar el código de barras de la invitación, su nombre, su email y su edad.

Por ello le pregunta a su departamento informático cual sería la mejor solución. Además ésta sería para el resto de eventos que organizase. Éste departamento propone dos soluciones:

1) Usar una hoja de cálculo donde se irán introduciendo los datos.

2) Crear una aplicación, que se podrá usar para más eventos (ya que la empresa hace más eventos), donde ir registrando todos los asistentes.

La diferencia entre ambas soluciones es clara. La primera será mucho más rudo e incómodo que el segundo. No solo eso, los datos estarán no estarán organizados.

Esto sería la misma comparativa que si incluímos en nuestra aplicación un DataGrid únicamente. En este caso la experiencia sería nula. La misma que en la hoja de cálculo. Una hoja de cálculo no está pensada para eso. Se puede usar, si. Igual que podemos usar una bicicleta como silla dentro de nuestra casa.

Por lo tanto ahora debemos pensar qué debemos hacer con nuestra aplicación. Por un lado la presentación de datos debe ser mediante un DataGrid. Pero la filtración y la adhesión de nuevos elementos deben de ser diseñados siguiendo unos patrones en los que no solo el diseño (“lo bonito que sea”) entra en juego. Debemos aplicar principios de la psicología en cuanto a la interacción de los usuarios de tal forma que el flujo de nuestra aplicación sea coherente.

Por otra parte debemos resaltar el foco de la aplicación. Así como alertar de la forma correcta los errores y advertencias. Por otra parte el contexto sociocultural también debe ser tenido en cuenta en el proceso de diseño de nuestra interfaz. Ya que, como pasa entre el español de España y el español latinoamericano, lo que a pesar de que ambos sean el mismo lenguaje sus variaciones pueden provocar que lo que en uno sea correcto en otro es soez o vulgar.

En los próximos post hablaré sobre la interfaz de varias páginas web que me tienen muy impresionado tanto como diseñador de interfaces de usuario como programador de aplicaciones web.

http://lusco.eu/blog


Actualmente calificado con 3.0 por 1 personas

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ux: reflexionando más allá de la interfaz

octubre 3, 2008 10:03 by EugenioEstrada

En los últimos años el diseño de las interfaces de usuario han evolucionado mucho. Se ha pasado de desarrollar aplicaciones para las cuales hacía falta un master para aprender su uso, sin lógica (visual) ninguna, etc. Esto tiene lógica, el programador no tiene porqué saber de diseño, no es un diseñador. Por lo tanto lo que pueda salir de las manos de éste no será nunca algo ergonómico, ni visualmente atractivo.

Antes de que nadie se ofenda, quiero decir que siempre hay excepciones y todo dependé de qué aplicaciones estemos hablando, porque para una aplicación de consola no necesitaremos ningún diseño.

En las antguas aplicaciones se incluía todo en la ventana principal, reservando cada región de la pantalla para una funcionalidad especifica de la aplicación. ¿Esto era óptimo? Yo creo que no, y la historia lo confirma. La tendencia entonces fue a separar todas esas funcionalidades, teniendo la funcionalidad principal en la ventana principal y en unas “ventanas-popup” características extra. Pero éste modelo también tiene sus inconvenientes y es la pérdida del contexto. Cuando tu pides una funcionalidad extra y te sale una de estas “ventanas-popup” tu no sabes a que parte de la aplicación está afectando esto, de tal forma que sufrimos una perdida de contexto que genera frustración en el usuario.

Como podéis observar el encargado del diseño de una aplicación no solo debe saber de diseño gráfico, sino también de psicología. Ahora bien, la pregunta es, ¿debe de haber un rol específico de diseñador de interfaces de usuario? Yo creo que no, y bien, el motivo es que considero la programación como un proceso creativo en el que tu mente no solo debe conseguir abstrarse lógicamente sino saber llevarlo al campo visual.

El usuario no va a interactuar con el acceso a datos, ni la lógica de negocio, va a interactua con la interfaz de usuario, por ello el programador debe de tener los conocimientos necesarios para poder construír una interfaz rica visualmente, ergnonómica y con un flujo de ejecución lógico para evitar la frustración y el agotamiento.

Si nosotros desarrollamos una aplicación con una ergonomía pobre y con unas carencias en cuanto a diseño y lógica en su flujo, el usuario no sabrá que hacer, se pondrá nervioso, buscará la forma de hacer las cosas, se equivocará, se frustrará, continuará buscando y terminará estresado tras haberse peleado con la aplicación para aprender a usar la aplicación. Poniendo en juego no solo la salud psicológica del usuario sino también su tiempo, uno de los bienes más escasos y que más necesitamos.

Un ejemplo de buen diseño son los asistentes tipo “siguiente, siguiente, finalizar”. Mucho han sido criticados, pero realmente es un ejemplo que cabe destacar. La mayor parte de los usuarios están familiarizados con ellos, saben que el siguiente paso se llega al pulsar el botón siguiente, hasta que se encuentre con el de Finalizar o Cerrar. No digo, para nada, que sean la panacea, de hecho considero que su diseño se encuentra incluso antiguado para los medios actuales. Ahora bien, los diseñadores deben ponerse las pilas para crear algunas buenas prácticas a la hora de diseñar aplicaciones ágiles y ergonómicas.

Para ello algunas cosas a pensar en un nuevo diseño son:

  • Simplicidad de la aplicación
  • Destacar cual es el siguiente paso, o destacar el área de trabajo principal llamando la atención del usuario
  • La aplicación debe inspirar familiaridad o cercanía con el usuario para mejorar la autoestíma del usuario
  • Trucos, o ayudas integradas en la aplicación, métodos de busqueda en la ayuda con lenguaje natural (humano) en el contexto de la aplicación
  • Los extras en su contexto
  • Personalización de la aplicación al gusto del usuario: colores, temas, etc.

Un ejemplo de buena parte de estos puntos es Office (y más con su versión 2007, que cuenta con una excelente interfaz): simplicidad, contexto, familiaridad, personalización, ayuda, etc.

Solo con estos pasos podremos realiazar unas mejores interfaces. Por otra parte, si cuidamos los colores a usar y los iconos. Que por cierto los iconos deben incluír siempre una descripción, ya que para lo que para ti es guardar o proteger para otra persona bien puede ser cualquier otra cosa inesperada. Hay que intentar mejorar la fluidez de la aplicación, evitar malos refrescos, las interfaces colgadas a base de cargar datos, etc. Si se necesitan cargar datos se cargan en el splash de la aplicación, si es necesario crear unos controles o llenarles los datos obtenidos lo mismo, en el splash, para eso se ha creado.

Siguiendo esta línea, intentaré hacer una serie de post tratando el tema del diseño de interfaces. Buscando algunos consejos con los que nuestras aplicaciones mantengan un estilo y un diseño ergonómico y usable. En otros post también intentaré tratar el tema del desarrrollo Web empresarial.

http://lusco.eu/blog


Actualmente calificado con 3.0 por 2 personas

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Windows 7, ¿sistema operativo modular?

septiembre 15, 2008 18:12 by EugenioEstrada

Microsoft patentó, en diciembre de 2006 tras la salida de Windows Vista, la idea de sistema operativo modular. Pero, ¿qué es un sistema operativo modular? Un sistema operativo modular, a mi entender, es un sistema operativo basado en un núcleo que sobre él se van montando diferentes partes del sistema operativo, módulos, cómo puede ser la interfaz gráfica, el sistema de archivos, etc. Sin que el núcleo dependa de un módulo concreto. De esta forma ningún módulo depende de otro y si uno falla podemos cambiarlo.

La gente de Linux está muy familiarizada con este concepto. Nosotros podemos tener un sistema linux con diferentes interfaces gráficas como Gnome, KDE, Flux, etc.

Algunas fuentes especulan sobre Windows 7 como un sistema modular. Pero si vemos en Microsoft Technet las Principales razones para actualizar a Microsoft Windows Vista vemos:

“Diseño modular. Windows Vista se ha creado con componentes dependientes entre sí, lo que facilita en cierta medida su personalización para adecuarlo a necesidades específicas. El diseño modular también simplifica la adición de controladores de dispositivos, la comprobación e instalación de actualizaciones y la incorporación de idiomas.”

Por lo tanto la patente que hablabamos al principio seguramente se trate de/para/por Windows Vista. Además en Vista, podemos ver cierta modularidad en el hecho de tener varías versiones que se diferencian de sus características/módulos: Home Basic, Home Premium, Business, Enterprisa y Ultimate.

Que es diferente a XP, en el que se diferenciaban algunos programas y características. Pero estas no afectaban ni a la interfaz gráfia (la home basic no incluye Aero), ni al Media Center, etc.

¿Por lo tanto? ¿Windows 7 será más modular? No lo se, pronto tendremos una beta 1 en nuestras manos para comprobarlo. Para empezar solo tenemos anunciadas mejoras de rendimiento (pretender reducir a 15 segundos el encendido, a base de no iniciar servicios inútiles y bloquear aquellos de terceros que relenticen el sistema) y la mejora de la experiencia con pantallas táctiles.

Pronto tendremos el PDC 2008 (26 de octubre) y el TechEd IT y Developers (del 3 al 14 de noviembre) donde podremos saber algo.

www.lusco.eu/blog


Actualmente calificado con 5.0 por 1 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

¿Microsoft recomienda Firefox y Safari?

septiembre 15, 2008 18:10 by EugenioEstrada

Continuando el tema de septiembre, Google Chrome. Tras ver ese título mucho se puede sorprender, pero es la realidad, Microsoft empieza a hacer campaña anti-chrome. Esto se debe al pésimo navegador que ha liberado Google. Tras abanderarlo como un navegador hecho desde cero para la nueva generación de aplicaciones web, nos encontramos la primera gran mentira ya que incluye código de Apple (WebKit), Mozilla (Gecko) y Microsoft (C++, WTL). Pero no era la única bandera que traía este navegador consigo, sino que la seguridad ha sido otra bandera que ha sido necesario quitar, los primeros agujeros permitían la descarga (aún sin resolver) automática de archivos sin petición al usuario, ejecución de código malicioso, etc. Por no fijarse en las actualizaciones del WebKit.

Ante esta situación, en la que este navegador supone un gran agujero negro para el sistema. Recuerden que Google solo lo ha liberado para Windows. Esto, creo, que se debe a que llevar a otras plataformas la excelente librería WTL de Microsoft puede ser un poco complicado para los ingenieros de Google. Por ello, Microsoft ha decidido que la entrada a Windows Live Mail con Chrome tenga un paso más. Si entras con Chrome, te encuentras con el siguiente mensaje:

image

¿Cómo?¿Qué?¿Microsoft recomendando Firefox y Safari? ¡Pues sí! A pesar de que Google haya sido probado por la mayoría de los geeks, y la mayoría lo hemos dejado de usar decepcionados, Google ha incluído la recomendación en su página principal. ¿Estamos locos? Me apuesto algo a que muchos usuarios con algo de curiosidad lo han instalado y lo han usado. Usuarios potencialmente de Internet Explorer. Y Microsoft prefiere sacríficar estos usuarios en beneficio de la seguridad.

Y no es solo Microsoft quien no recomienda usar Chrome, Alemania contra 'Google Chrome' (elmundo.es).

http://www.lusco.eu/blog


Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

la información de internet

septiembre 11, 2008 20:02 by EugenioEstrada

A pesar de la cantidad de información que podemos encontrar en Internet, esta no está estructurada lo suficientemente bien como para analizarla informáticamente.

Esto se debe a que realmente la información la estamos presentando igual que se presentaría en papel. Nos hemos olvidado que la información digital tiene, si se lo damos, valor añadido. Si en Internet aumentasemos el número de datos que estamos mostrando, daríamos ese valor que ahora mismo carece. Cuando hablamos de la Web 3.0, la Web semántica, y del intento de organizar la Web, nos encontramos con ese preciso problema.

¿Cómo pretendemos catalogar la Web simplemente a través de un texto?

De momento dejo la respuesta en el aire. La llegada del RSS está suponiendo un cambio en los hábitos de navegación. ¿Para que me voy a tragar toda una página con su publicidad, comentarios, etc.? Si solamente quiero leer el contenido. Pero igual que pasó con la web la publicidad se está empezando a incluir en los rss, como n,o el dueño de Internet y la publicidad online, Google, tenía que estar detrás.

¿Porque está suponiendo este cambio? Bien, si nos vamos al rey de las busquedas en su versión de blogs lo podemos comprobar, http://blogsearch.google.com. Un blog, mediante el rss u otros metodos de sindicación como atom, expone una serie de cambios en la web. Si vemos la especificación de rss, http://cyber.law.harvard.edu/rss/rss.html, podemos ver como a una página le damos un título, un link, una descripción. No solo eso, también podemos especificar el autor de la página, el webmaster, el idioma, fecha de publicación, administrador, generador del documento, etc. Ya estmaos dando más información a la web.

Y BlogSearch de Google lo explota, nos permite (http://blogsearch.google.com/blogsearch/advanced_blog_search) busar por titulo, por autor, por rango de fechas de publicación. Estamos llevando la tercera dimensión a Internet. Lo mismo hace con su servicio de noticias, http://news.google.com/, donde además organiza por categoría, relevancia, noticias similares, etc.

Ahora bien, cuando se crearon los primeros estandares en internet la situación de la Web no era la actual. Ahora mismo podemos identificar principalmente dos tipos: páginas web y aplicaciones web. En estas segundas podemos separarlas por html classic, aplicaciones ajax y ria (Rich Internet Application). Por lo tanto no todas tienen contenidos. Pero por ejemplo páginas como Wikipedia, contienen la suficiente información como para que fuese bueno que se estructurase. Cosa que hace muchas veces mediante enlaces a otros temas, personas, etc.

El problema también lo encontramos cuando aparecen páginas ajax y RIP (Rich Internet Pages), ya que no son applicaciones, son páginas de contenido pero técnicamente usan metodologías ajax y tecnologías de RIAs (como Youtube).

HTML 5, se mueve hacia incluir un poco más de información. Si en vez de usar un player Flash o Silverlight, usamos un tag video, quien analice esa página sabrá que ahí hay un video, luego ya podrá analizar ese video para ver su contenido y como catalogarlo. Por lo tanto a donde quiero llegar, es que si en una web tenemos un tag <person></person>, <phone></phone>, <address></address>, etc. Podríamos darle valor añadido y, no solo eso, damos la opción al navegador a que ese <phone></plone> lo coja para un servicio de llamada, <person></person> que lo busque en tus contactos o <addrees></address> lo use word para escribir una carta.

Hacía ese sentido, o eso me ha parecido a mi, se mueve el proyecto de minería de datos, de Microsoft Live Labs, Entity Extraction. Que no se sabe mucho al respecto, pero tiene muy buena pinta.

www.lusco.eu/blog


Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

googlermano!

septiembre 10, 2008 20:07 by EugenioEstrada

¿Cuál es el motivo de la existencia de Google? La contestación de muchos es por y para internet, vive en internet. Sin internet Google no existiría.

Pero mis preguntas van más allá: ¿qué es? y ¿de que se nutre?. Bien Google, además de uno de los mejores sitios para trabajar según Fortune, es un cluster de 20.000 servidores. Estos se encuentran repartidos entre 7 data centers como Washington D.C. (USA), Herndon (Virginia, USA), Santa Clara (California, USA) o Zurich (Suiza). Cada uno de estos servidores bajo una instalación de Red Hat, tiene una memoria que ronda entre 256 MB y 1 GB de RAM. Y cada uno de estos servidores tienen uno o dos discos duros de 40 GB o 75 GB (lo que, si cada pc solo tuviera un disco de 40, serían 781,25 TB de almacenamientos, pero es más). Además tienen un único procesador Intel.

Siguiendo con los datos anecdóticos tiene más de 5,000 millones de búsquedas cada mes (dos mil por segundo aprox.) y tiene más de 3,000 millones de documentos.

Ahí es donde quería llegar yo, bajo esa carcasa de software libre, servidores de bajo costo, etc. Están alojados más de 3.000 millones de documentos. ¿Qué hay en esos documentos? Pues desde un googlesatélite orbitando hasta páginas web, videos (www.youtube.es), emails (www.gmail.com, junto a las conversaciones de chat de GTalk), historiales de búsqueda (www.google.es/history), blogs (blogsearch.google.com), noticias (news.google.com), artículos (knol.google.com), imagines (picassa.google.com), mapas (maps.google.com) y podría seguir con la infinidad de servicios que tienen.

Ahora ha decidido que va a convertirse en la hemeroteca mundial. Google podrá convencernos, o no, y vendernos un navegador, pero si dice que va a digitalizar más de 100 periódicos, va a recopilar y guardar esa información, Google lo hace. tiene los medios. Luego sabrá vendernoslo (ya se encargarán de hacerlo con la ayuda de esos periódicos), pero primero recopila la información.

Google no es internet, Google es información. Sobre esta afirmación, hoy salía otra noticia cuyo título es parecido a el de este post, pero el trasfondo es diferente. Google en sus logs guarda la información del usuario durante 9 meses (antes 18) donde relaciona la IP con las palabras buscadas con el fin de mejorar servicios. El problema se lo encuenta cuando productoras consiguen que Google les de esos datos. Por lo tanto, la única forma de no dar esos datos sería no almacenándolos.

Google es para nosotros como un hermano que nos escucha cuando necesitamos ayuda, sabe todo lo que debe saber de nosotros y siempre intenta mejorar los servicios para el bien de los usuarios, sus hermanos.

¿Qué sabe Google de nosotros?

http://www.lusco.eu/blog


Actualmente calificado con 5.0 por 1 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5