这个页面是一个真正赤裸裸的、野蛮的HTML Quine

2020-10-19 19:16:27

我最喜欢的事情之一就是以创造性的方式滥用技术。在不违反规则的情况下违反规则。

例如,我很久以前构建的一个爱好项目是DOS-on-dope,这是一个工作中的Ruby-on-rails恶搞,号称是您所需要的最后一个基于批处理文件的MVC框架。还有一个console.log()冒险,其中您从Chrome开发工具内部玩了一个老式的学校控制台冒险游戏。

深奥的编程世界里充斥着人们将规则延伸到临界点,以及以创造性的方式滥用技术的例子。特别是(例如)我喜欢奎恩斯。Quines是输出自己源代码的程序。生活是一种奎因。

我喜欢的另一个不同但有某种关联的话题是野蛮主义,特别是这个经常被忽视的方面:

...把内部和外部做起来,并以某种方式揭示建筑的秘密的倾向……。残忍的方式。;-)。

另一个同样耐人寻味的想法已经废弃,那就是裸体的想法,其中:

把所有这些放在一起,我决定做一个真正赤裸裸的,野蛮的html页面,它本身就是一个quine。就是这一页。

查看此页面的源代码应该会显示一个与您现在看到的页面完全相同的页面。没有什么是隐藏的。这是真的,你看到的就是你得到的。

您知道吗?html和css的规则允许您使每个元素都可见,即使是像';title';或';style';或';script';这样的通常隐藏在视图中的元素也是如此。这些只是一些和其他元素一样的元素。您可以将它们全部公开,如下所示:

使用该代码片段(它不是代码片段,而是实际的样式块本身!)。现在您可以看到该页面的每个元素,包括样式块、html和title标记等。

它确实有一个缺点:页面上的每个元素现在都是一个";块&34;元素,甚至一些应该是";内联";的元素,比如";code";和";锚";元素。我们可以这样纠正这一点:

为了给代码更多的查看源代码的感觉,我还使用选择器对所有元素应用了等宽字体和通常简单一致的样式,如下所示:

到目前为止,我已经将样式声明全部放在一行上,因为普通html拒绝将换行符视为标记。但是有一种方法可以使换行符显示为换行符,那就是使用下面的样式:

下一个诀窍是使内部外部。我们可以从确保标签本身(如段落标签)暴露出它们的严酷、粗暴、美丽开始:

这适用于";p";元素,但是我们需要为每个元素设置自定义样式吗?如果有一种方法可以在html中输出标记的";name";,那么我们可以将上面所有必要的样式规则简化为如下所示:

还有.。但是,遗憾的是,没有";name()";函数(至今!)。因此,我们被迫生成这样的样式信息块(当然是通过NimbleText)

有些元素比较棘手,因为它们有属性。例如,考虑通常具有href属性的";锚";。我们需要该属性是可见的,包括它的值。此操作如下所示:

唯一另一个特别的风格是";style";本身,它必须包含转义字符,以避免被字面理解。

我愿意认为这可能是浏览器开发人员创建的一个解析器错误,他们没有怀疑人们会从事这样的暴行。

最后,为了减少伪元素前后的视觉权重,我们可以给它们一个柔和的紫色和一个较小的粗细字体:

我想做的另一件不同但类似的事情是创建一个将html显示为markdown的";markdown.css";文件。幸运的是,我发现另一个变态的人已经这么做了。干得好,科尔斯先生。

最后,因为我相信野蛮主义的设计,即使应用在真正赤裸裸的、野蛮的html quine上,也是关于功能的,而不是关于故意丑陋的,所以我想应用这些谦逊的风格来提高这封残酷信件的可读性。

最后一件事。虽然这个想法在我的脑海里回荡了十年,但提醒我要把它放到文件中的是看到杰夫·亨特利(Geoff Huntley)的这段代码是艺术:没有YAML。带回世界怪异的网络。