title: Weekly 2021-01-0x02description: [hackettyu’weekly]
1.1. Share
1.1.1. Python test 实践
https://pythonguidecn.readthedocs.io/zh/latest/writing/tests.html
1.1.2. Shopify 的 GraphQL API 设计指南
TLDR: Graphql 设计准则总结
- 规则一:永远先从更高的抽象层级进行设计,先考虑类型与类型之间的关系,再去考虑具体的字段。
- 规则二:永远不要在 API 中暴露不必要的实现细节。
- 规则三:围绕着业务背景重新思考你的 GraphQL API,切忌直接照搬数据库表结构、视觉稿或已有的 REST API。
- 规则四:永远记得在 GraphQL 中去掉一个字段要比新增一个字段困难的多。
- 规则五:绝大多数业务对象都应该集成自 Node 接口。
- 规则六:将同一类型中互相密切相关的几个字段单独抽出来作为子对象。
- 规则七:始终记得检查数组字段是否有必要支持分页。
- 规则八:尽可能直接返回关联对象本身而不是仅仅返回关联对象的 ID。
- 规则九:给字段起名时尽可能体现其在业务上的语义,而不是简单照搬数据库中的字段名。
- 规则十:使用自定义的标量类型,有助于更好地说明字段隐含的上下文。
- 规则十一:对于值可以被穷举的字段,尽可能使用枚举类型。
- 规则十二:GraphQL API 提供的应该是业务逻辑而非数据。尽可能把业务逻辑放在 API 中实现,而非任由各个客户端自行实现。
- 规则十三:记得同时提供原始字段与业务相关的计算字段。
- 规则十四: 根据真实的业务需要思考 GraphQL 类型支持哪些种类的操作。
- 规则十五: 设计 Mutation 很复杂,不能教条式地进行照搬。
- 规则十六:尽可能让 Mutation 支持批量操作。
- 规则十七: 使用形如 orderCancel 而不是 cancelOrder的命名风格来个 Mutation 命名。
- 规则十八: 仅将真的必填的字段在 Input 中设为必填。
- 规则十九:当 Input 类型比较复杂导致客户端进行验证过于复杂时,可以将之弱化成更通用的类型以便于由服务器进行验证。例如用 string 标量 替代 email 标量,然后在服务器端进行验证并将所有的错误提示一次性返回给客户端。
- 规则二十:当输入的格式可能有歧义而且客户端验证并不困难的时候,应该有限考虑使用强类型(例如 DateTime 优于 - string)。
- 规则二十一: 结构化 Mutation 的 Inpute 以减少重复,既是是以在类型层面上放宽对于某些字段的要求性约束为代价。
- 规则二十二: Mutation 的中应该包含一个标识业务层面错误的数组。
- 规则二十三:大多数的 Payload .字段都应该是可以为空的,除非确保其在错误的情况下也有返回值。
1.1.3. Node.js html 解析库 cheerio 中文文档
cheerio: https://github.com/cheeriojs/cheerio/wiki/Chinese-README
1.1.4. 有哪些因误译而长期被国人误解的概念与名词
zhihu: https://www.zhihu.com/question/22463701/answer/22004638
1.1.5. VSCode terminal 配置
vscode: https://code.visualstudio.com/docs/editor/integrated-terminal
@SEE: https://code.visualstudio.com/docs/editor/integrated-terminal#_terminal-keybindings
1.1.6. GraphQL(Facebook) VS APIJSON(Tencent)
github issue: https://github.com/Tencent/APIJSON/issues/2
一个突出的是 api 的聚合 一个突出的是表结构的聚合
1.1.7. 关于站立式办公
medium: https://medium.com/@xavieris/站立办公四个月的小结-6e281fd92c01
sspai: https://sspai.com/post/60581
1.1.8. GeoJSON
wikipedia: https://zh.wikipedia.org/wiki/GeoJSON
GeoJSON 支持在 Github raw 直接展示
1.1.9. AsahiLinux
github: https://github.com/AsahiLinux
Porting Linux to Apple Silicon macs
1.1.10. Lern Bash in Y minute
1.2. BLogs
1.2.1. linghao.io
- 程序员和软件工程师是一回事吗?
blog: https://linghao.io/posts/programming-vs-software-engineering
- Grow @ Google 02: 「能用就行」还远远不够
1.2.2. manjusaka.itscoder.com
- 云原生时代的几个爆论
blog: http://manjusaka.itscoder.com/posts/2020/12/31/fuck-the-cloud-native/#disqus_thread
1.2.3. jysperm.me
- 入手 MacBook Air (Apple Silicon)
1.3. Tools
编程字体:https://www.programmingfonts.org/
1.4. News
1.4.1. Touch fish
-
1.4.2. Super China book list
