Voici comment mettre en place rapidement un watcher avec livreload pour Jade en utilisant gulp ! Pour ma part j’utilise gulp-coffee, parceque je préfere coffee-script à Javascript 🙂 On comment par installer le nécessaire : $ npm install gulp gulp-coffee gulp-connect gulp-jade Ensuite on peut créer le gulpfile.coffee. Pour l’exemple les sources sont dans leLire la suite
Python, liste et rotation
Vous voulez faire des rotations sur une liste comme dans l’exemple suivant : l = ["un", "deux", "trois"] # rotate here print l >>> [’trois’, ‘un’, ‘deux’] Les listes python ne nous offre pas directement un système pour faire ce genre de chose, mais il y a un module python qu’il vous faut absolument découvrirLire la suite
Django : https, nginx, uwsgi et is_secure()
Si vous utilisez wsgi avec nginx pour servir vos application Django, vous avez peut être rencontré ce problème : request.is_secure() return false, alors que votre site est bien en HTTPS… La solution est très simple, dans votre fichier de conf Nginx ajoutez: server { listen 443; server_name my_domain.io; ssl on; ssl_certificate /etc/nginx/certificates/certif.crt; ssl_certificate_key /etc/nginx/certificates/certif.key;Lire la suite
Fabric – yum, pip, cacher les sorties – stdout
Cet article parle de Fabric1. Depuis Fabric2 est sortie, et a beaucoup changé. Fabric est franchement un outil vraiment bien branlé pour faire ses déploiements, mais aussi installer ses serveurs. Par exemple, voici une installation basique: from fabric.api import * from fabric.colors import * def install(): env.user = ‘admin’ print(green(’=== Installing basics for Nginx/Uwsgi/MariaDB/RabbitMQLire la suite
Django Debug Toolbar et AngularJS, parse error
Si vous utilisez Django Debug Toolbar, et que vous utilisez aussi AngularJS, il vous est peut etre arrivé d’avoir une erreur de parsing d’AngularJS. Le problème c’est que pour afficher certaines données, Django Debug Toolbar va utiliser (( )) {{ }} [[ ]] comme caractères … Pour ma part, pour ne pas avoir de conflitLire la suite
Transifex : tx push -s Exception: Not Found :(
Transifex est un service en ligne (payant) qui permet de gérer des équipes de traduction. Je suis en train de voire ce que ca peut donner avec un projet Django, pour remplacer django-rosetta qui commence à m’emmerder (comme dirait ma maman !). En soit, la configuration est pas trop compliqué, et je vous ferais uneLire la suite
Model class django.contrib.contenttypes.models.ContentType doesn’t declare an explicit app_label
En voilà un warning pratique à régler encore. /[…]/python2.7/site-packages/django/contrib/contenttypes/models.py:159: RemovedInDjango19Warning: Model class django.contrib.contenttypes.models.ContentType doesn’t declare an explicit app_label and either isn’t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class ContentType(models.Model): Et si vous utilisez le module auth, voua aurezLire la suite
Django – login as. Se connecter à un autre compte quand on est admin
Parfois, lorsqu’un utilisateur nous reporte un bug, on aimerait bien se connecter à son compte pour mieux comprendre son problème. Django_su est la bibliothèque Django qu’il vous faut pour cela. Le projet est assez ancien (il a été créé en 2011) et il reste encore assez actif. Pour preuve j’ai fait une pull request quiLire la suite
Utiliser Celery dans un projet Django
Celery permet de façon simple, l’exécution de code Django en background. Un exemple simple d’utilisation est lorsque l’on permet à l’utilisateur de faire une tache qui prends plusieurs secondes à s’exécuter, celui-ci doit attendre la fin de la tâche pour que la page se charge. Et ça, c’est pas cool ! Celery va permettre d’exécuterLire la suite
Nginx – activer la compression gzip
L’activation de la compression gzip dans Nginx est vraiment très simple. Sous CentOS7 vous devez éditer le fichier /etc/nginx/nginx.conf et ajouter les lignes suivantes dans la partie http{ #here } # Activation de la compression gzip on; # Niveau de compression. 5 est un bon compromis entre taille réduite # et temps passé àLire la suite