Recherche sur le blog

jeudi 8 février 2018

[Utilitaires] Mouse without Borders

Microsoft Garage, c'est un peu le petit laboratoire - pas très secret - dans lequel les employés de la firme peuvent proposer différents projets qui n'ont pas forcément de lien avec leur poste au sein de l'entreprise. On y retrouve donc des petits programmes sympathiques, et c'est notamment le cas de Mouse without Borders.


Ce petit logiciel bien pratique permet, avec une seule souris, passer d'un écran à un autre sur des PC différents. Les opérations plutôt basiques comme le drag & drop de fichiers ou le copier/coller de texte d'un ordinateur à un autre sont évidemment prises en charge.

Pour lier les ordinateurs, il faut donc installer le logiciel sur chaque machine. Il génère alors une clé, qui devra être ré-utilisée sur chaque PC que l'on veut contrôler. L'utilisateur peut gérer l'ordre des écrans dans l'interface afin de respecter l'ordre des écrans sur son bureau. Une fois que tout cela est configuré, c'est comme si l'on avait du multi-écrans... mais avec des ordinateurs pourtant différents.

Petite mise en situation :
  • Un développeur dispose de son PC (machine 1) avec deux écrans pour son travail journalier. Les écrans A et B sont disposés l'un à côté de l'autre, de gauche à droite, A étant le principal.
  • On lui a rajouté un PC de monitoring (machine 2), avec son écran C. Tout à fait indépendant donc. Aucune souris raccordée à celui-ci, bien sûr.
  • Le logiciel est alors installé sur la machine 1 ainsi que sur la 2. La clé (ABCDEF123 par exemple) doit être indiquée sur chacune des machines.
  • Dans l'onglet "Machine setup" du petit utilitaire, il faut organiser les éléments pour respecter l'ordre physique (d'affichage).
  • Il est alors possible de déplacer le curseur de l'écran A à B, puis C, en utilisant la souris de la machine 1.
  • La machine 1 peut être verrouillée, le curseur de la souris peut toujours être déplacé sur la machine 2.
Pour télécharger le logiciel, suivez ce lien.

mercredi 13 décembre 2017

[JS] Des infobulles avec Tooltipster 4

Tooltipster est un script permettant d'afficher des infobulles modernes, bien plus "user-friendly" que ce que proposent les navigateurs. Il nécessite JQuery pour fonctionner (attention que sous IE9 avec JQuery version 1.8, cela ne fonctionnera tout simplement pas!)

Pour le télécharger, rendez-vous sur le site officiel (ici : http://iamceege.github.io/tooltipster/) et cliquez sur le bouton "Download". Le sous-répertoire "dist" contient deux dossiers essentiels : 
  • js : contient le script (format normal et format minified)
  • css : contient les feuilles de style (format normal et format minified) ainsi que les thèmes par défaut.
Il faudra ensuite l'inclure à la page :
<link rel="stylesheet" 
  type="text/css" 
  href="/tooltipster/css/tooltipster.bundle.css" />
<script type="text/javascript"
  src="/tooltipster/js/tooltipster.bundle.js"></script>
<script type="text/javascript" 
 src="http://code.jquery.com/jquery-x.xx.x.min.js"></script>
Après chargement du script, dans notre page nous allons placer des attributs "title" sur les éléments pour lesquels on veut avoir une infobulle. On va aussi leur assigner une classe, "tooltip", mais on peut choisir un autre nom.
<img id="imgTest" src="test.jpg" class="tooltip"
   title="Le texte du tooltip" />
Lors du chargement de la page on doit initialiser les bulles.
    
<script>
     $(document).ready(function() {
          $('.tooltip').tooltipster();
     });
</script>
Par défaut la fonction tooltipster() ne reçoit aucun paramètre. Elle utilisera donc les options par défaut définies dans le fichier .js du script.


On peut notamment définir :
  • contentAsHTML : par défaut à false. Il est conseillé de stocker un objet JQuery dans le contenu. Sinon on peut passer la valeur à true et passer du texte au format HTML en appelant la méthode tooltipster().
  • delay : en millisecondes, délai après ouverture. On peut spécifier un tableau (par ex : [100, 2000]) ce qui correspondra alors au temps avant ouverture et au délai avant fermeture automatique).
  • position : attention aussi à la position ; seules 4 sont supportées (top, left, right et bottom). Dans les anciennes versions il existait plusieurs combinaisons mais cela a été supprimé.
  • theme : on peut définir un ou plusieurs thèmes à charger. Il faudra penser à charger les CSS quand cela s'applique. 
 Exemple de feuille de style dans le dossier "css\plugins\sideTip\themes" :


On peut aussi appeler la méthode tooltipster() en lui passant des options. Utile quand l'élément pour lequel on veut spécifier du texte, n'en a pas à la base.
    
 $(SELECTOR).tooltipster({ 
    content: 'texte à placer', 
    maxWidth: 200
 });
Parmi les options que l'on peut spécifier il y a également divers événements, ce qui permet par exemple d'afficher un contenu récupéré grâce à une requête AJAX.
$(SELECTOR).tooltipster({  
 delay: [200, 2000], 
 content: 'Chargement...', 
 functionBefore: function(instance, helper) 
 {
  if ($(helper.origin).data('ajax') !== 'loaded') 
  { 
   $.ajax({
    type: 'POST', 
    url: 'action.php?param=', 
    success: function(data) 
    { 
     instance.content(data); 
     $(helper.origin).data('ajax', 'loaded');
    }
   });
  }
 }
}); 
Ce qu'on a fait :
  • Appel de la fonction tooltipster().
  • On passe les différents arguments ; tout d'abord le délai (delay).
  • Ensuite on spécifie le contenu par défaut à afficher pendant l'appel AJAX (content). 
  • Enfin on ajoute "functionBefore" : elle reçoit deux paramètres (instance et helper). 
    • helper.origin : élément HTML sur lequel on définit le tooltip.
    • instance : objet Tooltipster qui appelle la fonction de callback
    • La condition permet de savoir si l'élément a déjà été chargé ou pas (car on définit une donnée nommée "ajax" avec la valeur "loaded" une fois l'appel effectué).
Si un tooltip est déjà chargé, on peut effectuer diverses manipulations comme changer son contenu ou même le désactiver. On appelle la fonction tooltipster() avec comme premier argument, un nom de méthode (voir documentation). Les arguments suivants dépendent de la méthode appelée.

Exemple :
$(SELECTOR).tooltipster('content', 'nouveau contenu');  
A noter que toute la documentation est disponible à l'adresse mentionnée au début de cet article.

lundi 11 décembre 2017

[Hardware] Guide d'hiver 2017 des acheteurs

Comme chaque année le site Guru3D publie le Buyers Guide Winter. Il s'agit d'un article visant à aiguiller les potentiels acheteurs de matériel en cette fin d'année, en recommandant l'un ou l'autre périphérique. Les éléments externes tels que les souris, les écrans et les claviers ne sont pas repris. L'introduction prend la peine d'expliquer le jargon utilisé mais surtout détaille les différentes configurations mises en avant, les deux dernières étant axées vers les performances.


De l'Intel Pentium G45xx/G46xx à l'Intel Core i7 8700K, de la GTX 1050 à la surpuissante Nvidia GTX 1080 Ti, quel gamer serez-vous ? Un peu de mémoire, beaucoup d'espace de stockage, ou tout simplement le strict minimum... Tout est possible!

lundi 4 décembre 2017

[JS] Personnaliser la liste de styles dans tinyMCE

Dans tinyMCE, lorsqu'on choisit de dérouler le menu de sélection du format, on dispose d'éléments par défaut comme les en-têtes (h1 à h6), l'alignement ou bien même la mise en forme classique comme le "gras", "souligné" ou "italique".


Ce menu peut être personnalisé de différentes manières. La méthode la plus simple reste de redéfinir les styles dans la méthode d'initialisation de l'éditeur. Dans notre cas cela écrasera les valeurs par défaut pour n'afficher que ce qu'on désire. 
tinymce.init(
{
 ...
 toolbar : [ "bold italic underline | styleselect" ]
 style_formats: [
  {title: 'Blocks', items: [
     {title: 'Paragraph', block: 'p'}
  ]},  
  {title: 'Headers', items: [
     {title: 'Header 1', block: 'h1'},
     {title: 'Header 2', block: 'h2'},
     {title: 'Header 3', block: 'h3'},
     {title: 'Header 4', block: 'h4'},
     {title: 'Header 5', block: 'h5'},
     {title: 'Header 6', block: 'h6'}
  ]},     
 ],
 
 ...
});
Le fait de modifier le contenu de "style_formats" affecte la liste déroulante qui s'affiche quand on ajoute l'option "styleselect" dans la barre d'outils (cfr. paramètre "toolbar"). Vous constaterez également qu'il est possible de créer plusieurs niveaux (ce qui permet visuellement d'obtenir des sous-menus).

Le paramètre "title" est évidemment essentiel. On y met le texte qui sera affiché à l'utilisateur. Il sera automatiquement traduit en fonction de la langue choisie dans la configuration. Les fichiers de langue sont stockés dans un sous-dossier du répertoire de tinyMCE.

Les autres paramètres qu'on peut définir sont :
  • inline : indique le nom de balise inline qui sera utilisé comme conteneur.
  • block : indique le type de balise block qui sera utilisé comme conteneur.
  • selector : indique à quel élément cela peut s'appliquer.
  • classes : indique les classes à associer au résultat.
  • styles : pour générer du CSS pour l'élément
Des exemples sont disponibles dans la documentation officielle.

A lire aussi : content formatting

lundi 27 novembre 2017

[Sécurité] Quel site fabrique de la crypto-monnaie?

Il y a peu j'avais pu constater que certains sites (notamment des sites proposant du téléchargement illégal) utilisaient le moteur JavaScript du navigateur pour miner de la crypto-monnaie. C'est une pratique qui semble devenir... monnaie courante - pardon pour le jeu de mots - afin de générer des revenus. Cela vise à remplacer les bannières publicitaires. Le minage n'est pas toujours avantageux puisqu'il peut utiliser pas mal de ressources CPU de votre machine. Korben met en avant un site web intéressant pour vérifier où ce principe est appliqué. Il s'agit de Whoismining?


Saisissez l'adresse du site internet à vérifier et cliquez sur "Check". Le résultat indique la méthode de fabrication, en analysant le script utilisé (ex : jsecoin, coinhive.com, etc). Vous pourrez donc savoir quels sont les coquins qui font craquer votre machine. Si vous êtes totalement contre cette pratique il n'est pas inutile d'employer des extensions comme Noscript. Cela bloquera l'exécution de ces scripts et donc, votre ordinateur restera tranquille !

Edition du 4 décembre 2017 : il semblerait que certains scripts ouvrent une fenêtre de votre navigateur en arrière-plan en positionnant celle-ci derrière la barre de tâches. Si la transparence est activée, vous pouvez facilement la repérer.

Sources

Korben

[Social] Une faille dans les sondages Facebook

Une faille qui a été corrigée mais qui aurait pu causer des dégâts plutôt... gênants ! En effet, c'est un développeur iranien du nom de Pouya Darabi, qui a découvert qu'il était possible de supprimer n'importe quelle photo d'un autre utilisateur depuis un sondage, fonctionnalité introduite sur la plateforme dans le courant du mois. Lors de la création d'un sondage, il modifiait la requête pour sélectionner l'image de celui-ci, en remplaçant l'identifiant de la photo par celui d'un autre cliché. En validant, l'image ciblée apparaissait bien. Il ne restait plus qu'à supprimer le sondage pour que la photo soit elle aussi retirée.

Pour mieux comprendre le processus, regardez donc cette vidéo


En tout cas ça lui fera un peu d'argent de poche puisqu'il a empoché 10 000 $ pour sa découverte.

Sources


jeudi 26 octobre 2017

[Sécurité] Bad Rabbit arrive en Europe

Bad Rabbit est un nouveau malware développé sur base du code de Petya. Il s'attaque aux partages réseau, notamment dans les entreprises. Le malware propose tout d'abord à l'utilisateur d'installer une soi-disant mise à jour d'Adobe Flash. Une fois qu'il accepte, le logiciel malveillant commence à scanner les partages réseaux SMB ("Server Message Block", le protocole de partage utilisé par les PC sous Windows) ouverts et tente d'accéder à ceux qui sont protégés à l'aide d'une liste d'utilisateurs / mots de passe prédéfinie.


Il va évidemment chiffrer tout ce à quoi il a eu accès lors de son analyse, en demandant évidemment à la victime de débourser la somme de 0,05 bitcoin pour débloquer la situation (avec un prix qui semble augmenter au fil des heures). Comme d'habitude : ne payez pas ! Kaspersky recommande même de désactiver le service WMI pour bloquer la propagation du malware.

Sources

Korben

samedi 21 octobre 2017

[Windows 10] Build 16299 et gestion de la batterie

J'ai récemment installé la nouvelle version de Windows 10 - la Fall Creators Update - sur mon principal ordinateur qui est un desktop, mais également sur notre nouveau laptop tout beau tout propre. Et quelque chose me chiffonne : l'arrivée d'un slider pour gérer la batterie, directement depuis l'icône dans la barre de tâches. 


Jusque là, il est bien difficile de comprendre le problème. On a un joli slider, qui permet de rapidement intervenir sur la consommation du PC. Celui-ci propose en effet quatre modes quand on est sur batterie, et seulement trois quand on branche la machine. Sauf qu'il y a un "mais"...


Le hic se situe au niveau de la page "Options d'alimentation", à laquelle on accède toujours en faisant un clic droit sur l'icône... Cette bonne vieille page toujours pas intégrée à l'application Paramètres, d'ailleurs, à partir de laquelle on peut gérer la fréquence du processeur, l'alimentation de la carte graphique, de la carte Wi-Fi,...


Si vous cliquez sur "Modifier les paramètres du mode" pour le mode actif - oui parce qu'on peut toujours en créer plusieurs -, vous accédez aux minuteurs avant mise en veille de l'écran ou de la machine, qu'on retrouve pourtant dans l'onglet "Alimentation et mise en veille" de la catégorie Système de l'application Paramètres. On peut aussi y régler la luminosité mais ce qui nous intéresse, c'est la petite fenêtre à laquelle on accède en cliquant cette fois sur le lien "Modifier les paramètres d'alimentation avancés".

Dans celle-ci, on peut gérer différents paramètres qui s'appliquent à l'utilisation sur batterie mais également sur secteur :
  • Arrêt du disque dur après un certain nombre de minutes d'inactivité. 
  • Gestion de l'alimentation du processeur : variation en % de la fréquence sur batterie et sur secteur. 
  • Paramètres des cartes sans fil.
  • Etc.

Dans mon cas j'ai donc défini l'état minimal du processeur à 0% et maximal à 100%, sur batterie comme sur secteur. Cela permet au CPU d'adapter sa fréquence en fonction de l'utilisation. Je clique sur OK pour valider. 

Pour en revenir au slider, et mieux comprendre le souci, on peut constater qu'il propose 3 états sur secteur :
  • Si je le mets sur le niveau le plus bas (libellé "autonomie optimale"), la fréquence varie en fonction des états min/max (donc 0% à 100%).
  • Si je mets sur la position du milieu (libellée "meilleures performances"), la fréquence varie bien de la plus basse à la plus haute, prévues par le CPU (donc toujours 0% à 100%).
  • Si je mets le slider à fond (c-à-d "performances optimales") le CPU reste à sa fréquence maximale quoiqu'il arrive. Donc l'état minimum défini à 0% sur secteur est ignoré.
  • Si je remets le slider au milieu mais que je choisis de 100% à 100% dans les valeurs minimales/maximales sur secteur, le CPU reste à sa fréquence maximale quelque soit l'utilisation de celui-ci.
Windows sélectionne donc le paramètre d'état minimal / maximal en fonction de la position du slider, parfois de manière incompréhensible. Sachant que ce dernier possède 3 positions quand on est branché, et 4 positions quand l'ordinateur fonctionne sur batterie, on se demande ce que fait le système d'exploitation... On ne sait pas très bien quels sont les paramètres réellement appliqués selon les différents choix qui vont d' "autonomie optimale" à "performances optimales".

Dommage que ce soit si peu clair. Il est grand temps de faire le ménage dans les anciens outils du panneau de configuration classique, car l'utilisateur s'y perd et n'utilise pas forcément sa machine dans les meilleures conditions.

mercredi 18 octobre 2017

[Java] Evaluer une expression avec Groovy

Apache Groovy est à la base un langage de programmation pouvant s'intégrer à des logiciels développés pour la plateforme Java. Les librairies qu'il propose peuvent être importées dans un projet, notamment pour diverses raisons comme le besoin d'évaluer dynamiquement une expression.

En téléchargeant les binaires de la version stable 2.4.12, vous trouverez dans le sous-répertoire "lib" un JAR - groovy-2.4.12.jar - à intégrer dans votre application. La méthode qui nous intéresse se trouve dans le package "groovy.util.*". Il s'agit de Eval.me().
Integer res = (Integer) Eval.me(" 2 * 4 + 2");
Cela va tout simplement retourner 10 et le stocker dans la variable.

Il existe également trois variantes, qui permettent de passer jusqu'à 3 variables automatiquement nommées "x", "y" et "z".
Eval.x(2, " x * 4 + 2")
On donne en premier paramètre la valeur de "x" ensuite, il suffit de donner l'expression qu'on veut évaluer.
Si on creuse un peu, cette méthode réalise ceci :
Binding bind = new Binding();
bind.setVariable("x", 2);
GroovyShell sh = new GroovyShell(bind);
sh.evaluate(" x * 4 + 2");
Cela signifie qu'on peut évidemment définir plus de variables que prévu... Ouf! Et on peut même explicitement renvoyer une variable différente selon une condition remplie. Sympa non ?

samedi 5 août 2017

[Info] Mise à jour de la logithèque

Un peu délaissée tout au long de l'année, la logithèque a été mise à jour et quelques utilitaires ont fait leur apparition. Citons notamment Autoruns qui permet de contrôler et de modifier ce qui se lance au démarrage (programmes et pilotes), ainsi que ce qui se cache dans les menus contextuels de l'explorateur Windows.

Dans la catégorie Outils réseau, on retrouve QuickSetDNS qui vous permettra de modifier les DNS à la volée, sans devoir parcourir le long chemin ennuyeux du panneau de configuration.

Côté multimédia, j'ai également rajouté MPC HC qui est une très bonne alternative à VLC. Léger et très complet il saura répondre à vos attentes. Il lit également tous les formats audio et vidéo du moment. 13 Mo au téléchargement. Oui, rien que ça ! Rien qui ne puisse flinguer votre quota ou saturer votre connexion internet.

A consulter ici. N'hésitez pas à laisser vos suggestions dans la partie "Commentaires", si vous pensez qu'il manque quelque chose d'essentiel...