如何从一个 Chrome 的 Bug 中找到解决方案
在前端开发,或者说 Web 开发中,我们会经常遇到,在某个浏览器遇到了问题,但是别的浏览器没有,过去,我们考虑的可能是 IE6 的兼容性,而在 Chrome 一骑绝尘的今天,Chrome 而其他浏览器没有的问题反而成为了更大的问题。
在此之前遇到过几个 Chrome Bug,我会以两个 Chrome Bug 为例说说实际是怎么解决的:
在前端开发,或者说 Web 开发中,我们会经常遇到,在某个浏览器遇到了问题,但是别的浏览器没有,过去,我们考虑的可能是 IE6 的兼容性,而在 Chrome 一骑绝尘的今天,Chrome 而其他浏览器没有的问题反而成为了更大的问题。
在此之前遇到过几个 Chrome Bug,我会以两个 Chrome Bug 为例说说实际是怎么解决的:
之前有一个奋斗了 N 小时才搞定的问题,在 Nestjs 的单元测试中反复测试会报类似于:
Starting Nest throws following error: Nest can't resolve dependencies of the EventResolver (EventService, ?). Please make sure that the argument at index [1] is available in the EventModule context.
Nest throws an error about a circular dependency that doesn't exist. Here is the error thrown:
Nest cannot create the module instance. Often, this is because of a circular dependency between modules. Use forwardRef() to avoid it. (Read more https://docs.nestjs.com/fundamentals/circular-dependency.) Scope [RootModule -> XXXModule]
在开发中,我很经常的将很多功能设置成可配置的,这里不仅仅说的是应急的开关,而是包括了一些文本在内的信息。这篇文章也就是说说为什么我要这么做,以及这么做到底有什么好处。
最简单,大家也最常用的是在后台配置一些开关,这些开关不用发布,只需要轻轻一点就能切换某些功能的状态,这也是大家通常会做的「基于配置」的开发的处理,毕竟发版的时间实在太漫长了,因此大部分后端都有有意识的将一些开关放在后台而不是开发写的配置文件中。
media 中有一个属性 prefers-color-scheme
,用 matchMedia()
来检测 (prefers-color-scheme: dark)
是否存在就可以了。
截止2019年11月15日,目前经过测试可以直接 Debug DarkMode 的浏览器(以最新版为准):
其中 Firefox 可以通过安装插件实现 Dark Mode Debug(兼容性不是很好)。
大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。
入职之初我就接到了一些第三方登录的任务,然而 Django Allauth 将内部封装的太好,暴露的 API 不足,更新又慢,issue 和 PR 很少有人处理,当你需要扩展时,很多情况下你只能用一些 hack 的手段去解决问题,非常蛋疼,所以当时就决定慢慢的切到自己的一套 Auth 体系中。
From:「GDG DevFest 2019」
这是由演讲 PPT 汇集而成的内容,可能与演讲内容有所差异,并非演讲稿,望悉知。
首先得提出一个问题,到底什么是知识迁移,在 wiki 上有这样一段解释。
在一个地方所学的技能、知识与态度对另一个学习的影响,它可以加快学习的速度。
——艾尔德
最近我在 Element 里看到了一个 issue:el-image preview bug。之所以导致了这个 Bug,我觉得某种意义上来说就是因为 image 组件的 viewer
(蒙版)模块开发时,没有充分理解 z-index
到底是怎么起作用的。
在此之前,我们先来看一下下面这个例子:
目前白嫖 HTTPS 的主流途径依旧是 LetsEncrpyt,certbot 似乎是官方主要推荐的一个申请方式,关于用途和用法,这里不多介绍,总之,是一个品种齐全,种类多样的 cli 工具:https://certbot.eff.org/
这里由于我的 NAS 希望签 HTTPS,但是电信开外网是不允许开 80 和 443 端口的,所以无法用 HTTP 协议去校验,只能选择 DNS,如果没有 DNS 插件,那么只能用 Manual 的方式,非常麻烦。
于是,我开始了面向源代码编程——
这次有一个需要关闭页面的需求,于是自然而然想到了经久不衰的 window.open
兄弟款:window.close
。在 MDN 中,对于 window.close 的描述也相当简单:window.close
然而我们需要注意的是下面这句话:
Firefox 35.0.1:脚本不能关闭不是他打开的窗口
关于 WebSocket,在四年前做实验室习题时第一次接触,当时基本上没怎么介绍 WebSocket,只贴了一份链接,而恰巧这次做了一些 WebSocket 上的工作,所以会从头开始介绍一下 WebSocket。
在 WebSocket 以前,Web 工作人员已经探索过好多种方法了,由于我没有生在那个时代,所以除了 ajax 轮询之外的方法,我完全都没有记住,不过 WebSocket 确实是站在了巨人的肩膀上,终于成为了一套事实方案,而其维护成本和原理也比 TCP 的 socket 链接要简单不少。