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

Septembre 2009 – Nexen.net: Wampserver et Xdebug et Eclipse PDT

Image pour le titre du contenu
Associer ces 3 applications très connues va vous permettre d'augmenter la puissance de votre développement
  • Wampserver est comme son nom l'indique 1 WAMP, c'est une plateforme Apache, PHP, MySQL pour Windows
  • Xdebug est un débuggeur PHP
  •  Eclipse PDT est un IDE

Romain, créateur de Wampserver, vous montre sous la forme d'un tutorial comment paramétrer et utiliser ces 3 applications.

Septembre 2009 – Nexen.net: Etendre l'objet avec les nouvelles fonctionnalités

Image pour le titre du contenu
Avec l'arrivée de PHP 5.3 et des nouvelles fonctionnalités, de nombreux tutoriaux sont apparus ainsi que des aides pour mettre en route les nouvelles possibilités.
On remarquera notamment le site stubbles présentant une méthode de runtime qui est assez répandue dans d'autres langages comme Ruby.

Septembre 2009 – PHP Index: Faille de sécurité du serveur web Microsoft IIS

Une faille de sécurité critique a été divulguée sur les versions 5 et 6 de Microsoft IIS au niveau du service FTP de l'application.

Du code relatif à ce problème a été publié sur le forum Milw0rm. Selon l'auteur de ce code, le hacker Kingcope, il serait possible d'exécuter à distance du code sur un serveur vulnérable. Microsoft prend la menace au sérieux et déclare dans un communiqué investiguer sur les détails de la vulnérabilité, en particulier au niveau du protocole FTP.

Il est conseillé, par mesure de précaution, de désactiver les accès anonymes en écriture sur le serveur FTP de IIS.

Plus d'informations : ZDNet.fr

Septembre 2009 – Nexen.net: Joomla a 5 ans

Image pour le titre du contenu
Récompensé de nombreuses fois au CMS AWARD, Joomla bénéficie d'une forte implication de la communauté, et d'évolutions régulières pour proposer plusieurs milliers de modules et extensions.
Rappelle des évolutions les plus importantes :
  • la séparation des couches
  • l'internationalisation
  • l'encodage UTF-8
  • l'amélioration du cache

Septembre 2009 – Nexen.net: Signature dynamique Twitter en PHP

Image pour le titre du contenu

Nilpo propose, par l'intermédiaire du site devshed, une série d'articles parlant de l'utilisation de signature dynamique en PHP avec twitter.
Il montre comment réaliser des signatures en combinant cURL, GD2 et XML avec PHP. Vous pourrez  ainsi créer des images à la volée.
Dans sa série d'articles, il évoque également :
  • La gestion des erreurs
  • Les exceptions, classes
  • La mise en cache

Septembre 2009 – Nexen.net: Les problèmes avec Benchmarks

Image pour le titre du contenu
Sur le blog de la Ibuildings, Cal Evans propose une analyse comparative des applications Web et une amélioration de leurs performances.
Il ne mentionne que l'une des références des choses utiles pouvant être fournie - comparer les versions précédentes du code par rapport à lui même.

Septembre 2009 – Nexen.net: Envoyer des emails avec PHPmailer et Gmail

Image pour le titre du contenu
Envoyer un mail en format HTML avec une pièce jointe nécessite un AMP (Apache, MySQL, PHP) avec les problèmes de définition du SMTP par rapport au FAI en prime.
Le site « Web Dévelopment Blog » propose d'utiliser la même classe que PHPmailer avec les protocoles SMTP de  Gmail.  A l'arrivée :  moins de soucis pour envoyer vos emails, même en changeant de FAI.

Septembre 2009 – Nicolas Loeuillet: [Symfony 1.2] Exécuter une tâche dans un module

Je voulais exécuter la tâche backupTask dans le module upload de mon appli backend.

En m’inspirant de ce qu’on trouve dans la doc de symfony (Run another task within a task?), j’ai ajouté ce bout de code dans mon module :


$dispatcher = sfContext::getInstance()->getEventDispatcher();
$formatter = new sfFormatter();
$taskBackup = new backupTask($dispatcher, $formatter);
$taskBackup->run();

Résultat : un joli message d’erreur « You must be in a symfony project directory ».

Ok, il faut forcément être à la racine de son projet pour lancer des tâches.

En jouant un peu avec chdir(), on s’en sort à peu près :


chdir(’..’);
$dispatcher = sfContext::getInstance()->getEventDispatcher();
$formatter = new sfFormatter();
$taskBackup = new backupTask($dispatcher, $formatter);
$taskBackup->run();
chdir(’web’);

(à ce propos, si vous avez une autre solution pour ici, n’hésitez pas, je suis preneur!)

Là, ma tâche est bien exécutée, par contre, mon appli n’aime pas trop être promenée comme ça dans le répertoire symfony et j’ai le droit a :

The template « indexSuccess.php » does not exist or is unreadable in «  »

Hum.
Et pourtant, mon fichier apps/backend/modules/upload/templates/indexSuccess.php existe, si si!

Voici notre solution (pareil que tout à l’heure : si vous avez mieux, les commentaires sont ouverts!) :


chdir(’..’);
$dispatcher = sfContext::getInstance()->getEventDispatcher();
$formatter = new sfFormatter();
$taskBackup = new backupTask($dispatcher, $formatter);
$taskBackup->run();
chdir(’web’);

$this->redirect(’upload/index’);

A la fin de mon action, je redirige vers la page sur laquelle j’étais. Et ça marche. C’est p’tet pas propre, mais ça marche.

Septembre 2009 – Nexen.net: Protocole compressé MySQL

Image pour le titre du contenu
Andrey, sur son blog, revient sur le protocole compressé de MySQL, notamment sur son principe de fonctionnement ainsi que sur la présentation de données.

Septembre 2009 – Nexen.net: Top 40 des logiciels Open Source

Image pour le titre du contenu
La magazine InfoWorld vient de publier un hit parade des 40 meilleurs logiciels open source du moment.
Ce classement est très utile pour toutes les personnes qui souhaitent utiliser pleinement l'Open Source, mais également pour connaitre les applications utiles.
Parmi les nombreux outils, on trouvera :
  • Les outils de développements Web
  • Des API touchant les CMS, les blogs, les serveurs
  • Les langages comme PHP
  • Des IDE
  • Des progiciels comme le secteur des ERP, du commerce et du CRM
  • Des logiciels décisionnels et réseaux

Septembre 2009 – Prendre un Café: 30 Symfony Best Practices, the slides from my talk at SymfonyDay Cologne '09

Hey there, it’s been a while, huh?

Today I gave a talk about Symfony best practices at the Symfony Day event in Cologne, Germany; you can get the slides on slideshare or directly browse them below:

The Symfony Day event has been purely awesomely incredibly well organized, many kudos and thanks to Interlutions and to all the attendees. You’re all great people. Thanks.

Symfony Day '09 Cologne

Ce billet intitulé 30 Symfony Best Practices, the slides from my talk at SymfonyDay Cologne '09 a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Septembre 2009 – Nexen.net: PHP : plus rapide et moins cher

Image pour le titre du contenu
Samhen Nessy propose une synthèse des textes et articles trouvés sur internet sur ce sujet.
La synthèse qu'il aborde concerne surtout les points suivants :
  • Simplifier le développement
  • Simplifier le déploiement
  • Economies d'exploitation

Un bon guideline pour passer de la théorie à la pratique.

Septembre 2009 – Kamelot Blog: Refactor dans Zend Studio 7

Dans Zend Studio 7 :

Placez vous sur une variable, alt-shift-R changez son nom, et hop ca change partout. idem pour une propriété, une fonction, une méthode, ...

Septembre 2009 – Nexen.net: Auditer son code PHP

Image pour le titre du contenu
Graudit (signifie contraction de Grep et de Audit) est un nouvel outil en open source.
Il va vous permettre par une simple ligne de commande d'analyser votre code pour repérer d'éventuels failles de sécurités.
Bien sur, cet outil ne fait pas tout et avant de commencer d'effectuer ces tests, vous pouvez prendre connaissance de l'ouvrage suivant : « Sécurité PHP 5 et MySQL, aux éditions Eyrolles »

Septembre 2009 – Nexen.net: Auditer la sécurité de son code PHP

Image pour le titre du contenu
Graudit (contraction de Grep et de Audit) est un nouvel outil qui permet, par une simple ligne de commande, d'analyser votre code pour repérer d'éventuelles failles de sécurité.
 Petit rappel sur un ouvrage de référence en ce domaine  : "Sécurité PHP 5 et MySQL" de Damien Seguy aux éditions Eyrolles.

Septembre 2009 – Nexen.net: PHP QUICK PROFILER

Image pour le titre du contenu
Pour l'un de mes projets, j'ai voulu effectuer quelques tests de performances sans utiliser Firebug et j'ai découvert « PHP Quick profiler »
PHP quick Profiter est une console de débug et de log, disponible depuis quelques mois. Cet API analyse les performances de vos applications, notamment :
  • Nombre et poids des fichiers include
  • Consommation de la mémoire
  • Requêtes SQL utilisées
  • Temps d'exécution de la page.

Septembre 2009 – Kamelot Blog: PHP scan : essais du WE : Google Latitude,Google Profile, json, Zend_Debug, Zend_Date, ...

Samedi matin j'ai voulu essayer le mini script proposé par Ludovic Toinel sur son blog dans son article PHP : Récupérer la position d'un téléphone utilisant Google Latitude

De fil en aiguille j'en suis arrivé à ce script (incomplet) qui en montre un peu plus.

Dans la première partie, j'affiche cote-à-cote 2 carte similaires.

  • A gauche, une carte gmap, positionnée grâce aux informations récupérée sur l'api de latitude.
  • A droite la carte latitude équivalente (rien à coder, juste le user id à connaitre).

Ce qui m'ennuyait dans le script c'est qu'il faille connaître le user id latitude de l'utilisateur à afficher.

Alors j'ai cherché dans google profile. Et ... je n'ai pas trouvé. Mais j'ai quand même affiché les infos qu'on y trouve.

Voilà. J'ai bon espoir d'améliorer ce script quand j'aurai du temps à perdre, et de republier une nouvelle version.

J'ai par exemple envie de refactoriser le var_export_intelligent pour qu'il soit passé sur un itérateur, qu'il soit récursif et de plus en plus adapté a divers contenus. quitte à étendre Zend_Debug::Dump puisque c'est un peu son utilité.

Le résultat et le script dans la suite.

[php]
<?php
// Pour obtenir l'id user et pour activer ou désactiver : visit http://www.google.com/latitude/apps/badge
$googleLatitudeUser = '1234567890123456789';

// J'ai Zend_Framework et PEAR dans mon include_path.
require_once 'Zend/Http/Client.php';
require_once 'Zend/Json.php';
require_once 'Zend/Debug.php';
require_once 'Zend/Date.php';



$client = new Zend_Http_Client();
$client->setUri('http://www.google.com/latitude/apps/badge/api?user=-' . $googleLatitudeUser . '&type=json');
$client->request('GET');
/*
   * Le flux JSON adhère à la spécification GeoJSON 1.0. 
   * En plus du point identifié par la latitude et la longitude, 
   * les propriétés GeoJSON comprennent les id, accuracyInMeters, timeStamp, reverseGeocode, 
   * photoUrl, photWidth, photoHeight, placardUrl, placardWidth, placardHeight de l’utilisateur.
   *  
   * Pour les flux de partage du nom de la ville, la latitude et la longitude 
   * représentent le centre-ville et la précision est de 0.
   * */
$response = $client->request();
if ($response->isError()) {
    die($response->getStatus() . ": " . $response->getMessage());
}
$googleLatitude = Zend_Json::decode($response->getBody());

// le  0 c'est parce qu'on peu mettre user=[user1],[user2], ... dans la requête à l'api

$coordinates = $googleLatitude['features'][0]['geometry']['coordinates'];
$client->setUri('http://socialgraph.apis.google.com/otherme?q=moosh.be@gmail.com');
$client->request('GET');
$response = $client->request();
if ($response->isError()) {
    die($response->getStatus() . ": " . $response->getMessage());
}
$googleSocialgraph = Zend_Json::decode($response->getBody());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Test de google Latitude & google profil</title>
</head>
<body lang="fr">  
|  Il est à <?php
echo $googleLatitude['features']['0']['properties']['reverseGeocode']?> 

  
|  Latitude <?php
echo $coordinates[0];
?> 
|  Longitude <?php
echo $coordinates[1];
?> 
|  Précision <?php
echo $googleLatitude['features']['0']['properties']['accuracyInMeters']?> mètres 
|  TimeStamp <?php
echo $googleLatitude['features']['0']['properties']['timeStamp']?>
    =     <?php

Une utilisation toute simple de Zend_Date 

$date = new Zend_Date($googleLatitude['features']['0']['properties']['timeStamp'], Zend_Date::TIMESTAMP);
print $date;
?>
|  <br>Photo du user : 


<img
    src="<?php
echo $googleLatitude['features']['0']['properties']['photoUrl']?>"
    width="<?php
echo $googleLatitude['features']['0']['properties']['photoWidth']?>"
    height="<?php
echo $googleLatitude['features']['0']['properties']['photoHeight']?>" />

Phylactère du user :
<img
    src="<?php
echo $googleLatitude['features']['0']['properties']['placardUrl']?>"
    width="<?php
echo $googleLatitude['features']['0']['properties']['placardWidth']?>"
    height="<?php
echo $googleLatitude['features']['0']['properties']['placardHeight']?>" />
<br />
<a
    href="http://www.google.com/latitude/apps/badge/api?user=-<?php
echo $googleLatitudeUser;
?>&type=kml"
    style="color: #0000FF; text-align: left">Localisation KML</a>
|
<a
    href="http://maps.google.com/maps?f=q&amp;hl=fr&amp;ie=UTF8&amp;t=h&amp;z=14&amp;iwloc=A&amp;ll=<?php
echo $coordinates[1]?>,<?php
echo $coordinates[0]?>"
    style="color: #0000FF; text-align: left">Agrandir le plan</a>


<h2>Les cartes</h2>
La première c'est avec googlemap, la suivante directement via latitude
<h3>Satélite</h3>
<!-- Google Public Location Badge via GoogleMaps -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://maps.google.com/maps?f=q&amp;hl=fr&amp;ie=UTF8&amp;t=k&amp;z=15&amp;ll=<?php
echo $coordinates[1]?>,<?php
echo $coordinates[0]?>&amp;output=embed"></iframe>
<!-- Google Public Location Badge -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://www.google.com/latitude/apps/badge/api?user=-<?php
echo $googleLatitudeUser;
?>&amp;type=iframe&amp;maptype=satellite&amp;hl=fr&amp;z=15"></iframe>


<h3>Hybride</h3>
<!-- Google Public Location Badge via GoogleMaps -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://maps.google.com/maps?f=q&amp;hl=fr&amp;ie=UTF8&amp;t=h&amp;z=15&amp;ll=<?php
echo $coordinates[1]?>,<?php
echo $coordinates[0]?>&amp;output=embed"></iframe>
<!-- Google Public Location Badge -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://www.google.com/latitude/apps/badge/api?user=-<?php
echo $googleLatitudeUser;
?>&amp;type=iframe&amp;maptype=hybrid&amp;hl=fr&amp;z=15"></iframe>




<h3>Terrain</h3>
<!-- Google Public Location Badge via GoogleMaps -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://maps.google.com/maps?f=q&amp;hl=fr&amp;ie=UTF8&amp;t=t&amp;z=15&amp;ll=<?php
echo $coordinates[1]?>,<?php
echo $coordinates[0]?>&amp;output=embed"></iframe>
<!-- Google Public Location Badge -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://www.google.com/latitude/apps/badge/api?user=-<?php
echo $googleLatitudeUser;
?>&amp;type=iframe&amp;maptype=terrain&amp;hl=fr&amp;z=15"></iframe>



<h3>Routes</h3>
<!-- Google Public Location Badge via GoogleMaps -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://maps.google.com/maps?f=q&amp;hl=fr&amp;ie=UTF8&amp;t=r&amp;z=15&amp;ll=<?php
echo $coordinates[1]?>,<?php
echo $coordinates[0]?>&amp;output=embed"></iframe>
<!-- Google Public Location Badge -->
<iframe width="500" height="350" frameborder="0" scrolling="no"
    marginheight="0" marginwidth="0"
    src="http://www.google.com/latitude/apps/badge/api?user=-<?php
echo $googleLatitudeUser;
?>&amp;type=iframe&amp;maptype=roadmap&amp;hl=fr&amp;z=15"></iframe>



<h2>Google Profile</h2>
<?php
foreach ($googleSocialgraph as $url => $data) {
    echo '<h3><a href="' . $url . '">' . $url . '</a></h3><dl>';
    foreach ($data['attributes'] as $attrName => $attrValue) {
        echo '<dt>
              ' . $attrName . '
             </dt>
             <dd>
              ' . var_export_intelligent($attrValue, 1) . '
              ' . (($attrName == 'photo') ? '<img src="' . $attrValue . '" />' : '') . '
              </dd>';
        ;
    }
    echo '</dl>';
    unset($data['attributes']);
    if (! empty($data))
        var_export($data);
}
?>
<h2>Infos brutes, retournées par l'api</h2>                                
<?php
Zend_Debug::dump($googleLatitude, 'info json', 1);
Zend_Debug::dump($googleSocialgraph, 'info social', 1);
?>
        
à voir : <a href="http://www.google.com/latitude/">Latitude</a>
&amp;
<a href="http://www.google.com/latitude/apps/badge">Latitude Badge</a>
</body>
</html>
<?php
function var_export_intelligent ($attrValue, $return)
{
    if (is_integer($attrValue)) {
        $val = $attrValue;
    } elseif (is_string($attrValue) && (substr($attrValue, 0, 7) == 'http://') && (in_array(substr($attrValue, - 3, 3), array('jpg' , 'gif' , 'png')))) {
        $val = '<img src="' . $attrValue . '" /> (' . $attrValue . ')';
    } elseif (is_string($attrValue) && (substr($attrValue, 0, 7) == 'http://')) {
        $val = '<a href="' . $attrValue . '">' . $attrValue . '</a>';
    } elseif (is_string($attrValue)) {
        $val = $attrValue;
    } else {
        $val = var_export($attrValue, 1);
    }
    if ($return) {
        return $val;
    } else {
        echo $val;
    }
}
?>


Septembre 2009 – Nexen.net: Manipuler les images

Image pour le titre du contenu
Les fonctions de traitement d 'image de PHP sont souvent mal connues. Elles font appel à la librairie GD. On peut également combiner PHPThumb avec ImageMagik.
Le site DEVZone en fournit un petit exemple.

Septembre 2009 – Lindev: Confoo.ca , Appel aux conférenciers

Appel aux conférenciers PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP Montréal lancent un appel aux conférenciers pour la conférence ConFoo.ca 2010. ConFoo.ca est la plus grande conférence sur le développement Web en Amérique du Nord, accueillant plus de 500 visiteurs. Nous recherchons (...)

Septembre 2009 – Nexen.net: Actualité de développement PECL, edition 249

Image pour le titre du contenu
4 paquets ont été mis à jour cette semaine :
  • hidef : vraies constantes
  • PDO_4D : Pilote PDO pour 4D-SQL
  • xslcache : modification du standard XSL extension de PHP qui met en cache la représentation des feuilles de style
  • libevent : Libevent - notification d'événement
PECL est la bibliothèque d'extensions C de PHP.

 

 

Septembre 2009 – Nexen.net: Actualité de développement PEAR, edition 252

Image pour le titre du contenu
9 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.

 

 

Septembre 2009 – Rom's blog: Utilisation de memcached sous Windows avec WampServer

J’entends déjà : « Pourquoi utiliser memcached sous windows? C’est pas fait pour la prod. Windows! ».

Ok, ok, mais dites moi? Comment je vais faire pour développer mon appli qui utilise memcached avec mon WampServer préféré si je ne peux pas la tester?

Avant de rentrer dans le détail, voyons un peu ce qu’est memcached.

Memcached est un serveur de mémoire partagé développé par Danga Interactive permettant de mettre des objets de toute sorte en cache.

Pour simplifier, à partir d’un script PHP, vous allez pouvoir mettre des variables en mémoire et donc rendre ces variables persistantes et accessibles à tous vos autres scripts PHP. Vous pouvez bien sûr déjà faire cela avec d’autres extensions telle que APC qui vous offre une solution de mémoire partagée. Sauf qu’avec APC, votre mémoire partagée ne sera accessible que depuis votre serveur local.
Memcached sera accessible à toutes les machines de votre environnement de production et leur permettra ainsi de partager la même mémoire et donc le même cache.

Toujours pas convaincu de l’intérêt ou ca reste pas très clair?

Et bien prenons un exemple.

Vous avez développé un site international de vente en ligne de Bandanas. Vous avez une centaine de références. Le site marche pas mal, vous êtes seul sur votre marché (qui penserait à vendre des bandanas sur internet?), quelques centaines de milliers de visiteurs par jour, tout va bien. Pour gérer la charge, vous avez une infrastructure avec deux serveurs en front et un serveur de bases de données.

C’est alors que Madonna décide de relancer la mode des bandanas en en portant un dans son dernier clip. Britney et Rihanna (ca doit s’écrire comme ca) suivent, la mode prend, tout le monde veut son bandana pour se l’attacher autour du bras ou de la jambe (la classe hein…rigolez pas, ca pourrait arriver)!

Le trafic de votre site explose, votre module permettant d’ajouter des commentaires sur les articles est pris d’assaut, pour gérer la charge, vous ajoutez 3 serveurs supplémentaires.
Ca permet au site de souffler un peu mais vous vous rendez rapidement compte que cela ne suffit pas!

Vous faites donc du profiling sur votre code pour optimiser les performances de votre site et vous rendez compte que c’est la base de données qui pose problème. Trop de connexions, requêtes trop lentes, etc…mais vous ne pouvez pas vous en passer, les pages du site évoluent rapidement avec les commentaires, l’affichage du stock disponible, etc… et vous vous devez d’avoir des pages à jour.
Vous faites le calcul, 10 000 000 de pages du catalogue vues par heure, soit 100 000 pour chaque produit (100 produits) et au moins autant de requêtes sur la base.

Et c’est là qu’intervient memcached. Grâce à memcached, vous allez pouvoir mettre les informations sur les produits en cache dans votre mémoire partagée pour une durée prédéfinie, par exemple, 1 minute et ces informations seront accessibles à vos 5 frontaux sans avoir à faire de requête sur votre base de données.

Ainsi, en une heure et pour un produit donné, vous n’aurez plus que 60 requêtes (1 heure = 60 * 1 minute) pour afficher la page du produit en question et des temps de réponse bien meilleurs (la mémoire est bien plus rapide que la base de données).

Vous serez donc passé de 100 000 requêtes par heure à 60! La contrepartie est que vos pages ne seront mises à jour que toutes les minutes.

Bien sûr, ceci n’est qu’un exemple d’utilisation de memcached, cette solution peut s’avérer utile dans bien d’autres cas (le plus connu étant le partage des fichiers de session sur une architecture avec répartition de charge).

ALORS COMMENT ON L’UTILISE?

La première étape va consister à installer notre serveur memcached. Plusieurs portages de memcached sur Windows existent sur le net, personnellement je vais utiliser une version beta mais plutôt à jour qui fonctionne bien et que vous pourrez trouver sur ce site : http://splinedancer.com/memcached-win32/.

Donc téléchargez les binaires (sous la forme d’un fichier zip), décompressez les et mettez le tout dans un répertoire « c:\memcached » sur votre machine.

Vous devriez maintenant avoir :

c:\memcached\memcached.exe

Vous allez avoir deux façons de le lancer.

Sous la forme d’un service :
c:\memcached\memcached.exe -d install
c:\memcached\memcached.exe -d start

Ou ponctuellement en double cliquant dessus.

Maintenant que notre serveur est lancé, nous allons pouvoir l’attaquer à partir de PHP.

Pour cela nous devons commencer par installer et activer l’extension php_memcache.dll.

Si vous utilisez WampServer avec une version de PHP < 5.3.0, l'extension est fournie par défaut (elle fait partie de PECL).

Si vous utilisez PHP 5.3.0 ou supérieur, il vous faudra télécharger l'extension à cette adresse :

http://downloads.php.net/pierre/

Activez l'extension via le menu de WampServer ou en modifiant votre fichier php.ini et le tour est joué.

Vous allez maintenant pouvoir lire et écrire dans memcached.

Sur votre serveur local :

< ?php
// on se connecte
$memcache = new Memcache();
$memcache->connect(’localhost’, 11211) or die (’impossible de se connecter’);
//on écrit avec une validité de 10 secondes
$test = ‘du texte’;
$memcache->set(’test’, $test, False, 10) or die (’echec sur ecriture’);
//on lit
echo $memcache->get(’test’);
?>

Maintenant essayez le script ci-dessous sur un autre serveur de votre réseau local en remplaçant XXX.XXX.XXX.XXX par l’adresse IP de votre premier serveur :

< ?php
// on se connecte
$memcache = new Memcache();
$memcache->connect('XXX.XXX.XXX.XXX', 11211) or die ('impossible de se connecter');
//on lit
echo $memcache->get('test');
?>

Si vous avez exécuté le premier script moins de 10 secondes avant le deuxième, vous verrez le contenu de la variable s’afficher. Au bout de 10 secondes, la variable n’est plus bonne, vous ne pourrez donc plus y accéder.

ET APRES?

Ces exemples sont très pauvres et intentionnellement simplifiés (memcache permet de gérer des pools de serveurs, être utilisé comme gestionnaire de sessions, gérer la compression, etc…) mais quoi qu’il en soit, l’utilisation de memcache est très simple et se limite à une vingtaine de méthodes.

si vous voulez plus d’infos sur l’utilisation de memcache, consultez la doc de PHP

Septembre 2009 – Rom's blog: Utilisation de memcached sous Windows avec WampServer

J’entends déjà : « Pourquoi utiliser memcached sous windows? C’est pas fait pour la prod. Windows! ».

Ok, ok, mais dites moi? Comment je vais faire pour développer mon appli qui utilise memcached avec mon WampServer préféré si je ne peux pas la tester?

Avant de rentrer dans le détail, voyons un peu ce qu’est memcached.

Memcached est un serveur de mémoire partagé développé par Danga Interactive permettant de mettre des objets de toute sorte en cache.

Pour simplifier, à partir d’un script PHP, vous allez pouvoir mettre des variables en mémoire et donc rendre ces variables persistantes et accessibles à tous vos autres scripts PHP. Vous pouvez bien sûr déjà faire cela avec d’autres extensions telle que APC qui vous offre une solution de mémoire partagée. Sauf qu’avec APC, votre mémoire partagée ne sera accessible que depuis votre serveur local.
Memcached sera accessible à toutes les machines de votre environnement de production et leur permettra ainsi de partager la même mémoire et donc le même cache.

Toujours pas convaincu de l’intérêt ou ca reste pas très clair?

Et bien prenons un exemple.

Vous avez développé un site international de vente en ligne de Bandanas. Vous avez une centaine de références. Le site marche pas mal, vous êtes seul sur votre marché (qui penserait à vendre des bandanas sur internet?), quelques centaines de milliers de visiteurs par jour, tout va bien. Pour gérer la charge, vous avez une infrastructure avec deux serveurs en front et un serveur de bases de données.

C’est alors que Madonna décide de relancer la mode des bandanas en en portant un dans son dernier clip. Britney et Rihanna (ca doit s’écrire comme ca) suivent, la mode prend, tout le monde veut son bandana pour se l’attacher autour du bras ou de la jambe (la classe hein…rigolez pas, ca pourrait arriver)!

Le trafic de votre site explose, votre module permettant d’ajouter des commentaires sur les articles est pris d’assaut, pour gérer la charge, vous ajoutez 3 serveurs supplémentaires.
Ca permet au site de souffler un peu mais vous vous rendez rapidement compte que cela ne suffit pas!

Vous faites donc du profiling sur votre code pour optimiser les performances de votre site et vous rendez compte que c’est la base de données qui pose problème. Trop de connexions, requêtes trop lentes, etc…mais vous ne pouvez pas vous en passer, les pages du site évoluent rapidement avec les commentaires, l’affichage du stock disponible, etc… et vous vous devez d’avoir des pages à jour.
Vous faites le calcul, 10 000 000 de pages du catalogue vues par heure, soit 100 000 pour chaque produit (100 produits) et au moins autant de requêtes sur la base.

Et c’est là qu’intervient memcached. Grâce à memcached, vous allez pouvoir mettre les informations sur les produits en cache dans votre mémoire partagée pour une durée prédéfinie, par exemple, 1 minute et ces informations seront accessibles à vos 5 frontaux sans avoir à faire de requête sur votre base de données.

Ainsi, en une heure et pour un produit donné, vous n’aurez plus que 60 requêtes (1 heure = 60 * 1 minute) pour afficher la page du produit en question et des temps de réponse bien meilleurs (la mémoire est bien plus rapide que la base de données).

Vous serez donc passé de 100 000 requêtes par heure à 60! La contrepartie est que vos pages ne seront mises à jour que toutes les minutes.

Bien sûr, ceci n’est qu’un exemple d’utilisation de memcached, cette solution peut s’avérer utile dans bien d’autres cas (le plus connu étant le partage des fichiers de session sur une architecture avec répartition de charge).

ALORS COMMENT ON L’UTILISE?

La première étape va consister à installer notre serveur memcached. Plusieurs portages de memcached sur Windows existent sur le net, personnellement je vais utiliser une version beta mais plutôt à jour qui fonctionne bien et que vous pourrez trouver sur ce site : http://splinedancer.com/memcached-win32/.

Donc téléchargez les binaires (sous la forme d’un fichier zip), décompressez les et mettez le tout dans un répertoire « c:\memcached » sur votre machine.

Vous devriez maintenant avoir :

c:\memcached\memcached.exe

Vous allez avoir deux façons de le lancer.

Sous la forme d’un service :
c:\memcached\memcached.exe -d install
c:\memcached\memcached.exe -d start

Ou ponctuellement en double cliquant dessus.

Maintenant que notre serveur est lancé, nous allons pouvoir l’attaquer à partir de PHP.

Pour cela nous devons commencer par installer et activer l’extension php_memcache.dll.

Si vous utilisez WampServer avec une version de PHP < 5.3.0, l'extension est fournie par défaut (elle fait partie de PECL).

Si vous utilisez PHP 5.3.0 ou supérieur, il vous faudra télécharger l'extension à cette adresse :

http://downloads.php.net/pierre/

Activez l'extension via le menu de WampServer ou en modifiant votre fichier php.ini et le tour est joué.

Vous allez maintenant pouvoir lire et écrire dans memcached.

Sur votre serveur local :

< ?php
// on se connecte
$memcache = new Memcache();
$memcache->connect(’localhost’, 11211) or die (’impossible de se connecter’);
//on écrit avec une validité de 10 secondes
$test = ‘du texte’;
$memcache->set(’test’, $test, False, 10) or die (’echec sur ecriture’);
//on lit
echo $memcache->get(’test’);
?>

Maintenant essayez le script ci-dessous sur un autre serveur de votre réseau local en remplaçant XXX.XXX.XXX.XXX par l’adresse IP de votre premier serveur :

< ?php
// on se connecte
$memcache = new Memcache();
$memcache->connect('XXX.XXX.XXX.XXX', 11211) or die ('impossible de se connecter');
//on lit
echo $memcache->get('test');
?>

Si vous avez exécuté le premier script moins de 10 secondes avant le deuxième, vous verrez le contenu de la variable s’afficher. Au bout de 10 secondes, la variable n’est plus bonne, vous ne pourrez donc plus y accéder.

ET APRES?

Ces exemples sont très pauvres et intentionnellement simplifiés (memcache permet de gérer des pools de serveurs, être utilisé comme gestionnaire de sessions, gérer la compression, etc…) mais quoi qu’il en soit, l’utilisation de memcache est très simple et se limite à une vingtaine de méthodes.

si vous voulez plus d’infos sur l’utilisation de memcache, consultez la doc de PHP

Septembre 2009 – Nexen.net: Code barre

Image pour le titre du contenu
L'utilisation des codes barres est quelque chose de très répandue depuis de nombreuses années. Ce système est aussi présent sur internet et les supports mobiles (téléphone par exemple) avec les nombreux formats qui existent.
Le langage PHP permet de générer les codes barres avec la librairie graphique GD.
Un article publié sur le site code-diesel montre la possibilité d'incorporer dans votre application web l'utilisation de l'ensemble des différents formats de codes barres.

Septembre 2009 – Kamelot Blog: Utilisation de memcached sous vista avec wampserver

Romain explique tout ici Utilisation de memcached sous Windows avec WampServer

Mais petite précision pour les utilisateurs de vista.

Quand vous arrivez à l'étape

Vous allez avoir deux façons de le lancer.

Sous la forme d’un service :

c:\memcached\memcached.exe -d install
c:\memcached\memcached.exe -d start

Ou ponctuellement en double cliquant dessus.

Pensez à donner les droits auparavant.

  • Dans l'explorateur de fichier, clic droit sur memcached.exe
  • Aller dans les propriétés
  • Onglet Compatibilité.
  • Cochez "Executer ce programme en tant qu'Administrateur"

Et vous pouvez reprendre la suite de l'article

Septembre 2009 – Nexen.net: PHP Quebec propose CONFOO

Image pour le titre du contenu
Confoo est le nouvel événement en Amérique du Nord puisqu'il remplace PHP Quebec. Il ouvre maintenant ses portes aux autres technologies et langages comme Python, Ruby...
Un appel à conférenciers vient d'être lancé.
Les détails sont donnés via le lien ci-dessous.

Septembre 2009 – Nexen.net: Les filtres en PHP 5

Image pour le titre du contenu
Alejandro Gervasio a écri une série de 9 tutoriaux sur « comment utiliser des filtres en PHP 5 »
Les points les plus intéressants : l'utilisation de l'extension « filter », les adresses OP, les nombres entiers, les types de données, etc. Chaque partie est très bien documentée avec de nombreux échantillons de code.
  Titres des 9 articles :
  • Recherche d'URL avec PHP
  • Validation des adresses IP avec des filtres en PHP 5
  • Une classe de validation en PHP
  • Valider les protocoles Web
  • Utilisation de méthodes statiques
  • Utiliser une méthode validation différentes
  • Etre capable de valider encore plus
  • Bien commencer la programmation
  • Nettoyage des éléments du tableau, POST et GET

Septembre 2009 – PHP Québec: ConFooBBQ: PHP Québec vous invites au ConFooBBQ

PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP Montréal
ont le plaisir de vous inviter au ConFooBBQ, le BBQ pour développeurs.

Inspiré des légendaires PHP-BBQ de PHP-Québec, ConFooBBQ offre aux
développeurs et autres acteurs des diverses communautés de
développement web de Montréal une occasion rêvée se détendre et
élargir leur réseau de contacts.

En plus des traditionnels hot-dogs, ConFooBBQ met sur scène la
première édition de ConFooBrew, un concours de brassage pour geeks.
Chaque groupe d'usagers à l'option d'élire un maître brasseur qui va
les représenter avec un brassin de bière maison.  Venez déguster des
bières typiquement technophiles tels que la Hopcode Cache et la
Pythoune Blanche.

ConFooBBQ aura lieu au Parc du Mont-Royal tout près de la Maison
Smith, à l'arrière du lac aux castors, Dimanche le 13 Septembre à
13:00.  ConFooBBQ est un événement familial: les enfants et les
conjoints y sont bienvenus.

Le coût pour manger est de 0$.  Au programme: hot-dogs, chips, salade,
boissons gazeuses, biscuits et surtout, beaucoup de plaisir en
perspective.

Les frais pour le repas ansi que des prix de présences seront gracieusement offert par nos commenditaires: Microsoft Canada & Iweb.

Si vous comptez manger, veuillez confirmer votre présence en envoyant
un courriel à board@confoo.ca.  N'oubliez pas d'indiquer votre nom,
le nombre de personne qui vous accompagnerons, et si possible, un
numéro de téléphone.  Aucune réservation n'est nécessaire pour
participer à la dégustation ConFooBrew.

Si vous ne trouvez pas l'endroit, vous pouvez contacter Yann Larrivée
au 514-581-8497 ou Yannick Gingras au 541-800-0138.

Les groupes d'usagers impliqués en profitent aussi pour annoncer la
conférence ConFoo.ca, le plus grand événement sur les développement
Web en Amérique du Nord.  ConFoo.ca lance cette semaine son appel aux
conférenciers, plus de détails sont disponibles sur le site Web:
http://confoo.ca/fr/cfp .


Date: 2009-09-13
Heure: 13h00
Lieu: Montréal, Parc du Mont Royal, Maison Smith
Cartes:
  http://www.lemontroyal.qc.ca/carte/2.html
  http://www.lemontroyal.qc.ca/pdf/carte-f.pdf
Liens:
  http://www.facebook.com/event.php?eid=154314716205&ref=nf
  http://confoo.ca

Septembre 2009 – PHP Québec: ConFooBBQ: PHP Québec vous invites au ConFooBBQ

PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP Montréal
ont le plaisir de vous inviter au ConFooBBQ, le BBQ pour développeurs.

Inspiré des légendaires PHP-BBQ de PHP-Québec, ConFooBBQ offre aux
développeurs et autres acteurs des diverses communautés de
développement web de Montréal une occasion rêvée se détendre et
élargir leur réseau de contacts.

En plus des traditionnels hot-dogs, ConFooBBQ met sur scène la
première édition de ConFooBrew, un concours de brassage pour geeks.
Chaque groupe d'usagers à l'option d'élire un maître brasseur qui va
les représenter avec un brassin de bière maison.  Venez déguster des
bières typiquement technophiles tels que la Hopcode Cache et la
Pythoune Blanche.

ConFooBBQ aura lieu au Parc du Mont-Royal tout près de la Maison
Smith, à l'arrière du lac aux castors, Dimanche le 13 Septembre à
13:00.  ConFooBBQ est un événement familial: les enfants et les
conjoints y sont bienvenus.

Le coût pour manger est de 0$.  Au programme: hot-dogs, chips, salade,
boissons gazeuses, biscuits et surtout, beaucoup de plaisir en
perspective.

Les frais pour le repas ansi que des prix de présences seront gracieusement offert par nos commenditaires: Microsoft Canada & Iweb.

Si vous comptez manger, veuillez confirmer votre présence en envoyant
un courriel à board@confoo.ca.  N'oubliez pas d'indiquer votre nom,
le nombre de personne qui vous accompagnerons, et si possible, un
numéro de téléphone.  Aucune réservation n'est nécessaire pour
participer à la dégustation ConFooBrew.

Si vous ne trouvez pas l'endroit, vous pouvez contacter Yann Larrivée
au 514-581-8497 ou Yannick Gingras au 541-800-0138.

Les groupes d'usagers impliqués en profitent aussi pour annoncer la
conférence ConFoo.ca, le plus grand événement sur les développement
Web en Amérique du Nord.  ConFoo.ca lance cette semaine son appel aux
conférenciers, plus de détails sont disponibles sur le site Web:
http://confoo.ca/fr/cfp .


Date: 2009-09-13
Heure: 13h00
Lieu: Montréal, Parc du Mont Royal, Maison Smith
Cartes:
  http://www.lemontroyal.qc.ca/carte/2.html
  http://www.lemontroyal.qc.ca/pdf/carte-f.pdf
Liens:
  http://www.facebook.com/event.php?eid=154314716205&ref=nf
  http://confoo.ca

Septembre 2009 – PHP Québec: Conférence ConFoo 2010 : Appel aux conférenciers

PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP
Montréal lancent un appel aux conférenciers pour la conférence
ConFoo.ca 2010. ConFoo.ca est la plus grande conférence sur le
développement Web en Amérique du Nord, accueillant plus de 500
visiteurs. La conférence aura lieu le 10-11-12 mars 2010 dans le prestigieux hôtel Hilton Bonnaventure à Montréal

Nous recherchons les meilleurs conférenciers, prêts à partager leurs
expériences et leurs compétences avec les programmeurs ou gestionnaires
(marketing et preneurs de décisions). L’évènement 2010 accueillera
plusieurs nouveautés dans le cadre de l’organisation et des
conférences. Les thèmes portent sur deux parties :

La partie technique concernant les aspects suivants du développement
Web: PHP, Python, Ruby, la sécurité, la gestion de projet, les
CMS/Frameworks, les bases de données, l'administration système, les
standards Web, l'accessibilité et les méthodes agiles.

La partie décisionnelle, les outils de référencement (SEO), l’analyse
marketing Web et les réseaux sociaux.

Les sessions peuvent être données soit en français ou en anglais, au
choix du conférencier. Les sessions durent environ une heure avec le
public. Les sessions pourraient être enregistrées pour être
distribuées sous un format numérique.

Tous les détails sur la conférence sont disponibles sur le site Web
confoo.ca.

Septembre 2009 – PHP Québec: Conférence ConFoo 2010 : Appel aux conférenciers

PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP
Montréal lancent un appel aux conférenciers pour la conférence
ConFoo.ca 2010. ConFoo.ca est la plus grande conférence sur le
développement Web en Amérique du Nord, accueillant plus de 500
visiteurs. La conférence aura lieu le 10-11-12 mars 2010 dans le prestigieux hôtel Hilton Bonnaventure à Montréal

Nous recherchons les meilleurs conférenciers, prêts à partager leurs
expériences et leurs compétences avec les programmeurs ou gestionnaires
(marketing et preneurs de décisions). L’évènement 2010 accueillera
plusieurs nouveautés dans le cadre de l’organisation et des
conférences. Les thèmes portent sur deux parties :

La partie technique concernant les aspects suivants du développement
Web: PHP, Python, Ruby, la sécurité, la gestion de projet, les
CMS/Frameworks, les bases de données, l'administration système, les
standards Web, l'accessibilité et les méthodes agiles.

La partie décisionnelle, les outils de référencement (SEO), l’analyse
marketing Web et les réseaux sociaux.

Les sessions peuvent être données soit en français ou en anglais, au
choix du conférencier. Les sessions durent environ une heure avec le
public. Les sessions pourraient être enregistrées pour être
distribuées sous un format numérique.

Tous les détails sur la conférence sont disponibles sur le site Web
confoo.ca.

Septembre 2009 – PHP Québec: 9/13 13:00 ConFooBBQ

PHP-Québec, Montréal-Python, Ruby Montréal, W3Québec, et OWASP Montréal
ont le plaisir de vous inviter au ConFooBBQ, le BBQ pour développeurs.

Inspiré des légendaires PHP-BBQ de PHP-Québec, ConFooBBQ offre aux
développeurs et autres acteurs des diverses communautés de
développement web de Montréal une occasion rêvée se détendre et
élargir leur réseau de contacts.

En plus des traditionnels hot-dogs, ConFooBBQ met sur scène la
première édition de ConFooBrew, un concours de brassage pour geeks.
Chaque groupe d'usagers à l'option d'élire un maître brasseur qui va
les représenter avec un brassin de bière maison. Venez déguster des
bières typiquement technophiles tels que la Hopcode Cache et la
Pythoune Blanche.

ConFooBBQ aura lieu au Parc du Mont-Royal tout près de la Maison
Smith, à l'arrière du lac aux castors, Dimanche le 13 Septembre à
13:00. ConFooBBQ est un événement familial: les enfants et les
conjoints y sont bienvenus.

Le coût pour manger est de 0$. Au programme: hot-dogs, chips, salade,
boissons gazeuses, biscuits et surtout, beaucoup de plaisir en
perspective.

Les frais pour le repas ansi que des prix de présences seront gracieusement offert par nos commenditaires: Microsoft Canada & Iweb.

Si vous comptez manger, veuillez confirmer votre présence en envoyant
un courriel à board@confoo.ca. N'oubliez pas d'indiquer votre nom,
le nombre de personne qui vous accompagnerons, et si possible, un
numéro de téléphone. Aucune réservation n'est nécessaire pour
participer à la dégustation ConFooBrew.

Si vous ne trouvez pas l'endroit, vous pouvez contacter Yann Larrivée
au 514-581-8497 ou Yannick Gingras au 541-800-0138.

Les groupes d'usagers impliqués en profitent aussi pour annoncer la
conférence ConFoo.ca, le plus grand événement sur les développement
Web en Amérique du Nord. ConFoo.ca lance cette semaine son appel aux
conférenciers, plus de détails sont disponibles sur le site Web:
http://confoo.ca/fr/cfp .


Date: 2009-09-13
Heure: 13h00
Lieu: Montréal, Parc du Mont Royal, Maison Smith
Cartes:
http://www.lemontroyal.qc.ca/carte/2.html
http://www.lemontroyal.qc.ca/pdf/carte-f.pdf
Liens:
http://www.facebook.com/event.php?eid=154314716205&ref=nf
http://confoo.ca

Septembre 2009 – Hello Design: Newsletter Nexen.net

Après de nombreux mois d'absence, et une très forte demande des lecteurs du site NEXEN.NET, la newsletter de la semaine du site est de nouveau revenue.

Le redémarrage de cette activité a été relancé début septembre 2009 et elle va être régulière.

Pour consulter les anciennes newsletters : http://www.nexen.net/lettre/archives/index.php

Pour vous abonner à cette newsletter cliquer ici

Septembre 2009 – Nexen.net: PHP architect : Podcast

Image pour le titre du contenu
Le magazine PHP architect relance les actualités en Podcast au format audio et MP3.
Publiés tous les 15 jours, ils regrouperont les nouveautés et actualités de la communauté PHP.
Sommaire du numéro 1 :
  • Comparatif entre PHP et ASP.Net
  • Processus de soumission SXSW
  • PHP 5.3
  • perspectives

Sommaire du numéro 2
  • Les effets de IT, L'oss, et le langage PHP
  • Des réactions sur un post de Keith
  • Quelle est la valeur dans Zend studio
  • Où l'on va avec PHP par Folkes Samuel

Septembre 2009 – Nexen.net: FireSymfony

Image pour le titre du contenu
FireSymfony est un débogage d'applications à l'intérieur de Symfony Firebug. Il s'agit d'une nouvelle extension Firefox vous aidant dans la réalisation de vos projets framework Symfony.
Le blog du site symfony propose en même un tutorial pour vous aider à bien commencer.

Septembre 2009 – Nexen.net: Design Patterns

Image pour le titre du contenu
Le site Devshed lance une nouvelle série d'articles sur « l'utilisation des Design Patterns » dans les applications PHP. Le premier article de cette série va traiter du chargement.
Il propose l'utilisation d'une classe sous la forme d'un échantillon, ainsi vous êtes prêt à vous lancer dans les Designs Patterns.

Septembre 2009 – Nicolas Loeuillet: Citation : AJAX, une complexité incroyable

Le scripts Javascript (avec ou sans AJAX d’ailleurs) sont imbuvables. N’espérez pas qu’ils soient facilement maintenables, c’est très difficile dès le moment où vous commencer à utiliser de l’AJAX. Si vous devez vous replonger dedans, ça sera la croix et la bannière pour comprendre le code. À la clef, une énorme perte de temps et des maux de têtes.

L’architecture XRX : la fin du développement web douloureux

Et mince, notre prochaine appli (basée sur symfony 1.2.8) utilisant énormément de javascript va bientôt passer en prod… :-p

Septembre 2009 – Hello Design: Forum PHP.... C'est pour bientôt

Depuis quelques jours, je reçois de nombreuses demandes concernant le Forum PHP 2009 organisé par l'AFUP (Association Française des Utilisateurs PHP) en partenariat avec LeMug.Fr (MySQL User Group).

Pour rappel, cet évènement se déroulera le 12 et 13 novembre prochain à la cité des sciences à Paris. Les conférences vont être dévoiler dans très peu de temps donc encore un tout petit peu de patience mais cette année comme les autres années, la qualité sera présente.

Les inscriptions sont ouvertes depuis de nombreux mois et vous pouvez :

  • Vous inscrire
  • Passer commande
  • etc.

Alors n'hésitez pas à vous inscrire sur le lien suivant : cliquer ici Ou en consultant le site officiel de AFUP : http://afup.org/pages/forumphp2009/

A très bientôt

Septembre 2009 – Nexen.net: HTTP : le protocole du Web

Image pour le titre du contenu
Julien Pauli publie un tour d'horizon de HTTP. Vou y découvrirez à coup sûr des aspects méconnus :
  • la typographie
  • les méthodes
  • les codes retours
  • Les en-têtes
  • Proxies
  • etc

Septembre 2009 – Nexen.net: 3 façons d'utiliser les index dans MySQL

Image pour le titre du contenu
Peter rappelle qu'il existe différentes façons d'utiliser l'indexation de MySQL
  • La recherche
  • Les tris des données
  • La lecture des données

Septembre 2009 – Nexen.net: PrestaShop 1.2.3

Image pour le titre du contenu
PrestaShop est une application e-commerce de qualité professionnelle, dont une nouvelle version vient de sortir. PrestaShop est réalisé en PHP et sous licence gratuite Open Source.
Une version démo est disponible, mais aussi un wiki, un forum et le multilangue. La prise en main est assez facile.

Septembre 2009 – Dur Comme Faire: Zend Server : Permettre l'accès à distance à phpMyAdmin

Je teste Zend Server depuis quelques semaines. Mes premières impressions sont plutôt bonnes mais il y a une chose qui me dérange. Il est possible d'installer phpMyAdmin afin d'administrer des bases de données MySQL mais l'accès à cet outil ne peut se faire que depuis la machine locale. Cela...

Septembre 2009 – PHP Index: Webinar gratuit sur PHP 5.3 et les namespaces

Webinar Zend Technologies US

If you’re using PHP components provided by others, or if you’re creating components others may use, you don’t want to miss our technical Webinar on Namespaces in PHP 5.3.

Join Stas Malyshev, a core PHP contributor, and Michael Spector from Zend’s R&D team to learn what namespaces are and how to make the most out of them.

Mardi 15 septembre à 18h. Heure française.

Proposé par Christophe Chervy

Septembre 2009 – Dur Comme Faire: Gestion du code mort

Olivier Hoareau évoque dans son dernier billet la gestion du code mort. C'est un sujet très intéressant car il montre que dans un domaine technique comme le développement, certaines notions très humaines et donc irrationnelles ont parfois une grande importance. Il y a effectivement un...

Septembre 2009 – Nexen.net: Comment Déboguer en PHP

Image pour le titre du contenu
Sur le blog de Think vitamine, Kieran Masterson a écrit un article assez complet pour déboguer vos applications PHP.
Il existe de nombreuses façons de repérer les niveaux des erreurs en utilisant quelques outils, cela peut vous faciliter la vie.
En outre, l'article vous montre le point de démarrage pour utiliser certains outils comme FirePHP et xDebug

Septembre 2009 – Nicolas Loeuillet: FireSymfony n’affiche rien dans les logs quand j’actualise

Petit souci que je viens d’avoir en local (windows XP + wamp 2.0 + symfony 1.2.8 + Firefox 3.5.3 + Firebug 1.4.2 + FireSymfony 1.1.1) : les logs symfony récupérés par FireSymfony n’affichaient plus rien du tout.

La raison? C’est parce que FireSymfony était ouvert quand je faisais F5 sur mon application.

Il faut donc actualiser le projet symfony avec le panneau de FireSymfony fermé.

Petite question à ceux qui ont testé ce plugin Firefox : si vous naviguez sur votre appli symfony avec le panneau FireSymfony ouvert, est-ce que les logs sont toujours bien affichés? Car c’est un peu gênant de toujours devoir fermer FireSymfony pour actualiser…

Je ne peux pas faire ce test, car on navigue sur notre appli en AJAX (et donc on ne refraichit pas notre page) et je n’ai pas d’autres applis symfony sous la main.

Ajouté le 16-09-2009 : le bug est corrigé, il faut télécharger la prochaine version (expérimentale pour l’instant) qui se trouve ici. Thank you Alvaro!

Septembre 2009 – Prendre un Café: Optimize your Doctrine Workflow with Specialized Queries

I’m currently working on a big Symfony project, with a lot of Doctrine models and complex queries to write. I found a way to organize all of them in an object-oriented and cleaner way than using the traditionnal addNamedQuery() and createNamedQuery() methods workflow[1].

The idea is to create dedicated query classes for a given model ; this way, you can provide useful methods to build the business-related parts of your query.

As usual, the theory is more understandable with a concrete example. Let’s consider this simple Doctrine model[2] :

Disclaimer: The provided examples have been written in a hurry, so mistakes might have been not detected by my attentive proof-reading ;)

BlogAuthor:
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true  
    name:
      type: string(255)
  relations:
    Post:
      type: one
      class: BlogPost
      local: id
      foreign: author_id
 
BlogPost:
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    author_id:
      type: integer(4)
      notnull: true
    title:
      type: string(255)
    content:
      type: string(65535)
  relations:
    Author:
      type: one
      class: BlogAuthor
      local: author_id
      foreign: id
    Comments:
      type: many
      class: BlogComment
      local: id
      foreign: post_id
 
BlogComment:
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    post_id:
      type: integer(4)
      notnull: true
    author:
      type: string(255)
    content:
      type: string(5000)
  relations:
    Post:
      type: one
      class: BlogPost
      local: post_id
      foreign: id

Now let’s imagine a Query class dedicated to query the BlogPost table:

<?php 
class BlogPostQuery extends Doctrine_Query
{
  static public function create($conn = null, $class = null)
  {
    return parent::create($conn, 'BlogPostQuery')
      ->from('BlogPost p');
  }
  
  public function addPosts($fields = 'p.*')
  {
    return $this->addSelect('p.*');
  }
  
  public function addComments($fields = 'c.*')
  {
    return $this
      ->addSelect($fields)
      ->leftJoin('p.Comments c')
      ->addGroupBy('c.id');
  }
  
  public function addAuthors($fields = 'a.*')
  {
    return $this
      ->addSelect($fields)
      ->leftJoin('p.Author a')
      ->addGroupBy('a.id');
  }
  
  public function addCommentsCount($alias = 'nb_comments')
  {
    return $this
      ->addSelect(sprintf('COUNT(c.id) as %s', $alias))
      ->addGroupBy('c.id');
  }
  
  public function filterByAuthorName($authorName)
  {
    return $this
      ->andWhere('a.name = ?', $authorName);
  }
}

So how can we use this query object? Here are some sample uses:

// Retrieve all posts
$posts = BlogPostQuery::create()
  ->addPosts()
  ->fetchArray();
 
// Retrieve all posts with comments
$posts = BlogPostQuery::create()
  ->addPosts()
  ->addComments()
  ->fetchArray();
 
// Retrieve all posts with comments and their count per post
$posts = BlogPostQuery::create()
  ->addPosts()
  ->addComments()
  ->addCommentsCount('yataa')
  ->fetchArray();
 
// Retrieve all post with chuck as its author and related comments
$posts = BlogPostQuery::create()
  ->addAuthors()
  ->addPosts()
  ->addComments()
  ->filterByAuthorName('chuck')
  ->fetchArray();
 
// and so on... 

Of course, this example of use is not really relevant as our model is really simple, but when you’re dealing with dozens of internationalized objects, it can help cleaning your model classes, controllers and improving the organization of your work.

Update and important precisions

Some people are having negative feedback regarding this technique, claiming it will encourage people using the custom query object directly in the controllers; that’s absolutely not the case as the queries are to be used only within the model layer, for example in the BlogPostTable class:

<?php
class BlogPostTable extends Doctrine_Table
{
  static public function getPostsWithCommentsByAuthor($authorName)
  {
    return BlogPostQuery::create()
      ->addPosts()
      ->addComments()
      ->filterByAuthorName($authorName)
      ->fetchArray()
    ;
  }
}

And in a controller:

class blogActions extends sfActions
{
  public function executeListByAuthor(sfWebRequest $request)
  {
    $this->posts = BlogPostTable::getPostsWithCommentsByAuthor($request->getParameter('author'));
  }
}

Notes

[1] … or raw queries written directly within controllers, but you may know that this is really bad ;)

[2] I’m using Doctrine 1.2 beta (bundled with upcoming symfony 1.3) in the provided example.


Ce billet intitulé Optimize your Doctrine Workflow with Specialized Queries a été rédigé par Nicolas Perriault et publié sur le blog Prendre un Café sous licence Creative Commons BY-NC-SA.

Septembre 2009 – Nexen.net: Comment PHP est devenu un tel succès

Image pour le titre du contenu
Le site Techradar.com publie une interview de Rasmus Lerdof sur le thème « Comment et pourquoi PHP est devenu un tel succès dans le monde du développement en ligne  ? ».
Les sujets mentionnés dans l'interview sont très variés et surtout, l'interview parle des différentes actions dans lesquelles Rasmus est impliqué

Septembre 2009 – Nexen.net: PHPUnit 3.4.0

Image pour le titre du contenu
La très attendue nouvelle version de PHPUnit vient de sortir.
Les nouvelles fonctionnalités proposés sont :
- le support pour les dépendances dans les tests et la réutilisation mobilier
- la possibilité d'exécuter des tests dans des processus distinct PHP pour les tests d'isolement accru
Consultez le communiqué pour connaître l'ensemble des nouveautés.

Septembre 2009 – Apprendre-PHP.com: Programme du Forum AFUP PHP 2009 !

Le programme du Forum PHP de Paris, organisé par l'AFUP, est enfin disponible ; et comme chaque année, les conférences et ateliers techniques de qualité seront au rendez-vous. Cette nouvelle édition du Forum se tiendra les jeudi 12 et vendredi 13 novembre prochains à la Cité des Sciences...

Septembre 2009 – Nexen.net: Différence entre une clé primaire et un index unique

Image pour le titre du contenu
Sur le blog du site Xaprb,com, Baron nous explique qu'il existe de nombreuses façons pour réaliser des requêtes.
Et à cette occasion, il nous montre une différence entre une clé primaire et une clé unique.
Il montre comment il a traité sa réponse par rapport à un cas précis ce qui est très utile pour les manipulations de bases de données comme MySQL et dans l'incorporation de scripts avec PHP.

Septembre 2009 – Lindev: PHP et le grain de sel

Mettre son grain de sel partout Ca sert à quoi Je ne suis pas expert en grain de sel , mais de ce que je retiens et utilise , le grain de sel , est un ajout dans une donnée , qui permet d'eviter par exemple , d'avoir un mot de passe utilisateur trop simple enregistré en base . Vous me direz , (...)

Septembre 2009 – Hello Design: PHP Solution 5/2009

Le nouveau numéro de PHP solution vient de sortir avec comme d'habitude de nombreux articles parlant de PHP et MySQL. avec comme sommaire :

Virtualisation : LAMP à ma portée !

  • Le web service : YDN (1ère partie)
  • Le pathfinding pour jeu en PHP
  • Interfacer Flex et PHP via le protocole AMF
  • Fabriquer intelligemment vos objets avec les patterns
  • Accessibilité et e-commerce
  • Les formulaires en PHP
  • Introduction à Zend Server
  • Mise en place d’une architecture distribuée
  • Manipuler les données d’un fichier avec PHP

Dans ce numéro, vous pourrez trouver :

  • 1 article de ma part
  • 1 tutorial vidéo parlant de PHP et POO
  • Les actualités comme d'habitudes ;)

http://www.phpsolmag.org/prt/view/actualies/issue/1069.html

Septembre 2009 – Nexen.net: FORUM PHP : 9 ème édition

Image pour le titre du contenu
Le programme du forum PHP 2009 organisé par l'AFUP (association Française des Utilisateurs de PHP) vient d'être dévoilé en partenariat avec LeMug.fr (MySQL User Group).
Pour rappel, cette 9ème édition va se dérouler le 12 et 13 novembre 2009 à la Cité des Sciences de Paris.
Cette année, de nombreuses têtes d'affiches internationales vont faire le déplacement comme Michael "Monty" Widenius, Zoe Slattery, Anna Filina, Johannes Schlüter... ainsi que nos experts francophones.
Une occasion rêvée d'aborder les retours d'expériences  et aussi des aspects techniques.
Pour connaître exactement le contenu, consulter le communiqué officiel

Septembre 2009 – PHP Index: PHP 5.2.11

PHP 5.2.11 est disponible au téléchargement.

Cette nouvelle version concerne la branche 5.2.x ; elle apporte des correctifs de bugs ainsi que quelques mises à jour de sécurité.

Septembre 2009 – Nexen.net: PHP 5.2.11

Image pour le titre du contenu
La nouvelle version de PHP 5.2.11 vient de sortir. A noter, une amélioration de la stabilité de la branche PHP 5.2.x de PHP avec de nombreuses corrections de bugs en aprticulier en ce qui concerne la sécurité. Inutile donc de vous rappeler l'importance d'effectuer des upgrade.
Pour connaître l'ensemble des évolutions, vous pouvez consulter le communiqué officiel.

Septembre 2009 – Nicolas Loeuillet: Utiliser Firebug pour un développement AJAX sous symfony

Après avoir testé FireSymfony, je me suis penché vers FirePHP pour voir si débugguer mon appli symfony utilisant une navigation full ajax (et donc forcément, sans jamais recharger quoique ce soit) serait plus évident.

Car l’inconvénient de FireSymfony, c’est que rien n’est affiché dans les logs quand on fait des appels au serveur en ajax (finalement, la debug bar de symfony ne le fait pas non plus).

C’est possible que je me trompe, et si on peut afficher les logs des requêtes envoyées en ajax avec FireSymfony, dites-moi comment faire ;-) , merci!

Toujours est-il qu’avec FirePHP, c’est possible. Comment?

Pré-requis

Forcément, il faut Firefox (3.5.3 chez moi) avec Firebug (1.4.2) et donc FirePHP (0.3.1), disponible ici.

Installation

Installez ensuite le plugin symfony sfFirePHPPlugin avec la commande qui va bien

php symfony plugin:install sfFirePHPPlugin

Après un petit

php symfony plugin:publish-assets

pour déployer les fichiers web au bon endroit, ajoutez ce bout de code dans votre fichier apps/frontend/config/factories.yml :

dev:
logger:
class: sfAggregateLogger
param:
level: debug
loggers:
sf_fire_php:
class: sfFirePHPLogger
param:
level: debug
processor: http://localhost/sfFirePHPPlugin/js/RequestProcessor.js #make sure this is absolute

(euh pour l’indentation du fichier YML, allez voir là, c’est mieux fait!)

Activez Firebug, allez dans l’onglet Réseau et cliquez sur l’icône de FirePHP située à droite (un insecte bleu), puis « Allowed sites… ». Ajoutez-y votre site de dév.

Un petit php symfony cc pour tout bien nettoyer comme il faut, et c’est tout bon.

Pour débugguer votre appli, terminés les var_dump et les echo, voici le code nécessaire :

$firephp = sfFirePHP::getInstance(true);
$firephp->fb($this->maVar, 'ma variable');

// C'est possible de grouper des dump dans l'affichage de FirePHP
$firephp->group('debut du groupe');
$firephp->fb($this->maVar2, 'ma variable 2');
$firephp->fb($this->maVar3, 'ma variable 3');
$firephp->groupEnd();

Si vous avez d’autres solutions pour débugguer comme il faut une application ajax, n’hésitez pas à me soumettre vos propositions!

Sources :

Septembre 2009 – PHP Index: FORUM PHP : 9 ème édition

Le programme du forum PHP 2009 organisé par l'AFUP (association Française des Utilisateurs de PHP) vient d'être dévoilé en partenariat avec LeMug.fr (MySQL User Group).

Pour rappel, cette 9ème édition va se dérouler le 12 et 13 novembre 2009 à la Cité des Sciences de Paris.

Cette année, de nombreuses têtes d'affiches internationales vont faire le déplacement comme Michael "Monty" Widenius, Zoe Slattery, Anna Filina, Johannes Schlüter... ainsi que nos experts francophones.

Une occasion rêvée d'aborder les retours d'expériences et aussi des aspects techniques.

Pour connaître exactement le contenu, consulter le communiqué officiel

Proposé par christophe Villeneuve

Septembre 2009 – Nexen.net: Plici 2.0

Image pour le titre du contenu
Plici est une API réalisée en PHP/MySQL, dont la nouvelle version vient de paraître.
Elle comprend entre autres :
Un éditeur CSS sur le principe de Firebug
Des thèmes avec du jQuery
Une interface administration complètement refaite et épurée
Un système de cache
Des thèmes compatibles W3C
Un système de facturation plus rapide
A noter également que cette nouvelle solution de vente en ligne fonctionne aussi bien sur des serveurs dédiés et mutualisés.

Septembre 2009 – Nexen.net: Passez en UTF-8

Image pour le titre du contenu
Lorsque l'on possède un ou plusieurs sites internet, la norme utilisée n'est pas obligatoirement UTF-8.
Josselin publie un article sur le site de developpez.com dans lequel il indique la procédure pour passer à l'UTF-8 avec un minimum de manipulations.

Septembre 2009 – Nexen.net: Actualité de développement PEAR, edition 253

Image pour le titre du contenu
11 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.

 

 

Septembre 2009 – Nexen.net: Actualité de développement PECL, edition 250

Image pour le titre du contenu
1 paquet a été mis à jour cette semaine :
  • shape : interface libshape
PECL est la bibliothèque d'extensions C de PHP.

 

 

Septembre 2009 – Nexen.net: MySQL SHOW PRIVILEGES

Image pour le titre du contenu
Ronald Bradford montre qu'il est possible de connaître les droits d'un utilisateur en utilisant la fonction SHOW PRIVILEGES que propose MySQL
Il a établi un tableau sous forme de liste pour montrer à tout le monde le privilège, le context et l'utilisation....
Un tableau important à avoir à portée de mains.

Septembre 2009 – Nexen.net: phlyMail 3.7.18

Image pour le titre du contenu
PhlyMail est un webmail et une application PIM, réalisé en PHP.
Cette application (API) communique en Pop3/Imap et possède comme un webmail classique : un carnet d'adresses, un agenda, un gestionnaire de fichiers et un support SMS.
Cette nouvelle version est orientée modulaire avec des nouvelles fonctionnalités comme le RSS, le stockage de fichiers personnels... Ainsi, les contacts et les évènements peuvent être organisés par groupes.

Septembre 2009 – Lindev: big brother is watching you !

Surveiller la disponibilité d'un site Rien de bien extraordinaire , mais le principe m'amuse alors autant partager , et pourquoi pas récupérer des idées dans vos commentaires . Le principe : L'on me demande un moyen de vérifier si des sites distants sont disponibles , ou non de façon permanente . (...)

Septembre 2009 – Nexen.net: ElePHPant en 3D

Image pour le titre du contenu
Nous connaissions le logo elePHPant, les peluches elePHPants, les aventures avec de nombreuses photos, des différentes réalisations (par exemple les voyages), des exploits comme des pyramides ou calendriers... et aussi le film de la naissance de l'elePHPant.
Maintenant, le site Elroubio montre que l'on peut faire de la 3D... avec succès

Septembre 2009 – z-f.fr: [Livre EN] ZF 1.8 Web Application Development

Forum: Brèves
Auteur: philippe
Écrit le: Tue, 22 Sep 2009 12:10:09 +0200
Dernier message: Wed, 30 Dec 2009 20:03:45 +0100

Septembre 2009 – PHP Index: Drupal 6.14 et 5.20

Les versions 6.14 et 5.20 du CMS Drupal viennent de sortir. Elles corrigent des importantes failles de sécurité ainsi que les bugs signalés en utilisant l'outil de suivi des problèmes de Drupal.
La mises à jour des sites faits avec Drupal 5 et 6 est fortement recommandée.

La liste complète des modifications entre la version 6.13 et 6.14 peut être consultée ici. Celle entre les versions 5.19 et 5.20, ici.

Ces deux nouvelles versions sont sorties suite au report des problèmes de sécurité décrits sur le site officiel. La correction de ces failles de sécurité peut se faire soit par une mise à jour du CMS, soit par un patch. La première solution est préférable, car elle contient en plus la correction d'autres bugs.

Pour effectuer les corrections sur vos sites, vous pouvez télécharger :

Septembre 2009 – PHP Index: Ganesha LMS 4.5 - plate-forme e-learning

ANEMA vient de publier Ganesha LMS 4.5, plate-forme e-learning en PHP/MySQL

Toute l'équipe d'ANEMA est fière de vous annoncer que la version Ganesha 4.5 est disponible depuis lundi 21 septembre 2009 en téléchargement sur www.ganesha.fr.

Ganesha LMS est la plate-forme e-learning open source de référence en France pour la formation des salariés d'entreprise.

Ce logiciel est un LMS (Learning Management System) qui permet aux services de formation d'entreprise de former leurs collaborateurs à distance ou en centre de ressources.

ANEMA édite ce logiciel depuis 2001 et propose un ensemble de services : hébergement, maintenance, formation, développement de fonctionnalités, etc.

La nouvelle version 4.5 de Ganesha LMS est une évolution importante, voici les principales nouveautés:

Le système d'alerte
Le système de relance
Le système de notification
L'import de présentation
Affichage plein écran du contenu sans fenêtre popup
De nouvelles vue statistiques
Des améliorations sur les codes d'inscriptions en ligne, l'ergonomie, la personnalisation de la terminologie

Ganesha LMS s'offre une nouvelle personnalisation graphique le skin green IT.


A télécharger sur http://www.ganesha.fr/

L'équipe ANEMA

Proposé par Marc VINCENT

Septembre 2009 – Nexen.net: Intégrez PHP dans Google Contacts

Image pour le titre du contenu
Vikram Vaswani montre sur le site IBM, comment intégrer votre application PHP avec Google Contacts
Il nous montre de façon détaillée comment lire et écrire des informations de contact avec XML et PHP dans Google contacts.

Septembre 2009 – PHP Index: Zend s’associe avec IBM, Microsoft, Rackspace et d’autres sociétés de référence sur le Cloud Computing pour lancer une initiative Open Source pour le développement d’applications Cloud.

La nouvelle Simple API pour les services d’applications Cloud facilite le développement d’applications Cloud Computing qui peuvent ainsi accéder aux principales plateformes Cloud.

CUPERTINO, Californie – 22 septembre 2009 – Zend Technologies, The PHP Company, a lancé ce jour le projet « Simple API for Cloud Application Services », une nouvelle initiative Open Source qui permet aux développeurs d’utiliser les services d’applications Cloud les plus répandus tout en leur permettant de bénéficier des fonctionnalités proposées par les fournisseurs individuels. Ce projet a pour but de faciliter le développement d’applications Cloud qui peuvent désormais accéder aux services des principales plateformes Cloud.
Zend, IBM, Microsoft, Nirvanix, Rackspace et GoGrid sont co-fondateurs et contributeurs de ce projet communautaire.

Ce projet permet aux développeurs d’utiliser une interface unique afin d’interagir avec différents services Cloud et d’accéder plus facilement aux nouvelles technologies des fournisseurs de services Cloud. Les premiers livrables incluront des interfaces pour le file storage, le document database, et les simple queue services via des plateformes telles que Amazon Web Services, Windows Azure, Nirvanix Storage Delivery Network et Rackspace Cloud Files. Les développeurs peuvent ainsi déployer des applications logicielles qui peuvent accéder à des services disponibles dans ces environnements sans perdre de temps ou changer leur code source de façon importante.

« Le Cloud Computing offre une importante valeur aux entreprises de toutes tailles, mais le manque de portabilité qui existait entre les services Cloud, même pour les opérations les plus simples, a été un frein pour l’adoption des services Cloud, a déclaré Andi Gutmans, CEO de Zend Technologies. »

« L’API Simple Cloud combine les avantages des processus de la communauté Open Source avec la participation active des fournisseurs de services Cloud » continue Andi Gutmans. « Grâce à la participation et au support en amont des leaders de l’industrie et de la communauté Zend Framework, nous sommes sûrs que ce projet va grandir et aider de nombreux développeurs et entreprises qui souhaitent construire des applications Web modernes pour le Cloud. »

Le projet Simple Cloud API est conçu pour encourager la participation et les contributions actives de la communauté Open Source, avec pour résultat la mise à disponibilité de connecteurs Simple Cloud API pour tous les fournisseurs de services Cloud.

Bien que ce projet soit mené par Zend, la plus grande entreprise contributrice au langage PHP, l’API Simple Cloud peut être traduite vers n’importe quel langage Web orienté objet. L’implémentation PHP sera disponible via le Zend Framework, projet Open Source très largement adopté, en tant que nouveau composant, nommé « Zend Cloud ». Les développeurs PHP pourront bénéficier de ce nouveau composant pour utiliser les bibliothèques clients disponibles dans le Zend Framework de façon uniforme.

Les connecteurs Zend Cloud seront disponibles pour des services tels que :

- Les services de stockage de données, y compris les Windows Azure blobs, Rackspace Cloud Files, Nirvanix Storage Delivery Network et Amazon S3

- Document Storage services, y compris Windows Azure tables et Amazon SimpleDB

- Les services de gestion de file d’attente, y compris Amazon SQS et Windows Azure queues

Zend Cloud va également fournir des connecteurs pour des services locaux pour rendre l’écriture de code et le test en mode déconnecté sur des services Cloud aussi facile que le développement en mode connecté.

D’autres connecteurs, tels que ceux disponibles pour Rackspace Cloud Files API, fonctionneront avec des librairies externes sans changement dans le code applicatif. En plus des librairies PHP client dans Windows Azure Storage, Microsoft contribue également aux connecteurs Simple Cloud API du Zend Framework. Ces connecteurs permettront aux applications de bénéficier des fonctionnalités Windows Azure via l’interface de l’API Simple Cloud, et donneront accès aux dernière innovations telles que les transactions et l’upload partiel.

Dr. Kristof Kloeckner, CTO d’IBM Cloud Computing, reconnait cet effort comme une étape significative vers un Cloud plus ouvert et interopérable. « L’API Simple Cloud va permettre aux développeurs d’appeler des services Cloud de la même façon quel que soit le fournisseur de service. » Ceci peut réduire considérablement les coûts de développement et fournir un certain choix au client. Dans ce but, IBM contribuera à fournir des connecteurs pour les interfaces des services Cloud d’IBM, permettant ainsi aux développeurs de switcher entre les Clouds publics, privés et les environnements datacenter traditionnels. »

« Microsoft est heureux de continuer à travailler avec Zend et de se joindre aux efforts des autres contributeurs de ce projet. » a déclaré Doug Hauger, General Manager, Microsoft Windows Azure. « L’API Simple Cloud est un exemple de l’investissement continu de Microsoft dans l’ouverture et l’interopérabilité de cette plateforme. Nous sommes impatients de voir comment ce projet va favoriser l’adoption des plateformes de Cloud Computing par les développeurs PHP et espérons que nombre d’entre eux seront encouragés à utiliser Windows Azure. »

Lew Moorman, Chief Strategy Officer et Président de Rackspace Cloud, ajoute : « Nous sommes fiers de prendre part à cette initiative de grande valeur pour les développeurs. Nos contributions à l’API Simple Cloud sont une partie de notre effort constant qui consiste à apporter une valeur unique aux logiciels Open Source au sein du Cloud. De nombreux clients utilisent PHP comme langage de référence pour leurs applications Web, et nous pensons que ces développeurs doivent être à même de pouvoir choisir les services Cloud qui correspondent le mieux à leurs besoins via une interface qu’ils peuvent aider à définir. »

Une première proposition et implémentation de référence de l’API Simple Cloud est disponible dès maintenant pour être évaluée par la communauté et afin qu’elle puisse participer sur http://www.simplecloud.org/. Les développeurs peuvent également évaluer la Simple API for Cloud Application Services en déployant leurs applications qui l’utilisent sur le Cloud Amazon en se servant de la Zend Server Community Edition Amazon Machine Image (AMI) pour EC2 disponible gratuitement. Zend Technologies offre également un support commercial pour Zend Server AMI. Une préversion des bibliothèques PHP clients pour Windows Azure peut être téléchargée sur http://framework.zend.com/Zend_Service_WindowsAzure

A propos de Zend Technologies

Zend Technologies Inc., la PHP Company, est le leader des produits et services de développement, déploiement et gestion d’applications Web PHP critiques. PHP est utilisé par plus de 20 millions de sites Internet et est rapidement devenu le langage le plus répandu pour développer des applications stratégiques. Mondialement déployée dans plus de 27 000 entreprises, la gamme de produits Zend apporte une solution complète durant tout le cycle de vie d’une application PHP. Le siège de Zend est situé à Cupertino en Californie.

Pour plus d’informations, visitez www.zend.fr ou appelez le 01 48 55 02 00.

# # #

Zend, Zend Technologies, Zend Framework, Zend.com, Zend Server, and associated logos and icons, are trademarks of Zend Technologies, Inc. and may be registered in certain jurisdictions. All other trademarks are the property of their respective owners.

Contact Presse :

Christophe Chervy
01-48-55-02-02
Christophe@zend.com

Proposé par Christophe Chervy

Septembre 2009 – Nexen.net: PHP à l'Open World forum

Image pour le titre du contenu
L'Open World Forum se tient la semaine prochaine, au coeur de Paris.
C'est un carrefour exceptionnel, entre les leaders de projets libres (Mozilla, Eclips, Apache...), des DSI et des politiques.
Bien sûr, PHP, y tient une place importante. Avec Symfony, Octo et Zend, Alter Way présente une session sur
l'industrialisation de PHP, en présentant les méthodes et outils qui font la différence aujourd'hui lors des projets
critiques. La session fera le point sur les outils actuels, et sur ceux qui restent à assimiler.
Soyez nombreux à venir nous rejoindre, à l'euro site Georges V, Paris 8 (derrière les champs Elysées), le jeudi 1er octobre, de 14 à 16h00. La session sera en français (contrairement à la présentation du site).
L'entrée à la conférence et à la session sont gratuites.

Septembre 2009 – Nexen.net: Hyla 0.8.2

Image pour le titre du contenu
Hyla est un gestionnaire de fichiers réalisé en PHP et MySQL, sous licence GPL. Il peut s'installer sur internet ou sur un serveur local.
Le but de Hyla est de gérer toutes sortes de fichiers grâce à des greffons. Il peut servir de base pour gérer une galerie photo en 1 clic.
Ce projet est prometteur, c'est pourquoi l'équipe attend vos retours.

Septembre 2009 – PHP Index: Zend Framework 1.9.3PL1

La version 1.9.3 PL1 de Zend Framework vient de sortir et est désormais disponible au téléchargement. Elle corrige une faille de compatibilité de versions trouvée dans la version 1.9.3 qui est sortie quelques heures avant. Attention, la version 1.9.3 PL1 doit être utilisée à la place de 1.9.3 !

La version 1.9.3 est la troisième de la série 1.9. Près d'une centaine de corrections ont été apportées sur 40 composants différents du Framework, notamment sur :

  • la gestion des ACLs
  • le composant de tests unitaires
  • les options de captcha
  • les librairies de gestion de la base de données
  • ...

Vous pouvez télécharger Zend Framework 1.9.3 PL1 ici. Pour voir la liste complète de mises à jour, veuillez consulter le changelog. Plus de détails sur le site officiel de Zend.

Septembre 2009 – Hello Design: OSDC

L'OSDC (Open Source Developers Conference France) est un évènement communautaire, organisé le 2 et 3 octobre 2009 au Carrefour Numérique de la Cité des Sciences, à Paris (porte de la Villette).

L'objectif d'OSDC.fr est de rassembler les développeurs francophones de différentes communautés autour des technologies innovantes de la programmation...

J'ai été retenu avec comme sujet : "Les bases de données à portée de mains en PDO" avec le langage PHP.

Pour plus d'informations : http://www.osdc.fr

Septembre 2009 – z-f.fr: Uniformiser le cloud computing

Forum: Brèves
Auteur: philippe
Écrit le: Thu, 24 Sep 2009 09:57:04 +0200
Dernier message: Fri, 25 Sep 2009 21:25:44 +0200

Septembre 2009 – Hello Design: Les elePHPants au forum PHP

Les Peluches elePHPants sont très sollicitées et surtout très demandées.

annonce.jpg

La nouvelle vague de pelluche arrive et il sera possible d'en adopter pendant le forum PHP, ce qui va rassurer beaucoup de personnes... Alors patience...

Septembre 2009 – Dur Comme Faire: Le programme du Forum PHP 2009 est annoncé

L'édition 2009 du Forum PHP se tiendra les 12 et 13 novembre à la Cité des sciences de la Villette, à Paris. Le programme vient d'être dévoilé et il fait la part belle au duo PHP / MySQL. Cet évènement sera d'ailleurs organisé en collaboration avec Le MUG, l’association francophone des...

Septembre 2009 – Nicolas Loeuillet: [Wampserver] « Apache HTTP Server a rencontré un problème et doit fermer »

Quelqu’un peut-il me venir en aide? J’ai ce message de temps en temps (après un appel à un webservice par exemple).

J’utilise wampserver 2.0 (apache 2.2.6 + php 5.2.5).

Voici ce que j’ai trouvé dans les logs d’apache :

[Fri Sep 25 10:33:54 2009] [notice] Parent: child process exited with status 3221225477 — Restarting.
[Fri Sep 25 10:33:55 2009] [notice] Apache/2.2.6 (Win32) PHP/5.2.5 configured — resuming normal operations
[Fri Sep 25 10:33:55 2009] [notice] Server built: Sep 5 2007 08:58:56
[Fri Sep 25 10:33:55 2009] [notice] Parent: Created child process 4296
[Fri Sep 25 10:33:55 2009] [notice] Child 4296: Child process is running
[Fri Sep 25 10:33:55 2009] [notice] Child 4296: Acquired the start mutex.
[Fri Sep 25 10:33:55 2009] [notice] Child 4296: Starting 250 worker threads.
[Fri Sep 25 10:33:55 2009] [notice] Child 4296: Starting thread to listen on port 8080.

Si ça dit quelque chose à quelqu’un, merci bien :-) !

Septembre 2009 – Apprendre-PHP.com - apprendre à programmer avec le langage PHP: Forum PHP 2009

Le programme du Forum PHP Paris 2009 est en ligne. De nombreuses conférences sont prévues les 12 et 13 novembre à la Cité des Sciences.

Septembre 2009 – Kamelot Blog: PHP scan : mb_encode_mimeheader

PHP scan : mb_encode_mimeheader

Septembre 2009 – Lapin Blanc: Introducing Publish It Yourself: a self-managed libre CMS

Publish It Yourself =================== _Publish It Yourself_ is a self-managed CMS. It is designed to create autonomous communities where users can directly create and manage content. It is a mix between blogs and blogs platforms, digg-likes and open publishing websites such as (the Indymedia (...)

Septembre 2009 – Nexen.net: Actualité de développement PEAR, edition 254

Image pour le titre du contenu
8 paquets ont été mis à jour cette semaine :
PEAR est la bibliothèque de composants PHP.

 

 

Septembre 2009 – tigrou/pwet.fr: 13 jours avec Magento

Je travaille depuis très exactement 13 jours sur un projet Magento histoire de changer un peu d'eZ Publish. Bon, en réalité j'ai fait 2 jours de formation et 11 de développement plus une petite expérience d'optimisations côté système. C'est certes trop court pour en saisir toutes les subtilités techniques mais c'est largement suffisant pour y voir de très bonnes choses et de beaucoup moins bonnes.

Parmi les excellents points :

  • la flexibilité et l'extensibilité : grâce à l'alliance du modèle EAV et à la possibilité de surcharger proprement presque tout le core.
  • le système d'installation et mise à jour des modules qui résout pas mal de problèmes liés au développement collaboratif sur plusieurs plateformes différentes avec de multiples informations stockées en base de données
  • l'ergonomie générale du backoffice mais ...

Dans les moins bons points :

  • le backoffice est lent, vraiment très lent; il n'y a pas (encore) d'éditeur WYSIWYG vraiment intégré, l'accessibilité est loin d'être parfaite (j'aime naviguer dans les formulaires au clavier...), et si une requête AJAX n'aboutit pas pour cause d'expiration de la session, rien ne se passe, pas de message d'erreur, juste rien...
  • Magento utilise directement PHP comme langage de template, je ne suis pas fan (je ne vais pas relancer le débat), en revanche quand je vois des templates comme price.phtml, j'ai mal à la tête rien qu'en pensant devoir le modifier un jour...
  • la version Entreprise de Magento embarque à la fois Prototype/Scriptacoulous et jQuery, je semble être le seul que ça choque pourtant quand on connaît l'impact de quelques centaines de millisecondes de latence supplémentaire, l'optimisation du temps chargement devrait être encore plus prioritaire sur un outil de boutique en ligne.

Septembre 2009 – Nexen.net: Actualité de développement PECL, edition 251

Image pour le titre du contenu
6 paquets ont été mis à jour cette semaine :
  • newt : interface avec la bibliothèque graphique RedHat Newt
  • svn : Interface avec le client Subversion
  • shape : interface libshape
  • mongo : Pilote Mongo Database
  • gmagick : Provides a wrapper to the GraphicsMagick library.
  • memsession : In-memory session extension
PECL est la bibliothèque d'extensions C de PHP.

 

 

Septembre 2009 – Hello Design: OWF et OSDC

OWF (Open World Forum) et OSDC (Open Source Developers conference) sont 2 évènements différents pour le début octobre :

  • OWF aura lieu le 1er et 2 octobre à Paris et le langage PHP aura sa place le 1er jour.
  • OSDC se déroulera le 2 et 3 octobre à Paris et PHP sera aussi présent. En plus, pour cette évènement, vous pourrez aussi me voir avec une conférence, programmé le 1er jour (vendredi) touchant ‎comme thème : "Les bases de données à portée de mains en PDO‎"

Ces 2 évènements sont gratuits, il faut impérativement s'inscrire pour être sur d'avoir une place.

Septembre 2009 – Rom's blog: L’agenda du forum PHP 2009 est en ligne !

Comme tous les ans, l’AFUP réunira les 12 et 13 Novembre quelques grands experts internationaux du monde PHP, qui viendront échanger autour des problématiques phares du langage open source. L’occasion de faire le point sur les évolutions fonctionnelle et technique, communautaire et entreprise de PHP.

Cette 9ème édition sera axée sur le couple PHP/MySQL, avec 8 conférences dédiées. LEMUG.fr, l’association francophone des utilisateurs de MySQL et partenaire de l’événement animera 3 conférences.

Le Forum PHP accueillera en exclusivité et pour la première fois en France, Michael « Monty » Widenius, le créateur de MySQL. Suite au rachat de MySQL AB dont il était le co-fondateur, Monty a créé l’Open Database Alliance, un consortium et un lieu d’échanges pour tous les acteurs de l’écosystème de la base de données. Par ailleurs il fonde Monty Program ab, et poursuit le développement de MariaDB. A ce titre Monty présentera une conférence intitulée : « MariaDB the future of MySQL ».

Le PHP se décline au féminin avec la participation de : Zoe Slattery, PHP Women. Zoe a œuvré pour le compte d’IBM pendant 20 ans. En 2007, elle s’implique dans la promotion de PHP et développe des phases de tests. Anna Filina, PHP Québec, animera une conférence dédiée aux décideurs sur l’analyse des comportements des développeurs.

Reconnu mondialement comme une alternative de choix aux langages de programmation .Net ou J2EE, PHP est aujourd’hui une technologie mature qui entre dans une phase d’industrialisation. Largement adopté dans le monde de l’entreprise, PHP est un élément clé des infrastructures Web.

L’édition 2009 sera l’opportunité d’aborder l’industrialisation, la professionnalisation et la maturation du langage PHP avec une formule qui fait son succès chaque année : des conférences animées par les meilleurs experts internationaux des retours d’expérience issus des grands comptes des ateliers pratiques.

Comme tous les ans, je serais présent à cette événement sur le stand Anaska (sponsor Gold), n’hésitez donc pas à passer me faire un petit coucou.

Plus d’infos : AFUP.org

Septembre 2009 – Rom's blog: L’agenda du forum PHP 2009 est en ligne !

Comme tous les ans, l’AFUP réunira les 12 et 13 Novembre quelques grands experts internationaux du monde PHP, qui viendront échanger autour des problématiques phares du langage open source. L’occasion de faire le point sur les évolutions fonctionnelle et technique, communautaire et entreprise de PHP.

Cette 9ème édition sera axée sur le couple PHP/MySQL, avec 8 conférences dédiées. LEMUG.fr, l’association francophone des utilisateurs de MySQL et partenaire de l’événement animera 3 conférences.

Le Forum PHP accueillera en exclusivité et pour la première fois en France, Michael « Monty » Widenius, le créateur de MySQL. Suite au rachat de MySQL AB dont il était le co-fondateur, Monty a créé l’Open Database Alliance, un consortium et un lieu d’échanges pour tous les acteurs de l’écosystème de la base de données. Par ailleurs il fonde Monty Program ab, et poursuit le développement de MariaDB. A ce titre Monty présentera une conférence intitulée : « MariaDB the future of MySQL ».

Le PHP se décline au féminin avec la participation de : Zoe Slattery, PHP Women. Zoe a œuvré pour le compte d’IBM pendant 20 ans. En 2007, elle s’implique dans la promotion de PHP et développe des phases de tests. Anna Filina, PHP Québec, animera une conférence dédiée aux décideurs sur l’analyse des comportements des développeurs.

Reconnu mondialement comme une alternative de choix aux langages de programmation .Net ou J2EE, PHP est aujourd’hui une technologie mature qui entre dans une phase d’industrialisation. Largement adopté dans le monde de l’entreprise, PHP est un élément clé des infrastructures Web.

L’édition 2009 sera l’opportunité d’aborder l’industrialisation, la professionnalisation et la maturation du langage PHP avec une formule qui fait son succès chaque année : des conférences animées par les meilleurs experts internationaux des retours d’expérience issus des grands comptes des ateliers pratiques.

Comme tous les ans, je serais présent à cette événement sur le stand Anaska (sponsor Gold), n’hésitez donc pas à passer me faire un petit coucou.

Plus d’infos : AFUP.org

Septembre 2009 – Nexen.net: PHP et GraphicsMagick

Image pour le titre du contenu
GraphicsMagick est une API fonctionnant sous toutes les plateformes Windows, Mac, Linux, BSD... Ce logiciel permet de traiter plus de 80 formats d'images et fournit aussi une large gamme de librairies et d'outils pour lire, écrire et manipuler les images.
Ce qui est moins connu, c'est l'utilisation de GraphicsMagick avec le langage PHP, permettant d'avoir plus de possibilités et de fonctionnalités.
Vikram Vaswani publie un tutoriel, associant l'extension PECL, qui indique comment communiquer, manipuler les images. Par ailleurs, l'article montre quelques effets de rotation, de mapping ou de modifications de couleurs en quelques lignes.