انتقل إلى وضع عدم الاتصال باستخدام تطبيق Player FM !
LCC 315 - les températures ne sont pas déterministes
Manage episode 440161245 series 29320
JVM summit, virtual threads, stacks applicatives, licences, déterminisme et LLMs, quantification, deux outils de l’épisode et bien plus encore.
Enregistré le 13 septembre 2024
Téléchargement de l’épisode LesCastCodeurs-Episode-315.mp3
News
Langages
Netflix utilise énormément Java et a rencontré un problème avec les Virtual Thread dans Java 21. Les ingénieurs de Netflix analysent ce problème dans cet article : https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
- Les threads virtuels peuvent améliorer les performances, mais posent des défis.
- Un problème de locking a été identifié : les threads virtuels se bloquent mutuellement.
- Cela entraîne des performances dégradées et des instabilités.
- Netflix travaille à résoudre ces problèmes et à tirer pleinement parti des threads virtuels.
Une syntax pour indiquer qu’un type est nullable ou null-restricted arriverait dans Java https://bugs.openjdk.org/browse/JDK-8303099
Foo!
interdirait null.Foo?
indiquerait que null est accepté.Foo?[]!
serait un tableau non-null de valeur nullable.- Il y a aussi des idées de syntaxe pour initialiser les tableaux null-restricted.
- JEP: https://openjdk.org/jeps/8303099.
Les vidéos du JVM Language Summit 2024 sont en ligne https://www.youtube.com/watch?v=OOPSU4LnKg0&list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1
- Project Leyden Update.
- Project Babylon - Code Reflection.
- Valhalla - Where Are We? .
- An Opinionated Overview on Static Analysis for Java Rethinking Java String Concatenation.
- Code Reflection in Action - Translating Java to SPIR-V Java in 2024.
- Type Specialization of Java Generics - What If Casts Have Teeth ? (avec notre Rémi Forax national !).
- Aussi tip or tail pour tout l’écosystème.
- Quelques liens sur Babylon : Code reflection pour exprimer des langages étrangers (SQL) dans Java (https://openjdk.org/projects/babylon/) et son exemple en emulation de LINQ (https://openjdk.org/projects/babylon/articles/linq).
Librairies
Micronaut sort sa version 4.6 https://micronaut.io/2024/08/26/micronaut-framework-4-6-0-released/
- essentiellement une grosse mise à jour de tonnes de modules avec les dernières versions des dépendances
Microprofile 7 va faire quelques changements et évolutions incompatibles https://microprofile.io/2024/08/22/microprofile-7-0-release/#general
- Remplacement de Metrics par Telemetry (metrics, log et tracing).
- Metrics reste une spec mais standalone.
- Microprofile 7 depend de Jakarta Core profile et ne le package plus.
- Microprofile OpenAPI 4 et Telemetry 2 amènent des changements incompatibles.
Quarkus 3.14 avec LetsEncrypt et des sérialiseurs Jackson sans reflection https://quarkus.io/blog/quarkus-3-14-1-released/
- Hibernate ORM 6.6.
- Sérialiseurs Jackson sans reflection.
- Installation simple des certificats LetsEncrypt (notamment avec la ligne de commande qui aide).
- Sympa notamment avec ngrok pour faire un tunnel vers son localhost.
- Rétropédalage sur
@QuarkusTestResource
vs@WithTestResource
suite aux retours de OOME et lenteur des tests mieux isolés.
Les logs structurés dans Spring Boot 3.4 https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot-3-4
- Les logs structurés (souvent en JSON) vous permettent de les envoyer facilement vers des backends comme Elastic, AWS CloudWatch…
- Vous pouvez les lier à du reporting et de l’alerting.
- Spring Boot 3.4 prend en charge la journalisation structurée par défaut. Il prend en charge les formats Elastic Common Schema (ECS) et Logstash, mais il est également possible de l’étendre avec vos propres formats.
- Vous pouvez également activer la journalisation structurée dans un fichier. Cela peut être utilisé, par exemple, pour imprimer des journaux lisibles par l’homme sur la console et écrire des journaux structurés dans un fichier pour l’ingestion par machine.
Infrastructure
CockroachDB, qui avait une approche Business Software License (source available puis ALS 3 ans apres), passe maintenant en license propriétaire avec source available https://www.cockroachlabs.com/blog/enterprise-license-announcement/
Polyform project offre des licences standardisées selon les besoins de gratuit vs payant https://polyformproject.org/
Cloud
Azure fonctions, comment le démarrage à froid est optimisé https://www.infoq.com/articles/azure-functions-cold-starts/
- Les fonctions ont une latence naturelle forte.
- Toutes les latences ne sont pas impactantes pour le business.
- Les démarrages à froid peuvent être mesurés avec les outils du cloud provider, donc faites en usage.
- Faites des tests de latences.
- Expérience : 381 ms cold et 10ms après.
- Tracing pour la latence end-to-end.
- Les strategies :
- Keep alive pings : réveiller la fonction à intervalles réguliers pour rester “warm”.
- Dans le code de la fonction : initialiser les connections et le chargement des assemblies dans l’initialisation.
- Configurer dans
host.json
le batching, désactiver le file system logging… - Déployer les fonctions en tant que ZIPs.
- Réduire la taille du code et des fichiers (qui sont copiés sur le serveur froid).
- Sur .NET, activer ReadyToRun qui aide le compilateur JIT.
- Les instances Azure avec plus de CPU et de mémoire sont plus chères, mais baissent le cold start.
- Instances Azure dédiées pour vos fonctions (pas partagées avec les autres tenants).
- ensuite montre des exemples concrets
Web
Sortie de Vue.js 3.5 https://blog.vuejs.org/posts/vue-3-5
- Vue.JS 3.5 : Nouveautés clés
- Optimisations de performance et de mémoire :
- Réduction significative de la consommation de mémoire (-56%).
- Amélioration des performances pour les tableaux réactifs de grande taille.
- Résolution des problèmes de valeurs calculées obsolètes et de fuites de mémoire.
- Nouvelles fonctionnalités :
- Reactive Props Destructure : Simplification de la déclaration des props avec des valeurs par défaut.
- Lazy Hydration : Contrôle de l’hydratation des composants asynchrones.
- useId() : Génération d’ID uniques stables pour les applications SSR.
- data-allow-mismatch : Suppression des avertissements de désynchronisation d’hydratation.
- Améliorations des éléments personnalisés : Prise en charge de configurations d’application, d’API pour accéder à l’hôte et au shadow root, de montage sans Shadow DOM, et de nonce pour les balises.
- useTemplateRef() : Obtention de références de modèle via l’API useTemplateRef().
- Teleport différé : Téléportation de contenu vers des éléments rendus après le montage du composant.
- onWatcherCleanup() : Enregistrement de callbacks de nettoyage dans les watchers.
Data et Intelligence Artificielle
On entend souvent parler de Large Language Model quantisés, c’est-à-dire qu’on utilise par exemple des entiers sur 8 bits plutôt que des flottants sur 32 bits, pour réduire les besoins mémoire des GPU tout en gardant une précision proche de l’original. Cet article explique très visuellement et intuitivement ce processus de quantisation : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization
Guillaume continue de partager ses aventures avec le framework LangChain4j. Comment effectuer de la classification de texte : https://glaforge.dev/posts/2024/07/11/text-classification-with-gemini-and-langchain4j/
- En utilisant la classe
TextClassification
de LangChain4j, qui utilise une approche basée sur les vector embeddings pour comparer des textes similaires - En utilisant du few-shot prompting, sous différentes variantes, dans cet autre article : https://glaforge.dev/posts/2024/07/30/sentiment-analysis-with-few-shots-prompting/
- Et aussi comment faire du multimodal avec LangChain4j (avec le modèle Gemini) pour analyser des textes, des images, mais également des vidéos, du contenu audio, ou bien des fichiers PDFs : https://glaforge.dev/posts/2024/07/25/analyzing-videos-audios-and-pdfs-with-gemini-in-langchain4j/
Pour faire varier la prédictibilité ou la créativité des LLMs, certains hyperparamètres peuvent être ajustés, comme la température, le top-k et le top-p. Mais est-ce que vous savez vraiment comment fonctionnent ces paramètres ? Deux articles très clairs et intuitifs qui expliquent leur fonctionnement : https://medium.com/google-cloud/is-a-zero-temperature-deterministic-c4a7faef4d20, https://medium.com/google-cloud/beyond-temperature-tuning-llm-output-with-top-k-and-top-p-24c2de5c3b16
- La température va écraser la probabilité du prochain token, mais il reste des variables : approximation des calculs flottants, stacks différentes effectuant ces choix différemment, que faire en cas d’égalité de probabilité entre deux tokens.
- Mais il y a d’autres approches de configuration des réactions du LLM : top-k, qui évite les tokens peu frequents, et top-p pour avoir les n tokens qui totalisent p% des probabilités.
- Température d’abord, puis top-k, et ensuite top-p.
- Explique quoi utiliser quand.
L’OSI propose une definition de l’IA open source https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/
- Gros débats ces derniers mois.
- Utilisable pour tous les usages sans besoin de permission.
- Les chercheurs peuvent inspecter les composants et étudier comment le système fonctionne.
- Le système est modifiable pour tout objectif, y compris changer son comportement.
- Et partager avec d’autres avec ou sans modification quelque soit l’usage.
- Définit des niveaux de transparence (donnees d’entraînement, code source, poids).
Une longue rétrospective de PostgreSQL à des volumes de malades et les problèmes de lock https://ardentperf.com/2024/03/03/postgres-indexes-partitioning-and-lwlocklockmanager-scalability/
- Un article pour vous rassurer que vous n’aurez probablement jamais le problème.
- Histoire sous forme de post mortem.
- Des conseils pour éviter ces falaises.
Outillage
Un premier coup d’œil à la future notation déclarative de Gradle https://blog.gradle.org/declarative-gradle-first-eap
- Un article qui explique à quoi ressemble cette nouvelle syntaxe déclarative de Gradle (en plus de Groovy et Kotlin).
- Quelques vidéos montrent le support dans Android Studio (pour le moment) ainsi que dans un outil expérimental, en attendant le support dans tous les IDEs.
- L’idée est d’éviter le scripting et d’avoir vraiment qu’une description de son build.
- Cela devrait améliorer la prise en charge de Gradle dans les IDEs et permettre d’avoir de la complétion rapide, etc.
- C’est moi ou on a Maven là ?
Support de Firefox dans Puppeteer https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/
- Puppeteer, la bibliothèque d’automatisation de navigateur, supporte désormais officiellement Firefox dès la version 23.
- Cette avancée permet aux développeurs d’écrire des scripts d’automatisation et d’effectuer des tests de bout en bout sur Chrome et Firefox de manière interchangeable.
- L’intégration de Firefox dans Puppeteer repose sur WebDriver BiDi, un protocole inter-navigateurs en cours de standardisation au W3C.
- Le WebDriver BiDi facilite la prise en charge de plusieurs navigateurs et ouvre la voie à une automatisation plus simple et plus efficace.
- Les principales fonctionnalités de Puppeteer, telles que la capture de journaux, l’émulation de périphériques, l’interception réseau et le préchargement de scripts, sont désormais disponibles pour Firefox.
- Mozilla considère WebDriver BiDi comme une étape importante vers une meilleure expérience de test inter-navigateurs.
- La prise en charge expérimentale de CDP (Chrome DevTools Protocol) dans Firefox sera supprimée fin 2024 au profit de WebDriver BiDi.
- Bien que Firefox soit officiellement pris en charge, certaines API restent non prises en charge et feront l’objet de travaux futurs.
Guillaume a créé une annotation @Retry
pour JUnit 5, pour retenter l’exécution d’un test qui est “flaky” https://glaforge.dev/posts/2024/09/01/a-retryable-junit-5-extension/
- Guillaume n’avait pas trouvé d’extension par défaut dans JUnit 5 pour remplacer les Retry rules de JUnit 4.
- Mais sur les réseaux sociaux, une discussion intéressante s’ensuit avec des liens sur des extensions qui implémentent cette approche.
- Comme JUnit Pioneer qui propose plein d’extensions utiles : https://junit-pioneer.org/docs/retrying-test/.
- Ou l’extension rerunner : https://github.com/artsok/rerunner-jupiter.
- Arnaud a aussi suggéré la configuration de Maven Surefire pour relancer automatiquement les tests qui ont échoué : https://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html.
- La question philosophique est : est-ce que c’est tolérable les tests qui échouent de façon intermittente ?
Architecture
Un ancien fan de GraphQL en a fini avec la technologie GraphQL et réfléchit aux alternatives https://bessey.dev/blog/2024/05/24/why-im-over-graphql/
- Problèmes de GraphQ L:
- Sécurité :
- Attaques d’autorisation
- Difficulté de limitation de débit
- Analyse de requêtes malveillantes
- Performance :
- Problème N+1 (récupération de données et autorisation)
- Impact sur la mémoire lors de l’analyse de requêtes invalides
- Complexité accrue :
- Couplage entre logique métier et couche de transport
- Difficulté de maintenance et de tests
- Sécurité :
- Solutions envisagées :
- Adoption d’API REST conformes à OpenAPI 3.0+
- Meilleure documentation et sécurité des types
- Outils pour générer du code client/serveur typé
- Deux approches de mise en œuvre d’OpenAPI :
- “Implementation first” (génération de la spécification à partir du code)
- “Specification first” (génération du code à partir de la spécification)
- Adoption d’API REST conformes à OpenAPI 3.0+
- retour intéressant de quelqu’un qui n’utilise pas GraphQL au quotidien. C’étaient des problèmes qui devaient être corrigés avec la maturité de l’écosystème et des outils, mais ça a montré ses limites pour cette personne.
Presentation de Grace Hopper en 1980 sur le futur des ordinateurs https://youtu.be/AW7ZHpKuqZg?si=w_o5_DtqllVTYZwt
- C’est fou la modernité de ce qu’elle décrit.
- Des problèmes qu’on a encore aujourd’hui.
- Positive leadership.
- Elle décrit l’avantage de systèmes fait de plusieurs ordinateurs.
- Récemment déclassifié.
Leader election avec les conditional writes sur les buckets S3/GCS/Azure https://www.morling.dev/blog/leader-election-with-s3-conditional-writes/
- L’élection de leader est le processus de choisir un nœud parmi plusieurs pour effectuer une tâche.
- Traditionnellement, l’élection de leader se fait avec un service de verrouillage distribué comme ZooKeeper.
- Amazon S3 a récemment ajouté le support des écritures conditionnelles, ce qui permet l’élection de leader sans service séparé.
- L’algorithme d’élection de leader fonctionne en faisant concourir les nœuds pour créer un fichier de verrouillage dans S3.
- Le fichier de verrouillage inclut un numéro d’époque, qui est incrémenté à chaque fois qu’un nouveau leader est élu.
- Les nœuds peuvent déterminer s’ils sont le leader en listant les fichiers de verrouillage et en vérifiant le numéro d’époque.
- Attention : il peut y avoir plusieurs leaders élus (horloges qui ont dérivé) donc c’est à gérer aussi.
Méthodologies
Guillaume Laforge interviewé par Sfeir, où il parle de l’importance de la curiosité, du partage, de l’importance de la qualité du code, et parsemé de quelques photos des Cast Codeurs ! https://www.sfeir.dev/success-story/guillaume-laforge-maestro-de-java-et-esthete-du-code-propre/
Sécurité
Comment crowdstrike met à genoux windows et de nombreuses entreprises https://next.ink/144464/crowdstrike-donne-des-details-techniques-sur-son-fiasco/
- L’incident vient de la mise à jour de la configuration de Falcon, l’EDR de crowdstrike (https://www.crowdstrike.com/blog/falcon-update-for-windows-hosts-technical-details/).
- Qu’est-ce qu’un EDR ? Un système Endpoint Detection and Response a pour but de surveiller votre machine (accès réseaux, logs, …) pour détecter des usages non habituels. Cet espion doit interagir avec les couches basses du système (réseau, sockets, logs systems) et se greffe donc au niveau du noyau du système d’exploitation. Il remonte les informations en live à une plateforme qui peut ensuite adapter les réponses en live.
- Si l’incident a duré moins de 1h30 côté Crowdstrike plus de 8 millions de machines se sont retrouvées hors service, bloquées sur le Blue Screen Of Death selon Microsoft (https://blogs.microsoft.com/blog/2024/07/20/helping-our-customers-through-the-crowdstrike-outage/).
- Cela n’est pas la première fois et était déjà arrivé il y a quelques mois sur Linux. Comme il s’agissait d’une incompatibilité de kernel, ça avait été moins important car les services ITs gèrent mieux ces problèmes sous Linux (https://stackdiary.com/crowdstrike-took-down-debian-and-rocky-linux-a-few-months-ago-and-no-one-noticed/).
Les benchmarks CIS, un pilier pour la sécurité de nos environnements cloud, et pas que ! (Katia HIMEUR TALHI) https://blog.cockpitio.com/security/cis-benchmarks/
- Le CIS est un organisme à but non lucratif qui élabore des normes pour améliorer la cybersécurité.
- Les référentiels CIS sont un ensemble de recommandations et de bonnes pratiques pour sécuriser les systèmes informatiques.
- Ils peuvent être utilisés pour renforcer la sécurité, se conformer aux réglementations et normaliser les pratiques.
Loi, société et organisation
Microsoft signe un accord avec OVHCloud pour qu’ils arrêtent leur plainte d’antitrust https://www.politico.eu/article/microsoft-signs-antitrust-truce-with-ovhcloud/
- La plainte était en Europe.
- Permet à des clients de plus facilement déployer les solutions Microsoft dans le fournisseur de cloud de leur choix.
- La plainte avait été posée à l’été 2021.
- Ça rendait à faire tourner les solutions MS plus chères et non compétitives vs MS.
ElasticSearch et Kibana sont de nouveau Open Source, en ajoutant la license AGPL à ses autres licences existantes https://www.elastic.co/fr/blog/elasticsearch-is-open-source-again
- Le marché d’il y a trois ans a maintenant changé.
- AWS est un bon partenaire.
- Le flou ElasticSearch vs le produit d’AWS s’est clarifié.
- Donc retour à l’open source via AGPL (Affero GPL).
- Elastic n’a jamais cessé de croire en l’open source d’après Shay Banon, son fondateur.
- Le changement vers l’AGPL est une option supplémentaire, pas un remplacement d’une des autres licences existantes.
- Et juste après, Elastic annonce des resultants décevants faisant plonger l’action de 25% (https://siliconangle.com/2024/08/29/elastic-shares-plunge-25-lower-revenue-projections-amid-slower-customer-commitments/).
- https://unrollnow.com/status/1832187019235397785 et https://www.elastic.co/pricing/faq/licensing pour un résumé des licenses chez Elastic.
Outils de l’épisode
MailMate un client email Markdown et qui gère beaucoup d’emails https://medium.com/@nicfab/mailmate-a-powerful-client-email-for-macos-markdown-integrated-email-composition-e218fe2accf3
- Emmanuel l’utilise sur ses boites email secondaires.
- Un peu lent à démarrer (synchro) et le reste est rapide.
- Boîtes virtuelles (par requête).
- SpamSieve.
- Que macOS je crois.
Trippy, un analyseur de réseau https://github.com/fujiapple852/trippy
- Il regroupe dans une CLI traceroute et ping.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 17 septembre 2024 : We Love Speed - Nantes (France)
- 17-18 septembre 2024 : Agile en Seine 2024 - Issy-les-Moulineaux (France)
- 19-20 septembre 2024 : API Platform Conference - Lille (France) & Online
- 20-21 septembre 2024 : Toulouse Game Dev - Toulouse (France)
- 25-26 septembre 2024 : PyData Paris - Paris (France)
- 26 septembre 2024 : Agile Tour Sophia-Antipolis 2024 - Biot (France)
- 2-4 octobre 2024 : Devoxx Morocco - Marrakech (Morocco)
- 3 octobre 2024 : VMUG Montpellier - Montpellier (France)
- 7-11 octobre 2024 : Devoxx Belgium - Antwerp (Belgium)
- 8 octobre 2024 : Red Hat Summit: Connect 2024 - Paris (France)
- 10 octobre 2024 : Cloud Nord - Lille (France)
- 10-11 octobre 2024 : Volcamp - Clermont-Ferrand (France)
- 10-11 octobre 2024 : Forum PHP - Marne-la-Vallée (France)
- 11-12 octobre 2024 : SecSea2k24 - La Ciotat (France)
- 15-16 octobre 2024 : Malt Tech Days 2024 - Paris (France)
- 16 octobre 2024 : DotPy - Paris (France)
- 16-17 octobre 2024 : NoCode Summit 2024 - Paris (France)
- 17-18 octobre 2024 : DevFest Nantes - Nantes (France)
- 17-18 octobre 2024 : DotAI - Paris (France)
- 30-31 octobre 2024 : Agile Tour Nantais 2024 - Nantes (France)
- 30-31 octobre 2024 : Agile Tour Bordeaux 2024 - Bordeaux (France)
- 31 octobre 2024-3 novembre 2024 : PyCon.FR - Strasbourg (France)
- 6 novembre 2024 : Master Dev De France - Paris (France)
- 7 novembre 2024 : DevFest Toulouse - Toulouse (France)
- 8 novembre 2024 : BDX I/O - Bordeaux (France)
- 13-14 novembre 2024 : Agile Tour Rennes 2024 - Rennes (France)
- 16-17 novembre 2024 : Capitole Du Libre - Toulouse (France)
- 20-22 novembre 2024 : Agile Grenoble 2024 - Grenoble (France)
- 21 novembre 2024 : DevFest Strasbourg - Strasbourg (France)
- 21 novembre 2024 : Codeurs en Seine - Rouen (France)
- 27-28 novembre 2024 : Cloud Expo Europe - Paris (France)
- 28 novembre 2024 : Who Run The Tech ? - Rennes (France)
- 2-3 décembre 2024 : Tech Rocks Summit - Paris (France)
- 3 décembre 2024 : Generation AI - Paris (France)
- 3-5 décembre 2024 : APIdays Paris - Paris (France)
- 4-5 décembre 2024 : DevOpsRex - Paris (France)
- 4-5 décembre 2024 : Open Source Experience - Paris (France)
- 5 décembre 2024 : GraphQL Day Europe - Paris (France)
- 6 décembre 2024 : DevFest Dijon - Dijon (France)
- 22-25 janvier 2025 : SnowCamp 2025 - Grenoble (France)
- 30 janvier 2025 : DevOps D-Day #9 - Marseille (France)
- 6-7 février 2025 : Touraine Tech - Tours (France)
- 3 avril 2025 : DotJS - Paris (France)
- 16-18 avril 2025 : Devoxx France - Paris (France)
Nous contacter
Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs
Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
307 حلقات
Manage episode 440161245 series 29320
JVM summit, virtual threads, stacks applicatives, licences, déterminisme et LLMs, quantification, deux outils de l’épisode et bien plus encore.
Enregistré le 13 septembre 2024
Téléchargement de l’épisode LesCastCodeurs-Episode-315.mp3
News
Langages
Netflix utilise énormément Java et a rencontré un problème avec les Virtual Thread dans Java 21. Les ingénieurs de Netflix analysent ce problème dans cet article : https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
- Les threads virtuels peuvent améliorer les performances, mais posent des défis.
- Un problème de locking a été identifié : les threads virtuels se bloquent mutuellement.
- Cela entraîne des performances dégradées et des instabilités.
- Netflix travaille à résoudre ces problèmes et à tirer pleinement parti des threads virtuels.
Une syntax pour indiquer qu’un type est nullable ou null-restricted arriverait dans Java https://bugs.openjdk.org/browse/JDK-8303099
Foo!
interdirait null.Foo?
indiquerait que null est accepté.Foo?[]!
serait un tableau non-null de valeur nullable.- Il y a aussi des idées de syntaxe pour initialiser les tableaux null-restricted.
- JEP: https://openjdk.org/jeps/8303099.
Les vidéos du JVM Language Summit 2024 sont en ligne https://www.youtube.com/watch?v=OOPSU4LnKg0&list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1
- Project Leyden Update.
- Project Babylon - Code Reflection.
- Valhalla - Where Are We? .
- An Opinionated Overview on Static Analysis for Java Rethinking Java String Concatenation.
- Code Reflection in Action - Translating Java to SPIR-V Java in 2024.
- Type Specialization of Java Generics - What If Casts Have Teeth ? (avec notre Rémi Forax national !).
- Aussi tip or tail pour tout l’écosystème.
- Quelques liens sur Babylon : Code reflection pour exprimer des langages étrangers (SQL) dans Java (https://openjdk.org/projects/babylon/) et son exemple en emulation de LINQ (https://openjdk.org/projects/babylon/articles/linq).
Librairies
Micronaut sort sa version 4.6 https://micronaut.io/2024/08/26/micronaut-framework-4-6-0-released/
- essentiellement une grosse mise à jour de tonnes de modules avec les dernières versions des dépendances
Microprofile 7 va faire quelques changements et évolutions incompatibles https://microprofile.io/2024/08/22/microprofile-7-0-release/#general
- Remplacement de Metrics par Telemetry (metrics, log et tracing).
- Metrics reste une spec mais standalone.
- Microprofile 7 depend de Jakarta Core profile et ne le package plus.
- Microprofile OpenAPI 4 et Telemetry 2 amènent des changements incompatibles.
Quarkus 3.14 avec LetsEncrypt et des sérialiseurs Jackson sans reflection https://quarkus.io/blog/quarkus-3-14-1-released/
- Hibernate ORM 6.6.
- Sérialiseurs Jackson sans reflection.
- Installation simple des certificats LetsEncrypt (notamment avec la ligne de commande qui aide).
- Sympa notamment avec ngrok pour faire un tunnel vers son localhost.
- Rétropédalage sur
@QuarkusTestResource
vs@WithTestResource
suite aux retours de OOME et lenteur des tests mieux isolés.
Les logs structurés dans Spring Boot 3.4 https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot-3-4
- Les logs structurés (souvent en JSON) vous permettent de les envoyer facilement vers des backends comme Elastic, AWS CloudWatch…
- Vous pouvez les lier à du reporting et de l’alerting.
- Spring Boot 3.4 prend en charge la journalisation structurée par défaut. Il prend en charge les formats Elastic Common Schema (ECS) et Logstash, mais il est également possible de l’étendre avec vos propres formats.
- Vous pouvez également activer la journalisation structurée dans un fichier. Cela peut être utilisé, par exemple, pour imprimer des journaux lisibles par l’homme sur la console et écrire des journaux structurés dans un fichier pour l’ingestion par machine.
Infrastructure
CockroachDB, qui avait une approche Business Software License (source available puis ALS 3 ans apres), passe maintenant en license propriétaire avec source available https://www.cockroachlabs.com/blog/enterprise-license-announcement/
Polyform project offre des licences standardisées selon les besoins de gratuit vs payant https://polyformproject.org/
Cloud
Azure fonctions, comment le démarrage à froid est optimisé https://www.infoq.com/articles/azure-functions-cold-starts/
- Les fonctions ont une latence naturelle forte.
- Toutes les latences ne sont pas impactantes pour le business.
- Les démarrages à froid peuvent être mesurés avec les outils du cloud provider, donc faites en usage.
- Faites des tests de latences.
- Expérience : 381 ms cold et 10ms après.
- Tracing pour la latence end-to-end.
- Les strategies :
- Keep alive pings : réveiller la fonction à intervalles réguliers pour rester “warm”.
- Dans le code de la fonction : initialiser les connections et le chargement des assemblies dans l’initialisation.
- Configurer dans
host.json
le batching, désactiver le file system logging… - Déployer les fonctions en tant que ZIPs.
- Réduire la taille du code et des fichiers (qui sont copiés sur le serveur froid).
- Sur .NET, activer ReadyToRun qui aide le compilateur JIT.
- Les instances Azure avec plus de CPU et de mémoire sont plus chères, mais baissent le cold start.
- Instances Azure dédiées pour vos fonctions (pas partagées avec les autres tenants).
- ensuite montre des exemples concrets
Web
Sortie de Vue.js 3.5 https://blog.vuejs.org/posts/vue-3-5
- Vue.JS 3.5 : Nouveautés clés
- Optimisations de performance et de mémoire :
- Réduction significative de la consommation de mémoire (-56%).
- Amélioration des performances pour les tableaux réactifs de grande taille.
- Résolution des problèmes de valeurs calculées obsolètes et de fuites de mémoire.
- Nouvelles fonctionnalités :
- Reactive Props Destructure : Simplification de la déclaration des props avec des valeurs par défaut.
- Lazy Hydration : Contrôle de l’hydratation des composants asynchrones.
- useId() : Génération d’ID uniques stables pour les applications SSR.
- data-allow-mismatch : Suppression des avertissements de désynchronisation d’hydratation.
- Améliorations des éléments personnalisés : Prise en charge de configurations d’application, d’API pour accéder à l’hôte et au shadow root, de montage sans Shadow DOM, et de nonce pour les balises.
- useTemplateRef() : Obtention de références de modèle via l’API useTemplateRef().
- Teleport différé : Téléportation de contenu vers des éléments rendus après le montage du composant.
- onWatcherCleanup() : Enregistrement de callbacks de nettoyage dans les watchers.
Data et Intelligence Artificielle
On entend souvent parler de Large Language Model quantisés, c’est-à-dire qu’on utilise par exemple des entiers sur 8 bits plutôt que des flottants sur 32 bits, pour réduire les besoins mémoire des GPU tout en gardant une précision proche de l’original. Cet article explique très visuellement et intuitivement ce processus de quantisation : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization
Guillaume continue de partager ses aventures avec le framework LangChain4j. Comment effectuer de la classification de texte : https://glaforge.dev/posts/2024/07/11/text-classification-with-gemini-and-langchain4j/
- En utilisant la classe
TextClassification
de LangChain4j, qui utilise une approche basée sur les vector embeddings pour comparer des textes similaires - En utilisant du few-shot prompting, sous différentes variantes, dans cet autre article : https://glaforge.dev/posts/2024/07/30/sentiment-analysis-with-few-shots-prompting/
- Et aussi comment faire du multimodal avec LangChain4j (avec le modèle Gemini) pour analyser des textes, des images, mais également des vidéos, du contenu audio, ou bien des fichiers PDFs : https://glaforge.dev/posts/2024/07/25/analyzing-videos-audios-and-pdfs-with-gemini-in-langchain4j/
Pour faire varier la prédictibilité ou la créativité des LLMs, certains hyperparamètres peuvent être ajustés, comme la température, le top-k et le top-p. Mais est-ce que vous savez vraiment comment fonctionnent ces paramètres ? Deux articles très clairs et intuitifs qui expliquent leur fonctionnement : https://medium.com/google-cloud/is-a-zero-temperature-deterministic-c4a7faef4d20, https://medium.com/google-cloud/beyond-temperature-tuning-llm-output-with-top-k-and-top-p-24c2de5c3b16
- La température va écraser la probabilité du prochain token, mais il reste des variables : approximation des calculs flottants, stacks différentes effectuant ces choix différemment, que faire en cas d’égalité de probabilité entre deux tokens.
- Mais il y a d’autres approches de configuration des réactions du LLM : top-k, qui évite les tokens peu frequents, et top-p pour avoir les n tokens qui totalisent p% des probabilités.
- Température d’abord, puis top-k, et ensuite top-p.
- Explique quoi utiliser quand.
L’OSI propose une definition de l’IA open source https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/
- Gros débats ces derniers mois.
- Utilisable pour tous les usages sans besoin de permission.
- Les chercheurs peuvent inspecter les composants et étudier comment le système fonctionne.
- Le système est modifiable pour tout objectif, y compris changer son comportement.
- Et partager avec d’autres avec ou sans modification quelque soit l’usage.
- Définit des niveaux de transparence (donnees d’entraînement, code source, poids).
Une longue rétrospective de PostgreSQL à des volumes de malades et les problèmes de lock https://ardentperf.com/2024/03/03/postgres-indexes-partitioning-and-lwlocklockmanager-scalability/
- Un article pour vous rassurer que vous n’aurez probablement jamais le problème.
- Histoire sous forme de post mortem.
- Des conseils pour éviter ces falaises.
Outillage
Un premier coup d’œil à la future notation déclarative de Gradle https://blog.gradle.org/declarative-gradle-first-eap
- Un article qui explique à quoi ressemble cette nouvelle syntaxe déclarative de Gradle (en plus de Groovy et Kotlin).
- Quelques vidéos montrent le support dans Android Studio (pour le moment) ainsi que dans un outil expérimental, en attendant le support dans tous les IDEs.
- L’idée est d’éviter le scripting et d’avoir vraiment qu’une description de son build.
- Cela devrait améliorer la prise en charge de Gradle dans les IDEs et permettre d’avoir de la complétion rapide, etc.
- C’est moi ou on a Maven là ?
Support de Firefox dans Puppeteer https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/
- Puppeteer, la bibliothèque d’automatisation de navigateur, supporte désormais officiellement Firefox dès la version 23.
- Cette avancée permet aux développeurs d’écrire des scripts d’automatisation et d’effectuer des tests de bout en bout sur Chrome et Firefox de manière interchangeable.
- L’intégration de Firefox dans Puppeteer repose sur WebDriver BiDi, un protocole inter-navigateurs en cours de standardisation au W3C.
- Le WebDriver BiDi facilite la prise en charge de plusieurs navigateurs et ouvre la voie à une automatisation plus simple et plus efficace.
- Les principales fonctionnalités de Puppeteer, telles que la capture de journaux, l’émulation de périphériques, l’interception réseau et le préchargement de scripts, sont désormais disponibles pour Firefox.
- Mozilla considère WebDriver BiDi comme une étape importante vers une meilleure expérience de test inter-navigateurs.
- La prise en charge expérimentale de CDP (Chrome DevTools Protocol) dans Firefox sera supprimée fin 2024 au profit de WebDriver BiDi.
- Bien que Firefox soit officiellement pris en charge, certaines API restent non prises en charge et feront l’objet de travaux futurs.
Guillaume a créé une annotation @Retry
pour JUnit 5, pour retenter l’exécution d’un test qui est “flaky” https://glaforge.dev/posts/2024/09/01/a-retryable-junit-5-extension/
- Guillaume n’avait pas trouvé d’extension par défaut dans JUnit 5 pour remplacer les Retry rules de JUnit 4.
- Mais sur les réseaux sociaux, une discussion intéressante s’ensuit avec des liens sur des extensions qui implémentent cette approche.
- Comme JUnit Pioneer qui propose plein d’extensions utiles : https://junit-pioneer.org/docs/retrying-test/.
- Ou l’extension rerunner : https://github.com/artsok/rerunner-jupiter.
- Arnaud a aussi suggéré la configuration de Maven Surefire pour relancer automatiquement les tests qui ont échoué : https://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html.
- La question philosophique est : est-ce que c’est tolérable les tests qui échouent de façon intermittente ?
Architecture
Un ancien fan de GraphQL en a fini avec la technologie GraphQL et réfléchit aux alternatives https://bessey.dev/blog/2024/05/24/why-im-over-graphql/
- Problèmes de GraphQ L:
- Sécurité :
- Attaques d’autorisation
- Difficulté de limitation de débit
- Analyse de requêtes malveillantes
- Performance :
- Problème N+1 (récupération de données et autorisation)
- Impact sur la mémoire lors de l’analyse de requêtes invalides
- Complexité accrue :
- Couplage entre logique métier et couche de transport
- Difficulté de maintenance et de tests
- Sécurité :
- Solutions envisagées :
- Adoption d’API REST conformes à OpenAPI 3.0+
- Meilleure documentation et sécurité des types
- Outils pour générer du code client/serveur typé
- Deux approches de mise en œuvre d’OpenAPI :
- “Implementation first” (génération de la spécification à partir du code)
- “Specification first” (génération du code à partir de la spécification)
- Adoption d’API REST conformes à OpenAPI 3.0+
- retour intéressant de quelqu’un qui n’utilise pas GraphQL au quotidien. C’étaient des problèmes qui devaient être corrigés avec la maturité de l’écosystème et des outils, mais ça a montré ses limites pour cette personne.
Presentation de Grace Hopper en 1980 sur le futur des ordinateurs https://youtu.be/AW7ZHpKuqZg?si=w_o5_DtqllVTYZwt
- C’est fou la modernité de ce qu’elle décrit.
- Des problèmes qu’on a encore aujourd’hui.
- Positive leadership.
- Elle décrit l’avantage de systèmes fait de plusieurs ordinateurs.
- Récemment déclassifié.
Leader election avec les conditional writes sur les buckets S3/GCS/Azure https://www.morling.dev/blog/leader-election-with-s3-conditional-writes/
- L’élection de leader est le processus de choisir un nœud parmi plusieurs pour effectuer une tâche.
- Traditionnellement, l’élection de leader se fait avec un service de verrouillage distribué comme ZooKeeper.
- Amazon S3 a récemment ajouté le support des écritures conditionnelles, ce qui permet l’élection de leader sans service séparé.
- L’algorithme d’élection de leader fonctionne en faisant concourir les nœuds pour créer un fichier de verrouillage dans S3.
- Le fichier de verrouillage inclut un numéro d’époque, qui est incrémenté à chaque fois qu’un nouveau leader est élu.
- Les nœuds peuvent déterminer s’ils sont le leader en listant les fichiers de verrouillage et en vérifiant le numéro d’époque.
- Attention : il peut y avoir plusieurs leaders élus (horloges qui ont dérivé) donc c’est à gérer aussi.
Méthodologies
Guillaume Laforge interviewé par Sfeir, où il parle de l’importance de la curiosité, du partage, de l’importance de la qualité du code, et parsemé de quelques photos des Cast Codeurs ! https://www.sfeir.dev/success-story/guillaume-laforge-maestro-de-java-et-esthete-du-code-propre/
Sécurité
Comment crowdstrike met à genoux windows et de nombreuses entreprises https://next.ink/144464/crowdstrike-donne-des-details-techniques-sur-son-fiasco/
- L’incident vient de la mise à jour de la configuration de Falcon, l’EDR de crowdstrike (https://www.crowdstrike.com/blog/falcon-update-for-windows-hosts-technical-details/).
- Qu’est-ce qu’un EDR ? Un système Endpoint Detection and Response a pour but de surveiller votre machine (accès réseaux, logs, …) pour détecter des usages non habituels. Cet espion doit interagir avec les couches basses du système (réseau, sockets, logs systems) et se greffe donc au niveau du noyau du système d’exploitation. Il remonte les informations en live à une plateforme qui peut ensuite adapter les réponses en live.
- Si l’incident a duré moins de 1h30 côté Crowdstrike plus de 8 millions de machines se sont retrouvées hors service, bloquées sur le Blue Screen Of Death selon Microsoft (https://blogs.microsoft.com/blog/2024/07/20/helping-our-customers-through-the-crowdstrike-outage/).
- Cela n’est pas la première fois et était déjà arrivé il y a quelques mois sur Linux. Comme il s’agissait d’une incompatibilité de kernel, ça avait été moins important car les services ITs gèrent mieux ces problèmes sous Linux (https://stackdiary.com/crowdstrike-took-down-debian-and-rocky-linux-a-few-months-ago-and-no-one-noticed/).
Les benchmarks CIS, un pilier pour la sécurité de nos environnements cloud, et pas que ! (Katia HIMEUR TALHI) https://blog.cockpitio.com/security/cis-benchmarks/
- Le CIS est un organisme à but non lucratif qui élabore des normes pour améliorer la cybersécurité.
- Les référentiels CIS sont un ensemble de recommandations et de bonnes pratiques pour sécuriser les systèmes informatiques.
- Ils peuvent être utilisés pour renforcer la sécurité, se conformer aux réglementations et normaliser les pratiques.
Loi, société et organisation
Microsoft signe un accord avec OVHCloud pour qu’ils arrêtent leur plainte d’antitrust https://www.politico.eu/article/microsoft-signs-antitrust-truce-with-ovhcloud/
- La plainte était en Europe.
- Permet à des clients de plus facilement déployer les solutions Microsoft dans le fournisseur de cloud de leur choix.
- La plainte avait été posée à l’été 2021.
- Ça rendait à faire tourner les solutions MS plus chères et non compétitives vs MS.
ElasticSearch et Kibana sont de nouveau Open Source, en ajoutant la license AGPL à ses autres licences existantes https://www.elastic.co/fr/blog/elasticsearch-is-open-source-again
- Le marché d’il y a trois ans a maintenant changé.
- AWS est un bon partenaire.
- Le flou ElasticSearch vs le produit d’AWS s’est clarifié.
- Donc retour à l’open source via AGPL (Affero GPL).
- Elastic n’a jamais cessé de croire en l’open source d’après Shay Banon, son fondateur.
- Le changement vers l’AGPL est une option supplémentaire, pas un remplacement d’une des autres licences existantes.
- Et juste après, Elastic annonce des resultants décevants faisant plonger l’action de 25% (https://siliconangle.com/2024/08/29/elastic-shares-plunge-25-lower-revenue-projections-amid-slower-customer-commitments/).
- https://unrollnow.com/status/1832187019235397785 et https://www.elastic.co/pricing/faq/licensing pour un résumé des licenses chez Elastic.
Outils de l’épisode
MailMate un client email Markdown et qui gère beaucoup d’emails https://medium.com/@nicfab/mailmate-a-powerful-client-email-for-macos-markdown-integrated-email-composition-e218fe2accf3
- Emmanuel l’utilise sur ses boites email secondaires.
- Un peu lent à démarrer (synchro) et le reste est rapide.
- Boîtes virtuelles (par requête).
- SpamSieve.
- Que macOS je crois.
Trippy, un analyseur de réseau https://github.com/fujiapple852/trippy
- Il regroupe dans une CLI traceroute et ping.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 17 septembre 2024 : We Love Speed - Nantes (France)
- 17-18 septembre 2024 : Agile en Seine 2024 - Issy-les-Moulineaux (France)
- 19-20 septembre 2024 : API Platform Conference - Lille (France) & Online
- 20-21 septembre 2024 : Toulouse Game Dev - Toulouse (France)
- 25-26 septembre 2024 : PyData Paris - Paris (France)
- 26 septembre 2024 : Agile Tour Sophia-Antipolis 2024 - Biot (France)
- 2-4 octobre 2024 : Devoxx Morocco - Marrakech (Morocco)
- 3 octobre 2024 : VMUG Montpellier - Montpellier (France)
- 7-11 octobre 2024 : Devoxx Belgium - Antwerp (Belgium)
- 8 octobre 2024 : Red Hat Summit: Connect 2024 - Paris (France)
- 10 octobre 2024 : Cloud Nord - Lille (France)
- 10-11 octobre 2024 : Volcamp - Clermont-Ferrand (France)
- 10-11 octobre 2024 : Forum PHP - Marne-la-Vallée (France)
- 11-12 octobre 2024 : SecSea2k24 - La Ciotat (France)
- 15-16 octobre 2024 : Malt Tech Days 2024 - Paris (France)
- 16 octobre 2024 : DotPy - Paris (France)
- 16-17 octobre 2024 : NoCode Summit 2024 - Paris (France)
- 17-18 octobre 2024 : DevFest Nantes - Nantes (France)
- 17-18 octobre 2024 : DotAI - Paris (France)
- 30-31 octobre 2024 : Agile Tour Nantais 2024 - Nantes (France)
- 30-31 octobre 2024 : Agile Tour Bordeaux 2024 - Bordeaux (France)
- 31 octobre 2024-3 novembre 2024 : PyCon.FR - Strasbourg (France)
- 6 novembre 2024 : Master Dev De France - Paris (France)
- 7 novembre 2024 : DevFest Toulouse - Toulouse (France)
- 8 novembre 2024 : BDX I/O - Bordeaux (France)
- 13-14 novembre 2024 : Agile Tour Rennes 2024 - Rennes (France)
- 16-17 novembre 2024 : Capitole Du Libre - Toulouse (France)
- 20-22 novembre 2024 : Agile Grenoble 2024 - Grenoble (France)
- 21 novembre 2024 : DevFest Strasbourg - Strasbourg (France)
- 21 novembre 2024 : Codeurs en Seine - Rouen (France)
- 27-28 novembre 2024 : Cloud Expo Europe - Paris (France)
- 28 novembre 2024 : Who Run The Tech ? - Rennes (France)
- 2-3 décembre 2024 : Tech Rocks Summit - Paris (France)
- 3 décembre 2024 : Generation AI - Paris (France)
- 3-5 décembre 2024 : APIdays Paris - Paris (France)
- 4-5 décembre 2024 : DevOpsRex - Paris (France)
- 4-5 décembre 2024 : Open Source Experience - Paris (France)
- 5 décembre 2024 : GraphQL Day Europe - Paris (France)
- 6 décembre 2024 : DevFest Dijon - Dijon (France)
- 22-25 janvier 2025 : SnowCamp 2025 - Grenoble (France)
- 30 janvier 2025 : DevOps D-Day #9 - Marseille (France)
- 6-7 février 2025 : Touraine Tech - Tours (France)
- 3 avril 2025 : DotJS - Paris (France)
- 16-18 avril 2025 : Devoxx France - Paris (France)
Nous contacter
Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs
Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
307 حلقات
كل الحلقات
×مرحبًا بك في مشغل أف ام!
يقوم برنامج مشغل أف أم بمسح الويب للحصول على بودكاست عالية الجودة لتستمتع بها الآن. إنه أفضل تطبيق بودكاست ويعمل على أجهزة اندرويد والأيفون والويب. قم بالتسجيل لمزامنة الاشتراكات عبر الأجهزة.