流与延迟计算 前言在此之前,吾辈介绍了如何 从函数中无中生有的构造数据结构。现在,吾辈将使用它构造一个更强大的数据结构:Stream(流)。 或许你曾经见过这张图 一些数据经过一系列的处理,然后得到结果,而只需要迭代每个元素一次,就像魔法一样。 之前的想法最初,吾辈的想法是让操作保存起来,只有等待某个显式调用的时候才真正执行。 即调用 map/filter/reduce 时将 action 与参数保存起来,等 2022-06-09 #算法
cons: 无中生有的数据结构 前言lisp 中有一种有趣的数据结构,Cons,它使用函数闭包封装了一个两元组的数据结构,并在此之上构建出其他需要的任何数据结构。在此之前,虽然也知道闭包之类的概念,写过一些高阶函数,但并未想过可以使用函数来构建数据结构,下面吾辈会说明如何在 ts 完成。 lisp cons 的 wiki 基本定义如下 $$c=cons(a,b)\car(c)=a\cdr(c)=b$$ 初始实现cons 初始 2022-06-07 #算法
vite 构建正确内联 svg 资源 场景目前 vite 构建时内联媒体资源的功能有 bug,从 2020 年底就已经存在一个 github issue,感觉短期不太可能解决,于是吾辈决定自行使用插件恢复这个功能。 下面是一个使用 vite 构建的 dist,可以看到其中的 svg 并未被正确内联到代码中,而是单独分割为了一个 bundle,而 jpg 图片则被正确内联。 现有插件为什么不使用插件 @rollup/plugin-im 2022-05-30 #vite #工程化
使用 ESBuild 插件机制实现需要的功能 前言esbuild 是一个通用的代码编译器和构建工具,使用 golang 构建,它非常快,性能上比现有的 js 工具链高 1~2 个数量级。它目前还不是一个开箱即用的构建工具,但通过它的插件系统,我们已经可以做到许多事情。 自动排除所有依赖项在构建 lib 时,我们通常都不希望捆绑依赖的模块,希望能够默认排除掉所有的依赖项,这个插件就是用来实现这个功能的。它会将所有不是以 . 开头的导入模块设置 2022-05-20 #javascript #工程化
汉诺塔问题 前言最近两个月一直在看 SICP 的 Youtube 课程,作为一个半路出家的人,自觉基础欠缺,至今已是工作的第四个年头,正如年初计划所言,仅仅依赖于热情去折腾各种简单的玩具已经不再能有效地提升自己了,需要系统化的学习和组织知识。虽然之前也买过实体书,但由于看起来比较难而且也没有风趣的讲解(看的有点枯燥,看完视频后感觉里面的教授真的太有趣了!),所以一直没能看下去(另外一本《算法》也是同样的命运) 2022-04-25 #算法
浅评漫画《指尖奶茶》 前言早前在看网络小说《腹黑三无少女日记》时,提到了漫画《指尖奶茶》这部漫画。虽然一直想看,但由于作品型式(漫画)的原因难以收集存储到本地,所以真正一口气看完也是趁着今天周六休息的时候。与之前的 galgame《近月少女的礼仪》的小仓朝日、动画《放浪男孩》的小鸟修一相比,由纪并没有那么善良,却有着相同程度的可爱,但这就足够了,男孩纸什么的只要萌就好啦!不是么? 介绍 wiki 里面大致上讲述了一个 2022-04-23 #个人
读书笔记-低智商社会 为什么我们的企业家都忌讳向亚洲国家学习,没有人质疑过为什么日本不能借鉴中国好的东西(比如说向民众转让更多的权利等) 【批注】本质上并非如此,目前更加封闭专制了 Q:日本股市有什么理由能保持上涨? 【批注】话虽如此,我也确实不了解股市。但我相信,经济危机会影响全球,不可能有人能独善装身。 Q:“引进外资有害,所以要维护日本本土企业的利益。”我想这就是现在大家公认的“日本的常识”,那么请从经济全球 2022-04-22 #读书
Code Review 漫谈 02 场景继上次的 code review 之后,吾辈这两天在迁移 vpn ip => domain 的过程中,需要帮忙修改一些之前写死的 vpn ip 地址为动态从后端获取,所以有幸见到了一些有趣的代码,便于此继续分享一下。 在 vue3 项目中仍然写 vue2 的 options 组件 完全没有分层的概念,想到哪儿写到哪 神奇的获取 url 参数的方式及变量命名 错误处理仅仅只是打印在控制台 2022-04-13 #javascript #vue
Code Review 漫谈 01 场景 某些言辞可能略微辛辣,请勿对号入座。 最近在帮同事做代码的 code review,发现了一些日常很难见到的奇妙代码,其中有些吾辈可能都不知道可以这样写。所以发布出来,便于其他刚入坑的萌新警戒。 先发一份快乐源泉 下面列一些吾辈发现的问题 目录结构和命名混乱这似乎是多人协作天生就会遇到的问题,但吾辈确实还是想吐槽一番。如果说按照业务分割顶级目录,然后在子目录分割类型,那么 asssets 2022-04-03 #javascript #vue
VSCode 扩展 New Project 发布 0.2.0 前言在之前 VSCode 扩展 New Project 发布 0.1.0 一文中,吾辈实现了基本的扩展功能,也说明在过程中遇到的一些问题。现在,吾辈实现了自定义生成器的功能,然后发布了 0.2.0,这让使用公司内部的 cli 生成器变成了可能。 具体来说,有以下几步 公开生成器的 json schema 从 vscode 配置中获取 json configs 渲染为创建模板项目的表单 创建时与内 2022-03-31 #vscode
VSCode 扩展 New Project 发布 0.1.0 前言 vscode 扩展市场 这个 idea 起源于吾辈从 webstorm 切换到 vscode 的几周后,在上个周末,吾辈想到,为什么 Jetbrains IDE 都有 项目创建引导面板,而 vscode 却并不支持,而只能使用命令行工具呢?念及于此,吾辈便打算自行在 vscode 中实现对等插件。 吾辈之前也为 webstorm 开发了一个生成 vite 项目的插件 Vite Integ 2022-03-29 #vscode
个人网站性能优化 发布新的个人网站 前两天吾辈发布了新版的个人网站,但当时仍然存在一些未解决的性能问题,包括 性能优化 减少依赖数量 砍掉运行时依赖 marked 压缩图片尺寸 添加 .nojekyll 避免 github actions 做无谓的构建 验证工具 rollup-plugin-visualizer:检查 bundle 尺寸 chrome devtools 中的 lighthouse:测试 2022-03-25 #javascript #性能