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/
LCC 230 - Du confinement à la déconfiture
Posté le 16/04/2020Encore 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 :
Librairies
Spring Framework 5.2.5
Spring Boot 2.3.0.M4
Support du liveness et Readiness Probes de Kubernetes dans Spring Boot
Micronaut 2.0 M1
Un benchmark de Micronaut comparant SpringBoot et Quarkus - mais un peu controversé
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
Les développeurs de Wikipédia choisissent Vue, plutôt que React
Outillage
GitHub mobile
On peut maintenant repasser une PR ouverte en Draft sur GitHub
- (18 fonctionnalités GitLab passent open source)[https://about.gitlab.com/blog/2020/03/30/new-features-to-core/]
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 :
- La crise sanitaire ne justifie pas d’imposer les technologies de surveillance
- Coronavirus : le risque est d’entrer dans « une nouvelle ère de surveillance numérique invasive »
- Covid-19 et la 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
Posté le 01/04/2020Dans 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 Technologie.
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
« Reset, quel numérique voulons-nous ? »
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
Posté le 20/03/2020En 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
Posté le 17/03/2020Cet é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 frameworks 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
- 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 %
- maven vs Gradle 66-33 ou 50-50
- 7 ans de dev
- not binary compatible with 0.6 nor 1.0RCx
- Écrire 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 généraliser les endpoints en leur donnant de la flexibilité en termes de requêtage 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 reçoit 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
- les concepts de base (Clusters, Nodes, Indices and Shards)
- Quorum
- comment des noeuds rejoignent le cluster
- segments et le merge
- gestion de la memoire (compressed pointers /!\ inversé, 30GB, 2x memoire sur la machine par rapport au heap) voir https://stackoverflow.com/questions/25120546/trick-behind-jvms-compressed-oops#25120926
- options par workload (write heavy vs read heavy
- topology
- monitoring
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 râlent 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
- 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
- règles : les fonctionnalités ne 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’expérience sur l’usage incorrect d’un outil bloom filters
- problème 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 réduit le nombre le chargement memoire, pas la conso memoire
Méthodologies
- rebasing, la course au collègue
- garder master green pour la CD
- impossible de faire trop de merge en parallèle ou doit faire pleins de rebase
- merge train séquentialise et batch les merges
- pas intuitif (merge bidirectionnels 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 équipes sur des releases en parallèle
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’ânes 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 visuellement 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’économie du logiciel
- va être entendu au printemps
Amicus brief de chercheurs attaqué par Oracle
- payés par Google
OPTIONNEL Les hackers de Equifax condamnés pour crime
- DOJ charge 4 militaires Chinois
- Struts CVE
Rubrique débutant
La tonte de Yak appliquée à Donald Knuth
- écrire un livre
- écrire un programme pour écrire 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/
LCC 226 - Interview sur l'Open Source à la MAIF avec Mathieu Ancelin et François Desmier
Posté le 09/03/2020Dans cet épisode, Mathieu Ancelin et François Desmier sont venus nous parler des produits open source de la MAIF. On parle management d’API, reverse proxy, A/B Testing, feature flipping mais aussi plus généralement de comment on passe d’assureur à éditeur de produits open source.
Enregistré le 13 février 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-226.mp3
Interview
Ta vie, ton oeuvre
François Desmier Cyber-guru, crypto-saïyan, team ambiancer 2.4 alpha, bytes master et surtout architecte solution à la MAIF, engagé sur #OSSbyMAIF
Mathieu Ancelin Développeur fullstack chez SERLI, je fais du web, des streams, de la data, du cloud majoritairement sur la JVM et j’ai un petit faible pour Scala et la programmation fonctionnelle. Je suis également lead développeur de quelques projets open-source comme Otoroshi, Daikoku, etc. et l’un des organisateurs des Human Talks Poitiers.
D’assureur à éditeur open source
Le jeu de carte
Sous le capot
Otoroshi
Daikoku
Izanami
Niõ
Melusine
Le futur
Conclusion
Des talks pour aller plus loin :
- Simplifiez vous les microservices avec Otoroshi
- Du mutualisme à l’Open Source
- Opun devenir une plateforme de service
- Vos applications sous stéroïdes avec Otoroshi et Izanami
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 225 - L'épisode du futur
Posté le 25/02/2020Dans cet épisode en tête à tête, Emmanuel et Audrey discutent des prévisions pour cette nouvelle année, font la part belle au langage avec l’arrivée du JDK 14 mais parlent aussi middleware, web, outillage, et bien sûr loi, société et organisation.
Enregistré le 19 février 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-225.mp3
News
Les prévisions d’Adam Bien pour 2020
Langages
JDK 14 First Release Candidate
- Présentation des records
- Écrire des Records invariants avec Bean Validation
- Monitoring d’API Rest avec les évènements du JDK Flight Recorder
Est ce que le projet Loom menace les Java Futures ?
Visualisation de la gestion de la mémoire dans la JVM (Java, Kotlin, Scala, Groovy, Clojure)
Une demi heure pour apprendre Rust
Librairies
Jukebox : une lib pour créer des builders pour les records
JUnit 5.6
Middleware
Créer des images Docker avec Spring Boot 2.3.0 M1
Quarkus 1.2.0.Final
Micronaut 1.3 et Micronaut Data 1.0 GA
Infrastructure
Cloud
Formation gratuite Google Cloud en ligne
Elastic Cloud sur Kubernetes (ECK) 1.0 en GA
Web
Angular 9 est maintenant disponible, et le projet Ivy aussi
Introducing Firefox and Edge Support in Cypress 4.0
Le nouveau Microsoft Edge est disponible
Outillage
Maven est de retour, et il est pas content !
- Old GroupIds Alerter : un plugin pour vérifier les couples groupId+artifactId dépréciés
- Provisio : un plugin pour remplacer Maven assembly
- MPV : une fonction BASH pour récupérer la version d’un projet depuis le pom.xml
- Central 501 HTTPS Required
Gradle 6.2
IntelliJ IDEA 2020.1
Loi, société et organisation
L’Union Européenne envisage une interdiction temporaire de la reconnaissance faciale
La CNIL publie ses recommandations très attendues sur le ciblage publicitaire
La conservation généralisée et indifférenciée des métadonnées épinglée à la CJUE, avec nuance
Outils de l’épisode
JQ - un command line processor pour JSON
Comment voir (et supprimer) les données envoyées à Facebook par des sites tiers
Rubrique débutant
Java-guide : un guide pour apprendre le Java moderne
Phishing : comment font les hackers, comment vous protéger
Conférences
DevFest du Bout du Monde le 28 février
Breizhcamp du 25 au 27 mars 2020
Devoxx France du 15 au 17 avril 2020
Serverless Days Paris le 24 avril
MiXiT du 29 au 30 avril 2020
GitHub Satellite les 6 et 7 mai
RivieraDev du 13 au 15 mai 2020
Devoxx UK du 13 au 15 mai 2020
NewCrafts les 28 et 29 mai 2020 - Le CfP est ouvert jusqu’au 1 mars
Best of Web les 4 et 5 juin 2020 - Le CfP est ouvert
DevFest Lille le 12 juin 2020 - Le CfP est ouvert jusqu’au 29 février
Sunny Tech les 2 et 3 juillet 2020 - Le CfP est ouvert jusqu’au 28 février
DevFest Toulouse les 5 et 6 novembre 2020 - Le CfP est ouvert
Et encore plus sur Developers Conferences Agenda/List ….
Unconferences
JChateau du 11 au 15 mars 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 224 - Interview sur le burn out avec Géraldine Karila
Posté le 06/02/2020Une personne sur 5 fera un burn out au travail pendant sa carrière. Géraldine nous raconte son burn out, comment cela s’est passé, son chemin pour s’en sortir et les recherches qu’elle a fait sur le sujet.
Enregistré le 16 décembre 2019
Téléchargement de l’épisode LesCastCodeurs-Episode-224.mp3
Interview
Ta vie, ton oeuvre
Géraldine Karila
Le burn out
Les phases
Comment récupérer
Comment aider une personne en burn out
Liens
Test: avez vous des signes de burn out
Témoignage sur le burn out dans l’IT ops
Gérer le burn out
Géré son équilibre et sa résilience au travail
Le syndrome de l’épuisement au travail (français)
Les causes de burn out
La confiance
Podcasts
Carl Newport sur le burn out dans nos vies numériques
Travail comme identité, burn out comme style de vie
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 223 - On peut anonymiser mille fois une personne mais on ne peut pas anonymiser une fois mille personnes
Posté le 27/01/2020Premier épisode de l’année 2020 pour les cast codeurs avec Guillaume, Arnaud et Audrey autour du micro pour parler du JDK 14 bien sûr mais aussi de Quarkus, de WebAssembly, de Kubernetes mais aussi de l’actualité sociétale liée à la tech.
Enregistré le 13 janvier 2020
Téléchargement de l’épisode LesCastCodeurs-Episode-223.mp3
News
Langages
Kotlin 1.4 et au-delà, lors de la conférence KotlinConf
Librairies
JHipster 6.6.0
R2DBC 0.8.0 en GA
DropWizard 2.0 released
Spock 2.0 milestone 1 sortie o
Middleware
VMware Rachète Pivotal et Carbon Black
Calendrier de l’Avent d’Elastic
Client RUST pour Elastic Search
Apple open source ServiceTalk à base de Netty
GraalWasm — un moteur WebAssembly dans GraalVM
Infrastructure
kubectl tree
Guide visuel de débug des déploiements Kubernetes
Injecter des Secrets Vault dans des Pods Kubernetes via un Sidecar
Hexa, un CLI sous stéroïdes pour les devs Azure
Web
WebAssembly devient une recommandation du W3C
/e/ une alternative à Android qui prend soin de votre vie privée
Bazel 2.0
Outillage
La Maif continue son mouvement OpenSource avec Daikoku
Améliorer les performances de votre CI en optimisant vos builds Maven ou Gradle - Webinar
Gradle capabilities appliqué au conflit de logging
GitLab 12.6 released with Security Scorecard and Release Evidence
Méthodologies
CalVer, le versioning avec des dates
Sécurité
Configurez vos parsers XML en Java pour éviter les XML eXternal Entity (XXE)
Loi, société et organisation
Larry Page and Sergey Brin quittent Google
Plus il y a d’égalité des sexes dans un pays, moins il y a de femmes en STEM
Est ce que le fait qu’Oracle copie l’API S3 d’Amazon était une violation de copyright?
La Russie réussit son test et se coupe de l’Internet mondial avec succès
Spécial France WTF
- La France présente sa loi upload filters mais “oublie” les droits des utilisateurs
- Reconnaissance faciale : le gouvernement souhaite faire une expérimentation dans la vidéosurveillance
- « Ne pas sacrifier nos droits » : l’hostilité à l’égard de la reconnaissance faciale grandit en France
- La Police nationale lorgne sur les « données de réservation » des voyageurs
- Le Conseil constitutionnel autorise le FISC à la surveillance de masse
Les décisions de justice vont enfin être toutes accessibles en ligne gratuitement
Twitter va tester de nouvelles options pour limiter les réponses à un tweet
Outils de l’épisode
Encryptez et envoyez vos fichiers avec https://send.firefox.com/
Rubrique débutant
Comment quitter Vi, version fun
Conférences
Snowcamp du 22 au 25 janvier 2020
Touraine Tech le 31 janvier
FOSDEM les 1 et 2 février
dotSwift le 3 février - Le CfP est ouvert
DevFest Paris le 14 février 2020
DevFest du Bout du Monde le 28 février
dotPy le 2 mars - Le CfP est ouvert
Breizhcamp du 25 au 27 mars 2020 - Le CfP est ouvert
dotGo le 30 mars - Le CfP est ouvert
Devoxx France du 15 au 17 avril 2020
Android Makers Paris les 20 et 21 avril 2020 - Le CfP est ouvert jusqu’au 19 janvier
Serverless Days Paris le 24 avril - Le CfP est ouvert jusqu’au 31 janvier
MiXiT du 29 au 30 avril 2020 - Le CfP est ouvert jusqu’au 15 janvier
GitHub Satellite les 6 et 7 mai - Le CfP est ouvert jusqu’au 14 janvier
RivieraDev du 13 au 15 mai 2020 - Le CfP est ouvert jusqu’au 15 février
NewCrafts les 28 et 29 mai 2020 - Le CfP est ouvert jusqu’au 1 mars
Best of Web les 4 et 5 juin 2020 - Le CfP est ouvertDevFest Lille le 12 juin 2020 - Le CfP est ouvert jusqu’au 29 février
Sunny Tech les 2 et 3 juillet 2020 - Le CfP est ouvert jusqu’au 28 février
Et encore plus sur Developers Conferences Agenda/List ….
Unconferences
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 222 - Interview sur Android avec Pierre-Yves Ricau et Romain Guy - l'intégrale
Posté le 24/12/2019Dans cet épisode, Emmanuel s’assoie autour de la table avec Romain Guy et Pierre-Yves Ricau pour discuter Android. Cela fait longtemps que la partie 1 est sortie. Désolé de ce retard. Du coup cet épisode reprend l’entièreté de l’interview. Pour ceux qui se rappellent bien de la partie 1, vous pouvez sauter à la minute 62 environ.
Enregistré le 18 septembre 2019
Téléchargement de l’épisode LesCastCodeurs-Episode-222.mp3
Interview
Ta vie, ton oeuvre
Romain Guy
Pierre-Yves Ricau
Square
Intro
Android 10
JetPack
JetPack
Supporter des versions différentes d’Android
JetPack Compose
Toolkit UI réactif
Java 8
Compilation et autre JIT
Kotlin
optimisations
Cœurs
Batterie
Dark theme et reduction de consommation de batterie
Injection de dépendance
Fuite Mémoire
Data structure et boxing
Access mémoire, algorithmique et structure de données
Les attaques et les protections
Chiffrage
Isolation
Fuite d’info par effet de bord
Microservices
De l’intérêt pour le mobile ?
Innovation vs standardisation
Monorepo
Gradle
Bazel
Podcast et resources Android
Android Leaks en français
Android Developers Backstage
Android Dialogs
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/