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

Avril 2009 – tigrou/pwet.fr: Comparaison de performances entre eZ Publish 4.0.1 et 4.1

C'est la saison des benchmarks autour d'eZ Publish :) Bertrand a fait une intéressante comparaison entre le mode cluster et le mode classique, suivi de près par un article sur ez.no mettant en évidence le gain apporté par le fameux Stale Cache dans la génération du cache de contenu. De mon côté, j'ai adapté les scripts de mon benchmark entre eZ Publish 3.10 et eZ Publish 4 pour comparer cette fois uniquement les performances sur une page en cache de ce site (/blog) avec eZ Publish 4.0.1, eZ Publish 4.1 sans optimisation et eZ Publish 4.1 avec un fichier config.php ; le but étant de déterminer le gain apporté par les différentes améliorations de performances pour un site sur un seul serveur.

Informations techniques

  • Serveur : une Dedibox v1 ancienne génération (processeur Via C7 à 2Ghz avec 1Go de RAM)
  • Logiciels : Apache 2.2.8, PHP 5.2.4 avec le module xcache, MySQL 5.0.51
  • Caractéristique de la page : la page fait les 3 requêtes SQL minimum (session, chargement des langues et détermination de la page concernée)
  • Test : plusieurs séries de 500 requêtes avec un concurrence de 2 réalisées avec l'utilitaire ab sur chacune des installations

Le fichier config.php :

<?php
define( 'EZP_USE_BUNDLED_COMPONENTS', true );
define( 'EZP_INI_FILEMTIME_CHECK', false );
?>

Résultats

Le résultat est plutôt spectaculaire. La simple mise à jour en 4.1 donne un gain de presque 30% dans la distribution d'une page en cache ! Avec la configuration ci-dessus dans le fichier config.php le gain est même de 50% ! Pendant les phases de tests, j'ai également constaté que la charge de la machine est bien plus faible. Comme d'habitude ces chiffres sont à prendre avec des pincettes, ils représentent le gain sur un site bien optimisé (enfin j'espère) sur un serveur bas de gamme. Un test sur un serveur plus haut de gamme serait vraiment intéressant.

Avril 2009 – PHP Index: CrawlTrack 3.0.0

CrawlTrack 3.0.0 est enfin disponible au téléchargement.

CrawlTrack avec cette nouvelle version devient un véritable tableau de bord du webmaster.
Fini le temps ou le script ne s'intéressait qu'aux robots; il est maintenant capable de vous donner une vue complète de l'activité sur votre site. Que ce soit, les visiteurs (combien? d'où viennent-ils?), les robots, l'indexation, les téléchargements de fichiers, les erreurs 404 et les tentatives de piratages.
Vous trouverez plus d'informations, une démonstration et le lien de téléchargement en suivant ce lien: www.crawltrack.net/fr

Proposé par Jean-Denis Brun

Avril 2009 – Nexen.net: CrawlTrack 3.0.0

Image pour le titre du contenu
CrawlTrack est une application destinée avant tout pour les webmasters et toutes les personnes qui désirent connaître le type de visiteurs, les robots, les tentatives de prises de contrôle...
Cette nouvelle version propose maintenant un véritable tableau de bord pour effectuer une très bonne analyse. Elle propose aussi une vue complète de l'activité de votre site internet.

Avril 2009 – Nexen.net: PHP Edit 3.2

Image pour le titre du contenu
PHP Edit est un IDE français qui depuis de nombreuses années évolue régulièrement.
Mais cette nouvelle version se voit doter de nouvelles possibilités qu'il est important de souligné.
Les principales évolutions portent sur Symfony et YAML

Avril 2009 – Nexen.net: Massive CSS

Image pour le titre du contenu
Le magazine Tripwire offre un tour d'horizon sur les boites à outils CSS, de tutorials et code secrets
Pour certains développeurs, l'utilisation des CSS est une des parties les plus importantes du web basé sur des normes modernes de conception par rapport à d'autres techniques.
Cependant quelque soit votre choix, vous aurez besoin d'utiliser un peu les CSS pour vos projets Webs en PHP et MySQL
http://www.tripwiremagazine.com/Tools/CSS-Tools/css-mega-toolbox.html

Avril 2009 – PHP Québec: 5/7 19:00 Rencontre mensuelle - Montréal

PHP Québec vous convie à la rencontre mensuelle du mois de mai.

En première partie, Cedric Fontaine présentera "Utiliser l'API php de Facebook pour développer une application Facebook". Il s'agit de partir d'un exemple d'une application developpée à partir de l'API en php5 pour comprendre les possibilités offertes par Facebook pour proposer des applications.

En deuxième partie, Maxime Bouroumeau-Fuseau nous parlera de "Atomik: un framework pour tous". La présentation introduira le framework et ses principes. Après un tour des fonctionnalités, Maxime fera une petite démo. Il présentera aussi les plugins les plus importants.
[url]http://www.atomikframework.com[/url]

Date : 7 mai 2009
Heure : 19h00

Lieu : École de technologie supérieure, Montréal
Salle : à confirmer
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html

Vous aimeriez faire une présentation ou vous avez un sujet à proposer pour une prochaine rencontre? Veuillez contacter les organisateurs: board@phpquebec.com

Prochaine activité:
- 4 juin: rencontre mensuelle

Avril 2009 – Nexen.net: Nouvelle version de MySQL : 5.1.33

Image pour le titre du contenu
MySQL 5.1.33 vient d'être publiée et il est recommandé de l'utiliser
Cette version est la dernière version stable avant la sortie de MySQL 5.2

Avril 2009 – Nexen.net: Utilisation de PHP et Jquery

Image pour le titre du contenu
Votre langage PHP vous permet de réaliser de nombreuses choses, mais il peut être souvent d'utiliser votre langage avec d'autres environnement comme Jquery
Le site Noupe.com propose et montre la possibilité d'utiliser 20 façons différentes PHP et Jquery, vous permettant ainsi de réaliser vos sites internet différents.
La liste des thèmes sont :
- Répertoire des arbres avec PHP et jQuery
- Créer un site de photos d'administration et l'utilisation de PHP jQuery
- Commentaires Asynchronous avec PHP, jQuery, JSON et
- PHP ajax formulaire de connexion en utilisant JQuery
- PHP + jQuery Liste de tâches à la partie 1, partie 2
- Module Newsletter
- À partir de PHP XML pour jQuery et Ajax
- Comment valider les formes des deux côtés en utilisant PHP et jQuery
- Créer une shoutbox en PHP et AJAX
- HOWTO: PHP et jQuery télécharger la barre de progression
- Auto-Complete Field avec jQuery, JSON et PHP
- Une fantaisie Apple.com style suggestion de recherche
- PHP & jQuery image upload and crop v1.2
- FlickrScrollr
- Reddit style voter avec PHP, MySQL et jQuery
- Commentaires SMTP Mail classe avec jQuery Slide Effect
- Ajax Ajouter un enregistrement à l'aide du bouton Changer Situation jQuery
- Rafraîchissement d'un élément à un intervalle de temps ensemble en utilisant jQuery et une pincée d'Ajax
- CakePHP Ajax "Quick Save" avec jQuery
- PHP / jQuery Image de remplacement

Avril 2009 – PHP Index: Zend Framework 1.7.8

Zend a annoncé il y a quelques jours la sortie du Zend Framework 1.7.8. Cette nouvelle version mineure apporte son lot de corrections de bugs.

La liste des corrections est disponible dans le changelog.

Avril 2009 – Nexen.net: Integration de firePHP

Image pour le titre du contenu
Le blog de Christophe Dorn a réalisé un guide pour intégrer FirePHP dans une application ou un site web qui utilise Ajax.
Ce guide va vous montrer comment utiliser, optimiser, intégrer et repérer facilement les problèmes pouvant apparaître dans votre application.
Un très bon guide pour soulager le développeur.

Avril 2009 – tigrou/pwet.fr: Quelques nouveautés d'eZ Publish 4.1

Il n'y a pas que des améliorations de performances dans eZ Publish 4.1. L'annonce de la sortie de la version 4.1 liste les plus grosses nouveautés (stale cache, object states, ...) et d'autres améliorations attendues depuis un bon moment. Je pense en particulier à l'ajout de déclencheurs sur d'autres opérations que l'affichage d'un objet (content/read), la publication (content/publish) ou ceux dédiés au module de boutique. Mais eZ Publish 4.1 apporte aussi d'autres améliorations qui sont passées pour le moment un peu inaperçues comme l'amélioration des content edit handler ou les extensions de type output filter.

Validation avec un content edit handler

Jusqu'à eZ Publish 4.0 un content edit handler permettait uniquement lancer un bout de PHP au moment de la publication d'un contenu. Il s'agit d'un mécanisme apparu dans eZ Publish 3.8 qui permet d'implémenter tout un tas de fonctionnalités comme la mise à jour d'un cache spécifique, la publication à partir d'une date renseignée dans un attribut, la création d'un espace personnel lors de l'ajout d'un utilisateur, ... J'ai toujours vu ce mécanisme comme une sorte d'évènement de workflow post publish en beaucoup plus simple (pas de code de retour, pas de syntaxe alambiquée, pas de possibilité de laisser le travail à script cron...).

Dans eZ Publish 4.1, il est maintenant possible d'implémenter une méthode de validation dans un content edit handler, en fonction du retour de celle-ci, l'objet part en publication, sinon le formulaire affiche le/les messages comme lorsqu'on oublie de remplir un champ obligatoire par exemple. Dans certains cas, ce nouveau mécanisme peut largement simplifier les choses notamment en permettant la vérification de règles syntaxiques supplémentaires sans nécessiter le développement d'un datatype spécifique ce qui est parfois un peu lourd pour juste ajouter une validation simple (validation d'un code postal, d'une longueur minimale d'une ligne de texte, d'un domaine particulier pour un email, ...)

Extension output filter

Il s'agit d'un nouveau type d'extension qui permet d'ajouter un traitement sur le code de la page entière. La documentation dans le SVN de cette nouvelle fonctionnalité donne comme exemple la réécriture des URL des composants de la page en fonction de la position géographique. Pour les validatorophiles, on peut aussi imaginer corriger les éventuels problèmes de validation (X)HTML grâce à un filtre utilisant l'extension php-tidy ou encore remplacer des tags prédéfinis par des éléments générés par un autre système (une version PHP des SSI ou d'ESI simpliste). Bien évidemment comme cette fonctionnalité permet de traiter l'ensemble du code de la page, il faut se méfier des effets néfastes sur le temps de génération des pages.

Avril 2009 – tigrou/pwet.fr: Queqlues nouveautés d'eZ Publish 4.1

Il n'y a pas que des améliorations de performances dans eZ Publish 4.1. L'annonce de la sortie de la version 4.1 liste les plus grosses nouveautés (stale cache, object states, ...) et d'autres améliorations attendues depuis un bon moment. Je pense en particulier à l'ajout de déclencheurs sur d'autres opérations que l'affichage d'un objet (content/read), la publication (content/publish) ou ceux dédiés au module de boutique. Mais eZ Publish 4.1 apporte aussi d'autres améliorations qui sont passées pour le moment un peu inaperçues comme l'amélioration des content edit handler ou les extension de type output filter.

Validation avec un content edit handler

Jusqu'à eZ Publish 4.0 un content edit handler permettait uniquement lancer un bout de PHP au moment de la publication d'un contenu. Il s'agit d'un mécanisme apparu dans eZ Publish 3.8 qui permet d'implémenter tout un tas de fonctionnalités comme la mise à jour d'un cache spécifique, la publication à partir d'une date renseignée dans un attribut, la création d'un espace personnel lors de l'ajout d'un utilisateur, ... J'ai toujours vu ce mécanisme comme une sorte d'évènement de workflow post publish en beaucoup plus simple (pas de code de retour, pas de syntaxe alambiquée, pas de possibilité de laisser le travail à script cron...).

Dans eZ Publish 4.1, il est maintenant possible d'implémenter une méthode de validation dans un content edit handler, en fonction du retour de celle-ci, l'objet part en publication, sinon le formulaire affiche le/les messages comme lorsqu'on oublie de remplir un champ obligatoire par exemple. Dans certains cas, ce nouveau mécanisme peut largement simplifier les choses notamment en permettant la vérification de règles syntaxiques supplémentaires sans nécessiter le développement d'un datatype spécifique ce qui est parfois un peu lourd pour juste ajouter une validation simple (validation d'un code postal, d'une longueur minimale d'une ligne de texte, d'un domaine particulier pour un email, ...)

Extension output filter

Il s'agit d'un nouveau type d'extension qui permet d'ajouter un traitement sur le code de la page entière. La documentation dans le SVN de cette nouvelle fonctionnalité donne comme exemple la réécriture des URL des composants de la page en fonction de la position géographique. Pour validatorophile, on peut aussi imaginer corriger les éventuels problèmes de validation (X)HTML grâce à un filtre utilisant l'extension php-tidy ou encore remplacer des tags prédéfinis par des éléments générés par un autre système (une version PHP des SSI ou d'ESI simpliste). Bien évidemment comme cette fonctionnalité permet de traiter l'ensemble du code de la page, il faut se méfier des effets néfastes sur le temps de génération des pages.

Avril 2009 – Nexen.net: Nouveau serveur Zend en PHP

Image pour le titre du contenu
Zend annonce la sortie de la version finale des nouveaux serveurs d'applications Web en PHP. Il s'agit de :
  • Zend server
  • Zend server community edition

pour avoir le détail exact, il suffit de consulter le communauté officiel

Avril 2009 – Nexen.net: PHP 5.2.9-2

Image pour le titre du contenu
L'équipe de développement PHP vient annoncer une nouvelle version pour de PHP 5.2.9-2 pour Windows.
Cette version se concentre sur la fixation des failles de sécurité inclus dans la bibliothèque OpenSSL (CVE-2009-0590, CVE-2009-0591 et CVE-2009-0789).
La bibliothèque OpenSSL a été mis à jour 0.9.8k, qui comprend des correctifs pour ces failles.
Cette version concerne seulement les possesseurs de Windows

Avril 2009 – Kamelot Blog: benchmark de php pour sprintf, strtr et str_replace

J'ai testé sprintf, strtr et str_replace. 100K passages sur chaque test.
Une version avec time(), une autre juste hello.
J'ai pris 4 références de comparaison pour faire le tableau. La colonne qui m'intéresse le plus est la référence 4. où le sprintf sur hello est 1.

Résultat

éxécuté 100000 fois
testchrono secondesratio
'hello'
ratio
time()
ratio
sprintf('a %s', time())
ratio
sprintf('a %s', 'hello')
$a = time();0.063431.868531.000000.314490.41980
$a = sprintf('a %s', time());0.201705.941503.179771.000001.33487
$a = str_replace('%s', time(), 'a %s');0.215586.350463.398641.068831.42675
$a = strtr('a %s', array('%s'=> time() ));0.286588.441904.517931.420841.89663
$a = str_replace('%t', time(), str_replace('%u', time(), str_replace('%s', time(), 'a %s %t %u'));0.5586716.457108.807512.769853.69740
$a = str_replace(array('%t','%u','%s'), array(time(),time(),time(),), 'a %s %t %u');0.6897120.3171210.873313.419534.56463
$a = strtr('a %s %t %u', array('%s'=> time(), '%t'=> time(), '%u'=> time(), ));0.4964314.623837.826372.461303.28552
$a = 'hello';0.033951.000000.535180.168310.22467
$a = sprintf('a %s', 'hello');0.151104.450992.382080.749141.00000
$a = str_replace('%s', 'hello', 'a %s');0.161224.749052.541600.799301.06696
$a = strtr('a %s', array('%s'=> 'hello' ));0.200345.901463.158340.993261.32588
$a = str_replace('%t', 'hello', str_replace('%u', 'hello', str_replace('%s', 'hello', 'a %s %t %u'));0.4081712.023656.434812.023672.70134
$a = str_replace(array('%t','%u','%s'), array('hello','hello','hello',), 'a %s %t %u');0.5182515.266578.170362.569483.42993
$a = strtr('a %s %t %u', array('%s'=> 'hello', '%t'=> 'hello', '%u'=> 'hello', ));0.319299.405615.033691.583032.11315
[PHP]
<?php

$timeList = array();
$testTitle  = array();
$testTitle [] = "\$a = time();";
$nb_occur=100000;
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
   $a = time();
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;
$refTime2=$time;
$testTitle [] = "\$a = sprintf('a %s', time());";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = sprintf('a %s', time());
}

$time_end = microtime(true);
$time = $time_end - $time_start;
$refTime3=$time;
$timeList[]=$time;

$testTitle [] = "\$a = str_replace('%s', time(), 'a %s');";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = str_replace('%s', time(), 'a %s');
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = strtr('a %s', array('%s'=> time() ));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = strtr('a %s', array('%s'=> time() ));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = str_replace('%t', time(), str_replace('%u', time(), str_replace('%s', time(), 'a %s %t %u'));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = str_replace('%t', time(), str_replace('%u', time(), str_replace('%s', time(), 'a %s %t %u')));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = str_replace(array('%t','%u','%s'), array(time(),time(),time(),), 'a %s %t %u');";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{

    $a = str_replace(array('%t','%u','%s'), array(time(),time(),time(),), 'a %s %t %u');
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = strtr('a %s %t %u', array('%s'=> time(), '%t'=> time(), '%u'=> time(), ));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = strtr('a %s %t %u', array('%s'=> time(), '%t'=> time(), '%u'=> time(), ));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;



$testTitle [] = "\$a = 'hello';";
$nb_occur=100000;
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
   $a = 'hello';
}

$time_end = microtime(true);
$time = $time_end - $time_start;
$refTime1=$time;
$timeList[]=$time;

$testTitle [] = "\$a = sprintf('a %s', 'hello');";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = sprintf('a %s', 'hello');
}

$time_end = microtime(true);
$time = $time_end - $time_start;
$refTime4=$time;
$timeList[]=$time;

$testTitle [] = "\$a = str_replace('%s', 'hello', 'a %s');";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = str_replace('%s', 'hello', 'a %s');
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = strtr('a %s', array('%s'=> 'hello' ));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = strtr('a %s', array('%s'=> 'hello' ));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = str_replace('%t', 'hello', str_replace('%u', 'hello', str_replace('%s', 'hello', 'a %s %t %u'));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = str_replace('%t', 'hello', str_replace('%u', 'hello', str_replace('%s', 'hello', 'a %s %t %u')));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = str_replace(array('%t','%u','%s'), array('hello','hello','hello',), 'a %s %t %u');";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = str_replace(array('%t','%u','%s'), array('hello','hello','hello',), 'a %s %t %u');
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


$testTitle [] = "\$a = strtr('a %s %t %u', array('%s'=> 'hello', '%t'=> 'hello', '%u'=> 'hello', ));";
$time_start = microtime(true);
for ($i=0 ; $i<$nb_occur; $i++)
{
    $a = strtr('a %s %t %u', array('%s'=> 'hello', '%t'=> 'hello', '%u'=> 'hello', ));
}

$time_end = microtime(true);
$time = $time_end - $time_start;

$timeList[]=$time;


echo 'éxécuté '.$nb_occur.' fois <table border=1><tr><th>test<th>chrono secondes<th>ratio<br/>\'hello\'<th>ratio<br/>time()<th>ratio<br />sprintf(\'a %s\', time())<th>ratio<br/>sprintf(\'a %s\', \'hello\')</tr>';
foreach($timeList as $k=>$chrono)
{

    echo '<tr><td>' . $testTitle [$k]    
    . '<td>' 
    . sprintf('%01.5f',$chrono) 
    . '<td />' 
    . sprintf('%01.5f',$chrono/$refTime1) 
    . '<td />' 
    . sprintf('%01.5f',$chrono/$refTime2) 
        . '<td />' 
    . sprintf('%01.5f',$chrono/$refTime3) 
        . '<td />' 
    . sprintf('%01.5f',$chrono/$refTime4) 
    
    ;

}
echo '</table>';
?>

Avril 2009 – z-f.fr: Zend Framework 1.8a1

Forum: Brèves
Auteur: mikaelkael
Écrit le: Wed, 08 Apr 2009 09:06:46 +0200
Dernier message: Thu, 09 Apr 2009 23:45:26 +0200

Avril 2009 – Nexen.net: PHP Camp 2 et TestFest

Image pour le titre du contenu
AFUP (Association Française des Utilisateurs de PHP) annonce la deuxième édition du BarCamp orienté PHP à Paris. Ce rendez-vous se déroulera 9 mai 2009 toute le journée.
Il s'agit d'un évènement gratuit et ouvert à tous et comme la première édition, une partie « PhpCamp et TestFest » aura lieu.
Alors n'hésitez pas à consulter l'annonce officielle de ce rendez-vous.

Avril 2009 – Nexen.net: PHPCDP

Image pour le titre du contenu
PHPCPD est une API permettant de Détecter le code PHP en effectuant un copier / coller.
Le but phpcpd n'est pas de ne pas remplacer des outils déjà existants, tels que phpcs, pdepend ou phpmd, mais plutôt de proposer une alternative
Il va vous permettre certaines fonctions plus rapidement comme par exemple d'obtenir un aperçu rapide de duplication de code dans un projet.

Avril 2009 – Apprendre-PHP.com - apprendre à programmer avec le langage PHP: BarCamp PHP

Un second BarCamp PHP de l'AFUP se tiendra le samedi 09 mai prochain dans les locaux de la Cantine. Inscription gratuite et obligatoire

Avril 2009 – PHP Québec: 5/7 19:00 Rencontre mensuelle - Montréal

PHP Québec vous convie à la rencontre mensuelle du mois de mai.

En première partie, Cedric Fontaine présentera "Utiliser l'API php de Facebook pour développer une application Facebook". Il s'agit de partir d'un exemple d'une application developpée à partir de l'API en php5 pour comprendre les possibilités offertes par Facebook pour proposer des applications.

En deuxième partie, Maxime Bouroumeau-Fuseau nous parlera de "Atomik: un framework pour tous". La présentation introduira le framework et ses principes. Après un tour des fonctionnalités, Maxime fera une petite démo. Il présentera aussi les plugins les plus importants.
http://www.atomikframework.com

Date : 7 mai 2009
Heure : 19h00

Lieu : École de technologie supérieure, Montréal
Salle : B-2620
Metro: Bonaventure
Carte : http://www.etsmtl.ca/zone2/enbref/rendre.html

Si vous le souhaitez, confirmez votre présence sur :
Facebook: http://www.facebook.com/event.php?eid=70073243162
Upcoming: http://upcoming.yahoo.com/event/2402752/

Vous aimeriez faire une présentation ou vous avez un sujet à proposer pour une prochaine rencontre? Veuillez contacter les organisateurs: board@phpquebec.com

Prochaine activité:
- 4 juin: rencontre mensuelle

Avril 2009 – Nexen.net: Integration de PHP dans CSS

Image pour le titre du contenu
Le site PHPRO.ORG montre la possibilité d'intégrer du PHP dans une feuille CSS.
Il est nécessaire d'effectuer quelques opérations de préparations au début, et ensuite, l'utilisation et l'intégration s'effectue très facilement.

Avril 2009 – Nexen.net: 15 points avant de lancer votre site Web

Image pour le titre du contenu
Le site Smashing Magazine rappelle dans son dernier article, certains points à prendre en compte avant la mise en ligne d'un site internet car souvent oubliés.
Ils sont aux nombres de 15 :
  • Favicon
  • Titles And Meta Data
  • Cross-Browser Checks
  • Proofread
  • Links
  • Functionality Check
  • Graceful Degradation
  • Validation
  • RSS Link
  • Analytics
  • Sitemap
  • Defensive Design
  • Optimize
  • Back Up
  • Print Style Sheet

Avril 2009 – Nexen.net: Actualité de développement PEAR, edition 243

Image pour le titre du contenu

3 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.

 

 

Avril 2009 – Nexen.net: Actualité de développement PECL, edition 240

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :
  • timezonedb : base de données de fuseaux horaires pour PHP
  • intl : Extension d'internationalisation
  • memcached : Extension PHP pour la bibliothèque libmemcached
  • mongo : Mongo Database Driver
PECL est la bibliothèque d'extensions C de PHP.

 

 

Avril 2009 – Nexen.net: Accroitre la productivité avec PHPCompute

Image pour le titre du contenu
PHPCompute est une nouvelle façon d'utiliser le langage PHP.
Ainsi, vous pourrez utiliser le noeud PHPCompute et d'écrire des scripts PHP, pour transformer les messages WebSphere dans WebsSphere Message Broker.
Le site IBM vous montre comment l'utiliser étape par étape

Avril 2009 – Hello Design: PHP Solutions Hors Serie 1/2009 (4)

Un numéro Hors Série « PHP pour les débutants » vient de paraître.

Dans ce numéro, vous pourrez découvrir de ma part :
  • Un article : Découvrez YahooBOSS
  • Des cours vidéo sur le CD ROM :
    • Bases de PHP
    • Connexion avec une base de donnée MySQLi
    • Apprendre facilement PHP avec Artichow



Les autres articles sont :
  • Les bases de PHP – 1ère partie
  • Les bases de PHP – 2ème partie
  • Introduction à la POO avec PHP
  • Gérer une base de donnée MySQL avec phpMyAdmin
  • Communiquer avec une base de données avec PDO
  • Prendre en main symfony
  • Introduction au forum phpBB3
  • Principes de bse d'un moteur SQL avec MySQL
  • Ma première application HELLO WOLD avec AMFPHP
  • Découvrez YahooBOSS
  • Il est facile de mal programmer

Avril 2009 – Nexen.net: 15 Firefox add ons for Web developers

Image pour le titre du contenu
Des add-ons firefox pour les développeurs
Le navigateur Firefox est le navigateur apprécié de la majorité des utilisateurs et aussi des développeurs.
Cependant, beaucoup moins de personnes utilisent des add-ons que l'on peut greffer dessus pour aider les développeurs et développeuses à vérifier que leurs développements se déroulent correctement.
Le site Cnet NEWS propose 15 add-ons qui sont très utiles :
  • Aardvark
  • ColorZilla
  • CSS Validator
  • CSSViewer
  • FireBug
  • FirePHP
  • Font Finder
  • HTML Validator
  • IE View
  • Java Console
  • LinkChecker
  • Poster
  • Style Sheet Chooser II
  • Web Developer
  • YSlow

Avril 2009 – Kamelot Blog: Inserer une valeur au milieu d'un array.

Question : j'ai un tableau array('a','b','c','e','f',); je veux y ajouter le d entre 'c' et 'e';

On peut ne pas y penser mais array_splice s'en sort très bien

$mon_tableau = array_splice($mon_tableau, $position, 0, $ma_valeur);

$ma_valeur sera ajouté en position $position (en commençant à 0) dans le tableau $mon_tableau et tous les éléments à partir de la position $position dans le tableau d'origine seront décalés.

[php]
<?php
var_export( array_splice( array('a','b','c','e','f',), 3, 0, 'd'));
?>
[output]
array('a','b','c','d','e','f',);

En fait dans array_splice($mon_tableau, $position, 0, $ma_valeur);

  • position dit à partir de quelle position je dois supprimer des cellules.
  • 0 précise le nombre de cellules à supprimer
  • et ma valeur indique quelle valeur je dois mettre à la place de ce que j'ai supprimé

Avril 2009 – Hello Design: Mon portail reprend forme...

Après plus d'un an de sommeil et d'attente, l'ensemble des rubriques touchant mes différentes activités sont de nouveaux affichés (php, bureautique, internet, base de données...)

L'intégralité apparaitra prochainement avec bien sur quelques surprises, mais de nombreuses rubriques existent permettant ainsi de naviguer sur ce portail.

A suivre....

Avril 2009 – Hello Design: PHP au centre

En naviguant sur Internet, je suis tombé sur la photo suivante :

phpcentre.jpg

Le lien de la source : http://www.flickr.com/photos/garywang/193213537/

Pour ma part, Il n'y a pas photo... PHP est centre des intérêts de tous :)

Avril 2009 – Nexen.net: PHP Net_IDNA

Image pour le titre du contenu
PHP Net_IDNA est un projet différent de ce qui est vue généralement. Il s'agit d'une classe pour convertir entre les formats Punycode et Unicode.
Punycode est un standard dans la RFC 3492 et une partie de la RFC3490 (Idna = nternationalisation des noms de domaine dans les applications).
Cette classe va donc vous permettre de convertir des scripts PHP pour ces noms de domaine, sans avoir l'une des extensions PHP installées.

Avril 2009 – Nexen.net: Personnalisation des utilisateurs de PHP

Image pour le titre du contenu
Le site WebReference propose un article en 4 parties sur le thème de la personnalisation de l'utilisateur pour les identifications.
Cet article vous parle :
  • La préparation de la demande
  • La vérification et contrôle du code
  • Le login
  • Enregistrement des utilisateurs

Avril 2009 – PHP Index: Nouvelle version de SPIP : 2.0.7 (et 1.9.2h)

Plusieurs failles de sécurité ont été signalées dernièrement.
Elles ne sont pas triviales à exploiter mais il a été décidé de sortir une nouvelle version des séries 1.9.2 et 2.0

La version stable recommandée pour un site en production est donc la version SPIP 2.0.7 (téléchargeable ici).

Si vous avez une version de la série 1.9.2 vous pouvez trouver votre bonheur ici (la version 1.9.2h)

Pour finir, voici le traditionnel passage de chinois/japonais/wolof/flamand/indou/anglais selon la langue que l'on ne connait pas :

2.0.6 -> 2.0.7 (13 avril 2009)

Revision: 13887 Le datage des urls reecrites echouait pour cause de
requette eronnee. Le suspens continue : y aura-t-il une version stable
2.0.x avec des urls reecrites non bugguees ?
Revision: 13882 patch de vincent ramos pour #1703 + report des trucs
modernes de inc/rechercher dans la branche 2.0
Revision: 13881 pas de . en dehors de celui separant l'extension,
sinon il est possible d'injecter du php dans un toto.php.txt,
qu'apache peut vouloir traiter comme un .php normal (attaque dite 'de
vlad' )
Revision: 13880 session_set() lorsqu'on renseigne son email (suite de [13878])
Revision: 13879 report [13878] afficher l'email de l'auteur connecte
si on le connait (session)
Revision: 13877 report et nettoyage de ecrire_fichier_securise()
Revision: 13876 report de ecrire_fichier_securise [13867] pour mieux
masquer le contenu de tmp/meta_cache.txt(.php) en cas d'ouverture
inopinee de tmp/ aux regards curieux
Revision: 13873 retour de la pagination dans le controle des petitions
(bug introduit en [13320])
Revision: 13872 Report de [13868] corrigeant l'aléa ancien.
Revision: 13870 revert de [13846] qui casse le fonctionnement de la
pagination AJAX
Revision: 13865 il faut securiser les appels à propre et typo hors
squelette (typiquement code php de l'espace privé), mais dans les
squelettes, la sécurisation est intégrée, et il ne faut pas en
rajouter. On utilise donc la presence du parametre connect pour
distinguer les appels des squelettes qui le comportent tous, des
appels historiques hors squelettes qui ne le mentionnent jamais.
Corrolairement, en cas d'appel hors squelette avec un parametre
connect, il convient d'appeler en plus interdire_script
Revision: 13862 Nouvelle méthode pour l'authentification LDAP, qui
devrait résoudre le bug dans certaines config d'Active Directory.
Géraud Tardif remarque qu'il est idiot de risquer des bugs avec des
champs absents pour trouver le login, puisqu'on l'a déjà. Il vaut donc
mieux se rabattre sur lui, mais on modifie les signatures des
fonctions auxilaires pour qu'il soit facile de surcharger
{{{auth_ldap}}} de sorte qu'on réclame des champs supplémentaires et
qu'on en tienne compte.
Revision: 13859 Ignorer les lignes vides dans les CSV lorsque
transformés en table HTML à la volée (Cyril).
Revision: 13858 Ne pas utiliser intval quand on fabrique une requête
SQL, celui-ci ayant des grands entiers en standard, contrairement à
PHP (Camille). Vu son logo on aurait dû se méfier: un PHP, ça tronque
énormément.
Revision: 13857 Les distributions RedHat, Fedora et CentOS ont
maintenant une installation d'Apache par défaut qui font que le
AllowOverride est à None par défaut, avec comme conséquence que les
{{{deny from all}}} installés par SPIP ne sont plus effectifs sur ces
distributions non modifiées. En conséquence, report immédiat dans la
branche stable de [13608], qui n'écrit plus dans tmp la valeur des
aleas, qui sont des informations trop sensibles. A signaler à propos
des aléas que l'alea_ancien n'est pas pris en compte pour les actions
dont l'URL comporte ecrire/, il faut renoncer à ces URLs. Enfin, il
faudrait insister dans la doc sur le fait que tmp/ et config/ doivent
être interdits à la lecture publique, idéalement en les mettant à
l'extérieur du DocumentRoot.
Revision: 13856 Bug de puce 'meme-rubrique" des sites references
Revision: 13853 un flag manquant pour preciser que l'on est dans l'espace prive
Revision: 13852 pas d'exe´cution en public non plus !
Revision: 13850 il est temps de suivre la prévision des oracles
proteger l'espace privé, donc...
Revision: 13848 eviter le die intempestif "spip_urls AS U insertion
sans description" lors de la creation de nouvelles urls ... (bug
introduit au detour de
http://zone.spip.org/trac/spip/changeset/13838#file22)
Revision: 13846 indentation + meilleure verification sr onAjaxLoad(),
pour compat crayons++
Revision: 13845 enieme correction des urls ... je vais peut-etre finir
par y arriver
Revision: 13844 report oublie de [13765] qui reparait les urls arbo
avec types renommes
Revision: 13843 permettre a la previsu de savoir ou elle se trouve
(cf. http://www.spip-blog.net/forum-spip-org-comme-base-de.html )
Revision: 13841 log plus explicite
Revision: 13839 erreur sql sur date
Revision: 13838 NOW() disparait au profit de la date php (a verifier svp)
Revision: 13836 la date d'un article c'est celle du php, pas celle du SQL

Proposé par Jacques PYRAT

Avril 2009 – Kamelot Blog: PhpMyAdmin "avancé" (partie 1)

Il existe plein d'options dans phpMyAdmin pas très connues.

Trois me plaisent plus particulièrement.

  • le regroupement de table par préfix
  • L'historique des commandes. (Partie 2)
  • la gestion des relations (Partie 2)

le regroupement de table par préfix

C'est une option liée au LeftFrameLight.

Il faut mettre à true $cfg['LeftFrameLight'] et $cfg['LeftFrameDBTree']

Puis $cfg['LeftFrameDBSeparator'] et/ou $cfg['LeftFrameTableSeparator'] doivent être modifiés pour indiquer qu'elle est le séparateur de votre convention de nommage.

Défini par défaut à '__'.

Si vous avez des tables telles que 'première__seconde__troisième' elles seront affichées comme une hiérarchie à trois niveaux telle que : premier > seconde > troisième.

Pour finaliser $cfg['LeftFrameTableLevel'] définit le nombre de sous-niveaux qui doivent être affichés quand les tables sont subdivisées par le séparateur ci-dessus.

En pratique

Dans mon cas LeftFrameTableSeparator vaut _

Si je regarde la db INFORMATION_SCHEMA , j'ai 2 tables dont le nom commence par Table_

dans le frame de gauche je ne les vois pas toutes les 2 mais j'ai

Si je clique sur le +, j'obtiens

Ca ne fait pas grand chose sur INFORMATION_SCHEMA qui ne compte que quelque tables mais quand vous en avez 400 réparties dans une 10aine de sous groupe


Partie 1 - (Partie 2)

Avril 2009 – Hello Design: PHP Apero à Bourges

Avec l'évènement "Le Printemps de BOURGES"

Un PHP apéro est organisé pendant cet évènement à l'Ilo Victor Hugo... Dans le bar : Euro-café à 19h00 le 24 Avril 2009

Pour venir nous retrouver... c'est très facile.. un elePHPant sera présent sur la table

Avec la présence du trésorier de l'AFUP (Association des Utilisateurs de PHP)

Pour en savoir plus : [ http://www.aperophp.net/apero.php?id=382|http://www.aperophp.net/apero.php?id=382|fr]

Avril 2009 – Nexen.net: Yahoo! Developer Network (YDN)

Image pour le titre du contenu
Yahoo! Developer Network (YDN) est un ensemble de nouveaux services Web que Yahoo propose pour rendre plus simples et interressants :
  • Le développement de Mashups
  • L'enrichissement de contenus
  • La création de nouvelles applications Web

Avec l'arrivée de cette nouvelle plateforme destinée aux développeurs et développeuses de sites internet, et pour les impatients de voir les différentes possibilités qui sont offertes, Yahoo organise un rendez-vous à la Cantine le 29 avril prochain.
Mais de nombreux articles sous la forme de « TUTORIAUX » sont en cours de parution dans de nombreux magazines et sites internets comme PHP solution, Programmez, PHP Team... Etc.
Vous pouvez consulter le communiquer officiel pour en savoir plus.

Avril 2009 – Kamelot Blog: Config avec Zend ou Pear

Zend_Config et Pear::config sont conçus pour simplifier l'accès et l'utilisation des données de configuration dans les applications.

Les données de configuration peuvent venir de sources variées supportant une organisation hiérarchique des données.

Actuellement Zend_Config fournit des adaptateurs pour les données de configuration qui sont stockées dans des fichier textes avec Zend_Config_Ini et Zend_Config_Xml.

De son coté Pear::config propose Apache, GenericConf, IniCommented, IniFile, PHPArray, PHPConstants, XML.

Je ne suis pas encore à l'aise ni avec l'un, ni avec l'autre.

Ce qu'il me faut c'est :

  • une possibilité de gérer plusieurs fichiers qui regroupent "sémantiquement" les valeurs de configuration.
  • Ces fichiers doivent être administrables avec auteur et versionning des modifications.
  • Il faut une gestion de staging.
  • Il faut un éditeur de config auto généré.
  • un cache transparent qui évite un reparsing des fichiers.
  • Une possibilité d'overrider une valeur au niveau applicatif.

edit : Oops c'est article a été publié inachevé.

Le fond du problème c'est de se dire qu'une config c'est avant tout une liste de valeurs variable/paramétrable dont la valeur n'est pas assignée par le développeur, mais par un utilisateur.

  • un administrateur technique (même si c'est la même personne. Ce n'est pas la même casquette. Le développeur c'est celui qui crée le code, l'administrateur technique c'est celui qui dit comment il va fonctionner.)
  • un administrateur non technique qui n'a pas à bidouiller dans un fichier de config. (même s'il prétend en être capable)

Pour ce dont j'ai besoin

  • Il faut une gestion de staging. <- existe dans Zend_config (cfr commentaire fragile)
  • un cache transparent qui évite un reparsing des fichiers. <- possible avec PEAR et ZF
  • Une possibilité d'overrider une valeur au niveau applicatif. <- possible mais il faut le prévoir soigneusement dans le code

On avait implémenté plusieurs des autres points dans Claroline mais ce dernier n'utilise ni PEAR::Config, ni Zend_Config

L'idée est d'avoir une config de config.

Avoir une liste des valeurs de config avec leur définition, contexte, type, ...

Avoir un outil d'édition des fichiers de config qui se base sur ces listes pour

  • afficher le formulaire d'édition de des fichiers de config
  • versionner les modification de config, ou tout du moins "logguer"

Pear::Config

Pear::Config aide à manipuler votre configuration qu'elle soie stockée dans des fichiers XML, des tableaux PHP ou tout autre genre de source de données. Il comporte les fonctionnalités suivantes :

  • Analyser les différents formats de configuration.
  • Manipuler les sections, directives, commentaires, blancs de la manière que vous voulez.
  • Réécrire de nouveau les données dans votre format préféré.

L'objet de Config agit en tant que conteneur pour d'autres objets de Config_Container. Il ne fait pas beaucoup mais rend la tenue des opérations de E/S plus faciles. Il contient l'objet racine de Config_Container qui contient alternativement un objet enfant de Config_Container. Les objets Config_Container stockent des références à leur parent et ont un tableau d'enfants. Cette structure permet alors d'accéder à différent les conteneurs et leur contenu.

Un objet de Config_Container peut être de différents types :

  • Section: une section contient d'autres objets Config_Container.
  • Directive: une directive ne contient aucun autre objet mais a un contenu et un nom. Voyez-les comme des paires de clef-valeur.
  • Commentaire: comme les directives, les commentaires ont un contenu mais elles n'ont pas de nom. Elles sont rendues d'une manière spéciale selon le type de configuration que vous choisissez.
  • Blanc: elles n'ont ni contenu ni nom mais sont utilisées pour indiquer les interlignes si votre _renderer_ les emploie.

En utilisant le paquet Config, la majeure partie du travail est effectuée avec les objets Config_Container .

Zend_Config

On voit donc un petit avantage à PEAR_Config c'est qu'il propose aussi l'écriture.

Pour creuser Zend_Config : Différentes approches et sa partie 2

Claroline

Les valeurs de configuration actives seront stockées dans des fichiers de config contenant de simples array php.

[php]
<?php

/* campus_name : Name of your campus */
$claro_config['platform_name'] = 'My campus';

/* platform_language : Select the default language of the platform */
$claro_config['platform_language'] = 'english';

/* claro_stylesheet : Set the stylesheet layout */
$claro_config['platform_stylesheet'] = 'default.css';

/* administrator_name : Complete name */
$claro_config['administrator_name'] = 'John Doe';

/* administrator_email : This email is the main contact address on the platform */
$claro_config['administrator_email'] = 'John@doe.net';

/* administrator_phone : Phone */
$claro_config['administrator_phone'] = "";

/* institution_name : Name displayed in the top banner */
$claro_config['institution_name'] = 'My institute';

?>

Mais ce qui est particulier est en amont.

Dans claroline, on ne distribue plus jamais les fichiers de config. mais des fichiers de définition.

L'outil d'édition de config, (et d'install et d'upgrade) lit le fichier de définition et il lit les valeurs actives si elles existent dans les fichiers de config.

Ensuite il génère le forumlaire, on peut editer comme on veut puis dire, "appliquer", "restaurer les valeur par défaut", "abandonner"

Si on utilise "appliquer" il regénère tous les fichiers de conf concernés

L'avantage c'est qu'à l'upgrade on écrase les fichiers de définition pas les valeurs actives.

voici a quoi ressemble la définition d'une valeur de config.

[php]
<?php
   $toolConfProperties['CONFVAL_LOG_CALENDAR_INSERT'] = 
   array ('label'       => 'Logguer les ajouts d\'agenda' 
         ,'default'     => 'TRUE' 
         ,'type'        => 'boolean' 
         ,'display'     => TRUE 
         ,'readonly'    => FALSE 
         ,'container'   => 'CONST' 
         ,'acceptedval' => array ('TRUE'=>'enabled' 
                                 ,'FALSE'=>'dislabed' 
                                 ) 
         ); 
?>
  • CONFVAL_LOG_CALENDAR_INSERT <- nom du conteneur
  • container => 'CONST' <- type du conteneur

donc ici il génère un define('CONFVAL_LOG_CALENDAR_INSERT', ...)

  • default => 'TRUE' <- valeur proposée par défaut
  • type => 'boolean' <- permet de définir le contrôle sur valeur recue et l'aspect du formulaire on peut mettre boolean, integer, string, enum, enum+, ereg, si boolean,'acceptedval' => array ('TRUE'=>'enabled','FALSE'=>'dislabed') perment de mettre le nom à coté des radios
  • display = TRUE;
  • readonly = FALSE;

Ces deux là permettent d'afficher ou non une valeur dans l'éditeur et de la rendre editable ou non

un autre exemple

[php]
<?php
$toolConfProperties['DEFAULT_SUFFIX_MAIL']['default'] = '@fake.zz';
$toolConfProperties['DEFAULT_SUFFIX_MAIL']['type' ]   = 'regexp';
$toolConfProperties['DEFAULT_SUFFIX_MAIL']['acceptedval'] = '@(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2,4})$';
?>

Maintenant avec Zend ou Pear on pourrait transformer une partie de l'éditeur auto généré pour utiliser Zend_Form ou PEAR::Quickform2

Conclusion

Rien Ne me convient, je suis un difficile capricieux.

Il va falloir que je planifie tout ceci.

Avril 2009 – Nexen.net: Rmail

Image pour le titre du contenu
HTMLMimeMail est une classe PHP très connu, vous permettant d'envoyer facilement des emails au format TXT ou HTML avec une ou plusieurs pièces jointes et plusieurs destinataires possibles.
L'auteur de HTMLMimeMail change le nom de cette classe en l'appelant « Rmail » pour faciliter sa mémorisation.
Maintenant la prochaine grosse évolution de cette classe a apparaitra avec l'arrivée de PHP 5.3

Avril 2009 – Nexen.net: MySQL 5.1.34

Image pour le titre du contenu
MySQL 5.1.34 vient de paraître.
Cette nouvelle version est la version finale de MySQL 5.1 pour AIX 5.2 et est recommandé pour une utilisation sur les systèmes de production.
Comme toutes les nouvelles versions, un certain nombre de correctifs ont été apportés.

Avril 2009 – Kamelot Blog: PHPBelgium meeting on April 22 in Ghent

Spring is in the air and PHP is ready to blossom, so join the PHPBelgium meeting on Wednesday April 22 at our bi-monthly PHPBelgium meeting. We've got two valued speakers lined up and lots of goodies to give away.

schedule:

20:00h CLI, the other SAPI - Thijs Feryn

An in depth talk about using PHP on the command line and all the benefits that go along with it. In this presentation, Thijs will tackle common problems that occur when using classic PHP via the browser and he'll show you how the PHP binary allows you to create powerfull shell applications. Thijs Feryn is the support manager at COMBELL where he constantly gets into contact with real-world hosted examples of good and bad LAMP development. Being a PHP 5 ZCE he's also a talented developer and you'll be hearing plenty more of him in the community.

21:00h Everything you always wanted to know about UTF-8 (but never dared to ask) - Juliette Reinders Folmer

Juliette is a veteran PHP developer and a well respected representative for PHPWomen in the Benelux. She has already introduced herself about a year ago at one of the first PHPBelgium meetings, but is now giving a presentation where you'll learn the ins and outs of UTF-8

22:00h Drinks, socializing and goodies time

To list a few of the goodies:

  • one copy of "Zend Framework in Action" signed by Rob Allen donated by himself
  • one free license for Zend Studio for Eclipse donated by Zend Technologies, Inc.
  • one free ticket for Dutch PHP Conference 2009 donated by Ibuildings, the PHP Professionals
  • the one and only elePHPant!

Catering and venue for this meeting are provided by Combell Internet Solutions More information can be found at http://phpbelgium.be/events/23032009/phpbelgium-meeting-april and you can sign up for this meeting at http://upcoming.yahoo.com/event/2167970

Avril 2009 – Nexen.net: Comment tester les exceptions

Image pour le titre du contenu
Le blog phpdevblog montre pour les testeurs unitaires une façon de travailler avec la gestion des exceptions.
Pour les développeurs de tests unitaires, cela peut être très intéressant surtout qu'ils sont basés sur SimpleTest

Avril 2009 – Kamelot Blog: Zend_Log_Filter_Priority : Ce que ne dit pas la doc.

http://framework.zend.com/manual/fr/zend.log.filters.html#zend.log.filters.all-writers

30.4. Filtres

Un objet Filter bloque les messages avant l'écriture dans le log.

[PHP]
<?php
$logger = new Zend_Log();

$redacteur = new Zend_Log_Writer_Stream('php://output');
$logger->addWriter($redacteur);

$filtre = new Zend_Log_Filter_Priority(Zend_Log::CRIT);
$logger->addFilter($filtre);

// bloqué
$logger->info("Message d'information");

// écrit dans le log
$logger->emerg("Message d'urgence");
?>

Avec cet exemple, on reçoit les messages de niveau 0,1 et 2

si on regarde le tableau des priorités

EMERG   = 0;  // Urgence : le système est inutilisable
ALERT   = 1;  // Alerte: une mesure corrective doit être prise immédiatement
CRIT    = 2;  // Critique : états critiques
ERR     = 3;  // Erreur: états d'erreur 
WARN    = 4;  // Avertissement: états d'avertissement
NOTICE  = 5;  // Notice: normal mais état significatif
INFO    = 6;  // Information: messages d'informations
DEBUG   = 7;  // Debug: messages de déboguages

On comprend que Zend_Log_Filter_Priority(Zend_Log::CRIT); signifie ne prendre que ce qui est inférieur ou égal à 2//CRIT

Comment faire pour avoir que les 4 ou que les 5, 6 et 7 ou que les 2 et 3 ?

Dans la doc api on peut voir pour le constructeur

Constructor __construct (line 54)
Filter logging by $priority. By default, it will accept any log event whose priority value is less than or equal to $priority.
  • throws: Zend_Log_Exception
  • access: public
Zend_Log_Filter_Priority __construct (integer $priority, [string $operator = '<='])
  • integer $priority: Priority
  • string $operator: Comparison operator

On ne parle pas encore de string $operator = '<=' dans la doc

Donc il faut savoir que

[php]
<?php

$filtre = new Zend_Log_Filter_Priority(Zend_Log::CRIT, '=');
$logger->addFilter($filtre);

?>

mon logger ne reprend que les niveaux CRITICAL

[php]
<?php

$filtre = new Zend_Log_Filter_Priority(Zend_Log::CRIT, '<=');
$logger2->addFilter($filtre);

$filtre = new Zend_Log_Filter_Priority(Zend_Log::NOTICE  , '>=');
$logger2->addFilter($filtre);

// mon logger ne reprend que les niveaux CRITICAL, ERR, WARN et NOTICE  

?>

Pour aller plus loin il faut savoir qu'il y a aussi 2 autres filtres à découvrir.

Avril 2009 – Nexen.net: Ce qui ne va pas changer avec MySQL

Image pour le titre du contenu
A la grande surprise générale, Oracle a acheté Sun et cette annonce a été effectuée pendant la grande conférence MySQL à Santa clara, dont certaines réactions à chaud ont été publiées venant de certains acteurs majeurs français.
Pour rappel, Voici quelques mois les yeux étaient tournées sur le rachat de MySQL par SUN.
Cependant Kaj Arnö a réfléchi sur ces derniers évènements et au lieu de se poser la question des conséquences et des chamboulements du paysage, il s'est posé une très bonne question : « Ce qui ne va pas changer avec MySQL »
Ces points de réflexions concernent :
  • Une énorme base d'utilisateurs de MySQL sur le marché
  • Un énorme réservoir de talents d'experts
  • MySQL sous licence GPL
  • Des fondateurs MySQL
  • Une entité
  • Des annonces sur les produits avec la conférence MySQL de cette semaine

Avril 2009 – PHP Index: PHP Camp 2 et TestFest

L'AFUP (Association Française des Utilisateurs de PHP) annonce la deuxième édition du BarCamp orientée PHP à Paris.

Ce rendez-vous se déroulera 9 mai 2009 toute le journée.

Il s'agit d'un évènement gratuit et ouvert à tous et comme la première édition, une partie « PhpCamp et TestFest » aura lieu.

Alors n'hésitez pas à consulter l'annonce officielle de ce rendez-vous.

Proposé par Christophe Villeneuve

Avril 2009 – Kamelot Blog: Scream @

C'est juste dans la documentation de php mais qui le connaissait ?

En gros cette directive permet d'ignorer les @.

Exemple : Activation et désactivation de scream, à l'exécution

[php]
<?php
// Affichage des erreurs
ini_set('display_errors', true);
error_reporting(E_ALL);

// Désactivation de scream : le code est silencieux
ini_set('scream.enabled', false);
echo "Opening http://example.com/not-existing-file\n";
@fopen('http://example.com/not-existing-file', 'r');

// Activation de scream : le code est verbeux
ini_set('scream.enabled', true);
echo "Opening http://example.com/not-existing-file\n";
@fopen('http://example.com/another-not-existing-file', 'r');
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

[Output]
Opening http://example.com/not-existing-file
Opening http://example.com/not-existing-file

Warning: fopen(http://example.com/another-not-existing-file): 
failed to open stream: HTTP request failed! HTTP/1.1 
404 Not Found in example.php on line 14

Note: Généralement, on active cette extension avec une directive de configuration php.ini, au lieu de la modifier dans le code PHP Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Options de configuration de scream

Avril 2009 – Nexen.net: Les nouveautés pour MySQL

Image pour le titre du contenu
Cette semaine se déroule le grand événement autour de MySQL à Santa Clara, dont le président de l'association de MySQL (LeMug.fr) est présent.
A cette occasion, de nombreuses annonces ont été effectuées pour les utilisateurs de MySQL
Jasper for MySQL est un serveur interactif de rapports optimisé pour MySQL.
La sortie de MySQL 5.4 annoncé par SUN
La sortie de MySQL Cluster 7.0 annoncé par sun

Avril 2009 – Rom's blog: Lancement des PHP Days!

Anaska – Alter Way Formation, l’organisme de formation dans lequel je travaille vient de lancer les PHP Days. Un nouveau concept de formation dédié à PHP :

- Des formations sur de thèmes précis et d’actualité
Une seule session, en amphithéâtre, est organisée pour chaque PHP Day, l’objectif étant de traiter un des thèmes chaud de PHP (en opposition aux formations inter-entreprises qui sont, par définition, plus généralistes).

- des sessions animées par plusieurs intervenants de renom
Chaque PHP Day est composé de plusieurs sessions, d’une demi-journée chacune, animées par des intervenants spécialistes du sujet et reconnus pour leur implication dans les communautés, l’écriture d’ouvrages ou la gestion de projets importants.

La première session de PHP Days intitulée “Industrialisez votre PHP!” se déroulera les 6 et 7 Juillet.

Au programme :

- Environnement et procédures de développement
- Utilisation d’un framework
- Sécurité de vos développements
- Optimisez vos performances

Côté intervenants, nous aurons Damien SEGUY, Cyril PIERRE de GEYER, Julien PAULI et Jean-Marc FONTAINE. La session sera animée par votre humble serviteur.

Les inscriptions sont ouvertes et le nombre de places est limité, n’hésitez donc pas à réserver votre place dés maintenant.

Avril 2009 – Kamelot Blog: Connaissez-vous inclued et inclued_get_data ?

Une autre découverte de mon SCAN de la doc de php : inclued_get_data issu du package PECL inclued (V0.1.0/alpha/2008-02-29)

On trouve un exemple dans la doc http://www.php.net/manual/fr/inclued.examples-implementation.php mais il n'est pas super clair.

Par contre c'est mieux présenté sur GnuSquad. D'ailleurs je ne vais pas développer et juste conseiller d'aller lire ce post ansi que celui-ci en anglais.

L'extension inclued inclut un fichier PHP appelé gengraph.php qui crée un fichier DOT, qui peut être passé à la bibliothèque » graphviz. Cependant, cette approche n'est pas obligatoire.

Exemple #1 Exemple avec inclued_get_data()

[php]
<?php 
include 'x.php';

$clue = inclued_get_data();

print_r($clue);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

[output]
Array
(
  [includes] => Array
    (
      [0] => Array
        (
          [operation] => include
          [op_type] => 2
          [filename] => x.php
          [opened_path] => /tmp/x.php
          [fromfile] => /tmp/z.php
          [fromline] => 2
        )
    )
)

Avril 2009 – z-f.fr: Zend Framework 1.8 beta 1 est sortie

Forum: Brèves
Auteur: Vincent
Écrit le: Thu, 23 Apr 2009 09:37:15 +0200
Dernier message: Fri, 24 Apr 2009 21:45:30 +0200

Avril 2009 – Rom's blog: Lancement des PHP Days!

Anaska – Alter Way Formation, l’organisme de formation dans lequel je travaille vient de lancer les PHP Days. Un nouveau concept de formation dédié à PHP :

- Des formations sur de thèmes précis et d’actualité
Une seule session, en amphithéâtre, est organisée pour chaque PHP Day, l’objectif étant de traiter un des thèmes chaud de PHP (en opposition aux formations inter-entreprises qui sont, par définition, plus généralistes).

- des sessions animées par plusieurs intervenants de renom
Chaque PHP Day est composé de plusieurs sessions, d’une demi-journée chacune, animées par des intervenants spécialistes du sujet et reconnus pour leur implication dans les communautés, l’écriture d’ouvrages ou la gestion de projets importants.

La première session de PHP Days intitulée “Industrialisez votre PHP!” se déroulera les 6 et 7 Juillet.

Au programme :

- Environnement et procédures de développement
- Utilisation d’un framework
- Sécurité de vos développements
- Optimisez vos performances

Côté intervenants, nous aurons Damien SEGUY, Cyril PIERRE de GEYER, Julien PAULI et Jean-Marc FONTAINE. La session sera animée par votre humble serviteur.

Les inscriptions sont ouvertes et le nombre de places est limité, n’hésitez donc pas à réserver votre place dés maintenant.

Avril 2009 – Nexen.net: Forum PHP 2009 : appels à conferenciers

Image pour le titre du contenu
L'AFUP (Association Française des Utilisateurs de PHP) annonce que le prochain Forum PHP 2009 se déroulera à la "Cité des Sciences" à Paris le 12 et 13 Novembre 2009.
A cette occasion, AFUP annonce :
- Un appel à conférenciers ouvert à tous
- Une très bonne surprise à découvrir dans le communiqué officiel

Avril 2009 – Lindev: CrawlTrack outil sympatique

CrawlTrack , mais c'est quoi ? En surfant sur la vague , j'ai trouvé un lien qui pointe vers le site de CrawlTrack ,après la lecture de ce que propose cet utilitaire , j'ai voulue le tester .. Je vous présente donc mes premières impressions . Ce que fait CrawlTrack Il vous suffit de lire la (...)

Avril 2009 – Kamelot Blog: Le FORUM PHP 2009 se prépare

Le Forum PHP 2009 qui se déroulera le 12 et 13 novembre 2009 à la cité des sciences.

Si vous avez quelque chose à dire : dites leur

Si vous avez juste envie d'écouter, les inscriptions en prévente avec un tarif préférentiel (remise de 20€ jusqu'au 30 mai 2009)

Responsables Forum PHP 2009

Xavier Gorse, Responsable organisation
Contact : bureau@afup.org
Contact téléphonique : 06 73 47 40 53
Christophe VILLENEUVE, Responsable inscriptions

Contact : inscriptions@afup.org Contact téléphonique : 06 98 27 96 52

Avril 2009 – tigrou/pwet.fr: Sortie eZ Object States Filter 1.0

eZ Object States Filter est une extension de type extended attribute filter. Cette extension permet de filtrer sur les object states des objets de contenu lors de la récupération d'un ensemble de nœuds en template avec la fonction fetch( content, list ) et équivalentes ou en PHP. Il s'agit d'une toute petite extension (3 fichiers !) écrite pour un projet perso en cours avec eZ Publish 4.1. Des exemples d'utilisation (template et PHP) sont disponibles sur la page du projet.

Télécharger eZ Object States Filter 1.0

Avril 2009 – Apprendre-PHP.com - apprendre à programmer avec le langage PHP: symfony 1.2.6

La Core Team du framework Symfony a publié un important patch de sécurité qui corrige une faille dans le générateur de backoffice. Cette faille touche toutes les versions de la branche 1.2

Avril 2009 – Hello Design: PhpCamp et TestFest

Le 9 mai prochain, un évènement qu'il ne faut pas rater...

Il s'agit du PHPCamp et TestFest organisé par l'AFUP (Association Françaises des Utilisateurs de PHP)

Ce rendez-vous unique va vous permettre de patienter jusqu'au forum PHP, et ouvert à tous et gratuit

Pour plus d'informations, consulter le lien suivant : http://www.afup.org/article.php3?id_article=385