知乎用户常犯的幼稚病

“某某云云” 是一种错误和粗浅的认识,实际上巴拉巴拉……

这是知乎上常见的一种回答类型,而这种回答还常伴随着高速增长的赞同数。在我看来,这就是知乎上的穷酸学生们最常犯的一种幼稚病,非常符合林语堂的社会十大俗之“每与人交谈便借刁言以逞才”。实际上这种回答大多不仅缺乏内禀逻辑,还常常暴露出回答者知识储备的匮乏,明显是哪里淘来了什么知识点便急不可待地向大家炫耀而已。

一般有着这种旺盛且爆裂表达欲的答主基本都是刚刚从某本书或者文章中看到了对于某个名词或者说法的系统性表述,深以为然间智慧的种子在贫瘠的心灵中生根发芽,恍恍有了种不知何处而来的使命感,要把这智慧的种子播撒向挣扎在泥沼中的芸芸众生。于是便有了具有一种破而后立的意味的豪言壮语:“你们的表述都是 bullshit,来看看我怎么给你们科普”。

我也曾有过这种中二年月,在我的高中物理老师刚讲完 “拉力提供向心力” 后还随口提了一句 “实际上没有离心力这种力”,我便精神一振,仿若有了凌驾于这间教室之外的人之上的优越感,在以后的相当长一段时间之内都孜孜不倦地纠正 “离心力” 这种说法,现在想来真是愚蠢至极。其实我的物理老师应该在那句断言前加上 “在惯性坐标系中” 的前提,在旋转坐标系中离心力是相当重要的一个元素。即使不考虑这些物理因素,生活中 “离心力” 也成为了一种约定俗成的高效表达,通过打破这种表达来获取优越感的行为是极其可笑的。

说到底还是太年轻,极力想要表达自己的与众不同和独立思想,无论回答者还是点赞者都是这样。年轻是件好事,但是伴随着这件好事的是无数件蠢事。想来那些力求语不惊人死不休的答主们不久后便会在脸上红白交替间删掉自己年轻时的豪言壮语吧。

三体·面壁者应对破壁人的方法

一种在历史中屡试不爽的应对破壁人的方法:搞出一大堆假破壁人来,每个“破壁人”都用翔实而稳固的论据材料来证明自己找出了面壁者的真实想法,搞乱破壁人的阵线。这样即使真的破壁人出现了,也会被民众当成小丑一笑置之,面壁者的策略也可以继续实行下去。

一种高效节能的室内换气策略

酷暑,下班回到住处总是同时打开空调和阳台窗户,但这样室内温度降低很慢。今日回来忽然灵光乍现,把分隔阳台的窗帘拉上,这样果然很快就有了凉意。

大致估算了一下,阳台面积占据总室内面积的 $\frac{1}{3}$ ,这样当阳台空气和室外空气交换充分之后再关上窗户,打开窗帘,整体的室内空气新鲜程度就达到了 $\frac{1}{3}$ ,如此往复三次,室内空气新鲜程度就达到了 $\frac{19}{27}$ ,基本上等同于室外新鲜空气的效果了。而且再考虑到窗帘并非严丝合缝,实际上的室内空气新鲜程度只会更高,且空调制冷效果基本不会受到影响。

雨夜

现在是凌晨2点22分。窗外突然开始下大雨,伴随着雷声大作。我洞开着两扇窗户,窗户下是乌龟的小暖灯,我也不怕雷电破窗而入,如果只看现在这份画面,称得上是人间难得的温馨了。

在未来的一个多月中,我分别要面临一个大项目,一个大比赛和秋招的准备,实际上的压力还是挺大的,但是深夜的这场雨像是上天对我的慰劳,让我有了一个停下来喘息的理由。

料想到今天要熬夜,于是早早打开了许嵩的歌单一首首开始听,只要听Vae就肯定不会困,因为基本上每一首都会唤醒记忆,让大脑始终处于兴奋的状态。随机播放到了《别咬我》这首歌,仔细看了下歌词,这才注意到原来这首歌是怼网络喷子的,之前一直听旋律,现在才听进去了歌词。十多年了,好像什么都没变,喷子还是喷子,只不过齐齐换了一茬,许嵩也还是许嵩。当时的喷子或许也如现今,也或许比现在快餐式的喷子更有持久力。无论什么波澜,现在看来都有了一丝单纯的味道。时间会剥离一切事件的毛刺,只留下顺滑的回忆。

翻了翻许嵩的博客和微博,博客停留在6年前,微博倒是越来越有了阳光大哥哥的气质,仅这一点就让我很是开心。前后看下来许嵩的博客,有几篇对我触动很大,他写下这些文字的时候和我现在差不多大,文字中充满了成长的痕迹,也颇有深度。这种深度不似名作大家一般难以逾越和晦涩生分,反而充满了同龄人的亲切感。

最近这几个月中,我开始产生对生活的疲倦和庸碌的厌烦,渴望不劳而获的巨额财富,渴望早早享受到梦想中的生活。生活在我看来是毫无意义的,一切的一切都是过眼云烟,甚至略有一丝“空”的感觉——一切都只是体验,一切也都只是因果而已,无所谓爱恨情仇。在许嵩《出离》这篇文章中,我看到了这样一句话:

但如果,岁月在你脸上已然留下不少年轮——你坐船的动机仍然只是到达一座岛,别人把岛上的一切美妙和宝藏说给你听就可以让你划船划的更带劲儿——那我能对你说些什么呢?

好像说出了我现在的状态,我相信这更是许嵩当初自己的状态。他已经找到了划船的乐趣,他并不想停靠在某座小岛,划船本身已经带给他了足够的快乐了。对于我而言,我仍然不得不将小岛作为目标,因为在现在的生活节奏下,我没办法享受生活本身的乐趣,只能寄情于一个个附加的符号之上,以平息内心深处的审视和质问。

我曾想过纵马江湖快意人生,但是仅仅是实习的经历就让我几乎消弭了对于未知的热情,或许我并非是主角,或许我只是还没适应NPC的生活。

窗外的雨声无论在哪个时代,都最适合怀念和沉思。回想2010年前后,理智告诉我这是很久很久之前了,但是记忆告诉我乐趣永远停留在那个时候。十年的时间看似改变了很多,一件件新生事物从耳边呼啸而过,造成了一种时代快车的错觉,但是左右观望一下,人还是人,所思所想、行为模式乃至福缘果报都没有什么变化,变的只是外套上舟车劳顿而沾染的灰尘,掸一掸也就能坦诚相见了。不知道是Vae的幸运还是我的幸运,他在某一刻的思维被永久固定在了互联网上,我看到了他的所思所想,有所感悟,会心一笑,但这一切都不会激起哪怕一点点水花,转瞬就消失在信息洪流中了。

虽然说读一本好书就像在与读者对话,但是强行和段位不匹配的人对话是很流氓的一种行为,因此我不喜欢看思维过于复杂的书,归根结底,这思维的复杂性并不在于训练和推演,而在于切身的经历,若有了经历和体悟,自然如见夙昔老友,如果没有体悟,那么再好的书也只是催眠剂罢了。人并不是什么高等的动物,感同身受是不可能的,结果往往只是自我感动。从读书如会友这点上来说,我认为自己可以与2011年的许嵩交朋友了。

我深知这篇文章结束之后又将回到现实中,继续紧迫而毫无章法的生活。我本以为自己的抗压能力足够强,但是我错了,面临一件件大事,我唯一想做的就是逃脱。“我也还能码点字,靠写字维生也不错”,偶尔也冒出过这样的想法,但也只是想想而已。说到码字,第一个想到的是微信公众号,第二个想到的是起点,第三个想到的是微博热搜,都是标准的套路和模板,外加一些技巧,我掌握不了这种技巧,这么一想,可能还是写代码更适合我。我也想过大不了就去创业,能挣钱就挣钱,挣不了钱找个清静地方死掉算了,我并不畏死,只是怕死前的痛苦罢了。我想骗自己,骗自己为了父母亲人不伤心而活着,但是我骗不了我自己,在考虑死这件事时,我从未想到过父母亲人,我真的挺累的,我想对自己的人生有唯一的一点自主权,我不想被别人剥夺这种自主权,即使是我的父母。

话题扯远了,我这会还没那么想死,也没那么想活着,正是处于一种最完美的的NPC状态,一种接近麻木的状态,我想趁彻底麻木之前摆脱它,但是何其艰难。未来的我会看到这篇文章吗?即使看到了,能回想起我此刻的痛苦和无助吗?我相信时间是“不仁”的,它同样会剥离这段经历的毛刺,只留给我回忆本身,假如我能活到那时候的话。

现在回想一下初中生活,一共三年,但是好像有无数闪光点,自然而然能想起来,相比之下,倘若让我去回忆大学时光,我只能看到一堆琐碎的片段,但是找不到什么一定要说出口的东西了。

初中的时候,我能想到某天下午在新华书店看到了《邪神传说》这本小说,那会同学们都在讨论网络小说,但是以老师为代表的主旋律却在批判小说,我一直以乖学生为骄傲和资本,所以第一次看到这本书时的兴奋程度不亚于第一次看毛片,充满了叛逆和未知的惊喜——我想生活的激情和乐趣也恰恰来源于此。在这本小说中我第一次看到了之后无数小说都会用的大白兔的比喻——用于比喻姑娘的胸部。看到小说中的接天城,我的心跳总会快几拍,因为这和《问道》中的天墉城很像,一度让我以为这就是在写问道,虽然我很清楚内容是对不上的。那会的世界观很小,世界上只有一款游戏,所以无论什么事情都想往上去套,有一点相似之处就像发现了宝藏一般。

我也记得第一次拿了100块跑去网吧战战兢兢跟老板说充100块的光宇币,然后一口气跑回家把光宇币换成问道币买了一套70级法金套装,在屋子里大喊“我有钱啦!”,我确信这种快乐就算我真的有了1个亿也不会再有了。现在想来很是滑稽,自己之前竟对主旋律抵制的东西如此害怕和敬畏,而且还是明知这是乐趣所在的前提下,因为这该死的主旋律,损失了多少乐趣啊。老师当时说乐趣未来有的是,分明是在骗人,乐趣只有那个时候才会有,而且满意度是最高的,一切都是全新未知的,现在,一切也仍然是全新未知的,但却毫无探索的欲望了。

当时还在新华书店看完了《四裤全输》系列,现在回头瞧瞧都是陈年老梗,但是当时却能给我带来对于明天的渴望。现在对我来说明天的渴望就是彩票中奖罢了,除此无他。再仔细想想,初中也是有很多烦心事和不那么精彩的回忆的,但是不去想它们也就没事了,能第一时间想起来的都是精彩而快乐的。现在的生活已经失去了乐趣了,就像《三体》中的歌者文明一样,生存是最高的意义,乐趣没了就没了吧。

还有什么想说的吗?好像也没有了,就是在这里倒到苦水,然后该怎么着还得怎么着,只能是熬着,最大的希冀就是能有让我开心的事发生,但是我并不知道什么能让我开心。我嫉妒初中的自己,因为游戏里的好装备和好宠物就能让我带着笑意度过整整一年,多么奢侈和廉价的乐趣,现在哪里去买呢。现在或许是更多的钱吧,在我白天时还是很想要的,但是此时此刻我审视内心,发现空无一物,我也并不想要更多的钱,但是我必须要给自己找个目标,不然可能真的会死掉的。

本来是在说Vae,自己写着写着就充满丧气话了。我曾以为自己不会是个充满负能量满嘴抱怨的人,但是我发现自己的抱怨比周围任何人都多,自己的痛苦也比以往想象的要更强烈。上帝,如果你能拯救此时此刻的我,我愿意衷心皈依于您的门下;佛祖,如果你能度化此时此刻的我,我愿意永生永世为您掌灯。请救救我。

我找不到生活的意义,我找不到未来的盼头。我不能从生活本身汲取营养和动力,它就像一把锉刀一点点挫平我的心,却不告诉我这样做的目的是什么,我想反抗,但是也不知道为什么而反抗,也不知道反抗的目的是什么。我可能太过于钻牛角尖了,这种问题不可能有答案的,一直想又有什么意义呢?可是意义本身就没有意义,想想又怎么呢,至少还有件事做,至少还不会那么快地死掉吧。

不想停笔,但是也不得不停了,天亮前尽快找到目前的一个Bug,修好它,然后开始接下来的工作。“加油”这两个字过于轻飘飘,充满了一种程心般的圣母气息,让人恶心。我觉得相比于“加油”,更加激励人心的话是“这很快就会过去的”。

2019年5月19日03:37,于北京市北坞嘉园南里。

闲语杂谈 | 公交卡的工作原理

这个问题困扰了我很久了——公交卡是怎么工作的,或者说在使用公交卡的过程中数据是怎么流动的?根据数据存储位置来看,无非是分为卡内存储和中心服务器存储,公交卡的实现究竟是哪一种呢?

正常角度来考虑,卡中的余额肯定是存储在中心服务器的,但根据现实情况来看,无论公交车行驶到多么偏僻的地方,也无论刷卡人数的多少,刷卡过程都是瞬间完成的,全市有这么多公交车,中心服务器能无视物理环境而提供如此顺畅的服务吗?更何况还有更复杂的单点操作,比如当两辆公交车相会于站牌时,一乘客在短时间内从一辆车换乘到另一辆车,并迅速刷卡的处理逻辑,这种事务性问题对于中心服务器来说也会比较头疼。

以北京市为例,根据北京交通发展研究院的数据显示[1],北京市无轨交通日均客运量为一千万人次左右,按照一天运营10小时来算,平均每秒钟的客运量为接近300人,也就是说所谓的中心服务器需要承载300QPS的请求并且做到瞬时响应,如果严格来考虑的话,其实乘客的时间大部分是用在了乘坐,用在刷卡这个行为上的时间会更短,这样一来QPS肯定更高,更不要说还有BUG级别的早晚高峰了。换句话说,如果公交系统真的是实时连接了一个中心服务器的话,那么这个服务器相当于需要撑起一个千万日活的应用,而公交系统已经存续了很多年,远早于移动互联网的时代,这么看来数据存储在中心服务器似乎不太可能。

那么数据单纯存储在卡中是否可行呢?似乎可以解释刷卡响应速度和事务性问题了,但是这样一来,肯定有人尝试修改数据薅点社会主义羊毛,也不能真正投入使用。肯定还是需要一个中心服务器,或者需要一个去中心化的公交车互联系统(这条区块链的Idea值500个亿,加智能合约值1000个亿)。如果使用反证法的话,假设数据只存储在卡片中,那么北京交通发展研究院就无从得知全市公交车的日均客运量,那么上一段就写不下去,也就不会写到这一段,既然写到了这一段,说明假设不成立,即数据不可能单纯存储在公交卡中。

如果想实现公交车刷卡系统的话,可能需要权宜之计,即把中心服务器分为两层,外层是将近三万个[1]计算节点(公交车以及用于充值的地铁站),内层是真正的中心服务器(这条边缘计算的Idea值500个亿,加上云计算值1000个亿)。乘客在刷卡的时候只和当前公交车进行数据交换,同时数据也存储在卡中。公交车等待网络良好的时段或者定时与中心服务器进行数据交换,以此保证乘客数据的可靠性。在这个系统中,如果乘客单方面修改了卡片中的数据,那么等合账的时候肯定能发现没有这笔交易记录,直接把钱扣掉即可,这样也就没办法薅羊毛了。

公交卡信息系统架构设想
(图1:公交卡信息系统架构设想)

这个系统似乎已经可以解决上述的问题了,那么回头再来考虑公交车刷卡的场景,有一种非常常见的情况:下车不刷卡。对于下车不刷卡的情况,车上的广播会说“下车不刷卡,下次刷卡时将扣除最远里程无折扣票价”,其实这个提示已经告诉我们原理了,下次刷卡时扣除,说明此时下车后并未发生扣费,如果以后再也不刷卡,可能也就永远不会发生扣费。这种情况不可能是中心服务器来管控的,一来公交车与中心服务器的通信做不到实时,那么下车后迅速跑到另一辆车上刷卡就无法做到“扣除最远里程无折扣票价”了,二来如果真的是中心服务器来控制,也不需要等到下次刷卡时才扣费。如果要解决这个问题,另一个猜想是公交卡中不止存放余额信息,还存放着若干标志位,这种情况下需要一个“休想薅羊毛”标志位,上车置1,下车置0,此外还存储本趟车的最高票价,如果上车刷卡时发现“休想薅羊毛”标志位是1,那么就先扣完上一辆车的钱,再开始本辆车的扣款流程。

还有另外一种情况,从比较大的时间粒度来看,余额信息肯定是以中心服务器为准的,那么如果卡内信息出现了错误,无论是薅羊毛还是被薅羊毛,中心服务器的数据是在何时写入卡中的呢?上车刷卡时肯定是以卡内数据为准的,因为公交车不能知道是哪张卡要上车而提前从服务器获取数据,就算能提前获取,也不能保证此次数据获取之后到乘客上车之前没有发生后续余额变动。那么是不是下车刷卡时写入的呢?也不是,如果乘客只在车上呆很短的时间,公交车也不能保证在这段时间内完成和中心服务器的数据交换。那么是不是在充值的时候呢?这样也不行,如果羊毛收割者修改公交卡余额到2147483647元,那么往后余生也没有充值的必要了,服务器只能干瞪眼干着急就是没办法。这种情况我想不到有什么好的解释,暂时留白。

在翻找数据的时候,发现银行中也存在类似公交卡的脱机消费,银行卡的安全性肯定比公交卡更高,其中应该是涉及了比以上假设解释复杂得多的过程,需要翻翻论文才能找到正经的解释了。关于IC卡的安全和脱机消费的真正原理就暂时不挖掘了,留个坑下次再写。

参考文献

[1]. 北京交通发展研究院. 2018年北京交通发展年报[EB/OL]. http://www.bjtrc.org.cn/InfoCenter/NewsAttach/2018%E5%B9%B4%E5%8C%97%E4%BA%AC%E4%BA%A4%E9%80%9A%E5%8F%91%E5%B1%95%E5%B9%B4%E6%8A%A5.pdf. 2019/2019-03-27

咪蒙事件反思录

就在昨天(2019.02.21),咪蒙的微信公众号正式注销。

事情还要从年前的一件事说起,咪蒙旗下的公众号“才华有限青年”发布的《一个寒门状元之死》在朋友圈广泛传播,并在新浪微博引发了舆论反弹,这篇文章随后被迅速删除。这种文章跟知乎上的一大票“说说我的一个朋友”一样,看两眼晕车的感觉就上来了,也无怪大家会骂得那么惨。在2月1日,咪蒙团队发布道歉信,宣布微信公众号停更两个月,微博永久停更。咪蒙终于被自己的月薪5万的实习生坑了,就算不是这个实习生,也有下一个来坑。

咪蒙在微博永久停更,但是微信只是停更两个月,说明了咪蒙想要暂避风头,之后再接着卖自己的毒鸡汤,毕竟微信圈子封闭,喜欢她的自然也会继续喜欢她。但是时隔仅20天,微信公众号就注销了。账号是主动注销的吗?是的。是因为咪蒙良心发现而注销的吗?你猜。联想最近从吴秀波、翟天临事件中透露出的对于明星群体的容忍度收紧,背后到底发生了什么就留给诸位看客品味了。

咪蒙该不该得此下场?该。这事往大了说,就是某种程度上的发国难财,社会本就焦虑,没能给出正向引导,反而还唯恐天下不乱,在输出负面价值观的过程中赚得盆满钵满,留下了原地傻笑的人群。有人说咪蒙引发了全社会的一系列焦虑,比如对于熊孩子的厌烦,对于“直男”的轻视,还有那篇当时我也非常赞同的《致贱人:我凭什么要帮你》。然而这是太看得起咪蒙了,咪蒙在这些事件中的角色就和杨乐多在咪蒙风波中的角色一样,只是赶上她了而已,没有她也有别人。整个社会的焦虑值本来就是处在一触即发的满条状态的,咪蒙只是发现并推了一把。但既然你推了,被抓住裤脚一起带下山崖也不是什么意料之外的事情

在这件事发生之后,很快就出现了一些如“咪蒙倒了,但是我并不高兴”之类的理中客的声音。大意都是相同的,说白了就是“我不赞成你的说法,但我誓死捍卫你说话的权力”,咪蒙输出负面价值观是不对,但是不能一刀切,就连头部的声音都如此轻松随意地拿捏,我们之后还有什么思想自由的可能。然而事实真的如此吗?咪蒙的错误可不只是乱说话,作为大众性的KOL,她的错在于没能正确行使自己的权力,既然如此,引入公权力进行制裁是非常合理的,一如当年的卢本伟,这已经不只是“我可以骚,你不能扰”的程度了,骚得太过了。咪蒙的错是实实在在的,至于透露出的潜在的更多的信息,现在还是空谈,也只能是空谈。

从另一个角度来说,咪蒙被封杀和吸毒艺人被封杀,和杀人犯被执行死刑有何区别呢?都是公权来审判,公权来执行,若是人人自危,也应该首先自危自己的命其实不在自己的手里。为什么大家不这么想呢?亚当斯早就给出了答案:“任何在我出生时已经有的科技都是稀松平常的世界本来秩序的一部分;任何在我15-35岁之间诞生的科技都是将会改变世界的革命性产物;任何在我35岁之后诞生的科技都是违反自然规律要遭天谴的”。有很多国家废止了死刑,原因和理中客们是一样的,在强大的公权和个体之间,为了保证公平,需要偏袒弱小的一方,也就是说其实大家并不否认罪犯该死,只是想帮帮自己臆想中这个小可怜罢了。然而很遗憾,这不是过家家,既然犯了这么重的罪,就该受这么重的罚

咪蒙下场如何其实并没有所谓,我们应该反思的是这件事情透露出的一个事实:我们习以为常的东西对于局外人来说可能是颠覆三观的。比如无死刑国家的人可能无法理解死刑,虽然我们看到的一些国外的声音很多都提及“你看看人家中国有死刑多好”,但是请注意,这是被筛选之后的言论,英国民主的群众们说脱欧就真的脱欧了,《欧洲人权公约》是怎么通过的还用多想吗?另外我们也可能是自己的局外人,这样的事件近年来发生了非常多,咪蒙只是其中一个并不算大的而已。

咪蒙事件也好,翟天临事件也好,甚至是《流浪地球》现象也好,类似的事情可能会越来越多,趋势是你我无法左右的,事情也本就不存在简单的善恶两面性,唯一能做的就是改变和适应,闷声发大财才是最好的

古法编程 |『五星出东方利中国』锦护膊的前世今生

文中图片和部分描述来源于BiliBili《国家宝藏》节目

又是一个忙碌且清闲的周末,晚上刷B站打开了《国家宝藏》节目,最近更新的是第二季第六集,讲述的是新疆维吾尔族自治区博物馆的三件馆藏。这一期的节目相对来说没有前几期搞笑或者煽情,而且太师不怎么露面(笑)。当看到了最后一件馆藏文物时,发现这个是知乎上被吹爆的『五星出东方利中国』锦护膊,而且守护人还是我非常喜欢的蓝天野老爷子,所以顿时来了兴趣开始往后看。

国宝正面

就像杭州博物馆馆藏的战国时期的水晶杯一样,如果摆在地摊上看起来也就值5块钱,但是当得知这些东西是来源于千年以前的时候,就会产生一种恍如隔世的感觉,它们正因为看起来太过寻常,所以才在经历了千年催化后带来了厚重的历史感。不过就像对待其他文物一样,刚开始我认为这件文物的当代价值在于其背后绑定的历史,而制造工艺的附加于其上的价值只在遥远的过去才有用。

在节目后期的现代故事中,节目组请到了中国丝绸博物馆的赵丰馆长为大家讲解千年前织机以及这件锦护膊的复原过程。在提到这件织机的时候,节目组称其为“中国古代的计算机”。乍听之下感觉有些膈应,我一向不喜欢强行把当代所有的概念都和古人的所作所为绑定在一起,比如什么伏羲女娲结合象征DNA双螺旋结构之类(节目组中虽然称这是一个巧合,但是把两样东西这么暧昧地塞到一块绝对会让一些人产生盲目的误解)。但是听到后来我才发现这件织机对得起“计算机”的称号,并且也加入到了“奈何老夫没文化,一句卧槽行天下”的大军中。下图是这件织机刚出土和复原之后的样子。

织机出土

织机出图

因为这件锦护膊上有复杂的图案,一开始对于原理的猜测是把一根纬线一段段染成不同颜色,然后把多根纬线怼到一起拼成的,但是看到了原理讲解之后,我才发现古人真的是无比智慧。其中确实用到了类似二进制编码的概念,而且并非是把程序烧录到ROM中,而是真正的可编程。下边组图是节目中对于原理的讲解。

织机原理

织机原理

织机原理

织机原理

织机原理

织机原理

织机原理

对于我们熟知的一副像素图片而言,其中的每个24位深像素的颜色的都是由RGB三种颜色的数值组合在一起决定的,比如#3C4B6A这个颜色代码表示红色的数值是3C,换算成二进制就是0011 1100,这几个二进制的数值决定了红色的存在感有多强,在这件织机中,它使用的可以认为是5位深的像素编码格式,每一个像素点由5根经线和1根纬线共同决定,假如经线的颜色从左到右依次是蓝色、绿色、红色、黄色和白色,那么如果纬线把除了绿色之外的其他四根经线压下去,这个像素点就呈现出绿色,其他颜色同理,这样经过多达84片综(梳理丝线的工具,好像也是“综合”一词的起源)的不断调整来控制多达840,000个像素点的颜色,最终才得到了这件珍贵的国之珍宝——『五星出东方利中国』锦护膊。

织机原理

古人的智慧由不得你不服啊。当然具有智慧的不只是古人,今人在复原文物的过程中肯定也贡献了很多奇思妙想,没有他们的努力,古人的智慧也早就消散在千年的岁月中了。《国家宝藏》是蛮好的一个节目,能让人爱看,能让人看进去,不是靠苍白的说教,而是靠讲诉故事,靠平等的交流,靠古人跨越时空的倾诉,靠情感上的共鸣,真正引发观众的民族自豪感和爱国热情,把历史的灰尘从文物上抹去,赋予了它们新生。

电影时评 | 白蛇·缘起

世间两条腿的恶人多得是,长了条尾巴又如何?

昨天晚上无意间在微博刷到了这部电影的官博,惊异于宣传片的高质量,更惊异于制片方在宣传上寥寥无几的投入。因为被坑习惯了,所以一开始觉得这部片子可能只是金玉其外,翻了翻官博的推文,发现评论是一边倒的好评,其间夹杂着对官方疲软宣传的抱怨。在一些社区中你会发现“自来水”们的画风都是下边这样的…

只要你去看《白蛇·缘起》我们就是一辈子的朋友

上次见到这种阵仗还是2015年《大圣归来》的时候,无论是微博还是B站都是铺天盖地的自来水。但是随着《大圣归来》电影的上映,评论开始回落,社区也出现了一些更为详实和客观的评价,甚至有诸如LexBurner的“一坨狗屎”之类的纯负面标签。

那么《白蛇·缘起》到底如何呢?没有调查就没有发言权,于是大晚上又跑到电影院赶了个晚场,看完了这部片子,难得的非子供向商业片。就画面上来说,下边这张图就可以代表整部电影的质量了。

《白蛇·缘起》主题MV片段

整部片子的故事线很简单,和白蛇传没有太大的关系,片名中的“缘起”也点明了这是一部前传性质的作品。神来之笔在片尾的彩蛋中,500年后,许宣转世成了许仙,在断桥邂逅小白和小青,伴随着《青城山下白素贞》的旋律,500年的思念和痛苦烟消云散,尽化作那一撇浅浅的笑。

结尾彩蛋

《白蛇·缘起》和《大圣归来》之间是有很多的相似之处的,无论是质量上乘的画风(至少在主角的刻画上舍得花钱)还是家喻户晓的IP都赢得了大量的好评。有人说这是在卖情怀炒冷饭,但是有上千年积累的情怀和冷饭为啥不用呢?就像余潇洒所说,“入宝山空回,这不是勇敢,而是愚蠢”。两者的相似之处还在于单薄的剧情上,节奏前慢后紧,画面和音乐上的优势被内容抹消了不少。这是需要改进的地方,承认,然后正视,就会越来越好。

然而两者很有可能面临不同的命运。

相比于《大圣归来》10亿的票房,《白蛇·缘起》目前首周票房只有5000万左右,全片制作成本接近1亿,票房分成约为1/3,也就是说3个亿的票房才能保证不亏本,照这个趋势下去又将成为一个血本无归的典型。《大圣归来》不只有精良的制作,还有强大的宣发,能引起大范围的讨论热潮,票房就算不破纪录也能收回成本。反观《白蛇·缘起》的制片方,到现在也只是不温不火地发几条微博,连个热搜都没买,简直气得人肝疼。

《白蛇·缘起》实时票房

一方面是焦急的粉丝,一方面是没有什么动作的官方,这是一种略显滑稽的场景。片方显然不傻,那么现在唯一的解释就是——没钱了。互联网没有让推广更便宜,只是让推广费花得更快而已。或许追光动画在制作的时候留出了宣发的预算,但是随着制作成本的扩张,这部分预算也不得不投入到制作中。不过,从票房趋势中也可以看到希望,虽然净票房的增长被工作日截断,但是在排片基本不变的情况下,票房占比是在提升的,希望到周末能看到转机的来临。

从几年前起,国漫崛起的呼声就不绝于耳,从那之后也确实出现了很多好看的片子,大家忽然发现原来老祖宗留下了这么多好东西,有这些还担心什么文化入侵。但是另外一个可悲的现实是,这些片子连收回成本都成了一种奢望,在一次又一次现实的打击之下,满怀热情的投资人和制作者是否还有勇气开始下一个项目呢,我们不知道。

但是我们可以给出答案。

关于计算机学习

我认为计算机领域真正的学习应该是“博客式”的,即遵循“遇到问题->查阅资料->弄懂问题->有成就感->总结记录”,早些时候我把这个叫做“需求驱动学习。

举个例子

嘟嘟(我家泰迪)平日里自诩Java小王子,无论是手写Runnable还是一口气1 << 8个线程池都信手拈来。有天老板(我)在微信上说:“大家都说‘人生苦短,我用Python’,蟒蛇听起来比咖啡厉害多了嘛,你,赶紧用Python把后台重写一遍”,嘟嘟一边暗自庆幸老板还没听说过PHP,一边嘀嘀咕咕开始了改造之路。在迁移Java的多线程部分的时候,嘟嘟想用Python的Thread来做,但是发现Python中有万恶的GIL(Gay In Love Global Interpreter Lock),想要实现走位酷炫的线程池的计划泡汤了。

一些社区建议使用多进程来代替多线程,但是嘟嘟在写了两个Demo之后发现它们和多线程不一样,变量竟然不能共享,这代码还怎么写,于是继续面向百度编程,在误点进去十几个培训机构的主页之后,嘟嘟终于找到了一个新奇的解决方案——异步编程。在短暂纠结于yield和yield from的写法之后,嘟嘟又找到了更好用的async/await,并顺利把Java上的多任务移植到了Python上。好景不长,有天嘟嘟不小心让视频转码的任务读入了硬盘深处700多个G的马克思主义视频教程,发现Python的其他多任务都不能正常响应了。在妙峰山烧了七八柱香之后,嘟嘟才了解到原来是因为一个异步任务被阻塞住了,导致很多其他任务不能被处理。最终嘟嘟还是把计算密集的任务扔到了多进程上去做。

在整个项目迁移结束之后,嘟嘟开始对迁移过程进行复盘,发现以下几点需要搞明白:

  1. 为啥多进程变量不能共享
  2. 为啥有GIL在多线程就不好用了
  3. 为啥一个异步任务阻塞会影响其他任务
  4. 为啥在百度搜Python老蹦出来培训机构

于是嘟嘟开始了新一轮的调查研究,在经历过以往的教训之后,嘟嘟学会了在一个404的网站上搜索404的信息。这才明白了进程和线程的关系,明白了进程如何通过消息队列进行通信,明白了异步编程的好处和局限性以及事件循环的原理。无论是进程、线程、协程还是纤程,本质都是想要达到一个目的,即“在需要的时候占用CPU,不需要的时候释放CPU”。找了一堆的资料之后,嘟嘟又打开了大学时崭新的操作系统课本,把处理器这一章从头读了一遍,发现醍醐灌顶,每一句都是好东西,感叹自己当时上课怎么就没发现这本书的精妙之处。感慨之余,决定把自己的感受记录下来,标题就叫《关于计算机学习》。

我的经历

从本科一年级第一节编程课开始,我就喜欢上了编程。之后整个一年级都沉浸在ACM刷题和囫囵吞枣的学习之中。虽然当时只会命令行编程,但是还是做出了一些小玩意,比如自动计算游戏中交易的收益、收集名侦探柯南TV版的分集信息等,当时没什么备份的概念,也不懂版本控制,现在程序都遗失了,留下来的只有一个基于MFC的计算器。

我的专业是计算机科学与技术,当时要学习一些计算机的基础课,比如操作系统、数据结构、计算机组成、计算机网络、编译原理、数据库等,在大学前两年中,我一直都特别讨厌这些科目。一边是自由新奇的编程实践,另一边是枯燥和看似无用的琐碎知识点——就像高中一样,显然后者无法引起任何人的兴趣——即使有,在一个具有强实践性质的专业中谈纯粹在课本中获得的快乐也和耍流氓无异。当时在这些课程中我相对不那么讨厌的是数据结构课,因为其中的很多算法我在很久之前就已经在POJ上刷过很多次了,所以上课的时候有一种仅通过预习无法感受到的亲切感——这也是本文想要传达的观点。

我是什么时候有了“还是制定专业课计划的那几个老头厉害,是我当时太年轻了”这种想法呢?在大二结束和大三开始这段时间,随着写代码越来越多,接触的领域越来越多,我开始做了一个在当时看来算得上是巨无霸的项目,从前端到后端都是我一个人完成。和我之前接触的项目不同,这个项目是真的有很多用户的(笑),所以系统上线之后不断暴露出越来越多的问题,比如数据库查询很慢,比如网络延迟很高,比如客户端卡顿等。在给自己收拾烂摊子的时候,开始重新学习了多线程、数据库、计算机网络(主要是退避算法之类),然后猛然惊觉,“这不就是我大学里的专业课么?”。

时间一晃到了现在,我已经研二了。在给师弟师妹们介绍我那点不成器的经验时,我的观点也从“多实践多编程”转变成了“先把基础打好”。计算机科学与技术的专业课都很重要,无论讲课的老师水平如何,都一定要学好,它们是构造整个互联网空间的基向量。话虽如此,这并不代表我完全同意目前计算机教学的思路,我认为计算机领域真正的学习应该是“博客式”的,即遵循“遇到问题->查阅资料->弄懂问题->有成就感->总结记录”,早些时候我把这个叫做“需求驱动学习”。

我的观点

为什么我们都不爱听大道理?为什么我们听了那么多道理仍然过不好这一生?为什么我们反感鸡汤?

我认为计算机的这些基础课就像所谓的大道理一样,没有相关的经历作为培养基的话是无论如何也不可能理解的,自然只能觉出枯燥无味和腐朽陈旧来。但是倘若踩过了无数的坑就会明白,这些基础课本字字珠玑,毫不过时(也可见我们的科学发展其实并没有大家想的那么快),古人诚不我欺也(有多少人都写成“诚不欺我”,意思还是一个意思,但是对话场景瞬间从项脊轩蹦到了王老大烧烤摊)。想要理解多少大道理就要踩多少坑,该踩的坑一个都少不了。

不要误会,我不是在宣扬基础教学无用论,我的意思是初学者一开始不必过于深入地了解基础知识,因此此时无法真正理解,不如先拓宽知识面,暂时了解有这么回事就可以,把一部分的时间匀出来自己去折腾,只要智力正常并且适合干这行,很快就会产生深入学习的需求的,这时候的学习效率远比按部就班划拉书本要高很多。以嘟嘟来举例,学习处理器调度的过程可以分为以下几个阶段:

  1. 了解到一切计算都被分解成指令交给处理器顺序执行
  2. 在Bilibili上自动监测赶海四天王的视频,并及时下载
  3. 查阅类似实现的开源代码,学习,重复踩坑,完成需求
  4. 查阅课本或工具书,学习进程和线程的原理、关系以及区别
  5. 拓展了解协程、纤程、Actor等异步编程模式
  6. 接触NodeJS、Python、C#、GoLang在多任务上的做法,对比学习
  7. 感觉自己很厉害,写博客交流学习,一写笔才发现还有很多细节不懂,继续学习
  8. 开始踩下一个坑……

以上只是一个捏造的例子,用来说明一个渐进式的学习过程可能是什么样子的,实际过程中的步骤或许没有这么精细和繁琐,但大步骤不会差很多。我可以保证相当程度的低年级计算机专业同学对于以上的这些东西都没有清晰的概念,所有东西都糊作一团。根据我浅薄的经历来看,有一些经验比较丰富的同学可能只是停留在前三个阶段,实事求是地讲,代码风格和注释都很漂亮,但是就是无法再往前一步。顺便一提,还有一些同学在学习某些语言或者框架时,总是会虔诚地走完“买书->找视频->进技术群”这个流程,我认为这样效率是比较低的,有那百度云下载视频的时间官网文档都看了好几遍了。不如先找个点切入,即使是Hello World,然后一步步拓宽把整个需求盘下来,在复盘的时候再通过书或者是视频系统学习。系统学习应该是后置的,连它能干嘛都还不知道,系统学习又有什么用呢,结果只能系统地遗忘。至于技术群,其作用是收表情包,和技术没啥关系。

无论需求从哪里来,是随便玩玩,还是饭圈妹子的抢票委托,还是老板或外包的要求,只要你决定实现一个需求,下一步就是分析和调查需求应该怎么实现。如果你有一定的基础知识(即使是广泛而不深入的),那么调研的过程会更有针对性,接下来就开始”Done is better than perfect”的过程,其间随着踩坑会开始接触相关领域的知识,然后拓展学习总结出一套敝帚自珍的宝贝,在成就感和虚荣心的驱使下,把这些碎碎念记录下来,记录的过程发现原来还有很多细节自己根本没弄清楚,再去迭代学习,一步步把这篇博客写完。基础知识在这个过程中会一步步得到加强,每一次都是重新认识,每一次的认识都更加清晰几分。

或许你又会问,总是实现一个又一个大同小异的需求,如何才能摆脱成为CRUD Boy的命运呢?多想,多拓展,多总结记录,并乐在其中,It’s that simple.

茶和牛奶

墙头雨细垂纤草,水面风回聚落花。

井放辘轳闲浸酒,笼开鹦鹉报煎茶。

床上躺了一下午,起身换衣服后准备去吃晚饭,转念一想又懒得去了,于是便用热牛奶冲了点玉米片应付一下,或许是饿了,冲好之后直接喝了一大口,被狠狠烫了一下。冒冒失失吃完之后,躺在椅子上端起一杯茶小口抿着,心里突然想到:“为何自己喝茶时能这么慢条斯理,但是喝牛奶时却么狼狈”,想来想去觉得是“无欲无求”四个字。在喝牛奶时是冲着其明确的价值去的,因此并不是为了喝牛奶而喝牛奶,于是喝的过程被简化和忽略了,进而缺少了一种仪式感,而仪式感带来的就是从容和优雅。

无怪乎古人爱饮茶。爱茶之人爱的不仅是茶的香沁,更爱的是饮茶时的淡然。今人面临着越来越快的世界和不断膨胀的欲望,很难实时保有无欲无求的心境,但人心总是会累的,因此偶尔忘掉世俗烦心事是非常重要的一种能力。无论生活如何,偷浮生半日,捧一杯香茗,小口品味,钟摆骤然慢了下来,心情也变得开阔和舒缓,于是轻轻放下茶杯,欣慰地夸上一句“真是好茶”,实乃人生一大快事。

繁事压身,聊作酸文。