audio 可视化

audio、audio visualization、可视化、音乐韵律可视化

在某些移动设备上,可能不能查看到效果,可以在电脑上的浏览器尝试。

注意

我们可能好奇某些音乐播放器,那些跳来跳去的韵律图是怎么做出来的,点击下面👇的播放按钮播放音乐,查看 audio 可视化。

您的浏览器不支持 canvas 继续阅读“audio 可视化”

借钱

借过钱给别人的都知道,钱不好借,除了可能收不回本,还有其它诸多麻烦。我的借钱经验不算丰富,还是要硬来谈一谈这种麻烦事。

话说钱这种东西,人见人爱,但是很少人能意识到本质其实是信用。老板相信你的工作能力,给你支付工资;你相信高铁可以送你回家,你支付车票;你相信这篇文章所言不假,才会造成你的赞赏行为。回到借钱上来,我自是相信对方的为人和履约能力才借钱给对方。

我们知道,钱的本质是信用,很多问题就会迎刃而解,没信用就会没钱。

继续阅读“借钱”

最小生成树 kruskal 算法 js 实现

本站以前有一篇文章提到了 prim 算法的实现,具体点这里,我写了完整的示例,和优化版的 prim 在时间上的对比。现在我们来看另一种思路:Kruskal。

话不多说,先看实际效果和结论。在 1k 个节点里,lazy prim 耗时在 4s 左右,优化后的 prim 在 900ms 左右,而更高效的 Kruskal 在 600ms 左右。测试的前提条件是基于我的电脑硬件配置和 1k 个节点的完全稠密图。

要实现高效的 Kruskal 算法,需要基于高效的并查集数据结构,但是并查集我们不在这篇文章里谈及,我们主要谈谈 Kruskal 的思路。

继续阅读“最小生成树 kruskal 算法 js 实现”

vs code 怎么使用 .editorconfig

项目文件夹里包含一个 .editorconfig 文件解决了我很久的一些困扰,比如删除行末的空格、缩进使用 tab、tab 的宽度是 2 个空格、文件最后新增空白行。这是一个很棒的创意,推荐大家使用这个。

先再 vs code 安装一个插件,地址在这里

再新建一个 .editorconfig 文件,写上一些规则,如:

# 针对所有文件
[*]
# 使用类 unix 的换行符
end_of_line = lf
# 新增最后的空白行
insert_final_newline = true

就这么简单,可以使用了。如果大家有代码洁癖,估计就能理解我上述的规则以及为什么要这么做。

参考链接

最小生成树 prim 算法的 js 实现

最小生成树 prim 算法的 JavaScript 实现

说明:以下示例请在较新的浏览器中查看,因为用了 class 语法。

写这篇文章的缘起

在 pcb 设计中,有一种东西叫飞线,他的生成原理主要就是使用了最小生成树算法。最小生成树是什么效果,可以看下面的例子。想知道飞线的具体应用可点击这里。工作中有用到,那必须得学习。

飞线也称跳线,是指印刷电路板上因设计缺陷、测试目的或是其他设计考量,将电路板上的两个节点直接用电线连通的一种方法。

维基百科
继续阅读“最小生成树 prim 算法的 js 实现”

canvas 画文字模糊的问题

在 mac 下的 chrome 当你按下 command + + 的时候会放大网页,这时 devicePixelRatio 会发生变化,默认情况下这个值为 1,当网页放大到 250% 时,这个值会变成 2.5。我们在 canvas 画图写字,就要处理 devicePixelRatio 这个变量的改变,这和高清屏是一样的道理。

下面是一个例子,如论你的 devicePixelRatio 是多少,文字和图片都可以正常显示。可以通过缩放网页,来修改此值。

继续阅读“canvas 画文字模糊的问题”