2024.8月阅读:谁也成为不了中国的YouTube;NodeJS Best Practice
谁也成为不了中国的 YouTube#
https://www.ifanr.com/1350800
一篇 20 年的旧文了。YouTube 为何如此成功?中国能出现 YouTube 吗?
YouTube 的商业逻辑很简单:一个几乎不用交网费的视频网站。
为什么此前中国视频网站做 UGC(User Generated Content) 和 PUGC(Professional User Generated Content) 都失败了?因为服务器和带宽成本扛不住。
那么 B 站靠什么能抹平这 7 倍的成本增长还有赚呢?当然是靠「变味」咯
B 站目前为止还算「纯净」,能加广告的地方还有很多,...有一天能盈利应该是没问题
国内,运营商绝对强势,平台想发展用户,必须讨好每家运营商来保证用户访问速度。
国外,Google 绝对强势,你一个运营商访问 Google 都那么卡,等着用户换宽带吧。把运营商握在手中拿捏。
YouTube 就是个免宽带费用的百度网盘,豢养着无限只打字的猴子 (UGC/PUGC),等他们误打误撞成为莎士比亚,为 YouTube 和视频创作者带来高额商业价值。
Node.JS Best Practice#
https://github.com/goldbergyoni/nodebestpractices
包含了 Node 的 Project Architecture、Error Handling、Code Style、Testing、Production Phase 等方面。很全面,并且每一个 Best Practice 都有 TL;DR,读起来没有什么压力,已经了解的扫一眼就过去了。有兴趣可以继续阅读 Additional Reading,包括此 Practice 的代码示例,以及相关 links。
花了半个下午把前五节看完了,非常有帮助,其中也有不少部分确实是我们平时实践中总结出来的 Best Practice。
从中学到了不少新知识,比如
- Always do
return await
而不是直接返回一个 promise。可以避免 stacktrace 信息缺失 - Set NODE_ENV=production 可以给部分 packages 提升性能,甚至能 "3 times faster"
npm ci
clean install,会严格匹配 package-lock.json,确保生产时使用的代码和测试统一
pnpm 9.5.0 支持 Catalogs:workspace 中 packages 版本统一工具#
https://pnpm.io/catalogs
https://github.com/pnpm/pnpm/releases/tag/v9.5.0
在 pnpm-workspace.yaml
中定义 package 的版本后,在 workspace 的其他 package 中只需 "react": "catalog:"
就不用重复指定 package 版本了。
# pnpm-workspace.yaml
catalog:
react: ^18.3.1
// packages/example-app/package.json
{
"dependencies": {
"react": "catalog:"
}
}
有助于
- 给一个 MonoRepo 中的包统一版本,避免了版本分散在各个包中
- 升级包版本只需要改一行,而不是进每个包去改,还很容易漏
- less git merge conflicts
还可以指定多个 catalog,比如 react17
, react18
。
Extend Reading#
Postmortem of my 9 year journey at Google#
https://tinystruggles.com/posts/google_postmortem/
作者在 Google 工作了 9 年,做 SRE(Site Reliability Engineering)。用 SRE 的 Postmortem culture 写的一篇记录,也就是事后剖析。
这是个很清晰的事件回顾结构,包括 lessons learned; what went well; what went poorly; what could I have done differently.. 阅读起来效率也很高。
good part:
- tons of money
- world class skills in handling crises and debugging
- engineering skills, systems understands
- perks 额外福利
- ...
离职的原因:
- got tons of money, exceeded financial goals
- no longer interested in SRE, break her sleep
- want to start her own company
- 没有 head count,没办法 grow 她的团队
- ...
可以做得更好的?Done differently:
- 利用好 education reimbursements (e.g. take more stanford online courses)
- 如果一开始知道不喜欢 SRE 就应该尽早 shift
[!thoughts]
Online course 是一个换行业/岗位的好方式啊,之前还在想要做一个全新方向的内容,要如何 transfer。另,她的 Blog 使用的字体阅读起来很舒服,"Roboto Slab"。
Inside .git directory#
https://jvns.ca/blog/2024/01/26/inside-git/
或许你也好奇过 .git 里面都有些啥,这篇文章简短的介绍了一下 .git 目录下文件结构和内容。
比如当前的 HEAD
就是一个 .git/HEAD
文件,里面内容是 ref: refs/heads/main
,表示当前分支是 main
。
Minor Tips#
在 VSCode 打开 localhost web#
cmd/ctrl+shift+p
- Simple Browser: Show
比如我想在 VSCode 中直接看 localhost 的静态 Blog,非常方便。
限制是似乎不能访问其他网站,e.g. Google。
X/Twitter 高级搜索技巧#
https://midstarter.com/tech/65/
X 的搜索功能还是相当丰富的。from; to; since; until; -
; OR
...
X 的官方文档:https://developer.x.com/en/docs/x-api/v1/rules-and-filtering/search-operators