Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Porter .NET sur Windows 95 ? Défi technique relevé !

Par : Korben
12 avril 2024 à 10:45

Aujourd’hui, j’aimerai vous parler d’un truc qui va en faire rêver plus d’un parmi vous : Faire tourner des applis .NET modernes sur ce bon vieux Windows 95 ! Impossible vous dites ? Et bah non, figurez-vous qu’un développeur un peu barré a réussi cet exploit !

Ce génie du code s’appelle Matt et il a même partagé son projet dingue sur GitHub. Son objectif était simple : Backporter .NET 2.0 à 3.5 sur Windows 95. À la base, même le support de Windows XP n’était pas prévu pour ces versions de .NET, alors Windows 95, n’en parlons pas !

Mais ça n’a pas découragé notre bidouilleur qui s’est retroussé les manches. Déjà, il a fallu installer Internet Explorer 5.01 et le Microsoft USB Supplement sur une version de Windows 95 OSR 2. Pas le choix, c’est nécessaire pour que .NET puisse fonctionner.

Ensuite, le plus gros du boulot a consisté à implémenter toutes les APIs Windows manquantes que .NET utilise sur les versions plus récentes de l’OS. Un vrai travail de titan et Matt a dû recoder des trucs dans tous les sens, intercepter des appels système, bref, il a mis les mains dans le cambouis et vous savez quoi ?

Ça marche !

Bon, c’est sûr que tout n’est pas parfait, il y a encore quelques bugs et incompatibilités par ci par là, mais on peut déjà faire tourner pas mal d’applications .NET sur Windows 95 grâce à son projet. La classe non ?

Franchement, chapeau bas. C’est ce genre de projets fous qui font qu’on kiffe toujours autant l’informatique. Bon par contre, je ne suis pas sûr que ce soit très utile dans la vraie vie, mais qu’importe, l’idée c’est de repousser les limites !

Je vous laisse avec ses explications. C’est un vrai film, vous allez voir !

En tout cas, si vous voulez vous amuser à installer des applis .NET sur votre Windows 95 (ou dans une VM hein, on n’est pas des sauvages), n’hésitez pas à tester son projet. Vous pourrez ensuite mettre ça sur votre profil Tinder et frimer en montrant à votre futures conquêtes une capture écran de Paint.NET qui tourne comme par magie sur votre vieux coucou ! (Je plaisante, NE FAITES PAS ÇA !!)

Source

Android Studio intègre l’IA Gemini Pro

Par : Korben
9 avril 2024 à 06:20

Ça y est, c’est officiel !

Google vient d’annoncer une nouvelle qui va faire plaisir au petit monde du développement Android. En effet, Android Studio, l’IDE préféré (ou pas) des développeurs, utilise maintenant le modèle Gemini 1.0 Pro pour rendre le développement d’applications Android plus rapide et plus facile.

Pour rappel, Gemini Pro, c’est un modèle d’IA de dernière génération, une sorte de super assistant intelligent qui va vous faciliter la vie quand vous codez vos apps Android, comme ça, si vous galérez sur une fonction complexe, hop, Gemini Pro débarque tel un chevalier blanc et vous propose gentiment de générer le code pour vous. J’expérimente déjà ça avec Github Copilot / ChatGPT / Claude 3 dans Visual Studio Code est c’est vraiment ce qu’on appelle un « Game Changer ». Alors si votre IDE c’est Android Studio, vous allez kiffer.

Par exemple, si vous voulez ajouter le support de la caméra à votre application, il fallait se farcir toute la doc, chercher les bonnes APIs, se prendre la tête avec les permissions… et bien maintenant, vous demandez gentiment à Gemini Pro « Hey, comment je peux ajouter la caméra à mon app ?« , et hop, il vous pond le code nécessaire en un rien de temps.

Ou encore, si vous voulez créer un écran de login avec Jetpack Compose, avec un champ pour le nom d’utilisateur, un autre pour le mot de passe, un bouton « Se connecter », et tout le tralala et bien au lieu de tout coder à la main, de galérer avec les alignements et les espacements… vous décrivez simplement à Gemini Pro ce que vous voulez, et il vous génèrera le code Compose nécessaire avec les meilleures pratiques intégrées.

Et au delà de l’aspect Chatbot, avec le système d’auto-complétion intégré et boosté à l’IA, vous allez également gagner beaucoup de temps durant vos journées de boulot.

Alors est ce que Google va pomper tout le code produit par des milliers de dev autour de la planète ? Et bien visiblement, non, puisque les réponses de Gemini Pro sont basées uniquement sur votre historique de conversation et pas le code à proprement dit. C’est donc toujours vous qui contrôlez si vous voulez partager du contexte supplémentaire ou non.

Vous pouvez même exclure certains fichiers et dossiers sensibles avec un petit fichier .aiexclude et bien sûr, Google s’engage à respecter ses fameux principes d’IA éthique et responsable.

L’outil peut aussi vous aider à intégrer des fonctionnalités d’IA directement dans vos applications grâce au template « Gemini API Starter » disponible dans la dernière version bêta d’Android Studio. Chatbot, génération d’images, traduction… Gemini Pro est votre allié pour proposer de l’IA dans vos apps.

Et niveau tarifs ? Et bien pour l’instant, Gemini Pro est disponible gratuitement pour tous les développeurs Android. C’est donc le moment d’en profiter et de tester cette merveille avant qu’elle ne devienne payante.

Source

Cloudflare Calls – La plateforme WebRTC serverless pour vos apps temps réel

Par : Korben
4 avril 2024 à 16:09

Cloudflare nous sort encore un truc marrant : Cloudflare Calls ! Il s’agit d’une plateforme WebRTC serverless qui vous permet de créer des applications temps réel que ce soit de l’audio, de la vidéo ou même de la data. Le tout, sans vous prendre la tête avec l’infrastructure. Ça peut servir d’unité SFU (selective forwarding unit) pour router intelligemment les flux, ou même de système de diffusion pour broadcaster du contenu. Bref, les possibilités sont énormes !

Le gros avantage, c’est que ça tourne sur le réseau mondial de Cloudflare, présent dans des centaines de villes. Donc niveau latence et qualité, vous êtes aux petits oignons et pas besoin de vous soucier de la scalabilité ou des régions, puisque c’est géré.

Pour commencer à bidouiller avec Cloudflare Calls, rien de plus simple. Vous créez une app dans le dashboard, vous récupérez les identifiants, et hop, vous pouvez commencer à coder votre propre app WebRTC. Il y a même un exemple complet sur GitHub, l’app de démo « Orange Meets – room Korben ^^ ». (Non, ça n’a rien à voir avec l’opérateur du même nom, même si c’est de la téléphonie…)

Après, faut quand même mettre les mains dans le cambouis hein. Mais si vous êtes à l’aise avec WebRTC, vous allez vous éclater. Sinon, c’est l’occasion d’apprendre ! Et puis la doc est plutôt bien foutue, avec des tutos pas à pas. Ça ouvre un paquet de possibilités pour créer des apps temps réel fun ou utiles comme un outil de collaboration en ligne, avec un tableau blanc partagé et de la visio. Ou même un petit jeu multijoueur. Avec Cloudflare Calls, vous pouvez prototyper ça rapidement sans vous soucier de l’infrastructure.

Après, attention quand même, c’est encore en beta. Donc à utiliser en prod avec précaution. Mais pour tester et apprendre, c’est parfait. Et puis connaissant Cloudflare, le produit final sera sûrement béton.

Bref, je vous invite à aller jeter un œil à Cloudflare Calls, à tester la démo « Orange Meets », et pourquoi pas, à vous lancer dans le développement de votre propre app WebRTC serverless.

Jpegli – La lib JPEG nouvelle génération de Google

Par : Korben
3 avril 2024 à 22:44

Google vient de publier en open source une nouvelle bibliothèque de codage JPEG appelée Jpegli qui permet de compresser vos images 35% plus efficacement qu’avec les codecs JPEG traditionnels, tout en conservant une qualité d’image supérieure.

Non seulement Jpegli est rétrocompatible avec le standard JPEG original, mais en plus il offre des fonctionnalités intéressantes comme le support des composantes 10 bits et plus, ce qui permet d’éliminer les vilains artefacts dans les dégradés pour avoir un rendu beaucoup plus ultra-smooth ^^.

Pour cela, Jpegli utilise de la quantification adaptative et une sélection améliorée des matrices de quantification. En gros, ça réduit le bruit, améliore la qualité d’image, et ça fait des miracles sur la taille des fichiers.

De plus, Jpegli reste aussi rapide que les solutions de codage actuelles, donc vous pouvez intégrer cette merveille dans vos workflows sans sacrifier les performances. Alors voilà, si vous voulez donner un coup de boost à vos sites web et offrir de meilleures images plus belles et plus légères, allez jeter un œil à Jpegli ! Pour le moment, y’a pas encore d’outils de conversion mais les sources sont dispo sur le Github, alors y’a plus qu’à attendre que le monde se l’approprie.

Source

Rust chez Google – Une productivité doublée et du code plus fiable

Par : Korben
1 avril 2024 à 08:17

Ça y est, la vague Rust déferle sur la Silicon Valley et même le géant Google n’y échappe pas ! Le langage de programmation qui monte, qui monte, s’installe peu à peu dans les couloirs de la firme de Mountain View et visiblement, il fait des ravages… mais dans le bon sens du terme !

Lors de la récente conférence Rust Nation UK, Lars Bergstrom, directeur de l’ingénierie chez Google, a lâché une petite bombe : les équipes de dev qui sont passées à Rust ont vu leur productivité doubler par rapport à celles qui utilisent encore C++ !

On savait déjà que Rust était prometteur, avec sa gestion de la mémoire ultra safe et son système de « ownership » qui évite les erreurs de segmentation. Mais de là à imaginer des gains de productivité pareils, personne n’osait en rêver !

Et pourtant, c’est bien réel puisque quand une équipe Google migre un projet C++ vers Rust, elle divise par deux le temps nécessaire pour le développer et le maintenir. C’est énorme ! Surtout quand on sait à quel point le développement en C++ peut être chronophage et complexe. Mais alors comment expliquer un tel boost de performance ?

D’après Lars Bergstrom, c’est très simple : Rust inspire confiance. Les développeurs se sentent plus sereins quand ils codent en Rust, car ils savent que le compilateur va les aider à éviter toute une classe de bugs vicieux liés à la gestion de la mémoire. Résultat, ils passent moins de temps à débugger et plus de temps à ajouter des fonctionnalités. Et ça, c’est bon pour le moral des troupes et pour la vélocité des projets !

Autre avantage de Rust : sa courbe d’apprentissage. Contrairement à ce qu’on pourrait penser, les développeurs Google ne mettent pas des mois à être opérationnels en Rust. En moyenne, il leur faut environ 2 mois pour se sentir à l’aise et 4 mois pour retrouver leur niveau de productivité C++.

C’est sûr, Rust n’est pas le langage le plus simple à prendre en main, avec ses concepts de ownership et de borrowing qui peuvent paraître abstraits au début. Mais une fois franchie cette étape, on découvre un langage puissant, expressif et fiable. Et puis, il faut bien l’avouer, il y a un petit côté « hype » à coder en Rust en ce moment. C’est un langage qui a le vent en poupe et tout le monde en parle !

Source

Lapce – L’IDE codé en Rust qui dépote

Par : Korben
29 mars 2024 à 09:00

Si vous êtes un développeur à la recherche d’un nouvel éditeur de code, vous allez être content avec Lapce dispo pour Windows, Linux et macOS. Encore en version pré-alpha, Lapce n’a d’autres ambitions que de venir chatouiller les orteils de Visual Studio Code.

Pour le moment, on en est loin, mais cet éditeur a quand même quelques atouts dans sa manche. Tout d’abord, son interface graphique et ses performances sont au top du top de l’optimisation grâce au langage dans lequel il est codé, à savoir Rust.

En effet, grâce à l’accélération GPU intégrée à l’interface graphique native, les lags au lancement de l’éditeur et lors de la saisie sont totalement éliminés. Pour les développeurs de Lapce, tout ralentissement lors de la frappe est considéré comme un bug et sera donc résolu.

L’une des fonctionnalités les plus intéressantes de Lapce est la possibilité de se connecter à une machine distante en toute transparence via SSH, pour bénéficier d’une expérience « locale ». Cela vous permet de profiter d’un environnement identique à votre serveur de production ou d’exploiter toutes les performances de la machine distante. Idéal pour les développeurs travaillant en équipe ou en télétravail.

Côté mise en forme du code, Lapce utilise Tree-sitter pour la coloration syntaxique, ce qui est une solution bien plus rapide et efficace que les techniques à l’ancienne basées sur les expressions régulières (regex). De plus, la prise en charge intégrée du protocole LSP (Language Server Protocol) permet à Lapce de proposer de la complétion de code, des diagnostics ainsi que des actions éventuelles sur le code analysé en temps réel.

Si vous êtes un utilisateur de Vim, bah déjà bon courage. Mais surtout, ne vous inquiétez pas, Lapce intègre nativement une expérience d’édition similaire à Vim, sans avoir besoin d’installer de plugin. Vous n’avez qu’à activer l’option d’édition modale dans les paramètres de l’IDE et vous pourrez utiliser tous vos raccourcis Vim comme un bon tröll velu.

Pour encore plus de personnalisation, vous pouvez aussi écrire vos propres plugins pour Lapce en utilisant n’importe quel langage de programmation capable d’être compilé pour produire du WASI (WebAssembly System Interface). Ainsi, vous pouvez choisir un langage de programmation que vous aimez pour créer des plugins rapidement sans apprendre un truc spécifique.

Enfin, Lapce vous permet de lancer un terminal directement dans le répertoire de votre espace de travail, sans quitter l’éditeur. Cette fonction simplifie la gestion des fichiers et des dossiers, rendant votre workflow encore plus fluide.

Bref, bien que Lapce soit encore en phase pré-alpha, et loiiiin d’égaler Visual Studio Code, cet éditeur open source écrit en Rust, est promis à un bel avenir chez tous ceux pour qui les perfs sont très importantes (tout le monde quoi…).

Rendez-vous sur lapce.dev pour en savoir plus ! Et la doc est ici.

Merci à Lorenper

Black – Pour formater votre code Python rapidement et sans douleur

Par : Korben
24 mars 2024 à 09:00

Si vous codez avec vos gros doigts boudinés toute la journée, notamment en Python, il se peut que comme 99% des codeurs, vous ne vous encombriez pas avec le formatage de votre code. Pas le temps, et l’IDE fait le minimum syndical donc ça vaaaaa.

C’est pourquoi aujourd’hui, je vous propose d’aller plus loin grâce à Black, un outil qui automatise la mise en forme de votre code Python pour qu’il soit cohérent, lisible et conforme aux normes établies notamment de PEP 8.

Pour l’installer :

pip install git+https://github.com/psf/black

Il nettoie vos merdes, mets des retours à la ligne dans vos tableaux, les fonctions, les définitions…etc., vous permet de gérer la longueur de vos lignes de code, enlève les retours à la ligne ou les points-virgules en trop, ou encore remplace les single quotes (‘) par des double quotes (« )… Et il y a encore plein d’autres petites améliorations dont vous pourrez consulter la liste ici.

black script.py

Un mode expérimental est également dispo, ce qui vous permettra de voir comment votre code sera formaté dans les prochaines versions.

black --preview script.py

Parmi les prochaines améliorations notables, on peut citer la gestion améliorée des chaînes multilignes dans les appels de fonction, où Black est désormais plus « intelligent » pour éviter d’introduire des sauts de ligne supplémentaires. En effet, avec cette nouvelle fonctionnalité, Black examine le contexte autour de la chaîne multiligne pour décider si elle doit être en ligne ou divisée en plusieurs lignes. Par exemple, lorsqu’une chaîne multiligne est passée à une fonction, Black ne divise la chaîne multiligne que si une ligne est trop longue ou si plusieurs arguments sont passés.

Il est également intéressant de noter les améliorations apportées à la gestion des parenthèses dans les dictionnaires. Désormais, pour dictionnaires avec de longues valeurs, elles sont enveloppées de parenthèses, et les parenthèses inutiles sont supprimées.

Black s’utilise donc en ligne de commande, peut aussi tourner dans un Docker et peut surtout être intégré dans vos process CI/CD pour « corriger » et formater automatiquement tout ce que vous récupérez dans les push sur le Git. Notez qu’une mesure de sécurité ralentit un peu le traitement, puisque Black vérifiera que le code reformaté produit toujours un AST (Abstract Syntax Tree) valide qui est effectivement équivalent à l’original. Si vous vous sentez en mode grosse confiance, vous pouvez utiliser le paramètre --fast pour aller encore plus vite.

Bref, c’est un excellent formateur de code qui s’intègre aussi bien dans Vim que dans Visual Studio Code ou utilisable en ligne de commande à l’ancienne comme on aime.

À découvrir ici.

Merci à Lorenper

Créez vos propres jeux Game Boy avec GB Studio !

Par : Korben
22 mars 2024 à 09:00

Hier, je vous parlais de Sprite Fusion pour faire vos niveaux 2D mais peut-être que vous rêvez carrément de créer vos propres jeux vidéo pour Game Boy. Seulement, voilà, vous ne savez pas par où commencer ?

Ne cherchez pas plus loin ! GB Studio est là, et c’est une application très facile à prendre en main qui offre aux débutants comme aux experts de créer des jeux rétro pour votre console portable préférée. Disponible sur Windows, Mac et Linux, GB Studio offre ainsi une bonne expérience de création de jeux sans avoir besoin de connaissances en programmation.

Hé oui !

Avec son interface drag’n’drop (glisser-déposer) et son scripting visuel, GB Studio simplifie vraiment la création de jeux pour les personnes ayant peu ou pas d’expérience en programmation. Que vous souhaitiez créer un jeu d’aventure ou un jeu de plateforme, GB Studio prend en charge plusieurs genres de jeux pour vous donner la possibilité de créer votre chef-d’œuvre numérique.

L’un des aspects les plus intéressants de GB Studio est sa capacité à composer de la musique pour vos jeux. L’éditeur intégré permet une écriture musicale facile en offrant des modes de piano roll et de tracker pour créer vos propres mélodies pour accompagner l’action à l’écran.

Une fois votre jeu terminé, vous pouvez créer de véritables fichiers ROM pour les jouer sur n’importe quel émulateur Game Boy. En outre, GB Studio vous permet d’exporter votre jeu pour le web avec d’excellentes commandes mobiles. Il suffit de télécharger votre jeu sur Itch.io et de le partager avec le monde entier !

Pour ceux qui sont déjà familiarisés avec la programmation, GB Studio offre également des points d’accès pour les utilisateurs avancés afin d’accéder à la machine virtuelle (GBVM) du moteur de jeu et de modifier directement le code C et l’assemblage Z80 du moteur de jeu via des plugins.

Pour obtenir la dernière version de GB Studio, rendez-vous sur la page de téléchargement d’Itch.io, et pour les versions plus anciennes, consultez les archives sur GitHub. De plus, la documentation est également disponible en format PDF.

Puis une fois que vous aurez réalisé votre rêve, vous pourrez passer à l’étape supérieure en suivant ce tuto de HxC2001 qui vous expliquera comment le mettre sur une VRAIE cartouche comme à l’ancienne !

Elle est pas belle la vie ?

Merci à Lorenper

Code Scanning Autofix – GitHub lance la correction de vulnérabilités par IA

Par : Korben
21 mars 2024 à 11:09

Les failles de sécurité dans le code sont le cauchemar des développeurs et des équipes de sécurité et font surtout le régal des hackers. Alors pour y remédier, GitHub a décidé de sortir l’artillerie lourde avec Code Scanning Autofix ! Attention les yeux, cet outil mêle IA et analyse statique et nous fait la promesse de corriger les vulnérabilités en un clin d’œil pendant que vous codez.

Concrètement, Code Scanning Autofix (actuellement en bêta publique) est activé par défaut sur tous les dépôts privés des clients GitHub Advanced Security. Et devinez quoi ? Il gère déjà plus de 90% des types d’alertes pour JavaScript, TypeScript, Java et Python. De quoi mettre une sacrée claque à la dette de sécurité applicative !

En coulisse, cette magie opère grâce à deux technologies de pointe made in GitHub : Copilot pour l’IA et CodeQL pour l’analyse statique. Une fois Code Scanning Autofix activé, il vous propose des correctifs quasi tout cuits qui sont censés régler les deux tiers des vulnérabilités détectées, le tout sans trop d’efforts de votre part.

Voici un exemple de correctif proposé :

Pour chaque faille repérée dans un des langages pris en charge, vous obtenez une explication en langage naturel du correctif suggéré, avec un aperçu du bout de code à valider, modifier ou rejeter. Cela peut inclure des changements dans le fichier en cours, d’autres fichiers, voire des dépendances du projet. Bien entendu, vous gardez le contrôle et pouvez vérifier si le correctif résout bien le problème sans casser la fonctionnalité.

L’intérêt est donc de décharger les experts en sécurité de la fastidieuse traque aux vulnérabilités introduites pendant le développement. Ils pourront alors se concentrer sur la sécurité globale de leur projet.

GitHub promet d’étendre prochainement Code Scanning Autofix à d’autres langages, en commençant par C# et Go. Et pour en savoir plus, foncez sur la doc de GitHub !

Source

Sprite Fusion – Un éditeur de niveaux 2D pour vos jeux, utilisable directement dans le navigateur

Par : Korben
21 mars 2024 à 09:00

Mes amis, laissez-moi aujourd’hui vous parler de Sprite Fusion, un outil gratuit de conception de niveaux 2D qui vous permet de créer de magnifiques cartes de tuiles (les fameuses « tiles ») directement dans votre navigateur.

Grâce à cet éditeur vous allez pouvoir concevoir rapidement des niveaux pour vos propres jeux.

Pour commencer, il est très facile de charger vos ensembles de tuiles avec un simple glisser-déposer ou un copier-coller. Ensuite, avec l’éditeur de cartes de tuiles, vous pouvez créer vos niveaux en utilisant des sélections de tuiles uniques ou multiples.

Alors, qu’est-ce qu’une carte de tuiles, exactement ?

Et bien c’est une carte 2D composée de petites images répétées pour créer une carte. Les cartes de tuiles sont utilisées dans de nombreux types de jeux, comme des jeux de plateforme ou encore des RPG.

Avec Sprite Fusion, il est possible d’exporter directement votre carte en tant que Tilemap Unity native ou en tant que scène TileMap Godot. De plus, Sprite Fusion inclut un système automatique de tuiles facile à utiliser dès le départ pour une conception rapide du terrain. Vous n’avez pas besoin de code personnalisé, il vous suffit d’exporter votre carte de tuiles en tant que package Unity ou scène Godot et de la faire glisser et déposer dans votre moteur !

Pour ceux qui souhaitent partager leurs projets avec d’autres, Sprite Fusion permet également d’exporter vos projets au format JSON compact, facilitant ainsi le partage. Avec des exemples tels que Hazmat Pixel Art – Niveau 1, Mining Odyssey, Spritesheet Dashers et Tiled Map Retro Simulator, vous pouvez voir l’étendue des possibilités offertes par cet outil.

L’utilisation de cet éditeur est totalement gratuite et ne nécessite aucune création de compte. Il fonctionne avec les principaux navigateurs et vous pouvez l’utiliser sans aucune limitation pour un usage personnel ou commercial. Et si vous avez des questions, n’hésitez pas à les poser sur leur serveur Discord.

Spite Fusion prend également en charge les collisions, vous permettant de définir n’importe quelle couche en tant que collisionneur pour utiliser les collisions dans votre jeu. De plus, il propose une fonctionnalité d’auto-tiling, qui vous permet de placer automatiquement des tuiles en fonction de leurs voisines, facilitant ainsi la conception rapide de cartes de terrain.

A vous de tester maintenant !

Merci à Lorenper

LLM4Decompile – Quand l’IA se met à décompiler du binaire

Par : Korben
16 mars 2024 à 02:15

Imaginez un monde merveilleux où les secrets enfermés dans les binaires compilés ne seraient plus inaccessibles aux simples mortels que nous sommes…

C’est exactement ce que LLM4Decompile, le premier LLM (Large Language Model) open-source dédié à la décompilation, promet de réaliser. Fruit d’un travail de recherche innovant mené par une équipe de chercheurs passionnés, ce modèle révolutionnaire ouvre de nouvelles perspectives dans le domaine du reverse engineering.

Jusqu’à présent, la décompilation, c’est-à-dire le processus qui consiste à retrouver le code source à partir d’un exécutable compilé, restait un défi de taille. Les outils existants peinaient à produire un code lisible et compréhensible par les humains, ce qui est logique puisqu’il y a une grosse perte d’informations lors de la compilation. Mais ça, c’était avant l’arrivée de LLM4Decompile !

Entraîné sur un énorme dataset de 4 milliards de tokens de code C et d’assembleur x86, ce modèle de langage surpuissant a appris à décoder les secrets des binaires. Grâce à son architecture basée sur les Transformers et ses milliards de paramètres, il est donc capable de capturer les patterns et la sémantique du code à un niveau inédit.

Mais les chercheurs ne se sont pas arrêtés là. Ils ont aussi développé le premier benchmark standardisé pour la décompilation baptisé Decompile-Eval. Basé sur des problèmes de programmation réels, il permet d’évaluer la capacité des modèles à regénérer un code recompilable et ré-exécutable. Exit les métriques de similarité de tokens, place à des critères solides et pertinents ! LLM4Decompile parvient à recompiler 90% des binaires décompilés (oui oui, je me suis pas trompé) !

Mieux encore, 21% du code re-généré réussit tous les tests unitaires, démontrant une préservation de la logique du programme. C’est 50% de plus que GPT-4, pourtant considéré comme l’état de l’art.

Cerise sur le gâteau, LLM4Decompile est entièrement open-source. Les modèles pré-entraînés de 1,3 à 33 milliards de paramètres sont disponibles sur Hugging Face, prêts à être utilisés et améliorés par la communauté. Le code, les données d’entraînement et le benchmark sont aussi accessibles sur GitHub.

Bien sûr, LLM4Decompile n’est qu’un premier pas vers la décompilation par l’IA. Il reste limité au langage C et à l’assembleur x86, et ne gère pour l’instant que des fonctions isolées. Mais les perspectives sont immenses ! On peut imaginer étendre son champ d’action à d’autres langages et architectures, voire carrément l’utiliser pour transpiler automatiquement du code entre différents langages.

Les applications potentielles sont nombreuses : reverse engineering de logiciels legacy (ça veut dire obsolète mais encore utilisé.. .argh !), analyse de malware, portage de vieux jeux vidéos, etc. Même les vieux binaires qui sentent la naphtaline n’auront bientôt plus de secrets pour nous !

Volonté de la Maison Blanche de bannir les langages C et C++ pour des raisons de sécurité

Par : UnderNews
5 mars 2024 à 13:55

Fin février, l’administration Biden encourage les développeurs à se détourner des langages de programmation C et C++ au profit de langages sécurisés pour la mémoire, comme Rust, pour diminuer le risque de cyberattaques. Cette initiative fait suite à des constatations montrant que la majorité des failles de sécurité proviennent de problèmes liés à la gestion de […]

The post Volonté de la Maison Blanche de bannir les langages C et C++ pour des raisons de sécurité first appeared on UnderNews.

Touitomamout – Pour synchroniser Twitter avec BlueSky et Mastodon

Par : Korben
5 mars 2024 à 09:00

Je ne sais pas si vous trainez sur Twitter, depuis qu’Elon en a pris la (mauvaise) direction, mais en ce qui me concerne, j’étais là avant lui, et je serai là après lui. Donc je reste sur Twitter malgré sa faune parfois un peu glauque.

Mais ça ne m’empêche pas d’être également présent sur Bluesky et Mastodon, même si je ne les utilise pas vraiment. J’essaye quand même d’y partager mes articles. D’ailleurs, pour Bluesky, je me suis fait une moulinette en python, qui me permet d’y automatiser le post de mes articles de blog avec l’aide de ChatGPT pour que ce soit encore plus naturel.

Mais si vous ne voulez pas trop vous prendre la tête, y’a Louis Grasset qui a mis en ligne Touitomamout (Jeu de mots ^^ : Tweet To Mammouth). Il s’agit d’un outil qui peut s’installer sur votre machine / serveur / docker et qui permet de faire du cross-post depuis Twitter vers Mastodon et / ou Bluesky. En plus des messages textes, des images, des vidéos ou encore des gifs animés, l’outil permet même si vous le désirez de synchroniser l’entièreté de votre profil (nom, avatar, bannière, description).

Pour le faire tourner dans Docker, c’est easy. Il vous suffit de créer un docker-compose.yml et de mettre ça dedans :

version: '3.9'

services:
  touitomamout:
    container_name: "touitomamout"
    image: louisgrasset/touitomamout:latest  # Or "ghcr.io/louisgrasset/touitomamout:latest"
    restart: unless-stopped
    environment:
      - ENV_FILE=/data/.env
      - STORAGE_DIR=/data
    volumes:
      - ./data:/data

Puis de lancer la commande suivante :

docker-compose up -d

Et voilà de beaux comptes de réseaux sociaux bien synchronisés. Bravo Louis !

Kalker – La calculatrice scientifique de votre terminal

Par : Korben
1 mars 2024 à 09:00

Quand j’étais plus jeune, on me répétait souvent : « Mais tu dois être tellement fort en maths vu ce que tu sais faire avec un ordinateur« .

Mais non, aucun rapport les anciens. Je suis mauvais en maths, c’est un fait ! Mais ça ne doit pas m’empêcher aujourd’hui de vous parler de Kalker, une calculatrice scientifique qui s’utilise dans le terminal, et qui supporte la syntaxe mathématique et la possibilité d’utiliser des variables et des fonctions de votre choix ainsi que la différentiation, l’intégration et les nombres complexes.

Avec Kalker, vous pourrez jongler avec les opérateurs les plus basiques +, -, *, /, aux opérateurs plus spécialisés comme ! pour les factorielles ou % pour les pourcentages. Vous pouvez également manipuler des groupes avec des parenthèses (), des crochets [], mais aussi utiliser des fonctions de plafond ⌈ceil⌉ et de plancher ⌊floor⌋. Sans oublier les vecteurs (x, y, z, ...) et des matrices [x, y, z; a, b, c; ...] ? La plupart de ces trucs sont du chinois pour moi, mais si vous kiffez ça, ça va vous permettre de manipuler ces structures avec la même facilité que si vous manipuliez de simples nombres sur votre calculatrice Windows.

Car oui, c’est dispo sous Windows, mais également sous Linux et macOS. Et bien sûr en ligne, car vous pouvez tester ça directement depuis votre navigateur en cliquant ici.

L’intérêt de Kalker c’est qu’il peut s’adapter à vos besoins spécifiques. Vous pouvez définir vos propres fonctions et variables, pour par exemple stocker une formule compliquée dans une fonction personnalisée et l’utiliser aussi simplement que f(x).

Maintenant je m’arrête là pour ne pas vous dire plus de bêtises, mais sachez que si vous voulez l’installer, c’est par ici que ça se passe.

Et dans le même style, mais avec le support des unités plus physiques (vitesse, monnaie, fréquence, voltage…etc. y’en a pour tous les goûts), il y a également Numbat que vous pouvez découvrir ici.

De4Py – Le toolkit idéal pour faire de l’analyse de programmes Python (malwares ou autre)

Par : Korben
26 février 2024 à 09:00

A tous les fondus d’analyse de code, aujourd’hui, j’aimerais vous présenter De4Py, un déobfuscateur Python avancé qui s’est donné pour mission de révolutionner le domaine pour les analystes de malwares et les experts en reverse engineering.

Développé par le duo Fadi002 et AdvDebug, cet outil se distingue non seulement par son interface conviviale, mais aussi par un ensemble de fonctionnalités avancées conçues pour, entre autres, déchiffrer les fichiers Python.

Ce toolkit prend en charge toute une gamme d’obfuscateurs populaires, incluant Jawbreaker, BlankOBF, PlusOBF, Wodx, Hyperion et l’obfuscateur de pyobfuscate.com. Cette polyvalence vous assure de pouvoir décoder un large éventail de fichiers obfusqués avec une grande facilité.

L’une des fonctionnalités phares de l’outil est sa capacité d’exécution de code. Cela permet aux utilisateurs d’exécuter du code Python au sein de l’outil. Par exemple, ils expliquent sur le Github, que grâce à ça, si un programme demande une licence pour fonctionner dans son intégralité, De4py permet d’accéder directement aux fonctionnalités principales de l’outil, et par conséquent de contourner les restrictions liées à la licence.

La fonction de Dump de chaînes de caractères est un autre atout crucial. Elle facilite l’extraction de textes du processus Python et les sauvegarde dans un fichier, rendant plus aisée l’extraction de données de la mémoire, y compris des informations sensibles comme les webhooks. Il est capable également d’identifier les chaines de caractères « interessantes » comme les IP, les sites web et les mots-clés liés à des informations sensibles.

De4py aborde également le défi que représentent ces programmes Python qui tentent de s’auto-terminer lorsqu’ils détectent un débogueur ou une machine virtuelle. En supprimant la fonction de sortie, il vous permettra de ne plus galérer avec des sorties de programme surprises. De4py dispose aussi d’une fonctionnalité qui permet de récupérer et d’accéder à toutes les fonctions se trouvant dans le processus, ce qui est pratique si on veut modifier certaines fonctions en mémoire de manière plus précise.

Il y a également un analyseur de fichiers pour détecter si un programme Python est « packé ». Il tente alors d’extraire les programmes qui s’y trouvent en utilisant pyinstaller. Enfin, De4Py est capable de surveiller le comportement du programme sur votre système à savoir tout ce qui est manipulations de fichiers, activités de processus, interactions avec la mémoire, et même les communications via socket, avec détail de la taille des données transmises / reçues et des adresses IP. Cette fonctionnalité permet également l’extraction du contenu des sockets et le déchiffrement du contenu chiffré OpenSSL directement dans un fichier.

Bref, que ce soit via son interface graphique ou en mode terminal, De4Py est un super outil pour tous les amateurs de reverse engineering qui font notamment de l’analyse de malware.

Vous en saurez plus ici sur leur Github et le site officiel est ici.

Nava – La lib Python pour jouer du son dans votre code

Par : Korben
25 février 2024 à 09:00

J’aime bien faire un peu de Python de temps en temps et il m’arrive parfois de vouloir jouer un son dans mes scripts pour signaler qu’un traitement est fini ou tout simplement mettre un peu de fun. Jusqu’à présent j’utilisais des libs comme Pygame, Playsound ou encore Pydub mais ces trucs-là ne sont pas forcément bien supportés par tous les OS, ou nécessitent des dépendances comme FFMpeg.

Toutefois, une lib baptisée Nava vient de faire son apparition et c’est la simplicité même. Elle fonctionne sur tous les OS (Linux, macOS, Windows), et n’utilise aucune dépendance ou logiciel tiers. Vous pouvez lui faire lire du WAV et du MP3 et la lecture se lance immédiatement.

Pour l’installer, rien de plus simple :

pip install nava

Et ensuite, il suffit de l’appeler dans votre code et de lui indiquer le morceau à jouer.

from nava import play
play("son.mp3")

Vous pouvez même lancer une lecture en asynchrone pour ne pas bloquer votre script. Dans l’exemple ci-dessous, on lance un time sleep qui peut donc couper la lecture du son au bout de 4 secondes et qui comme vous le voyez, n’est pas bloqué puisque nava est lancé en mode asynchrone avec le paramètre async_mode=True :

import time
from nava import play, stop
sound_id = play("son.wav", async_mode=True)
time.sleep(4)
stop(sound_id)

Voilà, j’espère que ça vous sera utile 🙂

Wallace – L’analyseur CSS qui vous juge et vous conseille

Par : Korben
23 février 2024 à 09:00

Écrire de la CSS, c’est comme frotter ses doigts sur une râpe à fromage. C’est délicat.

Et quand notre feuille de style est finie, on est content de nous, on s’ouvre une bière et on se dit qu’on a vraiment fait du bon boulot et que finalement, y’avait pas besoin de payer cet intégrateur freelance.

GRAVE ERREUR ! Car en soumettant votre site à l’analyse de Wallace, vous verrez toutes les boulettes que vous avez commises dans votre CSS. En effet, Wallace est ce genre de petit outil en ligne bien pratique qui à partir d’une simple URL de site web, analyse en profondeur l’ensemble de votre feuille de style pour vous fournir des stats d’abord, mais également des critiques (constructives, rassure-vous) sur la qualité de votre code.

Vous pouvez même cliquer sur les éléments mis en avant par Wallace et celui-ci vous les montrera directement dans votre CSS.

Ainsi, en suivant ses recommandations, vous saurez ce qu’il vous reste à faire pour optimiser encore un peu plus votre CSS et la faire ressembler à une oeuvre d’art plutôt qu’à la version papier de France Souar.

Comme ça, vous pourrez même tenter d’améliorer les notes de maintenabilité, de complexité et de performances qu’il vous donne. Voici celles de mon site, sans n’avoir rien changé. Paaaas maaaal. :

Voilà, c’est un excellent outil d’analyse de CSS qui non seulement permet d’augmenter les performances de chargement de votre site, mais surtout vous aider à alléger la complexité de celle-ci pour en faciliter la maintenance. Et pour les plus fifous qui aiment passer par le terminal ou automatiser ce genre d’analyse, il existe même un projet Wallace en ligne de commande ici.

Merci à Maitre Tofu pour l’info !

Magika, le détecteur de fichiers ultra-rapide de Google

Par : Korben
17 février 2024 à 12:26

La dernière nouveauté dans le domaine de l’IA c’est la détection des types de fichiers. Hé ouais ! Google a récemment ouvert les sources de Magika, un système d’identification de types de fichiers basé sur l’IA, qui a pour but de nous aider (enfin, nos outils) à détecter avec précision les types de fichiers binaires et textuels.

Depuis longtemps maintenant, les systèmes Linux sont équipés de libmagic et de l’utilitaire file, qui ont servi de norme de facto pour l’identification des types de fichiers, et ce pendant plus de 50 ans !!

Les navigateurs web, les éditeurs de code et d’innombrables autres logiciels s’appuient sur la détection des types de fichiers pour décider comment afficher correctement un fichier. Par exemple, les IDE modernes utilisent la détection des types de fichiers pour choisir le schéma de coloration syntaxique à utiliser lorsque le développeur commence à taper dans un nouveau fichier.

La détection précise des types de fichiers est un problème difficile, car chaque format de fichier a une structure différente, ou pas de structure du tout. Et c’est encore plus dur pour les formats textuels et les langages de programmation, car ils ont des constructions très similaires. Jusqu’à présent, libmagic et la plupart des autres logiciels d’identification des types de fichiers s’appuyaient sur une collection plutôt artisanale (hmm hmm) d’heuristiques et de règles personnalisées pour détecter chaque format de fichier.

Cette approche manuelle étant à la fois longue et sujette aux erreurs, ce n’est pas forcément l’idéal notamment pour les applications de sécurité où la création d’une détection fiable est particulièrement difficile, car les attaquants tentent constamment de tromper la détection avec des payloads maison 🙂

Pour résoudre ce problème et fournir une détection rapide et précise des types de fichiers, Google a donc développé Magika, un nouveau détecteur de types de fichiers basé sur l’IA.

Sous le capot, Magika utilise un modèle de deep learning personnalisé et hautement optimisé conçu et formé à l’aide de Keras qui ne pèse environ que 1 Mo. Magika utilise aussi Onnx comme moteur d’inférence pour garantir que les fichiers soient identifiés en quelques millisecondes, presque aussi rapidement qu’un outil non basé sur l’IA, même sur un CPU.

En termes de performances, Magika, grâce à son modèle d’IA et son grand ensemble de données d’apprentissage, est capable de surpasser d’autres outils existants d’environ 20 % lorsqu’il est évalué sur un benchmark de 1 million de fichiers englobant plus de 100 types de fichiers. En décomposant par type de fichier, comme indiqué dans le tableau ci-dessous, on observe des gains de performance encore plus importants sur les fichiers textuels, notamment les fichiers de code et les fichiers de configuration avec lesquels d’autres outils peuvent avoir des difficultés.

Magika est utilisé en interne chez Google à grande échelle pour aider à améliorer la sécurité des utilisateurs de leurs services notamment pour l’acheminement des fichiers au sein de Gmail, Drive ou encore Safe Browsing vers des scanners de sécurité et des filtres de contenu.

En examinant une moyenne hebdomadaire de centaines de milliards de fichiers, Google a constaté que Magika améliorait la précision de l’identification des types de fichiers de 50 % par rapport à leur système précédent basé sur de simples règles. Cette augmentation de la précision leur a permis d’analyser 11 % de fichiers en plus avec leurs scanners de documents malveillants spécialisés en IA et ils ont ainsi pu réduire le nombre de fichiers non identifiés à 3 %.

La prochaine intégration de Magika se fera dans VirusTotal et viendra ainsi compléter la fonctionnalité Code Insight existante de la plateforme, qui utilise l’IA générative de Google pour analyser et détecter les codes malveillants. Magika agira alors comme un pré-filtre avant que les fichiers ne soient analysés par Code Insight, améliorant ainsi l’efficacité et la précision de la plateforme. Cette intégration, en raison de la nature collaborative de VirusTotal, contribue directement à l’écosystème cyber, et ça c’est plutôt une bonne nouvelle pour tout le monde.

En ouvrant les sources de Magika, l’objectif de Google est d’aider d’autres éditeurs de logiciels à améliorer leur précision d’identification des fichiers et d’offrir aux chercheurs une méthode fiable pour identifier les types de fichiers à très grande échelle. Le code et le modèle de Magika sont disponibles gratuitement sur Github sous la licence Apache2.

Si vous êtes intéressé, vous pouvez essayer la démo web de Magika.

Magika peut également être rapidement installé en tant qu’utilitaire autonome et bibliothèque python via le gestionnaire de paquets pypi en tapant simplement :

pip install magika

Et pas besoin de GPU !

Pour en savoir plus sur la façon de l’utiliser, je vous invite à vous rendre sur la documentation de Magika.

Merci à Letsar pour l’info !

LiteLLM – Pour discuter avec toutes les API LLM en utilisant la syntaxe OpenAI

Par : Korben
14 février 2024 à 09:00

Si vous codez en Python autour d’API de LLM comme celle d’OpenAI, d’Anthropic ou encore de Huggingface…etc., je vous présente LiteLLM qui risque de vous faire gagner pas mal de temps.

Il s’agit d’une lib Python capable d’interagir avec tout un tas d’API en utilisant le format de celle d’OpenAI. Elle fournit une interface simple et uniformisée pour appeler ces modèles , ce qui va vous faciliter leur utilisation pour des choses comme de la génération de texte, de la traduction ou encore du chat…

Pour l’installer, rien de plus simple :

pip install litellm

Ensuite, y’a plus qu’à créer un objet LiteLLM dans votre code, en lui fournissant l’ID et le nom du modèle à utiliser. Par exemple pour vous connecter à OpenAI, le code sera le suivant :

from litellm import completion
import os

## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = completion(
  model="gpt-3.5-turbo", 
  messages=[{ "content": "Hello, how are you?","role": "user"}]
)

Pour Claude 2, ça sera ça :

from litellm import completion
import os

## set ENV variables
os.environ["ANTHROPIC_API_KEY"] = "your-api-key"

response = completion(
  model="claude-2", 
  messages=[{ "content": "Hello, how are you?","role": "user"}]
)

Pour utiliser Ollama, ça donnerait également ça :

from litellm import completion

response = completion(
            model="ollama/llama2", 
            messages = [{ "content": "Hello, how are you?","role": "user"}], 
            api_base="http://localhost:11434"
)

Donc pas grand-chose qui change.

Vous l’aurez donc compris, LiteLLM permet de pondre un seul et unique code, mais pour discuter avec tous les fournisseurs d’IA du moment (et les logiciels libres existants)

Y’a la possibilité d’avoir du stream sur les réponses (c’est à dire, le texte qui s’affiche au fur et à mesure), de la gestion des exceptions, du log, sans oublier du calcul de coût et l’usage que vous pouvez avoir de ces API afin de ne pas éclater votre compte en banque.

LiteLLM intègre également un proxy OpenAI pour rediriger vos requêtes vers le modèle de votre choix. Pour l’installer :

pip install 'litellm[proxy]'

Lancez ensuite le proxy avec le modèle de votre choix :

litellm --model huggingface/bigcode/starcoder

Et lui passer vos requêtes dans le code python directement :

import openai # openai v1.0.0+
client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:8000") # set proxy to base_url
# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
    {
        "role": "user",
        "content": "this is a test request, write a short poem"
    }
])

print(response)

Si LiteLLM vous intéresse, vous trouverez toutes les infos sur la page Github ainsi que les endpoints ici.

❌
❌