code 1076536 640

Jest 如何将复杂的判断条件中的具体问题暴露出来?

在写测试的时候,如果你需要对大量的数据进行 compare 处理的时候,你大概率不会把所有需要对比的对象都列出来,而是选择直接循环处理。 在测试中如果有循环处理的时候,很有可能会出现的一个问题是你可能无法在测试无法通过时快速定位道具体是循环中的哪一个元素出现的问题。这个时候的定位就会比较麻烦。 一个比较好的办法是,可以在 Jest 中加入 try/catch 中来处理错误,这样可以在出现错误的时候,打印一些辅助信息来快速定位,比如 it(‘test-error-catch-example’,() => { let needTestData = [1,2,3,4] needTestData.foreach( item => { let result = doSomething(item) // 这里开始是新增的 try{ expect(result).toBe(true) }catch(e){ console.log(“error…

silver mercedes benz emblem on blue surface

在开发 Gutenberg 插件时,如何处理防抖?

在开发 Gutenberg 插件时,如果你需要对编辑器的内容进行处理,则需要为其加入防抖措施,避免你的函数被频繁调用。 思路 由于编辑器需要高频处理,因此需要采用防抖策略,避免将多次输入视为不同的事件。这里可以使用 WordPress 提供的 useDebounce 来实现控制。需要注意的是,WordPress 自动的 Debounce 函数传入的参数应当采用 useCallback 来进行包裹。 参考代码 import {subscribe} from “@wordpress/data”; import {useDebounce} from “@wordpress/compose” import {useCallback} from “@wordpress/element”; const debounced =…

javascript

为 Express 项目添加文件变更自动刷新

我最近在准备开发新的 WordPress 的主题的工具,为了方便自己开发主题,正在准备一个脚手架,本文是开发过程中的经验总结。 白宦成 在进行主题开发的时候,一个很好的体验是来自于变更能够实时生效。过去我们想要实现这样的功能需要自己手动刷新浏览器。但随着前端技术的进步,我们可以借助诸如 browser-sync 这样的工具来完成自动的刷新,从而实现无需手动刷新,代码修改后自动刷新。此外,除了 browser-sync, 你还可以选择 webpack-dev-server。 原理分析 此类工具的工作模式是比较简单的,一般而言,会要求你设定一个代理的端口,他会将对应端口的请求进行转发,并在其中加入 BrowserSync 的 JS 文件,从而实现可以无需手动操作来刷新。 browser-sync-client.js 而其刷新的能力则是源自于 BrowserSync 本地提供的 WebSocket Server。嵌入的 JS 文件中加入了 WebSocket 的相关链接代码, 从而实现从 Command Line 当中获取刷新指令,前端则在获取到指令后进行刷新。…

9a1f326b911de6c1629837f3b57551e5

为 Excalidraw 添加中文手写字体

…// 这一行是新增的 }; Code language: JavaScript (javascript) 在控制台上添加对应的调用 当你完成了这些基本的配置后,最后就简单了,只需要在 src/actions/actionProperties.tsx 中的 actionChangeFontFamily 中添加对应的 value 即可实现新字体的引入。 { value: FONT_FAMILY.XiaolaiSC, text: “小赖字体”, icon: <FontFamilyLaiIcon theme={appState.theme} />, }, Code language: JavaScript (javascript) 参考代码:https://github.com/bestony/excalidraw/commit/f308dc32a958e4cb4fb4658cd9a5c9a19ad6d683…

programming language

记录一个令人血压飙升的前端项目

最近在看一个前端项目,里面出现了一些令人血压暴涨的骚操作。虽然可以用,但对我来说,确实是让我看到血压飙升。 1. 尽可能使用常规的指标 项目的诉求是实现页面的自适应化,在不同尺寸的屏幕上尽可能保持一致的显示。 为了实现这个诉求,我给他们的建议是使用 Bootstrap 之类的框架,在不同的屏幕上尽可能保持一致。使用 Bootstrap 之类的框架来完成。 最后研发团队选择采用了一个有用,但我看起来非常头疼的方法 —— 根据屏幕宽度计算 rem。通过这样的方式,实现了在不同的屏幕宽度下,都可以和设计稿的尺寸一比一。 但这样带来的问题是,rem 计算出的结果也是一个非常的大的值(当然也可以非常小),但依然不是一个常规的结果,需要你常常使用诸如 0.03 这样的数值来指定宽度和高度。 我觉得,这样的写法并不是说不行,只是这样的写法其实会降低整个项目的可维护性。 2. 文件放置符合规范 其次,这个项目中还出现了一个问题是 —— 文件到处乱丢。在一些项目中,大家往往会有一些明确的文件路径的规范,比如样式文件应该放在哪里。在这个项目中,就出现了样式乱丢的情况。 和 Component 放在一起 符合规范统一放在 scss 文件中 这样的混乱的写法则会导致在实际开发的时候,如果想要调整样式,可能会出现调试失效,修改起来较为混乱的问题。…

blue and black circuit board

我不后悔我学的是 EE

我并不是一个学 CS (Computer Science)出身的工程师,我是一个学 EE(Electrical Engineering)的工程师。我的大学本科专业是 —— 电子信息科学与技术(Electronic Information Science and Technology)。 虽然本科不是 CS ,没办法如其他从业者一般,系统性的学习数据结构、计算机原理等一系列基础课程,给我的计算机从业带来了一定遗憾。但好在这些经典内容我可以通过 Mooc、自己阅读相关的图书来获得,虽然不能说学的就比人家科班的好,但好在是够用。 此外,软件行业的从业比较依赖你的实战能力,我因为喜欢 CS,所以其实从初中就开始 Coding ,当我毕业的时候,已经 Coding 了近 10 年,越过最基础的那些痛苦的日子,倒是也不影响我就业。 反倒是 EE 的背景,赋予了我无限的可能。我可以从事前端、后端的工作,但同时也可以成为一个嵌入式工程师(毕竟大学整这玩意的),也可以自己亲自上手设计板子、焊板子,给我了不一样的可能性和未来。 反倒是出身于 CS 的同学,因为所学内容和所工作内容的高度一致性,很难表现出背后的交叉价值,比较难有更多的选择。…

black smartphone screengrab

《冯唐成事心法》书摘

…智慧是三观、方法论、进退的分寸,包括对灵、肉,以及情绪的管理,等等。 慈悲是善良、底线、同情心、有所不为和有所必为等等。 美感是对于眼、耳、鼻、舌、身、意,综合愉悦的感知力和鉴赏力,说不清,但就是知道。 如果想学作文,就应该扫荡旧习,在一个干干净净的地上立出自己的旗,把之前会的、之前存在的都抹去,这样才能开始有新的东西出现。 西方人有《小说的五十课》,中国人有《文心雕龙》,这些大部头的文论都构建了相当复杂的标准体系。 简洁的版本也有,西方人有好文章的“6C”: 简洁的版本也有,西方人有好文章的“6C”:Concise,Clear,Complete,Consistent,Correct,Colorful,就是简约,清澈,完整,一致,正确,生动。更简单地说,表达的内容要能冲击愚昧狭隘的世界观和人生观,探寻人性的各种幽微之火,表达的形式要能陈言务去,挑战语言表达能力和效率的极限。 为什么要跳槽?三个原因。 1.为了修行,为了成长。这是在职业生涯早期最常出现的一个因素。 2.为了成事,为了能够再成更多的事,再成更多的大事。 3.为了钱。我从来不回避钱,一定数量的钱是必需的。钱财、物质基础,能让我们活得像个人样,活得有些尊严。 总之,没学习,没事干,钱不够花,考虑跳槽;没劲,不想去公司,不想跟同事花时间,非常想㨃老板,也可以考虑跳槽。 所以在跳槽之前,一定要关注跳槽之后跟谁直接汇报,你需要跟他见两次,甚至两次以上。争取有一次能够吃饭,能够喝点小酒,还有一次能够在他非常累,甚至心情不好的时候,跟他聊一次; 什么是好领导?简单地说,就是推功揽过,自己能承担责任,自己能立得住;能给下属做事的机会;自己有上升空间的。符合上述三点,就是好领导,选准好领导,跟着他,跟的时间长一些。 金字塔原则就是:讲一个事情,会有一个中心论点,这个中心论点会被一些论据所支持,这些论据要完成“不重不漏”,即互相没有重复,合在一起又不漏掉基本点。 从上到下、从下到上,你要反复几次。从下到上的时候,你要收集论据,归纳出中心思想,从而建造成为坚实的金字塔。 在麦肯锡有一个非常重要的关系,叫“Mentor-Mentee”,翻译成中文是“导师和徒弟”的关系。也就是,上级手把手、言传身教地教下级怎么做生意。 好的上下级关系,应该是“Mentor-Mentee”的关系,也就是好的导师和徒弟的关系。上级不只是领导下级,不只是让下级去做事,而下级也不应该只是为了一份工作而讨好上级。 如何正确看待运气有两点:第一,事情成败全靠运气;第二,和运气对赌。看似矛盾的两点之间,大有深意。 做事的实质是什么?是跟运气去赌。 1.做事才能进场,才可以谈机会。 2.做事才能增加胜面。不做事,会受运气摆布,运气有可能今天给王五,明天给赵四,它眷顾的未必是你。但是你通过努力、通过修炼,能够增加成事的胜面。 古人总结的成功十大要素:“一命二运三风水,四积阴德五读书,六名七相八敬神,九交贵人十养生。”前三个要素一点都不涉及个人努力。 要把事情放在个人之前,放低自己,放大事情本身。我们立一个更宏伟的志向,立一个让世界更美好的志向,便把这件事放在自己之前。如果说在做事的过程中,永远第一位想的是我、我、我、我、我,焦虑感容易越来越重。如果你把成事、把一个更高远的目标搁在自己之前,你会发现,焦虑感相对容易控制在一定水平上。你会觉得,我尽我自己最大的努力,这件事成了固然好,不成,我也只能说我尽力了。无常是常,“无可奈何花落去,似曾相识燕归来”,有这种无我的心态,焦虑感就不会有那么重。 1.选一个好的CEO,好的一把手; 2.为他配一个能够跟他共同工作,又能跟他形成互补的核心团队; 3.CEO、团队、相关人员一起制定出一个制胜的、扎实的战略; 4.确定战略激励方案; 5.在战略执行过程中,建立防火墙、护城河,建立这个机构本身特有的竞争力。 这是一个在很多领域都实用的成功五要素。…

Internal Bleeding printed paper

《高级零工:如何将个人技能有效变现》书摘

村上敦伺 序言 有句古话叫“枪打出头鸟”。“无休止地继续工作是一种美德”的价值观在日本广为传颂 公司主导的改革终归以企业的利益优先,为此耍些小聪明的做法似乎不可避免。 01 给朝九晚五的生活画上句号 但凡从事的是技能或技术在市场上有一定价值的职业,你都可以去从事自由职业 我决定追寻真正的自由 “如果现在有人问我‘何为人生的幸福?何为人生的目的?’,我无法脱口而出。为了定义人生的要素,我辞职了。” 和以前相比,上班族的“好处”减少了 在经济高速增长时期,人们在工作上遵守着年功序列制和终身雇佣制,工作之余建立起自己的家庭,等到相应的年纪会晋升上管理层,退休后有足够的退休金和养老金,过上悠然自得的老年生活。这是上班族典型的人生模型。 上班族的成功模型是以持续增长为前提。而实际上,这一模型正在崩溃。在目前经济衰退的局势下,对上班族来说,进入管理层的难度逐渐上升。甚至,晋升管理层已经成了一个基本不可能达成的目标。 有的人想乘上名曰大企业的“大船”,殊不知这些大船常常会在不经意间悄然沉没。即使大船没有沉没,这些人也会遭遇“没有燃料了,给我下船”以及企业重组裁员的情况。 即使没有“超高觉悟”,也可以从事自由职业 自我价值的实现也可以在通过创业获得的自由时间里达成,创业赚钱的理由也可以是人类非常单纯的“生存需要” 单飞的好处在于“抽成”的差价 被当成“社畜”饲养,任企业榨取价值,是一件多么可惜的事 有很多上班族着力于提升自己的职业技能,但他们实际上缺少的是“提升单价”的眼界 用“擅长的事”而非“喜欢的事”挣钱 对和我们一样的普通人来说,用“擅长的事”而非“喜欢的事”挣钱,这种模式才是最容易复制、难度最低的创业方法 在上班族的“延长线”上从事自由职业 如果以经营三要素“人”“物”“钱”作为框架进行考虑,人的要素还可分为“自己”和“别人”,由此可以划分出四种创业方法 凭借市场价值高的职业创业 [插图] 要做好接受创业缺点的觉悟 上班族时期,你一般必须遵守人事调动。而当你成为一个自由职业者后,你可以自由裁量要不要接受代理人介绍给你的工作,或委托人给你的工作。只有双方达成一致,合同才会成立 04 最小限度地生活 《竞争的战略》(Competitive Strategy)…

summary

2022 年 9 月月度总结

…没怎么进行文娱活动,还在持续看书。 KR3:借助智能化设备,缩减在家务相关事务上耗费的时间 暂无。 Objective 3 :开拓视野,打造多元行业人才 KR1:写 15 篇书评 没写出书评,但把书摘发出来了。。。水一下。。。 https://www.ixiqin.com/2022/09/29/the-wealth-come-from/ https://www.ixiqin.com/2022/09/28/from-the-content-hot-style-the-underlying-logic-highlights/ https://www.ixiqin.com/2022/09/27/good-mood-practice-handbook-highlights/ https://www.ixiqin.com/2022/09/26/siddhartha-highlights/ https://www.ixiqin.com/2022/09/25/the-old-bankruptcy-after-analy-sis/ https://www.ixiqin.com/2022/09/24/highlights-the-lingmiao-work/ 更多书摘看:书摘标签 KR2:输出关于 API 的 Newsletter 12 封 改为写 API 主题的 Newsletter ,已经写了一篇了。后天再写一篇。 KR3 :完成计划中的三本图书的写作…

5e54199359bbafe0ef692365a9bcffb6

在 Go 当中嵌入父目录中的文件

…the rest of your program. tomasf 这个说法一出,豁然开朗!尝试一下,果然有效。我在 template 目录下创建了一个 embed.go 文件,并添加了如下代码。 package template import “embed” //go:embed * var TemplateFs embed.FS 并在另外一个文件当中使用template.TemplateFs.ReadFile(“index.tmpl”) 来完成模板文件的引用。这样既不违背 golang 的跨模块,也不会使得代码不可维护,非常好。 参考阅读 https://go.googlesource.com/proposal/+/master/design/draft-embed.md https://github.com/golang/go/issues/46056 https://github.com/golang/go/issues/41191#issuecomment-686621090 https://blog.carlmjohnson.net/post/2016-11-27-how-to-use-go-generate/ https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/…