Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Programmatic file downloads in the browser - DEV Community

Comment déclencher un téléchargement dans le navigateur purement en local depuis le code JavaScript, en utilisant l'objet Blob.

J'ai vérifié, ça fonctionne même en local en ouvrant simplement un fichier HTML dans votre navigateur, pas besoin de serveur HTTP.
Je me dis que ça peut être très utile par exemple pour partager une espèce de mini application qui pré-calcule un truc et permet de l'exporter en CSV ou JSON. Un calculateur de salaire par exemple, un ou petit outil pour estimer un risque.

Je me copie-colle le snippet en dessous.

const blob = new Blob(
  [ /* CSV string content here */ ],
  { type: 'text/csv' }
);

function downloadBlob(blob, filename) {
  const url = URL.createObjectURL(blob);

  const a = document.createElement('a');

  a.href = url;
  a.download = filename || 'download';

  const clickHandler = () => {
    setTimeout(() => {
      URL.revokeObjectURL(url);
      this.removeEventListener('click', clickHandler);
    }, 150);
  };

  a.addEventListener('click', clickHandler, false);

  a.click();
}

downloadBlob(blob, 'result.csv');

Permalink

Programmatic file downloads in the browser - DEV Community

Comment déclencher un téléchargement dans le navigateur purement en local depuis le code JavaScript, en utilisant l'objet Blob.

J'ai vérifié, ça fonctionne même en local en ouvrant simplement un fichier HTML dans votre navigateur, pas besoin de serveur HTTP.
Je me dis que ça peut être très utile par exemple pour partager une espèce de mini application qui pré-calcule un truc et permet de l'exporter en CSV ou JSON. Un calculateur de salaire par exemple, un ou petit outil pour estimer un risque.

Je me copie-colle le snippet en dessous.

const blob = new Blob(
  [ /* CSV string content here */ ],
  { type: 'text/csv' }
);

function downloadBlob(blob, filename) {
  const url = URL.createObjectURL(blob);

  const a = document.createElement('a');

  a.href = url;
  a.download = filename || 'download';

  const clickHandler = () => {
    setTimeout(() => {
      URL.revokeObjectURL(url);
      this.removeEventListener('click', clickHandler);
    }, 150);
  };

  a.addEventListener('click', clickHandler, false);

  a.click();
}

downloadBlob(blob, 'result.csv');

Permalink

WebNN – L’IA s’invite dans votre navigateur avec DirectML

Par : Korben

Ça y est, les amis, l’API WebNN débarque enfin en preview pour les développeurs, et croyez-moi, ça va changer totalement la manière dont on fait tourner de l’IA dans nos navigateurs web !Grâce à cette techno, on va pouvoir profiter de la puissance de nos GPU et autres accélérateurs matériels directement depuis nos pages web, sans avoir à installer le moindre plugin ou logiciel supplémentaire.

Concrètement, WebNN est une API JavaScript qui va permettre aux applications web d’exécuter des tâches d’inférence de réseaux neuronaux de manière super efficace, en exploitant à fond les capacités des CPU, GPU et autres processeurs dédiés à l’IA (les fameux NPU et TPU). Fini les calculs qui rament, bonjour la fluidité et la réactivité, même pour les modèles les plus gourmands !

WebNN est complètement agnostique côté matériel et côté modèles. Quel que soit le hardware qu’on a sous le capot (Intel, AMD, NVIDIA, Qualcomm…) et le format des modèles (ONNX, TensorFlow…), cette API va nous permettre de tirer parti un maximum des ressources disponibles, tout ça de manière transparente, sans avoir à se prendre la tête avec des lignes de code spécifiques à chaque plateforme.

Cette API suit un modèle de programmation super simple en deux grandes étapes :

  • 1. La construction du modèle : on utilise l’API MLGraphBuilder pour définir notre réseau de neurones, ses opérations, ses entrées et ses sorties et une fois que c’est fait, on peut le compiler en un graphe exécutable.
  • 2. L’exécution du modèle : maintenant qu’on a notre super graphe optimisé, il ne reste plus qu’à lui envoyer nos données d’entrée, et il va nous fournir ses prédictions et classifications à toute vitesse !

Grâce à WebNN, les tâches d’inférence de machine learning sont accélérées par le matériel local, ce qui offre des performances améliorées et une faible latence, même sans connexion internet ou avec une connexion non fiable. De plus, les données restent sur la machine de l’utilisateur, ce qui préserve ainsi sa vie privée.

WebNN est conçu pour fonctionner avec DirectML sur Windows, lequel assure des performances optimales sur divers matériels, notamment les RTX GPUs de NVIDIA, les Intel Core Ultra avec Intel AI Boost, et les Copilot+ PC avec des NPU Qualcomm Hexagon. Ça ouvre la porte à des applications évoluées de génération d’IA, de reconnaissance d’images, de traitement du langage naturel, et bien d’autres cas d’utilisation tout à fait passionnants.

Si vous voulez vous lancer dès maintenant avec WebNN, je vous conseille fortement de visiter le dépôt WebNN Developer Preview sur GitHub. Vous y trouverez plein de démos et d’exemples de code pour vous familiariser avec l’API et ses fonctionnalités. Par contre, vous devrez télécharger Edge en version Canary et la dernière Insider de Windows 11 puis dans la barre d’URL, tapez edge://flags/ pour pouvoir ensuite activer WebNN.

Pour plus de détails, vous pouvez consulter le tutoriel officiel de Microsoft.

Un grand merci au super neurone NexusSeven pour les sources de cet article !

Source

WeakMaps (`WeakMap`) (advanced) • JavaScript for impatient programmers (ES2022 edition)

Enfin un 🇬🇧 article clair sur ce que sont les WeakMap en JavaScript et quels sont les cas d'usage.

Elles servent à attacher une valeur à un objet de manière "externe", sans modifier l'objet lui-même. Un peu comme si vous êtes vendeur dans un magasin et attachez l'étiquette avec le prix sur un objet. Si l'objet disparaît, l'étiquette disparaît aussi. Donc si l'objet auquel vous attachez la WeakMap est supprimé par le garbage collector, votre WeakMap l'est aussi.

C'est donc parfait pour attacher une computed property à un objet par exemple, ou pour créer des propriétés réellement privées qui ne seront pas accessible à du code qui n'a pas accès à la WeakMap.

Ce sont des cas bien spécifiques mais c'est intéressant de savoir que ça existe.


Permalink

WeakMaps (`WeakMap`) (advanced) • JavaScript for impatient programmers (ES2022 edition)

Enfin un 🇬🇧 article clair sur ce que sont les WeakMap en JavaScript et quels sont les cas d'usage.

Elles servent à attacher une valeur à un objet de manière "externe", sans modifier l'objet lui-même. Un peu comme si vous êtes vendeur dans un magasin et attachez l'étiquette avec le prix sur un objet. Si l'objet disparaît, l'étiquette disparaît aussi. Donc si l'objet auquel vous attachez la WeakMap est supprimé par le garbage collector, votre WeakMap l'est aussi.

C'est donc parfait pour attacher une computed property à un objet par exemple, ou pour créer des propriétés réellement privées qui ne seront pas accessible à du code qui n'a pas accès à la WeakMap.

Ce sont des cas bien spécifiques mais c'est intéressant de savoir que ça existe.


Permalink

VBScript deviendra optionnel dans Windows 11 avant sa suppression finale

Visual Basic Scripting Edition, ou VBScript, est un langage de script et un outil d’automatisation pour Windows depuis son introduction en 1996. Microsoft vient de confirmer que VBScript sera rendu optionnel dans Windows 11 dans le courant de l’année, avant d’être éventuellement supprimé. VBScript est un composant préinstallé depuis Windows 98, initialement comme alternative à l’écriture de […]

L’article VBScript deviendra optionnel dans Windows 11 avant sa suppression finale est apparu en premier sur BlogNT : le Blog des Nouvelles Technologies.

Votre lecteur PDF.js préféré peut exécuter du code malveillant !

Par : Korben

La bibliothèque JavaScript de visualisation de PDF développée par Mozilla, connue sous le nom de PDF.js, est au centre d’une nouvelle découverte de sécurité assez préoccupante ! Une faille dans le code de rendu des polices permet à un attaquant d’exécuter du JavaScript arbitraire simplement en ouvrant un PDF malveillant. Et attention, cela affecte toutes les applications utilisant PDF.js, y compris Firefox, certains éditeurs de code et navigateurs de fichiers. Aïe aïe aïe !

En gros, lorsque PDF.js affiche une police spéciale, il convertit la description des glyphes en instructions pour dessiner ces glyphes. Cependant, un hacker mal intentionné peut injecter son propre code dans la description de la police, résultant en l’exécution de ce code par le navigateur.

La vulnérabilité, estampillée CVE-2024-4367, repose donc sur une manipulation des commandes de rendu de polices. La commande transform utilisant fontMatrix est exploitée pour insérer du code JavaScript puis PDF.js compile dynamiquement les descriptions de polices pour optimiser les performances. Normalement, ce tableau contient uniquement des nombres, toutefois, cette faille permet d’y injecter des chaînes de caractères. Et en insérant du code JavaScript dans ce tableau, il est possible de déclencher du code lors du rendu d’une police.

Un exploit bien forgé permettrait diverses attaques telles que l’exécution de code arbitraire, le vol de données, ou même la prise de contrôle complète du système via des attaques XSS ou l’exécution de code natif. La vulnérabilité touche actuellement les versions de PDF.js inférieures à 4.2.67.

Selon les chercheurs de Codean Labs, cette vulnérabilité affecte non seulement les utilisateurs de Firefox (<126), mais également de nombreuses applications web et basées sur Electron utilisant indirectement PDF.js pour la fonctionnalité d’aperçu. Ils soulignent également que cette faille exploite une partie spécifique du code de rendu de la police, un segment que les développeurs devraient vérifier attentivement.

Bref, pensez à mettre à jour PDF.js vers une version supérieure à la 4.2.67 et à mettre à jour vos outils vers des version égales ou supérieures à Firefox 126, Firefox ESR 115.11 et Thunderbird 115.11.

Source

❌