planetePHP.fr
Guillaume Bretou (PHPSymfony) Guillaume Bretou (PHPSymfony) 2016-02-11T14:07:24+01:00

[Chrome] Etude de cas : Domain name extension

Voilà un moment que je n'avais pas posté d'article sur ce blog. Le congé paternité et l'inter contrat aidant à trouver un peu de temps, je vais combler ce manque. Une des idées que j'avais en tête depuis un certain temps était de créer une extension pour le navigateur Chrome. C'était un sujet sur lequel je ne connaissais rien du tout et que je voulais découvrir. Je considère en effet que les extensions sont un moyen puissant, trop souvent négligé, de créer de nouvelles fonctionnalités pour le navigateur, et de faire en sorte que ces fonctions soient utilisables pour le développement. J'ai par ailleurs découvert que le développement d'une extension chrome est en réalité assez simple : il n y a pas de nouveau langage à apprendre puisque c'est du javascript derrière. Il faut juste en maitriser l'API. Il me fallait alors un sujet pour cette extension, et c'est un peu par hasard qu'un développeur d'une équipe que j'ai rencontré m'a donné l'idée.

Je vous présente la domain name extension. Cette extension permet simplement d'ajouter une div en haut de la page avec une couleur configurable en fonction du nom de domaine. Vous pouvez donc configurer votre site de dev : http://mon-dev.local en "green" et https://production.com en "red". Dans quels cas cette extension peut elle vous intéresser ? Prenons un exemple concret, le cas dont je parlais plus haut. Le développeur avait simplement réalisé des opérations de suppressions sur la production alors qu'il pensait être sur son environnement de développement. Ce scénario, certes très basique, doit se produire assez fréquemment car souvent les développeurs ont des droits d'écriture sur les applications en production. Cette erreur de manipulation entraine alors des opérations de rollback qui peuvent être couteuses et je suis persuadé qu'avec une alerte visuelle, le développeur aurait pu éviter la mauvaise manipulation.

L'extension fonctionne très simplement : Elle dispose d'un écran d'options dans lequel on peut ajouter des noms de domaine avec des couleurs. Côté front, dès lors que l'event "chrome.webNavigation.onCompleted" est chargé, l'extension vérifie le nom de domaine et le compare avec ceux qui ont été paramétrés. Si il y a correspondance, alors l'extension ajoute une div avec la couleur configurée en fond. Rien de plus compliqué.

Le code est sur : https://github.com/guiguiboy/ChromeExtDomainName Pour installer l'extension, il suffit de cloner le repo, d'ouvrir chrome://extensions/ et d y glisser le fichier .crx. A vrai dire, je ne sais si cela vaut le coup de proposer cette extension sur le store. Toutefois, en fonction des retours qu'il pourrait y avoir, je pourrai être amené à le faire.

AFUP AFUP 2016-02-11T00:00:00+01:00

Prenez votre place pour le PHP Tour Clermont-Ferrand 2016

Le cycle de conférences se tiendra en début de semaine, les lundi 23 et mardi 24 mai.

Qu'il soit pour un ou deux jours, le billet pour le PHP Tour 2016 prend en compte l'accès à toutes les conférences, l'inscription à un atelier, et le repas du midi. Membres AFUP, bénéficiez de 100 euros de réduction sur le tarif plein, pensez à profiter de cet avantage non-négligeable ! Prenez votre place maintenant.

Anticipez votre déplacement, Clermont-Ferrand est facilement accessible en avion (la compagnie Hop! dessert Clermont-Ferrand en provenance de nombreuses villes de province !) ou en train.

Attention, le PHP Tour se déroulera le lendemain d'un week-end de rugby à Clermont-Ferrand : les hotels le dimanche soir sont apparemment pris d'assaut ! Pensez à réservez maintenant votre chambre. Toute la liste des hôtels de Clermont-Ferrand est à retrouver sur le site du Polydôme

AFUP AFUP 2016-02-10T00:00:00+01:00

Rendez-vous AFUP Paris : PHP 7

Ce rendez-vous AFUP accueillera trois conférenciers réputés.

 

La soirée débutera avec William Agasvari qui nous parlera de "PHP7, l'éveil de la PHPorce !"

Dans cette session nous parlerons de l'installation de PHP7, de sa sécurisation d'environnement d'hébergement ( FASTCGI / FPM / NGINX / APACHE ) de test et de production pour une performance optimale.

 

La soirée continuera avec Julien Pauli qui abordera "PHP 7 est arrivé"

Cette session abordera de nombreux points autour des nouveautés pour l'utilisateur, des Meilleures performances et de la migration : comment/pourquoi

 

Pour clôturer la soirée, Loïck Piera qui traitera "A la recherche d'incompatibilités avec PHP 7"

Présentation de php7cc, un outil d'analyse statique pour détecter les problèmes de compatibilité avec PHP 7

 

Enfin, un verre de l'amitié est offert par JoliCode qui permettra de débattre sur le thème de la soirée avec les différents participants

 

Comme toujours le RDV est gratuit et ouvert à tous, n'hésitez donc pas en parler autour de vous, et comme toujours…le nombre de places est limité. Attention donc.

 

Pour vous inscrire : http://afup.org/pages/rendezvous/index.php?id=24

Gilles Février Gilles Février 2016-02-08T14:48:39+01:00

Le PHP Tour 2017 aura lieu à Nantes !

Alors que l’appel à conférenciers du PHP Tour 2016, qui se tiendra les 23 et 24 mai prochains à Clermont-Ferrand, n’est pas encore clos (vous pouvez encore envoyer vos propositions de conférences jusqu’au 20 février), l’Assemblée Générale de l’AFUP a retenu le dossier de candidature de Nantes pour l’édition 2017 ! Cinq ans après l’édition … Continuer la lecture de Le PHP Tour 2017 aura lieu à Nantes ! 
AFUP AFUP 2016-02-08T00:00:00+01:00

Le PHP Tour retourne à Nantes

Un dossier de candidature en béton présenté lors de l'Assemblée Générale de l'association, et un vote à l'unanimité ont permis à l'équipe de remporter l'organisation de l'événement. 

L'édition 2017 du PHP Tour se déroulera donc à Nantes. La motivation est d'ores et déjà au top au sein de l'équipe : des sponsors se sont déjà manifestés, des idées fusent pour l'apéro communautaire, et les bénévoles répondent déjà à l'appel. Le lieu d'accueil est quant à lui en cours de sélection. 

Bravo à l'équipe nantaise, l'AFUP est ravie de revenir chez vous !

AFUP AFUP 2016-02-06T00:00:00+01:00

Bureaux de l'AFUP, fondateurs et conseil d'administration


Bureau 2014
Président : Olivier Mansour
Trésorier : Martin Supiot
Secrétaire : Jean-François Lépine
Vice-président : Maxime Teneur
Vice-trésorier : Christophe Villeneuve

Bureau 2016

  • Président : Cyril PASCAL
  • Trésorier : Christophe Villeneuve
  • Secrétaire : Laurence Hoizey
  • Vice-président : Xavier Leune
  • Vice-trésorier : Olivier Dolbeau
  • Vice-secrétaire : Morgane Tisserant
  • Membres du conseil d'administration : Adrien Gallou, Anthony Maison, Florian Ferrière, Muriel Lusseau, Jacques Bodin-Hullin, Xavier Lacot.

Bureau 2015

  • Président : Maxime Teneur
  • Trésorier : Jacques Bodin-Hullin
  • Secrétaire : Thierry Marianne
  • Vice-président : Cyril Pascal
  • Vice-trésorier : Christophe Villeneuve
  • Vice-secrétaire : Laurence Hoizey

Bureau 2014

  • Président : Fabrice Bernhard
  • Trésorier : Martin Supiot
  • Secrétaire : Jean-François Lépine
  • Vice-président : Maxime Teneur
  • Vice-trésorier : Christophe Villeneuve
  • Membre du conseil d'administration : Olivier Mansour
  • Membre du conseil d'administration : Xavier Lacot
  • Membre du conseil d'administration : Thierry Marianne
  • Membre du conseil d'administration : Thomas Gasc
  • Membre du conseil d'administration : Jacques Bodin-Hullin
  • Membre du conseil d'administration : Cyril Pascal

 

Conseil de surveillance 2014

  • Président: Perrick Penet-Avez
  • Membre du conseil de surveillance : Xavier Gorse
  • Membre du conseil de surveillance : Armel Fauveau
  • Membre du conseil de surveillance : Nicolas Silberman
  • Membre du conseil de surveillance : Sarah Haïm-Lubczanski
  • Membre du conseil de surveillance : Arnaud Limbourg

 

Bureau 2013 

Lors de l'AG 2013 a été voté la mise en place d'un bureau éxécutif

  • Président : Olivier Mansour
  • Trésorier : Martin Supiot
  • Secrétaire : Jean-François Lépine
  • Vice-Président : Fabrice Bernhard
  • Vice-Trésorier : Maxime Teneur
  • Vice-Sécrétaire : Rodolfo Ripado
  • Membre du bureau éxécutif : Claire Bonachera
  • Membre du bureau éxécutif : Christophe Villeneuve
  • Membre du bureau éxécutif : Christophe Chervy
  • Membre du bureau éxécutif : Aurélien Vairet
  • Membre du bureau éxécutif : Xavier Lacot
  • Membre du bureau éxécutif : Mickaël Perraud

 

Bureau 2012

  • Président : Xavier Lacot
  • Trésorier : Mickael Perraud
  • Secrétaire : Aurélien Vairet
  • Vice-Président : Olivier Mansour
  • Vice-Trésorier : Martin Supiot
  • Vice-Sécrétaire : Jean-François Lépine

 

Bureau 2011

  • Président : Jean-Marc Fontaine
  • Trésorier : Perrick Penet
  • Sécrétaire : Gauthier Delamarre
  • Vice-Président : Xavier Lacot
  • Vice-Trésorier : Mickael Perraud
  • Vice-secrétaire : Aurélien Vairet

 

Bureau 2010

  • Président : Nicolas Silberman
  • Trésorier : Perrick Penet
  • Sécrétaire : Hugo Hamon
  • Vice-Président : Olivier Hoareau
  • 2nd Vice-Président : Cyril Pierre de Geyer
  • Vice-Trésorier : en cours
  • 2nd Vice-Trésorier : Christophe Villeneuve
  • Vice-secrétaire : Raphaël Rougeron
  • 2nd Vice-Secrétaire : Gauthier Delamarre

 

Bureau 2009

  • Président : Xavier Gorse
  • Trésorier : Christophe Villeneuve
  • Sécrétaire : Sarah Haim
  • Vice-Président : Nicolas Silberman
  • Vice-Trésorier : Julien Pauli
  • Vice-secrétaire : Eric Colinet

 

Bureau 2008

  • Président : Arnaud LIMBOURG
  • Trésorier : Christophe Villeneuve
  • Secrétaire : Mickael MITHOUARD
  • Vice-Président : Xavier Gorse
  • Vice-Trésorier : -
  • Vice-secrétaire : Sarah Haim et Cyril Grandval

 

Bureau 2007 Lors de l'AG 2007 a été décidé de faire un passage de temoin en douceur entre le président (Guillaume PONCON) et le futur président (Arnaud LIMBOURG).

la suite...

rootslabs rootslabs 2016-02-01T10:30:04+01:00

Utiliser CodeClimate avec Github & Travis dans un projet PHP

Après avoir utilisé Scrutinizer-CI, j’ai décidé d’utiliser CodeClimate pour PHPPresentation.

Logo CodeClimate

Ajout du projet sur CodeClimate

Après une connexion via GitHub, j’ai ajouté un projet de type « Repository GitHub ».

Vous avez juste à ajouter le propriétaire et le nom du projet GitHub. Dans notre cas, ce sera « PHPOffice/PHPPresentation ».
L’ajout se fait automatiquement et après le premier build, votre accueil devrait se présenter comme cela :
Accueil

Intégration de CodeClimate dans votre projet

Pour cela, il suffit de rajouter à la racine de votre dépôt un fichier .codeclimate.yml de ce type :

engines:
  phpcodesniffer:
    enabled: true
  phpmd:
    enabled: true
  duplication:
    enabled: true
    config:
      languages:
      - php
ratings:
  paths:
  - src/**/*
  - tests/**
exclude_paths:
- vendor/**/*

Grâce au nœud « engines », votre projet sera testé via PHPCodeSniffer, PHPMd et via un outil interne sur la duplication de code.
Grâce au nœud « ratings », seuls les chemins définis seront utilisés pour le calcul de votre projet.
Grâce au nœud « exclude_paths », les chemins définis seront exclus de l’analyse.

Intégration de CodeClimate avec Travis-CI

Il vous faut pour cela aller dans les settings du projet puis sur l’onglet « Test Coverage ».
A partir de là, tout devrait vous être expliqué.
Mais en gros, cela se passe comme tel :

  • Modifier votre composer.json pour ajouter un require-dev :
    {
     "require-dev": {
       "codeclimate/php-test-reporter": "dev-master"
      }
    }
  • Modifier votre .

la suite...

Remi Collet Remi Collet 2016-01-29T11:24:56+01:00

Apache HTTP Server et répartiteur de charge vers PHP FPM

L'un des avantages de FPM et de séparer et d'isoler proprement le frontal web du serveur d'application.

Voici un exemple de configuration utilisant Apache en répartiteur de charge entre plusieurs instances FPM.

 

La configuration de base est vraiment (trop) simple

    # Creation du repartiteur et de ces membres
    <Proxy balancer://phpfpmlb>
        BalancerMember fcgi://10.0.0.12:9000
        BalancerMember fcgi://10.0.0.34:9000
    </Proxy>
    # Redirection de l'execution PHP vers le repartiteur
    <FilesMatch \.php$>
        SetHandler "proxy:balancer://phpfpmlb"
    </FilesMatch>

Pour aller plus loin, voir la documentation :

 

jy[B]log jy[B]log 2016-01-27T14:32:00+01:00

Défi 2016 : un commit par jour

Fin 2015, période de fête, et période "faisons le point". Pas folichons ce point, concernant mon blog et mes projets open-source. Je n'ai pas écris un seul billet en 2015, et l'activité sur mes projets libres n'a pas été terrible.

Sur github, voici comment mon activité était représenté il y a quelques semaines :

Contributions sur Github en 2015

Parmi toutes ces contributions, indiquées par des carrés verts, il n'y a pas que des évolutions sur le code de mes projets mais aussi des évolutions sur l'extension Opquast Desktop (une mission financée par Temesis, afin qu'elle fonctionne sur les dernières versions de Firefox), et également des ouvertures de tickets, des commentaires...

Cette baisse d'activité sur mes projets libres, en particulier sur Jelix et SlimerJS n'est pas terrible pour moi dans la mesure où ça n'avance pas beaucoup alors que ça m'est utile et que c'est utile pour des utilisateurs.

J'ai donc décidé que cette année, premièrement, j'essaierai d'écrire plus souvent sur mon blog (voilà un premier billet), et deuxièmement, j'augmenterai l'activité sur mes projets libres ou d'autres projets libres, avec un défi : au moins 1 commit par jour sur un dépôt. Et pendant mon temps libre bien sûr.

Un commit, ça peut paraitre beaucoup parce que parfois, pour ajouter une fonctionnalité ou corriger un bug, et donc aboutir à un commit, cela peut prendre plusieurs heures (et je n'ai pas "plusieurs heures" de temps libre chaque jour), et cela peut paraitre peu, parce que, juste "un" commit...

Donc, est-ce réalisable ? Est-ce utile ? Est-ce que cela va apporter vraiment un plus sur mes projets ? Est-ce que cela va être compatible avec mes autres activités ?

J'ai trouvé des réponses dans le post de John Resig, qui s'est lancé le même défi en 2014. Depuis presque deux ans, il arrive à coder tous les jours sur des projets libres, comme on peut le constater sur son tableau de bord github.

Et finalement, pour moi aussi ça fonctionne : depuis presque un mois, j'arrive à committer tous les jours sur mes dépôts Github, en y passant une heure ou deux, le soir principalement. C'est une question d'organisation et d'entrainement. Comme je travaille tous les jours sur un de mes projets perso, je perd moins de temps à me remémorer où j'en suis. Je ne perds pas le fils. Du coup je passe moins de temps que je pensais au début, tout en restant efficace.

la suite...

Pascal Martin (n+1).zéro Pascal Martin (n+1).zéro 2016-01-22T00:00:00+01:00

Les générateurs, c'est le bien ! Un cas d'usage.

J’annonçais lundi le lancement de la « semaine des générateurs » : cette semaine, chaque jour, un article a été posté par un développeur différent, présentant un cas d’utilisation qu’il avait de générateurs. Ils sont tous référencés depuis mon post de lundi.

Aujourd’hui, pour finir cette semaine1, c’est mon tour !

Présentation de mon cas

En recherchant le mot-clef yield dans un de mes projets au boulot2, je l’ai trouvé neuf fois — plus quelques fois dans des commentaires ou noms de méthodes.

Une bonne partie de ces utilisations correspondent à des cas évidents d’utilisation de générateurs pour plusieurs de mes collègues : on parcourt une série de données — souvent depuis une base de données — et on souhaite effectuer un traitement sur chaque ligne, indépendante des autres. Aucune raison donc de tout charger en mémoire dans un tableau. Bien sûr, on souhaite tout de même séparer chargement / manipulation / affichage des données. Plusieurs exemples de ce type ont été montrés cette semaine et je ne partirai donc pas sur un de ces cas pour cet article.

Le cas dont j’ai choisi de parler va, en fait, dans le sens inverse : j’ai en entrée un fichier binaire constitué d’un nombre variable d’enregistrements, chacun de taille variable. J’ai besoin de lire ces enregistrements un par un, de les analyser, puis de les stocker en base de données.

Le format de mes fichiers

Chacun de mes fichiers est composé d’une suite d’enregistrements, indépendants les uns des autres. Chaque enregistrement, une suite de données binaires contenant une liste de livres, est composé des champs suivants :

  • 2 octets (entier) : la taille de l’enregistrement, ces deux octets étant exclus du compte
  • 2 octets (entier) : le nombre de livres dans l’enregistrement
  • Ensuite, pour chaque livre, une suite de données (titre, format, auteurs, …) — toujours les mêmes champs, certains étant de taille variable avec un délimiteur de fin.

Mon approche

J’ai commencé à bosser sur le parcours de ces fichiers il y a quelques mois, alors que notre plate-forme était déjà en PHP 5.6. Donc, je suis directement parti sur des générateurs, pour séparer analyse / parcours / utilisation des données et ne pas les charger intégralement en mémoire — et sans avoir à mettre en place un itérateur à la main.

Un flux, bien sûr !

Pour manipuler un fichier dont j’ai besoin de lire les données alors que j’avance dans le fichier, en partant du début de celui-ci et en allant jusqu’à la fin, je passe généralement par un flux —

la suite...


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