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

Décembre 2007 – Nexen.net: Suhosin 0.9.21

Image pour le titre du contenu
Voici la Nouvelle version de Suhosin 0.9.21, en plus de permettre d'effectuer un certain nombres de protection supplémentaires pour vos sites internets. Cette version propose 2 nouvelles fonctions : suhosin.server.strip et suhosin.server.encode.
La 1ere fonction permet de numériser certains caractères comme <> "et`. permettant ainsi de stopper beaucoup d'attaque XSS pour les variables de serveur PHP_SELF, PATH_INFO et PATH_TRANSLATED
La 2eme fonction permet d'effectuer la meme chose que la fonction ci-dessus pour les variables de serveur QUERY_STRING, REQUEST_URI

Décembre 2007 – Rom's blog: Les locaux d’Anaska pris d’assaut!

Une intrusion fulgurante a eu lieu dans les locaux d’Anaska situés en région Parisienne le jeudi 29 Novembre 2007 au matin.
Vers 10h, un troupeau d’une centaine d’elephpants accompagné de leur leader, le maxi elephpant, s’est introduit par la force dans les bureaux et salles de formation de la société pour y prendre place et ne plus en sortir.
Pour le moment, nous ne recenssons aucun blessé mais de nombreux bureaux sont maintenant inutilisables et le stock de livres est inaccessible.

invasion d’elephpants

Afin de trouver une sortie à cette crise, la direction d’Anaska a décidé d’offrir un elephpant à toute personne suivant une formation PHP jusqu’au 31 Décembre 2007 (dans la limite des stocks disponibles).

Décembre 2007 – Nexen.net: Symfony 1.1 : quoi de neuf?

Image pour le titre du contenu
"Fabien est revenu de l'IPC 2007 de Francfort, et il a publié ses slides sur son nouveau blogue. [...]
Dans cet article, je vais brièvement expliquer les évolutions significative de Symfony 1.1 pour que vous ayez les cartes en main pour choisir entre réécrire votre vieux code, mettre à jour votre application ou bien utiliser le nouveau Symfony 1.1 uniquement pour les nouveaux développements."

Décembre 2007 – Nexen.net: Vidéo PHP et MySQL, édition 22

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.

Décembre 2007 – Nexen.net: Actualité de développement PEAR, edition 172

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

  • en DB (0 visite) : Couche d'abstraction de base de données

  • en HTTP_Session2 (0 visite) : Gestionnaire de sessions PHP

  • en Image_GraphViz (0 visite) : Interface avec AT&T GraphViz

  • en Console_ProgressBar (0 visite) : Interface pour construire des barres de progression

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

  • en Net_Vpopmaild (0 visite) : Classe d'accès à vpopmaild

  • en XML_HTMLSax3 (0 visite) : Analyseur SAX pour HTML et XML mal formé


PEAR est la bibliothèque de composants PHP.

 



 

Décembre 2007 – Nexen.net: Actualité de développement PECL, edition 177

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

  • en pecl_http (0 visite) : support étendu de HTTP

  • en ps (0 visite) : génération de fichiers PostScript

  • en vld (0 visite) : exporte la représentation interne des scripts PHP

  • en memcache (0 visite) : cache mémoire

  • en perforce (0 visite) : interface Perforce

  • en ibm_db2 (0 visite) : interface pour IBM DB2

  • en html_parse (0 visite) : analyseur HTML

  • en mdbtools (0 visite) : interface avec les fichiers MDB

  • en PAM (0 visite) : Intégration PAM

  • en cairo_wrapper (0 visite) : Interface avec la bibliothèque Cairo

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

  • en syck (0 visite) : analyseur et émetteur de code YAML

  • en PHK (0 visite) : accélérateur PHK


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

 



 

Décembre 2007 – Nexen.net: Pourquoi REMOTE_ADDR n'est pas une valeur sûre

Image pour le titre du contenu
Il est connu que très peu de données fournies dans $_SERVER sont sécuritaires, mais REMOTE_ADDR a toujours été une des plus sûres. Gareth Heyes vous montre comment réaliser une injection XSS via cette balises, et certaines techniques courantes sur un site Web. En conclusion, méfiez vous de toutes les données en provenance de l'utilisateur!

Décembre 2007 – Nexen.net: Calendrier de l'avant PHP : un truc par jour jusqu'à Noel!

Image pour le titre du contenu
Chris Shiflett lance le calendrier de l'avant en PHP : tous les jours d'ici noel, un expert de la communauté va publier un truc PHP pour améliorer votre connaissance de la plate-forme. Le premier jour a été pris en charge par Sean Coates : il se consacre à la fonction mail(), et au problème classique de l'envoi de mail sans avoir vérifié que le débogage n'est pas actif....

Décembre 2007 – Nexen.net: HTTP_Session2 0.6.0

Image pour le titre du contenu
HTTP_Session2 est une interface objet pour l'extension de session de PHP, apportant au passage des fonctionnalités supplémentaires, et un stockage en base de données natif. Le paquet est disponible chez PEAR, et support PostGreSQL et MySQL.

Décembre 2007 – Nexen.net: Des icones pour vos applications Web

Image pour le titre du contenu
Les icones fournissent une aide considérable dans une interface, en aidant l'utilisateur à comprendre les fonctions disponibles, sans le faire repasser par la case de la documentation. Elles sont vitales et doivent aussi être belles...
Smashing Magazine en a donc recensée une plusieurs douzaines de source, pour tous vos besoins.

Décembre 2007 – Nexen.net: Calendrier de l'avent PHP : un truc par jour jusqu'à Noel!

Image pour le titre du contenu
Chris Shiflett lance le calendrier de l'avent en PHP : tous les jours d'ici noel, un expert de la communauté va publier un truc PHP pour améliorer votre connaissance de la plate-forme. Le premier jour a été pris en charge par Sean Coates : il se consacre à la fonction mail(), et au problème classique de l'envoi de mail sans avoir vérifié que le débogage n'est pas actif....

Décembre 2007 – Nexen.net: Alertes sécurité des applications PHP et MySQL, édition 172

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.5 et 4.4.7; MySQL 5.0.45 (communauté) , 4.1.22, ainsi que 5.1.22-beta et 6.0.3.
Les mises à jour sont recommandées vers ces versions.



3 alertes de sécurité ont été émises cette semaine, concernant des applications suivantes :
PHP Nuke, phpMyAdmin et vBulletin



Décembre 2007 – PHP Index: MemHT 3.4 Français

La version française de MemHT 3.4 vient de sortir.
Cette nouvelle version apporte son lot de correctifs et de nouvelles fonctions.

En voici le changelog ( en français :) )

- [New] Nouveaux langages Arabe, Bulgare, Danois, Hollandais, Hongrois, Russe
- [New] Nouvelles options d'enregistrement des utilisateurs:
- Les utilisateurs peuvent s'enregistrer avec ou sans email d'activation
- Les créations de comptes peuvent être modérées (par approbation de l'administrateur)
- [New] Catégories et sous catégories maintenant illimitées dans la section des téléchargements
- [New] Liste des tags complète en page d'accueil
- [New] Restriction des téléchargements au public, utilisateurs enregistrés et/ou groupes
- [New] RSS syndication dynamique
- [New] Nouveau système de statistiques
- [New] Nouvelle structure de la FAQ
- [Fix] Correctifs de sécurité
- [Fix] Correctif argument id dans la page SendNews page
- [Mod] La boite de navigation a maintenant sa propre page dans l'administration
- [Mod] RSS page structure
- [Mod] Mise à jour du plan du site
- [Mod] Modifications mineures

Site officiel français: www.memht-france.com

Proposé par Cyril Levert

Décembre 2007 – tigrou/pwet.fr: Benchmark between eZ Publish 4 and eZ Publish 3.10 with or without a PHP opcode cache

After 2 alphas and one beta release, eZ Publish 4 rc1 has been released last week . I'm trying to upgrade but I'm facing an encoding problem . In the meantime, I made a benchmark between eZ Publish 4rc1 with PHP 5.2.5 and eZ Publish 3.10.0 with PHP 4.4.7 on a Debian Etch system using the Dotdeb packages . I also tested the performances of APC , eAccelerator and XCache opcode cache modules in those configurations.

Protocol

I'm using the recommended configuration for Virtual Host setup of eZ Publish . I wrote this shell script to test performances of eZ Publish.

#! /bin/sh
 
REQUESTS=100
CONCURRENCY=2
TESTS=5
PAUSE_TESTS=90
URL='http://dev.pwet.fr/blog'
DATA_LOG_DIR=~/tests/results_php4_blog/
CONF_DIR=~/tests/conf
PAUSE_CONF=180
 
PHP_CONFD=/etc/php4/apache/conf.d/
 
[ ! -d $DATA_LOG_DIR ] && mkdir -p $DATA_LOG_DIR
 
for ini in $CONF_DIR/* ; do
    INI_BASE=`basename $ini`
    echo $INI_BASE
    DATA_LOG="$DATA_LOG_DIR/$INI_BASE.dat"
    [ -f $DATA_LOG ]  && rm -f $DATA_LOG
    touch $DATA_LOG
    # active extension
    ln -s $ini $PHP_CONFD/$INI_BASE
    /etc/init.d/apache restart > /dev/null  2>&1 
    sleep 2
 
    # initialize cache
    wget $URL -O /dev/null > /dev/null 2>&1
    sleep 2
 
    # tests
    for i in `seq 1 $TESTS` ; do
        echo "  Test $i"
        ab -c $CONCURRENCY -n $REQUESTS $URL | grep 'Requests per' | tr -s ' ' | cut -d ' ' -f 4 >> $DATA_LOG
        sleep $PAUSE_TESTS
    done
    sleep $PAUSE_CONF
 
    rm -f $PHP_CONFD/$INI_BASE
    /etc/init.d/apache restart
done

I've run this shell script with a PHP4 setup (eZ Publish 3.10) and then with a PHP5 setup (eZ Publish 4.0rc1) sharing the same database. The script uses 4 configurations of PHP (no opcode cache, apc, eaccelerator, xcache), for each it makes 5 series of 100 requests with a concurrency of 2 with ab (Apache Benchmark) and it logs the mean number of requests per second. There are pauses between tests. I've run those tests on two pages of this site on a dedicated test server, the first one is the /blog page with view cache et cache-block enabled and the second one is /man/linux but with no view cache and no cache-block at all in order to see how eZ Publish 4 and 3.10 performs on retrieving its cache or on building a page from scratch. The first one makes 6 SQL queries and uses 2 cache-block and its view cache. The second one, without content related caches, makes about 100 SQL queries an displays about 10 XML blocks and 3 dynamic lists.

Result with a cached page

Without an opcode cache on cached page, eZ Publish 4 is about 10% quicker than eZ Publish 3.10 but with an opcode cache system, the difference is about 50% ! It's interesting to note that with PHP4, eAccelerator seems to be the faster yet , about 10% more than APC or XCache but with PHP5 there's almost no difference (more or less 2%).

Result with a page without content related cache

In this test, without an opcode cache, eZ Publish 4 is 85% faster than eZ Publish 3.10. And with an opcode, eZ Publish 4 using PHP 5.2.5 is about 150% faster than eZ Publish 3.10 !

Conclusion

No doubt, eZ Publish 4 is really faster than eZ Publish 3.10 and even more with an opcode cache.

I think I'm going to test eZ Publish 4 and 3.10 with apache 1.3 and apache 2.2 and perhaps with different configuration of MySQL 5.0, stay tuned :)

Décembre 2007 – PHP Québec: 6/18 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mercredi et jeudi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratiques sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: à déterminer

Animateurs: à déterminer

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 18 Juin 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – PHP Québec: 5/28 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mercredi et jeudi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratiques sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: à déterminer

Animateurs: à déterminer

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 28 Mai 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – PHP Québec: 4/23 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mercredi et jeudi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratiques sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: à déterminer

Animateurs: à déterminer

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 23 Avril 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – PHP Québec: 3/26 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mercredi et jeudi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratiques sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: à déterminer

Animateurs: à déterminer

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 26 Mars 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – PHP Québec: 2/20 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mercredi ou jeudi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratique sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: JSR-283 pour PHP (TYPO3 V5)

La norme JSR-283 est l'évolution de la norme JSR-170 qui viennent toutes les deux du monde JAVA. Ces normes permettent de mettre en place un espace de contenu (repository) pour remplacer une base de données et donc de ce fait de stocker des données. Mais actuellement aucun projet en PHP n'utilise cette norme, sauf peut être le projet "Jackrabbit" de la fondation Apache basé sur la première version (JSR-170). Du coté de JAVA et de l'opensource, nous pouvons citer Alfresco, qui a réalisé une très bonne intégratin de la norme JSR-283. C'est alors que les développeurs de prochaine version majeure de TYPO3 (version 5) se sont intéressé à ce procédé pour remplacer l'utilisation d'une base de donnée et d'en tirer les avantages. Actuellement en développement
cette intégration pourrait avoir lieu dans le framework du nom de FLOW3, développé spécialement pour cette nouvelle version de TYPO3. Nous essayerons d'en savoir plus sur cette norme et son avantage par rapport à une base de données traditionnelle.

Animateurs: Yannick Pavard

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 20 Février 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – PHP Québec: 1/15 19:00 Laboratoire PHP

L'équipe de PHP Quebec de Québec vous invite aux laboratoires PHP qui ont lieu tous les troisièmes mardi du mois dans les locaux d'Omnitronik Solutions.

Les laboratoires sont des espaces collaboratifs où la discution et la pratiques sont à l'honneur. Au départ, un participant, déterminé à l'avance, lance la discution en nous présentant ce qu'il connait du sujet du mois ou en nous démontrant ses expérimentations. Nul besoin d'être un expert en la matière puisque tous les participants sont encouragés à renchérir les propos, à montrer leurs propres exemples pratiques et même à poursuivre sur des sujets autres ou plus avancés. Les laboratoires mettent donc l'accent sur la mise en commun des connaissances et des expériences au bénéfice de tous un chacun.

SUJET: DOJO et COMET

DOJO est une boîte à outil (un peu comme plusieurs librairies Javascript) facilitant le développement d'applications Web 2.0 (Ajax et compagnie). Son penchant interface (UI) du nom de DIJIT améliore le rendu graphique des applications développées grâce à des éléments pratiques (toolbars, fenêtres déplaçables, listes accordéons). Nous verrons brièvement comment intégrer Dojo et Dijit à vos applications.

La branche expérimentale de Dojo, nommée DojoX comporte plusieurs éléments encore en "élaboration" par l'équipe de développeurs. Un de ces composants est une classe d'utilisation de méthodes de communications COMET (le successeur à Ajax); il permet une communication en temps presque réel entre le navigateur et le serveur sous forme de queue de messages (Message Queuing). Ce composant a beaucoup de potentiel, nous ferons une démonstration de son fonctionnement.

Par dessus tout, cette boîte outil est distribuée sous license BSD; vous pouvez l'intégrer sans tracas dans vos projets. Si vous êtes intéressés à en connaître d'avantage sur Dojo, Dijit et Comet(d) ou à partager de votre expérience venez nous rejoindre au prochain laboratoire PHP de PHP Québec.

Animateurs: Michel Belleau, Sylvain Lévesque

Confirmez votre présence:
info@phpquebec.org

Proposez un sujet pour un prochain laboratoire ?
info@phpquebec.org


Date : 15 Janvier 2008
Heure : 19h00
Lieu : Omnitronik Solutions, Québec
Adresse: 871, Grande-Allée Ouest Suite RC-50 (entrée indépendante à l'arrière de l'édifice)
Carte : http://tinyurl.com/27hc7m (près des résidences Mérici)
Ville : Québec

N.B. Le stationnement est gratuit dans la zone visiteur (premier stationnement à droite), des jetons vous serons distribués lors du laboratoire.

Décembre 2007 – Nexen.net: Divisez, Indentez, Commentez et Nommez

Image pour le titre du contenu
Ce sont les quatre piliers d'une bonne programmation PHP selon Nick Halstead.

  • Divisez les lignes en plusieurs insctructions simples

  • Indentez en fonction du niveau d'imbrication

  • Commentez pour orienter

  • Nommez intelligemment vos fonctions et variables

Décembre 2007 – Nexen.net: Invasions d'éléphpants

Image pour le titre du contenu
Voici les dernières nouvelles des éléphpants :

  • Les éléphpants sont enfin passé voir leur papa : Vincent Pontier!
  • Les éléphpants ont pris d'assaut les locaux d'Anaska : résultat, anaska offre un éléphpant à chaque personne qui prend une formation chez eux d'ici le 31 décembre.
  • Les éléphpants présents à la conférence PHP au Brésilµ


Si vous voulez le votre pour Noel, dépêchez-vous!

Décembre 2007 – Nexen.net: MySQL Falcon Preview : 6.0.4

Image pour le titre du contenu
MySQL publie sa version 6.0.4, avec le moteur Falcon en mode 'Feature preview'. Cette publication donne à la communauté la possibilité de tester les nouvelles fonctionnalités, et corrige deux problèmes de performances importants (les pages étaient forcées sur le disque, même si cette opération était trop longue, et le moteur SQL finit par être trop en avance sur le moteur de stockage).
Le code source et la version windows sont disponibles sur un serveur FTP, mais pas encore sur dev.mysql.com.

Décembre 2007 – Nexen.net: L'Avent PHP : 2 décembre

Image pour le titre du contenu
L'article du 2 décembre est proposé par Elizabeth Naramore, et s'intitule "Écrire du code ressemble à faire la vaisselle (5 raisons pourquoi documenter votre code fait de vous un meilleur programmer.". Un parallèle entre la programmation et comment se faire aider pour faire la vaisselle qui pourra en éclairer plus d'un.

Décembre 2007 – Rom's blog: PHP 6.0-dev et MySQL 5.1.22rc pour WampServer

Je viens de publier deux nouveaux addons permettant de tester PHP 6.0-dev et MySQL 5.1.22rc sur WampServer. J’en ai profité pour créer une rubrique dédiée aux dev, beta et rc sur le site de WampServer histoire de ne pas les mélanger avec les versions stables de A M P.

Vous pourrez le trouver sur cette page :

http://www.wampserver.com/addons_dev.php

Bons tests ;-)

Décembre 2007 – Sorcellerie Web: Détecter les préférences du navigateur

Il bien plus agréable pour l'internaute de disposer directement du contenu qui le concerne (langue, navigateur, OS...) plutot que de devoir fouiller le site web pour l'obtenir. Cela améliore son expérience de navigation, et donc l'attrait pour votre site.

Beaucoup d'entre nous se sont habitués à chercher, en arrivant sur un site, s'il n'en existait pas une version dans sa propre langue. On cherche alors où sont les petits drapeaux, les micro-liens avec code de langue sur deux caractères, etc. Et beaucoup d'utilisateurs ne les trouvent pas, et quittent le site immédiatement, faute de pratiquer la langue affichée. Pourtant, quand le contenu d'un site est traduit, le plus gros du travail est fait; pourquoi ne pas l'afficher directement dans la langue spécifiée par l'internaute pour son navigateur ?

bookmarklets_delicious_oper.pngCeci est également valable pour d'autres préférences. La page de téléchargement de Firefox par exemple est non seulement traduite dans la langue de l'internaute, mais la version proposée au téléchargement est celle correspondant à son système d'exploitation. Tout aussi efficace, la page de bookmarklets pour Del.icio.us est automatiquement adaptée au navigateur en cours. Ceci est possible grâce aux données de préférences et d'environnement utilisateur transmises par le navigateur au serveur web via les en-têtes HTTP.

Outre les préférences de langue, et les particularités eventuelles de l'environnement système d'exploitation/navigateur, il peut être souhaitable de détecter le support de javascript, surtout pour les sites utilisant ajax pour certaines de leurs fonctionnalités. Tout comme le support de flash. La liste est longue, car les possibilités d'HTTP sont encore largement sous-utilisées.

Bien evidemment, il faut garder à l'esprit que ces données ne sont pas fiables, et ne doivent être utilisées que pour définir la version du contenu par défaut, et toujours permettre à l'utilisateur de modifier ces réglages si possible via des liens et des contrôles manuels.

Pour ce qui est de PHP, vous pouvez utiliser un de mes bouts de script ( getting browser language settings with php), ou la classe phpsniff qui semble bien plus complete (pas encore utilisée, je viens de tomber dessus).

Décembre 2007 – Nexen.net: Graphiques et camemberts avec PHP/SWF Charts

Image pour le titre du contenu
"Dans ce tutoriel, je vous présente PHP/SWF Charts, une excellente solution pour créer des graphiques basés sur PHP et Flash. PHP/SWF supporte une large palette de format, incluant les barres, les bougies, les colonnes 3D, les camemberts (2D et 3D), et des formats avancés tels que les éclatés, les nuages de points ou les graphiques polaires. Voyez la galerie de formats sur leur site pour mieux comprendre."
PHP/SWF n'est pas un logiciel à code ouvert, mais une version gratuite est librement utilisable et redistribuable.

Décembre 2007 – Nexen.net: Tutoriel CouchDB : interface REST JSON en quelques clics

Image pour le titre du contenu
"Pour illustrer la simplicité et la vitesse de développement de CouchDB, nous allons construire une liste de tâches simple en JavaScript. Vous devez être familier avec HTML, JavaScript et DOM. Vous n'avez besoin d'aucune expérience Ajax, même si nous allons l'utiliser d'une manière abstraite."
CouchDB est un serveur de base de document, accessible via une API REST JSON. Ce n'est pas une base de données. CouchDB est l'oeuvre de Damien Katz.

Décembre 2007 – Nexen.net: eZ Publish 4.0 : compatibilité PHP 5 complète

Image pour le titre du contenu
Nous avons le plaisir d'annoncer la première version stable de eZ Publish 4.0.0 et eZ Flow 1.0. Ces versions livrent d'importantes évolutions à eZ Publish, au bénéfice de tout l'écosystème eZ. eZ Publish 4 témoigne de notre volonté de fournir un environnement stable pour produire des solutions de gestion de contenu d'entreprise, tandis que eZ Flow permet aux éditeurs d'afficher un contenu riche, dynamique et multimédia, avec une interface adaptée aux éditeurs non-techniques.
eZ Publish 4.0

  • Compatibilité PHP 5 complète

  • Support total des eZ Components, la bibliothèque de composants professionnels de eZ

  • Amélioration des performances

  • Amélioration de la gestion interne du XML, avec de meilleures performances et une consommation mémoire réduite

Décembre 2007 – tigrou/pwet.fr: eZ Publish 4

eZ Publish 4 est enfin sorti , j'en ai déjà beaucoup parlé lors de la sortie d'eZ Publish 4 Alpha1 , après le eZ Publish Developper Day à Paris et encore hier avec mon benchmark entre eZ Publish 3.10 et eZ Publish 4 avec différentes configurations de PHP. Maintenant il n'y a plus qu'à l'utiliser. Mais surprise intéressante, l'extension eZ Flow annoncée et présentée lors du developper day est intégrée à cette version. J'ai regardé avec attention la vidéo de présentation qui reprend grosso modo la démonstration du 31 octobre; c'est assez impressionnant d'intégration et de facilité d'utilisation reste à voir si ce sera facilement utilisable/intégrable avec ses propres design et templates...

Enfin avis personnel, la version à vraiment attendre est la prochaine stable prévue en début d'année qui marquera l'intégration réelle et profonde des eZ Components ce qui promet des changements beaucoup plus importants et probablement des améliorations dans bien des secteurs (performances, flexibilité, ...).

Décembre 2007 – Rom's blog: mysqlnd, un driver MySQL optimisé pour PHP

Pour se connecter à une base de données MySQL avec PHP, il existe trois solutions (ou connecteurs) : mysql, mysqli et PDO.
Ces connecteurs ont tous leurs spécificités et sont apparus au fur et à mesure des évolutions de PHP.
Point commun entre ces trois connecteurs, ils se basent tous sur la bibliothèque libmysql qui fut initialement développée pour les langages C et C++.

Une des grandes nouveautés de PHP 5.3 est l’apparition de la bibliothèque mysqlnd, bibliothèque développée par MySQL spécifiquement pour PHP. Wouhou, ils s’intéressent enfin à PHP, il était temps!

Alors, tout d’abord, il est important de ne pas confondre : mysqlnd n’est pas un nouveau connecteur! Il s’agit d’une bibliothèque utilisée par les connecteurs. Au niveau de l’utilisation il n’y aura donc pas particulièrement de changement, vous continuerez à utiliser mysqli ou PDO au choix.

Mais alors que va apporter cette nouveauté?

Bah tout d’abord, des performances. mysqlnd a été développé spécifiquement pour fonctionner avec PHP et passe donc par le gestionnaire de mémoire du Zend engine. Cela permet d’avoir une meilleure gestion de l’allocation de la mémoire et un gain en terme de cycles CPU. A noter que la directive MEMORY_LIMIT s’appliquera donc maintenant aux connecteurs utilisant cette bibliothèque. Mais le gros point fort vient du système de gestion de la mémoire introduit par mysqlnd.
Pour schématiser, jusqu’ici, lorsqu’on faisait une requête avec MySQL, le jeu de résultat de la requête était stocké en mémoire et chaque fetch que vous faisiez allait taper dans ce jeu de résultat pour créer de nouvelles variables, celles justement renvoyées par votre fetch et utilisables dans votre script PHP (généralement, un tableau). Avec mysqlnd, les copies ne sont plus effectuées, à chaque fetch, vos variables PHP pointent directement sur les adresses mémoire de votre jeu de résultat MySQL à utiliser ce qui évite les doublons et permet donc de grosses économies de mémoire.

ensuite, mysqlnd introduit de nouvelles fonctionnalités. J’ai dit nouvelles? Pardon, le mot n’est peut être pas juste. En effet, dans les “nouvelles” fonctionnalités, il y a tout d’abord les connexions persistantes.
Elles avaient été abandonnées avec le connecteur mysqli pour des problèmes de performances et de stabilité (voir ce post très intéressant : http://www.mysqlperformanceblog.com/2006/11/12/are-php-persistent-connections-evil/).
Apparemment, ces problèmes ont été résolus avec mysqlnd puisque cette fonctionnalité réapparaît. Reste à voir si cela a un véritable intérêt.
Autre nouveauté, des fonctions de statistiques vont être disponibles, statistiques qui vous permettront d’optimiser vos scripts. Ces fonctions ont déjà été intégrées dans mysqli dans la PHP 5.3 : mysqli_get_client_stats(), mysqli_get_connection_stats() ou encore mysqli_get_cache_stat().

Enfin d’autres fonctionnalités sont également introduites comme un système de cache de requête côté client (par client, comprenez PHP, en opposition à MySQL) ou encore l’utilisation de l’API de gestion de flux de PHP (streams).

concernant la licence, mysqlnd est publié sous licence PHP ce qui permet de réintroduire le support natif de MySQL dans PHP 5.3.

Pour le moment, mysqlnd a été intégré aux extensions mysql et mysqli et est en train d’être intégré à PDO.

Enfin voilà, que des bonnes nouvelles pour les habitués du trio AMP!

Décembre 2007 – sahid.funraill.org: Récuperer ses contacts MSN, Gmail, Yahoo avec PHP

Classe PHP pour vos contacts MSN, Gmail Yahoo…

Pour les besoins d’un projet au boulot, j’ai du faire quelques recherches afin de trouver comment récupérer les contacts des boites msn, yahoo, gmail, et autres… le problème est que sur le net on trouve de nombreux Web service proposant ces fonctionnalités mais tres peu de librairies libres …

Apres de multiples recherches je suis tombé sur plusieurs classes intéressantes, et j’ai donc pensé les rassembler pour en faire un petit paquetage simple d’emploi

Présentation de la classe Contacts

En utilisant le pattern decorator et une petite factory je suis arrivé à faire en sorte de simplifier un maximum son utilisation

Un exemple du decorator avec Gmail

  1. class GmailDecorator
  2. {
  3.   private $_instance;
  4.   private $_user;
  5.   private $_pass;
  6.  
  7.   public function __construct ($user, $pass)
  8.   {
  9.     require (‘libs/importGmail.class.php’);
  10.     $this->_instance = new GMailer;
  11.     $this->_user = $user;
  12.     $this->_pass = $pass;
  13.   }
  14.  
  15.   public function getContacts ()
  16.   {
  17.     $result = array ();
  18.     if (!is_object ($this->_instance))
  19.       throw new Exception (“Aucune instance GMailer”);
  20.     $this->_instance->setLoginInfo ($this->_user, $this->_pass, “+1GMT”);
  21.     if ($this->_instance->connect ())
  22.       {
  23.         $this->_instance->fetchBox (GM_CONTACT, ‘all’, );
  24.         $snapshot = $this->_instance->getSnapshot (GM_CONTACT);
  25.         $this->_instance->disconnect ();
  26.         $i = 0;
  27.         if (isset ($snapshot->contacts))
  28.           foreach ($snapshot->contacts as $contact)
  29.             {
  30.               $result[$i][‘name’] = $contact[‘name’];
  31.               $result[$i][‘email’] = $contact[‘email’];
  32.               $i++;
  33.             }
  34.         return $result;
  35.       }
  36.     else
  37.       throw new Exception (‘Impossible de se connecter’);
  38.   }
  39. }
  40.  
  41. class YahooDecorator {}
  42. class MSNDecorator {}
  43. # etc …
  44.  

Ensuite la Factory s’occupe de nous retourner l’objet en fonction du type qu’on lui passe en paramètre

  1. class Contacts
  2. {
  3.   public static $arr_type = array (‘Gmail’, ‘MSN’, ‘Yahoo’, ‘Lycos’, ‘AOL’);
  4.  
  5.   public static function factory ($user, $pass, $type)
  6.   {
  7.     if (in_array ($type, self::$arr_type))
  8.       {
  9.         $class = “{$type}Decorator”;
  10.         return new $class ($user, $pass);
  11.       }
  12.     else throw new Exception (‘Invalide type, utilisez : ‘.implode (“, “, self::$arr_type));
  13.   }
  14. }

Etat du paquetage Contacts (MAJ : 27/08/08)

   Gmail Retourne un tableau vide
   Yahoo! Teste réussi avec @yahoo.fr
   AOL Teste réussi avec @aol.com
   Lycos Teste réussi avec @lycos.com
   MSN Teste réussi avec @hotmail.fr @hotmail.com

NOTE : Gmail, AOL, Yahoo, et Lycos, n’ont pas besoin du suffixe @host.com

Un petit exemple

Décembre 2007 – Nexen.net: __autoloading : débarassez-vous de vos include

Image pour le titre du contenu
__autoload() est une fonction PHP 5 qui permet de charger une définition de classe au moment où PHP en a besoin, et non pas en anticipant les besoins du script à l'aide d'un require ou include.
__autoload() a été introduit en PHP 5, et permet de faire disparaître virtuellement toutes les inclusions, hormis celles de configuration. En se basant sur la convention 'un fichier, une classe' on peut facilement monter un système de rangement propre de son framework.

Décembre 2007 – Nexen.net: Symfony face à Zend Framework

Image pour le titre du contenu
Symfony et Zend Framework sont les deux frameworks dont on parle le plus, assurément. Les deux ont leurs similarités : ils sont MVC, ne fonctionnent pas en PHP 4, et très fortement orienté objets.
Karl Katzke a poussé la comparaison plus loin, sur des aspects qui les sépare : installation,
test unitaires, système de gabarits, modules, bases de données. De quoi vous aider dans votre choix.

Décembre 2007 – Nexen.net: Introduction aux architectures de haute disponibilité DRBD pour MySQL

Image pour le titre du contenu
Mercredi, 12 Décembre , 2007 - Séminaire web
Assurer la disponibilité des systèmes et laccès aux données est plus crucial que jamais pour les entreprises, quelle que soit leur taille. Pour de nombreuses entreprises modernes, lactivité toute entière dépend dune présence en ligne, à assurer impérativement 24 heures sur 24.
DRBD est un « bloc device » qui exploite les capacités de réplication synchrone de façon transparente pour lapplication, la base de données ou le système de fichiers. Utilisé parallèlement au package open-source Linux Heartbeat, il permet aux architectes de solutions de concevoir une base de données MySQL capable d'exploiter les fonctions de basculement (failover) automatique des ressources après une panne, sous une configuration « hot standby » garantissant la sécurité totale des transactions.
Durant ce séminaire Web nous explorerons comment DRBD et MySQL peuvent vous aider à:
Assurer la haute disponibilité de vos données et la resynchronisation en cas de panne
Gérer le basculement de lapplication et de la base de données
Réduire vos coûts
QUI:
Serge Frezefond, Ingénieur avant-vente, MySQL France.
SUJET:
Séminaire web: Introduction aux architectures de haute disponibilité DRBD pour MySQL.
QUAND:
Mercredi 12 Decémbre 2007: 10h00 CET (heure de Paris)
Présentation de 50 minutes suivie par questions/réponses.
OÙ:
Votre bureau, via votre navigateur.
POURQUOI:
Pour comprendre comment mettre en place une solution de haute disponibilité en utilisant MySQL et DRBD.

Décembre 2007 – Nexen.net: Hybride code et MySQL Workbench

Image pour le titre du contenu
MySQL annonçait à la fin du mois de Novembre la disponibilité de MySQL WorkBench, en deux éditions : la version communauté, gratuite, et la version Standard, payante. Cette approche de l'Open Source est appelée hybride : à la fois à code fermé et ouvert.
"Si vous pensez que tous les logiciels doivent être libres, vous penserez que c'est un problème. Mais cette approche reste positive pour tout le monde : l'approche hybride permet d'accéder à des logiciels qui serait resté intégralement propriétaire autrement.", résume sogady, sur redmonk.
C'est vrai que cela peut être frustrant de se dire, "j'aurai pu avoir cette interface", mais quand je vois tout ce que je peux faire avec MySQL (et le workbench quand il sera sur mac) de manière légale et gratuite, je me dis que je n'en ferai pas beaucoup plus avec une version payante et plus puissante. Ce n'est pas le cas de tout le monde, mais c'est sûrement le cas du plus grand nombre.

Décembre 2007 – Nexen.net: mysqlnd, un driver MySQL optimisé pour PHP

Image pour le titre du contenu
Pour se connecter à une base de données MySQL avec PHP, il existe trois solutions (ou connecteurs) : mysql, mysqli et PDO.
Ces connecteurs ont tous leurs spécificités et sont apparus au fur et à mesure des évolutions de PHP.
Point commun entre ces trois connecteurs, ils se basent tous sur la bibliothèque libmysql qui fut initialement développée pour les langages C et C++.
Une des grandes nouveautés de PHP 5.3 est lapparition de la bibliothèque mysqlnd, bibliothèque développée par MySQL spécifiquement pour PHP. Wouhou, ils sintéressent enfin à PHP, il était temps!

Décembre 2007 – Nexen.net: Comment éviter les filesort de MySQL

Image pour le titre du contenu
C'est un peu paniquant de trouver Using filesort dans la colonne finale d'une commande EXPLAIN. Parfois c'est vraiment ennuyeux de ne pas pouvoir la faire disparaître. Heureusement, il existe des techniques pour éviter de le subir.

Décembre 2007 – PHPortail: Sécurité : Je suis vulnérable... (04/12/07)

Une expérience vécue pas Olivier Veujoz : « Soumis à un audit de sécurité récemment, l'application que je conçois avec soin était vulnérable à une attaque de type Cross Site Scripting,...

Décembre 2007 – PHPortail: Tests pas mutation (04/12/07)

Vous connaissez les tests de mutations? Ce sont des tests unitaires qui complètent la couverture de code. Pour ce faire, il faut appliquez vos tests unitaires et si,tout fonctionne, effectuez une...

Décembre 2007 – PHPortail: Comparatif des performances des ORM PHP (04/12/07)

Vous avez surement entendu parler des ORM (Object Relational Mapper)? Mais qu'est-ce que c'est? Simplement un outil permettant de manipuler les tables d'une base de données en utilisant des objets. ...

Décembre 2007 – PHPortail: Sécurité : Suhosin 0.9.21 (04/12/07)

Une nouvelle version de l'extension Suhosin vient de sortir. Elle vient encore renforcer la sécurité de vos applications PHP en y ajoutant un certain nombre de protections supplémentaire pour vos...

Décembre 2007 – PHP Index: Séminaire web sur la haute disponibilité DRBD pour MySQL

Le Mercredi 12 Décembre 2007 aura lieu un séminaire web sur le sujet "Introduction aux architectures de haute disponibilité DRBD pour MySQL".
Ce séminaire sera tenu par Serge Frezefond, Ingénieur avant-vente chez MySQL France à 10h00 pour une durée de 45 minutes suivi de questions-réponses, tout cela via votre navigateur.

Qu'est-ce que DRBD ?
C'est un "bloc device" qui exploite les capacités de réplication synchrone de façon transparente pour l’application, la base de données ou le système de fichiers. Utilisé parallèlement au package open-source Linux Heartbeat, il permet aux architectes de solutions de concevoir une base de données MySQL capable d'exploiter les fonctions de basculement (failover) automatique des ressources après une panne, sous une configuration « hot standby » garantissant la sécurité totale des transactions.

Ce séminaire vous permettra de comprendre comment mettre en place une solution de haute disponibilité en utilisant MySQL et DRBD et ainsi :
- Assurer la haute disponibilité de vos données et la resynchronisation en cas de panne
- Gérer le basculement de l'application et de la base de données
- Réduire vos coûts

Pour vous inscrire, c'est par
Afin de participer à cette présentation Web vous nécessiterez l'utilisation d'un des navigateurs suivants : voir la liste

Proposé par Clément Péronneaud

Décembre 2007 – Kamelot Blog: Bloc commentaire désactivable

Si au lieu d'écrire vos blocs commentaires comme ceci

[php]
<?php 
/*
    echo 'toto';
*/
?>
Vous faites
[php]
<?php 
/*
    echo 'toto';
//*/
?>

Il suffit d'ajouter un / devant l'ouverture du bloc pour le réactiver

[php]
<?php
//*
echo 'toto';
//*/
?>

Pour le réactiver 2 solutions :
  1. ° retirer le / ajouté
  2. ° ou ajouter un * derrière le / ajouté
[php]
<?php
/*/*
echo 'toto';
//*/
?>

L'avantage de cette 2eme solution c'est de "reconnaitre facilement" un bloc commentaire switchable

En effet, vous prendrez vite le réflexe en voyant un /*/* que c'est un bloc switchable, alors que face à un /* vous devez aller vérifier la fermeture du bloc

Décembre 2007 – Nexen.net: Bulle technologique

Image pour le titre du contenu
Un regard humoristique sur la vague actuelle des réseaux sociaux et de la bulle technologique qui les entoure. A écouter à fond les baffles.

Décembre 2007 – Nexen.net: Les boulettes courantes en code PHP

Image pour le titre du contenu
Kore Nordmann recense les coquilles dans le code qui sont le plus fréquentes en PHP. Par exemple, oublier l'instruction if dans une condition, ou les parenthèses dans une expression de concaténation.
Mon classique est l'opérateur d'égalité qui devient un simple =, et donc une assignation. Cela me fait généralement perdre beaucoup de temps, même si je sais que le truc est de mettre la constante en premier.
En avez-vous d'autres à proposer? Laissez-les sur le blog de Kore.

Décembre 2007 – Nexen.net: Introduction à l'art des tests unitaires en PHP

Image pour le titre du contenu
"Si vous ne testez pas votre code, comment pouvez-vous être certains qu'il fonctionne comme attendu? Les tests manuels sont exécutés irrégulièrement, et de manière limitée. La réponse à la question est alors dans les tests unitaires, qui peuvent tester le code de manière régulière, profonde et fréquemment."
Avec des tests unitaires automatisés, on peut surtout vérifier que les fonctionnalités de base sont toujours actives. En exécutant une suite de tests, une centaine de situations peuvent être rapidement vérifiées, et cela donne une confiance dans le produit final incroyable. Pas totale, mais déjà bien tangible.

Décembre 2007 – Nexen.net: Calendrier de l'avent PHP 2007 : 3,4 et 5 décembre

Image pour le titre du contenu
Chris Shiflett publie le calendrier de l'Avent PHP, avec des trucs d'experts PHP pour tout le monde.

  • Sebastian Bergmann : PHP et svn

  • James McGlinn : PHP et SSL

  • Cal Evans : les sources d'informations PHP

Décembre 2007 – Nexen.net: Gestionnaire de sortie outputbuffer et les regex

Image pour le titre du contenu
Le gestionnaire de sortie, ce buffer interne de PHP qui collecte le contenu avant d'être publié en ligne, peut être utilisé pour habiller automatiquement le contenu d'un entête et d'un pied e page, sans intervention manuelle. À l'aide d'une petite classe, Arnolds Daniels propose une solution, avec la possibilité de faire varier certaines parties du template à chaque page.
Au passage, jetez donc un oeil sur le fonctionnement des regex : vous comprendrez mieux comment une expression anodine peut d'un seul coup devenir TRES vorace.

Décembre 2007 – Nexen.net: Vidéo PHP et MySQL, édition 23

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