#30 ¿PHP?
#31 Sí, excepto la parte más pesada que es la de calcular todas las posibles combinaciones.
#32 hombre si dices que la parte tocha es python puedes cambiar php por django que es framework web de python y así no mezclas tecnologías, yo creo que a la larga lo agradecerás
preveo que tendrás que hacer mucho enfasis en el tema eficiencia, ahora funciona rápido? has probado con bds más grandes?
#33 La parte pesada estaba pensando en hacerla en C++ sobre todo por el tema eficiencia, aunque quizás en Java también me valdría.
Y no, en python no funciona rápido incluso con pocos alimentos, ya que el número de combinaciones son enormes.
Yo personalmente me alejaría de complicaciones, de añadirle millones de recetas y de información extra, al final acaban enguarrando la aplicación y saturan. Yo sería feliz con lo básico:
- Abro la aplicación, voy a la pestañita de "Base de datos de alimentos", y añado los 15-20 alimentos que tengo por casa y que uso de normal el 90% de las veces.
- Meto macros, tantas comidas al dia.
- Profit.
Más allá lo veo recargar demasiado, y el que mucho abarca poco aprieta. Y pagaría tranquilamente un par de € por el coñazo que me ahorraría.
Le estoy dando vueltas ahora mientras retoco el script que tengo de python y me han surgido nuevas ideas de cómo hacerlo en formato web.
Ahora mismo tengo un problema en mente:
El usuario borra las calorías y las macros diarias, cambiándolas por unas nuevas, por lo que tendría que recalcular todo, cargando demasiado el sistema.
La solución que se me ocurre es meter esa tarea de recalcular todo en una cola subdividida en tareas más pequeñas, de forma que cada x tiempo (un minuto por ejemplo) se coja la subtarea i del usuario x, luego se coja la i+1, etc, hasta completar todas las subtareas.
Esto se haría con un cronjob.
En el resto de casos creo que los cálculos serían suficientemente sencillos como para solucionarlos en menos de 30 segundos.
Mola, creo que mañana empezaré a diseñar la estructura de la base de datos.
pd: a ver si para finales de Enero tengo una primera versión funcionando íntegramente en php + mysql.
#37 A ver, los cálculos que necesita la app son basurilla xD No te rayes con historias raras porque seguramente con lo más simple ya consigas rendimiento de sobra.
#38 Evidentemente no son ecuaciones diferenciales, pero ahora mismo en python al no tener base de datos por debajo tengo una función de orden n3 que hace que el tiempo se dispare de una manera acojonante.
Para 14 alimentos que tengo metidos, haciendo que me calcule todas las posibles combinaciones para 6 comidas diferentes al día, tarda lo siguiente:
11:06:24
11:08:20
#42 El script que tengo ahora de python no, porque es de andar por casa y me da pereza adecentarlo para exponerlo al público.
De todas formas ahora mismo no deja de ser un ejercicio de backtracking normal y corriente.
De hecho el esquema es el de la mochila:
2. Algoritmo de la mochila
Solk indica si se coge o no el elemento k-esimo
Solk € {0,1}
proc mochila (V: vector[1..N] de enteros; P: vector[1..N] de enteros; sol: vector[1..N] de enteros; C: entero; valor: entero; peso: entero; VAR valorMejor:entero; VAR solMejor: vector[1..N] de enteros; k: entero)
inicio
para i:=0 hasta 1 hacer
si (peso + V[k]*i <= C) entonces
sol[k]:=i;
valor:=valor+V[k]*i;
peso:=peso+P[k]*i;
si (k=N) entonces
si (valor>=valorMejor) entonces
solMejor:=sol;
valorMejor:=valor;
fsi
si no
mochila(V,P,sol,C,valor,peso,valorMejor,solMejor,k+1);
fsi
valor:=valor-V[k]*i;
peso:=peso-P[k]*i;
fsi
fpara
fin
La web la colgaré en el host que tengo contratado.
#47 Pero usa maps/sets/dictionaries hombre de Dios xD
#48 Jajaja debería haberme mirado un poco más python xD
Retocaré el script este finde y si lo dejo apañado pondré el código por aquí, aunque sólo cuadre calorías.
He estado intentando mejorar el script, pero tarda más o menos el mismo tiempo, y haciendo una última prueba en la que sólo hago la parte de backtracking, sin imprimir el resultado ni entrar en la función que tenía complejidad n3, he visto que es cuestión de que tiene que calcular muchísimas posibles combinaciones de alimentos.
Así que nada, paso de tocarlo más porque sino tendría que rehacerlo entero cambiando la filosofía del programa y es perder el tiempo.
Sigo con el diseño de la base de datos y me centro en el formato web en el que corregiré de antemano esos problemas.
#54 FYI, refloto post porque acabo de ver que alguien ha realizado algo muy parecido a tu idea: https://www.eatthismuch.com/
yo lo estoy probando y de momento tiene muy buena pinta, aunque el problema como siempre con este tipo de cosas es la BD de alimentos
#55 Conseguí hacer un bot para sacar los alimentos de myfitnesspal, luego descubrí fatsecret y me quedé ahí, intentando sacar su bd.
Paré el proyecto de la aplicación web para empezar de 0 con más cosas en vista a las mejoras que se comentaron en este hilo.
Diseñé la base de datos y empecé a hacer una aplicación de escritorio en Java (pensando en reutilizarla luego con web services).
Pero es un proyecto muy amplio que requiere mucho tiempo y yo le dedico muy poco, así que apenas he avanzado estos últimos meses.
Es una idea que pienso que se podría explotar y conseguir pasta con ella, pero cuando llego a casa no me apetece una mierda ponerme a programar, así que lo dicho, avanzo muy lento.
Yo veo factible lanzar la aplicación aunque no haya una base de datos con lo alimentos siempre y cuando te haga las reglas de 3 para calcular dependiendo de la cantidad de alimento que hayas tomado
Yo se que hay una aplicación parecida a la que dices
http://www.imparable.tv/2015/08/revision-completa-de-fitmacro/