我是如何重构笔记系统的

前两天 读完了 How to Take Smart Notes 后,就开始思考该如何来重构我的笔记系统。 我在很早就养成了记笔记的习惯,读过的每一本书,做过的每一个项目,日常生活中的一些灵感、想法,我都会记下来。“我很清楚,这世界变化有多快”,就像穆里尼奥的执教笔记,帮助他取得了足球教练生涯的好成绩,我的笔记为思考提供了土壤,也弥补了记忆能力的天然缺陷。 但是做了一段时间的内容输出后,我发现其中的一些不足,例如读书笔记中主要是摘录,很少有消化后的内容,而日常的想法又有些碎片,缺少上下文语境,也不能很好地进行归类整理。如果想要形成知识复利,那当前的增长利率看起来还挺低的。 思考了几天,我已经敲定了重构的方案,先来看下现有的笔记系统吧。 上图就是我目前从 信息输入 -> 笔记 -> 思考 -> 内容输出 的工作流。零碎的想法会记录在 flomo 上,打上一些标签;而读书笔记、学习笔记以及项目笔记,都是记录在 OneNote 上。在写 blog、newsletter 或是与朋友对谈前,我都会翻阅这些笔记,来获取需要的信息,帮助自己思考,更好地进行内容输出。 先来说说笔记软件的选择。 因为笔记系统在我日常生活中,不管是写入还是查看,频率都挺高,所以我对它的基本要求是全平台、能长久稳定地运行。OneNote 自然不必担心,微软(巨硬)财大气粗,我也相信它能比我活的更久。而 flomo 是一个比较新的卡片笔记 app,形象气质佳,我已经使用了近 300 天,输入便捷,该有的功能都有,不该有的功能他们也不会加上,如果对长久运行有些顾虑的话,至少他们承诺了 再服务 7 年。 当然软件只是工具,笔记也是,再好的笔记也永远不能替代思考的主体:你那聪明的小脑瓜。工具为辅,思考为主,重要的是,掌握思维框架,勤思考,才能形成知识复利。 在 How to Take Smart Notes 这本书中,介绍了卢曼的法宝,也就是那个卡片盒子,slip-box,里面存放了经过思考沉淀的永久笔记。回顾之前的工作流,就会发现,我的笔记主要重在于“记录”,而思考,往往要等到内容输出时才发生,这也就是这套系统比较低效的核心原因。所以,这次重构的重点,就是加上这个 slip-box,在信息和输出之间架起桥梁,在笔记记录的过程中提前思考,使笔记系统真正成为“第二大脑”。 上图就是重新设计后的工作流。大体上来看,就是在原有的笔记系统之后,加入了 slip-box,存放思考后的永久笔记。读书时的摘录、项目笔记,仍然记在 OneNote 上,因为 OneNote 的功能更强大,例如支持表格、绘图等,特别是在项目笔记中,还是有不少需要的场景,而且相比较于其他笔记,比较独立。读书笔记原本主要以摘录原文为主,这个习惯我暂时还不想改,而且考虑到迁移成本,就暂不做调整。 重点是调整了 flomo 的使用。零碎的想法,以及新加入的 slip-box,还有成体系的领域知识,都由 flomo 来承载。 flomo 有非常好用的标签系统,支持置顶和多级标签。 可以看到我在置顶标签里,新建了三个标签:inbox、slip-box、domain。 inbox 对应的是闪念笔记。任何想法,或是收集到的素材,都可以快速、无压力地写进来,标注好来源。但是这里存储的内容都比较临时,需要定期回顾,将有价值的内容,经过咀嚼后转换为永久笔记,然后转入 slip-box 并删除。 slip-box 对应的就是永久笔记。永久笔记应该是什么样的?我思考总结了三个原则:原子性、摩擦力、关联性。 原子性,就要求每一条笔记,只描述一个想法或观点,并且包含必要的上下文语境,如果是多维度思考的,就分开记录,并额外使用一张卡片做串联。 什么是摩擦力?就是将信息进行咀嚼,并吸收为自己的知识,而不是“光溜溜”地躺在笔记里。在闪念笔记里记录的想法、素材,在经过思考后,需要用自己的话来表述,记录自己的声音,写成永久笔记。这样会带来两个好处,一是经过了主动思考,印象会更深刻,二是内容上,已经有了完整的语境、上下文,以及自己的“声音”腔调,在需要写作或者其他输出时,可以直接拿出来用,不需要再经过重复多余的思考过程。 而关联性,就如同字面意思,使用 flomo 的链接、批注功能,将有关的笔记关联起来,形成知识链条,甚至是知识网络,足够数量的笔记会引起质变,这也是知识复利的关键。...

October 10, 2021

不能想象没有书的世界 | How to Take Smart Notes

翻开这本书是因为,近期有打算“重构”一下我的笔记系统。 我有记笔记的习惯,不管是看书、学习,或是灵光一闪的想法。我也有不少输出的渠道,写这样的读书笔记,写 blog,还有每周的 newsletter。不管是聊天也好,还是写文章,表达的越多,也会涌现出更多新的想法,我已经从中尝到了一点“甜头”,但是,以往的笔记习惯也显得越来越低效了。 这本 How to Take Smart Notes 就是在介绍一种高效的笔记习惯,中文版的译名是《卡片笔记写作法》。 书里重点介绍了德国学者卢曼(Luhmann) 的故事。卢曼是个公务员,业余时间爱好阅读社会学相关的内容,他将所有的笔记、想法写在小纸片上,编上号,全部收集在卡片盒(slip-box)中,并将有关的想法串在一起。这些源源不断的笔记,最终汇聚成了 50 本专著和 600 篇论文,还有大量的手稿和内容。 本书分为三部分。第一部分的引言里,介绍了卡片笔记的概念、方法;第二部分是四个重要的原则;第三部分则是关于如何使用这个笔记系统来更好地写作。 对而我言,最想了解的就是第一部分,后续写作相关的内容,稍显宽泛而冗长。David Perell 的写作课里有更多细化、可以实践的方法,所以草草翻完。接下来,还是聊聊让我印象深刻的几个点吧。 写作与思考 写作就是坐在一张白纸前,然后用文字将纸面填满的过程吗? 如果你有一些写作经验,答案是否定的,当然高考作文题可不算(苦笑)。写作是在表达想法,而想法,早在写作之前就已经产生,甚至在写作的过程中,会有更多的想法冒出来。 所以在写作前,这些想法的质量,就决定了文章内容的质量。就像一家好的寿司店,一定是在营业前就开始精心准备,从市场买来新鲜的鱼,剖开、清理、腌制好,最后才用一点时间,切片、捏成寿司、摆在你面前。 对于在思考,或是在做内容输出的人来说,这些想法是如此宝贵,然而人的记忆却并不牢靠,因此需要一套高效的笔记系统来作为“第二大脑”,存储想法,随着时间的积累,这些笔记就像雨水汇集成河流一样,形成知识的复利。 用机制来代替主动性 人都是想偷懒的,对吧? 如果让你制定一项计划,例如一年内看完 20 本书,你需要不断地 push 自己,不情愿地去翻开书,然后完成目标。 有主观能动性是好事,但前提是有。如果想要达到一个目标,但又没有特别强的积极性时,该怎么办?建立一套简单的机制就好了,例如挑自己感兴趣的书看,看书的时候做做笔记,看完了写一篇读后感,分享给大家。完成每一步都有些许的满足感,并且随着这套机制一次又一次的执行,你会收获更大的成就感,以及良好的习惯,我就是这么做的。 卡片笔记法也是如此,通过简单、固定的流程,提取想法,帮助思考。 如何写卡片笔记 这才是我想学习的重点。 方法也很简单:记录灵光一现的闪念笔记(fleeting notes),记录阅读的文献笔记(literature notes),然后将它们转换为永久笔记(permanent notes),并放入卡片盒中(slip-box),需要时取出来用就行了。 闪念笔记和文献笔记就不细谈,因为他们都比较“临时”,能做到快速输入就好,真正有用的是永久笔记。一张小卡片上仅记录一条永久笔记,而一条永久笔记里,只记录一个想法,这个想法可以理解为比较完整的观点,必须是用自己的话来表述的,包含了必要的上下文。当你需要表达、写作时,这些已经记录了自我观点的小卡片,就是强大的兵器库了,取出来就可以使用,不需要再来转述。 而在卡片盒中,相关的想法需要串联起来,做好双向关联。一个内容满满的卡片盒,会给你的思考、写作带来源源不断的内容,抬起一根细绳,你就能拉出一长串早已准备好的想法。 看完了这本书,我的下一步动作就是动手重构现有的笔记系统了,近期会思考实践一下,然后单独写一篇文章来介绍,如果你也有相关的想法,要和我交流哦~...

October 7, 2021

不能想象没有书的世界 | Talk Like TED

TED(Technology, Entertainment, Design) 每年会召集众多科学、设计、文学、音乐等领域的杰出人物,在大会上分享他们关于技术、社会、人的思考和探索。TED 的演讲拥有独特的魅力,不论是激动人心的故事,还是引人深思的想法,看完后总会有所收获。如此成功的演讲一定有成功的方法论,这本 Talk Like TED 就是在介绍其舞台背后的秘密。 书中一共有 9 个小秘诀,我就挑印象最深的 3 个来聊聊,其余会列举在文末,方便查阅。 激情 You cannot inspire others unless you are inspired yourself. 你能从演讲者的表情、腔调和肢体语言里,看到他的激情。如果演讲者只是平淡如水地念着稿子,想必你也会左耳朵进,右耳朵出,get 不到任何信息;而如果你是一名演讲者,没有激情,就没有输出的动力,反而会让自己变得紧张。 那什么是激情呢?激情是藏在心中,你认为真正有意义的事情,它会渗透在你的生活、工作中,它是你独一无二的“身份”,驱使你不断向前。站在舞台前,有激情的人,是很自然地在表达真实的自我,而不是默默地背稿,听众才会被吸引、打动。 但是有激情的人是少数,大部分人的生活都普普通通,我也是如此,那该如何找到自己的激情呢?书中提了三个问题: What do you do? What are you passionate about? What makes your heart sing? 前两个比较好回答,第一个就是当下在做的事,第二个则是目标,例如近几年或者近几个季度的目标,但是第三个问题,it’s really hard to say。看到这个问题的时候,我就开始思考,直到两周后看完了这本书,依然难以给出一个清晰的答案,当然我会带着这个问题去生活,努力做些尝试。 除了闷头自己找答案,还有另一种办法,就是找到有激情的人,邀请他进入你的生活。 你是有激情的人吗?或者,你有认识这样的朋友吗?如果是一个肯定的答复,欢迎私信我,我想和你成为朋友~ 新鲜感 人总是喜欢新鲜事物的。大家都知道,多巴胺是生理原因上的快乐,就像是大脑中的“保存”按钮,很容易将关联的内容牢记心中。如果演讲的内容比较新颖,能激发人们的兴趣,那就像是在键盘上,对着“保存”按钮一顿猛敲。 新颖的想法和内容很考验学习能力,得不断地走出舒适区,去新的领域探索。多花点时间和精力在这方面,绝对是值得的,不仅能丰富你的内容,更重要的是,你会变成一个有趣的人。 18 分钟规则 如果你多浏览一些 TED 的演讲,会发现时长普遍在 18 分钟左右。对于演讲而言,这是一个简短有力的时间范围,足够严肃,又不会让听众感到疲惫。 而在这 18 分钟内,内容通常会被分为 3 部分,因为人们能很轻松地记住 3 块信息。这一数字越大,就越难被记忆。我们的手机号有 11 位,背诵的时候,你也是分成 3 段来记忆的吧?这也是为什么,我只挑印象最深刻的 3 点来讲,其余的都不再是有效信息了。...

October 1, 2021

过期影像 | 20210926

“秋刀鱼会过期,肉酱会过期,连保鲜纸都会过期” 相册里的影像,放久了也是会过期的。 @涵涵 @过期头发 @lilpilot @lilpilot @lilpilot 当镜头穿过两列火车的缝隙 @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot 一朵正直的云 @lilpilot 一朵没礼貌的云 @lilpilot 丸子头井盖 @lilpilot @lilpilot 慌吗 @lilpilot @lilpilot @lilpilot...

September 26, 2021

英语学习回顾 - Stage Three

距离上一篇 英语学习回顾 - Stage Two 已经过去五个月了。 这五个月间,虽然也有保持日常的英文内容输入,但是感觉进步的速度有些放缓,预计获得阶段性提升的时间比想象的要长。当然,我学英语的目的并不是为了应试,对我而言,学习英语是一个长期的投资计划。所以在这一阶段,我调低了预期,拉长了整体的学习时间,并且改变了学习策略,采用“非均衡学习法”,以听力优先,尽可能融入生活。 什么是非均衡学习法? 费曼学习法强调了输出的重要性,利用输出来获取反馈,驱动整个学习过程。而且我也相信对于英语能力,有着短板理论,如果仅仅会听会读,但是不会写不会说,就不能证明英语能力好。 但是现在身处的环境决定了,很难有机会去说去写,也很少有人能给出准确的反馈。所以想要自学英语,采用费曼学习法并不是一个好的选择,那可以怎么做呢? 语言学习是一个 输入 -> 理解 -> 输出 的过程,使用“非均衡学习法”,就是把重心放在输入环节,通过大量的听力、阅读,优先提高辨识和理解能力。那输出呢?试想一下,如果你听不懂别人在讲的内容,又怎么能和他们正常交流。所以,先保证自己能听懂、看懂,等到有机会时,再去联系口语、写作也不迟。 在输入环节中,主要练习的就是听力和阅读,而我采用的是以听力优先,阅读为辅。 为什么是以听力优先? 因为这是最自然的学习方式。 小孩子学习语言的时候,是先学习阅读的吗?并不是。小孩子在听大人讲话,听得多了,在脑中就会建立声音与事物、概念的联系,然后再通过识字,建立与文字的联系。更何况,阅读的时候,会在心里“听到”文字所对应的声音,一定程度上,听力的辨识能力也会帮助提升阅读的流畅度。 不同于应试教育过程中听到的,那些精心设计的对话音频,你在生活中实际听到的英文内容,可能会充斥着连音、吞音,不同的地区会有千奇百怪的口音,甚至有很多“懂得都懂”的俚语,这些都会加大听力的难度,但学到的都是很实用的内容。例如,我在唢呐的嘻哈英文课里,就学习了不少嘻哈文化里常常能听到的“偷懒”发音和 slang。 当然,非均衡的输入练习需要花费大量的时间,成年人的时间总是很宝贵的,而在我学习英语的过程中,实际上并没有额外付出很多的时间,诀窍就在于把英语学习融入日常生活。 如何将英语学习融入生活 融入生活,就是将生活中的部分中文内容,平滑地替换为英文内容。例如将日常浏览的资讯源切换为英文网站,将打发时间看的长短视频换为英美剧,平时阅读的书籍改为看英文原版。不过要注意衡量自己的英语能力,挑选合适的内容,降低输入门槛。 我是怎么做的呢?15 分钟的通勤路上,我会听一期 EnglishPod 来学习单词、短语,目前已经听了 106 期;每天会检查一下邮箱列表里订阅的 newsletter,比如通过 Morning Brew 了解当天发生的世界新闻,通过 Emerging Tech Brew 了解 IT 相关的新闻。最近也有订阅一个帮助英语学习的英超周报,作者每周会更新一篇自己撰写的战报,并附上一段音频,讲解其中的词汇和术语。顺带一提,我在公众号上更新过两期 English Brew,就是受此启发,而素材来源,正是 Morning Brew 。中午午休的时候,原先都是在 bilibili 上看一些 up 主的视频,现在会固定看一集 Netflix 上的美剧,打开英文字幕。我的阅读书单,也正在逐渐更新为英文原版优先,虽然刚开始啃起来有些费劲,但能感觉到阅读能力的进步。其他零碎的冲浪时间,我会刷一刷 Reddit 或 YouTube。 以上就是我在这一阶段英语学习过程中的总结,积累的过程会比较漫长,因此我调整了学习策略,并将学习融入日常生活。而在英语学习上投资了这么久,是否有所回报呢?答案当然是有,在专业能力、各种软技能的学习上,我接触到了很多中文互联网上所没有的内容,例如软件架构编年史、David Perell 的写作课程,而通过阅读英文原版书,也能避免生涩的翻译所带来的理解偏差。 这些仅仅是开始,期待下一阶段学习所带来的成果。...

September 12, 2021

为什么读书很难获得知识

最近这段时间,我和书的关系很差,似乎有些厌倦了阅读,坐下来静静一想,或许是因为从书中得到的,有些低于自己的预期了。 正巧翻到 Why books don’t work 这篇文章,就结合自己的一些阅读经历,思考总结一下原因。 读书能获取知识,你和我都是这么认为的吧。然后花 6 - 9 个小时来阅读非虚构类的书籍,像是《思考,快与慢》、《原则》等等,但是看完书后,只记得几个句子,却回忆不起来更多的细节。所以最后收获了多少知识呢?少得可怜。 似乎得出了一个奇怪的结论:书本作为传递知识的媒介,实际上表现的很差劲,而且读者往往意识不到。可是回顾人类的历史进程,高尔基说“书是人类进步的阶梯”,也有数不清的例子能证明,人们确实能从书里汲取知识。 知识就在书里,为什么我们很难获得呢? 为什么读书很难获得知识? 我们来比较一下,三种常见的传递知识的媒介:讲座、书和课本。 在讲座上,演讲者能很好地抓住你的注意力,但是很难有效地传达知识,为什么呢,因为演讲只做了一件事:传递信息。演讲者说出想法,台下的人听到句子,然后去理解。 书也是如此,作者用文字表述想法,读者阅读文字,然后去理解作者的想法。在这种认知模型下,演讲和书本就像是赛前的热身,而真正的思考,需要听众、读者在这之后,主动地去触发。 那些获取到知识的读者,实际上是在阅读时“偷偷”地思考,一边读一边想,“这个观点让我联想到了 blablabla”,“这个观点和谁谁谁说的有冲突”,他们在整理、总结和分析,构建知识的正反馈循环。 课本则更进一步,提供了练习、讨论题,目的是为了让学生深入地参与其中。然而现实却令人失望,学生更倾向于上课,因为课程限定了范围和程度,学生不需要自己来设定学习计划,还可以通过考试获得反馈,通过课上讨论来解答疑惑。 书本承载了知识,但是仅仅通过阅读,你只能获得有限的信息,而知识,需要你主动地去收集,思考,然后消化。 那该如何获得知识? 前人已经总结了许多关于学习知识的方法论。例如费曼学习法是通过复述概念、获取反馈来促进学习。我在 《如何在一个月内,从旱鸭子变成游泳高手》 里,也总结了学习技能的正向循环。 至于获得知识的渠道,那更是多种多样了。你可以看视频,直接、生动地理解一些抽象的概念;也可以听播客,充分地利用碎片时间;或者参与线上、线下的课程,通过提问、讨论来解答心中的疑惑。重要的是,你得主动出击,积极思考,而不是被动地接受信息。 如果决定了要从书里获取知识,《如何阅读一本书》教会了我,在阅读一本书的时候,要给自己提四个问题:这本书是写什么的?它是怎么描述的?写的好吗?和我有什么关系?在阅读的同时,通过这个 check-list 来引导自己思考。读完一本书后,也可以记录、整理自己的想法,写成文章并分享出去。现在,我每看完一本书,就会写一篇阅读总结,相比较于之前单纯的笔记摘录,写作时会有更多的主动思考,也会有更深的印象。如果针对某个领域,已经有了系统的认知,又想要对某一块进行针对性的学习,就可以挑选相关的书籍,进行主题阅读,在不同的观点碰撞中找寻答案。 知识就散落在书本的各个角落,主动地拾取书中的碎片,无数渺小的阅读汇集成知识,填满你的一生。 除了知识,书里还有什么? 如果一提起书,想到的就是知识、学习,那很多时候,恨不得立马把书本扔出窗外,逃离这枯燥的文字世界。 书里还有历史,有故事,有情绪,有天马行空的想法,也有不轻易谈吐的心路历程。 还有声音。“阅读就是抛弃自己的一切意图与偏见,随时准备接受突如其来且不知来自何方的声音”,卡尔维诺在《如果在冬夜,一个旅人》里发出了这样的声音。坐在安静的书桌前,翻开书本,就像是在人来人往的聚会里穿梭,侧耳倾听一个又一个的对话,有的对话会让你感到不屑,有的对话会让你默默点头,甚至悄悄地改变你的人生轨迹。 无论是为了获得知识,还是感受不一样的生活和思考,在文字的冒险世界里,祝你旅途愉快。...

September 4, 2021

不能想象没有书的世界 | The Phoenix Project

这是一本小说,讲述 IT 运维进化为 DevOps 并帮助公司取得商业成功的“传奇”故事。 我看的是英文原版,厚厚的一本,刚开始啃起来还有点费劲,有很多不熟悉的生词,在不影响理解上下文的情况下,我都直接跳过了。 说回书中的内容,故事的主角,Bill,有些意外地成为了运维部门的 VP,新官上任,就将面临巨大的考验。混乱的项目管理,各部门之间的利益纠葛,业务步步紧逼的压力,都是 Bill 需要翻越的大山。 幸运的是,Bill 遇到了一位优秀的导师,Eric。Eric 指点 Bill 使用三步工作法梳理工作流程,将日常工作划分为四类,分析并解决工作流中的瓶颈,思考如何更快地帮助业务前进,然后逐渐形成了 DevOps 的文化。 相比较于纯粹讲述方法论或者解决方案的专业书,这本以小说的形式,生动地描述了 IT 行业内会遇到的种种难题,以第一人称的视角来思考,结合方法论来解决问题,更有带入感。 书中有两点令我影响深刻。首先是 Eric 这个角色,为 Bill 指点迷津,一步一步地帮助 Bill 思考和解决问题(所以,为什么不让 Eric 直接领导整个 IT 部门?),不得不感叹,这就是生命中的贵人吧,如果有缘遇到这样的高人,可一定要多多请教。同样地,也不能吝惜自己掌握的知识,有机会也要多帮助他人。第二点是关于信任,公司的 CEO,Steve 在动员大家全力投入凤凰项目时,轮流让高管、组员讲述个人经历,拉近相互的距离,能让大家产生信任感,“Solving complex business problem requires teamwork, and teamwork requires trust”, that’s right。 另外书中有涉及到的一些方法论,摘录在下方,方便在日后的工作过程中,回顾和思考。 一张图 这张图展示了资源使用率与等待时间的关系,当资源使用率超过 80%,等待时间就会直线上升。 例如在一个单位时间(1 小时)内,你有 90% 的时间在忙碌,依赖你的等待时间就会是 0.9 / 0.1 = 900%,也就是 9 小时,会严重阻塞工作流。 三步工作法 第一步是构建从左到右(开发 -> 运维 -> 客户)的工作流,使用 kanban 等工具将流程可视化,通过持续交付(构建、集成、部署)来优化、趋近整体目标。 第二步是沿着从右到左的价值流,持续地快速反馈,将利益最大化,防止问题重复发生或快速修复,这样就能从源头上保证质量,沉淀领域知识。 第三步是创造公司文化:勇于尝试和重复练习。尝试需要承担风险,并能从成败中吸取经验教训,而一旦出现问题,重复练习带来的成熟度,能让项目回退到安全地带,恢复正常运作。 四种工作类型 业务项目 内部项目(基础架构、运维工具和平台等) 变更(通常由 1、2 引起) 计划外的工作(生产事故等救火工作) ...

August 15, 2021

什么是事件驱动架构

Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events. - Wikipedia 什么是事件驱动架构? 按 维基百科的定义,事件驱动架构(EDA)是一种软件架构范式,促进事件的产生、观测、消费和反应。 在认识事件驱动架构之前,先来明确一下,什么是事件。 事件是已经发生的事实,并且不可变。例如,“创建订单”是个指令,而“订单已创建”就是个事件,订单的信息、订单创建的时间,在这个事件发生后就无法被修改。 在传统的架构体系下,编程思维可以说是过程驱动的,一个指令触发了一段逻辑,这其中可能包含了几个不同的方法行为,它们之间按照过程顺序来编排、嵌套。看起来似乎很清晰,但是很容易写出长长的“面条”代码。而事件驱动架构则强调了事件的产生与消费,将逻辑的过程转换为事件之间的环环相扣。 就如上图所展示的,如果采用事件驱动架构,订单服务就只负责订单的创建,然后发出“订单已创建”的事件,交由 EventBus 路由,转发给关心这个事件的各个监听者。 在我的开发经历中,也有采用事件驱动架构的项目,接下来,就结合自身经验,总结一下 EDA 的优缺点和其适用场景。 EDA 的优点 解耦 首先,解耦是事件驱动架构所带来的最明显的优点。从上述的例子中就可以看出,采用了 EDA 后,订单服务只需要负责处理对应的业务逻辑,而其他的切面逻辑,例如操作记录、发短信等,都可以通过事件的通知机制来解耦,从而保证业务逻辑的简洁、专注。并且,这些切面功能点可以考虑使用异步处理,也能很好地提升系统的响应能力。 DDD 与事件风暴 在领域驱动设计(DDD)中,如果采用 以“领域事件”为核心的建模思路,与业务人员通过事件风暴的形式来梳理业务流程,就会得到一系列的事件列表,也就是事件驱动架构中的所有事件。从业务人员到开发人员,从真实业务逻辑到系统设计实现,都以这些事件为核心,就能够形成统一语言,方便沟通和理解。 事件溯源 事件上存储了必要的信息和时间,如果将所有的事件持久化,结合最初的实体信息,你就拥有了一台来去自如的时光机。例如在一个资产管理系统中,存储了“资产已入池”、“资产归属已变更”、“资产已出池”等所有的事件,并且存储了资产初始化时的快照数据,就可以根据快照数据和给定时间范围内的事件列表,重新计算出某个时间的资产数据,这就是事件溯源。如果整个生命周期中事件量很大,可以考虑定期给实体做快照,溯源时获取最近的一份快照数据。事件溯源能给业务提供更灵活的数据支撑,同时,因为存储了所有的事件数据,也保障了系统的故障恢复能力和数据一致性。 EDA 的缺点 系统复杂度 “在软件工程中,没有一个中间层解决不了的问题”,事件驱动架构,就是通过引入中间层 EventBus 来实现事件机制,看似能带来不少诱人的优点,也必然会增加系统的复杂度。Spring 虽然有提供事件机制,但是比较简单,如果有复杂的使用场景,得考虑自己实现。 事件驱动架构改变了编程思维,一切都围绕事件的发布和订阅,将完整的功能过程,拆解为了不同的事件,也丧失了过程驱动带来的叙事能力。如果事件数量众多,就容易在“事件丛林”中迷了路。 使用场景 软件工程没有银弹,事件驱动架构也有其适用的场景,结合上述优缺点,个人认为,以下几个方向可以考虑采用 EDA: 组件解耦(消息推送、操作记录等) 数据沉淀系统(审计、资产等) 常规的业务逻辑里,如果有一些切面组件,例如消息、操作记录,可以接入轻量的 EDA 来解耦,保证业务逻辑清晰和职责的单一;而在数据沉淀系统中,例如审计、资产等领域,通常没有特别复杂、长链路的业务逻辑,由业务系统来触发更新数据,更关注的是数据的准确性、一致性,就可以考虑使用 EDA 和事件溯源机制。...

July 11, 2021

过期影像 | 20210704

“秋刀鱼会过期,肉酱会过期,连保鲜纸都会过期” 相册里的影像,放久了也是会过期的。 着急回家吃车厘子差点错过不过期的粉雾海 @涵涵 @过期头发 春天在屋里 @lilpilot 岛雨 @lilpilot 喝好咖啡 @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot 一只假鸟 @lilpilot 一只真鸟 @lilpilot Summer Remains @lilpilot...

July 4, 2021

不能想象没有书的世界 | 《日常生活中的自我呈现》

这本书是关于社会生活的研究报告,从生活记录、生活经验中抽取认知框架,来分析英美社会活动中的底层逻辑。 “人”这个词,最初的含义是一种面具。 无论在何处,每个人会或多或少地意识到自己在扮演一种角色。书中就是使用了舞台剧的模型,来讨论个体在日常生活中,如何向他人呈现自我,引导和控制他人对自己的印象,以及在他人面前维持表演时可能会做、不会做的各种事情。 舞台剧这个解释模型还是挺贴切的。表演者的目的是维持特定的情境定义,所以会有舞台设置;多个表演者会形成一个剧班,在前台给观众呈现表演,又在后台有不一样的行为,例如一些“秘密”的交流;除了台下的观众,还有各种角色,例如告密者、托儿、局外人;表演可能很精彩,也有可能会崩溃,所以会有很多的行为策略。 书中有大量的引用记载和举例来支撑这个模型,例如波伏娃是这样描述女性在前后台活动的区别:女人在男人面前总是演戏,她会假装乐意接受那种无足轻重的地位,装腔作势……然而,女人与其他女人在一起时,她就像是在幕后;她擦拭装备,但并不是要投入战斗……对有些女人来说,她们之间那种温暖亲密的关系要比和男人在一起时那种严肃的虚饰可爱多了。 生活中的例子也数不胜数。不同阶级之间的阿谀奉承,职场里的尔虞我诈。出色的表演能竖立好的角色形象,演的不好会遭人耻笑,如果表里不一就容易翻车,这样的场景,微博吃瓜网友表示再熟悉不过了。 当然,因为是社会学的底层逻辑,在日常生活中或多或少都有接触和感悟,所以通过这本书很难学习到什么实用的技能,倒不如挑几个有趣的点,结合书中的模型来解释、思考一番。 首先是关于角色扮演。如果我想在行业里变得很优秀、厉害,那是不是只需要观察、模仿那些优秀的人,并且表演出与他们一致的行为,就意味着自己是这样的人了?对于这个问题,需要区分一下人和角色,人扮演的产物是角色。通过观察、模仿、学习和进步,我们可以很好的扮演一些角色,而正是在这些角色中,我们互相了解,并认识自我,在人性化的自我(人)和社会化的自我(角色)之间来回摇摆,并找到平衡。值得注意的是,在到达了一个梦寐以求的位置,成为一个新的角色后,往往会发现,新老处境会有始料未及的相似之处,因为这又是一场表演,有着光鲜亮丽的前台,以及肮脏、琐碎的后台。 然后是关于表达和行为的冲突。就像萨特说的,“一个试图显得很专心听讲的学生,两眼紧盯着老师,竖起耳朵,结果却什么也没听见”。为了解决这种困境,一些组织就会把功能委托给专家,专家只负责对工作进行戏剧化的表达,而不是真正参与工作。这让我想到了一个观点,如果要用一句话来概括创作者经济,就是 B 级玩家(内容创作者)给 C 级玩家(普通听众和新手)讲述 A 级玩家(顶级创作者和艺术家)的成功之道。在互联网上,神奇的算法决定了我们最容易接触到的内容都是来自于 B 级玩家,而需要警惕的是,真正有价值的内容是来自于 A 级玩家。所以,在浏览内容的时候,要尽可能地通过 B 级玩家的筛选管道,来靠近 A 级玩家那些有价值的思想和内容,而不是仅仅沉溺于 B 级玩家的内容创作之中。 最后是关于欣赏表演。如果是欣赏一场表演,最合适的角色自然是观众,能直接地接收表演者所要传递的内容。而除了观众之外,还有一种角色,局外人。我自己一个人去 livehouse 或者 bar 的时候,有时候就会扮演局外人。游离在演出的边缘,去观察表演者、观众的行为,去感受整个表演的氛围和情境。偶尔会因为自己这样子的“闯入”,遇到一些很有趣的人和事,例如不知道怎么点酒的人,第一次看 live 的人,当然,随后产生的一些互动,会让游离的局外人也加入了整场表演,成为了有趣的一部分。 呐,暂时只想到了这些。 人作为社会化的动物,喜欢也好,排斥也罢,是逃离不了表演这种社会行为的。所以,手捧《演员的自我修养》,练习,并做好每一场演出,在一个又一个角色之中,找自己。 最后再吐槽一句,翻译是很难做好的事,而这本书的翻译,显然不咋地。...

June 30, 2021