EssentialFox 2004
Inicio

Pre Conferencias

Sábado Mañana

Sábado Tarde

Domingo Mañana

Domingo Tarde

Lunes Mañana

Lunes Tarde

Galerías

 

... a Conferencias

 
Anuncios






 
© PortalFox

EssentialFox 2004

Reporte de la Conferencia DevEssentials 05.06.2004 - Sesión mañana

Por Amby

Russ Swall, Manager de Vision Data Solutions, entidad organizadora de este evento DevEssentials, dio la bienvenida , dedicando un saludo especial a los que han venido por primera vez y especialmente a los que han venido del extranjero, J hay varios países representados, hasta hora sólo conozco que ha venido gente de Canadá, Australia y España. Se vieron aspectos de logística, entre ellos algunas sesiones extras que se van a ofrecer en las noches, sobre frameworks y productos existentes en el mercado que permiten obtener aplicaciones de alta calidad y ahorrando mucho tiempo. Son de pago.

El keynote muy temprano en la mañana estuvo a cargo de Ken Levy.

VFP 9.0 Beta por Ken Levy – Product Manager Visual Studio

Esta sesión se puede resumir con ir a la ayuda de VFP 9.0 y ver las cosas nuevas que trae. Ken Levy pasó muy por encima de algunos aspectos, sin apenas profundizar en nada, por el escaso tiempo y el gran volumen de información.

Para este, y los siguientes temas del día de hoy, se recomienda estudiar los ejemplos y las explicaciones que están en el fichero VFP9RELNOTES disponible para libre descarga en http://msdn.microsoft.com/

Mencionaré muy brevemente algunos de los aspectos a los que se refirió, paso por alto deliberadamente los aspectos relacionados con los informes, porque ya habrá tiempo para verlos con calma.

Mostró las nuevas características para el tratamiento de datos con SQL:

  • más de 9 joins, múltiples niveles de subconsultas, posibilidad de empleo de datos buffered
  • Auto-refresh para datos remotos (genial para cuando se utilizan claves idénticas en SQL Server y quiere tomar el valor después de añadir un nuevo registro)

Nuevo tipo de índice binario (Binary) para DELETED()

Funciones, son muchas nuevas, entre ellas:  ICASE() – Evalúa el resultado en una lista de condiciones, si se quiere es una mezcla entre el IF y el DO CASE, la idea es que se van poniendo separadas por comas las condiciones y el resultado en caso de que se cumpla, al final queda un OTHERWISE que indica el resultado en caso que no se cumplan ninguna de las condiciones previas. CAST()  - Convierte de un tipo de dato a otro, esta función da para mucho, está documentada en la ayuda con las posibilidades y requerimientos.

Nuevos tipos de datos: varchar, varbinary, y blob para incrementar compatibilidad con SQL Server 2000 y Yukon (futura versión de SQL Server). Ken dice que la base del trabajo con VFP son los datos y por eso se le ha dedicado mucho esfuerzo a las mejoras con nuevos tipos de datos y mayor enlace con SQL Server

Nuevo soporte jerárquico extendido XML para interoperabilidad .Net (extended hierarchical XML support for .NET interoperability)

- se incluye XML jerárquico aninados, esquemas XSD extendidos y script XPath

Mejoras en la interfaz de usuario:

- para controles con imágenes, espaciados y poli-puntos (PolyPoints) – Determina la posición de la imagen con respecto al texto y los espacios entre imagen y texto.

- Fichas predeterminado – Recordemos que la versión 8.0 trajo mejoras significativas en las fichas

- Editor de propiedades custom

- Mayúsculas en propiedades. Ahora podremos crea una propiedad PropiedadNueva y asignarle inmediatamente su valor por defecto, desde el mismo cuadro de diálogo donde la creamos. Antes nos aparecía propiedadnueva y para asignarle su valor predeterminado teníamos que ir a la ventana propiedades y modificarlo allí.

- Posibilidad de anclar (Dock) ventanas de usuario – En VFP 8.0 hubo mejoras en cuanto a este tema, en esta versión, además, permite anchar una herramienta o barra de herramientas del Entorno de programación interactivo (IDE) al escritorio de Visual FoxPro u otra ventana del IDE….. Ahora, es posible anclar un formulario de usuario, o incluso  permitir que sea el mismo,  empleando la propiedad Dockable. Además, las herramientas de VFO surgidas en la versión 8.0 Task Pane, ToolBox, así como el Class Browser, podrán ser también anclados dentro del IDE de VFP.

- Posibilidad de anclar controles para formularios redimensionables. – Esta posibilidad es a nivel de contenedor padre, es una gran mejora que ata la posición y/o el tamaño del control al objeto contenedor permitiendo facilidades para establecer los anclajes deseados en un formulario.

- Posibilidad de Word-Wrap para textos en casillas de verificación

- Enlazar un cuadro de lista a una colección.

- Rotar etiquetas

- Campos MEMO en la ventana examinar, sigue apareciendo la palabra Memo; pero al posicionarte con el mouse, sin hacer clic, se muestra una ventana con el contenido del memo, es más bien un shape (cuadrado o rectangular) Esto está muy bien, la gente aplaudió. Ya no hay que dar doble clic para entrar y enterarte del contenido del campo y luego volver a salir.

- Autocompletar entradas en cuadros de texto. Es decir, si tenemos un textbox, cada vez que entramos un valor este se va a guardar en una tabla que permanece disponible (aunque no la vemos) para esa sesión de trabajo, entonces, al volver al textbox podemos ver en un combobox los valores que habíamos introducido antes y al empezar a escribir se va a ir completando con esos valores.

- Nuevas propiedades para Line y Shape. Crear formas poligonales y curvas Bezier mediante el empleo de arreglos de datos. De esta forma se pueden crear gráficos como imágenes sin incrustar gráficos (basado sólo en datos, gráficos de líneas, pastel y otros.

- Posibilidad de obtener los gráficos de ondas devueltas por las funciones trigonométricas SIN() y COS()

- Shortcut keys para botones de comandos con imágenes (sin título - caption). Esto es que si la imagen contiene un texto es posible crear un shortcut para la imagen.

Nuevos favoritos y propiedades para configurar

IntelliSense

- en sentencias WITH/ENDWITH

- en campos memo con colores opcionales en tiempo de diseño y de ejecución 

Background Compiler – Es una característica nueva que permite mostrar una representación visual de la línea actual, indicando si es válida o no para en compilador de código fuente de VFP, antes de que el código sea guardado y ejecutado.

Hay al menos una docena de mejoras que superan los límites de VFP 8.0, como son: permitir arreglos de más de 65K de elementos, más de 128 niveles de anidamiento de DO, tamaño de los códigos fuente en  PRG.

Recordemos que en la ayuda tenemos un resumen de las posibilidades nuevas que ofrece VFP 9.0,  contamos con las últimas cartas de Ken Levy, que también resumen bastante, los archivos que han sido liberados para descarga pública con bastante explicación y ejemplos.

¡Que levante la mano quien lo se ha bajado la beta pública de VFP 9.0! ¿A que esperas?

Pues nuevamente nos dividimos en sesiones, aquí no da tiempo a nada y la gente carga con su taza de café por el pasillo y se la toma en lo que avanza la nueva sesión. Como dice el refrán, “allá donde fueres harás lo que vieres”, así que me voy taza de café en mano, para tener buen puesto para las fotos J

Bases del Depurador de VFP (VFP Debugging Essentials) - Rick Shummer - Microsoft Most Valuable Professional (VFP), y Microsoft Certified Professional.

El depurador de VFP, se hizo para todos, porque todos cometemos errores escribiendo código. El uso del depurador puede ser muy útil o muy frustrante, según si se utiliza de forma correcta y aprovechando todas sus posibilidades, o si se hace a lo loco sin saber lo que estamos haciendo. Se puede emplear de la forma tradicional con todas sus ventanas dentro del contenedor de Depurador o tener las ventanas aisladas por el escritorio de VFP. Se determina en la ficha Opciones – Depurador.

Rick Shummer nos mostró algunos trucos y técnicas que podemos utilizar los desarrolladores para “sacarle el jugo” a esta poderosa herramienta.

Nos enseñó, cómo desencadenar el depurador a través de SUSPEND, SET STEP ON, DEBUG. En ocasiones entre un punto de ruptura y otro pasamos por ejemplo, por un ciclo, y cuando lo estamos ejecutando desde el depurador, es imposible que podamos ir notando los cambios de las variables por la rapidez de la ejecución. Para ello desde el menú del Depurador vamos al cuadro de diálogo de la opción Throttle, que nos permite ralentizar un poco este proceso, sin necesidad de que tengamos que hacer un nuevo punto de ruptura para ver cómo va cambiando el valor de la variable.

Vimos cómo configurarlo según las propias necesidades (ventanas, menús, colores). Para utilizar el potencial oculto de las ventanas Seguimiento (Trace), Resultados (Output), Pila de llamadas (Call Stack), Inspección (Watch), y Locales (Locals), se deben mirar sus propiedades, teniendo en cuenta que  existen diferencias entre las funciones de la ventana Local y Watch. Local muestra automáticamente las variables de alcance local y desaparecen cuando pierden el alcance, mientras en la ventana Watch van a estar todas las variables que deseamos ver, independientemente del alcance, incluso se mantienen hasta que se elimina por el usuario. Lo que si es muy útil es arrastrar desde la ventana Local a la ventana Watch para dar seguimiento al contenido de la variable. Con el depurador nos sorprenderemos más de una ver al ver como algunas variables por error tienen alcance privado PRIVATE

Desde la ventana Seguimiento (Trace), clic derecho – Fix – muestra la ventana de edición y podemos reparar en el momento el error y continuar.

La forma de guardar y restaurar configuraciones en el depurador, muy importante para ahorrar tiempo, y sobre todo para tener definidas las variables que queremos verificar en un programa determinado. Desde el Menú Archivo del Depurador Guardar configuración (Save configuration) abre el cuadro de diálogo para  el nombre a guardar, con extensión predeterminada .dbg. Para recuperar esa configuración Menú Archivo – Cargar configuración (Load Configuration)

Muchas veces necesitamos re-ejecutar un código y no desde el inicio, solo algún momento anterior, ahorramos tiempo y comprobamos como tras alguna corrección, los resultados son los esperados para ello podemos re-recorrer un tramo del código desde algunas líneas más atrás de donde estábamos, esto va muy vinculado a cómo corregir valores de variables y propiedades en tiempo de ejecución.

El empleo del comando ASSERT enriquece el depurador (ver en la ayuda)

Rastrear eventos (Track events) nos permite entender las razones por las que se ejecutan algunos códigos y la aplicación tenga comportamientos “raros” para el usuario.

Muy interesante resultó ver como Coverage Profiler es mejor para buscar las momentos más lentos de la aplicación.

¿Y que trae la versión 9.0 en temas de Depuración? Trae poco, muy poco…. Pero algo es algo

-         La ventana Watch aceptaba cualquier cosa que se escribiese e intentaba evaluar la expresión.Ahora si ocurre un error se muestra en la ventana Output del Depurador. Ej. Si escribimos This nos aparecerá en mensaje This can only be used within a method.

-         Funciona correctamente el desplazamiento de la rueda del ratón por la ventana Output, antes era un bug.

-         Depuración en informes. Con la aparición de los objetos Report Builders y  Report Listener es posible depurar. 

El propio Rick Shummer reconoce no haber explorado a fondo el VFP 9.0 en busca de nuevas posibilidades en este tema.

Ups, los dejo … me voy rapidito a otro local, no me da tiempo a un café… paso de la depuración al diseño.  He de reconocer que el tema que viene a continuación hasta hace poco era desconocido para mí. Espero que les resulte interesante.

Implementar Diseños de patrones en Visual FoxPro (Implementing Design Patterns in Visual FoxPro)  Andy Kramek (Microsoft Most Valuable Professional cada año desde 1998 y Microsoft Certified Professional en Visual FoxPro)

El Diseño de Patrones es un tema bastante antiguo ya; pero por lo general es difícil encontrar buenos ejemplos de cuándo y cómo utilizarlos. En esta sesión Andy Kramek nos comentó varios problemas frecuentes en el desarrollo de aplicaciones, mientras nos ejemplificaba con algunos tipos de patrones de diseño. Los ejemplos están escritos en Visual FoxPro y nos dan idea de cómo implementarlos en nuestras aplicaciones.

Comenzó por darnos la definición que encuentra más acertada sobre el diseño de patrones.

Un diseño de patrones nombra, abstrae e identifica los aspectos claves de una estructura de diseño común que lo hace útil para la creación de un diseño orientado a objetos reutilizable. El diseño de patrones identifica la participación de clases e instancias, sus roles y colaboraciones, y la distribución de responsabilidades.

Aquí les dejo un resumen de lo que Andy nos explicó de varios patrones, no nos agobiemos con las definiciones, se ve mejor con los ejemplos, los que se encuentran en PortalFox en … Mientras les detallo un poquito el patrón de puente, por ser llamado también el patrón madre – base del resto de patrones.

Patrón de puente - “Desacoplar una abstracción de su implementación de tal forma que las dos puedan variar independientemente”

Un puente tiene dos componentes esenciales, la “abstracción”, que es el objeto responsable de inicializar una operación, y la “implementación”, que es el objeto que la lleva a cabo.

Patrón de estrategia – “Define una familia de algoritmos, encapsula cada uno, y los hace intercambiables. La estrategia permite al algoritmo variar en dependencia del cliente que la utilice”

Una estrategia tiene tres componentes esenciales: “la estrategia abstracta”, que es una clase que define la interfaz, y funcionalidad genérica para las “estrategias concretas”, que son subclases que definen varias implementaciones posibles. El tercer componente, el “Contexto”, es responsable de controlar la referencia a la implementación actual.

Patrón de cadena de responsabilidadEvitar el acoplamiento del emisor del requerimiento y el receptor, al obtener más de un objeto con posibilidad de tratar el requerimiento. Es la cadena de objetos que reciben y pasan la petición a lo largo de la cadena hasta que un objeto los manipule.”

En una cadena de responsabilidades cada objeto sabe cómo evaluar la petición para una acción y, si no la puede controlar por si mismo, sabe solamente cómo pasarla a otro objeto, por ello la “cadena”.

Patrón Mediador – “Define un objeto que encapsula cómo interactúan un conjunto de objetos. El mediador estimula la pérdida de acoplamiento ocultando las referencias explicitas entre los objetos  permitiendo variar su interacción de forma independientemente.”

La idea básica es, que cada objeto se comunica con un “mediador” central, el que conoce de todos los objetos que están al alcance actual, y cómo manipular su estado cuando un evento dado es reportado.

Patrón Decorador “Adjuntar responsabilidad adicional a un objeto dinámicamente”.

Un decorador, tiene dos requerimientos esenciales. Primero, necesitamos la clase implementación que define la interfaz y el núcleo de funcionalidad. Segundo, necesitamos un decorador que reproduce la interfaz de implementación, y guarda una referencia a el. El objeto cliente ahora dirige las llamadas que puede ir directamente a la implementación, en su lugar, del objeto decorador.

Patrón adaptador - Convertir la interfaz de una clase en otra interfaz de cliente esperada.

La necesidad de un adaptador generalmente resulta a partir de las modificaciones o mejoramientos de las bibliotecas de clases o componentes COM.

La alternativa es crear una clase nueva la cual replica la interfaz esperada y traduce las llamadas a la interfaz en el formato correcto para reemplazarlo. Al tratar con componentes en los cuales el código no está disponible, es el único método de tratar con los cambios en su interfaz.

Patrón Wrappers – No aparece una definición tan clara como en los otros casos, Andy nos dice que es como un sinónimo para el patrón Adaptador y Decorador.

La tabla resume las diferencias que hay entre el desempeño de Wrappers, Decoradores y Adaptadores.

Patrón

Objetivo

Decorador

Modifica el comportamiento, sin modificar una interfaz existente.

Adaptador

Modifica la interfaz sin modificar el comportamiento.

Wrapper

Proporciona la interfaz para, y sirve para, comportamiento que se define en cualquier otro lado.

Andy Kramek nos deja todas las explicaciones y ejemplos en un artículo que aparece originalmente en -- Design Patterns in Visual FoxPro - http://www.tightlinecomputers.com/Documents/des_Patterns.zip , este artículo ha sido traducido para www.PortalFox.com y se encuentra en http://www.portalfox.com/article.php?sid=1083

Por ahora… los dejo, los temas de la tarde fueron muy importantes y se los cuento mañana, que si no duermo algo no me enteraré de nada.

Espero les haya resultado de utilidad.

Saludos,

Ana

www.amby.net

 


Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2007 PortalFox. Todos los derechos reservados.