Développement Web

J’ai pu constater que la plupart des développeurs (moi le premier) ont des faiblesses dans certains domaines, parce qu’ils négligent la puissance d’une fonction, d’une manière de coder, ou n’ont pas le temps ou l’envie de s’y mettre. Au fur et à mesure de mes découvertes, j’essaierai d’expliquer clairement comment j’ai amélioré la qualité de mon développement internet.

Cache d’opcode: Alternative Php Cache (APC)

December 9th, 2008

Pour accélerer les performances d’un site internet, il existe de nombreuses pistes à suivre. Outre les recommandations d’optimisation de Yahoo, qui concernent surtout l’architecture d’une application Web, on peut aussi s’attaquer à des couches plus transparentes (et souvent complètement ignorées par les développeurs), comme l’étape de “compilation” du script en exécutable. Nous allons voir comment APC (Alternative Php Cache) peut nous aider rapidement à accélérer des scripts php.
Read more…

PHP , , , ,

Parser des XML volumineux avec XMLReader

November 28th, 2008

Avec des classes comme DomDocument ou SimpleXML, le parsing de fichiers XML s’est considérablement simplifié en PHP 5. Mais quand on doit parser des fichiers très volumineux (comme j’ai eu à le faire récemment pour le catalogue produits de mon comparateur d’électroménager), on se retrouve très rapidement avec des scripts très gourmands en mémoire. En effet, ces classes lisent et analysent la totalité du fichier XML avant de pouvoir agir dessus. Ce n’est pas le cas de XMLReader, qui elle, fonctionne en mode flux: le fichier est alors lu au fur et à mesure des besoins. Il en résulte des scripts plus rapides et très peu consommateurs de RAM.
Read more…

PHP , , , , ,

Apache, VirtualHost et ServerAlias

October 20th, 2008

Lorsqu’on adapte la configuration d’un serveur Apache pour gérer un nouveau domaine, il faut théoriquement créer autant de VirtualHosts que ce qu’on aura de sous-domaines. Et si chaque utilisateur enregistré devait avoir son propre sous-domaine (comme sur une plate-forme de blogs, par exemple) ?
Read more…

Admin serveur , , , , ,

Changer d’hébergement : la migration de sites web

October 3rd, 2008

Vous avez un petit serveur sur lequel vous hébergez vos sites. Ces derniers ont grandi, grandi, et il est temps de prendre un serveur plus puissant, et donc de déplacer vos scripts et vos bases de données. C’est vrai, aucune compétence poussée des shells Unix n’est obligatoire ; vous pouvez très bien tout faire avec un client FTP et phpMyAdmin (par exemple). Mais cela suppose de tout copier de la machine A (le “petit” serveur) vers votre poste de travail, puis, de là, de tout envoyer, depuis votre poste, vers la machine B. En faisant tout depuis une ligne de commande, on supprime un intermédiaire. Laissons les machines s’arranger entre elles…
Read more…

Développement Web , , , ,

erreur 404, redirection 301: headers et codes de réponse HTTP courants

September 5th, 2008

Lorsqu’on se connecte à une page Web, le client (navigateur) envoie une requête, auquel le serveur qui traite la réponse, en suivant le protocole HTTP, renvoie un code de traitement à 3 chiffres.
Ce code se situe sur la première ligne de la réponse, et est de la forme :

  1. HTTP/1.1 200 OK

. En php, la fonction php header() permet, depuis vos scripts, d’adapter le code que le serveur renvoie, afin de “forcer” le comportement du navigateur client.
Petit tour d’horizon des codes les plus répandus.
Read more…

PHP , , , ,

Site multilingue: déterminer la langue du visiteur

August 13th, 2008

Sur les sites qui sont disponibles en plusieurs langues, il est fréquent de trouver une page “d’accueil” comportant plusieurs drapeaux ou un quelconque moyen de choisir son langage que l’on veut voir affiché. Cette pratique, aussi mauvaise pour le référencement qu’en termes d’ergonomie, peut facilement être évitée grâce au header “Accept-Language”.
Read more…

PHP , , , ,

Petit guide pour débuter avec Zend Framework: les bonnes pratiques

August 5th, 2008

A l’occasion de la sortie de la version 1.6_rc1, j’ai récemment trouvé le courage de me lancer dans la découverte du Zend Framework. Le Framework Zend est une base de développement fiable, s’appuyant sur les bonnes pratiques de programmation orientée objet (POO). Le code subit des tests poussés afin de répondre aux exigences de fiabilité, de rapidité et de sécurité des applications web modernes. La force de frappe de Zend est telle que le framework intègre déjà des classes permettant de manipuler simplement la plupart des API majeures du marché, telles que celles de Google (dont Youtube), Amazon, Yahoo…
Read more…

PHP

Coder une classe d’abstraction pour manipuler des objets en PHP5

July 25th, 2008

Sur chaque site, dans tous les projets, on a une base de données qui contient des tables, dont chaque ligne sont des items que l’on souhaitera manipuler à un moment où à un autre. Le code PHP à écrire pour effectuer les actions nécessaires – Ajouter des items, les modifier, les supprimer, récupérer leurs attributs… – varie peu, et pourtant ce travail est souvent répété d’un projet à l’autre. Il est possible de créer une classe générique d’abstraction, qui pourra manipuler toutes sortes d’objets de manière transparente.
Read more…

PHP , , ,

Coder un système d’authentification : Apache ET bases de données

July 9th, 2008

Quand on veut gérer un système d’authentification en PHP pour un intranet (qui demande plus de rigueur et de sécurité qu’un site internet), on se retrouve à priori avec deux solutions valables: soit un formulaire relié à une base de données, le classique du Web/frontoffice, soit un fichier htpasswd, le classique du Backoffice, plus sûr mais moins flexible (notamment au niveau de l’ajout d’utilisateur ou de la gestion des droits d’accès). J’ai mis longtemps à me rendre compte qu’on pouvait mixer les deux pour avoir quelque chose de souple et de fiable.
Read more…

PHP , , , ,

Gérer ses droits et accès utilisateurs en PHP : le Bit Bashing

July 5th, 2008

Encore un problème récurrent du développeur: dans un CMS, on a une admin avec 10 utilisateurs qui ont avoir des rôles différents, chaque rôle étant autorisé à faire une certaine liste d’actions…
La solution “facile” (et malheureusement, celle qu’on voit quasiment TOUJOURS appliquée) est de créer une table contenant une colonne dans la base de données pour chaque action, plus un champ “user_ID”. Avec nos 4 actions, on a donc une table de 5 champs, qu’on mettra à 0 ou 1 selon que l’utilisateur peut effectuer l’action ou pas.
Read more…

Développement Web