Páginas

sábado, 24 de diciembre de 2011

Ho-Ho-Ho

Esto de estar de vacaciones es una maravilla, menuda semanita me estoy pegando... :-D Para empezar, estoy viendo a un monton de gente que hacia tiempo que no veia (ayer mismo a una antigua compañera de clase que resulta que tambien le gusta ir a las conferencias de Software Libre :-D ), los examenes no me han ido del todo mal (especialmente Sistemas Operativos, que por un error a la hora de corregir las practicas he pasado de un 3 a un 9.1 :-D ), y encima no solo le he estado dando caña al proyecto sino que cuando les pase a mis colegas de AlcorconWireless el enlace a mi anterior entrada al blog contando en que iba a consistir el proyecto el comentario que ha soltado uno es mitico:
Piraña se nos ha hecho mayor. Yo ya no me meto con él que me da sopas con honda XD
Respect!
Epic Win!!! :-D Y ademas, otro dice que se apunta, asi que podre acelerarlo un poco mas :-D Tambien me han dicho que se ve mal el texto con el fondo tan oscuro, a ver si cuando tenga tiempo lo arreglo...

Pero bueno, al turron (y no a las 4 tabletas que me he comprado esta tarde de oferta en el Dia :-P ): los cambios que le he metido a Gaia realmente han sido numerosos, y la verdad que esta quedando una base muy buena para continuar con el desarrollo mas adelante. Para empezar, he estado estandarizando muchas funciones y poniendolas en comun entre Gaia y Uranus, lo cual teniendo en cuenta que ahora se contruyen como dos librerias estaticas por separado (en prevision a que mas adelante Uranus sea un ejecutable independiente) me esta sirviendo para hacerme una stdlib bastante cuca y quizas tambien para en el futuro poder usar newlib, que siempre sera mejor que desarrollar mi propia libreria estandar (aunque no es tan dificil como parece...), y ademas todo apunta a que va a ser la unica manera que voy a tener para poder usar memoria dinamica, porque el tema de la paginacion se me resiente y parece que el tutorial que estaba siguiendo ya solo existe en la cache de Google... :-/ Lo cual no es malo, porque buscando alternativas he descubierto que aunque con no excesivo exito, si ha habido intentos (algunos incluso formales) de hacer una API estandar para drivers, lo cual me viene bastante interesante... :-) Tambien es cierto que lo estoy procrastinando bastante por el respeto que me impone, pero al menos me sirve para avanzar en otros aspectos :-)

Pero lo mas importante sin lugar a dudas, ¡los eventos ya funcionan! :-D Por el momento de forma muy rustica y simple por no tener memoria dinamica y estar corriendo todo en espacio de kernel, pero al menos demuestran que el concepto y la arquitectura funcionan. Ademas, el diccionario de tamaño estatico que me he hecho me ha quedado chulisimo, para que luego vayan y me suspendan Estructura de Datos por no saber Pascal... :-P Por el momento solo tengo un evento registrado, "putchar", que es llamado desde prinf(), pero lo registra y lo recoge el driver de la VGA sin problemas, pero teniendo en cuenta que printf() esta dentro de la stdlib por el momento vamos bien :-) Tambien he implementado un pequeño driver para el teclado, pero es mas bien simbolico ya que lo unico que hace es enviar lo que escribe a la pantalla enviando el evento de "putchar" igualmente, luego no se registra ni nada. Por el momento se estan registrando los IRQs directamente, asi que cuando ya haga que pasen por el gestor de eventos ya me pondre a hacer algo serio, ya que tambien tendre que definir el formato de los eventos y eso puede variar mucho, asi que prefiero no hacer demasiado que luego tenga que tirar a la basura.

Y luego por ultimo en el dia de hoy despues de la paliza que me pegue ayer a patear calles pues me he tirado todo el dia en casita limpiando y organizando el proyecto como dije antes, separando cada parte, unificando librerias... dejandolo preciosista :-D Tambien he estado experimentando ahora que se compilan Gaia y Uranus por separado en que la interfaz de las syscalls sea la misma que en nativo, pero el linker se ha quejado diciendo que los simbolos estan duplicados (lo cual es obvio, idiota de mi). Mañana vere si consigo hacer algo al respecto con algun flag al compilar o algo, que seguro que hay alguna solucion... ;-)

martes, 20 de diciembre de 2011

Übersecret

¿Y cual es ese nuevo proyecto en el que ando enfrascado tan secreto que a pesar de ser uno de mis proyectos "gordos" solo hay tres personas que conocen de su existencia y entre las tres apenas la entienden media? :-P Pues mi mayor sueño desde los 10 años, el cual ya intente anteriormente dos veces de forma infructuosa y como bien supuse, el desarrollo de PirannaFS me iba a dar la autoconfianza que necesitaba para desarrollarlo de forma definitiva: mi propio sistema operativo... o cuanto menos, mi propio kernel :-D

ChaOS (originariamente CaOS... cosas del marketing y la proyeccion internacional :-P ), el estado desorden primigenio que dio lugar a "el origen de todo", es un sistema operativo puramente orientado a objetos (al igual que el extinto BeOS o su sucesor Haiku) y a eventos (como los sistemas operativos en tiempo real), y diseñado por completo orientado a que sea facil de entender y de mantener. Bajo esta filosofia prescinde por completo de los IOCTLs y compañia: todo son objetos. En este aspecto es diametralmente opuesto a Plan 9, que aunque la idea de llevar Unix al extremo haciendo que "todo sean archivos" esta muy bien... realmente solo es practica para su uso desde la shell. No obstante, si se integrara con Python y potente introspeccion y sus tan extendidos "file-like objects" (acceder a cualquier objeto de forma estandar usando los metodos definidos para los archivos) se podria crear un sistema de programacion bastante versatil y poderoso (y de hecho incluso intente hacer recientemente que ChaOS estuviera escrito en Python para poder explotar esta idea), aunque claro, aqui hay un detalle importante... son objetos ;-)

Sin embargo, vamos a empezar por lo importante: el kernel. El kernel de ChaOS para aumentar su claridad, seguridad y versatilidad se divide (dividira, en realidad) en dos partes: un microkernel (Gaia, "la madre tierra") realmente minimo que corre en el anillo 0 que solo actua como envoltura del hardware para permitir un acceso mas homogeneo y controlado por parte del resto del software al estilo de los exokernels o los hipervisores (calculo que no deberia necesitar mas de 7 syscalls en total), y luego el kernel propiamente dicho (Uranus, "el padre del cielo"... e hijo y amante de Gaia :-P ) que corre puramente en espacio de usuario. Si, como un programa mas, ahi esta la gracia del asunto: al estar el kernel en espacio de usuario y no ejecutar codigo privilegiado se obtienen varias ventajas, como que el codigo privilegiado es mucho menor, es mas facil de programar y de depurar... e incluso estoy observando que no me costaria demasiado hacer que "cualquier" programa (notense las comillas, no obstante) se podria hacer que funcionara directamente sobre Gaia sin demasiado esfuerzo... o incluso hacer que Uranus corra como una aplicacion mas el cualquier otro sistema operativo o incluso propiamente dentro de ChaOS (el colmo de la recursion: un sistema operativo corriendo sobre si mismo sin maquinas virtuales. ¿Donde deja eso a jail? :-D ).

Por el momento, he conseguido que Gaia sea capaz de arrancar desde GRUB dentro de QEmu (ya es mas de lo que habia conseguido hasta ahora...) y tambien registra un pequeño driver en espacio para usuario para el PIT y estoy en proceso del driver de la tarjeta de video en lugar de acceder a ella directamente desde el modo kernel. Vale, lo reconozco, es mentira: todavia estoy ejecutandolo todo en espacio kernel, pero la paginacion me estaba dando problemas por lo que decidi adelantarme con la API, y actualmente ya estan funcionando correctamente a traves de las syscalls (de momento solo 3: in, out y register_interrupt_handler). Aparte el codigo es muy homogeneo y claro entre si, y aunque lo este haciendo en C ya que las otras veces que intente hacerlo en C++ fueron callejones sin salida, los namespaces son muy claros de seguir y no costaria demasiado hacer la conversion en el futuro. Vamos, una joyita de las que me gustan, codigo limpio y claro... :-D

Ahora que he terminado los examenes me pondre con el motor de eventos para asi poder aislar mas aun cada una de las dos partes (Gaia y Uranus) y que el driver de la VGA este completamente en el "pseudo" espacio de usuario. Despues ya continuare intentando la paginacion de memoria y la ejecucion en espacio de usuario de verdad, y luego ya creo me planteare si continuar con el desarrollo de Gaia como un cargador de kernels en espacio de usuario como habia pensado hasta ahora, o bien como libreria que añadir a aplicaciones estandar para que se ejecuten sin sistema operativo... o bien como las dos cosas :-D

P.D.: tengo que irme, el sistema de megafonia de la universidad avisa que tenemos que desalojar el edificio, dicen noseque de unos "egometros" que se han salido de su escala...

:-P

PirannaFS reloaded...

6 meses han pasado ya desde mi ultima entrada... y con razón. Los examenes me tuvieron al borde de un suspiro, y gracias al proyecto de Gameloft he sabido lo que es un trabajo de verano de 60 horas a la semana (y pensar que yo queria ser un pirata con sus 96 horas...). Luego llego el nuevo curso con un primer cuatrimestre supercargado y faltandome horas por todas partes, asi que dije BASTA: decidi centrarme en los estudios y luego ya veria que haria.

Eso es lo que decidi hacer... otra cosa es que eso fuese lo que hiciese :-D Que no tuviese tiempo para publicar nada no significa que no hiciese avances, y si hice: MUCHOS.
  • Para empezar consegui mezclar el codigo de las ramas de PyFilesystem con la de FUSE, con lo que ahora mismo ya tenemos (¡al fin! :-D ) un unico codigo base para las dos. Bien es cierto que la predominante es la de PyFilesystem, pero su orientacion a objetos es mucho mas potente y flexible. Aparte, tambien me va a servir de base para desarrollar las herramientas externas :-)
  • Por otra parte, tambien he conseguido avances para convertir los archivos y los directorios en plugins externos, aunque por alguna razon unittest no me funciona con Louie, el motor de eventos, por lo que tendre que mirarlo con mas calma.
  • No obstante, este paron forzoso me vino bien para darle vueltas al tema de hacer PirannaFS un sistema de archivos autocontenido, y creo que gracias los VFS de SQLite (y en concreto usando como base este ejemplo para funcionar directamente sin sistema de ficheros) voy a tener la papeleta resuelta, aunque probablemente tendria que sustituir el modulo pysqlite por APSW. APSW tiene la ventaja de que es un wrapper muy fino, siendo las funciones directas con las de SQLite con lo que es mucho mas rapido y ademas obtiene mas rapido todas las mejoras y nuevas funcionalidades de SQLite (incluido el soporte para VFSs) a diferencia de pysqlite, que intenta pythonizarlas. Aparte tambien esta el echo de que APSW no sigue el DB-API 2.0 (aunque su API si es muy parecida), pero al parecer el "anti-ORM" que me he desarrollado con PirannaFS puede resolver la papeleta (a la gente le encanta mi idea de desarrollar funciones y objetos Python a partir de codigo SQL :-D ) y probablemente hasta lo limpie y lo saque como modulo aparte. Luego estaria el tema de como hacer para poder acceder a los plugins, pero eso es otra historia...
  • Y aparte, tambien se me han ocurrido otras novedades como son las "extensiones", que basicamente son como los plugins pero a diferencia de estos, estan orientados a "extender" funcionalidad ya existente (en lugar de añadir nueva) y por lo tanto no necesitan tablas propias sino que modifican directamente las ya existentes, por lo que su acceso es mucho mas rapido (me ahorro hacer un join... :-D ).
Pero aunque PirannaFS sea mi niña mimada (al menos por ahora... :-P ) todo eso por el momento tendra que pasar a un segundo plano, puesto que oh, masoca que soy... me he vuelto a inscribir otra vez en el concurso de programacion, y esta vez voy a por todas. Solo espero que no haya suspendido ninguna este cuatrimestre y que empieza pueda tenerlo tan tranquilito como me imaginaba al principio... :-P

lunes, 13 de junio de 2011

Dadaismo

¿Que es lo siguiente a surrealismo? Que despues de mes y medio en el paro y mogollon de entrevistas y trabajos de mierda, en el momento en que coges autoestima, te valoras como es debido y das un golpe en la mesa ya no hace falta que busques trabajo... el trabajo te busca a ti: la semana pasada dimiti al segundo dia de empezar a trabajar porque Gameloft me queria en sus filas, y ahora que llevo una semana acaba de llamarme Zinkia para hacer la pelicula de Pocoyo a partir de septiembre. Me han pedido el titulo, pero cuando les he dicho que no lo tengo me han respondido que no me preocupe, que les gusta mucho mi perfil y quizas se pueda hacer un chanchullo. ¿Que sera lo siguiente, Google para un proyecto de inteligencia artificial para su buscador llamado SkyNet?
Lo dicho: surrealismo en estado puro.

viernes, 27 de mayo de 2011

TagCrowd

Gracias a microsiervos he descubierto TagCrowd y al pasarlo por el blog me he encontrado con esto...


created at TagCrowd.com


Ese "compartir" sin lugar a dudas tiene un cierto lugar de honor... :-)

martes, 19 de abril de 2011

Las gallinas que entran por las que salen

El viernes pasado fue la final de Madrid del concurso, al igual que el jueves tuve el examen de Fundamentos de los Computadores, y dejando de lado que ya se que no tengo perdon de FSM por tardar tanto en comentar el resultado del partido, lo cierto es que he estado bastante liado/agobiado estos dias.

Las noticias buenas, primero que creo que al final despues de 5 años me he quitado al fin la famosa asignatura :-D No se porque razon, pero la electronica se me atraganto sobremanera, y eso teniendo en cuenta que me meti en informatica por culpa de que la electronica se me quedaba pequeña... Y la segunda... Piranna wins!!! :-D Contra todo pronostico y en especial el mio, ¡resulta que PirannaFS ha ganado! :-D Empece el proyecto por hobbie, nada especial, y ademas era muy "friki" y especifico cuando habia otros que estaban mas orientados a la comunidad. Aparte, de los que estuvimos en la final realmente yo habria apostado por los de los demas (cORMoran me parecio bastante practico, e InfantView yo ya le saque alguna que otra utilidad practica...), asi que normal que todos me miraran con cara rara cuando me entro la risa floja cuando me entere que habia ganado porque todavia no me lo creia :-P Pero bueno, no deja de ser ironico que no me cogiese la promocion de la tablet del ABC aprovechando que trabajaba alli y que ahora tenga una Galaxy Tab para sustituir a mi pobre Spica... :-D

En cualquier caso las dos proximas semanas el proyecto va a estar parado debido a que voy a estar estudiando Java para el examen de Orientacion a Objetos (si, a la vejez viruelas, quien lo diria...), y como no puedo estar haciendo una sola cosa, pues voy a aprovechar para aprender Android y desarrollar el cliente en Java de UnHosted todo a la vez. Como dijo el pirata, "la vida es corta pero ancha"... :-D

Ahora las malas, y es que a pesar de ser "un tecnico extraordinario" (palabras literales) me despidieron del trabajo porque no buscaban un perfil tan tecnico sino "alguien mas de gestion o administracion capaz de atender al cliente". En resumen, yo preocupandome siempre de que mi codigo hablara por mi y ahora resulta que lo que hay que hacer si quieres seguir ascendiendo es saber colocar correctamente un lazo rosa para que no se vean las grietas ni se desmorone el invento. Pues mira, ellos se pierden el tener un campeon entre sus tropas. Al final cuando hasta en el trabajo te dicen directa o indirectamente que si quieres desarrollar una carrera puramente tecnica te tienes que ir a Estados Unidos, agua lleva.

Esta claro, no podian pasarme tantas cosas buenas en una semana sin riesgo de provocar un desequilibrio en la constante espacio-tiempo. Maldito karma...

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

miércoles, 30 de marzo de 2011

Minority Report

Pequeña nota aprovechando un pequeño descanso en el curro mientras se configura el Ubuntu que acabo de instalarle: solo decir que debido a lo caotico que se me presenta el mes de abril entre examenes (¿¿¿quien ha sido el que me ha puesto el examen de Fundamentos de los Computadores justo UN DÍA ANTES de la presentación de PirannaFS???), trabajo, presentaciones y memorias, me voy a centrar durante las dos proximas semanas (aparte de a estudiar) a documentar el proyecto tanto rellenando los DocStrings de las funciones como creando diagramas, haciendo la memoria del proyecto y preparando la presentación que tendre en la final de Madrid del dia 15 de Abril. No tengo nada planeado al respecto, asi que debido a la falta de tiempo de hacer algo mas especifico aprovechare a desarrollar toda la documentacion de forma que me valga para todos los frentes que se me han presentado abiertos. Es por eso que de momento la documentacion se encontrara en la forja de Red Iris, donde podreis encontrar absolutamente todo el material relaccionado con PirannaFS (excepto lo publicado en este blog, que se encargan de guardarmelo muy amablemente los chicos de Google... :-D ).

lunes, 21 de marzo de 2011

PirannaFS Reloaded

Dos meses y medio, el ritmo decrece... :-P Lo cierto es que como bien predije este cuatrimestre iba a ser de aupa, y lo ha sido: jornadas de 12 horas, mudanza y media hora mas de transporte... y trabajo para casa los fines de semana. Por suerte hace dos semanas se hizo la presentación de los trenes y no solo la señora Cristina Fernández de Kirchner (para que veais como cotiza el niño... :-D ), sino que encima antes de que se terminara el proyecto conseguí trabajo en Vocento, y tiro oca porque me toca: estoy en todo el centro, tardo la mitad en llegar, el horario es flexible, las horas son ajustadas, el ambiente es agradable, el trabajo es tranquilo... y me pagan un 33% mas. Vamos, que me ha tocado la primitiva :-D Es por eso que despues de varios meses de estress y no dormir no solo vuelvo a tener fuerzas para estudiar en el tren sino que mucho mas importante, vuelvo a tener TIEMPO, y es por eso por lo que en las dos ultimas semanas le he pegado un chute bien fuerte a PirannaFS :-D

Para empezar, finalmente pude probar como seria el sistema usando PyFilesystem, y no hay lugar a dudas: me ha convencido. Dejando de lado que por su filosofia tan pythonica se queda a bastante alto nivel de lo que seria un sistema de archivos normal (el acceso a los sectores no se hace directamente sino a nivel de archivos...) lo cierto es que su uso de excepciones hasta la estenuación lo hace realmente potente y sencillo de programar: adios a comprobar continuamente valores de retorno que no nos atañen, si no nos interesa una excepcion ya habra otro que se encargue. Relax... y una limpieza de codigo y un estilo Zen minimalista increible. ¡Si hasta en algunos casos los comentarios de cabecera ocupan mas que el codigo! :-P

Ademas, este reinicio cual ave Phoenix me ha permitido el encontrar algunos fallos ciertamente molestos y solventar algunas idiosincrasias como el hecho de que la longitud de los chunks empezara en 1 para apuntar siempre al siempre simplemente por ahorrar algunas sumas de vez en cuando, aparte de poder limpiar codigo y encontrar soluciones mas optimas a algunos problemas, lo cual me ha llevado a pensar que al tener ahora un nucleo mas limpio, quizas si sea buena idea el tener tambien una version Python-FUSE del sistema de archivos saltandome algunas capas de abstraccion de PyFilesystem. Al fin y al cabo, el usar excepciones en lugar de retornar valores de error era el paso logico a dar para tener un codigo en condiciones, hoy dia el hacer las cosas al "estilo C", por muy simple, portable y optimo que pudiese ser, es un sin sentido teniendo opciones mas potentes (mismamente C++).

Ahora bien, despues de haberme metido en faena, efectivamente PyFilesystem no es la panacea: todavia esta muy verde e inmaduro, y no esta pensado para desarrollar sistemas de archivos nativos... ni parece que tengan intencion de hacerlo. Al igual que FUSE era famoso porque aparecieron multitud de sistemas de archivos "de juguete" (los sistemas de archivos para acceder a sistemas online son legion) esa filosofia es mucho mas real en PyFilesystem, lo cual tampoco es malo si lo que se pretende es que sea mas facil el desarrollo de sistemas de archivos. Sin embargo esta facilidad lleva implicita cierta abstraccion como es el hecho de acceder a nivel de ficheros (al menos, al ser "file-like objects", la integracion y uso de estos directamente en codigo python externo es directo), y tambien hay algunas decisiones como la ausencia directorio actual y el que los directorios realmente sean sub-sistemas de archivos (logico desde un punto de vista jerarquico-recursivo...) lo hace un poco extraño y dificil de manejar, aparte de que no hay definidas clases neutras desde las que poder heredar de _nada_. Al menos he intentado solucionar estos fallos en mi implementacion de PirannaFS sobre PyFilesystem, asi que cuando lo tenga mas fino y estable los adaptare a la libreria y enviare los parches correspondientes a ver que pasa :-)

Y recuerden niños: no olviden supervitaminarse y supermineralizarse hacer unidades de test para todo: no veais el subidon de adrenalina que da despues de haber hecho una metamorfosis completa del codigo el no saber por donde empezar a comprobar que todo esta bien, encontrarse perdido dentro del codigo de PyFilesystem unas unidades de test basicas, ver como te dicen exactamente donde estan los fallos (incluso algunos que ni siquiera suponias que podrias llegar a tener, como es la corrupcion de archivos de gran tamaño) e ir resolviendolos uno a uno (a veces mas ;-) ) poquito a poco y pasar de no superar ninguno de los 49 a que solo queden 10 y la mayoria relaccionados con los hilos... :-D

domingo, 2 de enero de 2011

Volver a empezar

Casi dos meses hace desde la ultima entrada, pero lo cierto es que han sido dos meses de aupa: presentación en el trabajo, vencimiento de fechas, jornadas maratonianas (entre el miercoles 22 a las 10 de la mañana -tarde, como siempre- y sale el viernes 24 a las 5 de la madrugada...), examenes... y encima, para colmo un antiguo compañero de trabajo ha empezado UnHosted, un proyecto muy interesante y aparte de colaborar con el he participado en el concurso que ha organizado para ponerlo a prueba, asi que el tiempo que le he podido dedicar a PirannaFS ha tendido a 0.

Sin embargo no me he olvidado del proyecto y de hecho ha sido uno de mis propositos de año nuevo (otro de ellos era ganar el concurso de UnHosted... :-D ), asi que aqui estoy intentando retomarlo, y una de las primeras que voy a hacer va a ser olvidarme un poco de la obsesion que coji con las unidades de test. Eso lo hice por estabilizar el codigo y poder publicarlo, pero si por dedicarle tiempo dejo de dedicarselo al proyecto, a perder la ilusion de hacer algo y, lo mas importante, dejo de divertirme, entonces ya no merece la pena.

Precisamente por eso voy a retomar el desarrollo puro y duro, y debido a lo potente que he visto en estos dos meses que es PyFilesystem (que no haya programado no significa que no me haya documentado, y el estar inscrito a su lista de correo ayuda... :-D ) lo primero que voy a hacer va a ser modificar PirannaFS para que sea una libreria que pueda servir como base para crear una interfaz python-FUSE como hasta ahora y otra nueva interfaz PyFilesystem. Asi, aparte de ser compatible tanto con un sistema que ya es funcional como con otro bastante prometedor pero todavia en desarrollo, me permitira luego desarrollar las utilidades de apoyo sin necesidad de lidiar directamente con el sistema de archivos.

Asi que dejando de lado estresses varios y que se presenta un cuatrimestre movidito, dejemos que de comienzo la magia... :-D