PJBlog : Pierre-Jean, WinLibre et Cie...

Pierre-Jean Coudert - Logiciels Libres - Développement - etc...

Aller au contenu | Aller au menu | Aller à la recherche

lundi, juillet 18 2011

10 outils gratuits pour booster votre référencement

Les outils pour améliorer la structure de votre site

1- Xenu Link Sleuth : Logiciel gratuit pour Windows

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.

2- Headings Map : extension Firefox

"Headings Map" affiche la structure du document HTML dans un panneau à gauche de la page afin de vérifier la structure et l'enchainement des titres H1 / H2 / H3 de la page.
Dès qu'une erreur de structure du document HTML est détectée, elle est surlignée en rouge.
Vous avez donc en permanence la structure du site affichée pendant votre navigation. Indispensable !
HeadingsMap.jpg
Vous pouvez aussi utiliser l'extension Web Developper avec le choix "Informations / Plan du document" ; bien que ce soit un peu moins pratique.

3- Web Developer : extension Firefox

Cette extension vous permet de vérifier le contenu des tags "alt" des images de votre site.
Web-Devlopper-Image-Alt.png
Il vous suffit de sélectionner "Images / Afficher les attributs Alt" pour afficher les textes alternatifs en surimpression.

4- Google Webmaster Tools : site web

C'est l'outil qui vous permet de comprendre comment Google analyse votre site : les liens internes, les liens retours (backlinks), les sitemaps, les erreurs, les mots clés, la vitesse de votre site et même l'influence du bouton "+1".
De plus, Webmaster tools vous permet d'indiquer quel est votre sous-domaine préférentiel (ex: www), et quelle est la zone géographique à laquelle se destine votre site.

5- Google Adword Keyword Tool : site web

Le site qui vous liste des mot-clés diversifiés à partir de vos mots-clés.
Ce sera une aide incomparable lors de la rédaction de contenu, indispensable à tout bon référencement naturel.

Les outils pour étudier la concurrence et chercher des opportunités de lien

6- SearchStatus : extension Firefox

Un vrai couteau Suisse. Il affiche en temps réel le Page Rank et l'Alexa Rank du site que vous visitez.
Les options du menu permettent ensuite de choisir l'affichage en surbrillance des liens NoFollow, d'obtenir les informations WhoIs, et d'afficher les Meta Tags.

7- Google Blog Search : site web

C'est l'outil qui va vous permettre de construire des requêtes pour votre veille sur les blogs.
Par exemple, vous cherchez des informations sur les "outils référencement".
Vous pouvez-vous abonner dans votre lecteur RSS préféré au flux temps réel des recherches (en bas de page résultat) :
Google-Blog-Search.png

Les outils pour suivre votre référencement

8- Rank Checker : Extension Firefox.

Saisissez votre nom de domaine, les mots clés que vous voulez suivre et lancez l'analyse ! Vous obtiendrez, mot-clé par mot-clé votre classement. Vous pourrez ensuite exporter en CSV l'historique de vos analyses et ainsi construire des graphes de suivi de votre référencement avec Libre Office.

9- Libre Office : Application Windows / Mac / Linux

La suite office libre et gratuite pour rédiger vos contenus, construire des tableaux d'analyse, créer des graphes de suivi de votre référencement

10- Majestic SEO : site web.

Majestic SEO vous fournit une analyse de vos backlinks (lien retours).
La formule gratuite de ce service vous permet déjà d'obtenir des graphes de vitesse d'acquisition de liens, ainsi que des rapports de base sur vos backlinks.

mercredi, juin 22 2011

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

mardi, juin 14 2011

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

New York By Night

Concert de Jazz au Blue Note, la vue depuis l'Empire State Building. NY_By_Night.jpg

Et maintenant, au boulot !

jeudi, mars 3 2011

Première journée de snowboard à Metabief

Une semaine de neige inespérée...

On en a donc profité pour tenter une première journée de snowboard. Les écoles de ski de Metabief étant toutes complètes, nous nous sommes lancés directement sur les pistes...

Snowboard Métabief

Essai concluant ! On rempile pour une seconde journée malgré les douleurs bien présentes...

samedi, janvier 29 2011

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

 ./manage.py syncdb

Now you can work in this project to manage your apps related to this new db

 manage.py convert_to_south my_db_app

on other computers

 manage.py migrate my_db_app 0001 --fake

modify models.py

 manage.py schemamigration my_db_app --auto
 manage.py migrate my_db_app

As you can see, this way you keep the standard South workflow !

Edit: I use this line in the main project's settings.py in order to be able to launch tests:

 SOUTH_TESTS_MIGRATE = False

lundi, janvier 3 2011

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))

jeudi, novembre 4 2010

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 !

Il y a donc deux solutions à ce problème :

  1. positionner DEBUG= FALSE
  2. faire appel à db.reset_queries() régulièrement pour vider cette liste de requêtes. ( from django import db )

dimanche, octobre 10 2010

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°...

J'ai eu un début de piste en lisant un article expliquant comment faire cette opération depuis la ligne de commande. Il utilise les commandes jhead et jpegtran afin de supprimer le tag EXIF et de tourner l'image si besoin (vous pouvez charger ces deux utilitaires sur ce site).

J'ai ensuite créé un script automator afin d'automatiser le changement de taille et l'appel à jhead. J'obtiens ainsi des images qu'il me suffit de charger sur un blog.

Capture Automator

vendredi, mai 14 2010

Je construis un NAS libre et pas cher

NAS, Ubuntu Server 10.4 LTS, Atom D510, RAM 1GB, HDD 1.5TB, 233€

Après avoir fait le tour du marché (Synology, QNAP & Co) je me suis décidé à monter mon propre NAS avec des logiciels libres.

Cahier des charges

  • performant, silencieux, économe
  • partage de fichiers
  • serveur musical pour SqueezeBox
  • serveur musical pour iTunes

Choix du matériel

  • une carte mère Intel ATOM D510 : refroidissement passif, double coeur 1.6Ghz + hyper threading : 65€
  • mémoire vive : Kingston ValueRAM DDRII PC5300, 1Go pour commencer. Je passerai à 2Go si le besoin s'en fait sentir : 24€
  • boitier silencieux + alim haut-rendement, Silverstone Sugo SG05B : 71€
  • 1 disque : Samsung 1.5To, 5400 tours Spinpoint F2 EcoGreen S-ATA : 73€

Total : 233 € chez Matériel.net. Imbattable !

Je ne veux pas monter de configuration RAID1. Je préfère sauvegarder quotidiennement sur un disque externe que je fais tourner avec un second stocké dans un autre lieu.

Installation du système d'exploitation et des services

Je reste sur une configuration très simple. Pour le choix de l'OS, j'ai hésité entre FreeNas (BSD très léger) et Ubuntu. J'ai finalement choisi ce dernier pour le nombre de paquets disponibles, son évolutivité et surtout, la quantité d'informations disponibles sur le net.

ubuntu server 10.04 LTS

J'installe Ubuntu depuis une clé usb que j'ai créée avec PenDriveLinux. Je n'installe que les services suivants :

  • openssl
  • samba

Serveur iTunes

Un simple apt-get install mt-daapd

Serveur SqueezeBoxServer

Ajout du dépôt slimdevices puis un apt-get

Webmin

J'ai voulu ajouter Webmin pour administrer la machine depuis un navigateur. Cette étape a été la moins simple car Webmin ne s'installe pas directement sur Ubunutu 10.4LTS... Vous trouverez toutes les infos nécessaires dans ces 3 articles :

Configuration

Samba

J'ai choisi d'avoir un dossier partagé public et plusieurs dossiers privés. J'ai utilisé l'article suivant pour configurer Samba :

iTunes et SqueezeBoxServer

Depuis les interfaces Web des deux services, j'ai juste indiqué où se trouvait ma collection musicale.

Et Ouala ! Un joli NAS super silencieux et pas cher :-)

dimanche, avril 25 2010

Sophie Costa expose à Lyon

L'artiste peintre Sophie COSTA, expose en Mai et Juin 2010 à Lyon.

Tableau contemporain abstrait

Ne manquez pas l'exposition de ses toiles contemporaines abstraites à l'espace AGF.

vendredi, novembre 27 2009

Les bons plans ski pour l'hiver

La neige joue à cache-cache ces temps-ci !

Mais la saison est tout de même lancée.

Voici une petite sélection de liens indispensables pour préparer la saison :

Il ne vous reste plus qu'à chausser pour dévaler les pistes !

dimanche, septembre 27 2009

Django code snippets for Notepad++

Here is the content for my Quicktext.ini. This adds Django shortcuts to Notepad++ with the QuickText Plugin.

ie: type model + <TAB> to insert the following model's skeleton:


class ModelName(models.Model):
    """Model docstring"""
    slug = models.SlugField(max_length=200)
    name = models.CharField(max_length=100, default='name')

    updated = models.DateTimeField('update date', auto_now=True )
    created = models.DateTimeField('creation date', auto_now_add=True )

    class Meta:
        pass

    def __unicode__(self):
        return name

    def save(self, force_insert=False, force_update=False):
        pass

    @models.permalink
    def get_absolute_url(self):
       return ('view_or_url_name')


class ModelNameAdmin(admin.ModelAdmin):
    list_display = ('name',)
    search_fields = ['name',]

admin.site.register(ModelName, ModelNameAdmin)

Lire la suite...

jeudi, août 20 2009

Django SEO : Link Exchange

I've just published a Django SEO application : Django Link Exchange

This little Django SEO App enables you to manage deep links exchange.

You can edit directly with Django's admin the following informations:

  • Campaigns: site informations
  • Links : anchor, url, additional text
  • Links customization: specific css classes, target, additional javascript (ie: tracker)
  • BackLinks : url, anchor
  • Check Backlinks automatically via Admin's Action (I'm using http://code.google.com/p/scrapemark/ to analyze the backlinking page)

To Install this application, copy it in a directory which is on your PYTHONPATH.

Next, edit your project's settings. and add:

   INSTALLED_APPS += ('link_exchange')

In your template's files:

  • you can publish a link directly in the template with it's name
     {%load link_ex%}
     {%link "name"%}
  • you can publish a link through an object's field containing html AND the {%link "name"%} tag
     {%load link_ex%}
     {% autoescape off %}
     {%evaluate object.textfield%}
     {% endautoescape %}

lundi, avril 27 2009

Suivre la carte de l'évolution de l'épidémie de Grippe Porcine en France ( H1N1 )


View H1N1 Swine Flu in a larger map

Cette carte Google vous permet de suivre l'évolution des déclarations des cas suspects de grippe porcine en France et dans le monde (virus H1N1).

dimanche, avril 26 2009

Google Code supporte maintenant Mercurial (Hg)

Bonne nouvelle : Google code supporte maintenant Mercurial.

Mercurial est un gestionnaire de source distribué, à l'instar de Git. Il est écrit en python et dispose d'une intégration poussée avec l'exporateur de Windows grâce à TortoiseHg.

Nous allons donc pouvoir l'utiliser cet été pour le développement de Pwytter et de WinLibre-PacMan, dans le cadre du GSoC.

lundi, mars 30 2009

10 liens indispensables, en français, pour bien développer avec Django

Le camp de base

  • Django-fr : Pour commencer, LE site sur Django pour les francophones

Apprendre

Documentation et Référence

Bonne pratiques

Installer Django sur un serveur

Réutiliser des application existantes

Et pour finir, un site anglophone mais non des moindres

  • Django snippets : Le recueil de tous les extraits de codes utiles dont vous pourrez avoir besoin lors d'un développement Django.

jeudi, mars 19 2009

GSoC 2009 : WinLibre à nouveau sélectionné pour participer au Google Summer of Code 2009

La nouvelle est tombée cette nuit, nous sommes sélectionnés pour le Summer of Code 2009 !

Vous êtes étudiant et rêvez d'être payé cet été pour coder du logiciel libre ? Google vous propose 4500$ pour coder sur des projets open-source proposés par WinLibre.

La page des propositions de WinLibre pour le Google Summer of Code 2009 est en ligne.

jeudi, février 19 2009

Ecoles de ski, Django, Fixtures et champs ManyToMany...

Après avoir galéré sur les fixtures django sur les champs ManyToMany, j'ai pu mettre en ligne la mise à jour de la base de données de Resaski.

Voici un modèle simplifié :

class Language(models.Model):
  code = models.SlugField(primary_key=True, max_length=10)
  name = models.CharField(max_length=200)

class School(models.Model):
  slug = models.SlugField(primary_key=True, max_length=200)
  languages = models.ManyToManyField(Language)

et un ensemble de fixtures json associé :

[
 {"model": "myapp.language",
  "pk":"fr",
  "fields":{"name": "Français","code": "fr"}
 },
 {"model": "myapp.language",
  "pk":"en",
  "fields":{"name": "Anglais","code": "en"}
 },
 {"model": "myapp.School",
  "pk":"ecole-1",
  "fields":{"slug":"ecole-1", "languages":[fr]}
 },
 {"model": "myapp.School",
  "pk":"ecole-2",
  "fields":{"slug":"ecole-2", "languages":["fr","en"]}
 }
]

L'ensemble des stations et des écoles de ski à été mis à jour, notamment  : Ecole de ski Tourmalet Risoul Le Grand Bornand Morzine Saint Gervais La Rosière Les Carroz d'Arraches Valloire Contamines Montjoie Les Gets Vars - Crevoux Valmorel Serre Chevalier Samoëns Châtel Megève Vos cours de snowboard à La Clusaz Les Saisies Les Menuires Val d'Isère Alpe d'Huez Vos cours de ski sur Avoriaz Les Deux Alpes Meribel La Plagne Ecole de ski Courchevel Chamonix Les Arcs Val Thorens Les écoles de ski à Tignes

mardi, décembre 16 2008

Un repas lyonnais pour Noël

Le site Cuisine Lyonnaise propose ses idées de recettes pour le repas de Noël.

J'ai particulièrement aimé :

Bon réveillon lyonnais !

lundi, décembre 15 2008

La première école de ski gratuite en ligne

Vous cherchez des cours de ski pour vos enfants ?

Resaski propose la première école de ski gratuite en ligne.

Les deux premiers épisodes commencent par le B-A-BA : matériel, équilibre, glisse, sécurité...

Une véritable pédagogie adaptée aux débutants, par un moniteur professionnel.

- page 1 de 12