Outils ( 19 articles - Voir la liste )

Astuce Modifier l'auteur des commits Git

Il est possible de modifier l’auteur de tous les anciens commits d’un dépôt Git.

Pour cela, utilisez la commande suivante, après l’avoir personnalisée selon vos besoins :

git filter-branch --env-filter '
WRONG_EMAIL="wrong@email.com"
NEW_NAME="John Doe"
NEW_EMAIL="j.doe@email.com"

if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

Explications :

On indique l’adresse email utilisée par tous les commits que l’on souhaite modifier, ainsi que le nom d’utilisateur et l’adresse email correcte que l’on souhaite utiliser à la place.

Astuce Créer un patch avec TortoiseSVN

TortoiseSVN permet de générer des patchs pour passer d'une version à une autre du projet.

Il y a deux types de patch :

  • Les patchs contenant toutes les lignes des fichiers modifiés qui ne sont pas encore "commités".
  • Les patchs contenant l'arborescence de tous les fichiers modifiés entre deux tags.

Description

Le premier type génère un fichier .patch, qui ressemble à quelque chose comme ça :

Index: settings/siteaccess/bo/site.ini.append.php
===================================================================
--- settings/siteaccess/bo/site.ini.append.php    (révision 864)
+++ settings/siteaccess/bo/site.ini.append.php    (copie de travail)
@@ -37,4 +37,23 @@
 CachedViewPreferences[full]=admin_navigation_content=1;admin_children_viewmode=list;admin_list_limit=1
 TranslationList=

+[DebugSettings]
+DebugOutput=enabled
+DebugToolbar=enabled
+DebugRedirection=disabled
+
+[TemplateSettings]
+Debug=disabled
+
+[DatabaseSettings]
+SQLOutput=disabled
+
 */ ?>
\ No newline at end of file

On peut y voir pour chaque fichier modifié, les lignes ajoutées et supprimées depuis le dernier commit.

Le second type génère l'arborescence et les fichiers entiers.

Utilisation

Pour générer un fichier .patch, il suffit de :

  • Faire un clic-droit sur l'arborescence
  • > TortoiseSVN
  • > Create patch...
  • Sélectionner les fichiers à patcher
  • Choisir (via le bouton Options) si on considère les modifications d'espaces blancs.

Pour utiliser ce fichier, il faut :

  • Le placer à l'endroit d'où on l'a généré
  • Faire un clic-droit sur le fichier
  • > TortoiseSVN
  • > Apply patch...

La liste des fichiers modifiés apparait, et on peut voir pour chacun d'eux les lignes impactées. On peut alors choisir de patcher tous les fichiers ou seulement certains.

Pour générer toute l'arborescence des fichiers modifiés entre deux tags, il faut :

  • Faire un clic-droit sur l'arborescence
  • > TortoiseSVN
  • > Repo-browser
  • Faire un clic-droit dans l'arborescence, sur la version la plus récente à comparer
  • > Mark for comparison
  • Faire un clic-droit dans l'arborescence, sur la version la plus ancienne à comparer
  • > Compare URLs

La liste des fichiers modifiés entre les deux versions apparaît. Il suffit alors de :

  • Les sélectionner tous
  • Faire un clic-droit sur un fichier sélectionné
  • > Export selection to...
  • Choisir où générer les fichiers

Astuce Supprimer le menu contextuel créé lors de l'installation de Git

Lors de l'installation de Git sous Windows, vous avez la possibilité d'activer un menu contextuel proposant des raccourcis vers les tâches les plus courantes de Git (commit, pull, ...).

Le problème c'est que TortoiseGit propose la même fonctionnalité en mieux. Si vous utilisez ces deux logiciels, vous obtenez donc deux menus contextuels identiques...

Pour supprimer celui créé par Git, utilisez une des commandes suivantes.

Pour Windows 32 bits :

cd C:\Program Files\Git\git-cheetah
regsvr32 /u git_shell_ext.dll

Pour Windows 64 bits :

cd C:\Program Files\Git\git-cheetah
regsvr32 /u git_shell_ext64dll

Marque-page Ouvrir un PSD sans Photoshop

Vous êtes sous Linux, ou vous n'avez pas Photoshop ? Vous avez besoin d'ouvrir correctement un fichier psd ?

Si c'est juste pour du découpage et pas de la créa, la version online fera très bien l'affaire !

C'est ce que propose le site https://www.photopea.com/.

Marque-page Étendre la taille d'un disque virtuel

Si vous avez créé un disque avec VirtualBox et qu'il est trop petit, vous pouvez l'agrandir.

Vous pouvez voir les disques d'une VM en cliquant-droit dessus : Configuration... > Stockage.

Configuration des disques

Modifications côté Virtual box

Avant toute chose, prenez le temps de créer un clone intégral de votre VM. En cas de problème vous n'aurez ainsi rien perdu.

Prérequis

Tout d'abord, il faut que votre disque soit au format vdi (et pas vmdk). Si ce n'est pas le cas, utilisez la commande suivante :

VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi

Si votre disque a une taille fixe et non pas allouée dynamiquement, ajoutez l'option --variant Standard à la commande précédente pour en changer (vous pourrez revenir à l'état précédent par la suite).

Ajout d'espace disque

Il faut ensuite modifier la taille du disque, via la commande :

VBoxManage modifyhd "cloned.vdi" --resize 51200

51200 est la nouvelle taille en Mo.

Retour au format initial

Vous avez maintenant un disque au format vdi, avec une taille dynamique. Pour retrouver un disque au format vmdk, et/ou de taille fixe, inversez la première commande :

VBoxManage clonehd "cloned.vdi" "source.vmdk" --format vmdk --variant Fixed

Modification côté VM

Votre disque a maintenant la taille souhaitée, mais la partition n'a pas changé. Vous avez donc tout un espace disque non alloué.

  • Téléchargez un iso de gparted
  • Insérez-le dans le lecteur virtuel de votre VM
  • Bootez dessus
  • Suivez ce tutoriel
  • Redémarrez votre VM

Vous devriez maintenant avoir un disque dur plus grand et fonctionnel !

Astuce Retirer le versionnement d'un fichier avec IntelliJ/PhpStorm

PhpStorm et IntelliJ proposent d'ajouter un fichier au versionnement (ex: git add), mais ne permettent pas de le retirer.

Une solution de contournement simple consiste à le faire en ligne de commande :

git rm --cached mon_fichier
git commit -m 'suppression du fichier'

pour un répertoire entier, ajoutez l'option -récursive :

git rm -r --cached mon_repertoire
git commit -m 'suppression du répertoire'

Astuce Configurer le débogueur PHPStorm avec Apache sur une VM

Si vous utilisez une VM LAMP et PHPStorm, vous pouvez utiliser son débogueur pas à pas et visualiser/modifier vos variables en temps réel au cours de l'exécution.

Pour cela, plusieurs étapes sont nécessaires.

Installation de XDebug

Connectez-vous à votre VM, et lancez la commande d'installation :

sudo apt-get install php5-xdebug

Activez ensuite le débogage distant de xdebug en éditant le fichier /etc/php5/apache2/conf.d/20-xdebug.ini. Ajoutez-y les lignes suivantes :

xdebug.remote_enable=1
xdebug.remote_host=192.168.0.1
xdebug.remote_port=9000
xdebug.max_nesting_level=500

Remarques :

Remplacez l'IP par celle de la machine sur laquelle vous lancez PHPStorm. La dernière ligne évite une erreur de récursion lors du débogage

Ajout d'un environnement distant dans PHPStorm

Ajoutez une nouvelle connexion SSH à votre VM :

  • Allez dans File > Settings... > Build, Execution, Deployment > Deployment
  • Cliquez sur le + vert à droite, pour ajouter un environnement
  • Choisissez un nom
  • Dans Connection, choisissez le type SFTP, et renseignez toutes les informations
  • Pour le Root path, indiquez le chemin vers le répertoire contenant vos sources sur votre VM (ex : /var/www/mon-site), ou un répertoire parent (ex : /var/www)
  • Dans Mappings, remplissez les 3 champs de chemin
    • Local path : la racine de votre projet sur la machine qui lance PHPStorm
    • Deployment path : le chemin relatif depuis le Root path défini précédemment, vers votre projet sur la VM (ex : / ou /mon-site)
    • Web path : / si vous utilisez un nom de domaine pointant directement vers votre projet
  • Validez

Précisez le mapping :

  • Allez dans File > Settings... > Languages & Frameworks > PHP > Server
  • Sélectionnez le serveur que vous venez de configurer
  • Pour chaque répertoire contenant des fichiers PHP à déboguer, cliquez à droite, dans la colonne Absolute path on the server
  • Saisissez le chemin absolu vers le répertoire correspondant sur votre VM (ex: /var/www/monsite/web ou /var/www/monsite/vendor)
  • Validez

Installation d'une extension pour navigateur

Pour déclencher le débogage, il faut ajouter un cookie à vos requêtes lors de votre navigation.

L'extension easy Xdebug pour Firefox et XDebug Helper pour Chrome permettent d'activer/désactiver ce cookie automatiquement via un bouton.

Le site officiel pour PHPStorm liste d'autres extensions pour d'autres navigateurs.

Activez le débogage dans votre navigateur.

Activation dans PHPStorm

Cliquez sur le bouton Start Listening for PHP Debug Connections présent dans la barre d'outil de PHPStorm (téléphone gris avec un sens interdit rouge et un insecte vert).

Début du débogage

Affichez une page de votre site.

Lors du premier débogage, une popup apparaît dans PHPStorm vous demandant de confirmer le débogage (normalement la configuration présentée dans la popup n'a pas besoin d'être modifiée).

Pour les suivants, vous devriez voir apparaître une petite notification dans PHPStorm vous disant que le débogage a fonctionné, mais ne s'est pas arrêté. Dans cette notification, vous pouvez activer l’arrêt automatique à la première ligne du fichier index.php. Sinon, ajoutez un point d'arrêt (clic dans la marge de gauche du fichier PHP à déboguer). Rechargez la page.

Astuce Suivre les liens symboliques

Si vous utilisez Virtual Box sous Windows pour émuler des VM sous Linux, avec des répertoires partagés, vous aurez surement des problèmes de création de liens symboliques dans ces répertoires.

Il suffit de créer les liens symboliques côté Windows et non pas côté VM. Cependant, cela peut ne pas être suffisant, si vous utilisez une version VirtualBox 4.1.8 ou ultérieure.

Dans ce cas, il vous faut modifier un paramètre désactivé par défaut, via la commande suivante :

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "<nom_de_la_vm>" VBoxInternal2/SharedFoldersEnableSymlinksCreate/<nom_du_partage> 1

Astuce Monter automatiquement un disque partagé au démarrage

Avec Virtualbox, on peut partager des répertoires depuis son hôte vers la machine virtuelle.

Par défaut, Virtualbox les monte dans /media/sf_<nom_partage> et attribut le répertoire à l'utilisateur vboxsf.

Pour monter automatiquement le répertoire à l'endroit de votre choix, vous pouvez modifier le fichier /etc/rc.local, et ajouter cette ligne :

mount -o uid=500,gid=500,umask=002 --bind /media/sf_<nom_partage> /mon/repertoire/cible

Remarque :

Les options uid et gid permettent d'attribuer le répertoire à un utilisateur et à un groupe spécifique. 500 correspond par exemple à l'utilisateur d'Apache www-data (la plupart du temps).

Erreur L'interface eth1 n'est pas lancée au démarrage de la VM

Avec Virtualbox, vous déclarez parfois deux interfaces réseaux pour votre VM (ex: connexion par pont + réseau privé hôte).

Souvent, la deuxième interface n'est pas reconnue au démarrage de la VM.

Pour éviter cela, modifiez le fichier /etc/network/interfaces, en ajoutant ces lignes, et redémarrez la VM :

allow-hotplug eth1
iface eth1 inet dhcp

Astuce Transformer une VM du format vdi vers vmdk

Si vous travaillez avec Virtualbox, vos VM ont peut-être le format par défaut proposé par le logiciel : vdi.

Malheureusement beaucoup de serveurs de virtualisation ne reconnaissent pas ce format mais plutôt le vmdk.

Voici une ligne de commande permettant d'effectuer la conversion de la VM de vdi vers vmdk :

vboxmanage clonehd ma_vm.vdi ma_nouvelle_vm.vmdk -format VMDK -variant Fixed,ESX

Remarque :

Vous devez éteindre la VM à copier et stopper Virtualbox avant de lancer la commande.

Astuce Screen : le multiplexeur de terminaux

Screen permet d'ouvrir plusieurs terminaux dans une même console, de passer de l'un à l'autre et de les mémoriser pour les récupérer plus tard.

Si vous avez une interface graphique sous Linux, vous avez souvent plusieurs consoles d'ouvertes, ou même une seule avec plusieurs onglets.

Mais si vous n'avez pas d'interface graphique, ou si vous accédez à votre machine linux avec PuTTY, vous n'avez pas cette possibilité. C'est là que Screen entre en jeu.

Installation

Screen est disponible sur les dépôts standards. Vous pouvez donc l'installez simplement via apt ou yum.

Remarque :

Sous Debian, vous devrez peut-être ajouter des dépôts supplémentaires (Ex: Debian 7.x)

Utilisation

Voici un cas d'utilisation classique de Screen.

  • Vous accédez à votre serveur en SSH depuis votre machine A au boulot.
  • Vous tapez plusieurs commandes dont une partie connectée avec l'utilisateur user1, et l'autre avec user2.
  • Vous quittez le boulot et rentrez chez vous. Vous souhaitez récupérer sur votre machine B votre console telle que laissée en quittant la machine A.

Tout ça est possible avec Screen et ces quelques commandes

  • Accédez au serveur en SSH comme d'habitude, depuis votre machine A au boulot

  • Créez un nouveau screen en nommant la session :

    screen -S ma_session
  • Exécutez une commande, connecté en user1

  • Ouvrez un nouveau terminal avec CTRL + A, puis C

  • Changez d'utilisateur (user2) et exécutez une commande

  • Naviguez vers l'autre terminal (connecté en user1) avec CTRL + A, puis N

  • Exécutez une commande, connecté en user1

  • Détachez le screen (il reste actif mais vous n'y êtes plus connecté) avec CTRL + A, puis D

  • Éteignez la machine A, retournez à la maison

  • Allumez votre machine B à la maison, et connectez-vous au serveur en SSH comme d'habitude.

  • Récupérez votre session screen :

    screen -r

Vous récupérez ainsi les deux terminaux dans l'état où vous les avez laissés.

Remarque :

Si vous avez plusieurs sessions en cours, screen -r vous en affichera la liste. Il faudra utiliser screen -r nom_de_session pour choisir celle que vous souhaitez récupérer.

Bonus

  1. Pour fermer le terminal courant : CTRL + D. Si c'était le seul, cela quittera screen.
  2. Pour naviguer rapidement entre les deux derniers terminaux utilisés : CTRL + A, puis A
  3. Pour pouvoir scroller dans votre terminal lorsque tout n'est pas affiché : CTRL + A, puis ECHAP Vous pouvez maintenant naviguer avec les flèches et pageUp/pageDown.
  4. Pour se connecter à un screen encore attaché : screen -x ma_session
  5. Pour supprimer une session, connectez-vous-y et tapez exit
  6. Pour forcer une session à se détacher (par exemple si vous avez fermé votre terminal sans avoir détaché votre session) : screen -d ma_session
  7. Pour renommer une session : CTRL + Apuis tapez :nom_session new_nom_session et validez avec Entrée
  8. Pour personnaliser l'apparence de screen, et même lancer/récupérer automatiquement un screen dès votre connexion, suivez cet article et ses commentaires.

Marque-page Un décompilateur Java dans Eclipse

L'application Java Decompiler permet de décompiler un fichier .class simple ou tous ceux présents dans un JAR.

Le site de l'application fournit un plugin Eclipse qui ne fonctionne pas avec les dernières versions (testé avec Eclipse Juno). Plusieurs fork ont été créés et ce site en propose un qui fonctionne : JDEclipse-Realign.

Pour l'installer :

  • Cliquez sur Help > Install New Software... dans le menu d'Eclipse
  • Ajoutez un nouveau site via le bouton Add...
  • Choisissez un nom (ex: JDEclipse-Realign) et cette URL : http://mchr3k-eclipse.appspot.com/
  • Cochez JavaDecompiler Eclipse Plug-in > JD-Eclipse (Realign Edition) et suivez la procédure d'installation

Une fois installé et Eclipse redémarré, vérifiez l'association des fichiers :

  • Windows > Preferences > General > Editors > File Associations
  • Pour *.class without source sélectionnez Class File Editor par défaut

Si vous ouvrez un fichier .class (via F3 ou Ctrl + clic sur le nom d'une classe) vous devriez maintenant voir la source décompilée.

Erreur Server sent unexpected return value (409 Conflict) in response to PROPPATCH

Si vous avez l'erreur suivante en commitant sur SVN, c'est sans doute à cause d'un caractère spécial dans votre commentaire.

Command              Commit 
Error                Commit failed (details follow): 
Error                At least one property change failed; repository is unchanged 
Error                Server sent unexpected return value (409 Conflict) in response to PROPPATCH 
Error                request for 
Error                '/subversion/folder/!svn/ayt/r45g987g-h111-ty78-96x3-55gt9pljmo4r/0123' 
Completed! 

Marque-page Afficher du JSON avec Firefox

Lorsque vous affichez un document JSON dans Firefox, vous obtenez quelque chose comme :

{"errorMessageCustom":null,"errorCodeCustom":0,"errorMessage":null,"errorCode":0,"results":[{"message":"Le cache des requêtes sql  a bien été rechargé."}],"nbResults":1,"ok":true}

Si vous êtes en train de tester des services web qui retournent du JSON et que vous voulez afficher les résultats, cette extension Firefox vous sera très utile : JSON Lite.

Pour le même JSON, vous obtiendrez un affichage bien plus agréable :

Afficher du JSON

Marque-page Documenter et tester ses webservices avec Swagger

Si vous créez des webservices et les distribuez, il est utile de fournir également la documentation expliquant comment les utiliser.

Il existe un outil proposant une interface web pour tester des webservices, qui détaille également leur utilisation : Swagger.

Swagger UI

Cet outil gère tous les types de requête HTTP (GET, POST, PUT, DELETE, ...). Il permet d'envoyer des données au format JSON ou autre, d'afficher les réponses avec coloration syntaxique, les codes d'erreur, ...

Chaque webservice est détaillé dans une structure de données au format JSON. Cette structure peut être générée automatiquement pour de nombreux langages et Frameworks, notamment en utilisant des annotations particulières dans vos méthodes.

Marque-page Tester des webservices avec Firefox

Il est simple de tester un webservice via un navigateur web lorsque l'appel est une requête de type GET, mais c'est beaucoup moins évident pour les requêtes POST, PUT et autres.

L'extension RESTClient de Firefox permet de faire tout cela.

REST Client

Grâce à elle, vous pouvez envoyer des données au format texte, JSON ou autre, et afficher la réponse de manière lisible. Il est possible d'ajouter des header personnalisés, ou de s'authentifier auprès du webservice.

Si le webservice retourne du JSON, la réponse sera présentée avec indentation et coloration syntaxique.

De plus, vous pouvez sauvegarder vos requêtes et les réutiliser par la suite.