LOLWUT: une œuvre d'art dans une équipe db

L'auteur est Salvatore Sanfilippo alias antirez, l'un des principaux développeurs de la base de données Redis, un employé de Redis Labs. Article publié le 12 septembre 2018

Les derniers jours ont été très stressants. L'un des arguments du différend concernant le remplacement ou le non-remplacement des mots utilisés dans le code de réplication Redis était le suivant: vaut-il la peine d'effectuer des travaux qui ne produisent aucun résultat technologique? [Il s'agit de remplacer les termes "maître / esclave" dans la réplication - env. par.]

Dans le processus de nettoyage des sources Redis d'un mot spécifique, lorsque cela était possible, j'ai pensé que j'aime écrire du code même sans effets technologiques mesurables. Remplacer des mots est un travail trop routinier, c'est tout simplement ennuyeux, même si de graves problèmes technologiques surviennent en cours de route. Mais il existe un autre type de code avec une qualité spéciale, que j'appellerais «valeur de hack». Cela ne résoudra peut-être aucun problème, mais c'est quand même une tâche digne. Il y a plusieurs raisons. Parfois, le processus d'écriture de code est utile en soi. Parfois, des idées techniquement avancées sont utilisées pour résoudre un problème non critique. Et parfois, le code est écrit uniquement pour des raisons esthétiques.

Les discussions stupides, chaotiques et passionnées des derniers jours sur Twitter ont fait naître l'idée que nous sommes désormais très loin des premiers hackers des années 60. Il devient de plus en plus difficile chaque année de discuter de la technologie d'un point de vue de pirate informatique - sans idées et problèmes prêts à l'emploi, où le but est la recherche pure. Pour les meilleures pratiques développées. Il y a un tabou pour chaque idée. Je dis LOLWUT à ce nouveau monde, parce que je n'ai pas envie d'en faire partie, et ce n'est absolument pas un hacker, du moins dans ma vision. Ainsi, l'idée était de passer du temps sur une idée techniquement inutile, de rechercher quelque chose des années 60.

Je me suis immédiatement souvenu de l'une de mes œuvres d'art informatique préférées - le gravier Schotter de George Nies . L'auteur a écrit dans ALGOL un programme de traceur qui a généré des œuvres d'art en utilisant le chaos (nombres aléatoires). [Les figures progressivement élancées dans l'image deviennent de plus en plus chaotiques - et vice versa, le chaos est systématiquement ordonné dans une structure organisée, si vous faites pivoter l'image de 180 ° - env. trans.] . Ce gravier est magnifique par sa simplicité et sa signification profonde, que le spectateur peut comprendre. Sous le couvert d'un calme absolu, le chaos se cache au plus profond de l'ordre. Si vous retournez l'image, elle ressemble à la mer pendant une tempête. Le chaos fait rage à la surface et dans les profondeurs de la mer reste calme.

Est-il possible de transformer une œuvre d'art en équipe DB? C'est assez compliqué, car Redis est principalement utilisé à partir de la ligne de commande. De nos jours, les consoles sont plus sophistiquées que par le passé, mais afficher des graphiques décents est difficile. D'un autre côté, nous avons un énorme avantage dans l'informatique en temps réel - l'image peut devenir dynamique et changer à chaque génération.

Avant de continuer, je vais vous montrer le résultat final:



Bien qu'en très basse résolution, l'idée originale a été conservée. Ici, j'ai appliqué une astuce que de nombreux programmes utilisent, montrant diverses choses intéressantes dans une console texte. La première partie de la solution consiste à utiliser un braille Unicode pour générer une matrice de pixels avec une résolution plus élevée que les caractères de console individuels. En particulier, pour chaque symbole, une grille de 2 × 8 pixels peut être réalisée.

La deuxième partie est les paramètres de l'image:



Vous pouvez générer plusieurs versions de l'image en modifiant le nombre de carrés et la résolution de sortie. Enfin, je voulais écrire le code source comme exemple de programmation compétente - sous une forme qui ressemble plus à un manuel avec une description détaillée de chaque étape, et pas seulement à un générateur de boîte noire. Le code est ici .

À partir de Redis 5, l'équipe LOLWUT deviendra la norme. Dans chaque nouvelle version majeure, sa fonctionnalité changera complètement. Seul l'ensemble de règles reste inchangé:

  1. Elle ne peut rien faire d'utile.
  2. Il doit fonctionner rapidement pour pouvoir être appelé en toute sécurité sur les serveurs en production.
  3. Le résultat devrait être intéressant en quelque sorte.

J'ai écrit la première version de Redis 5. Dans la prochaine version, je demanderai à quelqu'un d'autre des développeurs de Redis qui le souhaite, sinon je l'écrirai moi-même (j'espère que je n'aurai pas à le faire). L'équipe LOLWUT doit nous rappeler que notre travail - la programmation - n'existe pas seulement pour le bien. Au départ, il s'agissait principalement d'explorer des opportunités . J'espère que LOLWUT rappellera également à la communauté Redis que les ordinateurs sont faits pour les gens, et que vous ne pouvez pas parler stérile, en ne pensant qu'aux implications technologiques. Il y a des gens vivants qui utilisent des systèmes qui construisent des systèmes, etc.

Source: https://habr.com/ru/post/fr423197/


All Articles