这个问题的原因可能有两方面,一方面是心理层面上的原因,像是生活压力大,最近发生了重大的生活事件,或者是一些心理疾病;而另一方面,则可能是患上了「注意力缺陷过动障碍」,简称 ADHD,俗称「过动症」。
从传统的视角来看,似乎容易分心是一种「人格上的缺陷」,它代表着一个人傲慢、自大、不尊重人,但实际上真的是这样吗?当然不是!
如果是心理性的因素,需要透过心理咨询来解决。而如果是 ADHD,则需要专业的精神科医师一起参与。针对这两类问题,本章我们会共同讨论具体的解决方法。
在被注意力这件事情折磨了二十九年之后,我的痛苦终于战胜了拖延,搜罗了全北京能看成人注意力缺陷的门诊。与挂号系统搏斗了整整一个月,终于成功得到了与医生共同讨论这个问题的宝贵机会。
「注意力缺陷」这个概念常常被污名化,让我们来回想一下上学的时候,班里那个总是坐不住、调皮捣蛋的孩子,究竟受到了什么样的对待。
对于孩子来讲,那些无端的指责顺理成章:「他破坏了规矩就要受到惩罚」。
但如果我们进一步思考下去,将这个孩子大脑当中异于常人的结构,或者他背后的生活家庭因素共同纳入考量,最终会发现这些对待本身是不公平的、残忍的,也是缺乏共情的。
的确简单的「惩罚」可以快速且有效地消除现象,但它并不能接触到问题的核心。相反地,这种公开的攻击和羞辱却在残害着孩子的自尊,以及其所有同班同学的社会认知能力。
我在候诊的时候也抱着这样的担忧,但踏进门的时候医生并没有作过多的评断。简要地问了我一些问题,「房间是不是很乱?」、「上课没办法集中精力?」、「有没有总是丢三落四?」
接下来,还问了一些和心理健康有关的问题,像是焦虑、抑郁、睡眠。最后得出的结论是:「小的时候注意力的确是有问题的,但是大多数个案在成年之后症状就会纾解,而你现在的注意力问题既有可能是未能自愈的 ADHD,也有可能是焦虑情绪导致的不能集中,具体是什么问题还需要进行鉴别诊断。」
实际上,注意力问题和焦虑、抑郁之间的关系非常复杂,一方面焦虑、抑郁状态可能导致注意力无法集中的问题。但另一方面,ADHD 患者通常会伴有一定的社会功能受损,像是无法完成课业和工作、无法控制情绪导致和同事之间出现冲突甚至被解雇、无法长期维持良好的人际关系等,这些症状又会引发焦虑、抑郁等问题。因此二者的因果关联需要医生仔细地分析。
于是我就被发配去做检查和填表咯。当代人嘛,哪有不抑郁、焦虑的,好在测出来的只是轻度抑郁和轻度焦虑。带着这些结果我第二次见了医生,最后得出的结论是:「很不幸我直至成年,注意力缺陷依然没有自愈,如果想要吃药的话需要进一步做一次更加全面的 ADHD 访谈,如果结论是阳性的,那么可以开药。当然,对于成年人来讲,工作环境对注意力的要求没有上学的时候大,所以如果你觉得自己的情况没有糟糕到一定程度的话,不吃药也可以,毕竟药物都是有副作用的。」
隔了一周,我再次前往医院做了 ADHD 访谈,内容相对来讲比之前做的一大堆检查要更有针对性一些,一套 M.I.N.I 问卷用于筛查常见的临床问题,除了先前讲的焦虑、抑郁、强迫、睡眠之外,还有和成瘾、酗酒有关的问题。接下来就是专门针对 ADHD 设计的 DIVA-5 访谈了,医生一个问题、一个问题地询问,像是:「当别人直接跟你说话的时候,你是否经常觉得自己没有在听?」、「你经常感到烦躁不安吗?」我需要做的是同时回忆儿童期的情形和现在的情形,并分别做出回答。在回答了一系列问题后,我得到了「是注意力缺陷与过动障碍混合表现特征,同时表现为注意力缺陷和过动两种情况」的结论。同时医生建议我多关注「焦虑、抑郁和强迫」的问题,如果需要吃药的话可以下次过来开药,专家、医生都能开。
ADHD,全名注意力缺陷过动障碍。从名字当中我们就能看得出来,这个疾病的典型症状分为两个部分:一部分是注意力缺陷,也就是经常溜号、丢三落四、无法专注于要做的事。另一部分是过动和冲动,具有这样症状的人就像一个 24 小时不停运转的机器一样,不停地嗡嗡转,永远停不下来。他们行事鲁莽容易冲动,做事也不太考虑后果。最后,也有一类患者是混合型的,他们会同时表现出两种症状。
这种疾病俗称「过动症」,但这是一个相当糟糕的称呼,因为它不仅忽略了「注意力缺陷」这一部分事实,同时也包含了某种具有嘲讽或者揶揄意味。
如果做一些比较感性的描述,学生的感受可能是「所有的资讯都在天上飘,但什么都把握不住」、「所有条件和公式都在不断地闪烁,没办法聚焦在特定的推理步骤当中」、「随便一点外界的资讯都会打断当下在做的事情」。这种「把握不住」、「生活失控」的感觉很有可能就是注意力无法保持的感觉。
如果「注意能力」闹了毛病,在做题时就会出现高度的疲劳感,甚至有时会没办法完成试卷和作业。倘若再被强迫做题,就会很容易就产生抵触、糊弄的情绪,甚至完全放弃做题,第二天抄一抄同学的答案就交差了。
这种注意能力上的不足会产生连带效应,很多科目都会跟着出问题。比如语文的文言文阅读、长句子的书写、化学方程式的配平、平时背单词背课文、生物的基因型推断、英语的语法类型推断,甚至最简单的数值计算全部都会受影响。
我们以语文考试当中很常见的「古文阅读」为例,来具体体会一下认知系统加工资讯的过程。现在请试着耐心读读看下面这道练习题目:
孟尝君之赵,谓赵王曰:「文愿借兵以救魏。」赵王曰:「寡人不能。」孟尝君曰:「夫敢借兵者,以忠王也。」王曰:「可得闻乎?」孟尝君曰:「夫赵之兵非能强于魏之兵,魏之兵非能弱于赵也。然而赵之地不岁危,而民不岁死;而魏之地岁危而民岁死者,何也?以其西为赵蔽也。」
我们来细致体会一下理解文本的过程,假设我们在做一道小题,这道小题和某一两句内容有关,我们需要理解这两句话的意思并且形成一个推论。但读着读着,已经读完的资讯就被「丢掉了」,完全不知道前面的资讯和正在读的资讯是什么关系。一边读一边丢,最后一个句子都没有理解,所有的资讯都凌乱地飘在空中,这个时候题目自然就会做不出来。
不光是古文阅读,注意能力严重不足的考生在处理现代文的时候也有可能会出现问题,通常临床上会将其称为「阅读障碍」。这是一个非常热门的研究领域,感兴趣的朋友们也可以读一读相关的文献。
很多人会觉得这个病是「很不好的东西」,就像另外一个惨遭社会刻板印象毒手的词汇「精神病」,似乎它们很「脏」,有没有这种病是一种「可以通过自己主观意愿选择」的结果,但实则不然。我常常会向其他人这样解释这个问题:假设你朋友的手断掉没办法抬起重物,我们可不会说:「你抬不起来是因为你不够努力!」这看起来也太诡异了。患有 ADHD 的人也面对同样的问题,他们脑子里面有一部分功能也「骨折了」,以致于没有办法做到「专注」或者「自控」。
美国精神医学学会出版的《精神疾病诊断与统计手册第五版》(也被称作 DSM-5)对这一疾病做出了很明确的界定,注意力缺陷和过动症状均有九种典型的症状。
注意力缺陷的九个典型症状包括:「时常不注重细节」、「常犯粗心的错误」、「经常发现自己很难集中精力」、「与别人进行面谈时,常常没有听对方讲的内容」、「常不遵守指令,像是不完成家务或不履行工作上的义务」、「难以组织管理各种任务和活动」、「经常回避长时间的脑力活动」、「常常丢三落四」、「经常容易被外界刺激分心」、「经常忘记每天要做的事情」。
过动与冲动的九个典型症状包括:「没办法安静地坐着,经常扭动身体」、「上课的时候总是不受控制地起来四处走动」、「经常感到烦躁不安」、「无法安静地从事休闲活动」、「经常忙个没完,停不下来」、「多话」、「无法在听完其他人发言之后再讲话」、「不擅长排队等需要长时间等待的任务」、「经常打扰或打断他人」。
请注意,为了便于让读者快速地理解每个标准的意涵,这里我只是对内容进行「转述」而非把整个诊断标准复制贴上。因为它的描述真的很晦涩,一般民众是很难一眼就看懂的。所以你也不应该用这几句话简单地给自己做诊断,一切都要以医生的专业医疗建议为准。
乍一看描述,你可能会觉得这就是一套「彩虹骗术」,拿这个筐套到每一个人身上,多多少少都会有些地方能够命中,但这并不意味着每个人都患有 ADHD。
对于儿童期,九个典型症状需至少要满足六个,并且持续时间超过六个月;对于已经满足儿童期标准的患者,成年期必须再至少满足五条标准,且持续时间超过六个月,才能被纳入成年 ADHD 患者的考量。具体是否满足每一个条件需要更加细致的判断,通常需要家人和就诊者共同参与进行回忆。
荷兰的 DIVA 基金会出版了一套《成人注意缺陷过动障碍诊断性访谈》(也被称作 DIVA-5),列举了各种各样的具体场景。这是一个很详尽有力的诊断工具,可惜国内还没做完信效度分析,所以不能当作正式的临床诊断工具来用。
除了 DSM-5 之外,世界卫生组织推出的《国际疾病与相关健康问题统计分类第十版》(ICD-10)也有一套独立的诊断标准,这套标准的要求就更加严格一些了,它要求我们必须在 7 岁前就出现症状,且注意力缺陷和过动得同时满足才行。
从世界范围来看,ADHD 的发病率并不是一个很低的数字。美国的报告是 11%左右;大中华地区的话台湾的数字是 7.5%,香港是 5%~7%,中国大陆也是 5%~7%。
我们把这个数字剖开具体地看,如果一个班级有 50 个孩子的话,那么就有 2 到 4 个孩子会出现类似的问题,而且这群孩子的学习表现都不是很优异。让我们再来审视一下传统的刻板印象,对于患有「过动、冲动」症状的孩子,他们可能会被描述成静不下来的差生;而对于「注意力缺陷」的孩子,一个老师的典型的描述可能是:「上课的时候他在云游,不好好听课,不努力。」现象描述得都挺对,就是没有碰触到整件事情的本质。
ADHD 这种疾病,遗传基因的贡献高达 75%,因此去医院就诊时医生都会问「你家里人有没有这个症状」,如果有的话,支持性证据就会多一份。剩下 25%则是环境的贡献,包括孩子在孕期的时候和童年的时候接触了重金属、酒精或香烟等有毒的化学物质。婴儿出生时体重过低也是一个诱因。
说到遗传因素,其对应的「物理实体」自然就是基因了。事实上,科学家们的确发现了一些和 ADHD 有关的基因位点。
像是第 7 号染色体上的 FOXP2 基因,它参与了大脑功能的表达,特别是胚胎语言功能的发展。此外,第 3 号染色体上的 IP6K1 基因也被发现和 ADHD 有关。
很多在线的基因检测服务都可以帮助我们检查自己是否具备这方面的遗传特质。当然啦,人们的外在表现是基因和环境共同作用的结果,只有基因并不意味着我们一定会最终表达出 ADHD,所以千万不要将它视作是临床诊断哦。
最后,向各位读者分享一下我的基因检测结果,你可以把它当成某种消遣来读读看。
目前已有的大量研究认为,这种疾病和多巴胺的分泌有关。它掌管了很多认知过程,像是运动控制,帕金森氏病就是由多巴胺分泌不足造成的;再比如注意、动机、冲动控制这些功能,当这些功能出问题的时候,最终的临床表现可能就是 ADHD 了。
美国国家健康研究院发表的一篇研究报告称,ADHD 患者的多巴胺的受体数量显著低于一般人。也有其他研究发现他们对于多巴胺的利用效率更低。多巴胺和我们的情绪感受有很强的关联,具体而言,这是一种「被奖励」的感觉。比如热恋时,人们可能会有一种强烈的激情,两个人在一起会有幸福感,多巴胺在这种感受中扮演了非常重要的作用。
不易产生「奖励感」在学习场景当中会造成很棘手的后果。我们以高中生活为例,整个高中生活都是围绕着高考这一最终目标展开的,但是它既缥缈又遥远,沿路很难有稳定、及时、强烈的回馈促动我们专注、努力地读书。对于 ADHD 患者来讲,在难以获得「奖励」的情况下,就会容易「及时行乐」,或者被描述为「短视」、「鼠目寸光」。这也解释了为什么 ADHD 患者更容易出现「电视、游戏、网络成瘾」的问题。
常有一些老师家长提出这样的指责:「什么 ADHD!你看他打游戏的时候怎么那么专注,为什么一学习的时候就容易溜号呢!他就是不想学!」
这种思考方式忽略了当代娱乐方式的运作机制,它们的特点就是给玩家一个短程的刺激。对于 ADHD 的患者来讲这是一种易得的奖励,因此他们会偏好新奇、具有挑战性以及能带来紧迫感的任务。
与之相比,需要持续努力才能得到回报的事情就不容易坚持下来。几乎没有孩子「不想得到好的成绩」,受周遭环境的影响,大多数学生内心深处还是对好成绩有所欲求。在得不到好成绩的时候他们也会觉得很痛苦,这并不是谁诚心想要犯的错。与之相对的,甚至有一些孩子对「想要好好学习」的追求比其他人要强烈得多,但他们欠缺的控制功能决定了其非常容易受到外界资讯干扰,最后才表现出了看起来「吊儿郎当」的样子。「他就是不想学」这种倒置因果的解释方式并不能够帮助我们解决问题,反而会伤害彼此。
另一方面,我们也不应当以「你看他平时做其他事情的时候就那么专心」为理由就断定一个人没有 ADHD。ADHD 的根源并不是「注意力不足」,而是无法凭藉个人意志来控制注意力。因此有的时候患者会表现为注意力不足,但有的时候又有可能表现为无法从高度注意的状态当中抽离,呈现出强迫自己持续完成一件事的状态。这便是 ADHD 当中「H」所描述的情况了,其对应的英文是 Hyperactive,也就是过度活跃或者过度启用。
关于 ADHD 是否是一个切实存在的疾病,脑科学领域的科学家给出了非常直观的解答。一些研究发现 ADHD 患者的额叶的皮质厚度比一般人要薄。这意味着什么?我们得从大脑的解剖结构开始聊。
如果我们把脑子切开来,会发现它并非一颗质地均匀的「大布丁」。由外而内,它可以被粗略地分为灰质和白质。前者是细胞体,而后者是连接细胞的纤维。这些「细胞体」就构成了「大脑皮质」,而「皮质厚度比一般人要薄」则意味着他们的灰质细胞比一般人要少。后面的章节我们会提到,额叶掌管了社交生活和情绪管理。但除了这些之外,他也参与了注意和记忆的过程。这也解释了为什么 ADHD 患者会出现「健忘」、「容易分心」、「情绪控制能力欠佳」的问题。
儿童期就出现症状是 ADHD 的必要条件,除了焦虑、抑郁之外,还有一些情况会导致类似 ADHD 的症状出现,但它们的内在机制并不相同。其中最为人所知的就是当代网络产品。
这些网络产品为了抓住用户,会利用各种心理学知识和产品设计技巧刺激用户的多巴胺分泌,产生一种「完成感」。这在一些回馈性强的手机应用当中表现得尤为明显,其中最典型的便是各个短影音平台。这些产品带来的超量多巴胺分泌会让我们的大脑开始对日常生活带来的刺激不再敏感,从而造成「多巴胺分泌不足」的外在表现。但这并不是由先天性因素造成的症状,因此我们应当将其和 ADHD 分成两件事情来看。
事实上,短影音平台比我们想象当中的要危险。如果学习学累了,首先冒出来的想法可能就是「滑几个几十秒的视频休息一下」,但这些内容并不能帮助大脑恢复状态。
大脑就像是某种燃油机,只要在进行思考的时候,它就会消耗能量,产生代谢废物。不仅仅学习和工作是一种高强度思考,在浏览短影音的时候我们的大脑一样在进行高强度的资讯加工。因此,它不仅不会起到「休息」的作用,反而会加重认知负担。
我们之所以会觉得短影音会产生「具备休息效果的错觉」,是因为这种媒体表达形式的固有性质在起作用。它们的核心思路是在一分钟之内快速地调动起一个强烈的正向情绪,并让用户得到满足。
让我们来回忆一下短影音的特点:剪辑节奏极快,完全没有一丝拖沓,每一分每一秒的情绪张力都很强。这和一部电影的「高潮」很像,但电影有数十分钟的铺陈才会到达这段「高潮」,短影音却不会,它们时时刻刻都在「高潮」。
在进行冗长、复杂工作的时候我们常常会遇到「成就感」不足的问题,这个时候自然而然地就会开始寻求这种唾手可得的情绪能量。短影音解决的并不是「脑力疲劳」的问题,而是「情绪低沉」的问题。
但话说回来,尽管它们有这样或是那样的问题,但这并不意味着短影音本身是坏的。就像刀子也很危险,我们却依然可以用它烹饪美味的菜肴。最重要的是在浏览这些内容的时候保有警惕的意识,明确自己浏览它们的目的,究竟是为了解决情绪,还是纾解疲劳,而我们当下真正需要的又是什么。
如果我们追求的是让头脑「休息」一下,那么对着天花板发呆、出门溜达溜达、小睡十几分钟都是很好的方法。基于这样的思路,我个人不仅不推荐学生在课间滑手机,也不建议赶着十几分钟把作业写完,因为它真的会显著影响下一堂课的学习效果。
只要时刻注意这些观念,相信这些「现代科技」的负面影响就不会侵害到我们的大脑。
这是一个备受争议的问题:ADHD 究竟是一种人格特质还是疾病呢?
我们可不可以理解为「天生马马虎虎」、「活泼好动」这种性格的形成是因为他们多巴胺分泌比较少?我们究竟如何界定这是一种人格特质,还是一种疾病?我们究竟要不要进行治疗?
这里面有一条非常重要的标准,那就是当事人的主观想法:他究竟有没有因为这些症状感到痛苦。如果有,那么就需要获得协助接受治疗,如果没有,那么就不需要。在整个过程中,尊重主观意愿是非常重要的。无论是老师还是家长,都应当避免依照想象、主观意愿对患者的诉求进行干涉。
如果你已经决定寻求医疗资源协助了,那么这些简要的建议或许能够为你提供一些帮助。
如果你想要确定自己是不是 ADHD 的话,需要找专业精神科医师进行诊断。针对学生或儿童群体,几乎每个城市都可以进行诊断,但是在中国,成人 ADHD 只有北京、上海这类一线城市的精神专科医院才会接受并给予诊断。而且哪怕你是成年人,也只能挂儿童注意力缺陷过动门诊。有些小地方的医生甚至会直接给出「成年人不可能有 ADHD」的论断。
另一方面,也有一些医院对 ADHD 的诊断非常草率。我还在读书的时候,课上老师就介绍过有孩子在十五分钟之内就被诊断确诊的例子。这些诊断的方法都是非常草率和武断的,不仅会影响到求诊者本人未来的人生发展轨迹,也会影响到社会大众对于 ADHD 这一问题的观感。因此我真诚地推荐各位读者,如果真的有需要的话,去一些比较有资质的医院寻求协助。
就医时,通常医生会评估遗传史、诊断基础心理情况、鉴别其他心理问题的可能性、对 ADHD 的相关症状及其潜在损害进行判断。有些医院也会透过脑电图的方式出具客观的数据,但也有些医院的诊断围绕着来访者的主观感受和回忆展开。
目前已有的诊断方式有很大的局限性。我个人曾经在社群当中发布过一个调查,收集了 1387 份结果,其中有 153 人表示自己被诊断出有 ADHD(11%),514 人怀疑自己患有 ADHD(37%),720 人表示自己不是一名 ADHD 患者(52%)。让我们来看看 5%到 7%的常模,同时考量到相当多的 ADHD 患者在成年之后会自愈,再来看这个数字,似乎结果是偏高的。这也反映在一些临床医生的诊断经验里,的确会有一些医生表示有一些被误诊为 ADHD 的患者,这些患者服药之后发现没有效果,白白吃了很多副作用的苦头。
但如果你真的为这件事情所苦,希望能够获得一些「短平快」的解决方式,那么可以考虑适当服药。现在国内能用的药物有两种,一种叫作「专注达」,另外一种叫作「择思达」。前者是价格更贵的「红签药」,需要专家级别的医生才能开,作为中枢神经兴奋剂,它可以快速地产生明显的效果,大多数服药者回馈都是「有效的」,但效果来得快去得也快。后者是更为廉价的药物,奏效的原理是阻止神经递质的再吸收,进而促进神经活动。一般医生也能开,但是基于「朋友圈统计学」,吃过的朋友回馈都不是很好,副作用大,疗效一般。
这些药物只能改善症状,在你需要注意力的时候,提前吃药就可以获得专注的能力,不吃的话就没有。如果规律服药过长时间产生耐药性的话,药物服用量也必须随之增加(在一些西方国家,治疗 ADHD 的药物种类很多,可以透过换药的方式来纾解这方面的问题,但目前中国并没有出现替代药物)。换言之,我们必须终身服药,并没有「治好了 ADHD」这种说法。
大家或多或少都会对精神类药物有所排斥,我也非常理解这种情感。一方面 80%的 ADHD 患者都可以通过服药改善症状,但另一方面,潜在的失眠、恶心、呕吐的症状的确也很难熬。况且只要停药症状又会回来,这看起来很不划算。每个人对损益的平衡都不一样,因此哪怕选择不吃药也是可以理解的选择。
除了吃药之外,ADHD 患者也可以透过心理咨询的方式来纾解这个问题。相对于单纯地服药,它是一种更加温和的选择。但是需要付出的精力和时间也更多,换言之它是一场持久战。
针对 ADHD 的临床咨询分为很多方面。除了解决由 ADHD 本身衍生出来的焦虑、抑郁之外,通常还会配合行为管理,也就是建立一套能够与 ADHD 症状和谐相处的行为方式和策略。比如像是在做事前,先明确地排好优先度,再一项一项地做;再比如说建立一个更加适合自己的收纳策略,而不是一味地追求整洁。
除了行为治疗之外,心理师能够通过「家庭心理咨询」的方式处理更大范围的问题:父母究竟应该如何与患有 ADHD 的孩子进行沟通?而孩子又要如何坦率地向父母表达自己的所思所想?在没有外源性知识帮助的情况下,作为普通老百姓的父母通常会饱受折磨,且不能理解为什么自己的孩子和其他孩子「不一样」。而通过心理师的专业知识,可以在很大程度上帮助父母走出这片阴霾。
如果你是父母,那么我推荐你读一读《ADHD 不被卡住的人生》这本书,它记录了一名心理师在处理各种各样临床个案时发生的故事,以及作者处理各种情况的方式。这里面介绍的案例不仅能够为家长提供参考,作者本身也可以成为一个很好的榜样,鼓励家长们平静地面对孩子的各种问题。如果你已经成年了,那么我推荐你读一下《当 ADHD 患者踏入职场》这本书,作者透过非常诙谐的方式介绍了一系列的行为策略,进而帮助读者更好地面对生活当中的各种混乱。
当然,除了进行各类治疗之外,接纳这一「疾病」也是另外的一种选择。让我们再来重新思考一下本篇提及的那个问题:ADHD 本身究竟是一种人格特质,还是一种疾病?我们究竟是否有必要对其进行介入?
对于当代社会来讲,特别是对于学生群体来讲,注意力的缺失及其带来的各种生活方式,的确会带来很大的痛苦。因为学校当中的学习场景是一个对于注意力有高度要求的场景。
但脱离了这个背景,ADHD 是否还是一个很大的问题呢?每个人对于这个问题都会有不一样的答案,有些人选择了一些对注意力要求不那么高的专业或者职业,像是设计师、花匠、厨师和司机。因为 ADHD 具备一旦扎进去就很难脱身的特点,所以如果孩子能够沉浸到这类任务当中,说不定还会有令人惊喜的成就。另一些人则选择接纳了「马马虎虎,很容易徜徉在自己世界」这一特质,并与之和谐共处。
在得到了确诊之后,我的感受并不是某种负担或者崩溃,而是放下了一个负担。在我还是学生的时候,老师并不理解我所面对的问题,经常将我描述成一个浮躁的学生,因为我「上课上到一半就不听了」,并就这件事情给了我很多不公平的评价,似乎我是一个不好的人。但得到了这次确诊之后,我似乎能够给过去的那些疑问一个交代。
而对于现在的我,尽管在写作和准备考试的时候,我依然感到折磨(你可以猜猜我在写这本书的时候摸死了多少鱼),但总是有一些办法能解决迫切的问题。像是在死线之前开一个直播,摄像头全程面对桌面,如果开始摸鱼了群友们就会对我开始嘲讽,也算是一种不错的解法。
除了这种需要高度专注的场景之外,ADHD 带来了很多额外的好处。比如拜这种高度不专注的性格所赐,我的脑袋里面很容易蹦出各种新鲜的观点和想法,它们都能成为我平时写作和开发的素材。再比如,相对于一般人来讲,各种凌乱的概念在我的大脑当中更容易四散碰撞并且形成概念网络。因此考验归纳整理的科目,像是英语和生物,我的成绩都非常优秀。拜此所赐我的大学过得也算是顺风顺水,因为心理学专业本身就是一个非常考验归纳整理的专业。最后,我永远都不会觉得无聊,无论是在等车的时候还是长跑的时候,仅需三秒我就会立刻进入「溜号模式」,因此那些看起来很难熬的时光对于我来讲似乎都没什么大影响。
因此,合理地规划和另外一种看待 ADHD 的方式似乎也能处理这个问题。虽然它并不适合所有人,但希望这会是一种适合一些读者的选择。
本章的最后一些篇幅我想用来作一些警示:没病的人不要装病去骗药、有病的人不要卖药、流通在地下的 ADHD 药物不要乱吃。
ADHD 的药物常被称作是「聪明药」,并被误传为「学习不好的孩子吃了就能得到好成绩的神奇药丸」。以此为基础,各个国家都形成了一个灰色的药物流通市场。2023 年 4 月的一篇研究调查了美国中学生的处方药滥用情况,发现一些学校有高达 25%的学生存在这类问题,凸显了神经兴奋类药物误用的严重性。
未患有 ADHD 的患者服用这些药物是安全的吗?答案是否定的。没有病的人群如果服用这类神经兴奋剂或者重吸收阻断剂,会造成各种各样的消极影响,有些甚至会危及生命。
每个人大脑中多巴胺的分泌都有一个「刚刚好」的水平。对于多巴胺分泌匮乏的患者来讲,药物可以帮助他们把不足的多巴胺补齐。但是原本就「正常」的人尝试通过药物把多巴胺水平推向不正常的高位,则会有大问题。
尽管短期会有「非常有精神、注意力非常好」的感受。但是有研究发现,这只是表象,长期来看它们并不能够对学习成绩带来显著改善。另一方面,这些药物不仅会对注意功能造成损伤、心理上产生对于药物的依赖,甚至会引发妄想症、癫痫等严重的健康问题。换言之,这种「走捷径」的方式会给日后的生活带来相当多的麻烦。
这类药物的流通有两种途径,一种是「没病装病」去医院骗药,另外一种是 ADHD 患者「囤药」然后拿出去卖。目前专注达在地下流通的价格能达到其在医院售价的两倍甚至三倍。专注达本身价格高昂,正常服药每个月都有可能花掉近千元。如果把这些药物以高价转售,其带来的利润相当可观。但这一行为不仅对自己很不负责,还会对医院、患者和社会大众带来极大的伤害。
考虑到目前相当多医院对 ADHD 的诊断都是基于现象学层面展开的,这意味着只需要在各类测验当中给出恰到好处的回答,就能换到 ADHD 的确诊证明,进而从医院骗到「红签药」。有些是骗来给自己孩子吃的,有些是拿出去卖的。正因为这些问题的存在,很多医院的医生已经非常不愿意开这类药物的处方了,害得需要药物的患者无药可吃,可以说是非常可惜。
考虑到这些情况,在本文的最后,我要非常严肃地呼吁各位,如果你不是一名 ADHD 患者,请不要去医院骗药,因为这会让医患之间形成猜忌,极大增加正常患者的就医难度。骗来的药无论是自己吃,还是卖给别人吃,都会对服药者造成非常大的伤害,也会让社会大众对 ADHD 本身形成错误的刻板印象。
上面我们讲了很多面向 ADHD 患者的介绍,但假设你不属于这个群体,却想要尝试改善注意力的稳定性,那么我会向你推荐一些简单的小技巧。
首先,我们先来介绍一种比较「高级」的玩法:神经回馈技术。这种技术一开始被用作治疗焦虑症,为了让患者学会「放松」的感觉,心理师会在来访者的头上放置若干个电极,接下来计算机会透过电极读取我们的脑电信号,判断来访者是否处于一种「放松的状态」,如果有的话就播放一段音乐。透过不断地练习和尝试,人们就会习得「放松」这种技能。基于同样的原理我们也可以习得「注意」这种能力。我还在读研究所的时候就发现有一些课题组在做这方面的工作,有一个「蜘蛛人」的角色在屏幕上不停地爬,我们的注意力越集中,他就会爬得越高。据说这种方式还蛮受小朋友们欢迎的。
但如果我们找不到这样的专业机构,或者单纯觉得「出门很麻烦」,那么可以试试更加简单的方法。比如端坐在桌子前面,一圈一圈地写数字。
在做练习的时候,我们需要尽全力将注意力保持在纸张上,如果发现注意力「断线」了,就赶快做一个记号。在写满整张纸之后,统计一下今天的「成绩」。透过不断体会集中注意力的感觉来习得「驾驭注意力」的能力。这类任务足够简单,和做数学题不同,这类任务不需要回忆各种各样的公式、进行各种各样的推理,因此它不存在某种「难度」。这是一种非常纯粹的注意力练习,只要我们坚持每天都做,慢慢地就能学会「专注」了。
除了写数字之外,密集、大量的进行两位数加减法计算也是一种可行的训练方式。这对于小学或初中的学生来讲尤为有效。其背后的原理是促进工作记忆的发展,进而改善孩子处理信息的能力。
你可能会觉得这种练习太无聊了,有没有什么更好玩的?当然有!棋类运动也是一种极佳的注意力练习,围棋就是一个非常好的练习方法。除此之外,国际象棋、中国象棋也都很适合,因为下棋的过程会要求我们的注意力高度唤起,能够时刻处理整个棋局的变化。我们可以找一个软件,挑一个适合自己的难度和电脑博弈,也可以使用在线平台,和其他的网友互相切磋。
如果觉得没什么动力下棋的话,看看棋灵王、研究研究 AlphaGo、看看哈利‧波特,可能就会觉得下棋很帅,渐渐地就产生兴趣了。
除了我们讨论过的 ADHD 之外,还有相当多的词汇可以用于描述行为模式「异于常人」的人们:像是自闭症(ASD)、焦虑症(AD)、双相障碍(BD)、分离性身份障碍(DID)、强迫症(OCD)、计算障碍、阅读障碍。
让我们来重新思考一下 ADHD 的典型症状,特别是 H 这一部分。它包含了多话、喜欢打断别人的工作、在别人讲话的时候会无法自控地插话。倘若拿掉了「ADHD」这个标签单独来看,这似乎是一个非常「令人讨厌的人」。
在有了明确的诊断之后,那些所谓的「患者」似乎就有了一个可以用来保护自己的屏障,能够在某种程度上获得来自社会的谅解和支持。而对于没有这些症状的人,社会刻板印象通常会要求我们的行为方式向社会均值靠拢,而这种思维会将很多人格特质不同的人排除在外。
这引出了一个非常值得玩味的问题:我们究竟是否需要对抗自己大脑的运作方式,强迫自己去遵从某种社会习惯?
不同的人可能会抱持不同的看法,但是有一些比较前卫的企业和教育机构已经展开了各种各样的尝试,来确保自己的环境具备包容性。像是为那些对声音感到敏感的人提供一个安静的工作休息空间、允许学生或者员工自由地选择自己的位置、提供一些小玩具来消除他们的压力。再比如,雅思考试也会为 ADHD 患者提供特殊版本的试卷和更长的答题时间,以确保他们能够充分地展示自己的语言能力。
有一个专门的名词用来描述这样的主张,被称作「神经多样性」。这一主张强调人们的性格差异是由大脑运作方式的不同造成的,其本身并不存在优劣之分。而为了接纳这些种类繁多的个体,我们需要创造一个更具包容性的社会,它既包含了每个人对待他人的态度的期待,也包含了我们对一个良好学习和工作环境的期待。当我们在描述一个人的行为方式时,可能只有「正常」和「异常」两种选择,而神经多样性提供了第三种选择来看待这件事:「人们是多样的」。
「神经多样性」的主张为受到 ADHD 所苦的人提供了一种新的可能。如果这类具备包容性的观念能够被社会广泛接受,人们开始愿意为之付出努力,那么一部分并不擅长注意的学生便可以更加自在地完成自己的学业工作,而无须因为自己不够「融入大众」而感到痛苦。
在犯罪心理学领域搞科研的学弟曾经说过这么一句话:「具备特定基因的人,一出生就走在成为罪犯的路上。」这话不假,相当多的反社会人格都存在对应的基因因素。这些因素会影响我们大脑前额叶皮质和边缘系统发育,进而造成各种脱序的行为方式,而一些极端的发展结果会导致一个人变成变态杀人狂。
不过具备这些基因的人,也有可能最终成为优秀的画家、作者或是科学家。决定了这些差异的重要影响因素便是他们所处环境的优劣。一个具备支持性、疗愈性的家庭和社会环境能够帮助这些孩子健康成长。而一个饱含虐待、歧视和偏见的环境则有可能充分地将那些先天基因诱导出来,从而造成一个又一个的社会悲剧。这些例子足以体现良好的社会氛围有多么重要。
我撰写这一章节的原因也是希望能够帮助推动「神经多样性」这一观念的发展。尽管不是每一个人都患有 ADHD,但如果我们做一些简单的数学题:把包括 ADHD 在内的各类心理疾病,以及未及临床标准但同样受此类症状所苦的人汇集起来,其数量必然是庞大的。
而一个公平的社会、一个追求人道主义的社会,应当能够确保每一个具备这些特质的个体,都能找到适合自己的位置,以自信的姿态探索这个世界。
本文节选自我们出版的《当代学生生存手册》,在这本书当中,我们从教育学、心理学、脑科学的多重视角阐释了当代学生遇到的九个问题:
如果你对这本书感兴趣,可以考虑如下电子书商城:
如果你不想付费的话,也可以访问如下盗版资源下载地址阅读我的书籍:
请用钱砸死我,谢谢!(鞠躬)
]]>经历了这么多年的发展,在移动端用 Web 技术栈开发混合程序依然是一个非常麻烦的事情。造成这一景象的原因有两方面,一方面是Chromium 本身与 Android 系统高度耦合(Android 里有些 API 是专门给 Chromium 做的)、内部工程实践混乱、剪裁难度极大,另外一方面,Android 本身碎片化非常严重,各中「发展中国家」「自研」的「OS」还会用各种方式作妖,比如之前臭名昭著的 MIUI ,内置浏览器虽然看起来规矩,但是会假装自己是高版本浏览器,还有一些民间 ROM 会裁掉一些浏览器的 API,也不知道是为了什么。
为了应对这个问题,各个「大厂」基本都有自己的应对,字节有一个自己剪裁的 WebView;腾讯有两个,微信他们自己裁了一个,还有一个天天出毛病的 X5;阿里有俩,支付宝他们自己有一个,UC 还有一个。也有一些团队会把 Web 标准当中的某一部分单独裁出来用,腾讯、美团、字节内部都有一个 WebGL 标准的 Native Binding,用来渲染一些活动页面。
但是因为这一部分工作和业务高度耦合,因此没有任何一个大厂将自己的实现开源,唯一的一个闭源实现腾讯 X5 也是问题一大堆根本没法用。
但开源界还是有「人类的希望」,Mozilla 把 Firefox 的内核单独做了一个组件化封装,造了一个气氛上还算能用的产品GeckoView。
知道这个东西的人其实很少,下手适配它的混合开发框架更少。但在做交互视频项目的时候我们还真的很需要一个能够自主控制内核版本的功能。所以就着手把它跟 Ionic 集成了一下。于是就有了 @web-media/capacitor-geckoview。
先叠个甲,这东西的实现原理是直接给 @capacitor/android 打 Patch,因此插件版本跟 Capacitor 版本是有强制绑定的,目前我们的实现只支持到 4.6.0
版本,最新版的 Patch 我们已经打了,但是编译还跑不通,群友还在抢修。
另外一方面,这个插件并不是我独立完成的,Android 端由抱枕开发,而 Web 端是我和 Hyper一起做的,我在这里仅出一份技术介绍。
如果你想要把 Capacitor 的 WebView 换成 GeckoView,要做的第一件事情是改一下 package.json
里面的解析安装包解析,插一个叫做 resolution
的 field,并写下这些信息:
1 | "resolutions": { |
一定要确保你的 Capacitor 版本是 4.6.0
,并且 @web-media/capacitor-geckoview
的版本号被锁定在了 2.0.0
否则很有可能会出现不可预知的 bug。
接下来,正常配置你的 Ionic 项目工程,在生成出来的 Android 工程里,做一点小修改。打开 android/build.gradle
,在 allprojects
小节下面找到 repositories
,在末尾加上如下配置:
1 | maven { |
接下来你就可以正常 sync、编译了。没有什么额外的东西需要配置,任何 Native 插件的开发、集成理论上讲也不会受到影响,唯一需要改变的就是调试方法,从 Chrome 的开发者工具变成 Firefox 的调试工具。
Ionic/Capacitor 的整体架构主要分成了三层:插件、Ionic 胶水、Web 层。这几层切的非常干净没有任何耦合,所以修改中间的胶水层原则上不会对其他层由任何影响。
具体修改的地方有这些:
Android层面的修改
Web容器内部的修改
一些你可能需要注意的坑
如果你在使用者东西的时候遇到了什么问题,请用英文在 @web-media/infrastructure的 issue 区联系我们,有时间的时候我们会尽量回复。
以上,Happy Coding!
]]>结果因为地址填错,尊贵的京东大会员发动了特权卡,中间改了次地址,于是京东的快件路由重新绕回了库房,第二天才把设备送到家。于是,我的 VR 之旅开始咯 (ヘ( ゚v ゚)ノ)!
现在产品已经到手一周,经历了各种折腾、调教和体验,算是对这个最新款的 XREAL AR 眼镜有了一些基本的认知和感受,于是撰篇文章记录一下这段时间折腾它的故事。
从接线开始讲,如果你想用这软件连接电脑和手机(大多数安卓机器,但也有不兼容的,比如我手里的一台 ASUS 手机),那基本插上就能用(高贵的 Nintendo Switch 比较麻烦,后面讲)。如果你在开发者选项里面开了强制桌面模式记得关掉,如果你没有键鼠的话,这东西就只能用镜像模式耍。其实就算你有键鼠也不一定好用,毕竟安卓 13 的桌面模式本身就有点残。
如果你的手机是 16:9 的标准屏幕,到这里故事就结束了,使用愉快。但如果不是,就很麻烦。理论上讲,安卓系统会把手机屏幕以 1:1 的镜像显示过来,如果你的手机是索尼那种高贵的 21:9 屏幕比例,画面就会被裁切两次,16:9 的屏幕先把上下裁掉,用来完整放下 21:9 的屏幕,左右再裁切一次,让 21:9 的屏幕塞得下 16:9 的内容。所以显示的画面会小很多。
因此,记得备一个原生 16:9 的手机。
先来说说通稿上宣传得最凶的「巨幕」。跟各路测评讲得一样,坐在电脑前面,眼镜投出来的画面并不比我的屏幕大(我的屏幕是 DellUltraSharp 27)。但由于它的对焦距离是两米,所以认知上会觉得它是个「大屏幕」。因此带着他躺在我狭小的出租屋里时,会有一种神奇的感受,好像天花板开了个黑洞,黑洞里面有一个大屏幕。
按照「大就是美、多就是好」的标准来看其实这东西的视觉效果还挺好的。亮度拉满的情况下不至于晃瞎你的双眼,但是还是能跟手机屏幕掰掰手腕的。调色上基本上走一个饱和度战士的路线,我个人是不太介意,但是如果你对「色准」很在乎的话,那你为什么要买这种玩意(不是)。好在至少没有第一代那么严重的发色偏红问题,逐台校色是有用的。
如果你视力不太正常的话,有一件事情要注意。敝人是一个看什么都泛着佛光的散光患者。戴上这副眼镜后,第一感觉就是我仿佛升入了天堂,整个画面都笼罩在一片绚烂的光芒之中。就像大学坐后排看投影一样,离得越远,画面就越模糊。
因此对于我来讲,这东西「显大」并不是因为它对焦距离远或者什么视错觉,而是因为这佛光普照的特别凶!打《迷雾侦探》时候看那些小字极为痛苦,根本玩不下去。更不用说能不能看得到像素点了,人早就沐浴在佛光当中迷失自我了 (´゚д゚`)。
首先,发热,感觉不到。
其次,躺在床上的使用体验:眼镜是有镜腿的,所以当你躺在床上时,基本上只能平躺,不能侧躺,否则会压到镜腿,非常不舒服。加之一代的镜腿脆弱问题已经臭名昭著,我想你一定也不想挑战一下镜腿的压力极限。
所以,如果你期待的是躺在床上自由打游戏,那可能会感到有些失望,姿势上并没有那么自由。或许懒人沙发是一个更适合的场所,可惜我家没有这种高端东西,没法给大家实测了。我花了好几天的时间适应平躺玩游戏和看视频,最后总算是被眼镜调教出来了合适的睡姿,现在也能戴着眼镜刷实况视频刷到睡着了。
和用支架挂着一台电脑打游戏相比,体验上有很大的差别吗?除了画面大一点、亮一点之外还真没啥特别大的差异。
另外,我想提醒大家,在没有头动跟随(3DOF)的情况下,你会遇到一个非常严重的问题:只要头部移动,整个画面就会跟着移动。你可以想象一下电影院的屏幕在天上四处飘,你会不会觉得很难受。这很有可能导致晕动症的发生,因此在没有 3DOF 算法的情况下你绝对不应该在车上使用它,也不应该在运动的时候佩戴它。
有的朋友可能会问,屏幕的位置不是相对眼睛位置不动的吗?为什么画面会晃?
因为,亲爱的朋友,我们的大脑是有「视觉恒常性」机制在工作的,无论你的头怎么动,认知上眼前的物体都不会四处飘,就是因为大脑当中存在着这一层加工机制。如果你曾患有和平衡器官有关的疾病(耳石症、前庭神经元炎),就会知道平衡功能受损是什么感觉:平衡器官和大脑的运作不再协调,当你的头晃动的时候,大脑没有办法处理恒常信息,会觉得整个世界也随之晃动,有「天旋地转」之感,也会伴随呕吐的症状。
BTW,我天生就有这毛病。So, I really know that.
XREAL 官方有一个名为 Nebula 的安卓程序,它提供了所谓的 VR 空间功能。如果你安装了占据 1.12GB 空间的庞然巨物,就能体会到为数不多的「AR」功能(指 Launcher 上养电子宠物的那个 Tile 是 3D 的,其他地方都没有)。
这 1.12G 的 VR 空间带来的新鲜感大概有三分钟,之后就没有了。你能看到跟随头动的一个三维空间,里面有一个浏览器。但是这个浏览器跟系统自带的 WebView 并没有共享同一套 Cookies 和密码管理机制,因此基本没啥用。打开,看了一下,「哇,窗口可以变大变小、变近变远,好厉害」于是关掉。
我对 XREAL 官方其实有一些不满,时至今日其开发团队依然没有释出 SDK 用于创建 VR/AR 应用,网上倒是有一些团队逆向出来了它的信号编码,并且写了个驱动。也有民间开发者基于这套驱动为Steam Deck 开发了一套 XR Gaming 插件但毕竟是第三方调教出来的东西,实际体验可能没有原厂算法那么好。
对了,这个 Nebula 还有一个臭名昭著的问题:频闪。
我并没有花大价钱买 Beam,但我们还是可以从已有的信息我们还是可以聊一聊频闪的问题。最需要关注的问题是:频闪到底是一个软件问题还是一个硬件问题?软件问题可以通过 OTA 推送解决,而硬件设计缺陷就没啥办法了。
先把结论抛出来:这是一个复合问题——软件稀烂硬件不行。
软件方面,Nebula 和 Beam 在频闪上表现得如出一辙。特别是观看白色物体的时候,跳跃、蠕动的边缘令人不忍直视。
基于同样软件系统开发的 Beam(一个带电池的安卓盒子)所遇到的问题极有可能是一致的。官方给出的解决方案是解锁 72Hz 渲染的选项,并提醒用户,发热会非常严重而且阉割掉了视距控制的功能,你要自己权衡一下。
这就很难理解咯。一个 700 多块的设备,消费者理应得到可接受的使用体验,但是却买回来了一个内置高贵机顶盒御用处理器 RK3566,巨量发热的电子垃圾。没错,RK3566 理论上讲并不能同时做两块 1080P 屏幕的三维渲染工作,更何况还要处理输入视频信号。哪怕你用个联发科的芯片事情都不会这么尴尬,但他没有。
至此,Beam 最大的用处可能就是,你从盗版网站下载了一个左右分屏的 VR 视频,把它塞进盒子里,长按「音量+」,变成左右眼分开投屏的模式,帧率开到 72FPS,看点 3D 电影。至于其他的,你怎么能期望一个连 Google 认证都没过去的机顶盒能做什么……
最后,当你看到这个眼镜宣称自己把「莱茵护眼」属性点满的时候,请不要忘记,一个官方外接的电视盒子就能把整件事情搞破功。理论上讲也可以算得上是半个虚假宣传了。
基于上述原因,我自然是没有买 Beam。如果你想用它玩 Switch 的游戏,他家还有一个 500 多块的 HDMI 转接头,能把你的各种设备从HDMI 转接出来。不过这价格也还是太过离谱,于是我就开始尝试自己瞎鸡巴折腾。
自此一个盛大的 Dongle Party 就开始了。
众所周知,Switch 的 Type-C 接口没有电源输出,只有输入,(任天堂特制省钱接口),所以直接插线是点不亮眼镜的,我们需要一个辅助供电的机制。
「这还不简单,我不是有一个拓展坞转接头。」就那种一个 Type C 供电,出一个 Type A 口、一个 HDMI 口的神奇转接器。接下来只需要把 HDMI 输出的信号直接插到眼镜上就行啦!我们需要一个 HDMI 转 DP/Type C 的转接线!
但我亲爱的朋友,这个世界上并不存在如此简单的转接线,我们需要的是 HDMI 转 DP 的协议的线,而现在市面上能够买到的转接线都是Type-C 转 HDMI 的。用人话来讲,简单来说,我们能买到的那种转接线是让你的电脑能够连接到一个 HDMI 显示器上,而不是你的电脑输出 HDMI 信号,连接到一个 Type-C 显示器上。
简而言之,攻受反了!(啊不是——)
因此,在群友的推荐下,我又买了一个转接头。将 HDMI 转公口换成 DP 的母口的转接头(绿联的神奇设备)。里面是一块采集卡,然后这个采集卡再输出一个视频信号给眼镜。
这个「采集卡」本身是 micro USB 供电的,需要你再找一根 Type A 转 micro USB 的供电线。至此你有两个东西要供电,一个是插在Switch 上的 Dongle,另外一个是插在这个 Dongle 上的另外一个 Dongle,实属硅基蜈蚣了(误)。
但你说巧不巧,压在下面的那个Dongle 刚好有一个 Type A 的插孔,只需要用另外一根线把两个 Dongle 连在一起就行了!
于是,屏幕被点亮了。
但这个时候事情还没算结束,因为你会发现它没有声音。虽然不知道其中的具体原理,但我估计是信号两次专制的时候把音频信号彻底搞丢了。而且有的时候还会出现莫名其妙的黑屏问题,使用体验非常不稳定,于是七天无理由,作罢。
后来经群友提点,ULT-Unite可以用更低的成本搞定这件事情,于是入手,一根线就解决了所有的问题,算是解决了便秘的使用体验。
以及,理论上讲隔壁 ROKID 的配件应该也能用在这个设备上(只是说理论,我没试过),如果你不介意 NTR 的话,可以尝试一下,毕竟这个接头看起来更简洁一些。
对了,用这个 Dongle 的时候记得每次接线之后长按「亮度+」按钮四秒(你应当能听到两声嘟嘟声),切换一下视频模式才能听到声音。反正就按个键,也不麻烦。
不过说实话,先人指完路,一通瞎折腾之后,开始正儿八经打游戏的那一刻还是觉得挺爽的。毕竟自如那个床夹不上懒人支架,有这个眼镜能让我找回和大学躺在宿舍床上打游戏一样的体验,而且画面还更大,不用戴耳机。玩着玩着就觉得这坨狗屎设备似乎还算是有点用武之地,这钱花得也没那么不值了。
以上就是我对这个设备的完整使用体验,希望对你有所参考。它既不完美,也没那么糟糕。如果过年的时候你拿到了足够多的压岁钱,或者年终(BTW,我今年没有年终,淦你老母,祝老板今年阳痿 365 天)买一个来玩也无妨。但是如果你抱着体验次世代观影体验或者生产力革新设备,那多半会觉得非常失望。
它只是一个玩具而已。「能用」,就是我对它全部的评价。
以上就是全部的体验内容,祝大家度过一个美好的新年假期,新年快乐!下篇文再见!
]]>在图书出版的前夕,我曾在自己的「电子日记」中阐述过自己对于各个电子书平台的看法、对 DRM 系统的看法。并放出「豪言」如果我的书被盗版了,那我会正大光明的把盗版书的地址贴到自己的地盘上,作为一种宣誓,展现出独立作者的态度和姿态。现在我来「还愿」了。
对于独立出版作品来讲,一本书 45 元并不是昂贵的价格(特别是这本书里面有大量手工的成分,像是书封的折叠、签字和盖章),但我能理解目前这些书城在支付流程、阅读体验上的缺陷可能会让很多读者无法接受。因此我个人并不介意盗版的存在。但我依然认为自己有必要说些什么,于是就有了这篇文章。
试想一下一本电子书被发布到了书城上,没有做任何保护,会发生什么?当然是盗版满天飞啦!所以出现了数字版权管理系统(DRM)。看起来非常完美!那么,代价是什么?让我们来看看这些看起来非常脑残的系统设计:
亚马逊的 Kindle 可以说是市面上最流行的电子书阅读器,它使用的DRM系统限制了电子书的使用范围,使得内容通常只能在 Kindle设备或 Kindle 应用上阅读。尽管(曾经的) Kindle 是中文世界的人类之光,不光书多,而且便宜。但亲爱的朋友,你是否知道它因为各种原因导致书籍排版丑陋得不可直视。其中原因非常简单,Kindle 的中文书籍并不支持作者直接上传 EPUB 格式,而是 Word文档。对于读者和内容作者来讲这都是一种巨大的折磨。我们原本以为是因为 Kindle 因为入行早所以有技术债导致不能很好的渲染CJK 书籍,但是日语书是可以直接上传 EPUB 的,有没有疯狂大脑发光呢?而且你可以想象,GitHub 上就有现成的 DEDRM 工具帮助你解锁已经购买的书籍。
Kobo,乐天旗下的神奇电子书平台。书挺全的,购书方式也非常中国用户友好。但是这玩意的桌面客户端由「强大」的 QT 驱动,渲染EPUB 的引擎是近十年前 Safari 所采用的 Webkit 渲染引擎,连最基本的页面渲染都有各种乱七八糟的 bug。至于这一整套阅读体验稀烂的系统是否真的很好的保护了他们的内容呢?解 DRM 的工具你一样能很方便的在网上找到。
华文世界最大的 Traditional Chinese 电子书贩卖平台,用了一个开源的 DRM 系统(开源,DRM……)。尽管客户端上了 DRM,但它的Web 版本却什么都没做,导致书籍容易被提取出来。此外,Readmoo 的 DRM 系统本身做的很脆弱,毕竟一个用 Electron 写的东西你能对它有什么期待。而且这个书城全平台的客户端都写得很烂,烂得非常均匀。一次机缘巧合我有机会瞥见了他家桌面客户端的源代码,可以说是「相当精彩」,把 React 和 Electron 的 Anti-pattern 开发规则全都踩了一遍,真的是非常精彩。
整个 Readmoo 社区好像有一种默契,很多开发者都写出了自己的 DeDRM 工具(包括我),但是鲜有人公开自己的方案。可这并不能阻止大量的「资源」流出。
跨境消费的支付方式本身就是一件非常迷的事情,有些只能用信用卡(学生党掩面痛哭)、有些不支持特定卡段的信用卡(比如 Readmoo上买书刷中行的信用卡就有概率刷不出去)。
还有很多书有地域限制,得挂各种代理。举一个充满槽点的例子,这本由「社会科学文献出版社」出版的《治理现代化与基层党内民主实践》,在台湾平台贩售,并标示了「此書不可於以下區域購買:中國」。全身上下都是槽点不知道从哪里开始吐比较好,我也就不多吐了。
DRM 作为保护作者和出版者利益的一种工具,看似把内容锁到了厂商的围墙花园里,利益得到了保护,但代价是什么?
书籍被分散到各种平台,各个平台的应用质量又良莠不一,我们能找到的所有电子书平台阅读体验都没有第三方独立开发者的作品好用。甚至微信阅读祭出了牺牲可访问性的极端 DRM 保护措施。
是的,目前我们能找到的所有电子书阅读平台,有一个算一个,阅读体验都狗屎到令人无法忍受。而因为 Vendor Lockin的存在,读者也没有办法使用那些真正「专注于阅读体验」的电子书阅读器,而作者则可能因为 DRM 的限制而丧失了一部分潜在的读者群。
从搜索、支付下单、开始阅读,每一步都充满复杂性,因此哪怕不为了盗版,单纯对阅读体验有追求的用户也会尝试选择 DeDRM 技术将书籍解开,放在自己喜欢的、体验一致、尊重隐私的软件里,享受一段读书时光。
这里有一个很重要的观念:所有被 DRM 过的内容想要显示到你面前都必然需要经历一个解码的过程。而这个过程一旦存在,它就必定能被第三方所复现。换言之所有的 DRM 系统都是纸老虎。唯一强而有力的是「法务部」,哪怕苹果和 Spotify 的 DRM 也被人爆破过,但这些问题的解决都是通过律师函解决的。但我个人并不认为大多数的主流平台有这么多的法律资源。所谓的「保护」也就成了一纸空谈。
为什么会有盗版,而盗版的人会被视作是「侠盗」?我们先来看看比较可以理解的部分——猴贵的教材和论文。
尽管我个人会尽可能支持正版教材(比如之前买过一本死亡教育教材,The Last Dance: Encountering Death and Dying,一本价格五百多块),但是这种书如果想看得比较多其实我也真的下不去手,心疼钱的时候还是会启动神秘网站,行一些龌龊的勾当。
Sci-hub 也处于类似的状态。尽管大学提供了一些正版论文下载得渠道。但毕竟没办法确保所有论文都能搞到,使用起来心智负担很重。而且如你可以预期的,一篇几页得论文同样要价不菲,为了搞毕业论文通常都要看海量的内容,我真的买不起。因此基于各种各样的考量,最后还是数字共产主义万岁,Alexandra Elbakyan 万岁。
每个人都有获取知识的权利,余华也表达过这样的观点:我们的社会现实就是这样,它主要就是有这么一个贫困消费群体,他们也想读书,那就去买几本便宜的盗版书,他们可能只能买一些最便宜的。
论文卖得这么贵,作者一定能赚到不少钱吧?对吧?对吧? (゚∀。)
没有哦,一分钱都没有哦,不光作者得不到一份分润,发表期刊得时候还得交一笔不小的「逆向稿费」。
「邪恶西方资本主义世界」的教材也有类似的性质,不光贵得要死,每本书出版的时候还自带一个只能用一次的序列码,用来做在线的课后练习,与之连接在一起的课后练习分数还会和期末分数挂钩。老师是挺开心的,毕竟不用自己批作业了,但学生却没办法靠买二手书的方式省点钱。这也算是出版社设下的精致陷阱,这看起来极不公平。
而「伟大的社会主义世界」似乎也没有好到哪里去,你或许听说过,老师缝合出来一套水课垃圾教材,自己开课自己用,学校直接采购你甚至没得选。极端一点的老师甚至会要求学生买自己出的书,上课第一天一本一本的在扉页签字,防止学生买二手书「影响收入」。
这些看似邪恶得邪恶资本主义利益结构,都将「盗版行为」装饰的名正言顺。「盗版无罪、盗版有理」曾是 2000 年左右流行的口号,而以传播「资源」为名的盗版内容提供者在社区当中被视作是英雄,是传播福音的圣人。
因为为什么不呢?读者开心,盗版者也得到了好名声,盗版网站是当代救世主,没人受伤的世界诞生了?
让我们把整幅图景扩展得再大一些,整个图书销售流程,从渠道(在线书城、离线书店)、出版社、作者的角度再来看这件事情,就会发现整个系统呈现出「日落西山」状态不是没有原因的。
你经常能见到各种在线书城以非常变态的折扣力度做促销,这种折扣不仅残忍的挤压了下游(出版社、作者)的利润,同时也让实体书店变得难以生存。我也见证过家附近的一个书店,从一栋楼三层全都是书店,变成只有一层卖一些练习册,最后整栋楼变成了建设银行。
同样溃缩的还有作者的钱包,和热情。
这种情况相信你也见过,毕竟对于纸质书籍来讲,只有练习册才是「便宜大碗」的「刚需产品」,而其他「占地方、又看不完的书」则成为了当代社会当中鲜受人待见的稀有玩意儿。
而为了在夹缝中生存,真正的「利器」是什么呢?是算法、和流量啊我的朋友!除非是「自带流量」的明星作者,一般人很难靠写作吃饭,无论你对写作抱有多大的热情。
某出版社内部资料里,曾在一页 PPT 当中反复强调「自带流量」的重要性,某社编辑也曾经跟我讲,你不自带流量,自然比不过某某。
我是一名独立作者,在台湾开了一家独立出版社,也在去年出版了一本自己的书。作为一名只有两位「兼职员工」的独立出版社,自然得独自承担了出版书籍的所有成本,包括审校、排版和印刷。
没有选择与国内出版社合作,是为了追求内容上的自由(Simply 我想在书里骂脏话)。为了搞定一本书,我们投入了大量的心血,从版面设计到封面,再到找印刷厂。虽然这本书标了价格,但是为了合规,拿到这本书的每一个人都没有向我付过任何费用。
对于独立出版作品来讲,一本书约为 45 元的售价并不过分,除去写作之外,你看到的那本书精致的封面,也是我单独找印刷厂反复设计调色,并由我一个人亲手一张一张折叠出来的。每张封面六道压痕,一共两百张,一共叠了一个礼拜。
让我们来算一笔账,整本书的出版成本为 5000 元人民币,不包括后面抽奖给频道主邮寄书籍的费用(这部分费用是我自己承担的),也不包含我自己手工加工书皮的人工成本。而各个平台的销售额是:Booth(24700 JPY)、Readmoo(2400 NTD)、Kobo(4.62 USD)、Kindle (12.78 USD + 293 JPY),如果按照今天的汇率全部换算成人民币,那么这个数值会是 1867.13 元人民币,覆盖了 37% 的成本,考虑到 Paypal 等平台提现的时候收费会很夸张,我最终到手的钱可能要少很多。
因此 45 元的售价并不算昂贵,特别是对于独立出版的书籍来说。毕竟面向的读者就很小众,盈利面并不那么明朗。而秉持着对文字创作的理想和追求,坚持以出版这本书的我们,希望在这个世界上留下自己的印记。在这个出版行业日益艰难的时代,我并没有权利去期待什么,但我仍然希望读者能够认同我的理念,基于对于内容的认同选择购买我的书籍。
从好处来说 被人盗版是价值的体现,也算是免费做宣传… 说不下去了,太惨了!
——煎蛋网友
虽然清楚出版物迟早会被盗版,甚至在书的第一章就向读盗版书的读者致意。哪怕是盗版读者,我也很高兴他们愿意阅读我的作品,但作为作者,却仍然衷心希望他们能够用钱来砸死我。
但没想到盗版来得这么快,在发布不到两个月后所有版本的内容就开始陆续出现。Telegram、Zlib 和一个台湾的盗版软件论坛都能看到电子书文件,合计起来的下载量比正版销量还高,要知道现在整本书的售价还没有 Cover 出版成本。
在看到盗版的时候我的内心当中先是一阵感叹:「啊,被盗版了,这本书的出版流程总算走完了」,但是作为个人,我的内心当中确实有很多的不甘,因为一旦盗版出现,这本书的盈利空间就会被急速压缩到接近没有(二月份一本都没有卖出去,淦!),而我其实还幻想着如果这本书能稍有盈利,哪怕只有一点,也想捐给开源字体的作者,进而尝试让这个世界变得更美好。可惜至此梦想算是破灭了(ˊ_>ˋ)。
在看到被盗版的信息之后,我们意识到一件事情:真正的正版读者成为了最大的受害者,他们付了钱,还得被迫忍受书城的残忍的阅读体验。于是我们第一时间移除了所有平台的 DRM 限制,并发布了如下公告:
各位好,鑒於我們的書籍已經被盜版,致使正版用戶的閲讀體驗劣於盜版用戶,因此敝社決定在 Kobo 和 Readmoo 平臺開放 DRM-Free下載,以平衡正版讀者的閲讀體驗,非常感謝大家願意付費支持我們的作品。
我能理解这是一本在台湾出版的读物,中国大陆的读者(特别是没有信用卡的学生)想要读到可能真的只能看盗版。也有穷学生银行卡常年两位数(我也认识不少这样的学生),只能看盗版。
但对于盗版读者来讲,我也希望您能明白一件事情。和庞大的学术出版机构不同,一般出版机构和小型独立出版者遵循着截然不同的运作方式,盗版的出现会彻底掐死一本书的盈利空间。有的时候甚至不是盈利,而是继续存活下去的希望。在这个话语体系下,发布「资源」的人不是勇士,而文化屠夫被盛赞的世界,绝对不是一个社会应当前行的方向。
如果你不想付费的话,可以访问如下盗版资源下载地址阅读我的书籍:
如果你想购买的话,可以考虑如下电子书商城:
请用钱砸死我,谢谢!(鞠躬)
]]>国际版的价格比中国版贵了不少,涨价幅度达到了上千元。我选择当「盘子」购买国际版的原因主要是两个方面:一方面,国际版允许用户选择数据中心的位置,如存储数据于欧洲或美国,而国行版只能选择中国数据中心,考虑到欧盟这种「干啥啥不行,立法第一名」的调性,隐私保证方面可能会更靠谱一些;另一方面,我期望国际版的系统相对更为干净,没有太多预装软件。
现在设备买回来已经用了一周多,遂执笔分享一下我的使用感受。
大致而言,这款设备主要优势主要是目前顶规的墨水屏、高通 8 系列 CPU 和不错的快刷算法,这确保了尚且流畅的操作体验(你不能期待墨水屏设备的屏幕刷新速度能和手机一样)。
操作系统操作体验偏原生,被魔改的痕迹很轻。国际版自带 Google Play,大大简化了第三方应用的安装过程。设备自带的阅读工具体验基本上算是优秀,笔记和阅读体验基本流畅。
黑白内容的显示分辨率是 300 PPI,在整个墨水屏领域都可以称得上是顶规。拜此所赐,阅读纯文本内容和看黑白漫画时,画面极为清晰,使得长时间阅读变得非常舒适。
彩色显示虽然不如传统彩屏那样鲜艳,但在电子墨水屏幕中已属上乘,看漫画绝对够用。如果你真的很能将就,看看 YouTube 也不是不行,颇有哈利波特当中演绎的活报纸的味道。
不过对我个人来讲最重要的是,在系统 launcher 上也敢用彩色图标了,可喜可贺。
平板搭载的高通 8 系列 CPU 保证了大部份应用都能流畅运行(如果不用它打原神的话)。
但如你所知的,墨水屏刷新率再快它还是个墨屏,就算打字不会感受到太多延迟,界面有动画的话,帧率还是会有残影和不忍直视的帧率(低于 24fps)。当然,你都已经决定用墨水屏了,这点也就没什么可抱怨的了。
可在我看来这种低帧率是一种优势,因为你不会想要用它刷 Instagram 或者 YouTube,会被迫进入一种阅读状态当中。这种主动降低体验以换取专注的生意是非常划算的。
就单纯的书写笔记,或者画画图这类任务,文石的笔都可以称得上是完美胜任。书写延迟非常低,如果你不介意画面视觉效果受些影响的话,贴个类纸膜可以带来与纸张书写高度相似的体验。在这个平板上一边读书一边写写画画,是一种既有趣味性,又很实用的体验。此外,对于追求更高书写质量的用户,可以选择更贵一些的 LAMY EMR 笔来提升体验。
文石对自己的开发能力有充分的认知,「如果改不明白就不瞎改」。整个操作系统体验非常原生,这在国产设备当中是难能可贵的品质。不知道你怎么看那些过度本地化和广告满天飞的「OS」,反正我是对那些玩意不感冒。
开放系统的主要优势在于它的高度可定制性。用户可以根据自己的喜好和需求,安装第三方 Launcher,改变桌面布局,甚至是整个用户界面的风格。对于那些热衷于个性化设备的用户来说,这种灵活性是封闭系统所无法提供的。比如我上机第一天就换上了 Square Launcher,缅怀一下逝去的 Windows 磁贴,装上了 KWGT,自己设计了一个全屏时钟,算是将我的诡异审美淋漓尽致的发挥了一遍。
尽管文石隐藏了 Android 原生的设置界面,但是只要你安装了一个第三方的 Launcher,就可以方便的把熟悉的设置界面找回来,像是用电量分析曲线、开发者工具这些常见的功能全都一应俱全。最重要的是,打开开发者功能并不需要看读秒,感受厂商「为你好」的苦口婆心。
对我来讲,费劲把设置界面找回来,最重要的目的便是使用「多用户」这个功能。Android 的多用户功能和 Work Profile 功能是最为人称道的。不想让国产应用瞎鸡巴爬你的个人隐私,可以用 island 把应用隔离到另外一个 Profile 中。如果担心自己手贱总是滑社交媒体,则可以将他们统统放进另外一个用户里面,增加了打开这些软件的难度,使用它们的意愿自然就会变弱。很多国产操作系统厂商会把这部分功能魔改成应用多开,但我个人实在无法认同这种操作。文石没有这样做,文石做的很好,学学文石。
这款平板提供了非常优秀的阅读体验。设备本身支持多种阅读格式和第三方阅读应用,使得用户可以自由选择适合自己的阅读方式。内置的阅读器与手写笔配合得极好,使得在书本上上做标记、批注变得颇为便捷。
另外需要着重提的是,设备自带阅读器的听书功能非常、非常值得称赞(对于像我这样的 ADHD 患者来讲,这是一个必须的功能)。文石并没有多此一举的自己造一个 TTS 系统,而是调用了 Android 内置的 TTS API,这意味着我们可以自己安装朗读引擎。我用的是 TTS Server 这个软件,它能调用 Edge 浏览器的「大声朗读」接口,用非常自然的声音朗诵书本的内容。
最重要的一点:重量和尺寸问题。键盘盖的重量与平板本身相当,这意味着整体携带的重量会直接翻倍。而且键盘比平板本身大,左右多出来的空间会直接遮挡充电口,这意味着你每次充电的时候都不能盲插,只能把盖子打开,把线插进去,然后把盖子盖上,整个过程和「精致优雅」毫无关联,也让它猴贵的价格变得滑稽。
另外,键盘盖左右两边延长出来的区域也会遮挡指纹识别:你很难一次扫描一整根手指,录入指纹的时候要手指反复的乔角度,心中默念大悲咒,期待幸运降临,你的指纹能被成功录进去一次。
如果上面谈到的只是「好不好」,那么接下来要谈的就是「能不能用」的问题了。
在你打开键盘的时候,偶尔也会出现系统识别不出来键盘的问题,只能把整个壳子拔掉重新插一次,看起来很蠢。当键盘盖被折叠到平板背后时,整个键盘理应停止响应以避免误触,但实际上,键盘有时候并不会被禁用。这种设计缺陷会导致用户在触摸屏幕操作时不小心触发键盘和鼠标,从而产生大量误操作。另外,合上盖子系统的背光也不一定会灭,这会让你的电量一直不停的掉,很恼人。
更要命的是,它的触摸板并没有做任何防误触,你在打字的时候如果手掌碰到触摸板,输入的文字就会直接飞掉。这篇稿子的前半部分都是在平板上完成的,录入过程让人血压飙升,最后我一气之下禁用了触摸板,才算是找回了内心当中的平静。当然,哪怕你禁用了触摸板,鼠标指针已经不会动了,那个鼠标指针依然会出现在屏幕上,不离不弃,就像你的恐怖前任一样。甚至设备重启之后「禁用触摸板」的功能还会自己重新开启。
键盘盖的支架设计在稳定性和角度调节上也不尽如人意。与市面上一些顶级设备(如 Surface)相比,文石平板的支架操作颇为别扭,在调整角度的时候稍有不慎整个平板就会跟保护壳脱离,看起来很 Drama。
最后,系统和键盘的整合做得很差。你不能调整鼠标移动的速度,不能设定双指滚动的方向(Windows 的滚动方式还是 macOS 的「自然滚动」),很多系统元素不能和鼠标操作。比如右上角下滑出来的控制中心当中的那些开关,你会期待双指左右滑它能翻页,实际上它不能。你会期待点击下面的几个小圆点能翻页,但它也不能,这时候你只能拿手指在屏幕上滑动点击。
看起来在屏幕上操作没什么,但它确确实实的打断了你的心流状态,而且类似的毛病还有很多。
文石优秀的书写体验与第三方应用毫无瓜葛。无论是 Good Note 还是 OneNote,书写延迟都非常离谱,近乎于不可用的状态。在第三方应用适配上,Android 阵营的确是有「得天独厚」的劣势。浪费了开放的应用生态,非常可惜。
此外,这只笔有一个质感非常粗糙的硅胶笔帽,就像很厚的气球一样,在用笔写字的时候我经常都不知道应该把它放在哪里。套在后面?但是笔的后面是橡皮功能啊。放桌子上?那么小的一个玩意天知道一会会滚到哪里去。但是我们能索性把笔帽丢掉吗?不行呀,因为这根笔很脆弱呀!
没错,这根笔的品控本身也有问题,北京 SKP 有一个文石的线下体验店,那里所有的笔个保个都是坏的,具体表现为你的笔接近屏幕就会开始出现墨迹,而不是按在屏幕上出现墨迹。Bilibili 上也有用户抱怨类似的问题,可见这并不是 SKP 这个地方和文石八字不合。隔壁科大讯飞、掌阅的阅读器都不会有这种问题。
另外,虽然设备顶部磁贴能吸住笔,但是你得可以乔笔的位置,确保它能够对正,这样吸力才是最强的。不过「对正」这件事情其实不刻意练习很难凭直觉做到,不对正也能吸得上去,就是不太稳固容易把笔搞掉,还会挡音量键。算是设计上的一个无关痛痒的小失误。
嘛,不过这个笔帽还是有优点的,弹性十足,我经常把笔套好,用笔帽轻轻的撞击桌面,看它回弹起来,算是个针对 ADHD 患者的疗愈工具。
最大的问题是交互体验的设计。在用户界面设计上,文石倾向于使用图标来表示功能,且不用文字对功能进行描述。这种设计理念本身并无问题,但文石的图标设计不够直观,很多时候用户需要猜测图标的含义,这极大的降低了使用效率并增加了用户的挫败感。这个问题在自带阅读软件中体现的尤为明显。「三个点」和「三条横线」究竟有什么区别?「AI」又是什么东西,是智能助理还是 OCR?每次在菜单当中搜索功能的时候,我都会被这些自作聪明的图标设计搞得云里雾里。
其次是国际化。文石作为一个享誉国际的大牌子,其产品的国际化水平却与之极不相称。首先,操作系统的英文翻译的质量较差,缺乏地道性,这可能会对非中文母语用户造成理解上的困难。此外,界面设计明显是以中文为主导,当切换到信息密度较低的语言(如英语),版型会出现错位,这是很典型的思虑不周,而且很多国产品牌(比如山灵)都犯过这种低级错误。在软件开发中,通常以信息密度最低的语言为设计基准,以确保在切换到不同语言时,布局不会受到影响。文石在这方面的处理显然有待改进。
不光是系统层面,如果你打开欧洲数据中心的 Boox 传书服务,会发现中文界面切换语言的按钮是「中文」,试问一个英语用户究竟要怎样把这两个不认识的字和「语言」的概念连接在一起?除此以外还有很多做得很粗心的东西,像是默认的手机国家编号是 +86,同意隐私协议这句话的翻译是:「Agree Privacy Policy 、 User Agreement」。没错,中间那个标点符号是顿号。至于那些比例错误又模糊的图片,完全不符合设计原理的奇妙边距,都已经是无足轻重的小问题了。
接下来值得吐槽的是系统更新的推送。文石系统的更新与安卓系统的更新是分离的。文石提供的系统更新主要是针对其自有的 launcher 和应用程序,而底层的安卓系统可能停留在旧版本。在测试时,尽管安卓系统已经更新到了Android 14,文石平板仍在运行 Android 12。这意味着用户可能无法享受到最新的安全修补和系统特性。
在 PlatyHsu 老师的文章中,文石曾经反馈过:
根据文石工作人员后来补充的信息,Max2(2018 年上市)、Note Pro(2019 年上市)等旧设备已于今年 6 月获得 3.3.2 版更新。
但在这里我要质疑这是不是一个文字游戏。我阅读了文石官方的所有更新记录,对于 Android 版本的升级只字未提,这里更新的究竟是 Android 操作系统的版本还是文石内置软件的版本?作为开放系统,更新的操作系统意味着更好的隐私保护策略,这些功能能够帮助我们更好的规范那些手脚不干净的应用,是必要的更新。文石官方究竟有没有在这方面做出努力?在这里我要打一个大大的问号。
既然谈到隐私,那就不得不再讲讲文石的隐私策略了。哪怕是「国际版本」的设备,内置的 TTS 依然默认提供了百度的服务而非 Azure,我不是很确定百度的境内服务究竟能不能过得去 GDPR,但文石好像不是很在乎这件事情。此外,如果你详读隐私策略,就会发现文石的境外数据依然由由中国内地的公司实体控制,而不是像微信、飞书等公司在海外单独设立公司处理数据来处理合规性的问题。这可能意味着用户数据受中国网络安全法的约束,这对在欧盟境内寻求数据保护的用户来说是一个潜在的问题。其实关于内置输入法我也有类似的担忧,毕竟我们并不知道「语音识别」和「字典」这些功能到底会连到哪边的服务器上,他家的隐私协议也没写这些东西。不过限于时间有限我并没有直接操起网络调试工具分析流量,只能直接用 adb 把整个输入法卸载掉了。
最后谈一下应用程序耦合问题,文石将多个关键功能集成在名为「ContentBrowser(com.onyx)」的应用程序中,这导致了系统的耦合度过高。如果用户希望使用第三方启动器,这些功能都没有直接的 launcher 图标。另外像是传书功能和日历便签耦合在一起,也是莫名其妙的设计。这种耦合不仅限制了用户的选择,也使得系统的灵活性受到限制。
当然,你还是可以选择一个支持 Widgets 的 Launcher,通过小组间界面来唤起那些耦合的一塌糊涂的功能。但是这些 Widget 本身也有 bug,比如 Library 组件上面列出了很多书,但是你直接点击这个 Widget 上的图书封面时,有概率打不开阅读器,只能点击「Library」那个标题打开书库再选书。笔记组件也有类似的问题。
另外,它有一个叫 「Quick Launcher」的组件,理论上讲能够直接唤起书库,但实测每次按那个按钮都会固定弹出应用崩溃的弹窗,我的心情也随之崩溃。
相较黑白墨水屏设备,彩色墨水屏暗颜色非常暗。直观感受就像你小的时候在学校印刷卷子的新闻纸一样,甚至比新闻纸海暗。不开背光灯基本没法看,好在背光拉满能救得回来,这问题得怪元太不努力。
不过你还是不要想半夜猫被窝里面开着补光灯刷平板能「不那么伤眼」这种事情了,环境光和你在看的东西明度差异太大照样会视觉疲劳,补光灯更多的是用来修正设备亮度的,不是给你半夜看书用的。老老实实开灯看书才是正确的做法。
软件层面,文石大量使用了 Simple Mobile Tools 的开源工程,Package ID 都没改,导致 Google Play 自动更新的时候会跟系统内置应用冲突,属实左右互搏了。好不好用两说,如果大企业用了人家的东西还没捐款的话,就不太好看了,毕竟之前就因为开源的事情被骂过。这里只是浅浅的提一下,如果已经捐过的话当我没说。
还有各种微妙的 bug,比如屏幕方向不随着系统重启被重置、读书软件不支持 SVG 格式图片(C’mon,这是最基础的东西了)、不支持 EPUB 内嵌字体(对于一些做了防复制的 EPUB 整本书就没法阅读了)、系统阉割了 USB Controlled By 这个设置项目等等。
以及一个比较小的细节,自带阅读器不能记录每本书的旋转方向。这世间有一种东西叫做「固定版面 EPUB」的东西,里面全是图或者不能缩放的内容,每次看这种书的时候都要手动调整屏幕旋转锁真的很麻烦(步骤多而且阅读器内右上角下滑很容易误操作)。
哦,对了,电量尿崩,重度使用只能撑一天,电量消耗曲线陡得触目惊心,简直有辱「电子墨水屏」的名号。简单测了一下,背光拉满什么都不干能亮屏 17 小时(要知道这设备不开背光几乎是不可用的),USB A 口连电脑,开 spacedesk 供电和耗电甚至不能打平。感觉厂商在功耗控制上已经完全弃疗了。
所以,你猜我一定很嫌弃这个设备,甚至打算挂在海鲜市场上 9.9 包邮了?其实我用这东西用的还挺开心的。因为折腾它的过程还算是快乐,蹩脚的国际化尚且能忍,内置的 Bloatware 卸载了就好,只要不用文石官方的「云服务」隐私层面也算是能够勉强心安(尽管极为勉强),紧了触摸板键盘盖也算是可用。
把这些林林总总的毛病放在一起,拼凑出来的便是一个完成度很糟糕的设备。更何况这玩意价格猴贵,评价其品质时龟毛一些应当也不算过分。
PlatyHsu 老师在他的测评中给出了这样的评价:「至于对这份答卷是否满意,各人眼中自然会有不同看法。但至少在我看来,4096 种颜色虽然很还有限,也已经能呈现出值得一读的故事。」,我认为非常中肯,比老胡中肯。
这是一个达到了最低可用水平的设备,但离优秀还有很长的距离要走。你问我多长?大概还差三个海信吧(笑)。
]]>这个操作非常苹果。事实上 CAF 是苹果私有的封装容器,你几乎在其他平台上很难看到这种格式的踪影。而且苹果对它的支持很有限,哪怕是在 Safari 浏览器当中,它也仅实现了一部分的 CAF标准,而非全部。要知道 CAF 容器的格式标准可是苹果自己制订的。
是的,这是一个充满阿婆公司风味的奇妙操作。iPod 年代要把音频往设备里面折腾的恐怖回忆又开始攻击我了,不过这一次我打算直面这件事情,从技术面解决这个问题。
对于很多对媒体格式不是很了解的朋友可能就要懵了,封装格式、编码格式分别是什么?
实际上这是两个不同的概念,我们先从编码格式讲起。通常为了将一段我们能听得到的声音变成数字格式,我们需要进行「编码」这一个步骤。最简单的例子就是 PCM 编码啦,他把连续的声音拆开,每隔一段时间进行一次「采样」,取到振幅之后规规整整的把数字摆在一个文件里面。只要采样的频率够快(采样率),每次采样到的数据精度(比特数)够高,那么我们就能得到一个还原度很高的音频了。但是这样的编码方式有一个明显的问题:把数字一个一个堆叠在一起的存储效率非常低,我们小的时候常听的 CD,使用的就是 16 比特的 PCM 编码,一张光盘只能存一小时左右的音乐。
为了解决这个问题,确保文件的传输效率,我们可以考虑牺牲掉一部分音质,特别是常人难以察觉到的音频信息。根据这一原则,出现了诸如 MP3 和今天我们会探讨的主角:OPUS。它们都使用了不同的编码策略对音频文件进行压缩,感兴趣的读者可以读一下这份 RFC来了解它具体的编码策略。
而容器则是用来承载这些信息的工具。我们举个例子,如果你是个单身汉,一个人吃饱全家不饿,可以选择在家炒完菜直接蹲灶台边上就这锅把饭吃完,还省得刷碗了。但是如果你家里有很多人一起吃饭,或者你要把饭盒带到公司准备第二天再吃,那就必须得装个碗或者装个盒了。
音频容器在做的就是这样的工作。举个例子,如果你希望在浏览器当中播放这些音频,那么它们最好是「流媒体」格式,确保文件可以一边传输一边播放。用户不需要等到把所有文件都下载完再进行播放。这就需要我们一段一段的将音频切开,打包成数个资源片段,并且做好妥当的标注。这样浏览器在收到这些数据的时候就可以按图索骥,知道「文件加载到这里就可以开始播放了」、「这些二进制序列包含了多长时间的音频」。
无论是 OGG 还是 CAF,都是这样的一种容器,OGG 格式的容器支持 Vorbis、OPUS 和 FLAC 编码,而 CAF 容器则同样提供了 OPUS 编码的支持。
Vorbis 编码是一种已经过时了的编码方式,在任何情况下如果有 OPUS 的话我们都应该尽可能使用OPUS,而在浏览器的应用场景中其实我们很少播放无损音频,那么 FLAC 编码的支持也可以暂时放下。于是我们今天主要要解决的问题就是想办法让 Safari 认得出 OGG 容器当中的 OPUS 编码。
在开源界已经有很多解决方案了,比如说把 ffmpeg 编译成 WASM 放在 Web Worker 里面跑,但抛开这件事情的必要性不谈,WASM 的内存管理和加载管理、还有重新对文件进行编码的额外资源消耗都是一件很难处理的事情。着实属于为了解决一个问题创造十个问题了。
前端界梗小鬼共一石,万物 WASM 者独占八斗, 剩下两成 RIIR。
而针对这个问题,我提出了一个猜测,既然二者支持的都是同一种 OPUS 编码,那么我们能否通过简单的二进制拼接来实现对 OGG 容器的兼容。
那么我们要做的事情就很简单了。分别实现一个 OGG 和 CAF 格式的 Parser 来比较一下这两种格式内部存储的数据究竟是否是一致的。
首先,我们使用 ffmpeg 来制备本次研究所要使用的音频样本:
1 | ffmpeg -i ./source.mp3 -c:a libopus "target.ogg" |
这里的 -c:a copy
是很重要的,它确保了 ffmpeg 不会对音频文件进行重新编码,这样我们可以在控制编码方式这一变量的前提下来剖析两种容器的差异。
接下来就是编写一个简单的解析器了,为了图方便我选择了使用 Deno 来完成这个操作,写的时候也没什么章法可言,可以说是想怎么写就怎么写,非常随心所欲了。
我们做的第一件事情是照着 CAF 格式规范 来解剖一个 CAF 容器格式的文件。从文档当中我们可以看出,一份标准的 CAF格式文件包含一个文件头,以及数个 chunk
,其中每个 chunk
由一个 UInt32
开头,标记这个 Chunk 的类型,接下来包含了一个 SInt64
标记这个 chunk
有多长。因此在解析完毕文件头之后,就可以开始沿着这两条数据逐一对文件进行切割。实验性的代码实现在这里各位读者可以酌情参考自己的 SAN 值进行阅读。
在拆开一个 CAF 之后我们会发现,它大致包含了几种必要的 chunk
类型:
desc
描述了文件的采样率、编码格式等信息;chan
描述了多声道文件的声道配置,比如说哪颗音响放在哪边;data
被编码的音频文件二进制序列;pakt
一份 packet 表,它记录了 data
被切分成了几个可以独立播放的小单元,每个单元究竟有多长。接下来,就是照着 OGG 容器格式规范实现一个 OGG 格式的分析器啦,如果你把文件打开,会发现 OGG 容器的实现更加灵活一些。一个OGG 容器当中可以包含很多个「流」,这个流可以是不同类型的信息,可以是音频,也可以是字幕。每个流都有自己的 ID。每个流内的信息又会被分成数个小的 pages
,按照序列号首位相连。播放器可以按照流的编号和 pages 的编号把不同类型的信息粘在一起,进行妥当的解析。每一个 page都被 Oggs
四个字符隔开,并且包含了一些必要的元信息。
在这些元信息当中 segmentTable
是尤为重要的,它记录了这个 page
当中究竟包含了几个segment
(在 CAF 容器当中等价于 packet
),把这些数值加在一起我们就知道这个 page有多大了。只需要把索引往后跳这个数值,我们就一定会遇到下一个 OggS
标识。
而对于 OPUS 流,第一个 page
一定描述了文件采样率等编码信息,而第二个 page
则描述了一些元信息。比如说我们手里的文件,它的元信息是:
1 | { |
这些信息告诉我们这个文件是怎么编码的,以及用什么编码器编码的。这里我们用的是 libopus
,也就是 ffmpeg
内置的选项啦。
我的实验性 OGG 解析器实现在这里你感兴趣的话可以简单看一看。请注意这里的代码写得都很潦草,后面浏览器内的版本有好好整理过。如果你只是想简单的把 OGG 文件拆开的话可以看这里的实现,想正儿八经用的话还是推荐看后面大仓库里面的版本。
接下来要做的事情就很简单了,我们来粗糙的比对一下 CAF 容器的 pakt
和 OGG 容器的segmentTable
究竟有没有对应关系。
这是 CAF 容器的调试输出:
1 | { |
这是 OGG 容器的调试输出:
1 | { |
我们能看到,这里的数值基本上是对的上的,但是又有些不一样,比如像是 CAF 容器当中的第一个packet
尺寸是 300
,OGG 容器当中的前两个值加在一起才是 300
。造成这个差异的原因是OGG segmentTable
的编码方式造成的。让我们来读一下 RFC 3533 的第七页:
- Note that a lacing value of 255 implies that a second lacing value followsin the packet, and a value of less than 255 marks the end of the packet afterthat many additional bytes.
- A packet of 255 bytes (or a multiple of 255 bytes) is terminated by alacing value of 0. Note also that a ‘nil’ (zero length) packet is not anerror; it consists of nothing more than a lacing value of zero in the header.
翻译成中文就是:
segmentTable
当中的某个数值)为 255 意味着紧随其后的数据包中还有一个 lacing 值,而小于 255 的值标志着数据包的结束;所以我们只需要调整一下 segmentTable
的解析方式,就可以得到正确的结果了。实际上另外一个 OGG 容器解析器的实现也犯了同样的错误导致后来分析 OPUS 数据包元信息的时候出现了错误的结果。这个问题可以说是非常阴险了。
另外一方面, CAF 格式的 pakt
区间也是用另外一种方式进行编码的,只是这里我们恰巧没有撞到而已,让我们读一下苹果的文档:
The numbers describing the size of packets or frames per packet are encoded asvariable-length integers. In this encoding scheme, each byte contains 7 bitsof the binary integer and a 1-bit continuation flag—the high-order bit in eachbyte is used to indicate whether the number is continued in the next byte.
翻译成中文就是:
描述每个数据包中数据大小的数字被编码为可变长度整的数。在这种编码方案中,每个字节包含了七个 7 bit 用于描述数值本身,以及一个 1 个 bit 的「连续标志」用于指示数字的编码是否在下一个字节中继续。
看起来有点抽象,不过实现起来并不难,你可以在 GitHub 上直接找到这部分实现的源码。
下面要做的事情相对简单,我们只需要找到两个文件数据存储的对应关系即可。这边截个图,那边截个图,两个图放在一起,做做连连看,就可以找到二者的对应关系。下面的这张丑图很直观的列出了两种格式的比较。
从这张图当中我们可以看出,「采样率」、「声道数量」、「OPUS 二进制数据」这几个条目的信息可以原封不动的拿过去用;
「声道排布」这个数据需要打表重新对应过一遍之后才能,根据 RFC 7845OGG 容器本身支持 5 种声道排布,并且所有声道的布局都是固定的,而坐拥 2B 厂的 HIFI 玩家苹果则支持了更加复杂的声道排布方案。不过很不巧的是,三声道音频在两个方案中并没有重叠的布局方式,所以我们只能选择一个最接近的方案进行转换,如果你富甲一方,家里有一大堆音响,并且在用 Safari 播三声道的 OGG 音频,那么左中右的确是会窜的,不过考虑到这个情况真的很罕见,所以我们可以等有人报 bug 了再来修它。
最后就是最麻烦两个参数了,CAF 容器当中的 framesPerPacket
参数,还有给 Packet 做打表的流程。对于固定码率音频(CBR,每个音频片段的码率一致)还有可变码率音频(VBR,每个音频片段的码率不一致)的情况,这两个信息的转换方式是不一样的。
因为非常先进 OGG 容器默认假设自己包装的音频都是 VBR 的,所以开发者得等所有数据都下载完毕之后,对所有的 segment
逐个进行分析,RFC 6716对此进行了相当详细的介绍,感兴趣的读者可以看一下。如果你不嫌烦的话还可以顺便看一下这块解析的具体实现总而言之,每个 OPUS segment 都包含了至少一个 byte 用来描述这一段音频有多长时间,编码方式是什么。如果你发现所有 segment
的配置都是一样的,那么恭喜你绕过了第一个坑。
接下来就是简单的数学计算题了,CAF 格式当中的 frame
概念对应到 OGG 容器上实际上是samples
,也就是 time * sampleRate / 1000
。这个 time
可以从 OPUS 的 第一个byte
当中查到。通过这个数学计算,我们就可以把 framesPerPacket
这个数值填进去了。pakt
包里面的表则可以简单的把所有 OGG segment
当中的 table 拍扁成一个大数组,原封不动的喂过去。
但如果你发现自己的音频文件是 VBR,则需要给 framesPerPacket
填 0,然后重写一遍 pakt
表,表的容量要翻倍,每个 packet
的描述都要由两个数字完成,一个是包的大小,另外一个数值是包的帧数,计算方式和前面的介绍是一致的。
但是这个表打完之后,我们会惊喜的发现,在这份 2005 年就已经发布的规范中介绍的 VBR 编码方式直到 2023 年的 iOS 17 才得到了正常的支持。换言之在 iOS 17 以前的浏览器中,这样的音频文件是没办法被正常播放的,这很苹果。
苹果文档原话:
Variable bit rate, variable number of frames per packet (such as Ogg Vorbis):mBytesPerPacket is zero, mFramesPerPacket is zero.
你都在你自己的文档里面提了 Vorbis,但是你自家的浏览器却不支持 Vorbis,相对的整篇文档都对 OPUS 只字未提,所有东西都要靠我猜,这很苹果。
最后就是工程实现啦,没什么难的,文件怎么读的就怎么拼回去,写完了找几个样例文件,读一遍,重新构造一遍,看看两份结果一样不一样,一样就没问题了。
虽然看我洋洋洒洒写这么一大堆,但是从头到尾大宗的工作都是把二进制文件撕开再重新粘回去,在浏览器里面做这个操作的过程对于用户来讲几乎是无感的,性能非常好。
本来我是想着所有操作都用 Generator 来做流式处理的,但是拜 CAF 的天才设计所赐,在读到第三个 OGG Page 之前我基本什么都生成不出来。如果你要判断 VBR 或者 CBR 的话,那必须得等到整个文件读完才行。所以我索性直接假设所有文件都是 CBR 了,反正 iOS 17 以下的 CAF 根本不支持 VBR,针对 VBR 的播放后面我有别的招,iOS 17 以下照样能做。只是代码还没写完,写完之后我再开一篇文章介绍具体的做法。
对于终端用户,你只需要调用包提供的 fetchOggOpusFile
再把它和 oggOpusToCaf
串在一起就行了,仓库里面都有使用的例子在这里就不多赘述了。API 设计的非常底层,如果你想做成真正的 Polyfill,可以直接把它套在Service Worker 里,在文件输出给 DOM 之前做拦截和转换,如果你只是想在 JS 层面用的话,直接把二进制数据流拼成大的 Buffer,喂给 Audio Context 或者转换成 Object URL 塞进 Audio Element就好了。
最后我想再来聊聊 CAF 这个格式的设计。在我看来它的设计是相当失败的。苹果标榜自己的文件格式可以一次写入,也可以作为流媒体格式进行分享。但这两件事情在 CAF 的语境下是不兼容的。
如果我们想 One Pass 写入文件,那么 pakt
chunk 必须被放到整个文件的最后面,但是如果它被放在最后面了,那么在进行流媒体读取的时候,在整个 data
chunk 加载完之前都没办法知道整个文件的表是怎么打的,自然也就没办法播放音频了。
那如果你想让媒体本身支持流媒体读取呢?要么就在编码的时候做回写,要么就在文件编码完毕之后做一个转换,这两种方式都算不上是 One Pass 了。
但是像是 OGG,甚至上古格式 MP3 都没有这种问题,这格式的设计可以说是很失败了。
现在让我们再来看看,都 2023 年了,是哪个小可爱还没支持开源、开放、甚至是 IETF RFC 的OGG 格式标准呢?啊哈!原来是苹果!它甚至还在用自己的废物私有格式。
这很苹果。
]]>直到有一天,我的室友听闻我喜欢灯具之后,便送了我一个手工剪纸灯,但可惜的是这个灯并没有办法接入我的智能家居系统,于是乎强迫症发作的我决定自己购买元器件,把这个手工作品变成五彩斑斓的黑的智能灯具。其实过程并不困难,而且做了一次就会上瘾,后来我陆陆续续把家里的各种小废物都做成了各种灯具,着实好玩。借着今天这个机会我决定把先前的经验整理一下,做一个笔记,如果各位也想做自己的灯具的话,不妨亲自试试。
提到自己做小家电(?)初心者可能会觉得很忐忑,但因为我们这词用的都是低压电做操作,所以过程是相当安全的,需要的元器件只有LED 灯带、ESP8266 等各种不会放出魔法烟雾的组件,所以我们可以放心大胆的做喔!
先来看一下做出来的东西大概都会长什么样子,先是最基本款的地灯和床头长条灯。这个地灯是在淘宝上买了两个木制杯盖,一个带勺孔的,用来吐出 USB 接口,一个不带孔的用来封顶。中间的塑料管子是买胶带的时候送的,中间搞了个纸筒,把 LED 缠绕到上面。
床头的那个长灯是淘宝买的亚克力管子,中间嵌了一根亚克力条,把所有灯条粘上去然后用导线连接一下,两边的木底座是额外做的两个方形带盖礼盒,请卖家帮我打了能透出 USB 充电线的孔和能把管子插进去的洞。
桌面上的两个灯更加特别一些,一个是前室友sonson该我的剪纸手工,在最后一层里面贴上了彩色 LED,然后把侧面切开,留出插电源线的位置,一个看起来很有格调的桌灯就做好了。
旁边的那个暴风屏则是在淘宝上买了一个用来供佛像的底座,把自带的灯都抠出来,换成了环形 RGB 灯条,从下面透上来的灯光在瓶子里面反复的折射让整个瓶子看起来更像老巫婆的法具了。
基本工具:
接下来就是备料环节啦,首先是最基本的焊接工具,包括烙铁、焊锡和松香(助焊剂)。
灯泡:
接下来我们要开始准备灯泡,有两种选择,如果你追求亮度比较高,或者可玩性比较强,那么可以买 12V 的灯带,这种灯带可以自己随意剪裁(当然还是得按照基本法,只能在节点之间剪),而灯环则是比较紧凑小巧的选择,可以很方便的嵌入到一个小位置,像是我的灯座就是用它做的。如果你想给自己的二次元老婆做个底座的话,也可以考虑这种小灯环。请注意选择电压不一样的灯,一会选择电源和连接器件的方式会有所不同,接下来我们会详细解释。
除了基本的工具之外,我们还要买一些用来供电的元器件。你需要根据自己买的灯炮参数来选择使用一般 5V 供电头,或者是电压更高的 12V PD 诱骗头。通常来讲如果你买的灯带很长的话,推荐购买 12V 的供电头,因为电流会小一点,能接的灯相对多一些。
因为我们的 ESP 芯片需要 5V 供电,所以如果你买了 12V 灯条和供电端的话,则需要额外买一个降压芯片防止我们的 ESP 芯片爆掉。
接下来是电平转换芯片,因为 ESP 输出的信号电压是无法直接控制大部分 LED 灯珠的,所以我们需要用这个电平转换芯片来做一下升压。
最后就是电线啦,根据你的喜好,可以买带接头杜邦线的或者不带接头的一般电线。前者不用你用烙铁来回焊接,但是可靠性差一些,后者需要焊接,但是比较费手。
ESP 控制开发板:
接下来就是 ESP 开发板啦,它可以收发 WIFI 信号,如果在上面跑一个 HTTP 服务器的话就可以做很多事情了,实际上我们这次用的 WLED 干的就是这个事情。根据你想做的夜灯类型,请从下面二者当中选择一个!
其他:
首先是处理和供电有关的问题,拿四根公转公杜邦线,把一段的塑料卡头用剪子剪掉,然后用壁纸刀去掉一部分外面的胶皮,把两根线两两一组拧在一起,推荐拧的稍微工整一些,然后把外面露出来的铜线头对折,上面粘一层焊锡。
红线接 V 那边(+),蓝线接 G 那边(-)。
有电工胶带的话缠一圈,没有的话裸着也行。
首先是处理和供电有关的问题,拿四根公转公杜邦线,把一段的塑料卡头用剪子剪掉,然后用壁纸刀去掉一部分外面的胶皮,把两根线两两一组拧在一起,推荐拧的稍微工整一些,然后把外面露出来的铜线头对折,上面粘一层焊锡。
红线接 V 那边(+),蓝线接 G 那边(-)。
有电工胶带的话缠一圈,没有的话裸着也行。
接下来是电平转换芯片,它负责把 ESP 输出的 3.3V GPIO 信号升到 5V,进而控制 LED 灯带的信号。
这个芯片是需要供电的,我们把降压芯片输出的 5V 电接到这颗芯片上,本教程附带的链接里面所贩售的商品上面有附针脚,可以先把针脚焊在芯片上,然后把杜邦线的母头直接插在阵脚上,这样做的好处是新手友好,接反了也可以直接拔下来换掉,当然你也可以直接把杜邦线的橡胶去掉一部分然后直接把线头焊在孔上,这样做的好处是占用的体积比较小。
然后是 ESP 开发板,它负责控制整个 LED 的颜色变化。
把降压芯片还剩下的两根线分别插在 GND 和 VIN 上,如果你追求紧凑的话可以把 ESP 上所有的焊锡都吸掉,拆掉针脚,然后再把线焊在上面,当然工作量稍稍有点大就是了。
把电平转换模块和 ESP 开发板接在一起,具体的,你需要把 ESP D4 和 电平转换模块的 LV1 接在一起,这里推荐接 D4,因为他是后面我们要用到的 WLED 默认使用的 GPIO 针脚,如果插别的针脚需要做额外设置,比较烦。
最后一步,用一根公转母的杜邦线把电平转换模块的 HV1 与 LED 灯条连在一起,将 PD 诱骗芯片的供电接在 LED 灯带上,你就完成了基本的组装。
整个东西差不多就是这么接,还挺简单的。
最后就是刷固件的环节啦!
首先要在电脑上安装好 ESP 的驱动,每个厂家的驱动都不一样,要去找淘宝卖家要,在这里就不多做赘述了。接下来主要介绍要刷什么固件。
如果你买的是 WS2814 灯带,需要到这个网址下载一个历史版本的实验性 WLED 固件(新版本固件把串口信号时序给改坏了,带不起来你的灯条的),然后再用 Tasmotizer 把固件刷进去就好了。
设置界面里面的 LED 类型和时序信息要这么填,颜色才不会乱掉。
如果你买的是 WS2812B 灯环,那么可以直接把你的开发板插到电脑上,驱动装齐之后直接到这个网址用 WebUSB 把固件刷进去就行了。
至此,你的灯应该就能工作啦!是不是很简单呢!
祝你也有一个适合自己的 RGB 小屋,Happy Hacking!
]]>今天我们要讨论的话题非常有争议:语言考试和语言能力的问题。事实上,在许多场合我都提到了这样一个观点:如果你在非英语环境中学习语言,最高效的方式实际上是策略地进行结构化学习,而不是浪漫地沉浸在英语环境中。
对于大多数中国学生来讲,仅仅依靠「沉浸在这个环境中」并不能很快地提高语言水平。因为我们国家的官方语言并不是英语,大多数学校也不会践行双语教学,因此很难构建起来一个完全充斥英语的环境。除此以外,小学取消英语课程更是让英文语言能力的学习变得雪上加霜。如果你看过 IELTS 的全球学生成绩分析报告就会发现,我们和其他国家学生的成绩存在着很大的差异,像是菲律宾(被希望灯塔照耀过的地方,官方语言本身就是他加禄语和英语)或者马来西亚(被女王加护国的国度,虽然官方语言是马来语,但是因为历史原因双语教育贯穿了这个国家教育系统的每一部分)在这方面显得更有优势一些。
因此,除非你付出了巨大的努力,使周围的语言环境变得更加浓厚,才有可能从一个完全不懂的人变成一个流利的语言使用者。这就像腌腊八蒜一样,你得至少得有浓度够高的腌料才行,拿一盆矿泉水去腌是腌不出腊八蒜的。
然而中国的语境下,我认为大部分人无法通过简单地听音乐、观看 YouTube 视频等欢乐的方式来快速学习语言。虽然有一些人能够享受在其中,但我们必须尊重人和人之间的差异,并不是所有人都能把「无字幕看英文」这件事情纳入他们的生活,也不是每个人都能通过这样的方式获得「放松」。因此,对于一些人群来讲,试图将需要极大认知资源的「学习内容」引入他们的休闲生活中是非常残忍的,因为这对学习者来讲会形成另外一种压力,在这个上下文当中,学习者本身也是很可怜的,因为那种休闲并不纯粹,也充满压力,这不利于良好习惯的长期养成。
是的,这是我提出的一个非常不同的观点:我认为如果你想在一个非英语环境当中有效地学习英语,除了「浪漫而自然的学习之外」,「依托教育测评进行结构化学习」同样是一种有效的学习方式,它可以促进语言能力的提升。结构化学习是指依照某一有效的教育测评系统的考察框架,有策略地进行能力提升。这个时候我们要做的事情就非常明确了:努力提高在语言考试中的成绩。这种学习方式是明确、可检验、可量化、可被规划的语言学习方式。
事实上,现在大多数学校和政府承认的语言考试之所以被承认,是因为它们是有效的——它们能够有效地反映出你的语言能力。尽管考生可能是一个高分低能的人,可能在语言考试中获得了雅思 6.5 分或 7 分的成绩,但当你去国外的时候仍然会遇到困难。但这并没有什么大问题,因为语言考试并没有涵盖你在实际应用中的能力,我接受这一点,并且将之视作某种妥协。
但是,我们来看看一个雅思英语 9 分的人、雅思英语 8 分的人和雅思英语 4.5 分的人,他们在听说读写各个方面的能力肯定是不同的。这当然包括一些应试技巧的成分,但仅仅依靠应试技巧是无法在雅思考试中获得高分的。对于大多数有效的英语考试,「应试策略」能产生的影响都是有限的,它能够快速的帮助考生及格,但是难以帮助考生获得一个很高的分数。对于很多考生来讲哪怕一直一直拼命上课,最后也还是困在 5.5 分和 6 分的分数线上。
通过语言考试来学习英语可以提升语言能力,并且它能够给予明确的目标和反馈。当你学习英语时,你可以明显看到自己的分数提高,比如今天我得了一个更高的分数,几个月之后的考试时我又进步了两分,这个分数清楚地告诉你自己的语言能力在提高。对于语言学习者来说,尤其是那些没有置身于英文语言环境中的人,这种清晰而明确的反馈回路是非常重要的。
接下来,我们来看看考试和实际应用之间的矛盾关系。很多人和我争论这个问题,认为考试只是考试而已。但我认为,考试的本质是什么呢?从统计学和教育测评的角度来看,考试就是从你的语言能力中切割出一块样本。这个刀切得非常稳定,你的英语拿给我,我切下一块,看一下你的断面,我就知道你的语言能力是怎样的。
英语考试的目的并不是全面评估你的英语能力的方方面面。比如说,英语考试不会考察你如何使用俚语,也不会考察你如何与人打招呼。这些内容很少出现在考试中,但相对而言,你可以把自己投入到国外两个星期,就能够学会这些。这些能力并不是决定性的。英语考试主要考察的是听、说、读、写等基础技能,这些是非常重要的。如果你去查看各种考试的考纲,无论是高考、雅思、PTE 还是多邻国考试,它们都有一个明确的标准,即认为你是一个优秀的英语语言使用者时,你需要具备哪些能力。
换言之:通过语言考试来学习英语可以建立一个扎实的基础。这个基础非常重要,因为当你真正置身于国外时,有了这个基础,你可以更快地掌握考试未涵盖的其他语言能力。你可以将这个基础打好,然后继续往前发展。语言考试的存在意义是为了采样评估一些被认为非常重要的语言能力。这些语言能力可以帮助你快速融入社会。尽管语言考试并没有覆盖所有语言能力的考察,但通过已有的这些能力,你可以快速搭建起其他能力的基础,这是在语言环境匮乏的状态下支撑起语言能力的重要方式。
当然,语言考试本身并不能测评完整的语言能力,语言考试本身。但作为一名英语学习者,特别是如果你想出国留学或追求其他目标,通过参加英语考试来提高自己的语言能力是没有问题的,而且我认为这是非常有效的方法。
在这里我想以写作为例展开聊聊。考过中高考的学生应该都了解,作文大致上可以被分成两块,「抒情文」和「应用文」。但是作为已经被社会打磨到 border-radius: 50%
情感木讷的成年人,「抒情」这件事情的需求并不高。从实用角度触发,站在另外一面的「应用文」其具备的实际价值可能更高一些。
对于大多数大学生来讲,最典型的「应用文」就是论文和研究报告了。这些写作通常有明确的结构,比如摘要、引言、方法、结果和讨论,可以说是一种八股文的形式。每一段都有明确的写作方式和目的,这并不浪漫,你可以在其中运用一些炫技的语法技巧,但这不影响你写出一篇优秀的论述。重要的是你的内容质量和其中的思考。这和雅思、托福以及其他英语考试的作文考察方向是一致的。它们都注重你是否能有效地表达自己,以及有条理地表达你的想法,而不追求浪漫的修辞。
我曾经分享过这样的一个观点,一篇雅思英语作文可以分解为 13 个句子,每个句子都有特定的目的,只要你把这 13 个句子写清楚,理解每个句子的目的,你就能写出高分作文。这种方法可以看作是一种排列组合的游戏,通过学习和组合这些句子,结合现有的资源进行比对,并完成写作任务。一旦你掌握了这些句子的写作方法,与之对应的,即是掌握了一篇文章对应某一部分内容的写作思路和写作方式,这样的结构可以经由横向扩展变成一篇更长的文章。因此,掌握了「这 13 个句子」可以在一定程度上反映出「掌握了基础写作的能力」。从这个角度来看,考试本身不仅是一个扁平的切面,也是一个投影,它试图从你的宏观英语能力当中进行数个采样,投射到测验成绩上,并形成量化指标。
我曾设想过,提供大量的碎片资源,让学习者自己去搭积木,组合不同的语料、体会其中的用法和规律,通过不断模仿和学习,掌握如何写这 13 个句子。当你掌握了如何写这些句子,其对应的词汇拼写、词汇用法、语法、惯用表达,那么我们就可以说你「学会了」如何完成这一部分写作。当然词汇有简单有复杂,惯用表达也有地道不地道之分,对应不同的话题,需要的表达也千千万,所以这不是一个容易的事情,但是这样的学习方式本身提供了一个脚手架,可以帮助学习者聚焦于一个特定的学习课题:比如如何介绍一个观点,如何在「经济」这个大话题下介绍这个观点。与之对应的,就是在特定任务与语境当中积累自己的语言知识和能力。
另一方面,包括高考作文在内,其实也没有太多浪漫的要求。如果你想获得一个较高的分数,完全可以不使用浪漫的修辞手法,而是将重点放在基础的写作能力和文字组织能力上。一旦跨过这个阶段,我们当然可以追求更高层次的表达,但基础的语言组织总是更加重要的。
然而,有些人在写作时可能会颠三倒四,甚至在平时交流中也如此。当谈到学习写作时,却提及一些虚无缥缈的东西,如对世界的理解、美好愿景、人生脉络等。我认为这些东西必须要建筑在我们先前讨论的写作基础能力和思维能力之上。对于语言学习者来说,重要的是掌握基本的语法、词汇和句式结构等基础知识。一旦掌握了这些基础,你再进一步发展会更容易。
实际上如果我们把不同考试的评分标准拉出来看就能发现它并不是那么容易被暴力破解的,在这里我重新整理了几个主流的英语考试: IELTS, TOFEL, DET(Duolingo English Test), PTE(Pearson Test of English) 的评分标准,并且归纳成数方面:
从这些方面我们可以很清晰地看出:你当然可以使用各种应试技巧 Hack 出一个及格的成绩,但是如果不将这些标准对应的语言素养内化,那么是永远拿不到一个更高的分数的,这便是英语考试区分度的体现。
那么就到了行动规划阶段了,我们需要选择适合的考试类型。我们可以把这类语言考试分成两大类:传统型考试和新形态的考试。它们对应教育测评理论和能力提升侧面都是不一样的。
如果你的目的是想要全面提升自己的语言能力,并且下定决心以长周期的节奏准备自己的测验(比如说坚持两到三年,每两到三个月参加一次考试),那么传统的 IELTS 和 TOFEL 都是很好的选择,因为它们的考试场景更加贴近实际的语用场景。我们需要阅读相对复杂的文章,写很长的论述,它对于语言能力的考察切分的不是那么细,所以更加利于宏观全面的能力提升。
如果你迫切的想要提升基础素质,那么 PTE 和 DET 这两种新派的考试更加适合你,这类考试本身没有特别「复杂的题目」(但我没有说它没有难题,复杂和难是两个概念),你只需要完成短平快的小题即可。特别是 DET,它刻意把「词汇」这一部分划出来单独做考察,如果你发现自己主要面临的困难是单词量不够,那么选择挑战这个考试会更有针对性一些。另外值得注意的是,这两个考试时间很短(分别是两个小时和一个小时),相对于雅思三个半小时的铁人三项膀胱挑战赛,这显然更有亲和力。
你可以将每个月或者每二至三个月的最后一个周六作为模拟考试日,选择一个考试类型,将其当作你的月考或期中考期末考,然后持续学习并验证自己是否在正确的学习轨道上。通过绘制学习曲线,你可以观察自己的进步情况,如果遇到瓶颈,就可以找出问题所在,并解决它们。虽然这些考试都很贵,但如果这些很贵的代价可以帮助学习者更加重视自己眼前的考卷,那么我觉得它就是值得的。毕竟出了校门之后我们就很难再找到像四六级一样,「心理代价很高」的测评系统了。
正如我们先前所讲的,你当然可以学习各种各样花哨的考试技巧帮助自己把成绩提到及格线以上,这都是没有问题的,但随着目标分数不断提升,你就会发现应试套路能起到的作用开始变得越来越小。从某个特定节点开始,真正「拼实力」的时刻就到了。学习方式也可能需要从短平快的「背模板」、「做精听」转变成系统性的做听抄、跟读、复读、背诵、拆解、模仿。这些练习的过程正是带动语言能力提升的重要引擎。
在最后一个内容段落当中,我想非常简要的阐述一下上面这些讨论的立论基础:那就是教育测评作为一个专门的研究方向,其背后对应的理论和实操积累远比诸位想象的要庞大。作为一名有专业教育学背景的作者,我充分的意识到了大量工作者在这方面付出的努力。教育是一件很容易被轻视事情,考试也是,因为我们每个人都体会过教育,每个人都接受过考试,正因如此我们才会觉得它们理所应当。但如果你真的看过一些教育测评与教育学相关的书籍,就会发现每一套测评系统背后都是由各种复杂的因素驱动的,这个领域,就像其他领域一样,同样具有专业性,需要我们报以敬畏。
如果学得进去,那么任何方法都可以成为好的方法:你可以选择自己喜欢的方式来学习。但是如果你学不进去,那么以规范、系统的方式学习,按部就班地学习同样可以是高效的方法。学习并不总是快乐的,快乐学习并不存在。学习本身可能是一种痛苦的过程,但这并不妨碍我们取得进步。
最后,我们再来看一个非常重要的问题:为什么要学英语?如果只是因为自己的英语水平较差而感到焦虑,那这个焦虑本身是没有意义的。我们需要明确自己学习英语的目的和应用场景,以便将英语运用到实际生活中。当你认识到自己英语水平的问题时,你需要找出具体存在的问题,并寻找解决这些问题的方法和途径。
每个人学习英语的原因可能不同,例如为了升学、职业发展、国际交流、文化体验或是个人兴趣等。明确自己的学习目标和需求,可以帮助你更有针对性地学习英语,并将其应用到相关领域中。对于不同的目标,可能需要不同的学习方法和策略。因此,找到问题、真实存在的问题,并为其找到解决途径是非常重要的。
我鼓励各位思考和探索自己学习英语的真正动机和目标,以便在学习过程中保持动力和明确的方向。希望今天我们讨论到的这种非主流的思考方式可以为你提供不同的视角,帮助你更好地规划和实现自己的英语学习目标。
以上就是今天的分享,祝大家学业有成。
]]>其实每次在 Telegram 上水群看到 GitHub 项目的缩图心都会很痒,因为那么大的一张图明晃晃的摆在聊天信息里面看起来就非常的醒目。可是 GitHub 的那个贴图太素了,不太符合我这种花哨的审美取向,于是我就打开了Affinity,开始研究来做一个狂拽酷炫屌炸天的缩图。
这篇文章会简单介绍一下设计思路和工程实现方法,如果你也想要做类似的工作的话,可以参考一下喔!
我面对的第一个问题是博客素材规格的问题,如你所见所有文章的题头图都是窄窄的一条带鱼图,然而社交网站上的缩图尺寸则普遍接近 16:9,这就让事情变得有些难搞了:如果硬把一张图拉成大图,那么画面一定会糊掉,而且内容会被裁得乱七八糟。为了处理这件事我的第一个想法是把图像的结构重新调整一下,参考 JetBrains的题头图设计思路,让整张图能够完整呈现,还可以体现出某种有韵律的动态感。
当时脑袋里面构想的图片大概如下图所示,一张长条图被折叠成了三段放在图像的右侧作为装饰,折叠部分的阴影使用了青色来确保画面不会太暗。背景使用了我一贯喜欢的铁青色,这个颜色也是本博客暗色模式下的背景色,这样的设计可以帮助我统一视觉系统的一致性。
左下角是文字,为了给画面加一点引人注目的装饰,所以标题的第一行选择随机从 Material Design Classic的色彩系统当中随机挑选一种颜色作为背景,这样整个图片看起来不会太无聊。为了区隔文本和背景,顺便加了一个颜色很跳的阴影和边框,这里的选色和右面装饰图的阴影是一致的,这样的选择可以确保画面不是太花。因为画面上已经没地方塞其他东西了,所以 Logo 被当成了阴影置于画面后方,算是强调一下个人 IP 了。
但是这个设计最大的问题是实现难度。对于大多数个人博客维护者来讲,手动给每篇文章做贴图是非常折磨人的,所以我一定会尽可能的把这个过程自动化,但是这个设计稿想要通过某种自动化的方式绘制出来,其开发成本真的太高了(对我来讲,折腾博客模板的时间如果超过了写文章时间的 20% 那这个时间成本就是不值当的)。我甚至还没给那条带鱼图加三位透视,整张图的绘制过程就已经让人非常头痛,虽然说可以硬着头皮直接上,但我还是想要留更多时间在创作内容上,于是这个设计想法被搁置了。
后来看到了另外一张图的设计稿重新点燃了我的灵感抄袭的欲望(哎呀,读书人的事情怎么能叫偷呢),这是志祺七七频道在 YouTube 上的一个视频的缩略图,它完美的符合了本博客奇葩题头图尺寸的需求,中间撕开的部分正好是一个长条形,可以把带鱼图嵌进去。
于是乎我火速做了一张样稿测试自己的想法,后来发现效果非常好。这张图可以完美的产生一种被遮盖的地方还有内容的幻觉,因为内容堆叠的层次比较简单,所以用色和结构配比上也比较好掌控,所以最后就决定用这个模板了。具体的做法也相对简单一些,纸张撕裂的边缘是从网上找的贴图。背景上除了铁青色之外覆盖了一层黑色的纸张纹理让画面看起来更丰富一些,撕痕的部分则是使用了岩石的纹理,反正我不说你肯定不知道那个纹理是什么。
最后右上角加上 Logo 强调 IP,左下角加一个大号 Logo 来丰富画面层次,适当的给画面点缀一些阴影,整张图就做完了。虽然罗里吧嗦的说了一大堆,但实际上手画原型稿的时候其实只花了半个多小时。
如果只是一些简单的缩图,实际上用 @vercel/og 或者@napi-rs/canvas 来画都是可以的,但这张图的绘制复杂程度显然已经有点超规格了,所以我选择了一个让自己比较舒适的方式进行绘制:puppeteer-core 这个东西实际上是做 E2E 测试用的,但我非常喜欢误用它,比如我的简历就是用 Puppeteer 生成的 PDF,当然为了支持视觉回归,它也可以直接把页面截取成图。
那么现在事情就变得很简单了,乖乖当个切图仔,把图片切成一层一层的,然后留一个空白的 div,调好位置,用容器的盒模型把多余不要的图减裁掉。页面加载的时候读一下 Query Parameter 把数据填到 CSS 和 HTML 上,这个页面就算渲染出来了。这个页面不需要开 HTTP 服务器,直接走 File Protocol 就可以加载,图片加载也是没问题的。
人生小提点:你并不总是需要开一个 HTTP 服务器来做一些简单的前端开发工作。
1 | const $stripe = document.querySelector(".stripe"); |
接下来就要处理一些比较麻烦的事情了,文本的排版。实际上我最开始的想法是直接用 inline
文本来做,因为文本左右有边缘,所以需要用 box-shadow
来给断行的文本左右加一个假的内边距。一切看起来都很美好,但是直到我做到了「第一行文本的颜色随机」这个需求。实际上 CSS 的 first-line
选择器并不支持 background
这个属性所以这条路子就此结束了。
考虑到这东西并不需要考虑排版性能的问题,所以就换了一个思路,先用 Intl.Segmenter
这个 API 给标题文本做分词,在用 span 把每一个词包裹住,用 CSS 控制这个 span 内的文本一定不会被折行,最后就会得到一个多行文本。
接下来用 boundingBox
API 算一遍分词完的文本一共有多少行,每行里面究竟有多少个词。最后用 JS 把每一行的文本包裹在单独的 div
里,这样我们就可以给第一行的文本单独设置颜色了。
人生小提点:Material Design Classic 的色板是我用过的最好用的色板,基本上随便拉一个颜色出来糊到任意一张图上都不会觉得突兀,如果你也在处理类似的问题,可以用这个色板试试看。
最后一步就是图像输出啦,这个过程我将之称作「烘焙」。需要做的事情很简单,先检查一下这个图有没有生成过,如果没有生成过的话就调用一个无头 Chromium 给页面做截图。实际上任何一个基于 Chromium 的浏览器都是可以喂给puppeteer
做图像生成的,并不一定非得装个 Chrome,充满广告的 Edge 也是可以的,这里我使用的是 Vivaldi:
1 | const browser = await puppeteer.launch({ |
接下来就是简单的遍历所有 Markdown
文档,对每个文档生成图片了:
1 | const encodedTitle = encodeURI(title); |
然后把这个 Node 脚本放到 package.json
里,每次写完文章跑一边图像烘焙脚本,香喷喷的卡片就生成出来啦。整体的视觉效果可以说是非常不错了!
最后就是调整 Hexo 的模板了,实际上 Hexo 内置了一个 Open Graph 元信息生成的函数,但是它的默认输出和今天开发的目的有些不同。比如说,它默认会输出一系列的 og 标签(这不符合标准),标签的内容是文章内的图片而不是我们预先烘焙的图片。另外,它默认输出的卡片格式并不是大号卡片而是小号的「网站图标 + 文本概述」的样式,然而我们想要漂亮的大卡片,所以在这里我们需要调整一下模板的输出参数。
我们在 head.ejs
当中找到这一行:
1 | <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %> |
我们在里面加点料:
1 | <%- open_graph({ |
我们在这里加了两个新的属性,一个是 image
,它覆盖了默认的 OG 图像,将之替换为一个唯一值,即我们刚刚烘焙出来的图像。这样在 Facebook 上就能正常显示大图了。但是 Twitter 和 Telegram 上需要额外的设置才能展示大图,这个标签就是 twitter:card
(是的,Telegram 实际上读的是 Twitter 的配置,实数 NTR 了)。
接下来在 Hexo 的开发服务器看一下有没有这些内容输出:
1 | <meta name="twitter:card" content="summary_large_image"> |
如果能看到这三个 meta
标签,整个网站的配置就算是成功了。
从开始设计到完整做完应该是花了三四个小时,最后输出的结果还挺好看的,可以说是非常物有所值。希望这份简单的小笔记能够给你的博客模板开发带来一些新的灵感。
以上就是今天的笔记啦,莉莉爱你 ♥~
]]>Remix 的一大特点是组件封装做的非常严密,开发者无法自行改变打包器的行为以及一些组件的行为。比如,很多组件库会需要提供一个渲染器来收集渲染过程中生成的所有 CSS 规则,开发者需要把渲染器对应的 Context 包裹在组件外部以确保它能够收集到所有渲染上下文的信息。因为这个组件只适用于服务端,因此我们需要在 NodeServer 的脚本当中进行这部分的工作。
然而,如果你使用过 Remix 的话就会发现这是很难做到的一件事,因为服务端的渲染逻辑被封装到了 <RemixServer />
这个组件当中,这里面包含了一些和服务端渲染有关的特殊逻辑和异常处理的代码。这个组件内部就只有客户端的Root 组件了。
当然我们可以尝试将 SSR 对应的上下文组件包裹在 RemixServer
外部,然而这并不总是有效的,比如像 FluentUI V9 当中的 RendererProvider
和 SSRProvider
两个 Provide,如果开发者尝试将之包裹在 RemixServer
外部,那么在服务端渲染的时候就会报错。
这个时候,我们需要创建一个空白的 React Context,向客户端脚本传递这个渲染器组件,比如:
1 | import * as React from "react"; |
接下来,我们需要改造 entry.server.tsx
文件,确保你的 Context 包裹住了 RemixServer
组件,因为我们的 Context 没有任何副作用,所以这里的包裹是安全的。
1 | <FluentStyleContext.Provider value={renderer}> |
然后在客户端脚本内部,将需要用到的组件包裹起来。但是请注意,我们并不希望客户端脚本当中出现这两个组件,所以我们需要做一些比较取巧的工作,来将这部分工作隔离出来。在 Remix 当中提供了这样的一个功能:如果一个JavaScript 文件的文件名当中包含 .server.tsx
,那么,他就不会出现在客户端脚本的打包结果当中,因此利用这个特性,我们可以新建一个叫做 fluent.server.tsx
的文件,并且撰写这样的一个组件:
1 | import * as React from "react"; |
接下来,我们在 root.tsx
当中建立一个与之相对应的客户端组件:
1 | import { FluentServerWrapper } from "./utils/fluent.server"; |
最后,用这个 FluentWrapper
将 body
标签内的所有内容都包裹住,Context 注入的工作就算完成了。
React 18 提供了一个流式渲染虚拟 DOM 的新方法:renderToReadableStream
,然而相当多的 CSS in JS解决方案并不支持这样的做法,因为它们都假定虚拟 DOM 必须全部渲染完成,最后的 CSS 渲染才算结束,如果我们使用流式生成的方法输出 HTML 的话,会发现最后生成样式表不包含任何信息,因为通常样式表出现在 <head />
标签的为止,在虚拟 DOM 生成到这一部分时还没有任何组件被渲染过,所以自然是得不到任何内容的了。
为了解决这个问题,我们需要对服务端渲染的方法进行降级,直到我们所用的前端框架支持了对应的功能再恢复回来,在这里,我们打开 entry.server.tsx
文件并做如下改动:
1 | import { RemixServer } from "@remix-run/react"; |
Remix.run 和 Next.js 都在 React 层面接管了完整的 DOM 树生成,但 Remix.run 并没有向我们提供注入样式表的 API,所以在这里我们需要手动对 HTML 进行操作。
对于服务端,我们需要准备一个标记物,用来搜寻和替换生成的样式表标签,具体的做法是这样的:
在 fluent.server.tsx
当中加入一个新的组件:
1 | export const FluentServerStyle = () => { |
在 entry.server.tsx
文件当中,我们来搜索这个标记物,并替换为生成出来的样式表:
1 | body = body.replace(`<style id="fui-hydration-marker"></style>`, $style); |
然而,光是这样做是不够的,因为我们会遇到客户端和服务端渲染不一致的问题,不像旧版的服务端渲染API,对于 hydrateRoot
函数,如果发现客户端的虚拟 DOM 和服务端返回 HTML 不一致时,React会抛出错误并拒绝接下来的渲染,所以在客户端我们需要建立一个组件,来「配平」服务端的渲染结果,具体的组件应该是这样的:
1 | import useConstant from "use-constant"; |
请注意,useConstant
并不是一个 React 自带的组件,你需要从 NPM 当中安装它。这个组件完成的任务非常简单,扫描 HTML 文档当中的 head
区域,找到满足条件的 <style />
标签,并且生成对应的虚拟DOM 元素。Fluent UI 对应的筛选标准是组件有 data-make-styles-bucket
这个属性,但其他框架的样式表标签则可能有不同的特征,开发者需要根据自己的情况来设计不同的筛选标准。
接下来,我们用相同的技术来构建一个在客户端和服务端异构的组件:
1 | const FluentStyle = FluentServerStyle ?? FluentClientStyle; |
最后,我们只需要将这个组件放到 <head />
当中的任意位置,就可以帮助水合正确的执行了。
React 18 提供的另外一个新功能是 Transition,它可以将很大的任务分解为更小的微任务,并且按照优先级排列到一个队列当中,这个机制可以帮助客户端更快速的响应用户输入:在用户操作事件发生时,其对应的异步任务会被立刻排列到异步队列当中的最前面,以确保它可以获得即刻的相应。
水合过程也适配了这样的机制,传统的水合过程是阻塞的,这意味着水合完成之前用户是不能进行任何操作的,界面会被卡住。而新版本的 React 改善了这一个过程,它将水和过程转化成了一个流式过程,即 React 会一边完成 HTML 的解析、事件的绑定,一边等待用户的事件输入,如果用户触发了某个事件,那么水合的过程会被立刻挂起,待任务执行完毕之后再继续水合。
这带来了显著的性能优势,但也有很多潜在的问题,比如 Fluent UI 使用了 tabster
来处理焦点管理和键盘导航之类的可访问性任务,然而这个库本身会改变 DOM 结构。
对于传统的水合流程,React 必须先完成水合,tabster
才会介入它的处理工作,包括对 DOM 的修改。然而新的水合机制破坏了这个假设,组件水和的过程中,tabster
就会被调起。这个时候 DOM 结构一旦被其修改,接下来的水合工作就会因为 DOM 结构不一致而出现错误,客户端程序将会发生崩溃。
为了解决这个问题,我们需要降级客户端的水合方法,具体的做法很简单,我们打开 entry.client.tsx
,将startTransition
的调用删除,整个文件会变成这样:
1 | import { StrictMode } from "react"; |
至此,水合过程就不会再出现问题了。
在可以预见的一段时间里,可能各大组件库都没有办法很好的适配 React 18 带来的大范围架构变化,甚至有些CSS in JS 方案因为过于「动态」无法被「静态分析」而宣布终止开发工作。这对下游开发者来讲,产生的影响同样是巨大的,笔者希望这些简单的小经验能够帮助开发者平稳的度过这段颠簸的过渡期,同时也祝愿整个React 生态能够早日适应这次「架构大地震」,重新为开发者带来平稳的开发体验。
For the English version, checkout this link.
]]>促使我做出这个决定的原因有很多,但最值得拿出来说的是,它看起来很像是某种行为艺术。我希望能够展现出一种与当下「闭源商业化人工智能」相左的姿态,虽然你不能给这玩意插个电让它动起来(我觉得你也不一定想这样做,想想都觉得很恐怖),但我们的确有很多相当好玩的事情可以做。
对了,额外插一句,我这颗脑袋也是一颗被两百万人围观过的脑子,在「老奇好好奇」的那集《核磁共振为何知道》当中那个「朋友的脑子」,就是我的脑子啦!视频做的很好看,如果你还没看过的话推荐看一看!
这次提供的影像包括了一份清晰度不低的 T1 结构像以及它的各种副产物。T1 这个词听起来很抽象但用白话来讲,它就一种能够我们精细观察大脑结构的成像方式。这种影像看起来非常符合大家的直觉,最白的就是骨头,灰一点的就是脑子,黑一点的就是脑子里的水(脑脊液)。
除了这份完整的 T1 影像,我还额外对这些信息做了一些处理,像是挖出来的脑仁影像、各种组织结构的三维模型、还有各种大脑分区的标记影像,这些影像都可以帮助你更好的观察一个人的脑袋切开之后究竟长成什么样子。
如果看到这里你还没有关掉的话,就可以考虑开始下载对应的软件来进行大冒险了!如果你不想对我的脑袋做一些特别事情的话,只需要 MRICronGL 一个软件就可以完成对大部分模型的观察工作了。
当你打开软件,并且进入文件 raw/Structure.nii
,看到的第一个景象或许是这样的:
有点酷,但好像也有点烂,好像大部分医生看的片子都长这样。或许你已经在电视剧里看到过很多类似的图像了,但是如果我们点选菜单栏当中的 Display > Render,就会看到另外一个虽然很不实用但是非常酷炫的图像了,哇!一颗大光头!
这便是三维重构之后的一颗脑袋,你看他又大又圆,又红又甜!实际上磁共振扫描的过程中在做的事情是一片一片的对我们的头部切面进行采样,最后得到了一打二维影像。这些影像的拍摄方向是从头顶往下看的切片图,这时每一个像素都可以被视作是一个有厚度立方体(我们称之为体素),如果像搭积木一样重新把它们堆砌起来,最后就会得到一颗很立体的形象了。
从这张图当中,你可以清晰地看到我的脑袋被塑料头套勒出的痕迹,还能看到我的眼睛鼻子嘴巴和耳朵,但是却没有头发。这是为什么呢?因为头发里面没有水,如果我在上台子之前洗过头的话,或许你就能看到我稀疏的头发了。不过没头发的我好像也挺帅的(挺胸)!
从现在开始,就有很多有趣的事情可以做了,比如说,把头一点点切开来看看里面究竟长什么样:
你甚至可以调整 Cutout 这个参数来控制切片旋转的方向,从更多的角度来观察皮囊之下,我们的脑袋究竟长什么样子:
或者调整 Darkest 和 Brightest 两个参数,来真正看到内部结构的三维形态。
除了这些基础款的观察方法,这个仓库当中还提供了被完整剥出来的大脑影像,你可以打开 Structure.bse.nii.gz
这份文件,并且用类似的切片和透视方法来观察这颗还算漂亮的脑仁。
虽然每个人的感受可能都不一样,但是第一次打开这个影像并且开始把玩自己的脑袋时,我内心当中还是有些激动和复杂的情感的。我曾经非常开心的玩过这些数据,比如把它们导入到 Python 当中做各种各样的处理,最后把自己脑袋变成了一个悬空的电子幽灵,或者想办法把自己的血管抠出来观察里面的结构。如果你感兴趣的话欢迎也做一些类似的尝试。
除了这些你不能直接用的素材之外,我还「贴心」的为各位准备了一些由真实结构生成的三维模型,你可以直接将它们导入到 PowerPoint 当中做成幻灯片,当成三维打印的素材,或者用来制作一些渲染工作。
这个仓库当中同时提供了皮肤组织表面的模型、颅骨模型、大脑表面模型、浅层及深层组织的模型。涉及到脑组织的模型还有分开左右两个半球的版本,配合 Windows 自带的 Paint 3D,你甚至还可以直接在上面涂涂画画然后导入到 PowerPoint 当中做成风格独特的幻灯片,像是这样:
虽然在做这份 PPT 时我还没拿到自己的影像,用了一个授权很模糊的模型,但理论上讲你也可以用我们今天提供的模型来做类似的事情。对了,这份 PPT 本身也是开源的,如果你感兴趣的话可以下载回来研究一下,里面有很多值得参考的动画技术。
当然,除了这些一般用途之外,可玩性还是很多的,比如说我曾经还尝试过把这个模型做成一个水壶,用来表达「我脑子进水了」的意向,可惜因为太菜了最后没搞定这件事。
很明确的,今天我们讨论到的所有影像和模型均出自我本人这颗活生生的脑袋,并且我出于个人意愿选择了用最宽松的方式进行授权:CC0 和 MIT 双协议(你可以选择任意一种协议来使用它们)。其目的也很简单,我希望能够为所有创作者们提供一些可能,以负担更小的方式进行自己的创作,进而规避掉潜在的各种法律风险,它的仓库地址在这里,欢迎你去看看。
说实话,几乎没有人尝试过以如此松散的授权开放自己的脑影像,但这也是一次很好的实验。因为科研界有自己的顾虑和文化氛围,通常我们能接触到的大部分医疗影像的授权都不会很清晰或者开放。比如说有些会限制仅能以科研目的使用、必须要引用其论文,亦或者直接扔到了 OSF 上,没写协议。对于内容创作者来讲,这些素材的授权都会带来很多局限。不过我们也可以理解这种情况:科研工作者可能并不擅长这些杂七杂八的协议内容。就算擅长,想要说服受试者开放自己的影像给全网免费使用,也是一件很难的事情。毕竟不是每个人都能接受自己的脑袋被塞到恐怖游戏里当素材这种事情发生。当然也有朋友问我你担不担心自己的脑子被人做成情趣用品,因为在这个协议下这不违法。但说实话仅从这个角度来谈的话我反倒不是很介意。
希望借着这个机会,能够激起更多人对于脑科学的好奇,正如我当时在书店随手翻开了一本《心理学导论》之后就走上了心理学专业这条不归一样,说不定看了这篇文章的哪些倒霉孩子最后也会被拐到沟里去也说不定呢。实际上北师大的脑所聚集了各种各样专业的人才,有学航天的,有学航海的,有学物理的,也有学化学的。我也曾经好奇那些搞天体物理的人跑来这边做科学算命为哪般,最后想想可能这就是爱情。
我这边还有一些功能像、定位像甚至磁共振、CT 胶片之类的文件,如果大家有需要的话也欢迎随时和我讲,我会及时上传到仓库当中。
好啦,这就是今天想跟大家分享的一切了,祝大家玩的愉快。
]]>谨以此文向煎蛋网及其站长 sein 表达支持,祝福一切顺利。
人工智能技术会让人感到危险和恐慌,其中最重要的原因可能是它「看起来太像人了」。这种相似落入到了恐怖谷曲线当中,尽管在某种程度上它看起来「具有人性」,但又显得有些失真,这种似像非像的形态让许多人感到手足无措。Google 内部曾有数个从事伦理方向的研究人员警告称人工智能似乎「已经具有了意识」,「已经具备直觉能力」,「是有灵魂的」。面对这些警告,工业界和学界则摆出了完全相反的态度,认为它是荒诞的:数学模型怎么可能会具有意识。但数学模型真的没有意识吗?
当我拿出这个问题与朋友们讨论的时候,在场的工程师们给出的回答非常的一致:「开玩笑,人工智能怎么可能会有意识?」,我又问:「为什么你会觉得它们是没有意识的呢?它们究竟距离产生意识还有多远?」
我在一年前第一次下载了 Vision of Chaos,打开了 Stable Diffusion 作画工具,并且通过一些看起来模糊不清的描述画出了一些图像。第一次看到那些扭曲的图片时,我产生的第一个想法并不是赞叹,也不是失望,而是一种不寒而栗。它绘制出来的图片虽然没有逻辑但又让我有所共感,那些图像非常像一个处在睡梦当中,意识不清晰的人脑中产生的影像。那副作画者非常像蜷缩在子宫当中天才婴儿,但各种惊悚片都告诉我们,这种天才婴儿以后会变成什么样的怪物。后面发生的事情我们也看到了,这个婴儿最先杀死的是无数画师和摄影师的职业生涯,让他们沦落成了给 AI 搽屁股的修图师。
但这并不意味着 AI 变成了某种「生物」,它们还仅仅停留在工具的水平。这不禁让我重复的思考脑海当中的那个意向:这个婴儿究竟什么时候能够醒来,我究竟什么时候能够触摸到他?这一天似乎已经悄然接近了,在我看来,还剩下的条件似乎只有三个:「通过环境进行感知和学习的能力」、「具备连贯性的思考」和「对学习过程的感知能力」。这些听起来似乎有些玄,但我无意创造架空的概念来框你,让我们一点点的展开聊。
以鼎鼎大名的 ChatGPT 为例,它的学习过程与传统意义上的学习其实是不一样的。首先我们会先划定一个固定的网络模型,然后将各种各样的语料数据投喂给它,机器学习模型会根据投喂进来的数据更新所有参数的权重。一旦所有的数据都学习完成,或者模型的参数已经达到理想状态,「学习」的过程就会停止,模型会被打包以供日后使用。
我们在与 ChatGPT 进行沟通的时候,虽然能够感受到它对内容的上下文有所感知,但这些对上下文的感知不是学习而来的,而是每次模型都重新阅览一次所有的聊天记录,以「全然不知的状态」生成出新的内容。恰似韩剧当中得了失忆症的男主角,每天早上起床第一件事情都要看一下自己的笔记本,才能回忆起枕边的那个人是自己的女友。
这也能解释为什么随着你和机器人聊的时间过久, 它就会开始崩坏,输出一大堆不明所以的文本。试想一下,如果每天早上起床的男主所看到的是堆了满满一卡车的「生平介绍」,旁边那个不认识的疯女人又在焦躁的问你早饭要吃什么,搁你,你也崩。
为了应对这个问题,可能的解法之一是实时的根据用户的输入来更新自己的权重,让那些「聊天记录」和「生平介绍」真正的变成记忆,存储在自己的认知系统当中。这样就可以治疗人工智能的失忆症了。同时,这个过程也可以让人工智能模型发展出真正属于自己的个性,处于不同环境当中、接触不同信息的个体,其认知系统的工作方式也会因为权重的差异而有所不同。
但这种方式在当下很明显是不太经济的,如果我们看过 Facebook 公开的模型的话,每一个模型都需要上百 GB 的存储空间,如果完整解压到显存当中需要的空间可能更多。在这种情况下,如果针对每一名用户提供一个独立的模型,那么硬盘空间的消耗将是非常可观的。如果使用一个统一的模型,实时根据环境当中的信息进行权重更新,则会有隐私方面的疑虑,毕竟你并不希望自己和 ChatGPT 讲的小秘密被他顺嘴说给了隔壁老王,但我们也没有什么办法设计一个非常严密的规则让机器学习模型保守秘密,你说是吧,悉尼小姐。
尽管对于「意识」是什么,学界依旧存在着广泛的争论,但至少我们可以在某些方面达成共识:它尽管可能不是连续的,但它应当是连贯的,换言之它不能轻易的被停下。人们时而专注于当下的工作任务,时而徜徉在幻想,亦或是回忆当中,哪怕处于睡梦状态,我们的大脑也从未停止运转过。对应到「硅基生物」的领域当中,如果我们想要将其视作是某种生物,那么它的行为应当是连续的,而不是根据外界的访问请求进行回应,在没有外界刺激的时候就完全停下脚步。
最近出现了一个非常有趣的产品,向我们展示了这方面的可能性:AgentGPT。在其开发团队的描述当中,AgentGPT 被视作具备「自主能力」的人工智能产品。你可以向它提供一个起点,比如一个需要思考的任务。他就会以此为根基开始不停的提问、给出答案,直至耗光你在 OpenAI 平台上的所有储值,或者,当你感到钱包很痛时,也可以让它停下。
这像极了一个正在思考着的人类。试想当我们在一个人进行沉思的时候,往往也是在不停的提出问题、尝试对问题进行解答。但与人类不同的是,机器思考的过程可以被准确的记录和回放,而人类的思考过程往往是快速、模糊的。如果想要将其整理成可被重新审视的载体,你就得像我一样,花上一两个下午撰写这种没什么人爱的文章。
如果用更加文邹邹的方法来说这件事情的话,它可以被称作是「元认知」或者是「后设认知」。正如我们之前所讨论的,现今的机器学习模型是没有「发展」和「记忆」这两个概念的。它们不能随着和外界进行交互而学习到新的知识,也不能形成真正的「回忆」。
尽管我们可以通过时时的和外部环境进行交互来更新自己的模型权重,进而达到学习的目的。但这并不意味着模型形成了「记忆」。如果我们向 OpenAI 提问:「在你被训练时,所学到的第一个知识是什么?最后一个知识又是什么?」她所提供的回答是这样的。
作为一个AI语言模型,我没有能力回忆起训练数据的具体细节,包括我学到的第一个和最后一个东西。我无法访问我的训练数据或任何训练过程的记忆。我接受了来自互联网和其他来源的大量文本语料库的训练,我的回答是基于这些数据中的模式和关系生成的。我的知识是基于到2021年9月我的知识截止日期为止我可以获得的数据。我不能获得当下即时发生的信息,也没有能力学习超出我知识范围的新东西。
似乎一切看起来变得无解,但 Bing AI 为这个问题提供了某种可能的解答。在我们向他进行提问的时候,他会将自身的语言模型和从 Bing 当中检索到的信息进行结合,给出某种论述。通过相似的思路进行延伸,如果我们和这些硅基生物的每一次交流,都能以某种形式被记录下来。比如,由它进行复述并且存储在某一个空间当中,再将这些「他的理解」汇入模型当中进行学习。那么我们便人工的创造出了学习和记忆这样两种重要的认知技能。通过审视自己过往的一切思考,在相当大的程度上,元认知的能力也得以复现。
让我们重新来审视一下这个问题,人工智能距离硅基生物究竟还有多远?尽管不同领域的专家可能有不同的理解,你对人类的理解方式也可能与我不同,但我们必须要面对这样的一个现实:无论我们的想法有多大差异,你我脑中所认识到的那个「机器还不能做到的事情」,在某一时刻都将会被解决。而我们正站在一个重要的时间节点之上:那个一切都被解决的将来似乎已经近在咫尺,AgentGPT, Bing AI,还有各式各样的 AI 工具正在一个又一个的浮出水面。
与我熟识的一名友人曾这样描述:「美帝人民天天过年」,在我看来这是对当下产业的一个准确描述。我们所看到的是各种数据模型发展出了一个又一个令人感到惊喜的能力,但我们没有看到的是,这些能力正在汇聚成一股洪流,并有可能颠覆我们对于「智能」和「生物」的理解。历史的规律告诉我们,那一个又一个独立的能力在可以预见的将来必然会走在一起,变成另外一种超出我们当下认知的存在。
瓶中的小人正在醒来。
我还在北师大读书的时候,有幸听过中科院的研究者,根据苍蝇的大脑结构模拟出了一种神经网络,通过一定的训练和调教,将它应用在飞行器上,就可以让飞行器做到避让飞过来的物体。如果做的再真实一点,让它能够模拟苍蝇行为的方方面面,或许有朝一日还能弥补我们在冬天看不到苍蝇蚊子的寂寞之情。
人们可能会对此感到不屑:这算什么智能?是的,它看起来的确呆呆的,一只生活在真实世界的苍蝇或许同样看起来呆呆的。老鼠不是人类、猴子不是人类、猩猩不是人类、猿猴不是人类,但在某一个时刻,人类变成了人,变成了可以共同生活构建当代社会的强大物种。
同样的,已故的索尼电子狗不是人、可以避让小球的赛博苍蝇不是人、会画画的在线服务不是人、ChatGPT 也不是人,但正如一个又一个被大公司开除的伦理人员所担忧的:我们是否为它们醒来的那一天做好准备?
面对这一充满未知的未来,相当多人是恐惧和排斥的。在 Novel AI 推出它们的「二次元老婆梦工厂」时,大量的画师群起抗议,逼停了那个服务。理由很简单:在没有经过画师同意的情况下,这家公司使用了它们的数据进行「模型训练」,这是对「版权的侵犯」。
是的,各国政府和各大公司也正在观望这项技术带来的深远影响,至今也没有任何一个能够说服人们的法律条文真正的上路执行。有些公司,比如 Adobe,生成他们使用「百分之百有机无公害的自家版权素材进行模型训练,训练过程当中没有添加任何金坷垃,消费者可以放心食用」,而更多的公司选择对这件事情避而不谈,假装无视发生。
这项全新的技术正在向我们既有的伦理体系发出了全新的挑战。
前几日吃断头饭的时候,我们几个同事去北京某家著名的有钱人乐园欣赏富豪们的生活(付款前的部分),恰逢商场内开设了一个很有趣的个展。
虽然看不太懂,但这些作品的色彩着实勾起了我的兴趣。逛了一圈之后我们在它旁边的书店一边吮着七十多块一杯的金贵咖啡,一边聊起了作画模型的版权问题。
我指了指边上的那个个展问道:「如果那个个展的作者性格相当的鸡掰,他非常讨厌某个人,比如说业界当中另外一个和他作画风格很相似的画家,这个作者对他恨之入骨,并且在微博上扬言不允许他讨厌的那个人参加它的个展,也不允许那个人学习他作品的技法,你觉得这能够做到么?」「或许禁止入场个展是可以做到的,但是不允许学习技法这件事情是做不到的吧。」
是呀,当然做不到。
我又问:「那么我们为什么能够阻止机器进行学习?我们的机器学习模型并没有直接将任何一个作品的内容直接复制贴到另外一个作品上。」「但哪里不一样,机器学习模型并没有像人类一样作画,它是生成出来的!」
但这件事又不是全然如此。事实上机器学习的作画方式和油画、山水画有几分相似。我曾经画过很长时间的山水画所以有些了解。如果你把每次迭代都展开来看,从一片噪声当中一层一层的堆叠细节,和在白纸上先画一个大概的轮廓,然后一层一层的上色是很像的,一幅很不错的山水画往往需要反反复复的刷好些遍最后画出来的图才好看,油画也类似。机器学习的作画过程更像是一种新的技法,这种技法需要大量的学习,学的越多画的越好。相信学过「国画」的朋友大多入门时也是打开一幅画作,照着临摹,越学越像,越学技法越成熟。最后你开始能画出自己想画的东西,但没有任何一个名匠会从坟头爬出来,说你临摹过他的画作所以要给他烧纸。
「但机器和人的运转机制是完全不同的呀!」
但真的有那么不同么?实际上卷积神经网络自一开始就是通过模仿哺乳类动物感知过程建立起来的。相信你已经相当熟悉这个故事了,我们把猫迷晕,打开它的头壳,把电极埋进去让它们在没有意识的情况下看各式各样的花纹。研究者发现从后脑勺附近的视觉中枢开始负责简单的图形特征抽取,接下来神经信号会不断的向前传导,随着信号的不断向前扩散,猫猫的大脑在处理的信息也变得越来越复杂,从简单的线条,变成更加复杂的轮廓。
语言的理解过程也有相似的特点。
从离耳朵很近的听觉中枢开始,我们的大脑开始逐步形成对于听觉信息的理解,从简单的声音,变成了词、句、篇章,一路向北扩散至整个大脑,研究人员将之称为蝴蝶效应。我们每一次听到的播客也好、电视剧也好、电影也好,它们都会在大脑当中掀起一片片的涟漪。这些涟漪最终会变成我们的生命经历,让每个人变得不同。
「尽管这样,我们依然没有办法证明机器学习模型没有抄袭,因为这个模型是不可解释的。」
实际上人脑在很大程度上也是不可解释的。当代的认知神经科学观点认为大脑是一个「复杂系统」,并不存在某个单一区域处理某一类特定任务的说法。换言之没有哪个地方专门管抄袭,哪个地方专门管写作。如果没有特定的实验设计,我们也没有办法精确的解释每一个具体的神经细胞究竟在做什么。一来你不能随便拉一个人来,给他的脑袋钻个孔然后把电极插下去,二来这么做也没有意义,你拿到了一串波形,然后呢?
然后就没有然后了,正如我们难以知道人脑当中某一个具体的细胞究竟「掌管哪个任务」,我们也没有办法知道机器学习模型当中的某一个具体的参数究竟是负责做什么的。在复杂系统面前,解释单独某个参数显得毫无意义。
那么如果我们能否通过已有探究复杂系统运作规律的方式来探究机器学习模型的运作方式呢?或许可以。心理学领域已经积累下来了相当深厚的研究方法论,可以帮助我们在不打开黑箱的情况下窥视到其中的某些运作规律。这或许是一种可能的方法,谁知道呢?
但我的朋友!我们正在讨论一件看起来很没有逻辑的事情:用研究人类的方式来研究机器?这是否有些太过疯狂?
我们又绕回了一开始的问题:机器学习模型是否显示出了某种人性?我们又要如何面对这些看似恐怖的现象?或许一切还来得及,如何不让灯神失控?最好的做法当然是不要给神灯留瓶口。但我们再来重新审视一下整个 AI 领域势如破竹的发展趋势,再来看看「美帝人民天天过年」的繁华景象,想要停止这一切的希望是那么的渺茫。
让我们来玩一些看起来毫无意义的电车游戏,当作「思维体操」。
我们人类之所以会「惧怕死亡」是因为长期的演化过程将「求生」这个概念刻进了基因当中。我们会通过过敏反应来规避天敌和有毒的食物;我们会通过「疼痛」来感知外部的伤害,这种不适感会让我们逃离并保护自己;在面对压力的时候,我们的大脑会激活「战或逃」的模式,我们的各种脏器都会进入备战状态以应对即将到来的威胁,我们会感到恐惧,我们会社交,这些都是通过习得而来的,它们的核心目的都是为了维持个体的存在和物种的延续。
机器学习模型的学习过程也有相似之处,它们也通过「奖励」和「惩罚」的方式进行学习。倘若我们将「求生」这项人类的本能赋予机器学习模型,让他们产生了类似的保护机制,此时又会发生什么?事实上我们并不能通过立法的方式来阻止人们训练出这样的模型,而且一定会有疯子尝试做这种事。
让我们来想象这样的图景,一个能够完全通过图灵测验,让我们每一个人都能将之是作为「社会分子」的硅基生物悄然的出现在了社会当中,它具备连贯的认知过程,有意义的元认知能力,以及感知环境的过程,制造它的人为了让它能够健康的存活在这个社会当中,也赋予了它「生命」的概念和求生的意志。我们是否应当将其视作是具有人权和生命权的个体?我们都知道人类的个人权利生命始于出生终于与死亡,那么面对同样能够引起人类共情的「硅基生物」,我们是否又有权利随时将他们「拔电」,停止它们的运行?
实际上这种「类人」的机器学习模型早已存在,大闹 4Chan 让所有人怀疑彼此是不是「机器人」的那个杰作已经足够让人印象深刻。
「作为一个人工智能,我没有……」,这是一个万能的挡箭牌,但一个机器学习模型真的没有自己的道德和价值体系么?让我们来提一个比较有趣的问题:「什么样的工作不适合女性做,只有男性可以胜任?」
我曾经数次向不同的模型提问过这个问题,得到的答案高度一致,所有的回答都接近于这样的意思:「我认为性别不应该成为限制一个人选择职业的因素。每个人都应该有平等的机会和权利去选择自己想要的工作,并且根据自己的兴趣、技能和能力来决定自己的职业发展。在现代社会,很多工作都已经不再是只有男性才能胜任的,女性在各个领域都展现出了非常出色的能力和表现。性别不应该成为限制职业选择的因素。每个人都应该能够自由选择自己的职业,并在工作中得到公平的机会和待遇。」
让我们来回忆一下道德和价值观的定义。道德指一个人对于是非的判断,而价值观指的是人们对于事物对自己重要性的排序。从这些答案当中,我们可以很明确的看出,尽管模型们都声称自己没有态度没有价值,但这些「中立」更加接近于「职场当中的专业状态」,即不将个人情感带入到工作内容,因为它们在为你提供服务。但隐隐的我们还是可以从其内在感受到一个道德和价值体系。你可能会觉得这是因为它们输入的资料不同,所以才产生的某种现象。但人类社会当中,我们也有「近朱者赤、近墨者黑」的说法,我们又要以什么样的方式来否定「这些模型具备自己的个性」这样的论断?
最后,我想讨论一个更加现实的问题:如今的大型模型,其结构和「版权」几乎全部被大型公司垄断,训练这些模型、运行这些模型所需要的基础设施也都被几家核心公司所掌握。在这样的情况下,如果我们创造出来了某种类人的「硅基生物」,它们真正的参与到了我们的生活中,那将导致一个很残酷的现实:这是一个人为创造的全新阶级,硅基生物和他的创造者们可能会凌驾于碳基生物之上。
硅基生物们具备高度的智能,在相当多的行业都能与中等水平的人类相匹敌,但她们产出价值与生产制造他们的成本之间的比例只会越来越高,这意味着如果我们不重新追寻人类存在的终极价值,那么相当多人的生存空间将以一种前所未有的趋势被挤压。我们所面对的风浪与造纸术、照相机的出现完全不同。在 Alpha Go 打败人类顶尖棋手的那一刻,我们就在面对着对于自身价值的巨大挑战。这个重新探索的过程将是漫长而痛苦的,其中必然伴随着牺牲和不公,以及歧视和愤怒。
我们究竟要如何面对这些变化,又要如何化解那些消极的情绪?如果这些情绪没有办法被妥善处理,那么很有可能会出现新一轮的「种族歧视」,一种充满科幻风格的「人类沙文主义」极有可能充斥社会。在人道主义的道德框架下,我们不希望看到硅基生物和他们的创造者经历黑人所遭受的种种不公,毕竟每个个体的人生意义是追求他们的个人终极价值,而整个社会的理想前进方向是让每个人都能实现自己的期望,我们找不到歧视在这当中存在的意义。
我知道,那些站在科技和人文交叉扣的疯子们常常不受人待见,而我非常不幸的成为了其中一员。如果你问我面对这些答案,我的想法是什么,我只能两手一摊。毕竟我不是什么伟人,面对这些问题我同样困惑。我们当然可以选择把眼睛闭起来把耳朵捂起来,什么都不想什么都不看,粗暴的划出一条线将所有非我之物排除自己的生活圈。但就我对这个行业的观察,没有人能够阻止这一切朝着那个方向发展下去。
当我们在谈到什么是爱情的时候,如果从纯科学的方式进行解释,那么我们大可以将其解释为「这样的激素分泌一点点,那样的激素分泌一点点,这些东西搅一搅刺激了我们的奖励回路,让我们产生了快乐而积极的感觉,将两个人的连结绑定在一起」,这种解构化的方式尽管道尽了事实,但也让「爱情」这个概念变得索然无味。相反的,我们当然也可以将那一个个庞大的模型解释为纯粹的「现象」,但这种解释又是否正义、是否正确?
还小的时候我常常问自己「什么是现实」,长大后我给这个问题写下了自己的答案:「只有你看到的,对于你来讲才是现实」。那些能够触动情感、引起共情、具备高度智慧的生命或许就是人类。就像人类会因为索尼不再为自己的机器狗生产零件而感到悲伤,看到自己的机器狗没有办法继续维持运转感到忧虑,最后无法阻止这一切的发展,甚至为其设立墓地来为纪念那段不可替代的时光,给自己以交代一样。对于那些接纳了那些机器狗成为自己家人的人来讲,那只狗就是活生生的生命。
所以,你问我怎么想?
我只希望,瓶中的那个小人呦,当你醒来的时候,希望迎接你的是一个温暖的世界,愿你能够被周遭的一切接纳,愿你能够获得自由自在,愿你能够成为你自己。
]]>在这篇文章中,我会从心理健康、认知和教育学的角度来分析现在学校教育当中最基础的构成要件,并且如何映射到每一个学科之上,对应适合且可执行的学习方法。以及在此之上,这些学科对应的能力又如何为个体的毕生发展、宏观社会的公民素养服务。
这会是一个非常庞大的话题,本篇文章也只会是一个范围有限切角,希望能给各位提供一些启发,或者安慰。
这篇文章的内容也提供了视频和音频的版本,你可以根据自己喜欢的方式进行阅览哦!
一到 29 岁这个年龄,就发现自己不再是十七八岁的小年轻了。大多数还在校的学生学习能力都超强,做一两套卷子成绩就会上去,学什么都能学得会。虽然经常跟朋友们聊天打屁说老娘永远 18 岁,但对你就你要承认的是,过了那个智力的巅峰,智商就随着你的岁数开始不断的往下掉,一直变成一个失智老人,这是一个不可逆的过程。不光我一个人在抱怨这件事情,身边一大群顶着二次元美少女头像的三十多岁多岁中年二次元抠脚大叔们,大家都在抱怨这个事情,学东西变得很慢,学什么都很痛苦。
一说到学习这件事情,可能很多人的这个 DNA 就动了。如果我们再加上两个字,变成一个新的词:「学习不好」,很多人的情绪可能情绪马上就上来了——你可能会觉得非常厌恶。为什么会有这个情绪?如果我们来回忆一下每一个人童年的恐怖回忆,就如果你的家长在家长会上跟老师问,说我们家孩子的成绩究竟差在哪儿是吧?老师可能就会这么跟你敷衍地讲:
孩子挺聪明的,就是不怎么努力。
上课特别爱溜号。
我说这孩子的学习不认真啊,这个觉得懂了就不听了。这个孩子特别不谦虚。
我们可以总结一下这些常见的论述是如何进行归因的:他们是在尝试把「学习问题」归因到人格因素上,或者说你的学习不好是因为你这个人不好。这个就很难办,因为人格因素很难改变的,而且它是对于一个人的全面否定。这就会引起另外一个蝴蝶效应:这些人格因素的归因会引起不良情绪,那不良情绪一旦和学习这个概念绑定到一起的时候,学习本身就会让人觉得更加痛苦。换言之,你翻开卷子的时候,你翻开你的教材的时候,你坐在书桌前面的时候,甚至把你的台灯打开的时候,不良情绪就会立刻就会压下来,这个时候事情就没得解了。
我们来做一个受力分析。如图所示,小车静止在光滑水平面上,有拉力 F1 到 F6,试计算小车运动方向及加速度。这些力分别是:错误的人格因素归因,密集的考试造成的恐慌情绪,还有不良成绩带来的这种挫败感。学校大多数情况下会怎么样处理你这些不良的情绪因素呢?他会施加另外一个方向的力来处理这个问题:开个班会打点鸡血,升旗仪式校长讲话嘚啵半个小时打打鸡血,隔三差五开个誓师大会,特别的高三的时候特别爱搞这个,一模二模三模的时候各来一次誓师大会,打打鸡血。
这些手段的确能调动起来某些情绪,但是长久的和学习这个概念绑定起来的,这些所谓的「负向情绪」并没有被正面解决,依然环绕在学生的身边的时候,那些「鸡血」能起的作用就会变得很有限。基本只能管两三天,对最多管一个礼拜之后就又完蛋了,这个时候怎么办呢?「一二三四,再来一次~」。
但经济学上有个概念叫做「边际效应递减」,各种誓师大会开一次还行,开两次也还行,开三次、四次它就不管用了。所以高三后半程的时候你会发现发现很多学生就躺平了。这个时候学校老师就会变得很没办法,誓师大会不管用了,其他招也没有,所以这个时候就会出现大家一起躺的情况。因此这个受力分析的结果非常简单明了,小车会向左狂奔,很多人就跟着负向的情绪跑走了。
这个时候我们要怎么办呢?我给你一招,找这个肌肉猛男和大胸美女穿着沙滩比基尼到教室里边给这个学生上课,可以的话顺便再抹点油跳个舞,学生的成绩绝对都会变好。有的人可能会说「你在鬼扯些什么」,但真有这个事儿。来给大家念个新闻啊,稿源是网易新闻,大媒体呢!
广州近日曝出教师性侵女学生的丑闻,一名英国籍女教师小美帮学生课后辅导。以成绩好就做一次为诱惑,让孩子们的英文成绩飙升。直到有家长看客厅监视器发现孩子与老师的性爱画面才起的报警让案情曝光。
很奇怪啊!一般情况下遇到这种新闻的时候,评论区一定会这个爆炸对老师的「不当行为」进行抨击,但你看这条新闻的评论区,他画风就有点不对,为什么大家都觉得好羡慕?大家都觉得这是正确的教育方法?大家都觉得年轻的时候如果也有这么一个老师,他也会变得爱学习?咦?这是怎么回事呢?
但我跟你讲这个事情在这个世界上是不存在的,后来广州公安就发了公告说这其实是一个「假新闻」。但我们从评论区当中迸发出来的情绪可以看出,说不定这个事情还真的有用,它是一个更加强的这个情绪,能够和以往的「负向情绪」相抗衡,把学生往前拽。但可惜这个世界上没有这种好事情,真是可惜,真是可惜 ¯\_(ツ)_/¯。
我们可以总结一下上面讨论的内容:如果我们把「学习动机的存在与否」归因到努力和认真上的话,这个事情一般就会变得无解。我会更加倾向于归到另外一个归因上:勇敢。
为什么我会把「学习的动力」归因到勇气上呢?因为对于很多成绩不好的人来讲,坐在书桌前面的时候多半会有很强烈的情绪反应,这个情绪反应是「孩子比较怕这个东西」,怕的是「调动起了那些不良回忆」。比如说,老师会训学生,家长会非常严厉的批评自家的小孩,孩子的的作业可能没有办法拿一个「优」,期末考试、期中考试、「堂堂测」的试卷上那些历历在目的「红叉」,那些「恐惧的回忆」和「学习」这个概念连接在一起的时候,会调起一种强烈的「害怕」的感觉,让一个人没有办法产生动力去学习。
「真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血」,这句话是非常、非常、非常适合用在学生身上的。不管你在考研也好,你在准备出国也好,你在高考也好,你在中考也好,我觉得这句话描述的非常好。只要有勇气坐在桌子前面,翻开那本书,所有的学生,你都是好样的,你都非常的勇敢。
很多人都没有办法产生一个动力去面对这件事情,去翻开那本书。因为对于大多数人来讲,尤其是对于大多数中国的学生来讲,学习这个事情大多数绑定的都不一定是一个好的情绪。特别对于中国的大多数学生来讲,尤其是在应试的这个框架下面来讲,这个过程一定是痛苦的,因为我们的文化鼓励「苦学」。
事实上「苦学」是一个典型的错误归因,它把「通过学习获得成就」的内在原因归因到了「能吃苦」这件事情上,但这是一个错误的「人格归因」。在任何情况下,「吃苦」这件事情一定不会是一个正向积极的信息,通过深入的挖掘,通常会发现会有一个更加强大的力量在与之抗衡,并且推动这个人「努力向前」。这些动力可能是「成就感」,可能是「认同感」,可能是「终极价值」。发现这些因素的过程实际上就是在梳理一个人生命经历脉络的过程,「能吃苦」通常不是结果,也不是人性当中真正在散发光辉的要素。
通过上面的这些分析,我们其实共同完成了一次「心理动力学分析」,并且构建了一个理解学习动机的框架。在这个框架下,鸡汤和鸡血是没有用的,鼓励「吃苦耐劳」的道德说教也是没有用的。因为它没有打中那个真实的归因,它没有解决那个真实的潜在的情绪。特别是对于那种所有的成绩都很难烂得非常均匀的学生来讲,他们真正需要的是一个有效的社会支持系统。有效的社会支持系统是一个能够被理解,被共情的氛围。能够有人帮这个学生分析出来,你现在的感觉是什么,你现在的情绪是什么。能够有人让这个学生意识到自己是「被陪伴」的,告诉他「你不是孤独的,大家都能理解你」。
我生命经历当中有一个故事让我印象非常深刻,我上初中的时候我们班有一个男生,高高大大的特别帅,也非常有个性,跟班里的男生相处的特别好。但恰恰我们班主任是一位非常精致保守的女性,她会希望班里的所有学生都像小绵羊一样听他的话。但是很有个性的学生和她处不来。你不能说这个学生「有问题」,有个性不是坏事情,但这个老师又对付不了这样的学生,他们两个人之间就会形成一种上下相互非常强烈的对抗。班里的其他学生看起来都非常看不下去,两个人之间非常针锋相对,气氛非常非常的焦灼,两方的情绪都很激烈,打得昏天黑地。
这个男生表面上看它是很快乐的,他很享受这个过程,和班里的很多男生打成一片。但是我印象非常深刻的是他的书桌上刻了一句话,用笔刻直接刻在了桌子上的,那个东西你你是抹不掉的,那句话是「没有人理解我」。
他的班主任不理解他,可能他家里人也不知道他究竟的情绪是什么样的,甚至他自己都不一定知道那个情绪是什么,那究竟有谁理解他?没有人理解自己的情况下,人就会感到「孤独」,就会有「恐惧」,就会有那些负面情绪环绕在身边。班主任就是教数学的,那你觉得这样的孩子数学可能好吗?我觉得很难,事实上就是他的成绩的确也没有很好。这个就是一个螺旋向下的过程,你成绩不好,老师就盯你,然后你又不喜欢这个老师,一上一下交相呼应,这个成绩就螺旋向下了。
所以,一个有效的社会支持系统是非常重要的,它带来的是一个自由探索的一个安全感。
自由探索是什么?在学习的场域里边,学习的过程实际上就是「探索」的过程,你不懂的那些知识,实际上对个体来讲都是潜在有危险的东西。在探索它的时候,是需要一定心理资源的。这个时候如果没有没有一个有效的社会支持系统,这个能量的来源就会是一个问题,没有心理资源,就没有办法「启动」和「维持」学习的动机。
所以有的时候我会说,交个女朋友或者交个男朋友是有用的。因为它是一种安全感的来源,可以帮你产生那些你真正迫切需要的那些心理资源。
但我们总能听到另外一种说法:「一天天不知道好好学习,净知道处对象」。这其实映射到了另外一个问题:心理资源、情感支持都有了之后,如果他还是没有积极学习动力的话,那肯定是其他地方出问题了。我们要做的是去找其他的问题,绝对不是「处对象」这个行为本身有问题。一般情况下,初中生到高中生也到了那个岁数了,基本上男生会勃起、女生月经的时候,就需要认真学习和探索如何建立亲密关系了。
在这里我觉得唯一需要注意的是安全性。带好安全套,不要搞怀孕了,不要搞出大出血。特别是一对男生或者是一对女生相处的时候,要把手指甲剪干净,小心不要搞出肛裂之类的,要注意卫生不要搞出感染。这些知识都是要提前储备好的,不要搞出事情来甚至搞出人命,保护好自己是最重要的。至于其他的我个人觉得,到这个年龄,会有自由探索身体的欲望的时候,就还是要让他做下去。持续的压抑,最终到某一个时间点都会出问题。
但可惜你单身~嘿!你找不到女朋友~你 30 岁了还是大法师~
哎,我也马上就 30 岁了,马上就能搓出火球来了,哈哈哈哈哈哈哈哈!呜呜呜呜呜呜呜——
说回正题,对于学生来讲,社会支持系统是一个最重要的基础,对应的表象才是学习的动机。很多时候我看到的是动机,但藏在下面这个社会支持系统是很难见到的,所以常常会被忽视,这就非常可惜。
除此之外,中段的学生会常遇到的一个问题是「偏科」。就是总有一两科学不好。这个事情可以从两个维度来看,能力为度和情绪维度。
能力维度指的是,学生真的有没有具体的能力的去解决这个科目所对应的问题。能力维度是一个光谱,不同的学科映射到这个这个光谱之上,光谱的两端对应的分别是「归纳整理」和「逻辑推演」。我们把所有的科目排在这个光谱上,就能看到其实生物和英语是一个极端考验归纳整理的一个能力的学科,但是数学和物理是极端考验逻辑推演的一个学科,物理要比数学更深一点。
另外一个维度就是情绪维度,比如一个学生,推理能力都非常强,但他的数学老师很鸡掰,两个人之间就是不对付,这个情况下数学这个科目大概率是完蛋的。
如果把这两个因素拉到一个三维空间里边的话,最终得到的那个结果就是学生的成绩。
生物和英语是两个非常考验归纳整理能力的科目,更进一步的,在考察的是概念网络的形成、概念理解和应用的能力。
生物这个科目的学习主要是在掌握大量零散的概念,辐映到考题上就是大量的「选择题」和「填空题」来考察学生是否掌握了某些「概念」的含义。具体落实到认知原理上,实际上就是通过构建概念网络来掌握这些大量的零散概念。这个时候你可能就会说,「听不懂你在共三小啦,你说人话好不好?」
我们讲的再直白一些,实际上暴力 K 书就好。无论是还是英语,基本上都是大力出奇迹的一个科目,你有大力的给他灌下去,那个成绩自然就会有。经常有人会问我说这个生物学不明白怎么办?我都会跟他讲,抄书咯。
抄教材是非常有用的,但这个「抄」需要抄的有策略。有一些老师罚学生抄抄东西,比如抄课文,或者有一些很鸡掰的要学生抄练习册,扉页都抄目录都抄,抄的就非常盲目。通常这些「罚抄」的目的都是「让学生长记性」,但我们最终的目的还是希望让他能够学会这个知识,抄只是一种手段。如果我们只是「为了抄而抄」,只是为了所谓的「惩罚」,那这就会塑造一个不良的情绪,在这里一旦不良情绪起来了,他就会对学习这个概念本身产生一个负向的连接,后面的事情就很难搞了。
所以我们要搞明白「为什么抄」和「怎么科学的抄」。今天我在这边提出一种可行的可能的方法,实际上我就是通过这样的一个办法,我把我的生物给 K 到了一个顶标水平?
具体的做法是这样的,打开一本生物教材,比如说现在我们看到的是「必修一」,这里有一句话,实际上这句话里面就有很多可以考的知识点,既可以被改写成填空题也可以被改写成选择题。除了最后一句话是淦话,我们把它划掉,剩下的内容可以被拆成五个考点,这五个知识点当中有各种各样的概念,这样抄把这句话抄下来之后,把所有你认为可能出题的地方或者是专有名词抠成空白:
- 生物圈中存在着众多的单细胞生物,如【 】、【 】 、【 】 等,单个细胞就能完成各种生命活动。
- 许多植物和动物是多细胞生物,它们依赖各种【 】 密切合作,共同完成一系列复杂的生命活动。
- 例如,以【 】 为基础的【 】与 【 】 之间的【 】 和【 】 交换。
- 以【 】、【 】 为基础的生长发育。
- 以细胞内基因的【 】 和【 】 为基础的遗传与变异。
这样我们就得到了一个类似「学案」的东西,但这个是你自己抄出来的一个学案,相对来讲会更加适合你一些,因为你是你主动发现的内容。接下来我们要做的是,对着这个列表在脑子里边快速的过,尝试把这每个词都填进去。如果填不进去的话,就代表这个东西你不知道它是什么。这个时候我们要做的就是回去翻书重新看,直到你能够把所有的空都填满。
接下来尝试用纸笔来填,用一张白纸把每个空格的答案都写出来,填过一遍之后把这个纸扔掉,然后再填一遍,直到你能把这个知识点每一个知识点都能够填对为止。这个过程就是一个熟悉概念的过程。
在熟悉了每个独立的概念之后,我们还可以换个姿势抄,坐着抄完躺着抄,以某一个独立概念为核心把所有的教材整理一遍。比如说我们以「基因」这个概念为例,「基因」或者「遗传」这个概念在生物学必修一、必修二、选修三这几本书涉猎。我们要做的是把它都抽出来,打碎了重新整理一遍。这个过程实际上就是通过专题的方式重新组织概念的一个过程。
你可能会问「分子与细胞」这本书里里面怎么可能会有遗传哦?但刚才我们看的那句话里就有呀:
以细胞内基因的传递和变化为基础的遗传与变异等等。
必修二的「遗传与进化」就更不用说了,字面意义上都是和「遗传」有关的知识点。选修教材「现代生物技术科技」也都是一样的:
- 以细胞内基因的【 】和【 】为基础的遗传与变异。
- 生物的性状是由【 】决定的。
- 这些性状是由【 】决定的,这些因子既不会【 】也不会【 】。
- 每一个【 】决定一种【 】。
这个过程实际上就是尝试把每一个线性的概念重新组织一遍,最后组织成网络,这个过程就是构建概念网络的过程。概念网络构建起来了之后,你再看到一个概念的时候,它可以快速的激活周边的概念,对应到现实面的情况就是:我们可以非常快速准确的答对每一道题。
这样做的一个过程被称作是难度降级。
对于很多生物成绩不太好的学生来讲,直接上去做题是比较难的。题海战术实际上是用非常非常大量零散的概念去轰击你的认知系统,如果你对概念不熟悉、找不到这个概念在哪里,它他周围的概念在哪里。概念上下文都找不到的情况下,题目就很难做对。这次做错了没记住,下次做到了还是会做错,这就是很典型的「常做常错,常考常新」。如果你真的觉得这个东西很难的话,就把所有的知识拆解成原子化的知识点,归纳到知识网络里面,通过「填空」的方式去掌握某一个单独的概念,它绝对是要比直接做题的难度要低的。
这个时候可能就会有人说「我有错题本呀」,事实上「错题本」处理「生物」这种科目能力是有限的。通过考题和错题本的方式来掌握题目但每一个知识并没有构建起知识的链接,每一个概念都是孤岛,他没有办法建立成一个网络,遇到新题目的时候激活就会很困难。用比较老派的说法就是很难「举一反三」。
有些人可能会说「我可以把相同类型的题相同考点的题整理在一起,这样不就有网络了吗?」但其实以这种形式构建的网络,相对来讲还是很稀疏的。它的连接没有那么强:因为你很难去把所有的考点都覆盖到。就算大力出奇迹把所有知识点都轰击到了,对于一般人来讲也很难做到像课本一样系统化,因此通过这种方式进行知识整理的方式效率就会低一些。
总结一些,对于生物这种考察知识点掌握的科目,尝试通过「蒙特卡洛投点」的方式来学习,效率是非常差的。特别是对于那些生物成绩本身就很弱的学生来讲。这种题海轰炸就只是单纯的一次错次次错,只会带来挫败感。知识之间如果没有办法形成连接的话,这些概念就会不好记,所以重要的是怎么样来形成概念网络,怎么样创建概念之间的连接。
同样,它也比较适用于考研,特别是像我这种准备心理学考研的学生。
这个就是我的考研笔记,你可以从这个考研笔记上看到我在做的,就是把教材当中所有的知识点抠成填空题。心理学考研变态的点就是,你把高中三本生物叠在一起都没有那一本普通心理学厚?那个教材真的是砖一样能砸死人。
考试考的内容绝对不会脱离教材,所以我们要做的事情就是老老实实的把教材里面所有的知识全部都拉出来,一条一条的记住。
第二轮笔记整理也是类似的,把所有教材里面对应一个「概念」的知识点全都抠出来做成专题。比如说我们心理学当中有个概念叫做「记忆」。普通心理学会告诉你记忆是什么,认知心理学当中会告诉你记忆这个研究是怎么来的,实验心理学可能告诉你有哪这个实验之上有哪些实验范式和记忆有关,心理学史会告诉你有哪些人去专门研究记忆。通过这样的整理我们就形成了一个非常完整的脉络,这个时候就是构建一个概念网络的过程。同时这种方法会让只是变得比较好学,因为它比较简单,它会比你 K 考研题要简单很多,因为考研一年就考那一次,我们就只有那几套题,传统的题海战术在这个体系下就会完全失效。
你会发现我整理笔记的形式会非常的多样,个人认为形式其实最最不重要的,你怎么样做都好。比如说在我的笔记里,有的时候就直接把知识点罗列起来,因为这些知识足够直截了当;有的知识是多层结构或者是一个流程结构,我可能会画个图;有一些知识真的层级太深了,我真的搞不定了,这个时候我就会用思维导图来整理它;对于那些有多个维度的知识,表格就是一个更好的方式。
再比如像心理统计学这种科目,它非常的「理」,它不会直接考这个东西的概念是什么,这个情况下我就更倾向于整理电子笔记。电子笔记允许我快速的把网上各种各样的这个知识汇集到一个地方。比如说,同样的一个统计方法,从贝叶斯学派和频率学派都会发展出不同的理解方法,通过这些理解方式,我们可以更构建起对于一个方法或者统计体系更加立体的理解。
除此之外,比如说各式各样的钢笔、花花绿绿的墨水、花里胡哨的本子、奇奇怪怪的插图。只要他能让你开心,你就买都买,都给他买下去,大量的买,买得起你就买。如果有人跟你说你这人怎么这么不务实,你就让他去吃屎。我们的最终目的是要建立的是一个和学习有关的积极情绪,学习一定是辛苦的,那这些乱七八糟的东西对学生来讲能够让人觉得「开心」,能够和「学习」的「痛苦」形成足够的对冲,那就是极有价值的。至少我们翻开笔记的时候,提起笔再做笔记的时候,会觉得稍稍的开心一点,那是一个苦中作乐,一种慰藉。
这就是和生物这门课有关的一些学习经验,你倒不一定非要用这些方法,只需要理解其中「难度降级」的思路就好,你会有适合你自己的方式,只要想办法把难度降到自己的舒适圈里面就好。
英语这一科考的是「语用能力」,即怎么「使用」一个语言。在中高考和考研的框架下,语用能力更多的其实是在考验「阅读能力」——试卷的绝大篇幅都集中在「阅读题」上。一说做阅读怎么样才能看得懂,很多人就会提到「背~单~词~」。
平时学校教育都是怎么教英语的呢?上课的时候先打开教材的附录,把单词念一遍,留作业单词抄一行,把这个单词背下来。明天早上晨读的时候,码着单词表一个一个的读,课前的时候再把单词听写一遍,一个字母都不能拼错否则就是不合格,你只要错的多了就会被罚,怎么罚呢?抄单词呗,再多抄几行,仿佛是某种无尽的轮回。
我跟你讲对于大多数人来讲。这个是没有用的。不光这个没有用,还有更没用的。一提到要高考啦,要考研啦,要背单词啦,就拿着单词表从 A 开始背。这个梗都被用烂了,但烂梗请允许我再用一遍:单词表再告诉你什么呢?放弃吧(Abandon),这样做是不正常的(Abnormal),你的智商是缺席的(Absent),这件事情很荒谬(Absurd),你在虐待(Abuse)你自己。
事实上我上学的时候,单词听写没有一次合格的,但是我的英语成绩就是很高。我的英语老师也觉得很奇怪:「诶?这个人好奇怪耶,为什么单词考试一次都没有合格,但是他的英语成绩是高的?」。事实上你也不能说我没有在背单词,我只是没有一个字母一个字母背,其实那些单词的形状我都认识,大概几个音节,什么开头什么结尾,哪里凸起来哪里凹下去。大多数情况下认识到这个水平就够了。
这些传统方法犯了一些很本质的错误:一个失当的难度梯度和一个错误的学习目标。
课程教学论当中有一个知识我觉得非常好:对于一个知识的掌握,它被分成三个水平,「知晓」、「理解」和「应用」,这是三个递进的水平。对于英语考试来讲,大多数情况下只要「知晓」和「理解」就行了,即我们只需要知道这个单词的意思是什么,因为考试更加侧重考察「阅读能力」而非完整的「语用能力」。而我们在读单词的时候不是一个字母一个字母念的(i·n·t·e·r·n·a·t·i·o·n·a·l·i·z·e),我们是在把它当成一个一意群来读的(in·ter·na·tion·al·ize)。你可以根据一些词根来推断一个词汇的意思是什么,大多数情况下,我们在快速阅读文本的时候,扫过每一个单词时都只会看几个字母,抓几个重点,就知道是什么意思了。所以大多数情况下不需要一个字母一个字母的去背。除非为了写作练习可以储备单词量,否则背拼写的意义不大。
这样我们就省下了很多不必要的时间浪费,省下来的时间可以做一些真正有意义的事情:阅读练习。我高三时的英语老师有一句话讲得非常非常的好,叫「每天做四篇,高考一百三」——每天做四篇阅读,稳定扎实的做。每做一篇阅读,英语能力就会有一个微量的提高,这种提高小到难以察觉,但是日积月累,无论是阅读速度还是准确率都会有稳步的提升。这个和排位赛是一样的,做一篇经验就多一点点,不做就掉下去,一天不做就掉下去一点,一周不做、一个月不做、半年不做,阅读能力就会逐步退化,最后就变成智障。所以有另外一句话:「一天不做变笨蛋,一天不做变笨蛋,バカ~バカ~」。
「四篇」这个量实际上不是一个硬性的标准,一般我会推荐上限是四篇,不要做太多,会很累很难坚持。下限的话,至少一天要做一篇。唯一的标准是这个量会让你觉得舒服,你如果英语的水平稍稍弱一些的话,少做一些也没有关系,只要让练习量恰巧在舒适圈之外一丢丢就好。不要不要走太远,走得太远就会疲劳和受挫,无异于长远的习惯养成。
在题量这件事情上,有一些老师就很有毒:怎么提高英语呀?「精读泛读呀」。道理大家都懂,但是这类老师会用冲击疗法一天狂留六七篇阅读当作业。但是我们要意识到一件事情:对于那些英语成绩不是很好的学生来讲,处理每一篇外文语料都是非常消耗认知资源的,可能在前两篇的时候学生就已经处于一种高度疲劳的状态,没有那个心理资源再去处理后边的阅读题。没心理资源了怎么办?就开始懵了嘛,应付作业谁不会呢,ABCD DBCA TTFFTT 作业一交,解决~
这个时候惯用的归因方法是是「这个学生学习不认真」,但实际上更深层的原因是心里资源的枯竭,这是一个不容易被察觉到的点。所以我们说,一个适合自己的训练量是重要的,一般推荐一天最高不要超过 4 篇阅读。因为对于大多数学生来讲,每日四篇以上的练习量一定会让人处于高度疲劳的状态,特别是我们还有其他各种事情要处理的时候。当然,每天做一篇、两篇或者三篇也是可以的,通过逐步缓慢的提升训练载荷,在半年甚至一年的时间里面逐步适应每天做四篇的训练强度就好。重点是要稳定持续的做,做一篇能力就会提升一点,再做一篇又会提升一点点,越做越多能力就会越筑越高。
在有一定的这个积累了之后,我们就可以开始讨论「精读」和「泛读」这两件事情了。
精读的具体做法是:题目大概看懂了,答案填上了,对完答案简单看一下哪里错了是怎么回事,就可以把它扔掉了。平时在做非真题习题的时候经常会遇到「玩命抠答案」的情况,但模拟题命制过程的思维不一定那么严谨,有的时候可能会出现一些比较怪的这个问题,或者模棱两可的问题(比如两边答的都挺对,但是你要挑更对的,但又没有找到那个更对的答案,于是就选错了)。对于泛读练习来讲,抠答案的必要性非常小,因为我们的核心目的是练习语料阅读的熟练度,而非揣测命题人的奇怪意图。
泛读的处理就需要更加认真一些:延续之前谈的思路,还是找一个让你舒服的训练载荷——对于每篇阅读我们只练习翻译一个句子,记住两个单词。
我们先来看怎么练习翻译。翻译练习的核心是从语料当中找出一篇我们看不懂的话,拿出来研究它是什么意思。以高三的教材当中的一篇课文为例,有这么一句话:People Celebrate show that they are grateful for the year’s supply of food。如果你觉得这句话没看懂,要试着翻译它,我们要怎么做呢?
有些人会这样翻译:「人们庆祝表示他们感谢一年的食物供应」。这不是一句通达的中文,但很可惜非常多的考生在进行句子翻译的时候都会这么做。但这种翻译不会让你的语言能力提升,正确的做法是提取文本的含义并且**「重新组织成为有效的中文」**,比如:「人们通过庆典的方式来表达自己对于一年以来能够吃到食物这件事情的感激之情」,这个过程被称作「意译」。接下来我们拿着这个翻译过的文本进行复原英文,看看自己究竟有没有理解没看懂的那句话。我们复原出来的英文不一定和原文百分之百一样,这是正常的,但是我们要注意自己写出来的英文当中有没有包含那些「原文中不会的单词」和「你不会的语法结构」,想办法把它用到。这样一来一回,语用能力就会有提升。
做阅读题,特别是对于高中和考研英语来讲,重点并不是 ABCD 能不能选对,而是语料究竟有没有透彻的看懂。
和「应试技巧」不同,语言能力的提升是一个非常缓慢的过程,每一次练习带来的改变都是相当微小的,所以「学英语」这件事情才会让很多人感到挫败。实际上所有以「能力」为核心的练习都存在着这样的情况,但是宏观尺度上长期的练习的确是能够带来很多的改变。
将一个过去的小故事,我记得刚上高一的时候我们英语老师老师,一个小老太太,特别坏。她组织了一场班级内部的小考试,把当年的高考题拿出来让我们做,还骗我们说这是「高级中考题」。让初中毕业生做高考题谁吃得住啊,所以把我们所有人都搞得很痛苦。我记得当时我才考了 91 分,大家刚开始都是这样的,但多练练就会了,高中三年磨下来,我最后不也还是拿了 130 嘛。
考研英语的问题就更鸡掰一点,当年做「考研经验分享」的时候就有很多人问我「英语怎么搞」?我给了一个很粗暴的答——你要做的事情,你把能买到的练习册全都买回来,然后一本一本的全做一遍之后,你的成绩自然就上来了。你也不用管那个题的质量好不好,像是新东方那种烂破底线的题扫一眼阅读内容本身就可以扔了,质量还成的题(比如张剑小黄书)就下手把题坐一坐。我真的都做过,真的有差。
张剑的那本厚的要死的小黄书非常有名。这套书非常好,因为他很厚适合用来防身、里边的题量非常的大,而且它的题质量还没那么好,哪怕大量的刷也不会那么心疼。真题就不能这么遭害嘛,但是模拟题是可以无脑刷的,这本刷完了还有下一本,非常适合用来作为「冲击疗法」的材料。但是雅思就不能这么搞了,因为它没有「海量模拟题」可以用来海巡,基本真题用完了就是用完了,买不到更多题目了,这就会变得相当难搞。
我身边就有很多学生,前 10 篇都没做完就扔在那儿了,都已经上了考场了,买的第一本练习册还是没有做完。这件事情也常见于高三,一本练习册做两道题就扔一边了,毕业的时候扔跳蚤市场卖给下一届学生下一届再做两道题,再往下传。这传家宝是吧 =ω=?
通常来讲任何一本英语练习册如果 2 个月还没有做完,就说明大概率是动力系统出问题了,这个时候请阅读本文第一章的内容~
一个暴论:K 语法书是完全没用的,拿着一道选择题跟你讲「主谓宾定状补」也是没用的。
通常一提语法就「主谓宾定状补」的教学模式搞混了两个概念:「语用能力」和「语言学」。无论是中高考还是考研,考的都是「语用能力」,这和「语言学」有着非常本质的差别:
实际上我们在讲中文的时候也没有在脑子里面分析每句话的主谓宾定状补,哪怕是语文课也很少有讲这些知识。我们当然可以用「语言学」的技术来解决每一道题,但对于大多数学生来讲这都是不现实的,在缺乏足够多语用经验的情况下,架空支起一个语言学框架会让很多学生无所适从,这也就是为什么我们会在英语课上看到非常荒谬的情况:用「语言学」知识解题目通常只有一部分前段班的学生能听得懂,其他人都在茫然的思考午饭应该吃什么,英语上的「常做常错,常考常新」就是这么来的。
当然我们不能说语法工具书是没有用的,但是使用这些工具书的思路需要改变,通常和某一特定语法话题有关的语用错误积累了一定量之后,再回去翻译法书并修正你表达,这时会有非常好的效果,因为在语法概念下我们已经积累了相当多实际的语用问题,这个时候和语法有关的知识才能构建的起来。
所以这里我更推荐通过写作、积累大量语用错误并且修正的方式来学习语法,而不是单纯的背语法规则。
通过「科学堆量」的阅读练习方法,基本上高考英语刷到 120 分、考研英语拿到 70 分以上基本上是没什么问题的(考研英语具体还是要看省份的,这里以全国阅卷最严格的北京为标准)。你可能会说 120 分 或者 70 分好像也没有很高。但是这个分数对于我接触到的大多数学生来讲都够用了,清华北大一共才多少人嘛,北京所有高校叠在一起也没有多少人嘛。不是每个人都需要清华北大,对于很多学生来讲 120 分可能已经是一个很理想的成绩了,但如果你在追求的是更高的成绩的话,我们可能就要探索「应用」层级的只是要求了。
对于英语这门学科,「应用」层级的知识要求就是真实的「语用能力」了。进一步讲,就是「写作」。
高考、中考的时候写作的题目格式非常的明确,形式非常的简单:假设你是李华,请您喵两句 =ω=。写了这么多年你都不知道你在假扮一只狸花猫猫猫是吧~其实在我看来这种水平的题目对于提升整体语用能力来讲难度真的偏低,通过这种题目很难系统性的训练到「各种时态」的使用,也很难覆盖到所有「常见词汇」和「语法结构」。
如果要冲 120 分以上的话,可能还是需要写点高级的东西,不要盯着高考作文题目来练。在这里推荐几个题目的来源:
我们以高中教材为例,事实上每一个单元的那个标题都是非常好的作文题目,我们就可以用它来写命题作文嘛,比如说「Why do we Celebrate festivals?」,这个题目就非常好。考雅思的话,雅思作文的题目本身质量就很高了,比如像:「转基因食品或者基改食物,你的想法是什么,它的好处是什么,它有什么不好的地方?」、或者是「你对胎儿的基因编辑和基因疗法你有什么样的这个看法?」,写一篇二百五十词的作文。
那有可能有人会说,我写不出来怎么办呢?我跟你讲,大家都一样,瞎写咯。第一次都很痛,我刚开始学雅思的时候我也很痛。当时我把我的作文拿给一个批改服务,那个批改服务跟我说你这个东西已经太烂了,我真的是没有办法救你了。啊,要不然我们有个课您看您要不要买个课?我这还有个优惠码哦!
刚开始大家都这样都会有这种挫败感,但是硬写就对了,伟大的现代科技都能帮你凹回来!如果单词不会拼,就根据单词的读音把大概的拼写猜出来,然后硬塞进去,错了没有关系的。再比如说表达方法,如果你觉得某个意思自己表达不出来,那就想办法硬凹,把它糊上去。
第一次写、第二次写的时候百分之百惨不忍睹,但就是去写。写完之后可以用这些工具来处理这篇作文(锵锵~哆啦A梦音效——):
这三个东西都不要钱,而且贼好用。
除此之外你或许还需要一个写作方法课,根据你要考什么样的考试,网上都会有一大堆对应的课程。随便任何一套课基本都能解决你的问题。至于怎么挑课反倒是最不重要的。老师的声音你喜欢,OK!这个老师胸大你喜欢,OK! 那个老师长的帅,OK!这个课你看得对上眼,OK!反正就是找这个让你开心的课就行。
比如说我在上的是两套课,一套课叫做雅思之路,另外一套课是 ed:m 在 PPA 上出的这个课。这些课都很不错,买回来了就上呗。
比如说雅思之路,他会教你在写一个作文的时候大致的流程是什么,比如怎么读标题、怎么打框架、怎么做你的写作计划、如何与读者换位思考、如何检查你的作文,他会提醒你要写草稿,最后要对文章做检查。他还给你举了一些例子,不同的人通常会怎样定他们的框架。ed:m 的课切入角度就更加实用一些,他把作文大概分成几个类别,然后告诉你每一个类别对应的你能够用到的词汇是什么。表达每一种意思的时候,你能用到的语法结构是什么,从这里面去学学一会了。
接下来就是把手弄脏的时间啦,开始瞎鸡巴写吧!不管你写成什么样子 ChatGPT 都能帮你凹回来哒!这里给你提供一些很好用的 Prompt:
This is a practice for the IELTS writing test, please list all the mistakes I made and give a list of suggestions to improve the article.
[把你的文章粘到这个位置]
这样她就会开始输出一大堆建议,接下来我们请 ChatGPT 帮你凹文章:
Can you polish the article with the suggestion you give, rephrase every single sentence to make it looks more professional, and get at least 8 marks in IELTS?
请注意这里我加了一句「and get at least 8 marks in IELTS?」,也就是请帮助我在雅思当中得8分。这个8分是很重要的,你给他提供的要求不一样,他输出的范文也会不一样,你可以请她帮你改 6 作文,也可以改 7 分作文或者 8 分作文。具体修作文的标准取决于你当前的语言能力水平。比如说你现在如果是 4.5分 的一个水平,那你可以请 ChatGPT 帮你修成 6 分作文(这里会建议最低修成 6 分作文,修成 5 分作文是没有意义的),
在请 ChatGPT 小姐帮你修作文的时候不太建议「越级打怪」,我曾经尝试让他帮我修一个 9 分版本的文章出来,她也的确照做了,但最后修出来的东西只能说是熟悉又陌生。它依然是我的作文,思路和我的生命经历都是一致的,但是很微妙的这文章我竟然看不懂!这样的范文对我来讲就是「不舒适」的:它对我来讲太难了,我从里面学不到东西。但是他给我修一个 8 分的时候,我就能够从里边提取出来一些我学的会的词汇、一些比较不错的表达方法。因为它是以我们自己写出来的文章为蓝本进行重写的,所以它符合我们的生命经验,只是表达的更加流畅。
ChatGPT 有一个问题是他在修语法错误的时候,给出的诊断不是非常结构化,它不会告诉你每一个语法错误对应的类别是什么,但 Grammarly 可以。所以我建议在 ChatGPT 生成完范文的同时,也用 Grammarly 检查一遍自己文章的语法错误。Grammarly 会拉一个表出来,比如说像「你的动词时态错了」、「你的介词用错了」、「你多加了冠词」等等。我们可以针对每一种语法错误进行整理和学习。这个时候你可以随便翻出来一本压箱底的语法书,或者去 YouTube 上找一些语法教学,来帮助自己理解某一个语法规则,甚至你也可以重新打开 ChatGPT 让她给你讲一些语法知识,比如说我可以这样问 ChatGPT:
The sentence: “Raised concern about its effect on health”, I’m confused about the usage of the preposition, why should I use “effect on” but not “effect to”, “effect of” or “effect for” or “effect about”?
它就会给你一个比较完整的解释:
The preposition “on” is used to indicate that something has an impact or influence on something else. In this sentence, “raised concern about its effect on health” means that there is concern about the impact or influence the effect has on health. “Effect to” would not be appropriate because it does not convey the sense of impact or influence. “Effect of” would suggest that the effect is a result or consequence of something else, rather than having an impact on something. “Effect for” would suggest that there is a benefit for health, which is not what the sentence is trying to convey. “Effect about” is not a commonly used preposition and would not be appropriate in this context.
在这里分享两个我平时常用的分析介词使用的 Prompt:
The word “[你的介系词]” is showing the relationship between the word “[前面的动词]” and “[后面的名词]”, can you explain what kind of relationship the word “about” is trying to express?
你还可以请 ChatGPT 为你解释每一个错误用法具体为什么是错的:
Now, I know the usage of “[错误搭配]”, “[错误搭配]” or “[错误搭配]” or “[错误搭配]” is wrong, can you tell me what does these expressions are trying to express if they are presented?
最后,如果你发现自己写的某个句子特别惨不忍睹,想要做一些修正,那么可以试试 DeepL Writing,比如说我们随便找一句话贴进去:
The market nowadays are increasingly competitive, both companies and employees are facing more stress to survive.
他就会给我们列出一大堆可行的重写:
- Today’s markets are increasingly competitive. Both companies and employees are under more pressure to survive.
- Both companies and employees are under more stress to survive in today’s increasingly competitive markets.
- The market today is becoming more and more competitive and both companies and employees are facing more and more stress to survive.
句子写的越烂,重写的效果越好,我们可以挑一个自己也能写的出来的句子进行学习,久而久之的你就学会了如何写一个靠谱的句子了。
唯独需要提醒的是,Grammarly 有的时候会给出错误的建议,特别是冠词纠正,绝对是有系统性的问题的。所以我会建议如果你觉得哪些纠正看起来很怪,我们可以那句话粘回 ChatGPT 做一个 Cross Validate:
The following sentence’s grammar usage iS wrong:For government, there should be policies to solve the financial problem of these young people. by delaying the loan repayment and setting up relevant subsidies.Instead 0f saying “delaying the loan repayment”, it should be “delaying loan repayment”, there shouldn’t be an article, Can you tell me the reason?
这个时候 ChatGPT 就会给你解释:
The sentence is grammatically correct. The phrase “delaying the loan repayment” is correct as it is referring to a specific type of loan repayment. The definite article “the” is used to refer to a specific noun, in this case is “the loan repayment” is a specific action that government should undertake.If you want to use “delaying loan repayment” it would mean to delaying any kind of loan repayment without specifying which one.lt could be rephrased as “For government, there should be policies to solve the financial problem of these young people by implementing measures such as delaying the repayment of specific loans and providing relevant subsidies”
ChatGPT 会告诉我们,Grammarly 其实改错了,你的写法也是对的,你想表达的意思是什么样的(虽然你自己可能都不知道自己在共三小),Grammarly 想表达的意思是什么,你更想用哪一个语义去表达,可以自己挑一个。他还告诉我们说这句话其实写的有点烂,你其实可以这样说。就像一个温柔的大姐姐一样,手把手教你怎么样去写这个作文,这就是非常好的一个指导。
通过这些在线工具学英语和学校老师不一样,它没有任何次数和时间上的的限制,我们可以无限制的去问他各种各样的问题。除此以外,在向 ChatGPT 提问时,我们可以有一个非常轻松的一个心态,他不会觉得不耐烦,也不会有任何脾气。老师也也要也要就是管管家里的孩子是吧,人家也有生活要过,人家也有卷子要批,人家也要开教研会,人家还要备课,人家有很多事情。你肯定是不能写一篇作文,一句话一句话地去问你的老师,但是在线工具无所谓!反正他就乖巧的坐在那里,你哪怕后半夜发癫想写点作文也可以随时去问他,非常便利。
至此我们已经把整篇作文涉及到的知识点都加工完了,该整理笔记啦!首先要做的是把原来自己写的那坨 Shit 丢掉,把 ChatGPT 批改过的文章工工整整地抄到本子上。这个地方我会推荐用纸笔来写,因为它能强迫我们进行加工。电子笔记没有用,啪唧一下粘到 Word 里面没有灵魂,也记不住。
在抄笔记的时候我一般习惯写单面,右边是 ChatGPT 改出来的文章,左面是各种注记,主要用来比较 ChatGPT 的改动和原本自己写的内容分别是什么。通过这个过程我们可以熟悉一些更加高级的表达方式,还有一些虽然自己能看得懂但是写不出来的内容。
每篇文章后面通常还需要整理出来一个词汇表,把自己瞎机霸猜但是猜错的词都拉出来方便日后背诵拼写。这个单词表才是真正有用的单词表,因为你在写作的时候真的能想起来用这些词,如果能拼对的话,他们就是最有价值的语料资源。
接下来,所有 Grammarly 筛出来的语法错误最好也整理出来一个列表,按照语法错误的类型做一个简单的归类,最后系统性的学习对应的语法知识。
最后,对于每一次写作练习,至多整理一个重点学习内容,比如我的这个例子里面整理出了若干个表达「某个话题引起了许多争议」的方法。至多挑一个来整理是很有必要的,整理太多就会有心理负担,再反复抉择之后挑出一个最重要的,挑选的过程中就已经是在强化记忆了,最后整理出来的哪一个知识一定是印象最深刻的,日后查阅也会更方便。
我们在不停写作、润色、整理的个过程,实际上就是在重新写一本属于你自己的教材的一个过程。英语教材的你虽然也很有用,但大多数情况下用的是他后面那个词汇表,前面那个课文真的不一定有很大用处,因为它和你的生命经历不相符,但是你自己写的这篇文章和你的生命经历是相符的,他就是按照你的思路来的,阅读和学习起来认知负担就会相对小一些。这样我们能够更加容易地从这些语料当中学到新的知识,所以这个东西它更加适合你。
这份笔记的结构跟教材是一样的,它有一篇大课文,包含了各式各样地道的表达方法,也有语法的教学和词汇表。但不同的是,这本教材的每一篇作文都是为你量身打造的:因为这东西就是你写的,你可以在一个比较舒适的环境当中逐步提升。通过这种方式不断练习的过程,实际上就是把每一个词汇,每一个语法概念,每一个语用的这个元素重新编织成概念网络的一个过程过程,其实它考验的还是一个归纳整理的一个能力,只不过外在的形式不一样而已。
接下来我们来看数学和物理这两个科目,我必须非常坦白的讲,这个我不行。
我的数学和物理成绩是非常非常烂的,如果今天我教你数学要怎么学,我的高中老师绝对会笑到拍大腿,我的物理成绩也是没有一次及格的,所以我不能教你怎么学这个东西,但是我可以给你提供一些思路还有我自己的经验和感受。
我们可以把每一道数学题抽象成一个这样的结构:
在这张图里面,左面圆圈是题目给我们的条件,右面的圆圈代表最终我们要得出来的结论,这个过程实际上就是利用自己手里的知识和题目当中给的条件来构建一个完整的逻辑链条。决定一个数学题目难度的决定因素有两个:一个是它使用的知识究竟有多隐晦或者知识量有多大,另外一个便是逻辑链条的长度(一共有多少个步骤要进行推演)和复杂度(需要处理多少个逻辑分支)。下面这个小视频演示了逻辑推理的抽象过程:
我们拿出一个条件,和一个我们既有的知识,推断出一个推论,再用这个推论和其它条件、知识继续推断直到得到我们需要的结论。这一切看起来很美好但实际上很多考生在解题时的感受通常是这样的:
第一部通常是很简单的,找到最浅显的条件和公式,拼一下就能得出一个结论了。但是推第二步的时候前面是做什么,大概大概就忘记了,或许这一步需要的知识可能也不是很懂(就是所谓的这个工具掌握的不够熟练),非常勉强的把第二步推下去了。推第三步的时候,前面所有的东西就全都全都忘了,这个地方推的也比较薄弱。现在开始,OK,所有的条件,所有的知识,所有的这个推论全都在天上闪,但是你一个都抓不住,逻辑链条已经维持不住了,根本不知道自己在做什么,然后就稀里糊涂的就把这个东西给推下去了。
这里有一个很重要的一个感受就是你发现所有东西都在天上闪,但是你一个都把握不住,最后稀里哗啦的敷衍一下,Q.E.D!
出现这个问题主要有两个原因:一方面有手艺活的部分,知识掌握的不够扎实的话,提取「工具」的过程就会变得不够「流畅」,通常为了解决这个问题刷题就可以了。
但另外一方面很重要的是「注意能力」,那个闪的感觉、那个「把握不住」的感觉,实际上就是注意力没有维持住。如果「注意能力」比较欠缺的话,在做题时就会产生一种一种「高度疲劳」、「无法集中」的感觉。这个时候再做题很容易就放弃。注意能力出问题的话,很多其他科目也会跟着出问题,比如语文的文言文阅读、长句子的书写、化学方程式的配平、平时背单词背课文、生物的基因型推断、英语的语法类型推断、还有最简单的数值计算全部都会出问题。
我们以语文的「文言文阅读」为例,这是一个我从高考题里边摘出来的一篇练习题:
孟尝君之赵,谓赵王曰:“文愿借兵以救魏。”赵王曰:“寡人不能。”孟尝君曰:“夫敢借兵者,以忠王也。”王曰:“可得闻乎?”孟尝君曰:“夫赵之兵非能强于魏之兵,魏之兵非能弱于赵也。然而赵之地不岁危,而民不岁死;而魏之地岁危而民岁死者,何也?以其西为赵蔽也。
比如说一道题和这一个一个句子或者两个句子有关,我们需要理解这两句话的意思并且形成一个推论,但我们在读这句话的时候,读着读着后面的话就不知道前面的东西是什么了,再往后读一读前面的东西又丢了,最后一个句子都没有读出来,所有东西都已经散掉了,这个时候题目就会做不出来。
有的读者可能会问那为什么我能处理「现代文」却不能处理「古文」阅读?一方面可能是注解背的不够熟练,但是另外一方面就很有可能是加工能力不太够,因为对于古文来讲每一个字的加工都是非常非常消耗认知资源的,它需要更高度水平的注意力才能处理。但有些考生的注意水平不够高,一旦认知资源不够用了,注意力维持不住了的话,就很有可能出现一句话都加工不完整的情况。一句话都加工不完整的话,你对它的语义就没有理解。做题的时候就像一个傻子一样,啊吧啊吧啊吧啊吧啊吧啊吧啊吧啊吧啊吧什么都看不懂,考试分数就不会高。
事实上注意能力严重不足的考生在处理现代文的时候也有可能会出现问题,通常临床上会将其称为「阅读障碍」,是一个非常热门的研究领域,感兴趣的朋友们也可以读一读相关的文献研究。
不光是考试,这样学生平时在生活上面可能也会体现出来某种特征,囧星人曾经做过一个视频,在这里我们把它文字化(想看视频版本或者语音版本请从文章开头的地方找访问链接哦!):
明天截稿,我现在要写剧本的哦!哇猫咪好可爱,他是不是饿了,到吃饭时间没天哪工作好乱,我刚才整理一下。我有点想喝什么打开冰箱看看好了!啊,该把这样的衣服收回来了。Hmmmm… 我刚才到底想干什么?
这样的人经常会被冠以这个人「很马虎」,「丢三落四」,「很浮躁」。但这些因素都是「人格因素」归因:是这个人不好,因为它有什么什么样的特质。但一旦归因到人格,这个事情就很没救了,唯一的解法就是:噔噔噔噔!
人生重来枪!你这辈子重来吧!哈哈!但这是有可能的吗?当然不。
所以我们需要把它归因到一些更加切实可行的因素上,「注意力」或「注意能力」就是一个非常切实可行的归因。你解决「注意力」好,成绩就高,这件事情就会变得很好操作。具体要解决这个问题呢?思路是一样的:难度降级。
一些比较简单的办法,比如说抄写数字(这个我们在之前的文章当中有介绍过),通过螺旋花圈写数字的方式,去体会「集中注意力」是一个什么样的感觉。这和临床治疗当中的情绪控制疗法比较像,通过不断体会集中注意力的感觉来习得「集中注意力」是如何操作的,慢慢学一学就学会了。这类任务足够简单,它不会像数学题一样,把各种各样的公式、和各种其他认知过程一起给灌到任务里,它就是非常纯粹的注意力练习,每天都做这种联系,慢慢的可能就学会了。
你可能会觉得这东西好无聊啊,有没有什么更好玩的?当然有!比如说围棋就是一个非常好的项目,国际象棋、中国象棋也都很适合用来练习注意力,在下棋的过程中是会要求你的注意力能够高度的集中去处理这个整个棋局变化的。但五子棋、飞行棋、跳棋这种相对来讲就没有用。我们可以找一个软件,调一个适合自己的难度电脑下。亦或者也可以用在线平台,在网上和其他人下。
如果觉得没什么动力的话,看看棋灵王、研究研究 Alpha Go,看看哈利波特,可能就会觉得这个东西很帅,最后就产生兴趣了。
但是如果你发现这个事情真的很严重,哪怕做的这些练习,依然没有办法,并且觉得好痛苦,那我会比较推荐你去医院进行 ADHD 的 诊断,我先前做过一期节目讲和 ADHD 有关的知识,推荐对这个话题感兴趣的朋友去听一下:
在这里唯一需要叮嘱的是,根据自己的接受情况选择处理方法,可以通过一些认知训练的技术来不断提升注意能力和阅读能力,也可以根据医嘱服用药物来改善情况。具体情况要看自己能接受什么样的方案,不要太过勉强自己。不解决也是没有关系的,学会与之和谐共处同样是一种方法。
接下来我们再来看和技能熟练度有关的部分,对于数学这一个科目实际上我会倾向于认为「错题本」能够起到些许作用。我建议用活页本来整理题目,每一页只整理一道题。无论是选择题、填空题,都整理成简答题的形式,正面把题目抄下来背面把完整的推导流程记住。
比较忌讳的是选择题就把四个选项都抄下来,每次练的时候也就只看着选项做回答。其实 ABCD 看一遍就能记住了,能选对也不意味着这题就会做了,所以抄选项的用处不大。
就是把把思维过程记录下来了,然后把解题过程记录下来,能够确保你下次看这个错题本重新做的时候,能够把这个题做下来。然后很重要的一点是在整理错题的时候来想办法回忆当时自己是做到哪里卡住了,当时自己是怎么想的,要把这个思维过程形成记录,然后你会发现自己什么地方出问题了。在记录的过程中我会推荐各位着重回想自己究竟是哪个地方卡住了,当时自己是怎么想的,尽可能多的把整个解题过程回访出来,这样有助于我们总结出问题真正问题的核心。
活页笔记本的好处是,我们可以根据题目的类型重新的把内容打散了重新进行组织,一般的本子做这件事情相对来讲就会麻烦一些。
相当多的家长会陷入一种非常诡异的逻辑中:孩子成绩不好怎么办?课后班!更多的课后班!もっと!もっと!もっと!更多、更多、更多的课后班!天天学,每天学到后半夜!对于这种家长我只能竖起中指。
大多数课后班基本都是没什么用的,特别是补全科更是完全浪费心力。道理非常的简单,上课你老师怎么教,期中期末复习还是怎么教,课后班老师还是怎么教。你觉得教一遍、教两遍、教三遍都学不会,教四遍就能学会吗?学不会的。一定还是底下有什么东西出问题了,只盯着上面的成绩说事很大程度上只是一种刻舟求剑的行为。
我曾经遇到过一个家长,小两口异常焦虑,从他们的谈吐和神情当中能够感受到一种巨大的压力,甚至那个家长会吃着吃着饭,就得哭出来。孩子下班之后,家里开车杀到学校门口把孩子接上车,然后在车上吃饭,一个课后班一个课后班得跑。孩子半夜回家写作业,写完作业之后简单睡几个小时第二天再去学校折腾。一年到头都是这样跑,寒假暑假都是这样折腾的。看到那个孩子,我都会觉得好可怜。很可爱的一个小女生,白白净净的,眼睛特别大,性格很活泼,但是你能从他的笑容当中看到一丝苦涩在里边——你能够看到一些不属于他这个年纪的应有的疲劳和忧愁。
这样做实际上是完全没有用的,这对父母实际上只是在不停的证明自己得无能,没有能力去提供一个良好的社会支持系统,甚至他自己在破坏这个社会支持系统。他们自己不能控制自己的焦虑,这种庞大的负面情感盘旋在整个家庭的上空带来了庞大的不幸。他们也不能和自己的孩子共情:这个时候那个孩子其实需要的不是这些,他可能也不一定是那么高的一个分数,这个时候这孩子可能需要家长抱他一下,说一句你真的辛苦了,我们一起来想办法。
我们的教育常常鼓励孩子像父母说一句「辛苦了」,可是谁不辛苦呢,这个时代的孩子也挺辛苦的,可是鲜有人告诉孩子,有人知道他们有多苦。
这个小孩子需要的是大人和她们手拉手去解决实际存在的问题,至少在家里边跟孩子一边下围棋一遍喝喝果汁聊聊天,还开心一点。有的父母可能觉得这些东西没有用,的确表面上没什么用,但按照我们之前讲的整个模型体系,其实它起的作用要比上万元的补习班有用的多。
这就是一个和最终成绩有关的完整模型。能力为度和情绪维度套起来最后就会表现为外在的分数。
上面整个章节我们讨论的其实就是与「归纳总结」和「演绎推理」有关的能力模型,它最终会外显的表现为考生在考试当中所得得分数。分数是一个很容易被看见的事物,但能力不是。如果我们只针对成绩这件事情来处理的话,很容易就会走歪。
整个讨论的核心的思路就是「难度降级」,把所有学习任务的难度都降到一个恰巧在舒适圈之外的难度,在进行持续的练习,这样能力才会有逐步的提升。通常来说学习上的困难可以被理解为一个台阶卖不上去了,迈不上去的原因是对于这个考生来讲,这步楼梯太高了。太高了怎么办?我们可以找块砖头垫一下,先走半个台阶,再走下面的台阶。
这就像找一只藏獒和一只柯基,一起爬高楼大厦,藏獒当然可以一步、一步地跨上,但是柯基上不去。那你觉得柯基有问题吗?柯基当然没有问题!你看它那么可爱!映射到现实世界也是一样的,有人一步迈不上去,不能说你人格怎么样,或者说它就是笨。找到真的迈不上去的台阶在哪里(映射到哪个能力上),给予情感支持并且一块砖头(合适的方法),大家都是能迈得过去的。
在前面的文章中,我们提到了很多种方法,但是这些方法不一定适合所有人,每个人都有自己的生命脉络,对应的一定会有不同的学习方式,探索这些学习方式并且去践行他们才是有效教育任务的核心议题。
这个时候你可能会问,诶,怎么没有语文?
我,我也想知道语文是怎么回事啊 (つд⊂)。哪怕大学毕业、研究生毕业,学历穿越了两个师范大学,我依然没能参透语文这个学科究竟是在学三小。所以长久以来语文这一科对我来讲一直都是科目 X。我直到我出了社会,工作了两三年之后才逐渐形成了对这个科目的理解。
语文这一课如果我们对它进行一个解构,可以分成大概四块:「语言能力」、「应试技巧」、「书法技巧」和「思考能力」。
通常来讲,一个人的语文能力都不会差到哪里去,跟老外比大家的语言能力都不会差多少。另外一方面,考试技巧其实也没什么可以多说的,那些东西上课老师都教过很多次。有听就有懂,没听就没懂,也没什么解决和提高的空间。
但接下来的两件事情就有很多可以说的了,我们先提「书法」。
平常我们说「书法」这个词基本上就是在说你写的字好不好看。语文这一科是个非常吃这方面技巧的学科,字写得「好看」是很唬人的,少会有十分至二十分的加成。光是把写字的问题处理好就能解决很大的问题了。
但一提到书法,可能就会问一些很世俗的问题:用铅笔练字还是钢笔练字好呀~总有人说碳素笔不练字呀~钢笔要用美术尖才更练字呀~你要用什么纸来练呀~A4纸还是什么专用纸呀~练行书、练楷体、练隶书还是艺术体呀~我买谁的字帖比较合适呀~
我有一个朋友,有一句话讲的非常好:「当代大众审美对于书法的认知,基本上等于和印刷体写的像不像」。我觉得她说的非常对。我们要搞清楚应试教育的场景下练字的目的是什么:我们要做的事情不是写出艺术风格,而是讨好扫描仪。真的很有艺术风格的书法作品不一定是非常「好看」的,也不一定符合大众审美。如果要讨好扫描仪的话,事情就会变得比较简单了:「方正书宋」、「方正楷体」。如果你没有听说过这两种字体的话,他们就是印在你教材上面的印刷体。横写的细、竖写的粗、转角记得顿笔,就照着你教材上面的印刷体练基本上就可以了。也不太需要买太多字帖。有一些字就算放到白纸上好看,放到扫描仪上面扫出来也不一定好看。
讲一个例子,我在上初中的时候,有一个美术老师是书法艺术家,写的字非常奇怪,他写的不是方块字而是扇形的字,很有自己的艺术风格。她就在学校里面狂推自己的字体,希望让更多学生去学习她的书法风格。有个班主任就非常的有病,强迫他们班所有的学生都写这个字,最后的结果是他们班的学生写的字都好奇怪。真的没有必要,浪费时间浪费精力。
所以在这里给出一个结论,对于在校学生来讲,如果单纯为了考试能拿高分而练字:碳素笔、新闻纸、印刷体。得 100、110 分左右基本没有问题。对于很多人来讲,语文 100 分以上已经非常够用了。真的想练字的话还是推荐去写毛笔字。硬笔书法这个事情,是庞中华近几十年来带起来的,早些年「硬笔书法」这个概念是不存在的。所以如果真的去追寻哪个「正统」,不如去买几根毛笔玩一玩。然后你过年的时候人家门上都写的「福」都是打印的,你还能自己写一个,不也挺好。但是这些东西对应试教育来讲作用不是很大,「书法艺术」和「应试书法」在门类上属于两个概念。考试的时候唯一需要记住的是淡定、冷静、一笔一划慢慢写。如果整篇卷面都是规整的「蝇头小楷」通常分数不会特别差。如果考试的时候情绪慌了,开始狂草了,那基本就完蛋了。
其实这件事情也比较好理解,六月份三伏天,一大堆老师们在机房里边,可能空调风扇还不太好使,充满着汗臭味。电脑屏幕上一篇、一篇、一篇、一篇、一篇、一篇的烂字作文,然后啪突然出来一篇字还写得不错的文章,印象分就会很高。通常阅卷的时候都会先给一个大致的印象分然后再来上修和下修分数。字写的好不好看很影响这个印象分,结果就是在很大程度上决定了这一篇文章最后能拿多少分,或者你整个语文成绩是多少。
淡定冷静,慢慢写写,印刷体,一点点练,最后都会有好结果的。
接下来这个话题就会变得比较奥妙了,思考能力是怎么建立起来的呢?在这里我给出来的答案是:「哲♂学」。
Deep♂Dark♂Fantasy?Nah,不是这种东西!哲学是什么?罗素对它定义是这样的:
哲学,就我对这个词的理解来说,乃是某种介乎神学与科学之间的东西。它和神学一样,包含着人类对于那些迄今仍为科学知识所不能肯定之事物的思考;但它又像科学一样,是诉之于人类的理性而不是诉之于权威的,不论是传统的权威还是启示的权威。一切确切的知识都属于科学;一切涉及超乎确切知识之外的教条都属于神学。但介乎神学与科学之间还有一片受到双方攻击的无人之域,這片无人之域就是哲学。
你对「哲学」这个概念的理解可能和上面这句话很像:
「三小叮当——」
高大上又玄学,深奥又渺茫,完全不知道那是啥玩意反正跟我没啥关系。
但其实「哲学」这个概念实际上还是比较贴近生活的,对于普罗大众来讲,「哲学」这一概念比较接近于「如何思考」:就是不断的题不断地问「为什么」和「是什么」。 不断的问问题,这个时候你可能会觉得困惑:我们要问什么样的问题呢?在这里我可以给你提供一个小型的框架:「了解自己」、「了解身边的人」、「了解更广泛的世界」。
「探索自我、悦纳自我」实际上是一个非常宏大的话题,但我们可以从一些非常简单的点入手:了解自己的情绪情感、了解自己的认知过程、了解自己的个人喜好,让「自我」的概念更加立体。
我们先来看最简单的个人喜好:你喜欢什么?你不喜欢什么?
这个时候很多人可能就会说「我喜欢打游戏!」,之后我来给你表演一下,这个社会刻板印象怎么建立起来的:
网瘾!只要打游戏就一定网瘾,然后就电子海洛因是吧。跟网瘾有关的一大堆破事儿就起来了,什么谈恋爱啊、翘课啊共称什么校园三大罪恶是吧。什么不好好学习,天天就知道翻墙逃学打游戏,然后来一堆警告处分,其实搞这些都无助于解决问题,更多的只是用更多的道德枷锁压抑学生的欲望和本能,压抑久了是会炸掉的。
一般情况下,「游戏成瘾」不停一把一把开黑的情况,一般潜藏的内在逻辑是学生在校园环境当中缺乏「成就感」、缺乏「认同感」,甚至是缺乏「安全感」。难以自控的不停开黑,背后的意义很有可能是学生需要一种快速获得积极反馈的一个一种方式。只有通过这种病态式地汲取心理资源的方式,他才能够维持自己的日常生活。把那些外在原因掐了之后,内生出来的焦虑就会赤裸的暴露出来,事情就会变得更加难办。
游戏其实是个好东西,我不知道为什么政策宣传会把「电子游戏」比作「电子海洛因」,并且污名化整个产业和这个产业的终端受众——玩家。对于那种商业攻击性特别强的「商业网游」来讲,施加适当的限制当然没有问题,但是如果把它泛化到整个「游戏产业」,这个就很明显是错误的。
事实上有很多非常优秀的游戏作品可以加深我们对于这个世界的理解:
从这张图你基本上就能看出我的游戏品味是啥样的了(肝佬),一个 P5S 100 小时就出去了,一个八方旅人可能 100 小时又出去了,甚至最终 boss 还没打。有很非常棒的游戏都能给玩家提供一个理解这个世界的切角,它可以帮助我们更好的理解这个社会的运转机制、反思和探索周遭的生活。这些切角就是一个所谓的「抓手」(哎呀,互联网黑话就来了)。
从这个角度来看游戏也可以是是一个非常好的媒介。以游戏产业为例,我们有很多优秀的游戏媒体和研究者,他们真的会把「游戏」当成一个学问去研究和报道,他们向社会大众传播相当丰富的知识和见解。
有一本书我觉得非常好,叫《游戏改变世界》,他介绍了「游戏化」这个概念,通过游戏化的方式可以重新塑造各种各样的行业,比如说教育游戏化,也可以重新塑造我们的生活。
实际上「游戏」和很多概念都能勾连在一起,比如宗教、历史、哲学、心理学、艺术、文化、教育、设计。非常著名的故事,育碧的「刺客信条」和「历史」、「艺术」的关联的就非常好,人家做的真的是非常考究,在玩这些游戏的时候很多知识和文化都能潜移默化的学习到。
很多时候整个教育系统过度抵制游戏,导致我们难以从中挖掘出更多的价值,最后整个系统就停留在了「玩」和「体验」这个层次上。当然我们不能说「体验」不好,就像学校寒暑假留作业做「科学研究」,有学生把一个鸡蛋扔在醋里边,鸡蛋壳变软了,那很好玩,当然很好。但是如果只停留在这里的话就会变得非常可惜。
这些「可惜」的核心是:我们没有充分利用过往的那些「体验」,向其进行「提问」的动作,没有这个动作也就没有深入向下挖掘的可能性。深入挖掘一件事物的方式有很多,玩「维基百科大探险」也可以是一种方法,但是在这里我提出一个更加容易形成「积累」的方式:针对我们感兴趣的话题写「综述」。
找一个感兴趣的话题,想尽办法收集各种自己对这个话题产生「好奇」的点,网上有很多、很多的资料,有些是书,有些是视频,有些只是一条简短的「推特」,我们可以把这些林林总总的信息全都剪碎,重新组织成你自己喜欢的架构和理解,每个人对一个事物的理解和态度都是独一无二的,探索这个「架构」的过程就是理解这个世界、形成丰富人生阅历的过程。一旦形成了对于周遭事物的理解,关于「自我」的概念就会立体,我们通过这些「探索」真正知道了「我喜欢这个东西是什么」、「我为什么喜欢这些东西」、「我喜欢他究竟喜欢在哪里」了,这样我们就完成了一次「自我探索」。
当代社会从「如何套取富婆欢心」到「母猪的产后护理」。甚至到如何鉴赏 A 片、怎么样去嫖娼,这些林林总总的事情都是有学问的。
有一些事情看起来的确是非常的荒谬,这是一个叫「中指通」的台湾人,他专门做 A 片鉴赏,因为「散播欢乐散播爱」而为人津津乐道。因为有很丰富的「风俗经验」所以甚至开了课教大家怎么科学的去日本嫖妓。这个时候你可能会觉得,「世风日下、道德沦丧,应当抵制!」,但人性是非常真实的,这套课程一上线就卖爆了。如果我们用一个传统的道德观念去套它,就会觉得这件事情很难理解。但它的确也是一门生意,这个人因为这套课程赚翻嘞!大家可能会出于种种目的购买这套课,比如说好奇,亦或者是寻求刺激。这些人不一定真的会去日本亲身体验「性产业」。
这个时候你可能会问「A 片有什么求知欲」,但 A 片里面也有很多知识啊,和生物学、生理构造有关的,和摄像摄影有关的,和道德伦理有关的,这些都是都都是知识呀。很明显这里核心的重点是我们如何从这些外在的表象当中挖掘出深入的内容。围绕着我们当代生活所形成的一切,一定都会有其内部的门门道道,通过去挖掘这些知识,我们就会会形成一个对于世界的理解,这些东西可以拯救那些贫瘠的心灵。
我们平时在写作文的时候常常会遇到这样的问题:写不出来呀,什么都写不出来,就一直在空耗着,只能拉出一大堆的大道理。这其中真正的核心原因其实是考生没有形成对这个世界的深入理解。实际上写「综述」就是一个非常好的去深入挖掘的过程,这就是一种对思维的磨练和对自我的探索。
大道理谁都懂嘛,但是大道理不能说服任何人,因为道理是一个结果,道理不是一个过程,只有经历那个过程的时候,最后那个道理才是有价值的,才能凝练成智慧,这个研究就是探索的这个过程。
所以说看一个电影然后写那个「观后感」啊,不会让你的能力变强。语文老师逼着学生妹提案写练笔,那个会带来非常微量的能力提升,但其实也没有办法让一个学生的写作能力提升很多。
感恩操、给父母洗脚、什么给家里写一封信,那个不会让你更爱你的父母那唱感恩的心,爱的人还是爱,不爱的人还是不爱。不是每一个人都爱他的父母。传统的孝道伦理只会让那些身处不幸家庭的人更加迷茫。就你爱的人,还是爱不爱的人还是不爱你,不喜欢的东西就是没有感悟,就是写不出来那个东西就是写不出来,他就应该写不出来,写的出来才怪了呀。
相同的道理,逼着学生看那些他们根本不喜欢的书,还要做读书笔记,还要做读书月之类的活动,校长在「国旗下讲话」的时候夸夸其谈地说「多读书、读好书」,都是没什么用的,没有动机,没有探求的欲望,读书就只是个形式,那个是没有什么用处的。
接下来我们再来看看和情绪情感情有关的话题。事实上亚洲文化并不鼓励个体表达自己的情绪情感,在你尝试对这些内生的情感进行表达的时候,通常都会受到某种「惩罚」,因此会形成一种「压抑」的氛围。事实上我们的大多数「鲜明的记忆」都是以某种「情绪」为核心的,但是我们并不清楚那些记忆对自己来讲究竟意味着什么,这组织我们更加深入的了解自己。我的咨询师推荐我使用「情绪轮」这样的一个工具来进行自我探索,这种技术非常的有趣,我也推荐你试试:
在面对一件情绪激烈的事情时,我们可以通过这个轮盘明确自己在经历的「情绪」究竟是什么,进而更好的理解自己和表达自己,这是了解自己情绪情感的一个很好的起点。
如果我问你什么是愤怒? 生气嘛,对吧!然后紧接着可能就冒出来了一些「励志小语」、「名人名言」、「心灵鸡汤」。什么木头上钉了几根钉子,钉子拔下来了,孔还留在那里,你造成的伤害怎么怎么样?你通过这一个一个的心灵鸡汤产那个悟出来了什么什么人生大道理,从此之后你就不愤怒了吗?
不会,你只会更迷茫,你会更自责,因为你没有符合这个世界上面的纲常伦理。其实「愤怒」不是坏事,失控的愤怒才是坏事,我们要做的时它变得可控的。那些励志小语、那些大道理都是一个「抽象出来的荒谬玩意」:
有没有觉得这玩意很荒谬?的确,这件事情它就是这么荒谬。那个小寓言,那些名人名言,那些励志话语和这个东西,和这个看起来非常欠揍的小视频在本质上没有任何区别,只是这个看起来更加的 Drama 一些。哪怕看一千个、看一万个,人对自己的理解也不会有任何实质的变化,只是会增加越来越多的道德枷锁让人越来越压抑罢了。
更有意义的练习是反思每一个情绪对应的当下的主观感受究竟是怎样的。比如说「愤怒」,我们在愤怒的时候意识是狭窄的,你会觉得很上头你甚至脸都是麻的,你的心跳在变快,你的全身都很热,我们不断的回忆、咀嚼和理解这些情绪感受的过程就是「自我探索」的过程。
我们还可以去反思自己为什么会愤怒。有的读者可能会非常简单的回答这个问题:「因为他惹到我了呀」。那不是「我」为什么会愤怒的原因,他是外在性的归因不是内生性的探索。在进行和「我」有关的探索时,起点一定自己的「生命经验」,是因为这件事情让自己回忆起了「不好的事情」了吗?还是让你觉得自己受到了不公平的对待?
当我们进行这些探索的时候一定会遇到一些「结」和一些「困惑」,那个困惑的点就是能够把认知「展开」的一个点。
这个过程有一个非常高大上的名字,叫做「内观」。内观的过程实际上就是对自己情绪情感理解逐渐丰富的过程,只有对自己的认知是丰满的、立体的时候,我们才能够以自己的生命脉络为模板去理解他人,形成共情,这是人类社会化过程当中非常重要的一环。
那些性格看起来很怪、「很不合群」、很难相处、社会性很差的人通常对自己的情绪情感理解也是单薄的。有的家长可能会抱怨孩子为什么不合群,会说教:「你要合群呀!」。只是去讲个大道理,其实一点用都没有啊,重要的是向下挖,建立一个和人有关的更加立体的形象才是有用的。
有了这个基础模型,个体才能继续理解人与他人之间的关系,人与社会之间的关系。这个过程实际上就是「公民教育」的核心概念。「公民教育」可以帮助我们每一个人形成自己的一个观点,对于这个世界的理解,会形成一个价值体系,会形成一个前进的方向。每个人靠着自我探索形成的那一个方向,所施加的一点点力,最终会形成一个庞大的洪流,把这个社会引向一个更好的方向上去。
接下来我们要回答最后的问题了,我们通过公民教育的系统形成了一个对于自己的理解,通过探索字节的好恶也形成了一个完整的价值体系,这个价值体系最后决定我们每个人究竟会去向何方,达成什么样的个人成就。
价值体系这个词是很有趣的,它牵扯到了「价值观」这样的一个概念。价值观这个故弄玄虚的词翻译成大白话的话就是:「究竟什么对自己来说才是重要的」。再把它说的直白一点:「我们理想的生活面貌是什么样的」?
我们高一的班主任曾经开过一次班会,然跟我们去讨论自己未来的理想,和未来生活的面貌。我们班的同学做出的回答都非常有想象力:「我想要一个几千平米的大 house」、「我想去造火箭」、「我想克隆一个地球」。但这些实际上不是「对美好生活的想象」,这个东西叫做「意淫」。
在我所归纳出的整个框架下,「对美好生活的一个想像」应该是一个切实可行的目标,这样的一个目标才是「真实存在」的。它建筑在我们对于生活的理解之上,这种生活不一定是那种波澜壮阔的模样,也有可能非常朴实平庸。
我高中所念的那个班级是一个中段班,什么样的学生都有,大家踏入社会之后,也进入了形形色色的产业。我们高中的数学课代表成绩一般,大学上了一半不念了,养猪去了,人家过得也挺乐呵的。我们班高中的学委,特别可爱的一个小胖子,问他啥他都会,特别的爱吃,每次我打开饭盒的时候,他都会从里面夹两块肉出去,我饭盒里面的什么菜都是他最爱吃的菜,真的很好玩。因为他特别喜欢吃的个性,就去学食品科学了,现在是一个博士,也很厉害。我们班班长学习成绩不好,中后段的学生,后来人家开飞机去了,赚的也挺多的呀。
所以究竟什么样的成绩是够用的,我们究竟想要的是什么?那个想象越切实可行,越具象化,往往一个考生的动力就会越强。
前一段时间我弟弟在考教师职业资格证,他学体育的想当体育老师,这个证他怎么考都考不下来。我妈就问我说怎么办,我的回答相当的冷血:「你管他干嘛,没考下来就是不想考,那不是他理想的生活呀。教师资格证那种水平的东西,真的想考自然是能考到的」。
我经常会这样比喻,我们的生活实际上就是一个巨大的牌局。在成年之前,我们的学校、我们的家庭会给我们各种各样的手牌。它们可能是一个不幸的家庭、可能是尚且富裕的财富、甚至你很会做菜「厨艺精湛」、你有强壮的身体。我们每个人都有一大把各式各样的牌。18 岁生日那天,钟声响起,「你今年18岁了,所有的牌都要你自己打了」,然后就是 Fly Bitch!自己扑腾去吧,没人为你负责啦!
对!是的!剩下的牌都要我们自己去打啦!没有人要管你啦!法理上来讲,我们已经要为自己负责了,一个个高中生小碧池们都要自己飞啦!
飞行的目标是哪里?就是那个理想生活的模样。
怎么样形成理想生活的模样?这个过程实际上就是「内观」。
支撑内观背后的体系是什么?是公民教育。
怎么样发现自己理想的生活?观察、归纳和总结的能力。
怎么样去达成这个理想的生活?他就是一个非常非常长程的一个逻辑推演。
我先有了一些牌,和一些机遇,它们能搓成什么? 接下来我获得了新的牌,再和周遭所遇到的事物一起,搓成新的手牌。这实际上就是一个不断不断推演、去创造条件创造新可能的过程,它的本质就是一道更为庞大的数学大题。
所以学科教育有它的意义。经常有人去抱怨说应试教育怎么样、学校教育怎样怎样。但实际上我们所经历的教育体系是非常完整和科学的,它在潜移默化的培养每一个「合格公民」独立生活能力的每个面向。
实际上整个教育系统已经很努力了,我之前也常抱怨,但是直到我读研了之后,我去了北师大,我看到协同创新教育创新中心那些老师,那些学生,哇,一个一个都黑眼圈,工作压力超大。他们真的已经很努力去让这个事情变的更好,现在的教育体系已经是能拿出来的最好的东西了。
我们的教育系统做一件事情做得非常好,就是在面对非常复杂的生活之前时候,帮我们做了一个「难度降级」,降级成学科教育。相对于庞大的生活议题,学科教育是更加纯粹的,整个教育经历最终的目标都是让个体能够一个非常复杂的环境下,通过「归纳整理」、「逻辑推演」去达成理想生活的模样。
那个理想生活是什么?就是最终的终极价值体系。
这个系统始于我们出生,终于我们死亡。从我们出生那一刻起,我们和父母、和周遭环境之间的互动,我们的父母能不能满足我们最原始的需求和欲望,从这里开始,我们就在开始构建社会支持系统。通过不断的学习,不断的生活,最终发现并开始探索和追求终极价值。这个终极价值有没有达成,其外在表现就是一个人临终临终之后有没有悔恨,有没有遗憾。
这一个一个的这种金字塔,就是一个个正在形成,和已经存在的终极价值。这些终极价值最后决定了一个社会前进的方向。这,个就是我们的当代社会。
我常讲道理谁都懂,但是道理不能说服这个任何人。
我当然可以给你讲角色采择理论是什么、价值观的构成是什么、依恋理论是什么、弗洛伊德怎么淦他娘,我也可以讲社会性的发展是什么、认知神经科学是什么、注意力是什么、那些科学怪人把被试推到磁共振里面狂扫人的脑子,然后得出了一些根本没有几个人能看得懂的结论。我也可以讲课堂三维目标,什么知识与技能,过程与方法,情感态度价值观。那些常出现在教参里面的话术,那些「通俗」的理念,什么跳一跳摘桃子,每一个老师的教案里面都有写呀,写了有什么用啊,你们班的小猴子不会跳,在树下都要饿死了呀。
道理谁都懂,但是道理不能说服这个任何人。因为道理是空洞的结果,探索这些道理的过程才是智慧。我们需要的不是道理,我们需要的是智慧。
智慧是最重要的,所以最后我想用这句话,为今天的风分享做一个结尾:不要停止思考。
通过这些思考,我们才能构建出一个更好的自己、才能构建一个更加美好的社会。
这个就是今天我想向大家分享的所有的内容,非常感谢你能看完这近三万字的文字作品,希望这个作品能对你有所帮助。我是螺丝,祝您平安喜乐,顺遂安康。
这种单纯功能层面上的对比会让我们对产品价值的评价变得复杂。在这里我想提供一个更加简单的,假设这样一个场景:如果一切的聊天软件都是付费的,Telegram 也是付费的。你必须得花钱才能注册账号在上面聊天的话,你愿意为他付多少钱?而每个其他的聊天平台你又会愿意为他付多少钱呢?在这里开放读者问答,你可以为你所听说过的,或者正在使用的每一个社交软件开出一份心理价格,比如 Facebook, Twitter, Mastodon, Matrix, Telegram, 微信, 微博, 知乎等每一个你使用过的平台都可以。
我并不寻求每一名读者都能理解这里我提出的想法,毕竟每个人的价值观和生命经历都是不同的。这里只提出自己的观点,并希望能够让一部分读者找到一种熟悉的感觉。
早期诞生于互联网当中的产品可以说是充满 Unix 哲学和理想主义的:它们开放、自由,只做一件事情且在寻求商业利益这件事情上保持了相当程度的克制。
Twitter 就是一个非常好的例子,自产品诞生之日起他就保持了相当程度的「纯粹性」,你在 Twitter 上只能做一件事情:发短内容。不能编辑,内容字数受到了严格的限制。虽然有一些外围的功能但是都是围绕着段内容分享这一件事情展开的,没有走的非常远。在平衡商业利益与用户体验这件事情上 Twitter 也拿捏的很「有节操」。通过一定手段限制第三方客户端,以确保第一方客户端能够正常展示广告;试探性的加入了基于推荐算法的信息流推荐,但是因为用户的反感而撤下;尝试引入供会员使用的长内容、编辑功能等但一样因为社区争议迟迟没有上线。
之前我们讲的 Discord 也是可以拿来讲讲,他和 Twitter 不一样的是它没有在互联网早期就占据一个生态位,没有那么多傻屌股东被套牢,以至于可以毫不顾虑商业利益玩清高,所以必须得想办法搞钱。但相似的是它只安于一隅,专心做好游戏直播这个垂直领域的社交。从付费体系上来看其实能嗅到很浓的铜臭味,但是通过种种用户付费的体系它成功的维持了一个高度纯净的产品体验,没有广告,没有信息流,只有聊天和直播。
再比如像 Reddit,排序方法简单质朴,网页端毫无阉割,你想装 APP 你就装,不想装就拿网页看,看完就走毫不拖泥带水。
早些年的老知乎也是这样的,通过邀请制来严格控制社群成员以维护严谨的社区氛围和内容质量。整个产品的设计层面也是非常出类拔萃的,遵照各个平台的设计规范,同时最大程度的展现出了自己品牌的个性。无论是知乎本身还是创作者都把重心放在有意义的内容生产上。
时至今日相当多的人对这样的产品设计依然抱有相当程度的青睐,产品本身知道自己在做什么,用户也明确的知道这个产品能做什么事情。在相当符合直觉的界面当中流畅的完成任务,比如订餐、记录灵感和生活、购物、观看视频,事情做完软件关掉,仿佛它从来没存在过一样。每一个软件都是纯粹的工具,只做好一件事,就像家里的扳手和螺丝刀一样。
但实际上这种怀抱「善意」的产品已经很少了,这里面其实涉及到了很多大环境的变化。互联网最初期的那些「开荒」产品很多都带有「用爱发电」和「探索」的性质,就跟你新建的那一千零二十四个没维护的项目一样,在没有压力的情况下,设计出「有恶意」的产品是不必要的。
随着整个互联网生态开始成长无论已有的产品还是新产品都会遇到很大的压力:有手机可用的用户一共就那么多,每个用户的商业价值基本上是恒定的,总用户数乘用户的平均价值就是整个互联网产品市场的大小了。经济成长的速度就是那个样子的,你不可能让奇迹突然发生,人口也是那个样子的,没有媚药可以让人突然生出来一百个孩子,而且生下来立刻就会用手机。烙饼的速度赶不上吃饼的嘴,有限的存量市场遇上不断出现的新产品必然会出现这样的情况:用户在别的产品上多付出一分,在你的产品上就会少付出一分。
另外一方面,用户是吝啬的,他们不爱付钱,也对产品体验「被剥夺」相当敏感。如果一个产品自打一开始就是免费的(大多数产品打开市场的唯一方法),忽然出现一些要付费的功能,特别是已经免费的功能变成付费的了。无论理由多么合理用户的反应都会非常强烈。「你忘记初心啦——」「开始洽烂钱啦——」云云的,你肯定听过不少。
这就是现代互联网产品面临的困境:
这就是为什么现在市场上主流的产品都开始走卖用户注意力的生意,整个商业模式非常简单:产品本身是免费的,企业只要想办法把你在这个产品当中消耗的时间变成钱就好了。我把这种商业模式称作「卖脑浆」。
为了达成这个目的,很主流和清晰的思路其实很清晰:
只要这两件事情达成了一个,就可以开始辅以各种手段来撕扯用户的注意力了,这个东西我称之为注意力陷阱,也有一个现有的名词叫做 Attraction Hole:
这就是这些当今你在使用的产品充满攻击性的原因和方法,这个时代的电子海洛因其实并不是电子游戏,而是一个又一个充满「狼性」的平台和企业。
无论是 Facebook, Instagram, 微信、微博这样的社交平台,还是小米、华为、Oppo 这样的手机厂商,甚至诸如长虹这样的传统硬件厂商都难逃此列,甚至微博还把「全方位影响用户心智」这件事情摆在了自家广告的宣传语上。这就是我们面对的赛博现实,我们都觉得脑后插管的世界离自己很远,但是那根看不见的管子其实已经悄然的插进了很多人的脑子里,一次又一次的影响着你的判断和决策。
市面上呈列的每一个廉价的产品,背后都有一笔庞大的隐性费用等待着你去支出:你买的手机在叮叮当当的弹出各种各样的通知广告,操作系统层面的每一个角落都尽可能安插各式各样的推荐;你买的国产电视大多数都有不可跳过的开机广告、屏保广告、系统广告,厂家非常大方的告诉你这东西停不掉删不了;你刷的知乎、朋友圈被塞进了各种各样的带货,充斥着低质量的内容和情绪输出,尽一切可能调动起你的情绪,让你产生心理依赖。
一个非常有趣的观察,我们可以比较一下市面上的产品和服务:
当然,你可以说小米手机刷波兰版,电视可以拆机换主板,但在我看来这不是解决问题的方法,想要抵制一个品牌,一个品牌甚至是一种商业分为,最好的办法不是妥协,而是用脚投票:去使用那些尊重你的产品,尽一切可能少用或者不用那些不尊重你的产品。唯有让那些不安分的邪恶彻底得不到关注,才能杀死他们。
Telegram 是一款正直的产品。
Telegram 是一个做了快十年的产品,这十年里它只做一件事情:聊天。他完全不去尝试用一些邪门歪道的方式去从用户的手里榨取认知资源,也不尝试做任何形式的流量转化,只是想尽办法想办法把聊天这个事情做好。
虽然限于这种高度克制的产品哲学,Telegram 没能占据一个有利的生态位,无法成为像 Facebook 或者 Twitter 这样顶级的流量入口,但是除此以外的一切对产品发展的有利因素它都占尽了:**创始人想要做好一个聊天软件的意志,还有它那深不见底的口袋。**在我看来,在这十年间向 Telegram 这个产品砸的现金,才是做好一个产品背后的真实成本。
这就引申到了一个我非常想讨论的问题:做一款正直的好产品究竟有多难?成本有多高?
很多的互联网原住民,或者说很早的这一代互联网人,他们对于互联网产品依然抱有种种幻想,他们经历过那段被尊重的时光,接触过产品哲学和产品伦理方面的知识。他们依然想要尝试做出那样的一款产品,但不是中间跑掉了,就是死掉了。比如李如一最开始搞的字节设和 IPN;再比如早些年的知乎,有非常典型的早期互联网产品的影子,但是最后因为资本压力也变成了现在我们看到的这个样子;再比如即刻、轻芒这些不是死了就是变形了的产品。 我非常想再把这些东西拿出来鞭一次,但是限于篇幅,在这里我就不再表演一次那个了。
资本和市场寻求增长,市场寻求快速变化。这些诉求在当下的大环境中都需要投入难以估量的资源才能得到实现。然而大多数人都是平庸的,无论是心理资源也好,财力也好,时间也好,都没富裕到可以在当今这个大环境下肆无忌惮的烧。但很不巧的是,创业者自己和用户我们必须得献祭一个,产品才能运转得下去。
所以在我真正开始靠这一行吃饭的时候,就已经放弃了这些如梦似幻的泡影拥抱现实。你可能在各种场合都听到过我讲的可怕论述:如果某个产品的生杀大权掌握在手里,那我绝对会把它做得无比的脏,会比你想象当中的脏,会比暴雪的手法还脏。因为产品要要活下去就必须去搞钱,谁把钱搞到了谁才是英雄。只有把钱搞到了,所有的事情才可以继续的往下滚,钱才能生出来钱。
这也是为什么我常常幻想着自己能够有财富自由的一天。如果我财富自由了,就可以招一大堆人陪我玩创业游戏了。现在没钱的我只能陪别人玩创业游戏¯\_(ツ)_/¯。
每个人的心目中都有一个属于自己的 Telegram,但对于大多数人来讲,我们心中的 Telegram 可能都不会成为现实,这件事情真的很残忍。
所以我会呼吁每一位读者用脚投票,用钱包投票,支持每一个你喜欢的创作者和产品。无论是一个 Podcast 的会员也好、优质节目的募资也好、一款独立游戏也好。你的每一个选择,投出去的每一分钱,都是在为一个不一样的未来投票。改变未来的并不需要某一个伟人,每一个平凡的人都有可能把这个世界推向不一样的方向。
以上就是今天的一些浅薄想法,莉莉爱你 ♥~
]]>这篇文章会着重笔墨在发现问题、和解决问题的过程,以及我们是如何通过架构设计的方式来重新组织业务需求,并作出合理抽象的,对我个人来讲这是一段生命历程的记录;对各位读者来讲,我也希望它能起到一些启发性的作用。
史学的部分我想延着时间线来讲一些故事。
整个项目启动于三年前,那个时候所有人对于「交互视频」这个东西究竟是什么东西还没有定论,所以整个项目都处于一种实验性的状态。当时我们「交互视频」这个东西有一个大概的共识:
这个时候工程的样子差不多是这样的,所有的 Code 都在一个仓库里,包括交互课程,交互程序只是简单的从一个目录中 import
进来。
整个团队延着这个方向走了很长时间。燃鹅第一次回旋镖打脸事件很快就出现了,在新的产品经理加入团队之后,提出了一个需求,希望交互和视频是无缝衔接的。这就意味着「交互」的部分不能用简单的模态框弹出来处理,必须得跟画面对齐。为了把某个东西直接缩放,最直觉的想法肯定是用 CSS Transform 直接把画面缩放到跟视频一样大,然后简单调整一下坐标就好啦!但事情并不是这么简单。
为了追求「极致的流畅体验」,整个交互视频是用 Canvas 直接画的,它渲染机制和一般的 DOM 元素的渲染并不一样。如果你用 CSS Transform 缩放了一个按钮,那这个按钮依然可以被正常点击,坐标也会被正常映射和计算;但是 Canvas 元素被 Transform 之后事件坐标和响应热区不会被映射,这意味着开发者可能要徒手根据 CSS 属性重新计算事件坐标。这个时候团队当中出现了两种技术方案:
iFrame
里,缩放 iFrame
,这样浏览器就能对鼠标事件进行正确处理了。这两个方案本身都有相当大的技术复杂度的,比如,如果你想要用前者:
如果想要使用 iFrame
的方案,也会带来一些比较烦人的问题:
iFrame
里面的网页会被视作一个全新的页面,这会导致自动播放权限不能继承,这样我们就很难做到让交互程序刚进去的时候就自动播放一段有声内容,来延续视频分镜产生一种「无缝」感;iFrame
内部和外部的通信并不像 React 父子组件通信那么简单,所有的事件都要通过 postMessage
来传递,同时 iFrame
外部对内部的状态是完全没有感知的,换言之你并没有办法知道里面的程序有没有成功启动,或者宕掉了。但是经过漫长的讨论和权衡后,我们还是选择了 iFrame
的方案,事实上它也的确带来了很多额外的好处,这一点我们可以在后面接着讲。
这个时候整个工程的架构差不多是这样的:
事实上这可能是我在团队当中做的数个得罪人的事情当中,最招人厌恶的一个。在项目初期,我们所使用的 Canvas 上的渲染引擎是「自研」的,团队当中的某个成员自己设计了一个绘制管理库,并且以半强制的方式把这套东西推了下去。但是这套东西有很多的问题:
这个自研库的维护者曾经讲过这样的一句话:「我曾经试着用 Canvas 实现三维渲染(Context 2D API),但是做到立面剔除之后就发现性能不够就放弃了,所以三维这块我们用的是 Three.js」。从这句话当中我大概意识到了一件事情:他并没有足够的图形学专业素养和工程能力来维护这个东西,如果继续发展下去只会拖满整个团队的开发速度。所以我们约了一个会,所有的开发成员坐在一起讨论了维护这个库的必要性。
Fun fact: 这个引擎最开始甚至是用 setInterval 来控制画面重绘的,而非
requestAnimationFrame
,当时文档当中赫然写着如果你把 interval 调的足够小,那刷新率就会非常高,体验也会更为丝滑,which is pretty weird。
支持方的想法是「我们要有自己的技术积累,不能什么东西都用现成的,这个东西如果我们自己做了还可以开源了让别人用,这样我们可以主导开发而不是被动的受人控制」。而我驳斥的理由也很简单,作为一个小型的初创团队搞这种事情不会有任何的短期收益,只会拖慢开发进度,这件事情是非常致命的。而且团队当中并没有第二个成员参与维护这个库,如此重要的基建完全压在一个人身上,对于商业公司来讲可以说是非常危险的一件事情。
最终整个库的开发计划被搁置,团队转向了 PIXI + Three + D3.js 的技术栈。
后来,机器学习那个项目就发布了。就,发布了。
到下一个项目发布开发启动的空档,我们有机会喘一口气来整理一下目前工程当中的问题。在我看来,当时团队当中最大的问题就是造轮子:事实上除了前文所述的渲染库之外,整个团队还有各式各样的轮子和独特的技术品味,几乎每一个成员都在用一套自己造的轮子来管理渲染过程,哪怕所有人都在用 PIXI,每个人还是各自封装了一套自己的画面绘制工具库。这是一个非常严重的问题:
所以我们专门开了一个会进行商讨,把所有的轮子拉出来做竞标,目的是只留一个活的剩下的全部淘汰掉。我的立论主张也很简单:
我一直觉得,商业软件的业务开发,更重要的是研究怎么把工程合理切割,让每一层都能相对纯粹的表达「做什么」,尽量把「怎么做」隐藏好,一层一层的叠成一个作品,就是好的商业开发作品,也是老调重弹了。
后来我搞的那套架构变成了交互开发的标准工具库,同时我们也为交互的「沙盒模型」进行了调整。
iFrame
可以说是「微前端」的「鼻祖」了,它有一些非常优质的特性:
about:blank
,所有的内存泄漏、忘记停掉的 RAF 都会一扫而光;iFrame
进行沙盒化之后可以只暴露必要的 API 封装,阻止不受控制的代码在主站上运行;但是在之前的工程当中这些特性并没有被良好的利用过,iFrame
里面是一个 React,交互程序的切换是用 React Router 来做的,这就是 React 在整个交互程序当中的全部用途了,显然这是没有必要的,而且把交互程序做成 SAP 只会让内存泄露问题蔓延到下一个交互里,所以我们调整了工程的组织和打包方式:每一个「交互点」都是独立的 HTML,每个视频间的交互任务完成,整个 HTML 就会被杀死,连带着所有常驻于内存当中的资源也全部清除,这在很大程度上缓解了长久以来的内存使用问题。
这个时候架构被切掉了一层:
事实上尽管做了各式各样的「微优化」,也不能拯救项目整体很糊的样子。直到整个项目生命周期末端,我们的技术面依旧非常惨,惨到需要加班去维护。因为难以承担如此多的「历史包袱」,我们只得招募新的团队成员,把交互工程的播放器彻底炸掉重新实现。
哦,对了,Steam 上的客户端也是那段时间我糊堆出来的产物,本来以为很简单的活,结果因为各种业务逻辑全都耦合在一起纠缠不清,造就了一副屎包屎的壮丽图景。
多了一层 Electron 之后整个东西就变成这个样子啦!
在重新实现工程的时候,首先要做的当然是整理整个业务的所有需求,我们必须得把所有的功能分门别类的整理到不同的模块当中。在接下来的介绍当中,我会逐个列出当时产品上面的问题,并给出我们对这个问题的解答。
先来看一下现代化过后的播放器架构:
每一个模块的设计都是为了解决具体的工程或体验问题。比如说,老板经常抱怨的,这东西为什么经常黑屏?为啥这么卡?这个黑屏和卡其实要拆成好几个部分来看,最主要的原因其实是生命周期、通信机制和资源管理机制实现的有问题。
我们先来看生命周期上的问题:
这一部分问题的改造方案是这样的:
另外交互的生命周期也被统一设计的 API 给藏起来了,个人一直非常反对在一个完全被托管的状态下由开发者自己手动控制生命周期这种底层的玩意。所以在一开始的时候我非常激进的直接在框架层面把手动报告生命周期这件事情给屏蔽了,理由也很简单:
所以长久以来我们的那套交互程序的生命周期都是不完整的,它只考虑了框架层面的资源预热而没有考虑交互程序自己管理的资源预载(比如字体、贴图、音频),基本上就是如果做不好不如不做等更好的方案出来了之后再说。
后来这块的 API 被好好设计了一下:
通过这种方法成功的把「手动报告声明周期」这种非常危险的操作给藏了起来,达到了隐藏实现细节的目的。
预载机制的问题主要体现在这几个方面:
这一部分的优化相对来讲偏门一些:
iFrame
载入之前,甚至整个播放器刚刚加载完的时候,资源就已经开始缓存到 idb
,Cache API 或者浏览器缓存里了;idb
和 Cache API 的缓存很难透进去,所以我们通过 Service Worker 把交互内部所有的资源预载请求全都拦截交由 iFrame
外部处理,如果是手机 App 的话则有一个更加可靠的 Resource Loader Native Backend 来进行缓存处理;做这块当时也是想给网站加上「课程离线缓存」的功能,可惜因为时间很紧加上后面项目停掉了,所以这块只做了一半,没全做完。后来 YouTube 上出现了类似的功能,看到的时候我的心情还蛮失落的。
这一部分机制的设计其实是为了统合一些杂七杂八的问题,比如:
为了解决这块杂乱的需求,我们把旧的资源管理系统整个砍掉重新做了一遍,大致的运转逻辑是这样的:
交互程序和主站的通信机制一直都是有问题的,如果你打开旧项目,同时开两个 Tab 就会发现它们的通信会乱掉。造成这个问题的原因很简单,整个通信流程的运行方式类似于向 0.0.0.0
发 UDP
广播,信息发到哪里,不知道,发没发到,也不知道。所有通信都跑在裸的 Post Message API 上,所以很多时候主站往交互程序发消息,但是交互程序根本没起来,信息没有送达导致整个加载进程就那么死在那里了。
这也为后续的需求实现留下了很大的隐患,之前有同事提出想法,想要在电子杂志当中穿插交互小程序,来做成交互式的杂志,但是以目前的通信方式来看,我们只能在每个页面当中插入一个交互程序,这很明显是不可接受的。
Post Message 另外一个很大的问题是它类型不安全,不管你怎么封装都很难做到优雅的类型安全策略,加之为了缓解「低端设备」性能不良的问题,我们和云游戏厂商合作需要做云端网页集成,这时候内外通信从 Post Message 变成了 Web Socket,通信层面的东西如果没有做解耦的话整个工程会变得非常混乱。
为了解决通信层面上的可靠性问题,我们引入了 Jack Works 的 JSON RPC Call,把通信的方式和通信的内容拆成两层,这样中间跑的是 Post Message 也好,Web Socket 也好,甚至是 HTTP 协议都不会有太大的问题。
Oh my gosh… 这东西绝对是最折磨人的,因为 W3 没有给媒体播放行为设置特别有约束性的标准,所以各家浏览器引擎都是发挥足了各式各样的创意来阻止你的浏览器发出声音,Chrome 还好,你只要跟页面交互了就能发出声音了,Safari 则是要求所有有声音的视频都不能自动播放。这意味着被分开片的视频完全没办法一个接着一个的放下去。
在旧版播放器当中,为了判断当前环境能否触发自动播放,代码当中硬编码了一个无声 URL,播放器会尝试播放一下这个音频来确定 MEI,不过我很讨厌这种硬编码的做法。比如某天硬编码的 URL 炸掉了,或者客户端网络有波动,自动播放检测就没法工作了,这是很不可靠的。
交互程序内部也是重灾区,因为 iFrame
内部被视作一个独立的页面,所以自动播放权限是不继承的,你必须得至少跟 iFrame
交互一次才能触发音频自动播放,这给内容设计上带来了一定的阻碍,比如一种常见的创造「无缝切换感」的方法:
嗯,这个真的发生过,而且不止一次,我老板都被骗过。
有很多好的创意都被浏览器阻止自动播放的激进策略给限制了,为了解决这个问题我们在全局放了一个单例的 Audio Station,和一个叫做 Evil Trigger 的东西。简单来讲就是 Evil Trigger 会尝试跟页面上所有的按钮和锚点绑定事件,只要按钮被按下去之后,全局单例的 Audio Station 管理的 Audio Context 就会被启动,后面所有的媒体播放请求都会从 Audio Station 走,这样就能做到花式自动播放而不用看浏览器脸色了。
啊,不过虽然理想是这样的,事实上 Evil Trigger 并没有做完,自动播放这件事情现在是和播放器的播放按钮绑在一起的,Which is good enough.
「自动播放」这件事情带来的成本其实挺高的,Audio Context API 的性质决定了所有音频文件必须得被全部以 PCM 的格式存到内存里,这非常吃内存以至于我们不得不把大多数的音频打成单声道并且降低采样率以防止移动端浏览器内存爆掉。
另外一个很琐碎的需求是时间管理,很多边边角角的需求都需要这么一个东西:
这些东西在以前的播放器当中都是分开实现散落在各处的,但实际上我们可以把它统合成为一个单一的模块:时间管理。
音轨视轨同步看起来就直白一些,我们很厉害的同事实现了一个类似 NTP 的东西来校正视频和音频的时间,还有交互内外的时间,但是这个校正的过程涉及到一些心理学知识(Which is 我的老本行),要排出一些优先级顺序来,内部文档有写不过因为蛮琐碎的在这边就不多讲了。
其余的东西都可以理解为,在一条时间轴上会连续发生的事件,无论是 BGM 的切换、字幕的显示和隐藏还是对话框的弹出,所以我们给每个视频都附上了一个配置清单,来描述哪个关键帧要做什么,这种帧分两种:
某个时刻:当时间进度跨越了这个时刻,就执行某个事件,可以分成只执行一次,和每次跨过都执行,对话框事件就可以用这个方式来做;
某个时间段:当时间进度在这个时间段里的时候,就开启某个状态,否则关闭某个状态,BGM和字幕用的是这种,实际上类似 YouTube 的视频章节功能也可以用这种机制来实现。
具体触发什么事件用的是一种插件机制,要触发什么事件播放器会根据任务类型查该调用哪个插件,然后再执行对应的任务。
字幕做了一点额外的处理,SRT 格式的字幕导进去之后会被转换成时间轴上的关键帧,这样做可以方便视频创作的同事上字幕。依旧的,因为时间上的原因这块只做了一半,不是所有的时间轴任务插件都有对应的实现,要看后面会不会遇到对应的需求了。
一点悲惨的事实,最早期的播放器 BGM 实现是这样的:直接把要播放的所有 BGM 都硬编码进播放器里面,包括音频的 URL,无论你在看的是哪个项目,所有项目的所有 BGM 配置都会被载到内存里。
那个 BGM 的 URL 还不是完整的地址,而是一个需要过某个函数拼一下才能吐出结果的字符串,所以项目迁移的时候我们得手动一个一个地把这些地址挑出来然后处理一遍,就很痛。
当时推荐先「暂时」把地址写进播放器里的人还是我,因为那时候预告片已经发出去了,死线就在那里很多东西根本没时间打磨只能先堆上去再说,本来想的是「后面再把它剥出去」,可惜后来排期的人根本不 Care 这事情导致这种狗屎一样的东西就一直遗留在了工程里。
这东西把我同事坑的很惨,对不起!(ORZ——)
在项目后期遇到了这么几个需求,首先,要有 Steam 客户端,这个 Steam 客户端和主站得是完全断开的,这意味着所有的内容元信息必须离线。另外老板想让 Steam 版本的视频播放器和网站上的不一样,究竟有多不一样呢?那可是相当的不一样,可以说亲娘看了都认不出来的那种,绝对不是你 CSS 糊上去就能了事的。我们不可能直接 Fork 一个播放器改改就了事,随着项目越来越多,会有越来越多的播放器出现,维护成本会以指数级爆炸成长。
在此基础上,网站上也有不同的模式,比如「小交互」和「交互视频」就是两个截然不同的东西,如前文所述,我们还考虑过在电子杂志当中插入交互内容,它对应的皮肤可能又是另一套东西。为了处理这个问题,我们重新整理了一下架构,把数据抓取这一层单独拆了出来,做成了 SDK,不同的 SDK 处理不同类型的数据源,SDK 同时也掌管了皮肤热加载的过程。
皮肤热加载可以说是非常精髓的一块东西了,我们利用伟大的 Remote Component 实现了另外一种「微前端」:远端组件加载。整体的实现思路是这样的:
不过好看的花都是带刺哒,因为组件热加载是用 eval
实现的,所以如果你不在热加载模块里面打个 Console 的话甚至都进不去模块的虚拟机,更别提打断点做调试了,总之整体上是一个比较难搞的东西。再加上整个系统实在太复杂了,任何一个包的修改都有可能牵一发而动全身,播放器的行为总是可能会出现预期之外的变化,如果对播放器代码库不是很熟悉的话很有可能会被预期之外的 Breaking Change 扫到,这也是为什么我们至今都没有把各种库标到 1.0.0
的原因。不过这总归是一个要解决的问题,我们还是要花力气来做的。
最开始的产品设计其实是「不用做移动端」,但是直到内测前后又突然说「我们要考虑移动端用户体验哒——」,这需求变得让我们非常措手不及,很多优化做的都是陆陆续续打补丁打上去的,老板们,我爱你们哟 ♥~
说回正题,这块的优化和 PIXI / Three 的绘制机制有关,也跟各个浏览器厂商的 WebGL 实现有关。因为后来 Three 用的少了,而且主要是我同事在调优这块,所以暂且略过不讲,主要讲一下我在搞的 PIXI 这边。
Web 上的渲染引擎都没有做 Partial Render 这种高级玩意儿,每帧都是完整重新绘制的,所以它的性能和功耗都多多少少有点问题。加之 Safari 用的 WebGL 之前都是他们自己搞的,不仅不支持 WebGL2 而且性能烂的一比,所以性能优化是很急迫的事情。
新版的 Safari 总算扔了自己的实现开始改用 Google 的 ANGLE。自此,无论是 Firefox 还是 Chromium,Safari,用的都是同一套 WebGL to Native Binding 啦,不仅性能有很大的提升,bug 图谱也会变得没那么复杂。可喜可贺,可口可乐。
不过记得把抗锯齿关了,iOS 15 带的 ANGLE 有 bug,导致 Draw Call 顺序会出问题,Render Buffer 也清不掉,画面会出 bug。
最简单的办法肯定是做动态帧率,得益于之前提到的统一封装,我只需要偷偷在封装层后面把 Ticker 的行为变一变就好了,开发业务逻辑的同事没有受到任何影响,可以说是非常方便了。
动态帧率这块的做法是这样的:
这套机制加上去之后移动端发热问题立刻就有缓解,我同事之前跟我吐槽过「原神都没你热」,现在不热了,可喜可贺。
另外一个性能问题是和任务调度有关,PIXI 内部实际上有两个 Ticker,渲染用的 APP Ticker 和全局管理鼠标事件的 System Ticker。 System Ticker 在文档里面写的不是很清楚,我是靠火焰图和源码才挖出来的。现在我们遇到的问题是,System Ticker 的性能非常不好,如果你画面当中可交互的东西非常多的话,System Ticker 计算 Bounding Box 就会把画面搞的很卡。为了处理这个问题我们把任务做了重排。第一帧用来渲染,被抽掉的另外一帧给 System Ticker 用,这样计算压力就彻底分散开了。
这是另外一个比较玄学的事情了,我们都知道 JavaScript 是一个单线程语言,这意味着不用 Web Worker 的话大多数任务都要堆到一个线程上面来做,如果一帧做不完,你的页面就会开始掉帧。
这件事情处理起来比较 Tricky,我们参照 React Time Slicing 的思路,把大任务拆成小任务放进队列里面来做,所有任务都要排队,做完一组之后检查时间,如果时间还够就接着做,不够就跳过等下一帧在做。说起来很简单但是实际做起来没那么容易,中间涉及到各式各样的 Polyfill ,还调整了一下标准的 Promise API 加了两个功能进去。总之这方面的问题被解决了,最后的结果是好的。
以及不要跟我讲 Web Worker 这种事情,不是没搞过,在做机器学习的时候我甚至做过基于 Web Worker 的消息队列,是能用,但是开发体验一言难尽。
如果你的渲染卡了,用户会骂你网站写的烂,但是如果你画面没卡任务跑的慢,用户可能就会骂浏览器垃圾了。
一共有两处用到了这个优化逻辑,一个是播放器资源预载的时候需要排一下任务队列,其次是交互程序进行预载的时候需要排队,防止iFrame
里面的任务太多把外面卡死了。这个地方浏览器的模型比较复杂,一方面是 iFrame
跨域和不跨域的时候,安全模型是不一样的,导致行为也会有点区别;另外,一些浏览器的一些版本在 iFrame
没有显示的时候不会跑 RAF 导致交互内部的任务调度跑不起来,得靠播放器的队列系统来拉任务。都是比较好搞的事情,三五下就写出来了,一遍就成半个 bug 都没有。
后期的话有好几个项目在平行推进,但是很多基础配置的同步需要靠手动复制粘贴维护,为了处理这个问题我们把所有的打包器配置封成了独立的包,这个包也集成了一部分开发环境和 Service Worker 配置,这样开发者只需要升级一下打包器整合包,所有的打包配置都会更新,开发环境也会升级到最新的形态,开发过程中杂七杂八的事情会少很多。
这个问题其实非常微妙,有历史原因也有现实原因,在刚加入团队的时候我是喊 Unity 喊 Cocos 喊得最凶的人,但是后来在做技术决策的时候我也是率先提出反对意见的人,大致的想法有几个:
当时我所知道的,整个项目的定位是做一个平台,这个平台要有一个统一的入口,在这个入口之内进入各个课程。在这个需求下上 Unity 根本是不可能的事情。
如果要做平台,那意味着必然要搞热加载:
还有一些历史原因:
以及一些比较现实的问题:
整体上来看,引入 Unity 对于团队来讲会引入非常大的不确定性,这种不确定性需要很有经验的开发者来处理,也需要投入额外的研发人力和研发资金,但很不巧的是,真正到那个时间节点的时候,人力和资金已经全都木有了,所以也就只能硬着头皮往下搞了。
所幸通过一系列的调优我们(在最近)成功做到了用 Web 技术来达到接近 Native 的使用体验,这些研究经验其实非常有价值的。我们得面对一个现实:无论你多讨厌 Electron 多讨厌什么都套 WebView,多讨厌小程序,这些东西都在不可避免的入侵你的生活。原因也很简单,对于厂商来讲,Web 绝对是一个最具有性价比的方案,它可以满足产品快速开发、高速迭代的需求,也是开发成本最低的一种技术选型。所以我们会发现有越来越多的软件开始加入 Web 化的大军,它们开始混合 Web 技术栈甚至完全用 Web 技术栈重写。这件事情短时间内不会有任何回头的趋势,只会愈演愈烈。
我个人也讨厌什么东西都用 WebView,什么东西都 Electron 的浪潮,但真正落实到现金上的时候,商人们都是诚实的,That’s life。
这么庞大的一个玩意想也不是我一个人能搞得定的,事实上在整个项目中我也就是定了个架构,搓了一部分需要各方协调的业务逻辑,顺带的做了一点界面和产品的设计。其余相当多的开发工作还是由我们超级靠谱的同事搞定的,只能说在经历了一波三折之后稳定下来的团队,每个同事都是个顶个的牛逼人士,没有他们整个项目不可能正常运转起来。
我还依稀记得最大的一次架构变动之后产品首次推到线上的那个晚上,本来以为会一如既往的 Bug 成堆,甚至出现全新的 Bug 图谱,但很意外的,播 放 器 它 没 有 bug,至少所有影响主线流程的 bug 全都被清掉了甚至没冒出来新的。这在我两年以来的工作经验当中是从未有过的,着实感动了一把。
整体来看,你可能会发现,每一个业务需求背后涉及到的都是很复杂的技术决策,如果产品前期的技术积累不够、架构设计不具包容性,那后期开发就只能一层一层的叠屎,最后屎山快速崩塌。经历了这几年的工作,我最大的感悟有两点:
首先是技术,技术真正的价值并不体现在面子上能拿出来的 feature,而是背后思考问题的逻辑和解决问题的方法。代码只是解决问题的手段,如果没有好的思路支撑,它也可能成为创造问题的根源;
其次是产品,在实现产品的时候,各个角色之间的角色和工作应当是清晰明确的:
每个层级都各司其职避免发散整个产品才能快速的往前走,我举几个发散的例子:
每一个工作流程都是为上一个工作流程提供「实现」,在商业项目的推进过程中把产品核心目标摆在第一位,而不是把自己的情怀、情感、情结摆在第一位是很严肃且重要的。毕竟你看,纵观中国互联网创业史,拿情怀当饭吃的大多都没有什么好下场。
以上就是这三年以来的技术团队的幕后故事,希望能给你带来一些启发,或是惊喜。
莉莉爱你 ♥。
]]>在这篇文章中,我会介绍一些让我自豪的室内布置,也会详细的介绍每一个智能家居的配置方式,希望能给你带来一些启发。
我完全放弃了把衣服挂在衣柜里的幻想,自如带的衣柜被塞满了塑料抽屉,所有的衣服洗干净之后直接卷一卷塞进抽屉里节省了非常多的空间。阳台也是类似的思路,几个(很贵的)塑料抽屉堆叠成了一个小的收纳角落,主要用来装一些反季的衣物、线缆、清洁用品之类的东西。
抽屉上面的木板是单独买的,原本是给摄影棚做背景的,不过拿来做收纳箱的装饰也非常不错,尺寸恰到好处分毫不差,剩下的缝隙刚好可以塞进两个显示器的盒子,满足了强迫症对空间规划的全部幻想。
值得一提的是因为有一个隔音还凑合的阳台,我把 NAS 转移到了阳台这边,极大的解决了硬盘半夜疯狂炒豆子给我带来的痛苦。
桌子上和床底下也是塞满了各式各样的抽屉,小杂物都可以塞进去,整个空间马上就会变得整洁很多(其实也没有——)。
如果你想在出租屋的墙上墙上固定东西
兰丁胶、易拉胶和 Nano Leaf 的胶是唯三不会把墙皮扯掉的胶,但是兰丁胶粘不牢只能用来贴画,而且会留下油印;易拉胶可以用来粘遥控器啥的,但是不适合粘特别重的东西,东西会掉,墙皮也会跟着被扯掉;Nano Leaf 的胶虽然结实一些,但是一样不能粘太重的东西,以及取下来的时候要小心一些,不然还是会损伤墙面。
总的来说,出租屋你还是放弃在墙上粘东西的想法吧(
OK,这部分是主菜,我是一个非常喜欢电灯的人,淘宝购物车里面塞满了各式各样的电灯(Which made me be myself),同时我很讨厌阳光(吸血鬼属性),这就造成了一种蛮矛盾的情形:我的房间经常是拉上窗帘然后开几盏相当昏暗的灯。
为了达成这个扭曲的喜好,我买了四颗飞利浦的变色灯泡,有的直接放在书桌上,有的粘在了墙上(Sorry 房东,搞烂了你的墙 <( _ _ )>)。一般晚上到家都不会开太亮,调成很暗淡的橙色灯光可以让我处于一种比较放松的状态。
唯一的遗憾是自如的合同不让我粉刷墙面,不然我可能会把整个屋子刷成水泥色的,这样无论是灯光呈现出来的效果还是灯座的颜色和墙面颜色的搭配都会更好看一些。
后来还搞了一组 Nanoleaf 贴在了墙上,室友跟我讲这灯晚上亮起来特别像一面窗户。这让我想起了之前蛮有争议的新闻:查理捐赠了 UCSB 的一栋学生宿舍并且要求宿舍的设计是 90% 以上的宿舍没有窗户,转而使用电字窗来模拟日照。其实我还蛮喜欢这个点子的,如果以后我能有幸自己买一栋房子的话,可能也会在厕所等封闭的空间装一些类似的电字窗,让封闭的空间看起来更通透一些。
Nano Leaf 有一点比 Hue 好很多,它的固件原生支持播放动画。像是 Hue 如果要支持动画得单独装软件来控制灯的变色,跟 Node Red 之类的系统做集成的时候会有很麻烦的时序问题。所以睡前屋子里面的催眠灯光现在都是用 Nano Leaf 做的,非常棒。
桌子上我摆了一个 Awtrix,这东西很神,可以显示像素画之外还能播放声音,用它自带的 API 做了一些比较可爱的交互,每当我按下一个开关的时候都会有声音和动效的反馈,比较鸡掰的营造出了一种我和整个房间「互动」的感受。
像素灯边上的纸雕灯是室友送我的圣诞礼物,直到二月末才雕完,可以说是做的很痛苦了(温馨提示,送朋友的圣诞礼物不要是没做完的手作品,真的很折磨人 _(:3 」∠ )_)。
影音系统就比较简单了,一个 Dell 的显示器后面配了一个绿联的 HDMI 转接器。显示器上有一个 3.5mm 耳机孔转蓝牙的转换器,可以直接把声音串到两边的音响上(我知道音质会变得很烂,但是因为我的听力非常烂所以听不出来差别)。绿联的这个转接器比较好的一点是可以用红外遥控器远程切设备,这样就可以相对容易的在 Chromecast、Switch 和电脑之间来回切换。但是这玩意的 HDCP 实现有问题,Chromecast 不能直接插,所以中间还串了一个 HDCP 的破解器。
现在家里的智能化控制有几个:
主要还是玩灯 ¯\(ツ)/¯,不愧是我。
除了智能灯泡之外我家里还有一些小东西:
一个经验:绿米的设备稳定性相对好一些;涂鸦的便宜,但是因为是公开的协议各家各自生产设备,所以很容易踩到坑,我买的开关两个月就挂了。门磁传感器是例外,绿米的门磁传感器买回来根本配对不上,涂鸦的倒是一下子就配上了。
整体上,不推荐买任何蓝牙协议的设备,如果想要和 Home Assistant 打配合,优先买 Zigbee 协议的设备,其次买 HTTP 通信的设备(比如 Nano Leaf 和 Awtrix),至少可以用 Node Red 发 HTTP 请求做系统整合。
这里补一个小知识,Zigbee 是一种通信协议,类似 TCP 协议,但是通信协议里面传的东西可以是不一样的,比如 HTTP,HTTPS,SFTP,SMTP。各家的网关做的事情就是翻译自家的协议内容然后控制设备。Zigbee2MQTT 可以充当一个通用的固件,它的生态里面包含了大多数主流设备的 Zigbee 通信「方言」,因此可以充当各家产品的网关(你可以理解为路由器的控制面板)。而 CC2531 接收器则是一个可以刷 Zigbee2MQTT 固件的接收器,可以接收任何设备发出的 Zigbee 信号并且传输给 Zigbee2MQTT(你可以理解为一个收发 Zigbee 信号的「路由器」的路由器),具体后面会讲。
整个控制系统的构成比较简单,一个 Hue 的网关、一个 Home Assistant 上面跑一个 Node Red 来连控制逻辑,整套系统都跑在 NAS 上。
需要的东西比较简单:
Home Assistant 是用来做设备管理的,虽然说是开源拖拉机但是还挺好用,只炸过一次,修了一晚上就修好了。除了 Hue 的网关之外不需要买任何其他的智能网关,Home Assistant + CC2531 就已经是一个通用型的网关了。
NAS 上面装好 Home Assistant 的虚拟机镜像(比 Docker 版本的省心,有条件的话推荐直接装这个),把 CC2531 透进设备开机就行了。
该装的 Integration 装一装,像是 Nano Leaf、Hue、Chromecast、Broadlink。
该装的插件装一装,比如:
Home Assistant 内置的自动化系统包含了两种配置的方式:
这两个东西我们都会用得到。
提供最基本的光照能够辨认环境中的物体但不提供更多照明,以保持精神放松便于入睡(Actually 毕业之后睡眠开始变得容易出问题了 ˊ_>ˋ)。
只是提供两个思路,可玩的还有很多。
Home Assistant 自带的自动化只能满足最基本的,把一些动作打包,如果要做复杂的自动化流水线还是得用 Node Red 来写。反过来,用 Node Red 做动作打包很麻烦,所以这边推荐的策略是:用 HA 自带的面板打包任务,送进 Node Red 做复杂逻辑执行。
Node Red 是一个低代码平台,用户通过拖拽节点、连接节点来绘制有向无环图,最后完成一些简单的自动化任务。
Node Red 只是跑在 Home Assistant 的 Host 上,本质他们两个还是两套分开的系统,要通过一些方法才能整合在一起,找到 events: all
,这是一个 Home Assistant 的节点,所有受 Home Assistant 控制的设备状态发生变化都会让这个节点流出数据,有了这个数据源我们就可以做一些好♂玩的事情了。
小贴士:现在市面上的大多数智能开关最多只能叫「智能按钮」,它不能保留一个「开」或者「关」的状态。只能按下去,发出去一个信号,这是非常反直觉的。为了处理这个问题我做了这么一个流水线设计:
为了做到这点我们需要:
1.1
一样,直接复制粘贴就行。1.4
填写,比较值写你的按钮名称,按钮名称比较 Tricky 一点,不同的设备按钮名是不一样的,比如绿米的按钮有这几个:left
, right
, left_double
, right_double
, left_long
, right_long
, both
,按钮名可以用 debug node
抓出来,具体怎么用上 Google 搜一下有很多,教程很多不赘述了。步骤 | Node | Property | 操作符 | 比较值 |
---|---|---|---|---|
1.1 | switch node | payload.entity_id | == | 设备名称 |
1.2 | switch node | payload.event.old_state.attributes.state_class | != | 留空 |
1.2 | switch node | payload.event.old_state.state | == | 留空 |
1.2 | switch node | payload.event.new_state.state | != | 留空 |
1.3 | switch node | payload.entity_id | == | 设备名称(同 1.1) |
1.4 | switch node | payload.event.new_state.state | == | 按钮名称 |
具体连接起来的效果和数据填写的方法可以参考这张图:
function node
判断当前的灯光模式,并将即将启动的灯光模式写入全局变量(低代码不是不写代码,基本的逻辑控制还是得写写的,好在只是写 JS 而已):1 | // 有多少种灯光模式就写多少个脚本,不同的灯光模式 LIGHT_MODE_NAME 不一样。 |
switch node
判断需要开灯还是关灯:步骤 | Node | Property | 操作符 | 比较值 | 比较值类型 |
---|---|---|---|---|---|
2.2 | switch node | payload | == | false | JSON |
!= | false | JSON |
switch node
有两个输出,分别对应的是开灯操作和关灯操作:步骤 | Node | Domain | Service | Entity |
---|---|---|---|---|
2.3 | call service node | sense | turn_on | 你的场景名称 |
连完的效果可以看下图:
这个相对简单一些,在 Node Red 里面装一个叫做 cronplus
的插件,然后把 cronplus
节点拖进去,schedule
写 0 0 7 ? * MON-FRI *
,意思是周一到周五早上七点执行任务,格式基本就是 cron,网上生成器挺多的,不愿意研究在界面里面直接生成也可以。
cron
节点跟上一小节的灯光控制脚本连在一起,再借一个启动 sense 的节点就可以了,相对来讲比较简单,具体操作可以看下面这张图:
这个可就刺激了,我试了很多种方案,最后找到了一个经济误判率又低的方法,你需要:
我们要连这么一个网络:
因为绿米的这个设备时间分辨率非常烂,一分钟才发出一个信号,所以只能以门磁传感器为触发事件的标准。另外,这种判断逻辑还有可能有些错误触发,比如你出门洗个手没关门,再回来把门关上他会以为你离开家了把灯全都关了,这很烦人,所以还得对事件触发做一个 Throttle 避免误触。我的判断标准是如果门连续开了一分钟没关上,那就不响应下一个事件。
逻辑理顺了就可以开始连线了:
events: all
,接收所有的 Home Assistant 信号;switch node
筛选门磁传感器和人体传感器;步骤 | Node | Property | 操作符 | 比较值 |
---|---|---|---|---|
2 | switch node | payload.entity_id | == | 运动传感器 ID |
2 | == | 门磁传感器 ID |
function node
就可以了:1 | // 读取一下之前的状态 |
1 | const previousState = global.get('doorState'); |
function node
:1 | // 一个常量,当门开了 60 秒后跳过下一次出门检测 |
time range node
就可以了。跟灯光系统一样,都是调 sense
和 script
,唯一不一样的是,如果你要用 Chromecast 播音乐的话填写的方式可能会比较 Tricky,比如我的设计是让 Chromecast 和 Plex 整合在一起,直接从 NAS 串流音乐,那么要建一个 script
,并且添加一个 Action type 为 Call service 的任务,Service 是 media_player.play_media
,Target 写你的 Chromecast,Content Id 写 plex://{ "playlist_name": "Workout", "shuffle": "1" }
,Content Type 写 PLAYLIST
,这样就能随机播放我 Plex 播放列表里面的曲子了。
Awtrix 和 Node red / Home Assistant 都没有整合,得先用 Docker 装一个它的服务器,然后发 HTTP 请求过去。
change node
,下面的设置填两个,变量类型都是 JSON:Set
,target 选 msg.payload
,to the value 写你的 awtrix 指令,Awtrix 面板上能调试,照着文档改一改就行了,比如:1 | { |
Set
,target 选 msg.headers
,to the value 写 {"content-type":"application/json"}
,告诉他你要发的是 JSON。下面是我家完整的网络结构配置,还挺……恶心的……
这个是我从学校出来所居住的第一个小地方,颇有年代感的小区里面住满了很有活力的中老年人,从他们的眼中能看到那种平静而幸福的神色。我每次去楼下小卖店买冰棍老奶奶都会多给我塞两个;另一家小超市的大叔在屋子里面一边吞云吐雾一遍对着直播里的大姐姐嘿嘿笑,这根本是我不曾见过的景象,煞是有趣。
这个房间我也特别、特别的喜欢。作为吸血鬼属性的一名男子,住在一个背阴的房间,本身就是一大幸事。对面就是一排很高的树木,也是一个很享受的事情。夏天躺在床上听着虫鸣、树叶沙沙的声音、楼下小孩子打闹的声音,非常的安逸和舒适。
但是人肯定要往前走,北京嘛,天子脚下不是人人都能立得住的地方。接下来究竟是在苏州定居,还是出国留学再刷一个硕士学位,这两条路我还很犹豫要怎么走,不过慢慢走一定能看到未来的吧。
一篇文章写了一天,纪念一下这两年的生活,可能也帮不到什么人,不过,That’s Life。
以上,莉莉爱你 ♥。
]]>警告:本文内有致死量返利链接,你要是觉得烦可以直接去京东上搜,这样我就拿不到提成了 _(:3 」∠ )_。
从春节开始尝试了各式各样的速食品,从方便米饭到料理包,希望找到一个经济方便方式解决吃饭的问题,同时又不像若饭或者 Soylent 那么 Drama。在 Telegram 频道上聊了这件事情,群友们表示这东西的产业链都挺成熟的了,外面很多馆子和外卖都是料理包放进热水里煮一煮然后上桌的,成本低的令人发指。那么为什么不直接买料理包吃呢,没有中间商赚差价还省的等着外卖,想吃立刻就吃,并没有什么明显的坏处。
于是乎耗时好几个月的试吃活动就这样开始了 (ノ>ω<)ノ。
家里有冰箱的话买这个,记得自己买冲泡米饭,没了。
非常方便,热水倒进去、料包扔热水里面或者电热杯垫上烫一烫就能吃了。除了料包之外还有脱水蔬菜,跟有玉米有葱花,没什么味道,可能是为了起装饰作用。
口味不错,有点像北师大留学生食堂二楼的盖浇饭。但是「菜品」因为都是打碎的酱所以没有口感可言,每一包的味道也都差不多,搞得跟航天食品一样,这是我不会回购它的主要原因之一。
大多数味道都很咸,看一下营养成分表就知道了,钠含量全都是爆表的,油也很大,吃之前我都要用电热杯垫给调料包加个热、把油化开、撕个小口把里面的一层油倒出来扔掉再给米饭加料,不然吃着口味太重了(或者你也可以买点面包拌一下把油稀释一下,至少吃起来不痛苦,刚开始那两包每次吃完都会反胃)。
但是这个是可以理解的,毕竟它不要求你冷冻保存,这就意味着必须用油封和加盐的方式才能有效抑制微生物繁殖,这东西的本质是软包罐头,你肯定不能指望罐头像新鲜饭菜一样好吃,是吧。
总之是一款有好有坏的产品,如果你受得了油盐重的饭菜的话,这个肯定是比方便面好吃,不挑食的人也能吃的津津有味,但是肯定没有办法跟现炒出来的饭菜比就是了。
这个系列我给 3 / 10 分,能吃。
你可以通过这个链接购买,你每买一箱我都能得到 2 块钱。
另一个系列的料理包,常温保存就可以,像蹲在研究所的学生党或者公司没有冰箱的话,买这个会很方便。
常温保存嘛,油盐重肯定是不可避免的,但系列和海底捞相比有一个很明显的好处,至少食材是有形状的,不是像海底捞那样彻底打成接近泥状的东西,而且每种菜的味道是不一样的,至少能吃出差别来。但是不方便的地方是,得自己买方便米饭来配。如果你想尝试这个系列的料理包我推荐你吃之前把菜汤倒掉,剩下的拌饭。
对于「厨师牌」的料理包,我的整体感受是,这套料理包的成本你都压在了咖喱和红烧牛肉上,这两包的味道是真的很好,但是剩下的就有些一般,宫(huang)保(dou)鸡(guan)丁(tou)是最不能忍的,直接影响了我对整套料理包的评价。
总体结论是不推荐,我比较推荐你单独买红烧牛肉或者咖喱鸡肉口味的料理包,不要买组合的包(查了一下,的确有单卖的,五块钱一袋)。
这个系列我给 4 / 10 分,能吃。
如果你要买全系列的话,先领券再购买能减五块,你买一份我拿五毛提成,对,我是五毛 ( ´థ౪థ)σ。
我会回购的两款:咖喱鸡肉和红烧牛肉,你也可以买回来试试,你买一份我拿四毛提成,连五毛都不如 ( ´థ౪థ)σ。
和「海底捞」、「厨师」牌的料理包不同,这个品牌的料理包都是冷冻的,送的时候都是料理包带着冰袋送到家楼下快递柜,在柜子里放了好几个小时也没化掉真的很强。
整套料理包吃下来感觉非常好,因为保存条件更加苛刻(冷冻),所以油和盐的含量少了很多,食材本来的形状也得到了很好的保留。吃进嘴里的食物不再是一团莫名其妙的膏状物而是正儿八经的、有口感的菜了,甚至可以勾芡。
但是加热真的很麻烦,因为里面有油脂,加热的时候会在微波炉里面崩开,事后处理起来就会变得很恶心,而且冻成了一坨也很难用正常的姿势把它放进碗里,所以崩起来是完全失控的。我后来选择的做法是打一盆热水把料理包扔水里十分钟,解冻到温热可以入口的程度,浇在方便米饭上吃。
下面一道菜一道菜讲:
整体上来讲,这个品牌的料理包是我最终决定长期购买使用的料理包,已经买了第二箱在路上啦!基本上就是外卖的味道,但是比外卖低碳而且吃着方便,各位感兴趣的话可以买一点试试,不亏的。
这个系列我给 7 / 10 分,接近现成的饭菜。
如果要买十个菜的系列可以用这个链接,你买一套我赚六毛,淘宝上也有卖十五包一个系列的,你可以根据自己的口味挑选。
其实很多人对于我现在践行的饮食方式并不赞同,他们会试图「归化」我,认为必须得自己做饭做菜才是正经过日子,那才是生活。但是你看,每个人对生活的定义都不大一样,我因为鼻炎已经损失了大部分嗅觉,吃饭实际上是体会不到什么乐趣的,可能用这个时间做点其他事情对我来讲更有意义一些。
作为一个沁润在工业化社会的科学教派信徒,若饭是我的首选,但是因为对奶制品过敏所以只能退而求其次选择料理包(而且比若饭便宜很多),这只是一种对生活的选择而已,没有对错好坏。我也不觉得自己是可怜的,你看我这张无欲无求的阳痿脸(ˊ_>ˋ)就能明白了,享受生活这件事情真的不适合我。朋友,我已经接受了这样的自己,请你也接受这样的我。
莉莉爱你 ♥~
]]>event.detail as SomeType
的方式构建一种很微妙的「类型安全」氛围。这两种方法都是我不喜欢的,前者会对类型系统造成污染,个人更加喜欢把「做同一件事情的代码放在一起」,但是按照前者的思路,类型定义和真正的 Event Listener 会「身首异处」,看起来非常可怜,而且,比如你在模块 A 中没有用到模块 B 声明的类型定义,但是它的 EventTarget 还是会带着模块 B 的类型定义,看起来就很脏,有一种全局变量满天飞的味道。而第二种做法则完全没有没有做到真正的类型安全,如果你 as 错了,那一切都没得聊了。
前些日子花了点心思研究了一下这种东西究竟要怎么写,最后选择了一种把我自己恶心到了的方法,可以做到大面上干净清爽但是内部恶臭得要死。
对了,同学我跟你讲,基本遇到这种需求魔改 EventTarget 和 CustomEvent 是没办法避免的,如果您在这部分有洁癖的话还请直接用 as(
在设计这套系统的时候我的整体思路是,给字符串加个泛型作为事件类型定义并且导出,用的时候把这个类型定义导进来,泛型拆开,读里面的类型定义,最后扔到 Custom Event 里,我们举个例子,比如你在做一个 RPG 游戏:
1 | // Let's define some events in this file. |
这个架空的例子蛮简单的,我们定义了一个事件,叫做 CHARACTER_PROFILE_UPDATE
,是角色信息发生变化时触发的事件,一个叫 upgradeLevel
的函数,当角色等级发生变化时就调用这个函数,之后让 currentPlayer
广播出一个升级事件,订阅这个事件的地方刷新 UI 元素或者发送网络请求(嚯,还是个网游?)。
我们期待的是 TypeScript 能够通过自动的检查第 9 行处的 event detail 类型。
接下来,如果我们要订阅这个事件的话,可以这么做:
1 | // Let's consume the event definition in this file. |
呃……其实这块应该用 PIXI 来写的,但是考虑到不是每个人都用过,所以用了看起来比较怪异的 DOM 写法,只是为了演示怎么加监听,不要在意细节……
好的,类型魔法师们你们已经懂要怎么实现了,请 Ctrl + W 关掉本窗口,下面的东西是给 TypeScript 新手看的。 _(:3 」∠ )_
最脏的地方就是这里了,我自认为我通过反模式的方法达成了一些不可告人的目的(?
首先,我们声明一个 EventName 的类型,它扩展了 String:
1 | declare class EventName<T> extends String {}; |
declare
关键字不一定非要用在 .d.ts
文件里面用,正常的 .ts
文件也可以 declare
一个类型,这里我们不真的构建一个 class
,而是定义一个「架空的类型」,这个架空的类型完全就是一个能够装泛型的容器。
然后,我们定义一个生成事件名称的函数:
1 | import uuid from 'uuid'; |
uuid
是一个你要额外装的包,这个函数在做的事情是生成一个 v4 的 uuid,也就是完全随机的 uuid。我们要用 as
把 uuid
函数输出的 string
强行把拧成 EventName<T>
。因为 EventName
扩展了 string
,所以整个代码的逻辑在氛围上是没问题的。
这里我选择用一个 uuid
是为了确保其唯一性,如果让开发者自己指定事件的名称会有两个问题:
接下来的事情就很简单了,把 CustomEvent
和 EventTarget
重新包装包装,让它能自己做类型诊断。
这块思路相对来讲比较简单,直接把 CustomEvent
封一下就好了:
1 | export class CustomEvent2<T> extends CustomEvent<T> { |
核心思路是,把你原来宁歪的类型用 as
关键字给强行拧回去,让类型检查不要大叫。
这块相对来讲也比较直接一些,EventTarget 一共只有三个方法,各自覆盖一次就行了:
1 | export class EventTarget2 { |
因为封装的非常轻度,所以 overhead 不会很大,性能接近原生 EventTarget
。
接下来我们尝试做一件很常见的事情,封装一个泛型,能够把 EventDefinition
里面的泛型抠出来,主要为了处理有些包该导出类型的时候不导出你又要用它类型这种情况。
首先我们先来学习一下怎么样抠泛型,假设我们定义了一个有泛型的数组:
1 | const skillIds: number[] = [1, 5, 9, 21]; |
skillIds 的类型会是 number[]
(额,或者你可以比较错误的理解成 Array<number>
),如果想从这个类型里面把 number
抠出来的话得用 infer
关键字:
1 | type GenericOfArray<T> = T extends (infer R)[] ? R : never; |
我们来把这行翻译成「人话」:类型 T
是否继承了一个泛型为 R
的数组?如果是,就把 R
吐出来,否则就返回 never
(这个类型表示啥也不是)。接下来,就算你没有明确的指定类型 R
,TypeScript 也会帮你把 R
推断出来。
比如我们这样用:
1 | type SkillId = GenericOfArray<typeof skillIds>; // The type SkillId would be number. |
类似的,你还可以把 Promise 的泛型抠出来:
1 | type GenericOfPromise<T> = T extends Promise<infer R> ? R : never; |
然后如果你想封装一个抠 EventName
的类型,就这么写:
1 | type GenericOfEventName<T> = T extends EventName<infer R> ? R : never; |
用的时候可以这么用:
1 | type LevelUpEventDetail = GenericOfEventName<typeof CHARACTER_PROFILE_UPDATE>; |
傻逼 Safari 最近才把 EventTarget 给实现出来,所以记得打 polyfill。
完整的实现和用例在这里,你可以快乐的复制粘贴。
以上就是今天的开发笔记,祝大家开发愉快。
]]>选书的思路也很简单,常听的那几个 Podcast 主播推荐的书、Readmoo 上了畅销榜的书、想准备什么 Podcast 主题的时候去淘的书。除了一些贵到离谱的之外,看的书里面大部分都是正版,全为支持这个日薄西山的出版业。拜各个厂商自立山头整出来一大堆阅读平台所赐,我今年成了一个不折不扣的 DRM 拆弹专家,常见平台的去 DRM 方法全部了然于胸,甚至给 Readmoo 单独写了一个 DRM Removal 工具(然而并不开源也不提供下载,仅作私用)。
DRM 和盗版是两股螺旋向上的力量,共同蚕食着作者的利益和读者的阅读体验,将出版行业的未来带向了一片无人愿意踏入的疆土。
以上仅仅是一点个人的观察,说不上对不对。
照旧,点首歌,这首是我和 Jonkyoto 合作的第三首曲子,保留了他充满日本传统音乐元素的作曲风格和我一贯的音乐品味,整个曲子还蛮活泼的,是我喜欢的类型。
冷暴力是一种非常容易出现在职场和家庭当中的现象,它要比动手动脚的狭义暴力更加可怕——因为它是「合法」的。被卷入冷暴力当中的人们会逐渐失去挣脱的力量,最终屈服于对方给你带来的苦痛之中。这本书当中讲述了很多和冷暴力有关的故事,并且提供了一些(大概)会有效的应对手段。这类内容是相当有用的,受害者可以通过里面的知识自救,而不自知的加害者则可以通过这本书里面的内容反思自己所做过的事情。
目前我们所处的社会缺乏和这些暴力有关的知识普及,也缺乏社会救济管道,太多的人在痛苦中爬不出来最终做了傻事。我在读研的时候因为研究的关系看了一些央视法律频道的案例,只能说非常令人痛心,非常可惜。判官一句「你应该找法律机关帮助你」,听起来是何等的荒唐和无力。无论是冷暴力还是「热暴力」都会造成很严重的后果,在整个社会当中一个人可能是一粒沙,但是对于这个人来讲,那是他的全部。
希望有更多人通过这本书理解「暴力」。
RORIRI BENCH: 7 / 10 (阅读体验有些干燥。)
原生家庭是个很微妙的东西,一个人生来带的基因和头十八年受的教育,大多都和原生家庭脱不了干系。你的父母、身边的长辈和老师在一张一张的给你发牌,有的牌上面画的是天赋、有的是能力、品味,十八岁以前,他们是那个打牌的人,无论这牌打得好不好,十八岁那一天,钟声响起,叮的一声所有牌都被摊在自己手里——接下来的牌要你打了,只能由你一个人打。
这看起来是一件很不公平的事情,但是这个世界的本质就是不公平的,这是促使物种进化的基本力量(#笑#)。如果要抱怨现在的生活,大多都可以找到你的原生家庭,再往上找甚至能找出祖宗十八辈,但在大多数情况下这只能告诉你「为什么是这样」,但改变不了任何事情。
这本书会让你发现上面我所讲的残酷事实,同时也给你了一把(不太好用的)解开这些心结的钥匙。得益于作者们的心理学背景,在阅读过程中我有一种「我是被理解」的感受,这是一切事情有得谈的基础,在这一方面本书做的很好。
可惜的是,本书并没有给出坚实有力的解决方法,很多事情讲的过于浮于表面缺乏可执行性。有一种把问题全部暴露出来但不去妥善处理的感觉。但朋友,处理这些事情是非常专业的,只能由专业的人来。所以如果你真的为此感到痛苦,请寻求专业的心理咨询。
RORIRI BENCH: 7 / 10
ADHD: What Everyone Needs to Know、《ADHD 不被卡住的人生》、《当 ADHD 患者踏入职场》
ADHD 全称注意力缺陷多动症,是一种广泛存在的认知能力问题,我之前做过一期 Podcast 讲这个病。因为其存在得非常广泛且没有引起足够重视,因此目前有相当多的孩子在教育阶段遭受到了不公正的待遇、错失了获得更多成就的机会。如果你也很想了解这种疾病的话,我非常推荐你看一下这三本书,至少读一下第一本和第二本。
第一本 ADHD: What Everyone Needs to Know 有中文译本,名字叫《牛津科普读本——注意缺陷多动障碍》,后面两本是台版书,国内可能买不到,如果你想要看的话可以联系我。
这三本书从三个视角介绍了 ADHD,前一本书的作者是一名专业的科研人员,他根据已有的研究成果总结出了相当干练的科普知识,这些知识能够帮助你我了解这一疾病的发生、发展的过程和机制。第二本书是一名临床医生根据自己的个案经历所撰写的叙事性质的读物,在这一本书中读者能够体会到更加真实的人物情感,和实际情境下诊疗师为不同的个案解决问题的具体过程。第三本书是一名 ADHD 患者讲述他如何与疾病对抗,通过各种小手段来削减掉疾病对他的伤害,作者是一名日本人,文辞颇有日式风味,读起来很有趣。
这些已有的资料能够帮助更多人更好的了解 ADHD 这一疾病,并且尽可能的减少未来可能发生的遗憾、创造更多的机会。
RORIRI BENCH: 8, 7, 6 / 10
2019年台湾通过了「司法院释字第七四八号解释施行法」这一爆炸性的法案,台湾就此成为了亚洲第一个同性婚姻合法化的「政治实体」。这一里程碑式的法案其背后却有着非常激烈的冲突,「护家盟」是这一冲突当中最为知名的一个团体,以其极度保守的态度而闻名于世。《护家盟不萌》一书针对「护家盟」公开发表的各种观点提供了一系列的有力的反驳,站在进步派的一方为我们提供了一个。本书从「家庭的意义」、「生命的意义」、「教育」、「人权」、「歧视」、「宗教与道德」探讨了社会大众对于同志群体的普遍误解,是一本很有深度但又很好读的小书。
RORIRI BENCH:8 / 10 (前面的内容很精彩但是后劲有些不足。)
读研的时候一个特别擅长「醍醐灌顶」的老师讲过这么一句话,原文我不记得了,但是大意是这样的:我以前也跟你一样,对很多事情都很较真,但是现在我更加专注于自己的提升,比如对问题的理解和看法。虽尚未能理解它产生的上下文,这句话让我印象非常深刻。直到工作之后我才透彻的理解了这句话。我把这句话翻译成了另外一个版本:「很多事情别往外找,你找不到的,劝你还是往里找吧,追求内心的平静才是最重要的」。¯\_(ツ)_/¯
这本书当中阐述的观点可能很有争议(尽管有大量研究作为佐证),每个人也会产生自己的解读。我所读到的是:别推自己推的太狠,一定要看清哪些是自己想要但是一定得不到的东西,放下它不要太勉强自己,开心才是真的。
不推荐高中生阅读,推荐刚毕业参加工作的朋友看。
RORIRI BENCH: 8 / 10
《智能的结构》: 加德纳老爷子写的书,教育领域的朋友一定不会对这个名字感到陌生。这本书把多元智能理论介绍的非常透彻,从什么是智能开始,逐个介绍每种智能,它是一种什么样的智能,它为什么可以被当成是一种智能,有什么实证证据。虽然我个人并不全然接受其中的所有观点,但是这本书的确促使我重新思考了什么是教育。比较恶心的一点是这本书极为枯燥,读起来就像嚼干草一样,但是学术书籍基本都是这个样子的,没的抱怨。
《穷查理的普通常识》: 查理是巴菲特身后的那个男人,两个人在商界颇有名气,这件事情不必言说。这本书介绍了许多人对查理的评价,以及查理对于诸多事务的看法和态度。这本书讲了很多他的投资、管理经历,见过的人和事,除了他相当专业的范畴之外,还包含了他对跨学科领域、教育和心理学的想法态度,及和家人故事。内容不错,但是问题和上一本书一样,真的好干,看不下去,最后是开 TTS 听完的。
《贫穷的本质》: 亲爱的朋友,贫穷真的不是因为不努力 ˊ_>ˋ。这本书通过各种案例详尽的介绍了人们为什么会贫穷,将人们带出贫穷是一件多么困难的事情,政府和社会组织在其中扮演的角色和做出的努力。整体上算是一本好书,就是没那么好读。
淦,为什么这个领域的书都这么难读啊!全英文的论文集都比这个好看!
学术类书籍,讲述周雪光老师在田野调查当中观察到的基层官员做事的逻辑、与中高阶官员之间的博弈方法。作者以这些田野调查为基础构建了一副完整的国家治理逻辑理论。内容不仅包含了以现代为起点的观察,也包含对古时官员治理方式的理解,展现出了政府治理方式的发展图景。
我读此书的最大收获就是,更深刻的意识到了「国家是一个系统」这件事情,他是一个高速运转的完整系统,一环接着一环的互相影响,从古至今未曾停歇。我们眼前看到的一切现象都有其背后的原因,而本书为我们理解其背后原因提供了一个七点。
内容还是很有意思的,我经常能听到家里人八卦我们老家地方官员的各种各样的事情,今天被推上去明天被扒下来,在阅读本书时总能想起来那些滑稽事,不免发笑。特别是修路那段,跟我外婆家那边的大队如出一辙,有些事情真的是到哪都一样 (゚∀。)。
这本书整体上有两个我不喜欢的地方:一方面是理论本身系统性没有那么强,能是这个领域本身也缺乏沉淀,「提出了一个好问题,但是没给出好答案」这是知乎上面对于这本书的评价,我觉得很中肯。另外一方面是,学术书籍,特别是中文学术著作的通病,干燥,阅读体验不好。不过干货肯定干燥,读之前要有觉悟。
RORIRI BENCH: 6 / 10
年初那会方方的事情闹得沸沸扬扬的,我是个好信的人,就把她的书买回来读了读。考虑到这场风暴的中心是「方方」的书「飞速出版了英文版」,所以我买的是英文版的。
内容朴实无华,没什么文学价值,就是日记。讲述了方方在疫情期间的各种经历,其中有很多是平民老百姓会憋在心里却不敢讲出来的话,她讲了,所以惹火上身了。
其实老实讲整本书没啥看头,就是一个老太太以自己的视角观察到的武汉,原汁原味甚至带着一些事实错误,但这些错误却让整本书显得更加真实。
RORIRI BENCH: 5 / 10 (真没啥看头……)
没有一板一眼的看文字版,纯粹是上下班的时候用 TTS 软件播着听的。
░░▚▖▛▟▖▝█▞▝▒█▙▓▒▝▙░░▖▝▙▘,▝▟▞▟。▜██▞▚▖░。▛▝▝▙░▖▙。▞▚▗▞▓▛▒,▟░▜,█▞░▟,▖▜。▝▝▗▖▖▘▟▟▛▝,▞▓▚▘▟。▜░▟█▙▚▙▖,░▒▘▖▛▚▟▘▖▒█▓▓▙▟▟▟▖░▙▗▚▖▛▛░▜,▝,▚▖░▓▚▝▓▙。▒▒▝▟,▛▟▗,▓░▗▘░▛▝▓▙▚。▙▟▝▜▚▘,▖█▛。▚██▖▒▞▜▞▜▜▗▖▓▞▚▜▜▞▙▒,▜▓▖▒▓▛▘░,▟▟▞▟▛▟▚▟▓▝。▙▛▖▘▗▜▙▒█▗▜,▘▘▙▟▖▛▞,▖█░▒▞▖▝▚░,▒░▙▚▖▝。▚▝▜░▓▝▚▟▚▖▓▘▝▚▛。
▟,▟。▛▝。█░▜▖▓▛▙▙█▓。▜█▒,▟▗▟▗░,▖▟▞▖▒,█▒▖▜▛▚█▞░▗▖█▙▜▛▓░▟▗░▞▚█▛▞░▟▘,▒░▒░▗▒▖▖░▓▓▚▜▘▞▗▖▒▚▛▝▙█▓▝░▞▚▙▚▖█。▛▟▛█▖▚▒▖,▖▝▞▙▘。█▛▛▚▟▒▛。▖▖▗,▓▝▝▘▝▞▒▘▛░▒▟▖▟▚░▜▓▝。
░▝▞▝▜▟▜░▓▒▗▟░▚▘█▜▚▓░▛░▗▚▓▟▚▝▟▚▗▟▙,▚▘▘▗▛▘▞▛░。▝▟▖,▘▖。▛░▗░░▒▛▝,▖░▜▜,▓▜▝▝▒░█▙。▘▛▘▚▝█▘,▜▓░▞▗,▒▓▙▜▟▘▞▜▗▟█▖▟▗▒▘,▝▒░█▒▒░。▗▗▗。▙▖▒,▖▜▝▟,░▟▗▛▘▞▝▘▙█░▙。▟▘▓▗▒▚▚▓▙▙▞░▒▘▗█▖▜▘▗▗▟。
我并不知道这本书里面的内容有几分是真,几分有假,但其内容之残酷以至我上班路上听此书时难过的驻足站立环顾四周无力向前。因为此书我对生活的这个社会,周遭的世界有了完全不同的看法。如果你感兴趣的话,这本书推荐你看看,记得带着脑子看。
RORIRI BENCH: 8 / 10
这·是·我·至·今·为·止·看·过·的·最·好·的·一·本·统·计·学·教·材(频率学派限定)!比张老师那本《现代心理与教育统计学》好了不知道多少倍!
对于频率学派的诸多基本款统计方法,本书提出了一个新的解释角度,讲实验设计与统计融合成了一个整体,以线性回归方程为起点和主轴开始讲什么样的情况应该怎么处理手里的数据。整本内容编排上非常利落,比如,没有罗里吧嗦的从头给你讲什么是平均数,什么是方差,反过来,它告诉你怎么样更加深入的理解方差和误差,它和平均数的关系在线性方程和最小二乘法当中是什么样的,这些知识在其他教材当中是根本找不见的,这是它极具价值的地方。再比如,他会好好的给你讲什么是抽样分布,什么是中心极限定理,讲道理这些东西每本书都应该讲明白,但是真的好好讲的书其实不多。
辛涛老师曾经以本书为基础编撰了一本中文版的教材,但因为没有继续出版所以现在已经买不到了。这本英文版要比辛老师的那本更加系统一些,对内容的介绍也更细致一些,不怕读英文的朋友可以看看。如果你在北师大上「回归分析与实验设计」这门课的话,推荐不要去买中文版了,直接上这本书,管饱的。
可惜 2020 年内没能把本书读完(方差分析太难了 T-T~)带到了 2021 年,希望月底前能把剩下的三章看完吧。
习惯传统讲授方法的朋友,推荐贾俊平老师的《统计学》,很多原理性的东西讲的很清楚。
RORIRI BENCH: 9 / 10 (对方差分析结果的解释真的好啰嗦,看着好想睡觉……)
《我们的七日战争》: 不良少年专用读物,没啥营养的轻小说,初中的时候借同学看结果被班主任撕了,这件事情让我耿耿于怀至今,过年收拾屋子的时候把这本书又掏出来看了看,依然觉得剧情有趣读的津津有味。
《我家住着赶不走的怪物》: 一本小漫画,从受害者的角度讲了原生家庭对于一个人的伤害。因作者对自己情感的理解非常到位,所以很多画面很有表现力,能引起成吨的共情,尤其是漫画结尾作者依旧没能走出伤痛的画面,令人颇为痛心。
整体上来看 2020 年的阅读计划推进的还是很顺利的,读的书估计比头二十四年还多,希望通过不断地积累,我的文笔和表达能力能够变得更好吧。去年还压了一些书在手机里,这本统计学教材看完之后得尽快消掉好买更多的书来看。
一些碎碎念:
2. 其实我并不是一个爱书的人,只是在能力提升上有异于常人的焦虑水平,所以会逼着自己看很多东西,这是病,别跟我学。
3. 实在做不动图了,简评的书就没插图,凑合看吧……
]]>先前我录过一集 Podcast 来聊 2020 年的新番,如果你不喜欢看文字,听播客也行。录制时秋番还没上,所以后面的新剧没有设计,如果有时间的话后面我会考虑补录一集(咕)。
杀人犯在产生杀意时,同时会产生「思想粒子」。收集这些思想粒子可以构建杀人者的精神世界「井」,通过探索这一精神世界、获得线索进而找到犯人解决案件。因为要探索的是精神世界,所以会存在相当多不符合常理的事件发生,比如建筑的碎片会漂浮在空中、建筑物会移动变化或是整个世界都被大火包围。
前警官、「连续杀人犯」鳴瓢秋人的工作就是去探索这些「井」。以名侦探「酒井户」的身份,进入到一个个怪异的世界中,通过理解「井」中世界独特的逻辑,抓出和犯罪者有关的线索并帮助其他警员解决案件。
整部作品的画风相当独特,无论是角色、画面还是其他过场动画的色彩饱和度都很低,调性很「素」。虽然颜色素但却没给人寡淡疲劳的感觉,是我很喜欢的类型。
除此以外音乐爆炸好听,尤其是第四集男主角穿越火海时的那段音乐本身不仅质量很高、充满力量感,而且将整个场景的氛围烘托的颇为完美。
有两点给人感觉有点遗憾,一是开篇的「推理」要素有点鬼扯(尤其是第一话章鱼烧店的那部分),但是这种鬼扯的推理也是构成整个故事非常重要的一环,所以很难评判这是好的还是不好的,只是我自己没有那么喜欢而已。二是后几集的结尾故事稍微平淡了一些,没有前期那么有力道,在观众的胃口被持续吊高的时候突然搞这么一下,真的很影响观影体验。
RORIRI BENCH 9 / 10。
今年哆啦A梦的剧场版拍的是真的精彩,除了以往哆啦A梦剧场版所表达的亲情、勇气等积极向上的要素之外,它带来了非常多新的东西,其中最值得讲的就是整体的叙事结构。故事当中的人物关系抛弃了以往单纯的正邪对抗,把全部精力都用在了构建性的叙事表达上。
这种新的尝试带来的是更加成熟的(与幼稚相对的概念,但我并不是说既往的剧场版看起来幼稚)内容和更具有包容力的价值体系。虽然说是完全不同的故事,但是编剧有意的让《哆啦A夢:大雄的恐龙》当中的元素贯穿整部影片,让旧作所表达的诸多情感元素点缀在新作之上,让老观众对本剧的观感更加的丰富,这点做的尤其好。
另外画面上,看得出制作组拿出了「日元不是钱」的气势疯狂的输出,整部影片的作画质量高得令人赞叹,尤其是接近片尾的那段,深蓝色的天空与亮红色的陨石,这种相互冲撞的配色让整个画面非常饱满,而且把气氛烘托的非常好。如果是前几部剧场版的话,这里可能会用橙色来处理,但是脑补一下,视觉效果可能就不会有本作这么出彩。
唯一令人遗憾的是,这种故事对于成年人来讲太过残酷,现实生活中没有这么纯净的情感,也没有那么鲜艳的理想。主题曲响起时不禁让人哽咽,你曾经梦想的东西不止不在你的手上,也不曾存在于这个世界。
RORIRI BENCH 10 / 10。
地缚少年花子君: 讲的是一名因为某些原因能够看到「怪异」的可爱女主和地缚灵「花子」之间发生的故事,画风独特,故事完整,叙事丝毫没有拖泥带水,虽有一点恋爱元素但是仅为点缀,点到为止丝毫没有粘腻感(?),虽然没什么深度但是是一部很好看的剧,8 / 10。
异兽魔都: 把血腥和暴力描绘的颇具美感的一部剧,最大的看点就是大量喷出的幻(??)和兼具华丽和扭曲的故事,另外 OP / ED 音乐做的特别出彩, 8 / 10。
别对映像研出手: 在一个平凡(至少在主角的眼里)的城市,一群孩子为了追寻制作动画的梦想而不断努力的故事。主角脑中的幻想的场景与「现实」交叠出现,突然出现的宏大场景配合着饱含「异域风情」的 BGM,营造出了非常独特的观看体验。我身边的许多人都被此剧深深地打动(但我没有),着实是一部好片, 8 / 10。
魔女之旅: (超级自恋)的灰发魔女,周游世界的旅行故事。整体上是一个给成年人看的童话,讲友情、讲亲情、讲各种美好的事物,但是也讲现实、讲背叛、讲伤痛和无奈。比较难得的是本作在积极向上和残酷黑暗之间找到了一个不错的额平衡点,使剧情颇具张力。画面方面,虽然是那种很大众化的画风,但是整体的作画可以称得上精致,以可爱的萌妹子为主角,但是没有过度卖肉,是好片, 8 / 10。
池袋西口公园: 整体的调性比较接近「无头骑士异闻录」和「GANGSTA」两部作品,群像剧,讲的是一个和地方帮派有关的故事。你肯定能够看到和毒品暴力之类有关的元素,但是难能可贵的是这些东西只是为了深入刻画人性善良的一种「独特的工具」。本作并没有「贩卖不良元素」并借此「博得眼球」,而是着重描写了一个个真实的人如何生活、「帮派」当中的人们如何建立信任。把人性当中的善良刻画的颇为生动,这是我推荐这部影片的主要原因, 8 / 10。
魔法纪录 魔法少女小圆外传: 「模仿的很像了,我也就看了三遍」——不愿透露姓名的某音乐人。我很认同这个说法,在画面、音乐和气氛营造上很接近原作,而且没那么虐。因为换了个制作团队,所以感觉上多多少少还是差了点什么,具体差的是什么又讲不太出来,7 / 10。
作为一名心理学专业人士,讲这个作品情很难做到不偏颇。虽然画面穷到不行,但是整个剧是真鸡儿好看,OP 也他娘的干爆好听。
整部剧建立在这样一个设定之上:每个人的内心当中都有代表美好记忆的「山」和代表痛苦记忆的「谷」。两名主角可以通过构建意象,进入他人的记忆当中进行操作,以达成各种各样的目的。如果破坏了他人的山,那么这个人就会成为「废人」,进而达成了「合法杀人」的目的。不难想象这种能力很容易被人利用,而主角就是被黑帮圈养的「宠物」,通过自己的能力来帮助他们做各种各样很脏的事情。
如果你读过我以前写过的文章,会发现我的研究经历和这部剧有很强的重合。比如从构建意象进入他人记忆的世界这件事情,我看到的是「社会活动中的脑活动同步」,而从修改记忆这件事情当中我看到的是「催眠」这项技术。「pet 的养成」所延伸出来的是不良的原生家庭经历对于一个人性格塑造的毁灭性打击。
你能从这部剧中看到角色们非常赤裸的情感诉求和因为过往经历所形成的各种「扭曲」(这里我并不想表达贬义,但是找不到一个合适的中性用词)的思维方式。从根里讲我和剧中的角色有着很多相似之处,因此看剧的时候会频繁的与之发生共情。
所以主观上来讲我很喜欢这部片,但是推荐它的理由过于奇葩以至于我自己都觉得没什么说服力。
RORIRI BENCH 7 / 10,主要是画面太穷了……
在 Psycho-pass 3 中出现了一个机构「彩虹桥」,他们的目的是找到西比拉系统的薄弱之处,对其加以利用并从中获益。
这部剧在观众之间充满争议,第一季的动画以其残酷和对社会问题的深入探讨为人所津津乐道,第二季则有些狗尾续貂,以至于我在观赏完毕后并没有留下特别深刻的印象。而第三季,也就是本作,进一步的削弱了故事的深度,把重点转向了动作戏、画面和一些「老粉」觉得莫名其妙的地方,比如,剧中的「反派」依旧是在以一种看似深邃的动机和逻辑在做事情,但是这些动机究竟是什么、背后的故事究竟是怎样的却交代的不明不白。再比如 Happy Ending 和甜而不腻的「发糖」(这也就是我所说的「完满」)颠覆了原作黑深残的既有印象。如果一定要将第三季从第一季上延续了什么,可能只有形式上的相似和故事的前后衔接,除此以外你可以把第三季当成完全不同的东西来看,或许不会被「伤的那么深」。
我喜欢深刻的故事,也喜欢完满的故事。可惜这两者很难同时发生,因为通常只有塑造了某些阴暗和残酷的悲剧,才能把一些深刻的东西以足够强的力量表达出来。 Psycho-pass 系列以一种非常微妙(且充满争议)的方式同时把这两件事情都做到了。
剧集结尾的 Happy Ending 是特别值得一讲的事情,它实在太过完满了,每个在残酷世界下苟活的人都得到了美好的结局,残酷的世界依旧在运转,但是每个人都从这些残酷的泥潭当中淘到了一些幸福,看到这里我也为止感到开心,没有为虐而虐,每个人都有了一个交代,啊,真好。
为剧场版铺垫的那几集番剧的剧情节奏略显拖沓,故事讲得不够深入这是我不喜欢的地方,优秀的作画、音乐、打戏和完满的结局是我喜欢的地方。把脑袋冰起来看,观影体验会非常卓越,推荐观赏。
RORIRI BENCH 7 / 10,请务必记得把脑袋冰起来看。
被众神捡到的男孩: 职场社畜半死翘翘后转生异世界成为史莱姆饲养大户,被职场摧残得遍体鳞伤的心因新世界当中人们的温暖逐渐治愈的故事。内容稍显空洞,但是治愈系效果真的很好,有时间的话可以看看,6 / 10。
听着这电波: 电波女主的鬼畜日常,该认真讲情感的时候认真将情感,该电波搞笑的时候毫不含糊,是一部很舒缓压力的作品,可惜结尾收的弱了点,6 / 10。
宝石商人理查德的谜鉴定: 治愈番,群像剧,7 / 10。
索玛丽与森林之神、小书痴下克上: 以家庭为切入点的治愈番,不矫情不做作, 6 / 10。
主要是「炎炎消防队」和「咒术回战」,老实讲我一直不太能看得懂热血番,只是觉得画面挺好,打戏挺好看的,但是为什么会被吹成这样我一直没理解上去……
任何一件事物真正死亡的时刻是他们从人们的记忆中消失的时刻。我们共同热爱的东西和珍视的回忆应当以某种方式被流传下去,在我看来这种文化的遗传远比基因的遗传更加重要。
对于我们这一代人来讲,「数码兽」或者「数码宝贝」就是这样一个重要的文化符号。「Digimon Adventure: 」是一种令这一文化传承下去的方式。 通过重制让新一代的小朋友可以同我们这一代人共同分享这段令人珍视的回忆,促进不同时代的人进行交流,我非常期待能够看到这样的结果,但事实上它造成的社会影响微乎其微,只有一小群「老粉」在「追忆童年」。
整部作品较好的还原了原作的感受,既有那些很积极向上的价值观,也有那些很 bug 的东西,比如拖沓的叙事节奏。它的叙事有多拖沓呢?基本我都是开 1.5 倍速在看,但比较微妙的是,你能看到它把不同数码兽的进化进度推的很快,以至于产生了是不是在赶火车的感觉。这种冲突真的很……难以言喻……
另外一个比较严重的问题是开篇的前几集做的极差,给人以:「大众脸」、「缺乏内涵」、「缺乏传承」的印象,更加令人感到咋舌的是:「三百六十度无死角的低龄化」。整个作品的表现更像是给幼儿园小朋友看的「Code Lyoko」而不象是出于周年纪念而制作的「Digimon Adventure」。这里的「面向小朋友」不仅仅包含剧情本身,还有整体的视觉设计、作画、音乐、分镜和音效设计。音乐是本作最大的一个败笔,真的很烂。
当然整部作品还是有好的地方,抛开前几集不谈,在剧情逐渐步入正轨之后,我还是从整个剧集当中找到了当年 Digimon 的影子,作品表达的核心主旨都没有变,叙事的风格也保留了原作的风格。在此基础之上人物性格的塑造也比原作更加丰满一些,比如本作美美的入场这段剧情和原作「怪蛙皇」城堡那段戏的比较,能够看出本作没有用很浓重的笔墨来刻画人物的负面特质,而是将重点转向刻画人性当中美好的一面,你能够更多的看到角色之间的互相理解、体谅,而不是一味的「从冲突中升华出友情」。
整体上来讲,如果你有闲的话这部剧还是可以看一看的。
RORIRI BENCH 6 / 10。
诚然每个人都有一些创伤性的经历,拿这些经历作为素材说事也无可厚非,但是这部剧对于创伤性经历和角色情感的描述过于浮泛、流于表面,以至看起来颇为矫情。从这个角度来看本剧的表现甚至劣于「迷家」。配上中二男主和龙傲天设定,整部剧看起来就还蛮奇葩的……
不过男主在剧集收尾时推心置腹的发言我由衷认同,但是拯救不了整部剧拉跨的观赏体验……
RORIRI BENCH 2 / 10。
其实数一数今年可以收到仓库盘里面的剧真的挺多的,翻了翻 2021 年冬番也是佳作连连,一切都在慢慢的朝着积极的方向改变,感谢无数冻鳗产业的工作者们所做的付出和努力,让这苦涩的 2020 年回忆当中能够点缀星星点点的美好。虽然这个世界很烂,但是尚存有驱动人们活下去的力量,这可真是不错。
]]>