使用 Firefox PWA

Firefox 很久之前就停止支持 PWA 了,但现在 SPA 蓬勃发展,很多所谓的应用不过是网页套壳罢了, PWA 能够更简单的将网页安装为应用,比起要在系统里塞数个 Electron ,我觉得好很多。

机器与人

当 AI 将触手伸向人类引以为傲的艺术创作时,人类又一次陷入到类似当年机器大生产的时候。机器与人的对立似乎是近代才有的议题,人们认为,机器高超而稳定的工作能力,夺去在这些岗位上的人的工作,因而机器与人的矛盾产生,这是科技发展与人自身的矛盾。真的是这样吗?

自顶向下的 ACID

ACID ,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),只要你接触数据库总是逃不掉的。现在,我问你一个问题,如果现在数据库不提供 ACID 保证,你如何在应用程序层面实现 ACID 呢?

琢词雕句

本文是对遣词造句的一些浅薄研究,未来必定会长久更新。 中文不爱从句,因此复杂的从句要少用。凡可用从句的地方,都可拆成多个分句,并依前后逻辑缀连成一条长复句。但分句与分句间,逻辑不应该并列,并列的逻辑如若不靠连接词连接,则会显得突兀。但更好的办法是拆成两个句子,尤其是两个分句逻辑较长之时。换而言之,应避免逻辑复杂的较长分句,和结构复杂的较长复句。句子的复杂程度到达一定地步,就会严重阻碍人们的对其的理解。

对 Golang 的批评

最近在用 Golang ,感觉有很多槽点。王垠曾经对 Golang 做过一番批判,我自己用的时候也感觉到了很多问题,在此我严正批评一下 Golang 。 许多 Golang 的拥护者会称 Golang 是一门工程语言,他们有一种误解,即是工程问题是代码问题。但事实是,工程问题是一个现实的逻辑问题,而代码问题是代码的管理问题。 Golang 并没有解决很多逻辑问题,它是砍去了很多特性,比如说循环依赖,它觉得不好,砍了; try catch 机制;不好,砍了,泛型,不好,砍了,现在又偷工减料的加回来了。如果一个特性将会带来很多,一般的处理方法有两种,一种是引导人们更好的使用它,另一种是砍掉。Rust 选择了前者,而 Golang 则选择了后者。这固然是一种解决办法,但解决不了实际问题,更何况砍掉特性只会让语言的表达能力变弱,最终,语言会变得简陋而不是简单。

userChrome.js 的使用

userChrome.js 是 Firefox 的一种玩法,可以高度自定义 Firefox 的界面、样式、功能。虽然 XUL 很早就死掉了,但所幸 userChrome.js 仍然是可用的。需要注意的是, userChrome.js 是非正式且冷门的自定义玩法,常常随着 Firefox 的升级而失效,所以,你需要随时 Break 的准备。

NodeJs 上的大文件问题

大文件的读取与写入问题,一般使用流(stream)就可以很好的处理了。但大文件的问题并不单单是这样,如果仅仅是单纯的读取或写入,那么解决方案到此为止确实也就可以了。一旦涉及到读写组合,大文件问题并不是一个简单的读取与写入的问题,其问题的更广泛形式,是生产者和消费者问题。

琐碎备录

Makefile .PHONY 可以用来重复编译,本意是将对应的对象视为虚假,从而强制执行编译。 Joi joi.string().allow('').allow(null).empty('').optional() ,允许字符串为空。 pacman 以前记录过一遍,但太隐慝了,在此特意提出。 pacman -Ql <package-name> ,显示包内文件。