mar
10
Para realizar las pruebas actuales he utilizado el mismo equipo del articulo anterior y he separado las pruebas en dos partes.
La primera parte realizada ayer, fue la exportación de datos de una aplicación realizada en V6 que generaba un fichero de texto en LML con una contabilidad completa, y un total de mas de 70,000 lineas
El tiempo empleado en generar el fichero no es importante, ya que lo que se esta evaluando es V7 y no V6. El fichero generado tiene un peso de 5,19 mb en total
Tras realizar la exportación de datos, se inicia el proceso de lectura e importación del fichero LML.
Tras seleccionar el fichero y teniendo en cuenta que el proceso de importacion se ejecuta en primer plano y el servidor esta en Local como en las pruebas anteriores, el proceso se inicia y finaliza 9′ 35″ minutos despues un tiempo un poco mas elevado que la lectura de los procesos anteriores, pero que compensa al realizar los calculos de tiempos de procesado,
- El fichero LML inicial tiene un peso de 5,19 Mb
- El numero total de lineas procesadas del archivo LML es de 71,712
- El tiempo de lectura y parseo total del fichero es de 9′ 35″
- El tamaño resultante total del archivo.DAT es de 18,8 Mb
- El tamaño resultante total del archivo.IDX es de
En cada lectura del fichero se procesa una linea de texto (mas de 70,000 lineas) en cada linea leida, se procesa con StringSection 3 veces (mas de 210,000 sentencias) al finalizar, se guarda un registro en la tabla correspondiente con 340 bytes por registro y 4 indices (mas de 71,000 registros guardados)
El resultado obtenido es de un tiempo de 0,0080 segundos en cada una de las lineas leidas y procesadas.
Mañana continuaré con el resultado final de estas pruebas…
Es decir la generación de asientos y apuntes en sus tablas correspondientes.
mar
7
Después de una semana bastante cargada de trabajo, que no me ha permitido sacar tiempo ni para publicar, ni para realizar demasiadas pruebas en v7, he podido sacar un poco de tiempo para realizar las primeras importaciones de datos y comprobar asi la versión actual.
Para poder analizar los datos obtenidos hay que tener en cuenta que las pruebas han sido realizadas en un ordenador portatil convencional, nuevo, pero con unas prestaciones normales para cualquier portatil actual.
Especificaciones tecnicas del equipo:
- Portatil HP ProBook 4510s con 4 Gb de RAM y 250 Gb de Disco Duro
- Sistema operativo Windows Vista (preinstalado en el equipo y original)
- Antivirus Panda IS-2010 (legalizado)
En cuanto a las caracteristicas del servidor V7 utilizado para estas pruebas son:
- vServer V7 7.3.0.8651 con instalación en Local
- Archivos de datos (en LML) en disco Local
En cuanto al tamaño de los archivos utilizados para importar la información, ha que decir,
- que se han utilizado 8 archivos diferentes para las pruebas de importación,
- que cada uno de los archivos contiene exactamente 15,000 lineas de texto en LML, excepto el ultimo que contiene 10,000, es decir un total de 115,000 lineas de texto en 8 archivos ASCII en formato LML
- que el tamaño de los archivos, varia en función de la longitud de las lineas, pero que oscilan entre los 704 Kb del archivo mas pequeño (15,000 lineas con una media de 50/60 carácteres por linea) y los 3,04 Mb del más grande (15,000 lineas con una media de 250 carácteres por linea). El último archivo, a pesar de tener solo 10,000 lineas, pesa 1,47 Mb.
Para realizar la importacÃon se ha utilizado un proceso sencillo que permite seleccionar el fichero a importar desde la ventana de dialogo correspondiente, y comienza la lectura secuencial del fichero hasta finalizar. El proceso se lanza directamente desde el menu y no se ha utilizado ningun proceso adicional para su ejecución en 3 plano. Por tanto, se ejecuta en 1 plano de inicio a fin.
En el proceso se han utilizado varias sentencias StrinSection para parsear las lineas en LML y se asigna cada valor a su campo correspondiente, la tabla contiene exactamente 4 campos + el #ID automático y 3 Ãndices + el #ID de la tabla. El único campo que no ha sido indexado, es el que contiene el texto de la linea importada del fichero.
Esto significa que el proceso lee 15,000 lineas del archivo, ejecuta 60,000 sentencias StringSection y genera 15,000 registros en una tabla con 4 indices y un tamaño de 340 bytes por registro.
Los resultados obtenidos:
En la lectura de los ficheros mas pequeños (700 Kb), el tiempo aproximado de ejecución del proceso fué de 2:40′ (2 minutos y 40 segundos)
En la lectura de los ficheros mas grandes (3,04 Mb), el tiempo aproximado de ejecución del proceso fué de 2:55′
A pesar de que el fichero mas grande era 4 veces mayor que el fichero mas pequeño, la diferencia de tiempo fue despreciable (vamos, que ni hay que tenerla en cuenta).
Conclusión:
El tiempo empleado en parsear las lineas es practicamente el mismo, independientemente del tamaño de ésta. Y por tanto, la función StringSection va que te cagas
El tiempo empleado en la lectura de los ficheros tambien es el mismo, asi que, se ha utilizado un tiempo medio de 0,012 segundos en la lectura de cada una de las lineas del fichero, y en ese tiempo está incluido tambien, el tiempo empleado en parsear la linea, y la generación del registro en la tabla correspondiente.
El tamaño final de las tablas de datos en disco es de 38,165 Kb en el Archivo.DAT (datos) y de 21,884 KB en el Archivo.IDX (indices)
Otra conclusión mas que he podido obtener de estas pruebas, aunque esa ya la sabia, que LML es el mejor sistema que he probado hasta ahora para importar y exportar datos.
Pero como en estas pruebas no he utilizado datos numéricos, seguiré realizando mas pruebas, que permitirán tomar decisiones más importantes
El resto de conclusiones y opiniones os las dejo a vosotros, ¿que os parece?
mar
2
He probado los DOCKS horizontales y verticales para trabajar y son muy comodos y me parece una funcionalidad excelente.
Ayer fue un dia especial, continuando con las pruebas esta vez en una solución con un único proyecto de datos con aproximadamente 100 tablas
El caso es que tenia que eliminar una tabla que no utilizaba pero que estaba enlazada como maestra de otras muchas tablas y pense, Elimino la tabla, y luego le doy al boton para buscar errores y voy eliminando los enlaces a la tabla.
En que mala hora se me ocurriria, ya que cada vez que eliminaba el campo enlazado a la tabla maestra, me rompia vDevelop y “CRASH”
A pesar de que volvi a pegar la tabla maestra borrada, Copy & Paste de otro proyecto vDevelop seguia rompiendo.
Al final consegui eliminar los campos pero para ello tuve que hacer 2 cosas
1. eliminar el contenido inicial antes de borrar el campo
2. cambiar las propiedades del campo para apuntar a otra tabla maestra existente
Luego eliminar indices y por fin eliminar el campo enlazado.
Pero claro, guardando el proyecto cada vez que eliminaba varios campos, porque aun asi, a veces seguia rompiendo.
Como la solucion solo tenia un proyecto, vDevelop se movia con soltura, lo que me hace pensar, que vDevelop hace comprobaciones innecesarias en algunos momentos.
P.E. al mover 2 tablas de un proyecto de datos a otro, vDevelop comprueba enlaces a tablas maestras e historicas y mueve todas ellas al nuevo proyecto, pero en el caso del ejemplo, el proyecto solo tenia 15 tablas y las dos tablas movidas no tenian enlaces con el resto. Y a pesar de eso, tarda 3 minutos en mover solo 2 tablas.
Debo aclarar que la solucion completa es bastante grande. Lo que me hace pensar que realiza comprobaciones en todos los proyectos de la solucion, pero no tiene sentido comprobar todas las soluciones, cuando este proyecto no tiene nada mas que una herencia al proyecto al que quiero mover las tablas que estaba vacio.
“3 minutos en mover solo 2 tablas”
Hice esto porque el finde, ya tuve que romper vDevelop, porque tardaba mas de 1 hora en un proyecto con bastantes tablas y no veia cuando terminaria.
Segui trabajando con los esquemas de tablas, y empece a colorear las tablas dentro del esquema, muy comodo por cierto, arrastrando el raton o con la tecla control, marcaba varias tablas y elegia el color y se coloreaban todas a la vez. Chapeau!! (que bien se me dan los idiomas, jeje)
Despues de terminar el esquema, comprobe que habia algunas tablas que no necesitaba en el esquema y las marque con el raton, todas a la vez, igual que al colorear, y pulse el boton ROJO, para eliminar los elementos del esquema, y a que no sabeis que paso….
…. CRASH!!!
asi que decidi descansar que ya era tarde y no me apetecia seguir.
feb
27
He podido comprobar, como al renombrar una variable en una función, que era utilizada como parametro de entrada de datos, esta se renombra correctamente en los parametros. Esto, en la versión anterior, solo lo hacia correctamente cuando la variable era el primer parametro de la función, pero no lo hacia para el resto de los parametros. Asi que parece estar corregido.
Estoy creando una rejilla con el asistente, y quiero incluir una columna con el NAME de un campo enlazado a una tabla estatica, pero no me lo permite, solo puedo incluir, campo enlazado (#ID). El icono tampoco lo puedo seleccionar.
Creo una accion que carga una lista y retorna una rejilla, y funciona correctamente, en ejecucion (modo SDI), no tengo forma de cerrar la rejilla. Tengo que cerrar vClient por completo para cancelar la rejilla. Sera que tengo que asignar una TOOLBAR obligatoriamente con un boton salir, pero bastaria con una tecla aceleradora para cancelar la rejilla.
Sigo realizando pruebas y estoy preparando un proceso de importación, y me hace algo muy estraño:
En el proceso de importación hay 3 lineas con la sentencia CREAR NUEVA FICHA EN MEMORIA ( hFicha, Tabla) y a pesar de hacer utilizado el mismo identificador “hFicha” en las 3 sentencias, al seleccionar la sentencia ALTA DE FICHA ( hFicha ) me los identifica como 3 identificadores distintos y sera por esto que el proceso no me ha funcionado correctamente, porque llevo realizando pruebas durante casi 3 horas y aun no lo he conseguido.
Al final, he conseguido que el proceso funcione, el problema era mio, habia creado un indice de clave unica en la tabla y me agrada saber que ha funcionado incluso mejor que en las versiones 6.x, ya que si el indice es de clave unica no crea el registro, pero en 6.x el registro se creaba en la tabla de datos, aunque no aparecia en el indice correspondiente.
Lo que si me parece desconcertante, es lo de los manejadores repetidos, incluso con el mismo nombre.
Para evitar confusion, he renombrado los manejadores para que tengan nombres diferentes, y asi saber cual corresponde a cada una de las sentencias anteriores.
Seguimos probando…
feb
26
Hace solo unos dias que se publicó la versión 7.3.0.8651 y decidido probarla a fondo para empezar a tomar decisiones sobre el posible uso en algunos proyectos que tengo pendientes.
Para empezar, he tenido que desinstalar la versión 7.2.1 y proceder a la instalación de la nueva versión 7.3 y como no podia ser de otra manera, tras finalizar el proceso de instalación y comenzar a realizar las primeras pruebas, empiezan los problemas.
No consigo acceder a la nube, vAdmin se cuelga, vClient tambien se cuelga y con vDevelop, solo puedo abrir soluciones en local, pero no en la nube, porque tampoco conecta. Me aseguro de reiniciar el Servidor de la nube por si fuera el problema y todo sigue igual. Pero no solo se cuelga vAmin, vClient y vDevelop, sino que tengo que reiniciar el equipo cada vez que esto sucede, porque ya no responde nada.
Tras un par de horas insufribles, decido partir de cero, desinstalo todo de nuevo, anulo los permisos del Firewall, y vuelvo a instalar todo nuevamente y vuelvo a reconfigurar el Firewall y como por arte de magia, ahora todo parece funcionar correctamente.
Bien, ya en marcha, y todo aparentemente bién, empiezo a probar vDevelop y modificar proyectos y ejecutar con vClient.
vDevelop:
Noto que por el simple hecho de abrir un proyecto y sin realizar cambio alguno, aparece activo el boton de Guardar, imagino que es necesario guardar el proyecto para convertirlo a la nueva versión o será porque habia algun error en el proyecto y ha realizado modificaciones automaticamente.
La solución es grande y tiene bastantes proyectos, y noto como vDevelop se mueve mucho mas lento que su predecesor, imagino que es simplemente porque realiza mas comprobaciones en los datos. Pero es que se hace bastante pesado el simple hecho de cambiar de un objeto a otro, y eso obliga a utilizar mucho mas el raton, para ir directamente al objeto seleccionado sin pasar por el resto de objetos. Es decir, el simple hecho de mostrar las propiedades de un objeto situandonos en el, se ha vuelto mucho mas lento.
Veo también que ya es posible volver a mover objetos de lugar dentro de un proyecto, que en la version 7.2 no era posible, pero si en las anteriores. Por algun motivo, esta funcionalidad fue bloqueada temporalmente.
He movido una tabla de un proyecto a otro y sigo viendo un problema importante: cuando se mueve una tabla a un proyecto heredado, esta muy bien que se muevan todos los enlaces a maestros de esa tabla, para mantener la estructura en el nuevo proyecto, pero lo malo es que tambien se lleva consigo los historicos. El resultado es que si en el proyecto, todas las tablas estan enlazadas, al final, lo unico que conseguimos es poder cambiar las tablas de un proyecto a otro, pero todas o ninguna. y eso es un problema, cuando hemos migrado una aplicación y queremos dividirla en modulos mas pequeños. Simplemente, no es posible.
Otro problema que veo, es que no se pueden mover las tablas en sentido contrario, es decir, las tablas historicas, no pueden ser movidas a un proyecto que hereda al actual. Y otro problema mas, al mover los objetos de un proyecto a otro, se pierde por completo la estructura de carpetas y se queda todo completamente desorganizado. Solo podemos elegir una carpeta que este en la raiz del nuevo proyecto.
En cuanto a la ayuda incorporada en la Galeria de objetos, esta muy bién y son muy aclaratorias para poder elegir los nuevos objetos.
vClient:
Al igual que vDevelop, ha reducido sensiblemente su velocidad, he notado como vClient me daba la sensacion de ser mas rapido e incluso mas estable, ya que aparte de los problemas iniciales de la instalación, no he vuelto a tener mas problemas y hasta ahora parece funcionar bastante bién.
vServer:
de vServer, nada que decir, al igual que en la versión anterior, con instalación en Local, se instala y permanece callado y sin dar un solo ruido, y eso creo que debe ser bueno.
Vamos, que aunque está, parece que no, porque no protesta ni dice nada, solo cumple su misión en silencio. Asi que muy bién.
vAdmin:
Pues más de lo mismo, aún no he tenido problemas y eso como ya he dicho, es bueno. Tanto en conexion al vServer local, como en conexión a vServer en la nube. Todas las instancias anteriores permanecen invariables y no he tenido que tocar nada, todas funcionan correctamente.
Cuando tenga algo mas de tiempo empezaré a realizar importaciones masivas de datos y veremos que tal responde.
Por el momento y a pesar de los problemas comentados anteriormente, las sensaciones de estabilidad han sido buenas, aunque si es cierto, que vDevelop se ha vuelto mucho mas pesado (lento).
feb
20
Asi es, faltan solo unos dias para que se haga publica la nueva versión 7.3 de Velneo v7, y esperamos con impaciencia.
Algunas de las novedades más esperadas en esta nueva release, son las Rejillas/Grids con importantes mejoras, el nuevo objeto TPC, y otras que nos eran muy importantes para los que ya usabamos las versiones 6.x y anteriores.
Otra gran noticia que esperamos todos con impaciencia, es la publicación de las Open Apps que han participado en el concurso, porque sin duda, y vista la gran calidad de algunas de ellas, van a servir de apoyo y fuente de conocimiento de la herramienta para los iniciados y también para los veteranos.
Tras la publicación de la nueva versión, dedicaremos un tiempo extra (hasta donde el trabajo y la familia nos lo permita), para examinar nuevamente la herramienta y dedicaré algunos articulos a evaluar y exponer las conclusiones obtenidas en dichas pruebas.
Estas pruebas se realizarán a conciencia, porque de los resultados obtenidos, tomaremos las decisiones correspondientes para abordar los futuros proyectos con V7.
Empieza a contar, 7, 6, 5, 4, 3, …
ene
28
A raiz de una de las preguntas realizadas por mi amigo F.J.Vila (Geproin) en su articulo de la entrevista del viernes, me hizo pensar, y en ese preciso momento no supe concretar la pregunta que me realizo.
F.J.Vila: ¿Qué hecha en falta en la herramienta?
Pepeto: Mayor integración web, y no precisamente: vWebClient
Ahora, más tranquilo y pensando nuevamente en ello, voy a tratar de aclarar lo que deberia haberle contestado,
Cuando hice referencia a que vWebClient no erá la solucion que Velneo debia aportar a la web, estaba en lo cierto, pero, ¿cual es la solución?
Sin querer desmerecer el trabajo que esta realizando Velneo en V7, que es magnifico y digno de admiración, aunque todo hay que decirlo, deberÃan centrarse un poco más en solucionar bugs, que en nuevas funcionalidades.
Y digo esto, por que no considero que vWebClient sea una mala herramienta, es más correcto decir, que no es la solución que los desarrolladores deseariamos, o al menos, yo mismo.
¿Por qué no es la solución apropiada?
Porque, vWebClient controla los enganches de los Clientes, y parte del problema es el coste de las licencias, aunque no es este el mayor problema, ya que tal y como hizo saber AlfonsoGu en su articulo de ayer, el precio podria ser negociable, incluso gratuito.
Pero, incluso a coste cero, vWebClient no es la solución, por otra razón, es un pluing para Windows, y por tanto no es multiplataforma, al menos de momento.
Pero, aunque vWebClient fuera multiplataforma, seguirÃa sin ser la solución, ¿por qué?. Pues porque desgraciadamente, a veces, falla el suministro electrico, la ADSL se cae, el S.O. se bloquea, o incluso se me podrÃa caer la taza de café en mi portatil, y que desastre, bloqueos, usuarios colgados, portatil averiado, y siempre cuando más urgente es el trabajo que estás realizando. Y todo esto, supune que debe haber una persona siempre pendiente del servidor para solucionar los problemas a travésd e vAdmin.
Entonces, ¿cual es la solución?
Pues, bajo mi punto de vista, la solución perfecta, pasaria por un verdadero Cliente Web, y que quiero decir con esto, pues sencillo:
- Un cliente web que retorne HTML al navegador
- Un cliente web que al realizar una petición al servidor, inicie la conexión con el servidor en el momento, realice la consulta a la base de datos, y cierre la conexión con el servidor. Dejando libre la licencia de usuario en primer lugar, evitando bloqueos desagradables del servidor ya que las conexiones no serian permanentes.
- Modo de trabajo, Iniciar conexión, realizar consulta en base de datos, cerrar conexión. Tal y como lo hacen el resto de los lenguajes en la web, cuando trabajan con bases de datos SQL.
Claro, para Velneo esto puede suponer, no cobrar las licencias web, y esto es un problema. Pero puede seguir vendiendo licencias de vClient para aquellos que desean trabajar con “vServer Local”.
Además, no creo que esto suponga mucho problema para velneo, sino todo lo contrario. Seria la verdadera prueba de apertura de Velneo al mundo, a la web y a luchar por un puesto entre los grandes. Si entre los grandes, porque si algo necesita Velneo es abrirse a los estandares actuales, y ¿cual es el mayor estandar en la web?, pues HTML.
ene
20
Desde A.S.C., y éste blog como medio de difusión, hacemos pública nuestra participación en el concurso de Open Apps organizado por Velneo, y para ello he metido al horno una pequeña aplicación que estará lista en los próximos dias.
Y vamos a participar, no con el animo de ganar, ya que esperamos que el nivel de calidad de las aplicaciones presentadas a concurso, va a ser muy alto, pero si con el animo de aportar un grano a ese granero, y esperando que la gente del foro V7 se anime también.
Os mantendré informados en breve a través de este blog y animo a los que aún lo estan pensando.
ene
18
Además de las aplicaciones mostradas anteriormente, también tenemos cosas más estandar, como la aplicación de gestión tipica que todos hemos instalado, y como en el resto de las anteriores, tampoco esta basada en la plantilla de Velneo, ¿porqué?, pues basicamente, porque cuando se inició el desarrollo de estas aplicaciones, allá por el año 98, las plantillas no existian, y todo habia que currarselo a mano.

Con albaranes de venta, que pueden ser introducidos manualmente o generados directamente desde los pedidos.

Y múltiples tarifas de precios (sin limitación), cada cliente puede llegar a tener 4 tarifas configuradas simultaneamente, y los precios asignados a los productos dependen de condiciones aplicadas a cada cliente.

Las tarifas se pueden imprimir en papel o PDF, con fotografias o sin ellas, y enviar por e-mail. Tambien se pueden generar tarifas para la web.

También esta previsto el control de Rutas de reparto y Zonas de venta en el apartado de logÃstica.

El cálculo de los modelos de impuestos más habituales también esta contemplado y se realizan automaticamente.

Pero al margen del estilo que se ve en las imagenes, te pueda gustar o no, lo verdaderamente importante de estas aplicaciones está dentro, y es un analisis cuidado al detalle y una estructura muy solida, diseñada para permitir cualquier tipo de adaptación a medida sin sorpresas desagradables.
Porque, ciertamente, una aplicación entra por los ojos, pero si una vez instalada, la aplicación no es robusta y fiable, el cliente te saca los ojos con las uñas si hace falta. Y lo que más vende en realidad, es lo bién que hablan los clientes de tús aplicaciones.
Es todo por ahora, seguiremos viendo más opciones en otra ocasión.
ene
15
Y como podemos mejorar los casilleros de V7 para que tengan la potencia añadida que tenian en V6:
En V6, los casilleros solo permiten 3 opciones (al menos en cuanto a distribución de las celdas en pantalla): horizontal, vertical y automatico. Los casilleros en V7 permiten indicar el nº de columnas y el ancho de la celda se ajusta según el valor indicado y eso esta bién, pero se puede mejorar, ¿como?:
- Permitiendo indicar también el nº de filas que se van a visualizar.
- Permitiendo cambiar el nº de columnas y de filas en ejecución, mediante proceso o evento.
- Permitiendo contenido inicial para las propiedades nº columnas y nº filas y que el contenido inicial pueda ser el resultado de una expresión matemática.
- Permitiendo una opción automática, similar a la de V6 que recalcule el nº de filas y de columnas automaticamente y por tanto, no sea necesario mostrar las barras de desplazamiento en los casilleros.
- Que las barras de desplazamiento, solo sean visibles cuando uno de los valores sea indeterminado o “0″, ya que si indicamos los 2 valores, el casillero se deberia ajustar automaticamente.
- Que al indicar dos valores en nº de filas y columnas (p.e. 6 cols. x 5 filas = 30 celdas ), solo muestre los 30 primeros registros de la lista, omitiendo el resto, o dejando las celdas vacias si el resultado es menor de 30 registros.
Pero esto, no deja de ser una opinión personal, la última palabra la tiene Velneo. De todas formas aqui dejo el apunte en el foro de ideas:
- Mejoras en casilleros (Foro de ideas)
Esperemos las novedades de la 7.3, a ver que sorpresas nos trae.
|