mirror of
https://github.com/KazooTTT/kazoottt-blog.git
synced 2025-06-23 02:31:33 +08:00
Update docs and sort content
This commit is contained in:
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
title: 2023-02-21 星期二
|
|
||||||
slug: diary-2023-02-21
|
|
||||||
date: 2023-02-21
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 日记
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
在2023年2月21日的内容中,讨论了数组元素索引为何从0开始编号的问题。根据地址计算公式,索引实际上代表了内存地址的偏移量,首个元素的地址偏移量为0,因此索引从0开始是合理的。文章中还提供了一张图示,进一步解释了这一概念。
|
|
||||||
rinId: 23
|
|
||||||
toAstro: false
|
|
||||||
category: 日记-2023-02
|
|
||||||
---
|
|
||||||
|
|
||||||
# 2023-02-21 星期二
|
|
||||||
|
|
||||||
## 数组
|
|
||||||
|
|
||||||
[4.1. 数组(Array) - Hello 算法 (hello-algo.com)](https://www.hello-algo.com/chapter_array_and_linkedlist/array/#411)
|
|
||||||
**为什么数组元素索引从 0 开始编号?** 根据地址计算公式,**索引本质上表示的是内存地址偏移量**,首个元素的地址偏移量是 0 ,那么索引是 0 也就很自然了。
|
|
||||||
|
|
||||||

|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: 2023-10-07 星期六
|
|
||||||
slug: diary-2023-10-07
|
|
||||||
date: 2023-10-07
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 日记
|
|
||||||
published: true
|
|
||||||
description: 2023年10月7日星期六的计划包括国庆期间的厦门和杭州旅行,以及当天的打卡和待办事项。
|
|
||||||
toAstro: false
|
|
||||||
category: 日记-2023-10
|
|
||||||
---
|
|
||||||
|
|
||||||
# 2023-10-07 星期六
|
|
||||||
|
|
||||||
<!-- start of weread -->
|
|
||||||
<!-- end of weread -->
|
|
||||||
|
|
||||||
## 今天要做的事情
|
|
||||||
|
|
||||||
[[2023 国庆厦门和杭州之行]]
|
|
||||||
|
|
||||||
## 打卡
|
|
||||||
|
|
||||||
## Inbox
|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: 2023-10-19 星期四
|
|
||||||
slug: diary-2023-10-19
|
|
||||||
date: 2023-10-19
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 日记
|
|
||||||
published: true
|
|
||||||
description: 2023年10月19日星期四的日程包括发布xlsx util工具包,该工具能够根据输入的列索引返回如A、B等实际列名。此外,还包括打卡和处理inbox事项。
|
|
||||||
toAstro: false
|
|
||||||
category: 日记-2023-10
|
|
||||||
---
|
|
||||||
|
|
||||||
# 2023-10-19 星期四
|
|
||||||
|
|
||||||
<!-- start of weread -->
|
|
||||||
<!-- end of weread -->
|
|
||||||
|
|
||||||
## 今天要做的事情
|
|
||||||
|
|
||||||
xlsx util 发包,实现输入列的索引,输出 A B 这样真实的列名
|
|
||||||
|
|
||||||
## 打卡
|
|
||||||
|
|
||||||
## Inbox
|
|
@ -1,27 +0,0 @@
|
|||||||
---
|
|
||||||
title: 2023-10-28 星期六
|
|
||||||
slug: diary-2023-10-28
|
|
||||||
date: 2023-10-28
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 日记
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
Today's schedule includes learning from the dom-to-image topic, with a note on
|
|
||||||
weread content in the inbox.
|
|
||||||
toAstro: false
|
|
||||||
category: 日记-2023-10
|
|
||||||
---
|
|
||||||
|
|
||||||
# 2023-10-28 星期六
|
|
||||||
|
|
||||||
## 今天要做的事情
|
|
||||||
|
|
||||||
[[What I learn from dom-to-image]]
|
|
||||||
|
|
||||||
## 打卡
|
|
||||||
|
|
||||||
## Inbox
|
|
||||||
|
|
||||||
<!-- start of weread -->
|
|
||||||
<!-- end of weread -->
|
|
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
slug: present-conditions
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
基础大模型在实际应用中面临两大挑战:终端客户对高昂算力成本的接受度以及大模型在垂直行业任务中的表现不足。为解决这些问题,大模型通常会通过领域特定数据或知识库进行训练和优化,以形成适用于垂直领域的行业大模型或业务大模型。此外,一些企业还有深度定制和私有化部署的需求,需要在行业大模型的基础上,进一步加入企业专有数据进行训练或微调,以构建企业级大模型。
|
|
||||||
category: 编程-AI
|
|
||||||
title: AI大局
|
|
||||||
date: 2023-09-04
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- 基础大模型
|
|
||||||
- 产业应用
|
|
||||||
- 机器学习
|
|
||||||
finished: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 大局
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
基础大模型落地面临两大难题,一是终端客户对算力成本的接受能力,二是大模型虽擅长通用领域问题,但往往在垂直行业任务中表现欠佳。因此,基础大模型会通过领域数据或专属知识库进行训练和调优,形成垂直领域的行业大模型或业务大模型;此外,部分企业还具有深度定制、私有化部署的需求,需要在行业大模型基础上,进一步加入企业专有数据进行训练或微调,形成企业级大模型。
|
|
||||||
|
|
||||||
[2023 年中国 AIGC 产业全景报告 | 艾瑞咨询 - 实时互动网](https://www.nxrte.com/zixun/31964.html)
|
|
||||||
|
|
||||||
中间层
|
|
||||||
应用层
|
|
@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
title: 已经发布的分支在本地重命名之后如何推送到远程
|
|
||||||
date: 2024-10-16
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- Git
|
|
||||||
- 分支管理
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
category: 编程-git
|
|
||||||
slug: rename-published-branch-git
|
|
||||||
description: >-
|
|
||||||
要将已经发布的分支在本地重命名并推送到远程,可以按照以下步骤进行:首先使用git branch -m指令重命名本地分支,如果需要可以使用以下命令:git
|
|
||||||
branch -m 旧分支名 新分支名。然后使用git push指令推送重命名后的分支到远程,如果需要使用-u选项,可以设置上游分支,使用git push
|
|
||||||
-u origin 新分支名。最后要删除远程的旧分支,可以使用git push origin --delete 旧分支名。
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
要将已经发布的分支在本地重命名并推送到远程,可以按照以下步骤进行:
|
|
||||||
|
|
||||||
1. 重命名本地分支:
|
|
||||||
如果你还没有重命名分支,可以使用以下命令:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git branch -m 旧分支名 新分支名
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 推送重命名后的分支到远程:
|
|
||||||
使用 `-u` 选项设置上游分支:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git push -u origin 新分支名
|
|
||||||
```
|
|
||||||
|
|
||||||
3. 删除远程的旧分支:
|
|
||||||
如果你希望删除远程的旧分支,可以使用:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git push origin --delete 旧分支名
|
|
||||||
```
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
title: expo报错
|
|
||||||
slug: expo-error
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
在expo开发中遇到报错:TypeError: The 'compilation' argument must be an instance of
|
|
||||||
Compilation。错误的原因是项目中存在多个webpack版本,特别是由于额外添加了依赖"metro-core":
|
|
||||||
"^0.80.1"。解决此问题的方法是删除node_modules目录,移除该依赖,然后重新安装依赖。
|
|
||||||
rinId: 10
|
|
||||||
finished: true
|
|
||||||
date: 2024-02-07
|
|
||||||
category: 编程-web3
|
|
||||||
tags:
|
|
||||||
- expo 错误,angular cli,webpack,npm, metro-core
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Expo 报错
|
|
||||||
|
|
||||||
[angular cli - The 'compilation' argument must be an instance of Compilation - Stack Overflow](https://stackoverflow.com/questions/67727180/the-compilation-argument-must-be-an-instance-of-compilation)
|
|
||||||
|
|
||||||
expo TypeError: The 'compilation' argument must be an instance of Compilation
|
|
||||||
|
|
||||||
```
|
|
||||||
npm ls webpack
|
|
||||||
```
|
|
||||||
|
|
||||||
原因是有多个 webpack,而具体的原因是我另外加了一个 dep
|
|
||||||
"metro-core": "^0.80.1",
|
|
||||||
|
|
||||||
解决方法:删除 node_modules,以及把上面这个依赖移除,再安装一次。
|
|
@ -1,108 +0,0 @@
|
|||||||
---
|
|
||||||
title: solidity_bootcamp学习笔记
|
|
||||||
date: 2023-11-16
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- web3,开build,Solidity Bootcamp,区块链,ERC20
|
|
||||||
published: true
|
|
||||||
slug: soliditybootcamp-study-notes
|
|
||||||
description: >-
|
|
||||||
在之前的博客文章中,作者提到了报名参加了一个名为“web3课程”的openbuild课程。2023年11月16日是课程的第一天,作者对课程内容感到有趣,并计划继续学习并在博客中记录心得。第一节课主要讲解了区块链的基本原理和与web2的区别,作者还计划完成课程中的项目部署,并寻找其他资源进行额外学习。第二节课涉及了Solidity智能合约开发,并提供了相关的学习资源和工具。作者还收集了一些web3相关的工具、案例和教程链接,以便进一步学习和实践。
|
|
||||||
rinId: 11
|
|
||||||
finished: true
|
|
||||||
category: 编程-web3
|
|
||||||
---
|
|
||||||
|
|
||||||

|
|
||||||
在之前的[3-周报 平淡的一周 | KazooTTT Blog](https://www.kazoottt.top/article/weekly3#194502abe9804dbc860fb9c0a1091819)中提到了一个 openbuild 的[web3 课程](https://openbuild.xyz/learn/challenges/91?from=Challenges),抱着尝试的心态报名了。2023-11-16 是开课的第一天,整体停下来觉得挺有意思,大家的氛围也不错。打算继续学习下去,并且在本文中记录学习心得。
|
|
||||||
|
|
||||||
# 待办事项
|
|
||||||
|
|
||||||
- [x] 完成[[#11.16 第一节课]]中的部署项目(添加时间 2023-11-16)
|
|
||||||
|
|
||||||
# 11.16 第一节课
|
|
||||||
|
|
||||||
今天主要讲了区块链的基本原理,与 web2 的区别。了解到在 web3 的开发中,比较注重的是合约(类似传统后端)和前端,而前端的技术栈主要是 react 那一套(这一点在后面收集到的案例中也有体现,大部分都是 nextjs 来实现的)
|
|
||||||
|
|
||||||
由于我从未接触过 web3,听下来还是挺吃力的,不过感觉挺有趣。打算在课程之余,另外找一些课程来学习和实践,做一些感兴趣的东西,以及给开源项目提 pr。
|
|
||||||
|
|
||||||
要做的事:
|
|
||||||
完成课程中教学的例子:区块链开发例子-部署一个[ERC20 代币](<[https://github.com/meterio/tokenERC20](https://github.com/meterio/tokenERC20)>)
|
|
||||||
|
|
||||||
**对自己提升最快的应该是多参加一些 Hackathon**
|
|
||||||
|
|
||||||
# 2023-11-18 第二节课
|
|
||||||
|
|
||||||
课件如下:
|
|
||||||
|
|
||||||
![[IMG-20241112142440534.pdf]]
|
|
||||||
|
|
||||||
## 备忘
|
|
||||||
|
|
||||||
问题咨询:
|
|
||||||
|
|
||||||
[https://github.com/openbuildxyz/solidity_bootcamp](https://github.com/openbuildxyz/solidity_bootcamp)
|
|
||||||
|
|
||||||
Meter 社区网站:
|
|
||||||
|
|
||||||
[https://docs.meter.io/developer-documentation/introduction](https://docs.meter.io/developer-documentation/introduction)
|
|
||||||
|
|
||||||
区块链查询网站:
|
|
||||||
|
|
||||||
[https://chainlist.org](https://chainlist.org)
|
|
||||||
|
|
||||||
ERC20 案例网站:
|
|
||||||
|
|
||||||
[https://github.com/meterio/tokenERC20](https://github.com/meterio/tokenERC20)
|
|
||||||
![[IMG-20241112142440662.pdf]]
|
|
||||||
|
|
||||||
# 资源收集
|
|
||||||
|
|
||||||
## 工具
|
|
||||||
|
|
||||||
### [Chainlist](https://chainlist.org/)
|
|
||||||
|
|
||||||
查询可连接的网络
|
|
||||||

|
|
||||||
[GitHub - DefiLlama/chainlist](https://github.com/DefiLlama/chainlist)
|
|
||||||
基于 nextjs
|
|
||||||

|
|
||||||
[GitHub - DefiLlama/chainlist](https://github.com/DefiLlama/chainlist)
|
|
||||||
|
|
||||||
## 案例
|
|
||||||
|
|
||||||
### [Lens Protocol](https://www.lens.xyz/)
|
|
||||||
|
|
||||||
基于 web3 的社交平台
|
|
||||||

|
|
||||||
|
|
||||||
### [Dune](https://dune.com/home)
|
|
||||||
|
|
||||||
web3 交流论坛
|
|
||||||
报表做的很好看
|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
(能从上面的技术栈看出来,绝大部分都是 react/nextjs)
|
|
||||||
|
|
||||||
## 教程
|
|
||||||
|
|
||||||
## 当前的课程链接
|
|
||||||
|
|
||||||
[Solidity Bootcamp](https://openbuild.xyz/learn/challenges/91?from=Challenges)
|
|
||||||
|
|
||||||
## Openbuild 的另一门课程
|
|
||||||
|
|
||||||
[Learn Smart Contract with Foundry](https://openbuild.xyz/learn/courses/83)
|
|
||||||
|
|
||||||
## 微信公众号的入门文章
|
|
||||||
|
|
||||||
[Web3 从入门到实战](https://mp.weixin.qq.com/s/OFmrKuyHYF-W6zTLEBXVoA)
|
|
||||||
|
|
||||||
## 其他人推荐的 Foundry-full-course-f23
|
|
||||||
|
|
||||||
[GitHub - Cyfrin/foundry-full-course-f23](https://github.com/Cyfrin/foundry-full-course-f23)
|
|
||||||
|
|
||||||
# 更新记录
|
|
||||||
|
|
||||||
2023-11-16 第一节课笔记,以及一些资源收集。
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
title: tokenERC20部署和学习
|
|
||||||
slug: tokenerc20-deployment-and-learning
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
本内容涉及ERC20代币的部署与学习,具体参考GitHub上的meterio/tokenERC20项目,地址为https://github.com/meterio/tokenERC20。
|
|
||||||
rinId: 12
|
|
||||||
finished: true
|
|
||||||
date: 2024-02-07
|
|
||||||
category: 编程-web3
|
|
||||||
tags:
|
|
||||||
- tokenERC20
|
|
||||||
- 部署
|
|
||||||
- 学习
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# tokenERC20部署和学习
|
|
||||||
|
|
||||||
[GitHub - meterio/tokenERC20](https://github.com/meterio/tokenERC20)
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
title: antd switch组件错误使用案例
|
|
||||||
date: 2024-10-12
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- bug
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
antd的switch组件错误使用案例:当使用到antd的[switch](https://ant-design.antgroup.com/components/switch-cn)组件时,需要注意其api的使用。典型情况是,将checked状态与mode关联起来,并在mode变化时触发回调,然而,这种写法会导致切换switch时不会触发回调,而是等待-checked状态改变时才触发。正确的方法是使用onClick事件而不是onChange,这样可以让切换switch时触发回调。
|
|
||||||
slug: antd-switch-component-misuse-example
|
|
||||||
toAstro: false
|
|
||||||
category: 编程-前端
|
|
||||||
---
|
|
||||||
|
|
||||||
# antd switch组件错误使用案例
|
|
||||||
|
|
||||||
在使用antd的[switch](https://ant-design.antgroup.com/components/switch-cn)的时候,我错误地使用了api
|
|
||||||
|
|
||||||
``` tsx
|
|
||||||
<Switch checked={mode === 1} onChange={handleModeChange} />
|
|
||||||
```
|
|
||||||
|
|
||||||
这里的onChange是cheked变化的时候触发的回调,如果想要切换Switch的时候触发回调,应该使用onClick,而不是onChange。
|
|
||||||
|
|
||||||

|
|
@ -1,67 +0,0 @@
|
|||||||
---
|
|
||||||
title: fetch 报错排查 SocketError other side closed
|
|
||||||
date: 2024-02-03
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 网络
|
|
||||||
published: true
|
|
||||||
slug: fetch-socketerror-other-side-closed
|
|
||||||
link: >-
|
|
||||||
https://kazoottt.notion.site/fetch-SocketError-other-side-closed-d399e7db398c4f7faaa8d3e0003327fd
|
|
||||||
notionID: d399e7db-398c-4f7f-aaa8-d3e0003327fd
|
|
||||||
description: >-
|
|
||||||
在main.js文件中使用fetch方法时遇到了报错,错误信息显示“fetch failed”并指出“other side
|
|
||||||
closed”。错误发生在getFansNum函数中,具体是由于TLS连接的另一端关闭导致的。解决此问题的方法是关闭MitM(中间人攻击)工具,这通常用于拦截和修改网络通信,可能会导致不正常的连接关闭。
|
|
||||||
rinId: 15
|
|
||||||
finished: true
|
|
||||||
category: 编程-前端
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Fetch 报错
|
|
||||||
|
|
||||||
# 常规
|
|
||||||
|
|
||||||
排查 SocketError other side closed
|
|
||||||
|
|
||||||
在main.js中使用了fetch,但是在运行main.js的时候时候fetch报错。
|
|
||||||
|
|
||||||
```shell
|
|
||||||
% node main.js
|
|
||||||
|
|
||||||
(node:51258) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
|
|
||||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
|
||||||
node:internal/deps/undici/undici:11730
|
|
||||||
Error.captureStackTrace(err, this);
|
|
||||||
^
|
|
||||||
|
|
||||||
TypeError: fetch failed
|
|
||||||
at Object.fetch (node:internal/deps/undici/undici:11730:11)
|
|
||||||
at async getFansNum (/Users/kazoottt/GitHub/bilibili-fans/main.js:11:20) {
|
|
||||||
cause: SocketError: other side closed
|
|
||||||
at TLSSocket.onSocketEnd (node:internal/deps/undici/undici:8280:26)
|
|
||||||
at TLSSocket.emit (node:events:526:35)
|
|
||||||
at endReadableNT (node:internal/streams/readable:1589:12)
|
|
||||||
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
|
|
||||||
code: 'UND_ERR_SOCKET',
|
|
||||||
socket: {
|
|
||||||
localAddress: '198.19.0.1',
|
|
||||||
localPort: 55306,
|
|
||||||
remoteAddress: '198.18.2.185',
|
|
||||||
remotePort: 443,
|
|
||||||
remoteFamily: 'IPv4',
|
|
||||||
timeout: undefined,
|
|
||||||
bytesWritten: 607,
|
|
||||||
bytesRead: 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Node.js v20.10.0
|
|
||||||
```
|
|
||||||
|
|
||||||
从报错信息中可以看出来是getFansNum这个方法中的fetch方法报了错。
|
|
||||||
|
|
||||||
解决方法:
|
|
||||||
|
|
||||||
关闭MitM
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
title: AMD
|
|
||||||
date: 2023-09-27
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- node
|
|
||||||
- amd
|
|
||||||
published: true
|
|
||||||
slug: amd
|
|
||||||
description: >-
|
|
||||||
AMD, or Asynchronous Module Definition, is a JavaScript specification for
|
|
||||||
defining modules where the module and its dependencies can be asynchronously
|
|
||||||
loaded. This is particularly useful for web applications where scripts can be
|
|
||||||
loaded in parallel, improving performance and efficiency.
|
|
||||||
category: 编程-前端-node
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# AMD
|
|
||||||
|
|
||||||
[[CommonJS简介]]
|
|
||||||
|
|
||||||
## 什么是 AMD
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
title: npm scope公共包
|
|
||||||
date: 2024-02-18
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- npm
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: npm-scope-public-package
|
|
||||||
description: >-
|
|
||||||
在package.json文件中添加"publishConfig"字段,设置"access"为"public",或者在发布时使用命令`npm publish
|
|
||||||
--access=public`,以确保包的访问权限为公开。
|
|
||||||
rinId: 72
|
|
||||||
category: 编程-前端-node
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Npm Scope公共包
|
|
||||||
|
|
||||||
在package.json中新增:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
或者发布的时候加上 `--access=public`
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
npm publish --access=public
|
|
||||||
```
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
title: 如何更加直接地查看浏览器内核
|
|
||||||
date: 2024-04-01
|
|
||||||
author: KazooTTT
|
|
||||||
tags: []
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: how-to-look-at-the-browser-kernel-more-directly
|
|
||||||
description: >-
|
|
||||||
在浏览器的开发者工具命令行中输入`navigator.appVersion`命令,可以查看浏览器的版本信息。通过这个命令,开发者可以快速了解当前浏览器的版本详情,这对于调试和兼容性测试非常有帮助。
|
|
||||||
NotionID-notionnext: 23be0d61-036d-48cc-925c-c8c25de31aa5
|
|
||||||
link-notionnext: 'https://kazoottt.notion.site/23be0d61036d48cc925cc8c25de31aa5'
|
|
||||||
rinId: 54
|
|
||||||
toAstro: false
|
|
||||||
category: 编程-前端
|
|
||||||
---
|
|
||||||
|
|
||||||
# 如何更加直接地查看浏览器内核
|
|
||||||
|
|
||||||
打开devtools的命令行,然后输入:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
navigator.appVersion
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
title: 禁止antd modal按下esc关闭弹窗
|
|
||||||
date: 2024-10-15
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- antd
|
|
||||||
- 前端
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
category: 编程-前端
|
|
||||||
slug: antd-modal-esc-disabled
|
|
||||||
description: 解决antd modal 键盘关闭问题:设置modal的keyboard属性为false。
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
参考地址:[Modal: option not to close with cancel key · Issue #22137 · ant-design/ant-design · GitHub](https://github.com/ant-design/ant-design/issues/22137)
|
|
||||||
|
|
||||||
解决方法:
|
|
||||||
|
|
||||||
设置modal的keyboard属性为false
|
|
||||||
|
|
||||||
在antd的modal的文档中也有提到:[对话框 Modal - Ant Design](https://ant-design.antgroup.com/components/modal-cn#api)
|
|
||||||
|
|
||||||
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|
|
||||||
| -------- | ------------- | ------- | ---- | --- |
|
|
||||||
| keyboard | 是否支持键盘 esc 关闭 | boolean | true | |
|
|
@ -1,53 +0,0 @@
|
|||||||
---
|
|
||||||
title: 前端页面在非输入的组件也出现闪烁的光标
|
|
||||||
date: 2024-10-15
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- bug
|
|
||||||
- 前端
|
|
||||||
- 浏览器
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
这是一个视频错误现象的解决方法介绍。有两种方法可以解除光标浏览的问题:按下F7取消光标浏览,或者进入浏览器设置,
|
|
||||||
disabling辅助功能或无障碍选项。同时,也提到了不推荐的方法,可以通过更改CSS样式来解决问题,但这会降低使用体验。
|
|
||||||
slug: web-pages-also-have-a-flashing-cursor-on-non-input-components
|
|
||||||
toAstro: false
|
|
||||||
category: 编程-前端
|
|
||||||
---
|
|
||||||
|
|
||||||
## 错误现象
|
|
||||||
|
|
||||||
如图:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 错误原因
|
|
||||||
|
|
||||||
开启了光标浏览
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 解决方法
|
|
||||||
|
|
||||||
方法一
|
|
||||||
|
|
||||||
按下F7取消光标浏览
|
|
||||||
|
|
||||||
方法二
|
|
||||||
|
|
||||||
如果你使用的是edge,打开浏览器设置,找到辅助功能-键盘-使用文本光标导航页面,取消启用该功能。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
如果你使用的是google chrome,打开浏览器设置,找到无障碍-使用光标浏览器页面,取消启用该功能。
|
|
||||||
|
|
||||||
方法三 (不推荐)
|
|
||||||
|
|
||||||
``` css
|
|
||||||
body {
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
这将导致所有的元素都不可以选择,会极大地降低使用体验
|
|
@ -1,74 +0,0 @@
|
|||||||
---
|
|
||||||
title: 运行npm run tsc报错
|
|
||||||
date: 2024-10-15
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- bug
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
npm run lint:js 和 npm run prettier 成功后, however,出现了一个错误,即Missing script
|
|
||||||
"tsc"。这是因为 package.json 中的脚本中没有定义该命令。解决这个问题可以通过在package.json中添加如下内容来实现:
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
"scripts": {
|
|
||||||
"tsc": "tsc"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
或
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
"scripts": {
|
|
||||||
"tsc": "tsc --noEmit"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
这两个脚本将为我们提供一个正确的命令,用于执行 TypeScript 编译。
|
|
||||||
slug: npm-run-tsc
|
|
||||||
toAstro: false
|
|
||||||
category: 编程-前端
|
|
||||||
---
|
|
||||||
|
|
||||||
## 错误现象
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
> npm run lint:js && npm run prettier && npm run tsc
|
|
||||||
|
|
||||||
Checking formatting...
|
|
||||||
All matched files use Prettier code style!
|
|
||||||
npm error Missing script: "tsc"
|
|
||||||
npm error
|
|
||||||
npm error To see a list of scripts, run:
|
|
||||||
npm error npm run
|
|
||||||
npm error A complete log of this run can be found in: C:\Users\turbo\AppData\Local\npm-cache\_logs\2024-10-12T06_30_22_873Z-debug-0.log
|
|
||||||
ELIFECYCLE Command failed with exit code 1.
|
|
||||||
```
|
|
||||||
|
|
||||||
## 错误原因
|
|
||||||
|
|
||||||
虽然安装了tsc但是这里的写的是npm run tsc,也就是说package.json的script中的需要有tsc
|
|
||||||
|
|
||||||
## 解决方法
|
|
||||||
|
|
||||||
在package.json中添加:
|
|
||||||
|
|
||||||
```
|
|
||||||
"scripts": {
|
|
||||||
"tsc": "tsc"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
如果有其他的配置需求可以在后面添加,例如
|
|
||||||
|
|
||||||
```
|
|
||||||
"scripts": {
|
|
||||||
"tsc": "tsc --noEmit"
|
|
||||||
},
|
|
||||||
```
|
|
@ -1,57 +0,0 @@
|
|||||||
---
|
|
||||||
slug: flask-jwt
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
本文对比了几个Flask可用的JWT库,包括flask-jwt-extended、Flask-JWT和jwt,根据PyPI下载量和Star量,选择使用最广泛的flask-jwt-extended。文章介绍了在父页面通过iframe嵌入子页面时,如何在子页面中验证和使用JWT
|
|
||||||
token,包括页面级别和接口级别的token验证。同时,提供了安装flask-jwt-extended的命令,并建议参考官方文档进行详细配置。
|
|
||||||
category: 编程-后端-python
|
|
||||||
title: flask-jwt
|
|
||||||
date: 2024-09-10
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- flask-jwt
|
|
||||||
- flaskjwt扩展
|
|
||||||
- token验证
|
|
||||||
- iframe嵌入
|
|
||||||
- 接口鉴权
|
|
||||||
- 装饰器
|
|
||||||
finished: false
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Flask-jwt
|
|
||||||
|
|
||||||
## Flask可用库的对比
|
|
||||||
|
|
||||||
flask-jwt-extended的使用量是最多的,为了后期更好地项目维护,还是选择第一个来使用。
|
|
||||||
|
|
||||||
## 使用flask-jwt-extended
|
|
||||||
|
|
||||||
场景:
|
|
||||||
|
|
||||||
父页面 + iframe嵌入子页面,嵌入的时候url带上token。
|
|
||||||
|
|
||||||
在子页面需要做的事情:
|
|
||||||
|
|
||||||
1. 页面级别:每个页面都需要验证token是否有效。
|
|
||||||
2. 接口级别:每个接口都需要验证token是否有效。
|
|
||||||
|
|
||||||
### 对于页面
|
|
||||||
|
|
||||||
父页面使用iframe嵌入子页面的时候,url带上token。因此在子页面加载的时候需要处理url以获取token,然后把它存储在localStorage中。在后续接口调用中都需要把token带上,以便于接口的鉴权。
|
|
||||||
|
|
||||||
### 对于接口
|
|
||||||
|
|
||||||
实现一个装饰器,用于校验token。
|
|
||||||
|
|
||||||
## 具体过程
|
|
||||||
|
|
||||||
[参考文档](https://flask-jwt-extended.readthedocs.io/en/stable/basic_usage.html)
|
|
||||||
|
|
||||||
1. 安装`flask-jwt-extended`
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pip install flask-jwt-extended
|
|
||||||
```
|
|
@ -1,109 +0,0 @@
|
|||||||
---
|
|
||||||
slug: learn-python
|
|
||||||
published: true
|
|
||||||
tags:
|
|
||||||
- subprocess
|
|
||||||
- process
|
|
||||||
description: 本内容涵盖了Python学习的多个方面,包括Flask框架的学习、Python基础知识如循环和模块的使用、文件操作和异常处理、正则表达式、进程与线程等。具体包括了Python的变量作用域搜索顺序、切片操作、列表的remove方法、文件读写和异常处理、正则表达式的学习资源和练习网站、进程与线程的基本概念和Python中的实现方法。此外,还提供了一个使用multiprocessing模块实现多进程下载任务的Python示例代码,展示了进程的启动和等待结束的方法。整体内容丰富,适合Python初学者系统学习。
|
|
||||||
category: 编程-后端-python
|
|
||||||
---
|
|
||||||
|
|
||||||
# 学习 Python
|
|
||||||
|
|
||||||
项目里面用的是 flask
|
|
||||||
所以先从 flask 学起吧。
|
|
||||||
|
|
||||||
[GitHub - jackfrued/Python-100-Days: Python - 100天从新手到大师](https://github.com/jackfrued/Python-100-Days)
|
|
||||||
|
|
||||||
init和main的区别是什么
|
|
||||||
|
|
||||||
## 循环
|
|
||||||
|
|
||||||
[Python For Loops](https://www.w3schools.com/python/python_for_loops.asp)
|
|
||||||
|
|
||||||
for i
|
|
||||||
|
|
||||||
while
|
|
||||||
|
|
||||||
## 模块
|
|
||||||
|
|
||||||
[Fetching Title#aodf](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/06.%E5%87%BD%E6%95%B0%E5%92%8C%E6%A8%A1%E5%9D%97%E7%9A%84%E4%BD%BF%E7%94%A8.md)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
> 事实上,Python查找一个变量时会按照“局部作用域”、“嵌套作用域”、“全局作用域”和“内置作用域”的顺序进行搜索,前三者我们在上面的代码中已经看到了,所谓的“内置作用域”就是Python内置的那些标识符,我们之前用过的`input`、`print`、`int`等都属于内置作用域。
|
|
||||||
|
|
||||||
python切片的尾下标,是不包含在内的
|
|
||||||
|
|
||||||
0 1 2 3 4 5
|
|
||||||
|
|
||||||
比如说[0:3] 取的是0,1,2这三个值
|
|
||||||
|
|
||||||
list remove的是第一个匹配项
|
|
||||||
|
|
||||||
## 文件
|
|
||||||
|
|
||||||
[Python-100-Days/Day01-15/11.文件和异常.md at master · jackfrued/Python-100-Days · GitHub](https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/11.%E6%96%87%E4%BB%B6%E5%92%8C%E5%BC%82%E5%B8%B8.md)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
2024-03-04 看到了文件这里
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 正则表达式
|
|
||||||
|
|
||||||
推荐的教程 [正则表达式30分钟入门教程](https://deerchao.cn/tutorials/regex/regex.htm)
|
|
||||||
|
|
||||||
推荐的练习网站 [regex101: build, test, and debug regex](https://regex101.com/)
|
|
||||||
|
|
||||||
## 进程与线程
|
|
||||||
|
|
||||||
[进程与线程的一个简单解释 - 阮一峰的网络日志](https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html)
|
|
||||||
|
|
||||||
[multiprocessing — Process-based parallelism — Python 3.12.2 documentation](https://docs.python.org/3/library/multiprocessing.html)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
```python
|
|
||||||
from multiprocessing import Process
|
|
||||||
from os import getpid
|
|
||||||
from random import randint
|
|
||||||
from time import time, sleep
|
|
||||||
|
|
||||||
|
|
||||||
def download_task(filename):
|
|
||||||
print('启动下载进程,进程号[%d].' % getpid())
|
|
||||||
print('开始下载%s...' % filename)
|
|
||||||
time_to_download = randint(5, 10)
|
|
||||||
sleep(time_to_download)
|
|
||||||
print('%s下载完成! 耗费了%d秒' % (filename, time_to_download))
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
start = time()
|
|
||||||
p1 = Process(target=download_task, args=('Python从入门到住院.pdf', ))
|
|
||||||
p1.start()
|
|
||||||
p2 = Process(target=download_task, args=('Peking Hot.avi', ))
|
|
||||||
p2.start()
|
|
||||||
p1.join()
|
|
||||||
p2.join()
|
|
||||||
end = time()
|
|
||||||
print('总共耗费了%.2f秒.' % (end - start))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
```
|
|
||||||
|
|
||||||
`Process`对象的`start`方法用来启动进程,而`join`方法表示等待进程执行结束
|
|
||||||
|
|
||||||
# process
|
|
||||||
|
|
||||||
# subprocess
|
|
||||||
|
|
||||||
> Python实现并发编程主要有3种方式:多进程、多线程、多进程+多线程。
|
|
||||||
|
|
||||||
进程通信
|
|
||||||
|
|
||||||

|
|
@ -1,63 +0,0 @@
|
|||||||
---
|
|
||||||
title: python之禅
|
|
||||||
date: 2024-03-04
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- python
|
|
||||||
finished: false
|
|
||||||
published: true
|
|
||||||
slug: the-zen-of-python
|
|
||||||
description: >-
|
|
||||||
The Zen of Python, written by Tim Peters, is a collection of guiding
|
|
||||||
principles for writing computer programs that are both beautiful and
|
|
||||||
effective. It emphasizes the importance of simplicity, readability, and
|
|
||||||
explicitness in coding. The text advocates for avoiding complexity and
|
|
||||||
ambiguity, and encourages the use of namespaces. It also highlights the value
|
|
||||||
of practicality over theoretical purity, and stresses that errors should not
|
|
||||||
be ignored. Overall, the Zen of Python promotes clarity and elegance in
|
|
||||||
programming practices.
|
|
||||||
category: 编程-后端-python
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Python之禅
|
|
||||||
|
|
||||||
> The Zen of Python, by Tim Peters
|
|
||||||
>
|
|
||||||
> Beautiful is better than ugly.
|
|
||||||
>
|
|
||||||
> Explicit is better than implicit.
|
|
||||||
>
|
|
||||||
> Simple is better than complex.
|
|
||||||
>
|
|
||||||
> Complex is better than complicated.
|
|
||||||
>
|
|
||||||
> Flat is better than nested.
|
|
||||||
>
|
|
||||||
> Sparse is better than dense.
|
|
||||||
>
|
|
||||||
> Readability counts.
|
|
||||||
>
|
|
||||||
> Special cases aren't special enough to break the rules.
|
|
||||||
>
|
|
||||||
> Although practicality beats purity.
|
|
||||||
>
|
|
||||||
> Errors should never pass silently.
|
|
||||||
>
|
|
||||||
> Unless explicitly silenced.
|
|
||||||
>
|
|
||||||
> In the face of ambiguity, refuse the temptation to guess.
|
|
||||||
>
|
|
||||||
> There should be one-- and preferably only one --obvious way to do it.
|
|
||||||
>
|
|
||||||
> Although that way may not be obvious at first unless you're Dutch.
|
|
||||||
>
|
|
||||||
> Now is better than never.
|
|
||||||
>
|
|
||||||
> Although never is often better than _right_ now.
|
|
||||||
>
|
|
||||||
> If the implementation is hard to explain, it's a bad idea.
|
|
||||||
>
|
|
||||||
> If the implementation is easy to explain, it may be a good idea.
|
|
||||||
>
|
|
||||||
> Namespaces are one honking great idea -- let's do more of those!
|
|
@ -1,52 +0,0 @@
|
|||||||
---
|
|
||||||
title: python常用的命令备忘
|
|
||||||
date: 2024-03-27
|
|
||||||
author: KazooTTT
|
|
||||||
tags: []
|
|
||||||
finished: false
|
|
||||||
published: true
|
|
||||||
slug: commonly-used-command-memos-in-python
|
|
||||||
description: >-
|
|
||||||
本文介绍了如何在当前环境下导出最小依赖以及配置Python包管理工具pip的镜像源。首先,通过安装`pipreqs`工具并使用命令`pipreqs ./
|
|
||||||
--encoding=utf8`在项目根目录导出依赖。其次,讲解了如何在Windows系统中通过修改`pip.ini`文件或使用命令行配置pip的镜像源,包括设置镜像源地址、取消配置以及查看当前配置的方法。
|
|
||||||
category: 编程-后端-python
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Python常用的命令备忘
|
|
||||||
|
|
||||||
## 导出当前环境下的最小依赖
|
|
||||||
|
|
||||||
首先安装包
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pip install pipreqs
|
|
||||||
```
|
|
||||||
|
|
||||||
然后在环境根目录导出
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pipreqs ./ --encoding=utf8
|
|
||||||
```
|
|
||||||
|
|
||||||
## 镜像源配置
|
|
||||||
|
|
||||||
在windows中,搜索pip.ini,去修改
|
|
||||||
|
|
||||||
或者使用命令行来配置
|
|
||||||
|
|
||||||
```
|
|
||||||
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
|
||||||
```
|
|
||||||
|
|
||||||
取消配置
|
|
||||||
|
|
||||||
```
|
|
||||||
pip config unset global.index-url
|
|
||||||
```
|
|
||||||
|
|
||||||
读取当前的配置:
|
|
||||||
|
|
||||||
```
|
|
||||||
pip config get global.index-url
|
|
||||||
```
|
|
@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
title: 链表
|
|
||||||
slug: linked-list
|
|
||||||
published: true
|
|
||||||
tags:
|
|
||||||
- todo
|
|
||||||
description: >-
|
|
||||||
本内容涉及链表相关算法的复习和整理,已完成[[86.分隔链表]]和[[141.环形链表]]的学习,尚未完成[[142.环形链表-ii]]和[[160.相交链表]]。推荐参考文章《双指针技巧秒杀七道链表题目》以提高解题技巧。同时,使用标签进行内容过滤,并通过数据视图排序和展示相关算法文件的最新修改时间、标签等信息。
|
|
||||||
finished: false
|
|
||||||
date: '2024-07-11T02:17:53.455Z'
|
|
||||||
rinId: 121
|
|
||||||
category: 编程-算法
|
|
||||||
---
|
|
||||||
|
|
||||||
# 链表
|
|
||||||
|
|
||||||
- [x] [[86.分隔链表]]
|
|
||||||
- [x] [[141.环形链表]]
|
|
||||||
- [ ] [[142.环形链表-ii]]
|
|
||||||
- [ ] [[160.相交链表]]
|
|
||||||
|
|
||||||
// should use tag to filter
|
|
||||||
|
|
||||||
[双指针技巧秒杀七道链表题目](https://labuladong.github.io/algo/di-yi-zhan-da78c/shou-ba-sh-8f30d/shuang-zhi-0f7cc/)
|
|
||||||
|
|
||||||
```dataview
|
|
||||||
table date, tags, published ,file.mtime from "技术与学习/算法"
|
|
||||||
sort file.mtime desc
|
|
||||||
```
|
|
@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
title: 如何清空dns缓存
|
|
||||||
date: 2024-02-26
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- dns
|
|
||||||
- 缓存
|
|
||||||
- mac
|
|
||||||
- ip
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: how-to-clear-the-dns-cache
|
|
||||||
description: 本文介绍了如何在Mac和windows系统中清空DNS缓存和查看自己的IP地址。
|
|
||||||
rinId: 76
|
|
||||||
toAstro: false
|
|
||||||
category: 编程-计算机网络
|
|
||||||
---
|
|
||||||
|
|
||||||
# 如何清空dns缓存
|
|
||||||
|
|
||||||
## macos
|
|
||||||
|
|
||||||
如何清空dns缓存
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
sudo dscacheutil -flushcache
|
|
||||||
```
|
|
||||||
|
|
||||||
mac如何获取自己的ip
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
ifconfig
|
|
||||||
```
|
|
||||||
|
|
||||||
## windows
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
ipconfig /flushdns
|
|
||||||
```
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
slug: courselearn-figma-from-scratch
|
|
||||||
published: true
|
|
||||||
tags:
|
|
||||||
- figma
|
|
||||||
- 设计
|
|
||||||
- 课程
|
|
||||||
description: >-
|
|
||||||
本课程为零基础学习Figma的视频教程,由酸梅干超人在Bilibili平台发布,视频链接为<https://www.bilibili.com/video/BV1fg411G7cs/>。课程内容包括图标设计的基础知识,讲解了图标如何通过基础图形组合而成。此外,还探讨了在不涉及直接操作SVG制作动态效果的情况下,直接绘制图标可能更为快捷。
|
|
||||||
title: 课程 - 零基础学figma
|
|
||||||
date: 2023-09-10
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
finished: false
|
|
||||||
category: 设计-UI设计
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 课程 - 零基础学figma
|
|
||||||
|
|
||||||
# 【课程】零基础学figma
|
|
||||||
|
|
||||||
<https://www.bilibili.com/video/BV1fg411G7cs/>
|
|
||||||
[零基础学 Figma【酸梅干超人出品】\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1fg411G7cs/)
|
|
||||||
|
|
||||||
原来很多图标也是用基础图形拼起来的
|
|
||||||
如果不涉及直接操作 svg 做动效的话,是不是直接画比较快
|
|
@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
title: 视频颜色空间异常,请检查文件后重新上传
|
|
||||||
date: 2024-11-12
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- 异常颜色空间、视频转码问题、H265
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
category: 设计-视频剪辑
|
|
||||||
slug: >-
|
|
||||||
the-color-space-of-the-video-is-abnormal-please-check-the-file-and-upload-it-again
|
|
||||||
description: 视频颜色空间异常,需要检查文件后重新上传。解决方法是使用permute h265重新转码。
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
视频颜色空间异常,请检查文件后重新上传
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 解决方法
|
|
||||||
|
|
||||||
使用permute h265重新转码
|
|
@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
title: Telegram bot推荐 VidDlPBot
|
|
||||||
date: 2024-06-26
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- Telegram
|
|
||||||
- 视频下载
|
|
||||||
- VidDlPBot
|
|
||||||
- Twitter
|
|
||||||
- TikTok
|
|
||||||
- YouTube
|
|
||||||
- Instagram
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: telegram-bot-recommendation-viddlpbot
|
|
||||||
description: 推荐一款Telegram bot——VidDlPBot,可以轻松下载Twitter、TikTok、YouTube、Instagram的视频,操作简便。
|
|
||||||
rinId: 60
|
|
||||||
category: 软件
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Telegram Bot推荐 VidDlPBot
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
目前已支持Twitter、TikTok、YouTube、Instagram
|
|
||||||
|
|
||||||
添加bot之后,直接输入要下载的链接给bot,它就会返回下载好的视频给你了。超级方便。gemoo
|
|
||||||
|
|
||||||
教学视频:
|
|
||||||
|
|
||||||
[如何快速下载视频(手机端同理)\[telegram bot推荐#1\]\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1dGgkecEr7/)
|
|
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
title: arm64和x64与苹果芯片的关系备忘
|
|
||||||
date: 2023-10-16
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 备忘
|
|
||||||
published: true
|
|
||||||
link: 'https://kazoottt.notion.site/arm64-x64-b527f80503f241d3a0f20503eb8a9c0c'
|
|
||||||
notionID: b527f805-03f2-41d3-a0f2-0503eb8a9c0c
|
|
||||||
slug: memo-on-arm64-and-x64-in-relation-to-apple-chips
|
|
||||||
description: >-
|
|
||||||
本文旨在帮助读者理解并记忆arm64(aarch64)与x86_64架构的区别及其与苹果芯片和Intel芯片的关系。通过简明的记录,指导读者在选择硬件时如何根据芯片类型做出正确的决策。
|
|
||||||
toAstro: false
|
|
||||||
category: 软件
|
|
||||||
---
|
|
||||||
|
|
||||||
# Arm64 和 X64 与苹果芯片的关系备忘
|
|
||||||
|
|
||||||
一直记不住应该如何选择,在这里记录备忘一下
|
|
||||||
|
|
||||||
aarch64 or arm64 - 苹果芯片
|
|
||||||
x86_64 - Intel 芯片
|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: obsidian技巧备忘
|
|
||||||
date: 2023-10-16
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 备忘
|
|
||||||
published: true
|
|
||||||
link: 'https://kazoottt.notion.site/obsidian-c6755f6ab1f04617b378e8bee26fd089'
|
|
||||||
notionID: c6755f6a-b1f0-4617-b378-e8bee26fd089
|
|
||||||
slug: obsidian-tips-memo
|
|
||||||
description: Obsidian技巧备忘:粘贴代码时,使用cmd+v可能导致样式错乱,建议改用cmd+shift+v。同时,可以利用Obsidian链接外部代码文件。
|
|
||||||
toAstro: false
|
|
||||||
category: 软件
|
|
||||||
---
|
|
||||||
|
|
||||||
# Obsidian 技巧备忘
|
|
||||||
|
|
||||||
- 粘贴代码使用 cmd+v 会样式错乱,请使用 cmd+shift+v
|
|
||||||
- [[obsidian链接外部代码文件]]
|
|
||||||
|
|
||||||
输入 task-todo:/.
|
|
||||||
|
|
||||||
搜索所有的未完成的任务
|
|
||||||
|
|
||||||

|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
title: shot.so
|
|
||||||
date: 2023-09-17
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 软件推荐
|
|
||||||
- 图片处理
|
|
||||||
- 设计
|
|
||||||
- 图片美化工具
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: shotso-image-beautification-tool
|
|
||||||
description: >-
|
|
||||||
shot.so是一个图片美化工具,主要用于快速美化截图。它支持设备模拟,允许用户修改阴影、边框、比例等属性。该工具内置了大量免费模板,方便用户快速创建精美的图片效果。
|
|
||||||
rinId: 62
|
|
||||||
category: 软件
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# shot.so - 图片美化工具
|
|
||||||
|
|
||||||
<https://shots.so/>
|
|
||||||
|
|
||||||
可快速美化图片(主要是截图),支持设备 mock,支持修改 shadow,border,scale 等。内置模板很多,且均免费。
|
|
||||||
|
|
||||||

|
|
@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
title: tweet to image
|
|
||||||
date: 2024-06-26
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- Tweet to Image
|
|
||||||
- Twitter Tools
|
|
||||||
- Social Media
|
|
||||||
- Online Tools
|
|
||||||
- Image Conversion
|
|
||||||
- Shareable Content
|
|
||||||
- Digital Marketing
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: tweet-to-image
|
|
||||||
description: >-
|
|
||||||
This post introduces three online tools that allow users to convert tweets
|
|
||||||
into shareable images. The tools featured are TweetPik, PostWizz, and 10015
|
|
||||||
Tools. These services provide an easy way to create visually appealing
|
|
||||||
screenshots of tweets for sharing on various platforms.
|
|
||||||
NotionID-notionnext: 1203f3c5-7438-44af-a655-d509a4dff4ec
|
|
||||||
link-notionnext: 'https://kazoottt.notion.site/tweet-to-image-1203f3c5743844afa655d509a4dff4ec'
|
|
||||||
rinId: 50
|
|
||||||
category: 软件
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Tweet to Image 输入推特链接生成对应的图片
|
|
||||||
|
|
||||||
[Perfect Twitter Screenshots - TweetPik](https://tweethunter.io/tweetpik)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[Free Tweet to Image Converter Online - PostWizz](https://postwizz.com/tweet-to-image-converter/)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
[Tweet to Image Converter: Tweet Screenshots Online | 10015 Tools](https://10015.io/tools/tweet-to-image-converter)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
ref:
|
|
||||||
|
|
||||||
[The Top 6 Free Tools to Convert Tweets Into Shareable Images](https://www.makeuseof.com/free-tools-convert-tweets-into-images/)
|
|
@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
title: vscode md自动预览
|
|
||||||
date: 2024-10-15
|
|
||||||
author: KazooTTT
|
|
||||||
type: Post
|
|
||||||
status: Published
|
|
||||||
tags:
|
|
||||||
- vscode
|
|
||||||
- markdown
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
category: 软件
|
|
||||||
slug: vscode-md
|
|
||||||
description: >-
|
|
||||||
vscode md自动预览是使用Markdown All In One插件实现的,通过设置Auto Show Preview To
|
|
||||||
Side为true可以快速看到 markdown 文件的预览效果,但这种方式不是很推荐。
|
|
||||||
NotionID-notionnext: 12b55568-fd75-81ce-82a3-fdb4a13d1658
|
|
||||||
link-notionnext: 'https://kazoottt.notion.site/vscode-md-12b55568fd7581ce82a3fdb4a13d1658'
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# vscode md自动预览
|
|
||||||
|
|
||||||
下载vscode插件 [markdown all in one](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
然后设置中搜索:`Auto Show Preview To Side`
|
|
||||||
|
|
||||||
设置为`true`
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
备注:不是很好用,不推荐这种使用方式
|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: 摘抄
|
|
||||||
date: 2024-03-27
|
|
||||||
author: KazooTTT
|
|
||||||
tags: []
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: extract
|
|
||||||
description: >-
|
|
||||||
编程大师Martin
|
|
||||||
Fowler强调了代码中重复问题的严重性,认为重复是代码中最坏的“味道”。同时,提到了关于开源的心理建设资源,暗示了在编程和开源项目中维护心理健康的重要性。
|
|
||||||
rinId: 31
|
|
||||||
category: 阅读笔记
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 摘抄
|
|
||||||
|
|
||||||
- 编程大师*Martin Fowler*先生曾经说过:“**代码有很多种坏味道,重复是最坏的一种!**”
|
|
||||||
- [开源的心理建设](https://antfu.me/posts/mental-health-oss-zh)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 爱是想要触碰却又收回的手
|
|
||||||

|
|
@ -1,64 +0,0 @@
|
|||||||
---
|
|
||||||
slug: bloomberg-welcomes-intra-firm-chatbots-to-ib
|
|
||||||
published: true
|
|
||||||
title: 彭博社欢迎公司内部聊天机器人加入国际商业银行
|
|
||||||
tags:
|
|
||||||
- 翻译
|
|
||||||
category: 阅读笔记-阅读和翻译
|
|
||||||
description: >-
|
|
||||||
彭博社宣布推出新的Instant Bloomberg (IB)附加服务——IB
|
|
||||||
Connect,其中包括公司内部聊天机器人服务。这项服务允许彭博终端用户将专有聊天机器人集成到IB聊天室中,促进内部信息的共享和商业智能的发现。客户可以使用提供的软件开发工具包定制聊天机器人,以适应其独特的技术堆栈和工作流程。此外,IB
|
|
||||||
Connect支持两种类型的聊天机器人:问答式和通知型,分别用于提供可操作的情报和关键事件的及时通知。这一创新旨在帮助客户推进数字化转型战略,提高协作工作流程的效率。
|
|
||||||
date: '2023-11-09T10:26:54.033Z'
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 彭博社欢迎公司内部聊天机器人加入国际商业银行
|
|
||||||
|
|
||||||
[原文:Bloomberg Welcomes Intra-Firm Chatbots to IB](https://www.bloomberg.com/company/press/bloomberg-welcomes-intra-firm-chatbots-to-ib/)
|
|
||||||
|
|
||||||
2023 年 11 月 09 日
|
|
||||||
**_客户可使用公司内部聊天机器人推动数字化转型和协作工作流程_**
|
|
||||||
|
|
||||||
彭博社今天宣布推出一项新的 Instant Bloomberg (IB) 附加服务,以支持客户的数字化转型计划。IB Connect:IB Connect:公司内部聊天机器人服务使彭博终端用户能够将专有聊天机器人添加到所有用户都是同一公司成员的 IB 聊天室中。
|
|
||||||
|
|
||||||
客户可以调用公司内部聊天机器人,自动将其内部系统中的重要信息显示在 IB 中,与同事共享,并促进内部商业智能的可发现性。
|
|
||||||
|
|
||||||
**IB Connect** 是一套服务,使彭博终端用户能够将 IB 与公司内部工作流程工具无缝集成,帮助简化与同事的协作。
|
|
||||||
|
|
||||||
**IB Connect:公司内部聊天机器人**是一项新的 IB Connect 服务,在客户适用的 IB 聊天室与其内部系统之间提供双向集成。它使用自然语言处理为客户的非结构化 IB 数据提供结构和上下文,并将丰富的信息提供给客户的公司内部聊天机器人。
|
|
||||||
每个客户都可以使用提供的软件开发工具包来构建和定制自己的 IB Connect:行内聊天机器人,以满足其公司独特的技术堆栈和内部用户工作流程,并与彭博社的 API 协议保持一致。
|
|
||||||
|
|
||||||
**ING 金融市场战略工程主管 Pieter van Gaa**l 说:"ING的金融市场前台战略工程团队一直致力于改善客户体验。人们已经开始期待即时访问,我们认为他们对金融市场的体验也应如此。
|
|
||||||
我们使用聊天机器人已经有一段时间了,我们发现 Instant Bloomberg 中新增的公司内部聊天机器人非常适合我们的需求"。
|
|
||||||
|
|
||||||
**Bardin Hill Investment Partners 的执行信贷主管兼投资组合经理 Philip Raciti** 说:"在彭博社推出公司内部聊天机器人之前,我们一直在寻找一种方法,以一种可用于深度分析的结构从不同来源获取数据,并能随着时间的推移扩展功能。
|
|
||||||
我们认为 Intra-Firm Chatbots 是弥合数据鸿沟的重要一步,因为它提供了一个简单、高附加值的工具,促进了彭博社与我们内部系统之间的实时数据连接。Bardin Hill 实施的公司内部聊天机器人帮助我们直接访问最大的信息孤岛,同时提高流程效率。
|
|
||||||
|
|
||||||
**罗杰-伯奇(Roger Birch),产品主管:彭博国际银行通信与协作系统产品主管 Roger Birch** 说:"我们将继续投资于创新,使我们的客户能够进一步推进其数字化转型战略,并从使用 IB 中获取更多价值。
|
|
||||||
IB Connect 服务集(包括公司内部聊天机器人)将帮助我们的客户创建信息超回路,并从根本上提高协作工作流程的效率。"
|
|
||||||
|
|
||||||
彭博社目前通过 IB Connect 支持两种类型的客户聊天机器人功能:**公司内问答聊天机器人**和**公司内通知聊天机器人**。
|
|
||||||
|
|
||||||
**问答式公司内部聊天机器人**通过 IB Connect 与客户系统之间的双向通信获取可操作的情报,以回答指向公司内部聊天机器人的聊天询问。
|
|
||||||
用户可以查询其专有系统中的各种数据,然后这些聊天机器人可以直接在聊天室中生成内容(链接、表格、可视化丰富数据)。
|
|
||||||
这些与问答 Intrafirm 聊天机器人的简单互动可帮助用户及其队友高效地传递信息,并为他们的交流增加更多价值。
|
|
||||||
|
|
||||||
当发生关键事件或满足特定市场条件时,**通知型 Intrafirm 聊天机器人**会及时、主动地发出警报,并提供有意义的商业情报,而不会转移对正在进行的团队交流的注意力。
|
|
||||||
|
|
||||||
这样,用户就能在已经开展协作的 IB 环境中接收关键更新。例如,可以为交易前、执行中和交易后的工作流程发送分析、库存或订单状态更新通知。
|
|
||||||
|
|
||||||
**关于 Instant Bloomberg(IB):**
|
|
||||||
IB 帮助彭博终端用户与金融市场和彼此之间实时连接,在安全的环境中交流想法、分享可操作的信息并优化通信工作流程。
|
|
||||||
彭博还提供其他服务,使客户能够将 IB 与公司内部应用程序无缝集成,帮助简化与同事的协作。
|
|
||||||
|
|
||||||
**关于彭博终端:**
|
|
||||||
四十多年来,彭博终端通过为资本市场带来透明度和创新,彻底改变了金融服务行业。
|
|
||||||
彭博终端受到全球最具影响力的决策者的信赖,提供实时的新闻、数据、见解和交易工具,帮助我们的客户将知识转化为行动。
|
|
||||||
|
|
||||||
**关于彭博社**
|
|
||||||
彭博社是商业和金融信息领域的全球领导者,提供可信赖的数据、新闻和见解,为市场带来透明度、效率和公平性。
|
|
||||||
公司通过可靠的技术解决方案帮助连接全球金融生态系统中具有影响力的社区,使我们的客户能够做出更明智的决策并促进更好的合作。欲了解更多信息,请访问 Bloomberg.com/company 或申请演示。
|
|
||||||
|
|
||||||
**媒体联系方式**
|
|
||||||
Robert Madden, <rmadden29@bloomberg.net>, +1 (646) 807-2213
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
slug: can-brain-science-help-us-break-bad-habits
|
|
||||||
published: true
|
|
||||||
tags:
|
|
||||||
- 摘抄
|
|
||||||
description: >-
|
|
||||||
研究表明,通过调整环境来隐藏诱惑,可以有效提高自控力。一项实验发现,当孩子们看不到面前的棉花糖时,他们能坚持的时间比看到棉花糖时更长。这表明自控力并非仅是个人内在品质,而是受环境影响的。因此,通过微调环境,我们或许能模仿那些看起来更有自制力的人。
|
|
||||||
category: 阅读笔记-阅读和翻译
|
|
||||||
date: 2024-01-07
|
|
||||||
title: Can Brain Science Help Us Break Bad Habits
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# Can Brain Science Help Us Break Bad Habits?
|
|
||||||
|
|
||||||
原文:
|
|
||||||
[Can Brain Science Help Us Break Bad Habits? | The New Yorker](https://www.newyorker.com/magazine/2019/10/28/can-brain-science-help-us-break-bad-habits)
|
|
||||||
翻译:
|
|
||||||
[研究表明,依靠意志力改掉坏习惯是徒劳无功的 \[译\] | 宝玉的分享](https://baoyu.io/translations/life/can-brain-science-help-us-break-bad-habits)
|
|
||||||
|
|
||||||
> 研究者比较了两种情况:一种是孩子们能看到面前的棉花糖;另一种则是知道棉花糖在那儿,但看不到它。结果显示,面对可见诱惑时,孩子们平均只能坚持六分钟,但如果把诱惑藏起来,他们能坚持十分钟。对 Wood 而言,这说明自控力“并非内在品质,而是我们所处环境的反映。”通过微调环境,我们也许能够模仿那些看起来更有自制力的人。
|
|
||||||
|
|
||||||
> 成功的自控,实际上来自于有效隐藏诱惑
|
|
@ -1,189 +0,0 @@
|
|||||||
---
|
|
||||||
title: 【译】Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie - 我应该选择哪个 Docker Image?
|
|
||||||
date: 2023-12-13
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- dockek
|
|
||||||
- 镜像
|
|
||||||
- image
|
|
||||||
finished: true
|
|
||||||
published: true
|
|
||||||
slug: >-
|
|
||||||
alpine-slim-stretch-bookworm-bullseye-buster-jessie-which-docker-image-should-i-choose
|
|
||||||
description: >-
|
|
||||||
本文讨论了在选择Docker镜像时,如何根据不同的需求和环境选择合适的镜像,如Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie等。文章详细解释了这些镜像的特点,包括它们的基础操作系统、大小、安全性和适用场景。同时,作者提供了一些实用的建议,帮助读者根据项目需求和环境限制,选择最合适的Docker镜像。此外,文章还强调了在生产环境中遵循安全最佳实践的重要性,并提供了比较不同Docker镜像大小的方法。
|
|
||||||
toAstro: false
|
|
||||||
category: 阅读笔记-阅读和翻译
|
|
||||||
---
|
|
||||||
|
|
||||||
# **【译】Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie - 我应该选择哪个 Docker Image?**
|
|
||||||
|
|
||||||
原文链接:[https://readmedium.com/zh/alpine-slim-stretch-bookworm-bullseye-buster-jessie-which-docker-image-should-i-choose-500f8c15c8cf](https://readmedium.com/zh/alpine-slim-stretch-bookworm-bullseye-buster-jessie-which-docker-image-should-i-choose-500f8c15c8cf)
|
|
||||||
|
|
||||||
使用的翻译GPT:**[翻译英文科技文章的 GPT](https://chat.openai.com/g/g-uBhKUJJTl-ke-ji-wen-zhang-fan-yi)**
|
|
||||||
|
|
||||||
翻译内容如下:
|
|
||||||
|
|
||||||
## Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie—我应该选择哪个 Docker 镜像?
|
|
||||||
|
|
||||||
我关于选择适合你项目的正确 Docker 镜像的原始文章的更新。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
照片由 Taylor Deas-Melesh 在 Unsplash 拍摄
|
|
||||||
|
|
||||||
几年前,当我在学习如何使用 Docker 来容器化我的应用程序时,[我写了一篇文章,讲解了不同版本和镜像类型之间的区别](https://readmedium.com/alpine-slim-stretch-buster-jessie-bullseye-bookworm-what-are-the-differences-in-docker-62171ed4531d)。当我刚开始时,我总是困惑于应该选择哪个版本的镜像。
|
|
||||||
|
|
||||||
Alpine、slim、bookworm、bullseye、stretch、buster、jessie、slim-bookworm—这些都是什么意思?
|
|
||||||
|
|
||||||
它一直是并且仍然是我阅读量最高的文章。困惑是真实的。但是,自从我第一次写这篇文章以来,我学到了很多,想要提供一个更新。
|
|
||||||
|
|
||||||
简而言之,docker 镜像之间的区别仍然是其运行的底层操作系统。但问题仍然存在,你该如何选择正确的镜像?
|
|
||||||
|
|
||||||
记住,编程中没有永久的事物。你可以尝试不同的选项,看看哪个适合你,进行更改并重新部署。在推送到生产环境之前,始终彻底测试你的镜像。
|
|
||||||
|
|
||||||
## 简单标签 vs. 共享标签
|
|
||||||
|
|
||||||
在我之前的文章中,我没有解释你可能在一些 Docker 镜像页面上看到的简单标签与共享标签。
|
|
||||||
|
|
||||||
简单标签与特定版本的镜像相关联,该镜像是为 Linux 或 Windows 构建的。共享标签代表一组镜像。集合中的每个镜像可能为不同的平台和架构构建。
|
|
||||||
|
|
||||||
无论是简单标签还是共享标签,检索哪个镜像的决定都由主机 docker 守护程序确定。
|
|
||||||
|
|
||||||
要记住的是,“简单”标签用于单一平台(Windows 或 Linux),而“共享标签”可以用于多个平台的组合。
|
|
||||||
|
|
||||||
通常,如果你知道你为哪个平台构建,就选择简单标签。如果你真的需要一个可移植的 docker 镜像,你可能会考虑一个共享标签。小心这个并彻底测试。
|
|
||||||
|
|
||||||
## 完整官方镜像
|
|
||||||
|
|
||||||
我将使用 python 和 node 作为例子,因为这些是我最常用的 docker 镜像,但这些规则适用于大多数镜像。
|
|
||||||
|
|
||||||
根据 DockerHub 的说法,没有合格标签的完整镜像是事实上的镜像,如果你不确定并且刚开始,应该使用它。
|
|
||||||
|
|
||||||
例如:
|
|
||||||
|
|
||||||
python:3.11.4 node:20.3.0 这些镜像基于最新的稳定 Debian 操作系统版本。我通常在尝试在开发环境中快速启动一个项目时,首先使用其中之一,那时我还不关心生成的镜像的大小或安全性。
|
|
||||||
|
|
||||||
在我之前的文章中,我提到完整镜像是最安全的选择,但我想修改这个声明。完整镜像不是最安全的选择,但当你试图在开发环境中快速启动某事时,你应该使用它。
|
|
||||||
|
|
||||||
原因是,它可能包含你的应用程序或脚本运行所需的一切。
|
|
||||||
|
|
||||||
但是,在部署到生产之前,一定要选择对你来说最小最安全的镜像。在下面阅读有关 docker 安全最佳实践的更多信息。
|
|
||||||
|
|
||||||
所有其他镜像选择都是完整镜像的子集。因此,如果你从子集开始,你可能会发现自己必须安装在较小的镜像中不可用的工具。
|
|
||||||
|
|
||||||
如果你有更多时间,并且想要从一开始就为生产环境构建,那么研究下面概述的其他镜像选择,并找到适合你的镜像。
|
|
||||||
|
|
||||||
## -bookworm/-bullseye/-stretch/-jessie
|
|
||||||
|
|
||||||
带有 bullseye、bookworm、stretch、buster 或 jessie 标签的镜像是不同 Debian 版本的代号。在撰写本文时,稳定的 Debian 版本是 12,其代号是“Bookworm”。“Bullseye”是 Debian 11。“Buster”是 10。“Stretch”是所有版本 9 变体的代号,“Jessie”是所有版本 8 变体的代号。
|
|
||||||
|
|
||||||
未来的版本正在开发中,但尚未稳定,它们是“Forky”和“Trixy”。你可能会开始在 DockerHub 上的镜像版本列表中看到这些标签。
|
|
||||||
|
|
||||||
如果你的代码与特定版本的 Debian 操作系统兼容,请选择其中一个镜像。通常情况下,当你安装超出基础操作系统提供的包时,就会这样。在这种情况下,你要确保你留在同一个 Debian 版本上,这样你就不会在将来破坏你的构建。
|
|
||||||
|
|
||||||
## -slim
|
|
||||||
|
|
||||||
slim 镜像是完整镜像的精简版本。这个镜像通常只安装运行你特定工具所需的最小内容。就 Python 而言,那就是运行 python 所需的最少包,对于 node.js 也是如此。
|
|
||||||
|
|
||||||
通过省略不常用的工具,镜像变得更小。如果你有空间限制,不需要完整版本,请使用此镜像。
|
|
||||||
|
|
||||||
但是在使用此镜像时一定要彻底测试!如果你遇到无法解释的错误,请尝试切换到完整镜像,看看是否解决了问题。
|
|
||||||
|
|
||||||
Slim 还有一个额外的好处,那就是最安全的。更小的镜像有较少可能被攻击的点,所以如果你只需要运行一个基本脚本或你的应用程序不需要完整操作系统的许多功能,使用最小的镜像是最好的选择。
|
|
||||||
|
|
||||||
## -slim-bookworm/-slim-bullseye
|
|
||||||
|
|
||||||
将 slim 与特定 Debian 版本结合时,你会得到一个只包含运行该特定版本操作系统所需最基本文件的 slim 版本。
|
|
||||||
|
|
||||||
## -alpine
|
|
||||||
|
|
||||||
Alpine 镜像基于 Alpine Linux 项目,该项目是专门为容器内部使用而构建的操作系统。很长一段时间以来,这些是最受欢迎的镜像变体,因为它们的体积非常小。
|
|
||||||
|
|
||||||
然而,一些团队正在远离 alpine,因为这些镜像可能导致难以调试的兼容性问题。特别是,如果使用 Python 镜像,一些轮子被构建为与 Debian 兼容,并且需要重新编译才能与基于 Apline 的镜像一起使用。
|
|
||||||
|
|
||||||
使用 Alpine 镜像的主要原因是使你的结果镜像尽可能小。基础镜像将小于 5MB。当前的 python 基础镜像(将 python 添加到基础 alpine 镜像)为 78.9MB。那仍然相对较小。
|
|
||||||
|
|
||||||
如果空间是一个问题,这个镜像是最受推荐的。
|
|
||||||
|
|
||||||
缺点是它不包含你可能需要的一些包。主要是,它使用比 glibc 更轻的 musl lib。如果你的应用程序有特定的 libc 要求,你可能会遇到问题。
|
|
||||||
|
|
||||||
小型镜像中缺少你需要的东西,你可以直接在 Dockerfile 中安装所需的包。这样可以保持镜像仅包含你需要的内容。请注意,如果你安装了外部包,你的 Dockerfile 将会发生变化。主要区别在于你将使用 apk 而不是 apt-get 来安装包。
|
|
||||||
|
|
||||||
对于 -alpine 镜像有一些担忧,所以你需要了解它们。在这里和这里阅读一些关于它们的信息,并做好研究。同样,如果在构建 Dockerfile 时遇到无法解释的问题,尝试切换到完整镜像看看是否能解决问题。
|
|
||||||
|
|
||||||
## -windowsservercore
|
|
||||||
|
|
||||||
我很少使用 Windows,现在我坚定地站在 Mac/Linux 阵营,但如果你的应用程序只在 Windows 或 Windows Server 上运行,这是你的镜像。
|
|
||||||
|
|
||||||
## 在生产中,始终遵循安全最佳实践
|
|
||||||
|
|
||||||
一旦准备好进入生产,选择正确的基础镜像至关重要。当你超越了“让它工作”的阶段,你就需要确保你正在“正确地做事”。安全性是极其重要的一环。
|
|
||||||
|
|
||||||
首先,确保你使用的是 DockerHub 的官方镜像或由验证过的发布者构建的镜像。你可以在 DockerHub 上的镜像旁看到这些徽章。
|
|
||||||
|
|
||||||
选择满足你需求的最小基础镜像。决定以上哪个版本的镜像符合你的需求。较小的镜像可以最小化你暴露的安全漏洞数量,且更轻量。
|
|
||||||
|
|
||||||
确保你从 Dockerfile 中移除任何不必要的包。在开发和测试时,你可能会尝试安装一些包,但在部署到生产之前,返回去移除任何未使用的包。
|
|
||||||
|
|
||||||
不要在生产环境的 Dockerfile 中使用 :latest。这样做将总是拉取最新的镜像,而你的应用程序的依赖可能与未来版本不兼容,导致它可能在未来出现故障。
|
|
||||||
|
|
||||||
## 那么,我应该选择哪一个?
|
|
||||||
|
|
||||||
以下是我使用的一些一般指导原则:
|
|
||||||
|
|
||||||
- 如果我需要在开发环境中快速启动某物,没有空间限制,也没有时间瞎折腾,我会从事实上的镜像开始。
|
|
||||||
- 我主要关心的是镜像是否具备我需要的一切以开箱即用,我可以让我的概念验证工作。然而,这个镜像将占用最多的空间,也是最不安全的。除非绝对必要,不要在生产环境中使用它。
|
|
||||||
- 如果空间是一个问题,并且我知道我只需要运行特定语言(如 python)的最小包,我会选择 -slim。Slim 提供了运行 Python 所需的最低限度,并减少了安全漏洞。
|
|
||||||
- 简单的 Python 脚本是 slim 镜像的良好候选。
|
|
||||||
- 对于一些我有时间彻底测试的项目,并且有极端的空间限制,我会使用 Alpine 镜像。但请注意,这可能导致更长的构建时间和难以发现的错误。
|
|
||||||
- 如果你在将 docker 容器移植到新环境时遇到困难,或者在添加新包时出现故障,尝试不同的镜像。
|
|
||||||
- 当我需要安装针对特定 Debian 版本的额外包时,我使用 bullseye 或 bookworm 标签。这将确保我获得该版本 Debian 的最新版本,但不会在将来破坏我的构建。
|
|
||||||
- 你还可以尝试这些镜像的 -slim 版本以减少空间。
|
|
||||||
- 最后,始终滚动到特定镜像的 DockerHub 页面底部,阅读有关选择特定镜像的建议。
|
|
||||||
|
|
||||||
## 比较 Docker 镜像大小
|
|
||||||
|
|
||||||
如果你想亲自检查 docker 镜像并比较它们的大小,请尝试这个。
|
|
||||||
|
|
||||||
```python
|
|
||||||
docker pull --quiet python:3.11.4
|
|
||||||
docker pull --quiet python:3.11.4-slim
|
|
||||||
docker pull --quiet python:3.11.4-alpine
|
|
||||||
docker pull --quiet python:3.11.4-bookworm
|
|
||||||
docker pull --quiet python:3.11.4-slim-bookworm
|
|
||||||
docker images | sort -k7 -h
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
你会看到事实上的镜像与 -slim 和 -alpine 版本之间有巨大的差异。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 结论
|
|
||||||
|
|
||||||
在选择 docker 镜像时,重要的是要考虑许多因素,包括你为哪种架构构建、空间限制、安全问题以及构建镜像所需的时间。
|
|
||||||
|
|
||||||
我希望这有助于阐明差异,并指导你为下一个项目选择 docker 镜像。
|
|
||||||
|
|
||||||
🙏 感谢你读到最后!如果你有任何问题,请在下面评论或通过 [julie.perilla@gmail.com](https://www.notion.so/kazoottt/julie.perilla@gmail.com) 给我发邮件。
|
|
||||||
|
|
||||||
👉 新来 Medium?成为会员,每周只需 1 美元即可阅读任何文章!
|
|
||||||
|
|
||||||
☕ 喜欢你所读的内容?请我喝杯咖啡来激发更多内容!
|
|
||||||
|
|
||||||
## 参考文献
|
|
||||||
|
|
||||||
### Python
|
|
||||||
|
|
||||||
Python 是一种解释型、交互式、面向对象、开源的编程语言。[hub.docker.com](https://www.notion.so/kazoottt/hub.docker.com)
|
|
||||||
|
|
||||||
### Node
|
|
||||||
|
|
||||||
Node.js 是一个基于 JavaScript 的服务器端和网络应用平台。[hub.docker.com](https://www.notion.so/kazoottt/hub.docker.com)
|
|
||||||
|
|
||||||
安全最佳实践 镜像安全最佳实践指南 [docs.docker.com](https://www.notion.so/kazoottt/docs.docker.com)
|
|
||||||
|
|
||||||
### DebianReleases
|
|
||||||
|
|
||||||
Debian 正在持续开发中。最新发布的是 Debian 12.0。它也(当前)被称为或以其… [wiki.debian.org](https://www.notion.so/kazoottt/wiki.debian.org)
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
title: 博客改造日志
|
|
||||||
subtitle: 改造自黄玄老师提供的博客模板
|
|
||||||
date: 2022-10-12T00:00:00.000Z
|
|
||||||
author: KazooTTT
|
|
||||||
tags:
|
|
||||||
- 博客
|
|
||||||
- 前端
|
|
||||||
slug: blog-makeover-log
|
|
||||||
published: true
|
|
||||||
description: >-
|
|
||||||
本博客改造日志记录了对基于Jekyll的模板[GitHub - Huxpro/huxpro.github.io: My Blog / Jekyll
|
|
||||||
Themes / PWA](https://github.com/Huxpro/huxpro.github.io)的修改。主要更新包括:当featured
|
|
||||||
tags数量为0时,隐藏该组件;以及使用rake命令`rake post title="xxx" subtitle="xxx"`快速创建博客文章。
|
|
||||||
finished: true
|
|
||||||
rinId: 124
|
|
||||||
category: 项目-已结项
|
|
||||||
toAstro: false
|
|
||||||
---
|
|
||||||
|
|
||||||
# 博客改造日志
|
|
||||||
|
|
||||||
The blog template is [GitHub - Huxpro/huxpro.github.io: My Blog / Jekyll Themes / PWA](https://github.com/Huxpro/huxpro.github.io), which is based on Jekyll.
|
|
||||||
|
|
||||||
## 1. Featured Tags 数量为 0 时,隐藏该组件
|
|
||||||
|
|
||||||
在组件外层新增一道 tags 数量判断
|
|
||||||

|
|
||||||
|
|
||||||
## 2. Rake 快速创建博客
|
|
||||||
|
|
||||||
`rake post title="xxx" subtitle="xxx"`
|
|
Reference in New Issue
Block a user