Páginas

miércoles, 6 de abril de 2011

Fahrenheit 1832

Semanita de aupa llevo, y semanita de aupa me espera. Semanita llevo, porque he "intentado" (no existe una palabra mejor...) mezclar las dos ramas de PirannaFS (FUSE y PyFilesystem) y el repositorio ha acabado como era previsible: apocalipsis post-nuclear y terminar metiendo los archivos a mano de nuevo (con esto ya si que me paso definitivamente a GIT), al hacerlo me he encontrado bugs al prepararlo todo para la integracion (y aqui me veis, un dia antes de terminado el plazo haciendo todavia la memoria) y encima al empezar a hacer las pruebas directamente sobre el disco he descubierto que SQLite es mucho mas lento de lo que pensaba por pura paranoia y voy a tener que configurarlo y optimizarlo muchisimo antes de tener algo usable. Semanita me espera, porque el jueves tengo examen de Fundamentos de los Computadores (y no he estudiado...), el viernes tengo la presentacion del proyecto (y todavia no la he preparado...) y encima me he comprometido a hacer la version Java-Android de UnHosted en lugar de las aburridas, inutiles y nada practicas practicas de POO para el examen de dentro de 3 semanas. Me encanta vivir al limite... :-D

Pero bueno, no todo son buenas noticias, tambien he conseguido sacar tiempo para hacer la memoria del proyecto, y la teneis en la pagina de documentacion. Tambien estoy aprovechando a desarrollar toda la documentacion del proyecto para tenerlo centralizado en algun sitio y que sea usable por otras personas, y una de las cosas mas importantes es la estructura de clases, la cual ademas me ha permitido ver algunos detallitos y hacer algunas optimizaciones (siempre se me ha dado bien la memoria espacial... :-D ).


Vamos a explicar las partes. En primer lugar vemos un conjunto de clases fuera del paquete de PirannaFS a la derecha de este. Son el conjunto de clases encargadas del sistema de plugins, junto con los plugins encargados de los checksums, el log y los links simbolicos (obviamente, todos ellos en la carpeta de plugins... :-D ). Ya dentro de PirannaFS vemos un par de paquetes para las interfaces de FUSE y de PyFilesystem. Obviamente las clases de FUSE estan vacias porque tengo que adaptarlas a la nueva estructura, asi que nos centraremos en la de PyFilesystem. Ahi vemos tres clases: Filesystem, Dir y File, que heredan de sus correspondientes dentro del core, las cuales tienen sus referencias a la base de datos y al dispositivo. Ahora mismo tienen casi toda su funcionalidad dentro a la espera de que se vayan "destilando" al core a medida que reintegre la interfaz de FUSE. Como se ve la estructura por capas es realmente sencilla puesto que he desarrollado el codigo alrededor de las funciones correspondientes a las interfaces (de ahi que casi todo el codigo este ahora mismo dentro de los paquetes FUSE y PyFilesystem) y porque todo el trabajo duro se lo esta llevando la base de datos (de ahi que sea tan lenta...). Luego cuando convierta Dir y File en plugins propios ya veremos que pasa con todo esto... :-P

Y bueno, aparte de eso, tambien estoy pensando si en lugar de acceder a la base de datos directamente no hacerme un controlador independiente... Eso me permitiria varias ventajas, como el poder serializarlo todo para que tenga soporte multihilo (se le lanzan peticiones y ya se encargara de resolverlas cuando pueda), cachear las peticiones para que funcione mas rapido el sistema (si solo accede el al sistema no deberia haber problema de que esten desactualizados) o incluso simplificar el proceso de sacar el codigo SQL a archivos externos y cargarlos al principio incluso por parte de los plugins... Pura poesia... :-D

PD: Fahrenheit 1832 es la temperatura a la que arde el silicio en contacto con el aire, convirtiendose en SiO2. Nunca maldigo mi suerteeeeee, porque yo friki naciiiii... :-P