10 outils gratuits pour booster votre référencement

Les outils pour améliorer la structure de votre site

Xenu-verification-des-liens-casses.png Xenu permet une analyse des liens internes et externes en mettant en évidence l’ensemble des liens cassés (404, 500, etc…).
C’est donc l’outil de base pour vérifier la cohérence de votre linking interne et externe.
A utiliser régulièrement pour s’assurer que rien n’est cassé sur votre site.

Nettoyer / Supprimer / Remettre à zéro les migrations de South

Cette note est un aide-mémoire personnel.

Au cours de l avie d’un développement Django, Il est souvent souhaitable de remttre à zéro les migrations gérées par South.

Voici la liste des commandes à lancer (ici avec linux).

./manage.py reset south 
rm -r appname/migrations/ 
./manage.py convert_to_south appname  

Attention, la commande “reset south” supprime les enregistrement des migrations pour toutes les applications. Il faut donc effectuer les deux autres commandes sur l’ensemble des applications

Retour de New York

Après une semaine de visites avec mon peintre contemporain préféré, je suis de retour dans la vraie vie…

Je vous livre quelques souvenirs.

Un premier tour des incontournables

l’Apple store de la 5ème avenure, un Burger chez De Niro, Chinatown, etc..

NY_Burger_Apple_and_Co.jpg

Les musées d’art moderne et contemporain

Le Gugenheim, le Moma, le MET, le MAD et le New ! NY_MUSEES.jpg

Les monuments

Miss Liberty, le Flat Iron, la vue du Top of the Rock. NY_Liberty_Flat_Iron.jpg

How to use South to migrate models in a multiple databases Django project

Django 1.2 brings multiple databases handling through the use of database routers. The actual version of South (0.7.3) is not able to handle correctly multiple databases projects out of the box.

Here is a workaround: the idea is to create a new fake django project. And then to use South migration within this project.

cd head_directory 
django-admin.py startproject my_south_db_project 
cd my_south_db_project 

Next,edit my_south_db_project/settings.py

  • we have to set the path correctly to south, to your app and to the corresponding database
  • The only installed apps should be South and your app
import sys 
import os.path 

current_path = os.path.abspath(os.path.dirname(_ _file_ _)) 
head, tail = os.path.split(current_path) 
sys.path.append(os.path.join(head, "my_db_app_dir")) 
sys.path.append(os.path.join(head, "south_sdir")) 
dbpath = os.path.join(head, "my_initial_project_dir") 

DATABASES = { 
   'default': { 
       'ENGINE': 'django.db.backends.sqlite3', 
       'NAME' : os.path.join(dbpath,'my_db_app.sqlite'), 
       'USER': '', 
       'PASSWORD': '', 
       'HOST': '', 
       'PORT': '', 
   }, 
} 

INSTALLED_APPS = ( 'south', 'my_db_app',) 

Create south table in the new db

Astuce Django : Trier un Queryset après l'avoir slicé

Il est impossible de trier un queryset après en avoir extrait une tranche (slice).

Une solution simple consiste à utiliser la fonction python sorted associée à une lambda fonction pour la clé de tri :

model_unordered = Model.objects.all().order_by('-pub_date')[:100] 
model_ordered= sorted(model_unordered, key=lambda obj: unicode(obj.textfield)) 

Fuites de mémoire avec Django

Je viens de trouver !

Une commande Django pour manage.py qui effectue une mise à jour complète d’une base de donnée, avait une occupation mémoire gigantesque. Après un debug intensif et de nombreux tests, impossible de comprendre ce qui clochait dans mon code.

C’est ce post qui m’a mis sur la voie : en mode DEBUG= True, Django mémorise l’ensemble des requêtes sur la base de donnée pendant la requête HTTP en cours… Mais il n’y a pas de requête HTTP pendant l’exécution de manage.py, donc tous mes appels à la base sont mémorisés par Django et encombrent la mémoire !

Redresser des images iPhone sur Mac OSX pour publication sur le web

Après quelques semaines de galère, je viens de trouver une solution qui me permet de corriger facilement le problème suivant : une photo prise en mode paysage prise sur l’iPhone est en fait stockée en mode portrait avec un simple tag dans les données EXIF lui indiquant qu’il faut tourner l’image à l’affichage.

Ou est donc le problème ?

Et bien, tous les navigateurs ne prennent pas en compte ces données EXIF, si bien que d’un navigateur à l’autre, vous avez tantôt une image correcte, tantôt une image tournée de 90°…