Web, Technologies, IA, Vidéo...

nov. 16, 2011

Mon programme du PHPTour à Lille

Cette année, pas de ForumPHP à Paris faute de travaux à la Villette. Cependant, l'AFUP a mis en place une nouvelle formule : le PHPTour, un événement itinérant qui se déroulera dans une ville différente à chaque fois. Cette année, c'est à Lille et j'y serias. A ce sujet, je vous fais part de mon programme des sessions que je suivrais.

Le jeudi, je commencerais par la présentation de PHP 5.4 par David Sora Parra en session plénière. Ensuite, pour la première matinée de sessions:

  • Traitement XML de pointe avec PHP et XQuery
  • Tenue en charge d'un site média
  • Optimiser la performance business de votre site avec l'A/B testing.
Après un bon repas, je suivrais la conférence de Zeev Suraski qui présentera le nouveau produit phpcloud.com. J'aimerais en savoir plus sur ce sujet. L'après midi se poursuivra avec:
- La conférence sur les tests Mock, Stubs et Tests m'intéresse particulièrement car mon projet actuel me pose quelques soucis concernant la mise en place des tests - la présentation d'Atoum, le framework de test unitaire, mis en place par Frédéric Hardy - je terminerais la première journée par la présentation : Pourquoi on a abandonné Magento au profit d'un dévéloppement spécifique. Très intéressé de connaître les différents éléments qui les ont poussés à ce choix
Pour la deuxième journée :
- êtes-vous prêt pour le succès ? - Comment développer et déployer une application PHP maintenable ? J'espère pouvoir glâner des bonnes pratiques, cela peut notamment aider dans le cadre de déploiement d'applicatif PHP (non web) - Profiling PHP Applications par Derick Rethans. Je rappelle que Derick est le créateur de Xdebug entre autres... - Sécurité des applications PHP, j'attends de voir sous quel angle sera réalisé cette session
Pour la dernière demi-journée, encore une fois, j'aimerais me divisé pour aller à toutes les sessions. Mais il faut faire un choix :
- Caching and Tuning fun for high scalability - dev et admin sys : une cohabitation simplifiée... pour éviter de se taper dessus entre les deux équipes ;)
Ca fait un bon programme et je préparerais un compte-rendu des sessions que j'aurais suivi dans ce blog.

juil. 01, 2011

La migration IPv6 en retard sur l'applicatif ?

Depuis quelques années et surtout depuis quelques mois/semaines, on parle de la migration IPV6 qui est à effectué d'urgence. Or, il semblerait qu'un aspect important de cette migration a été, très souvent, omise : les applications.

Petit rappel, l'IPv4 est défini par 4 décimaux séparé par des points (ex 192.168.0.2) . La valeur représente un octet (256 valeurs possibles). Afin de répondre à la problématique du nombre croissant de device, mais également pour faire évoluer et répondre à d'autres problématiques, l'IPv6 a été défini. A noter, que cette définition a démarré dans les années 90. Une adresse IPv6 sera représenté par 8 groupes de 2 octets séparés par des deux points (ex : 2001:0db8:0000:85a3:0000:0000:ac1f:800). Côté infrastructure, matériel et OS, cette évolution est intégrée depuis un petit moment ou l'intégration se termine. Ce n'est pas le cas de la plupart des applicatifs.

En sachant la différence sur les tailles des adresses, on se rend compte que les applications sont très souvent développées sur une base d'adresse v4, sauf pour les toutes dernières (et encore !). Prenons un exemple simple, j'ai une application qui tourne sur un serveur PHP avec une base de données en MySQL. Je souhaite enregistrer les IPs des personnes qui se connectent. Le champ utilisé est à 99% un VARCHAR(15) : 4 décimaux de 3 chiffres plus les 3 points. Mon évolution va consister à devoir soit ajouter un champ dédié pour l'IPv6 (en plus de la V4), soit de modifier la taille du champ en VARCHAR(39). Je ne parle pas non plus du code qui sera également à modifier.

En France, d'ici 2013 au plus tard, les FAI ont annoncé la bascule toutes les boxes (et donc tous les abonnés en IPv6). Pareil pour les téléphones mobiles. En résumé, plus le temps passe jusque cette date, plus il deviendra critique et sensible de faire évoluer les applications sans heurt. Je pense également à tous les systèmes de géolocalisation (ex la base Maxmind) qui se base sur les IPv4 et qui vont devoir également gérer la bascule IPv6.

En résumé, si vous n'avez pas encore commencé à étudier cette migration, il est temps de le faire ;-)

nov. 15, 2010

Retour sur les conférences du ForumPHP (jour 2)

Déboguer son code - Xdebug

Xdebug est un outil développé et maintenu par Derick Rethans (http://derickrethans.nl). Il possède deux fonctionnalités : debug et profiling.

Derick nous présente une grande partie des éléments de configuration afin de réaliser les traces de debug les plus explicites possibles : ajout direct vers les fichiers présentant des problèmes, gestion de l'affichage des var_dump (profondeur d'affichage), etc...

Ensuite il nous présente la possibilité de faire du profiling et d'interpréter les données récupérées. Pour cela, un petit tour dans la configuration et ensuite des applications tierces sont mises à contribution : KCacheGrind ou WebGrind. Des plugins sont (seront) disponibles pour les différents IDE afin de travailler "en live" avec le serveur.

Un site web performant, tout est dans le réseau et le navigateur

Eric Daspet nous présente quelques méthodes afin d'augmenter les performances. Avant cela, des chiffres nous font prendre connaissances des effets bénéfiques de la performance d'un site web. Qui dit performance, dit augmentation potentielle du revenu et du business liée au site en question.

Nous rentrons ensuite dans des aspects plus techniques :

  • sur un appel de page : 5% du traitement est réalisé en back-end et 95% en front-end
  • 4 à 6 requêtes en parallèle par domaine sont possibles avec les derniers navigateurs, il est donc important de gérer au mieux /images, CSS, JS
  • mise en place de la compression Gzip, utilisation des Etags et autres entête de cache HTTP
  • utilisation de sprites pour les /images
  • regroupements des multiples fichiers CSS en un 1 seul (même chose pour les JS)
  • appel des JS externes avant le \</body> afin d'augmenter l'affichage de la page
  • utilisation du KeepAlive au niveau de la configuration Apache afin de réduire les temps de connexions TCP (à utiliser avec attention car elle augmente la charge CPU des serveurs).
  • amélioration de la gestion des DNS

Tout ceci afin de réduire les temps de latence et ainsi augmenter la performance du site.

Attaque sur les webservices

L'intervenant Renaud Bidou présente dans un premier temps la structure fonctionnelle des webservices puis les différentes technologies différentes. Je pensais connaître assez bien cet aspect, cela m'a permis d'en apprendre plus.

Des attaques par Xpath, DOS, XSLT, avec le pipe sont présentés et sont, pour moi, assez flippantes de par leurs simplicités de mise en place.

On retiendra : "plus le code est complexe à relire, plus il sera complexe à maintenir et moins la sécurité sera importante !"

Une conférence intéressante car elle aborde un sujet de plus en plus sensible et présent pour les sociétés; Je regrette tout de même que le terme webservice ait été associé à SOAP lors de la conf et que le REST n'ait été que survolé.

Un excellent ForumPHP qui m'a permis de revoir certaines personnes, d'en découvrir de nouvelles. J'attends la fin d'année prochaine pour l'édition 2011, qui ne fêtera elle aucun anniversaire...

nov. 10, 2010

Retour sur les conférences du ForumPHP (jour 1)

Développer une application mobile avec Flex et PHP

C'est Michael Chaize (@mchaize) qui est aux commandes. Il présente dans un premier temps l'historique de Flash puis Flex. On se rappellera par exemple que Flash adopte le riche media à partir de 2006 mais également qu'à l'heure actuelle : 75% des lecteurs de vidéos tournent avec Flash.

Flash 10.1 est ensuite abordé, une véritable révolution. En effet, cette dernière mouture prend en charge tous les types d'équipements. Auparavant, Flash était uniquement disponible sur Mac, PC et Linux. Dorénavant, il est également disponible sur mobile, tablette et GoogleTV.

Pour les applications disponibles sur iOS (iPad et iPhone), c'est l'iOS packager permet de compiler l'application.

Michael aborde ensuite AMF et propose l'exemple suivant : 5000 lignes. Ces 5000 lignes disponibles au format XML pèseront 1,1Mo. Avec AMF, le poids est réduit à 21ko. C'est un atout non négligeable dans le cas d'application mobile. Bien sûr, nous sommes au ForumPHP, il nous présente donc le SDK AMF pour PHP (très simple à mettre en place).

En conclusion, on retiendra que Flex permet de gérer l'ensemble de l'animation Front-End et PHP s'occupera de toute la logique métier d'une application.

Terrible audit de sécurité

Damien Seguy nous parle d'un "Terrible Audit de Sécurité". Terrible dans le sens où très souvent, l'audit fait peur aux entreprises, notamment un audit de sécurité. L'objectif est de vulgariser la manière dont se réalise l'audit, afin de permettre de le renseigner soi-même son protocole d'audit de sécurité.

Il nous explique les différentes phrases d'un audit et commence par la mise en place d'un référentiel de sécurité qui exposera les différents axes et en les détaillant. Pour cela, il est possible de s'appuyer sur différentes références : OSWASP, ISO, etc.. En résumé, il faut rédiger un référentiel, le convertir en code à éviter ou recommander et le vérifier soi-même.

Comme à chaque fois, la conférence de Damien est très pédagogique, un réel plaisir. Je me dit que l'audit de sécurité pourrait être le sujet d'un Barcamp...

Optimisation des performances LAMP

Cyril Pierre de Geyer et Guillaume Plessis nous présentent cette conférence orientée sur les aspects systèmes et permettant d'améliorer la disponibilité d'une infrastructure LAMP. On passe d'abord en revue les outils permettant de réaliser du monitoring de plateforme : de Nagios à Zend Platform en passant par Cacti ou Pimba. Les conférenciers nous présentent également comment réaliser des tirs de charge. Pour cela, les outils ApacheBench ou encore Jmeter nous sont présentés.

En résumé, cela nous donne un aperçu global des outils et informations qui permettent d'optimiser sa plateforme.

Slides

Voir la présentation : développer une application mobile avec Flex et PHP

Voir la présentation : optimisation des plateformes LAMP

mai 06, 2010

Migration de technologie J2EE vers PHP

Je reprends ici les slides que j'ai utilisé lors de ma conférence au dernier Forum PHP organisé par l'AFUP à la Cité des Sciences de Paris :

*Pour obtenir plus de flexibilité afin de répondre aux demandes des équipes webmarketing, la mise en place d'applications alliant PHP et MySQL en remplacement de J2EE a permis de répondre à ces besoins. Cela a également permis une baisse des coûts (infrastructure d'exploitation, équipes de développements, ...)*
* *

sept. 29, 2008

De l'utilité des frameworks...

Avant tout, je pense qu'il faut séparer les frameworks PHP et ceux en Javascript.

Les Frameworks Javascript sont une véritable révolution dans le "petit" monde du web. Il en existe plusieurs mais deux sont réellement utilisés à grande ampleur :

  • prototype (actuellement en déclin)
  • jquery (en pleine croissance avec une foison de plug-ins)

C'est en grande partie grâce à ces frameworks que les applications web2.0 sont apparus (mais pas uniquement, on remerciera également Adobe).

J'en viens maintenant aux frameworks PHP. Actuellement, je dirais qu'il en existe 2 :

  • le Zend Framework, actuellement en version 1.6 qui est plus une bibliothèque de librairies. Elles sont utiles mais ne composent pas, pour moi, un framework.
  • Symfony, actuellement dans sa version 1.1. Ce dernier étant pour moi un framework à part entière.

Ces derniers sont pour moins un véritable problème. En effet, ils répondent, il est vrai, à tous les besoins possibles et imaginables. Cependant, ils chargent beaucoup d'élément qui demande du support et dont on ne sait pas toujours comment le déroulement s'effectue.

Je préfère donc réutiliser les briques que j'ai développé moi-même (par exemple pour la gestion des templates ou encore pour la connexion à la base de donnée). Je garde ainsi le contrôle du code, tout en répondant trés précisément au besoin des applications que j'ai à développer.

Je concluerais en disant que pour utiliser un Framework quel qu'il soit, il faut véritablement se poser la question de ce que l'on veut faire et comment on veut le réaliser. On utilisera ensuite l'outils le plus adapté.

juin 04, 2008

Testons nos variables (les expressions régulières)...

J'ai abordé le sujet dans mon précédent billet. Les expressions régulières ou rationnelles sont puissantes et rapides, une fois qu'elles sont maitrisés. En PHP, il existe deux types d'expressions régulières :

  • les POSIX
  • les PCRE (Perl Compatible Regular Expressions)

C'est le second type qui est le plus performant mais plutôt que de faire un long laïus dessus, je propose de lire ce tutoriel qui les explique très clairement : Les expressions régulières PCRE (Perl Compatible Regular Expressions).

Les expressions régulières me permettent de tester les variables qui proviennent de formulaires en POST ou en GET, tout particulièrement lorsque ces dernières vont "attaquer" ensuite une base de donnée. Cela évite tout problème d'injection SQL. J'ai, par ailleurs, mis en place une librairie avec différents types de données (nom, prénom, titre, email, ville, etc...) que je réutilise pour valider les informations récoltées.

Je n'ai pas, pour le moment, trouvé de meilleure solution pour tester des variables que les expressions régulières. Pourquoi m'en priverais-je si elles sont en plus performantes ? ;-)

mai 20, 2008

Les bienfaits des tests de variable en PHP

J'ai fait ce billet pour deux raisons principales :

  1. avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables
  2. montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.

Avant tout, la première chose à faire est d'effectuer ses développements avec le niveau le plus haut d'erreur E_ALL. Très souvent cela indique énormément d'erreur mais la contre partie est que l'on aura par la suite moins de problème d'erreur et de compréhension au niveau du code.

Premier exemple que je rencontre très régulièrement : la non initialisation d'une clé d'un tableau. Ce type d'erreur se voit par un Notice :

Notice: Undefined index 'champ' in 'fichier.php' on line 10

Ce type d'erreur est très simple à corriger. J'utilise pour ma part la fonction isset(). Cela donne le bout de code suivant :

if (isset($tableau['champ'])) {
traitement normal
} else {
on assigne une valeur par défaut

}

On peut appliquer le même type de traitement pour les données des variables \$_GET, \$_POST, ...

Le second exemple concerne plus la sécurisation des données venant provenant des formulaires et / ou URL pour valider en utilisant les expressions régulières. Mais ce second exemple fera l'objet d'un prochain billet.

avril 21, 2008

Industrialisation des développements, ça marche...

J'ai participé à une conférence mardi dernier organisé par Bull, dans le cadre des Mornings du Libre. Deux conférenciers au programme :

  • Alban Henry, responsable avant-vente, pour Zend, nous présentant les différentes solutions proposés par Zend pour industrialiser les développements en PHP
  • Georges Hiraclides, de chez Bull, nous présenta pour sa part : NovaForge, leur usine de développement logiciel.

Pour faire un résumé de NovaForge, j'utiliserais le terme d'agrégateur d'outils de gestion de projet dans le cadre d'une industrialisation globale des processus. En effet, ce dernier regroupe :

  • des outils de Knowledge Management (wiki, forums, etc...)
  • des outils de reporting projet ou de pilotage du macro au micro pour permettre à tous les intervenants d'avoir la meilleure vision possible
  • des outils de développements
  • des outils d'intégration et de test
  • des outils de référentiel : bibliothèque de librairies, bonnes pratiques etc...

Pour le moment accès sur les développements en Java, la version PHP sera prochainement disponible.

C'est la raison pour laquelle Zend était également présent à cette conférence. Alban Henry nous a présenté les différents logiciels et contribution :

  • Zend Engine (le moteur PHP),
  • Zend Framework (l'un des Frameworks PHP les plus populaires)
  • Zend Core : un package stable contenant l'ensemble des librairies et serveurs pour l'utilisation de PHP
  • Zend Studio : l'IDE
  • Zend Platform: l'applicatif côté serveur pour le debug, le reporting...
  • Zend Guard : pour protéger les sources.

Bref tout un panel d'outils permettant d'industrialiser les développements.

Ce que je retiendrais de cette conférence, c'est surtout que toutes les sociétés qui sont passés dans un mode "Industrialisation des développements" a vu ses performances accrus et ses coûts réduits avec un gain de qualité... Je prêchais déjà la bonne parole, je vais continuer à le faire...

NB : je suis reparti de cette conférence avec quelques goodies (stylo, tapis de souris...) mais également avec un Livre Blanc intitulé : Les forces Logicielles, vers la révolution industrielle des développements applicatifs. Je vous en parlerais dans un prochain billet.

mars 26, 2008

Sécurité et PHP

Et voilà, je viens de terminer ce livre, dont je parlais dans ce billet :

Sécurité PHP5 et MySQL

Accès sur PHP5, il peut également être appliqué à PHP4 (encore présent sur certaines plateformes). Côté base de donnée, c'est bien entendu MySQL qui est ciblé, cependant les différentes méthodes appliquées pourraient être transposés avec d'autres bases de données (Oracle, PostgreSQL...).

Mon impression générale est excellente, je ne suis pas déçu de l'investissement. Certains des points abordés m'ont permis :

  • soit de confirmer les méthodes que j'avais mis en place lors de mes précédents développements
  • soit de me permettre ultérieurement d'améliorer la sécurité de mon code.

Le livre m'a également permettre de mettre à jour des méthodes de "piratages" de site que je ne connaissais ou pensais presque impossible à mettre en place. Bref, un livre a posséder absolument !

Prochain livre "technique", le pavé PHP5 Avancé...

Next → Page 1 of 2