Skip to main content

How to create minimal music with code in any programming language

How to create minimal music with code in any programming language

Link

The Grand Unified Theory of Software Architecture

The Grand Unified Theory of Software Architecture

Link

How and why to sign your Git commits

How and why to sign your Git commits

Link

Replied to a post on :

Au bout de deux semaines de confinement, j'avais des collègues qui se plaignaient de ne plus avoir de contacts "physiques". Ils ont vite oublié les embouteillages et les distractions incessantes des gens qui ont besoin de t'interrompre constamment.Tracasse, ça leur reviendra très vite dès le deuxième jour après le retour au bureauCe qui m'a manqué une ou deux fois c'est de pouvoir me poser à côté d'un collègue pendant une heure pour réfléchir à un problème, les 4 yeux sur le même écran. Ca n'est pas quelque chose de faisable à distance. Le problème a fini par être résolu, mais ça a pris plus longtemps.En visio ça n'a pas aidé? J'imagine que tu es dans l'IT (comme la moitié des gens sur ce sub), dans ma boîte on a fait des visio avec partage d'écran et ça a pas trop mal fonctionné. On a même tenté un plugin VSCode de pair-programming mais j'aime pas ça (je parle de VSCode)

Langserver.org

1 min read

" The Language Server protocol is used between a tool (the client) and a language smartness provider (the server) to integrate features like auto complete, go to definition, find all references and alike into the tool "

Identifier une régression grâce à git-bisect

3 min read

Enfer et damnation, vous venez de constater un bug dans votre code. Évidemment, il est difficile de savoir à quel moment cette régression est apparue et en trouver l'origine pourrait nous permettre de comprendre et donc de résoudre le bug.

Heureusement, git-bisect vient à votre secours, pour peu de savoir l'utiliser.

On commence donc par signifier à git que nous sommes dans un état "mauvais" du code :

git bisect bad

Vous devez démarrer avec "git bisect start"
Souhaitez-vous que je le fasse pour vous [Y/n] ? y

Il faut maintenant remonter suffisamment longtemps dans l'historique dans l'objectif de trouver l'état du code ou la régression constatée n'existait pas. Un petit git log devrait suffire à identifier le commit-id correspondant.

git checkout <commit-id>

Après avoir vérifié que la régression n'existait pas dans cet état du code, on signifie à git-bisect qu'on a une sous la main une version du code correcte.

git bisect good
Bissection : 132 révisions à tester après cette (à peu près 7 étapes)
[<commit-id>] <commit-message>

En retour, git-bisect nous donne le nombre de révisions à tester (ici : 132), et le nombre d'étapes estimées avant d'obtenir le nom du coupable (ici : 7). Enfin, git-bisect à effectué un checkout automatique sur un autre <commit-id> et attend vos instructions.

Il ne reste qu'a tester le code et à donner comme instruction soit un git bisect good, soit un git bisect bad en fonction du résultat observé. L'opération sera plus ou moins longue en fonction du nombre de commits à tester.

➜  webapp git:(6ae90d246) git bisect good
Bissection : 132 révisions à tester après cette (à peu près 7 étapes)
[49cbe40d5cb63b9f2a036560190983b2848d6df0] Merge branch 'master' into deploy/staging
➜  webapp git:(49cbe40d5) ✗ git bisect good
Bissection : 66 révisions à tester après cette (à peu près 6 étapes)
[dc9c093633ca9af720ae560b01ff455d4bd4fb51] <commit-message>
➜  webapp git:(dc9c09363) ✗ git bisect good
Bissection : 33 révisions à tester après cette (à peu près 5 étapes)
[4f8b4fd5f7ecb71141510823e89f3d941f6d892b] <commit-message>
➜  webapp git:(4f8b4fd5f) git bisect bad
Bissection : 16 révisions à tester après cette (à peu près 4 étapes)
[0e5acfb262de5f692f8383cd51fe5c4bed729b92] <commit-message>
➜  webapp git:(0e5acfb26) git bisect good
Bissection : 7 révisions à tester après cette (à peu près 3 étapes)
[7623848ffee8d72429623e3b5fb8fb1a8040aeed] <commit-message>
➜  webapp git:(7623848ff) ✗ git bisect good
Bissection : 4 révisions à tester après cette (à peu près 2 étapes)
[50f6b9ebf42ff5cda83d33d4489e944829f87c56] <commit-message>
➜  webapp git:(50f6b9ebf) ✗ git bisect good
Bissection : 2 révisions à tester après cette (à peu près 1 étape)
[d763c0336e13cbc91befbe853194dd077775e6cd] <commit-message>
➜  webapp git:(d763c0336) git bisect good
Bissection : 0 révision à tester après cette (à peu près 1 étape)
[c1af98fc24e031d0d87a567caa7615c0c2c3d66c] <commit-message>
➜  webapp git:(c1af98fc2) git bisect bad
Bissection : 0 révision à tester après cette (à peu près 0 étape)
[026f9bf37555815c0efc9dfb16e90473faacf48f] <commit-message>

Une fois la dernière étape passé, git-bisect vous donne l'identité du coupable :

git bisect bad
026f9bf37555815c0efc9dfb16e90473faacf48f is the first bad commit

Pour terminer, nous pouvons revenir à l'état initial du code (HEAD)

git bisect reset