西西弗、等待屠宰的猪与自由的人

尼采高呼,“上帝已死”,打破了先前道德存在前提的假设。上帝之死是说明人类再不能相信这种宇宙秩序的方法,因为他们无法识别这种秩序是否真正存在。尼采认为“上帝已死”,不再相信一种客观而且普世地存在的道德法律,把每个个体都包括在内。

《卡拉马佐夫兄弟》一书中话说:“如果上帝不存在,什么事都将是容许的。”现在的社会,人们获得了史无前例的自由。而这种绝对道德观的失去,正是虚无主义的开端。

虚无与西西弗

虚无主义作为哲学意义,是怀疑主义的极致形式。它认为世界、生命(特别是人类)的存在是没有客观意义、目的以及可以理解的真相的。

加缪说,“真正严肃的哲学问题只有一个,那就是自杀。判断人值得活在世上吗?”加缪在他的作品《西西弗传说》中写到:国王西西弗傲慢地违抗诸神,结果被判罚永无休止地推一块巨石上山。但每次石头接近山顶,就会从他的手中滑落,然后又滚下去,所以他不得不艰难地返回,再重新开始。

在荷马史诗《奥德修记》中写到:“我看见西西弗正在遭受巨大痛苦,双手推动一块岩石,挣扎着用双臂和双脚,试图推动石头到山顶。但每次,当石头到达山顶,巨大的力量翻转石头,滚回起步的平地,于是他再次推石上坡,竭尽全力,汗如雨下,头顶尘土升腾”。

加缪问:如果我们发现生活其实就像西西弗的工作一样徒劳,如何回应?

这种虚无主义令世界上许许多多的哲学家尽其努力去找出重估人类基本价值的方法,寻找比基督教价值更深入的宇宙观。

等待屠宰的猪

存在主义(英语:Existentialism),是一个探讨人类生存意义的哲学非理性主义思潮。在萨特看来,三个单词的口号——“存在先于本质”(Existence precedes essence)便足以概括存在主义。

人类是生物化学的奴隶,大多数时候我们只是在听从我们的本能行事。但作为一个人,我根本没有预先被决定的本性。我的本性,要通过我选择去做什么来创造。当然,我可能会被我的生物性影响,或者被我所处的文化和个人背景等方面影响,但这些并不能合成一张用来制造我的完整蓝图。我总是先我自己一步,边前行,边构筑自身。

当人们阅读克尔凯郭尔论焦虑,加缪论反叛,萨特论自由,波伏娃论社会压迫,海德格尔论技术时,会觉得收获的知识总能为己所用,仿佛是近期才写的文章。时至今日,他们的哲学仍然很有价值,不是因为它们是对的或者错的,而是因为它们关注的是人生,因为它们挑战的是人类最重要的两个问题:我们是谁?和我们该怎么做?

当一头猪发现它的“至高意义”是被屠宰,成为食物时,他是否应该继续生存下去?根据虚无主义,生命是无意义的,是荒诞的,是矛盾的、失序的状态。

于是,萨特说:“存在先于本质”。一个人必须不断前行,行动起来,然后去影响未来。陷入寻找意义的状态是非常危险的,人不是猪,我们并没有生下来就被赋予一个存在的意义。

当我们被抛入世界中后(存在主义喜欢用“抛”这个字来描述我们初入世界的状态),我们会持续创造我自己的定义。其他个体或许在尝试用一些标签定义我们,但我们始终是在改变的,我们不断地通过行动改变未来。这一点根深蒂固地存在于人类境遇之中,以至于在萨特看来,它本身就是人类境遇。从有第一缕意识那一刻开始,直到死亡将其抹去为止。

我们的自由

英国超现实主义诗人大卫·盖斯科因(David Gascoyne)二战时在巴黎生活,他在日记中写道:“战争最可恨之处在于,它让个体变得毫无意义。”

现代战争以前所未有的火力,让人类目睹了未曾料想的战争灾难。在类似的荒谬的场景下,我们应该如何面对这个世界?

人面对荒谬的态度分为几种:其一,以自杀逃避。这并不可取,因为自杀不是战胜而是失败。其二,寻求宗教性的庇护,以放纵自己的软弱,把自己无保留地交代给外部的力量。这仍是逃避,它不是自由人的态度。其三,认识到自杀是可能的,也就是认识到连生死都在自己的掌握之中,所以就没有理由不挺身反抗黑暗、邪恶、荒谬的行为。

如果我看一场足球比赛,我就会把它看作是一场足球比赛,而不是一个毫无意义的场景:许多人跑来跑去,轮流用他们的下肢去触碰一个球形物体。如果我看到的是后者,那我看到的并不是什么更本质、更真实的足球比赛,而是我根本没能正确地将其当作足球来观看。

人生在世,好比一个演员在台上,他的生活必须有一个背景的衬托,就像舞台布景,有这个布景,人生才得以在舞台上展开。一旦没有这个布景,人就感到自己是个局外人。我想这点大家都能理解,你不能想象会有一个在虚空中生活的人。所以加缪说:“这种人和生活的分离,演员和布景的分离,正是荒谬感”。

面对荒谬,懦弱的人会选择犬儒主义态度,以虚无主义面对人的道德责任,从而随波逐流,甚至与黑暗邪恶势力携手。而一个自由人,会采取挺身反抗的态度,尽管这种反抗很可能是堂吉诃德式的。

《西西弗传说》最后写道:“我把西西弗留在山脚下!我们总是看到他身上的重负。而西西弗告诉我们,最高的虔诚是否认诸神而且搬掉石头,他也认为自己是幸福的。这个从此没有主宰的世界对他来讲既不是荒漠,也不是沃土。这块巨石上的每一颗粒、这黑黝黝的高山上的每一颗矿砂惟有对西西弗才形成一个世界。他爬上山顶所要进行的斗争本身就足以使一个人心里感到充实。应该认为,西西弗是幸福的。”

1955年,富布赖特学者卡尔文·施拉格(CalvinO.Schrag)来海德堡研究哲学时,惊讶地看到了许多讲其他当代哲学家的课程,唯独没有讲存在主义哲学先驱海德格尔的。但随后,他的疑惑就消失了。他写道:“我很快就明白了,其实所有课程都是在谈海德格尔。”

我是我自己的自由:不多,也不少。

不靠谱社交指北:我如何成为我们

不久前,我答应给一位小伙伴写写我对于交朋友的想法,其实我是觉得我没有资格写这么宏大的话题的,从小到大我的朋友就一直很少。

我们这一生,如果能够遇到无条件爱并且接受自己的人,当然是幸运的,然而他们未必确实存在。即使有的话,有时也会让人失望,毕竟没有完美的人。我们在满足了生理与安全的需求后,会想要去寻求更高层次的需求:爱和归属的需求、自我实现的需求。

换句话说,孤单的我们需要朋友。乔治·维兰特说:“人生里唯一重要的东西,就是你与其他人之间的关系。”

超越工具价值的依赖

友谊源于人际互动,最开始可能起始于对个体的工具价值的需求,但是最终往往会超越对具体技能的依赖,成为一种稳定的信任关系。

这种关系与爱情类似,但是它不要求我们接受对方的所有,也不存在情欲的因素,纯粹是个体间魅力的相互吸引。

说到这里,我想提一下加缪和萨特。

加缪和萨特还是好朋友,同是诺贝尔文学奖得主。因为观点相近,他们在年轻的时候就互相欣赏。 萨特最重要的小说《恶心》发表后,加缪立刻写了一篇深刻的书评;当加缪写了《局外人》后,萨特也马上写了相关的评论。

他们经常在一起聚会、吃饭、喝酒、聊天。后来,因为政治立场的分歧,萨特和加缪大吵了一架,从此结束了友情。

你觉得我是想要说,我们朋友之间不应该聊政治吗?不,我要说的恰恰相反。

我们可以互相在社交平台上贴贴、互相点赞,也可以和同学一起去食堂吃饭、组队做实验,可以在饭桌上互相揶揄讨论跳槽事宜,但是虚拟的赛博温暖或者逢场作戏的戏谑离友谊有着很远的距离。

珍贵友谊的形成,是要个体之间认真地去聊两性关系、原生家庭,去聊政治、未来期望,去聊种种尖锐的话题,在了解彼此在光谱上的位置后,才能判断对方能不能成为自己值得信赖和托付的朋友。

运用社交技巧的强行合群会带来虚假,虚假会带来痛苦。当然,你如果觉得接近某些人是重要的,just do it。

社交技巧之外的个体价值

那位小伙伴说,他觉得他的讲话技巧很差,讲话时有距离感、拘谨,但是不知道从何改起。

我看到这段话时,内心咯噔了一下。

我们从小,总是被教导,要追求卓越,要考上好大学,要和同学同事好好相处,但是一直没什么人告诉我们,要如何相信自己存在的价值。不被周围的人认可是一种耻辱吗?可是不是所有人都能如苏格拉底一般雄辩地向大众宣扬自己的观点,与他人辩论。

如果可以用开朗讨人喜欢的态度去和周围的人打好关系,那当然是非常棒的。但是我反倒是觉得,我们年轻个体的最重要的事是找到自己热爱的、愿意为之付出时间的事物。

在寻找自己想做什么,或者在知道自己想做什么的时候,向这个世界展露自己的思考和想法,这远比社交技巧重要,也仅仅有说出来这一条路。

也许我们现在接触的内容、思考的时间和深度都不足以著书立说,写起来会感觉不舒服。对大多数人来说,长文写起来是有困难的,我们试着从最多140字的推文写起,从一个观点写起。

萨特在加缪的葬礼上宣读了悼词,萨特从死者的死俯视到“世界”的“狭小”,最终,萨特将“我”和“他”概括成了“我们”,向加缪英勇的“固执的人文主义”致敬。

能够让我们交到朋友的,除开追名逐利、见色倾心的因素,是我们的独特性,是我们的魅力,是我们的作品。

我们的独特性,我们的魅力,我们的作品,是比虚假更美丽、更久远的东西。

从强关系中得到爱,从弱关系中得到成长

从社交互动的频率来看,人与人之间的关系可以简单划分为强连接和弱连接。弱关系指和联系不频繁的人的关系,和频繁交流的强关系相对应。

不必苛求用社交技巧和身边的人建立超越弱关系的联系,而是把眼光投向更远的地方,投向互联网。

我在老家的时候,经常听说的就是亲戚在聊某某亲戚在某某地方上班,他们之间多熟多熟,要是我们要是需要办事可以找他们,但是实际上农村的亲戚们大部分都没什么钱。反倒是我实习时认识的同事老板们,富甲一方(bushi),他们很少谈论强关系,但是当工作遇到困难时,他们却总能找到各行各业的朋友。

我们是需要爱的生物,我们是社会性的生物。朋友不需要多,能分享苦乐即可;没有爱人也没关系,我们知道我们自己是有价值的。我们的价值不仅仅包含了我们身为工具的工具价值,还有我们自身存在的价值。我们存在,就是有价值的。

我们做的领域很小众,你在寻找朋友,我也在寻找同道,如果在互联网见到了,就打个招呼吧。

由此,我成为了我们。

互联网的刻耳柏洛斯:GFW的DNS审查系统

刻耳柏洛斯是希腊神话中看守冥界入口的恶犬,它允许每一个死者的灵魂进入冥界,但不让任何人出去,同时也不允许活人进入。

纽约大学石溪分校的 Nguyen Phong Hoang 和多伦多大学的 Arian Akhavan Niaki 等人,建立了一个名为 GFWatch 的网络平台,对中国网络长城(俗称 GFW)的 DNS 审查系统进行了探测和实验,最后写出了一篇论文发表在历史悠久的 USENIX(高等计算系统协会)的相关会议上。文章名为《How Great is the Great Firewall ? Measuring China’s DNS Censorship》,您可通过链接 https://www.usenix.org/system/files/sec21-hoang.pdf 获得论文原文。

在 GFWatch 工作的九个月时间里,它测试了5.34 亿个域名。论文展示了一组触目惊心的数据:至少有 31.1 万个域名被 GFW 的 DNS 过滤系统干扰。并且 GFW 还主动出击,在世界范围内污染了公共 DNS 解析服务(pub- lic DNS resolvers)中至少 7.7 万个域名的数据,其中包括谷歌和 Cloudflare 的 DNS resolvers。

他们在论文中说:

“These techniques will not only help public DNS resolvers and other DNS-related services to sanitize tainted records , but can also assist future development of circumvention tools tobypass the GFW’s DNS censorship .”

他们的研究不仅可以帮助清除 DNS resolver 和其他 DNS 相关服务中污染了的 DNS 数据,还可以帮助今后的开发人员去开发绕过 GFW 的 DNS 审查系统的工具。

How GFW fuck DNS

DNS (Domain Name System)的作用是根据域名查出IP地址。它是一个将域名和IP地址相互映射的分布式数据库,你可以把它想象成一本巨大的电话本。

举一个例子,如果我们要访问域名 www.baidu.com ,首先要通过 DNS 查出它的IP地址 183.232.231.172。下图是 DNS 查询的一个简单示意图。

论文中提到,由于 GFW 是一个通路的(on-path)/旁观者(man-on- the-side)的系统 ,所以它没办法通过修改或者简单丢弃互联网上传输的那些被封锁的域名的 DNS 查询响应。但是由于 DNS 使用无状态、未加密的 UDP 协议进行传输,所以 GFW 可以通过可以实时监测互联网上的流量,当在用户的 DNS 查询中检测到受审查的内容时,注入错误的响应。

由于 GFW 的相关设备通常离客户端更近(就物理/网络距离而言),所以被检测的响应通常会比合法的响应更早到达,从而达到让用户无法获得正确的域名的 DNS 的目的。

利器:观测 GFW 的平台 GFWatch

当你凝视深渊时,深渊也在凝视着你

GFWatch 的设计要求中,有一点就是要可以探测到尽可能多的被 GFW 阻断的网站。GFWatch 从 超过 1500 个TLD zone file 处获得实时更新的域名列表,平均每天会对 4.11 亿个网站进行监测,截至 2020 年总共探测了5.34 亿个网站。发现至少有 31.1 万个域名被 GFW 的 DNS 过滤系统干扰。

GFWatch 同时被设计以可以实行长期探测。一旦它探测到某个网站被封锁,GFWatch就会持续对这个网站进行观测,观察这个网站是否会在某个时间点被 GFW 解封。

同时,GFWatch 还被设计来收集统计 GFW 返回的虚假 IP 地址。

接下来我们来看看 GFWatch 的实验和探测手段。

GFWatch 的主要探测器位于没有 DNS 审查制度的美国,从这台机器发送 DNS 查询消息前往位于中国的两台主机。但是位于中国的那两台主机并没有 DNS 解析能力,因此,主探测器的任何 DNS 响应都应该是来自 GFW。

因为 DNS query 使用 UDP,所以 GFWatch 也被设计为使用 UDP 进行探测。而UDP是一个无状态和不可靠的协议,数据包可能会由于不受控制的因素(例如网络拥堵)而丢失。为了尽量减少这些因素对数据收集的影响,GFWatch 每天至少对每个域名进行三次测试。

很妙的一个实验方法!一个优秀的猎手往往以猎物的姿态存在。虽然你耗费了电费和带宽,但是你可是钓上了 GFW 这条大鱼啊!

中国的两台主机位于两个不同的自治系统(AS)中。但是从探测结果来看,发往这两台中国主机的 DNS 查询所接受的封锁政策是相同的,故研究人员猜测 GFW 应该是采用中心化政策(centralized blocking policy)的一个系统。

在位探测仪完成每个探测批次后,被检测到的受审查域名被转移到中国主机上,

接着,研究人员又控制位于中国境内的主机向位于美国的主机发送网站的 DNS 查询信息。研究人员观察到从美国发往中国的 DNS 查询时会被审查的域名在中国发往美国时同样会被审查。

通过两个探测路径探测到了相同的被审查的域名名单。

截至论文发表时,GFWatch 仍在运行,每天都在收集数据。

从 GFW 封锁网络清单中反推规则

无论多么天衣无缝的犯罪,只要是人作的,就没有解不开的道理。

如果 subdomain.example.com 和 example.com 的所有子域都被封锁,研究人员就将 example.com 视为一个被封锁的域名(blocked domain)。最短的审查域名便称为 “基础域名”(base domain)。通过对 GFWatch 发现的 31.1 万个被审查的域名进行分析,研究人员发现了13.87 万个基础域名。截至 2020 年 12 月 31 日,仍存在 12.6 万个被封禁的基础域名。

但是研究人员同时注意到,当一个子域名被封锁时,基础域名可能不会被封锁。例如,cs.colorado.edu 被封锁了,而 colorado.edu 没有被封锁,这说明 GFW 没有简单地采用一刀切的封锁措施。于是研究人员进一步的进行了分类,对于一个给定的域,研究人员测试了每个审查的域和随机字符串的以下排列组合。

  • Rule 0 censored_domain
  • Rule 1 censored_domain{.rnd_str}
  • Rule 2 censored_domain{rnd_str}
  • Rule 3 {rnd_str.}censored_domain
  • Rule 4 {rnd_str}censored_domain
  • Rule 5 {rnd_str.}censored_domain{.rnd_str}
  • Rule 6 {rnd_str.}censored_domain{rnd_str}
  • Rule 7 {rnd_str}censored_domain{.rnd_str}
  • Rule 8 {rnd_str}censored_domain{rnd_str}

在 138.7 万个基础域名中,有 11.8 万个域名根据规则 0 进行是独立审查的。换句话说,这些域名是被审查的,但在与随机字符串连接时不会触发GFW的DNS审查。

在这些规则中,只有规则 1 和 3 是基础域名的子域名的正确存在形式。研究人员把规则 1、3 以外的规则与较短的域名字符串组合在一起的被审查的域名称为被过度封锁(overblocked)的域名。

按照封锁严重程度的升序,研究人员发现在规则2、3、4、6和8下,分别有4、11.38 万、1.09 万、1400 个和 696 个不同的基础域名被封锁。

对 GFW 过度封锁的研究

有超过 1.3 万个基础域名被过度封锁。在发现的 33.1 万个被审查的域名中,有 41000 个域名是过度封锁的。

论文中举了一个例子:GFW 将 torproject.org 进行了严格审查,对其进行了过度封锁(overblocked)。包括 mentorproject.org 在内,任何包含了 torproject.org 字段的网站都被 GFW 封锁,令人啼笑皆非。(Tor 是一个旨在实现匿名通信的自由软件(free software),Tor 用户的互联网活动相对较难追踪。)

919.com、jetos.com 和 33a.com 这三个域名共造成15000个不相关的域名被过度封锁,如果有朋友打算购买域名,请注意避开包含有相关子字符串的域名。以避免被 GFW 不明不白的封锁了。

对被封域名种类的研究

研究人员使用了 FortiGuard 提供的服务,进行域名分类。

统计发现, “商业”(business)、”色情 “(pornography)和 “信息技术 “(imformation technology)这三种网站是 GFW 封锁的主要类型(除了未分类的网站外)。

另外一项没有没有统计子域名的研究则发现,”代理 “(proxy avoidance)和 “个人网站和博客 “(personal websites and blogs)是被封锁最多的网站类型。

虽然 “教育 “不是被审查的首要类别,但研究人员同时发现了许多与教育有关的域名被封锁,包括 mit.edu、umich.edu、gwu.edu、armstrong.edu、brookings.edu、citizenlab.ca、feitian.edu、languagelog.ldc.upenn.edu、pori.hk、soas.ac.uk、 scratch.mit.edu、cs.colorado.edu……

这是 GFW 滥封网站的又一个证据。

covid-19、自动化工具与雇员

GFWatch 检测到大量与 COVID- 19 有关的域名被 GFW 通过 DNS 篡改进行审查,包括 covid19classaction.it、covid19song.info、covidcon.org、ccpcoronavirus.com、covidhaber.net以及covid-19truth.info 等网站。

虽然大多数 COVID-19 相关的网站在出现后很快被 GFW 发现并封锁,但研究人员发现 GFW 无法做到实时封禁相关网站。

ccpcoronavirus.com 和 covidhaber.net 于 2020 年 4 月首次出现在 GFWatch 的测试列表上,但分别直到 7 月和 9 月才被 GFW 封杀。同样的,covid-19truth.info 在 2020 年 9 月出现在研究人员的数据集中,但直到 10 月才被审查。

GFW 审查不同域名所需时间的巨大差异表明,封锁网站名单很可能是由自动工具和人工共同完成的。

伪造的 IP 与被蒙蔽的人们

真理是永远蒙蔽不了的。

了解 GFW 伪造的 IP 和它们被注入的模式(如果有的话)是至关重要的。

研究人员分析了 GFWatch 收集的 IP,以研究是否存在任何特定的注入模式,在此基础上,我们可以制定策略来有效地检测和绕过 GFW 的 DNS 审查制度。

伪造的 IP 的数量随时间流逝增加

研究人员从 GFWatch 捕获的所有中毒的 DNS 响应中发现了 1781 和 1799 个伪造的 IPv4 和 IPv6 地址。

研究人员发现所有被 GFW 注入的 IPv6 地址都是假的,因此,研究人员把分析的重点放在伪造的IPv4地址上。

从 2020 年 5 月份开始,GFWatch 监测到 GFW 使用的伪造 IP 数量开始增多,在2020年的最后四个月,伪造的 IP 数量增长到 1700 个左右。

有迹可循:伪造 IP 的注入模式

通过分析每个伪造 IP 地址的注入频率,我们发现并不是所有的伪造 IP 都有同样的机会被注入到被审查的回应中,也就是说,他们的注入模式并不是完全随机的。

尽管 GFW 伪造的 IP 数量迅速增加,但最初的 200 个伪造的 IP 仍然对 99% 的 DNS 注入负责。从 5 月到 8 月发现的新的的 1300 个伪造 IP 位于长尾部分,研究人员只在 1% 的 GFW 伪造的 DNS 响应中发现了它们。

根据这一试验结果,我们或许获得了些许反制 GFW DNS 污染的灵感。

围城:双向拦截

城外的人想进去,城里的人想出来。

因为有时 DNS 查询的信息不可避免的会经过中国网络,触发 GFW 的双向 DNS 过滤行为,故先前研究人员曾认为 这是中国境外的公共 DNS resolvers 缓存被污染的原因。

经过进一步的研究,研究人员发现许多域名的权威名称服务器(authoritative name servers)位于中国境内是另一个主要原因,这些中毒的 DNS 缓存借此玷污了世界各地的许多公共 DNS resolvers。

GFWatch 发现的被审查的域名和 GFW 伪造的 IP 的数据集有助于检测和净化公共 DNS resolvers 缓存中的中毒资源记录。

GFW 对中国域名的地理封锁

2020 年 8 月 8 日,GFWatch 检测到 GFW 一个奇怪的封锁行为:GFW 对中国政府网站进行了审查阻断。

www.beian.gov.cn 名为“全国互联网安全管理服务平台”,由中国工业和信息化部管理。这个域名有两个权威的名称服务器,dns7.hichina.com 和 dns8.hichina.com,它们被托管在 16 个不同的中国境内的 IP 地址上。一旦在中国境外发出向针对该网站的 DNS 查询,GFW 便会对查询进行污染与注入。但位于中国境内的主机仍然可以正常访问这个网站。

因此,这是一个明显的地理封锁案例。GFW 不仅仅封堵了主机从中国向境外被审核网站的访问,也污染了境外主机向中国境内部分网站访问时的 DNS 查询。

从中国境外访问 www.beian.gov.cn 会间歇性地成功,因为 GFW 的 DNS 注入有时会比正确的响应更晚到达使用终端。

GFW 大炮

研究人员提到了 GFW 发动资源耗尽攻击(resource exhaustion attacks)的可能性。 一旦 GFW 将 DNS 查询的结果大量导向某个 IP 地址,受影响的组织将在服务器上付出不可忽视的开销。

GFW 甚至可以针对一个 DNS 查询发出多达三个伪造响应。从GFW的角度来看,注入多个虚假响应不仅增加了成功污染查询结果的可能性,也使检测和规避 DNS 污染的成本增高,难度增大。

如烛者,思至则见,不思不见

你就是这道黑暗中强烈的光束,从属于你的夜晚中,照亮了他们曾经看不见的白天。

一旦 GFWatch 检测到有域名被 GFW 封锁,研究人员就向公共的 DNS resovlers 查询它们。最终,研究人员发现了公共 DNS resolvers 的缓存中,有 7.7 万个被 GFW 审查的域名被污染。下图显示了数据被污染得最多的前十个公共 DNS resolvers。

这一发现显示了 GFW 在世界范围内的广泛影响,使得公共的 DNS resolvers 的操作者必须有一个有效的机制来防止这些中毒的资源记录污染他们的缓存,以保证他们的DNS服务质量。

现在,研究人员将展示如何根据前文展示的 GFW 的特点和 GFWatch 获得的浩如烟海的数据制定策略,以有效和高效地规避GFW的DNS审查制度。

当收到一个以上的 IPv6 回应时,客户端可以根据 GFW 伪造的 IPV6 的显著特点排除掉被污染的 IP 地址。对于 IPv4 答案,客户端可以根据前文中发现的 GFW 伪造 IP 的注入模式和伪造的 IPv4 特点来检查它们。

从下图中,我们可以看到 99% 的被 GFW 污染的 DNS 响应比正确的响应提前 364ms 到达我们的机器(这个延迟时间根据终端和 GFW 之间的相对距离的不同而可能会有所不同)。换句话说,在查询一个受审查的域名,收到 DNS 响应时,客户端最多应该多等 364ms,以等待合法域名的到来。

愿我们能够在没有黑暗的地方相遇

人类收到火的礼物之后,国王会用它征服世界,厨师会用它喂养世界,工程师会用它移动世界。小丑只会用它玩杂耍。

研究团队开发了 GFWatch,监测并统计了 GFW 基于 DNS 审查的封锁行为。然而,DNS 审查并不是 GFW 使用的唯一的封锁技术,还有其他许许多多的技术被采用来防止信息在互联网间自由的流通。例如,基于SNI的封锁、基于关键字的过滤、针对特定 IP 的封锁、使用深度包监测识别异常流量……

今后我也会继续关注这方面的内容,但是在顺利前去留学之前(现大三在读),我会尽可能的专注于学习。同时,由于撰写这篇文章时时间仓促,也因为我本人学术水平有限,如有错讹,欢迎您和我联系。

您可以通过以下方式找到我:

同时感谢群友、推友们在我撰写文章时的鼓励与交流,没有你们,就没有这篇文章。

本篇文章以 MIT 协议开源,欢迎任何人转载、引用。祝您生活愉快、学业、事业顺利。

TiKV-Committer-的最快养成方法

—— TiKV 优秀 committer 迟先生(Alex Chi)专访

本文首发于 PingCAP 微信公众号,原文地址是:https://mp.weixin.qq.com/s/-GFlsipDZKNXViwM5yNOMw ,欢迎大家关注哇!

一月末,一位大三的少年登上了知乎热榜,有数百万人浏览了迟先生的“凡尔赛”语录:“即使一周实习3天,我依然拿到了上海交通大学计算机学院第一的绩点。”迟先生是上海交通大学的计算机系学生,同时,他也有着另外一个身份:CNCF TiKV 项目有史以来最快晋升为 committer 的开发者。在一个风和日丽的下午,他接受了我们的专访。

编程学习之路

如果你不爱一件事,你不可能把它做得真正优秀。

Paul Graham《黑客与画家》

从小学三年级开始写代码,迟先生在初三的时候拿了全国青少年信息学奥林匹克联赛提高组的一等奖。
升上高中后的迟先生开始了工程上的实践,学习了前端、后端的大量知识,用 Python、JavaScript 等写了很多好玩的小程序。当被问到,为什么高中不继续打计算机竞赛的时候,他笑着说:“因为我觉得算法比赛没有什么意思,我想做一些更有意思的事情”,就这样他在高中边写代码边升入了上海交通大学的计算机系。
到了大学以后,迟先生就开始学习系统编程。在一年半内学完了MIT 6.828, 6.824, CMU 15-445等硬核课程,并且数据结构、操作系统、计算机系统结构、计算机组成、计算机网络等核心专业课上拿到 A+ 的成绩。
随后,他在大二下学期加入 CNCF 的 TiKV 社区进行开源贡献,在大三加入 PingCAP 实习。

结缘开源世界

冲在开源软件最前沿的人,正是凭借自己的眼光和才华发起项目,然后通过有效的社区合作,将其发扬光大。

Eric Raymond《集市与大教堂》

迟先生在大二下学期参与了 CNCF 基金会主办的 Community Bridge 活动( Community Bridge 是一个为有兴趣参与开源项目的开发者提供带薪实习和指导的活动)。然后在这个活动里他结识了 PingCAP 的导师 breeswish,并且在导师和社区成员的指导下参与到 TiKV 项目的开发中。迟先生进行了 coprocessor 模块的开发,这个模块主要负责的是 TiDB 的下推计算,它通过将 TiDB 的部分算子下推到 TiDB 分布式存储层来做,可以有效提高数据库运行的效率。
这个模块涉及到对TiDB整个的计算框架进行修改,是一项被打上“hard”标签的任务。但是迟先生凭借他扎实的计算机功底和不俗的代码实力,成功地完成了既定目标,同时创下了 TiKV 有史以来最快成为 committer 的记录。TiKV 的官方网站上至今还保存着他结业时写的总结博客

在项目结束后,迟先生顺利地通过了 PingCAP 的面试,成为 TiKV 项目组的实习生。

闪耀的实习经历

创造,不论是肉体方面的或精神方面的,总是脱离躯壳的樊笼,卷入生命的旋风,与神明同寿。

Romain Rolland《约翰·克里斯朵夫》

迟先生在实习的时候选择了更加接近计算机底层原理的存储引擎进行研究,他参考了BadgerDB ,使用 Rust 实现了著名论文 WiscKey 的构想 ,开发了一个高性能的存储引擎 AgateDB。现在 AgateDB 正做为TiKV的实验性引擎处于持续的开发阶段,全面开源(项目地址是 https://github.com/tikv/agatedb ,欢迎感兴趣的同学来参与贡献!)。
迟先生说:“我对来 PingCAP 整段实习的经历都是比较满意的。首先我接触到了国内为数不多的做开源软件的公司,并且能够参与到工业界产品开发的一些流程,这让我对 TiKV 的认识更加深入,并且也激发了我之后在存储、数据库这方面的继续深入研究的兴趣。”当问到迟先生来 PingCAP 实习时印象最深刻当事情是什么的时候,他毫不犹豫的回答:“上海 office 曾经组织我们一起去迪士尼乐园团建,这让我觉得非常的快乐。
这个回答出乎了我们的意料,我们都笑了出来。

不平静的大学生活

如果自己就是潮水的一部分,怎么能看见潮流的方向呢?

Paul Graham《黑客与画家》

迟先生在上海交通大学计算机系几乎每年都拿到了满绩的成绩(GPA 4.3 / 4.3 ),我们向他询问了他是如何一边实习一边拿到这么好的成绩的。迟先生笑着说:“我对最后考试拿了多少分,其实兴趣并不是很大,更重要的是我在这个过程中学到了什么事情。

迟先生向我们讲述了他如何对课程进行分类:课程可以分为实践课和理论课。实践课基本上是根据课后项目的完成度来给分数的,而他因为有着丰富的工程经验,所以可以快速的上手,所以这些实践课的分数基本上都比较高(小编补充:满分)。另外一些课程是理论课,比如说计算理论、人工智能这样的课。这些课的分数组成大部分都是考试。对于这些课,迟先生说,他觉得自己课下研究的效率比上课听讲高很多,所以他每周会稍微抽一点时间看书的,然后期末再做几套卷子,基本上成绩也不会太差(小编补充:也是满分)。
当我们问到他对于时间的安排时,迟先生回答道:“我去年的课是我每周是可以空出两天完全没有课的,所以我那两天是在 office 实习。还有一天那门课是听和不听没什么区别的,所以那天我就在学校 remote 。”“所以我的观点一直是分数还是比较难反映一个人真实的水平,”他说,“就像我虽然在很多课上分数是比较高的,但论我到底学到了多少东西,这个东西都是比较难界定的。”
而当谈到周末的安排时,迟先生的回答倒是让我们觉得十分的亲切:“我周末会打游戏、看电影,然后还会去商场吃饭。然后还有因为周末大段时间比较多,我可能会用来去做一些课程的项目,因为这种项目一般都需要周期很长,我一般会拿这个比较整段的时间去做,这样效率会比较高。”
原来天才少年的休闲生活和正常人也没有什么不同,这让我们感到有所放松。

内卷与逃离内卷

数量,即是正义。

Gustave Le Bon《乌合之众》

内卷,本意是指人类社会在一个发展阶段达到某种确定的形式后,停滞不前或无法转化为另一种高级模式的现象。 当社会资源无法满足所有人的需求时,人们通过竞争来获取更多资源。
迟先生提到了一些他生活中见到的的内卷现象,比如有的同学发邮件给老师,想把别人的分数扣掉,希望用这种降低别人分数的方法来提高自己的排名。
“还有一种,”迟先生说,“我们专业的人工智能课的最后一个项目是做 presentation ,有些人通过调整参数,将模型炼到了99.9%的准确率。这些行为的共同点就是:你虽然达到了很高的分数,或者说得到了老师的认可,但是实际上对于自身的水平是没有任何提高的,它纯粹是一种同学之间的内耗。”
我们问到:“那你是如何对待这种行为的?”
迟先生回答:“我完全不参与这类事情。”
他提到,去年有一门课,有的同学写了三四十页的实验报告,而他第一次交了两页,第二次交了五页,最后老师还是给了他满分;包括在 AI 模型训练上,他的小组建立了只需要处理少量数据就能得出很好结果的新模型。他觉得更应该注重的是提高工作的质量,而不是做一些很表面的功夫。
这让我们感到非常的有意思:在内卷环境里胜出的那个人,却是旗帜鲜明反对内卷的人。

挂在嘴边的失败

被别人揭下面具是一种失败,自己揭下面具却是一种胜利。

Victor Hugo《海上劳工》

迟先生在 PingCAP 的 导师 Jay 对迟先生的评论是:“他的产出呈现出一种与年龄不符的成熟度,让人非常震惊。和口头“失败”完全不符的成功表现,有一种反差萌。”
是的,迟先生为人所熟知的,还有他日复一日的卖菜。

当被问及为什么经常说自己很失败时,迟先生是这样解释的,衡量成功有很多维度,而他在很多维度上都是彻底失败的。
他提到,上海交通大学有很多同学,大一就进实验室,之后顺利的发了很多顶会的paper,可是自己在学术上并没有什么建树。同时,有另外一些同学,他们参加了很多学生活动,成为了学生会的主席;还有些人做了许多的公益,登上了电视台……他也很羡慕这样的同学。
我们反问道:“可是你也获得了很多人梦寐以求的东西,比如奖学金、社区的 reputation 等等。”
而迟先生回答道:“我只是在学习方面自认为学习能力还是ok的,并且在像数据库像存储这些领域,找到了一些自己比较喜欢的点。对我来讲,像奖学金、像各种荣誉之类的东西,我自己认为它们并不是很重要,最重要的还是我的能力在什么水平上,然后我能做什么样的事情,或者说我做过什么样的事情,这些是我比较看重的地方。”
我们又问:“你觉得有些事情对你来说并不是很重要,但是恰恰这些事情对他人来说可能是比较重要的,你这样说会不会伤害到他们?”
迟先生是这样回答的:“我觉得这个是不可避免的事情。我高中的语文成绩就永远都在及格线边缘,然后我每天都在背文言文实词、做很多题,但是我的语文成绩就一直上不去。但是我的一些同学,他们不用像我这么努力,就可以拿一个很高的语文分数。那么在这种情况下面,他们确实对我造成了一些影响,让我觉得我特别的失败,我不管怎么努力都没有办法达到他们的水平。
但是等我到了大学后,我感觉当初想法都比较幼稚,就没有必要在这种这种方面上纠结,因为高考过了这个阶段以后,之前的分数都没有什么用了,对吧?感觉其他人有很高的成就或者怎么样,如果你很在意这些事情,确实会对自己造成一定的打击,但是随着时间的流逝,这些感觉就不会特别的深刻,因为它们并不是生命中最重要的东西。”
成功没有单一的批判标准,我们每个人都要找准自己的赛道。

传火开源

开源软件是计算机工业最宝贵的财富。

Tim O'Reilly

迟先生觉得,在开源社区做贡献,最重要的是 motivation 。
他举了自己的例子,他最初去做的 TiKV 的 motivation 是因为他觉得这个开源项目很好玩,然后在参与建设的过程中同时学到了很多知识,结交了许多朋友,因此就一直走了下来。
他觉得,要参与开源社区,首先要做的是找到自己感兴趣的方向,然后选定一个自己稍微努力一点就可以够得着的那种水平的开源社区。选定了这么一个社区之后,我们就可以参与进去。
参与进去的时候,和社区里面的人沟通是非常重要的一件事,比如说社区里面有些什么idea,或者说其他的开发者是怎么想的。这样可以慢慢的找到具体在什么地方可以努力,就可以去做一些比较大的feature,或者做一些比较大的改进,然后这样一来就可以提升自己的能力。
迟先生认为 TiKV 的 coprocessor 可能是整个社区里面最容易参与的一个组,因为这个项目基本上不需要很多的前置的知识,只需要知道 SQL函数是干啥的就可以来实现一些 coprocessor 里面的函数。所以他建议初学者或许可以考虑一下从这个角度来参与TiDB的相关开源活动。
同时,我们也推荐 TiDB 官方出的十分钟成为 Contributor 系列博客,想和迟先生一样成为知名开源项目的 contributor 吗?从发出第一个 pr 开始吧!

梦想是什么

梦想一旦被付诸行动,就会变得神圣。

阿·安·普罗克特

当聊到迟先生的人生梦想时,迟先生讲到,他希望以后可以成为一个出色的工程师,能解决复杂系统里面的一些问题。
我们问到,如果有一天财富自由了,他会想做些什么。他毫不犹豫的回答,他想写一些自己真正想写的一些代码。
“对我自己来讲,我想解决一些其他人没有解决过的问题,”他说,“有些问题感觉就算是学术界也比较难解决,它真的要有经验丰富的工程师才可以去找出那么一种真正可以适用于某一个 workload 的系统的解决方法。我想去写这种优雅、又可以解决痛点的程序,这会让我感到非常的开心。”
我们问迟先生在 PingCAP 的导师 Jay Lee ,有没有什么想告诉他学生的话,他沉默了许久,后打出了这么一句话:

愿他能保持好奇和冲劲,对开源和技术永远热爱

是的,祝愿我们都有光明的未来。

最后在关麦之前,我们请迟先生给我们的读者们推荐一些东西。迟先生想了想,说:“我推荐一个游戏——《塞尔达传说》,我觉得这个游戏非常的好玩,你可以用它来消磨时间,也可以提神醒脑。希望大家在感到无聊或者说觉得人生遇到瓶颈的时候都可以玩一玩游戏,从游戏中获得一些快乐。”
话筒准备递给下一位嘉宾了!至于下一位嘉宾是谁,熟悉社区的小伙伴肯定都知道啦,先卖个关子,敬请期待~

来到无聊的世界

过去十几天我看了不少书,听了很多播客,然后还听了很多的音乐。起初这一切都是出于排解内心的苦闷,后来在这个过程中我开始承认并接受自己的无知,更新自己的认知。
今天来聊聊我发现人生是无聊的这件事。

文章标题其实就是源自 《SSSS.GRIDMAN》 的 OP 的这句:“我来从无聊的日常中拯救你了”。
实习的工资让我的生活费增加了很多,我买到了我之前想买的手机、电脑、游戏机……一切都有了,仿佛在梦里一般。我曾经幻想过一个完美的、幸福的世界,约莫就是现在,金钱在我一个月只有很少的生活费的时候是很重要的,我为此可以忍受非常多的东西。这仿佛一种信仰一般,追寻金钱。
我现在过的就是当年幻想的有钱的生活,但是我一点都不快乐。
于是我信仰崩塌了。
这应该是我第二次经历信仰崩塌,上一次崩塌是在我初中那会,那会我看到了一些被掩盖的历史,心中信仰的某些东西轰然倒塌,开始思考自己做过的无意义的事情。
我是个俗气、无力、弱小的人,我觉得这个世界好像不应该是这样子,但是我又无力去改变。
那应该怎么办呢,这个世界貌似还有一些我蛮喜欢的东西的。但是每天在社交媒体看到各种各样的人追求自己喜欢的东西,这让我感到对自己的厌恶,这是出自内心的嫉妒情绪。这是本真的我。
有一段时间我丧失了表达的欲望。我觉得他人的眼光令我难以忍受,我开始思考人活着的意义,究竟要怎么样才能获得快乐。
Inoki 说,做自己真正想做的事就是有前途的。
我不知道自己想做什么。
我想做的是做一个快乐的人,但是貌似这才是最难的一件事,因为“快乐”其实是一件虚无飘渺的事情,它是没办法被定义的。我或许可以找到一堆纸,上面写着快乐是因为各种激素的分泌导致的大脑的兴奋,但是这当然不是我追求的。
我在内心非常混乱痛苦的时候,问 Claude ,我现在读书,变强,那是不是变强了就能快乐?是不是达到我订下的下一个目标了就能快乐。
Claude 回我,当然不是了。
这个是对的,并没有什么事情可以保证获得快乐。
我卸载了推特,停止了水群,手机 screen time 下降到每天 1 小时。
突然间感觉空余时间多了好多,我感到非常的无聊。
于是乘这段时间把之前拖了很久的托福单词背完了,然后还看了《葡萄酒图鉴》,了解了葡萄酒的产地、生产流程、化学组成等。因为工作需要,还开始学习一些统计学和数据分析相关的知识,看了本数据分析相关的书。还看了唐凤的传记《我所看待的自由與未來》,一窥他人的世界。看了一些算法,一些小说。还看了一部很有意思的番 《SSSS.GRIDMAN》(Tigger 社对感情的描写、静止画面的应用真的是扣人心弦)。然后还去看了中山三院精神科看了下医生,医生开了药给我。这些事情发生在过去的大概10天,但是对我来说好像是过了很久。
这是好的,我想继续下去。获取知识本身是有意思的,表达的欲望也是一种难以抑制的情感,无论想表达的是什么。
医生说,我重度人际关系敏感、重度偏执、有双相,还抑郁,说得仿佛我坏了一般。但是我反而平和了许多,就像是尘埃落地的感觉,它给了我原谅我自己理由,并且提醒我应该改变。

我对你根本没抱幻想。我知道你愚蠢、轻佻、头脑空虚,然而我爱你。我知道你的企图、你的理想,你势利,庸俗,然而我爱你。
我知道你是个二流货色,然而我爱你。为了欣赏你所热衷的那些玩意我竭尽全力,为了向你展示我并非不是无知、庸俗、闲言碎语、愚蠢至极,我煞费苦心。

——毛姆《面纱》

这是一次有意思的经历。我觉得我可能要花好长一段时间去寻找什么是我想做的东西,什么是我的使命。但是在此之前,死亡是不急的。
在这个无聊的世界,我在等待着有什么人可以来拯救我。可是我等啊等,一直等不到。我的世界里没有超人、没有可爱的JK、没有魔法。有的只是平凡平庸的自己。
但是只要可以活得比较久,快乐总是会有的,快乐如果是容易获得的,那它未免太廉价了。而无聊的生活本身也是一种自己对自己内心的拷问,它提示我我如今的生活出了些问题,需要去改变。
《SSSS.GRIDMAN》中,OP 有一幕让我深受震撼:女主无聊的望着窗外,下一秒,电光超人从天而降,击碎了这个无聊的世界。

如果要让我来评价自己是一个什么样的人的话,我会说:我是一个没有找到自己想做什么的一个平凡的人。
平凡的人自然是没有使命的,平凡的人活着就是为了寻求快乐。
我会做各种各样的事情来寻求快乐,同时,没有什么事情是做到了就能保证快乐的。但是不做就肯定不会快乐。
这就是我更新的认知。
映入眼帘的我们的世界是无论什么也无法替代的世界。

因为人生是没有边界的

前言:
今晚和manjusaka老师有了一次非常棒的推特对话,让我忍不住想写一些东西,于是便有了这篇文章。这是一篇关于我如何看待人生的一篇小博客,无比感谢诸君对我的关心和关注! 事情的前因后果在 这条链接 里可以看到 ,为了方便没有推特账号的同学,我同时在文章最后附上了相关的截图。

  我觉得人不应该太早的决定自己的一生,因为人生是没有边界的。
  在我高中的时候,我非常的喜欢生物,我梦想做一个生物学家。我对这个梦想是如此的坚定,以至于我在落选广东省生物竞赛代表队时也未动摇过聊过我的梦想。
  后来我去了一所普通的大学的生物系,开学后便联系教授,去鄙校两间生物实验室打杂。但是做实验和读paper的过程中我开始质疑我的梦想,因为我发现真实的生物科研并不是如同教科书上讲述的那般优雅和工整。
  某天,我对GFW感到好奇,做了相关的调查后了解了原因,自此开始学习一些计算机网络知识。同时,“我必须做一个生物学家”这个想法一直折磨着我,我始终不愿放弃这个梦想,因为我为此付出了我最美好的青春,我为了这个理想失去了许多,放弃让我觉得我的人生就是失败了。
  后来我释然了,原因是我在学习那些计算机知识的时候感受到了欢乐。那种存粹的为了满足自己好奇心的学习获得的快乐仿佛让我回到了16岁,那段自由的时光。
  它解决了我遇到了我遇到的许多问题(比如我用python和正则表达式提取了实验室往常要人工登记的.txt文件里的温度数据),让我对这个世界的了解更加深刻。当我再次变成孤身一人时(具体可以看一下我的 2020年终总结 ),为了排解烦闷,开通了推特号开始发表自己的吐槽和学习CS过程中的一些有趣的知识和坑,慢慢的在评论区和推友互动,结交了许多朋友,这给在生活中过着三点一线(图书馆、食堂、宿舍)的生活的我很大的快乐。
  作为一个资质尚浅的19岁的年轻人,能够收获到各位如此多的关注,实在是令人诚惶诚恐。
  就像我在 推文 中说的,我可能现在还没办法在技术上帮到大家,但是我一直很注意保持友善和礼貌,尊重他人的劳动成果不要口嗨,保持谦虚谨慎的态度。我想Bob或许在技术上或者人生上很成功,但是在友善度上是不够的。对一个自己不熟的人说对方的人生方向是错误的,怎么想都是不友善的。
  说回今晚的聊天,我觉得manjusaka老师说得最赞的是这句话:

社区的 reputation 建立实际上是一个双刃剑,最终怎么使用是取决于自己对于自己的定位。

  上天并没有限定我们今后的道路和人生,并没有唯一一条“正确的道路”。或者说,本来就没有什么“路”。只要一个年轻人不做违法乱纪的行为,一直在学习、前进,那他就是在努力地想要过好自己的人生。
  有些人可能觉得,我的推特上一直“在成功”、在表现自己,那是因为我选择性的发言。我的发言频率是一天至两天发一条推,但是经常我会一两星期不上推,这个时候就是因为我在啃一个难啃的骨头,在做一个难做的任务,只是最后大家只会看到我成功的结果,至于失败的结果,我只会和亲密的朋友吐槽或者自己藏在肚子里。
  我为什么会选择进入PingCAP 的community部门呢?有一位 推友说 ,没想到推友们成了我找工作的工具。其实恰恰相反,是各位让我产生了寻找一份技术运营实习的想法,是各位的友善让内向的我觉得这个领域十分的有趣。
  PingCAP作为国内第一家成功的商业开源公司,开发出了中国最领先的关系型数据库。这里聚集了许多优秀的程序员和同龄人,比如ICPC World Finals选手、交大CS系第一的卖菜专家、许多PLTer等。我入职PingCAP半个月了,我和同事一起吃饭时可以向他们咨询我在学习CS时遇到的问题,了解他们读大学的经历,这些都让我受益匪浅。在对接项目和社区时,我也可以了解到一个成功的开源项目应该怎么样运行,怎么吸引社区的伙伴来参与建设,这也是我觉得很宝贵的知识和经历。
  我最后会做什么工作呢?其实我直到现在也并不是很清晰。正如我一条推文里说的,有些人能够找到他们的“使命”,他们既有天赋又有决心,仿佛他们就是为此而生的。但是大部分人是没有的,比如我。这是蛮令人沮丧的,但是现在我觉得人生的输赢并不只限定在一个维度,甚至当一名翻译也是很有意思。
  并不是说我高中没有进生物省队就代表了人生的失败,并不是说我毕业后没有进大厂当程序员我人生就失败,人生有很多种可能,它并没有为我们限定住边界。我并不想太早给决定今后会干什么,一如计算机系的学生并不就是一定是未来的程序员,生物系的学生并不一定是未来的生物学家一般。下一次时代的浪潮来临之前,我想多多学习,无论是计算机,还是法学,还是金融,我充满了求知欲。学了大半年CS,我清楚我在写代码上并没有什么天赋,但是熟能生巧还是可以的。代码本来也只是一种工具罢了,它最终也会得到它在历史中应有的地位。
  我未来有两条路嘛,一条是出国读一个CS master,目前暂定去日本,已经开始学习日语;如果失败了,就毕业找一家公司干活。
  我并不是一个安逸而甘于平庸的人,我很想出去外面的世界见识一下,外面的世界如何,还是要自己见识过才算数。至于日本,大概率也不会成为我人生的最后一个国家,如果有可能,还是想去游历一遍这个世界。
  最近宿舍熄灯后,我开始重拾我高中时期的习惯:看书。在看《穷查理宝典》时,对里面一句话印象深刻:

上天并没有赐予人类在所有时刻掌握所有事情的本领。但如果人们努力在努力寻找定错价格的赌注,上天有时会让他们找到。

  ”The sky’s the limit”这句话在词典中的意思是:”there are no limits and that anything is possible”。我觉得用在这里十分合适。
  We can achieve anything if you really want to. The sky’s the limit.

Telegram指南

本文旨在向对Telegram感兴趣、或者正在使用Telegram,但是却并不太熟悉Telegram的人们介绍一些Telegram的使用技巧。
对Telegram有一定使用经验的朋友可以直接跳转到后三分之一部分。

什么是Telegram

Telegram(非正式简称TG)是一个跨平台的即时通信软件,其客户端是自由及开放源代码软件。
TG在2013年由杜洛夫兄弟(尼古拉·杜洛夫与保罗·杜洛夫)正式发布。TG的运营公司Telegram Messenger LLP是独立的非营利公司,设立在柏林。
尼古拉·杜洛夫为它设计了一个新的网络传输协议MTProto来保证聊天双方在互联网上传输的消息不会被相关部门知晓。同时,Telegram还支持端对端加密聊天的功能,使用这种功能,聊天双方的内容不会储存在服务器上,只有聊天双方能够收到消息。
用户可以相互交换加密与自毁消息,发送照片、影片等所有类型文件,文件大小上限是2G。

Telegram于2021月1月活跃用户达5亿,现在已经成为这个星球上最流行的通信软件之一。

如何下载

TG官网下载链接:https://telegram.org/
TG的软件全平台覆盖(甚至包含了WP),除了手机、电脑的客户端版本外,还可以使用网页版。

千万不要使用所谓的”Telegram中文版”,Telegram官方从未发布过任何所谓的中文版Telegram,也从未有过任何“VIP”等付费项目。
使用这个软件需要使用代理,tg的SMS码发送有些慢,注册时请耐心稍候片刻。

iPhone、iPad安装

点击官网页面中的”Telegram for iPhone and iPad”,会跳转到App Store的Telegram页面。如果在国内的App Store找不到Telegram,请使用海外版苹果账号登录App Store。如果没有海外苹果id,可以在淘宝搜索相关关键词购买。
获得软件后即可注册帐号。

注册之后需要做的事情

设置用户名

你可以在 Setting(设置)里右上角的edit设置里填写你的 Username(用户名)。设置后,别人能够在不知道你的电话号码的情况下,通过搜索你的用户名找到你。

  • 用户名可以随时更改或删除(用户名为空)。
  • 用户名不区分大小写。

添加好友的方式

在tg界面左下角Contacts的搜索框搜索用户名或者公开群组的群组名称。
平时想要告诉别人自己的联系方式时,正确的方法是:你好,我的tg用户名是某某某。这样子既清晰明了,也不必暴露自己注册时使用的手机号。

隐藏个人信息

我们翻墙在外,要谨言慎行,要注意保护个人隐私安全。我们可以通过以下步骤来调整自己在tg的信息展示程度:
Setting(设置)-> Privacy and Security(隐私和安全)-> Privacy(隐私)
可以参照下图设置

详细的视频教程步骤可以看这里

添加好友时,tg默认会分享你的电话号码给对方,建议如果对方不是你在现实生活中认识的人,每次添加好友时都要注意把这个分享按钮关掉。

解除中国手机号码添加好友的限制

目前Telegram官方已将+86手机号新注册用户定义为受限用户,导致国内用户无法私聊非中国手机号码用户,解除方法有两种。

  • 私聊官方的解锁机器人 @SpamBot ,发送消息申请(跟着提示操作点击就行),最后一步手动输入“accident”即可,半小时左右之后即可解除限制。具体操作可以参考Youtube相关视频

  • 更加建议把手机号码换绑到非中国区的手机号码,比如Google Voice,购买方法可以通过谷歌搜索相关关键词得到,比如“Google Voice 购买”,购买别人注册下来的号码。(如果有需要也可以将其转移到自己的 Google 账号上。)具体操作可以查看 http://www.googlegv.cn/

如何汉化tg界面

点击此链接: https://t.me/setlanguage/classic-zh

在PC端设置代理

tg比起诸多墙内即时通信软件有一个非常突出的优点,就是可以多平台同时登录并且非端对端加密的消息可以通过云端同步。但是在PC上使用tg时会遇到如果代理不开全局模式,在PAC模式下无法使用的问题 (如果您没有遇到这个问题可以跳过此项)。我们可以通过在设置界面手动指定代理端口的方式进行配置,具体方法如下:

  1. 观察自己的代理软件代理的端口是什么,以Mac上的ShadowsocksX为例,打开代理软件的Advance preferences,我们可以看到代理流量走的是Socks5端口的1086端口,然后监听地址是127.0.0.1。
  2. 我们打开tg,依次点击setting -> proxy -> proxy setting -> Add proxy -> SOCKS5
    然后填入我们之前看到的IP地址和端口号,右上角点击Done就可以了。这样就可以在代理选择pac模式下使用tg了。

channel与bot推荐

  1. Telegram Geek
    Telegram 使用技巧、重要资讯、常见问答、中文汉化、版本更新等信息。
    https://t.me/TGgeek
  2. YouTube 视频下载bot
    发送YouTube视频链接给这个bot,bot会发回你下载完的资源
    https://t.me/benny_ytdlbot
  3. 计算机与部分其他种类书籍资源
    一个免费的书籍分享频道
    https://t.me/bookusefor2
  4. 一个推荐电报上高质量的频道与群组的频道
    https://t.me/channel_push
  5. 电子书搜索机器人
    非常方便的一个机器人,发送书名、作者名或者isbn号给bot后按bot提示操作即可下载到电子版的书籍。
    https://t.me/zlibrary2bot
  6. Telegram新手指南
    用于解决常出现于 Telegram 中文新用户中的 Telegram 常见问题以及一些日常使用小贴士,以避免tg的新手重复提问与解答。
    https://t.me/Newbie_Guide
  7. tg创始人的channel
    分享durov关于tg和这个世界的思考
    https://t.me/durov
  8. Stickerdownloadbot
    用于把tg上的表情包下载下来的机器人
    https://t.me/Stickerdownloadbot
  9. Peter 我自己的频道
    聊一聊我对这个世界的思考,分享我觉得有意思的文章
    https://t.me/peter_thing

感慨

Telegram这个充满理想主义的软件不接受外部投资(不需要向任何股东负责),目前也不通过广告盈利,至今没有向第三方披露过一个字节的用户私人数据。Telegram 一直在默默地践行一个理念:这个星球上的每个人都享有自由的权利(Everyone on the planet has a right to be free.)。这在这个充斥着贩卖隐私、充值变强的互联网,显得尤为珍贵。不禁让人再次想起互联网的精神──一个把世界各地的人们联系起来的网络。
感谢那些无私奉献的开发者们,愿他们身体健康,万事顺利~

如果您发现该文章有错误,或者您想和我交朋友,您都可以通过Telegram或者推特与我取得联系,我的tg链接是 https://t.me/real_Peter_Yang。

扩展阅读

2020年终总结

  2020年是我人生重要的转折点。我走出了温柔乡,开始直面外面的世界。
  我会把完整的我展示给你们看,希望能够给大伙以勇气和信心:原来peter是这样子的。

春季

  2020的春季可以说是我人生的低谷,因为疫情原因,迟迟不开学,我整天在家呆着,起床就刷疫情人数,看各种报道。那个时候我一天吃两顿饭,因为起床时就已经中午了。彼时的我,甚至不知道我起床后应该做什么。
  然后我被前女友甩了,在白色情人节──3月14日,因为性格不合。
  2020夏季我去参加了敝校两个工作室的考核(学校教授开的学生廉价外包机构),都是基于java的。一个考核的是做一个类似闲鱼的购物商场,基于web的,要有聊天功能;一个是做一个比图书馆管理系统更难的景区管理系统,要求用java的那套GUI工具,限期一个月。
  两个同时进行,然后我都挂了。到ddl到时,我只学了点java web的皮毛,和前端的皮毛。当时我在看的还是b站黑马程序员的教程,笑。我根本就不知道什么是设计模式,代码堆在一起,写了堆*山。
  被甩后我个人精神状态极其脆弱,没办法正确的分割应该学习的内容。现在想来,考核内容包括了前端、java web和数据库,再加上点java GUI。我应该选择java web那一套,放弃java GUI的项目。如果我大一上学期就开始学习CS,不是去生物实验室闲逛的话,我应该可以做出来一个demo。但是彼时我真的是没办法,我沉浸于我感情的失败中。

夏季

  我是在2020年四月份加入推特的。我最初是把推特当成一个类似树洞的东西,每天放放自己的代码小demo、美味的小零食等等。让时间一点点修复我的内心。当时我的关注者非常少,每个推只有几个赞,彼时只有cwksc啊柠檬茶啊DGideas啊等几位会和我互动。我每天和大伙们小打小闹的,好像日子就会这样一天天循环……
  然后我开始学习计算机网络和C语言。计算机网络是第一个让我了解到计算机之美的学科。当时我看的是《计算机网络:自顶向下》,书写得非常好。我辅以mooc上的哈工大基于本教材的网课,学得非常开心!《C primer plus》的话我则是看了五百多页,把示例代码敲了一遍,还做了大部分的课后习题。指针当时给我带来了非常大的理解阻碍,我为此看了《C和指针》相关部分的章节,直到我能够理解相关的题目和代码。
  大概是六七月份?我前女友有了新男友。彼时的疫情还没有结束,大家都在家隔离着。之前我还想着,我开学后应该去找她复合,因为我不希望我们之间这么轻易的分开。之后我就删除了彼此所有的联系方式,不管怎么样,我的初恋结束了。
  我最难过的时候,曾经在推特问,“If anyone can save me”。现在想起来真的是黑历史。推上的各位,或许是觉得我很可怜,或许是出于怜悯,大家和我分享他们分手的经历,鼓励我,告诉我一切都会过去。我一直对此非常非常感激,感谢你们陪我度过那段荒唐和痛苦的时光。
  我一直在责备自己,怪自己不够强,不够富有,不够帅气……如果我可以做得更好,或许事情就会有一些变化。我在相当长一段时间内觉得痛苦,不喜欢自己,甚至难过得想要自杀。但是我不得不在父母面前表现出一幅若无其事的样子:因为我不想和父母透露任何关于我的感情生活。

秋季

  彼时ddavid和genres正好开始了一个关于《公主连结Re:Dive》bot的项目,要把他们qq bot上的东西搬到web上。这个项目让我度过了最艰难的一段时光,我捡起了前端,当时用的是Bootstrap和JQuery(现在看来都是落伍的技术了),糊了登录注册界面,写了相关js,搭了网站大体框架,并且从那个时候开始思考我应该走什么的路。
  彼时的我没有能力独立去完成一个网站的前端,即使后来有另一位前端的前辈加入了这个项目,这个项目也是无疾而终的结束了……明明他们是那么好,从来都没有嫌弃菜鸡的我,还给予我指导,我一直因此对ddavid和genres心怀愧疚。
  后来我结束了期末考,彼时已经八月份了。我开始看各种各样的书,每天去咖啡厅敲代码,看网课视频。开始学习JavaScript和Linux运维,想要写一个类似hexo的博客框架,但是后来因为难度太大而搁置。大概就是从那个时候起,我开始以一个CS learner的身份自居。
  时间帮助我慢慢的修复自己破碎的心。我改名为peter,象征着和过去的我决裂。
  曾经的我,觉得我只要待在我ex身边就够了,但是至此我开始改变,走出了我ex身边的温柔乡,暑假给了我一些时间学习计算机相关知识,我开始把我的感悟和收获在推特上和各位分享,借此结交了许多朋友。。
  我觉得让我转变最大的,第一个是被甩,这让我意识到了我不能够继续待在自己的舒适区。第二个是公主连接bot开发项目的失败,它让我意识到,什么样的水平揽什么样的活。
  我意识到如果想变得像样点,第一就是要多和别人沟通,和强者待在一起。第二就是我需要变强,要有我自己的一套技术栈。
  后来的日子渐渐的就变得好一些了。
  迟先生关注我时,我推特当时还只有一两百关注者。迟先生是关注我的第一位大v,虽然迟先生一直卖菜,但是我一直知道他非常强并且是乐于助人的。
  有一天我鼓起勇气私聊了himself65,我至今十分感谢himeself65能够和当时的我聊天,解答我一些困惑。他还拉我进了他的私人群,那是我第一次加入推特中文圈的tg群。我当时问过面包,应该如何从一个普通的前端人员进阶成为node.js的core member,彼时他答应了我要写一篇博客讲讲这件事,但是后来因为发生了种种事情他就一直鸽到现在,笑。

冬季

  漫长的居家日子结束了,我们开学了。在大学有着固定的作息表,学习效率大幅提升了。
  有一天我在推特看到了Alendia发布的她的打算休学的博客文章,想起我高三休学时的经历,便主动私聊Alendia。我当时根本就不知道Alendia是个女孩子!我只是觉得我应该给予参加和我有一样想法的人以建议和提醒。即使Alendia后来没有休学,但是她的勇气给我留下了深刻的印象。
  因为认识Alendia,我认识了千里冰封(英文名是Tesla Zhang,我喜欢称呼他为冰)。
  冰可能是改变我人生的一个人?彼时我完全没办法想象有一天我会和这么强的大佬一起喝酒吃饭,成为朋友。
  冰是搞PLT(programing language theory)的,我对PL领域其实是不太懂的,但是冰让我第一次看到了一个人居然可以对cs领域如此的热爱。我不是计算机科班生,在此之前我只和ex和我高中的几位朋友交流过编程的事情。我一直闭门造车,走了许多的弯路,这是我今后应该警惕的。
  此前,我以为计算机就是前端、后台和运维。和冰聊完我发现了PL、计算机图形学、编译器、分布式计算、操作系统……我知道了设计模式,我知道我以后除了在国内996或许还有其他的活法,那就是:把生命投入在自己喜欢的、伟大的事物上。
  后来冰和面包因为一些事吵架了,我觉得真的是十分遗憾。我真的希望在我的有生之年能和冰和himself65在同一张饭桌吃饭聊天。
  我渐渐的通过各位认识了推特中文CS圈的许多朋友。我认识了全干富二代工程师柠檬、认识了字节蹦哒前端工程师鹅哥、认识了本科毕业两年成为阿里p7的纯爷、认识了磷、阿寒、色扑、认识了学识渊博的麦吃姐姐、认识了可可爱爱的光量子、认识了可怕的硬哥、认识了wayslog老师、认识了一心想读数学的Claude、认识了joly、认识了几个公司的hr。还有许许多多给予我帮助的推友,在此限于时间和空间限制我没办法全部展开,但是我非常喜欢和你们一起度过的时光,今后的日子里还请多多指教。
  彼时我试着学习过计算机图形学,但是我薄弱的数学功底提醒我我不适合这个方向。然后接触了Vue,写了一些网页,非常感激在此过程中柠檬给予我的指导。
  我开始看英文原版的计算机教材,看伯克利、MIT等名校的网课。
  在敝校的一门选修课上,我对GFW如何阻挡我们连接国际互联网产生了强烈的兴趣。于是我收集查找了许多资料,亲自做了一些实验,最后汇集成了一个超过三万字的slide报告。我借此项目和选修课的老师成为了好朋友,一起吃了烧烤哈哈哈。我在里面分析和推测了GFW的规模和它的攻击方法,并且承诺开源。但是由于我现在几近实名上网,所以目前打算等我抵达安全的环境时再对其进行开源。我借此项目结交了一些机场主和网络工作的从业者。在惊叹GFW庞大的规模和耗费资金的巨大之余,我感觉网络方向比较符合我的学习习惯和研究兴趣,或许今后会选择相关方向的研究工作。
  之后我一头扎进了java,给一个开源的java爬虫程序做了个GUI。
  最近是在看伯克利的CS61b,学习数据结构的相关内容。
  12月,我去了深圳一趟参加中国第一届Rust China Conf(再次感谢wayslog老师的赠票)。参会时其实许许多多的内容我是听得一知半解,其实让我收获最大的是和那批70后、80后程序员们的长谈和聊天。他们深厚的代码功底和不停学习的精神让我感慨良多。
  承蒙错爱,居然有四千多位关注者愿意在推特听我的碎碎念,如今GitHub也有了三百多关注者。作为一个学习了一年多计算机的菜鸟,有幸得到诸位关注,实在是不胜感激,诚惶诚恐。希望我的推文和工作能够给诸位带来一点点启发和宽慰,也非常欢迎各位可以和我交朋友,聊技术。

展望

  目前前路也算是比较清晰。我的未来有两条路,一条是毕业后在国内互联网公司做开发工作,996;一条是去外面广阔的世界读一个master或者直接出国工作。由于家境贫寒,我可能没办法选择去美国或者欧洲读授课型的master,所以目前是希望去日本或者加拿大读master。如果我最后失败了,我就去工作。
  2021的打算是,学完CS61b,看一下SICP和相关网课(CS61a或者其他),完成斯坦福的CS144(计算机网络),看编译器和操作系统相关的网课和书。如果还有时间的话再看一下MIT的数据库课程(6.814或者其他)。然后做一些能够拿得出手的side project(感觉把课程lab写简历上感觉怪怪的)。
  嘛,我一直说,我是个理想主义者。因为我现在过得太糟糕了:糟糕的专业、糟糕的环境,所以我把希望都放在未来了。我希望我可以成为更好的人,能够去回报那些曾经帮助过我的人,也希望能够帮助到有需要的各位。
   我希望能够在大二的暑假,也就是2021年的6、7、8月找到一份开发相关的实习。我的邮箱是 Yangxiaomao6@gmail.com,欢迎各位hr和我联系。

我2020看过的编程相关的书

  • 算法图解
  • Html从入门到精通
  • css权威指南
  • 半本 JavaScript高级程序设计
  • 半本 锋利的JQuery
  • 疯狂Java讲义
  • 半本 Java核心技术卷一
  • Java Web从入门到精通
  • Java 8函数式编程
  • MySQL数据库应用从入门到精通
  • 半本 鸟哥的linux私房菜
  • C primer plus
  • 半本 C和指针
  • 计算机网络 自顶向下方法
  • 图解HTTP
  • 半本 Rust the book

  编程非相关的书的话,就是一堆学校要求的生物专业的教科书和巨量的漫画。
  希望2021年能够补齐我在计算机理论知识上的欠缺,多看黑皮书,把Algorithms和CSAPP看完,并且把去年看一半的书补齐。

  如果您对我感兴趣或者想要和我聊天,可以关注我的 twitter 或者 GitHub,也可以通过电子邮件 Yangxiaomao6@gmail.com 和我联系。我很乐意帮助有需要的各位,就像彼时帮助我各位一样。
  我的2020年终总结全部就是这样啦!感谢各位的帮助和关心,也感谢各位能够看到这里。祝大家新年快乐!新的一年,肯定会变得更好的!