是的,所有现代浏览器都假装自己是火狐

基本上 HTTP 客户端都会向服务器报告自己是什么,HTTP 标准(即 IETF RFC 7231)里面规定了这么一段:

A user agent SHOULD send a User-Agent field in each request unless specifically configured not to do so.

User-Agent = product *( RWS ( product / comment ) )

在我写这篇文章的时候,我用的浏览器 Mozilla Firefox 的“用户代理”字符串如下:

Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0
继续阅读“是的,所有现代浏览器都假装自己是火狐”

BSD 与 GPL:圣人与常人

有时候会看到这种言论:GPL 太邪恶了,一旦你用了 GPL 许可协议下的源码,你自己的修改就必须是 GPL 开源的。不像 BSD 或者 MIT —— 你可以随意修改代码,而且随意使用 —— 这才是真正的自由。

我觉得这就是 BSD 目前的生态不及 Linux 的原因之一 —— 得不到保障的自由终究是有限的。

GPL 给用户全部的自由,除了从此以后没有放弃自由的自由。而 BSD 给了用户全部的自由,就是不保障以后如何。BSD 协议正是 BSD 生态的阿喀琉斯之踵。还有,请读者不要误解,本文仅仅是谈许可协议带来的不同,不是谈操作系统设计哪个更好的。

继续阅读“BSD 与 GPL:圣人与常人”

Fedora 38 的帧指针

Fedora 项目最近打算更改编译选项,给几乎所有程序在加上帧指针(Frame Pointer)。我个人反对这一提案,不过当我知道这个提案的时候,这个提案已经通过了。我写这篇文章是为了让社区的朋友们理解 Fedora 作出这一决定的理由,并告诉读者为什么我不赞成这一提案。

继续阅读“Fedora 38 的帧指针”