LCC 240 - Fuseaux horaires - la fontaine à bogues
Posté le 17/10/2020Cet épisode consacre Java le langage et sa version 15 en particulier. On discute aussi l’impact des mémoires fautives sur la JVM, le réactif, les frameworks backends et bien d’autres choses. Et nous avons deux crowdcasts ! 🕺
Enregistré le 13 octobre 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-240.mp3
News
Langages
Java 15 (plus de détails par Remi Forax ).
- unicode 13,
- hidden classes (non-discoverable implementation details of the framework e.g. classes générées au runtime, déchargement agressif),
- TreeMap amelioration de perf,
- check de revocation pour le jar signer,
- sha-3 support,
- nashorn enlevé,
- les lock biaisés sont désactivés/dépréciés,
- ZGC prêt pour la prod,
- amélioration d’ergo de G1 (on en avait parlé),
Azul couvre JDK 15, avec un focus sur les Sealed classes, les Records, les Hidden classes.
Des bugs de timezone qui vous pouvez rencontrer dans vos applications.
- Faire tourner son code sous une vieille version de JRE/JDK qui n’est pas à jour au niveau des données de TimeZone.
- Le serveur est peut-être dans votre TimeZone à vous, ou bien sur UTC, alors attention !
- En stockant des dates en bases de données, il faut aussi prendre en compte la TimeZone configurée dans la DB !
- Parfois aussi côté affichage, on peut oublier de parser les dates avec les infos de TimeZone, ou côté client la TimeZone ou l’heure d’été peut être mal configurée…
Enregistrements d’Oracle Developer Live Java
- https://inside.java/2020/09/17/devlive-java-lang-futures/
- https://inside.java/2020/09/17/devlive-keynote/
Les crashs de JVM sont souvent des erreurs mémoire. Pourquoi ?
- La JVM on lui donne souvent beaucoup de mémoire.
- Les métadonnées utilisées par le GC sont importantes.
- Ces métadonnées sont accédées entièrement lors d’un full GC.
Romain Manni-Bucau explique comment configurer Java Util Logging avec un formateur sur une ligne, pour que ce soit plus sympa dans un contexte prod Docker
Un rapport sur l’écosystème Groovy :
- l’outil le plus utilisé : Gradle (pour le build).
- librairie la plus populaire : Spock (pour les tests).
- framework le plus populaire : Grails.
- beaucoup d’utilisation de Groovy comme langage de script, d’automatisation, mais aussi comme langage général principal et comme Domain-Specific Language.
Librairies
- Isolated tests.
- New Enabled/DisabledIf execution conditions.
- Custom disabled reasons.
- New MethodOrderer.DisplayName.
- New DisplayNameGenerator.Simple.
- Java Flight Recorder support.
- Improved EngineTestKit.
- nouveau plugin Gradle qui facilite le build d’image natives Graal et de containers Docker en couches.
- support des fonctions Oracle Cloud.
- support amélioré de Google Cloud Platform, avec le logging structuré de Stackdriver,
- et le support natif du messaging avec Google Cloud Pub/Sub.
- Plus d’infos dans la doc dans la section des nouveautés : https://docs.micronaut.io/2.1.0/guide/index.html#whatsNew
Sortie de Quarkus 1.8 (et on n’avait pas annoncé 1.7)
- multiple persistence unit
- Micrometer
- intégration avec jbang
- GraalVM 20.2
- MongoDB pour Kotlin
- Elasticsearch REST client (1.7)
- Client vert.x Redis (1.7)
- Hibernate Envers (1.7)
- DB2 (1.7)
Infrastructure
NVidia rachète ARM à SoftBank pou 40Md$, ça va faire un sacré concurrent à Intel et AMD. (https://www.anandtech.com/show/16080/nvidia-to-acquire-arm-for-40-billion)
Retour d’experience sur l’utilisation de Kubernetes. Java et ses problèmes (spécialement 8, toujours grosse conso mémoire), mettre à jour Kubernetes (ils créent des nouveaux clusters), corriger un index au démarrage vs liveness probe, exposer des IPs externes et la limite de connexions parallèles.
Project Natick: Datacenter mis sous l’eau en 2018 par Microsoft.
- 864 servers, 27.6 petabytes de stockage, 117 pieds au fond de l’ocean (Écosse).
- Aux dires de Microsoft, c’est un succès.
Google est neutre en carbone, et a même racheté sa dette carbone depuis sa création.
- (1) We were the first major company to become carbon neutral in 2007. → Google a été “neutre” par compensation, chaque année depuis 2007, notamment en achetant autant d’énergie renouvelable que d’énergie carbonée.
- (2) We were the first major company to match our energy use with 100 percent renewable energy in 2017… We’re eliminating our entire carbon legacy, effective today. → Depuis 2017, Google a en plus acheté autant d’énergie renouvelable l’année N que d’énergie carbonée consommée l’année N+1. En septembre 2020, Google a fini par être totalement “neutre” en ayant consommé autant d’énergie renouvelable que d’énergie carbonée depuis la création de Google.
- (3) We are the first major company to make a commitment to operate on 24/7 carbon-free energy in all our data centers and campuses worldwide… by 2030. → Dans 10 ans, Google espère ne plus consommer d’énergie carbonée du tout.
Data
CrunchyDB offre un PostgresSQL as a service qui est cross clouds.
Outillage
Github sort la version 1.0 de son outil en ligne de commande pour gérer ses projets Github.
Architecture
Un vieux truc, le memo de Bezos sur la service oriented company.
Jonas Boner annonce les 8 principes réactifs.
- I. Stay Responsive : Always respond in a timely manner.
- II. Accept Uncertainty : Build reliability despite unreliable foundations.
- III. Embrace Failure : Expect things to go wrong and design for resilience.
- IV. Assert Autonomy : Design components that act independently and interact collaboratively.
- V. Tailor Consistency : Individualize consistency per component to balance availability and performance.
- VI. Decouple Time : Process asynchronously to avoid coordination and waiting.
- VII. Decouple Space : Create flexibility by embracing the network.
- VIII. Handle Dynamics : Continuously adapt to varying demand and resources.
Méthodologies
Les recommendations de Red Hat aux Red Hatters sur la contribution à l’Open Source
Sécurité
Jenkins vient avec pleins de fix de sécurité comme tous les mois (voire 2 fois par mois).
Loi, société et organisation
Est-ce que le Hacktoberfest de Digital Ocean fait mal à l’Open Source ?
- plein de gens contribuent des commits à deux balles, juste pour gagner un t-shirt, et c’est les mainteneurs de projets open source qui sont obligés de se taper toutes les pull-requests comme des messages de spam
- Update de DigitalOcean to reduce spam
- Comment une personne (un YouTuber avec 600K followers a pourri le système)
Bye bye Stop Covid qui va devenir Alerte Covid. L’application ne règle en rien les problèmes en terme d’efficacité et de vie privée déjà décriés dans le passé mais veut rajouter des usages en ciblant notamment l’utilisation dans les bars et restaurants et en y diminuant la durée d’exposition utilisée comme indicateur de contact. Elle devrait aussi pouvoir vous notifier d’alerte locale (le gouvernement dans votre poche).
Outils de l’épisode
Un écran 49” 32:9 https://www.samsung.com/us/computing/monitors/gaming/49-crg9-dual-qhd-curved-qled-gaming-monitor-lc49rg90ssnxza/
Rubrique débutant
Si vous débutez en Docker, il est important de comprendre les différences entre les instructions RUN, CMD, et ENTRYPOINT de vos Dockerfiles.
- RUN est exécuté quand on build l’image.
- CMD est l’instruction par défaut lancée au démarrage de votre image.
- ENTRYPOINT permet plus de flexibilité que CMD en supportant les paramètres en entrée.
Conférences
Codeurs En Seine 2020 - Edition en ligne
- En novembre, les mardis à 19h et les jeudis à 21h
- 45 minutes de conférences + environ 15 minutes de questions
- En ligne sur Twitch + rediffusion Youtube
Crowdcast de Emmanuel Demey sur les conférences à venir dans le Nord.
- Cloud Nord le 19/10 en remote : https://cloudnord.fr/
- Web Stories le 5/2 en présentiel (pour le moment) https://webstoriesconf.com/
- Le Devfest Lille le 11/6 en présentiel https://devfest.gdglille.org/
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/
LCC 239 - Interview Rust avec François Teychene, Sylvain Wallez et Geoffroy Couprie
Posté le 05/10/2020Dans cet épisode, Audrey a fait appel à l’aide d’un ami, François Teychene pour interview Sylvain Wallez et Geoffroy Couprie sur le langage le plus populaire de ces dernières années : Rust.
Enregistré le 2 octobre 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-239.mp3
Interview
Ta vie, ton oeuvre
Sylvain Wallez - Twitter - LinkedIn : Développeur passionné pratiquant Java depuis la fin du 20e siècle, les langages m’intéressent, surtout quand ils sont fortement typés ! Je suis tombé dans Rust lors de l’écriture d’un blog post sur Go. Cofondateur du JUG et du Rust meetup toulousains, membre de la Fondation Apache depuis plus de 15 ans, j’ai été cofondateur d’une boîte d’expertise Java, CTO de startup, freelance et j’ai monté le bureau toulousain d’OVH. Je travaille actuellement chez Elastic où après 4 ans dans l’équipe Cloud je viens de bouger vers l’équipe “Clients” qui développe les SDK où j’ai en charge les SDK Java et Rust.
Geoffroy Couprie : Geoffroy Couprie travaille chez Clever Cloud en développement logiciel. Basé à Nantes, il se passionne pour l’open source, les problématiques de performance et la sécurité.
Rust en 2 phrases
Le langage
Quelles sont les fonctionnalités clés du langage ?
Quelles sont les inspirations de ce langage ?
Quel différenciateur vs reste ?
Quels sont les utilisateurs type ?
Pour quel use cases ?
Evolution du language
Async/await
Maturité du langage / des librairies
Sous le capot
Comment Rust gère la mémoire sans garbage collection ?
LLVM binding
Support des hardwares ? (rasp, etc etc …)
Apprentissage
Apprendre Rust :
En prod chez qui
Qui utilise Rust en prod ?
- La page “users” sur le site de Rust
- Les offres d’emploi chez Apple
- AWS Firecracker
- Google Fuchsia
- Microsoft
- Sentry
L’écosystème
Gestion des dépendances, outil de build, test etc (aka cargo c’est la vie)
Tools utils:
- le linter clippy
- cargo-license
- cargo-deny
Librairies de référence :
- le “maven central” crates.io
- Serde (le Jackson de Rust)
- Tokio (runtime asynchrone)
- StructOpt (lignes de commande)
Frameworks pour écrire des webapps en Rust :
- Actix pour le server
- Yew pour le front-end
- AreWeWebYet?
Communauté et futur
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/
LCC 238 - Registries, registries, registries !
Posté le 15/09/2020Antonio, Guillaume et Emmanuel discutent de registries et de registries et de registries. Et sinon TypeScript 4, Kotlin 1.4, Spring One, comment gérer des équipes, lire du code, des APIs. Bref plein de choses intéressantes :)
Enregistré le 10 septembre 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-238.mp3
News
Langages
jdk/jdk repository transition to Git, GitHub and Skara is done
Ca rale contre G1 en default dans Java 11
- throughput dégradé
- RubyKon Benchmark 2020: CRuby vs JRuby vs TruffleRuby
- Rubykon is Go AI written in Ruby using Monte Carlo Tree Search
- Ce n’est pas un benchmark représentatif de la plupart des applis (car très peu d’IO) mais beaucoup de CPU
- Utilise beaucoup de tableaux, peu de collection, pas de string…
- TruffleRuby still has the best “warm” performance
Les blocs de texte de java 15 qui sort ce mois ci
- Simplifier l’écriture des chaines de caractères sur plusieurs lignes
- JEP 378: Text Blocks
- Délimiteur trois guillemets ( “”” )
- Partial semantic mode : Temps de démarrage plus rapides du projet par analyse partielle (vs toutes les dépendances) (dans l’IDE ?)
- Variadic tuple type (tuple de taille définie et de types définis et hétérogènes)
- Dont rest élément où l’on veut.
- Tuple labels comme des named parameters
- Class property inference from constructor
- Catch as unknown au lieu de any (downcasting)
- En fait le compilateur fournit les outils à l’IDE
- Amélioration de la qualité. Stabilité et performances dans l’IDE
- Corrige notamment des lenteurs ou blocages dans l’IDE
- Debugger de Coroutines
- Nouveau compilateur pour centraliser le code entre les différentes plateformes
- Sam pour les interfaces kotlin (Single Abstract Method)
- Kotlin 1.4.0 comes with a variety of different language features and improvements. They include:
- SAM conversions for Kotlin interfaces
- Mixing named and positional arguments
- Trailing comma
- Callable reference improvements
- break and continue inside when included in loops
- Explicit API mode for library authors
- kotlin.serialisation en 1.0 RC
Librairies
- Lambda builder
- Spring Boot 2.3.3
- junit 5
- route template (parameterized routes)
- faster reflexion free startup
- new components
Infrastructure
Docker limite le nombre d’image par 6 heures
- The second policy update is regarding limits on the number of image pulls. A pull is defined as up to two GET requests to the registry URL path ‘/v2//manifests/’. Again, starting November 1, 2020:
- Anonymous users will have an upper limit of 100 image pulls in a six hour period
- Accounts authenticated with a DockerID will have an upper limit of 200 image pulls in a six hour period
- Pro and Team subscriptions do not have limits
- la question c’est image == layer donc 100 peut arriver vite pendant un lab
Github son propre container registry
- suite de GitHub packages prix
- en beta gratuite pour l’instant
GitLab réduit les minutes de runners pour les comptes gratuits
- “We are updating the CI/CD minutes limit in the Free tier to 400 minutes per group per month.”
- le marketing du gratuit / freemium en perte de vitesse pour les développeurs ?
Packages et registries en gratuit dans GitLab
- apres les registries de containers, ils ajoutent : Maven, npm, PyPi, NuGet, Composer, Conan et Go
Cloud
Google cloud function supporte Java 11 depuis mi août
- Hosting, monitoring d’app spring boot
- “Automatically wire your apps with the Spring service runtime. Once deployed you can easily monitor application performance, fix errors, and rapidly improve applications”
- mais ca reste un peu marketing et pas détaillé
Web
Kotlin Multiplateforme mobile en alpha
- Kotlin Multiplatform Mobile (KMM) est un SDK cross plateforme (iOS et Android)
- Intégration complète dans Android Studio pour le dev
- Refonte des compilos pour avoir une base commune entre le Kotlin / Kotlin JS et Kotlin Native
- partager la business logic et laisser la UI et navigation en natif iOS ou Android.
Outillage
Comment fonctionne Time-based One Time Passwords
- un secret partage
- un compteur basé sur (t-t0)/tx
- sha1 le tout
- tronqué pour avoir 6 chiffres
GitPod (un concurrent à Eclipse Che à priori) devient open source
Méthodologies
Si tu déprécies, je te fais caca dessus
- lecture intéressante entre la balance entre la dépréciation, retirer le support vs garder les choses pour toujours
- Google et son monorepo et son clean code amène a des dépréciations plus élevées que l’industrie
- “Backwards compatibility keeps systems alive and relevant for decades”
- emacs, android, java
- dépréciation mais garder à vie
- vs android qui a un code de merde et pleins de if mais qui est backward compatible
- les développeurs s’en vont quand la compatibilité casse
- [emmanuel] mais des projets cassent des choses tout le temps sans que les utilisateurs ne soient mécontents - par exemple Spring Boot
- petites dépréciations, tooling, documentation
- pas de big bang qui fracture ta plateforme et les utilisateurs ne migrent qu’au dernier moment
- exacerbé dans le monde des services
Principes pour un meilleur design
- Améliorations incrémentales : peut pas faire parfait directement
- Réutiliser l’existant : il y a des raisons aux solutions existantes ? Vous atteignez la limite du design précédent ?
- Les cinq pourquoi pour trouver la cause et possiblement trouver une autre solution meilleure (et peut être plus simple)
- KISS : la perfection est quand il n’y a plus rien à enlever, pas rajouter (Antoine de Saint-Exupéry)
- Parfait est l’ennemie du bon
- (e.g principe du 80 % 20 % - en temps)
- Reculer le moment de la complexité
- pas un article révolutionnaire mais un bon rappel. Prenez un café et lisez-le doucement et réfléchissez à chaque section
- On n’écrit pas du code illisible par pur plaisir, en général le code / les pratiques / le métier / l’équipe a beaucoup évolué dans le temps
- Le code lisible c’est subjectif, et il ne sert à rien de blamer les précédents auteurs
- Donc plutôt que de se plaindre -> apprendre à lire du code
Scaler l’équipe d’engineering avec la propriété distribuée
- équipe fonctionne quand elle a une mission comprise et auquel elle croit, quand elle gagne (alignée avec les besoins de l’entreprise, mesure le succès, reconnu pour ce succès), quand les individus progressent
- entre 5 et 10 est la limite a la quelle une équipe part en chaos sans organisation
- centralisation: problème planning, stand up etc
- decentralisation sans plan : conflits, ralenti, désaligne => chaos
- embaucher les type A (NDLR risque mono culture) ; embauche que si surchargé et montre résultats tops (donc une équipe qui montre qu’elle fonctionne deja). sinon risque équipe dysfonctionnelle qui grossi (modifié)
- La delegation vient avec la gouvernance pour appliquer les règles globales de l’équipe (code qualité, dette technique etc)
- il encourage d’investir dans la core ip de l’appli vs rajouter des fonctionnalités. Toujours sur quelle est la valeur
- The person doing the work owns the execution, even though they may not own the direction. Rather than top down execution driven by meetings, we rely on bottom up execution based on top down direction and review.
- Engineering Manager vs TEch Lead - As the team scales through, it’s important that someone is responsible for organizing the team, process, and ensuring people are happy, productive, and growing, and someone else is responsible for the technical direction and systems of responsibility like code reviews, deploys, and so on.
- Scrum, agile poker etc est trop centralisé dans une approche avec un ratio senior / junior cohérent what I consider to be a more modern and decentralized approach, Engineering Managers work with engineers, who take ownership of chunks of work, decompose them into tasks, estimate, and get the team and manager to review async or in a planning meeting. Everything is tied to the team KPIs, which are tied to the company KPIs, but we don’t need any fancy formats like user stories, etc. Engineers are even more empowered to think about customers, product, and business value in this model — they are looking at how they can impact team KPIs, and empowered to push managers for the work they think is most impactful on the KPIs. The tech lead owns the technical queue — tech debt, testing issues, infrastructure, etc.
- The Approval Matrix with Round Robin Pattern - utile sur les choses trop concentrées ou sur les sujets que personne ne veut training process pour onboarder
- round robin pour forcer le changement et éviter les code review overloards et autres bug fixers
- Pour taches de plus de 1 semaine, design document d’une page revue (sign off component lead) sanity checking, important issues and standards. Not micro management
Sécurité
Docker desktop ajoute la commande scan analyser les problèmes de secu via Snyk
- scan des images locales
- en CLI
- s’appuie sur Snyk avec une partie gratuite via compte docker , sinon prix
- snyk continuously find and fix vulnerabilities in open source libraries and containers
- marche pas pour les images alpine
- Déjà présente dans SonarCloud 2
- Sera inclue dans SonarQube 8.5
- Sonar rachète de RIPS en mai 2020
GitHub qui se lance dans le code scan
- GitHub, all your base are belong to us
- Oui d’où mon tweet sur le SPOF. Sachant que plus ils en font, moins c’est stable.
- ils mettent les true positive “sûr” dans l’analyse de la PR
Loi, société et organisation
Apple également dans le viseur de Facebook pour sa taxe de 30%
- l’app store ne permet pas de dire que les prix incluent la marge d’apple de 30 %
- débat sur des cas spécifiques : genre argent pour des gens qui organisent des évènements (ou pire une charité)
- mais c’est l’argument “penser aux petits enfants”. Facebook, j’imagine, a des plans de se faire de l’argent sur certaines de ces ventes.
La CNIL publie son livre blanc sur les assistants vocaux
- 84 pages, articles, interviews.
- Super pour aider “les personnes en situation de dépendance, qu’elles soient âgées ou handicapées”
- Mais pose des questions “du point de vue de la protection des données”
- “fortement ancrée dans notre intimité” “de nombreuses informations sur l’émetteur d’un message oral. Âge, genre, condition physique, accent, origine géographique et socio-culturelle, éducation, état de santé
- ou émotionnel, mais également identité”
- “captent nos habitudes de vie pour enrichir un profil”
- “Ce livre blanc propose quelques pistes de réflexion sur l’usage des données par les assistants vocaux”
- Quels usages: DEMANDE DE LA MÉTÉO / RECHERCHER UNE INFORMATION / ÉCOUTER DE LA MUSIQUE
- Mythes et réalités des assistants vocaux (vrai/faux) : écoutent en permanence / utilisent nos données pour mieux nous profiler / interface très prisée des enfants
- L’affaire Snowden a déjà 7 ans
- La cour de justice américaine déclare illégale les écoutes effectuées par la NSA
- La collecte de millions de coups de fil “may have been unconstitutional”
- Tweet de Snowden I never imagined that I would live to see our courts condemn the NSA’s activities
Outils de l’épisode
Roulettes sous ma chaise
Conférences
Codeurs En Seine 2020 - Edition en ligne - CFP jusqu’au 15 septembre
- En novembre, les mardis à 19h et les jeudis à 21h
- 45 minutes de conférences + environ 15 minutes de questions
- En ligne sur Twitch + rediffusion Youtube
La prochaine édition du Fosdem se fera en ligne
- 6 e 7 février 2021
- CFP bientôt annoncé
- Reporté au jeudi 14 et vendredi 15 octobre 2021
- 14 et 15 septembre 2020
- Physiquement Porte de Versailles à Paris
- Ou depuis votre ordinateur ou smartphone
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/
LCC 237 - Tu as fais ta demande de hissage ?
Posté le 14/08/2020Arnaud et Emmanuel vous commentent l’actualité au cœur de l’été. Do Go, du sans-serveur, du arm, de la feuille de route, beaucoup de GitHub et bien sûr sans oublier notre rubrique impact du code sur la société.
Enregistré le 14 août 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-237.mp3
News
Langages
Tip pour récupérer facilement le nom de fichier à partir d’un chemin en Java11
- Meilleure allocation des petits objets en cas de grands nombre de cœurs.
- macOS < 1.12 et app 32 bits dépréciées.
- Derniers tours de roue pour ton pentium 4
- Amélioration du linker en mémoire et cpu sur certaines archis (modifié)
- Possibilité d.embarquer la time zone db. (Quid des évolutions, à recompiler)
- C’est marrant la dépréciation « aggressive » de certaines architectures
Golang, un draft pour gérer nativement le packaging de resources statiques
Redmonk sort son nouveau classement, Java #3, Kotlin #19 (une des plus grosses croissances en 5 ans)
Librairies
C’est la fin de Thorntail, né Wildfly Swarm
- WildFly ajoute le support de MicroProfile
- support uberjar dans WildFly arrive
- Quarkus s’est appuyé sur les expériences et les développeurs de Thorntail
Comparatif Spring et Micronaut - update
ServerLess - Créer une recherche pour son blog (sur GitHub avec Hugo) avec Quarkus, GraalVM et AWS Lambda
- search pour un site statique
- crée l’index à la compilation
- reveille la lambda quand le champ de recherche est sélectionné
- GraalVM
- retour sur mettre en place une lambda en évitant de se faire déplumer
- mettre les bons privileges dans AWS lambda est compliqué
- plus de CPU si plus de RAM
Infrastructure
Arm à vendre, Apple pas intéressé mais NVidia peut-être
Cloud
- 6 mois de limite de rétention pour le plan gratuit
- si pas de push ni de pull dans cette période
Patreon
Aider les cast codeurs sur Patreon
Web
Vue 3 arrive en release candidate
- plus performant, complètement réécrit
- tres similaire en terme d’APIs de surface
- doc revisitée
- Composition API (a la react hooks)
- 50 % de l’engineering sur la back log. Et ensuite 20 %. Vous faites plus ou moins en général sur vos projets OSS ?
Data
rocksdb le moteur LSM de persistence de MySQL. Pourquoi et quand et quand l’utiliser…
- Usage » ram, write mostly, space concern
- Log-structured Merge-tree
Outillage
Git 2.28
Jenkins Controller/Agent pour remplacer Master/Slave
Github stocke une archive de votre code Open Source dans une ancienne mine, dans le cercle arctique, au Svalbard
- 21TB sur 186 films numériques photosensibles
- 8.8 millions de pixels par frame
- 1000 ans
- dans le permafrost d’une ancienne mine
Créer sa page profile dans GitHub (voir aussi ce lien )
Github publie une description au format OpenAPI 3 de son API developer
Une roadmap publique pour GitHub
VSCode est-il réellement open-source?
- télémétrie
- extensions come liveshare et remote ne sont pas ouvertes
- marketplace proprio aussi
Sécurité
Témoignage - J’ai testé pour vous : se faire usurper son identité
- demande de créance
- demander le contrat signé pour porter plainte
- aller a la Banque De France pour voir si vous êtes fichés et faire les démarches d’usurpation d’identité
- acheter un broyeur a papier
Loi, société et organisation
Frances Allen, pionnière de l’informatique, est morte
- Première femme fellow IBM
- Optimisation compilation
- Parallel computing du project blue gene (95)
- Turing award
- https://en.wikipedia.org/wiki/Frances_Allen
Mozilla licencie 1/4 de son personnel (250 collaborateurs)
- Pas bien compris leur nouveau focus.
- Certains disent que les Dev tools vont être réduits.
- le message privé
- Firefox on users. Focus on new products and time to market.
- Ça sent que Mozilla était sclérosée et qu’il fallait un changement. Vu par le gars qui fait la reorg.
La COO de Pinterest licenciée car elle parlait de la discrimination rampante.
- Décisions par un sous-groupe (conversation isolées). Refusant les contre points. Et donc avec infos parcellaires.
- “the only way we get things done here is hiding things.”
- Tout était secret et donc manque de transparence e
- Découvre que sa compensation d’exécutif était différente des autres - on lui avait dit que tous étaient au même modèle
- Elle le fait corriger et se fait exclude des board meetings
- Découvres des problèmes sur le produit et les reporte : et devient l.ennemie du head of product et CEO
- Exclue des meetings de décisions
- so much for blameless retrospective
- Bro culture et même bubble
- But too few leaders ask themselves how they can proactively design their organizations to be truly equitable and make a practice of confronting bias, prejudice, and bullying. They do not put checks and balances in place, so discrimination and harassment are hard to recognize or report. Instead, they seek control. They make decisions behind closed doors, consciously and unconsciously excluding those who do not look, sound, or behave like them.
- Discuss the steps to improve in the end
La CNIL tape publiquement sur les doigts de StopCovid.
- 3 contrôles organisés en juin
- initialement remontait tous les contacts d’un utilisateur et pas seulement ceux susceptibles d’avoir été exposé
- respect de l’essentiel de la RGPD
- quelques trucs qui restent comme usage de Google re-captcha, anti DDOS etc
Les GAFA auditionnés par le congrès américain
Apple et Epic Games - Le bras de fer de retour Nineteen Eighty-Fortnite
Trump veut bannir TikTok des états-unis - et plus si possible - sauf …
Outils de l’épisode
Rubrique débutant
Bitoduc.fr : termes informatiques en français
Conférences
JUG Summer Camp le 11 septembre 2020
Volcamp.io les 15 et 16 octobre 2020
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/
LCC 236 - Azimov et le cycle fondation
Posté le 17/07/2020Dans cet épisode, Vincent, Antonio et Guillaume discutent du décès de l’architecte de Java EE, d’AdoptOpenJDK, de Micronaut, de Istio qui bougent dans des fondations, du papa de Micronaut qui va chez Oracle et bien d’autres sujets encore.
Enregistré le 10 juillet 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-236.mp3
News
Bill Shannon l’architecte de Java EE est mort. Il a été le gardien de Java EE aussi longtemps que j’ai connu l’api. Tu aimes ou pas mais tous les backends Java utilisent une ou plusieurs APIs de Java EE et la compatibilité et cohérence de la plateforme lui doit beaucoup. Triste.
Langages
- Les classes sealed arrivent dans Java 15 en septembre, ce sont des classes ou interfaces qui restreignent qui peut les étendre ou implémenter.
- Un peu comme les enum les classes sealed représentent un nombre limité de valeurs possibles, ce qui permet de coder en terme d’exhaustivité (si c’est pas A ou B, alors c’est C, parce qu’il n’y a pas d’autres alternatives).
- Avec ça, on peut faire des types sommes et produits, des structures de données algébriques, comme dans les langages fonctionnels.
- Le développeur qui les utilise est donc en contrôle de la hiérarchie de ces interfaces, et contrôler les implémentations autorisées.
- Les classes sealed fonctionnent avec les records et le pattern matching.
AdoptOpenJDK rejoint la fondation Eclipse
- Avec son adoption massive depuis 2017, le projet devient trop gros pour rester sous la gouvernance du LJC
- La migration sous la fondation eclipse permets de conserver la position de neutralité
- Le projet est renommé Eclipse Adoptium
- La structure de gouvernance est séparée en 2 : le Project Management Committee pour les décisions techniques et le Working Group pour les questions financières, légales, marketing etc…
- Les opérateurs que Groovy a amené aux languages modernes This includes Groovy’s dangling closure,Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. For most languages, we don’t know to what extent Groovy played a part in their choices
- Les choix fort dynamiques
- Le passage par la JSR
Mandrel GraalVM: une nouvelle distribution OpenJDK de RedHat spécifique pour GraalVM, ce qui montre l’implication de RedHat sur GraalVM et l’ouverture d’Oracle sur des collaborations sur ce projet.
On entend parler souvent du livre Clean Code de Uncle Bob Martin, c’est souvent une référence dans les livres d’informatique à lire. Cet article critique ce livre, pour son inconsistance, ses conseils que l’auteur n’applique même pas dans ses propres exemples de code.
Il parait que les tests unitaires c’est surfait.
Runtime
- Micronaut Launch : permet de générer des apps Micronaut en configurant modules optionnels, langage, outil de build
- JDK 14 et Groovy 3 supportés
- Améliorations de performance de 20 %
- Support des plateformes serverless : Google Cloud Functions, Microsoft Azure Functions, Amazon Lambda
- Nouveau plugin Maven
- Possibilité de faire tourner ses applis Micronaut dans un conteneur de Servlet
- Meilleur support de GraalVM, avec automatisation de la configuration de ressources statiques, de la configuration de drivers JDBC, d’Hibernate, de Flyway
- Utilisation de Gradle 6.5 qui permet de faire de la compilation incrémentale, même avec les annotation processors
- Support HTTP/2
Object Computing (OCI) crée une fondation pour héberger Micronaut. La société garde une place majoritaire mais inclue des technical advisory boards dont des membres de ThoughtWorks, mais aussi… notre Guillaume Laforge.
- Support des archives AppCDS pour améliorer le démarrage en mode JVM
- Support de Google Cloud Functions (en plus deLambda Azure)
- Client IBM DB2 réactif
- Client Apache Cassandra
- Support de WebJars Locator
- Support de l’annotation Spring @Scheduled
- Amélioration d’outils pour le débuggage des applications
- Upgrade à GraalVM 20.1.0
CrowdCast fast Jar Quarkus par Emmanuel
Cloud
AWS going after nexus/artifactory. Nouveau concurrent / nouvel entrant
Nouvelle entité open source annoncée par Google : Open Usage Commons, pour gérer les marques et logos open source
Open Usage Commons qui accueille les marques de Angular, Gerrit et Istio
Mais IBM qui avait travaillé avec Google au lancement d’Istio et contribué depuis n’est pas très content. IBM aurait préféré une gouvernance encore plus ouverte que cela
Web
- Bootstrap no longer depends on jQuery
- Dropped support for Internet Explorer
- CSS custom properties
- Alpha: breaking changes will continue to occur until our first beta
- Better documentation
Data
Oracle annonce une version Community Edition de Coherence (in-memory data grid) open source, sous licence Universal Permissive License (supporté par l’OSI). Une version Enterprise continuera d’être proposée également.
Outillage
- Support de AsciidoctorJ 2.x
- Alignement avec le plugin Gradle plugin et Antora
- Première version introduisant des changements cassants (arrêt du support de Java 7, et le nouveau backend par défaut est HTML 5 au lieu de DocBook)
Une proposition de spécification du langage AsciiDoc a été soumise par l’équipe AsciiDoctor à la fondation Eclipse
Conférences
JNation virtual conf pour 2020
JNation est une conférence communautaire qui a lieu annuellement au Portugal. Suite au Covid ils ont décidé de ne pas annuler… mais de faire du remote (virtual conf). Ils viennent de mettre en ligne les 45 vidéos.
BDX.io annulée
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/
LCC 235 - Interview Micro Services avec @ygrenzinger et @khaledsouf
Posté le 08/07/2020Dans cet épisode, Audrey et Antonio ont invité Yannick Grenzinger et Kahled Souf pour parler microservices : pour quelle équipe, quel projet, avec quels outils … ? Nos invités vous partagent leurs retours d’expérience et leurs conseils.
Enregistré le 3 juillet 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-235.mp3
Interview
Ta vie, ton oeuvre
Yannick Grenzinger: Jardinier logiciel depuis plus de 15 ans. Actuellement coach tech et flow, je suis passionné par l’artisanat logiciel, les langages, l’architecture de systèmes complexes et la livraison de valeur métier en continu. Je suis aussi co-organisateur de la conférence FlowCon et du meetup Paris Continuous Delivery, mais c’est plus dur avec des triplés :D
Khaled Souf est un Globe-trotter et développeur passionné. Il a vécu à Paris où il a travaillé pour des sociétés de conseil telles que Zenika et Arolla. il a participé à la communauté des software crafters à Paris et en Europe.Il a participe à des événements locaux, tels que les meetups Software Crafters Paris, Craft your skills, Coding Dojo. Il vit actuellement à Montréal au Canada et co-organise le Meetup Software Crafters Montréal et la conférence de SOCRATES Canada. Il aime parler de Domain Driven Design, d’architecture, d’artisanat du code, de Clean Code, des pratiques eXtreme Programming et DevOps. ksouf.com
Les microservices qu’est-ce que c’est ?
En théorie
Monolithe / Macroservices / Microservices / Fonction ? Microservices vs SOA ?
Microservices, dans quel cas ? Monolithe à découper ou nouvelle app from scratch ? Patterns de migration ?
Comment on découpe ses services ? Est-ce qu’il y a des méthodos qui aident ? (nombre de lignes de code, nombre de pizzas par équipe, DDD)
Une base de données unique pour tous les services ? Une par service ? Consistance des données ? Synchronisation des données entre bases ?
Pour quelles équipes ? (DevOps, DevSecOps …)
En pratique
C’est quoi les recos techniques ? (frameworks Java ou autres, plateformes de déploiement, …)
Et dans le monde Java ? Qu’en est-il de la suite Netflix OSS (Eureka, Hystrix, Zuul, Ribbon) ?
Comment on déploie / scale / fait communiquer entre eux (bloquant, non bloquant, HTTP, broker, message) ?
On-premise, Cloud privé/public/hybride ?
Si tu ne fais pas du k8s tu as loupé ta vie ? Et si tu ne fais pas du Kafka tu as aussi loupé ta vie ?
Comment monitorer ?
Et côté front ?
Micro frontend : comment et pourquoi ?
Le mot de la fin
Phénomène de mode ou les MS sont-ils là pour rester ? Quelles sont les évolutions possibles des archis MS (vers les fonctions) ?
Les resources utiles
Les livres de Sam Newman, surtout Building Microservices et ses talks
Le livre Microservices Patterns de Chris Richardson
Pour mieux appréhender la complexité de l’aventure et ses prérequis :
- La rubrique microservices du site de Martin Fowler
- 11 raisons pour lesquelles vous allez échouer avec les microservices
https://www.martinfowler.com/bliki/MicroservicePrerequisites.html - Recommandations sur les microservices
- Pourquoi les micro services devraient vous faire plus peur
- Vous devez être aussi grand que ça pour passer d’un monolithe à un micro services et la conf associée
Pour les meilleures pratiques :
DDD et microservices :
- DDD and Microservices: At Last, Some Boundaries! (vidéo)
- Strategic Microservice Patterns - Nick Tune (vidéo)
- Astuces pour faciliter le design de micro services avec l’event storming
Orchestration, chorégraphie et saga :
- Orchestration vs chorégraphie
- Le pattern Saga pour implémenter les transactions business en microservices
- Using sagas to maintain data consistency in a microservice architecture - Chris Richardson(vidéo)
Tests : 12 techniques pour tester les micro services
Microfrontend :
L’article de Martin Fowler
6 patterns pour les micro frontend
Monitoring :
- Le pourquoi et le comment monitorer des micro services
- Les challenges du monitoring de microservices dans les applications cloud native
Les outils :
- Spring qui réutilise les outils de Netflix puis Netflix qui utilise Spring
- Circuit breaker : Resilience4j remplace Hystrix (abandonné)
- Tracing :
- Spring Cloud
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/
LCC 234 - EmmanuelBernard-As-A-Service, bientôt chez vous !
Posté le 18/06/2020L’épisode news du mois de juin avec Arnaud, Guillaume et Audrey derrière le micro pour fêter les 25 ans de Java, parler de son futur, mais aussi de son écosystème avec Quarkus et GraalVM entre autre. Et avec bien sûr, une rubrique loi société et organisation toujours aussi dense !
Enregistré le 12 juin 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-234.mp3
News
Langages
Le JDK 15 en early access
Mise à jour de la roadmap Java Client
State of Loom
Pourquoi utiliser Java Streams à la place des boucles ?
JEP 386 - Java sur Alpine
Librairies
JHipster release v6.9.0
Elastic 7.7.0
Wasmer JNI : une librairie java pour Web Assembly
Infrastructure
les 10 erreurs les plus fréquentes avec Kubernetes
Comprendre Kubernetes de manière visuelle
Cloud
Java 11 arrive dans Google Cloud Functions
Web
Snowpack 2.0
Comment CommonJS rends vos bundles plus gros
Deviens un ninja avec Vue.js
Outillage
Méthodologies
Dette technique, complexité & entropie du logiciel, série d’articles par Arnaud Lemaire
Sécurité
Zoom fait l’acquisition de Keybase et annonce son intention de développer la solution de chiffrement d’entreprise la plus utilisée au monde
Un malware infecte les projets Netbeans
Loi, société et organisation
La Fondation Eclipse s’installe en Europe
Donald Trump rentre en guerre contre les réseaux sociaux
- Le décret de Trump contre Twitter est attaqué en justice, au nom de la liberté d’expression
- Snapchat interdit à Donald Trump de promouvoir ses vidéos incitant à la violence
Réseaux sociaux, plateformes ou médias ?
- Twitter a-t-il eu tort de fact-checker un seul mensonge de Donald Trump ?
- Des employés de Facebook jugent Mark Zuckerberg trop clément avec Donald Trump - /!\ article payant
Loi Avia (cf ép. 214 et 225)
- « C’est pas la loi Avia qui me rendra moins pédé » : des militants LGBT dénoncent la censure en ligne
- Loi Avia, nos observations devant le Conseil constitutionnel
Hadopi, une victoire de façade ?
(cf ép. 223)
Stop-Covid
- Le gouvernement approuve l’application stop COVID et maintenant ?
- StopCovid : la CNIL valide l’application même si son efficacité sanitaire reste incertaine
- Pourquoi Stop COVID est un échec en terme de design respectueux de la vie privée
Polémique sur l’hébergement des données de santé des Français chez Microsoft
- Le gouvernement contraint les hôpitaux à abandonner vos données chez Microsoft
- « Nous ne sommes pas pieds et poings liés à Microsoft »
Conférences
Devoxx Belgique annulé
Hack Commit Push (virtuel) le 27 juin 2020 - crowdcast
AlpesCraft reportée à l’automne
Jug Summercamp le 11 septembre 2020 - Le CfP est ouvert jusqu’au 3 juillet
DevOps D-Day le 9 octobre 2020 - Le CfP est ouvert jusqu’au 15 juin
FrontSide le 15 octobre 2020
DevFest Nantes les 15 et 16 octobre 2020
Volcamp.io les 15 et 16 octobre 2020 - Le CfP est ouvert jusqu’au 21 juin
DevFest Toulouse les 5 et 6 novembre 2020
FlowCon les 9 et 10 novembre 2020
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/
LCC 233 - Interview sur l'Event Storming avec Thomas Pierrain et Bruno Boucard
Posté le 05/06/2020Dans cet épisode, Audrey et Emmanuel interviewent Thomas Pierrain et Bruno Boucard pour nous parler d’Event Storming.
Enregistré le 30 avril 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-233.mp3
Interview
Ta vie, ton œuvre
Thomas Pierrain Organisateur du meetup #DDDFR, co-fondateur de 42skillz, Thomas est un eXtreme Programmer & architecte technique obsédé par les usages (vs. l’approche orienté solution).
Bruno Boucard possède une expérience de plus de 30 ans allant de la programmation kernel à la gestion de projets en mode eXtreme Programming. Actuellement, il est coach technique, mais aussi speaker international. Il est co-fondateur de la société 42skillz et l’organisateur du meetup BDD Paris.
Event storming en 2 mins
C’est quoi en deux minutes
Ça sert à quoi
Qui l’utilise ? (communautés, boites etc)
L’event storming en pratique
Comment ça se déroule ?
Qui vient a ce workshop ?
Combien de temps ?
L’utilité et le Retour d’expérience
Retour dans des boîtes classiques
Les points intéressants que cela peut soulever
Autour de l’event storming
Comment on code ensuite ?
Event storming en continu ? ou c’est un évènement unique ?
Son lien avec DDD, event sourcing ?
Lien avec les Microservices ?
Resources pour aller plus loin
Le livre d’Alberto Brandolini
Article de blog de Thomas Pierrain
L’après midi du DDD épisode 2
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/
LCC 232 - Versions version Sloubi
Posté le 18/05/2020Dans cet épisode, Audrey et Emmanuel se retrouvent en tête à tête pour discuter du nouveau drama à venir dans l’écosystème Java (Leyden), de l’actualité des librairies, des annonces de GitHub, de bonnes pratiques en matière d’outils et d’architecture et bien évidemment de la prochaine appli tendance : Stop Covid.
Enregistré le 7 mai 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-232.mp3
News
Langages
Projet Leyden: images statiques pour Java mais pas GraalVM native image
Améliorer les performance de G1 “out of the box”
Librairies
Comment utiliser Mockito avec Quarkus
Micrometer sort la 1.5 une LTS
Spring rattrape son retard sur OpenJDK dans le schéma de version
Infrastructure
Les bonnes pratiques pour écrire un fichier Dockerfile pour les développeurs
ICANN rejette la vente de .org a une boite privée
Cloud
Les release notes de Google Cloud sur une seule page
Web
Cloudflare implement le draft d’HTTP/3 et compare
Data
Les choses que j’aurai aimé que plus de développeurs connaissent sur les bases de données
Outillage
GitHub est gratuit pour les équipes
- si on downgrade sur le gratuit, on perd quoi https://help.github.com/en/github/getting-started-with-github/faq-about-changes-to-githubs-plans#if-i-downgrade-from-github-team-or-a-legacy-plan-to-github-free-what-features-will-i-lose
Récap des annonces GitHub Satellite 2020
Contrôler Kubernetes de Google Spreadsheet
Architecture
Les microservices, trop fort pour toi - opinion
Méthodologies
Sécurité
Loi, société et organisation
Apple et Google offrent un framework de notification d’exposition (au COVID-19)
Stop-Covid
- La France se met dans une impasse face à Apple avec StopCovid
- StopCovid ou encore ?
- StopCovid : anonymat et autorités
Conférences
Devoxx UK du 24 au 26 Août 2020
AlpesCraft reportée à l’automne
DevOps D-Day le 9 octobre 2020 - Le CfP est ouvert jusqu’au 15 juin
DevFest Nantes les 15 et 16 octobre 2020 - Le CfP est ouvert jusqu’au 31 mai
FrontSide le 15 octobre 2020
Volcamp.io les 15 et 16 octobre 2020
DevFest Toulouse les 5 et 6 novembre 2020
FlowCon les 9 et 10 novembre 2020
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/
LCC 231 - Interview sur Vim avec Romain Lafourcade
Posté le 04/05/2020Romain Lafourcade échange avec Guillaume et Emmanuel sur Vim : comment il y est venu, ce qu’il a d’unique, comment l’appréhender, et bien d’autres choses encore.
Enregistré le 16 avril 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-231.mp3
Interview
Ta vie, ton œuvre
GitHub de Romain
Je m’appelle Romain Lafourcade. Je suis Graphiste de formation et j’ai chopé le virus du développement en montant mon premier site en 1999. Je suis Développeur pour de vrai depuis 2007. J’ai beaucoup fait de JS, bien sûr, ainsi que du Flash et du Silverlight. Ça fait quelques années que je me concentre sur React et Vue.js.
Aujourd’hui je suis chez Publicis Sapient France, une “agence digitale” de premier plan où je m’amusais déjà très bien jusqu’à l’arrivée des ex-Xebians. Et maintenant c’est encore mieux. Je participe actuellement à la préparation d’une conférence “front” pointue pour la fin de l’année : FrontSide.
Mes intérêts personnels gravitent autour de la programmation fonctionnelle : Haskell, Elixir.
Et Vim, bien sûr.
Vim intro
Qu’est-ce que Vim en 2 phrases ?
Vim est un éditeur de texte orienté programmation, puissant et non-conformiste.
Que peut-on dire de la différence entre un IDE et un éditeur ?
Dans son expression la plus simple, un éditeur de texte est un outil permettant l’édition de fichiers de texte brut. Certains sont “standalone”, comme Vim, Nano ou Gedit, se concentrant pour la majeure partie sur des questions liées à l’édition de texte et déléguant les autres tâches liée au développement logiciel à d’autres outils “standalone”. C’est la vision UNIX traditionnelle :
“Écrivez des programmes qui effectuent une seule chose et qui le font bien.”
D’autres sont “intégrés” avec d’autres outils pour offrir une expérience plus “clé en main”, les IDEs.
L’histoire de Vim
Vim est né au début des années 90 sur Amiga, pour la même raison que tous les autres clones de vi : l’impossibilité légale d’utiliser vi sur tel ou tel système. De tous les clones, c’est celui qui s’est le plus démarqué de l’original et c’est le seul qui est encore développé activement en 2020.
Les archéologues en herbe trouveront quelques liens sur le sujet en bas de page.
Disponibilité de Vim sur les distros de base
Un des arguments les plus souvent mis en avant pour convaincre les mécréants de l’utilité d’apprendre Vim est “Vim est partout”.
Mais l’ubiquité légendaire de Vim est un mythe. Ce qui est disponible dans tous les dérivés d’UNIX, c’est la commande vi
. Le programme qui assure le boulot peut être Vim comme il peut être Elvis, Nvi, Busybox vi ou même le vi original. Et même quand c’est Vim, c’est souvent un build limité. Du coup, connaître Vim n’est peut-être pas aussi utile que connaître vi.
Et c’est sans compter sur le fait que le système d’exploitation le plus largement utilisé, n’a pas de commande vi
ou vim
du tout.
Vim vs emacs: la guerre ancestrale
et aussi débile que toutes les guerres ancestrales.
Les variantes de Vim
Neovim est un fork récent promettant une modernisation des processus de développement et du code.
Vim au quotidien
Pas de curseur ?????
On a bien un curseur, mais les dispositifs de pointage sont rarement activés par défaut. Même si c’est tout à fait possible d’utiliser la souris ou le trackpad (:help 'mouse'
), on est clairement dans un monde centré autour du clavier.
Les modes (normal, insert, visual, etc.)
L’édition modale, un concept initié par vi, ne fait pas l’unanimité. L’idée, c’est qu’on est toujours dans un mode réservé à une certaine catégorie d’activités. Un des effets positifs, et aussi un des repoussoirs de ce mécanisme est que ça permet d’avoir un vocabulaire plus varié et expressif que dans un éditeur classique. Le déplacement du curseur, par exemple, se fait traditionnellement avec une combinaison de 4 touches de directions et 1 modificateurs, donc 8 déplacements possibles : 1 caractère vers la droite ou la gauche, 1 mot vers la droite ou la gauche, 1 ligne vers le haut ou le bas, 1 paragraphe vers le haut ou le bas. C’est très pauvre, même en ajoutant Home, End, Page Up et Page Down. Dans vim, on a tout ça, bien sûr, plus “début du mot”, “fin du mot”, “prochaine/précédente occurrence de
Les modes les plus couramment utilisés sont :
- le mode normal, le mode par défaut quand on fait
$ vim foo.txt
, qui est utilisé pour naviguer, chercher, copier, coller, etc. - le mode d’insertion, qui permet… d’insérer du texte dans le document,
- les modes visuels, qui permettent de sélectionner une portion de texte,
- le mode ligne de commande, qui permet d’utiliser les commandes héritées d’Ex :
:write
,:s
,:g
, etc.
Le concept de verbe / opérateur + movement + destination
C’est pour moi LA killer feature de Vim, surtout visible dans les modes normal et visuels. En gros, le modèle d’interaction est basé sur la notion de langage. Il y a :
- des “opérateurs”, des verbes conjugués à l’impératif comme “efface”, “copie”, “remplace”,
- des compléments d’objet directs comme “la ligne 78”, “ce texte entre parenthèses”, “d’ici à la fin du paragraphe”,
- des compléments d’objet indirects comme “en dessous de la ligne 27” ou “au début du buffer”,
- et des compléments circonstanciels comme “10 fois”.
Avec tout ça, on donne des commandes à la machine selon une syntaxe proche de celle d’un langage parlé et elle obéit : “colle le texte contenu dans le presse-papier 50 fois”, “copie (d’ici) jusqu’à la prochaine parenthèse ouvrante”, etc. Dans un éditeur de texte classique, la première se dit “ctrl+v ctrl+v … ctrl+v”, ce qui n’a presque rien à voir avec la tâche telle qu’imaginée : “colle truc 50 fois” est devenu “colle colle … colle”, ce qui est très peu expressif. Notre pensée abstraite de haut niveau doit être transformée en une série d’actions concrètes de bas niveau qui n’ont que très peu de sens et souvent rien à voir avec la pensée haut niveau. Dans Vim, la première commande se dit “50p”, ce qui est très proche de la tâche telle qu’imaginée.
La syntaxe est peut-être un peu sèche et les éléments sont peut-être ordonnés différemment qu’en français, mais ça reste tout à fait abordable et très proche de ce qu’on a dans la tête. L’étape suivante est exactement la même que lorsqu’on apprend une langue étrangère : penser dans la langue.
Apprendre Vim, c’est apprendre une grammaire simple et un vocabulaire expressif qui s’enrichit au fur et à mesure où on avance.
La notion de range
Vim hérite plein de trucs de vi, qui hérite lui-même plein de trucs de ex. Dans vim, toutes les commandes qui commencent par un “deux points” sont des “commandes Ex”, qui agissent sur des lignes car ex était un éditeur de ligne. Comme dans ex, ces commandes prennent des adresses (une seule ligne) et des ranges (de telle ligne à telle autre). Une ligne peut être indiquée par son numéro, par un offset, par une recherche, par un marqueur, etc. C’est un outil extrêmement puissant.
Par exemple, la commande suivante copie les lignes 10 à 24 en fin de document :
:10,24t$
Celle-ci rassemble toutes les lignes contenant const
dans la fonction courante vers le haut du corps de la fonction :
:?func?,/^}/g/const/m?func?
C’est d’une élégance insoutenable.
D’autres concepts de base (window, tab, buffer, split, etc.)
On a toujours au moins un “buffer”, une “fenêtre” et une “tab page”. Un buffer peut être affiché dans une ou plusieurs “fenêtres”, une “tab page” est un rassemblement de “fenêtres”. Contrairement à la plupart des éditeurs de texte il ne peut pas y avoir de relation 1-à-1 entre un buffer et une fenêtre ou entre un buffer et une tab page. C’est un piège dans lequel tous les nouveaux tombent.
Tu l’utilises pour quels genres d’édition
J’utilise Vim de deux façons différentes : de longues sessions de programmation et des éditions rapides (config, git commit, etc.), pratiquement tout le temps dans un terminal.
Les colorschemes
La dernière fois que j’ai checké il y en avait littéralement des milliers, du simple qui marche partout, utilisé par quelques barbus ronchons, à l’usine à gaz buggée à mort, utilisée par la dernière génération de boutonneux. J’en ai réalisé quelques-uns, même, comme Apprentice, ainsi qu’un modèle simple à utiliser. Maintenant qu’on peut utiliser toutes les valeurs hexadécimales, même dans le terminal, c’est la fête.
Pour trouver des colorschemes, je recommande VimColors.
Les binding Vim dans les IDEs
Peut-être utile pour accompagner l’apprentissage de Vim mais passé un certain niveau c’est l’uncanny valley. C’est un des problèmes causés par des années de Vim, d’ailleurs : ça rend exigeant.
Le terminal
Le nerf de la guerre d’un Vim qui fonctionne tmux?
Vim écosystème
La gestion des plugins
Si on a beaucoup de plugins ça peut devenir compliqué sans plugin manager. Le plus populaire est vim-plug.
Les plugins les plus utilisés
- fugitive, un client Git bien intégré à Vim
- surround, permet de jouer avec les paires de caractères : (), {}, etc. Souvent considéré comme un indispensable.
- ALE, beaucoup plus qu’un linter,
- YouCompleteMe, beaucoup plus que de l’autocompletion.
Vim et les plugins VSCode (via LSP)
Les spécifications de pas mal de fonctionnalités de Visual Studio Code sont actuellement publiées, ce qui permet à d’autres outils de développement de bénéficier de l’étendue de son écosystème. Il y a LSP, par exemple, qui permet d’implémenter des serveurs pour n’importe quel langage et des clients pour n’importe quel éditeur. Les clients à suivre pour Vim son lsc et CoC. Peut-être aurons-nous une intégration native un jour ? Il y a aussi DAP qui est utilisé par Vimspector pour fournir une interface de débogage avancée.
La navigation entre fichiers
Un faux problème, souvent résolu en mode “brute force” par manque de volonté d’apprendre à se servir des fonctionnalités de base. Du coup on a des dizaines de plugins fantaisistes et des générations de vimmers superficiels. C’est triste. En vrai, :edit
, :find
et :buffer
sont rapides et versatiles. Il suffit de prendre le temps d’apprendre à s’en servir.
Il existe un nombre hallucinant de plugins pour naviguer les fichiers alors que c’est si simple et rapide avec les outils natifs.
La vérification orthographique
La fonctionnalité est incluse de base. Il faut néanmoins l’activer avec :help ’spell’
et, si on veut de l’aide pour autre chose que de l’anglais, installer des dictionnaires. Ça sonne plus compliqué que ça ne l’est vraiment.
Des tips
Indentation
- Tout savoir sur l’indentation dans Vim
gg=G
pour réparer l’indentation d’un buffer en entier:help ’equalprg’
pour indiquer à Vim quel programme externe utiliser
Paramètres custom par fichier via modeline
Voir :help modeline
pour des exemples. Je ne suis pas hyper fan en général que je trouve ça un peu sale de mélanger data et metadata mais ça peut être bien en bas d’un fichier Markdown dont on sait qu’il va être édité dans Vim :
[//]: # ( Vim: set spell spelllang=en: )
En pratique, je suggère plutôt editorconfig pour les réglages d’indentation et compagnie.
Vim et git
Fugitive, mentionné plus haut, est très populaire. Pour ma part, je préfère garder mon éditeur de texte pour éditer du texte et utiliser d’autres outils spécialisés pour d’autres tâches spécialisées. J’aime beaucoup tig, que j’utilise au jour le jour depuis des années, et j’ai découvert git-jump récemment, qui a fait une entrée fracassante dans mon workflow.
Sinon, pour les commandes basiques, un simple :!git <subcommand>
fait largement le taf.
Les macros
Une macro est une séquence de commande. On peut enregistrer une macro dans le registre q
:
qq
02wciwfoo<Esc>
q
et la rejouer sur plusieurs lignes, par exemple :
:23,45normal! @q
Mais avec un peu de pratique on peut complètement zapper la phase « enregistrement » :
:23,45normal! 02wciwfoo
Les macros sont un outil d’automatisation extraordinaire qui épate facilement le spectateur. Voir :help complex-repeat
.
Copier dans le buffer de l’OS (ctrl+c ctrl+v)
Pour ça, l’idéal est d’avoir un Vim compilé avec la fonctionnalité “clipboard”. Si c’est pas possible on peut bricoler des trucs avec xclip
/pbcopy
/etc. ou utiliser les fonctionnalités de copier/coller du terminal.
Le clipboard système est représenté par le registre +
dans vim. Donc copier dans le clipboard : "+y
, et ensuite coller, "+p
. Note que "
est la sélection de registre.
Remplacer via des expressions régulières
La substitution, basée sur les expressions régulières ou pas, est une pratique courante dans Vim. Par exemple, pour remplacer toutes les occurrences de java
par kotlin
dans le buffer courant :
:%s/java/kotlin/g
Voir :help :s
et le site Vim Regular Expressions 101 car Vim utilise un dialecte spécial.
Mode vi dans le shell
Readline, la bibliothèque utilisée par bash pour gérer l’invite de commande, utilise des raccourcis inspirés par Emacs par défaut. On peut changer ça en ajoutant la ligne suivante dans ~/.inputrc
:
set editing-mode vi
Personnellement, je préfère garder les raccourcis par défaut et éditer mes commandes directement dans Vim, avec Ctrl-x Ctrl-e
.
Si vous ave mis le mode vi, alors pour éditer la commande dans vim, tapez ESC
v
.
Vimdiff
On peut utiliser Vim pour afficher des diffs côte à côte et même pour gérer les merge conflicts dans Git.
Voir :help diff
pour les détails sanglants.
Aller plus loin
Livres
Histoire de vim
- The History Of Vim
- Where Vim Came From
- Bram Moolenaar Discusses Developing the Popular Text Editor, How He Uses It, and Version 8
- 10 Questions with Vim’s creator, Bram Moolenaar
Ressources
- Vim Galore
- Idiomatic Vimrc
- Seven habits of effective text editing
:help user-manual
- Vimways
Meetups
Communauté
- #vim sur Freenode
- #vim-fr sur freenode
- r/vim sur reddit
- le tag Vim sur Stack Overflow
- le site Stack Exchange dédié à Vim
En vrac
- Vim 9 ?
- Comment quitter Vim de manière… créative
- Vim cheatsheet
- Bonne explication d’un beau vimrc en détails
- Tmux et Vim ensemble avec les bons plugins
- Been using Vim for two years because I didn’t figure how to quit it!
- Vim primer and tutorial
- Resources Vim
- Des stickers pour clavier Mac pour se rappeler des raccourcis
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/