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#

https://stackoverflow.com/questions/37077591/how-do-i-open-a-browser-window-in-a-visual-studio-code-extension

  • 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

Comments