Monday, 30 November 2009

New features with VLO framework part IV


Ultimando detalles del editor de objetos sobre un canvas de delphi, aquí os dejo la última modificación permitiendo así poder mover los diferentes componentes de la pantalla con total libertad. Con ésta nueva versión ya casi está listo el editor con el que podré crear diagramas mucho más complejos y con una estructura más intelijible y más bonita. Aún me queda el tema de centrar el texto dentro de Tbox, pero aún me estoy pensando si va a ser útil o no (además no es fácil hacer el cálculo y tengo que calcular el tiempo que voy a invertir).

La modificación ha sido relativamente fácil ya que dispongo de los diferentes métodos de movimiento sobre Tbox, luego solo tengo que ir a los enlaces, buscar los diferentes Tbox asociados (origen, destino) y mover los puntos de éste permitiendo así mover el diagrama completamente.

Además he añadido 2 propiedades nuevas para poder personalizar el editor, una que nos permite cambiar el color de fondo y otra el color de la grid.

Ahora podemos visualizar los diagramas de la siguiente manera:

Aquí os dejo también uno de mis famosos vídeos a los que ya me estoy empezando a aficionar, ya que de una manera fácil y rápida os puedo mostrar las diferentes modificaciones de la plataforma y podéis ver el resultado.





También os dejo la aplicación de test para probar el componente:



Sunday, 29 November 2009

New features with VLO framework part III

Siguiendo mi planning ya tengo casi acabada la versión básica de la plataforma con la que trabajaré posteriormente las diferentes aplicaciones que tengo en mente. En ésta última versión, me he centrado sobretodo en la edición y en pulir sobretodo el tema de los eventos de teclado y que toda la gestión de diagramas sea fácil y cómoda de utilizar. Solo me queda un punto pendiente antes de sacar el último release y poder centrarme en las aplicaciones que ya se están desarrollando en ramas diferentes pero que comparten un ancestro común en la plataforma VLO.

En dicha versión puedo destacar:
  • Mejora de la creación, carga y eliminación de proyectos
  • Mejora de los eventos de teclado (CTRL+C, +V, etc)
  • Creación de pantalla de propiedades sobre la aplicación
  • Corrección en la clonación de objetos
Aquí os dejo la versión para testearla totalmente libre de descarga:
Ahora con un poco de imaginación, podemos llegar a crear diagramas como el siguiente:

Aún tengo que acabar 2 puntos pendientes que tratan sobre el centrado del texto en función de las dimensiones de la caja y el arrastrado de los puntos de las líneas que aún estoy a medias con el desarrollo, pero que en la siguiente entrega estará resuelto.

Aquí os dejo también un vídeo sobre las últimas mejoras de la plataforma y como ha mejorado su utilización:





Espero que os guste y no dudéis en contactar conmigo sobre cualquier bug que encontréis en la aplicación así como idea que tengáis.

Wednesday, 25 November 2009

QA Metrics

Delphi 2010 aparece con unas nuevas opciones para hacer mediciones y auditorías sobre nuestro código. Es interesante experimentar con éstas opciones y ver como están hechas nuestras clases para saber si vamos bien o no.

Por ejemplo si ejecuto una de las métricas, obtenemos:


Por ejemplo, nos podemos fijar en las columnas CC (Complejidad de Ciclo) o LOC (Número de líneas de código) y podemos ver si los valores son corrector o por defecto hay un número elevado y tenemos que corregir nuestro código. En la web de Embarcadero podréis encontrar más información sobre las métricas.

New features with VLO framework part II

Ya está disponible el último release estable de la aplicación con las últimas modificaciones en las que he estado trabajando éstos días. Ya se ha ahora publico poco, pero no tengo mucho tiempo libre y necesito priorizar tareas. En ésta última versión podréis ver que ya casi tengo acabado el componente con todas las opciones gráficas necesarias para el posterior desarrollo de nuevas aplicaciones utilizando un entorno gráfico para mostrar los resultados.

También os dejo un vídeo explicativo con las nuevas funcionalidades que permiten rapidez, comodidad y flexibilidad a la hora de crear nuevos diagramas pudiendo crear propiedades por defecto, propagarlas y editarlas. Si os acordáis de Thundax Box Manager, ésta aplicación utiliza por defecto la plataforma VLO v1.0, pues ahora con las mejoras introducidas, la edición se hará mucho más corta y rápida.

La estructura de las clases ha cambiado un poco, aquí podemos ver la nueva estructura UML de las clases TAbstractLine, TBox y TAbstractProperty que son las principales para el desarrollo de los componentes visuales:

Aquí os dejo el vídeo con las cosas más interesantes:





Como podéis ver, aparece un nuevo editor de propiedades por defecto. Con éste editor podemos predefinir como queremos que sean nuestras boxes en su primera instancia y sus conectores. De ésta manera podemos crear documentos más interesantes y atractivos visualmente:


Así, podemos crear documentos como el siguiente:



Saturday, 21 November 2009

New features with VLO framework part I

Aquí os dejo varios de los últimos vídeos con las características más destacables de la plataforma. A modo de resumen comento que el componente ha mejorado en velocidad y en rendimiento. Además de que permito la creación de bucles en una misma TBox, de ésta manera como comenté en uno de mis últimos posts, ésto me servirá para poder crear una pequeña aplicación para el análisis de DFA (Deterministic Finite Automaton) y así ampliar las diferentes opciones que tenemos para utilizar VLO Framework.

De ésta manera podríamos llegar a generar diagramas como el siguiente:


Aquí os dejo el vídeo y el programa de test para que podáis hacer vuestros propios diagramas:










Thursday, 19 November 2009

Dump columns from TADOQuery to TClientDataSet

En éste artículo os dejo el código fuente de un fichero encontrado en SQL.RU donde hay una pequeña librería muy útil para el volcado de columnas de un componente a otro. En mi caso lo que quería era volcar las columnas de un TADOQuery a un TClientDataSet y además añadir una columna virtual a éste último para realizar diversas operaciones sobre ésta. El problema de volcar las columnas de un componente a otro dinámicamente, es que la tarea de convertir un TField a uno de sus hijos TStringField, TIntegerField, puede llegar a ser complicada. Pues bien, la librería que aquí os adjunto llamada FieldInfo (que además encontraréis aquí, parece un poco complicado de encontrar, pero está en el final de la página y hay que darle a un símbolo + que hay en la última respuesta del foro) dispone de varios métodos llamados GetAllFieldsInfo i SetAllFieldsInfo, donde le pasamos la query de dónde queremos obtener los datos y luego nos guarda la información en una TList. Luego volcamos ésta TList en un clientDataSet y que además modificaremos para realizar nuestras intenciones.
  • Cómo funciona la librería?
Primero tenemos que conectar nuestra qry y abrirla, luego haremos el volcado:


if qry.Active then
qry.Close;
qry.SQL.Text := 'SELECT * FROM Table1';
qry.Open;


Una vez tenemos los datos en la qry, queremos volcar toda éstas columnas en un ClientDataSet, añadirle una nueva columna para otro propósito y volcar todos los datos de la qry dentro del ClientDataSet haciendo un recorrido de los datos.

Volcado de columnas:

procedure DumpAllFields();
var
ListFields: TList;
NewField: TIntegerField;
begin
if ClientDataSet.Active then
ClientDataSet.Close;
ds1.Fields.Clear;
ClientDataSet.DisableControls;
try
qryTest.First;
ListFields := TList.Create;
//Dump all the qry fields into ListFields
GetAllFieldsInfo(ListFields, qry);

//Adding a new Field into ListFields
NewField := TIntegerField.Create(ClientDataSet);
NewField.Name := 'new';
NewField.FieldName := 'new';
NewField.FieldKind := fkData;
NewField.DisplayLabel := 'new';
NewField.DataSet := ClientDataSet;
GetFieldInfo(ListFields, NewField);
FreeAndNil(NewField);

//Dump all the columns from ListFields to ClientDataSet
SetAllFieldsInfo(ListFields, ClientDataSet);

ClientDataSet.CreateDataSet;
qry.First;
ClientDataSet.First;
finally
ClientDataSet.EnableControls;
FreeAndNil(ListFields);
end;
end;


Luego tenemos que volcar la información de la qry al ClientDataSet:


procedure LoadInformation();
var
i, j: integer;
FieldName: string;
begin
ClientDataSet.DisableControls;
try
qry.First;
i := 1;
while not qry.Eof do
begin
ClientDataSet.Append;
for j := 0 to qry.Fields.Count - 1 do
begin
FieldName := qry.Fields.Fields[j].FieldName;
ClientDataSet.FieldByName(FieldName).ReadOnly := false;
ClientDataSet.FieldByName(FieldName).Value := qry.Fields.Fields[j].Value;
end;
ClientDataSet.FieldByName('new').AsInteger := i;
ClientDataSet.Post;
qry.Next;
Inc(i);
end;
ClientDataSet.First;
finally
ClientDataSet.EnableControls;
end;
end;


El ClientDataSet está conectado a un TDataSource y éste a un componente Grid, de ésta manera podemos ver todos los datos del ClientDataSet.

El resultado quedaría de la siguiente manera:


Monday, 16 November 2009

Saturday, 14 November 2009

Playing with VLO Framework

Bueno después de tantos días de intenso trabajo en los que parecía que nunca iba a acabar, por fin tengo los primeros vídeos sobre la utilización de mi plataforma (VLO Framework). En éstos vídeos muestro las últimas características de la aplicación y de ésta manera queda mejor explicado (una imagen vale más que mil palabras). En éstos 2 primeros vídeos introductorios, muestro la potencia en lo que refiere a edición de cajas (movimiento, copiar-pegar, eliminar, arrastrar, etc), y en el segundo muestro unos ejemplos sobre lo que luego vendrá (su utilización en diferentes aplicaciones que ya tengo en desarrollo).

Vídeo 1 : Playing with VLO Framework





Vídeo 2 : Making diagrams with VLO Framework





Los vídeos los he hecho con el camtasia Studio, una herramienta increíble para la edición de vídeos y para crear producciones para youtube y la web en general. Hay un vídeo de dougstech.com que me ha ayudado bastante en la generación de los vídeos.

Podéis descargar la última versión de prueba de la plataforma aquí:

Wednesday, 11 November 2009

Editor de Ecuaciones LaTeX

LaTex es un sistema Open Source de composición de texto específicamente para documentos con ecuaciones matemáticas. Con ésta herramienta del tipo WYSIWYM (What You See Is What You Mean) podremos crear ecuaciones gráficamente utilizando un lenguaje de macros. Para que nos entendamos, en el siguiente enlace aparece una aplicación Online donde probar nuestras macros y obtener la imagen de la fórmula:

Además existen bastantes plataformas que utilizan LaTeX para crear editores ya sea para Windows como para Linux. Una de las aplicaciones que utilizo yo para crear documentación técnica es Lyx, un editor para windows muy potente que utiliza LaTeX.

Aunque la aplicación ocupa más de 100 Mb, podemos encontrar descargar la última versión de la aplicación para windows desde aquí. También podemos encontrarla para diferentes plataformas en la página de las descargas.

Monday, 9 November 2009

Plataforma de desarrollo : VLO Framework parte III

Ahora que tengo un poco más avanzada la parte del cálculo de rutas ya puedo entretenerme un poco más con el diseño del canvas para mejorar un poco el comportamiento del dibujado de los diferentes elementos que forman VLO Framework. En ésta última versión he incorporado cosas importantes como:
  • una grid de fondo
  • la acción snap to grid
  • la edición de líneas por 3 puntos
  • la múltiple selección de cajas
  • el movimiento global de las cajas con la múlti selección
  • el Conexionado de boxes de origen a destino y viceversa (en versiones anteriores, solo se permitía una conexión)
De ésta manera la aplicación se muestra de la siguiente forma:


Ahora, importando imágenes, podemos realizar diagramas típicos como los siguientes:

Utilizando la herramienta de selección, podemos seleccionar todos los componentes Tbox y moverlos utilizando el mouse:


Lo interesante de la plataforma es que la podemos utilizar para dibujar aquello que queramos (imágenes enlazadas) y luego utilizar éstos componentes visuales para modelar aquello que queremos programar. Por ejemplo el siguiente paso será crear un comprobador de DFA (Deterministic finite machine), y a partir de ahí cualquier cosa que se nos ocurra gráficamente. De ésta manera podemos llegar a mejorar bastante la ilustración de nuestros modelos, por ejemplo en uno de mis anteriores diagramas sobre el cálculo de rutas, ahora tendríamos ésto:


Aquí os dejo una muestra del test del framework para que comprobéis su comportamiento:

Friday, 6 November 2009

VLO framework on SourceForge

Ya podéis encontrar la última versión de mi framework (VLO) en SourceForge. Aún estoy ultimando detalles, pero podréis encontrar el último ejecutable en descarga libre desde el siguiente enlace: vloframework.sourceforge.net.

Desde la misma web podréis descargar la aplicación, informar sobre errores y contactar conmigo sobre cualquier cosa referente a la aplicación. Aún estoy acabando de configurar el repositorio para poder subir el código fuente de la plataforma, pero en un par de días lo tendré listo. Estoy trabajando sobre la configuración básica de la plataforma mejorando el comportamiento de los diferentes objetos visuales y pensando en las diferentes posibilidades que tiene la plataforma sobre diferentes ideas que me han expuesto y algunas otras que se me han ocurrido a mi.

Monday, 2 November 2009

Neuroplasticidad

Como comenté en uno de mis últimos artículos sobre el aprendizaje pragmático, aquí os dejo el último capítulo de redes emitido el día 1 de noviembre de 2009. Habla sobre todos éstos temas que son de lo más interesantes y nos muestra el tipo de revolución que sucederá en el momento que todos empecemos a entrenar nuestros cerebros.




Aprovecho para felicitar a Eduard Punset por su gran trabajo en éste programa que des de sus inicios me tiene enganchado.

Sunday, 1 November 2009

Cálculo de rutas de transporte parte V

En éste artículo os entrego la última versión de la aplicación con mejoras adicionales sobre la selección de caminos. Continuando con la IV parte, he modificado ligeramente el algoritmo para identificar y marcar diferentes destinos en función de un parámetro situado en la propia conexión. Por ejemplo, si nos encontramos en un ítem que tiene 2 caminos a seguir, éstos deben estar numerados para indicar cual tomar.

Si éste elemento es un dispositivo físico, de alguna manera deberá posicionarse para dirigirse hacia un sitio u otro. De ésta manera si nos encontramos con la siguiente situación:

Indicamos numéricamente que si queremos ir del dispositivo 40 al 11, éste debe estar en su posición '2' y si quiere dirigirse hacia el 39, en la posición '1'. Físicamente representaría que por ejemplo una válvula debe estar posicionada en un sentido (abierta) para acceder a 11 y cerrada para 39 por ejemplo. De éstos ejemplos encontraremos muchísimos en la selección de caminos, y es interesante pararse un momento y pensar sobre éstos y buscar una solución elegante.

De momento he hecho que el nombramiento de las conexiones sea automático y sin ningún orden. Camino que selecciono, camino que marco. Ahora el cálculo es más eficiente, más rápido y con mejor disponibilidad a la hora de hacer pequeños cálculos para obtener éstos parámetros.

Si nos fijamos en el siguiente ejemplo:

Veréis que cada enlace está marcado y cuando generamos la salida para el cálculo de rutas, podemos ver como identifica cada uno de los nodos:

En verde se marcan los orígenes, en azul los elementos bloqueados y en fucsia los destinos. Además ésta versión dispone de las siguientes mejoras:
  • Selección total de los nodos
  • Movimiento total de los nodos mediante botones
  • Enlaces de bloqueo identificados en azul (no se editarán)
Aquí os dejo la última versión: