SlideShare una empresa de Scribd logo
1 de 40
Confoo 2011 SaadTazi
Au programme… Symfony2 Caching, ESI AutresinformationsConfoo Des questions? Quandvousvoulez!
Introduction “Un autre framework MVC PHP (encore??)” Batiàpartir de composantsréutilisables (Yaml, Dependency Injection Container, Twig…) Full-stack framework (pas micro – voirsilex)
Différence avec symfony 1 Entièrementréécrit Beaucoup d’apprentissage avec symfony 1 => meilleurepratiquedansSymfony 2 Pas de séparation entre plusieursapps Supprime les problèmes de routing entre applications maisen bundle sinécessaire Caching HTTP (on va en parlerjuste après…) Utilisation des namespace php 5.3 Mon “feeling”: courbed’apprentissage plus importante, moins de “magie”, beaucoup plus de Design Patterns appliqués (DIC, decoupling…)
Introduction http://symfony.com Qui a travaillé avec symfony (1)? Un autre framework PHP?
Une image vaut 1000 mots… Structure de Symfony (code)
Structure
Structure Est-cequej’aiparlé de: Config Routing Vendors Swiftmailer Doctrine 2 Monolog (et non Zend)
De la requêteà la réponse Unerequêteestreçue par le front controller de Symfony Le routing déterminequelle action estappelée L’actionestexécutée L’actionretourneuneréponse En un mot, Symfonyest en charge de convertirunerequête en réponse.
Front Controller ,[object Object]
Touterequêtepasse par le front controller,[object Object]
Routing (2) Dans app/config/routing.yml: ,[object Object],[object Object]
Bundles Un bundle est un répertoire avec une structure prédéfinie, qui contient des classes, des controlleurs, des templates et des ressources (images, css…), des règles de routing Remplace les plugins… mais en plus générique Configuration, routing par bundle possible
Action Unerequêteestreçue par le front controller de Symfony Le routing déterminequelle action estappelée L’actionestexécutée L’actionretourneuneréponse En un mot, Symfonyest en charge de convertirunerequête en réponse.
Action (2) Le C du MVC Ou (plus “verbose”): return $this->render(’EcmaBundle:Demo:hello.twig', array('name' => $name));
Twig Le V du MVC Template engine Inspiré de Jinja, template engine Python Rapide, car compilé en PHP Supportel’héritage Pas obligatoire avec Symfony 2
Twig (2) (asset, block title (défaut), block content, extends)
D’autresfonctionnalités…
Web Debug Toolbar Similaireà la debug toolbar de symfony 1 Activable par environnement (dev, prod…)
Profiler
Console
Doctrine 2 Le M du MVC (“enfin!”) ORM / ODM au dessus de PDO Data Mapper Design Pattern au lieu de Active Record Pas nécessaireque les Classes Modèleshéritentd’uneclasse parent Uneclasse qui s’occupe de faire les actions DB (Mapper - classegénéréeautomatiquement) Support de MongoDB (ODM) et CouchDB et…
Doctrine 2 (2) Annotation, XML, YAML pour définir les Entités (= les classes Modèles)
Tests PHPUnit +classeWebTestCase + le Crawler Component Permet de: simuler des requêtes HTTP,  Faire des “back”,   Soumettre des formulaires… http://symfony.com/doc/2.0/book/testing.html#the-test-client
Tests (2)
Cache GET (Etag, ...) Cache existe? valide? NON OUI
But: ne pas “frapper” le serveur Web àchaqueappel HTTP RFC 2616 Compliant Expiration Expires=Date Surtout pour ce qui eststatique (synchronisation) Cache-control: Maxage=20, s-maxage=20 (seconds) Validation Etag / if none match Last-modified / if modified since Inséré par le cache  (retourne un 304 not modified) Cache (2)
Cache (3) Front Controller: Sans cache Avec cache
DansSymfony2 La classeAppCachepeutavoir les headers par défaut Chaque action peut (re)définirles “headers de cache” On peut “wrapper” le framework par un système de cache PHP (pour tester) On peututiliser Varnish ouAkamaiou NGINX comme reverse Proxy (ou Cache Proxy) en avant du serveur Web Mais comment mettre en cache le “welcome User 1” dans le header par exemple?... Cache (4)
ESI: Edge Side Include Le reverse proxy fait un appel si nécessaire Avec Symfony2: un helper: Cache (5)
Framework moderne, flexible, puissant dynamise la communauté PHP Doctine 2 Symfony Component Dependency Injection Twig Monolog Silex (à la Sinatra ou nodejs…) http://groups.google.com/group/php-standards/web/psr-0-final-proposal Documentation: bonne, mais manque un jobeet Stabilité: en pre-releasedepuis quelques temps…(j’ai omis le Formframework pour une raison…) (les dernières nouvelles…) En résumé
Et le reste de confoo?
HTML5 Trèsprésent, mêmesi on utilise HTML5 pour plus… LibrairieJavascript, SVG, … Nombreusesconférences, de Mozilla, Microsoft… Quoi faire avec les anciens browsers: Polyfillshttps://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills Quelséléments HTML5 sont “production ready” Video http://craftymind.com/factory/html5video/CanvasVideo.html localStorage WebSocket (lien avec Nodejs plus loin ;-)) File API SVG, Canvas…	 Pas prêt EmbedDB Drag & Drop…
Server-Side Javascript Nodejs Javascript v8 de google Trèsrapide v8 en moyenne 8x plus rapidequePHP (de http://shootout.alioth.debian.org/) Non bloquant Similaireà:  $(selector).click(function() {…}); Mais pour tout: requête DB, routing… Pas encorecomplétement stable (0.4.6) ni “scalable” Gros buzz Express, npm, socket.io
Clean PHP Du créateur de PHPUnit Des principes de base que les développeursonttendanceàoublier KISS – Keep it simple stupid beware of optimizations optimiserseulementsinécessaire, après benchmark DRY – don’t repeat yourself principle of least astonishment Exemple: pas de getter qui change l’état! Separation of concerns Si on n’utilise pas de “ET” pour décrireuneclasse! Active record vs. Data Mapper the boy scout rule Laisser le code plus “propre” qu’avant de l’avoirmodifié Reviews (peer), Automated testing, refactoring, tell don’t ask…
Hidden Features of PHP Spl:SplIterator,SplQueue(RabbitMQ) StatGrab: CPU, RAM, Disk stats, … igbinary (surgithub) Plus rapide et plus efficaceque le serialize Session plus aléatoire: session.entropy_file: / dev/urandomsession.entropy_length = 32
Autres notes “Varnish in action” XHProf:  de facebook (opensource) Profiler phpsur le serveur de production NoSQL MongoDB, CouchDB, Cassandra Hiphop (facebook) Jenkins, xdebug (cachegrind, profiling), Alloy framework, Sinatra…
Merci! http://www.evernote.com/pub/saadtazi/confoo Questions?
retour sur confoo2011 et Symfony2

Más contenido relacionado

La actualidad más candente

Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Tony Galmiche
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation SymfonyJeremy Gachet
 
Programmation des Threads en java
Programmation des Threads en javaProgrammation des Threads en java
Programmation des Threads en javaEzéquiel Tsagué
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrenteFranck SIMON
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2Ahmed ABATAL
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyHugo Hamon
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les ProfessionnelsFabien Potencier
 
Lightning talk Mouf au PHPForum (Paris)
Lightning talk Mouf au PHPForum (Paris)Lightning talk Mouf au PHPForum (Paris)
Lightning talk Mouf au PHPForum (Paris)David Négrier
 
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)cornnery
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Jean-Marc Fontaine
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
Les Promises en Javascript
Les Promises en JavascriptLes Promises en Javascript
Les Promises en JavascriptBenoit Zohar
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 

La actualidad más candente (20)

Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014Présentation de symfony - Human talks aux docks le 8 juillet 2014
Présentation de symfony - Human talks aux docks le 8 juillet 2014
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Presentation Symfony
Presentation SymfonyPresentation Symfony
Presentation Symfony
 
Threads
ThreadsThreads
Threads
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 
Programmation des Threads en java
Programmation des Threads en javaProgrammation des Threads en java
Programmation des Threads en java
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrente
 
Presentation Symfony2
Presentation Symfony2Presentation Symfony2
Presentation Symfony2
 
Mieux Développer en PHP avec Symfony
Mieux Développer en PHP avec SymfonyMieux Développer en PHP avec Symfony
Mieux Développer en PHP avec Symfony
 
symfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnelssymfony : Un Framework Open-Source pour les Professionnels
symfony : Un Framework Open-Source pour les Professionnels
 
Lightning talk Mouf au PHPForum (Paris)
Lightning talk Mouf au PHPForum (Paris)Lightning talk Mouf au PHPForum (Paris)
Lightning talk Mouf au PHPForum (Paris)
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
Les Promises en Javascript
Les Promises en JavascriptLes Promises en Javascript
Les Promises en Javascript
 
Java 9 modules
Java 9    modulesJava 9    modules
Java 9 modules
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 

Similar a retour sur confoo2011 et Symfony2

Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Dev Drink II (Flex by Navx)
Dev Drink II (Flex by Navx)Dev Drink II (Flex by Navx)
Dev Drink II (Flex by Navx)ALTAIDE
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwtSaid Talibi
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
PhPotes: Drupal
PhPotes: DrupalPhPotes: Drupal
PhPotes: DrupalAnDaolVras
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019Eric Para
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Drupal & Symfony2
Drupal & Symfony2Drupal & Symfony2
Drupal & Symfony2th0masr
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
ImpressCMS Persistable Framework: Développement de modules en accéléré
ImpressCMS Persistable Framework: Développement de modules en accéléréImpressCMS Persistable Framework: Développement de modules en accéléré
ImpressCMS Persistable Framework: Développement de modules en accéléréINBOX International inc.
 
ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2Jérôme Esnault
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishD
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework HibernateInes Ouaz
 

Similar a retour sur confoo2011 et Symfony2 (20)

Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Dev Drink II (Flex by Navx)
Dev Drink II (Flex by Navx)Dev Drink II (Flex by Navx)
Dev Drink II (Flex by Navx)
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwt
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
PhPotes: Drupal
PhPotes: DrupalPhPotes: Drupal
PhPotes: Drupal
 
Symfony 4 2019
Symfony 4 2019Symfony 4 2019
Symfony 4 2019
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
Présentation eZ publish
Présentation eZ publishPrésentation eZ publish
Présentation eZ publish
 
Plugins Xcode
Plugins XcodePlugins Xcode
Plugins Xcode
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Drupal & Symfony2
Drupal & Symfony2Drupal & Symfony2
Drupal & Symfony2
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
ImpressCMS Persistable Framework: Développement de modules en accéléré
ImpressCMS Persistable Framework: Développement de modules en accéléréImpressCMS Persistable Framework: Développement de modules en accéléré
ImpressCMS Persistable Framework: Développement de modules en accéléré
 
ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2ADT SOFAVR jesnault 01-10-12 final presentation 2
ADT SOFAVR jesnault 01-10-12 final presentation 2
 
Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - Varnish
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework Hibernate
 

retour sur confoo2011 et Symfony2

  • 2. Au programme… Symfony2 Caching, ESI AutresinformationsConfoo Des questions? Quandvousvoulez!
  • 3. Introduction “Un autre framework MVC PHP (encore??)” Batiàpartir de composantsréutilisables (Yaml, Dependency Injection Container, Twig…) Full-stack framework (pas micro – voirsilex)
  • 4.
  • 5. Différence avec symfony 1 Entièrementréécrit Beaucoup d’apprentissage avec symfony 1 => meilleurepratiquedansSymfony 2 Pas de séparation entre plusieursapps Supprime les problèmes de routing entre applications maisen bundle sinécessaire Caching HTTP (on va en parlerjuste après…) Utilisation des namespace php 5.3 Mon “feeling”: courbed’apprentissage plus importante, moins de “magie”, beaucoup plus de Design Patterns appliqués (DIC, decoupling…)
  • 6. Introduction http://symfony.com Qui a travaillé avec symfony (1)? Un autre framework PHP?
  • 7. Une image vaut 1000 mots… Structure de Symfony (code)
  • 9. Structure Est-cequej’aiparlé de: Config Routing Vendors Swiftmailer Doctrine 2 Monolog (et non Zend)
  • 10. De la requêteà la réponse Unerequêteestreçue par le front controller de Symfony Le routing déterminequelle action estappelée L’actionestexécutée L’actionretourneuneréponse En un mot, Symfonyest en charge de convertirunerequête en réponse.
  • 11.
  • 12.
  • 13.
  • 14. Bundles Un bundle est un répertoire avec une structure prédéfinie, qui contient des classes, des controlleurs, des templates et des ressources (images, css…), des règles de routing Remplace les plugins… mais en plus générique Configuration, routing par bundle possible
  • 15. Action Unerequêteestreçue par le front controller de Symfony Le routing déterminequelle action estappelée L’actionestexécutée L’actionretourneuneréponse En un mot, Symfonyest en charge de convertirunerequête en réponse.
  • 16. Action (2) Le C du MVC Ou (plus “verbose”): return $this->render(’EcmaBundle:Demo:hello.twig', array('name' => $name));
  • 17. Twig Le V du MVC Template engine Inspiré de Jinja, template engine Python Rapide, car compilé en PHP Supportel’héritage Pas obligatoire avec Symfony 2
  • 18. Twig (2) (asset, block title (défaut), block content, extends)
  • 20. Web Debug Toolbar Similaireà la debug toolbar de symfony 1 Activable par environnement (dev, prod…)
  • 23. Doctrine 2 Le M du MVC (“enfin!”) ORM / ODM au dessus de PDO Data Mapper Design Pattern au lieu de Active Record Pas nécessaireque les Classes Modèleshéritentd’uneclasse parent Uneclasse qui s’occupe de faire les actions DB (Mapper - classegénéréeautomatiquement) Support de MongoDB (ODM) et CouchDB et…
  • 24. Doctrine 2 (2) Annotation, XML, YAML pour définir les Entités (= les classes Modèles)
  • 25. Tests PHPUnit +classeWebTestCase + le Crawler Component Permet de: simuler des requêtes HTTP, Faire des “back”, Soumettre des formulaires… http://symfony.com/doc/2.0/book/testing.html#the-test-client
  • 27. Cache GET (Etag, ...) Cache existe? valide? NON OUI
  • 28. But: ne pas “frapper” le serveur Web àchaqueappel HTTP RFC 2616 Compliant Expiration Expires=Date Surtout pour ce qui eststatique (synchronisation) Cache-control: Maxage=20, s-maxage=20 (seconds) Validation Etag / if none match Last-modified / if modified since Inséré par le cache (retourne un 304 not modified) Cache (2)
  • 29. Cache (3) Front Controller: Sans cache Avec cache
  • 30. DansSymfony2 La classeAppCachepeutavoir les headers par défaut Chaque action peut (re)définirles “headers de cache” On peut “wrapper” le framework par un système de cache PHP (pour tester) On peututiliser Varnish ouAkamaiou NGINX comme reverse Proxy (ou Cache Proxy) en avant du serveur Web Mais comment mettre en cache le “welcome User 1” dans le header par exemple?... Cache (4)
  • 31. ESI: Edge Side Include Le reverse proxy fait un appel si nécessaire Avec Symfony2: un helper: Cache (5)
  • 32. Framework moderne, flexible, puissant dynamise la communauté PHP Doctine 2 Symfony Component Dependency Injection Twig Monolog Silex (à la Sinatra ou nodejs…) http://groups.google.com/group/php-standards/web/psr-0-final-proposal Documentation: bonne, mais manque un jobeet Stabilité: en pre-releasedepuis quelques temps…(j’ai omis le Formframework pour une raison…) (les dernières nouvelles…) En résumé
  • 33. Et le reste de confoo?
  • 34. HTML5 Trèsprésent, mêmesi on utilise HTML5 pour plus… LibrairieJavascript, SVG, … Nombreusesconférences, de Mozilla, Microsoft… Quoi faire avec les anciens browsers: Polyfillshttps://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills Quelséléments HTML5 sont “production ready” Video http://craftymind.com/factory/html5video/CanvasVideo.html localStorage WebSocket (lien avec Nodejs plus loin ;-)) File API SVG, Canvas… Pas prêt EmbedDB Drag & Drop…
  • 35. Server-Side Javascript Nodejs Javascript v8 de google Trèsrapide v8 en moyenne 8x plus rapidequePHP (de http://shootout.alioth.debian.org/) Non bloquant Similaireà: $(selector).click(function() {…}); Mais pour tout: requête DB, routing… Pas encorecomplétement stable (0.4.6) ni “scalable” Gros buzz Express, npm, socket.io
  • 36. Clean PHP Du créateur de PHPUnit Des principes de base que les développeursonttendanceàoublier KISS – Keep it simple stupid beware of optimizations optimiserseulementsinécessaire, après benchmark DRY – don’t repeat yourself principle of least astonishment Exemple: pas de getter qui change l’état! Separation of concerns Si on n’utilise pas de “ET” pour décrireuneclasse! Active record vs. Data Mapper the boy scout rule Laisser le code plus “propre” qu’avant de l’avoirmodifié Reviews (peer), Automated testing, refactoring, tell don’t ask…
  • 37. Hidden Features of PHP Spl:SplIterator,SplQueue(RabbitMQ) StatGrab: CPU, RAM, Disk stats, … igbinary (surgithub) Plus rapide et plus efficaceque le serialize Session plus aléatoire: session.entropy_file: / dev/urandomsession.entropy_length = 32
  • 38. Autres notes “Varnish in action” XHProf: de facebook (opensource) Profiler phpsur le serveur de production NoSQL MongoDB, CouchDB, Cassandra Hiphop (facebook) Jenkins, xdebug (cachegrind, profiling), Alloy framework, Sinatra…

Notas del editor

  1. Pareilousimilaire: routing (plus flexible)Cascade des configuration
  2. Pareilousimilaire: routing (plus flexible)Cascade des configuration
  3. Avantage du helper: si le reverse proxy nesignale pas qu’ilsupporte les ESI, alors pas de tag ESI
  4. Avantage du helper: si le reverse proxy nesignale pas qu’ilsupporte les ESI, alors pas de tag ESI
  5. Avantage du helper: si le reverse proxy nesignale pas qu’ilsupporte les ESI, alors pas de tag ESI