Draft:Conferences and Presentations Dolibarr: Difference between revisions

Jump to navigation Jump to search
Line 2: Line 2:




= [[File:Orientation.png]] THEME DE CONFERENCE A: BONNES PRATIQUES PHP PAR L'EXEMPLE DE DOLIBARR ERP/CRM =
= [[File:Orientation.png]] THEME DE CONFERENCE A: REUSSIR UNE APPLI DE GESTION PHP PAR L'EXEMPLE DE DOLIBARR ERP/CRM =


== Titre/Durée ==
== Titre/Durée ==
BONNES PRATIQUES PHP PAR L'EXEMPLE DE DOLIBARR ERP/CRM
REUSSIR UNE APPLI DE GESTION PHP PAR L'EXEMPLE DE DOLIBARR ERP/CRM


Durée: 30mn minimum (sans séance de questions) ou 1h (dont séances de questions)
Durée: 30mn minimum (sans séance de questions) ou 1h (dont séances de questions)


== Objectif ==
== Objectif ==
Présenter les pratiques PHP, et règles de l'art du développement PHP, à mettre en oeuvre pour réaliser un gros projet comme un ERP/CRM, pour chacune des grandes problèmatiques d'un tel projet (Sécurité, performances, qualité du code, maintenance, ...) et les illustrer par un retour d'expérience de leur mise en oeuvre dans la réalisation de Dolibarr ERP/CRM.
Présenter les pratiques PHP, et règles de l'art du développement PHP, à mettre en oeuvre pour réaliser un gros projet comme un ERP/CRM, pour chacune des grandes problématiques d'un tel projet (Sécurité, performances, qualité du code, maintenance, ...) et les illustrer par un retour d'expérience de leur mise en œuvre dans la réalisation de Dolibarr ERP/CRM.


== Liste des sujets et bonnes pratiques PHP abordées ==
== Plan de la présentation ==
* Sécurité
=== Principe de la présentation ===
* Performances
* n thèmes seront abordés.
* Traduction
* Pour chaque thèmes, 3 paragraphes évoqués: pourquoi, comment par l'exemple, résultat par l'exemple
* Portabilité
* Documentation
* Design pattern DAO
* Design pattern MVC
* Les templates de présentation
* Tests unitaires/non régression


== Présentation du cas d'exemple ==
=== Thèmes abordés ==
Présentation de Dolibarr ERP/CRM, qui servira, pour chaque sujet abordé, d'exemple et de retour d'expérience.
Les thèmes abordés seront les suivants:
* Thème 1: Sécurité
* Thème 2: Performances
* Thème 3: Traduction
* Thème 4: Portabilité
* Thème 5: Documentation technique
* Thème 6: Design pattern DAO
* Thème 7: Design pattern MVC
* Thème 8: Les templates de présentation
* Thème 9: Tests unitaires/non régression
 
== Choix de l'exemple ==
Présentation de Dolibarr ERP/CRM, le produit et surtout le projet qui servira aux exemples.
=== Présentation fonctionnelle ===
=== Présentation fonctionnelle ===
Enumération des fonctionnalités
Énumération des fonctionnalités
=== Présentation technique ===
=== Présentation technique ===
Enumération des caractéristiques techniques
Énumération des caractéristiques techniques
=== Présentation historique ===
=== Présentation historique ===
Background du développement de l'application.
Background du développement de l'application.


== Bonnes pratiques PHP Sécurité ==
 
* Pourqoi
== Thème 1: Bonnes pratiques PHP Sécurité ==
* Pourquoi
-> Définition des dangers (Rappel du top 10 des dangers recensés par l'OWASP)
-> Définition des dangers (Rappel du top 10 des dangers recensés par l'OWASP)
* Comment se protéger
* Comment
-> Danger OWAP 1  -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
-> Danger OWASP 1  -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
 
-> Danger OWASP 2  -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
-> Danger OWAP 2 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
-> Danger OWASP n -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
-> Danger OWASP 10 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
* Résultat


-> Danger OWAP n  -> Solution PHP -> Exemple dans Dolibarr ERP/CRM
-> Danger OWAP 10 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM


== Bonnes pratiques PHP Performances ==
== Bonnes pratiques PHP Performances ==
Line 49: Line 55:
-> Identifier les portions de code "ratés"
-> Identifier les portions de code "ratés"
* Comment
* Comment
-> Présentation d'une lecture avec WinCacheGrind
-> Présentation d'une lecture avec XCacheGrind (WinCacheGrind ou KCacheGrind)
 
* Résultat
--> Bilan gain des modifications faites sur Dolibarr.
-> Bilan gain des modifications faites sur Dolibarr.


=== Firebug / Google Page Speed ===
=== Firebug / Google Page Speed ===
Line 57: Line 63:
-> Optimiser la génération et travail du browser
-> Optimiser la génération et travail du browser
* Comment
* Comment
-> Demo du plugin Firebug / Google PageSpeed.
-> Demo du plugin Firebug / Google PageSpeed.
 
* Résultat
--> Bilan gain des modifications faites sur Dolibarr.
-> Bilan gain des modifications faites sur Dolibarr.


=== Autres (compression gz, minification js) ===
=== Autres (compression gz, minification js) ===
* Pourquoi
* Pourquoi
->  
-> Réduire le flux réseau.
* Comment
* Comment
->
-> Portion de code et config pour gérer cela.
 
* Résultat
--> Bilan gain des modifications faites sur Dolibarr.
-> Bilan gain des modifications faites sur Dolibarr.


=== Utilisation d'un serveur de cache ===
=== Utilisation d'un serveur de cache ===
Line 75: Line 80:
* Comment
* Comment
-> shared memory  ou  serveur memcached ?
-> shared memory  ou  serveur memcached ?
 
* Résultat
--> Bilan gain des modifications faites sur Dolibarr.
-> Bilan gain des modifications faites sur Dolibarr.


== Bonnes pratiques PHP Traduction ==
== Bonnes pratiques PHP Traduction ==
* Pourquoi
* Pourquoi
-> Avoir un projet internationnalisé.
* Comment
* Comment
-> Favoriser les contributions externes spontannées par un socle technique adapté.
* Résultat
-> Résultat obtenus sur Dolibarr.


== Bonnes pratiques PHP Portabilité ==
== Bonnes pratiques PHP Portabilité ==
Line 86: Line 95:
=== Base de données (iso/utf, mysql/postgresl/mssql) ===
=== Base de données (iso/utf, mysql/postgresl/mssql) ===
* Pourquoi
* Pourquoi
-> Un projet indépendant du serveur de base de données
* Comment
* Comment
-> Comparaison de la couche d'abstration PDO et de celle de Dolibarr
* Résultat
-> Résultat obtenus sur Dolibarr sur portabilité sans double maintenance.


=== Encodage du système de fichiers (ansi windows/utf linux) ===
=== Encodage du système de fichiers (ansi windows/utf linux) ===
* Pourquoi
* Pourquoi
-> Un produit multiplateforme
-> Permettre des développements sous Windows et une mise en production sous Linux
* Comment
* Comment
-> Présentation portion de code d'abstraction au système de fichier
* Résultat


== Bonnes pratiques PHP Documentation ==
== Bonnes pratiques PHP Documentation ==
Line 97: Line 114:
* Comment
* Comment
-> Tags et outils types Eclipse + Doxygen
-> Tags et outils types Eclipse + Doxygen
* Résultat
-> Présentation de la documentation


== Bonnes pratiques PHP Design pattern DAO ==
== Bonnes pratiques PHP Design pattern DAO ==
Line 103: Line 122:
* Comment
* Comment
-> Présentation du générateur de DAO fait maison Dolibarr
-> Présentation du générateur de DAO fait maison Dolibarr
* Résultat
-> Adhésion rapide au développement.


== Bonnes pratiques PHP Design pattern MVC ==
== Bonnes pratiques PHP Design pattern (MVC by part versus MVC by file) ==
* Pourquoi
* Pourquoi
-> Faciliter la lecture du code, maintenance
-> Faciliter la lecture du code, maintenance
* Comment
* Comment
-> Frameworks ou pratiques de "MVC by part" (controller puis présentation séparé mais se suivent dans le même fichier, choix de Dolibarr)
-> Comparaison des Frameworks "MVC by file" ou pratique Dolibarr "MVC by part" (controller et présentation séparé mais se suivant dans le même fichier)
* Résultat
-> Adhésion rapide au développement.


== Bonnes pratiques PHP Templates de présentation ==
== Bonnes pratiques PHP Templates de présentation ==
Line 116: Line 139:
-> Utilisation du moteur de templates externe ou PHP ?
-> Utilisation du moteur de templates externe ou PHP ?
Tableau comparatif
Tableau comparatif
{| class="wikitable"
{| class="wikitable"
|Avantage/Inconvénient
|Avantage/Inconvénient
Line 142: Line 164:
|Base 100
|Base 100
|}
|}
* Résultat
-> Retour expérience sur Dolibarr:
Résultat en terme de performance sur Dolibarr
Résultat en terme de lisibilité
Abandon de templates Smarty au profit de templates ... PHP


== Autres sujets et bonnes pratiques PHP non abordés ==
== Autres sujets et bonnes pratiques PHP non abordés ==
Liste des autres sujets non abordés car non mise en oeuvre dans l'exemple  
Liste des autres sujets non abordés car non mise en œuvre dans l'exemple  
* Génération de code (exemple ....)
* Génération de code (exemple ....)
* Utilisation de framework PHP clés en main (...)
* Utilisation de Framework PHP clés en main (...)


== Conclusion ==
== Conclusion ==
Petite conclusion...
Petite conclusion...


-> Ouverture sur d'autres bonnes pratiques non abordés car non mise en oeuvre dans Dolibarr ERP/CRM  
-> Ouverture sur d'autres bonnes pratiques non abordés car non mise en œuvre dans Dolibarr ERP/CRM  
* Génération de code MDA (exemple ....)
* Génération de code MDA (exemple ....)
* Utilisation de framework PHP clés en main (symphony, ...)
* Utilisation de Framework PHP clés en main (Symphony, ...)


= [[File:Orientation.png]] THEME DE CONFERENCE B: DEVELOPPEMENT PHP SANS FRAMEWORK AUTRE QUE PHP LUI MEME =
= [[File:Orientation.png]] THEME DE CONFERENCE B: DEVELOPPEMENT PHP SANS FRAMEWORK AUTRE QUE PHP LUI MEME =

Navigation menu