Skip to content
Emmanuel Bernard edited this page Jul 4, 2022 · 1 revision

title: LCC 281 - author: 'Emmanuel Bernard' team: 'Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Antonio Goncalves, Arnaud Héritier, Audrey Neveu' layout: blog-post episode: 281 mp3_length: 85017000 tweet: TODO

tweet size: 91-93 -> 99-101


Résumé

TODO: comment ajouter une news

  • titre en français si possible

  • pas de bullet points mais ajouter deux espaces à la fin de la ligne (cela fait passer à la ligne)

    • bullet points autorisés si plusieurs liens sur là même news

Enregistré le 8 juillet 2022

Téléchargement de l'épisode LesCastCodeurs-Episode-281.mp3

News

Langages

Peut-être une nouvelle syntaxe spécifique aux Records Java pour tordre le cou aux builders

  • Brian Goetze discute de l’idée d’avoir une syntaxe spécifique pour les records pour facilement créer un record dérivé, potentiellement avec des valeurs par défaut, mais en paramétrant certains champs
  • Point shadowPos = shape.position() with { x = 0 }
  • Cela évite de créer la notion de paramètre par défaut dans les constructeurs ou les méthodes

Il y a l’article Data Oriented Programming de Brian Goetz, sur InfoQ

  • projet Amber amène des changements qui combinés permet de faire du data oriented programming en Java et pas que du OOP
  • OO combine état et comportement (code)
  • OO est super utile pour défendre des limites (programme large en des limites plus petites et plus gérable)
  • mais on s’oriente vers des applications plus petites (microservices)
  • data oriented programming: modélise data immuable et le code de la logique métier est séparée
  • records -> data en tant que classe, sealed classes -> définir des choix, pattern matching -> raisonne sur des data polymorphiques
  • algebraic data: hiérarchie de sealed classes dont les feuilles sont des records: nommées, immuable, testable (pas de code)

Un nouveau JEP pour intégrer une Classfile API

  • Le JDK inclut déjà des forks de ASM, de BCEL, et d’autres APIs internes, pour manipuler / produire / lire le bytecode
  • Mais l’idée ici c’est que le JDK vienne avec sa propre API officielle, et qui soit plus sympa à utiliser aussi que le pattern visiteur de ASM par exemple
  • La version d’ASM intégrée était toujours en retard d’une version (problème de poule et d’oeuf, car ASM doit supporter la dernière version de Java, mais Java n+1 n’est pas encore sorti)

Lilian nous montre à quoi va ressembler les Record Patterns de JEP 405

Apache Groovy et les virtual threads, et aussi Groovy et le Deep Learning

Le jargon (en anglais) de la programmation fonctionnelle, si vous avez rêvé d’avoir sous la main la définition de foncteur, de monoïde, et j’en passe

  • avec des exemples en JavaScript
  • des pointeurs vers des librairies fonctionnelles en JavaScript
  • des traductions dans d’autres langues et d’autres langages de programmation

Librairies

Spring Boot 2.7

  • SpringBoot 2.7
  • Spring GraphQL 1.0
  • Support pour Podman
  • Gestion de dépendance et auto configuration pour Cache2k
  • nouvelle annotations pour Elasticsearch et CouchBase
  • dernière versions avant SpringBoot 3 qui changera plus de choses. Recommande de migrer une version a la fois. Support pour 2.5 à fini (upstream)

Quarkus 2.10.0

  • Travaux préliminaires sur les threads virtuels de Loom
  • Support non-blocking pour GraphQL
  • Prise en charge des Kubernetes service binding pour les clients SQL réactifs
  • CacheKeyGenerator pour l’extension de cache
  • quarkus-bootstrap-maven-plugin déprécié et remplacé par quarkus-extension-maven-plugin (uniquement utile pour les développeurs d’extensions Quarkus)
  • Nouveaux guides:
  • Using Stork with Kubernetes
  • OpenId Connect Client Reference Guide
  • Using Podman with Quarkus

Les différences entre OpenAPI 2 et 3

  • Introduction de la notion de lien pour créer des relations entre Response et Operations, pratique pour faire des APIs hypermédia
  • La structure du document OpenAPI a été -un peu simplifiée, en combinant par exemple basePath et schemes, ou en rassemblant les securityDefinitions
  • Des améliorations sur les security schemes, autour de OAuth et OpenID
  • Plus de clarté dans la négociation de contenu et les cookies
  • La section des exemples de Request / Response devrait aider les outils qui génèrent par exemple des SDK automatiquement à partir de la description OpenAPI
  • Un support étendu de JSON Schema
  • Introduction d’une notion de Callback, importante pour les APIs asynchrones, en particulier les WebHooks
  • je me demande si ils ont l’intention d’embrasser AsyncAPI ou su la partie asynchrone d’OpenAPI 3 a pour objectif de faire de la competition

Infrastructure

N’utilisez pas Kubernetes tout de suite !

  • Kubernetes, c’est bien, mais c’est un gros marteau. Est-ce que vous avez des gros clous à enfoncer ?
  • Ne commencez peut-être pas avec l’artillerie lourde de Kubernetes. Commencez plutôt avec des solutions managées genre serverless, ce sera plus simple, et au fur et à mesure si votre infrastructure a besoin de grossir et dépasse les fonctionnalités des solutions managées, à ce moment là seulement évaluer si Kubernetes peut répondre à votre besoin
  • Choisir Kubernetes, c’est aussi avoir la taille de l’équipe qui va bien avec, et il faut des profils DevOps, SRE, etc, pour gérer un cluster K8S
  • L’auteur suggère grosso modo que ça dépend de l’ordre de magnitude de la taille de l’équipe : avec quelques personnes, préférez des solutions type Google App Engine ou AWS App Runner, avec une dizaine de personne peut-être du Google Cloud Run ou AWS Fargate, avec moins d’une centaine là pourquoi pas du Kubernetes managé comme Google Kubernetes Engine, et si vous dépassez mille, alors peut-être vos propres clusters managés par vos soins et hébergés par vos soins sur votre infra
  • ca impose d’utiliser les services du cloud provider? Parce que la vie ce n’est pas que du code maison.
  • C’est la mode de dire de pas utiliser K8S : https://www.jeremybrown.tech/8-kubernetes-is-a-red-flag-signalling-premature-optimisation/ (mais bon, vu le nombre de fois où il est pas utilisé à b

Knative Eventing Devlivery methods

  • on peut faire de la delviery simple 1-1 sans garantie
  • on peut faire de la delivery complexe et persistante en introduisant la notion de channel qui decouple la source de la destination.
  • on peut repondre a la reception d’un message et pousser la réponse dans un second channel
  • mais ca devient compliquer a gérer quand on rajoute des souscripteurs
  • il y a la notiuon de broker qui definit: des flitres, un channel (automatique) et la capacité de répondre
  • les triggers sont un abonnement non pas a un channel mais a un type d’évènement spécifique

Cloud

AWS is Windows and Kube is Linux

  • pourquoi utilisez Kube qui etait pas stablewa lors qu’AWS offre tout
  • AWS forcé d’offrir EKS
  • MAis pourri
  • Lockin AWSIAM
  • Pourquoi AWS serait le windows
  • economies d’echelles de faire chez soi
  • kube devient rentable une certaine taille de l’organisation
  • besoin alternative a AWS (bus factor)
  • on voit le Kube distro modele arriver

Google data center Paris

Web

Data

Outillage

IntelliJ IDEA 2022.5 EAP 5 amène des nouveautés

GitHub copilot est disponible pour tous (les developpeurs)

  • 40% du code écrit est généré par copilot en python (ca calme)
  • gratuit pour les étudiants et les développeurs OSS
  • Revue de Redmonk décrit copilot comme une extension d’intelligence ou auto complete mais qui « comprend » le code autour
  • premiere fois pas une boite de cette taille et à cette échelle
  • l’avantage de copilot en terme de productivité, de qualité de code, de sécurité et de légalité
  • En gros, c’est encore à voir. Mais la qualité impressionne les gens qui l’ont testé ; sécurité pas de retour d’un côté ou de l’autre sauf que les développeurs humains ne sont pas des lumières de sécurité :D
  • GitHub pense que GitHub n’est pas responsable de la violation de code vue que ce sont des machines et des algorithmes qui transforment: cela a l’air d’etre le consensus des avocats
  • GitHub dit qu’on est responsable du code qu’on écrit avec copilot
  • Et implicitement GitHub dit que la licensure du code « source » ne se propage pas au code generé. Et là, c’est pas clair et de la responsibilité de l’utilisateur, mais la encore les avocats sont plutot ok
  • moralement c’est probablement pas ok mais bon et il y a débat autour des licenses copyleft notamment LGPL
  • 1% du temps, code copié verbatim de > 150 caractères
  • Question sur le code non open source sur lequel GitHub Copilot s’appuie
  • mais en gros le marcher s’en fout un peu des licences
  • Risque de reputation de Microsoft
  • la question c’est quand / si les gens seront prêt à accepter cet usage

Gradle publie sa roadmap

  • Historiquement, la société Gradle Inc ne publiait pas vraiment de roadmap officielle
  • Outre les tickets que l’on pouvait voir dans Github, cette fois ci, une “roadmap board” est visible et disponible pour tout le monde, et pas seulement pour les clients

Tekton est groovy (mais non, il n’utilise pas Groovy !)

  • Un grand tutoriel sur Tekton
  • Une brève histoire de CI/CD (avec un contraste avec Groovy utilisé dans Jenkins)
  • Un aperçu des grands concepts de Tekton, avec ses tâches et ses pipelines (Task, TaskRun, Pipeline, PipelineRun)
  • Comment installer Tekton
  • Les outils CLI
  • Un exemple concret d’utilisation

Sortie de Vim 9, surtout avec VimScript 9

  • des changements incompatibles entre VimScript 8.2 et 9 font qu’il était nécessaire de passer à une version majeure
  • mais l’ancienne version du langage reste supportée pour compatibilité
  • avec la nouvelle, les utilisateurs peuvent s’attendre à des performances x10 voire x100 !
  • le langage devient pré-compilé, au lieu d’être interprété ligne par ligne
  • l’idée était d’avoir un langage plus proche de ce qu’on trouve dans JavaScript, TypeScript ou Java

Architecture

Pour ou contre le logging Contre puis pour

  • tous les langages et plateformes utilisent les logs
  • debugging, tracing, journaling, monitoring, and printing errors
  • impact sur les performances (allocation supérieure sur un log que sur le code métier
  • log = mémoire, CPU (GC), I/O
  • risque de securité (dépendances et fonctionnalités sans besoin)
  • format des log: pour lecture humaine main volume impose traitement automatique
  • log level la bonne abstraction (souvent trop et pas ce que l’on veut à la fois
  • debugging -> utiliser un debugger ; journaling -> event sourcing ou solution dédiée ; tracing > open tracing ; monitoring -> monitoring solution via metrics et health check
  • bons usages de logging: en dev (println), fin de jobs automatiques, erreurs non récupérables ou innatendues, pas les erreurs utilisateur (logger les erreurs qui cachent un bug),
  • dans les container, Sébastien utilise System.out et System.err vu que les logs sont gérés par la plateforme
  • la réponse pour maintenant
  • les logs peuvent etre structurés
  • performance, on peut éviter les concatenations de String (parameterized logging), memory allocation est bien meilleure depuis 2012 (e.g. Shenandoah), vu des problèmes dans des cas plus rare de genre MDC.getCopyOfContextMap
  • disk I/O: ok mais disque cape a 200 MiB/s donc bon…: si c;est le cas, sépare I/O log du reste (disque vs network par exemple)
  • gros fan de logs structures via JSON ; log line sur console et JSON en fichier
  • log plus de manière conditionelle
  • tracing théoriquement bon mais limite dans son contexte métier et peu d’infos passables
  • system.out problème de scalabilité d’usage, etc et appel blocant println (async usage n’est pas bon)

LinkedIn et sa migration de Java 8 à 11

  • 1000 apps sur 320k hosts
  • Migration Java 8 vers 11 avec en vue G1
  • regardé depuis 2018
  • Jetty, Hadoop, Play, Samza: focalisé sur Jetty
    1. Mettre a jour le système de build, 2. Faire des tests de performance 3. Automatiser la migration
  • mise. a jour vers gradle 5
  • G1 80% des applis CMS 20%
  • pris 20 apps representatives
  • focalisé sur les applications avec les tailles de piles les plus grosses
  • de équipera jusquà 200% plus de latence et throughput: zones G1, Shenandoah et ZGC
  • automatisé la migration du reste et tourné les builds de tests qui ont identifié les problèmes de migration
  • quelques problèmes: suppression de certaines classes Java EE, changement du type de classloader par défaut, casting de classe plus stricte
  • ils ont utilisé -release 8 et ont limité les usages des features Java 11
  • les options de CLI de la JVM ont beaucoup changé
  • LinkedIn fait du microsercices ce qui veut dire que beaucoup de repositories sont liés à d’autre par un graphe de dépendance: euh c’est pas le principe des microservices d’éviter ça???
  • mise a jour de 500 librairies 3/4 de l’année
  • Quelques challenges vus
  • La JVM respecte groups et donc moins de thread GC sont crées
  • aussi ils pouvaient piquer des cycles CPUs avant et plus maintenant
  • Java 11 a un usage de mémoire hors pile plus important
  • reduction de latence p99 par 10% et le throughput par 20% sans changer le type de GC
  • C’est un bon retour qui sent le type de développement de la vrai vie

Méthodologies

Un article sur Xerox park et comment ils ont inventé le futur

  • article de 1985
  • Xerox achète un constructeur de mainframe, et ils ont crée un lab de recherche pour aider les usages
  • Macintosh et la souris et les fenêtres, les cartes météos colorées, imprimante laser, réseaux d’ordinateurs, lasers semi-conducteurs qui lisent les disques optiques, langages de programmation structurés
  • developer l’architecture de l’information
  • project proposes et faite en bottom up
  • PARC construisait ses propres hardware ce qui a créer des inventions et qui devaient etre construits pour 100 utilisateurs (scale)
  • recherche en construisant concrètement, pas en papier théorique académique
  • bit map, distributed computing, email, frame buffer, LAN, object oriented programming
  • Cree Alto un ordinateur « personnel » qui a permis aux chercheurs de tester leurs idées, beaucoup en avaient un.
  • donc ils ont du inventer le LAN et Ethernet (packet) via une personne avec passe de radio amateur (medium partagé et non reliable
  • premier projet distribué. (Un protocole d’impression)
  • antialiasing : ils amélioraient en testant pour de vrai
  • un gars a construit un proto de souris pour prouver que les curseurs étaient plus efficace: tests avec des dans la rue et IO a perdu :D
  • concept de modal (insert, delete) vers comportement non modal, plus simple pour l’utilisateur
  • small talk: un langage si simple qu’un enfant peut l’utiliser (simulation based programming)
  • overlapping windows ont été développées en small talk
  • autre groupe strong type system
  • Xerox ne savait pas convertir ces recherches en produits et les amener sur le marcher (sauf l’imprimante laser)

Gunnar Morling partage ses conseils et astuces pour faire de meilleures présentations aux conférences

  • Répéter, répéter, répéter
  • Démarrer par une mission
  • Raconter une histoire
  • Regarder l’auditoire, pas les slides
  • Mettre moins de texte sur ses slides, beaucoup moins
  • Personnaliser la présentation en fonction de l’auditoire
  • La règle de 3 (couvrir 3 points clés, 3 leçons retenues, partager 3 conseils…)
  • Avoir une solution de secours pour les démos
  • Jouer sur ses atouts (c’est pas grave si on est quelqu’un qui parle vite, si ça donne de l’énergie à son argumentaire)
  • Faire des retours en arrière (par exemple pour conclure sur un point abordé ou une supposition de départ et montrer qu’on a prouvé ce que l’on avançait)

Sécurité

Travis CI fuit encore des mots de passe

  • permet d’accéder au compte privé des développeurs open source qui ont mis en place travisCI
  • c’est la quatrième fois
  • token offre accès lecture et écriture aux repos
  • risque d’attaque de supply chain
  • tokens github, AWS ou DockerHub apr exemple mais aussi les bases de données utilisées dans la CI
  • via l’API TravisCI

HDMI peut-être un vecteur d’attaque et d’infection de vos ordinateurs

  • Un hack d’un adaptateur HDMI peut potentiellement infecter un video-projecteur, et qui à son tour pourra réinfecter les prochains ordinateurs qui s’y connecteront
  • Cet article propose de construire une sorte de connecteur qui sert de firewall HDMI pour éviter ce genre d’infection
  • il y a des préservatifs USB aussi qui ne laissent passer que la puissance et pas les données

Un guide pour protéger son macOS

  • Une suite de conseils comme de faire une installation toute fraiche, de mettre les mises à jour logicielle automatiques, n’autoriser que les applications signées, appliquer le chiffrement du disque…
  • Mais aussi utiliser par exemple un gestionnaire de mot de passe, éviter les extensions de navigateur, faire tourner un firewall
  • Et des liens vers des guides de sécurités plus avancés
  • un truc que je n’ai pas fait mais qui me tente c’est un outbound firewall comme little snitch ou lulu

Comment choisir un algorithme de courbes elliptiques

  • un article qui détaille le pour et le contre de certaines courbes elliptiques
  • cas d’usage, notamment gouvernemental
  • faiblesses (timing attaques etc)
  • pour les curieux mais la première courbe citée est celle la plus utilisée en ce moment

Loi, société et organisation

Stackoverflow sort son sondage sur les développeurs

  • 70% apprennent a coder en ligne (les plus de 45 ans dans les bouquins)
  • stackoverflow derrière la doc technique puis les blogs ; video 60% des gens ; podcast 7,21% damn!
  • presque 60% ont moins de 10 ans d’expérience ; si t’es pas VP ou CxO a 17 ans d’expérience, tu as raté ta vie
  • 9% cloud infra engineers
  • 22% ont neuro atypiques
  • Docker passe dans la catégorie outil fondamental (69% d’usage)
  • les frameworks 3D genre Unity 3D ou Unreal Engine sont des outils que des non développeurs pro apprennent
  • Rust technologie la plus aimée, Rust et Python en plus demandées
  • Java 6eme position mais 4ème pour ceux qui apprenent
  • Angular.is en framework le plus redouté / react.is le plus demandé
  • Docker et Kube sont les plus aimés et demandé
  • indépendants on augmenté de 5% et 4% pour les temples pleins
  • 85% des dev sont dans une orga partiellement distancié le
  • 62% des devs pro cherchent des réponses pendant plus de 30 minutes par jour, 25% 11h
  • Azure prend la deuxième place des cloud, OVH 3,7%
  • Spring framework le plus populaire de Java
  • VSCode 74%, IntelliJ 28%, vim 23%, Eclipse 12%, EMacs 4,5%
  • pleins d’outils asynchrone (tickets etc) que je ne connais pas
  • salaires ont augmenté de 23% en median

JavaScript change de licence open source

  • toujours la licence Ecma international license, assez restrictive qui interdit le fork, mais avec certaines provisions pour l’intégration et la reproduction
  • mais aussi une nouvelle licence dérivée de la W3C Document & Software License, un peu plus ouverte, qui permet d’intégrer et s’intégrer plus facilement avec les autres standards du Web

Outils de l'épisode

Rubrique débutant

Conférences

Nom de la conf du x au y mois à Ville - CfP jusqu'à y mois

de la part de Youen

Cette année Codeurs en Seine, c’est le 17 novembre et le cfp est ouvert
N’hésitez pas à amener un peu de JVM dans l’appel à orateur. (ca commence à se faire rare). Pour rappel : codeurs en seine c’est 1000 personnes autour des métiers du développement dans une des plus grande salle de Rouen, le kindarena.

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/