希奇!博客栈

All Public Posts / 公开文章

from Riley 的隨筆

#cheatsheet

昨天我發了一則圖片博客 2024 年 3 月 @上海臨港,然後轉發到 Mastodon:

發現圖片似乎無法正確被預覽,估計是 JSON-LD 出現了問題。

今天去看了下 Writefreely 的源碼(Commit 427f4980b91db855fcd47ef9811c87aaf64e946e),發現在 posts.go 裏面,圖片貌似是利用正則表達式檢測鏈接實現的,而該正則表達式被定義爲:

var imageURLRegex = regexp.MustCompile(`(?i)[^ ]+\.(gif|png|jpg|jpeg|image)$`)

我的圖片後綴是 .avif,所以沒有被檢測爲圖片,只要改成 .image 就可以正常設置封面了!

 
阅读更多

from Riley 的隨筆

#foto

把 16 號線坐穿去了臨港,拍了一卷 120(8 張)福馬 100,看洗出來的結果才發現有一張忘記開蓋了。

在海邊有一條大壩攔着,放假的時候來看海的人也不少:

在東海大橋旁邊可以看到三個大風車,旁邊的樹只剩下樹枝了:

 
阅读更多

from 汏啲菘癙βèň菿傷

注:本文于2024-01-21首发于https://v2ex.com/t/1010618

SMTP 协议

具体的协议本身就不多介绍了,各位可以参考维基百科: https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

这里只指出一个重点:SMTP 将电邮区分为 Envelope 和 Data 两部分。通常我们在邮件客户端里见到的所有东西都属于 DATA ,包括 From:和 To:字段(也就是我们通常见到的收件人发件人)。然而所谓 Envelope 也有 MAIL FROM 和 RECP TO 数据,并且这二者和 DATA 里的 FROM/TO 一般并不一致!下文将详细展开。

Agents

现代 SMTP 把一封电邮送达的过程中的处理程序分为很多 Agent:

  • MUA: Mail user agent ,也就是所谓的邮件客户端譬如 Thunderbird 。在用 Webmail 的情况下其实你看到的网页就是 MUA 。
  • MSA: Mail submission agent ,是邮件服务提供商向用户提供的第一站,也就是邮件客户端里常说的“SMTP 服务器”。
  • MTA: Mail transfer agent ,可以中转( relay )邮件。
  • MDA: Mail deliver agent ,是邮件目标信箱的服务器。用户 MUA 可以联系它来取走邮件( POP3 协议)。

一个标准送达流程是:

MUA –> MSA –> MTA –> ... –> MTA –> MDA –> MUA

除了最后 MDA 到 MUA 以外,其实所有 agent 之间都通过 SMTP 协议联系。因此协议的行为其实因为 agent 的不同而有产生了区别:

MUA –> MSA:

可以理解为邮件进入互联网的第一站。MSA 负责验证邮件的真实性( Authentication ),也就是验证对应的 MUA 确实有权利发送这封邮件。通常这里会用到 SMTP Auth 来实现,也就是邮件服务商向用户要求一组用户名和密码。以及,MSA 会对电子邮件进行 DKIM 签名。

MSA –> MTA, MTA –> MTA, MTA –> MDA:

在邮件 relay 的过程中,这三者其实是等价的(也就是说存在 MSA 直接联系到 MDA 的情况。如果邮件再同一个服务商内中转,譬如 gmail 发送给 gmail ,那甚至此时 MSA 和 MDA 可以是同一个程序)。接受邮件的 Agent 也会检查送来邮件 Agent 的真实性,但并不是通过用户名和密码(下文会详细描述)。

值得注意的是,在所有的这些 Agent 中,程序是通过 Envelope 的 MAIL FROM 和 RECP TO 来决定如何邮件的来龙去脉的。DATA 里的 FROM 和 TO 并不决定邮件的去向。我们下面分开讨论。

MAIL FROM

通常来说,除了 MUA 以外,所有的 Agent 都会将 Mail From 设置成一个自己控制的值。举一个具体的例子,我拥有的 c7.io 域名配置了 CF 的 mail forward ,也就是发送给任何 [email protected] 的电邮都会被转发到我的 gmail 邮箱。

那么,如果一个 outlook.com 信箱向 [email protected] 发邮件,信件会如此传递:

  • outlook MSA 向 c7.io MTA (也就是 CF 的 MTA )送邮件,Mail From 是 [email protected] (注意哦这里并不是发件人,而是 outlook 自己生成的一个 identifier )

  • c7.io MTA 向 gmail MDA 送邮件,Mail From 是 [email protected] (此处就变成 c7.io 了)

可见,MAIL FROM 每次都会被改变,而且其中 identification 仍然能 uniquely identify 对应的这封电子邮件。这么做的目的是允许邮件服务商对 bounce-back 的邮件做额外的处理,并对接下来 Anti spam 的协议提供了机会。

RECP TO

既然说到了 MAIL FROM 就提一下 RECP TO 。这里和 spam 没什么关系,RECP TO 一般来说和 DATA 里的 TO+CC 一致,除非有 bcc 的情况。如果是 bcc 那么目标邮件地址不会存在于 DATA 中(所以才叫 blind ),只会出现在 RECP TO 里。

Anti spam

SMTP 协议本身设计的时候并没怎么考虑到 SPAM 的问题。所以协议本身有很多补丁。上面已经说过 MUA 到 MSA 时 MSA 会检查用户的用户名和密码,并且会很显然地检查 DATA 里的 FROM 字段确保这个登录进来的用户有权利以这个 FROM 的身份发邮件。然而在 MSA ,MTA 和 MDA 交流的过程中,大家都是不同服务商等价的程序,因此不存在谁事先在另外一方设置密码的可能性。所以,SPF 和 DKIM 就出现了。

SPF

https://en.wikipedia.org/wiki/Sender_Policy_Framework

当邮件在 MSA ,MTA 和 MDA 之间传输时,SPF 是一个很简单明了的协议。接收方会去 query 发送方域名的 SPF 字段。这个字段会指明哪些 IP 是这个域名允许的 sender 。譬如,当 c7.io MTA 向 gmail MDA 发邮件时,gmail 服务器会 query 到 c7.io 拥有 SPF record:v=spf1 include:_spf.mx.cloudflare.net ~all 。那么如果送邮件来的 IP 并不属于 mx.cloudflare.net ,那就 fail 了 SPF 。

DKIM

https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail

SPF 只关注每个 agent 前一跳的身份,却并不能阻止一个恶意的 MTA 伪造邮件。所以出现了 DKIM 。当一封邮件进入到每一个 Agent 时( MUA 除外),这个 Agent 都会对邮件的数个 Header 和 Body (都处于 DATA 字段)进行签名并将签名内容也放在 DATA 字段里。Agent 签名会使用一个私钥,而其对应的公钥会在对应的域名的 dkim 记录里公布。从 DKIM 的精神来看,这个协议的目的是为了验证 DATA 中描述的邮件没有在传输中被篡改,也就是说,MSA 生成的 DKIM 签名是最有价值的。但实践中,似乎每一个 agent 插入到签名都会被接收者验证。

举个具体的例子:还是 outlook->c7.io->gmail ,outlook MSA 会插入一个用 outlook 私钥签字的签名。当 c7.io MTA 收到后,它会去 query outlook.com 的 DKIM record ,也就是 outlook 的公钥,并且用它来验证签名是否有效。然后 c7.io MTA 也会将现有的 DATA 再一次用 c7.io 的私钥签名。当 gmail MDA 收到邮件后,它会 query both outlook and c7.io 的公钥(譬如 k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDckJFiBtn29uLex8LM2DG4zvZ9doM9v8veISK5rAoS2yU517rqZN/gYGwhKVuvfmp86OJGKG2Z6SQG9JmcNQ7rGiVE6X99M71hm449ShkF29hG65lI9sFpjf/67bjnQcgwwj6q4aNKb9Rh3zc/gV4jtz+vfzaMTTcAdZbd8hKX3wIDAQAB ),然后验证两个签名是否都有效。一旦发现签名错误,就是 DKIM fail 。

DMARC

https://en.wikipedia.org/wiki/DMARC

DMARC 的目的是告诉 Agent ,如果 SPF 或者 DKIM fail 了,该如何处理这封邮件。DMARC 也存在于域名 DNS 记录中。DMARC 可以要求 agent 继续放行电邮(可能不会被遵守),但更通常是要求 agent 把邮件设为 spam ,并通知某个指定的地址。

其它

很多 Agent 会增加别的验证。譬如 Gmail 要求所有来信的 IP 的 reverse DNS 和其 MAIL FROM 的域名必须对应。这似乎和 SPF 正好是镜像。

用自己的域名收发邮件

总结上面的内容,如果想用自己的域名收发邮件,需要做到:

  • 发邮件

需要正确配置 SPF ,DKIM ,DMARC 不是必须的但是推荐。并且要和一个拥有对应 DKIM 私钥的 MSA 配合使用(这也是为什么现代不通过一个 mail relay (譬如 AWS SES ,Mailgun)直接发送一封邮件如此之难)。

  • 收邮件

仅需要配置域名的 MX ,指向 MDA 。一般来说大家都是用第三方的服务,所以 MX 指向第三方的服务器就行。

总结

SMTP 是一个典型的设计时没有考虑周全从而不断打补丁的例子。目前至少 Gmail 和 Outlook 都提供了”View Original”的功能,可以详细看到邮件原始的 DATA 部分。里面都会详细描述每一个 MTA 所插入的内容,包括 Agent 得到的 Envelope 的地址,其所做的 SPF ,DKIM 检查,和新的 DKIM 签名。大家可以去自己的邮箱里看看,和文章的内容对照一下。

本文在某些细节上讲的比较粗略,因为某些复杂的地方很难用白话语言说清楚。我希望这篇文章能起到一个提纲的作用。具体生产中如果遇到了问题还是要去读协议标准。

#email #spf #dkim #dmarc #antispam

 
阅读更多

from 汏啲菘癙βèň菿傷

在Sora刚刚推出的今天,有人认为未来已来,有人认为世界终了。但不论如何,我相信大家都能在Fediverse里找到属于自己的空间。

一封给Fediverse的情书

我从一年前创办了自己的长毛象实例 希奇! 之后,就一直很关注Fediverse,中文名“联邦宇宙”的生态。长毛象(Mastodon)是运行在Fediverse之上的一个微博实例,但我更喜欢经由对于它的使用和管理窥探更加底层的Fediverse的原理。一年下来,我对Fediverse的信心从未如此强烈。我相信这是互联网的未来。

Fediverse是什么

Fediverse其实是人们对于一个基于ActivityPub协议构建的通信网络的昵称。其灵魂,ActivityPub协议是W3C标准化的一种去中心化通信协议。ActivityPub的核心非常简单,就是在现代密码学技术的基础上建立一个点对点的可信通信。当一个用户第一次出现并广播其存在后,就不可能再有别人再能够使用这个身份,而这一切都不需要一个传统的中心化服务(身份服务器)的存在。

在这样可信通信的基础上,ActivityPub规定了一系列的信息(payload)格式,从而让用户更加方便地分享文字、媒体以及元数据。那么更进一步,有大量实现了ActivityPub的程序可以供大家使用,譬如长毛象(Mastodon)、Misskey(类似于Facebook)、Pleroma、Firebird等等。这些程序帮助用户来管理身份,也就是他们的密码学公私钥,并提供更加友好的用户界面,从而在这个去中心化网络上实现传统互联网产品的用户体验(用户名/密码登录,账号管理,信息导入导出)。Fediverse就是由这些程序搭建的实例(instances)所组成的网络。

Fediverse(联邦宇宙)这个名字正巧妙在它包含了这种通信方式的两种特性:一方面,毫无疑问这不是一个传统的中心化的网络。这里没有一个中心化的服务器凌驾于所有人之上。另一方面,它又不同于完全P2P的通信网络,它并不要求每一个用户以一种原子化的身份管理一切,而是让每一个实例成为网络中的节点。一个实例对于它的用户具有管理的权威,但反过来说由于互联网上实例多如繁星,用户对实例也有自由选择的权力。

这种介于中心化和完全去中心化之间的方案既对用户提供了轻松容易的体验,也保证了用户的权力不受到实例的侵蚀。

Fediverse像什么

说了这么多枯燥的,我觉得还是想象一下它像什么比较有趣:

ActivityPub的直译:动感酒吧!

说真的,我觉得酒吧(或者说酒吧一条街)就是Fediverse最完美的类比。具体来说,每一个实例就是一个个酒吧,它们互不隶属,甚至可以说存在竞争关系。不同酒吧有着不同的装修、人群和规章制度,从而吸引着兴趣相投的顾客们。但顾客可以自由出入任意酒吧,也自然会选择在喜欢的酒吧多呆一阵子,慢慢地和酒吧的氛围相辅相成,形成一个独特的社群。总的来说,这一切都和现实生活一样自由随意:顾客能够在这条街上接触到所有的信息,遇到各色人群,同时有选择自己最舒服环境的权力。这也是为什么我觉得Fediverse会是互联网的未来,它模拟了现实生活中美好的部分。(中心化的互联网模型如果来到现世中,那是多么1984的画面呐?)

而且这样自由的模型并不是空想。实际上,互联网的基石——BGP协议和Fediverse无比相似。在互联网协议(是的,互联网之所以能联通全球,就是因为有一套标准协议)所描绘的画面中,每一个接入网络的实体被称作AS(自治系统)。AS通过BGP向外部广播它的存在,并指导别的AS将目的是自己的信息发送过来。AS的另一个名字又叫做ISP(网络服务提供商),我们用户想上网只用和它们打交道就行。这和上面描述的Fediverse简直一模一样有没有?互联网的成功很大部分是因为它不受任何单一实体控制,而终端用户(每一个上网的人)又不用了解所有的技术细节。那同样的道理,Fediverse怎么会不成为未来的互联网标准呢?

Fediverse缺点又是什么呢

正在撰写这篇文章的时候,Fediverse经历了一场spam风暴。而不同实例的应对方式千差万别。有的实例事先就做好了Anti-spam的逻辑,完全没有受到任何影响;有的实例站长反应迅速,在spam刚刚开始的时候就采取了相应的措施删除了所有无效信息。但也有的实例因为不作为,成为了spam发酵的摇篮影响了整个Fediverse,最终被别的实例所封杀。

Fediverse由于其去中心化的本质,每个最终用户的体验取决于它所在的实例的水平。按常理来说,实例的运营方应当都是懂得“能力越大,责任越大”的道理,选择运营一个实例那就应当付出精力和技术去保证它的正常运作。但事实上任何人都可以很随便地搭建一个实例,而且所用的程序都是开源的在用户看来似乎也没什么区别。因此用户不太可能具有短期内分辨实例质量的能力。在遇到不良管理的实例后会有很糟糕的体验。

前一阵子长毛象公布了一系列安全补丁,其中之一因为涉及到身份伪造,非常紧急,被官方以不同的渠道提前通知。但直到今天,仍有不少实例没有更新,其中不乏个别大站。这让其用户暴露在了危险之中,但用户可能还并不知情。

当然,这些问题本质上并不“新”。Spamming,安全漏洞,都是信息行业的老生常谈了。工业界也都有成熟的解决方案。因此,这些问题其实并不危机Fediverse的本质。相反,在经历过重大打击后,我觉得Fediverse能以比传统平台更快的速度重新成长恢复。野火烧不尽,春风吹又生。

为什么我认为Fediverse是未来

其实这个问题上面已经回答过了。简言之,它既不受单一实体的控制,又不把最终用户暴露在复杂的技术细节当中。

我想我们已经不用讨论去中心化之于中心化的优势,twitter就是个很好的反例。同时,不同于现在已经烂尾的,纯粹去中心化,不存在“实例”概念的nostr协议,Fediverse并不期待每一个用户都是nerd和黑客。它通过联邦每一个实例,而不是每一个用户,实现了优秀的用户体验。Fediverse其实对于我们并不陌生,因为它只是模拟了现实生活中的一个方面而已。

也许现有的Fediverse程序(长毛象,Misskey等等)仍有很大的进步空间,也许在未来这些程序都会被淘汰。但Fediverse不会。我希望大家都通过这篇文章了解到这么一个优美且有未来感的协议,在其中找到属于你自己的一片空间。

ps. 如果你还没有任何Fediverse的经验,欢迎来我的长毛象实例,希奇!来玩。本实例还附带了希奇!博客栈,同样也接入了Fediverse,也是本文所在的地方。

#fediverse #联邦宇宙

 
阅读更多

from 汏啲菘癙βèň菿傷

本文于2022-10-29首发于 https://v2ex.com/t/890875 ,关于贫困线那一段的收入和支出数字,如果您觉得过高请将所有的钱数减半。文章整体结论和论证结构不变。

注:本文主要是一个北美码农在评论北美 it 行业,并不一定普适,只是借用一下 V2EX 当个人博客发表一下个人的小小想法。

马后炮

最近半年互联网绷得厉害,股票崩盘,收入骤减,pip 裁员都接踵而至。我虽然之前隐约有过一些危机感,但是本质上仍然是平庸的受打击的一员。本文作为一篇马后炮,想总结一下这一段时间的思考。虽然是马后炮,但我还是觉得这篇文章有一定的意义:很多事情发生之前会觉得有太多可能难以预测,但是发生之后其中的因果关系环环相扣立刻会变得非常明显;马后炮可以总结这些事情的规律,有助于提高人省的——经验。

贫困线

北美码农一个知名的 meme 就是超高的贫困线。所谓一个家庭收入得超过 30 ,40 万美金才能勉强脱困这个样子。一开始听到这种说法的时候我将其理解成为一种中国人互相攀比的嘲讽,不过仔细想想,这是不是也可以理解为美元的局部性贬值?请听我详解:

即便是美国比较发达的地区,一般家庭中位收入也就在十几万美元。而常见的码农家庭动辄 3 ,40 万的收入远远超过了美国平均水平。但是为啥还有人一直嚷嚷着手头拮据、没有闲钱呢?如果暂时把码农的收入换成一种别的货币,比如一年 30 万码农币,然后再只看互联网行业聚集的地区,比如湾区,就会发现这巴掌大的地方有十几万人(根据大厂员工数保守估计)一年能挣这么多,更别说其中还有相当数量的高级码农一年能拿 50+码农币。那第一个直觉上的反应就是码农币可能不太值钱的样子。再看看湾区刚需的消费,比如房子、吃喝玩乐,其价格也更适合用码农币而不是美金来描述( i.e. 一个两千尺的 3b 小黑屋在美国一般发达地区就大几十万美金,湾区要 200 万码农币;两个人去一趟高级餐厅在别的地方一般来说 100 美金,在湾区一般需要 300-400 码农币)。假如按照这样的比例把码农币 3:1 换算成美金,是不是顿时发现其实码农贫困线也不是那么高了!

当然,这只是一个不严谨的类比。码农币只要离开了互联网行业聚集的地区就能 1:1 兑换成美元。但是因为这些地方的生活成本是如此的高昂,支付完生活必需的开销之外其实没有多少闲钱可以花在地域性不强的这些比较“划算”的地方。所以请继续听我掰扯。

跟随这个思路一个明显的结论就是,一个收入在一个地方算不算高,并不能看绝对的数字,而是看这个收入在这个地区的分位数。这也许就能解释码农高工资和“贫穷”看似矛盾的统一了。三四十万的收入确实很高,但是在码农圈也确实稀松平常。想在互联网中心过上想象中的“有钱人的日子”,就得挣到有钱人的分位数,比如在湾区估计要接近 1m 码农币。

系统性风险

如果忽略掉资本的流动性,那码农币也好美金也罢其实无所谓,反正随着工作经验和能力的增长收入也会增加的,就算是看分位数,一个码农的收入也是会一直提高的。只要努力,好日子总会来的。

然而这个流动性是不能忽略的。同样的美金,在湾区是码农币,跑到别的地方就变回美金,这必然会导致资本向外流动的趋势。那是什么在聚拢资本呢?是互联网行业的投资方。(而且各位看官请记住互联网行业!=IT 行业,这两个行业的关系我下文会再提到。)

过去的十年,互联网行业引领了全球的创新,毫无疑问是资本投资的最佳目标。即便疫情之前互联网的颓势就已经有些显现,在疫情期间美联储大水漫灌下这个颓势被完全逆转,毕竟互联网仍然是世界最有创新和机会的地方( next big thing 的主要 candidate AI 和 VR/AR 两个方向感觉这么多年没有什么好的产品落地)。

但是,放水总会结束,退潮后问题就开始暴露。比如今年的光景,资本的涌入突然减缓了会发生什么呢?不再有那么多人愿意将美金作为码农币投给互联网,那码农币的供给就会突然减少。这可以等价于码农币的“通货紧缩“。但是以美元来锚定的话,就是用码农币定价的资产的贬值。

用大白话来说,就是一个地区某个行业的收入实在是远高于别的行业,那这个地区就会慢慢地只剩下这个行业。当这个行业不再吸引资本,那整个地区就会衰落。美国目前并没有第二个行业与之类似,别的行业要么本来就不热,要么就资本掌握在少数人手里(高分位数,并不影响一个地区的平均收入)。所以这就是互联网聚集的地区特有的系统性风险。现在风险正在变为危机。

小确幸

时代的浪潮,资本的游戏,跟我们有什么关系呢?作为一个普通人,收入和物价双下降最大的问题在于你的房贷,因为你买房子贷款的时候一个重要 assumption 就是你的收入可以持续到贷款还清。所以很不幸,单纯的独善其身、相信有努力就有收获,在无情的历史的进程面前什么都不算。这些年发生的这么多事,已经一次再次地告诉我们只关注自己一亩三分地的小确幸心态不可取。人必须要有一定的战略眼光才能把握住机会,或者至少逃离危机的旋涡。

初心

当然所有的黑暗后面都会有黎明,危机中也充满了机遇。记得刚才说的互联网行业!=IT 吧?互联网只是 IT 中一个特殊的产品,就算它不再吸引资本,IT 永远是全球各行各业的刚需。过去的这些年,非互联网的 IT 公司其实生存艰难,因为薪水上他们根本竞争不过互联网公司,所以没有办法做出最好的产品(过去这些年传统 it 公司做的产品是不是都和屎一样?)。所以现在反而也许是普通 IT 行业的契机。在经济环境回暖后,会不会在这些公司中诞生出 next big thing 呢?

同样的道理,这也是很多”白领“行业的契机。所谓的白领行业就是和码农类似,需要大量行业人才脑力劳动的公司。在互联网大潮前各个行业百花齐放,各个方向都有创新。虽然待遇有高有低但都在一个数量级。如果这个现象回归,那其实对于经济的 diversity 是好事。

最重要的,是我们自己的初心。有多少朋友明明有自己喜欢的方向却因为互联网的火爆捏着鼻子转了码;或者就算本身就喜欢计算机,但得在大厂每天忍受 crud 的屎山?如果行业的 diversity 复苏,那每个人就可以追寻自己真正喜欢的东西。行业没有高低贵贱这句话听起来是虚伪的政治正确,可我希望这梦想成真,打破码农这金手铐。毕竟只有做自己喜欢的事情,才能找到世间最宝贵的东西:快乐。

ps. 本文讨论的思路也是我搬来尔湾的部分原因,但尔湾的好远非贫瘠的语言所能描述。欢迎大家来尔湾看看!

 
阅读更多

from 汏啲菘癙βèň菿傷

注:本文于2023-02-03首发于https://v2ex.com/t/912894

最近很粉联邦化宇宙的概念,就搭建了一个自己的 Mastodon 实例:希奇!( https://c7.io/ )。顺别也写下这篇文章聊聊我对 Mastodon/Fediverse 的看法,当作是开张大吉😄。

现有的社交平台,比如微博和 twitter ,就像一片信息海,而我们每个人都是一条鱼。我们在这片广袤的海洋中可以找到志同道合的朋友,加入感兴趣的话题(鱼群)。但是,有的时候也会觉得这片海太吵闹。而在联邦化宇宙里,蔚蓝大海仍然存在,海中却出现了不同风格的岛屿。这些岛屿,就是一个个 Mastodon 实例。这些岛屿给我们鱼们一个上岸的选择。上岸的岛会被我们称之为“家”。

如果说上面说的过于抽象,大家都玩过动物森友会吧?每个 Mastodon 实例就是动森里的岛,也就是你的家。岛上的居民们就是居住在同一个实例的朋友们。但我们每个人也有坐飞机去别人的岛的自由。在联邦宇宙里,每一片岛都是独立的,却又紧密相连。

Mastodon 官方 github 上的一张图就表达了这个概念(我是在写完了这篇文章后看到这幅图的,只能说“岛”这个概念真的是太形象了):

这正是联邦宇宙的神奇之处:我觉得我们并不是要抛弃现有的社交网络模式,但是我们在网络中也应该有个温馨的可以称之为家的角落。这里是我们的舒适圈。关上家门我们可以自由自在地碎碎念,打开家门又可以跃入海洋畅游四方。

希奇!希望成为这样一个安静的角落。这里没有预设的话题和交流方式。我们鼓励每个人以自己的方式探索联邦化宇宙。你可以在希奇!自言自语,完全忽略世界的纷扰;也可以去关注别的实例的嘟友们和他们互动;抑或是社恐地什么都不说只默默关注别的联邦话宇宙里的账号(这样也会对本实例有所贡献!)。而最棒的地方在于你可以在这几种模式中随意切换。Mastodon 提供非常灵活的嘟文可见范围和关注控制。你可以自由选择消息是否进入公共信息流(大海),或者是不是只有你批准的关注者才能看到你的小情绪。

此外,我对联邦宇宙的喜爱还有一个原因,那就是它并不是完全的 zero trust 式的去中心化(比如 nostr )。完全的去中心化对每个节点的技术要求太高,这在本质上导致了整个网络的 resiliency 存在难以解决的矛盾。而联邦化已经有了很成功的例子:互联网。互联网基础架构中 AS 和 BGP 就是上面说的小岛和让这些岛屿相连的协议。换句话说,联邦模型允许在大海中形成自发聚集起来的,地基稳定的岛屿,之后上面也许就会就会慢慢出现新奇的壁画,独特的建筑和突破想象力的作物。这个思路在我之前的文章里也有所提及。这也是这个实例取名为“希奇!”的原因。

没有鱼的岛屿只能是荒岛。在研究 Mastodon 的这一阵子里我发现在联邦宇宙中一个实例的质量是一个 positive feedback loop ,也就是有趣、热闹抑或是有深度的内容会继续吸引同类的内容。所以欢迎大家加入希奇一起来玩

 
阅读更多

from 汏啲菘癙βèň菿傷

注:本文于 2020-04-06首发于https://v2ex.com/t/659743

因为最近家里的普通无线路由器接近罢工边缘,研究了一些关于 AP,Wifi 组网的知识,记录一下。

名词

  • AP(Access point): 可以简单理解为将 Ethernet 转换为 Wifi 的设备。一个网络里可以有多个 AP 来覆盖较大的面积。

  • Controller(或者叫 AC): 控制 AP/Gateway 的软硬件。可能集成在单独的 AP/Gateway 里只负责控制单独的这一台设备,也有可能有一个统一的服务器管理所有的设备。

  • Gateway(网关): 在家用网络的概念里是连接 WAN 和 LAN 的设备,负责路由 /防火墙功能。

  • Switch(交换机): 传统概念里 Switch 是一个纯粹的二层设备,但是现在 Managed Switch 是可以主动配置的,最主要的用途就是 VLAN 。

  • Roaming(漫游): 在存在多个 AP 的情况下客户自动在不同 AP 中迁徙,其中:

    • 被动漫游:AP 在发现客户信号弱的情况下主动将客户踢下线,以此希望客户连接到更强信号的 AP 。在切换的过程中 wifi 信号会断开一下,TCP 会中断。
    • 主动漫游(又叫无缝漫游):客户在 Controller 的协助下主动选择信号更好的 AP 。实践中需要通信双方都支持 802.11k/v/r 协议来提供比被动漫游更好的体验,也就是连接不断。需要一个中央 Controller 。
  • Uplink(回程):每一个 AP 如何连接到 LAN 。分为无线回程和有线回程。

  • Mesh: 一个 marketing 词汇(而不是标准)。AP 和 AP 之间通过无线,而不是 Switch 来连接(无线回程)。有一个主 AP 接入 LAN 即可。mesh 和传统的 Wifi Extender 相比一是一般使用专门的信道和 uplink 通讯所以本身不会减速,二是自动处理了很多 AP 共存的情况下 AP 之间如何互相通信和认证的问题,也提供一个节点下线了之后剩余节点自动重组。

    注意 Mesh != Roaming,mesh 这个概念一开始特指无线回程提供的 roaming 。现在也有了有线回程的 Mesh,这个和传统的非 mesh AP 模型的唯一区别就是系统里不存在专门的 Controller 。应该是 Mesh 中的某一台设备充当了 controller,或者比较垃圾的 mesh 实现中不存在中央 controller (实现不了无缝漫游,aka 骗钱).

  • Wifi6: 802.11ax,比 802.11ac 主要的提升在于优化了 MIMO 从而提升了带宽(就像手机的 5G vs 4G 一样),另外未来的 802.11ax 可能会引入 6GHz 频段。并没有更改链路层及以上的协议。

常见的家用无线路由器就是 Gateway + Controller + Switch + AP 的组合。而工业级的 Wifi 部署基本都是不同设备各司其职,特别是中央 Controller 控制所有的设备。

为什么要 DIY 组网

传统的家用路由器在宣传上一般只强调带宽和信号强度,然而 Wifi 的体验更大程度上决定于一个 AP 能带多少台设备。这直接取决于设备的 CPU/内存 /Offload 能力。当连接的设备数超过了 AP 的处理能力时,频繁的断线 /断流就会发生。因此购买家用路由器要做非常多的功课才能避免踩坑。

此外,今后会不可避免地采用 Roaming 方案。不同品牌的路由器对 Roaming/Mesh 的支持参差不齐,扩充的时候又要做功课。

对于家里有 NAS/服务器的同学来说,这些设备的处理能力完全可以承担 Gateway 和 Controller 的职责。服务器一般还有多个网口可以做链路聚合和网桥,基本上也取代了 Managed Switch,因此实际上只要把钱花在 AP 上即可。

我的方案

因为家里有一个 x86 NAS,跑一个软路由 /Controller 性能完全够用,因此只需要购买纯 AP 设备。

暂时不考虑 wifi6,因为价格太贵了。Wifi6 应该是 Drop-in replacement 所以以后再升级也来得及。

考虑到以后要支持无缝 wifi 漫游所以需要一个中央 controller 。另外我不是很信任无线回程,所以不考虑 mesh (有线回程的 mesh 我一直觉得是莫名其妙的产品,照顾不会配 controller 的傻瓜用户?)。

最后选择了 Ubiquiti 的 Unifi 系列 AP 。他们家的产品一直宣传自己是工业级,网上的评价也都反映在连接了大量客户的情况下稳如狗。Unifi 系列属于非常简单的 AP,没有任何别的功能,有一种钱完全花在瓶颈上的感觉。Unifi 旗下常见的有 AC-LITE, AC-PRO 和 AC-HD 三款。AC-LITE 在带宽上比较捉急,PRO 则各方面比较均衡。HD 因为价格太贵没有仔细研究。我打算 LITE 和 PRO 混合部署,因为大部分 wifi 客户都只是随便刷刷视频网站不需要多大带宽,用 LITE 能省些钱。

ps. 网上有人批判 ubiquiti controller 软件不方便,因为他在每台电脑上都安装了 controller 软件然后发现配置是不能同步的。对此我觉得实在是冤枉了 ubnt 。人家 controller 软件设计的目的是跑在一个服务器上的,所有的电脑通过访问这个服务器来配置网络。理论上一个网络中之应该有 1 个 controller 。ubiquiti 也卖 controller 硬件,不习惯一台电脑充当服务器这个思维的话可以单独购买。

备选方案

Orbi, Velop, Google Wifi 都是口碑很好的选择。

好像这三者都结合了 Gateway 和 Controller,并且都是无线 mesh,好处是简单易用。

Google Wifi 的 Controller 和 Google 服务深度整合。依赖本地网络之外的服务在我看来是一个缺点。

不推荐的方案

用市售路由器刷 openwrt 做 ap 。因为:

  1. 路由器带客户设备的数量仍然是个迷。
  2. 没有中央 controller,漫游体验不好。

感谢

本文绝大多数信息来自 https://www.smallnetbuilder.com/wireless/

比起站内诸多大神,我对 wifi 组网的研究刚刚起步,还请多多指教。

 
阅读更多

from Corgi Dad's Blog

这篇感觉像命题作文一样,因为大松鼠让我测试一下这个希奇!的博客站。我有点惊讶他没有用WordPress,不过新奇的东西总是更能激发我的兴奋。昨天晚上下班从Fields Corner地铁站走回家路上想我这篇要写什么呢?我感觉最近好像有很多很多思绪每时每刻都萦绕在我脑海里,但是却一直没有时间去沉淀下来。这篇就来做这样一件事吧。

上周在旧金山湾区出差,也见了一些朋友,吃了杨国福麻辣烫。每次去加州都要感叹那天气真是太好了,出门不需要穿上三磅重的羽绒服就是很爽。而这次我吃完麻辣烫之后觉得这物价还真是太贵了 —— 一碗麻辣烫竟然要$20多,店内装潢却极尽简陋,唯一的服务便是把那一碗麻辣烫端上来。吃过的朋友肯定也知道,麻辣烫这种毫无技术含量的食物,无非就是把顾客挑选的食材放到汤里煮一煮,就这竟然要$20多,真是令人感叹物价飞涨,湾区人傻钱多。

老王感叹说就连我都消费降级了。我之前可是买东西从来不看价格的人。确实,搬到波士顿几个月之后,我便开始非常在意日常消费流水。2021年10月刚搬来的几个月,我们租了一个市中心区域的一个高端公寓,同时还要负担圣何塞的房贷。在2022年4月圣何塞那边的房子卖掉之后,我在这边又买了一个很贵的公寓。2022年11月,我在Provincetown又买了一个用于做短租的公寓。一系列巨大的房产支出让我每个月几乎是入不敷出——两个房贷,两个物业费,以及水电网费等。

尤其是2023年1月的第一波大裁员,让我又在担心如果我被裁员,房贷该怎么还。其实我也不知道我在担心什么。就我的存款来说,付十几年房贷都没有问题。可能我就是本身特别缺少安全感的人,需要账户里的钱一直增长才好。可是每次消费都这样计较钱的得失,让我很不快乐。慢慢地,我开始怀念起2016年时刚搬到加州,刚开始工作,单着身租着小公寓的快乐时光。那时候每天都跟教主一起琢磨着周末去哪家米其林餐厅摘星。可现在呢,周中叫一份外卖都感觉自己浪费了很多钱,还吃的不好。然而自己却没有那样的行动力去计划好每天晚饭做什么吃什么。就这样在反复的自责和挣扎中消耗了精力,也消磨掉了生活中的一点点乐趣。

我也曾想着要卖掉那辆我几乎不怎么开的911,可是每次我都忍不下心来。有时候我感觉自己很浮浅,很物质主义,因为911能给我带来快乐,也让我自我感觉良好。有时候我想,我需要这辆车来证明什么吗?并不需要。但每次我坐进去启动引擎,嘴角总是浮起一点微笑。911对于我来说,就像是小孩童年时期最喜欢的玩具——可能不会再玩,但就算是放在那里留着,也是一种对自己的交待。那一点点微笑,非常来之不易。

于是我卖掉了那套很贵的公寓,搬到了稍微远一点的一个独立屋。搬进来之前把整个屋子的墙都粉刷了一遍,因为前屋主不知道为什么把整个房子刷成了非常鲜艳的颜色——客厅是橙色,卧室们五颜六色,荧光绿,天蓝等,实在是看不下去。小小的工程做了一些,现在住着也还算比较舒服。只是这个房子没有主卧,且需要很多TLC,大概100年的老房子。不同的部分都分别装修过,但是从来没有整体做一个大项目。

搬家之后刚开始有很多小项目都可以做。我第一次做了Ubiquit的家庭网络,并且设置了两个接入点。当自己从阁楼布置线缆到地下室的时候,还是比较有成就感的。Ubiquiti也不负众望,两个接入点目前非常稳定,NAS有线接入在交换机上。今天下午会把一个PoE摄像头布置起来。


最近这一个月也开始关心起室内设计。我发现很多现在习以为常的设计,原来是几十年前的经典。经典设计总是历久弥新。我在给圣何塞房子买家具的时候就直接看好了一个系列便买了全套——餐桌椅、茶几、床等。以我现在的眼光来看真是蠢。我看经典设计越多,便有越多特别好的想法。可是我也有点缺乏执行力了,因为我不知道现在买的家具,以后装修之后是不是还是会好看。

还有一项特别重要的设计是灯光。我以前总感觉,室内有顶灯就好了,只要足够亮。其实有层次的灯光可以改变整个空间的感觉。比如这个宜家的灯 EVEDAL。宜家通常是便宜、质量差的代名词,但是宜家有时候会与一些著名设计师合作,推出一些用料十足的东西。

这台灯是宜家第二贵的灯(最贵的是同系列的落地灯)。基座是真正的大理石;支撑杆是橡木;顶部是玻璃。整个感觉非常不错,手感、做工也非常好。


波士顿的冬天总是令人压抑,尤其是当早晨不见阳光,阴云密布的时候。最近正在联系几个装修公司,想把整个房子修理一下。大概是我找的人不对,Design-Build公司都不愿意接我的活,他们大多都做比较大的工程项目,比如50万美元起。有几个公司甚至都不回邮件。唯一一个来我家实地考察了的公司,过了三天也没有动静。这一系列的挫折令人非常沮丧。有时候我想,还不如我自己当GC (general contractor)呢,至少我到目前为止用过的几个合同工人都还算不错。或许这是更适合我的一种方式吧,毕竟我也算是控制欲特别强的人。

从加州回来之后就没有特别开心过。这些不靠谱的装修公司大概是一个原因吧。今天中午出去吃饭的时候,我想这个街区真的没有让我“感觉良好”,不像是我之前的街区。可是所有的东西都标好了价格——之前的街区的公寓就要$1.7M,再加每个月接近$700的物业费,$300的停车费,还没有院子。但是宏大的波士顿维多利亚风格街区就是让人感觉良好,走在外面就像是走在历史之中。我想我应该尽力在我自己的家中创建一个能让我感觉良好的空间,而具有艺术感的设计、家具便是法宝。

不管是什么街区,在城区总能看到一些令人悲伤的时刻。当然并不是因为自己的境遇悲伤,而是人性,社会,以及城市的状态。我并不是每天都能遇到坐城铁逃票的人,但是我每次看到这类行为,都十分痛恨。最近看到Schitt’s Creek中有一集Moira和John买二手车,Moira坚持不让卖家降价,因为她觉的自己还有“dignity”。可是为什么那些坐地铁都要逃票的人就毫无尊严?我并不觉的这是收入的问题——公交系统对低收入群体有非常慷慨的补贴。当我在站台上看到那对逃票的情侣互相拥抱取暖,我着实想不到答案。可能有些时候,人一旦迈出去某一步,就会突然间失去很多东西吧。

尽管早晨的时候还阴云密布,现在却已阳光普照,蓝天白云。我从窗户望出去,看到别人家的房子,看到光秃秃的大树,看到安静的街道。有时候人给自己施加的压力足以强大到令人忧郁且不自知——大多数是来源于外部,却被自身的经历和情绪机制放大到自己身上。我在想,我希望所有人都可以保持自己永远不希望失去的东西,比如属于每个人自己的特质。我在想,从2016年到现在,我失去了什么,我又得到了什么。我失去的,有没有我所珍惜的,我想拿回来的?我觉得我害怕变的太普通;我仍然想找回那些简单的快乐。可是转念一想,令我快乐的事情并没有走太远,而是繁杂的生活淹没了它们。有时候我太过于在意这些纷纷扰扰,反而让自己忽视了这些就在自己身边的宝藏。

2024年,我希望我可以发现它们,并保持着自己对生活的热爱,哪怕被繁杂迷住了双眼,因为生活总是值得的。

 
Read more...