Published: Dec. 10, 2022, 8:23 a.m.
Guillaume et Emmanuel discutent les nouvelles de novembre d\xe9cembre: spring boot 3, AWS SnapStart, GitHub Copilot en proc\xe8s\u2026 Et aussi des articles de fond: performance, SRE et l\u2019auto r\xe9silience, comment utiliser Git, le Devops pour les d\xe9cideurs, l\u2019age et la tech et d\u2019autres sujets encore. R\xe9sum\xe9
Enregistr\xe9 le 9 d\xe9cembre 2022
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode\u2013289.mp3
News Langages
Comment choisir ses collections ? Entre les diff\xe9rentes listes, maps, queues, etc. https://www.baeldung.com/java-choose-list-set-queue-map
- un bon rappel des fonctionalit\xe9s des diff\xe9rentes collections (discuter le diagramme de choix)
- et un bon rappel des ordres de grandeur d\u2019insertion, de lecture etc
- Attention o(n) ne veut pas dire plus lent que o(1), ca veut dire que ca scale lin\xe9raiement
- Tester avec le volume attendu de donn\xe9es
- Un bon viel
Object[]
et le traverser \xe0 chqaue fois peut etre bien plus efficace (moins gourmand en structure memoire, moins de jump memoire, etc)
Librairies
Spring Boot 3 est sorti https://spring.io/blog/2022/11/24/spring-boot\u20133\u20130-goes-ga
- Java 17 de base
- Support de GraalVM Native Image (au lieu de l\u2019ancienne exp\xe9rimentation de Spring Native)
- Am\xe9lioration de la tra\xe7abilit\xe9 avec Micrometer et Micrometer Tracing
- JakartaEE 9 minimum et support de JakartaEE 10
Quarkus est 600 fois plus lent qu\u2019un comp\xe9titeur, ou pas https://t.co/1c2sFSY9sE
- discute le lien entre les r\xe9sultats et l\u2019environnement
- Une erreur de code initiale
- Puis une erreur de limite de syst\xe8me ou deux
- Pour arriver au r\xe9sultat
- Bon retour sur l\u2019approche m\xe9thodologique
Spring vault 3 https://spring.io/blog/2022/11/28/spring-vault\u20133\u20130-goes-ga
- Java 17
- Plus de clients support\xe9s comme le client jtm r\xe9actif du jdk
- Support du versionage des mots de passe pour les vaults cl\xe9 valeur
Cloud
Mais pourquoi Twitter tourne t\u2019il toujours malgr\xe9 toutes les personnes renvoy\xe9es ? https://matthewtejo.substack.com/p/why-twitter-didnt-go-down-from-a
- Gr\xe2ce au long travail de SRE, de mise en place d\u2019auto-r\xe9paration, de cache, de monitoring, de sur-provisioning. Donc beaucoup d\u2019automatisation pour faire en sorte que le tout fonctionne \u201cpresque\u201d tout seul sans trop d\u2019intervention humaine.
- C\u2019est un article \xe9crit par un des SRE qui travaillait en particulier sur le cache de Twitter.
GitHub passe \xe0 un versioning par date de son API REST https://github.blog/2022\u201311\u201328-to-infinity-and-beyond-enabling-the-future-of-githubs-rest-api-with-api-versioning/
- au lieu de continuer avec une v4, v5, etc, utilisation de date comme 2022\u201312\u201325
- chacune de ses versions seraient support\xe9es a minima 2 ans
- on peut sp\xe9cifier la version avec un header HTTP sp\xe9cial
- pas de changement pour l\u2019API GraphQL par contre
- Stripes va encore plus loin en se rappelant la version utilis\xe9e au premier appel et le fixe par defaut
- Les appels sans version explicite utilisent celle l\xe0, et on peut la faire evoluer
Amazon SnapStart pour lambda https://aws.amazon.com/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/
Outillage
Petit tip Git de Minko Gechev (monsieur Angular) https://twitter.com/mgechev/status/1594758205237706752
- On peut faire un git clone [repo] \u2014depth 1 pour dire qu\u2019on ne veut que la derni\xe8re r\xe9vision, et non pas tout l\u2019historique du repo
- C\u2019est pratique en particulier en CI pour gagner du temps lorsqu\u2019on a un gros repo avec beaucoup de r\xe9visions
Si vous luttez toujours avec git ce guide tr\xe8s d\xe9taill\xe9 peut vous aider. https://github.com/k88hudson/git-flight-rules
Faire tourner ses Github Actions en local avec le projet open source Act https://github.com/nektos/act
- Pratique de v\xe9rifier en local le fonctionnement de son pipeline avant de le pousser sur Github en prod
- Utilise Docker sous le capot pour faire tourner chaque \xe9tape
- peut marcher sur podman mais pas garanti pour l\u2019instant
Comment transformer n\u2019importe quel site web ou webapp en application autonome https://glaforge.appspot.com/article/turning-a-website-into-a-desktop-application
- utilisation d\u2019une fonctionnalit\xe9 de Chrome : cr\xe9ation de raccourci avec ouverture dans une fen\xeatre \u201csans chrome\u201d
- fonctionne sur tous les OS
- utilise le favicon comme ic\xf4ne pour l\u2019application
- le site web se retrouve dans votre barre des t\xe2ches comme une application normale, et on peut faire un ALT/CMD-Tab pour aller vers son application, etc.
Architecture
Six patterns pour les architectures event driven https://medium.com/wix-engineering/6-event-driven-architecture-patterns-part\u20131\u201393758b253f47
- de Wix
- Trois patterns dans cet article
- Consume and project : vue dematerialisee copie des donn\xe9es chaudes consomm\xe9es par beaucoup. Et ces vues sont focalis\xe9es sur un consommateur. Kafka et CDC au milieu pour d\xe9coupler
- Event driven de bout en bout : websocket utilise pour envoyer les demandes. Le web stocket serveur copie dans Kafka. Ces consommateurs font le job et un message est envoy\xe9 via le web socket serveur. R\xe9silience, d\xe9couplage
- K/V store: et en m\u2019articuler avec kafka qui permet d\u2019\xeatre consomm\xe9 en k/v basse latence et en consommation d\u2019\xe9v\xe8nement
- Peut \xeatre int\xe9ressant mais pas si simple a comprendre les usage dans cet article
M\xe9thodologies
Un article sur quoi et pourquoi le DevOps (en fait englobant les bonnes pratiques du moment) https://enix.io/fr/blog/devops-benefices-difficultes/
- les tech ne vont pas apprendre grand chose
- mais c\u2019est un article pour les managers ou plutot les execs pour les aider \xe0 voir la valeur
- souvent plus facile de montrer la valeur par du contenu exterieur a l\u2019entreprise percu comme neutre
- autres articles sur Kubernetes pour les execs https://enix.io/fr/blog/kubernetes-benefices-difficultes/
Amazon et la methode \u201cworking backwards\u201d pour un produit https://www.productplan.com/glossary/working-backward-amazon-method/
- imagine le produit pret a etre releas\xe9
- ecrire la press release
- evaluer l\u2019opportunit\xe9 (doit-on le construire)
- d\xe9couvrir les solution pour le faire et avoir l\u2019appriobation des d\xe9cideurs
- construire la roadmap
- construire le backlog
S\xe9curit\xe9
1.5 million de lignes de code dans Android sont maintenant en Rust https://security.googleblog.com/2022/12/memory-safe-languages-in-android\u201313.html?m=1
- de plus en plus de code memory safe (Java, Kotlin, Rust)
- Mais la majorit\xe9 de nouveau code reste quand meme Java et C++
- Et une correlation de baisse de vulnerabilit\xe9s li\xe9es a la suret\xe9 de m\xe9moire (moins de code de programme memory unsafe)
- Ou maturation du code avec moins de vuln?
- Autres efforts: outils de securisation de la memoire en C/C++, fuzzing
- Zero vuln memoire dans le code rust en 2 ans et en moyenne 1 / kLOC dans le code historique)
- Java -> JNI, Rust - unsafe {} pour les acc\xe8s resource
Loi, soci\xe9t\xe9 et organisation
Les dinosaures de la tech commencent \xe0 40 ans? https://www.linkedin.com/pulse/non-nous-ne-sommes-pas-des-dinosaures-de-la-tech-pass%C3%A9-ramade/
- Commentaire int\xe9ressant de Benjamin Marron qui explique \u201cs\u2019\xeatre restreint aux technos de son coeur d\u2019activit\xe9 car trop de veille technologique h\xe9t\xe9rog\xe8ne l\u2019avait \xe9puis\xe9 et avait renforc\xe9 son sentiment d\u2019\xeatre compl\xe8tement obsol\xe8te et d\xe9pass\xe9\u201d https://twitter.com/bmarron/status/1596136098828148736
- \xe2ge median des devs entre 28 et 31 ans chez Google ms Facebook
- Mais 50 ans c\u2019est 30% de la force de travail
- Avantages seniors
- Exp\xe9rience
- Mentorat (comm, interaction interpersonnelle, (atlassian un 40 ans dans chaque \xe9quipe
- r\xe9tention Moins de changement de travail tous les 3 ans
- Flexibilit\xe9 : les vieux ont leurs enfants partis
- Aide \xe0 faire des produites pour les personnes de m\xeame \xe2ge
- pas souvent dans les politiques de DE&I
GitHub copilot menac\xe9 par un proc\xe8s https://www.infoq.com/news/2022/11/lawsuit-github-copilot/?utm_source=twitter&utm_medium=link&utm_campaign=calendar
- aux \xc9tats Unis
- Class action contre copilot GitHub, ms et OpenAI
- Violation de copyright et notamment des licenses open source
- Hypoth\xe8se est que humain ou AI, m\xeame responsabilit\xe9 face \xe0 la license
- Discussion autour de fair use vs rupture de contrat DMCA etc
- Piratage de logiciel \xe0 une \xe9chelle sans pr\xe9c\xe9dant
- Pour avoir des cons\xe9quences fortes sur l\u2019IA et son utilisation des sources ouvertes pour construire du contenu
- Et Antonio va devoir recorder \xe0 la main
Rubrique d\xe9butant
Diff\xe9rentes m\xe9thodes d\u2019interpolation des chaines en Java https://www.baeldung.com/java-string-interpolation
- la concatenation avec
+
- la methode
format()
souvent intimidante mais plus optimis\xe9e et sure StringBuilder
le plus flexible notamment dans les cas de if
et autre variations mais moins sur que format. et plus rapide MessageFormat
pour les chaines de caract\xe8re utilisateur (multi langage) - Apache Commons (pas sur qu\u2019il y ait beaucoup d\u2019usage dans les JDK modernes
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/