Skip to main content

2023/12/31

"人类的历史,就是不断寻找最精确信息的历史" -- gpt 之因

ChatGPT 会代替搜索引擎吗

至少目前不会。因为 gpt 是基于静态数据做模型训练,中间有一定的时间,而搜索引擎可以检索实时信息,并且 gpt 没法涵盖搜索引擎的信息广度。但肯定会影响搜索引擎的业务,比如广告收入等

对我而言,我在实际工作或生活中遇到比较技术性的难题时,往往会寻求 gpt 来更快地获得更准确的答案,毕竟搜索引擎上信息量比较大,靠自己去判断和聚合很麻烦,准确性也不高。然而一些新闻或比较简单的问题,直接 google 往往更快~

怎么判断对象为空

我在项目中用的最多的就是 Object.keys(obj).length === 0,但实际上深究的话,这个并不是最好的判断依据,它会忽略不可枚举的属性。比如下面的代码:

const obj = {};
Object.defineProperty(obj, "name", {
value: "Lucas",
enumerable: false,
});
console.log(obj.name); // 'Lucas'
console.log(Object.keys(obj).length === 0); // true

其他办法

  • JSON.stringify。判断 {}==={},会收到序列化的影响,比如存在 undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略,或者被转换成 null(出现在数组中时)
  • Object.getOwnPropertyNames,得到对象自身的所有属性名组成的数组,包括不可枚举的属性

但以上方法都不能获取 Symbol 值作为名称的属性,以上的 JSON.stringify、for in 以及 Object.keys 方法也不能获取 Symbol 值作为名称的属性。可以结合使用 Object.getOwnPropertyNames + Object.getOwnPropertySymbols(获取由 Symbol 值作为名称的属性),但比较繁琐。当然他们也不能遍历原型属性,除了 for...in,但实际场景也基本不考虑原型属性

更好的方法是 Reflect.ownKeys,它会返回一个由目标对象自身的属性组成的数组,它的返回值等同于 Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))

各个枚举方法对比参考下图:

尤大谈 vue3 的经验和教训

https://mp.weixin.qq.com/s/SzlgWuuKm3O9nSBnu0gnIQ

错误做法:

  • 太多破坏性更改
  • 低估了升级对社区生态造成的影响。这也是很多公司至今还在用 vue2 的原因,升级成本和风险比较大

正向经验:

  • 使用 TypeScript。尤大觉得对项目的可维护性还是起到了很大的作用。貌似有点像和之前那谁抛弃 ts 对着干?作为 ts 拥护者,我也只能表示支持 hhh
  • 组合式 api。参考 Hook 的经验,在代码组织上起到了很好的作用

他也表示,在可预见的未来不会出现 Vue 2 到 3 这种重大变更,未来关键在于框架的稳定性

新工程师要干几件事

我觉得新人在刚进一个团队的时候,不仅要抓紧熟悉技术架构和开发流程,也要懂得做一些微小的改善,比如关掉项目的一些 issues,但更重要的一点是要主动多写文档,写文档其实对一个人的帮助是很大的,不仅可以熟悉项目、提高表达能力,也可以提高技术能力,因为你只有理解了代码才能表达出来,文档越清晰就代表思路越清晰,长远一点的正向影响是可以提高个人影响力,文档写得越好,看的人就越多,后面慢慢的,大家有问题就会直接来问你,对于一些不了解你们团队的人,对你们团队的第一印象就从你开始了