Kévin Subileau

Espace personnel

chrome-to-phone

Transférer facilement des pages Web d'un PC à un périphérique Android

J'ai longtemps cherché un moyen simple de transférer l'adresse d'une page Web depuis mon ordinateur vers mon smartphone Android, pour terminer ma lecture en déplacement par exemple. Jusqu’alors, je copiais l'adresse sur un service en ligne pour générer un QR-code que je flashais. On peut aussi s'envoyer l'URL par email ou la recopier manuellement. Ces méthodes fonctionnent bien, mais elles ne sont pas très pratiques.

Mais ça, c'était avant. En effet, j'ai récemment découvert une application Android gratuite, qui, combinée à une extension pour Chrome ou Firefox, permet de réaliser cette tâche d'un simple clic. Cette application, c'est Google Chrome To Phone.

Envoi de liens et de textes

Pour commencer, téléchargez et installez l'application Google Chrome To Phone sur votre smartphone ou votre tablette. Au premier lancement, l'application vous demandera le compte Google à utiliser pour le transfert.

chrome-to-phone-first-screen

Premier lancement de Chrome To Phone

Ensuite, selon votre navigateur, vous devez installer l'extension correspondante. Pour Google Chrome, ça se passe ici. Sur Firefox, elle se nomme FoxToPhone. Une fois installée, vous devriez voir apparaitre une nouvelle icône en haut à gauche de la fenêtre, comme ci-dessous.

chrome-to-phone-extension

L'icône de l'extension, sur Chrome (en haut) et Firefox (en bas)

En cliquant sur cette icône pour la première fois (puis sur le lien Connexion pour Chrome), il vous sera demandé de vous connecter à votre compte Google et d'autoriser l'application à l'utiliser pour le transfert. Bien entendu, vous devez indiquer le même compte que celui que vous avez sélectionné sur votre Android.

Voilà c'est prêt ! Désormais, si vous cliquez à nouveau sur l'icône, la page Web sur laquelle vous êtes sera automatiquement ouverte sur votre smartphone ou votre tablette. Et si c'est un lien Youtube ou Google Maps, l'application correspondante sera lancée. Y'a pas plus simple et efficace, et ça marche aussi si vous n'êtes pas relié au même réseau, y compris en 3G/4G !

Vous pouvez aussi passez par le menu contextuel en faisant un clic droit sur un lien, puis en cliquant sur Chrome To Phone (sur Chrome) ou Envoyer ce lien vers Android (sur Firefox). Pratique pour les liens pointant vers un téléchargement ;) .

Il y a juste une petite limitation : si vous utilisez l'application simultanément sur plusieurs périphériques et avec le même compte Google, les liens seront envoyés à tous les périphériques. Je n'ai pas trouvé de moyen d'en sélectionner un en particulier autrement qu'en utilisant des comptes différents.

Envoi de fichiers et de dossiers

Chrome To Phone ne permet que l'envoi de liens, de textes ou de numéros de téléphone, et uniquement dans le sens ordinateur vers Android. Si vous souhaitez en plus pouvoir envoyer aussi facilement des fichiers et dans les deux sens, vous pouvez essayer l'application Files Drag & Drop.

L'application Files Drag & Drop sur PC et smartphone

L'application Files Drag & Drop sur PC et smartphone

Le principe reste le même, vous devez installer l'application sur votre Android et sur votre ordinateur. L'avantage par rapport à Google Drive ou Dropbox est que les fichiers sont transférés directement de pair à pair, et ne passent pas par une plateforme d'hébergement ou un service tiers sur Internet. Ainsi, le transfert est plus rapide et vous pouvez envoyer des données sensibles sans inquiétude. En revanche, contrairement à Google Chrome To Phone, il est nécessaire que le smartphone et le PC soit connecté au même réseau local, et cela ne fonctionne donc pas via la 3G/4G. De plus, pour pouvoir bénéficier de toutes les fonctionnalités sans pub, vous devrez débourser 2€ pour acheter la version complète.

Voilà en tout cas des applications bien pratiques pour faciliter le transfert de données entre votre ordinateur, votre tablette et votre smartphone !

clock

Debounce et throttle : limiter les appels successifs à une fonction Javascript

Lorsque l'on développe une application Web réagissant à certains évènements en Javascript, comme le redimensionnement de la fenêtre, le mouvement de la souris ou la frappe au clavier, les fonctions rattachées à ces événements risquent d'être appelées très fréquemment. Si le code contenu dans ces fonctions est coûteux en ressources, cela peut ralentir considérablement l'application Web.

Pour améliorer les performances, ou plutôt ne pas les plomber, il existe deux techniques simples, appelées debounce et throttle. Toutes deux permettent de réduire le nombre d'appels à une fonction dans un intervalle de temps donné. En effet, il est souvent inutile d'exécuter ces fonctions à chaque fois que l’événement est déclenché.

Imaginons par exemple que l'on souhaite synchroniser sur le serveur, via des appels AJAX, le contenu d'un champ de saisie au fur et à mesure que l'utilisateur tape le texte (comme le fait Google Docs par exemple). Dans ce cas, plutôt que de solliciter le serveur à chaque caractère saisi ou inutilement lorsque le texte reste inchangé, il peut être plus judicieux de sauvegarder le texte toutes les 5 secondes tant que l'utilisateur le modifie, et de ne plus faire de requêtes lorsque que le texte reste inchangé. Et c'est exactement ce que la fonction throttle permet de faire.

Cependant, bien que ces deux techniques soit assez similaires, il existe une différence fondamentale dans leurs fonctionnements qu'il est important de bien comprendre pour les utiliser correctement.

Je vais donc vous présenter ces deux méthodes l'une après l'autre, en vous expliquant leurs fonctionnements et en vous donnant le code Javascript nécessaire pour les mettre en place.
Lire la suite →

windows-network

Gérer les emplacements réseaux sur Windows 7

Sur Windows comme ailleurs, il y a parfois des choses absolument pas intuitives. Parmi elles, je pense que la gestion des emplacements réseaux sous Windows 7 fait bonne figure. J'ai en effet mis du temps avant de découvrir cette fonctionnalité bien cachée.

A chaque fois que vous vous connectez à un réseau filaire ou Wi-Fi, Windows lui associe automatiquement un nom de réseau. Et lorsque vous vous connectez plusieurs fois à un même réseau, il peut arriver que Windows ajoute un nombre derrière ce nom (par exemple : Wi-Fi 1, Auversup sans Fil 2 ...), notamment lorsque vous changer de borne Wi-Fi au sein d'un même réseau. Au fur et à mesure que vous utiliser votre ordinateur, le nombre de réseaux enregistrés peut ainsi considérablement augmenter.

Pour faire un peu de ménage dans tout ça, ou tout simplement renommer ou personnaliser un emplacement réseau, il faut donc accéder à cet écran très discret de Windows 7. Lire la suite →

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.

festival-of-colors

Color Thief PHP : extraire les couleurs dominantes d'une image

Color Thief PHP est une classe PHP qui vous permet d'extraire la couleur dominante ou une palette de couleurs à partir d'une image JPEG, GIF, ou PNG. Le projet est disponible sur GitHub, et sur Packagist. Vous pouvez également voir le code en fonctionnement sur cette page de démonstration.

La particularité de cette classe est qu'elle n'utilise pas une simple moyenne arithmétique pour déterminer la couleur dominante, contrairement à de nombreux scripts disponibles sur le web. En effet, cette méthode donne souvent des résultats plutôt aberrants, avec une couleur moche qui ne ressemble à rien de ce que l'on perçoit dans l'image. Ici, un algorithme avancé de quantification de couleurs est utilisé. Cet algorithme, nommé "Modified Mean Cut Quantizer", est comparable à celui utilisé par la compression JPEG. L'avantage est que les couleurs calculées sont le plus souvent visuellement très proches de celles présentes dans l'image d'origine, comme vous pouvez le voir sur l'exemple ci-dessous :

color-thief-example

Un exemple de palette de couleurs obtenue grâce à Color Thief PHP

L'utilisation de la classe est très simple, surtout si vous utilisez Composer, mais peut être assez gourmande en ressources en fonction de la taille de l'image et de la qualité demandée. Je vous conseille donc de conserver le résultat en base de données plutôt que d’exécuter le script à chaque chargement de page. Pour plus d'informations, je vous invite à vous reporter à la documentation sur GitHub.

Les applications de cette classe ne sont limitées que par votre imagination : moteur de recherche par couleur, adaptation des couleurs de l'interface graphique en fonction de l'image affichée... Alex P. Gates a même développé un script PHP capable de modifier la couleur d'une lampe en fonction des couleurs d'une image, en utilisant Color Thief PHP et une lampe Philips Hue.

Enfin, si vous avez besoin de cet outil coté client en Javascript, sachez qu'il s'agit en fait d'un portage d'un script javascript. Vous pouvez donc utiliser le script Color Thief original réalisé par Lokesh Dhakar.

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 →