作者是Salvatore Sanfilippo aka antirez,Redis数据库的主要开发人员之一,Redis Labs的雇员。 文章发表于2018年9月12日最近几天的压力很大。 关于替换或不替换Redis复制代码中使用的单词的争议之一是:值得做的工作不会产生任何技术成果吗?
[它是关于替换复制中的“主/从”术语-大约。 每个]在可能的情况下,从特定单词清除Redis的过程中,我认为即使没有明显的技术效果,我也喜欢编写代码。 即使一路上发生有价值的技术问题,替换单词也太常规了,这很烦人。 但是还有另一种具有特殊质量的代码,我称之为“ hack值”。 它可能无法解决任何问题,但仍然是一项值得完成的任务。 有几个原因。 有时,编写代码的过程本身很有用。 有时,使用技术上先进的想法来解决非关键性问题。 有时,出于审美原因编写代码。
在Twitter上对最后几天的愚蠢,混乱和激烈的讨论促使人们想到,现在我们离60年代的第一批黑客还很远。 每年从黑客的角度讨论技术变得越来越困难-没有现成的想法和问题,而目标是纯粹的研究。 为所有周围开发的“最佳实践”。 每个想法都有一个禁忌。 我对这个新世界说LOLWUT,因为至少在我看来,我不觉得自己是其中的一部分,而且它完全不是黑客。 因此,这个想法是花一些时间在一个技术上无用的想法上,研究60年代的东西。
我立即想起了我最喜欢的计算机艺术作品之一-
乔治·涅斯 (
George Nies)的肖特
砾石 。 作者在ALGOL中编写了一个绘图程序,该程序使用混乱(随机数)生成艺术品。
[图片中逐渐纤细的人物变得越来越混乱-反之亦然,如果将图片旋转180°-大约会将混乱系统地组织为有组织的结构。 跨] 。 砾石的简单性和深远的意义非凡,观众可以理解。 在完全平静的掩护下,秩序内潜伏着混乱。 如果将图片颠倒过来,看起来就像是暴风雨中的大海。 混乱在表面蔓延,在海深处依然平静。
是否可以将艺术品变成数据库团队? 这非常复杂,因为Redis主要是从命令行使用的。 如今,控制台比过去更加复杂,但是要显示出令人满意的图形却很困难。 另一方面,我们在实时计算方面具有巨大优势-图片可以变得动态并随着每一代的变化而变化。
在继续之前,我将向您展示最终结果:

尽管分辨率很低,但保留了最初的想法。 在这里,我应用了许多程序使用的技巧,在文本控制台中显示了各种有趣的东西。 解决方案的第一部分是使用Unicode盲文来生成比单个控制台字符具有更高分辨率的像素矩阵。 特别是,对于每个符号,可以制作2×8像素的网格。
第二部分是图片的参数:

您可以通过更改平方数和输出分辨率来生成图片的多个版本。 最后,我想以能胜任的编程的例子编写源代码-形式看起来更像是一本教科书,其中详细介绍了每个步骤,而不仅仅是黑匣子生成器。 代码在
这里 。
从Redis 5开始,LOLWUT团队将成为标准。 在每个新的主要版本中,其功能将完全改变。 仅规则集保持不变:
- 她无能为力。
- 它应该快速运行,以便可以在生产环境中的服务器上安全地调用它。
- 结果在某种程度上应该很有趣。
我为Redis 5编写了第一个版本。在下一个版本中,我会问Redis开发人员想要的其他人,否则我自己写(我希望我不必这样做)。 LOLWUT团队应该提醒我们,我们的工作-编程-不仅是为了好事而存在。 最初,它主要是关于探索
机会 。 我希望LOLWUT也会提醒Redis社区,计算机是为人而造的,并且您不能仅凭技术含义来畅所欲言。 有在世的人使用构建系统等的系统。