Skip to main content

2023/12/03

"知识错觉"(the illusion of knowledge)指的是,你自以为懂得或掌握了某种知识和技能,但是实际上并不懂

答:程序员归根到底需要训练,重复地训练,看书无法获得就像看视频无法学会开车一样

biome

https://github.com/biomejs/biome

Biome 是一个 JS 工具箱,零配置就能实现 JS 脚本的格式化和 Lint

JS 语言格式化工具 Prettier,提出谁能用 Rust 语言重新实现它,并通过所有测试用例,就能获得 2 万美元,因为它们自己没有资源做这件事,Biome 只用了两周就赢下了这场比赛

Rust

断断续续学了一周的 Rust,感觉还是蛮有趣的。如果熟悉 typescript 的话,上手基础语法并不难。后面打算开始做些小项目练练手

alove

后出的库,充分借鉴了前浪的经验(axios、ahooks 的 useRequest),与框架分离,在简化 api 的同时,还在性能、体积、ts 支持上做了更多工作。有机会要用起来啊

rubick

https://mp.weixin.qq.com/s/Nhkjp8VZy3seAgv25gIzvg

一个基于 electron 的桌面效率工具,可以搜索系统应用(Alfred?)、收藏本地文件(便于后续检索)、安装插件(IP guide 等)、数据多端同步等,UI 看起来也挺不错的,用一段时间看看。这也是一个学习 electron 的好项目

Rubick 插件是基于 npm 的方式进行安装和卸载的,内置了 npm 包管理器,可以做到在电脑上无 node & npm 环境下安装插件。如果想要参与到这个开源项目的话,感觉插件市场是个不错的切入点

其实用过 uTools 的小伙伴估计会很熟悉,毕竟这个一开始就是参考 uTools 来做的。会出现后者,有几点考虑:

  • 基于 npm 的管理方式,插件发布、安装更加简单、安全。uTools 则是需要走他们自己的发布审批流,需要收到打 upx 包
  • 支持 0 成本一键内网部署
  • 数据多端同步是基于 webdav 做的,所有数据都存储到用户自己的网盘中
  • 所有插件都是开源免费、uTools 部分热门插件需要二次收费
  • ...

ts 联合类型处理

最近看到这样一个 ts 处理接口异常的例子,看起来能很好地解决联合类型冲突的问题:

export interface CustomAxiosResponse<T> {
success: true;
msg?: string;
data: T;
}

export interface CustomAxiosResponseErr {
success: false;
code: string;
msg: string;
isHttpError: boolean;
}

export const request = async <T>(
config: RequestConfig
): Promise<CustomAxiosResponse<T> | CustomAxiosResponseErr> => {
try {
const response = await axios.create({}).request(config);
if (response.data.code !== "000000") {
return {
success: false,
code: response.data.code,
msg: response.data.msg,
isHttpError: false,
};
}
return {
success: true,
data: response.data.data,
};
} catch (e) {
return {
success: false,
code: "",
msg: "",
isHttpError: !isNumber(Number(e)),
};
}
};

// 一个获取用户信息的接口
export const getInfo = () =>
request<UserDetail>({
url: "/info",
method: "get",
});

// 使用
async () => {
const res = await getInfo();
// × 请求可能失败
// const { name } = res.data;
if (!res.success) {
// do something
return;
}
const { name } = res.data; // √
};