Import groupé d’abonnés à la newsletter

Suite au transfert de certaines de nos boutiques Ebox (notre CMS maison) vers Magento, nous avons eu besoin d’effectuer un import groupé d’abonnés aux newsletters, voici la marche à suivre :

  • tout d’abord, copiez le fichier /app/code/core/Mage/Newsletter/Model/Subscriber.php dans le dossier /app/code/local/Mage/Newsletter/Model (que vous aurez précédemment créé).
  • ouvrez ensuite ce fichier et modifiez la fonction subscribe() de la manière suivante :
    • ajoutez un paramètre à la fonction : public function subscribe($email) devient public function subscribe($email,$sendConfirm=true)
    • et remplacez les lignes suivantes :
      if ($isConfirmNeed) {
      $this->sendConfirmationRequestEmail();
      } else {
      $this->sendConfirmationSuccessEmail();
      }

      par les lignes suivantes :
      if ($isConfirmNeed) {
      if ($sendConfirm) {
      $this->sendConfirmationRequestEmail();
      }
      } else {
      if ($sendConfirm) {
      $this->sendConfirmationSuccessEmail();
      }
      }
    • Sauvegardez le fichier et envoyez le sur votre serveur.
  • Ensuite, il vous faut disposer d’un fichier CSV contenant toutes les adresses mail à insérer (chaque ligne du fichier doit correspondre à une et une seule adresse).
  • Uploadez ce fichier CSV sur votre serveur dans /var/import par exemple.
  • Créez ensuite un fichier import_newsletter.php que vous placerez à la racine de votre site et ajoutez-y le code suivant (en prenant soin de remplacer le chemin et le nom de votre fichier)  :
    <?php
    require_once "app/Mage.php";
    Mage::app();
    $csvfile = "var/import/exportNewsletterRecipient.csv";
    $handle = fopen($csvfile,"r");
    if($handle == FALSE){
    throw new Exception("Unable to open ".$csvfile);
    }
    while (($subscribers = fgetcsv($handle)) !== FALSE) {
    Mage::getModel('newsletter/subscriber')->subscribe($subscribers[0], false);
    }
    fclose($handle);
    ?>

  • Ainsi ce petit script va importer tous les emails contenus dans votre CSV mais grâce à la petite modification en début de cet article, aucun mail d’inscription ne sera envoyé .

En espérant que ce petit tutoriel vous aura servi, passez une bonne journée.

Mise en ligne de nouveaux sites Magento

Nous avons mis en ligne récemment deux nouveaux sites Magento utilisant la fonctionnalité multisite du CMS :

De plus, une autre boutique e-commerce Magento a été mise en ligne :

N’hésitez pas à nous faire vos retours sur ces sites, donnez vos impressions, etc…

Magento Importer les clients avec mots de passe déjà cryptés en MD5

Vous voulez migrer votre site ecommerce vers une plateforme Magento ? Et vous vous demandez comment importer vos clients ?

L’idéal est de pouvoir utiliser l’assistant Import / Export customers déjà prévu dans Magento. Nous avions vu comment créer votre fichier CSV prêt à l’import via une requête SQL.

Cependant cette méthode ne permettait pas de récupérer des mots de passe déjà cryptés en MD5.

Nous avons finalement trouvé une solution toute simple permettant de garder vos mots de passe MD5 et évitant donc de réinitialiser tous les mots de passe !

Voici la solution, il suffit d’ajouter « : » après votre MD5.

Si l’on reprend notre exemple de requête SQL voici ce qu’il faut ajouter :

SELECT
"base" AS website,
old_table_user.user_email AS email,
"Client" AS group_id,
old_table_user.first_name AS firstname,
old_table_user.last_name AS lastname,
CONCAT_WS(':',old_table_user.password,'')AS password_hash,
// aura pour effet d'ajouter ':' à votre md5 (ex : 1f3870be274f6c49b3e31a0c6728957f:)
old_table_user.first_name AS billing_firstname,
old_table_user.last_name AS billing_lastname,
old_table_user.address_1 AS billing_street_full,
old_table_user.city AS billing_city,
"FR" AS billing_country,
old_table_user.zip AS billing_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS billing_telephone,
old_table_user.company AS billing_company,
old_table_user.fax AS billing_fax,
old_table_user.first_name AS shipping_firstname,
old_table_user.last_name AS shipping_lastname,
old_table_user.address_1 AS shipping_street_full,
old_table_user.city AS shipping_city,
"FR" AS shipping_country,
old_table_user.zip AS shipping_postcode,
CONCAT_WS(' ',old_table_user.phone_1,old_table_user.phone_2) AS shipping_telephone,
old_table_user.company AS shipping_company,4ème étape : Import le fichier CSV dans Magento
old_table_user.fax AS shipping_fax,
"default" AS "created_in",
"Client" AS "group",
old_table_user.newsletter AS "is_subscribed"
FROM old_table_user

Reprennez ensuite la fin du tutoriel présent à cette adresse : http://www.creation-site-lyon.com/2010/06/16/import-des-clients-dune-plateforme-ecommerce-vers-une-plateforme-magento/

En espérant que celà pourra vous être utile !

Installation, configuration et tests du module Atos sous Magento

Nous venons d’installer ce module sur une de nos boutiques Magento et nous nous sommes rapidement rendus compte qu’il s’agit là d’un des modules bancaires les plus compliqués à installer et à tester, c’est pourquoi un petit tutoriel explicatif sera le bienvenue pour tous.

N.B. : la mise en place de ce module a été effectuée sur une boutique Magento 1.4.0.1, il existe peut-être d’autres erreurs sur d’autres versions et inversement, nous avons peut-être rencontrés des erreurs inexistantes sur d’autres versions.

Installation de l’extension

Première partie, la plus simple, il s’agit de l’installation du module. Rendez vous sur http://www.nom_de_votre_site.com/downloader. Collez la clé suivante : magento-community/Mage_Atos puis cliquez sur « Install ». L’installation doit normalement se dérouler sans embuches.

Récupération des fichiers de banque

Ca se complique. Ici, deux choix s’offrent à vous :

  • soit vous utilisez les fichiers de tests.
  • soit vous utilisez les fichiers fournis par votre banque.

Voici notre conseil : en sachant que lors de la création de votre contrat de vente à distance (VAD), votre interface de paiement est en pré-production, aucun paiement ne sera débité, il est judicieux de commencer à travailler directement avec les fichiers fournis par votre banque afin de ne pas avoir à résoudre deux fois les mêmes problèmes (même si nous espérons que tous vos problèmes se résoudront en lisant ce post). Tant que votre interface de paiement est en pré-production, vous pourrez travailler comme si vous utilisiez les fichiers de test sauf que pour passer en production vous n’aurez presque rien à faire.

Dans les deux cas, il vous faut télécharger le kit bancaire. Dans notre cas, il s’agissait d’un contrat avec Sogenactif, le kit correspondant est disponible ici.

Pour les autres (Mercanet,FIA-NET,Sherlocks), la banque envoie au client directement le kit d’installation.

Dans le kit, vous trouverez :

  • un dossier bin contenant 6 fichiers binaires
  • un dossier logo rempli d’images
  • un dossier param avec les fameux fichiers de tests
  • un dossier sample avec des fichiers PHP et Perl
  • une note de version

De plus, la banque vous envoie normalement une clé de décryptage ainsi qu’un logiciel permettant de générer votre certificat bancaire de production (équivalent au fichier de test certif.fr.014213245611111) .

Attention, le premier problème que nous avons rencontré a été la récupération de ce logiciel. En effet, il s’agit d’un fichier en .exe et la plupart des systèmes de messagerie interdise totalement l’envoi et la réception de ce type de fichier (car 80% des .exe circulant par mails sont des virus). Il vous faut donc fournir à la banque une adresse mail Free, Yahoo ou Hotmail car ce sont les seuls qui permettent encore la réception de ce type de fichier.

Une fois votre fichier certif généré grâce au logiciel et à la clé de décryptage, renommez le en certif.fr.votre_ID_bancaire (identifiant que vous avez du recevoir avec votre clé de décryptage).

Vous avez maintenant tout ce qu’il vous faut pour commencer la configuration de votre interface bancaire.

Transfert des fichiers

Renommez le fichier parmcom.XXXXXXXXX (situé dans le dossier param du kit) en parmcom.votre_ID_bancaire (comme pour le certif.fr) puis éditez-le.

  • Après AUTO_RESPONSE_URL!, rentrez la chaine suivante : http://www.nom_de_votre_site.com/atos/standard/automatic/!
  • Après CANCEL_URL!, rentrez la chaine suivante : http://www.nom_de_votre_site.com/atos/standard/cancel/!
  • Et enfin après RETURN_URL!, rentrez : http://www.nom_de_votre_site.com/atos/standard/normal/!
  • Vous pouvez également remplacer merchant.gif (juste après LOGO!) par l’adresse du logo de votre site qui s’affichera sur l’interface de paiement.

Sauvegardez le tout.

Connectez vous maintenant en FTP à votre site et créez un dossier /lib/atos.

Uploadez maintenant votre fichier certif.fr.votre_ID_bancaire (généré à partir du logiciel et de la clé), votre fichier parmcom.votre_ID_bancaire (que vous venez d’éditer) ainsi que le fichier parmcom.sogenactif (ou parmcom.votre_banque) contenu dans le dossier param du kit de test.

Uploadez ensuite les fichiers request et response contenus dans le dossier bin du kit de test mais attention, étant donné qu’il s’agit de fichiers binaires, il vous faut les transférer en binaire. Exemple : dans FileZilla, cliquez sur Transfert > Type de transfert et choisissez Binaire. N’oubliez pas de remettre la configuration par défaut une fois le transfert terminé.

Configuration

Dans le Back Office de votre boutique, rendez vous dans Système > Configuration > Ventes > Modes de paiement > Atos / Sips.

Activer le mode de paiement, votre identifiant de marchand doit se trouver dans la liste déroulante ID Marchand.

Pour le champ « Binaire pour construire la requête » rentrez le chemin vers le fichier binaire request. Attention il s’agit là du chemin à partir de la racine du serveur, ex : path/lib/atos/request. Si vous ne le connaissez pas, contactez l’administrateur de votre serveur. Faîtes de même pour le fichier response avec le champ suivant.

Laissez vide le champ « Fichier pathfile ». Laissez la configuration normale pour le reste sauf si vous souhaitez changer les état de commandes etc…

Sauvegardez la configuration et normalement votre boutique doit être configurée et prête à accepter des paiements.

Problèmes rencontrés et solutions

Malheureusement après les étapes précédentes, il est très probable que, comme beaucoup d’utilisateurs, vous rencontriez une pléthore d’erreurs.

Voici la liste des principales erreurs et comment les résoudre :

Impossible to execute binary file – Set correct chmod

Vos fichiers binaires request et response n’ont pas les droits suffisants pour être exécutés.

Connectez vous en SSH à votre site, rendez vous dans votre dossier /lib/atos et effectuez les commandes suivantes :

chmod 755 request
chmod 755 response

Boucle infinie sur la page /atos/standard/redirect/

4 possibilités :

  • votre serveur est en 64 bits et il faut qu’il puisse lire les fichiers binaires qui sont 32 bits, il vous faut vous connecter en SSH et exécuter la commande suivante :
    aptitude install ia32-libs
  • vous êtes sous OVH, il vous faut télécharger les fichiers binaires spécial OVH disponibles ici
  • la version de vos fichiers binaires ne correspond pas à votre noyau. Connectez vous en SSH et exécuter la commande :
    uname -r

    Cette commande vous donne la version de votre noyau, il faut ensuite uploadez les fichiers binaires correspondant à cette version (ex: la commande vous donne 2.6.XX, uploadez les fichiers binaires request_2.6.XX et response_2.6.XX) avant des les renommer en response et request.

  • votre serveur n’est pas en 64 bits, vos fichiers binaires correspondent à votre kernel et vous n’êtez pas chez OVH : vérifiez les droits d’exécution qu’ont les utilisateurs de votre serveur et quel utilisateur est propriétaire des fichiers binaires. En effet, nous avons rencontré ce problème et l’utilisateur propriétaire des fichiers binaires n’avait pas les droits d’exécution de fichiers binaires.

Vous n’arrivez pas à accéder au serveur de la banque

L’extension génère normalement un fichier pathfile.votre_identifiant_banquaire dans /lib/atos.

Editez-le et en dessous de « Fichiers des paramètres communs », remplacez le chemin après F_DEFAULT! (ex : /var/www/…) par :

lib/atos/parmcom.sogenactif! (remplacez sogenactif par le nom de votre banque)

Error reading certificate file lors du retour de la banque

L’extension génère un second fichier nommé pathfile.parmcom.votre_identifiant_banquaire dans /lib/atos.

Editez-le et, de la même manière que pour le fichier pathfile.votre_ID, remplacez le chemin après F_DEFAULT! par :

 lib/atos/parmcom.sogenactif!

Ecran jaune « Transaction invalide »

Si vous obtenez cette page, il est fort possible que l’URL se termine en /demo/callpayment. Cela signifie que vous utilisez les fichiers de test et pas les fichiers de production, rendez-vous à la partie « Récupération des fichiers » en haut de ce post pour résoudre le problème.

Les notifications de la banque n’arrivent pas

Plusieurs solutions :

  • soit les URL indiquées dans le fichier parmcom.votre_ID sont incorrectes.
  • soit un .htaccess empêche la banque d’accéder à votre boutique.

Conclusion

Normalement, vous devriez maintenant pouvoir effectuer des paiements de test avec vos certificats de production en utilisant le module Atos.

Une fois vos tests terminés, il vous suffit d’envoyer votre PV de recette à votre banque afin qu’il passe votre interface de paiement en production.

En espérant que cet article vous aidera dans la mise en place du module Atos sous Magento.

Forum Php 2010 2ème journée

Deuxième journée du forum qui a débuté (pour moi) sur une super présentation du framework Symfony.

Introduction à symfony (Hugo Hamon)

Tout d’abord, présentation du framework, son histoire, ses commandes utiles, son arborescence bien pensée. Le framework est basé sur le modèle MVC et met à disposition des développeurs tout un tas d’outils :

  • Configuration des URLs via des fichier yaml,
  • Possibilité d’utiliser Propel ou Doctrine pour la gestion de BDD,
  • Gestion des formulaires simplifiées,
  • Gestion d’authentification et des droits,
  • Gestion des normes i18n et l10n pour les langues,
  • Génération de BackOffice.
  • Gestion de l’envoi des mails avec la librairie swiftmailer qui gère les files d’attentes.

Le framework est très sécurisé, notamment contre les failles XSS et les injections SQL. Il est même possible (et recommandé) d’exposer qu’un seul dossier de l’application au web en modifiant la config Apache.

Il y a un millier de plugins disponibles pour apporter de nouvelles fonctionnalités.

Des frameworks pour les tests unitaires et fonctionnels sont incorporés et facilite la vie des développeurs.

Un inconvénient du framework est qu’il est très gourmand en ressources. Pour palier à ce problème il existe une batterie d’accessoires comme le cache APC, le cache de config yaml et le cache de requête SQL Doctrine.

La communauté est énorme et par conséquent on peut retrouver énormément de ressources sur la toile.

Quelques mots sur Symfony 2. Il utilisera nécesserement php 5.3 et utilisera un conteneur d’injection de dépendances qui permettra entre autre d’instancier uniquement les objets que l’on désire et donc de gagner en mémoire.

Introduction à Zend Framework (Gauthier Delamarre)

Contrairement à la précédente, j’ai trouvé beaucoup moins intéressant cette conférence.

Par principe nous avons eu droit à une présentation de l’histoire du Framework et son fonctionnement. Comme Symfony il utilise un design MVC et exploite au mieux php 5. Le couplage du code est faible et cela donne une extrême aisance aux développeurs.

ZF met à disposition un ensemble de fonctionnalités (Zend_Form, Zend_Db, Zend_ACl).

Le script Zf.sh (ou zf.bat pour les windows) permet, tout comme symfony, de créer sa structure de code. ZF met aussi à disposition une gestion d’erreurs qui récupère toutes les exceptions soulevées.

ZF 2 est prévu pour bientôt. Il sera lui aussi basé sur php 5.3 et il y aura normalement un moyen «facile» de faire migrer son code depuis l’ancienne version.

Et maintenant direction les nuages ;)

Le Cloud Computing pour PHP (Guillaume Plessis)

Un interlocuteur très captivant nous attendait à cette conférence.

Le cloud est très en vogue en ce moment mais suscite beaucoup d’interrogations.

Il existe 3 modèles de Cloud :

IaaS : Infrastructure As A Service

Souvent basé sur la virtualisation, il s’agit en fait d’instances virtuelles jetables type Amazon que l’on utilise lorsque la demande est trop élevée en terme de montée en charge. Les avantages d’une telle solution sont que le système est totalement scalable. Les coûts sont ajouté avec en général une facturation à l’heure utilisée. De même on se décharge de la gestion du matériel. Cependant il est indispensable d’avoir un architecte pour gérer l’ensemble.

Dans tout ceci Php joue un rôle de pilotage (ex durant la conférence avec Amazon et quelques lignes de codes).

D’autres acteurs sont sur le marché : RockSpace, Gandi, SoPrivé

PaaS : Platform As A Sevice

C’est un serveur d’application clé en main. Ici on ajoute la couche logiciel système c’est à dire que les offres sont dédiées à un certain langage.

Les acteurs dans le milieu sont Heroku, Google App Engine, Windows Azure et bientôt Baobapp (Inscription gratuite pour la beta : http://www.baobapp.com Profitez-en !)

SaaS : Software As A Service

On ajoute encore une couche, cette fois-ci la couche application. C’est en général des applications dédiées en ligne (ex : Gmail).

Dans le cas de SaaS le language Php est assez restreint il possède juste un rôle de pilotage (exemple avec Zend_GData et Google Apps).

Le cloud c’est bien, mais attention à quelques points :

  • Pas de support,
  • Attention à la sécurité, les données se «baladent» sur la toile,
  • Grosse dépendance vis à vis des fournisseurs, attention au taux d’indisponibilité

Le conseil de Guillaume est d’avoir un système hybride et donc des applications php capables d’être utilisées sur tous les types de cloud. Bien entendu cela nécessite un grand travail de réflexion avant d’avoir son application «cloud ready» ;)

Suivi de qualité – PIC, Plate-forme d’Intégration Continue (Gabriele Santini)

Présentation d’un membre de chez SQLi sur le travail qu’ils ont mené sur un projet de la Gendarmerie nationale.

Mr Santini a commencé par mettre  en avant toute la phase de réflexion qu’ils ont mené. Notamment de gros problèmes de code et de régressions au moment des livraisons. De même beaucoup de problèmes de maintenance sur l’application.

Une fois leur travail de réflexion terminé ils ont mis en place une plateforme d’intégration continue basée sur PhpUnderControl avec un ensemble de tests unitaires et fonctionnels exécutés à chaque build de l’application. Une grosse infrastructure a été mis en place pour l’occasion avec séparation des rôles sur les serveurs : seveur d’intégration, serveur PIC, serveur de versionning… L’objectif étant d’avoir un projet stable et sans régressions sur lequel la gendarmerie nationale peut avoir entièrement confiance. De même l’équipe doit avoir en temps réel des infos immédiates sur la structure du code.

Pour ce projet ils ont travaillé avec des partenaires comme Zend pour le côté structuration du code et AlterWay pour l’hébergement et la gestion des ressources matérielles.

Ils ont utilisé l’ensemble des modules présents dans PhpUnderControl (phpUnit, PMD, PHPCodeSniffer..) afin d’avoir des rapports quotidiens en xml adaptables en graph.

L’installation a été très difficile (cela me rappelle de bon souvenir chez Applibox ;) ) avec une documentation d’installation dépassant les 100 pages ! Ils ont aussi développé un applicatif afin d’avoir aussi des résultats sur les performances des équipes.

L’ensemble a été «débianisé» de manière à ce que tout leur travaille s’installe en deux lignes de commandes (pas bête !).

A ce jour l’application n’est pas totalement livrée mais est en phase de test. Les risques devraient être mieux maitrisés et les équipes ont gagné en compétence de façon extraordinaire.

Certains parlent de migrer l’application sous Hudson avec l’utilisation du module Sonar.

HTML 5 : prêt à l’usage ? (Stéphane Deschamps, Julien Wajsberg)

Une présentation fort intéressante ayant pour but de faire le point sur cette nouvelle technologie dont tout le monde parle. Nous avons pu ainsi aborder rapidemment quelques notions :

  • Possibilité d’utiliser des balises de structure (<header></header>..) et non plus des divs,
  • Il existe des indicateurs de progression (barres de chargement),
  • Apparition de nouveaux champs de type date, tel.. qui s’avère très utiles (exemple un Champ Téléphone sur Iphone affiche le clavier numérique),
  • De même il est possible de donner des attributs de validation à ces nouveaux champs,
  • Possibilité d’utiliser des canvas,
  • Gestion Audio, Vidéo,
  • Possibilité d’utiliser des bases de données côté client (je ne me souviens plus du nom :( )

Le bon conseil est de commencer à « saupoudrer » nos sites d’html5, même si les navigateurs ne le gère pas tous, le code est conçu de telle manière que celà ne peut pas nuire à un site (un champ téléphone sera transformer en champ texte sur IE6).

Présentation de Doctrine 2 (Juozas Kaziukenas)

Salle comble pour la présentation de Juozas. Full english bien entendu ! Voilà ce qu’il en est resté :

Juozas a mis en avant le fait que Doctrine 1 était basé sur Active Record et que celà était très lent ! Malgré ceci Doctrine 1 est à ce jour et selon lui le meilleur ORM. Cette version était aussi très facile d’utilisation et surtout très stable.

Dans la version 2 tout est revu. Il est nécessaire d’utiliser php 5.3. Le découplage est parfait : «Doctrine2 is more clever than you» :)

Le fonctionnement est basé sur JPA 2 et donc fortement inspiré de Java.

4 points importants :

  • Utilisation de Common : Collection de classe de caching event. Avec le passage d’information directement dans les commentaires comme dans Symfony.
  • Utilisation de DBAL
  • EntityManager : Plus besoins du «extends» pour les classes Model. On utilise directement un composant EntityManager pour traiter les données. De ce fait il est aussi plus simple de réaliser des tests unitaires sur les classes models. Grâce à ce procéder une seule transaction peut générer un grand nombre de requêtes.
  • ODM NoSQL: Enfin il est aussi possible de lier des objets à une base NoSQL comme MongoDB par exemple en utilisant le composant DocumentManager.

La migration de 1 vers 2 risque d’être difficile et le refactoring sera nécessaire.

APC & Memcached the High Performance Duo (Ilia Alshanetsky)

Encore une fois une conférence de qualité (toujours in english ;) ). Ilia nous a présenté APC et Memcached. Voici ce que j’ai pu retenir :

APC est très simple à utiliser, stable et puissant. Cependant il n’est utilisable que pour Php, seulement en local. De plus il met dans le même panier le cache d’upcode et le cache utilisateur.

Memcached est une amélioration de Memcache. Comme APC il peut directement être utilisé depuis le code PHP. Il est cependant utilisé uniquement pour le cache Utilisateur. Il est aussi capable de gérer plusieurs serveurs en utilisant des sockets (et non pas le protocole TCP).

Memcached peut aussi utiliser IgBinary qui permet de sérialiser le code. Cet outil permet de gagner 45% de rapidité par rapport aux méthodes PHP Classique. A l’inverse d’APC il est aussi utilisable par d’autres langages.

State of the MySQL Ecosystem (Kaj Arnö & Rasmus Johansson)

Je n’ai pu assister qu’à la moitié de cette conférence (mon train m’attendait :) ). Comme pour l’ouverture, gros problème d’affichage des slides, donc uniquement basé sur l’écoute. Kaj Arnö (SkySQL) a mis en avant le statut de Mysql depuis sont « transfert » chez Oracle.

Présentation des divers partenaires et des autres technos comme MariaDb.

The End

Fin de ce forum. Superbe édition, avec beaucoup de retours d’expérience très intéressants. Merci l’AFUP !

Forum PHP 2010 : 1ère journée

Nous voici donc le jour du fameux Forum PHP.

Après quelques embuches sur le parcours, je suis arrivé entier à la Cité des Sciences et de l’industrie ou attendait toute l’équipe AFUP pour nous remettre nos badges et un petit sac rempli de choses « phpunny ».

Le temps de poser la veste et j’arrive juste après la KeyNote d’ouverture. Pour la présentation de Mr Rasmus Lerdorf (Le créateur de Php lui même).

PHP, son ecosystème : passé, présent et futur (Rasmus Lerdorf)

Début difficile avec des problèmes d’ordinateurs pendant une petite demi-heure, Mr PHP nous a présenté son parcours et l’ensemble des versions de php en relatant pour chacune d’elles les évolutions majeures.

Aux questions concernant l’avenir,  PHP a atteint selon lui sa maturité et son évolution (PHP 6) s’annonce difficile. Notamment dû à un manque de développeurs et à la gestion unicode pas super nécessaire..

Industrialisation PHP, l’exemple de Canal+ (Raphaël Carles)

Cette conférence a été très intéressante. Nous avons appris comment la société Interakting à utiliser l’industrilation du php afin de répondre aux besoins de la société Canal +.

Ceux-ci sont énormes, le taux de défaillance doit être faible avec des grands pics de visites et une multitude de sites à gérer. Pour celà la société Interacting à utiliser divers outils comme la virtualisation, la sélection de frameworks connus et de plateforme comme EzPublish et ZendPlateform. Beaucoup d’audits de sécurité et d’audits d’experts php (société Zend) afin d’obtenir des délais corrects avec un rendu de qualité (10 livraisons par semaine).

L’ensemble des applications est surveillé par un système de monitoring et des tests de montée en charge.

Le nombre de livraisons étant important ils utilisent un outil de workflow relié à chaque personne susceptible de valider la livraison. Ils gagnent ainsi un temps considérable.

Enfin pour terminer, ils sont en train de tester Hudson comme plateforme d’intégration continue.

Ligne de commande sous Linux : effrayant ? Non : indispensable ! (Pascal Martin)

Un petit passage dans cette conférence reprenant l’ensemble des commandes utiles linux. N’apprenant pas énormément plus, j’ai décidé de migrer pour la conf Prestathop.

e-commerce : Prestashop (Alain Folletête & Lucas Cherifi)

Présentation de la plateforme et surtout des dernières fonctionnalités. Etant arrivé en cours de route voici ce que j’ai retenu :

  • Prestashop met à disposition des développeurs des WebServices,
  • Gros boulot côté performances :
    • Nombre de requêtes divisé par 2 sur la Homepage,
    • Possibilité de mettre en place de la réplication SQL,
    • Possibilité de configurer memcache.
  • Travail aussi sur les perfomances navigateurs :
    • Objectif améliorer le google Page Speed à 98 dans la version 1.4,
    • Possibilité d’utiliser des serveurs de média différents pour les css, javascripts..
    • Smart Cache comme sous EzPublish,
    • Compression de css et JS.
  • Back Office Themable
  • Système d’onglet du Back Office revu
  • Facilité de modification du core. Un dossier est prévu à cet effet en surchageant simplement les classes.

A la question « Avez-vous une partie CMS efficace ? », Les intervenant ont répondu que oui et un système très simple à utiliser. Peut être plus simple que celle de magento !

Déjeuner

Petit break Quick avec la team de la Ferme du Web et M6 Web et direction la conférence sur Magento.

Magento, un framework de E-Commerce (Hubert Desmarest, Guillaume Babik & Roy Rubin !)

Un peu déçu de cette présentation mis à part l’intervention du fondateur Roy Rubin. Les interlocuteurs ont présentés les caractéristiques de Magento.

Magento est ainsi construit à l’aide du Zend Framework et sur le modèle EAV.

L’architecture de l’applicaition est modulaire et il est possible de surcharger les modules existants afin de les utiliser/modifier.

Petite présentation des avantages :

  • Modèle très souple,
  • Utilisation avec un large choix possible de types de catalogues produits,
  • Vente croisée, incitative.. génial pour les marketeux qui ont la main directement sur le backoffice.

Inconvénients :

  • Solution peu documentée,
  • Difficile à prendre en main (4 mois minimum pour un bon développeur),
  • Il faut un hébergement adapté à la solution. Le modèle EAV nécessite beaucoup de ressources pour l’accès en base.

Nous avons eu droit ensuite à la présentation d’un cas, celui de la start-up SmartBox. Il me semble que c’était la même présentation que pour le Bargento ? Puis à la présentation des projets futurs, notamment l’apparition d’application mobile, bref rien de nouveau à se mettre sous la dent ;)

Comprendre pour choisir son hébergement (Sébastien Lucas)

Petit tour ensuite dans cette conférence dont le but était d’aider à choisir un bon hébergement pour son application web. Rien de bien spécifique mis à part quelques conseils et une démarcation des offres d’infrastuctures (type Ovh) et des offres de Services (Type Alterway) ou les sociétés sont là pour amener un réel service à l’entreprise et la conseiller. Un petit chiffre marquant : un taux de disponibilité de 99% correspond à une indisponibilité des sites pendant 7h18 dans un mois. Soyez donc prudent et visez les 99,99% ;)

Optimisation des performances LAMP (Guillaume Plessis & Cyril Pierre de Geyer)

Conférence super intéressante sur les optimisations des solutions LAMP. En parallèle une présentation d’un site drupal hébergé sur Amazon pour l’occasion. Les intervenants ont ajoutés des optimisations et fait augmenter le nombre de requêtes possibles sur le site drupal.

Ainsi au premier test le nombre de requêtes par seconde sans optimisations était de 15 requêtes.

Après l’ajout de cache d’upcode avec des solutions comme APC, Xcache et Zend Optimizer le nombre de requêtes est passé à 45 (x3) !

Ensuite à l’aide des optimisations spécifiées par Yahoo (Compression Gzip, Expiration dans les en têtes, Etags, Server limit..) nous sommes arrivés à 55 requêtes.

Un tas de conseils a été donné durant cette conférence, en voici quelques uns :

  • Utiliser des profiler pour améliorer les performances des applications,
  • Utiliser des caches de code,
  • Desinstaller les modules apache et extensions linux qui ne sont pas utilisées,
  • Selon l’usage (serveur medias) utiliser des serveur comme nGinx,
  • Améliorer la BDD et utiliser un noyau Linux 2.6 en 64 bits pour allouer au mieux la mémoire de mysql (limiter sous les autres noyaux).

Introduction au monde No-SQL (Damien Tournoud)

Pour terminer je suis aller voir la conférence sur les technos dites « No-SQL ». Damien Tournoud nous a montré les avantages de Mongo DB. Base de données non relationnelle ou l’on stocke les objets directement (sans structure relationnelle).  Cet outil va être utilisé dans la nouvelle de version de Drupal qui devrait être sortie d’ici la fin de l’année.

D’autres outils on été présentés ; couchDb, pheantalk, Redis.. L’attention n’était plus trop présente ;)

Voilà pour cette première journée. Je pense avoir fait un résumé assez succinct montrant les principales idées dévoilées. Il est temps d’aller se coucher pour une présentation du framwork Symfony demain à 9h ;)

N’oubliez pas rendez vous sur notre twitter ;)