Toute l'actualité francophone sur PHP en un seul flux

Janvier 2009 – Apprendre-PHP.com: Bonne Année 2009 !

Je vous souhaite à toutes et tous une excellente année 2009 et tous mes meilleurs voeux. Que 2009 nous apporte encore plus de PHP et de geekeries en tout genre. Je vais profiter de 2009 pour refondre Apprendre-PHP.com afin de rendre le système de tutoriels plus organisé et plus pertinent...

Janvier 2009 – Hello Design: Equivalence PHP et Javascript

Dans un de mes développements actuel, je me suis trouvé confronter dans le développement à utiliser du code d'une autre société sous la forme d'un fichier binaire.

Dans le projet, je dois utiliser impérativement une redirection automatique.

La pensée première concerne d'utiliser la fonction header de PHP. Mais dans la réalisation d'une suite logique, si vous ne possédez pas le contrôle complet de la chaine, cette fonction peut ne pas fonctionner, et il faut trouver d'autres solutions.

L'autre fonction possible, concerne la fonction include ou require en PHP, mais un risque de voir des traces dans la barre de navigation, est fortement déconseillé.

Heureusement il existe certaines fonctions PHP, qui possèdent l'équivalence en javascript et se traduisant comme ceci :

<SCRIPT LANGUAGE="JavaScript">
document.location.href="http://www.nouveau_lien.com"
</SCRIPT>

En résumé, en informatique il existe toujours une solution, d'ailleurs, je me rappele d'un projet qui a encore grossi... "PHP.Js" parlé voici il y a quelques mois sur Nexen.net

 

 

 

 

Janvier 2009 – Hello Design: Equivalence PHP et Javascript

Dans un de mes développements actuel, je me suis trouvé confronter dans le développement à utiliser du code d'une autre société sous la forme d'un fichier binaire.

 Dans le projet, je dois utiliser impérativement une redirection automatique.

 La pensée première concerne d'utiliser la fonction header de PHP. Mais dans la réalisation d'une suite logique, si vous ne possédez pas le contrôle complet de la chaine, cette fonction peut ne pas fonctionner, et il faut trouver d'autres solutions.

L'autre fonction possible, concerne la fonction include ou require en PHP, mais un risque de voir des traces dans la barre de navigation, est fortement déconseillé.

 Heureusement il existe certaines fonctions PHP, qui possèdent l'équivalence en javascript et se traduisant comme ceci : 

 <SCRIPT LANGUAGE="JavaScript">
document.location.href="http://www.nouveau_lien.com"
</SCRIPT>

 En résumé, en informatique il existe toujours une solution, d'ailleurs, je me rappele d'un projet qui a encore grossi... "PHP.Js" parlé voici il y a quelques mois sur Nexen.net

 

 

 

 

Janvier 2009 – Hello Design: NUMERICA ArtParty #2

La ville Montbelliard va accueillir la 2ème édition de la "Numérica Party" mi mars 2009,

Un évènement très attendu dans le monde de la coding Party et dont je serais présent et la scene en général aussi

Voici le lien de l'invitation http://www.demoscene.tv/prod.php?id_prod=13382

Mais en attendant, un résumé de la 1ere édition

Janvier 2009 – Hello Design: NUMERICA ArtParty #2

La ville Montbelliard va accueillir la 2ème édition de la "Numérica Party" mi mars 2009,

Un évènement très attendu dans le monde de la coding Party et dont je serais présent et la scene en général aussi

Voici le lien de l'invitation http://www.demoscene.tv/prod.php?id_prod=13382

Mais en attendant, un résumé de la 1ere édition

Retrospective Numerica Artparty#1

Janvier 2009 – PHP Index: Eclipse PDT 2.0

Eclipse PHP Development Tools 2.0 est désormais disponible au téléchargement.

Totalement compatible avec les standards d'Eclipse, cette nouvelle version d'Eclipse PDT permet aux développeurs PHP de profiter d'un grand choix de projets proposés par Eclipse, tels que Web Tools Project, Dynamic Language Toolkit, etc. pour une développement plus rapide et facile. PDT 2.0 propose également un support de Programmation Orientée Objet (POO) en PHP. PDT est un outil de développement open source qui fournit toutes les possibilités de rédaction de code nécessaires pour débuter avec les applications PHP.

PDT 2.0 est conçu sur des principes de base différents de ceux du PDT 1.0. Par exemple, des techniques différentes ont été utilisées pour modéliser les projets de l'espace de travail. PDT 2.0 utilise un mécanisme d'indexation et de cache pour une meilleure performance et expérience avec l'aide technique et la navigation. De plus, depuis que PHP fournit des aspects Orientés Objet tels que héritage et polymorphisme, PDT 2.0 fournit à son tour des caractéristiques comme hiérarchie entre différents types, indicateurs d'override et navigation entre types pour les programmeurs qui utilisent ces propriétés du langage.

Un webinar d'introduction à Eclipse PHP Development Tools 2.0 sera organisé par Zend Technologies le Mercredi 21 Janvier à 9h00 de San Francisco. Plus d'informations sur le site officiel de l'événement.

Vous pouvez télécharger Eclipse PDT 2.0 à partir du site officiel d'Eclipse ou du site officiel de Zend (inclue Eclipse PDT et Zend Debugger qui permet aux utilisateurs d'exécuter un debugage local et distant).

Janvier 2009 – CreaOne: Evénement PHP le 13 janvier 2009

Les Éditions Eyrolles organisent à la Cantine un événement PHP le 13 janvier 2009, en collaboration avec l’AFUP. Vous retrouverez que du beau monde comme Cyril Pierre de Geyer, Guillaume Ponçon, Eric Daspet, Fabien Potencier, Nicolas Perriault, Laurent Jouanneau, David Larlet, Christophe Porteneuve, (...)

Janvier 2009 – Lapin Blanc: Add reCAPTCHA widgets to Symfony forms

I’ve wrote a new Symfony plugin to add reCAPTCHA widgets and validation to Symfony new forms. reCAPTCHA is a free CAPTCHA service that helps to digitize books, newspapers and old time radio shows. To install: checkout it from (...)

Janvier 2009 – Apprendre-PHP.com: Rendez-vous AFUP : Communauté PHP et Frameworks

L'année 2009 démarre plus que bien avec un premier rendez-vous gratuit de l'AFUP coorganisé avec les éditions Eyrolles le 13 janvier prochain à 19h à la Cantine. Le programme de la soirée sera particulièrement riche et s'axera autour des deux thèmes suivants : PHP, une large communauté...

Janvier 2009 – PHP Index: Nouvelles versions pour Jelix

Pour cette nouvelle année, Jelix nous propose deux nouvelles versions : la version stable 1.0.7 et la seconde RC de Jelix 1.1.

Pour ceux se demandant ce que vaut Jelix, il est bon de savoir que ce framework se veut performant, simple, flexible, robuste et pragmatique.
Un court résumé d'un point de vue utilisateur, présentant les points forts, est disponible ici, tandis qu'une présentation plus complète des caractéristiques est disponible sur le site officiel.

Pour en revenir aux deux nouvelles versions :

La 1.0.7 se contente simplement de corriger des bugs sans gravité et peut être mis à jour sans problème depuis la 1.0.6 en remplaçant le répertoire lib de jelix par celui contenu dans le paquet jelix 1.0.7 et en supprimant tous les fichiers dans le répertoire temp.

Changelog
Télécharger

Quant à la 1.1RC2, nous pouvons retenir deux points intéressants en plus de la corrections de bugs mineurs :
- la compatibilité avec les bibliothèques externes a été améliorée, notamment avec celles définissant une fonction __autoload() ainsi que les bibliothèques javascript utilisant jQuery,
- deux nouvelles fonctionnalités permettant de réaliser une interface d’administration très rapidement ont été conçues.

Changelog
Télécharger

Janvier 2009 – PHP Index: eZ Components version 2008.2

eZ Systems vient d'annoncer la sortie de la version 2008.2 du package eZ Components.

eZ Components est un package de libraires prêtes à l'emploi qui apportent aux développeurs des outils de mise en cache, d'authentification, d'interaction avec la base de données, de templates, etc.

Les principales nouveautés de la version sont :

  • l'ajout du composant MvcTools, qui permet de structurer votre application sous le modèle MVC
  • de nouveaux formats sont pris en charge par le composant Document, qui permet la conversion de documents sous différents formats
  • le composant Webdav supporte maintenant l'authentification et la gestion des autorisations

Cette version corrige également 55 bugs.

L'article
Site
Téléchargement

Janvier 2009 – PHP Index: Smashing Magazine : Joomla Developer’s Toolbox

Comme ils l'avaient fait il y a peu pour WordPress et Drupal, Smashing Magazine à fait le tri dans l'énorme volume d'informations et de ressources disponibles pour Joomla afin d'établir une collection organisée des meilleurs ressources le concernant.

On retrouvera dans l'article :

  • Les ressources officielles (la documentation, la communauté, le forum Joomla )
  • Plusieurs Tutoriels
  • Des liens vers des templates, des plugins, ...
  • Des sites utilisant Joomla
  • Des Comparatifs avec d'autres CMS
  • Des Ressources pour développeurs
D'autres Developer's Toolbox sont disponibles sur Smashing Magazine, notamment celles de WordPress et de Drupal.

Voir l'article sur Smashing Magazine

Janvier 2009 – CreaOne: Symfony 1.2 sous Ubuntu

Suite à la parution des tutoriaux "Jobeet", je me permets de rédiger un court article vous permettant d'installer le framework Symfony en 10 minutes sur Ubuntu. Pour les curieux, Symfony est un framework MVC libre écrit en PHP 5. En tant que framework, il facilite et accélère le développement de (...)

Janvier 2009 – Hello Design: PHP solution 1/2009

Le nouveau numéro de PHP solution vient de sortir,de nombreux sujets sont traités :

 

  • Développer plus efficacement...
  • XOAD : PHP pour un environnement Ajax côté serveur...
  • Le B.A.- BA de la vidéo sur Internet...
  • Générer un document PDF avec PHP...
  • Les erreurs de référencement...
  • Génération du BACK-OFFICE avec symfony...
  • Utiliser XML avec MySQL 5.1...
  • Closures et traits...
  • Sécurité avec PDO...
  • Introduction dans les arcanes d'OOP dans PHP5...
  • Communication avec authentification avec PHP/ CURL...
Pour plus de détails, cliquez ici

 

Janvier 2009 – Hello Design: PHP solutions 1/2009

Le nouveau numéro de PHP solutions vient de sortir,de nombreux sujets sont traités :

 

  • Développer plus efficacement...
  • XOAD : PHP pour un environnement Ajax côté serveur...
  • Le B.A.- BA de la vidéo sur Internet...
  • Générer un document PDF avec PHP...
  • Les erreurs de référencement...
  • Génération du BACK-OFFICE avec symfony...
  • Utiliser XML avec MySQL 5.1...
  • Closures et traits...
  • Sécurité avec PDO...
  • Introduction dans les arcanes d'OOP dans PHP5...
  • Communication avec authentification avec PHP/ CURL...
Pour plus de détails, cliquez ici

 

Janvier 2009 – z-f.fr: Sondage framework PHP

Forum: Brèves
Auteur: philippe
Écrit le: Wed, 07 Jan 2009 16:56:16 +0100
Dernier message: Fri, 09 Jan 2009 10:28:17 +0100

Janvier 2009 – tigrou/pwet.fr: Optimisations Magento (et autres applications PHP/MySQL)

Cherchant des méthodes pour optimiser une boutique en ligne utilisant Magento, je suis tombé sur le billet Performance is Key! - Notes on Magento’s Performance sur le blog officiel de Magento. Sur le fond, rien d'extraordinaire mais de bons conseils valables pour la plupart des applications LAMP :

  • Utiliser un cache d'opcode (APC, XCache, eAccelerator, ...)
  • Bien configurer son Apache (KeepAlive, ...)
  • Bien configurer son MySQL (query cache, ...)
  • Utiliser un système de fichier de type tmpfs pour les données en cache sur le disque fréquemment utilisées

En revanche, sur la forme je suis un grand fan des captures d'écran pour montrer les configurations optimales avec en prime le correcteur orthographique activé :-)

Janvier 2009 – PHP Index: Symfony 1.2.2

La nouvelle version de Symfony est disponible.

Cette nouvelle version corrige plus d'une quarantaine de bugs répertoriés, un nombre assez important pour une nouvelle version.

Les principales corrections portent sur :
- le plugin Doctrine, dont ils proposent par ailleurs la nouvelle version 1.0.6 ainsi qu'une seconde version 1.1 beta disponibles ici,
- le Form framework, concernant l'upload de fichiers et presets,
- quelques améliorations des performances, notamment des problèmes de cache pour des fichiers de petites tailles.

Pour rappel, Doctrine est une couche ORM rapide et performante, basée sur le pattern ActiveRecord bien connu des adeptes de Ruby on Rails, pouvant être utilisée en lieu et place de Propel, l'ORM natif embarqué avec Symfony par défaut. Si vous souhaitez apprendre à l'utiliser, vous pourrez en savoir plus ici ou .

Pour la mise à jour de votre projet Symfony, suivez l'une des procédures décrites dans l'article source (par svn ou pear).
N'oubliez pas de vider votre cache après avoir effectué cette mise à jour.

Source
Changelog

Janvier 2009 – Kamelot Blog: Moteur de stockage MySQL ... en PHP

Voici un probablement inutile mais génial Moteur de stockage MySQL ... en PHP par Johannes Schlüter

Je ne me casse pas la tête à le traduire. c'est très facile à comprendre.

Johannes Schlüter sur les Connecteurs MySQL et est étudiant à l'Université des Sciences Appliquées de Munich . Il est release manager de PHP 5.3.

Janvier 2009 – Kamelot Blog: Comment basculer un code PHP en UTF-8

Martine écrit en utf-8Beaucoup trop de tuto ou articles que je lis dans la presse (Programmez, PHPSolution, ...) ou sur le net, présentent le "comment bien faire" en partant de zéro.

Trop peux parlent de "comment transformer". Il y a énormément d'existant qui est là et qui ne peut être simplement mis à la poubelle parce que on a trouvé une meilleures méthode.

Je voulais commencer à écrire dans ce sens des réflexions sur ce qui porte à la pratique de la transition et voilà que Sébastien Piraux, partage un article sur son compte fb.

Passer son code en UTF 8

C'est sur kitpages et ca explique Comment basculer un code PHP en UTF-8

Voici son intro

Si vous souhaitez coder un outil ou un site qui fonctionne avec des caractères ésotériques (Chinois, Arabe, Indien,...), vous devez changer la façon de coder vos caractères et de les transmettre sur le réseau. Cette façon de coder les caractères s'appelle le Charset. Le plus courant par nos latitudes est le charset ISO-8859-1. Il contient les caractères européens.

Pour écrire des textes en chinois, arabe, hébreux, indien, japonais... vous devez utiliser un charset qui permettent de coder tous les caractères de ces langues. Le charset le plus standard pour coder tout ça est UTF-8.

En attendant que je commence à m'y mettre, si vous avez d'autre ressources du style n'hésitez pas à me les faire connaitre.

Ressources signalées :

Janvier 2009 – PHP Index: PHP Québec est fière de présenter la Conférence PHP Québec 2009

Pendant trois jours, les experts mondiaux du PHP et des bases de données
seront réunis pour partager leur expérience, proposer des solutions à
des problèmes récurrents dans l'industrie et présenter de nouvelles
techniques qui vous permettront de rester à l'avant-garde. C'est
l'occasion rêvée de rencontrer ces experts, de parfaire vos
connaissances et d'élargir votre réseau de contact.

Quand : Du 4 au 6 mars 2009
Où : Au centre-ville de Montréal, à l'hôtel Hilton Bonaventure, au 900 de la Gauchetière Ouest
Quoi : Pendant trois jours, les experts mondiaux du PHP et des bases de données
seront réunis pour partager leur expérience, proposer des solutions à
des problèmes récurrents dans l'industrie et présenter de nouvelles
techniques qui vous permettront de rester à l'avant-garde. C'est
l'occasion rêvée de rencontrer ces experts, de parfaire vos
connaissances et d'élargir votre réseau de contact.

Cette année l'organisation propose une formule améliorée :

- 3 jours, plus de 50 conférences
- Des Ateliers
- Spécial CMS et Frameworks
- Un salon de l'emploi
- Un cocktail
- Des activités de clôture

Pour plus d'informations ou pour vous inscrire, visitez le site Web de
la Conférence PHP Québec 2009 au :

http://conf.phpquebec.com/

Faites vite, les places sont limitées!

Proposé par Francis Begin

Janvier 2009 – PHP Index: SPIP 2.0.3

La version 2.0.3 de SPIP est disponible depuis ce week-end. Celle-ci n'apporte que des corrections mineures.

Voici l'ensemble des corrections :

  • Pouvoir tenir compte du hreflang lors de la construction de l’URL par calculer_url via inc_lien_dist
  • Les entités > et < étaient changées en < > après une surligne
  • Accepter les - dans le nom des bases SQL
  • Bug sur changement d’auteur si le nom de l’auteur était trop court
  • Coquille dans les vieilles defs
  • Retour des recherches de mots associés aux documents
  • Bug si erreur de frappe #URL_MOT
  • Pour un raccourci « Un wiki dans SPIP » la fonction nettoyer_raccourcis_typo renvoie « Array »...
  • Le numéro du jour manquait sur le libellé du survol conduisant au calendrier du jour. Quant au libellé du mois, il n’emmenait pas sur le calendrier du mois.
  • Une fonctionnalité de la 1.9.2 perdue : si id_rubrique est fournie à la création d’une traduction, il faut créer dans cette rubrique, pas ailleurs.
  • Ne pas écraser le hash de la boucle avec le critère recherche cela empêche tout plugin de l’utiliser
  • Protéger la fonction recuperer_fond quand on écrit recuperer_fond($fond,$_GET) dans les plugins même si il semble que la variable soit protégée en amont dans tous les cas.
  • Le cryptage du mot de passe avant envoi n’était plus assuré que si le cookie session était toujours actif.
  • Fatal error à la suppression d’un document avec vignette.
  • Lorsqu’on pose ou retire les .htaccess des sous-répertoires de IMG, il ne faut pas oublier celui nommé « distant » qui ne figure pas dans la table des types de documents.
  • Deux balises A pour LOGO_DOCUMENT.
Voir l'article original
Télécharger SPIP 2.0.3

Janvier 2009 – Hello Design: Cela bouge du cote de Joomla

c'est fou, en 1 gros mois, la communauté Joomla par l'intermédiaire de son CMS développé en PHP, a beaucoup évolué

La création d'une association sous le nom AFUJ (Association francophone des utilisateurs de Joomla!)

La nouvelle verison du livre blanc Joomla 1.5 pour les Nuls

Info@Hand 6.0 va s'intégré aussi bien Google Agenda et Joomla... La nouvelle version qui sera disponible dans les prochains jours  est un logiciel open source  qui s’enrichit d’un agenda 2.0, de nouvelles possibilités de gestion des droits d’accès et d’utilisation, d’un portail self-service compatible avec Joomla 1.5 et de fonctionnalités avancées de gestion de projets

 

 

 

Janvier 2009 – Hello Design: Cela bouge du cote de Joomla

c'est fou, en 1 gros mois, la communauté Joomla par l'intermédiaire de son CMS développé en PHP, a beaucoup évolué

La création d'une association sous le nom AFUJ (Association francophone des utilisateurs de Joomla!)

La nouvelle verison du livre blanc Joomla 1.5 pour les Nuls

Info@Hand 6.0 va s'intégré aussi bien Google Agenda et Joomla... La nouvelle version qui sera disponible dans les prochains jours est un logiciel open source qui s’enrichit d’un agenda 2.0, de nouvelles possibilités de gestion des droits d’accès et d’utilisation, d’un portail self-service compatible avec Joomla 1.5 et de fonctionnalités avancées de gestion de projets

 

 

 

Janvier 2009 – PHP Québec: Conférence PHP Québec 2009 : Fin des tarifs de pré-vente 16 Janvier

PHP Québec est fière de présenter la Conférence PHP Québec 2009.

Quand : Du 4 au 6 mars 2009
Où : Au centre-ville de Montréal, à l'hôtel Hilton Bonaventure, au 900 de la
Gauchetière Ouest
Quoi : Pendant trois jours, les experts mondiaux du PHP et des bases de
données
seront réunis pour partager leur expérience, proposer des solutions à
des problèmes récurrents dans l'industrie et présenter de nouvelles
techniques qui vous permettront de rester à l'avant-garde. C'est
l'occasion rêvée de rencontrer ces experts, de parfaire vos
connaissances et d'élargir votre réseau de contact.

Cette année l'organisation propose une formule améliorée :

- 3 jours, plus de 50 conférences
- Des Ateliers
- Spécial CMS et Frameworks
- Un salon de l'emploi
- Un cocktail
- Des activités de clôture

Pour plus d'informations ou pour vous inscrire, visitez le site Web de
la Conférence PHP Québec 2009 au :

http://conf.phpquebec.com/

Faites vite, les places sont limitées!

Janvier 2009 – Kamelot Blog: Refactoring tout en douceur avec de la transition ....

Comme je le disait ici, j'avais envie d'écrire à propos d'astuces sur des pratiques qui permettent la transition.

Il y a des transitions de longues durées et d'autre de courtes durées

Longue durée

Une transition de longue durée est une amélioration qui ne peut être faite en un coup. Partout où j'ai travaillé, que ce soit chez delcampe, sur claroline, sur arena51 sur kidcity, the World Scout Shop ... c'est toujours la même raison. Il y a des résidus d'erreurs du passé, pour lesquelles, un jour, il a été prouvé/trouvé une meilleurs façon de faire mais il est inconcevable de s'y atteler en exclusivité et d'arrêter tout le reste le temps d'appliquer cette nouvelle façon de faire.

Généralement ça concerne les performances, la sécurité, les normes d'écriture du code ... Bref au niveau fonctionnel. Des éléments qui changent peu de manière "visible", du coup on diffère. Ou pire, on s'en fait deuil en disant "On ne peut pas se permettre de consacrer tant de temps à cela, ça fonctionne sans".

Dans ce cas, la transition permet de créer les conditions pour faire selon la nouvelle méthode. On se fixe alors une règle du style : dès qu'on touche à un script, on applique la nouvelle façon de faire. Le vieux code lui reste comme il est, on ne va pas risquer de casser quelque chose qui fonctionne et auquel on a pas besoin de toucher.

Courte durée

J'utilise cela parfois pour pouvoir faire des mises à jour sans interruption de service. C'est à dire ordonnancer les remplacements de fichiers pour que à chaque instant le code soit cohérent.

Par exemple, je met à jour une classe et un code qui l'utilise.

  1. -> ajout de la classe dans un fichier ou un nom temporaire
  2. -> remplacement du fichier qui l'exploite pour qu'il utilise la classe temporaire
  3. -> modification de l'ancienne classe ou de l'ancien fichier
  4. -> remplacement du fichier qui exploite la nouvelle classe mais dans son nom officiel

Note pour des applications distribuées c'est moins évident. On doit plutôt voir ça en "upgrade" automatique. On a une transition de courte durée ... "qui reste longtemps" sur le serveur. On fait une mise à jour (release) préparatrice et puis une seconde finalisant la transition.

Durée moyenne ?

On va plutôt dire qu'il y a des inconvénients dans les transition à longue durée qu'il faut éviter et que ca implique donc que la durée ne soit pas trop longue:

  1. ° si ça touche à la sécurité... Même si le problème existe depuis le "début", on va quand même essayer d'y mettre un coup de fouet.
  2. ° si ça touche aux performance ou au règles de codage, il faut tenter de mesurer combien on gagne à le faire, combien on y perd à laisser ca comme ça.
  3. ° éviter le chevauchement des transitions. Si on lance une transition il faut être sûr de son coup et viser une fin de transition avant la probable suivante. Les transitions augmentent le taux de "mélange de pratique" pour un nouveau collaborateur ça crée d'autant plus de méthode de travail à découvrir. Donc on perd du temps et de l'efficacité.

Vous en pensez quoi ?

Mise en garde

Il y a surement aussi des erreurs ou de mauvais choix dans ma façon de faire. C'est aussi pour cela que j'en parle sur ce blog, pour en discuter et les améliorer.

Je parle pas des remarques d'éventuels intégristes ou de jeunes sortis de l'école qui pense que dans l'informatique on passe son temp à créer du neuf.

Janvier 2009 – PHP Index: Les erreurs de programmations les plus courantes

A l'heure où la sécurité prend une place de plus en plus importante dans notre société, un article bienvenu, publié sur www.internetnews.com, annonce l'apparition d'un top 25 d'erreurs de programmation les plus courantes.

Cette liste a été réalisée par plus d'une trentaine de sociétés, agences, entreprises ou universités expertes dans le domaine de la sécurité Internet parmi lesquelles on pourra remarquer la "Information Assurance Division" de la NSA ou encore Microsoft.
De ces erreurs découlent des problèmes de sécurité affectant le site ou application en elle-même, mais affectant aussi la sécurité de l'ordinateur du visiteur. Un chiffre intéressant à retenir est que parmi toutes ces erreurs, deux d'entre elles seulement conduisent à plus de 1.5 millions de sites ayant une faille de sécurité durant l'année 2008.

Ces 25 erreurs sont décomposées en 3 catégories : Interaction non sécurisée entre les composants, Administration de Ressources Risquées et Défenses Poreuses. La liste détaille ces erreurs et propose une solution pour chacune d'elles.
Dans chacune de ces catégories, les programmeurs aguerris retrouveront certaines erreurs bien connues, telles que l'absence de contrôles après envoi d'un formulaire, l'injection SQL ou les failles XSS, mais pourront en découvrir d'autres moins connues mais tout aussi dangereuses.

Bon courage pour la sécurisation de votre site !

Source
Top 25

Janvier 2009 – Apprendre-PHP.com: Classe singleton d'accès aux SGBD intégrant PDO

J'ai commencé à créer ma propre classe d'accès aux bases de données car j'avais véritablement envie d'implémenter des interfaces telles que Iterator ou Countable. Seulement voilà, il existe déjà une classe de ce type native à PHP : PDO.

Janvier 2009 – z-f.fr: Nouvel organisme de formation sur le ZF

Forum: Brèves
Auteur: philippe
Écrit le: Wed, 14 Jan 2009 16:28:35 +0100
Dernier message: Tue, 07 Apr 2009 11:54:31 +0200

Janvier 2009 – Glagla.org: PMSIpilot recrute sur Lyon : des développeurs Symfony

[edit Juillet 2010] cette offre est toujours d’actualité ! PMSIpilot recrute aussi des commerciaux sédentaires. Voici une offre qui pourrait intéresser certains. La société PMSIpilot, éditeur de logiciels, recrute des développeurs symfony. Les pré-requis sont les suivants : avoir entre bac+2 et bac+5 en informatique ou une expérience significative, maitriser PHP ou un langage objet et surtout avoir envie de [...]

Article original publié sur Glagla Dot Org. Tous droits réservés.

PMSIpilot recrute sur Lyon : des développeurs Symfony

Janvier 2009 – PHP Index: Drupal 6.9 et 5.15 - importantes mises à jour de sécurité

L'équipe de Drupal vient de sortir une importante mise à jour de sécurité. Il est très fortement recommandé de faire la mise à jour.

Cette mise à jour corrige des failles de sécurité critiques mais n'ajoute aucune fonctionnalité.
Aucune fonctionnalité ne sera ajoutée avant la sortie prochaine de Drupal 7.0.

Janvier 2009 – PHP Index: Utilisation de Zend_Tool

Le site Zend Developper Zone propose un article sur l'utilisation du composant Zend_Tool qui permet de générer une application en utilisant la ligne de commande.

Zend_Tool est un système de construction en ligne de commande appliquant des actions (tel que créer, supprimer) à des ressources (projet, fichier, dossier).
Vous devrez dans un premier temps, récupérer Zend_Tool, puis configurer votre serveur afin d'utiliser Zend_Tool en ligne de commande. Il devient alors très simple de créer une application de type "hello world" utilisant l'arborescence conseillée par le Zend Framework ou un nouveau controller.

L'article
Quickstart

Janvier 2009 – Apprendre-PHP.com: Sensio Labs recrute un développeur PHP 5 / MySQL Junior

Sensio Labs, agence interactive (50 personnes), créée il y a 10 ans, est une société spécialisée dans le conseil en stratégie Internet, dans la création et le développement d'applications Web en environnement Open-Source pour le compte de clients grands comptes en France et à...

Janvier 2009 – Kamelot Blog: Refactoring : renommer des fonctions

Première astuce à propos des Refactoring en "transistion".

Le renommage des fonctions et variables est une tâche courante de refactoring.

Voici une technique douce quand on ne peut être sur de renommer partout d'un coup. (Il arrive qu'un search and replace puisse causer des "dégâts", qu'il faille vérifier au cas par cas.

Je l'ai fortement utilisée pour la transformation qui effectuaient un affichage et que je voulais transformer en return.

Typiquement

[php]
<?php 

/**
 *
 * affiche la chaine  à propos de foo
 *
 * @return true;
 */

function print_foo()
{

   echo 'foo';
   return true; //<- souvent manquant ceci dit
}

// devient 

/** 
 * construit la chaîne  à propos de foo
 * 
 * @return string chaîne  à propos de foo
 *
 */
function getHtml_foo()
{
   $html = 'foo';
   return $html; 
}
?>

Le problème rencontré c'est tout ces print_foo() qui trainent dans le code.

Généralement je laisse les deux fonctions, très proches dans le fichier.

La nouvelle fonction fait le boulot, l'ancienne demande à la nouvelle de sous-traiter et logue avec un trigger_error le fait qu'on l'utilise encore.

J'ai ai mis un peu trop dans le trigger, je vous conseille les 4 premiers morceaux

[php]
<?php 

/**
 *
 * Affiche la chaine construite à propos de foo
 *
 * Cette fonction n'est plus à utiliser.
 * utilisez un echo  print_foo();
 * L'utilisation de cette fonction est reprise dans les logs .
 *
 * @deprecated
 * @see  print_foo()
 *
 * @return true;
 */
function print_foo()
{

   $db = debug_backtrace();
   trigger_error(
     'print_foo()! is use '
    . ' funct : ' . $db[1]['function'] . '()'
    . ' file : ' . $db[1]['file'] 
    . ' line : ' . $db[1]['line'] 
 #  . 'PHP_SELF : '.$_SERVER['PHP_SELF']
 #  . date('Y-m-d H:i:s') . "\n"
 #  . $_SERVER['SERVER_ADDR'] . "\n"
 #  . $_SERVER['REQUEST_URI'] . "\n"
   , E_USER_WARNING);

   echo getHtml_foo();
   return true; 
}
?>

Ensuite tous les matins un petit grep sur le log

grep print_foo | cut pour retirer les dates | sort -u

retourne la liste du boulot pour la journée :) vous en attaquez 3 par jour et ça va avancer tout seul.

Si vous travaillez avec une communauté open source, il n'est pas bête de publier cette liste, et de récolter les patches.

Un autre cas d'utilisation : un fichier qui ne devrait plus être utilisé.

Vous pouvez le retirer simplement de votre serveur et subir les foudres s'il est encore appelé quelque part et que son absence provoque un fatal error ou alors lui mettre un espion.

[php]
<?php 

mail( 'christophe@gesche.org'
    , 'ce foutu fichier reste appelé ici !!!!!'
    , 'PHP_SELF : '.$_SERVER['PHP_SELF']
    . "\n"
    . date('Y-m-d H:i:s') . "\n"
    . $_SERVER['SERVER_ADDR'] . "\n"
    . $_SERVER['REQUEST_URI'] . "\n"
    . var_export(debug_backtrace(),1)
    . "\n"
    
    );
    
    trigger_error( 'ce foutu fichier reste appelé ici !!!!!'.$_SERVER['SERVER_ADDR'] .' ' .date('Y-m-d H:i:s'),E_USER_WARNING);
?>

Janvier 2009 – PHP Index: Les nouveautés de PHP 5.3, 3e partie : les espaces de noms

Le site d'IBM a publié la 3eme partie de sa présentation concernant la version 5.3 de PHP. Celle-ci concerne la nouvelle fonctionnalité très attendue : les espaces de noms.

Cet article rappelle en premier lieu la bonne façon de définir un espace de nom. Nous retiendrons :
- Ne pas afficher de sortie avant la définition de l'espace de nom,
- Ne pas ajouter d'espace devant la balise ouvrante de php lors de la définition de l'espace de nom.

Suite à cela, il nous présente les différentes façons d'utiliser les espaces de noms, que ce soit l'utilisation d'alias ou l'appel de fonctions identiques provenant d'espaces de noms différents. De plus, l'article détaille la manière de parcourir les espaces de noms ayant un préfixe identique en utilisant le séparateur "\".

L'article finit avec un exemple de réécriture de fonctions dans un espace de nom, fonctionnalité qui pourra être intéressante afin de modifier certaines fonctions globales uniquement dans l'espace courant tout en gardant des noms de fonctions identiques aux originales.

Pour les lecteurs ayant raté les deux premières parties, sachez que la première partie concerne les changements effectués sur la programmation orientée objet et la seconde détaille le fonctionnement des closures et fonctions lambdas (souvent appelées fonctions anonymes).

Partie 1 : Changements POO
Partie 2 : Closures et fonctions lambdas
Partie 3 : Espaces de noms

Janvier 2009 – Glagla.org: Utiliser le système d’évènements de Symfony

Le système d’évènements de Symfony est une avancée particulièrement intéressante dans le framework. Toutefois, la documentation officielle est un peu spartiate sur le domaine. Voici donc un exemple pratique plus didactique pour utiliser les évènements. Le système d’évènement de Symfony est basé sur le motif de programmation observer qui est un grand classique du genre. Tout d’abord, [...]

Article original publié sur Glagla Dot Org. Tous droits réservés.

Utiliser le système d’évènements de Symfony

Janvier 2009 – CreaOne: Installation de Jelix 1.1 sous Ubuntu

Article rapide, afin de démontrer qu'il ne faut que quelques minutes pour installer un framework PHP sur sa machine Linux. J'ai déjà rédigé un article équivalent sur Symfony et Ubuntu, aujourd'hui je me permets de vous faire découvrir un framework moins célèbre, mais qui mérite attention : Jelix. (...)

Janvier 2009 – PHP Index: CMS Made Simple version 1.5.2

CMS Made Simple 1.5.2 "Caguas" est maintenant disponible pour téléchargement

Il s'agit d'une version corrective.

Un grand nombre de dysfonctionnements ont été corrigés. Certaines corrections etaient planifiées dans le centre de développement (Forge),et d'autres ont été ajoutées grâce aux signalements des membres de la communauté.

Ce paquet est certainement la version la plus stable et la plus riche en fonctionnalités meme si la seule véritable nouveauté de la 1.5.2 est la balise {page_image}.


Prévisions CMS Made Simple version 2:
CMS Made Simple bien plus qu'un CMS, c'est un framework complet nommé "SILK".
ADODB, ORM, Smarty, MVC et autres Design Patterns, jQuery, OpenID etc...


A propos de CMS Made Simple
CMS Made Simple est un système de gestion de contenu Open Source, distribué sous license GNU/GPL, extensible (programmation orienté objet), PHP / MySQL, simple, efficace et facile à utiliser.

Il permet la conception et à la mise à jour dynamique de site web de toutes tailles, personnels ou communautaires, des portails d'entreprise, associatifs ou corporatifs, ou encore de relation citoyenne pour les administrations et collectivités. Vous pourrez ainsi mettre à disposition de vos visiteurs des services comme des forums, une boutique en ligne, des formulaires, des galerie photos et vidéo, etc....

Ce logiciel libre a été plusieurs fois récompensé aux CMS Award comme l'un des meilleurs et des plus prometteurs CMS Open Source.

http://www.cmsmadesimple.fr

Proposé par Eric

Janvier 2009 – PHP Index: EasyPHP 3.0 est sorti

Aux oubliettes depuis quelque temps, c'est une version 3.0 qui vient de sortir

La version 3.0 d'EasyPHP est disponible depuis le 7 janvier. C'est une surprise que je viens de découvrir dans la section téléchargements du site www.easyphp.org. Le forum de cette nouvelle version a été ouvert aujourd'hui.

http://www.easyphp.org/index.php

Proposé par Hervé

Janvier 2009 – PHP Index: phpMyAdmin 3.1.2

La nouvelle version de phpMyAdmin est disponible.

Cette version ne fait que corriger quelques bugs au niveau de la structure ou de la mise à jour des tables.
Elle améliore également l'export YAML et le SQL généré.
Enfin deux langues (tchèque et hollandais) sont mises à jour.

Télécharger
Changelog

Janvier 2009 – Lindev: Exemple d'utilisation du module SSH

Exemple d'utilisation du module ssh2 via php N'ayant jamais moi même utilisé ssh via php , je me suis permis de creer un petit bout de code pour compléter l'article précédent ... Nous allons donc utiliser quelques fonctions Sell2 dont la liste se trouve ici Note : le code ci-dessous n'est qu'un (...)

Janvier 2009 – PHP Index: Webinars de Zend janvier - février 2009

Zend Technologies a prévu plusieurs webinars pour la fin du mois de janvier et pour le mois de février.

Parmi eux vous trouverez :

  • "Optimisez et supervisez vos applications PHP avec Zend Platform" - le 23 janvier, qui vous aidera à découvrir comment la Zend Platform permet d'accélérer des développements et réduire les coûts de maintenance grâce à un système de supervision complet des applications. Une deuxième session de ce webinar sera organisée le 3 février
  • "Créez et déboguez vos applications PHP avec Zend Studio for Eclipse" - le 30 janvier. Ce webinar a pour but de mettre en rapport les fonctionnalités de Studio for Eclipse avec les problématiques quotidiennes de développement
  • "Be Zend" - le 6 février. Cet événement annuel sera organisé par les étudiants de l'INSSET cette fois et portera sur Zend Framework et la récente implémentation du toolkit JavaScript Dojo

Vous pouvez consulter la liste complète des événements prévus en français ici, ou ceux en anglais ici.

Janvier 2009 – Hello Design: Demo IN Paris

Popsy Team avec la participation de Moi meme (Hello du groupe Sector One) organisent le 6 février une soirée à la cantine sur le theme "Demo in Paris".

 Cet évènement vous permettra de découvrir l'univers de la démoscène...

La demoscene est une communauté, principalement européenne, créée au début des années 80.
En France cette communauté de passionnés d'informatique se retrouvait sur le minitel sur le 3615 RTEL.
A cette époque les machines étaient limitées en mémoire, en nombre de couleurs affichées à l'écran et des possibilités sonores plus que réduites.
Ces passionnés de création numérique tentaient de surpasser ces restrictions purement techniques grâce à leur imagination.
ils arrivaient par exemple à afficher des images de 256 couleurs alors que techniquement seulement 16 couleurs était accessible simultanement.

De nos jours avec la puissance des nouvelles technologies, que sont-ils devenus?
Actifs et retraités de la demoscene retrouvons-nous dans une ambiance conviviale ou venez découvrir notre univers durant la soirée "Demo In Paris".

 

Pour plus d'information... cliquez ici

Janvier 2009 – tigrou/pwet.fr: Planet eZ Publish.fr !

Voila, à force d'y penser, j'ai fini par développer un Planet eZ Publish francophone, surtout que ce n'était pas grand chose en temps de développement, tout au plus l'équivalent de quelques jours, "graphisme" compris ! Toute ressemblance avec le backoffice d'un célèbre outil de gestion de contenu d'origine norvégienne est une pure coïncidence ;-)

À ma connaissance, il s'agit du troisième Planet utilisant eZ Publish après Planet eZ Publish (l'orginal :)) et le planet Fedora-fr. Si vous avez un blog francophone parlant d'eZ Publish, n'hésitez pas à inscrire votre flux (RSS ou Atom) !

Pour les curieux, le dépôt SVN avec l'ensemble du code est accessible en lecture. Je ferai certainement un article plus technique dans les jours qui viennent.

Janvier 2009 – Hello Design: Demo IN Paris

Popsy Team avec la participation de Moi meme (Hello du groupe Sector One) organisent le 6 février une soirée à la cantine sur le theme "Demo in Paris".

Cet évènement vous permettra de découvrir l'univers de la démoscène...

La demoscene est une communauté, principalement européenne, créée au début des années 80.
En France cette communauté de passionnés d'informatique se retrouvait sur le minitel sur le 3615 RTEL.
A cette époque les machines étaient limitées en mémoire, en nombre de couleurs affichées à l'écran et des possibilités sonores plus que réduites.
Ces passionnés de création numérique tentaient de surpasser ces restrictions purement techniques grâce à leur imagination.
ils arrivaient par exemple à afficher des images de 256 couleurs alors que techniquement seulement 16 couleurs était accessible simultanement.

De nos jours avec la puissance des nouvelles technologies, que sont-ils devenus?
Actifs et retraités de la demoscene retrouvons-nous dans une ambiance conviviale ou venez découvrir notre univers durant la soirée "Demo In Paris".

 

Pour plus d'information... cliquez ici

Janvier 2009 – Kamelot Blog: 50 outils bien pratiques pour PHP

Smashing Magazine publie une liste de 50 tools utiles pour le développement PHP.

On y trouve des grands classiques, mais avec 50 il y en a peut-être que vous ne connaissez pas encore.

C'est "50 Extremely Useful PHP Tools"

Dans le même style
Personnellement

J'utilise

  • SimpleTest
  • phpDocumentor
  • GeSHi - Generic Syntax Highlighter
  • phpLangEditor <- Yeeeeeeeeahhh c'est de Sébastien Piraux, développeur de claroline
  • Zend Framework
  • phpMyAdmin
  • Smarty
  • PHPEclipse
  • Zend Studio
  • Aptana PHP
  • PhpED
  • PDT

Janvier 2009 – Kamelot Blog: PEAR :: Authentication

Première étape de mon passage en revue des classes de PEAR. Les Package PEAR pour l'Authentification

Stables

  • Auth : Création d'un système d'authentification. PHP License
  • Auth_HTTP Authentification http PHP License nécessite Auth_HTTP
  • Auth_PrefManager Classe de gestion de "préférences" PHP License
  • Auth_RADIUS Classes Wrapper pour le packege PECL RADIUS BSD
  • Auth_SASL Abstraction d'une série de mécanisme de réponse SASL BSD

Beta

  • LiveUser Boite à outil de gestion de comptes utilisateur et permissions LGPL
  • LiveUser_Admin Boite à outil pour l'administration des comptes gérés par LiveUser LGPL

Alpha

  • Auth_PrefManager2 Nouvelle version en préparation de la classe de gestion de "préférences" PHP License

Un peu plus sur le sujet

Auth

LiveUser

Janvier 2009 – PHP Index: De l'utile à l'indispensable ; une liste d'outils pour PHP

Le site www.smashingmagazine.com publie un article proposant une liste de 50 outils permettant de faciliter le développement avec PHP.

On y retrouve des outils classiques tels que phpMyAdmin, des outils de debugage très pratiques comme PHP_debug ou encore des outils aussi indispensables que firebug pour Firefox.

Ces outils sont regroupés en thème :

  • Débugage (PHP_Debug, Webgrind)
  • Optimisation (PHPUnit, PHP_CodeSniffer, dBug, ...)
  • Génération de documentation (PHPDocumentor, PHP DOX, ...)
  • Sécurité (Scavenger, Securimage, ...)
  • Imageries/graphiques (SWF charts, MagickWand For PHP, ...)
  • Versioning (Phing, xinc)
  • Extensions (PHPMyAdmin, TCPDF, PHPExcel, ...)
  • Outils en ligne (Minify, HTTP_StaticMerger, ...)
  • Plugins firefox (FirePHP, ...)
  • Framework (CodeIgniter, Zend Framework, ...)
  • Éditeurs (PDT, Aptana PHP, PHP Edit, ...)
Donc à vos téléchargements pour un développement plus simple, plus agréable et plus fiable !

Janvier 2009 – PHP Index: Outil de débogage : PHP_Debug

Déboguer son code PHP n'est pas toujours évident.
En phase de développement il est souvent utile d'afficher le contenu de variables PHP ($_POST, $_COOKIE, $_REQUEST, ...) ou certaines erreurs ( en cas d'utilisation de "error_reporting(E_ALL)" ).
Une technique consiste à afficher ces variables dans la page elle même. Mais on peut aussi utiliser la barre de débogage de PHP_Debug.

Elle s'insère par dessus votre page, elle ne modifie par l'affichage de la page, elle peut être réduite ou fermée à tout moment et elle contient une multitude d'informations utiles (logs des alertes, temps d'exécution du script, contenu des variables super globales, liste des requêtes SQL exécutées, ...). Cet outil qui devient très vite indispensable est directement inspiré de la barre de débogage de symfony framework.

Janvier 2009 – Glagla.org: A quoi sert un moteur de template pour PHP ?

En lisant des articles comme ça, je me demande bien pourquoi certains utilisent un moteur de template pour PHP. PHP n’est il pas lui même excellent dans ce domaine ? Je suis sur qu’il me manque un élément dans ma réflexion, si vous l’avez, merci d’éclairer ma lanterne ! Article original publié sur Glagla Dot Org. Tous [...]

Article original publié sur Glagla Dot Org. Tous droits réservés.

A quoi sert un moteur de template pour PHP ?

Janvier 2009 – PHP Index: Symfony 1.3 annoncé

La prochaine version du framework symfony est annoncée pour Novembre 2009 au plus tôt. Patience donc !

Pas de grosses nouveautés au programme mais un système de billets pour émettre des suggestions a été mis en place sur le site officiel. Vous trouverez des informations sur cette nouvelle version ici.

Rendez-vous à cette adresse pour déposer des suggestions à l'équipe de développement. Quand au plus curieux d'entre vous, ils pourront suivre l'avancement du développement ici.

Janvier 2009 – PHP Québec: Conférence PHP Québec : Tarifs de prévente prolongés

Puisque nos commanditaires ont offert un grand soutien à la conférence, nous sommes heureux d'annoncer que la période de la prévente sera prolongée de trois semaines (jusqu'au 8 février).

Nous remercions nos commanditaires pour leur soutien financier qui nous permet d'organiser une conférence si grande et abordable.

Enregistrez-vous dès aujourd'hui en ligne:
http://conf.phpquebec.com

Janvier 2009 – tigrou/pwet.fr: Étude du Planet eZ Publish.fr (1/3) : organisation et import des articles

Cette série de 3 billets présente les principaux points de la conception et de la réalisation du Planet eZ Publish.fr avec eZ Publish.Il s'agit d'un site simple à tous les niveaux, mais il concentre tout de même quelques astuces que j'espère intéressantes !

I. Organisation et Import des articles
II. Modules/vues sur mesure et templates
III. Performances : caches et compagnie

Organisation

Classes de contenu

Pour tout site réalisé avec le CMS eZ Publish, la détermination de l'arborescence ainsi que la définition des classes de contenus est l'étape préliminaire nécessaire. Dans le cas du Planet, le cahier des charges est assez simple, il s'agit d'importer des billets (classe Post) de divers blogs (classe Site) francophones consacrés à eZ Publish. Je souhaitais aussi pouvoir gérer une liste de Planets, le Planétarium, (classe Site également) avec pourquoi pas l'affichage des derniers billets de chaque Planet.

J'ai aussi créé une classe Planete qui sert de page d'accueil au Planet actuel. Le but de la création de cette classe est multiple :

  • elle permet d'avoir un affichage spécifique sans faire une surcharge sur le node id de la page d'accueil qui peut changer aux grès des évolutions du site
  • si un jour je souhaite que la même instance eZ Publish héberge d'autres Planets, le travail sera restreint à la duplication de l'arborescence
  • La définition d'une classe spécifique permet également de faciliter l'écriture des règles de vidage de cache dans le fichier viewcache.ini.

À cela, il faut ajouter les inévitables pages À propos (classe Page) et formulaire de contact (classe Formulaire de contact) ainsi que la classe Folder existante pour des questions d'organisation du contenu et de gestion de cache.

Arborescence

À partir de cette liste de classes, l'arborescence est assez « évidente ». Le découpage se fait naturellement et en plus il permet de gérer facilement les caches template (cache-block) en évitant que tous les blocks n'expirent avec la racine. Elle est aussi prévue pour faciliter la construction du menu horizontal.

Import des articles et nettoyage

Contrairement à un site classique, le contenu sur un Planet provient d'autres sites via leur flux RSS. Ma première idée était d'utiliser le mécanisme d'import RSS d'eZ Publish. J'avais commencé par écrire un Content Edit Handler qui, pour chaque objet Site, créait un import RSS utilisé ensuite par le script de cronjob rssimport.php. Mais la fonctionnalité d'import RSS souffre de plusieurs limitations / bugs gênants :

Le script rssimport.php me semble par ailleurs assez mal écrit, du coup, j'ai choisi d'en écrire un autre quasiment from scratch basé sur le composant Feed des eZ Components et le mapping entre champs du flux et champs des objets Post est fait dans un simple fichier de configuration.

Parallèlement au script d'import RSS, j'ai aussi écrit un script de nettoyage des articles issus des Planets puisque seuls les 5 derniers de chaque source sont liés sur la page Planétarium, autant ne pas encombrer la base pour rien.

Janvier 2009 – tigrou/pwet.fr: Étude du Planet eZ Publish.fr (2/3) : modules/vues et templates

Suite de la série de billets sur la réalisation du Planet eZ Publish.fr avec dans celui ci quelques notes sur les modules/vues spécifiques ainsi que sur la réalisation des templates.

I. Organisation et Import des articles
II. Modules/vues sur mesure et templates
III. Performances : caches et compagnie

Modules / vues sur mesure

Pour le moment, seuls deux vues spécifiques sont utilisées sur le site.

feed/planet

Cette vue sert à générer le flux RSS du Planet. Comme pour l'import RSS, le composant Feed des eZ Components est utilisé. L'intérêt principal par rapport à l'export RSS de base est la possibilité d'ajouter la balise dc:author avec le nom du site (l'objet parent dans le cas du Planet). Cette vue implémente également un système de cache sur le même principe que le cache de vue. Ce cache est vidé et est re-généré par le script d'import RSS alors que le cache de l'export RSS par défaut expire au bout d'un temps fixe.

planet/search

Cette vue reproduit la vue de recherche par défaut en forçant la recherche dans une sous-arborescence sans avoir besoin de passer le paramètre SubTreeArray. Contrairement à content/search, elle permet également l'utilisation des persistent variables comme sur content/view.

Templates et opérateur

Les templates pour ce site sont assez classiques et plutôt simples compte tenu de la charte graphique basique. Seule « astuce », chaque vue full fixe deux entrées dans les persistent variables ce qui permet de générer un titre et une description pertinents sans aucun fetch supplémentaire dans le pagelayout qui serait synonyme de requêtes SQL et/ou de cache supplémentaire à gérer (voir les dernières lignes du template planet.tpl et les premières du pagelayout.tpl par exemple).

Le seul opérateur spécifique est l'opérateur clean_rewrite_xhtml utilisé à la place de l'opérateur wash pour afficher les attributs Text block contenant le texte issu des flux RSS. Cet opérateur a plusieurs fonctions :

  1. rendre valide le code XHTML avec le module PHP Tidy
  2. réécrire les éventuels URLs relatives à site (images et liens)
  3. supprimer toute trace de Javascript grâce à quelques expressions XPath.

Janvier 2009 – tigrou/pwet.fr: Étude du Planet eZ Publish.fr (3/3) : performances, caches et compagnie

Suite et fin de la série d'articles sur la réalisation du Planet eZ Publish.fr avec les questions de performances et de caches.

I. Organisation et Import des articles
II. Modules/vues sur mesure et templates
III. Performances : caches et compagnie

Performances

Cache de vue et cache-block

La gestion des caches « standards » est un point important pour les performances. La vue full (zone entourée de jaune dans la capture d'écran ci-dessus) est assez logiquement l'affichage de la liste des articles, elle est automatiquement mise en cache (cache de vue ou cache de contenu). Pour que la page d'accueil et les pages Blogs et Planétarium soient à jour sans opération manuelle, il m'a fallu ajouter deux règles dans une surcharge du fichier viewcache.ini pour que le cache de vue soit vidé lors de l'ajout d'un objet de la classe Post ou de la classe Site.

Les menus (menu horizontal, liste des blogs, liste des planets) sont chacun entourés d'une instruction cache-block (cadres rouge) expirant avec la partie de l'arborescence qu'ils affichent. Et pour aller encore un peu plus loin, chaque article est lui-même individuellement mis en cache par un cache-block. Cela permet de limiter le nombre de requêtes SQL nécessaires à la re-génération de la vue full lors de l'ajout ou de la mise à jour d'un article ainsi que sur l'affichage des résultats de recherche.

Cache statique

Compte tenu du faible nombre de pages, j'ai choisi d'ajouter du cache statique en plus des caches classiques sur l'ensemble du site. 0,05 seconde pour sortir une page les mauvais jours, difficile de faire mieux ! Une des limitations du cache statique est l'impossibilité de pré-générer les pages avec paramètres (par exemple /page/(offset)/10), pour éviter ce problème, j'ai ajouté les pages principales (avec ou sans paramètres) dans les URLs à générer systématiquement. Ainsi à la moindre modification de contenu, le script de cronjob staticcache_cleanup.php génère la quinzaine de pages du site. Ce qui a aussi l'avantage de pré-générer les zones en cache détaillées précédemment pour les résultats de recherche par exemple.

Optimisations côté navigateur

Le temps de génération (ou de distribution) des pages n'est qu'une petite partie du temps total d'affichage de la page. Les Yahoo! Performances Rules ou le livre High Performances Web Sites listent les principales recommandations pour améliorer ce point.

Planet eZ Publish.fr est hébergé sur ma Dédibox, la configuration des entêtes d'expiration et de la compression GZip des éléments textuels sont effectifs. La charte graphique simple a également simplifiée la mise en place de la technique CSS Sprites pour limiter le nombre de requêtes HTTP nécessaire à l'affichage d'une page. Tout ceci donne un beau Performance Grade A(97) dans YSlow.

Janvier 2009 – PHP Index: PHP TV : special Forum PHP 2008

Après avoir couvert le forum PHP 2008 organisé par l'AFUP (Association Française des Utilisateurs PHP).

L'équipe de PHP TV, met à disposition l'ensemble des conférences plénières.

Voici la liste :

* The Age of Literate Machines (Zak Greant)
* 20minutes.fr : plus vite, plus lourd, plus alerte (Nicolas Silberman et Sébastien Lucas)
* Drupal : Rue89 ou la communauté de l'info (Damien Cirotteau)
* Industrialisation PHP : Retour d'expérience BNP Paribas (Jean-Philippe Glomot)
* Nouvelles fonctionalites Oracle database 11g pour PHP (Kuassi Mensah)
* Scaling Mozilla's websites with PHP (Laura Thomson)
* Performance, en allant plus loin que PHP (Eric Daspet)
* Static and Dynamic Analysis at Ning (David Sklar)
* PHP 5.3 : les nouveautés du futur si proche (Pascal Martin)
* Place des Tendances et les interfaces riches Ajax (Olivier Vanhaecke et François Lasselin)
* L'importance de PHP dans l'entreprise (Gauthier Delamarre)
* PHP, a mystery success story! (Lukas Smith)

http://www.phptv.fr/forum-php-2008

Proposé par hello

Janvier 2009 – PHP Index: TYPO3 4.2.5, 4.1.9 and 4.0.11

Ces nouvelles versions corrigent une régression apparue lors de la dernière mise à jour.

Téléchargez les versions :
TYPO3 4.2.5
TYPO3 4.1.9
TYPO3 4.0.11

Bulletin officiel

Janvier 2009 – Digital Fashion: Replacing short tags with proper PHP tags

This is a little script I made to get rid of those damned short tags.

<?php
 
while ($file = trim(fgets(STDIN)))
{
  $content = file_get_contents($file);
 
  $search  = array('/<\?=/', '/<\?(?!php|xml)/');
  $replace = array('<?php echo ', '<?php ');
 
  if ($content != ($new_content = preg_replace($search, $replace, $content)))
  {
    file_put_contents($file, $new_content);
  }
}

Just put this in a file, short_tags.php for example, and run something like:

$ find . -name "*.php" | php ./short_tags.php

I would have done it with sed, but it doesn't seem to support PCRE, and I don't know how to do negative lookahead (the (?!php|xml) thingy) with POSIX based regexp (if it's even supported) :/

UPDATE: Actually, POSIX Regexps DO support negative lookahead (as well as positive lookahead and lookbehind) with the same syntax as PCRE regexps. But grep doesn't use POSIX regexps, it uses things called BRE and ERE that I've never heard of before. Too bad.

Janvier 2009 – PHP Index: WordPress - sécuriser la zone d'administration

Le site www.smashingmagazine.com nous offre un article qui explique comment améliorer la sécurité de la partie administration d'un site sous WordPress

Les probabilités de subir une attaque augmentent avec la popularité du site. De nombreux sites fonctionnent sous WordPress et l'aspect sécurité est souvent mis de coté jusqu'à ce qu'il soit trop tard.
Réagissez avant ! Il peut être salutaire pour votre site d'appliquer les dix conseils de smashingmagazine, cela ne le rendra évidemment pas invulnérable mais en augmentera grandement la sécurité et compliquera le travail des hackers.
La plupart de ces conseils sont applicables par tous ; certains ne sont que du bon sens (mots de passe compliqués, mettre à jour WordPress, ...). D'autres ne sont pas toujours applicables (droits d'accès au serveur nécessaires) ou encore astucieux (suppression du premier compte administrateur).

Janvier 2009 – PHP Index: La réécriture de PHP

Dans un article sur son blog, Lukas Kahwe Smith, l'un des développeurs de PHP, répond à une question qui lui est fréquemment posée dernièrement : Pourquoi ne pas réécrire complètement PHP ?

Suite à l'annonce à propos du backslash choisi comme séparateur d'espaces de noms, cette question semble être plus fréquente et l'auteur, bien que n'étant pas un expert dans le domaine comme il le signale, nous donne son avis.

Voici un bref résumé des points soulevés dans l'article :
- Un nombre important de personnes ont basé tout leur travail sur PHP et si leur outil venait a été remanié de fond en comble, cela ne ferait que leur apporter plus de problèmes qu'en résoudre que ce soit pour leurs projets passés ou en cours.
- Si un groupe de personne souhaitait reprendre le meilleur de PHP, corriger les bugs, renommer le nouvel outil et remplacer éventuellement PHP dans le monde du développement, ils y sont autorisés et même encouragés. Et si ce groupe pouvait travailler main dans la main avec l'équipe de PHP, cela n'en serait que mieux.

Certains commentaires de l'article apportent de plus quelques bonnes idées pour les futurs développements de PHP.

Source

Janvier 2009 – Dur Comme Faire: L'année 2009 commence bien pour PHP

Hier est sortie, la première béta de PHP 5.3. Les alphas avaient pris du retard et pour ne pas continuer sur cette pente glissante, les responsables de cette version ont décidé de reporter les closures à une version ultérieure. En revanche, une nouvelle est passée beaucoup plus inaperçue...

Janvier 2009 – z-f.fr: PHP 5.3 beta 1 sortie

Forum: Brèves
Auteur: philippe
Écrit le: Fri, 30 Jan 2009 08:32:50 +0100
Dernier message: Fri, 30 Jan 2009 13:31:32 +0100

Janvier 2009 – PHP News: [Linux] Installer Slackware 12.2 avec un boot NTLDR

Un billet-mémo pour un triple boot XP/Leopard/Slackware en utilisant NTLDR

Introduction

  • Démarrer un Linux ne requiert pas de le démarrer depuis une partition active (boot flag on) . Windows et Leopard le requiert.
  • /dev/sda3 est ma ‘root-partition’ dédiée à Linux

Installation

Installer Slackware avec son DVD. Sélectionner les options et packages voulus.

Ne pas installer Lilo sur la MBR sinon il faudra le désinstaller par la suite (lilo -u /dev/<boot device>). Le mieux est de ne pas sélectionner le paquet Lilo ou alors de refuser le prompt d’installation de Lilo sur la MBR.

Une fois l’installation terminée et un reboot, Slackware est bien installée mais le boot menu NTLDR n’en fait logiquement pas mention. Pour ceux qui ont rebooté après l’installation, il faut rebooter sur le cd d’installation. Une fois dans le Shell pre-installation, on monte sa partition Linux :

# mount /dev/sda3 /mnt/
# chroot /mnt

Si on n’a pas installé les packages kernel-huge/generic-smp-<VERSION>, kernel-modules-<VERSION> et lilo, ils sont requis (ils fournissent les noyaux de boot et les modules associés dans /lib/modules). Ils  sont temporaires pour démarrer la distribution et commencer à la personnaliser (recompilation noyau). Le but est de pouvoir démarrer la distribution en ayant un menu de boot la proposant et d’éviter les kernel panic du à un FS non supporté.

# mount /dev/cdrom /mnt/cdrom

# cd /mnt/cdrom/slackware/a/
# installpkg kernel-generic-<VERSION>_smp-i686-1.tgz
# installpkg kernel-modules-<VERSION>_smp-i686-1.tgz
# installpkg mkinitrd-<VERSION>.tgz
# installpkg lilo-<VERSION>.tgz

Configuration d’un initrd pour que le noyau support le ext3 du rootdev (étape facultative car je vous conseil de compiler le support du système de fichier en dur dans le noyau, ainsi que le support de tout ce qui est liée au contrôleur SATA, IDE, ou SCSI etc. afin que le disque puisse être accédé par le noyau et la partition root montée sans générer de kernel panic)

# cd /boot
# mkinitrd -c -k vmlinuz -m  mbcache:jbd:ext3 -r /dev/sda3 -f ext3 (A noter quelques erreurs concernant /proc/partitions introuvable, mais c'est normal on est chrooté)

Modification de Lilo

# cp /usr/doc/lilo-<VERSION>/sample/lilo.sample.conf /etc/lilo.conf (ou directement créer un nouveau fichier)
# nano /etc/lilo.conf

boot=/dev/sda3
map=/boot/System.map
install=/boot/boot.b
#prompt
#timeout=50
image=/boot/vmlinuz
label=Slackware
initrd=/boot/initrd.gz
root=/dev/sda3
read-only

On oublie surtout pas (peut faire perdre de précieuses minutes ;o ) :


#/sbin/lilo (génère quelques erreurs attendues)

Préparation du boot.ini NTLDR :


# exit (on quitte le chroot)

# mount /dev/sda8 /tmp (une partition RW en fat32)

# dd if=/dev/sda3  count=1 bs=512 of=/tmp/boot_linux

# reboot (on quitte le shell préinstallation et on retourne sosu windows)

Sous windows :


# Copier boot_linux dans c:\

# Modifier boot.ini

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionnel" /noexecute=optin /fastdetect
C:\boot_macos="Leopard"
C:\boot_linux="Slackware"

Lecture intéressante :

http://jaeger.morpheus.net/linux/ntldr.php

et le README disponible dans /boot après l’installation de Slackware :

Slackware initrd mini HOWTO
by Patrick Volkerding, volkerdi@slackware.com
Sun Oct 26 00:38:49 CDT 2008

This document describes how to create and install an initrd, which may be
required to use the 2.6 kernel. Also see “man mkinitrd”.

1. What is an initrd?
2. Why to I need an initrd?
3. How do I build the initrd?
4. Now that I’ve built an initrd, how do I use it?

1. What is an initrd?

Initrd stands for “initial ramdisk”. An initial ramdisk is a very small
Linux filesystem that is loaded into RAM and mounted as the kernel boots,
and before the main root filesystem is mounted.

2. Why do I need an initrd?

The usual reason to use an initrd is because you need to load kernel
modules before mounting the root partition. Usually these modules are
required to support the filesystem used by the root partition (ext3,
reiserfs, xfs), or perhaps the controller that the hard drive is attached
to (SCSI, RAID, etc). Essentially, there are so many different options
available in modern Linux kernels that it isn’t practical to try to ship
many different kernels to try to cover everyone’s needs. It’s a lot more
flexible to ship a generic kernel and a set of kernel modules for it.

3. How do I build the initrd?

The easiest way to make the initrd is to use the mkinitrd script included
in Slackware’s mkinitrd package. We’ll walk through the process of
upgrading to the generic 2.6.27.4-smp Linux kernel using the packages
found in Slackware’s slackware/a/ directory.

First, make sure the kernel, kernel modules, and mkinitrd package are
installed (the current version numbers might be a little different, so
this is just an example):

installpkg kernel-generic-2.6.27.4_smp-i686-1.tgz
installpkg kernel-modules-2.6.27.4_smp-i686-1.tgz
installpkg mkinitrd-1.3.2-i486-3.tgz

Change into the /boot directory:

cd /boot

Now you’ll want to run “mkinitrd”. I’m using reiserfs for my root
filesystem, and since it’s an IDE system the reiserfs module will be
the only one I need to load:

mkinitrd -c -k 2.6.27.4-smp -m reiserfs

This should do two things. First, it will create a directory
/boot/initrd-tree containing the initrd’s filesystem. Then it will
create an initrd (/boot/initrd.gz) from this tree. If you wanted to,
you could make some additional changes in /boot/initrd-tree/ and
then run mkinitrd again without options to rebuild the image. That’s
optional, though, and only advanced users will need to think about that.

Here’s another example: Build an initrd image using Linux 2.6.27.4-smp
kernel modules for a system with an ext3 root partition on /dev/hdb3.
Note that you need the mbcache, jbd, and ext3 modules to use ext3:

mkinitrd -c -k 2.6.27.4-smp -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3

4. Now that I’ve built an initrd, how do I use it?

Now that you’ve got an initrd (/boot/initrd.gz), you’ll want to load
it along with the kernel at boot time. If you use LILO for your boot
loader you’ll need to edit /etc/lilo.conf and add a line to load the
initrd. Here’s an example section of lilo.conf showing how this is
done:

# Linux bootable partition config begins
image = /boot/vmlinuz-generic-2.6.27.4-smp
initrd = /boot/initrd.gz
root = /dev/hda6
label = Lnx26274smp
read-only
# Linux bootable partition config ends

The initrd is loaded by the “initrd = /boot/initrd.gz” line.
Just add the line right below the line for the kernel image you use.
Save the file, and then run LILO again (’lilo’ at the command line).
You’ll need to run lilo every time you edit lilo.conf or rebuild the
initrd.

Other bootloaders such as syslinux also support the use of an initrd.
See the documentation for those programs for details on using an
initrd with them.

———

Have fun!

Easy !  ;o