[pyar] algoritmo para ads en django

Daniel Moisset dmoisset en machinalis.com
Mie Jul 30 12:23:15 ART 2014


*Saber* el minimo en un heap es O(1), pero *sacarlo* es O(logN)



2014-07-30 12:17 GMT-03:00 Juan Carlos Giudici <elchudi en gmail.com>:

> para que no sea tan costoso mantenerlo ordenado, podes usar un heap, que
> te permite sacar el max o min de un arbol con cierto criterio en o(1)
>
>
> 2014-07-28 14:56 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
>
> Si los tenes en memoria, es costoso solamente cuando levantas el servidor
>>
>>
>> 2014-07-28 14:54 GMT-03:00 Gonzalo Almeida <flecox en gmail.com>:
>>
>> 2014-07-28 14:28 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
>>> > Bueno, entonces, cuando entra el usuario X, y lo ultimo que vio es el
>>> aviso
>>> > n, se le muestra el proximo (n+1, o n+2, o n+3, ect) QUE TENGA MENOS
>>> VISTAS,
>>> > que haya sido menos visto hasta ese momento globalmente
>>> >
>>> > Creo que curiosamente, asi, los avisos por usuario tienden igual a no
>>> > repetirse (a no ser que el usuario entre 1346 veces ;-)
>>>
>>> si, hasta ahora todas las ideas que tiraron son muy buenas,
>>> pero sufren el problema de tener que ordenar todos los productos/ads
>>> en cada requestXad y esto es costoso no?
>>>
>>> >
>>> >
>>> > 2014-07-28 14:15 GMT-03:00 Gonzalo Almeida <flecox en gmail.com>:
>>> >
>>> >> 2014-07-28 13:36 GMT-03:00 Angel Java Lopez <ajlopez2000 en gmail.com>:
>>> >> > Ok, de Django no se apenas nada, y apenas Python
>>> >> >
>>> >> > Pero si son miles:
>>> >> >
>>> >> > - Mantendria una lista de los anuncios, o sus ids, en memoria
>>> >> > - Luego, podria shuffearla o no
>>> >> > - Digamos que son 1345 avisos
>>> >> > - Por cada usuario, marcaria si es ya le di aviso o no
>>> >> > - Si al usuario X, es la primera vez que viene y le doy un aviso, le
>>> >> > asigno
>>> >> > un numero aleatorio entre 0 y 1344, digamos n
>>> >> > - Le muestro el aviso n
>>> >> > - Incremento n y lo guardo por usuario. El nuevo valor es modulo
>>> 1345
>>> >> > - Si viene un nuevo aviso, lo pongo al final de la lista en memoria.
>>> >> > Todos
>>> >> > los modulos ahora se toman modulo 1346
>>> >> > - Y asi
>>> >> >
>>> >> > Digo que la lista inicial podria shuffearla o no, porque la
>>> distribucion
>>> >> > pareja la daria el elegir un numero aleatorio para el primer aviso
>>> por
>>> >> > usuario
>>> >> >
>>> >> > El problema de shuffearla, es que hay que mantener ese shuffleo por
>>> toda
>>> >> > la
>>> >> > vida, para que los usuarios no empiezen a ver algo repetido
>>> >> >
>>> >> > Igual, si un usuario entra 1346 veces, se le va a repetir el primer
>>> >> > aviso
>>> >>
>>> >> muy la idea esta buena.
>>> >> pero el problema es que todavía  puede pasar que a nivel global un
>>> >> product/anuncio se puede ver varias veces y otros nunca.
>>> >> si solucionamos esoo  aumentamos las probabilidades de que eso no
>>> >> pase.. creo que podria andar :)
>>> >> y al reiniciar el server por x razón perdemos la lista (si esta
>>> >> shufleada) pero bueno, si no esta shufleada se puede reconstruir.
>>> >>
>>> >> gracias
>>> >>
>>> >>
>>> >> >
>>> >> > Nos leemos!
>>> >> >
>>> >> > Angel "Java" Lopez
>>> >> >
>>> >> >
>>> >> > 2014-07-28 13:21 GMT-03:00 Gonzalo Almeida <flecox en gmail.com>:
>>> >> >
>>> >> >> boinas
>>> >> >>
>>> >> >> 2014-07-28 13:19 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com
>>> >:
>>> >> >> > cuantos avisos distintos estamos hablando? 10, 100, 1000, un
>>> millon?
>>> >> >>
>>> >> >> podriamos hablar en miles.. no creo que un millon
>>> >> >>
>>> >> >> :D
>>> >> >> >
>>> >> >> > D.
>>> >> >> >
>>> >> >> >
>>> >> >> > 2014-07-28 12:43 GMT-03:00 Gonzalo Almeida <flecox en gmail.com>:
>>> >> >> >>
>>> >> >> >> Buenas,
>>> >> >> >>
>>> >> >> >>
>>> >> >> >> creo que Martín pregunto algo en el chat.. pero aqui mando los
>>> >> >> >> requerimientos completos.. a ver si a alguno se le ocurre algo:
>>> >> >> >>
>>> >> >> >> tenemos que implementar un sistema de "ads" que muestran
>>> productos
>>> >> >> >> del
>>> >> >> >> sitio.
>>> >> >> >>
>>> >> >> >> el tema es el siguiente:
>>> >> >> >>
>>> >> >> >> 1) podemos tener varios ads en la misma pagina y no tienen que
>>> >> >> >> repetir
>>> >> >> >> productos
>>> >> >> >> 2) si tenemos 1000 productos tenemos que tratar de mostrarlos
>>> >> >> >> uniformemente y no mostrar siempre los mismos 100, tratar de
>>> mostrar
>>> >> >> >> todos.
>>> >> >> >> 3) tenemos que tratar de no repetir por usuario.
>>> >> >> >>
>>> >> >> >> asi que hay que tratar de no repetir a nivel de usuario y a
>>> nivel
>>> >> >> >> global.
>>> >> >> >>
>>> >> >> >> una idea era armar una lista de los 1000 ids de productos y
>>> crear
>>> >> >> >> una
>>> >> >> >> shuffleada para cada usuario.
>>> >> >> >> asi cumplimos que no se repiten para cada usuario. pero si nos
>>> puede
>>> >> >> >> pasar
>>> >> >> >> que:
>>> >> >> >> 1) al agregar un nuevo producto tengamos que actualizar cada
>>> lista
>>> >> >> >> appendeando el producto al ultimo de cada una.
>>> >> >> >> 2) puede pasar que un producto sea visto varias veces a nivel
>>> global
>>> >> >> >> (visto por varios usuarios) y otro no se vea nunca. asi que no
>>> se
>>> >> >> >> cumple el requerimiento de que los productos se muestren
>>> uniformes a
>>> >> >> >> nivel global.
>>> >> >> >>
>>> >> >> >> el principal problema es mantener la uniformidad a nivel global
>>> y a
>>> >> >> >> nivel usuario y hacerlo rapido.
>>> >> >> >>
>>> >> >> >> pre-asignar una lista no estoy seguro que sea la solución yo
>>> creo
>>> >> >> >> que
>>> >> >> >> deberiamos:
>>> >> >> >> al momento de acceder a la pagina. ver  a nivel global cuales
>>> >> >> >> productos son los "menos vistos" y de esos, mostrar los que el
>>> >> >> >> usuario
>>> >> >> >> todavía no vio. teniendo en cuenta todos los casos y hacerlo muy
>>> >> >> >> rapido.
>>> >> >> >>
>>> >> >> >> pero no se como :P
>>> >> >> >>
>>> >> >> >> alguna idea?
>>> >> >> >>
>>> >> >> >> muchisimas gracias por su tiempo :)
>>> >> >> >>
>>> >> >> >> --
>>> >> >> >> Linux user #466939
>>> >> >> >>
>>> >> >> >> _______________________________________________
>>> >> >> >> pyar mailing list pyar en python.org.ar
>>> >> >> >> http://listas.python.org.ar/listinfo/pyar
>>> >> >> >>
>>> >> >> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >> >> >>
>>> >> >> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software
>>> Libre
>>> >> >> >> de
>>> >> >> >> Argentina - http://www.usla.org.ar
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > _______________________________________________
>>> >> >> > pyar mailing list pyar en python.org.ar
>>> >> >> > http://listas.python.org.ar/listinfo/pyar
>>> >> >> >
>>> >> >> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >> >> >
>>> >> >> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software
>>> Libre
>>> >> >> > de
>>> >> >> > Argentina - http://www.usla.org.ar
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> Linux user #466939
>>> >> >> _______________________________________________
>>> >> >> pyar mailing list pyar en python.org.ar
>>> >> >> http://listas.python.org.ar/listinfo/pyar
>>> >> >>
>>> >> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >> >>
>>> >> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software
>>> Libre de
>>> >> >> Argentina - http://www.usla.org.ar
>>> >> >
>>> >> >
>>> >> >
>>> >> > _______________________________________________
>>> >> > pyar mailing list pyar en python.org.ar
>>> >> > http://listas.python.org.ar/listinfo/pyar
>>> >> >
>>> >> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >> >
>>> >> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
>>> de
>>> >> > Argentina - http://www.usla.org.ar
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Linux user #466939
>>> >> _______________________________________________
>>> >> pyar mailing list pyar en python.org.ar
>>> >> http://listas.python.org.ar/listinfo/pyar
>>> >>
>>> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >>
>>> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> >> Argentina - http://www.usla.org.ar
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > pyar mailing list pyar en python.org.ar
>>> > http://listas.python.org.ar/listinfo/pyar
>>> >
>>> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>> >
>>> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> > Argentina - http://www.usla.org.ar
>>>
>>>
>>>
>>> --
>>> Linux user #466939
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140730/cf9ba0e3/attachment-0001.html>


More information about the pyar mailing list