Le podcast Java en Français

Les Cast Codeurs est un podcast en français de, par et pour les développeurs.

Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview.

Supportez les radotages de vos hôtes : Emmanuel Bernard (JBoss, Hibernate), Arnaud Héritier (CloudBees, Jenkins), Guillaume Laforge (Google, Groovy), Antonio Goncalves (freelance, auteur), Vincent Massol (XWiki, Maven), Audrey Neveu (Saagie, Devoxx4Kids).

LCC 236 - Azimov et le cycle fondation

Dans 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

Classes Sealed

  • 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 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éveloppeurs 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…

Histoire du langage Groovy

  • Les opérateurs que Groovy a amené aux langagues modernes This includes Groovy’s dangling closure,Groovy builders, null-safe navigation, the Elvis operator, ranges, the spaceship operator, and flow typing. Formost 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 entends 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 inconsistence, 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 2.0 est sorti

  • 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.

Graeme rocher rejoins Oracle

Quarkus 1.6

  • 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

Le projet Istio annonce que les trademarks du projet sont transférées dans l’organisation Open Usage Commons

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 5 Alpha

  • 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 Enteprise continuera d’être proposée également.

Outillage

Plugin Maven Asciidoc 2.0

  • 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 virtal 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

Dans cet épisode, Audrey et Antonio ont invité Yannick Grenzinger et Kahled Souf pour parler micro services : 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 continue. 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 micro services 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 reco techniques ? (frameworks Java ou autres, plateformes de déploiement, etc... )

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ée/public/hybride ?

Si tu fais pas du k8s tu as loupé ta vie ? Et si tu 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 évolution possibles des archi 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:

Pour les meilleures pratiques :

DDD et microservices:

Orchestration, chorégraphie et saga :

Tests : 12 techniques pour tester les micro services

Microfrontend : L'article de Martin Fowler
6 patterns pour les micro frontend

Monitoring :

Les outils :

Nous contacter

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/
Flattr-ez nous (dons) sur https://lescastcodeurs.com/
En savoir plus sur le sponsoring? sponsors@lescastcodeurs.com


LCC 234 - EmmanuelBernard-As-A-Service, bientôt chez vous !

L'é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

Happy birthday Java!

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

Quarkus 1.5

GraalVM 20.1

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

GitHub CLI 0.8

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

Réseaux sociaux, plateformes ou médias ?

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

Polémique sur l'hébergement des données de santé des Français chez 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

Dans 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

Dans 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

Lucene a 20 ans

Quarkus 1.4 est sorti

Comment utiliser Mockito avec Quarkus

Micrometer sort la 1.5 une LTS

Spring rattrape son retard sur OpenJDK dans le schéma de version

Micronaut 2.0 M3

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

Node.js v14

Data

Les choses que j'aurai aimé que plus de développeurs connaissent sur les bases de données

Redis 6 est sorti

Outillage

Test Containers 1.14

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

Spock 2.0 vs JUnit 5.0

Controler Kubernetes de Google Spreadsheet

Gradle 6.4

Architecture

Les microservices, trop fort pour toi - opinion

Méthodologies

COVID vs l'open space

Sécurité

Loi, société et organisation

Apple et Google offrent un framework de notification d'exposition (au COVID-19)

Stop-Covid

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

Romain 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

Page wikipedia de Vim

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 <caractère imprimable>", "prochaine/précédente occurrence de ", "ligne numéro X", "n lignes vers le haut ou le bas", "haut/bas/milieu de la fenêtre", "marqueur X", etc. Rien jjque ça c’est dingue. Et comme on est dans un éditeur modal, tous ces mouvement peuvent être utilisés avec des opérateurs et là c’est la folie.

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’action 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 genre 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 ecosystè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

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 metada 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

Ressources

Meetups

Communauté

En vrac

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 230 - Du confinement à la déconfiture

Encore un épisode très long, mais cette fois il a une bonne excuse : on a censuré aucune blague ! Cet épisode nous a fait beaucoup de bien à enregistrer c'est pourquoi nous avons tout gardé, même ce qui serait normalement passé en off, en espérant qu'il vous fera autant de bien à l'écouter ! Et ce n'est pas pour autant qu'Audrey, Emmanuel et Guillaume ne disent que des bêtises : on parle bien évidemment de tout ce qui fait l'actu tech (Java, Kotlin, Micronaut, Quarkus, Vert.x, Docker et autres) mais aussi de surveillance en cette période très particulière.

Enregistré le 10 avril 2020

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

News

Je m'appelle Audrey et je travaille pour... Rest In Peace Carl Quinn

Langages

Le JDK 14 en GA
Un état de l'art de Java, tendances et données
D'ici 6 mois, Eclipse nécessitera le JDK 11 pour s'exécuter
José Paumard publie 50h de cours sur Youtube
JEP proposées pour le JDK 15 :

Kotlin 1.4 M1

Librairies

Spring Framework 5.2.5
Spring Boot 2.3.0.M4

Support du liveness et Readiness Probes de Kubernetes dans Spring Boot

Eclipse Vert.x 3.9.0

Micronaut 2.0 M1
Un benchmark de Micronaut comparant SpringBoot et Quarkus - mais un peu controversé

Quarkus 1.3 est sorti

Quarkus 1.3 et Eclipse MicroProfile 3.3

Infrastructure

DockerAwesome Compose
Docker GitHub Action
Docker annonce la Compose Specification

Kubernetes 1.18
Fleet: un outil de management de cluster Kubernetes
Kit de survie Kubernetes pour les développeurs [avec K3S]

Cloud

Tutoriel Spring Boot : Création De Microservices Déployés Sur Google Cloud

Web

NPM racheté par GitHub

Deno 1.0

Angular 9.1
Angular CLI 9.1

Les développeurs de Wikipédia choisissent Vue, plutôt que React

Outillage

GitHub mobile
On peut maintener repasser une PR ouverte en Draft sur GitHub

GitLab 12.8

  • (18 fonctionnalités GitLab passent open source)[https://about.gitlab.com/blog/2020/03/30/new-features-to-core/]

Zoom annonce un gel des fonctionnalités pendant 90 jours pour résoudre les problèmes de confidentialité et de sécurité

Nouvelle UX pour Slack

Méthodologies

Building Secure and Reliable Systems - Le SRE pour les nuls

Loi, société et organisation

Bill Gates quitte le conseil d’administration de Microsoft
Contre la censure en ligne, RSF bâtit une immense « Bibliothèque libre » dans « Minecraft »
Première victoire en justice contre la reconnaissance faciale !
Surveillance publicitaire : la CNIL se défile de nouveau sur le consentement aux cookies

Pandémie et surveillance :

Outils de l'épisode

DevHints.io
Screen.io
Krisp.ai

Rubrique débutant

Processing de texte dans le shell

Conférences

GitHub Satellite en virtuel les 6 et 7 mai
DevFest Lille le 12 juin 2020 - Le CfP est ouvert jusqu'au 15 avril
Voxxed Days Luxembourg du 17 au 19 juin 2020
Devoxx France du 1 au 3 juillet 2020
Sunny Tech les 2 et 3 juillet 2020
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
Volcamp.io les 15 et 16 octobre 2020
DevFest Toulouse les 5 et 6 novembre 2020
FlowCon les 9 et 10 novembre 2020

Et encore plus sur Developers Conferences Agenda/List.

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 229 - Interview sur la sobriété numérique avec Richard Hanna

Dans cet épisode Arnaud et Audrey interviewent Richard, contributeur du Shift Project, un think thank qui œuvre en faveur d'une économie libérée de la contrainte carbone et qui a publié plusieurs rapports en faveur d’une sobriété numérique.

Enregistré le 25 février 2020

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

Interview

Ta vie, ton oeuvre

Richard Hanna, développeur et coopérateur Fairness et co-animateur du podcast Techologie.

Le Shift Project

Numerique & Transition

Les publications numérique et transition

Lean ICT

Lean ICT : Pour une sobriété numérique

Climat : l’insoutenable usage de la vidéo en ligne

Climat : l’insoutenable usage de la vidéo en ligne

Les outils

La vidéo pédagogique

« Cette vidéo réchauffe le climat :merci de la regarder »

Le guide

Le guide pour réduire le poids des vidéos en 5 minutes

Carbonalyser

Carbonalyser : l’extension de navigateur qui rend visible l’invisible impact environnemental du net

Déployer la sobriété numérique

Déployer la sobriété numérique

Conclusion

Contribuer au Shift Project

« Reset, quel numérique voulons-nous ? »

Nicolas Meilhan: “Devenons les champions du monde de la voiture à 500 kg”, l'article de Damien Detcherry pour Atterrissage

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 228 - Conseils sur le télétravail

En cette période de confinement et de Coronavirus, les cast codeurs partagent et échangent leurs points de vue et conseil pour faire du télétravail. En espérant que cela vous aide un petit peu.

Enregistré le 20 mars 2020

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

Interview

L'environnement de travail

L'organisation
La pièce
Le matériel
Le bureau assis debout (version électrique Ikea et version manivelle)
Les enfants et le conjoint
...

Le travail en équipe à distance

La communication
Le flicage
La disponibilité instantanée L'écrit, la messagerie instantanée et l'oral
...

La gestion du temps / journées

Le sur ou sous travail
Le burn out (épisode des cast codeurs dédié)
Les pauses
Les horaires
Interview sur la productivité personnelle

Le lien social

Comment compenser la réduction d'interaction sociale
...

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 227 - Télétravailler une corona dans une main et un gamin dans l'autre

Cet épisode parle du coronavirus, des conférences annulées, de la popularité des langages, de GraphQL, de Ghostcat et pleins d'autres choses encore. L'intro date un peu: les infos sur le coronavirus étant encore plus fréquentes que les nouveaux framework JavaScript.

Enregistré le 13 mars 2020

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

News

Corona virus

Les actions des grosses boites

  • pas de meeting
  • conf annulées
  • limite du travail au bureau

Langages

RedMonk ranking - Le langage au top est...

  • JavaScript Python Java
  • Typescript dans le top 10
  • R monte
  • Rust stable comme Go (+1)
  • Kotlin 19, Scala 13

InfoQ meta sondage

  • Java 8 le plus déployé en prod, 25% Java 11 et non LTS derrière
  • Spring 60-80%
  • IntelliJ 60-80%, Eclipse 20-25%
  • mavenjvs Gradle 66-33 ou 50-50

Sondage sur Scala

Scala.js 1.0.0

  • 7 ans de dev
  • not binary compatible with 0.6 nor 1.0RCx
  • Ecrire en scala des applications front
  • interop avec les libraries JavaScript

GraalVM se dote d'un advisory board

  • Gluon, Red Hat, Amazon, Microdoc, Shopify, Twitter, OCI, Neo4J, Pivotal, ARM et Oracle bien sûr

Gros round d'investissement dans Azul

  • investissement / achat: 340 M$

Librairies

Eclipse MicroProfile GraphQL 1.0

  • GraphQL: spec pour generaliser les endpoints en leur donnat lflexibilite en terme de requetage et graph retourné
  • make GraphSQL schema available
  • execute GraphQL requests
  • code first approach

Apache Camel 3.1 et 3.0 déprécié
Le guide de migration de Camel

  • amélioration de mémoire

Lightbend recoit 25M d'investissement

  • de Dell capital
  • pour la partie reactive
  • spécifiquement pour le "serverless"
  • pas de mention de Scala

OPTIONNEL LightBend - Article sur pourquoi une architecture reactive est importante pour le cloud native

  • bonne piqure de rappel
  • data localisée par microservice
  • les avantages des systèmes event based

Middleware

ElasticSearch en prod, les choses a savoir

Infrastructure

La M&A de have i been p0wned: l'histoire de l'abandon

  • societe KPMG
  • due diligence
  • des milliards de questions
  • les doutes
  • exclusivité
  • le risque du changement de stratégie

Cloud

Les gens ralent car les clusters GKE vont avoir un cout de management de 10c/heure, ce qui change la relation du cluster au développeur (nombre de clusters en parallèle)
Une comparaison des prix des clusters en fonction de leur taille et de leur host provider

Amazon annonce Bottlerocket

  • Mise a jour par image recrée plutôt que par package mis a jour
  • plus immuable et donc facile en rollback
  • par contre chaque host goes down et up
  • si orchestrateur c'est ok

Outillage

IntelliJ Big Data Tools

  • un IDE pour le big data!
  • deja integration avec Zeppelin S3
  • nouveau Spark, HDFS, Paquet

Architecture

Les systèmes simples ont moins de downtime

  • facile à comprendre, facile à corriger
  • plus rapide de monter en competence
  • trouver la cause est plus rapide
  • solutions simples, plus d'alternatives disponibles
  • regles: les fonctionalités de justifient pas la complexité, les idées complexes amènent des implémentations complexes, modifier avant d'ajouter
  • challenge de l'automation pour faire avec moins de gens?

OPTIONNEL 11 raisons pour lesquelles vous allez rater vos microservices

  • voir les titres de section

OPTIONNEL Retour d'experience sur l'usage incorrect d'un outil bloom filters

  • probleme idéal pour bloom filters
  • mais suspicieusement plus long que prévu
  • profilers
  • random access memory >> sequential reading (trop grand pour L3)
  • alternative plus simple qui reduit le nombre le chargement memoire, pas la conso memoire

Méthodologies

Les trains de merge

  • rebasing, la course au collègue
  • garder master green pour la CD
  • impossible de faire trops de merge en parallele ou doit faire pleins de rebase
  • merge train sequentialise et batch les merges

Retour sur le modèle GitFlow

  • pas intuitif (merge bidirectionels dans le temps entre develop, feature branch, release branch, hotfix et master) et cout cognitif haut
  • risque grandi de merge conflit
  • peut pas rebaser
  • continuous delivery != trop de barrières
  • en cas de repos multiples ou mono repos, impossible a gérer (microservices)
  • ok pour des cycles de release par trimestre avec des equipes sur des releases en parallele

Mesure de la complexité de code: une meilleure mesure

  • cyclomatic complexité est un mauvais oracle de la complexité de code
  • les logiques conditionnelles emboîtées utilisent notre mémoire de travail (~indentation)
  • les fonctions avec des dos d'anes d'indentation multiples sont les pires
  • refactorer pour externaliser chaque

Dans Sonarqube cela s'appelle Cognitive Complexity. Voici un exemple sur du code XWiki ou l'on voit très bien visuelement ce que cela veut dire: https://sonarcloud.io/project/issues?id=org.xwiki.commons%3Axwiki-commons&issues=AWzY6RXo8pMOHxUYvkyE&open=AWzY6RXo8pMOHxUYvkyE

Sécurité

Ghostcat: la faille dans Tomcat de 6 à 9

  • dans le protocole Apache JServ (implicitement trusté par Tomcat (cs une requête)
  • peut lire le contenu des web apps
  • si la webapp peut uploader => activer un remote execution
  • upgrader Tomcat 7, 8, 9, si 6, vous êtes dans la merde
  • attention Tomcat est embarqué dans pleins d'outils comme Wildfly, Spring Boot etc

Letencrypt révoque 3 millions de certs a multiples domaines

Loi, société et organisation

Amicus brief sur le copyright d'API par IBM et Red Hat

  • computer interfaces ne sont pas copyrightable
  • moteur de l'economie du logiciel
  • va etre entendu au printemps

Amicus brief de chercheurs attaqué par Oracle

  • payés par Google

OPTIONNEL Les hackers de Equifax contamnés pour crime

  • DOJ charcge 4 militaires Chinois
  • Struts CVE

Rubrique débutant

La tonte de Yak appliquée à Donarld Knuth

  • écrire un livre
  • écrire un programme pour ecrire un livre
  • invente un langage de programmation pour écrire le programme
  • invente un mode de pagination
  • design une police de caractère
  • écrit un outil pour construire les polices de caractère
  • invente un système de version pour son programme
  • implémente un langage d'abstraction maison pour les documents imprimés

Conférences

ANNULÉ - Breizhcamp du 25 au 27 mars 2020
ANNULÉ - MiXiT du 29 au 30 avril 2020
VIRTUEL - GitHub Satellite les 6 et 7 mai
ANNULÉ - RivieraDev du 13 au 15 mai 2020
Devoxx UK du 13 au 15 mai 2020
NewCrafts les 28 et 29 mai 2020
AlpesCraft les 4 et 5 juin 2020
ANNULÉ - Best of Web les 4 et 5 juin 2020
DevFest Lille le 12 juin 2020 - (Le CFP est ouvert)
Voxxed Days Luxembourg du 17 au 19 juin 2020
ANNULÉ - Serverless Days Paris le 1 juillet 2020
NOUVELLE DATE - Devoxx France du 1 au 3 juillet 2020
Sunny Tech les 2 et 3 juillet 2020

Et encore plus sur Developers Conferences Agenda/List ....
Liste d'Aurélie

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/