Reporte de la Conferencia DevEssentials 07.06.2004 –
Sesión mañana
Por Amby
Es muy tempranito, porque hoy no hubo KeyNote, así que
empiezan las sesiones paralelas desde las 8.00 am… ¡a trabajar!
Rienda suelta al poder del Task
Pane (Panel de tareas) (Unleash the Power of
the Task Pane) Toni Feltman
El panel de tareas fue
introducido en VFP 8.0. Es una herramienta que se puede utilizar como el
centro de control para todos los desarrollos de aplicaciones. No haremos un
informe muy amplio sobre el tema, porque está documentado en:
http://www.portalfox.com/article.php?sid=1007
http://www.portalfox.com/article.php?sid=1008
Vimos sus paneles:
El panel de tareas Inicio (Start Task Pane), se
muestra la primera vez que es abierto el Administrador del Panel de tareas.
El panel Comunidades (Community Task Pane)
muestra contenido valioso de las comunidades de renombre de Internet
El panel Administrador de entorno (Environment
Managment Task Pane), muestra la configuración del entorno asociado al
proyecto que está actualmente en uso, utilizando una herramienta llamada
Environment Manager (Administrador de entorno).
El panel Ejemplos de
Soluciones (Solution Simples Task
Pane) presenta una lista desplegable de todos los ejemplos y
soluciones de Visual FoxPro, contenidos en la carpeta Simples.
El panel Servicios Web
XML (XML Web Services Task Pane) permite acceder a las
herramientas de Servicios Web XML y explorar los métodos de los servicios.
El panel de tareas
Buscador de archivos (Filer task Pane) tiene exactamente la misma
funcionalidad que la biblioteca COM llamada Filer.dll y además proporciona
una interfaz de usuario que es accedida a través del Administrador del
Panel de tareas.
El panel Buscaminas, (Minesweeper Task
Pane)ofrece una versión visual del juego Buscaminas de Windows. Este panel
también muestra controles enriquecidos de Visual FoxPro.
Se pueden crear cuatro tipos de paneles, que son:
-
Web page, HTML, XML, y Controles VFP
Toni nos mostró que los paneles pueden tener varias
secciones y existen amplias posibilidades para configurarlos. Ejemplificó
cómo podemos crear nuestros propios paneles. Nos comentó sobre la
arquitectura del Administrador del panel de tareas y el uso de
manipuladores integrados (Built-In Handlers).
Haciendo uso de las técnicas avanzadas de que dispone
el Task Pane vimos como generar un panel de tareas HTML complejo que llama
un servicio Web XML, trae contenido dinámico de un archivo de Internet y
ejecuta código de manipulador personalizado.
Los pasos para crear un crear un panel de tareas
son:
-
Escoger el tipo de panel
-
Crear el panel
-
Crear o acopiar los archivos necesarios para este panel
-
Conectar los archivos (ir a personalización)
-
Verificación y corrección de errores
Para finalizar, Toni nos muestra que, publicar un
panel de tareas, desde el formulario del panel de Personalización,
es una tarea muy sencilla. Publicar un panel significa justamente que el
contenido del panel y sus archivos son empaquetados en un paquete de
distribución. Este paquete es un archivo XML que permite una distribución
sencilla e instalación de paneles en Administradores de paneles de otros
desarrolladores.
Vemos ejemplos de la creación y personalización de dos
paneles con el pronóstico del tiempo para una localidad.
El artículo que acompaña a esta conferencia, podrá ser
traducido y publicado en PortalFox, lo cual complementará bastante toda la
información que ya tenemos y fue escrita en su momento por Beth Massi.
Bueno, pues vamos nuevamente a temas de diseño y me
toca cambiar de local… los dejo,… hasta ahora.
Introducción al Diseño de datos – (Introduction
to Data Design) Ted Roche (Certified Solution Developer, Microsoft
Certified System Engineer, y por 8 años ha obtenido Microsoft Support Most
Valuable Professional)
A una pregunta de si es posible tener una aplicación
con un mal diseño de Base de datos, Ted Roche, luego de meditar, contesta:
Sí, es posible… pero, necesitará mucho más trabajo de mantenimiento,
control de errores y habrá más posibilidades de que se dañe, que con un
buen diseño. Entonces, comenta, como somos vagos, todos los programadores
somos vagos y queremos trabajar lo menos posible, lo mejor es tener un buen
diseño de Bases de datos.
Ted nos ha refrescado los principios del análisis,
diseño, normalización y normas para nombrar. Empezamos desde el principio,
define que es un campo, sencilla pieza de información, tan
sencilla y dividida como se desee, una dirección puede estar representada
por un campo o por un grupo de ellos (calle, número, etc). Una colección de
campos que contienen información de una pieza de información se llama
registro. Y una colección de registros, pues es una tabla.
Estamos muy adaptados a llamar a los campos columnas y a los registros
filas.
Una clave es una expresión compuesta por
uno o más campos utilizada para enlazar registros de diferentes tablas, lo
que agiliza el acceso a registros u ordenar los registros. Las claves son
guardadas en los índices. Una llave o clave primaria
identifica cada registro en una tabla. Una clave candidata es
otra clave que identifica únicamente un registro; pero no está definida
como llave primaria.
Una relación enlaza dos tablas, una
clave primaria y una foránea.
Luego, nos dedicamos a hablar de las ya conocidas
Formas normales, las técnicas de normalización de tablas y bases
de datos están suficientemente documentadas, por lo que no me extenderé
mucho en la descripción de esta sesión.
Las formas normales son:
-
Primera forma normal: No repetir grupos.
-
Segunda forma normal: Todos los campos van a depender
de una clave primaria, en este momento Ted aconseja emplear campos únicos,
enteros, en lugar de claves compuestas de varios campos.
-
Tercera forma normal: Todos los campos dependen sólo
de la clave primaria y no de ningún otro campo.
-
Cuarta forma normal: Aplica las normas de la tercera
para las claves candidatas. Se le conoce también como forma normal
Boyce-Codd
Entonces, toda esta normalización nos va a permitir
mayor facilidad para manipular los datos, porque cada elemento de dato está
representado en un único lugar en el modelo de datos. Si se omite la
normalización los campos duplicados y no dependientes persisten lo que
ocasiona muchos problemas para Adicionar, Eliminar y mantener datos en la
base de datos.
Luego, tratamos aspectos relacionados con Integridad
referencial y su implicación en los tres aspectos que la componen,
Adicionar, Eliminar y Modificar.
Hasta aquí los temas de Diseño de bases de datos
aplicables a cualquier lenguaje de programación; pero como somos mayoría de
foxeros, Ted nos dedica un tiempo a trabajar sobre las convenciones
establecidas para los nombres de campos y tablas, y consciente de que este
es un tema en el cual hay muchos gustos diferentes, nos aclara que estas
son sus pautas para nombrar los elementos que integran bases de datos.
-
Una letra para indicar el tipo de datos.
-
Nombres de campos limitados a 10 caracteres porque son más fáciles
de utilizar, y estamos a salvo en caso de utilizar tablas libres, cursores
temporales y para nombrar los índices como a los campos
-
Terminar los campos clave con PK o FK correspondientes a Clave
primario o Clave foránea
-
Evitar utilizar guiones bajos, porque consumen un espacio muy
valioso
-
Evitar utilizar plurales, por espacio y porque crea ambigüedades
(Ej. Cliente o Clientes, esto nos ahorrará muchos dolores de cabeza si
siempre tenemos una metódica para nombrarlos)
-
Otra de metódica y consistencia, ej, Num, No. Nro para indicar un
número de algo.
-
Agregar otras convenciones establecidas por los expertos y las
propias de cada desarrollador.
Ted Roche comenta la importancia de contar con una
buena herramienta para el diseño de Bases de datos y su propuesta es XCase,
nos muestra algunas de sus características y algunos ejemplos de modelos de
datos diseñados con XCase, demostrando las facilidades para actualizar el
modelo y obtener a simple vista gran cantidad de información relativa sobre
todo a campos, campos clave y relaciones entre las tablas.
Luego, nos propone “jugar” un poco con situaciones
reales, y nos dice que en la gran mayoría las aplicaciones existen personas
y direcciones, entonces muestra como crear un modelo de datos correcto.
Solo le resta a Ted aconsejarnos que seamos muy
cautelosos en nuestro diseño de bases de datos, ahorraremos mucho tiempo de
desarrollo y nuestras aplicaciones, serán, sin dudas más robustas.
Me voy a por un café, que quiero tener puesto de
primera fila en la próxima sesión, la única que veré sobre .Net…. aunque
es una mezcla entre VFP y .Net, allá vamos. Café en mano, me despido de
Alex Feldstein, quien marcha ya de regreso. Agradezco a Alex por todo el
apoyo, la compañía, las cenas que compartimos y sobre todo por transmitirme
algo de su enorme experiencia y sabiduría, Gracias Alex, ha sido un placer,
¡buen viaje!
VFP y .Net: los mejor de ambos
mundos (VFP and .NET: the best of both
worlds) - Claudio Lassala (Microsoft MVP C#)
Esta conferencia es muy interesante, porque Claudio es
foxero, siempre lo fue y lo sigue siendo, a pesar de que domine y divulgue
el uso de .Net, de hecho es MVP por C#. Lo primero que hace es aclarar que
no es para nada un traidor, todo lo contrario, que lo que ha aprendido de
.Net le ha permitido ser mejor programador de Fox. Tiene la oportunidad de
sacar de ambas herramientas, lo mejor.
El texto de su ponencia lo tendremos pronto íntegro en
PortalFox, estamos autorizados a traducirlo y al menos yo, lo veo como uno
de los prioritarios para ayudar a esclarecer algunos aspectos, desde el
punto de vista del autor, en estos momentos en que debatimos en los foros
el tema cada vez más frecuente de VFP vs .Net.
Les comento algunas cosas.
Claudio compara las herramientas y dice que no son ni
demasiado jóvenes ni demasiado viejas, .Net ya tiene algunos años desde que
su primera versión beta fue liberada y por su parte el VFP tiene ya muchos
años; pero justo este año será renovado con una nueva versión. Ambas
herramientas son lo suficientemente potentes como para facilitar el trabajo
de los desarrolladores.
La situación actual es que la mayoría de los
desarrolladores en .Net provienen de Visual Basic y C++, la mayoría nunca
oyó hablar de VFP, y el que lo hizo lo más probable es que lo considere
algo antiguo y obsoleto. Por su parte los foxeros experimentan una pasión
por su herramienta, son leales a ella y se resisten al paso a .Net,
intentan hacerlo todo con puro VFP, y en ocasiones necesitan de mucho
esfuerzo y código que si aplicaran otras tecnologías lo podrían lograr de
forma más sencilla.
Claudio invita a tener la mente abierta para poder
asimilar el cambio, que no significa renunciar a lo que tenemos. Hace una
historia sobre el origen y evolución de ambas herramientas.
Nos dice que, a su modo de ver, VFP es mucho más que
un lenguaje de programación, es un entorno de
desarrollo con un motor de informes, su base de datos nativa, y
lenguaje de programación que incluye comandos nativos y funciones que
manipulan los datos como un subconjunto de SQL. VFP tiene algunas
características que son más sólidas que .Net, como el proceso de enlace da
datos (data-binding).
Son dos herramientas con sus pros y sus contras, son
dos equipos diferentes de Microsoft, los que desarrollan las herramientas
de forma diferente; pero en algunos aspectos van alcanzando resultado
similares. A continuación nos pone ejemplos de tareas en las que es más
conveniente emplear .Net o VFP.
Algunas ventajas del uso de .Net para foxeros:
-
Muchas clases, mientras el VFP tiene 37 clases bases,
más las Foundation clases, el framework .Net tiene 2.500
-
Aprender de la tecnología y aplicarla a VFP, .Net
ofrece soluciones muy convincentes para escenarios frecuentes, inspirarse
en estas tecnologías permite desarrollar excelentes herramientas en VFP, un
ejemplo son los Voodoo Web
Controls creados por
Markus Egger, en tiempos cuando aun .Net estaba en sus inicios. Oto ejemplo
es el control estructurado de errores (structured exception handing)
- try/catch Eso no existía en VFP, y se incluyó en la versión 8.0, a
partir de la experiencia de .Net.
-
Adopción de
“Buenas prácticas”
Los foxeros pueden verse beneficiados si adoptan las norms que exige .Net
en cuanto a declaración de variables, .Net obliga a declarar las variables
con su tipo asociado, en caso contrario se produce un error. En VFP no es
así y ocurre gran número de errores en tiempo de ejecución que a veces son
difíciles de detectar, y esta es su causa. Algo similar pasa con lo
sencillo que resulta sobrescribir un método de una clase en VFP, si nos
olvidamos de indicar el DoDefault() se rompe la herencia. Estos accidentes
no ocurren en .Net; porque el compilador alerta sobre lo que estamos
haciendo.
-
El tiempo dirá
La experiencia
que le ha aportado a Claudio Lassala el conocimiento de técnicas aplicadas
en .Net le han hecho corregir estrategias de programación, ahora, dice, es
mucho mejor foxero que antes.
Por su parte grandes beneficios puede aportarte a un
desarrollador .Net provenir de VFP ya que puede reutilizar
conocimiento. La experiencia que tiene VFP que aplica programación
orientada a objeto desde hace 10 años, es valiosísima para iniciarse en
.Net donde todo y recalca, TODO, es objeto. Provenir de VFP pone al
desarrollador muy por delante del que viene de VB.
Claudio nos propone que utilicemos algunos de los
materiales que ya están escritos pensados para ayudar al foxero en su
tránsito a .Net, por ejemplo:
“Visual FoxPro Toolkit for
.NET” (localizado en
http://www.gotdotnet.com/team/vfp/ ). Esta clase contiene 255
funciones escritas en .Net que imitan funciones que tenemos en VFP, entre
las utilidades de esta herramienta están:
-
Facilita la migración de código VFP a .Net
-
Viene con todo el código
fuente y ayuda para que podamos aprender como trabaja .Net
Pero; no confundir que esta herramienta no sustituye
al framework ni la necesidad de aprenderlo, así como uno de los
lenguajes.Net
Y ahora, antes de irnos, la pregunta del millón,
¿estará VFP dentro de .Net?
Claudio aclara que hasta el momento de hacer esta
presentación la respuesta de Microsoft es NO, para ello hay muchas razones
técnicas, Claudio intenta resumir de esta forma:
-
Para que VFP sea lenguaje .Net tiene que poderse ejecutar por el CLR
-
Para ello VFP perdería muchas de las características que lo
distinguen, lo que se resume en perder compatibilidad hacia atrás y
convertirse en una nueva versión bastante diferente de la actual, esa nueva
versión asegura que a los desarrolladores de VFP no nos va a gustar.
Claudio resume su presentación diciendo que, por una
parte .Net no va a desaparecer pronto, al contrario se va a ir consolidando
como una excelente herramienta y los foxeros deben tener la mente abierta e
irse preparando para hcer coexistir sus aplicaciones con desarrollos .Net
Vamos a comer, esta vez a puro sandwich, comparto la
mesa precisamente con Claudio Lassala, hablamos de la posibilidad que
existe de tenerlo como ponente en la Conferencia PortalFox Coruña 2004, el
está muy ilusionado y le hice saber que nosotros también. Claudio es uno
de los ponentes que ha autorizado la traducción de su material. Le agradecí
el gesto. Disfruté de la compañía, me despedí de Claudio Lassala y me
preparo para la próxima sesión, en la última jornada, la de la tarde del 07
de junio.
Ana
www.amby.net |