兜兜转转,弃用edge,用回chrome
最早从chrome换到edge的原因,是因为chrome越来越吃内存,同时,账号同步功能受到限制,而edge使用了相同内核,微软的账号又没有受到限制。但随着时间的推移,已经持续用了几年edge了,发现它越来越重,不仅版本跟不上chrome,而且账号问题反而影响使用——当正常使用时,由于网络问题,账号没有连上,它竟然会弹出一个强制性的弹窗盖在原有窗口上,导致原有窗口关不掉,虽然这个弹窗可以直接关闭,但是过一会儿又会弹出来,真的是太恶心。包括它新加的AI功能,统统都用不上。对于我而言,浏览器的重要功能是要调试方便,而chrome就像初恋一样,又成了我的心头好。
facebook生产有技术深度的垃圾
facebook从10年前开始在技术领域作出了非常大的贡献,在前端领域,出现了react,之后又出现了LLaMA。然而,随着时间的流逝,facebook这家公司正在衰亡,伴随而来的,是以前的一些项目的维护人员逐渐流失,因为无法维护,导致很多问题。今天要指出的,是两个非常有技术深度的,却没人维护的,让我非常后悔采用的两个东西:faiss和rocksdb。
我在几年前采取了这两个工具,但是现在,这两个工具成为我的项目毒瘤。我现在每次在一台新机器上执行yarn,都感到心惊肉跳,这两个东西都需要编译,而现在总是无法正常编译。对了,yarn也是facebook的东西。在用了这么多年之后,我不得不因为这两个没人理会的垃圾寻找出路,rocksdb我使用leveldb替代,要改代码。faiss-node我自己fork了一个,发了一个新包faiss-node-napi8,如果你也在用faiss-node,你可以在package.json中这样写:
... "faiss-node": "npm:faiss-node-napi8@^0.5.1", ...
虽然这是过渡方案,但是起码能跑起来。
这件事让我开始反思,我们在做技术选型的时候,应该要考虑到这种问题。随着nodejs、webpack、vite等基础设施的升级,很多以前的技术实现会出现不兼容的情况,而如果此时项目无人维护,而你的项目又重度依赖,那么就非常非常痛苦。你看,即便是强如facebook这样的大公司,也有很多当时有技术创新,却最后沦落为无人理睬的垃圾的项目。那么,就更无法对个人的项目库更加信任。因此,我们应该挑选那种社区比较大的开源项目作为技术选型,只有当社区足够大,才能支持项目可以持续维护。