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

Mai 2008 – Nexen.net: PHP 5.2.6 disponible

Image pour le titre du contenu
L'équipe de développement PHP publie la version 5.2.6. Cette version se concentre sur la stabilité de la branche 5.2.x, avec plus de 120 corrections de bogues, donc plusieurs concernent la sécurité. Tous les utilisateurs sont vivement encouragés à se mettre à jour vers cette version.
Correction de sécurité de cette version :
  • Dépassement possible de capacité dans FastCGI SAPI, identifiée par Andrei Nigmatulin.
  • Dépassement de capacité entière dans printf(), identifié par by Maksymilian Aciemowicz.
  • Correction du bogue de sécurité CVE-2008-0599, identifié par Ryan Permeh.
  • Correction d'un contournement du safe_mode dans cURL, identifié par Maksymilian Arciemowicz.
  • Gestion correcte des séquences multi-octets incomplètes par escapeshellcmd(), identifiée par Stefan Esser.
  • Mise à jour de PCRE 7.6

Les améliorations importantes de PHP 5.2.6 incluent des crash de posix, la réduction du coût de mémoire de . par rapport à .=, un parent privé accessible vi une fonction statique, une boucle infinie dans bz2_filter, une fuite mémoire dans __toString(), un crash avec __get et __set, un crash dans pdo_pgsql, un crash avec xmlrpc_server_call_method(), une fuite mémoire lors de conversion automatique, SimpleXML qui consomme trop de mémoire, et 120 autres bogues.

Mai 2008 – Nexen.net: Lancement du mois des tests PHP

Image pour le titre du contenu
Le mois des tests PHP est lancé. Il s'agit d'un mois durant lequel le groupe PHP veut augmenter significativement le nombre de tests unitaires qui encadrent PHP. Actuellement, sur PHP 5.2.6RC3, il y avait 5118 tests unitaires (avec 66 extensions compilées et 1615 fonctions natives).
Le but est donc d'écrire de nouveaux tests .phpt (tutoriel ci-dessous). Ces tests seront désormais intégrés dans les prochaines distributions. Si jamais vous vous êtes déjà fait attaquer par un changement de comportement d'une fonction PHP entre deux versions, ces tests unitaires seront un garde-fou pour vous et les développeurs du groupe PHP : soit ils pourront le prendre en compte lors des prochaines versions, soit vous saurez immédiatement que certaines fonctions ont changé de comportement, et vous pourrez gagner du temps la prochaine fois.
Alors, prenez la documentation, écrivez quelques tests et soumettez cela sur le site du test fest : vous pourrez gagner l'un des 10 elephpants que nous avons mis en jeu!

Mai 2008 – Nexen.net: Appel à conférencier pour le forum PHP 2008 de l'AFUP

Image pour le titre du contenu
L'AFUP (Association Française des Utilisateurs de PHP) annonce l'appel à conférenciers pour le Forum PHP 2008.
Pour cet évènement unique en France nous recherchons les experts francophones qui souhaitent partager leurs expériences et leur savoir-faire. Une liste non-exhaustive inclue les sujets suivants:
  • Comment gérer un projet PHP (outils, méthodes, ...)
  • Assurer la qualité du code
  • Le Droit sur Internet
  • Monter son entreprise autour de PHP
  • La montée en charge
  • Connecter des services (web services)
  • Les interfaces riches (choix technologie, implémentation, ...)
Pour postuler rendez vous sur cette page:

Mai 2008 – Nexen.net: Conférence Applications riches sur le Web

Image pour le titre du contenu
Le web évolue et les technologies associées aussi.
Un rendez-vous est organisé par l’AFUP (Association Française des Utilisateurs de PHP) et Microsoft sur le sujet "Applications riches sur le Web avec PHP et Silverlight".
Vous pourrez ainsi découvrir le 14 mai 2008, Silverlight, le format de client riche de Microsoft.

Mai 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 200

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



6 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Horde, Joomla, PhpGedView, WordPress, Zen Cart et e107



Mai 2008 – Nexen.net: Bug Triage et Worklog communautaire pour MySQL

Image pour le titre du contenu
Jay Pipes publie en rafale deux articles qui entendent impliquer un peu plus fort la communauté dans le développement de MySQL.
Il y a le bug triage : cette opération consiste à faire un ménage dans la liste de bogues en cours, en corrigeant les problèmes les plus simples rapidement, et en supprimant les bogues qui ont été corrigés, mais pas signalés. Cela demande quelques ressources pour se synchroniser, mais le résultat est une décroissance spectaculaire du nombre de bogue, et une meilleure concentration sur ceux qui restent.
L'autre sujet est un worklog communautaire : actuellement, la communauté n'a pas son mot à dire dans les priorités données aux nouvelles fonctionnalités ou corrections qui doivent être intégrées dans MySQL. Ces informations sont disponibles mais en lecture seule. Jay envisage de mettre en place un système qui permettra de mieux savoir quelles sont les besoins de la communauté, et de leur assigner une priorité. Un projet qui est difficile à bien positionner.

Mai 2008 – Nexen.net: Publier vos trucs d'expert peut-il géner vos affaires?

Image pour le titre du contenu
Peter Zaitsev publie un blogue où il réponse à une question brûlante : comment arrive-t-il à publier tout ses trucs d'expert MySQL et InnoDB, sans couper la branche sur laquelle il est assis?
Dans les faits, ces publications permettent de soulager le flôt de questions qui pourraient lui arriver, sans lui apporter d'affaires. Et pour les missions plus complexes, c'est ses capacités à comprendre la situation et à prendre en compte tout ce qu'il a écrit qui est apprécié : cela dépasse le simple conseil ponctuel.
Alors, lachez-vous : publiez ce que vous savez, il en restera toujours quelque chose.

Mai 2008 – Nexen.net: Le meilleur du web en avril 2008

Image pour le titre du contenu
SmashingMagazine publie le meilleur du Web pour le mois d'avril.
Il y a ShoulRedesign, un site où on peut voter pour faire refaire la conception d'un site Web, ou bien soumettre son propre site pour savoir s'il est temps de le faire.
fontstruct, un éditeur de police en ligne; un tutoriel pour réaliser des graphiques en ligne et en standard Web, et un système d'onglets propre.

Mai 2008 – Hello Design: Elephpants Nouvelle Portée

Les représentants des ElePHPants PHP écoutent avec grande attention cette annonce.

Ils viennent d'apprendre une annonce merveilleuse :

 

"La famille va s'agrandir"

 

L'adoption pourra se faire sans douleur dès leur naissance par les grands et les petits

Pour en savoir plus, le site Nexen.net explique comment effectuer l'adoption... Cliquez ici

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 200

Image pour le titre du contenu
9 paquets ont été mis à jour cette semaine :

  • en Log (0 visite) : Utilitaire de log

  • en Net_Curl (0 visite) : Net_Curl fournit une interface objet à ext/curl

  • en PEAR_PackageUpdate (0 visite) : Méthode simple pour mettre à jour des paquets à la volée

  • en XML_Query2XML (0 visite) : Création de données XML à partir d'une requête SQL

  • en PEAR_PackageUpdate_Web (0 visite) : Interface graphique pour PEAR_PackageUpdate

  • en Net_MPD (0 visite) : API avec le démon de musique

  • en PHP_Debug (0 visite) : Aide au débogage PHP

  • en Services_Akismet (0 visite) : Client PHP pour Askimet (REST)

  • en Services_Yahoo_JP (0 visite) : WebServices pour Yahoo!JAPAN


PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 200

Image pour le titre du contenu
9 paquets ont été mis à jour cette semaine :

  • en Log (0 visite) : Utilitaire de log

  • en Net_Curl (0 visite) : Net_Curl fournit une interface objet à ext/curl

  • en PEAR_PackageUpdate (0 visite) : Méthode simple pour mettre à jour des paquets à la volée

  • en XML_Query2XML (0 visite) : Création de données XML à partir d'une requête SQL

  • en PEAR_PackageUpdate_Web (0 visite) : Interface graphique pour PEAR_PackageUpdate

  • en Net_MPD (0 visite) : API avec le démon de musique

  • en PHP_Debug (0 visite) : Aide au débogage PHP

  • en Services_Akismet (0 visite) : Client PHP pour Askimet (REST)

  • en Services_Yahoo_JP (0 visite) : WebServices pour Yahoo!JAPAN


PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: HSCALE : partitions MySQL avec le Proxy

Image pour le titre du contenu
L'un des problèmes particuliers du partitionnement, notamment lorsque les partitions sont séparées sur plusieurs serveurs, est d'identifier un système pour pouvoir répartir ses tables. Parmi les solutions, il y a le mysql proxy, qui se révèle capable d'orienter les requêtes vers les bons serveurs, voire les bons shards. C'est sur cette base que se sont lancé les auteurs du projet HSCALE : un script LUA du proxy MySQL permet d'envoyer les bonnes requêtes vers les bonnes partitions, et bientôt, les bons serveurs.

Mai 2008 – Nexen.net: MySQL Online Backup : BACKUP et RESTORE

Image pour le titre du contenu
MySQL Online Backup est un projet de sauvegarde en fonctionnement d'un serveur MySQL. Il s'agit d'un client MySQL, qui exporte les données sans bloquer l'ensemble des autres clients, ou d'imposer un temps d'arrêt au serveur. Le MySQL Online Backup exporte aussi les données statistiques de la table (celles de SHOW TABLE STATUS), pour pouvoir y accéder indépendamment dans la sauvegarde.
Des pilotes spécifiques sont prévus pour toutes les tables, et pour le moment, c'est un pilote bloquant qui est disponible : ce sont donc principalement les structures (tables, bases, vues, procédures, etc) qui sont sauvées, et pas les données. Cela arrivera avec les versions 6.0.6 de MySQL et ultérieur.
En attendant, on peut utiliser de nouvelles commandes SQL en ligne, et cela va changer la vie à beaucoup de monde :
 
 
BACKUP DATABASE sakila TO 'sakila-backup.sql';
 
SELECT * FROM mysql.online_backup WHERE backup_id = 2 \G
 
RESTORE FROM 'sakila-backup.sql'
 

Mai 2008 – Nexen.net: Sun Netbeans supporte PHP

Image pour le titre du contenu
"Basé sur le même framework de scripting générique que Sun a utilisé pour Ruby, le paquetage PHP inclut des outils de management de projet dont la refactorisation de code pour faciliter le déploiement. L'entreprise compte sur une implication encore plus forte de la communauté pour intégrer d'autres langages dynamiques à Netbeans. Des rumeurs parlent de Python et du support de Scala. Il est également prévu d'offrir la possibilité de publication sur des réseaux sociaux."
Publié sur le journal du Net.

Mai 2008 – Nexen.net: Une Release de Copix : 3.0.3

Image pour le titre du contenu
Copix 3.0.3 est officiellement disponible sur la page de téléchargements du projet. Pas mal de nouveautés majeures. Parmi celles-ci on peut citer lapparition de Validateurs qui permettent de valider objets, tableaux ou autre. Il est aussi possible de gérer des ressources web à lintérieur du répertoire dun modules, pratique pour pakager une application complète avec images, icônes et javascripts. Dailleurs jai commencé à créer un module wbe pour regrouper les différents éditeurs html type tiny MCE et FCKEditor.
A suivre...

Mai 2008 – Nexen.net: Webgrind: une interface Web pour Xdebug

Image pour le titre du contenu
Xdebug est l'outil de référence pour analyser les performances d'une application PHP. Toutefois, il impose l'installation de kcache grind, qui se révèle une opération très difficile sur OSX et Windows.
Deux projets ont été lancés sur ce sujet : un via le GSOC (Google Summer of Code), qui vient juste de démarrer, par Chung-Yang Lee, et mentoré par David Coallier. Les résultats devraient arriver durant l'été, tandis que Web Grind existe déjà, en version beta, sur Google Code.

Mai 2008 – Nexen.net: Roadmap technique pour MySQL 6 et 7

Image pour le titre du contenu
Peter Gulutzan publie la roadmap technique de MySQL, qui liste les points techniques qui sont développés pour les versions 6.0, 6.1 et 7.0 de MySQL, sans les distortions du marketing. Un programme très alléchant :
MySQL 6 : Falcon, sauvegardes non-bloquantes et informations de diagnostic.
MySQL 6.1 : Clés étrangères pour toutes les tables, Sommes de contrôle pour la réplication.
MySQL 7.0 : Identification externe, Audits de données, sécurité par rôle.
Et bien d'autres encore.

Mai 2008 – PHP Index: PHP 5.2.6

L'équipe de développement de PHP a annoncé le 01 mai 2008 la sortie de PHP 5.2.6. Cette version a pour but d'améliorer la stabilité de la branche 5.2.x avec la correction de 120 bugs dont plusieurs concernant la sécurité.

Parmi les correctifs de sécurité, on notera :

- Correction d'une possibilité de stack buffer overflow dans FastCGI SAPI.
- Correction d'une possibilité d'overflow des entiers dans la fonction printf().
- Correction d'un contournement du safe_mode dans cURL.
- Correction de la gestion des séquences incomplètes dans la fonction escapeshellcmd().
- Mise à niveau de PCRE à la version 7.6

Les corrections importantes concernent entre autres :

- Correction de possibles crashs dans l'extension POSIX.
- Diminution de l'utilisation de mémoire de la concaténation avec "." au lieu de ".=".
- Correction de la possibilité d'appeller un constructeur privé dans une fonction statique.
- Correction d'une possibilité de boucle infinie dans bz2_filter.c.
- Correction de fuites de mémoire dans quelques fonctions lors de l'appel de __toString().
- Correction de crashs lors de l'utilisation de __get et __set.
- Correction de crashs dans pdo_pgsql.
- Correction de l'utilisation de la méthode __call() lorsque elle est appelée sur un parent d'une classe enfant.
- Correction de crashs dans la méthode xmlrpc_server_call_method().
- Correction de fuites de mémoire lors de conversion implicite.
- Correction de problèmes de mémoire dans SimpleXML.

La liste complète des modifications apportées par PHP 5.2.6 est disponible dans le changelog.

PHP 5.2.6 Release Announcement
Télécharger PHP 5.2.6

Mai 2008 – PHP Index: 01net : Interview d'Harold Goldberg, PDG de Zend

01net a publié fin avril une interview d'Harold Goldberg, PDG de Zend, où il fait le point sur la concurrence et parle de l'avenir de l'entreprise.

Après avoir fait un point sur les activités actuelles de Zend (Zend Core, Zend Framework, Zend Studio, etc), Harold Goldberg nous apprend qu'il n'est pas impossible que Zend passe un jour à un modèle 100% open source même si c'est encore loin d'être une priorité.

Le reste de l'article se résume à une comparaison du langage PHP avec quelques-uns de ses plus célébres concurrents que sont Ruby, Python ou encore Java. On y apprend entre autres, que PHP serait utilisé par 30 millions de sites soit 30% du Web actuel.

Lien vers l'article : Zend (PHP) envisage de basculer vers le tout open source

Mai 2008 – Nexen.net: Identification via myVidoop

Image pour le titre du contenu
Chris Shiflett présente myVidoop, un site dont la devise est : un nom d'utilisateur, pas de mot de passe. Le système est un SSO, qui utilise différentes techniques habiles du coté utilisateur :

  • Au lieu de fournir un nom d'utilisateur et un mot de passe, vous ne fournissez qu'un code d'activation, qui utilise un moyen de communication secondaire : en d'autres termes, par le site Web. Cela vous protège contre les problèmes de sécurité dans un site Web, car maintenant un pirate doit trouver des vulnérabilités dans plusieurs média.


  • Au lieu de se considérer comme identifié, vous êtes simplement autorisé à vous identifier avec l'Image Shield (un CAPTCHA cognitif). Par conséquent, l'Image Shield est une protection supplémentaire.

Chris Shiflett utilise le tout avec Open ID. Et ce sera d'ailleurs ma crainte principale en voyant ce système : OpenID n'est déjà pas partout, alors, myVidoop?

Mai 2008 – Nexen.net: Les constructeurs sont mauvais pour la santé

Image pour le titre du contenu
Difficile de se passer des constructeurs, mais en fait, difficile de ne pas être génés par eux. Comment?
Les constructeurs créent des objets, et sont nécessaires au fonctionnement du programme. Mais la création peut se faire de différentes manières : par exemple, pour créer un intervalle, on pourrait avoir un constructeur avec les deux bornes, ou bien un constructeur avec la borne inférieure et la taille, ou la borne supérieure et la taille. Cela fait 3 constructeurs différents, qui ne peuvent se différentier par leur signature (le nombre des arguments du constructeur).
Il semble qu'en Java, tel que m'en parlait David Avenante, la pratique consiste à faire une usine avec un nom explicite, qui fait appel au constructeur. Cela masque le new, mais permet de produire les objets avec des méthodes explicites.
Voyez les exemples de Jared pour mieux comprendre son point.

Mai 2008 – Nexen.net: Programmation créative avec MySQL

Image pour le titre du contenu
Guiseppe Maxia publie sa conférence de CommunityOne, consacrée à la programmation créative en MySQL. C'est un ensemble de trucs et d'utilisation de différentes tables et technologies de MySQL, très habiles.
Il y a par exemple les doubles insertions : il suffit de faire un moteur blackhole, et d'ajouter un trigger qui réalise les insertions dans deux autres tables. Il y a aussi les tables fédérées ou les vues.
La conférence fait aussi une liste sans concession des limitations de certaines technologies actuelles. J'aurai aimé le voir en conférence, car Guiseppe a une expérience SQL incroyable.

Mai 2008 – Nexen.net: PHP5.2.6 et MySQL 5.0.51b pour WampServer2

Image pour le titre du contenu
Comme le dit si bien Romain, "Tout est dans le titre :".

Mai 2008 – Nexen.net: Logique métier sur Excel et en ligne

Image pour le titre du contenu
Maarten Balliauw publie un tutoriel pour réaliser des sites Web dont la logique métier est établie sur une feuille excel. En se basant sur phpexcel, un projet d'interface entre le fameux tableur et PHP, on peut charger une feuille excel, et l'utiliser pour exécuter des calculs, puis en extraire le résultat. Le tout, en 5 étapes. A voir, car il existe de nombreuses PME où les feuilles excel portent les calculs complexes métier.

Mai 2008 – PHPortail: Le mois de la variable MySQL (05/05/08)

Parvesh Garg a lancé le mois de la variable MySQL : une fois par jour, il braque les projecteurs sur une variable MySQL, son utilisation et ses fonctionnalités. Un bon moyen d'en savoir un peu plus...

Mai 2008 – PHPortail: Php ArrayIterator (05/05/08)

«Grosso modo, je partage la question que je me pose au sujet de la qualité du code OO en PHP. Comment améliorer la qualité de mon code, comment le normaliser pour minimiser le bloat code ? Au fur...

Mai 2008 – PHPortail: Pourquoi avoir choisi PHP : appel à contribution (05/05/08)

Le journal du net lance un appel à contribution pour savoir pourquoi vous avez choisi PHP comme langage de script côté serveur.

« Pour réaliser vos projets de site Web dynamique, vous avez...

Mai 2008 – PHPortail: PHP 5.2.6 disponible (05/05/08)

L'équipe de développement PHP publie la version 5.2.6. Cette version se concentre sur la stabilité de la branche 5.2.x, avec plus de 120 corrections de bogues, donc plusieurs concernent la...

Mai 2008 – PHPortail: Lancement du mois des tests PHP (05/05/08)

Le mois des tests PHP est lancé. Il s'agit d'un mois durant lequel le groupe PHP veut augmenter significativement le nombre de tests unitaires qui encadrent PHP.

Le but est donc d'écrire de...

Mai 2008 – PHPortail: Joomla 1.5.3 (05/05/08)

Une nouvelle version de Joomla est sortie. Cette version 1.5.3 intervient seulement 1 mois après la sortie de la version 1.5.2 et confirme les engagements de l'équipe de Joomla qui souhaite fournir...

Mai 2008 – PHPortail: Remplir du texte avec une image (05/05/08)

Mikko Koppanen nous apprend comment utiliser une image pour remplir un texte, à la place d'une couleur unie.

« L'exemple que j'ai posté récemment utilise une image comme motif de remplissage...

Mai 2008 – PHPortail: Un panier d'achats avec PHP et Prototype (05/05/08)

« Dans le dernier volet de cette série, je vous montrerai comment réaliser un panier d'achats en utilisant PHP, les sessions, et la bibliothèque JavaScript Prototype. Le panier permet aux...

Mai 2008 – PHPortail: Appel à conférencier pour le forum PHP 2008 de l'AFUP (05/05/08)

L'AFUP (Association Française des Utilisateurs de PHP) annonce l'appel à conférenciers pour le Forum PHP 2008.

Pour cet évènement unique en France, nous recherchons les experts francophones...

Mai 2008 – Hello Design: Forum PHP 2008

Pour rappel l'appel à conférenciers pour le forum PHP 2008 est en cours, n'hésitez pas à envoyer vos propositions de sessions !

http://afup.org/pages/forumphp2008/appel-a-conferenciers.php

Mai 2008 – Hello Design: Interview du Trésorier de l'AFUP

PHP Solution dans le numéro 03/2008 qui vient de paraître, propose une interview du Trésorier de l'AFUP "Christophe Villeneuve".

Il a répondu à certains nombres de questions qui ont été posé par la rédaction du magazine. Par ailleurs, il fut aussi interroger sur son ouvrage : Construisez votre application "PHP & MySQL - MySQLi - PDO" édité par les éditions ENI.

A numéro à découvrir

Mai 2008 – Rom's blog: PHP5.2.6 et MySQL 5.0.51b pour WampServer2

Tout est dans le titre :

Sous forme d’addons (si vous avez déjà installé WampServer 2.0) :

http://www.wampserver.com/addons_php.php
http://www.wampserver.com/addons_mysql.php

Sous forme de package complet :
http://www.wampserver.com/download.php

Mai 2008 – Nexen.net: Elections PEAR 2008

Image pour le titre du contenu
"C'est le moment de l'année où le groupe PEAR lance les nominations PEAR. Les personnes nominées seront soumises aux votes de la communauté et 7 heureux désignés seront élus pour être le nouveau Group PEAR 2008-2009."
Le groupe PEAR fonctionne avec un bureau de 7 personnes, élues pour un an. Vous pouvez être élu dans ce groupe, et prendre les décisions importantes pour l'avenir de la bibliothèque PEAR. Avec tous les contributeurs francophones, cela serait bien d'en avoir un dans ce bureau! Arnaud Limbourg et David Coallier (auteur ci-dessous), y était l'an dernier.

Mai 2008 – Nexen.net: Statistiques PHP pour avril 2008

Image pour le titre du contenu
De bonnes nouvelles sur le front des versions PHP : avec la publication début mai de PHP 5.2.6, PHP 5.2.5 a eu le temps d'asseoir définitivement sa suprématie : c'est aujourd'hui la version la plus populaire de PHP, devant PHP 4.4.7 et 4.4.8. Malheureusement pour les versions 5, c'est la seule version qui se classe si bien, et cela laisse encore une majorité de PHP 4.
PHP 5 atteint maintenant 36,60% de parts de marché, ce qui est une progression de 2% ce mois-ci. Et encore beaucoup de migrations vers les versions sécuritaires de PHP, la 4.4.8 (relativement) et 5.2.5.
On verra les performances que vont présenter la version 5.2.6 ce mois-ci, et son impact sur le classement de la 5.2.5. À vos compilateurs, et n'oubliez pas le test fest du mois.

Mai 2008 – Nexen.net: La qualité du code à la nasa

Image pour le titre du contenu
Si les bugs font partie de la vie et du quotidien des applications Web, imaginez les conséquences que cela pourrait avoir dans une navette spatial. Fast Company relate l'organisation de l'équipe de 230 personnes qui gère les logiciels pour le lancement de la navette américaine, un pétard de 120 tonnes.
Les équipes sont divisées en 2 : l'une code, et l'autre cherche les bugs. En fait, c'est cette rivalité entre les deux groupes qui est recherché : au final, les développeurs passent plus de temps à relire leur code pour éviter de se faire signaler un problème. Et ils travaillent directement à rechercher la cause des problèmes, et non pas à masquer leurs erreurs.
C'est trop souvent ce niveau de tests qui est sacrifié en premier dans les missions actuelles. Au final, plus de bugs passent directement en production. Mais est-il toujours facile de trouver quelqu'un pour surveiller son activité? C'est un peu masochiste, non?

Mai 2008 – Nexen.net: Pluf, traductions, gettext et autres pépites

Image pour le titre du contenu
Loïc d'Anterroches publie un billet anodin, mais plein de petites pépites.

  • Il existe une implémentation gettext en PHP, disponible dans le code de pluf. C'est pratique si votre PHP n'est pas compilé avec cette extension. Reste à voir si on peut extrire facilement cette bibliothèque du framework Pluf

  • Pluf est un framework PHP 5, avec template, ORM et 2 ans de maturité.

  • Poedit est un éditeur de fichiers .po, pour gettext. Cela peut se révéler pratique pour utiliser gettext, et comparer la version originale et la traduction.

  • Si vous voulez profiter des caches de code PHP, il faut que toute votre application soit en PHP : y compris les fichiers de ressources (configuration, traductions, fichiers statiques). En effet, les caches ne prennent en compte que les scripts PHP, et pas les autres média. Il faut donc veiller à faire une conversion en PHP pour gagner en performances sur ce plan-la.

Mai 2008 – Hello Design: Le nouveau sport des elePHPants

Avec le beau temps qui est présent, le soleil au rendez-vous, nos amis "Les ElePHPants PHP" ont voulus montrer leurs pleines formes...

ils ont décidés d'effectuer un nouveau sport...

 

UNE PYRAMIDE en 3 Dimensions (3D)

 

Le pari était de réaliser une pyramide en 3D avec un maxium d'éléPHPants... Et ils ont réaliser l'exploit avec 39 ElePHPants.

 

ils ont commencés par une structure solide

 


 

et un deuxieme niveau de renfort

 

Mai 2008 – z-f.fr: Hebergements 'certifiés' ZF

Forum: Brèves
Auteur: Julien
Écrit le: Tue, 06 May 2008 22:10:52 +0200
Dernier message: Tue, 06 May 2008 22:10:52 +0200

Mai 2008 – Nexen.net: Réplication retardée

Image pour le titre du contenu
Lorsque la réplication retarde de 3 secondes, cela a un impact sur la cohérence d'un serveur Web. Mais alors, quel est le fou qui veut pouvoir configurer 30 minutes de retard sur une réplication?
En fait, la réplication permet de protéger un serveur contre les crash : si le serveur maître plante, l'esclave dispose déjà des commandes nécessaires pour proposer une sauvegarde de secours, jusqu'au moment du crash. Mais si c'est une erreur d'administration, où la commande DROP TABLE n'est pas munie d'une condition WHERE, alors votre bévue sera immédiatement répercutée sur l'esclave et donc, la sauvegarde. La réplication protège contre les crash, mais pas contre les bourdes.
La réplication retardée, de 30 minutes par défaut, peut vous aider dans ce genre de situations.

Mai 2008 – Nexen.net: BLOB Streaming : bientôt sur votre PHP

Image pour le titre du contenu
Blob streaming est une fonctionnalité du moteur MySQL PBXT de primebase qui va révolutionner l'utilisation des blob : désormais, le contenu des blobs est stocké directement dans le système de fichiers, et la lecture de ces blob se fait directement vers le client, sans passer par le moteur MySQL, ni le moteur de table. Au lieu de lire le blob dans le fichier de données, le charger en mémoire, puis l'envoyer à PHP, qui lui-même, alloue la mémoire pour le stocker temporairement, puis l'envoie au navigateur, c'est un raccourci qui est utilisé : le contenu est géré dans la table (ses metadonnées), mais stocké sur le système de fichiers, et accessible directement. Au passage, le stockage d'images en base de données devient raisonnable en termes de performances.
PrimeBase a 2 projets Google cette année, : une extension PHP et le support dans phpMyAdmin. Espérons que cela arrive rapidement!

Mai 2008 – Nexen.net: 35 éditeurs pour le Web

Image pour le titre du contenu
SmashingMagazine compare 35 éditeurs Web, qui gère souvent PHP en plus du code HTML et CSS. Si vous êtes fatigués de votre éditeur actuel, jetez un oeil à cette liste pour découvrir un nouveau meilleur ami. Parmi les perles :

  • SubEthaEdit, qui permet le travail collaboratif sur le même document

  • Komodo, avec ses assistants CSS, DOM et Ajax

  • BBedit, mon préféré

  • VIM, bien sûr, vim.

Mai 2008 – Nexen.net: Vidéo PHP et MySQL, édition 44

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Mai 2008 – Nexen.net: Drupal, bootstrap et les inclusions dynamiques

Image pour le titre du contenu
Larry Garfield présente le nouveau gestionnaire d'inclusion de Drupal. Ce dernier, en version 6, représentait 50% du temps d'exécution d'un script Drupal : en bref, à chaque appel de page, Drupal passait la moitié du temps à inclure des bibliothèques, et l'autre moitié à s'exécuter.
Pour gagner en exécution, Larry a monté un gestionnaire dynamique : il analyse le code source des scripts PHP inclus, puis détermine les fichiers nécessaires pour exécuter cette page, en extrayant les fonctions. Puis, un cache d'inclusion est réalisé pour gagner du temps. Cela revient à un __autoload(), avec un peu plus d'intelligence.
Le démarrage d'un script est certainement l'un des endroits d'une application où il y a le plus à gagner. Jusqu'à présent, on incluait tout ce qu'il était possible d'inclure pour ne pas manquer de fonctions lorsque le temps viendrait de les utiliser. Mais cela revient à cuire un gateau complet, et n'en manger qu'une petite portion : le reste est gaspillé.
Avez-vous d'autres stratégies pour réduire vos phases de lancements de scripts?

Mai 2008 – Apprendre-PHP.com: Afficher le gravatar en fonction d'un e-mail

Ce script permet d'afficher le gravatar associé à une adresse e-mail. Un gravatar est un petite image vous représentant et qui est affichée au côtés des commentaires que vous déposez sur des blogs par exemple. Bien entendu, l'avatar n'est affiché que si l'utilisateur est inscrit au site Gravatar.com et qu'il a uploadé son gravatar sur ce site. Dans le cas contraire, un gravatar par défaut sera affiché à la place.

Mai 2008 – Prendre un Café: No, really, symfony doesn't scale!

Well, err... Really?


Ce billet intitulé No, really, symfony doesn't scale! a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Mai 2008 – Nexen.net: SearchMonkey arrive

Image pour le titre du contenu
Search Monkey est le dernier service que lance Yahoo! sur le Web. C'est un outil à plusieurs facettes : le premier est qu'il donne aux développeurs la possibilité de personnaliser la présentation des résultats de recherche. La deuxième est qu'il utilise les micro-formats, pour chercher des informations complémentaires et utiles à la recherche. Rasmus montre l'exemple avec des restaurants, où sont affichés l'adresse, mais aussi des liens de réservation.
Le dernier point est que SearchMonkey s'écrit en PHP. :)

Mai 2008 – Nexen.net: Actualité de développement PECL, edition 199

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :

  • en imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick

  • en mcve (0 visite) : interface libmcve

  • en spread (0 visite) : Interface PHP pour Spread

  • en fam (0 visite) : Fonctions de surveillance des modifications de fichiers


PECL est la bibliothèque d'extensions C de PHP.

 



 

Mai 2008 – Nexen.net: Gestion des changements avec MySQL Workbench

Image pour le titre du contenu
"Vous pensiez peut-être que la conception était la seule mission que MySQL Workbench pouvait remplir, et c'est certainement le coeur de son travail. Mais une des raisons qui font que j'utilise un assistant de modélisation aussi souvent n'est pas dans ses capacités à produire des liens logiques, mais pour ce qu'il peut faire pour moi dans le cadre des évolutions de versions. MySQL Workbench contient un grand nombre de contrôle de changements que vous n'aviez peut-être pas repéré à première vue, alors laissez moi vous montrer comment il peut gérer les altérations de votre modèle de données."

Mai 2008 – PHP News: Concours Appli’Challenge Altran

Je participe actuellement en duo au concours Appli’Challenge organisé par le groupe Altran

Le principe de ce concours est de proposer la meilleure idée d’application, la développer puis la promouvoir sur Facebook (plus d’infos sur le groupe Facebook concernant le concours)

Pour les lauréats, les prix sont les suivants, du premier au troisième :

  • un MacBook Air (deux si en duo)
  • un iPod Touch (deux si en duo)
  • un iPod Nano (deux si en duo)

Les inscriptions se sont terminées au 5 mai. Voiçi les prochaines dates importantes :

  • 19 mai 2008 : Arrêt des statistiques des téléchargements des applications
  • 27 mai 2008 : Publication de la liste des 10 meilleures applications
  • 29 mai 2008 : Remise des prix au siège d’Altran à Levallois-Perret

C’est une très bonne initiative qui peut motiver à découvrir l’API Facebook (disponible officiellement en PHP4/5) et les particularité du développement sur cette plateforme.

Je participe donc en duo avec un ami designer. Nous avons développé une application en PHP5, FBML et FBJS (mode canvas pour les connaisseurs) qui connait depuis son lancement récent un succès plutôt encourageant.

En dehors du concours, nous avons bon espoir que celle-ci soit à moyen terme un des succès d’applications locales présente sur Facebook (nous visons actuellement avec cette application uniquement la communauté française)

Rendez-vous le 27 mai pour les résultats, et peut être le 29 pour les photos de mon nouveau portable ! ;)

Mai 2008 – tigrou/pwet.fr: Les nouveautés de PHP6

Vu sur l'IBM Developer Works un court et synthétique article sur les nouveautés attendues dans PHP6 , encore plus en bref :

Il est dommage que ce passage ne soit pas l'occasion de refondre l'API pour y apporter une cohérence regrettée ...

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 201

Image pour le titre du contenu
17 paquets ont été mis à jour cette semaine :

PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 201

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Joomla, e107 et ming



Mai 2008 – Nexen.net: Myriades de proxy pour MySQL

Image pour le titre du contenu
Brian Aker a cessé de compter le nombre de proxy pour MySQL qu'il a repéré : il y a SQL Relay, qui remonte à quelques années, MySQL Proxy, de Jan Kneschke. En fait, il y en a encore 4 autres différents. Lequel est le meilleur, se demande Brian?

Mai 2008 – Nexen.net: Le meilleur du mois d'Avril 2008

Image pour le titre du contenu

Mai 2008 – Nexen.net: Le Futur de PHP 6

Image pour le titre du contenu
Le site IBM effectue un petit point concernant les différentes nouveautés qui sont attendues pour PHP 6 sous la forme de petits exemples :
- Support de l'unicode
- Ajout des Namespaces
- Les activations des modules SOAP, XMLwriter, XMLreader
- Suppression des options de configuration :
  •  magic_quotes
  •  register_globals
  •  register_long_array
  •  safe_mode
- Suppression du support de :
  • Freetype1
  • GD1
  •  Fonctions liées aux expressions rationnelles POSIX

Mai 2008 – PHP News: Le passé, le présent et l’avenir de PHP

Aujourd’hui encore, PHP est de loin un langage de choix dans le développement web.

Cependant, celui-ci n’a pas évolué en profondeur depuis de nombreuses versions, et de nouveaux arrivants, tel que le framework Ruby on Rails (langage Ruby) ou encore le langage Python (qui n’a pourtant pas été conçu à l’origine pour le web) voient leur popularité croître de plus en plus.

Dernier exemple en date, la plateforme d’hébergement et de développement RoR heroku.com a levé $3 millions d’un fond d’investissement, Redpoint Ventures il y a de cela quelques jours (consultez l’article techcrunch à ce sujet).

Ces nouveaux arrivants sont objectivement bien plus structurés en interne que PHP, qui se traîne entre autres depuis des années son système de nommage de fonctions anarchique :

(Plus de détails sur cet article de PHP Index : Et si PHP était audité demain ?)

Mais PHP, c’est aussi des aspects de fonctionnement qui ont été souvent au centre de nombreuses polémiques, avec parmi ces bad practices :

  • magic_quotes, ou l’échappement automatique des caractères, créant de nombreux problèmes de portabilité d’une configuration à l’autre, de performance et de compréhension du code.
  • register_global, désactivée par défaut depuis PHP 4.2. Les trous de sécurité créés par certains développeurs utilisant cette option ne compensait pas la fausse facilité de programmation qui semblait offerte.

PHP5, c’est encore des lacunes dans le traitement des chaînes de caractères multi-octets. Les fonctions internes de PHP4 ou 5 ne sont pas capables de traiter des chaînes multi-octets (en UTF8 par exemple), il faut passer par des extensions tels que mb_string, et utiliser les fonctions correspondantes : mb_strlen, mb_strpos, mb_strtolower … Sans cela, des problèmes importants sont à craindre. Exemple simple :

  • echo strlen(utf8_encode(’ééé’)); –> 6
  • echo mb_strlen(utf8_encode(’ééé’));–> 3

Sur l’internet de nos jours, les vrais projets se font dans une perspective multi-langues. Le jeu de caractère généralement choisi est l’UTF8, et il est alors nécessaire de respecter une chaîne d’encodage identique de la source vers la destination. Il faut alors être rigoureux, connaitre les good practices afin d’éviter les erreurs :

  • La vérification des chaînes de caractères doit utiliser les fonctions mb_* ou utiliser des fonctions telles que utf8_encode ou ut8_decode, ce qui ne facilitent pas forcément le code et sa performance.
  • Le type d’encodage doit être respecté entre le format d’entrée, le format de sortie, l’écriture des fichiers PHP, eux même en UTF8 si ils contiennent des chaînes destinées à être affichées. Sinon il ne faut pas oublier de passer tous textes destinés à être affichés par utf8_encode, mais en contrepartie d’un traitement supplémentaire qui aurait pu être économisé
  • De même, la liaison à une éventuelle base de donnée doit se faire dans le jeu de caractères utilisé “nativement” (en MySQL, le très pratique SET NAMES ‘UTF8′ en début de connexion par exemple).

Bref, vous l’aurez compris, savoir bien développer aujourd’hui en PHP n’est plus aussi facile que dans l’internet d’il y a 5 ans, où les sites développés n’ont jamais été aussi complexes que maintenant. Les contraintes de développement des projets du web 2 imposent un ensemble de good practices qu’il est nécessaire de maitriser.

Le PHP est t’il devenu inadapté et dépassé ?

PHP6

En développement depuis au moins 2 ans, la version finale n’est toujours pas disponible mais ça arrive. Le planning de développement est fixé, et les nouveautés sont là (je vous invite à lire cet article paru sur l’IBM Developper Works il y a quelques jours).

Quelles sont donc ces avancées ?

  • Un bon nettoyage pour tuer définitivement les bad practices rémanente chez certains. On peut donc dire adieu sans regrets aux fonctions découlant de l’activation des magic_quotes, register_globals, et autres register_long_arrays.
  • Ensuite, un support natif de l’unicode. Ca tient sur une ligne dans le changelog, mais c’est probablement la partie qui a été la plus consommatrice de temps, car il a fallut réécrire tout le moteur Zend. Résultat : on pourra utiliser les fonctions classique strlen, substr, strpos … avec des chaînes formatées en UTF-8. Adieu donc les extensions iconv et mb_string qu’il fallait se trainer ou alors le switch entre utf8_decode/encode.
  • Fin de la dualité entre les expressions régulières POSIX (ereg*) et PCRE (preg_*). Tant mieux, les PCRE étant plus complètes et performantes.

Mais finalement, que reste t’il de nouveau pour les bons développeurs respectant déjà les bonnes pratiques et n’étant quasiment pas concernés par tout ces changements ?

Pas grand chose, hormis les namespaces, qui vont être aussi portés en PHP 5.3, donc ne sont plus vraiment un privilège de PHP6 ;o.

On n’aura malheureusement pas encore droit à une meilleure consistance dans le système de nommages des fonctions internes. Je pense qu’il aurait été judicieux dans PHP6 de revoir toutes ces incohérences, quitte à attendre plus longtemps, car PHP6 est résolument une version introduisant de nouvelles fondations bien plus propres et solides, et ça fait un peu tâche de se traîner ce système anarchique.

La question finale sera concernant l’adoption de PHP6 chez les hébergeurs mutualisés. Beaucoup trop sont toujours en PHP4, alors que sa fin a sonné.

PHP6 est une version importante qui va sans aucun doute améliorer la qualité et la sécurité du code pour beaucoup, ainsi qu’offrir de nouvelles performances.

Mais combien de temps avant que PHP6 ne soit réellement adopté ?

Graphique nexen.net


Mai 2008 – Rom's blog: Tutoriel Video sur WampServer

Merci à Damien (http://www.nexen.net) pour ce lien :

http://www.dailymotion.com/search/MySQL/video/x5d2ka_tutoriel-video-wamp_creation?from=rss

Mai 2008 – Nexen.net: Sessions Javascript : 2 Mo dans le titre de la page

Image pour le titre du contenu
Thomas Frank a découvert un truc très pratique pour mettre en place des sessions Javascript. Ces sessions sont les mêmes que PHP, mais restent du coté du navigateur : cela permet de laisser des valeurs privées du coté du client, et d'éviter de les voir se balader sur le réseau.
Son astuce : prendre le champ de titre top.name, qui est généralement inusité par les navigateurs, pour stocker des informations. Cela permet de dépasser la limite de 4 x 20 ko des cookies, puisque ce champ n'a pas de limite (semble-t-il).
Autre avantage : ce champ reste valable durant la vie de la page. Aucun stockage sur le disque, et un nettoyage discret.
En termes de sécurité, ce petit script peut être redoutable : si les données sont valables durant la vie de la page, cela devient un vecteur pour transmettre des informations d'un domaine à l'autre : cela devient un buffer pour stocker une foule d'information (historique, log de clavier, etc), qu'il suffit de récupérer en fin de navigation. brr....

Mai 2008 – Nexen.net: Procédures stockées : langage externe, mais pas encore PHP

Image pour le titre du contenu
Lorsque MySQL envisageait d'avoir des procédures stockées, la rumeur circulait que PHP pourrait être le langage adopté. Ce ne fut pas le cas, mais l'idée de pouvoir utiliser n'importe quel langage de programmation comme procédure stockée est restée. Résultat : c'est fait.
Il existe un plug-in MySQL udfng qui accepte du code en C, Java, LegacyUDF (vieilles UDF), Perl et XML-RPC. Eric Herman et Antony Curtis cherchent d'ailleurs les prochaines plates-formes à ajouter. PHP! PHP!

Mai 2008 – Nexen.net: PHP en mode interactif et les tests unitaires

Image pour le titre du contenu
L'option -a de PHP-CLI (en ligne de commande), active le mode interactif de PHP. C'est un mode où les instructions seront exécutées au fur et à mesure que vous les tapez.
 
 
$ php -a
 
Interactive mode enabled
 
 
 
html
 
<?php
 
html
 
echo phpversion();
 
5.2.6?>
 

Notez que c'est difficile à comprendre sur l'exemple ci-dessus : PHP commence par produire les deux premières lignes. Puis, j'ai tapé html, qui est affiché une deuxième fois plus bas, quand PHP décide d'exécuter le code HTML initial. En effet, le mode interactif se comporte comme PHP, et affiche directement le texte qui n'est pas dans une balise.
Ensuite, je met des commandes complètes (ici, PHPversion()), qui est affichée immédiatement après. Au final, je ferme la balise.
Ce mode est pratique si vous voulez tester une fonction ou un bout de code PHP. En en discutant avec Chris Hartjes (si vous avez l'occasion, allez le voir en conférence), ce mode est très pratique pour mettre en place les tests unitaires : il l'a fait pour cakePHP.
Imaginez, vous avez programmé une fonction (ou une classe, ou une bibliothèque, etc). Pour la vérifier, vous l'exécutez avec le mode interactif, et vous vérifiez manuellement que tout se passe bien. Par exemple, avec une fonction qui teste si un nombre est premier (retourne 0 si oui, et un facteur sinon), on pourrait avoir ceci :
 
 
<?php
 
include('prime.php');
 
print is_prime(4);
 
4
 
print is_prime(7);
 
0
 
print is_prime(13);
 
0
 
print is_prime(49);
 
0
 
?>
 

Je viens de tester 4 valeurs, et j'ai identifié un bug (49). Idéalement, je vais retourner dans mon code, le corriger. Mais cette liste de tests manuels pourrait (devrait) être gardée pour être rejouée la prochaine fois! Pourquoi ne pourrait-elle pas être enregistrée, pour que je gagne du temps plus tard? Et pour être publié avec mon code, dans un format plus standard (phpunit, simpletest)? On aurait ainsi une méthode simple pour capter des tests unitaires, et capitaliser sur cette masse immense de tests manuels, qui sont perdus après chaque exécution.

Mai 2008 – Nexen.net: Un demi-million de forum PHPBB piratés

Image pour le titre du contenu
Une nouvelle attaque en ligne a profité de mauvaises configurations des forums phpBB : les sites compromis effectuent alors une série de redirections, pour finir sur des sites qui tentent différentes attaques sur Internet Explorer ou RealNetworks RealPlayer media player. phpBB est fréquemment inclus dans les campagnes de scan de masse, et, malheureusement, il semble que des sites piratés l'an dernier aient aussi eu des problèmes cette année encore.
Et avec php dans le nom, c'est encore de la mauvaise publicité pour la plate-forme.

Mai 2008 – Nexen.net: Les SSD (Solid-State Drive) : une technologie d’avenir pour nos SGBD ?

Image pour le titre du contenu
"Outre ces mécanismes [NDJ : indexation et caches], la technologie SSD pourrait bien à lavenir changer la donne.
Les SSD, littéralement Solid-State Drives (ou Disk par abus de langage), ne sont pas des disques mais des unités de stockage constituées de mémoire flash (persistante).
Au vu des benchmarks les concernant, il ya fort à parier que les SSD seront de plus en plus dactualité dans les mois qui viennent."

Mai 2008 – Nexen.net: MySQL et les vues matérialisées

Image pour le titre du contenu
Les vues matérialisées sont des vues SQL, qui sont stockées physiquement par la base. Les vues actuelles sont des vues dynamiques, c'est à dire qu'elles se basent sur une exécution de la requête sous-jacente à chaque utilisation. Si les données des tables ne changent pas trop souvent, avoir un système de cache donne une belle accélération.
Les vues matérialisées sont disponibles chez Oracle et DB2. Pour MySQL, rien de standard, mais il doit être possible de s'en sortir avec des tables en mémoire, et le programmateur d'événements.

Mai 2008 – PHP Québec: codeFest PHP Québec 2.1 : Optimiser & Tester les logiciels libres

L'équipe de PHP Québec est fier de vous invitez au codeFest 2.1 qui aura lieu le 16-18 Mai 2008 à Montréal & Sherbrooke.
Le codeFest est une bonne opportunité pour rencontrer d'autres membres de la communauté OpenSource de PHP, Python, Ruby, Java et échanger sur divers techniques de développement.

Nous invitons les développeurs Juniors & Senior à ce joindre à nous pour deux jours d'optimisation & d'écriture de test unitaire pour votre projet OpenSource préféré.

Les projets proposés sont:
* MediaWiki
* Drupal
* WordPress
* TikiWiki CMS/Groupware
* BeWelcome
* Habari
* Anne G. wikigraphe
* PHP Quebec Employment section
* Votre projet (contactez nous, contact@codefest.com)

Les objectif du codeFest sont:
* Écrire des tests unitaires afin d'augmenter la qualité des applications OpenSource
* Optimiser les applications proposé

Nous sommes présentement à la recherche de:
* 1-2 commanditaires afin de fournir la nourriture et consommations (500$) contacter ylarrivee@phpquebec.com
* Une personne pour prendre en charge le développement sur Drupal
* Une personne pour prendre en charge le développement sur Typo3
* Une personne pour prendre en charge le développement sur WordPress

Date & Lieu:

À Montréal
Vendredi 16 19:00-22:00 (social)
Samedi 17 9:00-18:00 (codeFest)
Dimanche 18 9:00-18:00 (codeFest)
Lieu : Pub sans génie @ École de technologie supérieure
Address: 530, rue Peel (corner Notre-Dame Ouest), Montréal
Metro: Bonaventure
Map : http://tinyurl.com/5pjwwn

À Sherbrooke:
Date : 16-18 Mai 2008
Heure : 9:00am-6:00pm
Lieu : 975-3, rue Perry, Sherbrooke, Qc
Map : http://tinyurl.com/4vt8wx
Voir : http://blog.autre-chose.org/2008/05/11/troisieme-codefest/

Confirmez votre présence sur:
* On UpComing : http://upcoming.yahoo.com/event/319522/
* On Facebook http://www.facebook.com/event.php?eid=6086277831

================================================
The PHP Quebec team is pleased to invite you to the codeFest PHP Quebec 2.1 that will be held in Montreal & Sherbrooke on May16th-18th 2008.

The codeFest is a great opportunity to meet with peers PHP, Python, Ruby, Java developers and share knowledge and participate in the development of OpenSource software.

Senior & Junior developers from the PHP, Python, Ruby, Java community are invited to join us for 2 days of optimization & Unit Testing of your favorite OpenSource project.

Proposed Projects in 2.1:
* MediaWiki
* Drupal
* WordPress
* TikiWiki CMS/Groupware
* BeWelcome
* Habari
* Anne G. wikigraphe
* PHP Quebec Employment section
* Your project! (Contact us contact@codefest.wscontact at codefest.ws

Goal:

* Improve the performance of OpenSource projects
* Improve code quality of OpenSource projects by writing UnitTest

We are currently looking for:
* 1-2 Sponsor to help cover expenses such has food and drinks (500$) contact ylarrivee@phpquebec.com
* Project leader for Drupal
* Project leader for WordPress
* Project leader for Typo3

In Montreal
Date & Time
Friday 16th 19:00-22:00 (social/casual/unofficial warm-up)
Saturday 17th 9:00-18:00 (codeFest)
Sunday 18th 9:00-18:00 (codeFest)
Location : Pub sans génie @ École de technologie supérieure
Address: 530, rue Peel (corner Notre-Dame Ouest), Montréal
Metro: Bonaventure
Map : http://tinyurl.com/5pjwwn

In Sherbrooke:
Date : May 16th-18th 2008
Time : 9:00am-6:00pm
Location : 975-3, rue Perry, Sherbrooke, Qc
Metro : N/A
Map : http://tinyurl.com/4vt8wx
See : http://blog.autre-chose.org/2008/05/11/troisieme-codefest/

Also on:

* On UpComing : http://upcoming.yahoo.com/event/319522/
* On Facebook http://www.facebook.com/event.php?eid=6086277831

Mai 2008 – Nexen.net: Limites des requêtes SQL préparées

Image pour le titre du contenu
Les requêtes SQL préparées, aussi appelées commandes préparées, sont la panacée actuelle contre les injections SQL. Mais elles viennent avec un coût de performance assez important, un allongement du code PHP, et aussi, moins d'optimisation d'exécution. En effet, le plan d'exécution de la requête est calculé avant que les données ne soient connues, et cela empêche l'optimisateur d'utiliser certains index.
Lukas Smith propose alors de passer à l'émulation de commandes préparées, via PDO, pour avoir un système qui sépare l'exécution de l'analyse, mais en laissant la base de données traiter des requêtes complètes.

Mai 2008 – Nexen.net: Effacement avec jointure et limite

Image pour le titre du contenu
MySQL permet de faire des effacements multi-tables : un effacement à jointure, si vous voulez. Mais cette fonctionnalité si pratique ne supporte pas la clause LIMIT, que JOIN et DELETE supportent séparément. Justin Swanhart vous propose alors une solution de remplacement, basée sur des variables de session.

Mai 2008 – PHP Index: Nouvelle édition des webinars de Zend Technologies axés PHP

3 nouveaux rendez-vous Webinar sont organisés pour le mois de Mai :

WEBINAR : "Créez et déboguez vos applications PHP avec Zend Studio for Eclipse"

Jeudi 22 mai 2008 – 14h30 : Votre ordinateur - via Webex

Zend Studio for Eclipse est notre IDE PHP de nouvelle génération basé sur Zend Studio "Classique" et l'environnement Eclipse. Studio possède de nombreuses nouvelles fonctionnalités telles que le Code coverage, le test unitaire, le profiling...
L'objectif de ce webinar est de mettre en rapport les fonctionnalités de Studio for Eclipse avec les problématiques quotidiennes de développement.
Nous vous montrerons donc comment créer et déboguer une application PHP en utilisant les outils Zend Studio for Eclipse.
Nous aborderons de manière pratique la gestion de projets, les fonctionnalités de base (édition, complétion, templates), les fonctionnalités avancées (génération de code, débogage, profiling, test unitaire).
Notre expert répondra à l'ensemble de vos questions tout au long de cette présentation.

Durée : 50 minutes
Public : développeurs, chefs de projet...
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=578382773

--------------------------------------------------------------------


Webinar : "Migration PHP4 vers PHP5, quels enjeux et problématiques ?"

Mardi 20 mai 2008 – 14h30 : Votre ordinateur - via Webex

Le PHP Group annoncé la fin du support de PHP4 par la communauté le 8 août 2008. Cet arrêt impose aux entreprises qui possèdent des serveurs PHP4 de considérer la problématique d'une migration vers PHP5 non seulement de vos serveurs, mais aussi de vos applications.
Pourquoi envisager la migration, même celle d'un système fonctionnel ?
Quels sont les avantages de PHP 5 par rapport à PHP 4 ?
Quels sont les risques ?
Quel est le processus de migration ?
C'est aussi l’occasion de poser toutes vos questions à un expert Zend en direct.

Durée : 40 minutes environ
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies
https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=575744185

---------------------------------------------------------------------


WEBINAR : "Optimisez et supervisez vos applications PHP avec Zend Platform"

Mardi 27 mai 2008 – 14h30 : Votre ordinateur - via Webex

Durant cette présentation, vous découvrirez comment la Zend Platform vous permet d'accélérer vos développements et réduire vos coûts de maintenance grâce à un système de supervision complet de vos applications. Lors d'une phase de démonstration, un consultant vous montrera comment il est possible de déboguer d'un clic un incident passé, et enregistré par la Platform, directement en mode débogage pas-à-pas. Seront également présentées les fonctionnalités d'amélioration de performances au travers de différents mécanismes de cache.

Durée : 50 minutes / 1 heure (dont Questions/réponses)
Public : développeurs, administrateurs, responsables informatiques
Intervenant : Gauthier Delamarre, Consultant Zend Technologies

https://zend.webex.com/zend-fr/onstage/g.php?t=a&d=570899126

Proposé par Hello

Mai 2008 – PHP Index: Frameworks PHP pour l'entreprise : un livre blanc

Clever Age a publié récemment un livre blanc au sujet des frameworks PHP pour l'entreprise.

Le document présente les différents aspects de l'évaluation d'un framework : aspects techniques, évidemment, mais également aspects fonctionnels et stratégiques. Quatre frameworks, parmi les plus populaires, ont été passés au crible : Cake PHP, Code Igniter, Symfony et le Zend Framework.

Chacun d'entre eux a été analysé suivant la méthode QSOS, et le résultat de l'étude est résumé sous la forme de graphiques radar.

Ce livre blanc est disponible gratuitement, sur simple demande.

Proposé par Xavier Lacot

Mai 2008 – Nexen.net: Construction de Web services avec PHP in Eclipse

Image pour le titre du contenu
"Apprenez à construire des services Web avec PHP, en utilisant les outils PHP Development Tools de Eclipse Europa. Familiarisez vous avec le projet PDT, et apprenez à créer et déployer des projets PHP utiles, apprenez la philosophie de développement du 'contrat en premier', et assimilez les bases d'un fichier Web Services Description Language (WSDL)".
Un tutoriel IBM.

Mai 2008 – Nexen.net: Votre domaine, avec ou sans www?

Image pour le titre du contenu
C'est la mode d'abandonner le 'www' dans le nom de domaine, et de faire son lancement sans lui. Kevin Yank fait le point sur cette mode actuelle, notamment auprès des populations techniques.
Je lui trouve un inconvénient important : en sécurité, les cookies sont limités à un domaine, et avoir 'nexen.net' comme domaine d'application signifie en fait que n'importe quel sous-domaine est aussi valable. Alors qu'un cookie pour www.nexen.net, ne sera pas valable sur ftp.nexen.net ou mail.nexen.net. Evidemment, cela ne sera pas forcément utile à tout le monde.

Mai 2008 – Nexen.net: Schwartz : "MySQL est libre mais pas Open Source"

Image pour le titre du contenu
Baron Schwartz déclare que MySQL est un logiciel libre, mais pas Open Source. La base de données est libre grâce à sa licence GNU GPL, sans ambiguïté. Pour l'Open Source, c'est un constat : il n'est pas possible de contribuer à MySQL facilement, et le modèle de développement est fermé. Pas moyen d'envoyer un patch sans signer une lettre de Contributor Licence Agreement, qui donne la propriété du code à MySQL/SUN, et même quand c'est le cas, les patchs sont très longs à être acceptés.
La taille de l'entreprise et les enjeux exigent des protections supplémentaires du code source : il n'est certainement pas possible de gérer un projet de 15 ans comme un qui vient de démarrer. Mais il est dommage de constater que les contributions deviennent effectivement de plus en plus difficiles.

Mai 2008 – Nexen.net: Growl et PHP (et des doublons MySQL)

Image pour le titre du contenu
Tyler Hall, puis sitecrafting, ont écrit une classe qui s'interface avec Growl, le système d'alerte universel d'OSX. Growl fait apparaître un message discret et rapide sur le bureau du mac, et permet ainsi de diffuser des informations sans obstruction. Cette fonctionnalité est aussi ouverte au réseau : un autre serveur peut envoyer une alerte à une machine de bureau. C'est ce que PHP-Growl utilise pour envoyer ses messages.
Et sur le site de sitecraft, retrouver un article sur la chasse aux doublons dans MySQL.

Mai 2008 – Nexen.net: Vidéo PHP et MySQL, édition 45

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Mai 2008 – PHP Index: Typo3 : multiples bulletins de sécurité

Plusieurs extensions sont actuellement corrigées car sensibles entre autres aux Cross site scripting (XSS)

Extension WT Gallery (wt_gallery)

Versions concernées : 2.6.2 et versions précédentes.

Lors de l'upload d'une image, l'arborescence du serveur peut apparaître. Cette extension est également sensible aux XSS.
Télécharger la mise à jour

Extension Questionaire (pbsurvey)

Versions concernées : 1.2.0 et versions précédentes.

L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour

Extension Event Database (rlmp_eventdb)

Versions concernées : 1.1.1 et versions précédentes.

L'extension est sensible aux XSS et ne filtre pas les données javascript.
Télécharger la mise à jour

Extension Statistics (ke_stats)

Versions concernées : 0.1.2 et versions précédentes.

L'extension est sensible aux injections SQL et aux XSS.
Télécharger la mise à jour

Extension Frontend User Registration (sr_feuser_register)

Versions concernées : toutes

L'extension est sensible aux XSS et ne filtre pas les données javascript. De plus, l'exécution d'une commande à distance peut effacer certains fichiers du serveur.
Pour les utilisateurs des versions de Typo3 3.x : Télécharger cette mise à jour
Pour les utilisateurs des versions de Typo3 4.x : Télécharger cette mise à jour

Extension Frontend Filemanager (air_filemanager)

Versions concernées : 0.6.0 et versions précédentes

L'extension est sensible aux XSS et ne filtre pas les données javascript. Du code PHP peut également être inséré dans les pages.
Télécharger la mise à jour


Pour toutes les extensions citées ci-dessus, Typo3 conseille de suivre les recommandations données dans le livre de sécurité.
Lire la liste des bulletins de sécurité

Mai 2008 – Apprendre-PHP.com: Actualité PHP / MySQL en vrac

De nombreuses informations PHP / MySQL ont circulé ces derniers jours dans les aggrégateurs du Planète-PHP francophone et de Galaxie-PHP. On commence tout d'abord par le framework Symfony qui a subi beaucoup de chargement en l'espace de quelques jours. On note par exemple la sortie de la...

Mai 2008 – Nexen.net: Utilisations pratiques des vues

Image pour le titre du contenu
Les vues, qui permettent de déguiser une requête SELECT en une table, n'ont pas besoin d'être complexes pour être utiles : en fait, elles permettent simplement de configurer en permanence une extraction particulière des données dans une table. Par exemple, on peut s'en servir pour :

  • Ajouter ou retirer des colonnes

  • Retirer des colonnes

  • Formater des colonnes

  • Combiner des colonnes

  • Limiter les lignes affichées

Mai 2008 – Nexen.net: Actualité de développement PECL, edition 200

Image pour le titre du contenu
6 paquets ont été mis à jour cette semaine :

  • en APC (0 visite) : cache PHP alternatif

  • en imagick (0 visite) : interface avec la bibliothèque graphique ImageMagick

  • en mcve (0 visite) : interface libmcve

  • en oci8 (0 visite) : fonctions OCI8

  • en phar (0 visite) : support des fichiers d'archives PHP : .phar

  • en spread (0 visite) : Interface PHP pour Spread


PECL est la bibliothèque d'extensions C de PHP.

 



 

Mai 2008 – PHP Index: Faille symfony et mise à jour 1.0.16

L'équipe de symfony, le framework pour php5, vient de corriger une importante faille de sécurité.

Cette correction est l'unique changement entre cette version et la précédente, mais elle justifiait à elle seule la mise à jour. Vous trouverez plus d'informations à propos de la procédure l'exploitant sur le ticket #1617. Brièvement, avant la correction de cette brèche de sécurité, un attaquant pouvait outrepasser le processus de validation en changeant la casse d’un nom de fichier appelé.

Le patch de cette faille a provoqué quelques soubresauts du fait que l'auteur de la découverte l'avait faite remonter il y a plus d'un an.

Concernant la faille, tout le monde n'est pas forcément touché, il faut que votre application utilise :action comme paramètre de règle de routage, ce qui est le cas par défaut.
Pour le savoir, allez à l'emplacement "data/skeleton/app/app/config/" puis regardez dans le fichier "routing.yml".
Si vous trouvez la mention :
default:
url: /:module/:action/*
alors vous êtes affecté par cette faille et l'équipe de symfony vous encourage vivement à mettre à jour le plus rapidement votre version.

Pour la mise à jour :
- Si vous êtes en version 1.0 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8922, ou utiliser PEAR (pear upgrade symfony/symfony-1.0.16) ou bien encore le paquet Debian.
- Si vous êtes en version 1.1 : vous pouvez patcher directement le fichier sfExecutionFilter.class.php comme indiqué sur le changeset #8925.
Le patch sera inclus dans la version 1.1RC.

PS : Un peu hors sujet, mais restant sur les failles critiques, si vous utilisez SSH, que vous êtes sous Debian (ou ses dérivées) et que ce n'est pas déjà fait, pensez à mettre à jour aussi si vous ne voulez que l'on puisse prédire" vos clefs.

Proposé par Hourdeaux Christophe

Mai 2008 – PHPortail: codeFest 2.1 (16/05/08)

L'équipe de PHP Québec est fière de vous inviter au codeFest 2.1 qui aura lieu le 16-18 mai 2008 à Montréal & Sherbrooke.
Le codeFest est une bonne opportunité pour rencontrer d'autres membres...

Mai 2008 – PHPortail: Gestion des changements avec MySQL Workbench (16/05/08)

« Vous pensiez peut-être que la conception était la seule mission que MySQL Workbench pouvait remplir, et c'est certainement le coeur de son travail. Mais une des raisons qui font que j'utilise un...

Mai 2008 – PHPortail: Élections PEAR 2008 (16/05/08)

« C'est le moment de l'année où le groupe PEAR lance les nominations PEAR. Les personnes nominées seront soumises aux votes de la communauté et 7 heureux désignés seront élus pour être le...

Mai 2008 – PHPortail: Statistiques PHP pour avril 2008 (16/05/08)

Nexen.net vient de publier les statistiques PHP pour le mois d'avril

« De bonnes nouvelles sur le front des versions PHP : avec la publication début mai de PHP 5.2.6, PHP 5.2.5 a eu le temps...

Mai 2008 – PHPortail: Afficher le gravatar en fonction d'un e-mail (16/05/08)

« Ce script permet d'afficher le gravatar associé à une adresse e-mail. Un gravatar est un petite image vous représentant et qui est affichée au côtés des commentaires que vous déposez sur...

Mai 2008 – PHPortail: Publier vos trucs d'expert peut-il gêner vos affaires? (16/05/08)

Peter Zaitsev publie un blogue où il répond à une question brûlante : comment arrive-t-il à publier tous ses trucs d'expert MySQL et InnoDB, sans couper la branche sur laquelle il est...

Mai 2008 – PHPortail: 12 méthodes de défilement avec JavaScript (16/05/08)

C'est la mode des défilements, ces animations de site Web où le contenu glisse d'un point à l'autre, d'une page à l'autre, d'une image à l'autre sans rechargement. Cela donne une impression de...

Mai 2008 – Nexen.net: PHP-GTK 2.0.1

Image pour le titre du contenu
La nouvelle version de PHP-GTK 2.0.1 vient de sortir. Cette version devait pas sortir aussi tot, mais de nombreuses évolutions majeurs sont apparues :
- Soutien GtkBuilder
- Prise en charge du nouveau GTK + 2,12 bulles API
- Prévenir de segmentation lorsque clone est utilisé
- Divers corrections de bugs
- Support pour PHP 5,3 + caractéristiques
- Corrections de bugs

Mai 2008 – Nexen.net: Evenement en France : BarCaMP autour de PHP

Image pour le titre du contenu
AFUP (Association Française des Utilisateurs de PHP) lance son premier BarCamp exclusivement orienté autour de PHP. Ce Rendez-vous se déroulera le 7 juin 2008 sur Paris.
Ce rendez-vous de décomposera de "PhpCamp & TestFest" et sera une occasion rêvée de participer activement au développement du langage lui-même (à travers la TestFest), de présenter des sujets qui vous tiennent à coeur et de participer à des nombreux échanges.

Mai 2008 – Glagla.org: Frameworks php pour l’entreprise

Un peu de pub pour un livre blanc Clever Age auquel j’ai contribué. Les frameworks suivants sont abordés : CakePHP, CodeIgniter, Symfony, Zend Framewok. Avec en fin de chaque chapitre un court paragraphe indiquant dans quels cas métier utiliser ce framework et, en fin de document, un magnifique tableau QSOS permettant leur comparaison aisée. Article original publié [...]

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

Frameworks php pour l’entreprise

Mai 2008 – Hello Design: PDO prochainement ici

Le format PDO (Programming Data objet) se trouve un format que j'ai découvert en 2007 part différents conseils...  Cependant connaître le format, c'est bien, mais il faut en faire profiter la communauté PHP...

 Suite à la réalisation de mon ouvrage "PHP & MySQL-MySQLi-PDO, construisez votre application" aux Editions ENI et certaines personnes me sollicitent pour connâitre les autres projets touchant l'univers du PDO.

 Comme à mon habitude, j'ai souvent tendance à être en retard sur mes propres projets, mais ils prennent une voix.

Ces projets sont variés et différents :

- Application

- Tutoriaux

- Articles (dont 1 déjà planifié pour le prochain numéro de PHP Solution)

et beaucoup d'autres choses...

Donc patienté un tout peu, et vous pourrez découvrir et utiliser ce format sans probleme

 

 

 

Mai 2008 – Rom's blog: Premier PhpCamp & TestFest à La Cantine le 07 juin!

Voici la description officielle de l’AFUP :

Une première en France, un BarCamp exclusivement orienté autour de PHP. Une occasion rêvé de participer activement au développement du langage lui-même (à travers la TestFest), de présenter des sujets qui vous tiennent à coeur et de participer à des échanges nombreux.
Un BarCamp est avant tout une rencontre fruit du désir des uns et des autres de partager et d’apprendre : un évènement intense avec des démos, des présentations et de l’interaction entre participants.

La subtilité du PhpCamp tient juste au fait que PHP sera la techno de référence.

TestFest en cours au niveau mondial, on y parlera forcément des tests si nécessaires pour le bon fonctionnement du PHP Core. Pour le reste c’est tout ouvert : outils, techniques, astuces, Open Source, communautés… Tous les tags sont permis.

Infos pratiques :

- Date : 07/06/2008
- Horaire : 10h00 - 20h00
- Capacité : 80 places
- Tarif : gratuit
- Lieu : La Cantine
- Adresse : 151 rue Montmartre / Passage des Panoramas / 12 Galerie Montmartre / 75002 Paris
- Métro : “Grands Boulevards” et “Bourse”

Pour vous inscrire : http://www.afup.org/pages/rendezvous/?id=5

Mai 2008 – PHP News: MySQL 4/5 : Attention à la clause IN et les sous-requêtes

Un des éléments les plus déterminants de la performance d’un site web est sans conteste son interaction avec sa base de donnée. Il suffit en effet d’une seule requête mal conçue ou mal indexée pour qu’advienne une dégradation de performance parfois extrème (temps d’exécution de la requête en seconde), figeant l’affichage de la page pour votre visiteur, et mettant à genoux votre serveur.

De manière générale, vous devez faire très attention à vos requêtes SQL. Cela se traduit notamment par le placement d’index adéquats sur les champs utilisés dans les clauses “WHERE” et sur les pivots de jointures.

Je vous relate ici une mésaventure obtenue sur une requête qui à la base me semblait tout à fait normale.

Situation :

Nous avons les deux tables suivantes :


table_feeds (
`id_feed` int(10) unsigned NOT NULL auto_increment,
`id_user` bigint(20) unsigned NOT NULL,
`group_key` char(32) NOT NULL
PRIMARY KEY  (`id_feed`),
KEY `group_key` (`group_key`),
KEY `id_user` (`id_user`)

) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Cette table contient des actions (feed) d’utilisateurs donnés (id_user) qui ont été effectuées dans des groupes donnés (group_key)


table_assoc (
`id_user` bigint(20) unsigned NOT NULL,
`group_key` char(32) NOT NULL,
KEY `group_key` (`group_key`),
KEY `id_user` (`id_user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Cette table contient l’association des utilisateurs avec les groupes. Je ne détaille pas le pourquoi de la structure ici :)

Je souhaite récupérer les feeds de tous les groupes dans lequel se trouve l’utilisateur 10.

Je peux donc choisir (inutilement) de faire deux requêtes :

  • Récupérer les groupes dans lequel se trouve l’utilisateur 10

SELECT group_key FROM table_assoc WHERE id_user=10
  • Puis récupérer les “feeds” des groupes qui ont été retournés par ma première requête (ici les groupes ‘ABC …’, ‘DEF …’, ‘HIJ …’)

SELECT id_feed FROM table_feeds WHERE group_key IN('ABC ...', 'DEF ...', 'HIJ ...')

Ces deux requêtes ne posent aucun problème de performance car elles utilisent chacune un index.

Intéressons nous quand même plus précisemment à la deuxième requête :

Aucun soucis. La clause IN utilise l’index “group_key”, MySQL n’a besoin de parcourir que les 5 enregistrements existants pointés par cet index (à noter que la table table_feeds contient en tout 250k enregistrements)

Mais pourquoi effectuer deux requêtes dans ce cas ?

J’avais en effet directement effectué la requête suivante :


SELECT id_feed FROM table_feeds WHERE group_key IN(SELECT group_key FROM table_assoc WHERE id_user=10)

La table table_feeds ne contenait au départ que quelques enregistrements, je n’avais donc pas noté un problème de performance pouvant être causé à l’avenir par cette requête qui s’exécutait alors en seulement quelques millièmes de secondes et pensais-je, en utilisant les mêmes index que les deux requêtes séparées.

Erreur. Quelques jours plus tard, la table table_feeds atteint les 250k enregistrements, et cette requête est passé de quelques millièmes à plus de 5 secondes d’exécution. Quand on atteint une telle différence de temps d’exécution, cela ne peut pas s’expliquer par le fait que la table possède plus d’enregistrements, mais par un problème d’indexation.

Analysons donc ce qui se passe pour cette requête :

Nous avons bien la confirmation de l’erreur : MySQL doit parcourir les 250000 enregistrements de la table table_feeds et n’utilise plus aucun index

Que se passe t’il ?

Après quelques recherches, il s’agirait d’un bug déclaré dans MySQL 4 et 5. D’après la dernière réponse (bien que maintenant “ancienne”) , celui-ci est corrigé dans MySQL 6 (que je n’ai pas encore testé).

Quelles solutions ?

  • La première solution est d’exécuter ce type de requête en deux opérations distinctes:

On utilise les résultats de la première requête (que l’on formate avec un implode en php par exemple) dans le IN de la deuxième requête. Cette solution a l’inconvénient d’augmenter la longueur textuelle de vos requêtes (plus la première requête va retourner de résultats, plus la deuxième sera longue) et d’imposer un traitement supplémentaire à votre script.

  • La deuxième solution, plus sympathique, est d’utiliser une jointure nous permettant d’obtenir les mêmes résultats qu’avec la clause IN, mais cette fois-ci de nouveau en quelques millièmes de secondes :

SELECT id_feed FROM table_feeds f
INNER JOIN table_assoc a ON a.group_key = f.group_key AND a.id_user =10

J’ai ensuite crée un index multicolonnes (user_and_group) sur (groupe_key+id_user) qui sera utilisé par ma jointure :

Résultats

Avec un nombre de visiteurs supérieur à la veille et donc un nombre de requêtes plus élevé, (cf. graph) la correction de cette seule requête divise la consommation du processeur jusqu’à un facteur 4. Ci-dessous les statistiques affichant de haut en bas la consommation CPU, la charge du serveur et le nombre de requête SQL par minute, le trait rouge de droite indiquant l’heure de correction de la requête.

Mai 2008 – Apprendre-PHP.com: Récupérer le nom de domaine dans une URL

Cette fonction se charge de récupérer le nom de domaine dans une URL. Si le domaine n'est pas composé d'une extension, alors elle retourne le nom du serveur, sinon elle retourne le nom du serveur concaténée à l'extension.

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 202

Image pour le titre du contenu
8 paquets ont été mis à jour cette semaine :

  • en PEAR package (0 visite) : Système de base PEAR

  • en DB_Table (0 visite) : Basé sur PEAR DB, avec des types de données abstraits

  • en PHP_CodeSniffer (0 visite) : Détection des violation de convention de codage

  • en PEAR_Size (0 visite) : Détermine l'espace disque d'un paquet

  • en Net_Nmap (0 visite) : Interface simple pour Nmap

  • en Net_Gearman (0 visite) : Interface avec Gearman de Tanga

  • en HTML_Entities (0 visite) : Conversion d'entité HTML

  • en File_Sitemap (0 visite) : Crée et gère des fichiers de site (sitemap)


PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 202

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



9 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Claroline, Drupal, Gallery, Joomla, Mantis, PHP Nuke, WordPress, e107 et ming



Mai 2008 – Nexen.net: Livre blanc sur 4 frameworks PHP

Image pour le titre du contenu
"Fruit dune étude de longue haleine, ce livre blanc aborde les différents aspects du choix dun framework : problématiques fonctionnelles, techniques et stratégiques, avec notamment une analyse approfondie des questions dextensibilité, de documentation et de sécurité. Quatre frameworks en vogue sont présentés en détail (CakePHP, CodeIgniter, Symfony, et le Zend Framework"
Xavier Lacot, Tristan Rivoallan ainsi que Emmanuelle Gouleau, Vincent Lemaire et Olivier Mansour [NDJ : merci aux commentaires ] se sont penchés sur 4 frameworks PHP, et ont produit une étude très détaillée de ces projets et de leur utilisation en entreprise. Une excellente lecture.

Mai 2008 – Nexen.net: Où est passé la communauté MySQL?

Image pour le titre du contenu
Sheeri Cabral a passé en revue le site Web de MySQL pour y rechercher la documentation : en partant de mysql.com, comment faire pour y arriver? Il faut déjà arriver à faire le tri dans les différentes offres commerciales de MySQL, qui ne citent jamais la base de données. Ensuite, quand on a trouvé la partie développeur, on peut y accéder.
Ce qui est si surprenant, c'est la place que finit par prendre les offres commerciales, qui finit par reléguer la communauté au fond du site. Ce n'est pas la première fois que l'on voit ça sur un site qui a des objectifs professionnels ambitieux : les offres prennent la première place. Cela m'est toujours apparu correct, tant que la communauté conserve sa place. C'est quand on commence à la cacher, que je suis plus inquiet.

Mai 2008 – Nexen.net: MySQL Replication Manager

Image pour le titre du contenu
MySQL Replication Manager est une interface Web pour surveiller une architecture maître esclave. Elle permet simplement de lancer le maître et l'esclave, de gérer les logs et de surveiller l'état de fonctionnement. Il vous faut bien sûr les droits d'administration.
Ce n'est pas la première tentative pour avoir une interface graphique qui permet de gérer en un coup d'oeil l'état de fonctionnement d'une réplication. Et cela sera certainement utile à beaucoup d'entre nous, à défaut d'être complet ou de permettre la resynchronisation des tables en un clic. :)

Mai 2008 – Nexen.net: Index B-Tree ou Hash pour une table MySQL

Image pour le titre du contenu
Choisir limplémentation de ses index : B-TREE ou HASH, quelles différences ?
Préambule technique à une série de futurs articles, je ne vous en dis pas plus, lépisode du jour a pour point de départ un moteur de stockage MySQL avec à la clé la possibilité, ou pas, de définir limplémentation de ses index : B-TREE ou HASH.
Ce choix nest en effet pas toujours disponible, cest même plutôt rare puisque seul le moteur de stockage MEMORY vous permet depuis la version 4.1 de MySQL, deffectuer ce choix. Nous ne parlerons pas ici du MySQL Cluster et de son moteur NDB qui sera abordé spécifiquement dans un autre épisode.
Pourquoi alors se soucier de ce type dimplémentation si seul le moteur MEMORY offre la possibilité de choisir ?

  • MyISAM et InnoDB pourraient à lavenir proposer ce choix.

  • Afin de comprendre plus finement comment fonctionnent les index que vous utilisez tous les jours, se pencher sur la façon dont ils sont implémentés permet de mieux appréhender certains résultats.

Mai 2008 – PHP Index: Redo The Web : Is symfony 1.1 too verbose?

A travers son blog Redo The Web, François Zaninotto nous fait un petit tour d'horizon de la future version 1.1 du framework Symfony.

Le redacteur de la documentation de Symfony insiste tout d'abord sur le fait que cette nouvelle version du framework s'accompagne d'une nouvelle philosophie : Si la version 1.0 devait permettre d'écrire du code rapidement, la version 1.1 vise elle à rendre les applications plus facilement extensibles.

Puis pour appuyer son propos sur cette nouvelle philosohie, l'auteur nous présente deux nouveautés de ce Symfony 1.1: Le système de tâches, qui facilite l'écriture des scripts en ligne de commande, et le système d'évènements permettant la modification des classes pendant l'exécution du script.

François Zaninotto, conclu en admettant qu'il n'approuve pas forcement ce changement de philosophie, et regrette que la documentation actuelle, particulièrement le livre The Definitve Guide To Symfony risque de se transformer en pur documentation technique.

Rappelons d'ailleurs que si cette version 1.1 n'est pas à l'heure actuelle sortie en version stable, la première release-candidate est néanmoins disponible depuis deux semaines.

L'article sur Redo The Web

Mai 2008 – Nexen.net: Introduction à phpWiki

Image pour le titre du contenu
"Ce mois-ci, il est temps de jeter un oeil sur ces applications PHP que je trouve si utiles quotidiennement. J'ai utiliser les "wiki" pour la documentation de nombreux projets. La plupart d'entre vous sont familiers avec le terme wiki, qui provient de la langue hawaïenne, et qui signifie 'rapide' (wikiwiki). Il y a de nombreux wiki publiés, incluant mediawiki (qui est la base de Wikipedia), PmWiki et DokuWiki. Dans cet article, nous allons étudier PhpWiki, et nous verrons comment le configurer et l'utiliser pour vos propres projets."

Mai 2008 – Nexen.net: Ca bouge chez Zend

Image pour le titre du contenu
Zend Technologies vient de licencier 10 personnes de son service de R&D. TechCrunch, qui rapporte le fait, estime que c'est dans un objectif de vente de la compagnie que ce licenciement aurait lieu : il permet en effet de remettre les comptes à flot.
Oracle, Microsoft et IBM seraient possiblement intéressés. En 2006, Oracle aurait émis une offre entre 100 et 200 millions, sans prise d'effet. Le rachat de MySQL par Sun, en début d'année, va sûrement peser dans la situation, aussi bien au niveau des prix que de la valeur stratégique de Zend.
A suivre...

Mai 2008 – PHP Index: BarCamps et TestFest à Paris.

Pour emboiter le pas au DrupalCamp du mois dernier, samedi 7 juin, pour la première fois en France, seront organisés un PHPCamp est une TestFest exclusivement orienté autour de PHP. Une occasion de participer à des échanges (BarCamp) et développement du langage (via la TestFest).
Côté informations pratiques, ces réunions se dérouleront à La Cantine (qui permet d'accueillir 80 places, alors inscrivez vous vite !) de 10h à 20h. Bien entendu l'accès à ces évènements est gratuit.

PS : Pour rafraichir quelques notions chez certains, Wikipedia nous apprend qu'un BarCamp est "une non-conférence ouverte qui prend la forme d'ateliers-événements participatifs où le contenu est fourni par les participants. C'est le principe "pas de spectateur", "tous participants". Une TestFest, quant à elle, est un évènement dont le but est d'améliorer la couverture de code d'une suite de test.

Proposé par Hourdeaux Christophe

Mai 2008 – PHP Index: IBM : Process and integrate Google Notebook data with PHP

La plateforme developperWorks d'IBM nous propose un nouveau tutoriel sur l'utilisation des API Google Bloc-note dans une application PHP.

Le service Google Bloc-note (Google Notebook en anglais) vous permet de stocker en ligne vos notes, textes, liens, et images, et de pouvoir ensuite y accéder de partout à l'aide de votre compte Google.
Ce tutoriel nous explique comment utiliser les API fournies par Google pour lister vos blocs-notes, et récupérer leurs contenus dans vos scripts PHP. De plus, et comme souvent avec IBM, l'explication est agrémentée de nombreux exemples de codes.

Il est à noter que ces API ne permettent pas, à l'heure actuelle, d'effectuer des modifications sur vos blocs-notes, ni sur leurs contenus.

L'article sur IBM developperWorks

Mai 2008 – Nexen.net: Jointures de fichiers

Image pour le titre du contenu
Toutes les données ne sont pas destinées à être en base : et pour les fichiers, il existe une commande join en ligne de commande. C'est une commande Posix, qui permet de faire des jointures entre des fichiers.

Mai 2008 – Nexen.net: Montée en charge : Haro sur les jointures!

Image pour le titre du contenu
Todd Hoff lance un pavé dans la mare : si vous voulez que votre application tienne des charges phénoménales, il faut abandonner les jointures et dénormaliser. Les jointures représentent la sécurité des données : en évitant les doublons, on peut facilement modifier des informations et avoir un système à jour en permanence. C'est rassurant, mais cela se pait au prix des performances.
En dénormalisant, les jointures disparaissent : on peut constituer des tables qui gère les informations directement, sans se préoccuper qu'une autre table ait besoin des mêmes données ailleurs. La cohérence des données passe alors par les règles métier, et toutes les entrées dans la base doit passer par de la programmation pour pouvoir appliquer ces règles.
Lisez l'article de Todd, et n'oubliez pas d'abandonner toutes vos préjugés de normalisateurs. Sinon, vous allez perdre du temps dans cet article. Il faut reconnaître que faire sauter les jointures et tout partitionner est tellement tentant!

Mai 2008 – Nexen.net: Quelques expressions rationnelles courantes

Image pour le titre du contenu
Richard Heyes publie 7 expressions rationnelles, qui sont utilisées très classiquement dans une application Web, pour valider différentes informations : email, date, numéro de telephone, code postal, etc. Pour ce dernier, c'est la version anglaise (comme dans Royaume-Uni), qui est proposée.
Pour vérifier un code postal français, on peut utiliser cette règle, qui est simple mais un peu large :
 
 
/^\d{5}4/
 

Quand je tombe sur ces listes de validateurs, je me prend toujours à réver d'une extension du HTML : ne pourrait-on pas avoir des attributs étendus, comme 'phone','date','email', en plus des 'text' et 'checkbox' actuel, qui se transformeraient en un ou plusieurs champs HTML équivalents, avec une validation Javascript optionnelle, puis, à l'arrivée dans PHP, seraient validés par un filtre coté serveur, et livré tout prêt dans $_POST ?
On pourrait alors avoir des listes de regex comme ci-dessus, avec des tests unitaires complets.

Mai 2008 – Nexen.net: Rename database s'en vient et s'en va...

Image pour le titre du contenu
Une commande 'RENAME DATABASE' a été introduite en MySQL 5.1.7, puis retirée en 5.1.23, pour des raisons de 'danger'. Vadim s'interroge sur les raisons de ces allers et venues : est-ce pour pouvoir publier la 5.1 GA qu'une fonctionnalité utile (et peut être moins dangereuse que DROP DATABASE) a été retirée?
C'est un choix à faire pour chaque version : soit on souhaite des fonctionnalités finalisées, en sacrifiant le calendrier, ou bien des versions à l'heure, sans être finies. J'ai la sensation que cela n'arrive pas qu'à MySQL...

Mai 2008 – Nexen.net: Zend débauche la R&D, et plus encore

Image pour le titre du contenu
Selon John Coggeshall, qui travaillait chez Zend jusqu'à récemment, Zend aurait récupéré de 6 à 8 millions de dollars, en débauchant 25% de son équipe de R&D (apparemment, toute en Israel), ainsi que dans presque tous les autres services : vente, services, développement, IT.
Toujours selon John, Microsoft serait l'acheteur le plus probable, et non pas IBM.
L'avenir nous le dira.

Mai 2008 – PHP Index: Asbru Adds More Ready-to-Use Applications to CMS

Version 6.8 of the Asbru Web Content Management system for PHP, ASP and JSP/Java has been released.

Version 6.8 of the Asbru Web Content Management system is a major upgrade with focus on supplying a number of ready-to-use applications, which makes it easy for organizations to add a variety of functions to their websites. Version 6.8 also adds Landing Page Optimization (LPO) capabilities.

Stores and Branches Directory
Among the new applications in the latest version 6.8 is a Stores and Branches Directory application. This application enables non-technical users to add searchable lists of stores and branches to their website in just three steps. When a website visitor selects a store a map and details about the store is displayed.

Careers and Jobs Directory
The new version also includes a Careers and Jobs Directory, that when added to a website enables visitors to search for jobs and submit their job applications. New jobs are easily added by website administrators.

Other Directory Applications
Other applications include an Organizational Plan Directory, which displays subsidiaries, divisions, roles and responsibilities of organizations and a Classifieds Directory. There is also a General Directory application that can be adapted to suit individual needs.

All the applications are built upon the Custom Databases Add-On Module and demonstrate the power and versatility of the Asbru Web Content Management system's Custom Databases Add-On Module.

Landing Page Optimization
Finally the new version 6.8 of the Asbru Web Content Management system adds Landing Page Optimization functionality that enables web sites managed by the Asbru Web Content Management system to display different landing pages depending on which websites visitors came from and which search queries website visitors used to find the website.

For an online trial of the new version of the Asbru Web Content Management system: http://wcm.asbrusoft.com.

About Asbru Web Content Management
The Asbru Web Content Management system is a full-featured and ready to use out-of-the-box enterprise level solution. It is available for PHP, ASP and JSP/Java and runs on Microsoft Windows, Linux, Unix and Mac OS X. The system enables users to update web content through Internet Explorer, Mozilla/Firefox and Safari web browsers. For more information about Asbru Web Content Management: http://wcm.asbrusoft.com.

Proposé par David Fisher

Mai 2008 – Nexen.net: FireWall pour PHP et MySQL

Image pour le titre du contenu
Tout le monde connaît les firewall, qui surveillent le contenu du trafic réseau, et imposent des limites à ce qui est possible de faire. Le même concept a été porté en PHP et MySQL.
Le firewall doit surveiller un contenu qui ne lui est pas destiné : il hésite constamment entre appliquer des filtres de sécurité draconienne, au détriment du contenu applicatif, et une politique plus souple, au détriment de la sécurité. PHP-IDS et GreenSQL font la même chose.
PHP-IDS ne modifie pas le contenu, mais émet un score sur la probabilité qu'une donnée entrante soit potentiellement dangereuse (XSS, injection SQL, injection PHP, etc). De même, Green SQLse place entre le serveur Web et MySQL, puis surveille les requêtes entrantes pour ne pas laisser passer les commandes administratives importantes (drop table), ou naïves (comparaisons de constantes).

Mai 2008 – Nexen.net: Profiler les requêtes SQL : 4 étapes

Image pour le titre du contenu
Récemment, Ghislain (qui gère les serveurs de nexen) m'a rappelé l'existence de SHOW FULL PROCESSLIST, qui est si pratique pour faire afficher la totalité des requêtes SQL en cours, et non pas les premiers caractères. Quand on veut profiler un serveur, et savoir quelles sont les requêtes qui sont si lentes, c'est vraiment essentiel.
Autrement, je recommande souvent 4 étapes pour profiler une requête SQL :

  1. L'exécuter manuellement et voir le temps qu'elle prend dans le client MySQL. C'est souvent par cela qu'on commence, vu qu'il faut bien déboguer fonctionnellement la requête avant de la profiler. A ce stade, si le temps de calcul dépasse 0.00s, c'est mauvais. EXPLAIN arrive alors à la rescousse.

  2. Après les tests à l'unité, il faut évaluer le comportement avec beaucoup de données. Généralement, un ordre de magnitude de plus que ce qui est attendu est une bonne marque : vous envisagez 1 million de clients? Créez donc 10 millions de lignes dans la table, et voyez l'impact.

  3. Outre les données, il y a bien sûr l'exécution dynamique qui joue aussi : prenez la requête, la bonne quantité de données, et utilisez mysqlslap (livré en standard), mysql super smack ou même votre propre script PHP. Que se passe-t-il quand cette requête est en concurence avec elle-même?

  4. Enfin, il reste à tester au final dans des conditions de concurrence avec d'autres requêtes. Idéalement, un log de requêtes MySQL permet de rejouer des variétés réalistes de requêtes, et de voir comment l'ensemble se comporte.


Cette approche est la plus complète pour vérifier qu'une requête SQL sera viable dans un système en production. Si la 4eme étape est au niveau du luxe, les deux premières devraient être faciles à inclure dans n'importe quel plan de développement : elles identifient 90% des problèmes les plus courants.

Mai 2008 – Nexen.net: Vidéo PHP et MySQL, édition 46

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Mai 2008 – Nexen.net: Actualité de développement PECL, edition 201

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :

  • en APC (0 visite) : cache PHP alternatif

  • en mcve (0 visite) : interface libmcve

  • en oci8 (0 visite) : fonctions OCI8

  • en phar (0 visite) : support des fichiers d'archives PHP : .phar


PECL est la bibliothèque d'extensions C de PHP.

 



 

Mai 2008 – Nexen.net: Les applications PHP qui ont changé le monde

Image pour le titre du contenu
Frederico a dressé la liste des applications qui ont changé la face de PHP depuis 1998. On commence, bien sur, par phpMyAdmin, pour se rendre en 2008 à Magento. SquirrelMail, Symfony, eZ Publish, osCommerce,SugarCRM, Joomla! et Drupal font aussi partie des élus de Frederico.

Mai 2008 – PHP Index: Zend et Dojo marient PHP et AJAX

Les deux concepteurs viennent d'annoncer un partenariat sous licence BSD.

Bien connu des développeurs PHP, Zend inclura à l'avenir Dojo Toolkit, un framework AJAX contenant entre autres :

  • Outils d'internationalisation (formatage des dates, monnaies..)
  • Librairies graphiques et génération de graphes
  • Effets et transitions
  • Événements de type AOP
  • Requête XML / Json et transfert de fichiers
  • Documentation/API généré à partir du code source similaire aux JavaDocs
  • Compression du code Javascript
  • Analyse et optimisation du code source
Andi Gutmans, cofondateur et directeur technique de Zend, précise toutefois que ce « partenariat stratégique » n'a rien d'exclusif, et que chaque projet, Zend et Dojo, restera agnostique et utilisable avec une autre solution.

Mai 2008 – PHP Index: Artisan Numérique : Créer son premier module Drupal.

Aujourd'hui Ulhume nous propose sur son "non blog" Artisan Numérique un tutoriel pour créer son premier module pour Drupal.
Le module se contentera d'afficher des statistiques (nombre d'articles, de pages, de commentaires, ...) mais vous l'aurez compris son but premier est l'aspect pédagogique.

Tout d'abord, il faut structurer l'arborescence de l'application pour y loger notre futur module. Pour des soucis de maintenabilité, l'auteur nous conseille de créer le répertoire "mes_modules" dans le répertoire "sites/all/modules" et non directement dans "modules" à la racine. De ce fait, en cas de changement de version de Drupal, l'importation du répertoire "sites" se chargera d'importer aussi nos modules.
Une fois ce dossier "mes_modules" crée, nous allons aussi y ajouter un répertoire "statistiques" dans lequel nous créerons au minimum deux fichiers "statistiques.info" et "statistiques.module".
Nous avons un répertoire "statistiques" qui sera le nom parent du module, les fichiers contenus dans ce répertoire devrons porter son nom en plus de leur extensions.
Drupal, quand il trouve un répertoire de module, va regarder à l'intérieur s'il trouve un fichier .info du même nom, le fichier de configuration du module. C'est un fichier texte contenant des informations sur le module comme son nom, sa description, la version de Drupal avec lequel il est compatible,... Après avoir trouvé ce fichier .info, Drupal va chercher un fichier .module qui lui contient le code PHP du module.
Libre à vous bien-sûr d'appeler d'autres fichiers depuis votre .module.
Voici les fichiers .info et .module de notre module de statistiques :

* statistiques.info

name = "Statistiques"
description = "Statistiques sur les contenus"
package = karma-lab
project = "statistiques"
version = "6.x-2.0"
core = 6.x

* statistiques.module

<?
function statistiques_init() {
}

/**
* Implémentation du hook_block
*
* @param $op opération demandée (list, configure, save, view)
* @param $delta id du bloc (op==view)
* @param $edit données modifiées par le formulaire (op==save)
*/
function statistiques_block($op = 'list', $delta = 0, $edit = array()) {
$blocks=array();

// Enumeration des blocs disponibles
if ($op == 'list') {
$blocks[] = array(
'info' => t('Affichage des statistiques'),
'weight' => 0,
'status' => 1);
return $blocks;
}

// Génération du formulaire de configuration
else if ($op == 'configure' && $delta == 0) {
$form['statistiques_commentaires'] = array(
'#type' => 'checkbox',
'#title' => t('Afficher les commentaires ?'),
'#default_value' => variable_get('statistiques_commentaires', 0),
);
return $form;
}

// Sauvegarde du formulaire de configuration
else if ($op == 'save' && $delta == 0) {
variable_set('statistiques_commentaires', $edit['statistiques_commentaires']);
}

// Génération du contenu à afficher pour le block
else if ($op == 'view') {
switch($delta) {
case 0:
$block = array(
'subject' => t('Statistiques'),
'content' => statistiques_contenu());
break;
}
return $block;
}
}

function statistiques_contenu() {
$result="<ul>";
$cursor = db_query("SELECT type,count(type) as count FROM {node} GROUP BY type");
while ($statistique=db_fetch_object($cursor)) {
$result.="<li>".t($statistique->type).' : '.$statistique->count."";
}
if (variable_get('statistiques_commentaires', 0)) {
$comments = db_result(db_query("SELECT count(*) as count FROM {comments}"));
$result.="<li>".t("commentaires").' : '.$comments."";
}
$result.="</ul>";
return $result;
}
?>

Bien entendu vous trouverez bien plus d'explication sur ce premier module chez son auteur, d'ailleurs durant la rédaction de cette actualité Ulhume a mis en ligne la suite de ce tutoriel : créer un module "type de contenu".

Merci encore à lui pour ces contributions.

Proposé par Hourdeaux Christophe

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 203

10 paquets ont été mis à jour cette semaine :

  • en Net_FTP (0 visite) : Interface FTP

  • en PHP_CompatInfo (0 visite) : Recherche les versions et extensions minimum pour exécuter un script PHP

  • en XML_Util (0 visite) : Utilitaire XML

  • en PHP_Archive (0 visite) : Création et utilisation d'archives PHP

  • en pearweb_phars (0 visite) : Le code source poru le site gopear.com

  • en OLE (0 visite) : Paquet de manipulation des objet OLE

  • en Console_CommandLine (0 visite) : Analyseur de ligne de commande

  • en PEAR_Size (0 visite) : Détermine l'espace disque d'un paquet

  • en XML_GRDDL (0 visite) : Bibliothèque pour s'interfacer avec GRDDL

  • en PHP_UML (0 visite) : Analyse de fichiers PHP pour produire des fichiers XML/UML


PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 203

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



5 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Gallery, Mantis, PostNuke, WordPress et e107



Mai 2008 – Nexen.net: Les versions MySQL plus difficiles à suivre

Image pour le titre du contenu
Coup sur coup, les versions de MySQL sont devenues plus compliquées. En fait, les moteurs de tables disponibles pour MySQL ont maintenant leur vie propre indépendante de MySQL (le serveur lui-même). Reprenons :

  • Oracle/InnoDB est livré indépendamment de MySQL depuis Avril

  • Falcon est basé sur MySQL 6.0 (pas sur la 5.1)

  • Maria est basé sur MySQL 5.1 (pas sur la 6.0)

  • MySQL Cluster a une version indépendante (lui-même est en version 6.2)

  • Les tables fédérées ont disparu de la 5.1.24 (mais reviendront en 5.1.25)


Je comprend le besoin de pouvoir faire évoluer deux projets comme le serveur MySQL et ses moteurs de tables indépendamment. Mais il faut reconnaître qu'il va être plus difficile de constituer son serveur MySQL maintenant, vu qu'il faut préciser la version de MySQL et celle des tables.
La présence d'un moteur dans la distribution de base est primordiale pour son utilisation maximale : il ne reste que MyISAM et le blackhole, en attendant que Falcon et Maria soient suffisamment mûrs. Et tous les autres moteurs qui sortent ici et là, resteront très discrets.

Mai 2008 – Nexen.net: Couverture de code avec PHPT

Image pour le titre du contenu
"Mes premières expériences avec les tests unitaires et PHP ont été avec PHPUnit. C'est un excellent outil, et je remercie vivement Sebastian pour avoir contribué à ce projet. Mais j'ai aussi appris à aimer la simplicité des tests PHPT. Récemment, j'ai travaillé sur un projet avec PHPT, et j'ai réalisé que je ne savais pas générer de rapport de couverture. Avec un grand merci à tous ceux qui m'ont aidé sur le canal #pear de EFNET, voici comment faire."

Mai 2008 – Nexen.net: Chargements paralleles de fichiers .sql

Image pour le titre du contenu
Domas Mituzas a tenté plusieurs choses pour accélérer ses importations de données MySQL : la première est un client appelé paramy, qui paralellise les chargements sur plusieurs threads. Cela permet d'utiliser plus fortement le serveur, et d'utiliser à fond le processeur.
Toutes fois, le gain initial n'était pas significatif, car les tables utilisées avaient des index auto-increment. En le désactivant, puis réactivant à la fin, Domas a gagné 66% de vitesse. La commande à connaître est 'DISABLE KEYS', qui permet de désactiver les index. Sans ces vérifications supplémentaires, les insertions sont beaucoup plus rapides, et les index ne sont utilisées et regénérés qu'à la commande ENABLE KEYS. Ce sont des clauses de la commande ALTER TABLE.

Mai 2008 – Nexen.net: Un moteur de queue pour les tables MySQL

Image pour le titre du contenu
Kazuho Oku publie un moteur de queue pour MySQL. Une table MySQL devient alors une queue : en mode normal, c'est une table comme une autre. En mode queue, on peut lancer une commande select qui attendra la prochaine ligne disponible, et la renverra : dès sélection, cette ligne est effacée.
Q4M se présente comme un moteur de table séparé, à spécifier lors de la constitution de la queue. Il met l'accent sur l'enregistrement immédiat des données qui sont insérées : le plus important pour une queue est de ne pas perdre les messages qui lui sont confiés (même s'ils sont en ligne comme celle d'Amazon).

Mai 2008 – PHP Index: PHP::Impact : Open-source PHP applications that changed the world

L'auteur du blog PHP::Impact a pris la peine de lister les applications PHP open-source qui, selon lui, ont marquées les 10 dernières années.

Dans ce récapitulatif classé par année, l'auteur nous liste tous les projets importants, peu importe leur domaine d'application, et regroupant ainsi des applications liées à la gestion de contenu, de mails, de forums, de bases de données, et bien d'autre encore. Même si ces applications sont, pour la plupart, très connues, l'auteur a néanmoins ajouté un petit descriptif à chacune d'elles.

En parcourant la liste on retrouve des projets désormais historiques comme phpMyAdmin sorti en 1998, phpBB apparu en 2000, ou MediaWiki en 2002, mais aussi les deux principaux frameworks PHP du moment: Symfony et le Zend Framework, sortis respectivements en 2005 et 2006.

L'article de PHP::Impact

Mai 2008 – Kamelot Blog: apéroPHP Belgique la suite.

Pour continuer les apéroPHP de 2008, je propose de nous rencontrer

  • le samedi 28 juin Grand-Place à Mons
  • Le 18 juillet place de la monnaie à Bruxelles
  • Le 22 août à Bruxelles à définir
  • fin septembre à Gand café "de ploeg"

Chaque fois vers 19h.

Des lieux calmes à proposer ? n'hésitez pas ! Vous connaissez des espaces propice à l'annonce de ces rencontres ? n'hésitez pas ?

Si vous connaissez un lieu tranquille, dans ces villes ou ailleurs, laissez moi un commentaire. Si la date ne convient pas, et que vous avez une proche à proposer, celle que je propose sont des références d'espacement. Il n'y a aucun problème de proposer une autre date dans les alentours.

Les conditions à remplir pour un apéro PHP réussi.

  • Un espace pour 5 à 25 personnes
  • Un fond sonore modéré
  • Une disposition permettant un minimum de mobilité (généralement les meilleurs discussions sont dans des sous groupes de 4-5 personnes.)
  • Une ville un peu centrale : sorry pour Arlon , De Panne, Tournai et Antwerpen.
  • Un organisateur local (pour pouvoir bouger après avec ceux qui le veulent)
  • Pas d'ordinateur.
  • De la bière et du coca.
  • Des participants de tout niveau de compétence. (J'ai connu de très bon apéro php avec des gens qui touchait a peine au langages mais qui étaient intéressé par les discussion car ils bossent avec des codeurs)

Mai 2008 – Nexen.net: Les Bases en PHP

Image pour le titre du contenu
Tous les développeurs en PHP connaissent à quoi correspond le Langage PHP... c'est un langage dynamique et un langage de script coté serveur.
Mais il peut être utile de rappeler certaines bases du langage PHP, de décrire certains mots clefs employés. Il se trouve souvent nécessaire d'expliquer un peu plus en détails certains points pour des personnes qui ne sont pas développeurs PHP.
Ces nombreux points sont relevés sur le blog Landofcode.com qui expliquent les points suivants :
- Introduction à PHP
- PHP Basics
- Variables PHP
- Functions PHP
- Condition logic dePHP
- PHP loops
- Les tableaux PHP
- Les classes et objets
- Les strings
- Les formulaires
- html entities
- Les fichiers
- Les includes
- Date et heure
- Les cookies
- Les bases de données
- Les sessions

Mai 2008 – Kamelot Blog: phpbelgium on Twitter

phpbelgium à un compte sur Twitter

Mai 2008 – Nexen.net: Découvrez APC, le cache d'Opcode de PHP

Image pour le titre du contenu
"Les caches d'opcode de PHP économisent de l'énergie, des dépenses, et améliorent l'expérience utilisateur générale sur les sites Web, tout en étant l'un des optimisations les plus simples à mettre en place. Cet article vous présente l'installation, la configuration, et le paramétrage d'un de ces caches : APC (Alternative PHP Cache)."
Un article par Brian Shire, de Facebook, un spécialiste en la matière. Facebook utilise de nombreux trucs pour tirer le maximum de APC et PHP.

Mai 2008 – Nexen.net: La communauté MySQL compte ses rangs

Image pour le titre du contenu
Keith Murphy, qui publie l'excellent MySQL Magazine, a lancé un sondage sur la communauté MySQL pour mieux la connaître. Il y a une 34 questions, reliées à MySQL et à l'environnement d'utilisation de la base de données. Le sondage se termine le 16 juin à minuit.

Mai 2008 – Nexen.net: Vidéo PHP et MySQL, édition 47

Image pour le titre du contenu
Voici les 5 dernières vidéos PHP et MySQL.


Ces vidéos sont publiés sur les sites de partagent de vidéo. Ce sont des tutoriels enregistrés, des sessions de conférences, des screencast ou encore des slides de conférences.



N'hésitez pas à nous contacter pour signaler tout media qui mérite d'être ajouté à cette liste.

Mai 2008 – Hello Design: Mes Photos ElePHPants chez El Roubio

Le site EL Roubio, le créateur du symbol de l'ElePHPant PHP, signale mes explois de pyramide dont je le remercie.

Par ailleurs, La communcauté de l'ElePHPant possède aussi son groupe sur flick'r

Et bien sur, mon blog en cours de refonte, va consacrer une partie pure de l'ElePHPAnt.

Si vous voulez rejoindre cette communauté, il est toujours possible d'en adopter 1 directement sur le site de Nexen en cliquant ici

 

Mai 2008 – Hello Design: Mes Photos ElePHPants chez El Roubio

Le site EL Roubio, le créateur du symbol de l'ElePHPant PHP, signale mes explois de pyramide dont je le remercie.

Par ailleurs, La communcauté de l'ElePHPant possède aussi son groupe sur flick'r

Et bien sur, mon blog en cours de refonte, va consacrer une partie pure de l'ElePHPAnt.

Si vous voulez rejoindre cette communauté, il est toujours possible d'en adopter 1 directement sur le site de Nexen en cliquant ici

 

Mai 2008 – PHP Index: Affaires à suivre chez Zend

Suite à quelques mouvements de personnel dans la R&D de Zend, John Coggeshall donne son point de vue sur ce qui pourrait se passer au sein de l'entreprise

Le site TechCrunch a publié il y a un peu plus d'une semaine un article évoquant une réduction de la masse salariale parmis l'équipe de R&D chez Zend. Cette opération qui place la balance commerciale de la compagnie dans le positif est interprêtée comme une action permettant de faciliter un achat éventuel.
Les acheteurs potentiels cités sont alors Oracle, ayant déjà approché Zend dans le passé mais aussi IBM et Microsoft avec qui Zend a développé un partenariat actif ces derniers temps.
A ce sujet John Coggeshall a donné son avis qui pencherait pour Microsoft et ce pour diverses raisons, il évoque également les rumeurs sur les récentes visites des co-fondateurs de Zend Zeev et Andi à Seattle.

Source

Mai 2008 – Nexen.net: Actualité de développement PECL, edition 202

Image pour le titre du contenu
1 paquet a été mis à jour cette semaine :

  • en intl (0 visite) : extension d'internationalisation


PECL est la bibliothèque d'extensions C de PHP.

 



 

Mai 2008 – Apprendre-PHP.com: Extraire les adresses e-mail d'une chaine de caractères

Cette fonction permet d'extraire les adresses e-mails éparpillées ici et là dans un texte. Elle retourne un tableau contenant toutes les adresses e-mails uniques, c'est-à-dire que les adresses en double dans le texte ne sont enregistrées qu'une fois dans le tableau final. C'est ce genre de fonctions qu'utilisent les groupes de hackers / spammers pour développer des bots qui parcourent les pages Internet pour en récolter des listes d'adresses e-mail. Je mets cette fonction à disposition dans un but purement éducatif pour présenter le principe et pour vous inviter à l'utiliser dans un contexte légal. En revanche, je ne peux être tenu responsable d'une quelconque utilisation illégale, malhonnête ou de quelconque dommage subit suite à son emploi.

Mai 2008 – PHP Index: Typo3: bulletins de sécurité pour les extensions kj_imagelightbox2 et sg_zfelib

Extension KJ: Image Lightbox v2 (kj_imagelightbox2)

Versions concernées : 1.4.2 et versions précédentes

Cette extension est sensible aux Cross site scripting (XSS) et ne filtre pas les données javascript.
Télécharger la mise à jour 1.4.3

Les utilisateurs de l'extension kj_imagelightbox (le prédécesseur de kj_imagelightbox2) doivent également télécharger la mise à jour.

Extension Library for Frontend plugins (sg_zfelib)

Versions concernées : 1.5.512 et versions précédentes

Cette extension est sensible aux injections SQL et rend possible les accès à la base de données.
Télécharger la mise à jour

Lire la liste des bulletins de sécurité

Mai 2008 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 204

Image pour le titre du contenu


PHP et MySQL ne font l'objet d'aucune alerte de sécurité dans leurs versions courantes :
PHP 5.2.6 et 4.4.8; MySQL 5.0.51 (communauté) , 5.1.24-rc et 6.0.4.
Les mises à jour sont recommandées vers ces versions.



6 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
Drupal, Horde, Joomla, OBM, WordPress et e107



Mai 2008 – PHP News: L’application Cursus remporte le concours Altran Appli’Challenge

J’ai le plaisir de vous annoncer que l’application Cursus, que j’ai développée en duo avec mon partenaire designer Thomas Guenoux, a remporté hier le concours Appli’Challenge organisé par le groupe Altran en partenariat avec 20minutes.

Me voici donc en compagnie d’un superbe MacBook AIR ;)

Cursus

Cursus est une application Facebook développée en PHP5/MySQL5/FBML/FBJS (la surcouche HTML et Javascript de la plateforme Facebook). Elle permet de retracer de manière innovante son parcours scolaire, de la maternelle aux études supérieures.

Une fois son parcours retracé, les anciennes classes sont reformées dans des groupes où l’on peut uploader ses photos de classe et poster des commentaires via le wall. Outre le fait de pouvoir retrouver les personnes d’un même classe, l’application permet aussi de retrouver les personnes ayant fréquenté à la même période le même établissement et de consulter le cursus de ses amis.

Les plus values de l’application

  • Le premier d’entre eux, l’assistant :

Auto complétion sur la ville => recherche des établissements disponibles => recherche des libellés de classe déjà proposés => validation puis pré remplissage des champs sur l’année-1 (l’assistant est antéchronologique : on commence à remplir son cursus depuis la première année d’étude jusqu’à la maternelle, celui se chargeant de décrémenter les années et le passage aux classes inférieures est généré automatiquement)

  • La deuxième, le feed de la page d’accueil

Sur la page d’accueil se trouve le feed Cursus, fonctionnalité phare de Facebook adapté à l’application :

Celui-ci indique les nouveaux commentaires dans les classes, les nouveaux cursus de nos amis, les dernières photos de classe uploadées concernant nos amis ou nous-mêmes etc …

Au lieu d’un long discours, jugez plutôt par vous même ;)

  • La dernière, la profile box

Une des dernières fonctionnalités plébiscitées par les fans de l’application, c’est son intégration totale dans le “Look and Feel” Facebook. La profile box, disponible sur la page profile de l’utilisateur, témoigne de cette intégration totalement réussie par Thomas (ici la profile box d’un des fans de l’application) :

Les chiffres ;)

Cursus a été développé en une quinzaine de jours et lancé fin mars 2008. Aujourd’hui, deux mois plus tard, elle possède plus de 60 000 utilisateurs, un total d’un million d’années scolaire et plus de 7000 photos ;)

Merci donc au groupe Altran et à 20minutes de nous avoir donné la motivation pour développer cette application, de son accueil de qualité au sein de son siège social à Levallois, et bien sûr de leurs très beaux prix : )

Edit : Retrouvez Cursus ce samedi matin sur Techcrunch France ;)

Mai 2008 – Apprendre-PHP.com: Blogmarks PHP / MySQL du mois de mai 2008

Ces deux dernières semaines ont encore été très dynamiques dans la communauté PHP francophone et internationnale. Les différents aggrégateurs de contenu des différents planètes PHP ont rassembler tout un tas d'informations aussi intéressantes les unes que les autres. On commence...

Mai 2008 – Nexen.net: Actualité de développement PEAR, edition 204

Image pour le titre du contenu
2 paquets ont été mis à jour cette semaine :

PEAR est la bibliothèque de composants PHP.

 



 

Mai 2008 – Nexen.net: Identification X.509 PKI avec PHP et Apache

Image pour le titre du contenu
"Comme certains d'entre vous le save, je travaille actuellement dans un environnement dont la sécurité de résume aisément à "comment faire pour s'assurer que ceux qui utilisent le service sont bien ceux qu'ils sont, et qu'ils utilisent un cryptage correct?". Comme les grilles de calculs (c'est ce que je fait) ont un fort besoin de SSO (single sign-on, identification universelle), et de délégation de droits, les mécanismes d'identification par login et mot de passe ne sont pas suffisants. Par conséquent, un PKI (public key infrastructure) basé sur X.509 a été choisi".
Par Christopher Kuntz.

Mai 2008 – Nexen.net: PHP et MySQL aux élections américaines

Image pour le titre du contenu
Fake Amelia signale que la campagne du candidat démocrate Barrack Obama recherche des experts MySQL pour optimiser des requêtes. De son coté, John McCain, du camp républicain, utilise IIS pour son site de campagne. Il est donc facile de proposer un choix aux électeurs américains.
Au passage, Mme Hillary Clinton utilise ASP.NET, ce qui tend aussi à proposer une solution de vote raisonnable au camp démocrate.
Evidemment, il n'est pas possible de résoudre un problème social avec de la technologie, alors peut on résoudre un problème politique avec un choix technologique?

Mai 2008 – Nexen.net: Outils pour le suivi des performances MySQL

Le blog mysqlperformanceblog publie la liste des utilitaires qu'ils utilisent pour évaluer les performances d'un serveur MySQL. 14 utilitaires, incluant Maatkit(vivement recommandé), mysqladmin et mysqlreport, ainsi que d'autres outils système (dtrage, iostat, fincore).