你想想,你吃着泡面、哼着歌、还在网上冲着浪,突然就发现浏览器用不了了,这可多难受啊。当然啦,这可不是差评君在瞎带节奏啊,因为这事还真有那么点可能会发生。
因为全世界最流行浏览器之一的 Chrome,马上就要发布第100个版本了。而这次更新,很可能会引发一些 BUG,导致网页直接打不开。
冲浪板要是坏了,这可让咱们怎么冲浪啊?
Chrome 大伙们可再熟悉不过了,这款有内存吞噬者之称的浏览器,在这颗行星上有超过 20 亿的装机量。
至少在编辑部,除了少数几个 Safari 用户外,Chrome 的覆盖率没有 9 成也有 8 成。而剩下的也大都是在用各种 chromium “套壳”浏览器。
那么问题就来了,别人的软件更新不是内置个虚幻引擎,加些新功能,就是修复一些 BUG,让产品更加稳定。
Chrome 你这个坐拥数十亿的大咖咋一更新,反而修复了 “ BUG 过少的 BUG ” 呢?
这不是把用户做宝搞吗?
其实啊,这锅还真怪不到谷歌的工程师身上,引发这一场 BUG 的,是一个名叫版本号的东西。
因为在某些网站的眼里,版本号 100 竟然小于 40。
接下来就请准备好薯片和可乐,差评君这就和大伙们讲讲,这道火锅都能做对的比大小题目背后、这个让大伙们可能上不了网的 BUG 背后,究竟发生了什么。
简单地说,当你访问某某小网站时,网站是需要知道你用的是啥浏览器和啥版本的。
一方面,网站就能向那些用最新版浏览器的用户展示新功能、新交互,反过来对那些“古董”浏览器提供适合它们的内容。
就像 IE9 之前的 IE 浏览器不装插件的话,是不支持 SVG 功能的。而对如今的各大浏览器来说,SVG 早已经算是个平平无奇的玩意儿了。
在另一方呢,出于网络安全的考虑,网站还能根据版本号,直接拒绝那些早就不更新的浏览器访问网站。
总得来说,网站要知道 “来者是何人”,然后再决定就接不接客,并在接客之后看碟下菜。
而这次 Chrome 浏览器即将带来的版本号为 100 的更新,就很可能让一部分网站认错客人,然后直接把用户拒之门外。
就拿能差评君所用的 Chrome 浏览器为例,网站会通过检查以下的浏览器 UA( 用户代理字符串 )来查一波户口:
Mozilla/5.0( Windows NT 10.0; Win64; x64 ) AppleWebKit/537.36 ( KHTML , like Gecko ) Chrome/97.0.4692.99 Safari/537.36
这里面的东西很多,我们要找的是 Chrome/97.0.4692.99 这一段。
对于大部分的网站开发者来说,他们只需要关注紧接着Chrome/后的字符 “ 97 ”,其实就足够网站辨别浏览器身份,并根据版本看碟下菜了。
而巧就巧在,一个国外小有名气,名叫 Duda 的网页设计工具包它更懒。
因为它只读取 Chrome/背后的两个数字。。。
所以在 Chrome 浏览器的版本号升到 100 之后,在访问那些用 Duda 开发的网站时,认字只认一半的它们会以为你的版本号是 10。
更搞人心态的是,Duda 还会自动屏蔽版本号低于 40 的 Chrome 浏览器访问。。。
所以说在它们的眼里 100 = 10 < 40,你的浏览器就这样被禁止访问了。
虽然这一波无疑是 Duda 程序员的锅,但是在某种程度上,Chrome 的程序员们其实也还是有那么一捏捏责任的。
而错就错在 Chrome 的程序员们太能爆肝了,从而导致 Chrome 的更新实在太勤快了。
这么说吧,今年已经 13 岁的 Chrome 在早期可是 12 周才更新一次,后来加快到了 6 周一次,到后面更是到了 4 周更新一次。
就这样,Chrome 的版本号便迅速疯涨,到今年的三月份也即将迎来第 100 个版本。
所以说 Chrome 的工程师要是多摸点鱼,多摆点烂,这个 BUG 就不会这么早出现。
分完锅,但问题总要解决吧。
早就发现可能会出现 BUG 的谷歌,在去年就提供了个测试 flag。
大伙们只要在浏览器中输入 chrome : //flags 然后输入并打开 #force-major-version-to-100 就能让网站打破两位数的魔咒,强制显示版本号为 100 了。
而老外的性情似乎也是调和折中的,因为还有网友提出了另外中庸的解决办法。
那就是让谷歌的版本永远停在 99,之后的更新变后面的小数点就可以了。
只不过,这些人再怎么出谋划策也都是 “皇上不急太监急”,要知道古话说的好:解铃还须系铃人啊!
好在真正的罪魁祸首 Duda 在不久发布了公告,表示已经更新了代码,并解决了这个问题。
而在谷歌反馈 BUG 的网站上,这个问题也已经被标注为已修复( Fixed )。
而在 Chrome、FireFox 这些浏览器的版本号真正到达 100 之后,还有多少的类似 Duda 的 BUG 没被发现,咱们就不得而知了。
只能说这个浏览器界的“千年虫”问题,只是暂时得到了解决。
另外,记性比较好的差友应该还记得在今年年初,微软公司也出过类似的千年虫问题。
它让微软员工们的年都没跨好。
这个 BUG 的大概剧情是在今年的 1 月 1 日当天,不少使用微软 Exchange 的公司发现邮箱居然发不出去了。
背后的原因其实也相当简单,那就是微软用了一种名叫 “ yymmddhhmm ” (年年月月日日时时分分)的符号变量( int32 )来存储时间。
而有符号的 int32 只能存储 -2147483648 到 2147483648 的数据,也就是 2 的 32 次方那么多个。
原本在上世纪是为了节省存储空间的设定,在如今却成为了 BUG。因为 2022 年的后两位 22 带入到 “ yymmddhhmm ” 中,直接就超过 int32 的取值范围。。。
好在微软攻城狮的加班加点之下,相关的问题已经得到了解决,连夜捉虫或许就是他们的新年礼物吧。
总得来说呢,在科技互联网领域其实一直都存在类似的祖传代码存在,或是为了兼容,或许是为了节省时间不重复造轮子,那些具有时代局限性的代码,还有代码中那些千年万年的 BUG,也就一代又一代地传了下来。
而大伙们也把这些又臭 BUG 又多的代码称为 “ 屎山 ”。
所以啊,类似于浏览器版本号、日期存储的 BUG 并不是第一次出现,也肯定不会是最后一次。
最后呢,大伙们可以再等待一波即将到来的 2038 年问题。
因为那些使用 POSIX 时间的 32 位程序,它们的计时方式是用秒来表示的。其中格林尼治时间 1970 年的 1 月 1 日 0 时 0 分 0 秒为起点,第 2147483648 秒为上限。
而第 2147483648 秒的时间正好是 2038 年 1 月 19 日的凌晨 3 点 14 分 07 秒,而到过了这那一秒,应该有又不少的设备会有 BUG 了。
当然,到时候应该不会还有 32 位的设备存在了吧,或许,没了吧。
上一篇:中信院:51款App通过适老化及无障碍水平评测
下一篇:苹果新款 iPhone SE 3 / iPad Air 5已经被进口到印度
推荐阅读最新更新时间:2024-11-13 04:45
- 消息称苹果、三星超薄高密度电池均开发失败,iPhone 17 Air、Galaxy S25 Slim手机“变厚”
- 美光亮相2024年进博会,持续深耕中国市场,引领可持续发展
- Qorvo:创新技术引领下一代移动产业
- BOE独供努比亚和红魔旗舰新品 全新一代屏下显示技术引领行业迈入真全面屏时代
- OPPO与香港理工大学续约合作 升级创新研究中心,拓展AI影像新边界
- 古尔曼:Vision Pro 将升级芯片,苹果还考虑推出与 iPhone 连接的眼镜
- 汇顶助力,一加13新十年首款旗舰全方位实现“样样超Pro”
- 汇顶科技助力iQOO 13打造电竞性能旗舰新体验
- BOE(京东方)全新一代发光器件赋能iQOO 13 全面引领柔性显示行业性能新高度
- AD9215BCP-65EB,AD9215BCP-65 评估板,3 V 单电源,10 位,65 MSPS 模数转换器 (ADC)
- REF198 精密微功率、低压差堆叠电压基准的典型应用电路
- 3D打印机WIFI SD卡 小卡
- LTC3835EGN 演示板、低 Iq、36Vin 同步降压控制器
- NCP301HSN18T1 1.8V 窗口电压检测器的典型应用
- DC1563A-C,使用 LTC2312CTS8-12、12 位、500 KSPS 串行采样模数转换器的演示板
- LTC3851A 的典型应用 - 同步降压型开关稳压控制器
- DC_SHIELD_V3
- MCP2562FD高速CAN灵活数据速率收发器的典型应用
- ZLDO485 4.85 伏超低压降稳压器的典型应用是将开关稳压器变压器缠绕以提供略高于所需的电压,并使用线性稳压器从该电压降至所需电压