Posts Tagged 'web development'

Getting Random objects from a Queryset in Django

When providing related or suggested info to the user in a website, it’s a common practice to obtain a random set of items. To do this in django the “usual” way is:

Book.objects.all().order_by('?')[:10]

The above code, sorts all books in a random order and then picks the first 10 objects. This approach is not really efficient en MySQL. Since the “ORDER BY ?” clause is really expensive. So, a good way to obtain random elemets (actually a random slice) is the following:

import random
count = Book.objects.all().count()
slice = random.random() * (count - 10)
Book.objects.all()[slice: slice+10]

The above code selects a random position for starting a slice (the next items are going to be consecutive). So it’s not really random.

Another approach is to get the random ids from Python:

from random import sample
count = Book.objecs.all().count()
rand_ids = sample(xrange(1, count), 10)
Book.objects.filter(id__in=rand_ids)

This last solution works fine for consecutive ids, where there are no missing elements. But you can always re call it until you have all the items you want.

La taberna esta casi lista www.lataberna.pe

He venido trabajando con algunos amigos en un site peruano http://www.lataberna.pe para un pub . La verdad el site esta orientado por su simplicidad, hemos tenido muchas peleas sobretodo por cuestiones de diseƱo. Aunque no estoy del todo contento con el acuerdo final, creo que se acerca bastante a lo que yo buscaba.

El site se mantiene bastante simple al momento, comprar bebidas, ver fotografias de los clientes, ver los regalos que la compania ofrece entre otras cosas. Me hubiera gustado ver otras caracteristicas como comentarios y tags en las fotos, tal vez algun blog o actualizaciones de su pagina en twitter y facebook probablemente esten disponibles para futuras versiones.

Las lecciones aprendidas:

  1. Django siempre nos salva y nos ahorra un enorme tiempo de desarrollo
  2. Hacer mockups; nos falto hacer mockups para no tener tantas discusiones cuando las cosas ya estaba hechas
  3. Los usuairos tambien piensan: muchas veces no los consideramos y este es un gran error, gente que poco sabe de desarrollo da muy buenas ideas.
  4. Sorl thumbnails no solo hace thumbnails: por no leer la documentacion no sabiamos esto, ahora si notamos que sorl es bastante bueno
  5. Algunas veces Internet Explorer 6 no tiene la culpa: siempre le hecho la culpa de todo (y es que generalmente si la tiene), pero sucede que algunas veces nuestro firefox o internet explorer 7 “corrige alguno de nuestros errores” no es hasta que no validamos el html/css que nos damos cuenta que el error es nuestro.
  6. No necesitamos flash para hacer animaciones: muchas veces veo sitios web que tienen flash para cambiar algunas imagenes o hacer mas dinamicos sus banners. En realidad esto no es necesario ya que javascript lo puede hacer. Si bien es cierto era un poco mas trabajoso, ya no lo es tanto con los cientos de plugins que existen para jquery. Personalmente perfiero evitar el uso de flash en los websites

Bueno denle una mirada en http://www.lataberna.pe

ViaBCP

Hace unos dias tuve que ingresar al portal del banco de credito (www.viabcp.com) para hacer algunas transacciones y bueno como el site parece un poco antiguo y anticuado y yo tenia algo de tiempo libre me anime a revisar un poco el html del site. Aqui lo que encontre:

  • Al ingresar a http://www.viabcp.com.pe me redirecciona a http://www.viabcp.com/zona_publica/01_persona/index.html. Es esto necesario? por que una url tan compleja para el homepage? Igualmente la redireccion me parece algo brusca.
  • Si uno nota las urls del site, se da cuenta que son realmente feas y parecen no tener mucha coherencia entre si. Por ejemplo al hacer click sobre el tab “instituciones” la redireccion es a http://www.viabcp.com/zona_publica/09_banca/index.html esto me parece en extremo innecesario y mal organizado. zon publica???? es eso neceario???, 09_banca ??? entonces no deberia existir 08_banca??? por que todas sus paginas terminan en index.html es eso necesario?????
  • la cabecera y pie no cuadran con el ancho del contenido (ver la imagen al final del post)
  • Se usan tablas para el layout, el layout principal de la pagina se hace con tablas, lo que no es para nada elegante, incluso se incluyen tds para dar espacio entre columnas. Esto produce codigo html inentendible llegue a encontrar 4 tablas anidadas cuando ninguno de los elementos deberia era “tabulable”
  • CSS redundate, no se usan mucho las cascadas para generalizar algunos elementos
  • ninguno de sus links tiene el atributo title que es obligatorio
  • WTF? no hay doctype en la declaracion del documento, sera 1.0?? transitional??? strict???xhtml?
  • Se usan atributos y reglas que ya no deberian ser utilziadas (atributos de estilo como height width border en el html), como width para tablas en el html, etiquedas del tipo topmargin marginwidth marginheight entonces para que esta el css????
  • No se especifica el type en sus scripts
  • Existen scripts dentro del html (deberia ser mejor que los tengan afuera del documento)
  • Aunque no es vital, es una buena practica poner los scripts en la parte final del html, aqui estan principalmente en el head
  • Se usa
    nbsp;

    para saltos de linea

  • Los scripts de js tienen llaves confusas, la indentacion no siempre es corecta
  • existen tags script sin contenido
  • algunos tags estan con mayusculas y otros con minusculas (si es xhtml todos deberian ser minusculas pero como dije antes, no sabemos si es o no xhtml por que no hay doctype)
  • Hay tags con el atributo style, entonces para que tienen hojas de estilo externas?
  • las imagenes no tienen el atributo alt que es obligatorio
  • no existe ningun tipo de indentacion en el html generado
  • en el css todo se hace mediante clases y el nombre de las clases esta totalmente relacionado con el estilo, por ejemplo txt12naraAri, es para textos de tamanio 12 de color naranja en Arial. Y que pasa si quiero que sean helvetica azul??? tendria que cambiar el nombre de la clase y actualizar todos los elementos que la referencian????
  • el enlace a correoweb no funciona
  • el logo del banner del header deberia ser un link al homepage no? (no es necesario pero se estila hacer eso)
  • el site no funciona en absoluto (se muestra una pagina en blanco) si no se tiene javascript habilitado

Categories