Kévin Subileau

Espace personnel

Git-Logo

Git - Modifier un ancien commit avant publication

Lorsque l'on travaille avec Git, en cas d'erreur sur le dernier commit comme un fichier manquant ou une portion de code resté commentée, il est simple de le modifier avec le paramètre --amend, tant que ce commit n'a pas été poussé sur le dépôt public.

Mais qu'en est-il pour un commit plus ancien ? Imaginez par exemple que vous faites deux commits et que vous vous apercevez d'une erreur sur l'avant dernier, juste avant de pousser le tout sur le dépot public. Pour corriger cette bavure, vous pouvez alors utiliser la séquence de commandes suivante.

Tout d'abord, commencez par identifier le numéro du commit que vous souhaitez modifier. Pour cela, vous pouvez utiliser la commande git log pour afficher l'historique. Disons qu'il s'agit par exemple du commit b8603aca. Utilisez ensuite la commande rebase pour revenir à ce commit :

git rebase --interactive b8603aca^

Bien évidemment, remplacer le numéro de commit par le vôtre dans la commande précédente. Dans l’éditeur de texte par défaut, remplacer pick par edit sur la ligne correspondant au commit que vous souhaitez modifier, puis enregistrez et quittez. Ouvrez ensuite votre éditeur préféré et faites les modifications nécessaires. Une fois que tout est bon, ajouter les fichiers modifiés et les nouveaux avec git add, puis modifier le commit en utilisant la commande suivante :

git commit -a --amend --no-edit

Ensuite, il ne vous reste plus qu'à restaurer les commits suivants avec la commande ci-dessous :

git rebase --continue

Résolvez les éventuels conflits et c’est tout ! Notez bien que cette méthode ne fonctionne que si les commits à partir de celui que vous souhaitez modifier n'ont pas été poussé sur le dépôt public ! Dans le cas contraire, le plus simple reste de faire un nouveau commit pour corriger les erreurs de l'ancien.

DSC01131_thumb

Sauvegarder et restaurer le MBR

Premier secteur d'un support de stockage, le Master Boot Record ou MBR concentre en 512 octets des données très précieuses pour le fonctionnement correct d'un disque dur, d'un SSD, ou d'une clé USB. De plus, si un système d'exploitation est installé sur le support, le MBR est également primordial pour le démarrage de celui-ci.

En effet, le MBR contient la table des partitions et une routine d’amorçage (un petit programme) permettant de charger le système d’exploitation ou le chargeur d’amorçage (bootloader).

Or parfois, il est possible que le MBR soit endommagé, suite à une erreur de partitionnement ou une infection virale par exemple. Les partitions peuvent alors devenir inaccessibles et le système peut ne plus démarrer en affichant un message d'erreur du type "Boot device not found". Dans ce cas, il suffit parfois de restaurer le MBR pour tout réparer. Encore faut-il avoir une sauvegarde sous la main...

Il y a donc tout intérêt à sauvegarder ces informations essentielles pour pouvoir les restaurer plus tard si nécessaire, d'autant que l'opération est très rapide. Vous devez simplement sauvegarder à nouveau le MBR après chaque repartitionnement ou installation d'un système d'exploitation, car ces opérations en modifient le contenu. La procédure, plutôt simple, est décrite ci-dessous pour Windows et Linux.

Attention toutefois : Les manipulations décrites dans cet article peuvent entrainer une perte de données et même rendre le support inutilisable si elles ne sont pas exécutées correctement ! Tournez 7 fois votre index au-dessus de votre souris avant de cliquer !

Notez également que, pour que la sauvegarde prenne tout son sens, je vous recommande très fortement de l'enregistrer sur un autre support que celui dont vous sauvegarder le MBR (autre disque dur, clé USB, CD-Rom, Google Drive...) pour pouvoir le récupérer lorsque le support sera en panne...
Lire la suite →

firefox-incognito-private

Firefox - Faire passer les requêtes DNS par le tunnel SSH

Mise à jour du 28/02/2015 : Je viens de m'apercevoir que les dernières versions de Firefox (>= 34 je crois) proposent désormais une case à cocher "DNS distant" dans l'écran de configuration du proxy. Cette case à cocher agit sur la même variable de configuration que l'astuce ci-dessous, et a donc le même effet. Plus la peine de bidouiller dans about:config ! Mais bon, je laisse quand même l'astuce si vous utilisez une ancienne version ou si vous aimez vous compliquer la vie :D

Vous pensiez avoir mis votre navigation Web bien à l'abri des regards indiscrets grâce à votre proxy SOCKS réalisé par exemple via un tunnel SSH ? Détrompez-vous ! En réalité, par défaut, seule une partie de vos communications Web sont protégées par cette méthode. L'essentiel des informations nécessaires pour connaitre les sites Web que vous avez visités passent toujours en clair.

C'est le cas notamment des requêtes DNS, qui ne passent pas par le proxy avec la configuration par défaut de Firefox. Le genre de détail qui tue... En effet, à chaque fois que vous visitez un site, un message indiquant son nom est envoyé en clair ! Il suffit d'intercepter ces messages pour avoir un historique assez détaillé de votre navigation.

Heureusement, il est plutôt simple d'y remédier. Sur Firefox, ouvrez une nouvelle fenêtre ou un nouvel onglet et tapez about:config dans la barre d’adresse, comme ci-dessous, puis validez en tapant sur la touche Entrée.

Firefox - Accès à about:config

Vous arrivez alors sur un message d’avertissement vous signalant qu’il peut être dangereux d’apporter des modifications.

Firefox - Avertissement about:config

Prenez note de cet avertissement, puis cliquez sur « Je ferai attention, promis ! ». Dans la nouvelle page qui s’affiche, recherchez la clé network.proxy.socks_remote_dns en utilisant le champ prévu à cet effet.

firefox-about-config-socks-remote-dns

Par défaut cette clé a pour valeur false (désactivé). Pour masquer vos requêtes DNS, faites passer la valeur à true (activé) en double-cliquant sur la ligne ou en cliquant dessus avec le bouton droit de la souris puis sur Inverser. Si la clé n'existe pas, vous pouvez la créer en faisant un clic droit sur une zone blanche de la fenêtre, puis en cliquant sur Nouvelle / Valeur Booléenne.

Vous pouvez ensuite fermer la fenêtre ou l'onglet, les modifications sont immédiatement prises en compte.

Attention, si vous utilisez simultanément Google Chrome, le même problème existe également et il faut lancer le navigateur en précisant le paramètre --proxy-server pour le corriger. Idem pour Internet Explorer, où il n'existe en revanche pas de solution à ma connaissance.

Vos requêtes DNS sont maintenant protégées, mais sachez toutefois que d'autres contenus peuvent continuer à être transmis en clair, notamment les contenus Flash comme les vidéos ou les jeux, et vous ne pourrez pas être sûr à 100% que vous êtes totalement intraçable. Si vous souhaitez vraiment vous assurer autant que possible de masquer toutes les communications de votre PC, alors il est préférable de se tourner vers d'autres solutions, comme le VPN ou le réseau Tor.

Maintenir une connexion SSH inactive ouverte

Avec certains serveurs, il arrive parfois de subir des déconnexions intempestives après une période d'inactivité plus ou moins longue. Vous ouvrez la connexion SSH, vous l'utilisez un peu, vous faites autre chose pendant un certain temps en laissant votre connexion ouverte, puis, quand vous revenez, vous constatez que la connexion SSH s'est interrompue.

En fait, le plus souvent, il ne s'agit pas d'un problème au niveau du serveur SSH, ni même du réseau de votre fournisseur d'accès Internet. Dans la plupart des cas, la connexion inactive est interrompue par les routeurs NAT (comme votre box Internet par exemple).

En effet, SSH utilise une connexion TCP, et les routeurs NAT conservent une table des connexions TCP actives, et suppriment de cette table les connexions inactives depuis trop longtemps pour faire un peu de ménage, ce qui provoque la déconnexion.

Pour contourner ce problème, il faut faire en sorte que des données (quelques octets suffisent) transitent de manière régulière sur la connexion, même lorsque vous ne tapez rien au clavier ou qu'il ne doit rien être affiché. Les routeurs NAT percevront ainsi la connexion comme étant active, et la conserveront dans leurs tables. La bonne nouvelle, c'est que cette solution est très simple à mettre en place, que ce soit sur Windows avec PuTTY ou sur Linux avec le client SSH de base. Lire la suite →

windows-network

Supprimer les anciennes connexions réseau de Windows

Au fur et à mesure que vous ajoutez des connexions réseau (carte réseau, clé USB Wi-Fi) de même type, Windows ajoute un numéro à la fin du nom de la connexion réseau afin que ce nom soit unique. Par exemple, si vous connectez une première clé Wi-Fi, Windows la baptisera probablement Connexion réseau sans fil (ou Wi-Fi sous Windows 8). Si par exemple cette clé tombe en panne et que vous en brancher une seconde pour la remplacer, Windows la nommera Connexion réseau sans fil 2, et ainsi de suite.

Si vous souhaitez renommer cette nouvelle connexion pour lui donner le nom de l'ancienne (c'est à dire retirer le chiffre), Windows le refusera en indiquant qu'une connexion avec le nom spécifié existe déjà. En fait, Windows ne sait pas que l'ancienne connexion ne sera plus jamais utilisée, et la garde donc en mémoire à vie afin de lui attribuer le même nom dans l'hypothèse où elle serait à nouveau utilisée.

connexions_reseau_windows

Pour pouvoir attribuer à nouveau un nom précédemment utilisé pour une autre carte réseau, il faut donc indiquer à Windows que cette carte ne sera plus jamais utilisée en la désinstallant. Pour cela, ouvrez une fenêtre d'invite de commande (Menu Démarrer/Tous les programmes/Accessoires/Invite de commandes), puis tapez les commandes suivantes :

set DEVMGR_SHOW_NONPRESENT_DEVICES=1
devmgmt.msc

Dans la fenêtre du gestionnaire de périphérique qui s'affiche alors, cliquez sur Affichage puis Afficher les périphériques cachés. Cela permet d'afficher les cartes réseau déconnectées mais toujours installées. Dans la liste des périphériques, déroulez la rubrique Cartes réseau, puis supprimer les cartes qui ne vous sont plus utiles en effectuant un clic droit puis Désinstaller. Attention toutefois à ne pas désinstaller une carte encore utilisée sous peine de devoir la réinstaller ! Pour vous y retrouver, sachez que la petite icône à gauche du nom de la carte réseau apparait légèrement plus claire si cette carte n'est pas physiquement connectée à l'ordinateur.

Une fois ce nettoyage correctement effectué, vous devriez désormais pouvoir renommer vos connexions réseau en attribuant des noms précédemment utilisés.

eduroam_trans_200pix

Se connecter à Eduroam, le réseau Wi-Fi universitaire

Eduroam est un réseau sans fil accessible gratuitement à la plupart des étudiants, enseignants et chercheurs des universités françaises (y compris les DOM/TOM), dont l'Université d'Auvergne et l'Université Blaise Pascal à Clermont-Ferrand.

Par rapport aux autres réseaux Wi-Fi universitaires, comme Auversup Sans Fil, Eduroam présente plusieurs avantages. Il offre tout d'abord un débit symétrique généralement plus élevé (autour de 7 Mb/s à Clermont-Ferrand). Ensuite, la connexion se fait automatiquement, sans avoir à saisir son mot de passe à chaque connexion, et est totalement sécurisée et cryptée, contrairement à Auversup Sans Fil où il est possible d'intercepter en clair toutes les communications. Enfin, il est possible de se connecter en déplacement dans une autre université que celle où l'on est inscrit.

Toutefois, la méthode de connexion et de cryptage employée complique un peu le paramétrage initial de la connexion Wi-Fi. Je vous donc propose ce petit guide pour vous aider à configurer correctement la connexion. Ce guide est plus particulièrement destiné aux étudiants et personnels des deux universités clermontoises. Pour les autres universités, certains paramètres peuvent être différents.

Liens rapides : Windows 7 et 8 | Linux (Ubuntu) | Android Lire la suite →

tux-disc

Images disques sous Linux en ligne de commande

Aujourd'hui je vous propose ce petit mémo des différentes commandes utiles à la création et à la gravure des fichiers ISO sous Linux, qui, contrairement à d'autres (suivez mon regard...), dispose à portée de main de tous les outils utiles pour gérer les images disques !

Création d'un ISO à partir d'un disque physique

Tout d'abord, insérez le disque dans le lecteur :P (non je ne suis pas en train de me moquez de vous...), puis tapez la commande suivante :

dd if=/dev/cdrom of=~/image.iso

La commande dd permet simplement d'effectuer une copie brute des données d'un point à un autre. Ici, on indique comme source (if pour input file) le fichier représentant le lecteur de DVD. Au passage, ajustez ce paramètre en fonction de votre distribution Linux. Sur certaines d’entre elles, ce fichier peut se nommer cdrom0, cdrom1, sr0 ou sr1 par exemple. Enfin, le paramètre of (pour output file) permet d'indiquer le chemin du fichier ISO de sortie. Là encore, adaptez ce chemin en fonction de ce que vous souhaitez.

Simplissime, non ? :D

Création d'un ISO à partir d'un dossier

La création d'une image disque à partir d'un dossier de fichiers est tout aussi simple. Cela s'effectue à l'aide de la commande mkisofs. Toutefois, sur certaines distributions, cette commande s’appelle désormais genisoimage suite à des problèmes de licences. Adaptez donc selon votre cas. Si aucune des deux commandes n'est présente, installez le paquet genisoimage.

Voici la syntaxe de la commande :

mkisofs -o ~/image.iso ~/dossier_source

Il vous suffit donc d'indiquer le chemin du fichier ISO en sortie ainsi que le chemin du dossier contenant les éléments à inclure dans l'image disque. La syntaxe de la commande genisoimage est identique, il vous suffit donc de remplacer le nom de la commande.

Monter une image

Pas besoin d'un Daemon tools vérolé pour monter une image disque sous Linux. Il vous suffit pour cela d'utiliser la commande.... mount bien sûr ! Voici la syntaxe à utiliser :

mount -t iso9660 -o loop image.iso /mnt/point_de_montage

On utilise ici le montage en boucle locale (loop), qui doit être activé dans les options de compilation du noyau pour que cette commande fonctionne, ce qui est fort heureusement le cas dans la plupart des distributions.

Gravure d'un ISO

La gravure est une opération un  peu plus délicate car il faut contrôler correctement les paramètres du graveur. Pour cette opération, il faut utiliser la commande wodim, fournie par le paquet du même nom. Pour les mêmes raisons que la commande mkisofs, cette commande se nomme cdrecord sur certaines distributions. Encore une fois, c'est à vous d'adapter. Voici la ligne de commande à utiliser :

wodim -v speed=4 dev=/dev/cdrom image.iso

Ici encore il faut modifier le nom du pseudo-fichier représentant votre graveur en fonction de votre système. Sachez également que la commande wodim permet également d'obtenir des informations sur votre graveur, de graver un CD audio ou encore d'effacer un DVD-RW. Consulter votre meilleur ami le man pour en savoir plus, ou votre second meilleur ami Google :D .

Convertir une image Nero (NRG) en ISO

Les précédentes astuces ne fonctionnent qu'avec des images au format ISO. Si vous avez des images disques issues de Nero au format propriétaire NRG, vous pouvez toutefois les convertir en ISO par deux méthodes. La méthode fainéante consiste à utiliser la commande nrg2iso du paquet éponyme.

nrg2iso image.nrg image.iso

La méthode un peu plus élaborée, mais qui reste assez simple, utilise la commande dd pour retirer simplement l'en-tête que Nero ajoute (c'est exactement ce que fait la commande nrg2iso, et rien de plus !) :

dd if=image.nrg of=image.iso bs=2048 skip=150

A noter que l'utilitaire nrg2iso existe aussi sous une version graphique pour Windows sur ce site.

Voilà, j'espère que ce mémo vous sera utile ! N'hésitez pas à le partager et à le commenter en ajoutant vos propres astuces autour de ce sujet :D

Octocat

GitHub offre 5 dépots privés aux étudiants

GitHub est sans doute le service d'hébergement et de gestion de code source le plus populaire du Web. Par défaut, lorsque vous créez votre compte, vous disposez gratuitement d'autant de dépôts (repository) que vous souhaitez, à condition que ces dépôts soient publics. Si vous ne souhaitez pas publier le code source ou limiter son accès à certaines personnes, vous devez mettre la main à la poche et choisir un des forfaits proposés en fonction du nombre de dépôts privés dont vous avez besoins.

Sauf si, tout comme moi, vous avez toujours la chance toute relative d'être encore étudiant ! En effet, GitHub offre sur simple demande 5 dépôts privés durant 2 ans à tous les étudiants inscrits au service.

Pour cela, après vous être connecté sur la plateforme avec vos identifiants habituels, rendez-vous simplement à l'adresse https://github.com/edu, cliquez sur "I'm a student", et remplissez le court formulaire en indiquant notamment votre nom, votre adresse email, et une courte description de votre besoin. Utilisez de préférence l'adresse email fournie par votre université afin de faciliter le traitement de votre demande. Si cette adresse n'est pas dans la liste déroulante, faites un détour par la page https://github.com/settings/emails pour l'ajouter et la vérifier. Si votre université ne vous fournit pas d'email, vous pouvez utiliser une autre adresse mais il est possible que GitHub vous demande des scans de documents permettant de justifier de votre statut d'étudiant.

Sous réserve que votre demande soit accordée, vous recevrez sous 24 heures environ un email très sympathique à l'adresse que vous avez renseigné pour vous indiquer que votre compte a été mis à jour, vous faisant ainsi économiser près de $170 !

github-free-student-micro-account

Vous pourrez ensuite contrôler l'accès à vos dépôts privés et ajouter si nécessaire votre binôme de projet ou tout autres collaborateurs, étudiants ou non, sans que ces derniers n'aient à payer quoi que ce soit !

Enfin, si vous avez besoin de plus de 5 dépôts privés et que vous ne souhaitez pas débourser un centime, vous pouvez également vous tourner vers d'autres services similaires, comme BitBucket, qui propose un nombre illimité de dépôts privés limités à un quota de contributeurs. Mais vous ne profiterez pas de la grande popularité et de la dimension sociale de GitHub...