Artisan Développeur

Qualité, amélioration continue, agilité.

Tester une Pull Request sur le repo de quelqu’un d’autre

Ce matin c’est tout bête, j’ai prévu de tester cette PR https://github.com/andres-montanez/Magallanes/pull/184

Jusqu’à maintenant je n’ai jamais eu besoin de tester la PR d’un contributeur, sur le repo d’une autre personne, voilà le contexte :
Il y a le repo de base, avec une branche develop.
Pour proposer une modification du code, il faut forker la branche develop et faire une PR avec les modifications.
Jusque là, c’est habituel.

Une PR est en cours sur un fonction dont j’ai besoin, pour ajouter une variable d’environnement SYMFONY à la commande Composer.

Comment faire pour tester ?

La solution que j’ai utilisée (libre à vous de proposer autre chose si vous avez), j’utilise phpStorm pour coder, avec le plugin d’intégration Github.

Créer une nouvelle branche from upstream/develop
remoteUpstream

Ensuite, récupérer le patch de la PR depuis Github, pour faire ça, je préfère wget, donc en Konsole (gnome-terminal, peu importe lequel), je vais dans le rép où je stocke mon projet. Merci à igthub, il suffit d’ajouter .patch à la fin de l’url pour avoir le fichier patch.

[pastacode lang= »bash » message= » » highlight= » » provider= »manual »]

$ wget https://github.com/andres-montanez/Magallanes/pull/184.patch

--2015-02-04 14:58:50-- https://github.com/andres-montanez/Magallanes/pull/184.patch
Résolution de github.com (github.com)... 192.30.252.130
Connexion vers github.com (github.com)|192.30.252.130|:443... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Taille : non spécifié [text/plain]
Enregistre : «184.patch»

[ <=> ] 5 141 24,3KB/s ds 0,2s

2015-02-04 14:58:51 (24,3 KB/s) - «184.patch» enregistré [5141]

[/pastacode]

Ensuite, et merci à phpStorm, il suffit de faire :

Menu -> VCS -> Apply patch

applyPatch

Dans la liste de choisir le patch récupéré

applyPatch1

Puis de valider les modifications
applyPatch2

Une dernière fenêtre montre les modifications effectuées.

Maintenant j’ai une branche locale, à jour sur la branche de dev du repo d’origine, avec le code de la PR à tester appliqué.

Il n’y a plus qu’à tester !

Test install beta de blackfire.io

Aujourd’hui je commence le dev d’un nouveau projet, avec Symfony2, dans l’optique de l’amélioration continue (KaiZen), je me suis penché un peu sur les profiler, et puisque Sensio Lab lance un nouveau produit on va tester 🙂
Pour les tests je fais tout en local, Kubuntu 14.10.

$ apache2 -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 22 2014 14:36:38

$ php -v
PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:10)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Avant tout s’enregistrer sur le site, avec le compte github ou sensio c’est rapide.
S’enregistrer sur blackfire.

L’installation est vraiment simple, https://blackfire.io/getting-started
, sous ubuntu, j’ai utilisé le repo pour debian et tout s’est bien passé.
(petite astuce pour éviter les sudo tout le long, alt+F2 puis kdesudo konsole – pour kde – ou gksudo gnome-terminal)

Vous aurez besoin des id et token pendant la config, disponibles à cette adresse, en étant identifié :
https://blackfire.io/account/credentials

Les commandes condensées:

curl -s https://packagecloud.io/gpg.key | sudo apt-key add -

echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list

sudo apt-get update

sudo apt-get install blackfire-agent

sudo blackfire-agent -register #credentials serveur

sudo /etc/init.d/blackfire-agent restart

blackfire config #credentials client

sudo apt-get install blackfire-php

sudo apache2ctl restart

Pour utiliser le plugin web, il faut utiliser chrome pour l’instant (vivement le plugin firefox), il faut aller sur cette page, et installer le plugin :

https://blackfire.io/doc/web-page

Une fois installé, on clique dessus, on choisit le slot, qu’il est préférable de renommer, puis « Profile! ».

companion

2

Et enfin les données du profiler :
3

Il ne reste plus qu’à bien étudier les infos remontées, au fur et a mesure de l’avancement du code.

strpos tips, if(strpos($haystack , $needle)) piège :)

Une astuce,

un retour de galère, je travaille sur un parser pour du xml, je cherche certaines occurrences, comme « ![CDATA ».

Je faisais simplement un

[pastacode lang= »php » message= » » highlight= » » provider= »manual »]

if( strpos( "!CDATA[", $monXml ) ){
 /* do something */
}

[/pastacode]

Et jamais la condition n’était valide… Je retourne donc sur la doc php, lire en entier la page strpos :
http://au1.php.net/manual/fr/function.strpos.php

Strpos, retourne la position de $needle, et la première position commence à 0.

Si $needle se trouve au début de la chaîne, strpos retourne 0. Ce qui donne :

[pastacode lang= »php » message= » » highlight= » » provider= »manual »]

if(0){ /* ... */ }

[/pastacode]

La solution est toute simple :

[pastacode lang= »php » message= » » highlight= » » provider= »manual »]

if( strpos( &#34;!CDATA[&#34;, $monXml ) !== false){
 /* do something */
}

[/pastacode]

Avec l’opérateur === ou !== je vais vérifier si c’est vraiment false.

tags: strpos error, strpos ne fonctionne pas, mauvais retour strpos, strpos always false.