Aplicación para cuadrar macros

HeXaN

#30 ¿PHP?

1 respuesta
Thanat0s

#31 Sí, excepto la parte más pesada que es la de calcular todas las posibles combinaciones.

1 respuesta
RaCe

#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?

1 respuesta
Thanat0s

#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.

1 respuesta
Fwend

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:

  1. 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.
  2. Meto macros, tantas comidas al dia.
  3. 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.

RaCe

#34 como vas a empalmar todo?
http://www.webtoolkit.eu/wt/ ?

Thanat0s

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.

1 respuesta
HeXaN

#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.

1 respuesta
Thanat0s

#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

1 respuesta
HeXaN

#39 Deja de anidar bucles for, hombre jajaja

1 respuesta
Thanat0s

#40 Eso intento, por eso le ando dando vueltas para que quede lo mejor posible :P

2 respuestas
RaCe

#41 tienes pensado subirlo a github o algo?

1 respuesta
Thanat0s

#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.

DoriHysteria

No se os valora suficiente a los programadores.

1 respuesta
R

#44 siempre puedes recompensarle, guiño guiño.

peterkakarot

#41 No teneis Maps en phyton?

1 respuesta
Thanat0s

#46 Ni idea, yo he usado python dos o tres veces y siempre tiro de arrays normales.

1 respuesta
HeXaN

#47 Pero usa maps/sets/dictionaries hombre de Dios xD

https://docs.python.org/2/tutorial/datastructures.html

1 respuesta
Thanat0s

#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.

Thanat0s

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.

Marchelo

Sé que llego algo tarde al debate pero yo haría web y con el tiempo, app móvil.

1 respuesta
Thanat0s

#51 Así va a ser, gracias por responder! :D

1 respuesta
HeXaN

#52 ¿Django dijiste al final?

1 respuesta
Thanat0s

#53 No, php + mysql es todo lo que necesito :D

1 respuesta
11 meses después
RaCe

#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

1 respuesta
Thanat0s

#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.

1 respuesta
RaCe

#56

nos pasa a todos no te ralles xD, feliz navidad

nilhow

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

1 respuesta
J0tape

Yo se que hay una aplicación parecida a la que dices

http://www.imparable.tv/2015/08/revision-completa-de-fitmacro/

1 respuesta
Thanat0s

#58 Mucha gente se quejó de tener que meter ellos mismos los alimentos una primera vez.

#59 No tiene que ver nada el concepto de la aplicación que has puesto a la idea que yo tengo.

1 respuesta

Usuarios habituales