planetePHP.fr
jy[B]log jy[B]log 2016-05-20T16:57:00+02:00

Défi 2016 redéfinit

En début d'année, je m'étais lancé un défi : un commit par jour sur des projets open-sources.

Ça fonctionné... pendant 86 jours. Au bout de 86 jours j'ai arrêté de vouloir commiter tous les jours, pour plusieurs raisons.

  1. Même si je suis un indécrottable geek dans l'esprit, et que je ne peux pas m’empêcher de coder même pendant les vacances, il y a des jours où je n'ai pas envie, où je suis trop fatigué, ou que l'emploi du temps (en particulier celui relatif à la vie familiale) ne me permet pas d'avoir du temps à consacrer au code. Il y a des jours comme ça où ce n'est pas possible. Cela serait possible si je vivais seul, sans ami, dans une cave coupée du monde. Mais ce n'est pas le cas. C'est le souci que j'avais crains en me lançant ce défi, et j'ai eu raison.
  2. Il y a des commits qui demandent plusieurs heures de travail. Je parle des vrais commits, ceux qui apportent un plus, des fonctionnalités complètes. Pas des commits "WIP", "WIP", "WIP", "DONE!!". Et donc il était très compliqué certains jours de produire un commit, faute d'avoir plusieurs heures devant soi à consacrer aux projets open-source.
  3. Il m'arrivait des jours où j'avais du temps, mais que j'oubliais (carrément) d'aller contribuer sur un de mes projets, et du coup je m'y mettais dans l'urgence à 23h. Pas vraiment l'heure idéale pour avoir les idées claires et pour produire du bon code.

Vers la fin de cette série de 86 jours, je commençais donc à avoir de plus en plus de mal à avoir ce commit quotidien, voir même à avoir d'envie de le faire. Je commençais alors à ruser : si je savais que le lendemain je n'allais pas avoir de temps, mais que j'en avais le jour même, je préparai un patch et le lendemain je n'avais plus qu'à lancer la commande commit. Et j'avais ainsi mon petit carré vert sur github pour la journée, même si je n'avais finalement contribué que 30 secondes. Il m'arrivait aussi de bosser sur un long truc sur un projet précis, sur plusieurs jours, et je prenais alors 5-15 minutes chaque jour pour aller committer un truc facile sur un autre projet, afin d'avoir mon petit carré vert du jour. Ça faisait avancer (un tout petit peu) cet autre projet, mais ça m'obliger à me concentrer au final sur 2,3 4 projets à la fois.

Vous trouvez peut-être cela ridicule ? Je vous rassure, moi aussi. Limite honte d'ailleurs de vous avouer tout ça. C'est pourquoi j'ai arrêté cette idée d'avoir un carré vert tous les jours. D'autant plus qu'au final, ça me mettais autant de pression, sinon plus, que lorsque je ne faisais rien. Durant ces 86 jours, j'ai fini par oublier l'objectif premier (celui de faire avancer les projets) et me suis finalement focaliser sur la manière de dérouler le tapis vert github.

Bref, au bout de 86 jours, c'est à dire le 26 mars, j'en ai eu marre.

la suite...

Pascal Martin (n+1).zéro Pascal Martin (n+1).zéro 2016-05-18T00:00:00+02:00

PHPTour 2016 Clermont-Ferrand : j'y serai, pour un atelier !

Le PHPTour aura lieu cette année les 23 et 24 mai — oui, dans moins d’une semaine — à Clermont-Ferrand !

Logo PHPTour 2016


Le programme a été publié il y a plusieurs semaines de cela, avec de nombreux nouveaux conférenciers, venant pour plusieurs de la région !

Les inscriptions sont encore ouvertes pour quelques jours : il est encore temps de prendre votre place1 ;-)


Je n’ai pas encore dressé mon programme précis pour ces deux jours, mais voici quelques conférences qui ont pour l’instant retenu mon attention — et je me suis abstenu de copier-coller la moitié du programme :

  • « PHP microservices beyond the trench », Vincent Vermersch & Etienne Roudeix
  • « Lancez-vous dans l’open source ! », Matthieu Napoli
  • « PHP Meminfo ou la chasse aux memory leaks », Benoit Jacquemont
  • « En route vers le multi-tâche ! », Julien Bianchi
  • « How I learned to stop worrying and love Regular Expressions », Jordi Boggiano
  • « Advanced package development », Hannes Van De Vreken

Cet événement sera également, j’espère, l’occasion de rencontrer un bon nombre d’entre vous !


Cette année, j’animerai un atelier de trois heures, intitulé « Créer un site pour tester du code sous plusieurs versions de PHP avec Docker ».
J’en reproduis la description ci-dessous :

Vous écrivez une portion de code PHP et aimeriez savoir comment elle se comporte sous plusieurs versions ? Sous PHP 7.0, 5.6, 5.5, HHVM,… ?

Pendant cet atelier, je nous propose de mettre en place un site Web permettant de saisir du code PHP.
Celui-ci sera exécuté dans un conteneur Docker, en isolation du système. Puis dans plusieurs conteneurs, chacun avec une version de PHP différente. Les résultats de ces exécutions seront retournés à l’utilisateur, affichés sur le site.
Si vous connaissez 3v4l.org, c’est un peu, dans l’idée, ce que nous allons commencer à redévelopper ;-)

Cet atelier vous permettra de jouer avec Docker et PHP : utiliser des images existantes, créer la vôtre. Vous repartirez avec des idées pour continuer à faire évoluer l’application développée pendant ces quelques heures.

la suite...

Perrick Penet (onpk.net) Perrick Penet (onpk.net) 2016-05-13T10:53:59+02:00

La révolution numérique est derrière nous

"We are being increasingly driven by the growth of the large companies," Levy said. "What you did not see on the list is layoffs from Apple or Google or Facebook or LinkedIn ... which are all expanding. This is the era of the large companies."

C'est à travers cette extrait d'un article du Mercury News intitulé Tech layoffs more than double in Bay Area que je vois pointer une tendance forte longuement décrite par Carlota Perez : la révolution numérique est désormais derrière nous.

We're right in the middle, between installation and deployment periods

C'est le même sentiment qui m'interpelle quand je vois le peu de techs ou de devs dans l'incubateur d'Euratechnologies : il y a beaucoup plus de profils "communication / marketing / commercial". Quand bien même celui-ci est beaucoup plus grand qu'avant. On peut même lever des fonds significativement sans avoir un véritable CTO dans l'équipe des fondateurs : What A Nice Place l'a prouvé.

Et que dire du projet de Peggy dans un registre largement plus "bootstrap" : sans site officiel, elle devrait se lancer avec une page Facebook, une adresse email, un PDF envoyé mensuellement et une plateforme tierce pour le paiement. Même pas besoin d'un dev PHP !

Kévin Dunglas (Lapin Blanc) Kévin Dunglas (Lapin Blanc) 2016-05-10T17:53:36+02:00

DunglasActionBundle 0.3.0 released!

DunglasActionBundle is an alternative controller system for the Symfony framework relying on autowiring and inspirited by the ADR pattern. Thanks to this bundle, controllers, commands and event listeners are automatically detected and registered as services. All their dependencies are also automatically registered. See the GitHub repository for an extensive documentation.

A lot of work have been done in  during the last months to improve the reliability and the usability of the bundle. Today I’m proud to announce a new release of this bundle (0.3.0). It is available on GitHub and includes the following changes:

  • Actions and controllers (src/*Bundle/Action and src/*Bundle/Controller directories), commands ( src/*Bundle/Command) and event listeners ( src/*Bundle/EventListener) are auto-registered by default
  • The name of auto-registered services are now the Fully Qualified Name of the registred class
  • Directories containing classes to auto-register as services are now configurable
  • Directories of third-party bundles (vendor/) are not tracked by default anymore
  • It’s not necessary anymore to clear the cache manually when a new class is added or removed from a tracked directory
  • If the class of an automatically registred service implements the ContainerAwareInterface, the container is automatically injected into it
  • It’s now possible to automatically add custom tags to auto-registered services
  • The custom routing annotation loader has been removed thanks to a bug fix in Symfony core (this feature still works out of the box)
  • The “autodiscover” feature has been removed, paths must be configured explicitly (regex supported)
  • The bundle can now be configured using the XML format
  • PHP 5.5 support has been added
  • Lot of a bug fixes

Thanks to @Ener-Getick, @stof and @weaverryan for their contributions and good design advices.

If you like this bundle, please give it a star on GitHub!

 

Perrick Penet (onpk.net) Perrick Penet (onpk.net) 2016-05-10T12:15:06+02:00

Calculer le 95e centile avec MySQL

Avant de mettre PHP 7 en production sur nos serveurs pour Opentime, nous avons décidé d'ajouter quelques graphes de supervision dans notre Munin. Les données sont déjà stockées dans une table SQL mais l'affichage était pour le moins sommaire. Une question est vite remontée à la surface : comment calculer le 95e centile avec MySQL ?

SELECT
 CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
  GROUP_CONCAT(field_name ORDER BY field_name SEPARATOR ','),
   ',', 95/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS `95th Per`
 FROM table_name;

Merci à Nicolas Poggi et surtout à Roland Bouman pour les pointeurs les plus convaincants.

AFUP AFUP 2016-04-21T00:00:00+02:00

Pour des devs au top et superboostés, envoyez-les au PHP Tour Clermont-Ferrand 2016

Certes, le programme est alléchant : un focus sur la performance en PHP, des speakers de renom tels que Derick Rethans, Fabien Potencier, Julien Pauli, Remi Collet ou Rob Morgan, des talks dédiés aux dernières innovations du langage… La programmation concoctée en collaboration avec l’association locale Clermont’ech tient ses promesses !

Mais venir au PHP Tour Clermont-Ferrand 2016 est avant tout l’occasion pour les développeurs de se rafraîchir les idées sur le langage, son utilisation et son application dans le monde de l’entreprise. Rien de tel que de retrouver la communauté, d’échanger avec d’autres professionnels, de rencontrer les sociétés et les chefs de projet du secteur, pour revenir au bureau avec la motivation, les idées et une vision actualisée, nécessaires pour s’attaquer aux projets en cours.

Le programme des deux jours du cycle de conférences est idéal pour cela ! Profitez des ateliers pratiques gratuits pour vous perfectionner sur un sujet précis : deux workshops sont organisés sur Docker, par les experts PHP Pascal Martin et Joël Wurtz. Un troisième atelier, animé par Philippe Krenn, est dédié à Elasticsearch. Chaque session dure 3h, se déroule en petit groupe, et vous permet de vous entraîner en temps réel sur votre propre machine : l’idéal pour progresser rapidement. Informations et réservations par ici.

De nombreux retours d’expérience sont également proposés : les devs de Decitre.fr, de “La Ruche qui dit Oui !”, et bien d’autres, vous raconteront leur histoire. Vous rentrerez chez vous en vous disant “Mais bien sûr, c’est comme ça qu’il faut faire !”.

Le traditionnel apéro communautaire se tiendra dans le centre-ville le soir du lundi 23 mai, et sera l’occasion idéale pour mettre des visages sur des noms, pour débriefer des conférences de la journée, et pour confronter les visions et les pratiques, dans une ambiance conviviale et décontractée.

Enfin, pauses et déjeuners sur place permettront à chacun de rencontrer les différents sponsors, découvrir leurs produits, discuter avec eux et s’informer. En bref, profitez-en pour faire de la veille technique…

Rien de tel donc pour votre performance et votre productivité que de rejoindre le PHP Tour Clermont-Ferrand 2016, le RDV incontournable du printemps des développeurs et PHP lovers :

la suite...

Remi Collet Remi Collet 2016-04-20T18:57:53+02:00

Ma station de travail PHP

Je vois régulièrement passer des questions sur l'utilisation d'anciennes versions de PHP sur Fedora (qui fournit la 5.6) ou de versions plus récentes sur RHEL / CentOS (qui fournit la 5.4).

Un développeur utilisant PHP a souvent besoin de tester son travail avec plusieurs versions. Donc voici un petit descriptif de la station de travail que j'utilise quotidiennement

Système d'exploitation : Fedora 23 Workstation x86_64 (mais les exemples fonctionnent aussi sur RHEL ou CentOS 7)

Dépôts tiers : rpmfusion (pour écouter de la musique en travaillant) et évidement remi

# wget http://rpms.remirepo.net/fedora/remi-release-23.rpm
# dnf install remi-release-23.rpm
# dnf config-manager --set-enabled remi

 

Installation des versions de PHP

J'utilise les Software Collections qui permettent d'installer plusieurs versions en parallèle sans toucher au système de base, les versions de PHP 5.4, 5.5, 5.6 et 7.0 sont disponibles dans mon dépôt, donc:

# yum install  php54 php54-fpm php54-php-mbstring php54-php-mysqlnd ...
# yum install  php55 php55-fpm php55-php-mbstring php55-php-mysqlnd ...
# yum install  php56 php56-fpm php56-php-mbstring php56-php-mysqlnd ...
# yum install  php70 php70-fpm php70-php-mbstring php70-php-mysqlnd ...

Les utilisateurs de RHEL peuvent aussi utiliser les SCL officielles disponible dans le canal RHSCL (php54, php55 et rh-php56).

Les utilisateurs de CentOS peuvent aussi utiliser les SCL, maintenues par le SIG, disponibles dans le dépôt centos-sclo-sclo.

 

Configuration de l'environnement Web

PHP FastCGI Process Manager

Je n'utilise pas mod_php qui n'autorise qu'une seule version du module, mais FPM.

Je ne suis pas en production mais sur une station de développement, donc afin de limiter la charge, je modifie la configuration de chaque FPM pour utiliser le mode "ondemand". J'utilise aussi un port réseau différent pour chaque version

Example, pour PHP 7.0, dans le fichier /etc/opt/remi/php70/php-fpm.d/www.conf

listen = 127.0.0.1:9070
pm = ondemand

Je configure le port pour SELinux

# semanage port -a -t http_port_t -p tcp 9070

Et ensuite j'active le service

# systemctl start php70-php-fpm
# systemctl enable php70-php-fpm

Et j'applique pour chaque version.

Apache

Je crée 1 hôte virtuel pour chaque version de PHP

Dans le fichier /etc/hosts, déclaration des alias IP

192.

la suite...

Pascal Martin (n+1).zéro Pascal Martin (n+1).zéro 2016-04-14T00:00:00+02:00

Les directives INI, c'est le mal !

Plusieurs fois, alors que des évolutions étaient discutées pour PHP 7, j’ai assisté à des échanges où un intervenant proposait de rendre optionnelle une nouvelle fonctionnalité1, par le biais d’une directive de configuration INI — l’idée étant que chacun pourrait alors l’activer ou non.

Mais le principe même de directives permettant de changer, parfois en profondeur, le comportement d’un langage de programmation… J’en ai des frissons !


Imaginez un langage2 créé pour faciliter la mise en place de formulaires HTML et le traitement des données saisies.

Pour aider les débutants n’ayant aucune notion de sécurité, et puisque l’utilisation de MySQL pour le stockage de données est à la mode, les développeurs de ce langage mettent en place une option qui, une fois activée, entraine l’ajout automatique d’un \ devant tous les guillemets ' arrivant en entrée3 (GET/POST/…).

Bien sûr, une partie des administrateurs système active immédiatement cette directive, puisqu’elle améliore considérablement la sécurité4 en empêchant certaines injections SQL. Mais d’autres administrateurs la désactivent, puisque c’est à chaque développeur de savoir gérer ses données : le langage ne doit pas les modifier à la volée !

Et là, une application donnée fonctionnera parfaitement sur un serveur, alors qu’elle fera n’importe quoi sur un autre — soit en injectant des \ partout, soit en explosant violemment sur la moitié de ses requêtes SQL ! Elle n’aura en effet pas été spécifiquement développée pour tenir compte des différentes combinaisons d’options de configurations.

Vous en rêviez ? Bienvenue dans l’enfer des magic quotes5 !

Dans le même genre, vous vous souvenez de register_globals, où des variables apparaissaient par magie dans vos scripts, pour peu que cette directive soit activée ? C’était d’enfer !


Revenons à une période un peu plus proche : chaque fois qu’une directive de configuration est ajoutée à PHP6, cela signifie :

  • Plusieurs branches de code à tester, déboguer, maintenir.

la suite...

AFUP AFUP 2016-04-05T00:00:00+02:00

L'AFUP partenaire de Drupagora

La prochaine édition de Drupagora se tiendra à l'Université Pierre et Marie Curie, Paris 5ème, le vendredi 3 juin de 9h à 18h.

La conférence se déroule sur une journée. Mathieu Gros, CEO d'Actency, agence web spécialisée Drupal, apporte toute son expertise pour l'édition 2016.  Succédant à Frédéric Plais, CEO de Platform.sh, il a eu cette année pour mission de définir les grandes thématiques du programme et sélectionnera, avec le comité de pilotage, les intervenants pour cette nouvelle édition.

Cette année, le fil rouge du programme est : Drupal, une valeur sûre pour la transformation digitale des entreprises. Avec pour thématiques principales :
- Les exigences d’internet d’aujourd’hui et de demain : Comment y répond Drupal 8 avec ses innovations et ses avantages ?
- Les capacités de Drupal 8 en condition réelle : les projets, des démos et des témoignages.
- L'industrialisation et la performance de Drupal dans des écosystèmes complexes : CIT, DEVOPS, intégration avancée, etc.
- Comment Drupal participe efficacement à la digitalisation des entreprises : Bigdata, Webfactory, Mobilité, Applications avancées, etc..

Les inscriptions à Drupagora sont ouvertes au tarif early bird : profitez de ce tarif avantageux ! 40 euros jusqu'au 15/04/2016, 75 euros jusqu'au 15/05/2016, 100 euros en tarif normal

Programme et inscriptions sur drupagora.com

Remi Collet Remi Collet 2016-03-30T10:58:36+02:00

Statistiques par version de PHP

Voici quelques statistiques de téléchargement pour les différentes versions de PHP depuis le dépôt remi.

Calculées à partir des ~100k téléchargements en 1 mois.

Paquets de base (version unique)

  • 5.4.45: 32.6% (représentait 47% en octobre 2015)
  • 5.5.33: 18.9% (5.5.29 représentait 21%)
  • 5.6.19: 41.3% (5.6.13 représentait 31%)
  • 7.0.4: 7.2%

php-201603.png

Paquets SCL (installation en parallèle de plusieurs versions)

  • 5.4.45: 10.4%
  • 5.5.33: 16.6%
  • 5.6.19: 41.5%
  • 7.0.4: 31.5%

Les chiffres des SCL sont moins intéressants, car les elles sont utilisées pour avoir plusieurs versions, souvent sur une station de développement, ou pour tester une nouvelle version, ou pour conserver un ancienne version pour une ancienne application.

Conclusion: l'utilisation de 5.4 reste beaucoup trop élevé pour une version morte (non maintenue), même si l'intègre quelques correctifs de sécurité dans mes paquets (rétro-porté depuis 5.5), je recommande vivement de faire la mise à jour vers une version maintenue, 5.5 (fin de vie en juillet 2016) ou mieux 5.6 (fin de vie en Decembre 2018).

 

 


Flux ATOM

Flux RSS
Twitter

Les sources

Ajouter une source ?

Envoyez un email avec l'URL du site et du flux à planetephpfr AT afup POINT org

Infos