说明:以下示例请在较新的浏览器中查看,因为用了 class
语法。
写这篇文章的缘起
在 pcb 设计中,有一种东西叫飞线,他的生成原理主要就是使用了最小生成树算法。最小生成树是什么效果,可以看下面的例子。想知道飞线的具体应用可点击这里。工作中有用到,那必须得学习。
Continue reading "最小生成树 prim 算法的 js 实现"飞线也称跳线,是指印刷电路板上因设计缺陷、测试目的或是其他设计考量,将电路板上的两个节点直接用电线连通的一种方法。
维基百科
最小生成树 prim 算法的 JavaScript 实现
说明:以下示例请在较新的浏览器中查看,因为用了 class
语法。
在 pcb 设计中,有一种东西叫飞线,他的生成原理主要就是使用了最小生成树算法。最小生成树是什么效果,可以看下面的例子。想知道飞线的具体应用可点击这里。工作中有用到,那必须得学习。
Continue reading "最小生成树 prim 算法的 js 实现"飞线也称跳线,是指印刷电路板上因设计缺陷、测试目的或是其他设计考量,将电路板上的两个节点直接用电线连通的一种方法。
维基百科
在 mac 下的 chrome 当你按下 command
+ +
的时候会放大网页,这时 devicePixelRatio
会发生变化,默认情况下这个值为 1,当网页放大到 250% 时,这个值会变成 2.5。我们在 canvas 画图写字,就要处理 devicePixelRatio
这个变量的改变,这和高清屏是一样的道理。
下面是一个例子,如论你的 devicePixelRatio
是多少,文字和图片都可以正常显示。可以通过缩放网页,来修改此值。
我们经常说使用 css3 来做动画,会启用 GPU 加速,会更流畅。比如使用 transform 属性替代 top、right、bottom、left等,具体可以看下这个例子:
See the Pen gpu 加速的一些困惑 by zeng (@zengxiaoluan) on CodePen.
Continue reading “GPU 加速的一些困惑”A curated collection of useful CSS snippets you can understand in 30 seconds or less.
https://30-seconds.github.io/30-seconds-of-css/
乱语:30s 学习一个 css 小案例,成功抄袭一个动效给自己私用。不敢独享,安利给大家。
Why are lookbehind assertions not supported in Javascript?
乱语:偶然发现火狐浏览器目前仍旧不支持正则 lookbehind 的写法,至于为什么不支持,有的人说是 Brendan Eich(JavaScript 语言的缔造者) 忘记做了;有人说正则引擎实现这个太难了。你们知道是为什么吗? Continue reading “欢迎加入我的前端群”
今天一位美女同事问了一个问题,就是解释下图 JavaScript 的运行结果。发在了部门的前端群里,引起了一些讨论,我写下我的一些理解。
行外的人可能不太清楚“996”的意思,所以还是有必要解释一下。大致的意思是说早上 9 点上班,晚上 9 点下班,一周工作 6 天。本来我是不想谈这个的,对此没有兴趣。因为很多人都是带着或多或少的目的来发表意见,你聊的是法律,我灌得是鸡汤,一场辩论下来牛头不对马嘴,徒增口舌。我不带有什么目的,也不想辩论,所以我自是不感兴趣。
而且互联网的热度就是那么一阵,我写这篇文章的时候,大家早就好了伤疤忘了疼,另有其他热点事件转移了注意力。但是既然动笔了,就稍微写几句,关键在于“其它”。
Continue reading “也谈 996 及其它”最近有一个小需求:上传文件的时候显示上传进度(上传了百分之多少)。这个需求不难,比如以下代码就能实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Upload file</title> <script> function uploadFile() { var fd = new FormData(document.forms[0]); var xhr = new XMLHttpRequest(); xhr.upload.onprogress = function (e) { console.log('e.loaded:' + e.loaded + ', e.total:' + e.total) console.log(Math.round(e.loaded / e.total * 100) + '%') // 这里是上传进度 } xhr.onreadystatechange = function(){ if ( xhr.readyState === 4 ) { if ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 ) { console.log(xhr.responseText) } } } xhr.open("POST", "/"); xhr.send(fd); } </script> </head> <body> <form action="/" method="POST" enctype="multipart/form-data"> <input type="file" name="file" id="file" required /> <input type="hidden" value="1" name="hidden"> <input type="text" name="text"> <input type="range" name="range"> <button onclick="uploadFile();" type="button" id="upload">Upload</button> </form> </body> </html>
6 月大事记:胡喵呜到家(绝育,洗澡)、仿真工作基本完成(node,d3)、嵌入式开发、香港大屿山旅游
在我心情最沉重的时候,有一些通达世事的好心人告诉我,猫们有一种特殊的本领,能知道自己什么时候寿终。到了此时此刻,它们决不呆在主人家里,让主人看到死猫,感到心烦,或感到悲伤。它们总是逃了出去,到一个最僻静、最难找的角落里,地沟里,山洞里,树丛里,等候最后时刻的到来。
https://www.ruiwen.com/wenxue/jixianlin/200623.html
摘自季羡林《老猫》 Continue reading “公众号月总结:欢迎胡喵呜到家”
因为工作中仿真的功能用到了 node,作为一名前端,node 可算是入了门了。
前端开发尤其 Node.js 开发中,经常要调用一些异步接口,如:文件操作、网络数据读取。而这些接口默认情况下往往是通过 Callback 方式提供的,当这种写法遇上比较复杂的逻辑时,就很容易出现 callback hell 的问题。
http://welefen.com/post/how-to-convert-callback-to-promise.html
乱语:最近在写 node,node 的回调奇多,但是通过包装成 promise,就可以通过 async、await 走上前端开发的康庄大道。美滋滋。
对于很多初学投资的人来说,经常会弄不明白公司分红有什么意义,因为分红后要除权除息,手中持有的股票市值并没有发生任何变化,投资者并不能从公司分红中获得任何收益啊?
https://www.douban.com/note/506346913/
乱语:昨天中午还和同事聊起长城汽车要分红了,赶快买其股票,以此发财。我就说嘛,哪有这么简单的发财之道。 Continue reading “公众号月总结:node 入门”