LOLWUT: una obra de arte en un equipo de db

El autor es Salvatore Sanfilippo, también conocido como antirez, uno de los principales desarrolladores de la base de datos Redis, un empleado de Redis Labs. Artículo publicado el 12 de septiembre de 2018

Los últimos días han sido muy estresantes. Uno de los argumentos en la disputa sobre reemplazar o no reemplazar las palabras utilizadas en el código de replicación de Redis fue el siguiente: ¿vale la pena hacer un trabajo que no produzca ningún resultado tecnológico? [Se trata de reemplazar los términos "maestro / esclavo" en la replicación - aprox. por.]

En el proceso de limpiar las fuentes de Redis de una palabra específica, siempre que sea posible, pensé que me gusta escribir código incluso sin efectos tecnológicos medibles. Reemplazar palabras es un trabajo demasiado rutinario, simplemente es molesto, incluso si se producen problemas tecnológicos dignos en el camino. Pero hay otro tipo de código con una calidad especial, que yo llamaría "valor de pirateo". Puede que no resuelva ningún problema, pero aún así es una tarea digna. Hay varias razones A veces, el proceso de escribir código es útil por sí solo. A veces se utilizan ideas técnicamente avanzadas para resolver un problema no crítico. Y a veces el código está escrito solo por razones estéticas.

Las discusiones estúpidas, caóticas y acaloradas de los últimos días en Twitter provocaron la idea de que ahora estamos muy lejos de los primeros piratas informáticos de los años 60. Cada año es cada vez más difícil discutir la tecnología desde el punto de vista de los hackers, sin ideas y problemas listos, donde el objetivo es la investigación pura. Para todas las "mejores prácticas" desarrolladas. Hay un tabú para cada idea. Digo LOLWUT a este nuevo mundo, porque no me siento parte de él, y no es un hacker, al menos en mi visión. Por lo tanto, la idea era pasar algún tiempo en una idea técnicamente inútil, para investigar algo de los años 60.

Inmediatamente recordé una de mis piezas favoritas de arte de la computadora: la gravilla Schotter de George Nies . El autor escribió en ALGOL un programa de trazado que generó obras de arte utilizando el caos (números aleatorios). [Gradualmente, las figuras delgadas en la imagen se vuelven cada vez más caóticas, y viceversa, el caos se ordena sistemáticamente en una estructura organizada, si gira la imagen 180 ° - aprox. trans.] . Esta grava es magnífica en su simplicidad y significado profundo, que el espectador puede entender. Bajo el manto de la calma total, el caos acecha en lo profundo de la orden. Si pone la imagen al revés, se ve como el mar durante una tormenta. El caos se desata en la superficie, y en las profundidades del mar permanece en calma.

¿Es posible convertir una obra de arte en un equipo DB? Esto es bastante complicado, porque Redis se usa principalmente desde la línea de comandos. Hoy en día, las consolas son más sofisticadas que en el pasado, pero mostrar gráficos decentes es difícil. Por otro lado, tenemos una gran ventaja en la informática en tiempo real: la imagen puede volverse dinámica y cambiar con cada generación.

Antes de continuar, te mostraré el resultado final:



Aunque en una resolución muy baja, la idea original se ha conservado. Aquí apliqué un truco que usan muchos programas, que muestra varias cosas interesantes en una consola de texto. La primera parte de la solución es usar un braille Unicode para generar una matriz de píxeles con una resolución más alta que los caracteres individuales de la consola. En particular, para cada símbolo, se puede hacer una cuadrícula de 2 × 8 píxeles.

La segunda parte son los parámetros para la imagen:



Puede generar varias versiones de la imagen cambiando el número de cuadrados y la resolución de salida. Finalmente, quería escribir el código fuente como un ejemplo de programación competente, en una forma que se pareciera más a un libro de texto con una descripción detallada de cada paso, y no solo a un generador de recuadro negro. El codigo esta aqui .

Comenzando con Redis 5, el equipo de LOLWUT se convertirá en estándar. En cada nueva versión principal, su funcionalidad cambiará por completo. Solo el conjunto de reglas permanece sin cambios:

  1. Ella no puede hacer nada útil.
  2. Debería funcionar rápidamente para que se pueda invocar de forma segura en los servidores en producción.
  3. El resultado debería ser interesante de alguna manera.

Escribí la primera versión para Redis 5. En la próxima versión pediré a alguien más de los desarrolladores de Redis que quiera, de lo contrario lo escribiré yo mismo (espero no tener que hacer esto). El equipo de LOLWUT debería recordarnos que nuestro trabajo, la programación, existe no solo para el bien. Inicialmente, se trataba principalmente de explorar oportunidades . Espero que LOLWUT también le recuerde a la comunidad de Redis que las computadoras están hechas para las personas, y que no se puede hablar estéril, solo pensando en las implicaciones tecnológicas. Hay personas vivas que usan sistemas que construyen sistemas, etc.

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


All Articles