初次接触 WebAssembly 以及一些 tricks

这周从事一些需求分析工作,因此有机会接触到一些尚未了解的技术,看看是否能解决需求。

WebAssembly

有关 wasm 的资料现在很多了,简而言之就是将代码编译为特定的二进制代码,供浏览器去执行,MDN 上介绍了详细的概念, 包括目标以及三种编写方式。Wasm 并不是传统意义上的汇编语言,它只是充分利用了 JavaScript VM,类似于 .Net 或者 Java 编译后的中间代码。报道说,eBay 使用 WebAssembly 给 WebApp 提升了 50 倍的性能。这里有更多 use cases 可供参考,以及 FAQ

一道算法和一些(我认为有趣的)开源项目

这周的内容有点水,简单分享下这周学到的东西。

算法

LC 342 - Power of 4 without loop/recursion

这个题目有点意思。抛开 1(0x0000 0001) 这个例外,像 4(0x0000 0100)16(0x0001 0000)64(0x0100 0000) 可以观察到二进制形式下很有规律,只有一位是 1,接下来跟着偶数个 0 (否则就是 2 的幂)。代码参考自 https://www.geeksforgeeks.org/find-whether-a-given-number-is-a-power-of-4-or-not/

a) There is only one bit set in the binary representation of n (or n is a power of 2)

b) The bits don’t AND(&) any part of the pattern 0xAAAAAAAA

/**
 * @param {number} num
 * @return {boolean}
 */
var isPowerOfFour = function(num) {
    return (num != 0) && ((num&(num-1)) == 0) && !(num & 0xAAAAAAAA);
};

新博客、Zero-fill right shift 以及 Array.prototype.reduce()

新博客

再见 WordPress。毫无疑问在这个年头,WordPress 依然是很棒的引擎。不过对我来说,这一次重启博客主要目的在于记录和整理工作中新学到知识点,在编辑和排版上需要更大的灵活度。在折腾了 WordPress + Markdown 无果之后,想起来给项目组做产品网站时使用过 Jekyll,自然而然地捡了起来。

主题在 Hyde 的基础上稍作修改,参考了 Material Design Palenight 的配色,这也是我现在 Vim、vscode 的配色。细节方面暂时还没改完,源码也就不打算单独弄个仓库开源了,反正网页查看源码都看得到。同样因为懒,评论功能也不弄了,看官想联系到我总是有办法的 ;-)

以及,好记性真不如烂笔头!