[1636] XKCD Stack

Title Text:This site requires Sun Java 6.0.0.1 (32-bit) or higher. You have Macromedia Java 7.3.8.1戮 (48-bit). Click here [link to java.com main page] to download an installer which will run fine but not really change anything.<

Origin:https://xkcd.com/1636/

https://www.explainxkcd.com/wiki/index.php/1636:_XKCD_Stack

XKCD 架構

此網站需要 Sun Java 6.0.0.1 (32-bit) 或更高版本,您安裝了 Macromedia Java 7.3.8.1¾ (48-bit)。點此(連結到 java.com 首頁)可以下載安裝程式,雖然他會正常執行不過什麼都不會安裝。

https://xkcd.tw/1636

在软件工程中,技术堆栈是公司或应用程序使用的一组技术平台和工具。一个常见的技术堆栈是LAMP,由Linux操作系统,Apache Web服务器,MySQL数据库和PHP编程语言组成。在这部漫画中,介绍了XKCD堆栈。它包含的技术要么不存在,要么不可靠,过时或完全不相关。

图层说明[编辑]

EBNF /CSS

BNF或Backus’aur Form是用于描述无上下文语法的语法。 EBNF是“扩展的BNF”,它与BNF是一回事,其中有一些句法结构旨在简化其在最常见情况下的使用。 1343:手册提到了EBNF。

CSS或层叠样式表是一种用于描述网页外观的语言。网页通常用HTML编写,它描述了页面的结构(即将文档分成段落,列表等),并辅以CSS描述页面的外观(颜色,字体,边距等)。 。 EBNF /CSS会建议CSS使用奇怪的语法。

破碎的Java Applet

近年来,在几个浏览器中运行Java applet变得更加困难。 Chrome 45停止支持NPAPI,Firefox在第52版中放弃了支持,而Edge根本不支持NPAPI插件。此外,在此漫画发布前两天,Oracle(Java开发人员)宣布计划在即将推出的版本中正式终止对Java applet的支持。

Archive.org镜像

Archive.org是一个存档网站的网站,并创建了Wayback Machine。 “Archive.org镜像”是xkcd服务器还是Archive.org本身的副本是不明确的。

Hypercard.js

HyperCard可以被认为是Apple开发的powerpoint的前身。文件扩展名.js表示已在JavaScript中重写。在1508:操作系统中可以找到类似的JavaScript参考。 .js扩展名也指node.js,其中大多数库名以.js结尾

关于Rails的QBasic

QBasic和Ruby on Rails之间的混合。 BASIC是一种在80年代非常普遍的编程语言。 QBasic是Microsoft在90年代初期创建的BASIC实现,其中包括对结构化编程的支持。 QBasic缺乏现代计算机语言中的一些功能,以其意大利面条代码而闻名。 Ruby是一种相当现代的语言,经常与Ruby on Rails Web应用程序框架一起使用。关于Rails的QBasic可能意味着Ruby on Rails的端口,用QBasic取代Ruby。 QBasic不再在现代计算机上运行,​​但有一些免费的QBasic开源实现,一个是QB64,另一个是FreeBASIC,可用于Windows,Linux,Mac和Android。 BASIC上还有一个名为RunBasic的Web服务器。

[被AdBlocker阻止]

广告拦截软件是尝试从网页中删除广告的浏览器的扩展,因此用户不会分心。 624:品牌展示了“无广告浏览”的样子。这个笑话是AdBlocker阻止我们看到构成这部分堆栈的内容。这可能是因为:

有人在堆栈描述中插入了广告。有些网站会在表格和列表中插入广告,典型的情况是在论坛中的帖子之间。

广告实际上是堆栈的组成部分。有些网站会将广告作为网站内容的一个组成部分,因此使用广告拦截软件的用户将被迫停用广告屏蔽功能,以便能够与网站进行正确的互动。通常,在现实生活中,这并不是广告成为网站的一部分,只是该网站人为地拒绝工作,直到它确认广告已在客户端正确加载(通过内部的某些脚本)将确认发送到服务器的广告)。

广告拦截软件错误地将该部分的堆栈标识为广告,而实际上它不是(即误报)。这在现实生活中发生,并且对于被错误识别为广告的网站所有者而言,这是一个巨大痛苦的常见来源。

MongoDB中/Excel中

MongoDB是一个现代的NoSQL数据库系统,Microsoft Excel是Microsoft的电子表格程序,有时用作数据库系统(很少是一个不错的选择)。

有些作品无人问任何问题编写任何非平凡的软件总是需要一个调试阶段,其中包括查找和修复错误。对于复杂的软件,这是一个漫长而累人的过程,因此当产品最终完成时,没有人敢于进一步修改它,因为担心它会以意想不到的方式失败。经过一段时间后,更糟糕的是因为没有人真正记得该软件应该如何工作,所以产品变成某种神圣的宝藏,必须得到最大的尊重和敬畏,因为,你知道,如果它停止工作我们一切都注定了(1421:未来的自我)。完成后,重构是重写代码以提高效率或可靠性的过程。但是,如果表现不是“太糟糕”(即在正常使用中并不是非常糟糕),那么有很大的诱惑可以避免这种情况,有利于“如果它没有破坏,不要修复它”的方法。例如,这可能导致受过训练的猴子和算盘被用来压榨数字。它有效,但可以做得更好。然而,没有人希望改变它,因为害怕破坏目前功能上的,如果效率低下的系统。

Triply-Nested Docker

Docker是一个软件容器,它允许一个完整的操作系统在不同的操作系统(OS)下运行(只要它们共享相同的内核,等等)。三层嵌套的docker意味着在OS B下运行的OS A在OS D下运行(在OS E下运行?)。这可能是一场表演和管理的噩梦

ParavirtualBoy®

这是对虚拟男孩的引用,这是由Nintendo创建的失败的便携式控制台。它被宣传为一种高度沉浸式,令人难以置信的体验,但它所使用的糟糕技术因不符合高期望而受到极大的批评。半虚拟化是一种虚拟化方式,需要客户操作系统的协作,而不是完全虚拟化,客户操作系统不需要做任何特殊操作,主机就可以处理所有事情。

一个开发键入真正的快速

开发人员是软件开发人员。这可能是对341:1337:第1部分的引用,其中Roberts夫人在戴着烤箱手套和烘烤饼干的同时编辑TCP流。看起来xkcd Webserver毕竟不是计算机 – 我们有人手动回复HTTP协议查询。这样的壮举确实需要真正的快速打字。如果是这种情况,则可能的是,堆栈的其他几乎没有任何层实际上做任何事情。

我们软件的旧版本

人们通常不愿意切换到较新版本的软件,因为即使较新的版本应该具有更多功能和更少的错误,它们最终会使用户感到困惑。旧版本的用户习惯于使用较少的功能和规避旧错误来完成所有操作。他们不知道如何使用这些新功能,当然这些新功能还没有学会如何绕过它们。通常的情况是,较新的版本删除了奇怪的未使用的旧功能,打破了实际使用这些功能的用户的工作流程,并且没有合适的替代品(1172:工作流程)。或者,由于堆栈的较高部分依赖于较低的部分,这也可以参考Microsoft Windows(3.x,95,98和ME)的消费者版本如何在“旧版本”软件Microsoft DOS上运行直到Windows 95.与前一层配对,它可能意味着人类只是在重新输入旧版本的输出。

神秘网络恐怖

兰德尔在这里建议,XKCD服务背后的整个网络内容都是神秘的(没有人真正知道细节)和可怕的(技术上有问题的架构和实现,或者以某种方式触摸和eldritch性质)。

MicrosoftBobServer®

微软Bob在1995年左右尝试了一次短暂的失败尝试,为Windows 3.1x,Windows 95和Windows NT操作系统提供了一个用户友好的界面。它由一个虚拟的“房子”和“房间”组成,其想法是你可以点击一支笔并打开文字处理器。它受到严厉批评,很快就停止了。 Randall似乎正在建议Bob继续开发,现在有一个Bob服务器,类似于Windows服务器。

有人在Minecraft中建造的巨型CPU

Minecraft是一款流行的沙盒游戏,您可以在其中放置块来构建东西。自从引入Redstone对象(用于在游戏中创建基本电路的材料)以来,人们在Minecraft中制造了许多机器,包括计算器和时钟。这些机器中最复杂的是模拟简单的计算机,能够存储多行代码并执行基本的数学运算,例如除法,这需要数千个块和极其复杂的设计。能够托管网站的Minecraft CPU将是非常庞大的。

标题文字[编辑]标题文本包含几个关于Java编程语言的笑话:

首先,它将Java称为Sun Java和Macromedia Java。这是一个双关语,因为较旧的文档引用了“Sun Java”,其中较新的文档引用了“Oracle Java”,就好像有两种不同的语言。事实上,Java最初是由Sun设计的,后来被Oracle收购,因此即使语言相同,它也“改名”。 Macromedia是在Adobe被Adobe收购之前开发Flash的公司。 Flash和Java在WWW早期都很受欢迎,因为它们都有交互式网页,但两者都被弃用以支持JavaScript。

第二,版本号:旧软件产品曾经有两个版本号:主要和次要(例如在MS-DOS 6.22中,主要数字是6,次要数字是22)。较新的产品往往有数百个小修订,所有这些都是编号,所以一个典型的用户可能会发现自己更新版本6.0.0.1到7.3.8.1,而根本不知道两个版本之间的差异或介于两者之间的其他版本。 Macromedia Java版本中的一个问题是复杂版本号的笑话,(到目前为止)从未包含过分数。

第三,32位或48位版本:英特尔80386处理器采用称为IA-32的架构,这意味着地址总线为32位宽,因此能够处理高达4GiB的RAM内存。这对于20世纪90年代早期来说是充足的,当时典型的家用PC将具有大约8MiB(这比4GiB低512倍)。然而,大约10年后,典型的家用PC可能会使用超过4GiB的RAM,因此创建了几个64位架构。这些体系结构不兼容,因此程序(包括Java运行时环境或JRE)通常具有32位和64位版本。此外,许多Web浏览器都大量使用JRE,为此,JRE和浏览器需要具有相同的“位数”。这意味着大多数人已经安装了两个版本的JRE,以便能够将它与32位和64位浏览器一起使用。没有48位架构(尽管一些64位处理器,包括最常见的处理器实际上并不使用所有64位,忽略一些位,因此实际的虚拟或物理内存更小(在最常见的情况下,48位)虚拟和40位物理),它们模拟完整的64位环境以允许以后添加更多位,因此没有特定的48位应用程序)。

第四,试图让用户安装新版本的JRE的应用程序应该将用户引导到java.com站点中的下载页面,而不是指向处理java的许多问题的主页面,并且在使用时不是特别有用。试图更新JRE。

第五,继续用户从7.3.8.1更新到6.0.0.1并且不知道为什么应该更新的笑话,新版本被称为“运行正常,但没有真正改变任何东西”。这是Java更新的常见行为:它们运行正常(可能与1197相反:所有Adobe更新,其中必须多次更新并且用户永远不会确定他们已经安装了所有最新更新),但在完成更新之后用户看不到与先前行为的任何差异,和/或可能仍被告知需要更新。考虑到7.3.8.1的数量大于6.0.0.1,它还可以指的是升级测试不正确的事实,7.3.8.1实际上是更新的版本,或者aplet需要降级才能正常工作,因为没有人修复它以使用更新的版本。

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories