X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/ca5443c2a4e1dd53ebd46c5727ac5ea90cb6def1..d90776b35a0eed59e917363c7a8e34aa931073ed:/doc/informe.lyx?ds=sidebyside diff --git a/doc/informe.lyx b/doc/informe.lyx index 7873bc6..e9b5fd8 100644 --- a/doc/informe.lyx +++ b/doc/informe.lyx @@ -26,6 +26,10 @@ \layout Title +Organización de Datos (75.06) +\newline +Trabajo Práctico +\newline E \begin_inset Formula $\mu$ \end_inset @@ -33,13 +37,16 @@ E FS \layout Author -Nicolás Dimov +Nicolás Dimov (77624) \newline -Alan Kennedy +Alan Kennedy (78907) \newline -Leandro Lucarella +Leandro Lucarella (77891) \newline -Ricardo Markiewicz +Ricardo Markiewicz (78226) +\layout Date + +Primera Entrega, 19 de Abril de 2004 \layout Standard @@ -3814,6 +3821,314 @@ idx se actualizan todos los bloques con el espacio libre que realmente tienen. \layout Chapter +EMUFS View (interfaz gráfica) +\layout Section + +Introducción +\layout Standard + +La interfaz de visualización de EMUFS permite interactuar con los distintos + tipos de archivos para cada conjunto de datos almacenado (ya sean facturas, + articulos, o notas de facturas). +\layout Section + +Instalación +\layout Standard + +Para poder correr la interfaz gráfica necesitará previamente compilarla + (así como compilar los programas auxiliares), para ello necesitará cumplir + con los siguiente requisitos: +\layout Enumerate + +Compilador gcc versión 3.3.x preferentemente. + No podemos garantizar la compatibilidad con otras versiones debido a cambios + drásticos que sufrieron las versiones anteriores. +\layout Enumerate + +Parser XML libxml2 versión 2.6.x . + Versiones 2.5 y anteriores son incompatibles en la API y no funcionarán. +\layout Enumerate + +libncurses version 5 o superior (probado con 5.4). +\layout Enumerate + +GNU Make. +\layout Subsection + +Compilar GUI +\layout Standard + +Para compilar la GUI solo debe ejecutar el comando make dentro del directorio + raíz del proyecto. + Esto compilará primero una biblioteca estática con los manejadores de los + 3 tipos de archivo y luego compilará la GUI. +\layout LyX-Code + +#~/emufs/> make +\layout Subsection + +Preparar el banco de pruebas +\layout Standard + +Antes de comenzar a utilizar la GUI deberá generar los archivo XML desde + donde serán leídos los datos para generar los archivos que luego se utilizará. + Para ello el proceso de compilación creará 2 ejecutable : generar_fact + y generar_art, que se ubicarán en la carpeta generar dentro de emufs_gui. +\layout Standard + +Estos programas generan facturas y artículos respectivamente en forma aleatorio, + utilizando diccionarios de datos para llenar los campos. + Primero deberá ejecutar generar_art, ya que éste último crea un diccionario + de artículos que luego utilizará generar_fact para los items de las facturas. +\layout Standard + +Ambos programas reciben 2 parámetros : el nombre de archivo de salida y + la cantidad de entradas a generar. +\layout Standard + +El generador de facturas fue diseñado para cumplir con los porcentajes pedidos + por el enunciado en algunos aspectos. + La cantidad de facturas por dia del mes es aleatoria. +\layout Section + +Línea de comandos +\layout Standard + +El programa acepta varios parámetros, algunos de ellos opcionales, otros + obligatorios dependiendo de las elecciones realizadas. +\layout Standard + +Para obtener una completa descripción de los parámetros el programa acepta + +\begin_inset Quotes eld +\end_inset + +-h +\begin_inset Quotes erd +\end_inset + + o +\begin_inset Quotes eld +\end_inset + +--help +\begin_inset Quotes erd +\end_inset + + para mostrar una ayuda en línea. +\layout Standard + +Si el programa es ejecutado sin parámetros tratará de recuperar los artículos + y las facturas desde archivo previamente creados. +\layout Standard + +Para crear un archivo de artículos a partir de un archivo XML bien formado, + se debe ejecutar el programa con la opción +\begin_inset Quotes eld +\end_inset + +-a +\begin_inset Quotes erd +\end_inset + +. + Dicha opción espera que el siguiente parámetro sea el nombre del archivo + a leer, y que éste útimo tenga extensión xml (notar que es solo minúsculas). + A continuación espera encontrar el tipo de archivo que se quiere crear, + pudiendo ser éste último 1, 2 ó 3. + De ser el tipo de archivo con bloques, se le exigirá que ingrese como último + parámetro el tamaño del mismo. +\layout Standard + +Para crear el archivo de facturas es el mismo procedimiento, solo que utilizando + el parámetro +\begin_inset Quotes eld +\end_inset + +-f +\begin_inset Quotes erd +\end_inset + +. + Luego de los parámetros de tipo y tamaño de bloque debe especificarse el + tipo y tamaño de bloque para el archivo de notas. + +\layout Standard + +Debe saber que estos parámetros no son mutuamente excluyentes, por lo que + podrá utilizarlos al mismo tiempo. +\layout Section + +Características +\layout Standard + +A continuación se da una lista detallada de las operaciones que son posibles + hacerse desde esta interfaz : +\layout Itemize + +Alta, baja y modificación de Artículos. + Para ello se abrirá una ventana donde se podrá editar comodamente los datos. +\layout Itemize + +Alta, baja y modificación +\begin_inset Foot +collapsed true + +\layout Standard + +En la modificación de una factura no se podrán cambiar ni la cantidad de + items y los datos de los mismo!. + La nota si podrá ser modificada. +\end_inset + + de Facturas. +\layout Itemize + +Ver registros. + Ver fisicamente los registros de cualquiera de los archivos sin importar + el tipo al que pertenezcan. + Desde aquí podrá tambien eliminar, agregar o modificar el registro actual. +\layout Itemize + +Ver Bloques. + Para aquellos archivos que hallan sido creados con un tipo con bloques, + podrá verlos fisicamente, viendo el bloque actual y los anteriores/posteriores. +\layout Itemize + +Ver las estadísticas de cada archivo según su tipo, para realizar comparativas +\layout Itemize + +Cambiar el formato de cualquier tipo o parametros de archivo. +\layout Itemize + +Compactar los archivos. +\layout Section + +Decisiones de Diseño +\layout Standard + +Durante el desarrollo se han tomado ciertas decisiones en el diseño o restriccio +nes. + En este punto nos centraremos en las especificas tomadas por la interfaz + de visualización, y no tomaremos en cuenta las que ponen los tipos de archivo + por si solos. +\layout Enumerate + +La cantidad de items por factura es igual a 10 para archivos de registro + de longitud fija y bloque parametrizado (TIPO 3). + Esta decición fue tomada por poner un valor típico de items que puede haber + en una factura, evaluando un caso de un comercio chico. + Como el tipo de archivo permite cortar un registro y guardarlo en varios + bloques consecutivos, la restricción de cantidad solo es un hecho de elección, + y así pusieramos 100, 1000, 10000 no habría diferencia, ya que el tipo + de archivo lo guardaría sin problemas. +\layout Enumerate + +Si el archivo es de TIPO 3 y se agregan más de 10 items estos son truncados + y descartados sin aviso al usuario. + Esta fue una desición basada en el tiempo del proyecto. + De tener que validar y consultar al usuario se hubiera perdido tiempo de + mucho valor para completar objetivos más importantes del TP. +\layout Enumerate + +Los campos son delimitados por el caracter nulo (en caso de los strings) + y por la longitud del tipo de dato en caso de los campos numéricos. + De esta forma se aprovechan las características de manejo de string en + C. +\layout Section + +Vista de Registros +\layout Standard + +Un ejemplo de vista de registros es la que se observa a continuación : +\layout Standard + + +\begin_inset Graphics + filename gui_ver_registros.eps + width 14cm + keepAspectRatio + +\end_inset + + +\layout Standard + +Como puede verse el registro actual se ve resaltado respecto de los demás. + También se puede observar que en este caso (el bloque es de 2000 bytes) + no entra toda la información en pantalla, pero es posible desplazar utilizando + las teclas A y Z. +\layout Standard + +Los datos binarios son convertidos a texto para ser mostrados, siendo la + representación elegida : +\layout Itemize + +(XXX) : Representa un ID. + En el caso de las facturas también aparece en los datos el número de índice + de la nota asociada con esta representación. +\layout Itemize + +{XXX} : Representa el tamaño de los datos. + Esto siempre y cuando el registro sea de longitud variable (TIPO1 y TIPO2). +\layout Standard + +También es posible ejecutar acciones de edición sobre el registro seleccioado, + así como buscar por ID de registro. +\layout Standard + +Cuando se procesa la información en crudo (es decir, el area de datos) algunos + bytes son modificados para evitar errores visuales. + Un caso es cuando el bytes es compuesto por 8 bits de valor 0 (caracter + +\backslash +0). + Lo que se hace es cambiarlo por un caracter que tenga representacion visual + (en este caso un *). + Lo mismo suscede para los caracteres de control ( +\backslash +b +\backslash +n +\backslash +r por ejemplo) y los espacion. + Esta política fue tomada ya que estos caracteres modifican la salida en + pantalla, y de no evitar su envío a la pantalla, producirían resultados + inesperados en la visualización. +\layout Section + +Bugs conocidos +\layout Standard + +A continuación se enumera los errores que sabemos que existen, que no hemos + tenido tiempo de corregir, pero que no hacen al TP en sí : +\layout Enumerate + +Si la consola o terminal cambia de tamaño la GUI no sigue el nuevo tamaño, + pudiendose producir defectos visuales. + Esto es debido a que se debe capturar una señal que envia el SO, pero no + pudimos hacer que funciones con todas las terminales bajo X, por lo que + se decidio dejarlo para cuando tengamos tiempo. +\layout Enumerate + +Si la GUI fue compilada con -DDEBUG y no se utiliza un PIPE para redirigir + la salida de error estandar, es posible que algun componente del programa + emita un mensaje de debug o warning y esta cause defectos de visualización + o el programa deje directamente de funcionar. + Esto es un defecto de la biblioteca NCurses. +\layout Enumerate + +Cuando se cargan datos desde el XML y este contiene caracteres extendidos, + estos son mostrados en UTF8 en la pantalla. + Si no posee una consola configurada en UTF8 verá los caracteres extendidos + en su representación ASCII (2 caracteres por cada caracter extendido). + Esto se da a causa de que la LibXml maneja de forma interna todo en UTF8 + sin importar el encoding declarado en el XML. + El encoding solo lo tienen en cuenta para guado se guarde. + No nos hemos tomado el trabajo de hacer la conversión solo por cuestiones + de tiempo. +\layout Chapter + Conclusiones \layout Standard