Mots-clé : howto

Django annotate : à quoi ça sert ?

Je n’avais pas bien compris l’utilité de « annotate » dans les queries Django jusqu’à maintenant…

Voici quel était mon problème :

J’avais un modèle de base, Activite. Une activité contenait des choses concernant… une activité. Si si je vous jure !

Par exemple, une activité consistait à ajouter un voyage. Ou avoir une nouvelle relation. Ou faire un témoignage comme quoi on aimait bien le site. Etc.
Je voulais que ces activités soient « partageables » entre les amis.
J’ai crée un modèles ActiviteShare. Facile jusque là.

Mais lorsque je demandais à récupérer toutes les activités, il fallait que je les trie en me basant sur le fait de savoir si elles étaient partagées. Pour exagérer, imaginons une activité qui était faite en 2010. Vous étiez parti à Malibu. Génial ! Et maintenant, en 2016, un ami s’inscrit, devient votre ami, et vous voulez partager cette activité avec lui. Il faut qu’elle s’affiche dans votre mur, comme activité « partagée récemment », mais qu’elle garde sa date de 2010, ok ?

Donc je devais trier d’abord en fonction de la date de ActiviteShare puis seulement après par la date de création de l’Activite.

Seul hic : si vous aviez partagé cette activité avec 10 contacts, au moment du tri, Django renvoyait dix fois le même enregistrement.

Mon tri était super basique, du genre :

Activite.objects.filter(
    # blabla
).order_by(
    '-activiteshared__date_last_modif',
    '-date_last_modif',
    '-date_publication',)

Mais ça ne marchait pas. 🙁

La solution ? Annotate.

Pour vous expliquer avant de mettre le code : je lui demande, lors de la requête, de garder la date maximale parmi toutes les dates partagées, et de l’appeler « mx ». Ensuite, je demande de trier simplement d’abord par « mx », puis par la date de dernière modification de l’activité.

Activite.objects.filter(
    # blabla
).annotate(mx=Max('activiteshared__date_last_modif')).order_by(
    '-mx',
    '-date_last_modif',
    '-date_publication',)

Merci à ce lien qui m’a bien aidé.

Ubuntu : alt-tab rapide : howto

D’abord installez compizconfig-settings-manager : le tutoriel est ici :

http://packages.ubuntu.com/search?keywords=compizconfig-settings-manager

Après avoir installé « compizconfig settings manager » :

  1. tapez les touches alt + F2 et une boite de dialogue va s’ouvrir ;
  2. dans cette boîte, tapez ccsm puis validez par la touche entrée ;
  3. de là, cherchez "Délai de pop-up de fenêtre", ou en anglais : "Popup Window Delay" ;
  4. cliquez sur l’onglet "Comportement" ou "Behavior" ;
  5. vous verrez une valeur : modifiez la en y mettant la valeur 0.

Et voilà, la combinaison alt + Tab pour passer d’une application à une autre est devenue instantanée !

Pour information, le tutoriel est ici :

http://askubuntu.com/questions/75250/how-to-make-alt-tab-switch-quickly
http://askubuntu.com/questions/43875/how-do-i-adjust-the-alt-tab-speed

Facebook en ligne de commande : le howto !

Traduction de l’article ici :
http://fbcmd.dtompkins.com/

C’est tout simplement un bon script en php, à lancer en ligne de commandes. Bon, comme le dit l’auteur, il ne faut surtout pas en abuser et faire un bot qui irait aspirer plein d’informations, hein !