Compare commits
No commits in common. "1536ffa3198f3ddb15d83c3d478af3b4b64b5861" and "bd4a211c6c693ccec191db035ec4fe3ca97a5f46" have entirely different histories.
1536ffa319
...
bd4a211c6c
@ -4,7 +4,10 @@ date: '2022-10-17'
|
|||||||
tags: ['Arch Linux', '环境搭建', 'VPS']
|
tags: ['Arch Linux', '环境搭建', 'VPS']
|
||||||
draft: false
|
draft: false
|
||||||
summary: 有了上次快速安装步骤后,接下来就是使用这个环境了。要使用环境,首先需要做一些初始化操作。我的步骤适合我,但不一定适合你,只是记录和参考。
|
summary: 有了上次快速安装步骤后,接下来就是使用这个环境了。要使用环境,首先需要做一些初始化操作。我的步骤适合我,但不一定适合你,只是记录和参考。
|
||||||
images: ['https://minio.ivanli.cc/ivan-public/uPic/2023/RTr3IU.png']
|
images:
|
||||||
|
[
|
||||||
|
'https://pan.ivanli.cc/api/v3/file/source/2238/archlinux-logo-light.png?sign=bWxqFFy3RUDT5UsWb4UD5byt-_L4h79wede3runRKFc%3D%3A0',
|
||||||
|
]
|
||||||
---
|
---
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
@ -4,7 +4,10 @@ date: '2022-10-28'
|
|||||||
tags: ['PVE', 'PVE', 'DE', '环境搭建', 'Debian']
|
tags: ['PVE', 'PVE', 'DE', '环境搭建', 'Debian']
|
||||||
draft: false
|
draft: false
|
||||||
summary: 虽然 PVE 宿主机不应该安装乱七八糟的东西,但是我穷,为了物尽其用,为了在主力电脑翻车时有一个立即可用的备用环境,所以还是安装了基础的桌面环境。现在的 Linux 桌面环境越来越好了,我选择安装 KDE Plasma 作为桌面环境,并且默认关闭,按需启用。
|
summary: 虽然 PVE 宿主机不应该安装乱七八糟的东西,但是我穷,为了物尽其用,为了在主力电脑翻车时有一个立即可用的备用环境,所以还是安装了基础的桌面环境。现在的 Linux 桌面环境越来越好了,我选择安装 KDE Plasma 作为桌面环境,并且默认关闭,按需启用。
|
||||||
images: ['https://minio.ivanli.cc/ivan-public/uPic/2023/qldEtP.png']
|
images:
|
||||||
|
[
|
||||||
|
'https://pan.ivanli.cc/api/v3/file/source/2243/1200px-Kde_dragons.png?sign=yGZL9jYeVt53Ve43ddhHt_0EzVV2cW_WbxHc0dEcwWY%3D%3A0',
|
||||||
|
]
|
||||||
---
|
---
|
||||||
|
|
||||||
## 前言
|
## 前言
|
||||||
@ -157,7 +160,7 @@ ibus-setup
|
|||||||
|
|
||||||
在打开的 GUI 中添加中文输入法,找到 Rime 并添加输入法:
|
在打开的 GUI 中添加中文输入法,找到 Rime 并添加输入法:
|
||||||
|
|
||||||
![rime](https://minio.ivanli.cc/ivan-public/uPic/2023/E4SWeR.png)
|
![rime](https://pan.ivanli.cc/api/v3/file/source/2241/Screen%20Capture_select-area_20221028225457.png?sign=XVrl7rPk4Gd7QRFBCCDGruB2L7V1bvxDpK9-v9pC0Nc%3D%3A0)
|
||||||
|
|
||||||
现在,新打开的软件应该能使用输入法了。像 Chrome 这类,关闭后还需要手动杀死进程后再打开才能使用。最简单的方法就是重启电脑啦~
|
现在,新打开的软件应该能使用输入法了。像 Chrome 这类,关闭后还需要手动杀死进程后再打开才能使用。最简单的方法就是重启电脑啦~
|
||||||
|
|
||||||
|
@ -4,7 +4,10 @@ date: '2022-09-23'
|
|||||||
tags: ['Verdaccio', 'Self-Hosted', 'Docker', 'Caddy', 'registry', 'Node.js']
|
tags: ['Verdaccio', 'Self-Hosted', 'Docker', 'Caddy', 'registry', 'Node.js']
|
||||||
draft: false
|
draft: false
|
||||||
summary: 作为靠着 JavaScript 生态吃饭的 Web 开发者,自建一个 Node regsitry 是很有必要的,我这次继续选择 Verdaccio 来搭建存储库。这次使用 Docker Compose 部署 Verdaccio,并将 Caddy 用于反向代理该服务。
|
summary: 作为靠着 JavaScript 生态吃饭的 Web 开发者,自建一个 Node regsitry 是很有必要的,我这次继续选择 Verdaccio 来搭建存储库。这次使用 Docker Compose 部署 Verdaccio,并将 Caddy 用于反向代理该服务。
|
||||||
images: ['https://minio.ivanli.cc/ivan-public/uPic/2023/3Dqijk.png']
|
images:
|
||||||
|
[
|
||||||
|
'https://pan.ivanli.cc/api/v3/file/source/2233/verdaccio.png?sign=qpoeADXzbhHk2MY5CehgTftUJ67pnUj-Ylko9D5jscU%3D%3A0',
|
||||||
|
]
|
||||||
---
|
---
|
||||||
|
|
||||||
## 为何自建存储库?
|
## 为何自建存储库?
|
||||||
|
@ -4,7 +4,10 @@ date: '2022-10-17'
|
|||||||
tags: ['Arch Linux', '环境搭建', 'VPS']
|
tags: ['Arch Linux', '环境搭建', 'VPS']
|
||||||
draft: false
|
draft: false
|
||||||
summary: 又到了新装 Arch Linux 的日子了。这次又是温故而知新的机会,把之前写的笔记稍微整理了一下,在这里记录下教徒搭窝的备忘录。
|
summary: 又到了新装 Arch Linux 的日子了。这次又是温故而知新的机会,把之前写的笔记稍微整理了一下,在这里记录下教徒搭窝的备忘录。
|
||||||
images: ['https://minio.ivanli.cc/ivan-public/uPic/2023/RTr3IU.png']
|
images:
|
||||||
|
[
|
||||||
|
'https://pan.ivanli.cc/api/v3/file/source/2238/archlinux-logo-light.png?sign=bWxqFFy3RUDT5UsWb4UD5byt-_L4h79wede3runRKFc%3D%3A0',
|
||||||
|
]
|
||||||
---
|
---
|
||||||
|
|
||||||
## 起势
|
## 起势
|
||||||
|
@ -39,7 +39,7 @@ useEffect(() => {
|
|||||||
|
|
||||||
### 在 React 18 的测试代码
|
### 在 React 18 的测试代码
|
||||||
|
|
||||||
![React 18 Stricter Strict Mode.png](https://minio.ivanli.cc/ivan-public/uPic/2023/TWVx7v.png)
|
![React 18 Stricter Strict Mode.png](https://pan.ivanli.cc/api/v3/file/source/2753/React%2018%20Stricter%20Strict%20Mode.png?sign=ARQ8AVTh-NEaeJRypJlVokuUVhocPeaK8n7GRSDwqNw%3D%3A0)
|
||||||
|
|
||||||
代码:[Code Sandbox](https://codesandbox.io/p/sandbox/clever-cache-pm1oct?file=%2Fsrc%2FApp.tsx&selection=%5B%7B%22endColumn%22%3A20%2C%22endLineNumber%22%3A33%2C%22startColumn%22%3A20%2C%22startLineNumber%22%3A33%7D%5D)
|
代码:[Code Sandbox](https://codesandbox.io/p/sandbox/clever-cache-pm1oct?file=%2Fsrc%2FApp.tsx&selection=%5B%7B%22endColumn%22%3A20%2C%22endLineNumber%22%3A33%2C%22startColumn%22%3A20%2C%22startLineNumber%22%3A33%7D%5D)
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ useEffect(() => {
|
|||||||
2. `useEffect(() => /* */, [])`执行一此后,以新的严格模式的规则,调用了 `destructor` 后,进行了二次调用。
|
2. `useEffect(() => /* */, [])`执行一此后,以新的严格模式的规则,调用了 `destructor` 后,进行了二次调用。
|
||||||
|
|
||||||
在第 2 点中,两次 useEffect 都是使用同一个值,是因为严格模式的二次调用按钩子分别执行两次,所以 useMemo 两次的调用都完毕后,得到的值再被 useEffect 执行两次。我调整了一下代码,将测试代码复制了一份在后面,可以看到 “useMemo” 和 “useMemo 2” 先执行了一次,又再执行了一次,然后再到 “useEffect“ 和 “useEffect 2":
|
在第 2 点中,两次 useEffect 都是使用同一个值,是因为严格模式的二次调用按钩子分别执行两次,所以 useMemo 两次的调用都完毕后,得到的值再被 useEffect 执行两次。我调整了一下代码,将测试代码复制了一份在后面,可以看到 “useMemo” 和 “useMemo 2” 先执行了一次,又再执行了一次,然后再到 “useEffect“ 和 “useEffect 2":
|
||||||
![加倍快乐](https://minio.ivanli.cc/ivan-public/uPic/2023/OwlDG6.png)
|
![加倍快乐](https://pan.ivanli.cc/api/v3/file/source/2754/React%2018%20Stricter%20Strict%20Mode%202.png?sign=iYz9KP9uMuccRCesjqoRPKejEoUOj4FZfnBPt8kCXnQ%3D%3A0)
|
||||||
|
|
||||||
## 结论
|
## 结论
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { Parent } from 'unist';
|
import { visit, Parent } from 'unist-util-visit';
|
||||||
import { visit } from 'unist-util-visit';
|
|
||||||
|
|
||||||
export default function remarkCodeTitles() {
|
export default function remarkCodeTitles() {
|
||||||
return (tree: Parent & { lang?: string }) =>
|
return (tree: Parent & { lang?: string }) =>
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import { VFile } from 'vfile';
|
import { VFile } from 'vfile';
|
||||||
import { visit } from 'unist-util-visit';
|
import { visit, Parent } from 'unist-util-visit';
|
||||||
import { load } from 'js-yaml';
|
import { load } from 'js-yaml';
|
||||||
import { Parent } from 'unist';
|
|
||||||
|
|
||||||
export default function extractFrontmatter() {
|
export default function extractFrontmatter() {
|
||||||
return (tree: Parent, file: VFile) => {
|
return (tree: Parent, file: VFile) => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Literal, Parent, Node } from 'unist';
|
import { Literal } from 'unist';
|
||||||
import { visit } from 'unist-util-visit';
|
import { visit, Parent, Node } from 'unist-util-visit';
|
||||||
import sizeOf from 'image-size';
|
import sizeOf from 'image-size';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
|
||||||
|
72
package.json
72
package.json
@ -14,66 +14,66 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fontsource/inter": "4.5.2",
|
"@fontsource/inter": "4.5.2",
|
||||||
"@mailchimp/mailchimp_marketing": "^3.0.80",
|
"@mailchimp/mailchimp_marketing": "^3.0.58",
|
||||||
"@next/bundle-analyzer": "12.0.9",
|
"@next/bundle-analyzer": "12.0.9",
|
||||||
"@tailwindcss/forms": "^0.4.1",
|
"@tailwindcss/forms": "^0.4.0",
|
||||||
"@tailwindcss/typography": "^0.5.9",
|
"@tailwindcss/typography": "^0.5.0",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.0",
|
||||||
"esbuild": "^0.13.15",
|
"esbuild": "^0.13.13",
|
||||||
"github-slugger": "^1.5.0",
|
"github-slugger": "^1.3.0",
|
||||||
"gray-matter": "^4.0.3",
|
"gray-matter": "^4.0.2",
|
||||||
"image-size": "1.0.0",
|
"image-size": "1.0.0",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"mdx-bundler": "^8.1.0",
|
"mdx-bundler": "^8.0.0",
|
||||||
"next": "^12.2.0",
|
"next": "=12.2.0",
|
||||||
"next-themes": "^0.0.14",
|
"next-themes": "^0.0.14",
|
||||||
"postcss": "^8.4.25",
|
"postcss": "^8.4.5",
|
||||||
"preact": "^10.15.1",
|
"preact": "^10.6.2",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-commento": "^1.0.0",
|
"react-commento": "^1.0.0",
|
||||||
"react-cusdis": "^2.1.3",
|
"react-cusdis": "^2.1.3",
|
||||||
"react-dom": "17.0.2",
|
"react-dom": "17.0.2",
|
||||||
"reading-time": "1.3.0",
|
"reading-time": "1.3.0",
|
||||||
"rehype-autolink-headings": "^6.1.1",
|
"rehype-autolink-headings": "^6.1.0",
|
||||||
"rehype-citation": "^0.2.5",
|
"rehype-citation": "^0.2.0",
|
||||||
"rehype-katex": "^6.0.3",
|
"rehype-katex": "^6.0.2",
|
||||||
"rehype-preset-minify": "6.0.0",
|
"rehype-preset-minify": "6.0.0",
|
||||||
"rehype-prism-plus": "^1.6.1",
|
"rehype-prism-plus": "^1.1.3",
|
||||||
"rehype-slug": "^5.1.0",
|
"rehype-slug": "^5.0.0",
|
||||||
"remark-footnotes": "^4.0.1",
|
"remark-footnotes": "^4.0.1",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
"remark-math": "^5.1.1",
|
"remark-math": "^5.1.1",
|
||||||
"sharp": "^0.28.3",
|
"sharp": "^0.28.3",
|
||||||
"smoothscroll-polyfill": "^0.4.4",
|
"smoothscroll-polyfill": "^0.4.4",
|
||||||
"tailwindcss": "^3.3.2",
|
"tailwindcss": "^3.0.18",
|
||||||
"unist-util-visit": "^5.0.0",
|
"unist-util-visit": "^4.0.0",
|
||||||
"vfile": "^5.3.7"
|
"vfile": "^5.3.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@svgr/webpack": "^6.5.1",
|
"@svgr/webpack": "^6.1.2",
|
||||||
"@types/react": "^17.0.62",
|
"@types/react": "^17.0.50",
|
||||||
"@types/tailwindcss": "^2.2.4",
|
"@types/tailwindcss": "^2.2.0",
|
||||||
"@types/unist": "^2.0.6",
|
"@types/unist": "^2.0.6",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
"@typescript-eslint/eslint-plugin": "^4.28.1",
|
||||||
"@typescript-eslint/parser": "^4.33.0",
|
"@typescript-eslint/parser": "^4.28.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"dedent": "^0.7.0",
|
"dedent": "^0.7.0",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.29.0",
|
||||||
"eslint-config-next": "12.0.9",
|
"eslint-config-next": "12.0.9",
|
||||||
"eslint-config-prettier": "^8.8.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-prettier": "^3.4.1",
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.0.0",
|
||||||
"globby": "11.0.3",
|
"globby": "11.0.3",
|
||||||
"husky": "^6.0.0",
|
"husky": "^6.0.0",
|
||||||
"inquirer": "^8.2.5",
|
"inquirer": "^8.1.1",
|
||||||
"lint-staged": "^11.2.6",
|
"lint-staged": "^11.0.0",
|
||||||
"next-export-optimize-images": "^2.1.0",
|
"next-export-optimize-images": "^2.0.0",
|
||||||
"next-remote-watch": "^1.0.0",
|
"next-remote-watch": "^1.0.0",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.5.1",
|
||||||
"prettier-plugin-tailwindcss": "^0.1.13",
|
"prettier-plugin-tailwindcss": "^0.1.4",
|
||||||
"socket.io": "^4.7.1",
|
"socket.io": "^4.4.0",
|
||||||
"socket.io-client": "^4.7.1",
|
"socket.io-client": "^4.4.0",
|
||||||
"typescript": "^4.9.5"
|
"typescript": "^4.6.1-rc"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"*.+(js|jsx|ts|tsx)": [
|
"*.+(js|jsx|ts|tsx)": [
|
||||||
|
4926
pnpm-lock.yaml
4926
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user