LOLWUT: ein Kunstwerk in einem DB-Team

Der Autor ist Salvatore Sanfilippo alias Antirez, einer der Hauptentwickler der Redis-Datenbank, ein Mitarbeiter von Redis Labs. Artikel veröffentlicht am 12. September 2018

Die letzten Tage waren sehr stressig. Eines der Argumente im Streit um das Ersetzen oder Nichtersetzen der im Redis-Replikationscode verwendeten Wörter war das folgende: Lohnt es sich, Arbeiten auszuführen, die kein technologisches Ergebnis liefern? [Es geht darum, die Begriffe "Master / Slave" bei der Replikation zu ersetzen - ca. per.]

Während ich Redis-Quellen nach Möglichkeit von einem bestimmten Wort bereinigte, dachte ich, dass ich gerne Code schreibe, auch ohne messbare technologische Auswirkungen. Das Ersetzen von Wörtern ist zu routinemäßig, es ist einfach ärgerlich, selbst wenn auf dem Weg würdige technologische Probleme auftreten. Es gibt aber auch eine andere Art von Code mit einer besonderen Qualität, die ich als "Hack-Wert" bezeichnen würde. Es mag kein Problem lösen, aber es ist dennoch eine würdige Aufgabe. Es gibt mehrere Gründe. Manchmal ist das Schreiben von Code für sich allein nützlich. Manchmal werden technisch fortgeschrittene Ideen verwendet, um ein unkritisches Problem zu lösen. Und manchmal wird der Code nur aus ästhetischen Gründen geschrieben.

Die dummen, chaotischen und hitzigen Diskussionen der letzten Tage auf Twitter ließen die Idee aufkommen, dass wir jetzt sehr weit von den ersten Hackern der 60er Jahre entfernt sind. Es wird von Jahr zu Jahr schwieriger, Technologie aus Hacker-Sicht zu diskutieren - ohne vorgefertigte Ideen und Probleme, bei denen das Ziel reine Forschung ist. Für rundum entwickelte "Best Practices". Für jede Idee gibt es ein Tabu. Ich sage LOLWUT zu dieser neuen Welt, weil ich mich nicht als Teil davon fühle und es zumindest in meiner Vision kein Hacker ist. Die Idee war also, einige Zeit mit einer technisch nutzlosen Idee zu verbringen, um etwas aus den 60er Jahren zu erforschen.

Ich erinnerte mich sofort an eines meiner Lieblingswerke der Computerkunst - den Schotter- Kies von George Nies . Der Autor schrieb in ALGOL ein Plotterprogramm, das Kunstwerke mit Chaos (Zufallszahlen) erzeugte. [Allmählich schlanke Figuren im Bild werden immer chaotischer - und umgekehrt wird das Chaos systematisch in eine organisierte Struktur geordnet, wenn Sie das Bild um 180 ° drehen - ca. trans.] . Dieser Kies ist großartig in seiner Einfachheit und tiefen Bedeutung, die der Betrachter verstehen kann. Unter dem Deckmantel völliger Ruhe lauert das Chaos tief in der Ordnung. Wenn Sie das Bild auf den Kopf stellen, sieht es aus wie das Meer während eines Sturms. An der Oberfläche tobt Chaos, und in den Tiefen des Meeres bleibt es ruhig.

Ist es möglich, ein Kunstwerk in ein DB-Team zu verwandeln? Dies ist ziemlich kompliziert, da Redis hauptsächlich über die Befehlszeile verwendet wird. Heutzutage sind Konsolen anspruchsvoller als in der Vergangenheit, aber die Anzeige anständiger Grafiken ist schwierig. Auf der anderen Seite haben wir einen großen Vorteil beim Echtzeit-Computing - das Bild kann mit jeder Generation dynamisch werden und sich ändern.

Bevor ich fortfahre, zeige ich Ihnen das Endergebnis:



Obwohl in einer sehr niedrigen Auflösung, ist die ursprüngliche Idee erhalten geblieben. Hier habe ich einen Trick angewendet, den viele Programme verwenden und der verschiedene interessante Dinge in einer Textkonsole zeigt. Der erste Teil der Lösung besteht darin, eine Unicode-Braillezeile zu verwenden, um eine Pixelmatrix mit einer höheren Auflösung als einzelne Konsolenzeichen zu generieren. Insbesondere kann für jedes Symbol ein Gitter von 2 × 8 Pixeln erzeugt werden.

Der zweite Teil sind die Parameter für das Bild:



Sie können mehrere Versionen des Bildes generieren, indem Sie die Anzahl der Quadrate und die Ausgabeauflösung ändern. Schließlich wollte ich den Quellcode als Beispiel für kompetente Programmierung schreiben - in einer Form, die eher wie ein Lehrbuch mit einer detaillierten Beschreibung jedes Schritts aussieht und nicht nur wie ein Black-Box-Generator. Der Code ist hier .

Ab Redis 5 wird das LOLWUT-Team zum Standard. In jeder neuen Hauptversion ändert sich die Funktionalität vollständig. Nur das Regelwerk bleibt unverändert:

  1. Sie kann nichts Nützliches tun.
  2. Es sollte schnell funktionieren, damit es sicher auf Servern in der Produktion aufgerufen werden kann.
  3. Das Ergebnis sollte irgendwie interessant sein.

Ich habe die erste Version für Redis 5 geschrieben. In der nächsten Version werde ich jemanden von den Redis-Entwicklern fragen, der dies möchte, andernfalls werde ich sie selbst schreiben (ich hoffe, ich muss dies nicht tun). Das LOLWUT-Team sollte uns daran erinnern, dass unsere Arbeit - Programmierung - nicht nur zum Guten existiert. Anfangs ging es hauptsächlich darum, Möglichkeiten zu erkunden. Ich hoffe, dass LOLWUT die Redis-Community auch daran erinnert, dass Computer für Menschen gemacht sind und dass man nicht steril sprechen kann, wenn man nur über die technologischen Auswirkungen nachdenkt. Es gibt lebende Menschen, die Systeme verwenden, die Systeme bauen und so weiter.

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


All Articles