Hemos realizado las primeras subidas a la forja de Molinux.En concreto, se ha subido el documento de requisitos de usuario, en el cual describimos los requisitos que un cliente ficticio (desgraciadamente, por el momento, no tenemos uno real) impone a nuestra futura aplicación.También se ha subido el prototipado de la interfaz de usuario.Por otro lado, aunque todavia no se hayan subido sus respectivos archivos, muchas otras tareas han sido, o están a punto de ser, finalizadas, en consecuencia, pronto se subirán a la forja muchas otras cosas.A primeros del año que viene habremos realizado muchas de las tareas del proyecto.
Otro propósito de Principia: que cualquier usuario pueda añadir ejercicios
Los ejercicios que no podrá resolver Principia serán: la mayoría. Como cualquier otro programa de éste tipo, por mucho esfuerzo que se ponga en que pueda resolver muchísimos seguirán siendo minoría. Sería un desperdicio que alguien no pudiera usar Principia solamente porque ese tipo de ejercicio para el que lo quiere usar no ha tenido la fortuna de estar entre los elegidos por el programador.
Ésta reflexión se puede generalizar: por mucho código que se cree, siempre faltará algún algoritmo o algún tipo en el que basarse para resolver algún ejercicio. Por eso el nombre de Principia, para evitar la tentación de crear un programa de lógica muy grande pensando que así podrían resolverse ejercicios de física sin modificar nunca el programa.
La solución (hasta el límite de lo posible) para ambas cosas es que cualquier añadido se haga en Haskell, usando el resto del programa como una librería que dé hechas muchas cosas. Así será. Sin embargo, para facilitar las cosas a la gente que no sabe Haskell, se intentará que muchos ejercicios puedan definirse con poco más que añadir unos axiomas en una plantilla.
Por cierto que al principio pensaba crear otro lenguaje para ésto, pero es un poco absurdo hacerlo, porque Haskell ya tiene un aspecto bastante matemático, y todo lo que sea crear otro lenguaje para que después lo use Haskell sería limitar las posibilidades.
¿Qué es la minería de datos?
Proceso para detectar patrones no evidentes en datos.Además permite generar información para apoyar la toma de decisiones.
Patrón
Para nuestro caso un patrón es como una conducta,comportamiento.
La minería de datos puede utilizarse para…
¿Qué se puede obtener con la minería de datos?
¿Qué se puede obtener con la minería de datos?
Bien dentro del Mundo Open Source hay dos programas para la mineria de datos que son WEKA y R
Ambiente de software para estadística computacional y gráficos.
Tratamiento de datos, Análisis de regresión.
Colección de algoritmos de máquinas de aprendizaje para minería de datos
Tratamiento de datos, Reglas de asociación, Redes Neuronales.
La ventaja que tiene R con Weka es que Weka esta mas integrado con Java que R , pero en realidad , mi intencion es poder hacer mi aplicacion tan modular y escalable que alguien interesado pueda hacer un plugin para R.
De momento solo hay en mente el de weka , si algien quiere que me ponga un post y le hablamos
Mi tutor de PFC me recomendó que generara la documentación del proyecto con Doxygen, que es software libre.Es muy fácil de usar, en el caso de Python, se incluyen comentarios debajo de cada clase o método, y Doxygen recoge todos esos datos y genera unos ficheros HTML con toda la información. También es posible exportarlo a Latex.En los próximos días seguiré documentando el código, y optimizándolo en la medida de mis posibilidades.
Escribir el anterior post me aclaró las ideas. Ya puedo dar un ejemplo de ejecución real (faltan los pasos intermedios, pero no creo que eso me lleve mucho tiempo).
Partimos de unos operadores AND OR y NOT, y de dos axiomas:
axiomas = [ (Op NOT [Op AND [Var "p",Var "q"]] ,
Op OR [Op NOT [Var "p"],Op NOT [Var "q"]]),
(Op NOT [Op NOT [Var "p"]],
Var "p") ]
De momento estoy utilizando expresiones muy generales para que abarquen todos los ámbitos posibles. Cuando se particularice para lógica (o para aritmética…) se adaptará para que sea más legible. Por el momento lo traduzco a mano; los axiomas son:
El programa asume que la segunda forma de la equivalencia es la que deseamos tener. Con esos datos se obtiene, por ejemplo, siendo test1 (a v ¬(b ^ ¬c):
Operador> simplificar axiomas test1
[Op OR [Var "a",Op OR [Op NOT [Var "b"],Var “c”]]]
Traduzco; simplificar axiomas test1 es una función con dos parámetros que devuelve una sola forma simplificada (a priori podría haber más): a v (¬b v c) . Se llama desde un módulo Operador que he usado solo para el ejemplo.
Subversion me está dando un poco de lata. Hasta que aprenda a manejarlo con más soltura, las últimas novedades del blog pueden no estar reflejadas en la forja.
Bueno , una de las cosas de las hablo siempre es del METADATA.
¿Pero que es? ¿por que es tan importante?.
Bien Pentaho y Mat sacaron un producto que se llama Pentaho Metadata. Con esto un tipo de sistemas hace una diagrama con las bases de datos y la caustica que necesita cada persona, y genera un fichero xmi (dentro de cada xmi puede haber mas de una visión de negocio). he aquí un trozo de un fichero xmi.
Esto da un montón de posibilidades, ademas el xmi sigue un estándar del que ya hablare mas adelante.
Pero en cambio uno de los problemas es que es muy costoso poder parsear y no ha ningun parser especifico para el xmi.
También dejo unas capturas de pantalla de como es la herramienta:
Hay que destacar que para mostrar las imágenes del juego voy a usar una clase diseñada por mi que abstrae un poco la sdl.
struct imagen{
string tipo;
int x,y;
SDL_Rect *pos;
};
class sub_video{
private:
mapimg;
SDL_Surface *screen;
bool vacio;
bool activar;
public:
sub_video(SDL_Surface *pantalla);
~sub_video(void);
bool cargar_imagen(string cad,SDL_Surface *picture);
bool eliminar_imagen(string cad);
bool dibujar_imagen(imagen *picture,SDL_Surface *screen);
bool refrescar_pantalla(void);
bool actualizar_pantalla(void);
};
La idea es cargar todas las imágenes a mostrar en un juego dentro de un map de la STL, donde la clave es un string.
Ejemplo de uso:
class sub_video video;
SDL_Surface *surface;
……..
video.cargar_imagen(string(”bueno”), superficie); //superficie debe de estar cargada.
Todo esto estará con mucho más detalle en la documentación de la primera versión operativa de juego, la cual estoy trabajando a marchas forzadas.
No temas antes de la batalla, solo recuerda: ¡¡ victoria o muerte!!
Ya está disponible en la página web del proyecto el manual de referencia de Libgann.
http://cusl3-libgann.forja.rediris.es/manual/index.html
Para crear este manual hemos usado Doxygen.
Un saludo a todos y de nuevo espero que os guste.
Libgann ya tiene página web:
http://cusl3-libgann.forja.rediris.es/
Para crear esta página hemos usado Emacs con el modo org-mode.
Un saludo y espero que os guste.