Published: Feb. 13, 2023, 8:47 a.m.
Antonio, Guillaume et Emmanuel discutent de licence Oracle pour Oracle JDK, de JEPs, de Flutter, d\u2019Hibernate, de Mokito, de Kafka, de (not so) Big Data, du parsing de YAML, de ChatGPT, de licenciements, de platform engineering, et de nombres flottants.
Enregistr\xe9 le 10 f\xe9vrier 2023
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode\u2013291.mp3
News Langages
Oracle a chang\xe9 une des licences de Oracle Java https://redresscompliance.com/oracle-java-licensing-changes-explaned-free/
InfoQ fait un r\xe9sum\xe9 des derni\xe8res nouvelles Java, les mises \xe0 jour sur les JEPs, les derni\xe8res releases https://www.infoq.com/news/2023/01/java-news-roundup-jan23\u20132023/
- sur Java specificquement
- des mises \xe0 jour de drafts autour du projet amber (primitive types in patterns etc)
- Une JEP pour discuter du future process des JEP (evolutions)
- JDK 20 en rampdown phase avec en nouvelles features: scoped values, record patterms, pattern matching for switches, virtual threads, structured concurrency - toutes en incubation ou preview
- https://www.infoq.com/news/2023/02/java-news-roundup-jan30\u20132023/
- Le framework RIFE fait son grand retour !
Sortie de Go 1.20 https://go.dev/doc/go1.20
- mais pas de gros changements, juste des am\xe9liorations de la toolchain, des librairies\u2026
Recap de la conf\xe9rence Flutter Forward 2023 https://medium.com/@flutterqueen/flutter-forward\u20132023-recap\u20138f6da4876e3
- Annonces de Flutter 3.7 et Dart 2.19
- Am\xe9lioration de la performance graphique (utilisation de Impeller au lieu de Skia)
- Layout adaptatif
- Barres et sous-barres de menu
- Validation de release iOS
- Support de Material 3
- Nouveaux widgets
- Support de ses propres shaders
- Facilitation de l\u2019int\xe9gration native avec FFIgen et JNIgen
- Support de la 3D
- Support de WebAssembly
- Support de RISC-V
- Possibilit\xe9 d\u2019int\xe9grer une app Flutter comme un \xe9l\xe9ment HTML dans un page HTML
- Un toolkit sp\xe9cifique pour les applis de News
- C\xf4t\xe9 langage Dart, il devrait bient\xf4t y avoir du pattern matching
Librairies
Les bonnes pratiques d\u2019accessibilit\xe9 pour les applications en Flutter https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d
- 4 grands th\xe8mes dans l\u2019article : l\u2019accessibilit\xe9 dans Flutter, les fonctionnalit\xe9s int\xe9gr\xe9es \xe0 Flutter pour l\u2019accessibilit\xe9, les meilleurs pratiques pour rendre les apps Flutter accessibles, et tester / d\xe9bugguer l\u2019accessibilit\xe9
- Flutter supporte le text contrast, les screen readers, les labels s\xe9mantiques, l\u2019utilisation au clavier
Comment logger les requetes Hibernate ORM https://www.adeliosys.fr/articles/hibernate-monitoring/
- log brut
- via un logger
- les requetes lentes (plus lentes que n millisecondes)
- les metriques plus avanc\xe9es (Statement, requetes, temps acquisition de connections, cache)
- Exposable via JMX
- le pool de connexion
Sortie de Mockito 5, avec la possibilit\xe9 de mocker des constructeurs, des m\xe9thodes statiques et des classes finales https://www.infoq.com/news/2023/01/mockito\u20135/
- avant, c\u2019\xe9tait d\xe9j\xe0 possible de le faire avec
mockito-inline mais maintenant c\u2019est \u201cout of the box\u201d - la version Java minimale passe de Java 8 \xe0 Java 11
Cloud
Kubernetes Java client ajout\xe9 le support de kubernetes 1.25 https://www.infoq.com/news/2023/01/kubernetes-java-client/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=java
- ajout d\u2019APIs dynamique pour faire du monitoring g\xe9n\xe9rique
- L\u2019article montre l\u2019API utilis\xe9e en alternative a certaines commandes
kubectl - fabric8 est une alternative
Data
Big data est mort https://motherduck.com/blog/big-data-is-dead/
- fondateur de BigQuery
- Puis regard\xe9 comment les utiilsateurs utilisaent Big Query
- Et pas un probleme de big data
- Retour des moteurs classiques MySQL / PostgreSQL vs MongoDB etc
- la plupart des utilisaeur de big query etaient sous les 1Tb et 50% at 100GB ou moins
- doncle deluge de donn\xe9es n\u2019est pas arriv\xe9
- le shift moderne c\u2019est de detacher le stockage du compute
- les donn\xe9es grossissent plus vite que les besoin en compute sur ces donn\xe9es
- la taille du workload est sur un petit sous ensemble de la taille des donn\xe9es enti\xe9res (90% des requetes bigquery sont sur 100M de donn\xe9es)
- bases de donn\xe9es modernes sont force a travailler sur un sous ensemble des donn\xe9es
- pression pour scocker moins de donn\xe9es sur les equipes
- donn\xe9es sont requetees dans la journ\xe9e, dans la semaine et ensuite rarement touch\xe9es
- donc big data = whatever doesn\u2019t fit on a single machine, est de moins en moins vrai
- map reduce en 2004 et machines de maintenant entre 2 et 4 ordre de grandeurs de RAM en plus
- avant on se foutait de supprimer des donn\xe9es mais GDPR et responsabilit\xe9 p\xe9nales change la donne
- data putrefaction comme le bit rot
- questionnaire pour savoir si les prochaines generations de data processing seront suffisant pour vous
- distribution est une raison par contre
Outillage
Tous les soucis avec YAML https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
- article qui explique la complexit\xe9 de YAML et ses incoh\xe9rences
- Comparaison a la simplicit\xe9 de JSON
- les commentaires JSON enlev\xe9s en 2005 parce que les gens mettaient des meta instructions pour les parseurs et l\u2019implementation des commentaire \xe9tait tr\xe8s complexe
22:22 est une nombre en base 60 vs 80:80 qui ne l\u2019est pas (enleve en YAML 1.2 - **.png est invalide, ** est une reference vers une ancre - !.git est pars\xe9 diff\xe9remment par les parseurs: ! est une echape pour exprimer un type natif du langage (e.g. Java) - ca veut dire que charger un YAML inconnu est non s\xfbr - fr - de - no retourne ["fr", "de", no] le probl\xe8me Norv\xe8ge | chang\xe9 en tre YAML 1./1 et 1.2 mais l;es parseurs gardent les anciens comportements:. Boolean: on, yes, y on: "let's go" est convertit en { "True": "let's go" } parce que on est boolean et accept\xe9 en cl\xe9 non String dans YAML version: [ 9.5.1, 12.13] -> { "version": [ "9.5.1", 12,13 ] } les chiffres non echap\xe9 par un guillement - syntax highlighting est donc dependant
- les templates dans yaml ca court a la cata
- altewrnatives: TOML, JSON, sous ensemble de YAML (toujours quoter les chaines)
ChatGPT, on lui attribue plus de magie qu\u2019il n\u2019en a https://arxiv.org/pdf/2212.03551.pdf
- un article scientifique mais de 8 pages seulement
- ChatGPT entant que large language models (LLM) et un prompt Engineering au dessus (le conversational agent)
- ChatGPT c\u2019est une ex\xe9cution du mod\xe8le Next Token Prediction
- C\u2019est de la statistique brute mais excr\xe9ment versatile dans ses usages
- Tendance \xe0 anthropomorphismes parce qu\u2019on a pass\xe9 la sensation de uncanny valley
- Consid\xe9rant la distribution statistique des mots du corpus public, quels mots ont le plus de chance de venir apr\xe8s
- Pas de relation au monde, aux objets et aux interactions d\u2019\xeatres partageant le m\xeame langage
- Pas des faits, ChatGPT ne sait pas, n\u2019a pas d\u2019intention
- C\u2019est donc un outil g\xe9nial pour \xe9liminer un paquet du bullshit work de tous les jours, pas les gens qui le font
- Est-ce que les capacit\xe9s sont \xe9mergentes ? LLM fondamentalement est hors du concept
Le m\xe9ta tutoriel sur le parsing avec Antlr https://tomassetti.me/antlr-mega-tutorial/
- Couvre diff\xe9rents langages don\u2019t Java, Python, JavaScript et C#
- Explique les diff\xe9rentes phases de lexing, de parsing
- Comment r\xe9soudre les ambigu\xeft\xe9s avec les pr\xe9dicats s\xe9mantiques
- Comment transformer du code
- Comment tester son parseur
- Et autre trucs et astuces
Un tutoriel sur comment releaser un module Java avec Maven, JReleaser et Github Actions https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/
- montre le setup necessaire (cl\xe9 GPG, pripri\xe9t\xe9 du groupid, config maven etc
- montre comment faire la release \xe0 la main
- comment l\u2019automatiser via GitHub actions
Un tutoriel expliquant comment utiliser CRaC pour vos applis Java dans un conteneur https://foojay.io/today/how-to-run-a-java-application-with-crac-in-a-docker-container/
- Coordinated Restore at Checkpoint (d\xe9velopp\xe9 par Azul)
- Permet de cr\xe9er des snapshots d\u2019une application Java
- Pour qu\u2019elle puisse \xeatre relanc\xe9e rapidement apr\xe8s son d\xe9marrage, son warmup
Une intro \xe0 Kafka en fran\xe7ais https://blog.octo.com/kafka-repond-il-a-mon-besoin/
Maven 3.9 sorti https://lists.apache.org/thread/0tfr7t2j2ddbv4gjvxm47yohtk3dg6b3
Les bisounours
M\xe9thodologies
De operation engineering vers platform engineering https://www.infoq.com/news/2022/10/platform-devops-summary/
- et quand le sysadmin devient de nouveau sexy
- grosse tendance et beaucoup de discussions autour du la platform engineering
- une plateforme impos\xe9e aux devs mais sexy donc c\u2019est bon cette fois: plus serieusement customer focus - la fameuse developer experience
- Requilibrage entre dev vs ops puis devops plat et maintenant ceci. Sans enlever devops
- car devops amene une charge mentale lourde
- objectif developper la \u201ccore business value\u201d et donc supporter cela avec une Internal DEveloper Platform
- Backstage est la GUI au dessus mais une IDP est plus profonde
- Infra <-> Platform <-> dev teams
- IDP: ne pas avoir a faire tourner l\u2019infra (pour une equipe dev metier)
- Et cela permet d\u2019ajouter des controles \u201centreprise\u201d: cout, gouvernance etc
- C\u2019est un pendule qui se reequilibre, mais n\u2019oublions pas que les devs aime le jeu, comme les otaries. Pas pisser du code metier le plus vite possible.
- Est-ce que les IDP seront populaires, c\u2019est la grande question
- un contre point dans l\u2019articl;e: IDP are expensive and hard to do, offer a mediocre service at best, destroy velocity, and create bad incentives
- li\xe9 a la notion de golden path
S\xe9curit\xe9
Une liste de binaires Unix qui peuvent \xeatre utilis\xe9s pour bypasser des syst\xe8mes malconfigur\xe9s https://gtfobins.github.io/
- apparemment m\xeame des images type distroless peuvent \xeatre affect\xe9es
- risques potentiels : acc\xe8s \xe0 un shell, des privil\xe8ges \xe9lev\xe9s, transf\xe9rer des fichiers, etc.
Loi, soci\xe9t\xe9 et organisation
Twitter desactive l\u2019API pour les clients qui n\u2019affichent pas les pubs de Twitter (comme Tweetbot https://twitter.com/tweetbot/status/1613763746437947394)
- et paf le support de twitter sur ton ordi
Ola Bini d\xe9clar\xe9 innocent https://peoplesdispatch.org/2023/02/01/digital-rights-activist-ola-bini-declared-innocent-by-ecuadorian-court
- Arr\xe9t\xe9 en 2019 en Equateur
- Accus\xe9 d\u2019avoir eu access \xe0 des ordinateurs et des systemes de communication
- En m\xeame temps que Julian Assange \xe9tait renvoy\xe9 de l\u2019ambassage Equatorienne de Londres
- Il a fait 70 jours de prison
Google a vir\xe9 son \xe9quipe Open Source https://www.infoworld.com/article/3686511/google-blew-it-with-open-source-layoffs.html
- gros efforts autour de l\u2019open sourcing (Kubernetes, Tensor flow)
- paie des dividendes
- vir\xe9 par les tetes de gondoles mais ceux qui avaient fait des diff\xe9rences
- Open Source program, Google Summer of Code
- Grosse influeence interne qui se perd, risque pour le futur
- ca reste l\u2019opinion de Matt Asay ( :stuck_out_tongue_winking_eye: )
Dans la saga Twitter, apr\xe8s l\u2019arr\xeat des clients Twitter tiers, maintenant l\u2019acc\xe8s m\xeame \xe0 l\u2019API va devenir payant https://twitter.com/twitterdev/status/1621026986784337922
- donc par exemple, on ne pourra m\xeame plus cr\xe9er des bots gratuitement, comme faire des annonces automatiques de release, etc
- ah bah merde c\u2019est ce que je fais pour les cast codeurs :/
On peut rajouter son Mastodon sur son profil Github https://github.blog/changelog/2023\u201302\u201302-add-more-social-links-to-your-user-profile/
- Pratique pour la v\xe9rification Mastodon !
- On pouvait seulement mettre un lien vers Twitter, maintenant on peut avoir plusieurs profils de m\xe9dias sociaux diff\xe9rents
Rubrique d\xe9butant
Julia Evans a \xe9crit deux articles int\xe9ressants sur les probl\xe8mes avec les nombres flottants et avec les nombres entiers https://jvns.ca/blog/2023/01/13/examples-of-floating-point-problems/ https://jvns.ca/blog/2023/01/18/examples-of-problems-with-integers/
- les probl\xe8mes classiques d\u2019overflow
- le grand \xe9cart entre les grands nombres flottants
- des cas concrets de valeur approch\xe9e (proche \xe0 epsilon pr\xe8s), ou avec JavaScript qui interpr\xe8te les entiers comme des flottants et du coup interpr\xe8te mal des grands ID en JSON
- des cl\xe9s primaires trop petites, les bizarreries de l\u2019encodage des nombres sign\xe9s ou non
Quels sont les types de m\xe9moires dans la JVM ? https://www.baeldung.com/java-jvm-memory-types
Conf\xe9rences
La liste des conf\xe9rences provenant de Developers Conferences Agenda/List par Aur\xe9lie Vache et contributeurs :
Nous contacter
Pour r\xe9agir \xe0 cet \xe9pisode, 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 \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/