Consultas complejas Django (Forma simple)

Saludos, en esta oportunidad vamos a construir consultas complejas en Django, pero de una manera simple, para ello usaremos el objecto Q que según el manual oficial se define como:

“A Q object (django.db.models.Q) is an object used to encapsulate a collection of keyword arguments. These keyword arguments are specified as in “Field lookups” above.”

Comencemos entonces, debemos importar el objeto Q que pertenece a django.db.models

from django.db.models import Q

Una vez importado el objeto construimos nuestro QuerySet

results = Model.objects.filter( Q (tipo='REC', emision__month=1), Q (estatusdoc=0) | Q (estatusdoc=1) & Q (estatusdoc=2)).aggregate(ventas_mes=Sum('totalfinal'))

filtramos por tipo=’REC’ y emision mes= 1 (enero), seguidamente le decimos que (estatusdoc debe ser = 0) el operador | significa OR (estatusdoc = 1) el simbolo & significa AND (estatusdoc=2) y luego con aggregate sumamos el totalfinal que coincida con nuestra sentencia

¿Simple no?

Algunas fuentes para que se documenten mejor acerca del uso de este objeto en Django

http://www.michelepasin.org/blog/2010/07/20/the-power-of-djangos-q-objects/

https://docs.djangoproject.com/en/dev/topics/db/queries/

ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘./db/’, errno: 17) MySQL

Intentando borrar una BD luego de un bajón de luz a la cual le estaba ejecutando una sentencia enorme, me ocurre el siguiente error ERROR 1010 (HY000): Error dropping database (can’t rmdir ‘./db/’, errno: 17), FUCK, lo que toca es corregir el error y continuar con el trabajo, así que manos a la obra.

Lo primero que se debe hacer es identificar el error, para ello puedes usar el comando perror y el número del error, de la siguiente forma

#perror 17
el cual nos indica que el directorio no está vacio y por ello no puede eliminar la BD, procedemos a eliminar lo que este en ese directorio, de acuerdo al datadir de MySQL, por defecto se encuentra en /var/lib/mysql/ eliminas el contenido de tu BD y luego ejecutas

mysql> drop database db;
Query OK, 0 rows affected (0.00 sec)

Ya con eso puedes volver a crear la BD y ejecutar tu setencia :)

Mostrar la canción que escuchas con Audacious y Xchat

Hoy decidí ver la manera de mostrar la canción que estaba escuchando en los canales de IRC a los que estaba conectado, simplemente con fines de diversión, no más, así que comencé una búsqueda de algún plugin que me permitiera hacer esto, sin embargo para la distribución que uso Debian Wheezy no había (O no busque donde debía).

La búsqueda me arrojó un script hecho en perl, con el cual podía hacer lo que quería, pero está probado para ArchLinux (excelente distro), tocó arreglar algunas cosas para que funcionara en debian, pero se logró. Así mismo cambie los comandos para hacerlos más fácil a la hora de ejecutarlos y elimine cosas de lo que mostraba (el script muestra el lugar en tu disco donde está la canción, a nadie le importa donde la tienes ¿o si?).

Como usarlo

Descargate el script desde aquí

Es simple, ya que modifique los parámetros debes ejecutar, una vez cargado desde el menú xchat – cargar guiones o complementos, la ayuda con el comando

/ayuda

Con ello se desplegaran los comandos que puedes usar

* /anuncia – Display the current song playing to a channel.
* /proxima     – Skip to the next track.
* /previa     – Skip to the previous track.
* /play     – Start playback.
* /pausa    – Pause playback.
* /version  – Display version information for the script, Audacious and XChat to a channel.
* /ayuda     – Display this help screen.

Simplemente ejecuta la que desees y listo.

Espero que te sirva, ando “castellanizando” el script para hacerlo mejor y voy a corregir algunos detalles, por ejemplo en mi caso no funciona el /promixa CORREGIDO Y ACTUALIZADO :D

Android 2.3 a Huawei UM840

Hace unos meses atrás le metí Android 2.2.2 a mi huawei UM840, era una ROM “Cocinada” por la gente de FroyoMovida bastante interesante, muy simple y que le sacaba el máximo provecho a mi dispositivo; ahora bien, quiero sacarle hasta la ultima gota a este aparato, es por ello que me puse a buscar una ROM 2.3 para él.

En la web de AndroidMovida encontré una http://androidmovida.com/2012/06/amlabs-gingermovida-2-3-7-para-huawei-um840-dos-versiones/ la cual me dispuse a instalar. Esta ROM está basada en CyanogenMod y me parece muy buena, aunque tiene unos detalles que les voy a comentar

El proceso de instalación varía un poco con respecto a la anterior ROM que instalamos, a continuación se los dejo:

1.- Descargar el .zip y colocarlo en la sd
2.- Entrar al recovery
3.- Hacer wipe data/factory reset, luego wipe cache partition
4.- Dar en avanced, hacer wipe Dalvik cache, dar en la tecla de atras
5.- Ahora ir a Install zip from sdcard, eligen choose zip from sdcard, eligen el archivo .zip, eligen yes
6.- Se hace el proceso, le dan con la tecla atras, eligen advanced, fix permission, se hace el proceso.
7.- Reboot system now y listo

LO QUE MEJORÓ

Desde mi perspectiva, ha mejorado, aún más, el rendimiento del dispositivo:

  • Te recomiendo que le quites las animaciones para disfrutar mucho mejor de la velocidad del dispositivo
  • La cámara frontal no funciona (yo en lo personal no la uso, así no me importo mucho eso)ç
  • Instale LINE una excelente app para llamadas y mensajes vía WiFi.
  • El aspecto visual es mucho más atractivo.
  • El “File Manager” de esta ROM es feo, yo lo cambie por ASTRO

Puedes continuar buscando cosas que no te gusten de esta ROM.

 

Canaima GNU/Linux + Fedora 16 + Grub2

Usando por mucho tiempo Canaima GNU/Linux, decidí darle uso a los 40gb que tenía ociosos en ese disco duro, así que me puse a instalar Fedora16, la instalación muy simple (excesivamente simple), el problema surgió cuando al reiniciar el grub2 de Canaima GNU/Linux no me reconocìa la instalación de Fedora…

Luego de 10min de investigación, fue ràpido verdad, encontré una solución muy simple y decidí probarla.

Accediendo a una terminal como root ejecutamos el siguiente comando

grub-mkconfig -o /boot/grub/grub.cfg

Luego ejecutamos

update-grub2

Y con esto tenemos nuestro menú de grub con la opción de Canaima GNU/Linux y Fedora16 (Verne)