Le problème des adresses IP dynamiques

Depuis plus d’un an, j’héberge sur une de mes machines un serveur Minecraft qui permet à mon ami et moi d’accéder à une map en tout temps. Pour parvenir à le faire, j’ai configuré mon routeur pour rediriger le port utilisé par le serveur de Minecraft vers la machine de mon réseau sur laquelle il s’exécute. Malheureusement, cela ne suffit pas à rendre la map accessible, car l’adresse IP permettant d’atteindre le serveur est dynamique.

Pour éviter de laborieux échanges de données, j’ai utilisé un compte DynDNS pour associer le nom de domaine ericbuist.dyndns.org à mon adresse IP dynamique. Mon routeur, exécutant DD-WRT, pouvait communiquer correctement avec DynDNS afin d’effectuer la mise à jour. Seule contrainte: je devais me rappeler, au moins une fois par mois, d’établir une connexion manuelle au site de DynDNS afin de garder mon compte actif.

Malheureusement, les choses n’en sont pas restées là. Durant la semaine du 9 avril 2014, j’ai appris que le service gratuit de Dyn serait terminé et qu’il me fallait soit passer au service payant, soit trouver un autre fournisseur de DNS dynamique. J’ai tenté longtemps de trouver une moyen pour réutiliser mon nom de domaine ericbuist.com existant plutôt que m’enregistrer auprès d’encore un nouveau fournisseur. Malheureusement, cela s’est avéré totalement impossible. HostPapa permet certes d’ajouter des sous-domaines, mais il faut indiquer l’adresse IP statique dans le cPanel. Pour qu’un script puisse mettre à jour dynamiquement, il doit utiliser l’API de cPanel et s’y authentifier, ce qui implique de mettre mon mot de passe HostPapa en clair dans du code ou un fichier de configuration! Ce solution PHP a été appliquée, apparemment avec succès, mais je trouvais ça un peu moche.

Cheap-DomainRegistration, le registrar avec qui j’ai mon domaine ericbuist.com, n’offre aucune option allant dans ce sens, aucun moyen de configurer les zones DNS de façon détaillée. On peut définir des sous-domaines, mais cela se limite à rediriger le trafic web vers une URL.

Alors voici comment j’ai résolu ce problème imprévu. D’abord, je me suis créé un compte sur freedns.afraid.org. Cela m’a permis d’obtenir ericbuist.twilightparadox.com. J’ai reconfiguré mon routeur pour appliquer le DDNS sur ce nouveau compte. Il m’a fallu fournir mon nom d’utilisateur et mot de passe FreeDNS, puis comme « hostname », une chaîne de la forme ericbuist.twilightparadox.com,<hash> où <hash> est le code numérique de l’URL de mise à jour fournie par FreeDNS.

Toutefois, non désireux d’en rester là, j’ai accédé au cPanel de mon compte HostPapa. Sous la section Domaines, j’ai accédé à l’Éditeur avancé de zone DNS. De là, j’ai créé une entrée de type CNAME permettant de lier le sous-domaine eldorado.ericbuist.com à mon sous-domaine dynamique. Ainsi, si je trouve une meilleure solution plus tard impliquant moins de couches, je pourrai reconfigurer mes enregistrements DNS pour l’appliquer de façon transparente.

Voici quelques solutions à plus long terme que je pourrais être appelé à explorer ou mettre en place.

  • Obtenir une adresse IP fixe auprès de mon fournisseur d’accès Internet. Cela risque de me forcer, si je reste avec Vidéotron, à passer au plan commercial, ce qui va gonfler ma facture inutilement. Il existe probablement des fournisseurs offrant ce genre de service à moindre prix, mais possiblement avec une moins bonne stabilité de connexion.
  • Déplacer mon enregistrement de ericbuist.com de Cheap-DomainRegistration vers un fournisseur de domaine dynamique tel que Dyn. Je ne suis pas certain de bénéficier de suffisamment de contrôle pour pouvoir diriger les requêtes à ericbuist.com chez HostPapa et seulement redéfinir un sous-domaine du côté du fournisseur dynamique. En cas d’échec, je risque de perdre mon domaine ericbuist.com dont je suis propriétaire depuis 2004. Pour amorcer un transfert de nom de domaines, il faut obtenir un numéro d’autorisation chez le registrar existant, et parfois l’option pour obtenir un tel numéro est inexistante. C’est alors un cas de difficiles négociations avec le registrar. Je serais vraiment déçu et choqué de devoir enregistrer ericbuist2.com et utiliser cela pour mon site web en lieu et place ericbuist.com!
  • Héberger mon serveur de Minecraft sur une machine disposant d’une adresse IP fixe. Je pourrais tenter ma chance avec Amazon EC2 ou CreeperHost, mais cela va me coûter des centaines de dollars par année et la machine virtuelle que j’obtiendrai sera sans doute moins puissante que la machine sur laquelle le serveur actuel s’exécute.
  • Si vraiment plus rien ne fonctionne, je pourrais me concocter un script obtenant mon adresse IP et la plaçant dans un fichier accessible par une URL public, en le téléchargeant sur mon espace web ou sur Dropbox. Ensuite mon ami pourrait consulter ce fichier et obtenir la nouvelle adresse. Un raffinement possible serait qu’un script le fasse et aille modifier le fichier hosts pour associer un nom à l’adresse dynamique, mais ça devient plutôt complexe pour une affreuse patch qui n’a pas lieu d’être.

Le problème des caractères trop petits sous Windows

Il m’est arrivé à maintes reprises d’éprouver des difficultés avec des applications qui affichent des caractères trop petits ou avec le pointeur de la souris qui est difficile à retrouver. Windows 7 a introduit une fonctionnalité très intéressante pour cela et par chance, elle a été préservée sous Windows 8. Elle permet de mettre à l’échelle les caractères et éléments de boîtes de dialogue, un peu comme si les applications s’exécutaient sur un écran à résolution inférieure, mais tous les pixels de l’écran demeurent accessibles pour dessiner des caractères vectoriels ou des images.

Mais certaines applications se comportent mal avec ce paramètre. Il faut alors divers contournements. Sur cette page, j’indique la méthode générale pour appliquer la mise à l’échelle ainsi que les contournements quand elle cause problème.

Méthode générale

La façon la plus simple d’atteindre l’option nécessaire pour activer la mise à l’échelle est de cliquer du bouton droit n’importe où sur le Bureau mais pas sur une icône d’application. Cela fonctionne très bien sous Windows 8 et, si je me rappelle bien, sous Windows 7 aussi. Un menu surgit alors. Il faut y sélectionner l’option Personnaliser. Une boîte de dialogue surgit.

customize

À l’intérieur de cette boîte de dialogue, il y a plusieurs options utiles, la première étant Modifier les pointeurs de souris. Elle permet d’accéder à des options ayant trait à la vitesse et la taille du pointeur de la souris. L’onglet Pointeurs, montré sur la figure suivante, est celui qui m’intéresse le plus. Il permet d’activer un jeu de pointeurs plus grands dont j’ai absolument besoin pour travailler efficacement sur toute machine Windows!

mouse

Mais il y a un problème: sur un écran de résolution HD (1080 lignes) de taille raisonnable (genre 22″ ou 24″), même le pointeur le plus grand est trop petit pour moi. Il me faut donc recourir à une seconde astuce, et c’est en fait la plus fondamentale des deux! Retournons à la fenêtre de personnalisation et sélectionnons Affichage dans la section inférieure gauche. Cela fait apparaître la fenêtre suivante.

dpiPou

Pour certains, l’option 120% suffira. Pour d’autres, comme moi, on a besoin de 150%. Il est possible d’obtenir une taille personnalisée supérieure, mais au-delà de 150%, beaucoup d’applications en souffrent. Pour moi, 150% est un juste équilibre. Le changement fait, il faut redémarrer la session. Après, comme par magie, le pointeur de la souris et les caractères deviennent plus grands.

Le plus beau, c’est que ces réglages sont spécifiques à la session. Si un utilisateur désire obtenir de grands caractères tandis que d’autres personnes veulent se servir de la machine avec les caractères réguliers, c’est parfaitement possible à condition de créer des comptes utilisateur multiples.

Application récalcitrante, cas de base

Certaines applications tolèrent mal la mise à l’échelle. Certaines tronquent le texte des boîtes de dialogue ou les étiquettes sur les boutons. D’autres encore manifestent des comportements surprenants qui rend le problème particulièrement ardu à détecter. Par exemple, sous Ableton Live 8 et 9, cliquer sur un contrôle fait sauter le pointeur ailleurs dans l’écran et pousse le réglage du contrôle au maximum. Le logiciel en devient inutilisable et il est difficile de trouver pourquoi. Sous Corel VideoStudio X6, dès qu’un aperçu de vidéo est joué, la fenêtre d’affichage devient deux fois plus petite. Ce genre de problèmes est épineux, car aucune, je dis bien aucune recherche Google ne permet d’aboutir à la moindre piste de solution!

Par chance, Microsoft a pensé à cela en mettant en place un contournement: désactiver la mise à l’échelle pour certaines applications. Pour y parvenir, il suffit de trouver le raccourci vers l’application. La façon la plus simple d’y arriver à la fois sous Windows 7 et Windows 8 est de presser la touche Windows et taper le nom de l’application. Le raccourci devrait apparaître, dans le menu Démarrer sous Windows 7, à l’intérieur de Métro sous Windows 8. Cliquer du bouton droit permet d’accéder à un menu.

Sous Windows 7, il suffit d’employer l’option Propriétés. Malheureusement, c’est plus compliqué sous Windows 8. Il faut cliquer du bouton droit, ce qui fait surgir un menu semblable à la figure suivante.

win8menu

 

Dans cette fenêtre, il faut cliquer sur Emplacemeent du fichier. Ensuite, il faut cliquer du bouton droit sur le fichier et puis Propriétés.

Dans la fenêtre de propriétés, sélectionnons l’onglet Compatibilité. Cela mène à la fenêtre suivante.

dishighdpi

 

Dans cette boîte de dialogue, il suffit de cliquer sur Désactiver la mise à l’échelle et voilà. Au prochain démarrage de l’application, les caractères seront de taille normale pour l’application modifiée, mais le pointeur de la souris demeurera de la taille agrandie. On a donc le meilleur des deux mondes.

Quand les options de compatibilité sont désactivées

Microsoft a malheureusement émis une fausse hypothèse selon laquelle on n’a pas besoin de ces options de compatibilité pour les applications 64 bits, supposément de nouvelle génération. Par conséquent, pour une application 64 bits, l’option permettant la mise à l’échelle est inaccessible… depuis l’interface graphique. Un exemple de cas récalcitrant est Live 9 de Ableton, un superbe logiciel de musique que j’ai bien aimé et que j’ai failli cesser d’utiliser complètement à cause de ça!

Jusqu’à tout récemment, le seul contournement dont je disposais consistait à exécuter l’application dans un compte utilisateur secondaire avec des paramètres de mise à l’échelle standard. Le pointeur de souris trop petit et la nécessité de me déconnecter et reconnecter pour utiliser Live 9 rendait la composition musicale un peu désagréable. Par chance, le jour de l’Action de Grâce 2013, Dieu m’a fait une faveur en me permettant de trouver ce post. Il indique qu’il est possible de modifier les paramètres de compatibilité depuis la base de registre et, après un essai, je me suis rendu compte que cela fonctionne même pour les applications 64 bits!

Alors pour résoudre mon petit problème, j’ai démarré l’utilitaire Regedit, en appuyant sur Windows-R et en tapant regedit. J’ai navigué jusqu’à la clé HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers. Là, j’ai créé une valeur REG_SZ dont le nom était le chemin complet de l’application Ableton Live 9, et la valeur, ceci: ~ HIGHDPIAWARE.  Démarrer Ableton Live 9 avec cela a permis d’utiliser le logiciel, depuis mon compte principal.

Voici de quoi a l’air la fenêtre de l’éditeur de base de registre juste après le réglage.

regdpi

Et après?

Bien entendu, les choses ne sont pas aussi simples. Même avec le réglage de mise à l’échelle en place, certaines applications affichent des caractères trop petits. Il faut souvent appliquer des réglages spécifiques aux applications. Parfois, CTRL-roulette de la souris permet d’agrandir les caractères, mais ce n’est pas universel. Dresser une liste des astuces spécifiques serait fastidieux et la liste serait sans doute obsolète au moment où elle serait consultée. Une astuce fonctionnant en 2013 pour telle application peut échouer en 2014 pour une version ultérieure de l’application! C’est une lutte sans fin.