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

Optimisation d’une requête SQL avec EXPLAIN et log_slow_queries

July 12th, 2008

Depuis quelques temps, un serveur qui héberge quelques petits sites s’est mis à monter régulièrement en charge, sans augmentation de trafic, ni changements applicatifs. J’ai laissé traîner les choses, ne sachant pas d’où venait le souci.
Il aura fallu cinq minutes de travail et l’utilisation de la commande shell top, de la directive de configuration MySQL log_slow_queries et de la commande SQL EXPLAIN pour régler le problème de lenteur des sites.
Read more…

MySQL , , , , ,

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

Yahoo vous aide à accélérer votre site internet

June 30th, 2008

Après avoir publié ses “Best Practices for Speeding Up Your Web Site” (comprendre: meilleures pratiques pour accélérer votre site internet”, Yahoo met désormais à disposition des développeurs YSlow!, une extension pour FireBug, célèbre plug-in Firefox, qui permet de faire un rapport d’optimisation pour la vitesse du site que vous visitez.

Le plug-in, très simple d’utilisation (un click dans la barre d’état lance l’analyse, qui apparait dans le panneau FireBug), recense toutes les modifications que vous pouvez apporter pour atteindre le fameux Speed Rank A, réservé à l’élite des sites rapides… (disons que les 34 critères définissent le « site rapide théorique parfait », mais ne sont pas tous applicables dans le monde réel. Par exemple, Yahoo recommande d’utiliser un CDN (Content Delivery Network), solution généralement assez chère pour ne pas être déployable sur des sites à moyen traffic et peu monétisés.

Voici un rappel de ce qu’il faut faire et éviter, aux yeux de Yahoo.

Read more…

Développement Web , ,

Liste des ccTLD

June 19th, 2008

Les ccTLD (country-code top level domains) sont tous les tld comprenant 2 lettres. Ils sont rattachés à une zone géographique (souvent, un pays) par l’Internet Assigned Numbers Authority (aka IANA).

Read more…

Ressources

Google présente les GMail Labs

June 18th, 2008

Depuis une quainzaine de jours (du moins, au minimum pour les comptes configurés langage en English-US), l’onglet “Options” dispose d’un item supplémentaire appelé Labs. Les Labs (pour Laboratoires, hein) sont l’endroit où l’on peut activer, dès maintenant, les “futures” fonctionnalités de GMail. Les développeurs de Google se serviront des statistiques d’utilisation des GMail Labs et des avis d’utilisateurs pour savoir quelle fonctionnalité doit être terminée et passée en production avant les autres. Cela les aide à prendre des décisions sur les priorités de développement.
Encore une fois, Google met à contribution son immense audience (après celle de Google Adsense, puis de Google Analytics, maintenant celle de GMail) pour s’aider à définir une stratégie marketing efficace…

Au programme, 13 applications (dont un Snake…) dont :

Read more…

Gmail ,

Conventions de codage PHP

June 16th, 2008

Ne pas adopter de vraies conventions de codage en PHP, langage de script où la syntaxe est libre et les variables non typées, peut conduire à une jungle de code où vous seul pourrez vous retrouver.

Suivre quelques conventions, même simples, vous aidera à éclaircir votre code en le rendant plus lisible et donc plus facilement maintenable. De plus, si un développeur doit mettre le nez dedans, sa lecture et sa prise en main sera grandement facilitée si vous lui transmettez un document récapitulant vos conventions.

Les points que je présente ici ne sont pas des lois mais simplement les conventions de codage PHP que je m’efforce de suivre; libre à vous d’y piocher vos propres “habitudes”, l’important étant de suivre la voie qu’on s’est fixé.

Read more…

Développement Web ,

Liste INSEE des Professions et Catégories Socioprofessionnelles

June 16th, 2008

Il existe 4 niveaux de nomenclature au niveau des “CSP”, comprenant respectivement 8, 24, 42 et 497 catégories. Les deux niveaux les plus utilisés couramment dans la qualification de bases de données sont le premier et le deuxième (donc 8 et 24 postes).

Voici les listes de postes:

Read more…

Ressources , ,

php-experts : un blog rempli de tutoriels PHP

Bonjour, ami lecteur.

Ce blog PHP me sert de bloc-notes dans mes développements, principalement en PHP mais aussi dans la gestion courantes des serveurs Unix/Linux (préférence pour la distribution Debian), les systèmes de bases de données relationnelles (SGBDR) comme MySQL, Oracle et Postgres (préférence pour MySQL).

Je poste régulièrement mes découvertes, et j’espère qu’elles vous seront utiles. En ce moment, mon attention se porte notamment sur :

  • le Perl, langage de script modulaire qui reprend des fonctionnalités du C et des langages de scripts sed, awk et sh (shell), très pratique en ce qui concerne l’automatisation de tâches sous Linux
  • L’Objective-C, utilisé notamment pour le développement sur iPhone et Mac OS X d’Apple (basé sur Cocoa, une bibliothèque de classes)
  • le développement MySQL avancé: fonctions et procédures stockées…

N’hésitez pas à vous abonner à mon flux RSS et/ou à me suivre sur Twitter. Vous pouvez aussi suivre PHP-Experts sur Facebook (NetworkedBlogs). A bientôt !