19 mai 2021
sourceUne discussion sacrément intéressante sur les estimations et leurs mauvais côtés
19 mai 2021
sourceUne jolie visualisation des événements DOM. Il manque juste (ou je ne l’ai pas trouvé) un lien avec le code Javascript correspondant.
19 mai 2021
sourceC’est hélas un ensemble d’erreur que je fais bien trop souvent, et je devrais vraiment apprendre à nuancer mes propos. Et j’aimerais bien savoir pourquoi je suis aussi stupidement mauvais.
19 mai 2021
sourceC’est marrant, parce qu’il me semble que Chrome utilise la même architecture de processes depuis bien longtemps, mais pas pour la même raison …
19 mai 2021
source19 mai 2021
sourceLa seule doc sur ce sujet de logs JSON que j’aie vu et qui fonctionne correctement. J’en ai bien chié …
18 mai 2021
sourcePas forcément la meilleure, mais néanmoins une archive correctement navigable de cette excellente liste de discussion
17 mai 2021
sourceUn bon résumé des infos sur les variables d’environnement disponibles dans les Jenkinsfile
17 mai 2021
sourceOh super, youtube-dl ne voit pas toutes les vidéos des channels. Avec ça, je suis bien, tiens …
17 mai 2021
sourceProduire des logs JSON pour les systèmes d’observabilité, c’est cool. Et le faire sans changer sa version de log4j, c’est encore plus cool
17 mai 2021
sourceCette semaine, c'était le challenge Codingame de printemps.
Il s'agissait cette fois-ci de faire pousser des arbres, en évitant de subir l'ombre de l'adversaire. Et du fait du contexte épidémique actuel, je ne pouvais pas participer comme je l'aurai souhaité : j'ai arrêté de coder mercredi soir, et j'ai choisi très volontairement, de coder en Rust, qui n'est pas le langage le plus simple (franchement l'un des plus complexes que je connaisse, en fait).
Et comme un bonheur n'arrive jamais seul, les règles incluaient certains éléments qui ont clairement augmenté la complexité du problème.
Franchement, quand on ajoute tout ça, ça donne un résultat facilement complexe. Et comme je n'avais aucune intuition géniale, j'ai utilisé un modèle de programmation hyper classique (pour moi) :
enum
Rust, un struct
pour chaque arbre, et enfin un modèle représentant le terrain). Petite subtilité : j'avais commencé par représenter le terrain via l'une des structures indiqué dans l'article mentionné plus haut, avant de me rendre compte que le moteur de jeu fournissait la géométrie du terrain au démarrage, du coup, il était bien plus simple de simplement stocker la géométrie dans un Vec
, et le contenu dans un autre Vec
.Avec ça, j'arrive à cette solution qui atteint le niveau argent. Pas trop mal en sachant que j'ai arrêté de coder mercredi ...
Bon, là; je me donne des excuses faciles.
En vérité, je savais dès Lundi, en particulier à la lecture de cet article sur les échecs "A step-by-step guide to building a simple chess AI" que ce que je faisais n'avait pas du tout les moyens d'atteindre le haut niveau. Sauf que j'ai été intellectuellement bloqué par le fait que ce que je voyais comme l'unité de durée du tour (la journée) ne l'était pas. Et je pense sincèrement que c'est un blocage psychologique stupide de ma part. Ca veut dire quelque chose sur moi, et quelque chose de pas très chouette (mais que je sais déjà). J'ai bien l'impression d'être incapable de tenter des solutions authentiquement innovantes (pour moi) quand je suis pris par la pression du temps. Pour le dire autrement, le biais d'ancrage est fort. Suffisamment fort pour que, la prochaine fois que je suis tenté de faire un challenge codingame, je m'oblige à utiliser ces fameuses techniques de Monte-Carlo, de min-max et autres, qui impliqueront des solutions pas forcément répétables, mais ça n'est pas trop grave.
Parce qu'il y a quand même des choses qui ont bien marché !
J'ai enfin réussi à comprendre le sens des lifetimes Rust ! Et ça implique que j'ai réussi à écrire du code avec beaucoup moins de clone(). Et ça implique à son tour que ce code, qui certes ne fait pas grand chose, est beaucoup plus efficace que mes précédentes solutions.
En bonus, mon article précédent expliquant comment démarrer une solution Rust m'a vraiment beaucoup aidé : je n'ai eu aucun mal à produire une solution raisonnablement intéressante.
Bref, j'ai encore appris beaucoup sur moi, et c'est ce que je demande à Codingame !
17 mai 2021
sourceJ’aurais du mal à traduire cette phrase correctement. Mais je la trouve furieusement juste.
17 mai 2021
sourceCa m’a l’air d’un site sacrément intéressant !
17 mai 2021
sourceC’est léger, c’est fin, c’est plaisant
17 mai 2021
sourceUn site marrant qui résoud des labyrinthes … uniquement de façon décorative. C’est amusant.
17 mai 2021
sourcePour être honnête, Rage Against The Machine me fait toujours autant d’effet aujourd’hui.
17 mai 2021
sourceJe pense que vous vous en doutez, je suis d’accord avec ce qu’écrit ce site. Le mail a actuellement deux problèmes : des logiciels à l’ergonomie datée, et un support impossible du chiffrement.
17 mai 2021
sourceEst-ce que ça expliquerait cette différence de sensation entre l’outil avec lequel on fait corps et celui qu’on utilise comme un outil ? Et est-ce que ça expliquerait cette sensation d’enfin comprendre un outil ?
17 mai 2021
sourceJ’ai beau trouver que Doctolib fournit un service très correct pour les rendez-vous, je suis néanmoins d’accord : libéraliser la vaccination en masse est l’application du dogme libéral à un domaine où il ne devrait pas s’appliquer.
17 mai 2021
sourceSapristi ! C’est une sacrément belle attaque du poste de dév ! (en vérité, c’est plus une exploitation du Rust Server Protocol, à mon sens)
17 mai 2021
sourceC’est pas mal cette liste de trucs impossibles en Rust
17 mai 2021
sourceIl semble que ce soit une lecture très intéressante, mais plus proche de l’unsafe book que d’autre chose …
17 mai 2021
sourceUne belle collection d’heuristiques
17 mai 2021
sourceLa magie d’internet se trouve dans ce genre de truc bien planqué : on ne comprend pas pourquoi ces vidéos sont tournées, ni par qui. Et elles ont l’air presque assez fausses. C’est fou.
16 mai 2021
sourceJe crois qu’il va bien falloir que je comprenne comment marche escalidraw, parce que ça m’a l’air riche de possibilité (évidement, il faudrait que j’arrive à le brancher à Structurizr)
16 mai 2021
sourcePour ceux qui ne savent pas de quoi je parle, j'ai un projet de lifestream sur lequel je travaille depuis des années (les archives du tag remontent à 2010 au moins). ce projet a connu plusieurs incarnations. La dernière était un ensemble de plugins maven générant des fichiers Asciidoc que je passais ensuite dans un plugin JBake pour générer un site statique. Sur le papier, l'idée était chouette.
Mais le vrai problème d'un projet de développeur, c'est de le faire survivre à la prod. Mon choix pour la prod était de tout faire tourner sur mon Raspberry, parce qu'il tourne, et que je m'attache de plus en plus à limiter mon empreinte carbone numérique. Sauf que le Raspberry 3 a une mémoire limitée, et que mon lifestream comprend quelques fichiers :
Ca fait un bon paquet, et même en essayant d'optimiser les choses, je n'arrive pas à générer un site viable. Qu'est-ce que je peux faire maintenant ?
Parce que l'un des prérequis de ce lifestream est d'être hébergé dans les pages perso de free.fr. Pourquoi ? Parce que c'est une solution performante :
C:\Users\nicolas-delsaux>hey http://nicolas.delsaux.free.fr/lifestream/
Summary:
Total: 6.2935 secs
Slowest: 4.1379 secs
Fastest: 0.3488 secs
Average: 1.0254 secs
Requests/sec: 31.7790
Total data: 6755645 bytes
Size/request: 33778 bytes
Response time histogram:
0.349 [1] |
0.728 [104] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
1.107 [38] |■■■■■■■■■■■■■■■
1.486 [22] |■■■■■■■■
1.864 [13] |■■■■■
2.243 [6] |■■
2.622 [6] |■■
3.001 [1] |
3.380 [2] |■
3.759 [4] |■■
4.138 [3] |■
Vous pouvez faire le test de chez vous, vous aurez normalement d'assez bonnes performances. Malgré la lenteur des machines de free.fr. Et ça, c'est un des plus importants objectifs de ce projet.
Du coup, je pense que la prochaine étape devrait tout simplement être de déplacer la génération vers mon ordinateur de bureau, avec une quelconque solution de tâche planifiée pour Windows ... Je vais néanmoins ajouter l'écriture des fichiers dans un repository GitHub, pour faciliter la réutilisation, et travailler sur l'écriture dans un outil comme AsciiBlog. Ou alors tenter de générer le site dans GitHub Pages, ce qui pourrait aussi être chouette (même si ma 1/2 heure de génération JBake ne risque pas d'être compatible avec GitHub Actions). Bref, j'ai encore des idées...
16 mai 2021
sourceC’est vrai que ces histoires de tab vs space, franchement, on n’en a strictement rien à foutre : n’importe quel 'éditeur moderne doit être capable de faire la conversion, et les interpréteurs/compilateurs y sont la plupart du temps insensibles.
16 mai 2021
sourceAlors ça, c’est le genre de feature qui fait bien plaisir ! Bravo PlantUML !
16 mai 2021
sourcehttps://twitter.com/Cap_x_Ace/status/1393212997452148739[Cappu qui dort mal sur Twitter : "On va revenir sur l’autre bunker spatial et son énième tweet qui pue la merde parce que ça me concerne personnellement et apparemment on en est à raconter des expériences personnelles, let’s go dans la fosse septique de twitter 👍 https://t.co/OGdBQTqVGu" / Twitter]
En ces fins de quinquennat de la start-up nation, quelques rappels utils
16 mai 2021
sourceUn outil de mapping conceptuel. Ca a l’air intéressant. Mais est-ce plus intéressant que de simplement créer une carte graphviz ? (en tout cas, c’est sans doute plus facile à éditer)
16 mai 2021
sourceA grande échelle, la maintenance des systèmes logiciels hérités coûte *très\* cher.
16 mai 2021
sourceEn tant que vieux développeur front (à l’époque où il n’y avait pas de JS), je trouve ça cool. En tant qu’utilisateur du web, je pense que c’est encore un bon sang d’enfer qui va faire cramer les réseaux.
16 mai 2021
sourceoh oui (ou pas, hein), un préprocesseur CSS en pur typescript.
12 mai 2021
sourceLa migration vers Java 11 fait beaucoup de mal, quand même
12 mai 2021
sourceLes gens qui poussent les militaires à aller contre leur devoir sont assez navrants. Ils manipulent des forces qu’il est dangereux de libérer.
12 mai 2021
sourceMe voilà obligé de créer un fichier .mvn/jvm.config … Tout ça pour compiler du GWT. Ce serait drôle, si ça n’était pas triste!
12 mai 2021
sourceCette histoire des statistiques de contamination en extérieur par le coronavirus est intéressante, et traduit le problème de la traduction, et les défauts de la science sans recul.
12 mai 2021
sourceOnline Blood Bowl League]
Le saviez-vous ? OpenJNLP est encore utilisé pour suivre les matches de BloodBowl en direct. C’est cool !
12 mai 2021
sourceLe système de domination masculine à l’oeuvre … Ca peut paraître anodin, mais c’est franchement typique. Et pour les personnes qui veulent acquérir des compétences, c’est un sacré mur.
12 mai 2021
sourceDeux choses frappantes dans cette analyse de texte formidable. 1. Il est clair que Darmanin applique aux musulmans ce que Napoléon appliquait aux juifs 2. Je découvre que la fondation d’Israël était appuyée par les antisémites
11 mai 2021
sourceC’est marrant cet outil de sélection de police basé sur le "caractère" de la police
11 mai 2021
sourceIl faudra un jour parler des phénomènes de cour dans le monde technologique :l’organisateur de la conférence annule la présentation de cet homme parce que le message concernant Facebook et Google est inconfortable … "sans liberté de critique, il n’est pas d’éloge sincère"
11 mai 2021
sourceAttends, un moteur de blog utilisant Quarkus et Asciidoc ? Ca pourrait complètement changer ma vision de mon lifestream (au sujet duquel un article de blog serait peut-être utile)
11 mai 2021
sourceMais comme c’est vrai !
11 mai 2021
sourceLa différence est subtile, mais sacrément importante.
11 mai 2021
sourceDamned ! C’est ce que je ressens globalement en ce moment
10 mai 2021
sourceC’est vrai si l’entretien se fait avec des questions fermées … Si le recruteur pose des questions ouvertes, il aura plus de chances d’être positivement surpris …
10 mai 2021
sourceLa liste des propriétés fournies par maven dans le build. C’est souvent utile …
10 mai 2021
sourceUne ligne de commande d’accès à pas mal de bases de données relationnelles ou pas. Et même si la ligne de commande, j’aime généralement pas, c’est quand même cool dans un conteneur.
10 mai 2021
sourceJe trouve l’histoire assez terrifiante. Pour ma part, mes sessions de pair ne durent jamais plus de deux heures. Et après, on repart bosser chacun de notre côté …
09 mai 2021
source09 mai 2021
sourceC’est assez loin de ce que je fais habituellement. Mais je comprend le sens de cette idée.
09 mai 2021
sourceVous les hommes, ne faites pas ça. C’est mal. profondément mal.
09 mai 2021
sourceVu la richesse du contest codingame du moment, il semble que s’inspirer des IA d’échecs puisse être une bonne idée
08 mai 2021
sourceJe voudrais juste vous rappeler que les élections sont dans un an … à peu près. D’ici là, essayez de garder la mémoire …
08 mai 2021
sourceJ’aime beaucoup l’abstract qui explique que les décisions algorithmiques doivent pouvoir être justifiables.
08 mai 2021
source07 mai 2021
sourceCe thread qui parle de Goya me touche (parce que j’aime la peinture). Mais ce tweet dit quelque chose d’absolument vrai sur notre XXIème siècle : la discipline est la barbarie ultime.
07 mai 2021
sourceLes bots, cette passion aussi douteuse que fascinante
07 mai 2021
sourceUn moteur de recherche qui essaye de retourner les résultats qui ne sont pas dans Google. C’est cpnceptuellement intéressant.
07 mai 2021
sourceDonc c’est un jeu d’exploration de donjon … Dans un document PDF … Je suis surpris
07 mai 2021
sourceMouaip, les licences logicielles, ça fout un bordel sans nom.
07 mai 2021
sourceC’est quand même fou de se dire que le cerveau humain est littéralement câblé pour ajouter des choses …
06 mai 2021
sourceIl y a des gens qui ont des loisirs … curieux. Cela dit, c’est assez instructif
06 mai 2021
sourceQuand même les murs font plus de sens que la bulle techno-économique
06 mai 2021
sourceEvidement, je vais devoir lire ça … rapidement
06 mai 2021
sourceUne crate de benchmark Rust. C’est très cool pour éviter les régressions de performances
06 mai 2021
sourceIl me semble qu’il serait utile que je comprenne comment ça marche, et si ça peut marcher sous Windows, ce qui n’est parfois pas évident.
05 mai 2021
sourceSi vous utilisez un miroir maven en http, la mise à jour vers maven 3.8.1 va vous faire de la peine. Heureusement, il y a une solution !
05 mai 2021
sourceEvidement, je ne parle pas de jouer moi-même au pacman, mais plutôt de celui auquel il faut jouer dans le spring challenge 2020. Parce que comme j'ai l'intention de concourir dès demain, en essayant autant que possible de faire du Rust, j'ai essayé de me remettre à niveau en reprenant le problème précédent, et en essayant d'améliorer la solution dont je disposais déja. Et, comme vous pouvez le voir dans cette simulation, ça ne marche pas si bien. Avant d'aller plus loin, on va d'abord voir rapidement ce que fait mon robot.
Donc, à chaque tour
Il y a un certain nombre de choses qui ne sont pas implémentées, et c'est normal : je ne gère pas les ennemis, ni les changements de couleur, ni même le boost. Bref, c'est pas le niveau argent ...
Cela dit, mon robot est bien plus mauvais que simplement parce qu'il n'implémente pas ces fonctionnalités. Ce qui le rend vraiment mauvais, c'est qu'il privilégie l'accessoire à l'essentiel. Parce que dans ce jeu, il y a deux choses essentielles :
Et mon code n'essaye de faire aucun des deux ... Bon, c'est con. Et, pire que tout, il n'est même pas performant, sans doute parce que le pavage du plan est assez consommateur en temps. Bref, la prochaine fois que je voudrais m'y mettre, je pense que je suis bon pour ... supprimer tout le code existant et tout refaire, tout simplement. J'ai donc appris un certain nombre de choses. La plus importante étant que faire du code performant en Rust ... c'est pas facile du tout. Lisez donc tranquillement cet article Moves, copies and clones in Rust, et vous comprendrez que l'impact de la sécurité mémoire sur le code écrit est loin d'être négligeable. Et je trouve ce problème assez ... stimulant (même si ça me donne parfois l’impression d'avancer avec un boulet au pied).
04 mai 2021
sourceEt je suis à nouveau content d’avoir interdit le téléphone portable jusqu’au lycée. C’est pas follement mieux, hein, mais quand même, je trouve que c’est un peu mieux. Malheureusement, j’avais oublié l’aspect navrant du cyber-exhibitionisme
04 mai 2021
sourceEst-ce qu’on peut dire que c’est un poil gênant ? (et qu’en plus ça ressemble exactement à du matériel à usage principalement illégal)
04 mai 2021
sourceSans parler de la mini, qui est un curieux rabhillage, regardez par exemple l’évolution de la taille des golf (qui ont l’avantage de n’avoir jamais changé de nom)
04 mai 2021
sourceC’est donc comme ça qu’ils payent les gens chargés de te dire que tes dix minutes de vidéo consomment autant que ton four micro-onde (la comparaison est totalement fausse, mais ça ne dérange personne)
04 mai 2021
sourceSurpris ? Non. Déçu ? Non plus. Ecoeuré ? Même plus. C’est "cynism as usual".
04 mai 2021
sourceBon, je voulais installer vega-cli sous Windows, qui dépend de canvas. Mais là, je vais être brutal, mais allez bien vous faire foutre.
04 mai 2021
sourceOh j’aime beaucoup cette explication de la gestion de mémoire en Rust !
04 mai 2021
sourceSuite à mon précédent article un poil critique sur la revue de code, j'ai eu droit à une question intéressante de la part de mon collègue Douglas
La première chose à noter dans cette question, c'est l'insistance sur le fait que les développeurs ne connaissent pas forcément le produit sur lequel ils travaillent. Et c'est parfaitement vrai.
Donc, ça veut dire quoi "concevoir un développement" ? Il s'agit tout simplement de jouer, pour un développement particulier, le rôle de l'architecte. Et là, je n'aide personne, puisque le rôle de l'architecte est particulièrement flou dans le monde du logiciel. Néanmoins, pour une fois, je pense que la définition de Grady Booch est appropriée :
Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.
Grady Booch - On design (voir aussi Software Architecture and Related Concerns)
Donc, quand on joue le rôle d'architecte pour un développement, c'est-à-dire qu'on le conçoit, on doit se poser les questions concernant les changements significatifs qu'on va apporter au système. Et pour revenir à la question de Douglas, c'est une excellente façon de découvrir le système et de le comprendre. Autrement dit, je propose d’utiliser ces phases de conception pour prendre le temps de découvrir ce qu'on va modifier.
Mais comment rendre cette connaissance partageable ? D'abord, via un support commun. Et si les issues des bugtrackers marchent bien pour discuter de petites modifications, je trouve que, pour les gros développements, il vaut parfois mieux créer un vrai document de conception qu'on mettra avec la documentation d'architecture - dans la section ADR. Sauf que j'aurais tendance à ne pas formaliser mon ADR aussi simplement que ce que proposent les différents modèles. Non, à titre personnel, j'aurais plutôt tendance à présenter le problème, puis la description de la solution en reprenant justement le plan de l'agile architecture documentation. Parce qu'il permet précisément de segmenter le gros problème en ses différentes facettes.
Typiquement, une grosse fonctionnalité, une qui requiert une documentation spécifique, va avoir des impacts sur différents éléments du logiciel : l'architecture, les donnée,s le déploiement. Et ce modèle de document couvre correctement ces différentes questions, comme je l'ai déjà écrit. Qui plus est, il permet facilement l'amélioration collaborative : un premier rédacteur peut lancer ses idées, et les voir améliorées par un second rédacteur.
Ce qui permet quelque chose que je trouve de plus en plus souhaitable, aussi bien organisationnellement que techniquement : remplacer le synchrone par l'asynchrone via un support permanent, et constamment amélioré.
Pour l'écrire autrement, ce que je propose est assez simple : quand vous lancez un nouveau développement, demandez à un nouvel arrivant d'en faire la conception en suivant le modèle de l'agile architecture documentation, en commençant par un simple commentaire dans le bug tracker puis, si il s'avère que la fonctionnalité est trop importante, dans un document que vous placerez dans vos ADR. Et relisez ce qu'il produit avant de lancer le développement.
04 mai 2021
sourceEst-ce que ça n’est pas la définition d’un état policier ? Si, c’est la définition d’un état policier. Faire vivre le peuple dans la peur constante.
03 mai 2021
sourceUne page bien complète de ressources sur l’inaltérable BloodBowl (comme j’ai acheté l’édition 1987 la semaine dernière, ça peut servir)
03 mai 2021
sourceTitre parfait, et contenu approprié. Bravo.
03 mai 2021
sourceAouch, ça calme
02 mai 2021
sourceUn texte très juste sur ces ignominies.
02 mai 2021
sourceJ’ai un collègue à qui ça pourrait plaire … personnellement, bon, j’ai déja du mal avec GTA, et avec le vélo. Alors les deux ensemble …
02 mai 2021
sourceTrès louche, mais aussi potentiellemen fascinant
02 mai 2021
sourceSi t’es pas designer (comme moi), ça peut t’aider
01 mai 2021
sourceJe me demande si Sebsauvage inclut ces adresses dans sa super liste de blocage pour PersonalDNSFilter
01 mai 2021
sourceOK, donc l’éditeur mis en cause pour une série d’actes de harcèlement sexuel n’a pas trouvé meilleure défense que de nommer chaque témoin, validant ainsi leurs témoignages. C’est ignoble, et stupide. Mesdames, vous avez toutes mon soutien (pour ce qu’il vaut)
01 mai 2021
sourceLa semaine prochaine, c'est le spring challenge !
Et comme l'année dernière, je vais essayer de le faire en Rust (un poil poussé par des collègues).
Mais contrairement à l'année dernière, j'essaye de préparer ma participation histoire de ne pas me faire avoir. Donc, voici une checklist de quelques détails utiles
cargo init --lib .
(pour créer une bibliothèque plutôt qu'un binaire). Tout le code sera dans le fichier lib.rs
parce que je n'ai pas encore trouvé la bonne façon d'utiliser include!(...)
pour avoir plusieurs fichiers.tests
, créer un fichier design_tests.rs
et un fichier integration_tests.rs
target/debug/deps
les exécutables qui doivent s'appeler design_tests_{un hash pourri}.exe
et integration_tests{un autre hash pourri}.rs
pour créer les configurations de debug de VSCodeEt avec ça, je devrais pouvoir coder assez rapidement, même si ça n'est pas automatique que ce que j'avais en Java.
30 avril 2021
sourcePourquoi ? Parce que dans les sphères de pouvoir médiatico-politiques, écrire un livre reste considéré comme bien et important. Du coup, dénoncer un éditeur, ça reste coton.
30 avril 2021
sourceJ’adore ces questions d’entretien ! Et à mon avis, elles s’appliquent tout autant à des développeurs.
30 avril 2021
sourceVous vous rendez compte que c’est, pour une fois, une techno qui sauve réellement des vies rapidement ? C’est génial ! (même si cette histoire est triste).
30 avril 2021
sourceOn serait pas à deux doigts de pouvoir créer des applications natives Windows en pur Rust ? En tout cas, on peut accéder aux API Windows …
30 avril 2021
sourceCarrément d’accord … Sauf que Jenkins fait partie des "brown tech" : ces produits avec lesquels tout le monde a eu à un moment une mauvaise expérience, donc tout le monde dit "ouin, Jenkins"
30 avril 2021
sourceUne vision de la stratégie produit dans les groupes qui a beaucoup de sens
30 avril 2021
sourceSandy Petersen, c’est pas n’importe qui. Et sa mise au point est utile.
30 avril 2021
sourceLe "it is just to confuse the americans" de la fin est absolument parfait. (et vous trouverez l’explication de l’accent circonflexe dans les commentaires).
30 avril 2021
sourceUne évaluation poussée de la production de CO² par les différents moyens de transport. C’est assez intéressant. Hélas, il manque l’avion …
29 avril 2021
sourceJe suis stupéfait … Personne n’explique aux jeunes comment est fait wikipedia ?