mercredi 20 octobre 2010

Tableau php des localisations francophones + annuaire de parrains exportable

Tableau des localisations
Sur Internet, il n'est pas facile de trouver une liste de localisations déjà prête dans un tableau PHP ou autre (après, il suffit de faire des scripts pour passer d'une forme à l'autre selon ce que l'on veut faire).
Lors de l'avant-dernière mise à jour de Parrain-Linux, j'ai écrit un tel tableau PHP regroupant tous les pays francophones ou contenant un certain nombre de francophones. Cela m'a demandé plusieurs heures de travail.
Je vais partager avec vous cette liste en espérant qu'elle pourra servir d'autres personnes.
D'abord, la liste des pays: Télécharger la liste des pays (attention, encodage UTF-8!)
Ensuite, la liste des subdivisions de ces pays: Télécharger la liste des subdivisions (attention, encodage UTF-8!)
N'hésitez pas à personnaliser cette liste.

Annuaire de parrains-Linux exportable
Cette liste des localisations vous permettra d'utiliser l'annuaire de parrains exportable car c'est avec les clés du tableau que sont enregistrées les localisations des membres dans la base de données de Parrain-Linux.
Premièrement, voici l'annuaire de parrains au format XML: Lien vers l'annuaire XML
Le format XML peut être utilisé dans n'importe quel type de programme.
Voici un exemple d'utilisation de ce fichier xml: Lien vers l'annuaire de parrains de Montel'libre
Dans cet exemple, seul le département de l'Hérault a été sélectionné car Montpel'libre est un gul de l'Hérault.
Le script utilisé est encore à l'état embryonnaire. Je vous le donne, mais étant assez basique, si vous souhaitez intégrer l'annuaire de parrains sur votre site, je vous conseille de le modifier: Script PHP pour lire le fichier XML
J'espère qu'il y aura quelques personnes pour tester l'exportation du site (si quelqu'un le fait, qu'il n'hésite pas à se signaler sur le forum de Parrain-Linux).
En attendant que le script évolue, il faudra faire avec ce qu'il y a là.

jeudi 3 juin 2010

Optimiser son site

Vous trouvez votre site lourd et des visiteurs le fuient pour cette raison. Votre site met tellement de temps à charger que vous avez le temps de faire un café.... en bref, vous voulez l'optimiser... mais vous ne savez pas du tout par où commencer.
Pas d'inquiétude! Je vais vous donner quelques conseils pour optimiser votre site avec des méthodes (quasiment toutes) utilisées sur Parrain-Linux.
1ère solution - optimiser le code PHP:
Les lourdeurs de votre site peuvent provenir de lourdeurs dans votre script PHP. Par exemple, vous faites plusieurs requêtes SQL alors que vous pourriez la mettre en une seule ou encore, vous incluez du code non nécessaire au chargement de certaines pages.
Voici donc quelques conseils pour vous aider:
  • Quand vous programmez, cherchez une façon simple de programmer votre script. Réfléchissez bien avant de taper votre code (s'il le faut, écrivez vos pensées sur un papier) et cherchez si une fonction déjà prête ne remplit pas déjà l'action que vous voulez faire. Le manuel de PHP.net en regorge!
  • N'incluez que le code (à l'aide de "include" que vous connaissez sûrement) nécessaire au chargement de chaque page. Utilisez pour cela des conditions ("switch", "if/else"). Par exemple, vous avez un forum, et vous utilisez une fonction bbcode pour donnez une mise en forme aux messages postés. N'incluez la fonction bbcode que sur la page d'affichage des messages.
  • Il vous arrive d'utiliser plusieurs requêtes SQL sur une même page. Certaines sont "embriquées" les unes au dessus des autres alors que dans la plupart des cas, vous pouvez les regrouper en une seule requête. J'ai sélectionné pour vous deux tutoriels sur le site du zéro qui présentent deux méthodes pour rassembler les requêtes: sélection multi-tables et jointures. Exemple: pour afficher les nouvelles, Parrain-Linux a besoin de sélectionner la table des nouvelles mais aussi la table des utilisateurs afin d'obtenir les pseudonymes, la table des nouvelles ne contenant que l'id des posteurs. Sans rassembler les requêtes, il faudrait faire une requête sur la table des membres à chaque message alors qu'aucune requête supplémentaire n'est requise si on les rassemble. Si on affiche 5 nouvelles, on n'économise pas moins de 5 requêtes inutiles.
  • Si vous utilisez un CMS, celui-ci peut être lourd par rapport à d'autres. Préférez des CMS léger comme SPIP plutôt que des CMS lourds comme Joomla. Voire, débarrassez-vous de votre CMS comme Parrain-Linux si vous avez les connaissances et le temps nécessaires.
2ème solution - optimiser vos codes HTML, CSS et Javascript:
  • Lorsque vous programmez des scripts, vous indentez et commentez en général votre code afin de le rendre plus clair. Mais cela fait des données supplémentaires à envoyer. Vous pouvez donc supprimer espaces, sauts de ligne et commentaires pour alléger vos pages. Si vous utilisez cette méthode, je vous conseille de ne l'appliquer qu'au moment de l'envoi de vos pages sur votre serveur et de conserver des copies commentées et indentées afin de pouvoir faire facilement des modifications futures. En faisant une petite recherche sur Internet, vous pourrez des programmes pour utiliser cette méthode. Pour information, Parrain-Linux n'utilise pas cette méthode.
  • N'abusez pas d'effets javascript inutiles. Cela alourdit vos pages et peut faire planter certains ordinateurs, surtout s'ils sont peu puissant.
3ème solution - utiliser la méthode de programmation AJAX:
4ème solution - Compressez vos pages:
  • Si votre hébergeur vous le permet ou que vous êtes sur votre propre serveur, activez la compression directement sur le serveur Apache.
  • Sinon, faites cette compression avec php. Pour cela, mettez ce script dans votre fichier commun à toutes les pages (comment ça vous n'en avez pas?):
    if (!headers_sent() && ob_get_length() == 0)
    {
    // On vérifie la version de PHP
    if (ini_get('output_handler') == 'ob_gzhandler' || version_compare(PHP_VERSION, '4.2.0') == -1)
    $compression = false;
    // On compresse !
    else
    ob_start('ob_gzhandler');
    }

    // Si on a pas réussi à compresser, il faut quand même envoyer les headers
    if ($compression == false)
    ob_start();
  • Compressez également vos fichiers Javascript et CSS. Pour cela, je vous propose un script de combinaison qui s'occupe de compresser vos fichiers et de mettre en cache ces fichiers pour réduire la charge du serveur.
  • Utilisez de préférence des formats d'images compressés moins lourds que les bruts. Par ordre de poids croissant, vous avez les formats svg, gif, jpeg et png (ce dernier commençant quand même à être un peu lourd).
Bien évidemment, vous pouvez appliquer les quatre solutions en même temps.
Un dernier petit conseil: si vous avez Firefox et firebug, vous pouvez utiliser Page Speed qui vous donnera quelques conseils pour optimiser au maximum vos pages.

Voilà, j'espère que cela a pu vous permettre d'améliorer votre site. N'hésitez pas à laisser des commentaires pour me signaler des erreurs, proposer des ajouts, poser des questions ou tout simplement me remercier ;).

Ouverture du blog de développement de Parrain-Linux

Bonjour à tous,

J'ouvre ce blog spécifiquement pour le développement de Parrain-Linux pour 2 objectifs:
- le premier est de partager certains codes et certaines techniques de développement utilisés sur Parrain-Linux. Le développement de Parrain-Linux demande énormément de travail et j'ai donc envie de le partager afin qu'il puissent rendre service aux autres. Pour certaines choses, j'ai parfois dû rechercher des heures pour en comprendre le fonctionnement par exemple en ce qui concerne la gestion de l'historique quand on a un site en AJAX. Je ne souhaite pas que cela arrive à d'autres personnes.
Je vais donc fournir des explications, des liens pour trouver des scripts ainsi que des morceaux de codes de Parrain-Linux afin d'aider les autres webmestres.
- Le second est de vous tenir au courant des avancées du développement de Parrain-Linux et notamment en ce qui concerne l'exportation du site qui permettra d'avoir l'annuaire de parrains puis le système de connexion et de messagerie privée et enfin l'espace membre et le futur réseau social sur son propre site. L'exportation s'achèvera en un CMS permettant de créer un site complet à partir de rien. Les codes seront tous partagés afin de permettre leur modification par ses utilisateurs, des améliorations diverses apportées par des développeurs externes voire permettre à d'autres d'exporter leur site en s'inspirant de mon travail.

J'espère que ce blog vous donnera entière satisfaction si vous trouvez des billets traitant de ce que vous recherchez.

Guillaume KIHLI, président et webmestre de l'association Parrain-Linux