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

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).
"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."
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.
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!
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....
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.
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.
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....
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
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
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 :)
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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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
COMETDOJO 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.orgProposez un sujet pour un prochain laboratoire ?
info@phpquebec.orgDate : 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.
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
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!
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.
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.
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 
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 ?
Ceci 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).

"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.
"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.
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
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é, ...).
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!
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
-
class GmailDecorator
-
{
-
private $_instance;
-
private $_user;
-
private $_pass;
-
-
public function __construct ($user, $pass)
-
{
-
require (‘libs/importGmail.class.php’);
-
$this->_instance = new GMailer;
-
$this->_user = $user;
-
$this->_pass = $pass;
-
}
-
-
public function getContacts ()
-
{
-
-
-
throw new Exception (“Aucune instance GMailer”);
-
$this->_instance->setLoginInfo ($this->_user, $this->_pass, “+1GMT”);
-
if ($this->_instance->connect ())
-
{
-
$this->_instance->fetchBox (GM_CONTACT, ‘all’, ”);
-
$snapshot = $this->_instance->getSnapshot (GM_CONTACT);
-
$this->_instance->disconnect ();
-
$i = 0;
-
if (isset ($snapshot->
contacts))
-
foreach ($snapshot->contacts as $contact)
-
{
-
$result[$i][‘name’] = $contact[‘name’];
-
$result[$i][‘email’] = $contact[‘email’];
-
$i++;
-
}
-
return $result;
-
}
-
else
-
throw new Exception (‘Impossible de se connecter’);
-
}
-
}
-
-
class YahooDecorator {}
-
class MSNDecorator {}
-
# etc …
-
Ensuite la Factory s’occupe de nous retourner l’objet en fonction du type qu’on lui passe en paramètre
-
class Contacts
-
{
-
public
static $arr_type =
array (‘Gmail’,
‘MSN’,
‘Yahoo’,
‘Lycos’,
‘AOL’);
-
-
public
static function factory
($user,
$pass,
$type)
-
{
-
-
{
-
$class = “{$type}Decorator”;
-
return new $class ($user, $pass);
-
}
-
else throw
new Exception
(‘Invalide type, utilisez : ‘.
implode (“, “, self::
$arr_type));
-
}
-
}
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
__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.
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.
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.
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.
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!
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.
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,...
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...
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. ...
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...
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 là
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
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 :
- ° retirer le / ajouté
- ° 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
Un regard humoristique sur la vague actuelle des réseaux sociaux et de la bulle technologique qui les entoure. A écouter à fond les baffles.
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.
"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.
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
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.
Voici les 5 dernières vidéos PHP et MySQL.