# 2024-05

![](https://p.ipic.vip/0bhil1.jpg) ![](https://p.ipic.vip/0bhil1.jpg)

每天给你推荐一个新奇，好玩，高品质的开源库，好文，观点或言论等。

> 项目主页维护当前月份的内容，想看往期内容，可以翻到下方历史汇总部分，然后选择自己感兴趣的月份点进去即可。

## 2024-05

### 2024-05-31\[好文]

一般我们会将自己的网络服务托管到第三方。他们一般会负责保护你的服务不受攻击，或者收到攻击的时候能够及时恢复。

但是如果你是自托管，那么很多问题都需要自己考虑，其中最重要的就是安全问题。包括但不限于数据安全，病毒攻击，DDOS 攻击等。

![](https://p.ipic.vip/t6bbzs.png)

via: <https://sspai.com/post/89837>

### 2024-05-29\[好文]

上次给大家介绍了一个下载 bilibili 视频的工具，今天给大家介绍另外一个工具 cobalt，不仅可以下载 bilibili 视频，还可以下载很多其他视频网站的视频，比如 youtube。使用方式基本一样，只需要输入视频的地址，然后就可以下载了。 代码是开源的，仓库地址：<https://github.com/imputnet/cobalt>

![](https://p.ipic.vip/fm51j6.png)

via: <https://cobalt.tools/>

### 2024-05-28\[好文]

一个利用 AI 给视频自动添加字幕的工具，这个工具可以帮助你快速给视频添加字幕。我自己试了一个视频，不知道为什么视频后半段是没有字幕的，前半段效果还不错。

这个工具免费版的话只能是 720 P 并且不能去水印，如果想要更高清的视频，或者去水印，需要付费。

使用方法很简单，你只需要上传一个视频，然后它就会自动给你生成字幕，你可以选择字幕的样式，然后就可以下载了。

![](https://p.ipic.vip/9a3ard.png)

via: <https://www.kzzimu.com>

### 2024-05-27\[好文]

看完《2024 年开始使用的 10 个现代 Node.js 运行时功能》 我越来越觉得 nodejs 像 deno 靠拢了。其也加入了 native lib 和 权限控制等。

via: <https://snyk.io/blog/10-modern-node-js-runtime-features/>

### 2024-05-24\[好文]

github 有一个漏洞，使得一些人利用这个漏洞钓鱼。这个漏洞是这样的，当你在 github 上传一个附件，那么这个附件就属于这个仓库。因此攻击者可以去一些权威仓库，比如 react 下面上传一个恶意附件，然后将生成的地址发给别人。别人一看地址来自 react，就会认为是安全的，然后下载这个附件，这样就会被攻击者利用。

via: <https://www.bleepingcomputer.com/news/security/github-comments-abused-to-push-malware-via-microsoft-repo-urls/>

### 2024-05-23\[网站]

一个教你在网络这个黑暗森林里保护自己隐私的网站，里面有很多关于网络安全的知识，比如如何保护自己的隐私，如何防止网络钓鱼等。

对我来说学到的点包括：

* 如何检测蓝牙追踪器
* tor 浏览器 和 whatsapp 的安全性
* metadata 以及 metadata 是如何暴露你的隐私的
* 。。。

另外这个网站提供了一些隐私保护的工具，包括但不限于浏览器，dns，云服务，vpn，密码管理器等。<https://www.privacytools.io/>

via: <https://ssd.eff.org/>

### 2024-05-22\[好文]

一个非常好看的美化 json 的工具。如果你有“在网页中展示 JSON 数据”的需求，那就可以考虑使用。使用方式非常简单，支持所有主流浏览器。

![](https://p.ipic.vip/w5qplu.png)

via: <https://github.com/williamtroup/JsonTree.js>

### 2024-05-16\[好文]

一个 OBS 的插件，可以在直播的时候显示你的键盘输入，这样观众就可以看到你的键盘输入了。这个插件支持 windows 和 linux。除了键盘输入显示，它还支持鼠标输入显示，手柄输入显示。

![](https://p.ipic.vip/1n04cf.png)

via: <https://github.com/univrsal/input-overlay>

### 2024-05-15\[技巧]

网络钓鱼危害非常大，你的隐私，你的资金都会因为网络钓鱼而受到威胁。

然而对待网络钓鱼实际上并没有很有效的方法，因为网络钓鱼的手段非常多样，而且很难被检测出来。

U2F物理加密密钥是一个很好的解决方案，它可以防止网络钓鱼。而做到这一点需要：

1. 一个支持 U2F 的网站，比如 Google
2. 一个 U2F 物理密钥，比如 yubikey

它的原理大概是这样的：当你登录一个支持 U2F 的网站时，网站会要求你插入你的 U2F 密钥，然后你按一下 U2F 密钥上的按钮，这样网站就可以确认你是真的拥有这个密钥。你首次 U2F 登录的时候它也会将你的账号和物理秘钥进行绑定，后面就算钓鱼者通过某种方式获取到你的密码，也无法登录你的账号，因此它没有你的物理密钥，认证不通过。

### 2024-05-14\[好文]

如果你有辅导孩子的需求，那么你可以将数学题截图上传到这个网站，然后它会自动给你解答，底层基于 chatgpt4，而且是免费的。你也可以直接输入题目描述进入代替上传图片。

![](https://p.ipic.vip/6hu85w.png)

via: <https://math.bot/>

### 2024-05-13\[好文]

上次向大家推荐了一个下载 bilibili 视频的网站。这次是一个下载 bilibili 视频**桌面客户端**，使用 flutter 编写，支持 macos 和 windows。

![](https://p.ipic.vip/5b685j.png)

via: <https://github.com/kangpeiqin/bilivideo\\_down>

### 2024-05-12\[好文]

和使用草料等工具生成二维码（qrcode）类似，我们也可以使用一些工具生成条形码（barcode）。这个**在线工具**就可以帮助你生成带有任意信息的条形码。

via: <https://www.1txm.com/barcode>

### 2024-05-08\[好文]

你从网上下载了一个文件，但是你如何确定这个文件是不是被篡改过呢？一般来说，文件作者可以提供一个签名文件，作者用自己的私钥对文件进行签名，然后你可以用作者的公钥来验证文件的签名。这样你就可以确定文件是否被篡改过。

而 GPG 就是一个非常好的工具，可以用来签名文件，验证文件的完整性，以及加密文件。这个视频介绍了如何使用 GPG 签名文件或者验证文件的签名。

MACOS 可以用 gpg Suite，windows 可以用 gpg4win。

via: <https://www.youtube.com/watch?v=MaZ8\\_V-iveQ>

### 2024-05-07\[知识]

node 22 中的新功能 register，register 方法可用于注册导出一组钩子的模块。钩子是 Node.js 调用的函数，用于自定义模块解析和加载过程。导出的函数必须具有特定的名称和签名，并且必须作为命名导出导出。

```js
// hooks.js
export async function initialize({ number, port }) {
  // Receives data from `register`.
}

export async function resolve(specifier, context, nextResolve) {
  // Take an `import` or `require` specifier and resolve it to a URL.
}

export async function load(url, context, nextLoad) {
  // Take a resolved URL and return the source code to be evaluated.
} 
```

如上代码，hooks.js 导出了三个函数，initialize，resolve 和 load。这三个函数分别用于初始化，解析和加载模块。当模块被初始化，解析，加载的时候就可以执行这三个函数。

为了让所有模块都可以被作用到，注册功能越早越好，尤其是入口文件也要被注册到。那我们就可以使用 node 的 import 指令来完成。

```bash
node --import ./register-hooks.js ./my-app.js 
```

import 会在加载入口文件之前，先加载 register-hooks.js，这样就可以保证所有模块都可以被注册到。

更多用法参考：<https://nodejs.cn/api/module.html#customization-hooks>

基于这个功能，node 就可以很容易地实现 web 中的 HMR 效果了，比如 <https://github.com/julien-R44/hot-hook> 就利用 node 的 register 功能实现了 HMR。

### 2024-05-06\[好文]

通过红外线 led 灯来躲避夜市摄像头的监控，这个想法真的很有意思。

via: <https://www.macpierce.com/the-camera-shy-hoodie>

### 2024-05-05\[好文]

jq 是一个非常好用的 json 处理工具，但是它只能在命令行中使用，如果你想在 nodejs 中使用 jq，那么可以使用 node-jq 这个工具。node-jq 就是基于 jq 封装的一个库。

```js
const jq = require('node-jq')

const filter = '.abilities[].moves'
const jsonPath = '/path/to/bulbasaur.json'
const options = {}

jq.run(filter, jsonPath, options)
  .then((output) => {
    console.log(output)
    /*
      {
        "name": "heartgold-soulsilver",
        "power": "10"
      },
      {
        "name": "platinum",
        "power": "50"
      },
      {
        "name": "diamond-pearl",
        "power": "99"
      }
    */
  })
  .catch((err) => {
    console.error(err)
    // Something went wrong...
  })
```

如上代码，我们可以使用 node-jq 来过滤 json 文件。

via: <https://github.com/sanack/node-jq>

### 2024-05-04\[工具]

一个在线的免费在线转换文字为语音的工具，你可以将文字转换为语音，然后下载到本地，支持多种语言。

一次限制 2000 个字，实际上基本够用。

![](https://p.ipic.vip/18dlf0.png)

via: <https://texttospeech.im/zh-CN>

### 2024-05-03\[工具]

一个将 ai 生成的回答“润色”，使其更加自然的工具。

via: <https://humanize.im/zh-CN>

### 2024-05-02\[工具]

只需要一行命名就可以将 sqllite 数据库文件变成可通过 web 访问的网站。

```bash
sqlite_web /path/to/database.db
```

其中 db 文件可通过工具导出。

![](https://p.ipic.vip/htn5hf.png)

via: <https://github.com/coleifer/sqlite-web>

### 2024-05-01\[好文]

《【剧透】电影《怪物》时间线完整还原和三视角叙事结构分析》这篇电影解析写的太好了，简直教科书级别。

作者从多个视角，多个时间线分析了这部电影，让我有种玩 RPG 游戏的感觉。同时也增加了多对电影里很多细节的理解。非常棒，希望我以后也能写出这样的电影解析。

via: <https://www.douban.com/note/858206686/?\\_i=5016320fbwsPHb,5016539fbwsPHb>

## 关注我

我重新整理了下自己的公众号，并且我还给它换了一个名字`脑洞前端`，它是一个帮助你打开大前端新世界大门的钥匙 🔑，在这里你可以听到新奇的观点，看到一些技术尝新，还会收到系统性总结和思考。

在这里我会尽量通过图的形式来阐述一些概念和逻辑，帮助大家快速理解，图解是我的目标。

之后我的文章会同步到微信公众号 `脑洞前端` ，你可以关注获取最新的文章，并和我进行交流。

另外你可以回复大前端进大前端微信交流群， 回复 leetcode 拉你进 leetcode 微信群，如果想加入 qq 群，请回复 qq。

![](https://p.ipic.vip/bp35i7.jpg)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://leetcode-solution-leetcode-pp.gitbook.io/mz-ri-yi-jm/2024-05.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
