Feeds:
Entradas
Comentarios

Archive for the ‘Diseño’ Category

En este ciclo del desarrollo se va a llevar a cabo una importante reutilización de código fuente. Como ya se comentó en anteriores entradas del blog, se va a partir del código fuente de bash para implementar la terminal embebida en la aplicación.

Para ello, siguiendo la filosofía del software libre y de código abierto, se llevará a cabo una pequeña modificación en la implementación del intérprete de comandos para que, cuando se realice un cambio de directorio, éste notifique a nuestra aplicación de ello. Debido a su ejecución en un proceso diferente, será necesarios mecanismos de comunicación alternativos.

Buscando la sencillez, la intención es implementar la comunicación haciendo uso de una fifo o tubería. Así, TP lanzará un hilo que se encargue de escuchar las notificaciones de cambio de directorio a través de la tubería y recargue el panel lateral.

En definitiva, se integrará por completo el código fuente de bash en nuestro proyecto, realizando la modificación pertinente y llevando a cabo la integración que se ha mencionado. El próximo paso es, por tanto, examinar el código fuente existente y determinar el lugar y la forma de integrar nuestro “parche”.

Read Full Post »

Tras bastante tiempo sin escribir, vuelvo para comentar algunas decisiones tomadas en el desarrollo y que influyen profundamente en el diseño del proyecto.

En el ciclo 2 de la iteración estoy dedicando el tiempo a implementar la creación de las vistas previas de los archivos  y el mostrado de dicha vista previa para un único archivo introducido por línea de comandos. Tal y como se pensó al principio, la vista previa desaparecería pasado un tiempo determinado. Se ha optado por desechar esta idea y cerrar la vista previa cuando se pulse cualquier tecla. De esta manera se agiliza y se posibilita la previsualización de archivos individuales de forma veloz.

Ahora bien, la ejecución alternativa del programa consiste en lanzar una subshell que lea los comandos introducidos y los ejecute de forma normal. Lo que se añade es la visualización de un panel de escritorio externo a la consola y que muestra las vistas previas de los archivos de la carpeta actual de trabajo. De cara a la implementación, esto implica crear una subshell capaz de reconocer comandos de cambio de directorio, ejecutar cualquier tipo de comando y muchas más complicaciones. Teniendo en cuenta que se pretende obtener un resultado decente, se han estado considerando diferentes alternativas.

La más factible y que daría un resultado muy bueno es la utilización del código fuente de Bash, el intérprete de comandos por defecto en la mayoría de los sistemas Unix. Tras probar a descargar y compilar el código, se ha comprobado que no tiene dependencias (o al menos no ha dado ningún problema en el sistema de trabajo actual). Esto resulta de gran interés a la hora de reutilizar su código para añadirle mejoras. En nuestro caso, la mejora a añadir será la comunicación con la aplicación C++ que muestre las vistas previas del directorio actual de trabajo.

La alternativa que se acaba de explica presenta ciertos retos que no se prevén complicados de solucionar. El primero es la llamada a código C++ desde el código fuente de Bash, escrito al completo en C. El segundo es la definición de las interfaces de comunicación entre ambas aplicaciones para evitar la introducción del código C++ de la aplicación en el código C de bash y complicar la compilación. Tras realizar una pequeña prueba, se ha conseguido invocar una función C++ (que no formaba parte de ninguna clase) desde el código de bash, y al ejecutar la terminal el funcionamiento ha sido el esperado.

En definitiva, se pretenda realizar una incorporación de Terminal Previewer al código fuente de Bash y eliminar así los problemas para la creación de una subshell de una cierta calidad. Aunque en este ciclo no se va a realizar ningún esfuerzo en este tema, considero de gran importancia para el proyecto la decisión tomada.

Por último, mencionar que se está trabajando en la persistencia de las vistas previas en el disco duro para su reutilización en un momento cercano en el tiempo. Además, se han realizado avances en la generación de vistas previas de archivos de imagen, vídeo y audio.

Read Full Post »