Skip to content

Instantly share code, notes, and snippets.

View banyudu's full-sized avatar
🎯
Focusing

Yudu banyudu

🎯
Focusing
View GitHub Profile
@banyudu
banyudu / dynamic_import_in_react.blog.md
Last active May 7, 2020 05:36
Dynamic Import在React中的应用

Dynamic import 提出已有一段时间,围绕着它也产生了许多的解决方案。今天我分享一下最近在React工程中使用它的一些心得。

基本原理

Dynamic import的基本使用形式,在Github中有案例:

@banyudu
banyudu / make_hybrid_ssd_in_linux_with_bcache.blog.md
Created April 18, 2020 02:28
Linux中使用小容量SSD制作混合SSD硬盘

有的机器上会配备一些小容量的SSD,在大多数时候,我们会选择将其作为系统盘(Windows),但是在用Linux制作一些服务器的时候,主要的性能瓶颈往往不在基础的系统文件上,而是对应的服务频繁读写的目录上。

比如Gitlab Runner可使用Docker模式进行构建,其主要的读写行为集中在 /var/lib/docker 目录下。

如果将相关存储直接写到小容量SSD上,往往是不够的,但是有SSD不用也实在是浪费。

How to turn off Webpack code-splitting

Using Webpack import()

The following code will produce code-splitting in Webpack, which means that the source code will be split into several files that will be loaded async at runtime.. More info here;

import('./some-module').then((SomeModule) => {});
@banyudu
banyudu / auto_publish_npm_and_generate_github_changelog.blog.md
Created April 23, 2020 22:43
自动化发布npm包及生成Github Changelog

手动维护npm包容易出现一些问题:忘记编译、多提交一些无关文件、网络不通等。自动化发布能够极大地简化这个过程。

最近刚调整过一次自动化流程,可以自动发布版本,及根据Commit消息生成Changelog。实现如下图所示的效果:

Demo效果图

@banyudu
banyudu / reflection-continuous-learning.blog.md
Last active May 15, 2020 01:11
一点反思:持续的学习和成长

引子

最近突然想做一些技术方面的学习。

这种『突然』实际上是经常出现的,像突然想学学琴、突然想健身,突然学门新语言,总会有一段时间突然想要学习一些东西。

@banyudu
banyudu / 01 概述.series.md
Last active May 16, 2020 10:31
博客专栏的设计

博客专栏的设计

之前的一篇文章中有讲过,我的博客的编辑和导入是基于Gist的。

形式是每当有Gist更新或新建的时候,在其中寻找文件名符合 *.blog.md 的文件,如果有的话,认为其是博客文章,并自动同步到数据库。

@banyudu
banyudu / 1 TS-Terser项目概要.series.md
Last active August 17, 2020 06:02
使用Typescript改造Terser

TS-Terser项目概要

想学习一下Terser这个项目,但是看起来它还是比较复杂的。

因为之前阅读中大型开源项目的效果一直不太好,没有清晰的目标和效果反馈,所以我想不如给自己订个小目标,将Terser用Typescript改造一遍,过程中能学习到多少是多少。

后面会在这个系列中持续更新TS-Terser项目的进展。

@banyudu
banyudu / ssh_jumper_setup.blog.md
Last active June 24, 2020 07:19
SSH跳转服务器设置

有时因为一些安全方面的原因,需要使用跳板机才能访问到指定的ssh服务器。直接访问的时候是不通的。

这种情况下,就需要先ssh登录到跳板机,再从跳板机上ssh到真正的主机。

通过设置 ~/.ssh/config 文件,可以简化这个过程。

今天在重构一个项目的时候,遇到了一个诡异的bug,调试过程中发现,原来是Function的name的属性丢失导致的。

后来出于好奇研究了下Javascript中Function/Class的name属性,这里和大家分享下。

事情是这样的,我在重构一段代码,去除new Function这种用法,换成正常的function。为便于理解,代码做了简化,原代码如下:

@banyudu
banyudu / convert_terser_ast_to_classes.ts
Last active August 20, 2020 01:36
change lib/ast.ts file, convert defnode function calls to class definitations
import {Project, SyntaxKind, ts, Node} from "ts-morph";
const trim = (str: string) => str.substr(1, str.length - 2)
// const printChildren = (node: Node<ts.Node>) => {
// for (const item of node.getChildren()) {
// console.log('kind: ', item.getKindName())
// console.log('text: ', item.getText())
// console.log('>'.repeat(50))
// }