实现一个满足 A+ 标准的 Promise

本来我对这种八股是不屑一顾的,什么手写 Promise 手写 DeepEqual 之类的我都不屑一顾。

直到我真的笔试遇到了这种题。

因为没有实现过,笔试的时候也没有足够的时间捋清楚逻辑,所以基本上测试用例只过了几个最标准的,复杂一点的一个都没过。本来觉得这种东西没什么好研究的,后来发现这个东西有专门的测试集,这就有趣起来了,毕竟我还是挺喜欢那种测试用例全通过的感觉的。

幸好这个问题已经有不少人研究过了,有很多现成的源码可以参考。这篇主要记录一下我看代码时的困惑和难点记录。

继续阅读“实现一个满足 A+ 标准的 Promise”

明明 next.js 已经关闭严格模式,为什么 useState() 还会跑两次?

其实这次有点标题党,但确实是我在写小玩具的过程中遇到的问题。

省流回答:next.js 对 component 的机制,无论是 client 还是 server。

继续阅读“明明 next.js 已经关闭严格模式,为什么 useState() 还会跑两次?”

由 npm install 失败引出来的证书问题

起因

前不久刚配了新电脑,想在新电脑上继续开发之前电脑上没有写完的项目,结果拉下来一 npm install 之后就:

npm install 失败
对应的日志

我就觉得很奇怪,明明是一样的工程,一样的 package.json,一样的 package-lock.json,怎么换了一台电脑和一个网络环境就错误了?

于是我开始想办法解决这个问题。

继续阅读“由 npm install 失败引出来的证书问题”

C++ 在 MSVC 编译器环境下如何向 Windows 控制台或文件正确输出中文

我没想到这系列还能出第三期,我佛了,Windows,你拿什么来赔我!

这次的问题是:在遍历窗口句柄想要输出每个窗口的标题时,中文标题无法正常输出。

继续阅读“C++ 在 MSVC 编译器环境下如何向 Windows 控制台或文件正确输出中文”

在 Windows 系统里写源代码带来的一堆 B 乱码问题解析

如果你刚好学习过 C/C++ 编程,又刚好用了 Windows 系统的电脑,又刚好使用了 Visual Studio 进行代码的编写,又刚好在里面写了中文字符串或者引用了中文文件路径,又刚好有在 windows 的命令行里输出过中文字符串内容,那么你很有可能遇到过乱码问题。

曾经,作为一个技术不深的大学生,没有能力也没有想法去探讨这些问题的根本原因,如今我工作了,虽然技术还是不深,但是依然有工作逼着我去探讨这些问题的根本原因,不然测试就要给我挂一个大大的 bug 单了,没办法,只能够进行探索了。

这次遇到的问题是:同样是 utf-8 编码的源代码文件,在 Visual Studio 里面,字符串字面量在内存里是 GBK 编码,而在 CLion 里是 utf-8 编码。而且 CLion 中的 utf-8 编码还可能有损失。

继续阅读“在 Windows 系统里写源代码带来的一堆 B 乱码问题解析”

使用宽字符解决 Windows 路径乱码问题 —— 没那么深入理解 Windows 下C++ 字符串编码

对我而言,开发最容易踩到坑踩到屎的就是 iOS 开发,其次是 Windows 开发。

归其原因,一般我接触到的 C++ 开发都是以类 unix 系统作为开发的(MacOS、Android、Linux),所以作为不同源且自成门派的 Windows 系统开发对我来说,开发的时候就能感受到很多割裂感,比如 Windows 特有的各种 winAPI,以及不同于类 unix 系统的各种习惯。(例如回车是 LRLF,Visual Studio 文件编码之类的)。

这次可是吃了一坨大的,也多亏于此我对于文件的编码有了更深的认识。

接下来就讲一下我的探索之旅。

继续阅读“使用宽字符解决 Windows 路径乱码问题 —— 没那么深入理解 Windows 下C++ 字符串编码”

打开速度 Speed UUUUUUUUUUUUUp!

许多研究都表明,用户最满意的打开网页时间,是在2秒以下。用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值,如果你的网站打开速度在8秒以上,那么很可能,大部分访问者最终都会离你而去。

我也不知道哪来的研究结果

如果你觉得现在博客的打开速度比以前快很多的话,那绝对不是错觉。

因为我把整个服务器都 remake 啦!

继续阅读“打开速度 Speed UUUUUUUUUUUUUp!”