Django, c'est bien. Par contre, déployer un projet Django en production, ce n'est pas toujours évident, surtout que la doc n'est pas forcément toujours très à jour à ce sujet.
La dernière fois que j'ai dû effectuer un déploiement bien propre en production, j'ai un peu regretté de ne pas avoir sous la main un beau tuto bien récent, bête et méchant. Comme j'ai dû rédiger la doc complète de l'opération, en voici la version française.
Au menu : du Nginx en frontal et reverse proxy vers Gunicorn qui sert notre projet tournant dans un virtualenv (foutaises !). On y va ?!
Javascript est un langage qui dispose de sa propre logique un peu tordue. Sa syntaxe ressemble vaguement à celles d'autres langages, mais on obtient parfois des résultats suprenants. Et puis ces erreurs incompréhensibles « this is undefined », « undefined is not a function », etc. Mais pas de paniques, suivez ce tutoriel pour bien comprendre Javascript.
« Bonjour à toutes et à tous ! Ce mardi 8 octobre, l'actualité du jour, c'est bien évidemment l'ouverture de la chasse. De bon matin, tous les recruteurs de la région se sont réunis pour chasser ingénieurs et techniciens qui constitueront les futurs cheptels des départements informatiques de leurs entreprises. Découvrez notre reportage, Martha Coustique et Jean-Pierre Bière. »
La sympathique D3.js est une bibliothèque qui permet de manipuler des documents à partir de jeux de données de manière très puissante et élégante. Elle est particulièrement adaptée à tout projet de présentation graphique de données, mais pas que.
Pour vous faire une idée des possibilités de la bête, je vous encourage à jeter un œil sur la liste d'exemples qui en devient presque ridicule tant elle est immense. Impressionnant, n'est-ce pas ?
À quoi sert D3 et comment fonctionne-t-elle (car j'ai décidé qu'elle serait féminine) ? Amusons-nous avec pour le découvrir.
Avertissement : si votre navigateur ne supporte pas svg, vous ne pourrez pas profiter des chatoyants exemples de ce billet. Tant pis pour vous.
Vous savez tous ce que sont les automates cellulaires, n'est-ce pas ? Bon, pour les cancres et les gens qui ont vécu dans une cave pendant des années, je vous fait un court rappel. Un automate cellulaire est une grille à n dimensions, découpée en cases ou « cellules », chaque cellule pouvant adopter une parmi plusieurs valeurs à un instant t. La vie d'un automate cellulaire est découpée en intervalle de temps distcrt. À chaque itération, la valeur d'une cellule depend de la valeur des cellules environnantes lors de l'itération précédente. C'est clair ?
Le plus célèbre des automates cellulaires est très probablement le Jeu de la vie et ses fascinantes évolutions, mais c'est loin d'être le seul. Aujourd'hui, pour la beauté des yeux et du code, nous nous intéresserons aux automates cellulaires élémentaires.
Ce type d'automate est le plus simple qu'il puisse exister : une seule dimension (une ligne au lieu d'une grille), deux valeurs possibles pour chaque cellule (0 ou 1) et chaque cellule ne dépend que d'elle même et ses deux voisins les plus proches pour ses changements d'états. Pourtant, même avec une telle simplicité, certains automates conservent des propriétés amusantes.
Everybody works from multiple devices nowadays. I do. And if you are like me, you want your data to be synchronized between your desktop, laptop, smartphone, tablet, and so on.
Let's take emails, for example. When I read an email on my laptop, it should automatically be marked as such on my desktop. When I send a message from my smartphone, I want it to appear in the "sent" directory of my laptop's mail reader. You get the point.
The thing is I use several email addresses. One for work, one for personnal stuff, one for every site that I manage, and so on. It makes synchronization much more difficult. And I want to read and send all my emails from a desktop client.