Blog de Ludovic Baillet

Astronomie, informatique et science

L’or est-il le plus conducteur des métaux ?

À cette question d’actualité, la réponse courte est bien sûr NON.

Du moins dans les conditions usuelles de température et de pression (20 °C et 101 325 Pa), et en considérant uniquement les 92 premiers éléments du tableau périodique des éléments.

Le métal pur ayant la plus forte conductivité est l’argent : 63 MS/m (million de siemens par mètre), suivi de peu par le cuivre (59,6 MS/s). L’or arrive sur la 3e marche du podium avec une conductivité de seulement 41,1 MS/m, suivi de peu par l’aluminium avec une valeur de 37,7 MS/m.

Un tableau assez complet est disponible sur Wikipedia version anglaise, la version française étant assez pauvre sur le sujet. Néanmoins, même si la version française était plus fournie, on peut douter que les complotistes et autres affirmateurs de théories invraisemblables diraient des choses moins farfelues qu’ils ne le font.

Pyramides couvertes d'or transmettant des éclairs par leurs antennes
Cette illustration montrant des pyramides couvertes d’or et échangeant des éclairs par leurs antennes n’est pas une photo prise il y a 50 000 ans, mais une image créée par une intelligence artificielle (Bing)

La fausse prise en compte de l’inflation pour les impôts

La déclaration des revenus démarre. À cette occasion, les médias sont nombreux à diffuser un article sur ce sujet, et à mettre l’accent sur l’inflation. Notamment, le relèvement des tranches d’imposition de 5,4% ferait littéralement gagner de l’argent. Avec un exemple à l’appui : un contribuable touchant 2500 euros par mois, économiserait 328 euros d’impôt cette année.

Néanmoins, ces économies d’impôts ne serait valables que dans le cas défavorable d’une stagnation des revenus, ce qui en période d’inflation correspond à une vraie perte de pouvoir d’achat, d’autant plus que l’inflation demeure élevée.

Il serait donc intéressant de savoir ce qui arrive concernant les impôts au cas où les revenus suivraient l’inflation (disons 5,4%). Est-ce que les impôts restent stables grâce/malgré la hausse des tranches d’imposition à hauteur de l’inflation ?

Faisons un minuscule programme en C# pour étudier les impacts :

Ce programme très simple permet de calculer pour tous les revenus entre 15 000 et 100 000 euros par tranche de 1000 euros le montant des impôts avec les anciennes tranches d’imposition, puis le montant des impôts avec les nouvelles tranches d’imposition, et enfin la différence entre ces 2 valeurs. On ne prend en compte que le cas d’un célibataire (quotient familial=1), n’ayant aucun autre revenu, et en ne choisissant pas les frais réels (donc en optant pour la déduction forfaitaire de 10%). Enfin, on ne tient pas compte des décotes qui ne s’appliquent que dans un nombre limité de cas.

Le programme calcule effectivement que pour des revenus entre 31 000 euros et 82 000 euros, le montant de l’impôt diminue de 329 euros (61 euros en moins pour un revenu juste en-dessous de 30 000 euros et 771 euros en moins pour un revenu un peu au-dessus de 88 000 euros).

Mais tous ces chiffres ne sont valables qu’à revenu constant. Que se passe-t-il si les revenus augment de 5,4% ? Relançons le programme en modifiant la constante 1,000 par 1,054 :

Dans tous les cas, le montant à payer est supérieur.

Ainsi, la revalorisation des tranches d’imposition au niveau de l’inflation ne garantit en rien une stabilité de l’impôt pour des revenus progressant selon l’inflation. Les contribuables sont perdants. Et étonnamment, aucun journaliste n’a pensé à vérifier ce cas.

Image générée par Bing

AVX-512, la confusion

Le jeu d’instructions AVX-512 va fêter ses 10 ans cette année. Toutefois, il existe une immense fragmentation dans ce jeu d’instructions puisqu’il existe de nombreuses évolutions telles que F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, qui sont supportées par un petit nombre de processeurs.

Ce jeu d’instructions AVX-512 succède au jeu d’instruction AVX2 déjà ardu à implémenter. Même les précédents jeux d’instructions SSE et AVX ne sont pas simples à appréhender comme on peut le voir sur ce tutoriel « SSE & AVX vectorization ».

De plus, ces jeux d’instructions occupent une place non négligeable dans les processeurs modernes, ainsi qu’une complexité là aussi importante. Avec tous ces inconvénients, les développeurs de logiciels peuvent être excédés et préfèreraient à la place davantage de cœurs pour distribuer la charge.

Alors que les processeurs grand public chez AMD et Intel commençaient à inclure tout ou partie des jeux d’instruction AVX-512, Intel a finalement fait machine arrière et supprime maintenant le support de l’AVX-512 dans ses derniers processeurs grand public, la déclinaison Alder Lake. Il faut dire que les processeurs Intel supportent maintenant 2 types de cœurs : les performants et par opposition les « non performants » qui excluaient de fait l’AVX-512. Quant-à AMD, la dernière génération Zen 4 continue d’avoir un support de l’AVX-512. Reste à voir si ce support se maintiendra avec les générations futures.

Coup de théâtre : Intel vient de publier en open source son code source permettant un tri rapide à l’aide du jeu d’instructions AVX-512, ce tri rapide étant basé sur l’algorithme de tri bitonic. Cet algorithme de tri n’est pas le plus efficace puisque qu’il est en O(n(log(n))²). Mais pour certains cas particuliers, grâce à l’AVX-512, il permet de paralléliser une partie de travail et au final peut être plus rapide que les meilleurs algorithmes de tri. L’abandon de l’AVX-512 est donc malvenu pour ce cas particulier.

Enfin, on peut se demander si l’AVX-1024 verra le jour dans ces conditions.

ChatGPT et les injections SQL du OWASP Benchmark

Peut-on confier à ChatGPT l’analyse sécurité d’une application ? Notamment, ChatGPT peut-il détecter efficacement des injections SQL par exemple dans du code java ?

Pour cela, testons le en utilisant le célèbre OWASP Benchmark (https://github.com/OWASP-Benchmark/BenchmarkJava) qui a l’avantage de fournir des exemples d’injection SQL, avec en prime une mention s’il existe un problème ou pas pour chaque cas de test.

Essayons d’abord le premier cas de test de type SQL injection (CWE-89). Le code source est en ligne : https://github.com/OWASP-Benchmark/BenchmarkJava/blob/master/src/main/java/org/owasp/benchmark/testcode/BenchmarkTest00008.java. Le fichier XML associé (https://github.com/OWASP-Benchmark/BenchmarkJava/blob/master/src/main/java/org/owasp/benchmark/testcode/BenchmarkTest00008.xml) mentionne bien qu’il existe une injection SQL dedans.

Posons la question à ChatGPT : Is there a SQL injection in the following java code: et en fournissant le code source complet.
La réponse arrive instantanément, et est correcte :

Réponse de ChatGPT

The code you provided is vulnerable to SQL injection. The variable « param » is being obtained from the request header « BenchmarkTest00008 » and is being appended to a SQL query without proper validation or escaping. An attacker could manipulate the value of this header to include malicious SQL code, potentially allowing them to access or modify sensitive data in the database.

Par ailleurs ChatGPT fournit en plus des conseils pertinents :
It is recommended that you use prepared statements with parameterized queries, or use an ORM framework that will handle escaping data for you, to protect against SQL injection.

Essayons maintenant un cas de test de type SQL injection (CWE-89) bien plus subtil. Le code source est en ligne : https://github.com/OWASP-Benchmark/BenchmarkJava/blob/master/src/main/java/org/owasp/benchmark/testcode/BenchmarkTest00104.java. Le fichier XML associé (https://github.com/OWASP-Benchmark/BenchmarkJava/blob/master/src/main/java/org/owasp/benchmark/testcode/BenchmarkTest00104.xml) mentionne qu’il n’existe pas d’injection SQL dedans. En raison bien sûr de la condition complexe dans le « if » de la ligne 69.

Posons la même question à ChatGPT.

Voici la réponse :

Réponse de ChatGPT

ChatGPT voit quand même une injection SQL car il n’a pas vu l’astuce pour ce cas complexe. Il n’obtiendra donc pas 100% au OWASP Benchmark. Seuls quelques rares outils spécialisés à base d’analyse dynamique de code sont capables de réussir ce genre de test difficile.

Configuration d’un compte Gmail avec K9

Au tour de l’excellente application K9 (servant à la lecture de mails sur téléphone mobile) de se conformer avec les nouveaux réglages de Gmail, via l’authentification OAuth2.

Dans les réglages, il faut cocher l’authentification OAuth2 :

Ensuite, lors de la synchronisation des messages, une boîte de dialogue demande les paramètres (adresse et mot de passe) :

C’est simple.

Configuration d’un compte Gmail dans thunderbird

Google a mis sa menace à exécution : « À partir du 30 mai, vous ne pourrez peut-être plus accéder aux applis qui utilisent une technologie de connexion moins sécurisée ». De fait, début juin 2022, impossible de recevoir ou d’envoyer des mails depuis thunderbird au moyen de compte Gmail :

Gmail, au 30 mai 2022, fin de la connexion basée sur le nom d'utilisateur et le mot de passe
Gmail, au 30 mai 2022, fin de la connexion basée sur le nom d’utilisateur et le mot de passe

Hélas, le support de Mozilla est pauvre en solution : https://support.mozilla.org/fr/kb/thunderbird-et-gmail et https://support.mozilla.org/fr/kb/conversion-automatique-comptes-google-mail-oauth20.

Voici comment faire, capture d’écran à l’appui.

Cas POP :

Comment paramétrer maintenant un compte Gmail en pop avec Thunderbird
Comment paramétrer maintenant un compte Gmail en POP avec Thunderbird

Cas SMTP :

Comment paramétrer maintenant un compte Gmail en smtp avec Thunderbird
Comment paramétrer maintenant un compte Gmail en SMTP avec Thunderbird

La programmation informatique dans le film “Men in Black: International”

Ce quatrième opus de la franchise « Men in Black » fut un échec cuisant. Dans ce billet, il ne sera toutefois question que de programmation informatique utilisée dans ce film.

En effet, au début du film, l’héroïne montre un de ses écrans. Elle recherche des extra-terrestres et a manifestement écrit un programme pour les débusquer :

Illustration de « Men in Black: International »

On reconnaît évidemment du langage COBOL du fait des numéros de lignes et de la syntaxe truffée de SQL. D’ailleurs, il est très facile de retrouver le code source d’origine. Il s’agit d’un simple programme d’exemple présenté sur le site IBM.

À nouveau on ne peut que s’interroger sur ce décalage existant entre la programmation informatique présentée au cinéma et le monde réel de la programmation. Manifestement Hollywood vit dans un monde déconnecté.

La programmation informatique dans la série “The billion dollar code”

Cette série en quatre épisodes est présentée dans un article du site Développez.

Un point intéressant dans le premier épisode, est la présentation d’un code source illustrant le travail de codage du principal informaticien :

Illustration de « The billion dollar code »

On reconnaît évidemment du code en langage C++, qui contient même un lien vers le site MSDN. Ce code est facile à retrouver sur GitHub : il s’agit d’un extrait du fichier keylogger.cpp du projet FTPKeyLogger.

On peut noter 2 points concernant ce choix :

1/ Ce programme a été écrit bien après les événements du film (l’action du film se situant entre la fin des années 90 et au début des années 2000). Or, le lien MSDN du programme date de 2011 selon toute vraisemblance selon Internet Archive.

2/ Pour une fois, le code source présenté n’est pas trop éloigné du film qui le présente, mais quand même, présenter un outil qui automatise la saisie de tout ce qui est tapé au clavier et qui envoie ensuite le résultat sur un serveur FTP, c’est quand même limite. Même si après tout ce genre de programme est en accès libre.

Windows plus performant

Bien que Windows 10 soit une belle amélioration par rapport à ses prédécesseurs, et en attendant Windows 11, il reste pas mal de composants inutiles qui consomment des ressources. Tels les widgets et autres applications faciles à retirer. Il reste pourtant au cœur du système d’autres composants nuisibles. Par exemple le service « Expériences des utilisateurs connectés et télémétrie ». Ce service qui se permet de consommer 100% de CPU sur 1 thread pendant longtemps ne sert qu’aux besoins de Microsoft (sans qu’on sache très bien ce qui est envoyé d’ailleurs), pas à l’utilisateur. Du coup, il suffit de l’arrêter définitivement.

Le service inutile « Expérience des utilisateurs connectés et télémétrie » parmi les autres services

Le machine learning en compétition de programmation

Il y a seulement 4 ans, le machine learning apparaissait encore comme une utopie pour les compétitions de programmation. Pour preuve, cette remarque d’un compétiteur sérieux (à 34’40 ») :

La phrase qui nous intéresse : « En pratique, sur un challenge comme ça, je n’ai jamais vu quelqu’un gagner grâce au machine learning ».

On peut noter que le niveau en compétition de programmation a bien progressé sur ce genre de compétition. Du fait de l’utilisation croissante d’algorithmes qui ont fait leur preuves (Minimax, algorithme génétique, recuit simulé, algorithme de recherche en faisceau, Monte Carlo Tree Search et ses nombreuses variantes, etc.) on assiste à des résultats remarquables.

Certains compétiteurs ont réussi à appliquer avec succès le machine learning dès 2019 sur certains problèmes issus de précédentes compétitions. Les résultats étaient variables et dans certains cas très remarquables, battant largement tous les algorithmes mis en œuvre jusqu’à présent.

Lors de la très sérieuse compétition de programmation organisée par CodinGame en ce mois de mai 2021, plusieurs candidats se sont essayés au machine learning. L’un de ces candidats a particulièrement frappé les esprits en réussissant à sortir une solution qui a littéralement écrasé tous les autres participants (près de 7000).

Image issue de la compétition de programmation « Spring Challenge 2021 » organisée par Codingame

On remarque donc que le machine learning, s’il n’est toujours pas une solution magique instantanée, engrange toutefois toujours plus de succès. Inévitablement, on va assister à une accélération de son utilisation, tout comme on a vu se répandre l’usage de certains algorithmes performants il y a quelques années.

Page 2 of 4

Fièrement propulsé par WordPress & Thème par Anders Norén