On ne fait pas de la magie

«Toute technologie suffisamment avancée est indiscernable de la magie.» Arthur C. Clarke

Auteur/autrice : Dominique Colombani

  • Comment régler la taille du curseur texte de Firefox et Thunderbird ?

    Comment régler la taille du curseur texte de Firefox et Thunderbird ?

    j’ai expliqué dans le premier article sur le sujet du confort visuel comment il est possible d’augmenter la taille du curseur texte sous Windows 10, afin de pouvoir le repérer facilement lorsqu’on a un texte à éditer.
    Malheureusement, ce réglage ne s’applique pas aux navigateurs Web Chrome et Firefox, ni au client de messagerie Thunderbird.

    Continuer la lecture

  • Taille des menus, du curseur texte et du pointeur de la souris dans les applications

    Taille des menus, du curseur texte et du pointeur de la souris dans les applications

    Une fois n’est pas coutume, je ne vais pas parler de magie, mais d’énervement vis à vis des applications, suite à ma situation personnelle.
    Atteint d’un glaucome, je suis confronté à une diminution de ma vision qui se traduit par des difficultés à distinguer les textes écrits en petits caractères, en particulier sur les écrans.
    Vous allez me dire qu’il est facile aujourd’hui de changer les tailles de caractères pour les régler à notre gout. C’est exact, pour la majorité des systèmes et des applications, soit de façon intuitive en utilisant un zoom intégré (par exemple avec un CTRL + ou un CTRL molette souris), soit par l’utilisation d’option d’affichage, plus ou moins claires.

    Mais quid des menus ? quid du curseur ? ou du pointeur de la souris ?

    (suite…)
  • Exercices pour étudier le C++ moderne

    Exercices pour étudier le C++ moderne

    Si vous apprenez le C++, je vous propose une série d’exercices de type fil rouge pour illustrer les points importants à comprendre.
    En effet, lors de l’apprentissage du C++, faire des exercices est très important, car cela permet de mieux comprendre et mémoriser les nombreux éléments que l’on découvre.
    Ces exercices font partie de ceux que j’utilise lors de formations, aussi bien en présentiel qu’à distance.

     

    Continuer la lecture

  • A quoi sert if constexpr en C++ 17 ?

    A quoi sert if constexpr en C++ 17 ?

    C++ 17 a fourni un lot de nouveautés, dont une très utile lors de la compilation, if constexpr, pour faciliter la vie des développeurs. Elle offre plus de possibilités que l’utilisation des #if et autres #ifdef.

    (suite…)
  • Fin de la gratuité de Google Maps

    Fin de la gratuité de Google Maps

    À partir du mois de juin, l’hégémonie de Google Maps comme LA solution pour présenter des cartes sur les sites Web et dans les applications va couter très cher aux éditeurs. Les conditions d’utilisation : gratuité et tarifs assez bas vont changer de façon drastique, en divisant par 25 le nombre d’affichages gratuits, ce qui peut remettre complétement en cause le modèle économique d’un éditeur. L’article de Christian Quest détaille clairement ces modifications.

     

    (suite…)
  • Faut il passer la meta description des pages à 300 caractères ?

    Depuis le mois de décembre 2017, Google affiche parfois des descriptions de page de 300 caractères au lieu des 160 qui étaient la norme depuis des années. La question de savoir s’il faut réécrire ces descriptions avec cette nouvelle taille se pose donc naturellement.

    A quoi sert la description ?

    La description n’est pas directement utile pour le référencement. Elle est affichée sous le titre de la page, dans l’affichage des résultats d’une recherche. Elle sert à détailler le contenu de la page afin d’inciter à cliquer pour lire la page.

    C’est donc un texte fondamentalement destiné à être lu par une personne et il doit être le plus clair possible sur l’intérêt de la page.

    La description de Google n’est pas obligatoirement le contenu de meta description

    Un élément à prendre à compte est que la meta description fournie sur une page est une indication que l’auteur donne à Google. Mais Google peut parfaitement décider de prendre un paragraphe de la page s’il estime qu’il est plus pertinent que la meta description. Et il n’existe pas de critère connu pour savoir ce que fera Google.

     

    Quelques pistes de réponse avec  John Mueller

    Google ne fournit pas officiellement une position claire sur ce qu’il convient de faire.

    Une idée mise en avant est de consulter le rapport « analyse de la recherche » de la Search Console afin de déterminer si Google affiche des descriptions longues sur certaines pages et requêtes. Si c’est le cas, John Mueller estime alors que modifier les meta descriptions peut avoir un intérêt.

    Passer la meta description à 300 caractères, une bonne pratique ?

    Même si on n’est pas sur qu’elle sera utilisée, il peut donc sembler intéressant d’augmenter la taille de la meta description, sauf que

    • la description affichée n’est pas toujours de 300 caractères et peut rester autour de l’ancienne limite de 160 caractères
    • la description doit être un texte clair et honnête sur l’intérêt de la page : il faut pousser les internautes intéressés à cliquer sur le lien, et ne pas  les tromper pour qu’ils ne quittent pas immédiatement la page, ce qui aura un effet négatif sur le classement.

     

  • Comment publier automatiquement votre page Facebook sur Twitter ?

    Comment publier automatiquement votre page Facebook sur Twitter ?

    Savez vous que vous pouvez publier automatiquement le contenu de votre page Facebook sur Twitter ? Bien sur, votre activité sur Twitter ne doit pas se résumer à uniquement relayer ces publications, mais ce réglage permet d’éviter des taches fastidieuses.

    1) Accéder à la gestion de Twitter par Facebook

    Il faut vous connecter au compte Facebook qui vous permet d’administrer votre page et aller à l’adresse https://www.facebook.com/twitter.

    2) Afficher la liste des comptes Facebook et les liaisons avec Twitter

    L’affichage présente une liste avec votre compte et les pages que vous gérez, avec, pour chaque élément, sa liaison éventuelle avec Twitter.

     

    3) Autoriser les publications de Facebook sur Twitter

    Lorsque vous cliquez sur le bouton « Lier à Twitter », vous devez valider l’autorisation d’accès à Twitter pour que Facebook puisse publier :

    4) Définir quelles sont les publications relayées

    Une fois la liaison effectuée, vous avez accès aux paramètres, afin de choisir les types de publications que vous souhaitez relayer.

     

     

     

  • MSI et Windows Installer

    A l’occasion d’une formation Installshield, j’ai rafraichi ma liste d’outils tournant autour de MSI et de Windows Installer.

    Voilà un extrait de la panoplie :

    MAKEMSI est un logiciel freeware qui permet de construire un package MSI à partir d’une description définie dans un fichier XML.

    Dans la même lignée, j’aurais tendance à préférer WiX (Windows Installer Toolkit) qui utilise lui aussi une syntaxe XML pour décrire une installation. Il dispose d’un sous projet Votive pour manipuler ses fichiers avec Visual Studio.

    Advance Installer est un outil de conception d’installation, avec une interface graphique, disponible sous plusieurs éditions. Il existe une édition gratuite qui permet de créer des projets simples.

    Enfin, si Orca vous semble trop rudimentaire ou rébarbatif, vous pouvez utiliser InstEd pour éditer directement vos fichiers MSI.

  • Vider le cache de son navigateur, quel que soit le navigateur

    Vider le cache de son navigateur, quel que soit le navigateur

    Vider son cache !Il arrive quelques fois, après avoir mis à jour votre site, que les modifications n’apparaissent pas tout de suite. Et pourtant tout semble en ordre… pas de panique !

    Cela est dû au cache de votre navigateur. En effet votre navigateur va garder en mémoire un certain nombre d’images et textes, ce qui lui évite de devoir les charger à chaque fois que vous visitez la même page, ce qui au final va augmenter la rapidité d’affichage de votre page et améliorer votre navigation.

    Donc pour forcer votre navigateur à « oublier » ce qu’il a précédemment enregistré, vous devez vider son cache.

    Seulement voilà suivant les navigateurs, Chrome, Internet Explorer, Mozilla Firefox, et leurs différentes versions et interfaces, on ne sait pas toujours où cliquer pour effectuer cette action.

    Il existe une méthode toute simple :

    1. Ouvrez votre navigateur
    2. Cliquez et maintenez enfoncées les touches CTRL, MAJ et SUPPR
    3. Une fenêtre apparaît, et il ne vous reste plus qu’à cocher l’option supprimer le cache.

    Ensuite rechargez votre page, et vos modifications devraient maintenant être prises en compte.

  • Erreur 80243004 lors d’un update Windows

    Erreur 80243004 lors d’un update Windows

    Lors de la préparation d’une formation Windows Server, je suis tombé sur un problème dont la cause m’a fait sourire.Erreur 80243004 lors d'un update Windows

    En appliquant les mises à jour sur une machine virtuelle Windows Server, j’obtiens une erreur 80243004 et tout l’update échoue.

    Un peu de recherche dans la base de connaissance Microsoft me donne la solution  (https://support.microsoft.com/kb/2837515) : il faut que l’icône de notification de Windows Update soit activée dans la zone de notification pour que les mises à jour puissent se faire !

    Je crois que c’est le bug le plus amusant que j’ai vu depuis quelques mois …

    PS : Petit truc pour résoudre plus rapidement vos problèmes : N’utilisez pas une recherche large sur Google pour ce genre de difficultés. Vous avez un problème clairement identifié, chez un éditeur, avec un numéro ? Aller directement chercher dans les informations mises à disposition par cet éditeur vous fera gagner beaucoup de temps en n’ayant pas à lire de nombreux messages décrivant le même problème, sans fournir de solutions, ou – pire – donnant des solutions douteuses.

  • Surcharger l’opérateur new pour empêcher l’allocation dynamique d’un objet en C++

    Parfois, il est nécessaire de restreindre des objets pour qu’ils ne puissent être utilisés qu’au travers de variables locales. Un cas typique est une classe qui utilise des ressources, allouées logiquement dans son constructeur, et libérées dans son destructeur.

    Voici un exemple que j’utilise parfois dans les formations au C++.

    Tout va bien si le programme détruit les objets lorsqu’ils n’en a plus besoin.
    C’est le cas si on emploie ces objets à l’aide de variables locales : lorsque le programme quitte la portée dans laquelle la variable existe (nous présumons bien sûr que la variable n’est pas statique), l’objet est détruit, et le passage dans le destructeur libère les ressources allouées dans le constructeur.

    Le risque est qu’un développeur crée un objet en utilisant une allocation dynamique, car il pourrait ensuite oublier de détruire cet objet, bloquant ainsi les ressources.

    Une solution pour supprimer ce risque consiste tout simplement à surcharger l’opérateur new de notre classe, de façon à empêcher l’allocation dynamique d’objets de cette classe. Voici un petit exemple qui montre le principe :

    class maClasse {
    public:
          string chaine;
          maClasse() {
    // allocation des ressources
         chaine = "Les ressources sont allouees";
    };
    ~maClasse() {
    // libération des ressources
          cout << "Les ressources sont liberees" << endl;
    }
    void *operator new (size_t taille) {
    throw 0;
    return new int; // peut renvoyer n'importe quoi : on ne passera jamais ici
    }
    };
    int main(int argc, char* argv[]) {
    { 
    // bloc pour montrer la réservation et la libération des ressources
           maClasse C1;
          cout << C1.chaine << endl;
    }
    try {
          maClasse * pC = new maClasse;
          cout << pC->chaine << endl;
    }
    catch (int e) {
          cout << "Exception : " << e << endl;
    }
    int attente;
    cin >> attente;
    return 0;
    }

    La sortie nous montre que nous avons bien utilisé la variable locale, en allouant, puis en libérant les ressources, mais que l’utilisation d’une allocation dynamique échoue :

    $ ./essai
    Les ressources sont allouees
    Les ressources sont liberees
    Exception : 0

     

  • Comment lancer une macro Excel VBA à l’ouverture de n’importe quel classeur ?

    C’est une question souvent posée sur Internet et les réponses sont pratiquement toujours la façon d’exécuter une macro à l’ouverture d’un classeur spécifique, en créant fort correctement un module Workbook_Open dans le conteneur ThisWorkBook de ce classeur.

    Mais comment utiliser Excel VBA pour avoir une macro lancée quel que soit le classeur ouvert, sans faire de modification dans chaque classeur ?

    Il faut écrire une classe qui permet de traiter les événements de la classe Application, puis affecter l’objet Application réel à cette nouvelle classe.

    Par exemple, dans un module de classe appelé MonApp, tapez le code suivant :

    Option Explicit
    Public WithEvents App As Application

    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox (« Ouverture du classeur  » & Wb.Name)
    End Sub

    Puis dans le conteneur ThisWorkBook du fichier de macro personnel (PERSO.XLS), il faut instancier la classe MonApp et écrire un module Workbook_Open. Le code ressemble à ceci :

    Option Explicit
    Dim MonExcel As New MonApp

    Private Sub Workbook_Open()
    Set MonExcel.App = Application
    End Sub

    Et le tour est joué.

    Si ces opérations vous semblent de la magie noire, c’est qu’il vous manque quelques notions de programmation VBA que vous pouvez découvrir lors d’une formation à Excel..

  • Comment utiliser Installshield pour effacer des fichiers lors d’une installation ?

    Une question récurrente qui m’est posée lors d’interventions sur Installshield concerne la suppression de fichiers présents sur la machine cible au moment de l’installation.

    Il est normal qu’elle soit posée, car la réponse n’apparaît pas de façon évidente dans l’interface du logiciel.

    Si vous souhaitez supprimer des fichiers qui sont présents lors de l’installation, il faut renseigner la table RemoveFile, en vérifiant l’action RemoveFiles est bien présente dans la séquence d’installation.

    Cette table contient contient une propriété DirProperty qui indique le chemin complet du répertoire du fichier à supprimer. InstallMode permet de spécifier si le fichier est effacé lors de l’installation, de la désinstallation ou dans les deux cas.

    EffacerFichierInstallshield1.png

    Le composant indiqué doit bien sur être associé à une fonctionnalité installée pour que l’opération soit exécutée.

    Attention, l »interface graphique d’Installshield ne montre pas la liaison entre le composant et la table RemoveFile. Notamment, si on demande à n’afficher que les nœuds non vide, le composant peut apparaitre comme vide alors que la table RemoveFile fait référence au composant.

    EffacerFichierInstallshield2.png

    Vous pouvez constater que le composant EffaceFichier semble vide alors qu’il est utilisé pour supprimer des fichiers au travers de la table RemoveFile :

    EffacerFichierInstallshield3.png

     

    .

  • Comment utiliser Installshield pour forcer l’installation de fichiers par Windows Installer ?

    Lors des prestations ou de formations sur Windows Installer ou Installshield, j’ai parfois la question de forcer l’installation de fichiers sans tenir compte des caractéristiques de taille ou de version de ceux qui seraient éventuellement déjà présents.

    C’est une possibilité que vous pouvez indiquer dans la fenêtre de propriété d’un fichier, en cochant l’option Always Overwrite.

    EcrasementFichierInstallshield.png

    Que fait Installshield lorsque cette option est cochée ? Il inscrit tout simplement la valeur 65535 dans la colonne Version de la table File. De cette façon, les mécanismes normaux de Windows Installer forcent l’installation du fichier, quelle que soit la version du fichier éventuellement installée sur le système.

    La difficulté de cette méthode est qu’il faut passer en revue tous les fichiers de tous les composants et cela peut devenir une tâche rédhibitoire s’ils sont nombreux.

    Pour éviter cela, à partir de Windows Installer 4, il est possible d’utiliser la propriété REINSTALLMODE ou l’option /f de la ligne de commande de msiexec.

    Cette option est normalement utilisée en combinaison avec la propriété REINSTALL, mais Windows Installer la prend aussi en compte lors d’une installation. En spécifiant la valeur a, tous les fichiers sont copiés, indépendamment des versions. Vous pouvez tout simplement l’indiquer sur la ligne de commande ou l’incorporer à votre installation en utilisant le Property Manager ou encore en modifiant la table Property avec le Direct Editor.

    Attention, il peut y avoir des effets de bords. Par exemple, si votre installation contient des modifications du registre, celles ci ne sont pas effectuées si REINSTALLMODE ne contient que la valeur a. Il faut ajouter les valeurs u ou m pour que le registre soit modifié !