Archives du mot-clé formation

Forum PHP 2016

Cela fait maintenant un long moment que je n’ai pas eu le temps de m’occuper de ce blog, et j’espère bien pouvoir le faire plus régulièrement. Je reprends donc les publications avec mon retour sur le premier jour du Forum PHP 2016 qui s’est tenu fin octobre au Beffroi de Montrouge.

Jeudi 27 octobre 2016

Arrivé la veille de Casablanca où j’animais une formation en interne, c’est un peu fatigué mais très heureux que j’ai rejoint le Forum PHP au Beffroi de Montrouge. Habitué du quartier puisque j’y suis resté plus de huit mois pour une mission chez un client, j’ai retrouvé l’hôtel dans lequel j’avais pris mes habitudes l’an dernier, à seulement dix minutes à pieds.

Le temps de déposer mes affaires aux vestiaires et de récupérer mon badge, j’ai pu commencer de faire le tour de mes connaissances et de visiter un peu les stands des sponsors. En arrivant, on remarque tout de suite le stand de Radio France (sponsor Platine… tient, ils font du PHP ?) et celui désormais habituel, mais toujours sympathique, de Blablacar. En me promenant, je passe ensuite sur les stands de Microsoft Azure (qui a fait une démo très sympa de déploiement d’une application PHP dans leur cloud), Eleven Labs (avec leur cosmonaute… et non, faire un chemin de Kinder Schoko-bons pour attirer le monde n’était pas une super idée ;-)), Sensiolabs/BlackFire.io (et leur mini-table de ping-pong) et d’autres encore.

Rapidement, comme tout le monde, je prends la direction de l’amphithéâtre pour assister au keynote d’ouverture présenté par Cyril Pascal, de l’AFUP.

Ensuite, les conférences s’enchaînent…

Header http : un bouclier pour votre application (Romain Neutron, Blackfire.io)

Conférence très intéressante sur les entêtes HTTP à utiliser pour se prémunir d’un certain nombre d’attaques potentielles. Romain nous a présenté les principaux entêtes HTTP liés à la sécurité : X-XSS-Protection (contre les attaques XSS donc), X-Content-Type-Options (permet de désactiver l’analyse automatique du type de contenu par le navigateur), X-Frame-Options (contre le « click jacking »), Strict-Transport-Security (force l’utilisation du HTTPS pour toutes les connexions), Content-Security-Policy (prévient les attaques XSS, liste blanche de ce qui peut être exécuté sur le site)…

Je reconnais avoir découvert quelques entêtes qui mériteraient d’être positionnées systématiquement sur les sites web. Romain a ouvert une porte, reste maintenant à creuser le sujet tellement il est vaste et intéressant.

La vidéo est ici.

Industrialisation et automatisation chez M6Web Lille (Pierre Marichez et Renaud Bougre, M6Web Lille)

Pierre Marichez et Renaud Bougre, de M6Web Lille nous ont présenté l’infrastructure utilisée pour les sites gérés par leur agence de Lille et les différentes actions qu’ils ont menées depuis un an pour uniformiser les environnements de développement et de déploiements qui étaient jusque-là très hétérogènes.

Conférence intéressante là aussi pour voir de quelle façon il est possible de passer d’un environnement particulièrement hétérogène et au final peu pratique à une véritable industrialisation des développements. On y a vu notamment du Docker et du Gitlab-ci.

La vidéo est ici.

Affrontez la dette technique de votre projet en toute agilité (Maxime Thoonsen, Theodo)

En partant de la théorie de la vitre brisée (un immeuble subira plus rapidement des dégradations répétées dès lors qu’une fenêtre sera brisée qu’un immeuble intact), Maxime nous a parlé de la dette technique et de la façon de la gérer.

L’accumulation de dette technique peut conduire à une perte de vélocité dans l’équipe de développement, à des risques de sécurité et même à l’arrêt du projet. Il est donc très important de combattre dès le début du projet les mauvaises pratiques. Cela nécessite une bonne connaissance de la dette (cartographie) afin de prioriser les tâches.

Comment définir la dette technique ? Globalement, tout ce qui réduit la qualité du code et la vélocité de l’équipe peut être considéré comme de la dette technique :

  • Complexité,
  • Bugs,
  • Déploiement (si le processus est long et complexe),
  • Problèmes de sécurité,
  • Les erreurs d’architecture,
  • Le manque de tests,
  • L’environnement de développement,
  • Le manque de documentation,

Attention cependant, il peut y avoir de la bonne dette technique, avec notamment les POC, qui permettent de tester rapidement un concept et de refaire proprement si le code est conservé, et dont le coût sera toujours inférieur à une vraie dette technique.

Le combat contre la dette technique peut se structurer autour de trois principales actions :

  1. Identifier la dette : soit d’un seul coup lors d’un audit, soit au fil de l’eau grâce aux développeurs.
  2. Évaluer, décrire et communiquer autour de la dette : utilisation d’un outil comme Trello par exemple pour recenser les points de dette technique identifiés et encourager les développeurs à les traiter au fil de l’eau.
  3. Monitorer la dette : pondérer la dette (par exemple : nommage d’une variable incorrecte, 1 point, problème d’architecture, 100 points) et définir un standard, une limite à ne pas dépasser (par exemple 500 points).

Différents outils sont disponibles pour réaliser ces tâches, on notera notamment Scrutimizer, Sensiolab Insight, Sonar et bien entendu, l’intelligence des développeurs. 🙂

La lutte contre la dette technique est un combat quotidien, et le respect d’un certain nombre de règles peut la rendre moins difficile :

  • Rendre le code plus propre que lorsqu’on l’a trouvé.
  • Se focaliser sur un seul sujet à la fois et le traiter correctement.
  • Demander du temps au métier pour diminuer la dette (sans doute le plus difficile à faire ;-)).
  • Distribuer des responsabilités sur chaque dette avec un délai, de façon à plus impliquer l’équipe de développement.

Enfin, la prévention de la dette est extrêmement importante. La création d’un tableau de bord et de métriques peut permettre à l’équipe d’avoir une même vision de la dette, de maintenir l’intérêt et la motivation de tous, et surtout de rendre cette dette lisible par tous de façon à mieux la traiter. L’implication du client et sa sensibilisation à ce combat quotidien est également très bénéfique.

Prôner la simplicité des solutions, mettre en place des revues du code, et faire des choix adaptés à l’équipe (en fonction du nombre de débutants, de développeurs expérimentés…) sont autant d’actions simples permettant la diminution de la dette.

Enfin, gardez toujours en tête cette règle : écrivez toujours votre code comme s’il devait être maintenu par un psychopathe ! C’est toujours très motivant pour écrire du code propre ! 🙂

Inutile de dire que j’ai trouvé cette conférence très intéressante tant je suis confronté tous les jours à la dette technique (je travaille en effet principalement sur des TMA depuis un peu plus d’un an maintenant)…

La vidéo est ici.

Télétravail ? C’est bon, mangez-en ! (Manuel Raynaud, Wisembly)

Manuel vit à la campagne, du côté de Clermont-Ferrand, au pied des volcans d’Auvergne, et travaille pour Wisembly, située à Paris. Il nous a donc fait partager son expérience de télétravailleur, avec les avantages et les inconvénients, les outils et les processus mis en place…

Après nous avoir présenté différents types de télétravail (temps plein dans une société ne disposant pas de local, comme Automattic, temps partagé avec du travail « présentiel » classique, temps partiel), il nous a fait part des difficultés couramment rencontrées : solitude, manque de communication, difficulté de collaboration… Les solutions, être proactif et provoquer des échanges informels avec ses collègues, comme on pourrait le faire devant une machine à café, faire des rapports réguliers et mesurer le travail fournit, pas la présence.

Différents outils ont été mis en place chez Wisembly afin de faciliter l’intégration des télétravailleurs et leur participation à la vie de l’entreprise :

J’étais particulièrement intéressé par ce retour d’expérience puisque je pratique moi-même assidûment le télétravail (j’ai un contrat de travail spécifique me permettant de le faire et fixant les conditions) depuis quelques années. Je me suis tout à fait retrouvé dans l’expérience de Manuel, avec la liberté d’organiser son travail (dans certaines limites bien entendu), d’économiser énormément de temps de transport (actuellement, je dois être dans la moyenne avec entre 45 minutes et une heure de trajet matin et soir lorsque je me rends au bureau) et de pouvoir optimiser son temps de travail. Et tout ce temps gagné, c’est autant de stress et de fatigue en moins, et des moments en plus à passer en famille ! 🙂

La vidéo est ici.

Après cette matinée déjà bien chargée, il est temps de se restaurer. Cette année, l’AFUP nous propose un assortiment de petits sandwichs avec différentes garnitures (ceux au saumon étaient excellents ;-)), une boisson et un dessert. C’est toujours très sympa, ça permet de continuer de discuter avec un tas de gens intéressants tout en passant d’un stand à l’autre.

Après ce petit moment de détente, retour aux conférences !

La place de PHP dans l’architecture technique de Radio France (Rodolfo Ripado et Florent Tissot, Radio France)

J’ai redécouvert Radio France à l’occasion de cette conférence, et surtout j’ai découvert la place que PHP pouvait occuper dans une architecture dédiée à la diffusion d’autant de médias différents (radio, écoute en direct sur le web, podcast…). J’ai donc appris au final que l’équipe de développement PHP était plutôt importante (une soixantaine de personnes de mémoire, j’espère ne pas dire de bêtise) et que Radio France était particulièrement active dans le domaine du PHP (sponsor Platine cette année d’ailleurs).

La vidéo est ici.

Comment relire du code pourri sans se fatiguer (Damien Seguy, Exakat)

Les conférences de Damien Seguy sont toujours intéressantes, je vous les recommande vivement, et celle-ci n’a pas fait exception ! 🙂

A partir de métriques obtenus par différents outils qu’il nous a présentés, Damien nous a fait partager son analyse d’un code dont nous ignorions tout de la source. Tout au long de sa présentation, il a poussé son auditoire à tirer des conclusions sur le code examiné (sans jamais le voir je le rappelle), sur sa qualité, sur les éléments qu’y s’y trouvent, sur sa compatibilité avec différentes versions de PHP…

Il nous a donc parlé d’analyse statique du code et des outils disponibles. Naturellement, relire le code d’une application est humainement impossible, les tests unitaires sont peu adaptés et l’analyse dynamique revient à parcourir et à explorer le code.

Le code n’étant rien de plus qu’une donnée structurée, il existe des outils permettant de le relire automatiquement.

Parmi les outils disponibles, on peut noter :

  • PHP Lint: analyse de code statique.
  • PHPLoc, PHPMetrics : analyse et génération de métriques pour un code PHP.
  • PHP7cc, PHAN, Exakat, SonarQube : pour vérifier la compatibilité avec PHP7 et effectuer une revue de code automatisée.
  • Les diagrammes de contrôles de flux.
  • Les graphes de dépendances.
  • Deptrac : analyse des dépendances entre classes.

La vidéo est ici.

Pourquoi strlen(« « ) != 1 ? (Damien Alexandre, Jolicode)

Damien Alexandre nous a parlé du traitement des chaînes de caractères, depuis la naissance d’Unicode jusqu’à l’UTF-8, et des problèmes que sa gestion peut entraîner lors des développements (j’ai appris par exemple que MySQL ne supporte pas UTF-8 contrairement à ce que l’on croit… et ne prend en compte que les trois premiers octets au lieu de traiter les quatre octets de chaque caractère…).

Même si j’ai un peu moins accroché que sur d’autres conférences, j’ai là aussi appris plein de choses intéressantes ! 🙂

La vidéo est ici.

Ce fut une journée bien remplie, plein de belles rencontres et de notes à mettre au propre !

Merci d’avoir tenu jusque-là ! 🙂

Le Forum PHP 2015, c’est dans 20 jours ! :-)

Ouf ! Enfin de retour. Il y avait longtemps que je n’avais pas donné de nouvelles sur ce blog, entre une mission prenante à Paris qui a duré 9 mois et différentes autres contraintes…

Bref, tout ceci pour dire que je m’aperçois que l’édition 2015 du Forum PHP débutera dans seulement 20 jours puisqu’elle se tient les 23 et 24 novembre prochains au Beffroi de Montrouge.

Comme d’habitude, il y aura de nombreuses conférences intéressantes, des intervenants de haut niveau, des séances courtes, des ateliers (inscrivez-vous, les places sont limitées)…

Cette année, la première journée sera tout naturellement entièrement consacrée à PHP7, puisque sa sortie est programmée à la fin de l’année 2015.

Plus encore que les éditions précédentes, celle-ci sera placée sous le signe de la fête puisque 2015 est l’année des célébrations : PHP a 20 ans, l’AFUP en a 15, PHP7 arrive… La vidéo communautaire « Haphpy birthday » sera diffusée à cette occasion.

Pour la première fois depuis dix ans, je ne pourrai pas être présent durant les deux jours, mes contraintes professionnelles et surtout familiales ne me le permettant pas. Je ferai néanmoins le déplacement le mardi 24 novembre, arrivant en fin de matinée pour assister à un maximum de conférences, revoir les amis et faire de nouvelles connaissances !

Peut-être à bientôt donc au Forum PHP 2015 ! 🙂

Convocation et planning du Forum PHP 2014

Dernière ligne droite pour le Forum PHP qui va se tenir cette semaine au Beffroi de Montrouge.

Les convocations sont parties (j’ai bien reçu la mienne), et mon planning prévisionnel est établi ! 🙂

Mon planning pour le Forum PHP 2014

Vous aussi planifiez le planning des conférences auxquelles vous souhaitez assister, c’est ici.

Si vous n’avez pas encore votre place… sachez qu’il est trop tard. Le Forum PHP 2014 est complet depuis près d’une semaine.

Peut-être aurons-nous l’occasion de nous croiser lors du Forum !

Le planning du Forum PHP 2014 est en ligne !

Pas moins de 39 intervenants présenteront plus de 30 sessions lors des 23 et 24 octobre prochains !

Le planning complet est en ligne sur @joindin (bit.ly/YUzdta) et sur @lanyrd (lanyrd.com/2014/forumphp/).

Difficile parfois de choisir entre deux conférences se déroulant au même moment (et n’oublions pas non plus les ateliers pratiques). Pour ma part, je pense que mes choix seront les suivants :

Jour 1 (jeudi 23 octobre) :

  • 9h00 : Keynote d’ouverture (naturellement ;-))
  • 9h30 : La mesure ce n’est pas que pour les devops (Patrick Allaert et Olivier Garcia)
  • 10h15 : Live coding : construisons ensemble notre premier site Drupal 8 (Bastien Jaillot)
  • 11h30 : Improving Code Quality Continuously (Johannes Schmitt)
  • 12h15 : Laisse pas traîner ton log (Olivier Dolbeau)
  • 14h30 : Best practices with Composer (Jordi Boggiano)
  • 15h15 : là, j’hésite entre les deux… Retours d’expérience : tests fonctionnels chez Maisons du Monde (Marc Hugon) ou Faster application development with CakePHP 3.0 (Jose Zap)
  • 16h15 : Et si on utilisait WordPress ? (Julio Potier)
  • 17h00 : Automate your Workflow : removing Tedium in Everyday work (Bruno Skvorc)
  • 17h45 : Slideshow Karaoke (Kenny Dits) [là, je suis curieux de voir :-)]

Jour 2 (vendredi 24 octobre) :

  • 9h30 : là, j’hésite entre les deux… La migration continue vers PHP – l’agilité sans feuille blanche (François Zaninotto) ou platform.sh le PAAS qui résout le casse tête dev/staging/prod (Ori A Pekelman)
  • 10h15 : Développement Symfony rapide avec un modèle de contenu (Bertrand Dunogier)
  • 11h30 : Comprendre et optimiser OPCache (Xavier Lejeune et Frédéric Bouchery)
  • 12h15 : là, j’hésite entre les deux… An introduction to the Laravel Framework for PHP (Dayle Rees) ou Retour d’expérience ARTE GEIE : développement API (François Dume)

Pour l’après midi du jour 2, je ne me prononce pas, je ne sais pas encore à quelle heure je vais devoir repartir et donc si je vais pouvoir assister à une ou deux conférences en plus.

Quoi qu’il en soit, nul doute que ces deux jours seront encore riches en découvertes et en rencontres.

A bientôt pour ceux qui se rendront au Forum PHP 2014 et si vous n’êtes pas encore inscrits, dépêchez-vous, les places restantes partent très vite !

 

Le programme du Forum PHP 2014 est en ligne !

banniere_forum_php_2014

Le programme du Forum PHP 2014 a été mis en ligne cette après midi sur le site de l’AFUP.

Cette année, l’accent est mis sur cinq grands thèmes : retours d’expérience PHP à grande vitesse, gagner du temps avec l’écosystème open-source PHP, agile et Devops en PHP et les solutions du développeur PHP rapide.

Il va encore être difficile de choisir auxquelles je vais assister, et j’ai hâte que soit publié le planning définitif des conférences afin de pouvoir préparer l’emploi du temps de ces deux journées.

Pour l’instant, je retiens au moins les sujets suivants (en espérant qu’il n’y ait pas trop de conflits sur les horaires) :

  • « Cohabitation de PHP et Node au Monde, pourquoi et comment », par Olivier Grange-Labat, directeur technique de lemonde.fr
  • « Retour d’expérience : tests fonctionnels chez Maisons du Monde », par Marc Hugon, directeur technique de MaisonDuMonde.com
  • « Laisse pas traîner ton log ! », par Olivier Dolbeau, architecte chez BlabarCar
  • « Retour d’expérience ARTE GEIE : développement API », par François Dume, développeur web chez Arte
  • « Composer Best Practices », par Jordi Boggiano, core-dev Composer
  • « An introduction to the Laravel Framework for PHP », par Dayle Rees, core-dev Laravel
  • « Et si on utilisait WordPress », par Julio Potier, core-dev WordPress
  • « Live coding : construisons ensemble notre premier site Drupal 8 », par Bastien Jaillot de Jolicode
  • « Test logiciel : Passé, Présent, Futur », par William Durand, doctorant en qualité logicielle
  • « Déploiement continu : un pas de plus vers le devops », par Reynald Mandel, lead-dev Theodo
  • « Développement Symfony rapide avec un modèle de contenu », par Bertrand Dunogier, lead-dev ezPublish
  • « Profiler : la performance d’une application », par Nicolas Grekas, lead-dev sur SensioProfiler

Je rappelle également que cette année sont organisés des ateliers pratiques. Inscrivez-vous vite si vous souhaitez y participer, les places sont limitées.

Forum PHP 2014, j’y serai ! :-)

Ça y est, je viens de m’inscrire pour participer au prochain Forum PHP 2014 qui se tiendra au Beffroi de Montrouge (à Montrouge donc ;-)) les 23 et 24 octobre prochains.

150 euros (tarif membre AFUP, 250 euros plein tarif), ce n’est pas cher payé pour deux jours complets de conférences et d’ateliers de grande qualité.

Si vous aussi vous souhaitez y aller, ne tardez pas trop, en général, les places partent vite dans les dernières semaines !

Rendez-vous sur le site du Forum PHP 2014 !

Forum PHP 2014

MOOC OpenClassrooms PHP/MySQL – semaine 4

Cette dernière semaine concerne l’utilisation « avancée » de PHP. En quoi consiste donc l’utilisation « avancée » de PHP pour les auteurs de cette formation ?

Il s’agit principalement de l’utilisation des expressions rationnelles et de la programmation orientée objet ou POO.

La première chose que je remarque en allant sur la page dédiée à cette dernière semaine, c’est l’absence de TP. Je suis déçu (comme beaucoup, si j’en crois les réactions sur le forum). C’est très dommage. Même si le TP de la semaine précédente avait demandé beaucoup de travail aux participants, il n’y a rien de plus formateur que d’utiliser ce que l’on apprend sur des cas concrets.

Les cours en vidéo :

Trois vidéos sont disponibles cette semaine.

  1. Les expressions régulières, partie 1/2
  2. Les expressions régulières, partie 2/2
  3. La programmation orientée objet

1. Les expressions régulières, partie 1/2 (16’25)

Une introduction à l’utilisation des expressions rationnelles  pour effectuer des recherches dans un texte (preg_match()). Présentation de la syntaxe des expressions rationnelles, des options disponibles (sensibilité à la casse ou non…), des délimiteurs, des classes de caractères… au travers de différents exemples.

2. Les expressions régulières, partie 2/2 (10’10)

Utilisation des expressions rationnelles pour effectuer des remplacements dans un texte (preg_replace()) et/ou en extraire des parties.

3. La programmation orientée objet (15’38)

Introduction à la programmation orientée objet : les classes, les attributs, les méthodes…

Une présentation assez simple de la POO destinée aux débutants avec des exemples pour gérer un membre d’un site web. On y apprend comment créer une classe, des attributs et des accesseurs.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Six questions concernent les expressions rationnelles et quatre la programmation orientée objet. Elles sont simples dans l’ensemble et n’importe qui ayant visualisé les vidéos devrait être capable d’y répondre correctement.

Les échanges sur le forum :

Les messages échangés concernent principalement l’utilisation et la conception des expressions rationnelles. Il s’agit d’un sujet vaste et complexe et les participants se posent beaucoup de questions. Certains vont assez loin dans la pratique et conçoivent des scripts assez avancés pour tester les expressions rationnelles.

Au final, assez peu de sujets traitent de la POO. C’est assez normal. Il y a déjà eu assez d’informations à assimiler durant les trois premières semaines et comme il n’y a pas de TP, tout le monde n’est pas motivé pour s’intéresser réellement à la POO et l’expérimenter.

Mon sentiment concernant cette quatrième et dernière semaine :

Cette dernière semaine est intitulée « Utilisation avancée de PHP ».

En fait, nous avons seulement une présentation des expressions rationnelles et une brève introduction à la programmation orientée objet. C’est assez peu finalement.

Autant la présentation des expressions rationnelles est intéressante, autant l’introduction à la POO est trop succincte pour être réellement utile.  C’est un sujet bien trop vaste à mon avis pour être abordé en quinze minutes à la fin d’un cours.

Bref, je suis un peu déçu par cette dernière semaine. Il n’y a pas à mon sens réellement de « PHP avancé » cette semaine, qui ne tient donc pas ses promesses. D’autre part, je trouve discutable le choix de survoler la POO à la fin du cours. La programmation orientée objet mériterait un MOOC à elle seule tellement il y a de choses à voir.

Les participants débutants ont pas mal d’informations à assimiler durant les trois premières semaines. Peut-être aurait-il été plus intéressant par exemple d’insister un peu plus sur la sécurité (les risques, les différents types d’attaques et les contre-mesures à utiliser) et de proposer un TP récapitulatif, un peu comme pour le MOOC HTML5/CSS3 (d’ailleurs ce TP a été réclamé par un certain nombre de participants sur le forum).

Pour conclure…

Je suis content d’avoir participé à ce premier MOOC PHP/MySQL. L’ambiance a toujours été bonne sur les forums, les participants étaient motivés et à l’écoute de tous les conseils que pouvaient leur donner les plus expérimentés. Les vidéos étaient de bonne qualité, à part quelques problèmes de son sur certaines la première semaine. Je pense que les participants ayant bien suivi les vidéos ont pu acquérir quelques bases de PHP, ceux s’étant en plus aidé du support écrit ayant sans aucun doute plus progressé.

Je note deux points négatifs : la rareté des travaux pratiques (un seul sur quatre semaines, même si l’étude et la reproduction du code présenté dans les vidéos pouvaient passer dans la pratique) et la programmation orientée objet survolée dans la quatrième semaine. Rien ne remplace la pratique pour comprendre et assimiler le fonctionnement de PHP. Par conséquent, je pense qu’un TP par semaine aurait été mieux, avec une difficulté croissante naturellement. Par exemple : première semaine, manipulation des variables, calculs, boucles et tests. Deuxième semaine : transmission des informations en utilisant un formulaire et utilisation de la session et des cookies (identification d’un utilisateur par exemple). Troisième semaine : même chose que la deuxième semaine, mais en stockant les informations dans une base de données. Quatrième semaine : analyse des failles possible et optimisation de la sécurité. Les participants auraient sans doute été plus conscients de leur progression avec quatre TPs. Par contre, ça leur aurait demandé plus de travail durant la semaine (2h30 prévues selon OpenClassrooms, ce qui est je pense déjà sous-estimé), entre la consultation des vidéos, la réalisation des TPs, et la correction de trois TPs des autres participants. Il faudrait je pense également prévoir un MOOC spécifique pour le « PHP avancé » afin d’y aborder les sujets importants de façon plus complète qu’un survol lors de la dernière semaine.

Pour conclure, j’ai passé quatre semaines sympathiques à suivre ce MOOC. Les échanges sur les forums ont été riches et m’ont permis de faire quelques « rencontres » intéressantes. L’organisation et les outils (qualité des vidéos, correction du TP) ont fait beaucoup de progrès depuis le MOOC HTML5/CSS3 auquel j’ai participé fin 2013, même si il reste encore des choses à améliorer (plus de travaux pratiques, forum peu pratique à utiliser, tous les messages étant affichés à la suite sans possibilité de classement par discussion…). Le fonctionnement des MOOCs a été modifié : désormais, il est possible d’en commencer n’importe quand, chaque partie étant validée une semaine après l’inscription effective. C’est très intéressant pour ceux qui ne peuvent pas forcément s’organiser comme ils le souhaitent et libérer suffisamment de temps pour suivre un MOOC à dates fixes.

A l’heure où j’écris ces lignes, le MOOC n’est pas encore tout à fait terminé. Je ne connais donc pas exactement le nombre d’inscrits, ni le nombre de participants ayant réellement terminé le MOOC. Je ne manquerai pas de vous en faire part dès qu’OpenClassrooms publiera les statistiques…

MOOC OpenClassrooms PHP/MySQL – semaine 3

Je commence la rédaction du compte rendu de cette troisième du MOOC alors que s’achève bientôt la quatrième… Il semblerait que j’aie pris un peu de retard.

Durant cette semaine, nous avons abordé l’utilisation d’une base de données avec PHP, en l’occurrence, MySQL, ainsi que naturellement, le langage SQL.

Organisation du MOOC :

L’organisation reste la même que celle des autres semaines, à un détail près : un TP est prévu. Enfin de la pratique ! 🙂

Les cours en vidéo :

Sept vidéos sont disponibles cette semaine.

  1. Présentation des bases de données
  2. phpMyAdmin
  3. Lire des données
  4. Écrire des données
  5. Les fonctions SQL
  6. Les dates en SQL
  7. TP : un mini-chat

1. Présentation des bases de données (6’26)

Introduction aux systèmes de gestion de bases de données et à MySQL en particulier, et quelques exemples de requêtes SQL.

2. phpMyAdmin (12’00)

Utilisation de phpMyAdmin pour créer, gérer des bases de données, des tables et manipuler les données via l’interface ou des requêtes SQL.

3. Lire des données (23’38)

Récupération et sélection de données dans une base. Utilisation de PDO MySQL.

4. Écrire des données (8’46)

Création de requêtes de création, de mise à jour et de suppression de données. Utilisation de PDO MySQL et des requêtes préparées.

5. Les fonctions SQL (10’33)

Présentation des fonctions SQL. Comptage des résultats, calcul de moyenne, transformation en majuscules ou en minuscules…

6. Les dates en SQL (8’15)

Fonctions de manipulation des dates en SQL.

7. TP : un mini-chat (2’50)

Présentation du sujet du TP :  la réalisation d’un mini-chat permettant à un utilisateur de saisir un pseudo et un message, d’enregistrer ce dernier dans une base de données, et de consulter la liste des messages existants.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Les questions ont toutes pour sujet l’utilisation des bases de données (logique non ? ;-)). Elles sont relativement simples et reprennent les sujets abordés dans les vidéos.

Le TP :

Cette semaine est à mon avis sans aucun doute plus intéressante. Enfin l’occasion de mettre en pratique les connaissances acquises au travers des cours. Le sujet en lui-même n’est pas très complexe, il s’agit de la réalisation d’un « mini-chat » permettant à l’utilisateur d’enregistrer un message et de consulter la liste des messages existants. Ce TP permet de mettre en œuvre la théorie abordée dans les chapitres précédents : transmission de données entre les pages, utilisation d’un formulaire, lecture et écriture dans une base de données, utilisation de session et/ou de cookie…

Le TP sera corrigé par les participants eux-mêmes. Chaque participant doit envoyer son travail, et pour obtenir sa note validée, corriger lui-même trois TPs. Chacun obtiendra par conséquent trois notes provenant de trois correcteurs différents. La note moyenne comptera pour la réussite du MOOC au même titre que celles obtenues pour les QCM.

Pour faciliter la correction, un barème précis (présence de fichiers, fonctionnalités…) est fourni.

J’ai corrigé trois copies, et j’ai mis de mémoire les notes de 8, 9 et 10. De bonnes copies, avec quelques petits défauts que je me suis permis de signaler à leurs auteurs. Je remarque que les débutants ne commentent pas beaucoup leur code, et je les encourage à le faire. 🙂

Ma version du TP est ici. Elle vaut ce qu’elle vaut. J’ai remplis je pense le cahier des charges. Je n’ai pas créé une interface sophistiquée, préférant répondre à la demande, et uniquement à la demande. De plus, étant donné que les corrections sont effectuées par des débutants la plupart du temps, et que j’ai choisi une solution avec un certain nombre de fichiers séparés, j’ai ajouté à la racine du TP un fichier LISEZMOI.txt décrivant avec suffisamment de précisions l’installation, la configuration, l’utilisation et les choix techniques pour la notation.

Les échanges sur le forum :

Les échanges sont très nombreux cette semaine. Il est naturellement principalement question de la réalisation du TP et des difficultés rencontrées. Il y a un peu de tout, des propositions, des appels à l’aide, des réponses à ces appels… Beaucoup de débutants trouvent l’exercice très difficile. Certains le trouvent même impossible à réaliser. Des encouragements les aideront à continuer. Je pense que nous verrons à la fin du MOOC les statistiques qui nous diront combien de personnes ont rendu leur TP et quelles notes ont été distribuées. Il y a des débats sur les différentes façons de faire : un fichier ou bien plusieurs, prise en compte de la sécurité au travers des attaques XSS et des injections SQL, utilisation de la session et / ou d’un cookie pour la mémorisation du pseudo de l’utilisation…

Mon sentiment concernant cette troisième semaine :

Enfin de la pratique !!!

Tout le monde l’attendait ce TP. C’est là l’occasion d’utiliser tout ce qui a été vu durant ces trois semaines. Il a également permis à beaucoup de mesurer le gouffre qui sépare la théorie de la pratique. Ce qui paraissait pourtant simple dans le cours est finalement plus complexe que prévu à mettre en place avec un véritable exemple.

Certains participants se plaignent de la complexité du TP. En effet, il mêle tous ce qui a été vu jusque là, et cela fait sans doute beaucoup d’un seul coup lorsque l’on est débutant. Le temps de travail prévu par semaine (2h30) a dans ce cas sans aucun doute été largement sous-estimé.

Comme je l’ai fait remarquer sur le forum, il aurait sans doute été judicieux (mais plus long et complexe à mettre en place, ne serait-ce que parce qu’il faut corriger les copies) d’avoir un TP par semaine, avec une difficulté croissante au fil des semaines. J’ai même poussé le vice à proposer mon aide mon la rédaction de ces TPs… il faudra maintenant que je trouve le temps de le faire. 🙂

La quatrième et dernière semaine traitera de l’utilisation avancée de PHP, avec les expressions rationnelles, et la programmation orientée objets (POO).

MOOC OpenClassrooms PHP/MySQL – semaine 2

Mes impressions concernant la première semaine du MOOC « Concevez votre site web avec PHP et MySQL » organisé par OpenClassrooms ont été publiées ici.

Comme promis, voici un aperçu de la deuxième semaine de ce MOOC, dont le résumé est le suivant :

Transférer des informations d’une page à une autre est une des clés d’un site web dynamique. Que ce soit dans la barre d’adresse ou via des formulaires, il existe de nombreux moyens de faire transiter des données.
Nous découvrirons aussi les mécanismes des sessions et des cookies, deux techniques très pratiques pour retenir des informations.

Organisation du MOOC :

Depuis cette semaine, l’organisation des MOOCs OpenClassrooms a été modifiée. Jusqu’à maintenant, un MOOC commençait un lundi, et la semaine s’achevait le dimanche à 23h59 avec la date limite de validation des exercices. Même si chaque participant était évidemment au courant de ce fonctionnement et des dates limites, des problèmes d’emploi du temps, de charge de travail ou encore de connexion (nous ne sommes pas tous égaux devant l’accès à Internet, les participants se situant dans le monde entier) pouvaient en empêcher certains de valider la semaine dans les temps. Si la semaine n’était pas validée, la note de l’exercice était de 0, et même si elle n’est pas éliminatoire, cela provoquait assurément de la frustration chez ceux qui avait rencontré un problème. Cela représentait également un handicap pour ceux qui souhaitaient obtenir la certification OpenClassrooms à la fin (la validité et la reconnaissance de cette certification est un autre débat).

Désormais, il est possible de rejoindre un cours OpenClassrooms quand on le souhaite. On a alors accès directement à la semaine 1 et l’on dispose de 7 jours complets pour valider le ou les exercices. La deuxième semaine sera disponible 7 jours après l’inscription, et ainsi de suite pour les semaines suivantes.

Toutes les informations concernant cette nouvelle organisation se trouvent ici.

Pour le reste, le fonctionnement est le même que celui de la semaine 1 : des cours en vidéo (trois cette semaine pour une durée totale d’un peu moins d’une heure), un QCM et le forum.

Les cours en vidéo :

Trois vidéos sont disponibles cette semaine.

  1. Transmettre des données avec l’URL
  2. Transmettre des données avec les formulaires
  3. Variables superglobales, sessions et cookies

Elles sont dans l’ensemble plutôt de bonne qualité, et je n’ai pas constaté de différences de niveau sonore comme dans celle de la première semaine (je n’ai d’ailleurs pas non plus relevé de remarque à ce sujet sur le forum comme ça avait été le cas pour la semaine 1).

 1. Transmettre des données avec l’URL (18’58)

Présentation au travers d’un exemple simple de la façon dont il est possible d’échanger des informations entre le client et le serveur en se servant de l’url. Au passage, quelques conseils avisés sont distillés concernant la sécurité de base (ne jamais faire confiance aux données provenant du client 😉 ) et quelques fonctions permettant de tester et filtrer les variables sont proposées.

2. Transmettre des données avec les formulaires (13’58)

Démonstration du fonctionnement d’un formulaire, présentation des méthodes GET et POST, de la récupération et du traitement des données en PHP. Il est de nouveau conseillé de ne jamais faire confiance aux données provenant de l’utilisateur (introduction très rapide aux attaques XSS, utilisation de htmlspecialchars()).

 3. Variables superglobales, sessions et cookies (14’43)

Présentation des différentes variables superglobales, notamment $_SERVER, $_SESSION, et $_COOKIE et de leur utilisation pour la transmission d’informations d’une page à une autre.

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Les questions se font un peu plus précises, ce qui est normal puisque nous sommes rentrés dans le vif du sujet. Elles mettent en évidence les difficultés de compréhension que les participants peuvent parfois rencontrer. On retrouve notamment sur le forum beaucoup de questions concernant l’utilisation des timestamp, pour calculer la date d’expiration d’un cookie par exemple. Beaucoup confondent date d’expiration (date courante + durée de vie en secondes) et durée de vie du cookie. La dernière question du QCM a fait l’objet de plusieurs « contestations » sur le forum alors qu’à mes yeux elle était très claire.

Un exercice supplémentaire noté devait également être proposé cette semaine. Il l’a été quelques temps mais a été retiré rapidement, le système de notation entre participants n’étant visiblement pas encore tout à fait au point. Certains l’ont néanmoins fait et leurs contributions ont fait l’objet de nombreuses discussions sur le forum.

J’espère que le système sera au point pour la semaine 3.

Les échanges sur le forum :

Les échanges sont nombreux cette semaine encore. Normal, on attaque les choses sérieuses avec la gestion des formulaires. Beaucoup de questions concerne le code, la façon de gérer le formulaire côté serveur, les erreurs commises.

On y parle également de sécurité, d’injection, de filtrage… de bonnes pratiques en général. Tout le monde n’est pas d’accord sur les méthodes à adopter, sur le fait qu’il faille filtrer ou non les données, mais dans l’ensemble, grâce aux échanges entre les participants de différents niveaux, tout le monde progresse.

 Mon sentiment concernant cette deuxième semaine :

Si les vidéos sont un peu plus « pointues » que celles de la semaine 1 qui abordaient les notions de base, elles ne fournissent encore une fois qu’une base à partir de laquelle travailler. Elles sont suffisamment claires pour permettre d’amener les participants à la réalisation d’un petit formulaire et au traitement des données envoyées, et elles laissent suffisamment de points dans l’ombre pour qu’ils soient obligés de chercher des informations ailleurs. Le réflexe « je vais voir dans le manuel PHP » commence à rentrer. 🙂

Les discussions sur le forum sont logiquement plus « pointues » également, avec des questions pratiques concernant l’utilisation des variables, le traitement des données côté serveur, la sécurisation d’un formulaire… Quelques questions ont également été posées sur des notions qui sont abordées dans le cours PHP au format PDF pour ceux qui y ont accès et qui ne sont pas mentionnées dans les vidéos (forcément moins complètes), comme les constantes. Les deux supports sont bien entendu complémentaires.

La semaine prochaine, nous allons aborder l’utilisation de bases de données avec PHP, et notamment MySQL et le langage SQL.

A bientôt pour la semaine 3 du MOOC.

MOOC OpenClassrooms PHP/MySQL – semaine 1

Cette semaine a ouvert le MOOC « Concevez votre site web avec PHP et MySQL » organisé par OpenClassrooms.

J’avais déjà participé à un premier MOOC durant l’automne 2013 (c’était d’ailleurs le premier MOOC organisé par OpenClassrooms) et j’avais relaté mon expérience, plutôt positive dans l’ensemble, dans cet article.

Pourquoi participer à un MOOC sur PHP et MySQL pour débutant alors que ça fait près de quinze ans que je développe dans ce langage ? Tout d’abord, parce que je pense que l’on peut toujours apprendre, et que c’est parfois en revenant aux bases que l’on peut (re)découvrir des choses. Ensuite, parce que je trouve ce principe de MOOC et la façon de faire d’OpenClassrooms plutôt sympathiques et que je voudrais voir comment les pratiques évoluent chez eux. Enfin, parce que j’espère en participant activement au forum et aux discussions autour du contenu du MOOC et de son organisation, pouvoir à mon petit niveau aider les débutants dans leur découverte du langage et dans la mesure du possible, distiller quelques « bonnes pratiques » de développement issues de mon expérience et de mes lectures.

Je vais essayer, dans la mesure du possible, de publier un article sur ce blog pour chaque semaine de ce MOOC.

Entrons maintenant dans le vif du sujet…

Organisation du MOOC :

Les cours s’étalent sur quatre semaines. Un certain nombre de vidéos traitant chacune d’un aspect particulier sont mises à disposition des participants durant toute la durée de la formation.

Un exercice est à réaliser avant le dimanche 23h59 afin de valider la semaine. Il est noté sur 10. A la fin, le cumul des notes permettra ou non de valider le MOOC. Lors du premier MOOC auquel j’avais participé, lorsque la note finale était suffisante, un badge était délivré et apparaissait ensuite dans le profil de l’utilisateur. Il semblerait que cette pratique ait été abandonnée afin de mettre en avant les certifications proposées par OpenClassrooms.

Enfin, un forum est à la disposition des participants afin qu’ils puissent échanger sur les cours, les exercices, et sur tous les thèmes en rapport avec le MOOC en général. Un nouveau forum est ouvert chaque semaine. Ce forum n’est pas des plus pratiques, puisque tous les messages se suivent et qu’il est rapidement très difficile de s’y retrouver si l’on ne le consulte pas régulièrement. J’espère que cela évoluera à l’avenir vers un outil plus efficace.

Cette première semaine est consacrée naturellement aux bases de PHP : installation des outils nécessaires, premiers pas avec PHP…

Les cours en vidéo :

Neuf  vidéos sont disponibles cette semaine.

  1. Introduction à PHP
  2. Préparer son ordinateur
  3. Premiers pas avec PHP
  4. Inclure des portions de page
  5. Les variables
  6. Les conditions
  7. Les boucles
  8. Les fonctions
  9. Les tableaux

Elles sont dans l’ensemble plutôt de bonne qualité, même si il peut y avoir de grosses différences de niveau sonore dans certaines.

 1. Introduction à PHP (6’42)

Présentation du fonctionnement d’un site web, différences entre un site statique et un site dynamique, échanges entre le client et le serveur, mention des autres langages utilisés pour le web et des autres serveurs de bases de données.

2. Préparer son ordinateur (8’09)

Installation des outils nécessaires au développement PHP sur son ordinateur : navigateur web, éditeur de texte (SublimeText), Apache, PHP, MySQL (Wamp, Mamp ou Xamp).

 3. Premiers pas avec PHP (8’11)

Première utilisation de PHP pour afficher des informations dans une page HTML. Un petit « echo ‘Bonjour !’; » pour commencer. 🙂

4. Inclure des portions de page (8’34)

Utilisation de PHP pour inclure des portions de page et ainsi éviter la répétition de code HTML pour une entête, un pied de page et un menu. Utilisation de l’instruction « include« .

5. Les variables (5’55)

Règles de nommage, déclaration et utilisation des variables. Présentation des différents types et des opérations de base.

6. Les conditions (10’46)

Présentation des structures conditionnelles en PHP : « if« , « elseif« , « else« , « switch/case« , les opérateurs de comparaison et les booléens.

 7. Les boucles (5’59)

Présentation des structures de boucles : « while » et « for« . Je pense que la structure « do… while » aurait également pu être abordée dans ce chapitre. Il est toujours intéressant de connaître les différences de comportement basiques entre « while » et « dowhile« .

8. Les fonctions (8’49)

Présentation des fonctions de base de PHP (longueur d’une chaîne de caractères, manipulation des chaînes, des dates).

Création et utilisation de fonctions utilisateur.

9. Les tableaux (9’53)

Introduction à la création et à l’utilisation des tableaux en PHP, numériques et associatifs, utilisation de « print_r« . Parcours d’un tableau à l’aide de « for » et de « foreach« .

Les exercices :

Un QCM composé de dix questions comptant chacune pour un point est proposé.

Sans surprise, les questions tournent autour des concepts et des informations présentées dans le vidéos et concernent les bases de PHP.

Les échanges sur le forum :

Les échanges sont nombreux et des sujets reviennent.

Je pense que ce qui revient le plus au début, ce sont les problèmes liés à l’installation de Wamp ou Mamp sur les machines des participants. Beaucoup rencontrent des problèmes après l’installation avec un ou plusieurs serveur(s) qui ne démarre(nt) pas. Généralement, des solutions sont trouvées et partagées. J’ai moi même rencontré ce genre de problème l’an dernier et c’est pour cela que lorsque j’ai changé de pc, j’ai préféré travailler uniquement avec des serveurs virtuels (voir mon article à ce sujet).

Ensuite, les participants commencent à se poser des problèmes liés au code, à différentes fonctions, les boucles, les conditions… C’est le moment où ceux qui connaissent un peu mieux le sujet peuvent aider les autres. C’est en général une expérience très enrichissante.

Encore peu de discussions autour du code en lui-même, nul doute que les choses vont changer au fur et à mesure des semaines.

 Mon sentiment concernant cette première semaine :

Depuis ma participation au premier MOOC organisé par OpenClassrooms en septembre/octobre 2013, les choses ont bien évolué, notamment en ce qui concerne les vidéos. Elles sont plus professionnelles, de meilleure qualité, même si il subsiste encore parfois quelques problèmes de niveau sonore. Je n’ai pas non plus rencontré les mêmes problèmes qu’il y a quelques mois pour leur visionnage (le lecteur avait été changé plusieurs fois durant le MOOC). J’ai pu les visionner sans aucun soucis.

Concernant le contenu en lui-même, les bases de PHP sont abordées et cela peut suffire pour démarrer. Le choix de Wamp / Mamp / Xamp est judicieux dans la mesure où il permet d’être rapidement opérationnel pour démarrer avec PHP, sans pour autant se pencher sur les problèmes d’installation et de configuration d’Apache, PHP et MySQL.

Par contre, chaque vidéo ne fait qu’effleurer le sujet abordé. Il s’agit bien entendu d’une introduction afin de mettre les participants sur les rails. Mais dans l’optique de les amener progressivement à s’améliorer, il aurait été intéressant dès ce stade, de proposer quelques exercices accompagnés d’une correction. Des liens vers des exercices ont été proposés dans le forum par d’autres participants, il est dommage qu’ils n’aient pas été directement donnés par les organisateurs. D’après un message de Mathieu Nebra sur le forum en réponse à une question posée par un participant, des exercices seraient proposés à partir de la semaine 2. Le MOOC  n’en sera donc que plus intéressant !

Je regrette par contre que le moteur du forum soit toujours le même, car il n’est pas vraiment pratique. Tous les messages sont affichés à la suite et il n’est pas possible de grouper les conversations. Ce n’est pas trop gênant au début, mais au bout d’une semaine, le forum contient quatorze pages. Pour retrouver une information, il faut parcourir toutes les pages. Et le nombre de pages va forcément augmenter au fur et à mesure de l’avancement du MOOC.

Une dernière remarque, je trouve dommage qu’un lien aussi indispensable que celui du manuel PHP n’ait pas été mentionné dès les premières vidéos de cours.

A bientôt pour la semaine 2 du MOOC.