通过 node 打 patch 破解 mac 应用

升级 macos mojove 后,各种蛋疼,一些应用也要重新安装了。
其中 SizeUp 这款工具也失效了,找破解版的时候发现了一篇2016年3月的文章。
照着流程操作,竟然到现在还有用,单字节爆破,简单粗暴的方法,我喜欢。

于是乎写成了 node 模块,方便自己和一些朋友使用。
有钱的支持正版,我这样的穷逼,自己写工具。。

使用 Symbol.match 优化正则匹配

如果想从 'uid: 123' 字符串中匹配出 123 我通常会 'uid: 123'.match(/uid: (\d+)/)[1]
但如果字符串不符合规范,正则会返回 null 导致 [1] 操作报错 Uncaught TypeError: Cannot read property '1' of null
所以我会 ('uid: null'.match(/uid: (\d+)/) || 0)[1] 来防止报错。

但这样很不优雅。

Express async 全局错误处理

之前两篇 Promise 错误处理其实已经描述了大部分场景下的错误捕获问题。
结合 async/await 可以获得很好的开发体验。
express 也可以使用 async/await 来提升开发体验,但必须 try/catch 所有 await 才行。
那么今天的课题就是如何优雅的在 express 中使用 async/await 来提升开发体验。

koa2 中的错误处理以及中间件设计原理

其实这不是一个问题,因为就 koa2 而言,他已经帮我做好了统一错误处理入口 app.onerror 方法。
我们只要覆盖这个方法,就可以统一处理包括 中间件,事件,流 等出现的错误。

但我们始终会看到 UnhandledPromiseRejectionWarning: 类型的错误。
当然,这不一定就是 koa 导致,有可能是其他异步未处理错误导致的,但这都不重要。
让我们来看看 koa 是如何处理全局错误的。