Coder une classe d’abstraction pour manipuler des objets en PHP5
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…
Optimisation d’une requête SQL avec EXPLAIN et log_slow_queries
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…
Coder un système d’authentification : Apache ET bases de données
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…
Gérer ses droits et accès utilisateurs en PHP : le Bit Bashing
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…
Yahoo vous aide à accélérer votre site internet
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.
Liste des ccTLD
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…
Google présente les GMail Labs
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 :
Conventions de codage PHP
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é.
Liste INSEE des Professions et Catégories Socioprofessionnelles
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:
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 !