mirror of
https://github.com/KazooTTT/kazoottt-blog.git
synced 2025-06-16 15:31:21 +08:00
feat: update blog content and scripts
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "astro check --watch & astro dev",
|
||||
"dev": "astro check --watch & astro dev --port 2555",
|
||||
"start": "astro dev",
|
||||
"build": "astro check && astro build",
|
||||
"preview": "astro preview",
|
||||
@ -22,6 +22,7 @@
|
||||
"astro-expressive-code": "^0.33.5",
|
||||
"astro-icon": "^1.1.0",
|
||||
"clsx": "^2.1.0",
|
||||
"gray-matter": "^4.0.3",
|
||||
"mdast-util-to-string": "^4.0.0",
|
||||
"reading-time": "^1.5.0",
|
||||
"rehype-external-links": "^3.0.0",
|
||||
|
8201
pnpm-lock.yaml
generated
8201
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
42
scripts/sortByDate.cjs
Normal file
42
scripts/sortByDate.cjs
Normal file
@ -0,0 +1,42 @@
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const matter = require('gray-matter')
|
||||
|
||||
const contentDir = path.join(__dirname, '../src/content/post')
|
||||
|
||||
function processDirectory(dir) {
|
||||
const files = fs.readdirSync(dir).filter((file) => path.extname(file) === '.md')
|
||||
const fileInfos = files.map((file) => {
|
||||
const filePath = path.join(dir, file)
|
||||
const content = fs.readFileSync(filePath, 'utf8')
|
||||
const { data } = matter(content)
|
||||
return {
|
||||
name: file,
|
||||
path: filePath,
|
||||
date: new Date(data.date)
|
||||
}
|
||||
})
|
||||
|
||||
// Sort files by date
|
||||
fileInfos.sort((a, b) => a.date - b.date)
|
||||
|
||||
// Rename files
|
||||
fileInfos.forEach((file, index) => {
|
||||
const newName = `${index.toString().padStart(2, '0')} ${file.name}`
|
||||
const newPath = path.join(dir, newName)
|
||||
fs.renameSync(file.path, newPath)
|
||||
console.log(`Renamed ${file.name} to ${newName}`)
|
||||
})
|
||||
}
|
||||
|
||||
function processAllDirectories(baseDir) {
|
||||
const items = fs.readdirSync(baseDir)
|
||||
items.forEach((item) => {
|
||||
const itemPath = path.join(baseDir, item)
|
||||
if (fs.statSync(itemPath).isDirectory()) {
|
||||
processDirectory(itemPath)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
processAllDirectories(contentDir)
|
68
scripts/updateCategoryBatchly.cjs
Normal file
68
scripts/updateCategoryBatchly.cjs
Normal file
@ -0,0 +1,68 @@
|
||||
// 批量修改 ./src/content/post/* 中的frontmatter中的category
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const contentDir = path.join(__dirname, '../src/content/post')
|
||||
|
||||
function processDirectory(dir) {
|
||||
fs.readdirSync(dir).forEach((item) => {
|
||||
const itemPath = path.join(dir, item)
|
||||
const stats = fs.statSync(itemPath)
|
||||
|
||||
if (stats.isDirectory()) {
|
||||
processDirectory(itemPath)
|
||||
} else if (stats.isFile() && path.extname(item) === '.md') {
|
||||
processFile(itemPath)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function getCategoryFromPath(filePath) {
|
||||
const relativePath = path.relative(contentDir, filePath)
|
||||
const pathParts = relativePath.split(path.sep)
|
||||
|
||||
// The category is the first directory after "post"
|
||||
if (pathParts.length > 1) {
|
||||
return pathParts[0]
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
function processFile(filePath) {
|
||||
const fileContent = fs.readFileSync(filePath, 'utf8')
|
||||
const category = getCategoryFromPath(filePath)
|
||||
|
||||
if (!category) {
|
||||
console.log(`No category found for: ${filePath}`)
|
||||
return
|
||||
}
|
||||
|
||||
const frontmatter = fileContent.match(/^---\n[\s\S]*?\n---/)
|
||||
if (frontmatter) {
|
||||
const frontmatterContent = frontmatter[0]
|
||||
const frontmatterLines = frontmatterContent.split('\n')
|
||||
|
||||
let categoryUpdated = false
|
||||
const updatedFrontmatterLines = frontmatterLines.map((line) => {
|
||||
if (line.startsWith('category:')) {
|
||||
categoryUpdated = true
|
||||
return `category: ${category}`
|
||||
}
|
||||
return line
|
||||
})
|
||||
|
||||
// Add category if it doesn't exist
|
||||
if (!categoryUpdated) {
|
||||
updatedFrontmatterLines.splice(-1, 0, `category: ${category}`)
|
||||
}
|
||||
|
||||
const updatedFrontmatter = updatedFrontmatterLines.join('\n')
|
||||
const updatedFileContent = fileContent.replace(frontmatterContent, updatedFrontmatter)
|
||||
fs.writeFileSync(filePath, updatedFileContent, 'utf8')
|
||||
console.log(`Updated category to '${category}' for: ${filePath}`)
|
||||
}
|
||||
}
|
||||
|
||||
processDirectory(contentDir)
|
@ -1,6 +1,5 @@
|
||||
---
|
||||
import type { CollectionEntry } from 'astro:content'
|
||||
import { Image } from 'astro:assets'
|
||||
import FormattedDate from '../FormattedDate.astro'
|
||||
import Card from '../Card.astro'
|
||||
import { Icon } from 'astro-icon/components'
|
||||
@ -24,12 +23,11 @@ const dateTimeOptions: Intl.DateTimeFormatOptions = {
|
||||
{
|
||||
data.coverImage && (
|
||||
<div class='aspect-h-9 aspect-w-16 mb-6'>
|
||||
<Image
|
||||
alt={data.coverImage.alt}
|
||||
<img
|
||||
src={data.coverImage}
|
||||
class='rounded-2xl object-cover'
|
||||
fetchpriority='high'
|
||||
loading='eager'
|
||||
src={data.coverImage.src}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
@ -27,9 +27,7 @@ const postDate = post.data.date
|
||||
</a>
|
||||
{
|
||||
withDesc && (
|
||||
<p class='line-clamp-2 text-sm italic text-muted-foreground'>
|
||||
{post.data.description}
|
||||
</p>
|
||||
<p class='line-clamp-2 text-sm italic text-muted-foreground'>{post.data.description}</p>
|
||||
)
|
||||
}
|
||||
</Tag>
|
||||
|
@ -9,7 +9,7 @@ function removeDupsAndLowerCase(array: string[]) {
|
||||
|
||||
const post = defineCollection({
|
||||
type: 'content',
|
||||
schema: ({ image }) =>
|
||||
schema: () =>
|
||||
z.object({
|
||||
title: z.string(),
|
||||
description: z.string().optional().nullable(),
|
||||
@ -17,17 +17,12 @@ const post = defineCollection({
|
||||
.string()
|
||||
.or(z.date())
|
||||
.transform((val) => new Date(val)),
|
||||
coverImage: z
|
||||
.object({
|
||||
src: image(),
|
||||
alt: z.string()
|
||||
})
|
||||
.optional(),
|
||||
coverImage: z.string().optional(),
|
||||
draft: z.boolean().default(false),
|
||||
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
|
||||
ogImage: z.string().optional(),
|
||||
category: z.string().optional().nullable(),
|
||||
finished: z.boolean().default(false),
|
||||
finished: z.boolean().default(false)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -10,7 +10,7 @@ tags:
|
||||
- 工具
|
||||
finished: true
|
||||
published: true
|
||||
category: 随手记
|
||||
category: AI
|
||||
slug: chainforge-intro
|
||||
description: >-
|
||||
ChainForge is a visual programming environment designed for prompt
|
@ -20,7 +20,6 @@ description: 本文介绍了如何在 Cursor 中添加和使用 DeepSeek-Coder
|
||||
|
||||

|
||||
|
||||
|
||||
但是它也可以使用自己的 key和模型具体的操作如下。
|
||||

|
||||
|
||||
@ -35,6 +34,7 @@ description: 本文介绍了如何在 Cursor 中添加和使用 DeepSeek-Coder
|
||||
## 3. 配置 Base URL
|
||||
|
||||
在设置中找到 `Override OpenAI Base URL` 选项,并填入以下地址:
|
||||
|
||||
```
|
||||
https://api.deepseek.com/v1
|
||||
```
|
1
src/content/post/web3/web3资源收集.md → src/content/post/web3/00 web3资源收集.md
Executable file → Normal file
1
src/content/post/web3/web3资源收集.md → src/content/post/web3/00 web3资源收集.md
Executable file → Normal file
@ -9,6 +9,7 @@ description: >-
|
||||
rinId: 13
|
||||
finished: true
|
||||
date: 2024-02-07
|
||||
category: web3
|
||||
---
|
||||
|
||||
# web3资源收集
|
@ -1,27 +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
|
||||
---
|
||||
|
||||
# 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,105 +0,0 @@
|
||||
---
|
||||
title: solidity_bootcamp学习笔记
|
||||
date: 2023-11-16T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
published: true
|
||||
slug: soliditybootcamp-study-notes
|
||||
description: >-
|
||||
在之前的博客文章中,作者提到了报名参加了一个名为“web3课程”的openbuild课程。2023年11月16日是课程的第一天,作者对课程内容感到有趣,并计划继续学习并在博客中记录心得。第一节课主要讲解了区块链的基本原理和与web2的区别,作者还计划完成课程中的项目部署,并寻找其他资源进行额外学习。第二节课涉及了Solidity智能合约开发,并提供了相关的学习资源和工具。作者还收集了一些web3相关的工具、案例和教程链接,以便进一步学习和实践。
|
||||
rinId: 11
|
||||
finished: true
|
||||
---
|
||||
|
||||
![[5578244-WechatIMG1695 1.webp]]
|
||||
在之前的[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 第二节课
|
||||
|
||||
课件如下:
|
||||
![[solidity智能合约开发_20231118.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)
|
||||
![[bootcamp.pdf]]
|
||||
|
||||
# 资源收集
|
||||
|
||||
## 工具
|
||||
|
||||
### [Chainlist](https://chainlist.org/)
|
||||
|
||||
查询可连接的网络
|
||||
![[Pasted image 20231116230936.png]]
|
||||
[GitHub - DefiLlama/chainlist](https://github.com/DefiLlama/chainlist)
|
||||
基于 nextjs
|
||||
![[Pasted image 20231116230929.png]]
|
||||
[GitHub - DefiLlama/chainlist](https://github.com/DefiLlama/chainlist)
|
||||
|
||||
## 案例
|
||||
|
||||
### [Lens Protocol](https://www.lens.xyz/)
|
||||
|
||||
基于 web3 的社交平台
|
||||
![[Pasted image 20231116231348.png]]
|
||||
|
||||
### [Dune](https://dune.com/home)
|
||||
|
||||
web3 交流论坛
|
||||
报表做的很好看
|
||||
![[Pasted image 20231116231145.png]]
|
||||
![[Pasted image 20231116231033.png]]
|
||||
|
||||
(能从上面的技术栈看出来,绝大部分都是 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,14 +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
|
||||
---
|
||||
|
||||
# tokenERC20部署和学习
|
||||
|
||||
[GitHub - meterio/tokenERC20](https://github.com/meterio/tokenERC20)
|
@ -1,41 +0,0 @@
|
||||
---
|
||||
title: __dirname is not defined in ES module scope
|
||||
date: 2024-05-29T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
status: Published
|
||||
tags:
|
||||
- nodejs
|
||||
- 前端
|
||||
- esm
|
||||
- module
|
||||
finished: true
|
||||
published: true
|
||||
category: 编程与技术
|
||||
slug: dirname-is-not-defined-in-es-module-scope
|
||||
NotionID-notionnext: 543bfc66-a416-4704-92be-9a93fed191a8
|
||||
link-notionnext: >-
|
||||
https://kazoottt.notion.site/__dirname-is-not-defined-in-ES-module-scope-543bfc66a416470492be9a93fed191a8
|
||||
rinId: 14
|
||||
---
|
||||
|
||||
# __dirname Is not Defined in ES Module Scope
|
||||
|
||||
在package.json中的type = module的项目中,我创建了一个ts文件,类型是esm的类型。
|
||||
|
||||
这里的报错是因为我们错误的使用了module的语法到esm的文件中,要解决这个问题的方法有两种,第一种改为module,另一种是改为esm的写法。
|
||||
|
||||
首先是第一种改为module的写法,那就是把import改为require,然后由于我们这里是module的项目,所以需要修改一下ts文件的后缀ts改为cts。
|
||||
|
||||
一个供参考的例子:[GitHub - shawnsparks/typescript-esm: Explore different usage patterns of ES modules with Typescript](https://github.com/shawnsparks/typescript-esm)
|
||||
|
||||
然后是第二种,文件、路径相关的改为esm的写法。
|
||||
|
||||
```ts
|
||||
import { fileURLToPath } from "url"
|
||||
import path from "path"
|
||||
|
||||
// 获取当前模块的目录路径
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = path.dirname(__filename)
|
||||
```
|
@ -1,67 +0,0 @@
|
||||
---
|
||||
title: fetch 报错排查 SocketError other side closed
|
||||
date: 2024-02-03T00:00:00.000Z
|
||||
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
|
||||
---
|
||||
|
||||
# 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
|
||||
|
||||
![[Pasted image 20240203205951.png]]
|
@ -1,65 +0,0 @@
|
||||
---
|
||||
title: open graph简述
|
||||
date: 2024-04-09T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
slug: open-graph
|
||||
description: >-
|
||||
在使用Twitter时,我们可能会注意到有些链接会显示预览卡片,而有些则不会。这主要是因为一些网站设置了Open Graph协议,而有些则没有。Open
|
||||
Graph是由Facebook在2010年推出的协议,用于在社交网络上分享链接时显示预览卡片。此外,Twitter也有自己的Twitter
|
||||
Card协议,如果两者同时存在,Twitter会优先显示Twitter Card的内容。文章还介绍了一些检查和预览Open
|
||||
Graph设置的工具,以及提供Open Graph示例的网站。
|
||||
NotionID-notionnext: 76ed52a0-ad58-401c-8a5d-c5719f67b673
|
||||
link-notionnext: 'https://kazoottt.notion.site/open-graph-76ed52a0ad58401c8a5dc5719f67b673'
|
||||
rinId: 16
|
||||
---
|
||||
|
||||
# Open Graph 简述
|
||||
|
||||
## 场景
|
||||
|
||||
在我们使用twitter的时候,会发现有的链接会显示预览卡片,有的不会。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
这是因为有的网站设置了open graph,有的没有。
|
||||
|
||||

|
||||
|
||||
## 那么什么是open graph?
|
||||
|
||||
open graph是一个由facebook在2010年发布的协议,用于在社交网络上分享链接时,显示预览卡片。
|
||||
|
||||

|
||||
|
||||
我觉得无论是它的名称还是意图,都能看出facebook以及其他支持这种协议的社交平台的开放性, 特别是在某些平台会屏蔽外链或者限流带有外链的衬托下。
|
||||
|
||||

|
||||
|
||||
和open graph类似还有twitter自己的card,如果twitter card和open graph同时存在的话,会先显示在twitter card。如果twitter card没有定义,才会显示open graph。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 预览和检查工具
|
||||
|
||||
[OpenGraph - Preview Social Media Share and Generate Metatags - OpenGraph](https://www.opengraph.xyz/)
|
||||
|
||||

|
||||
|
||||
[OpenGraph - Preview Images and Generate Open Graph Meta Tags](https://opengraph.dev/)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 一些例子
|
||||
|
||||
[Open Graph Examples](https://opengraphexamples.com/)
|
||||
|
||||

|
@ -1,71 +0,0 @@
|
||||
---
|
||||
title: open graph introduction
|
||||
date: 2024-04-09T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
slug: open-graph-en
|
||||
description: >-
|
||||
Open Graph is a protocol introduced by Facebook in 2010, designed to enhance
|
||||
the display of preview cards when sharing links on social networks like
|
||||
Twitter. It allows websites to control how their content appears when shared,
|
||||
differentiating between links that show previews and those that do not.
|
||||
Twitter also has its own card system, which takes precedence over Open Graph
|
||||
if both are present. Tools like OpenGraph.xyz and opengraph.dev help in
|
||||
previewing and generating Open Graph meta tags for better social media
|
||||
sharing.
|
||||
NotionID-notionnext: 96e4d436-6fd9-4fec-865c-ac2d80b06be0
|
||||
link-notionnext: 'https://kazoottt.notion.site/open-graph-intro-96e4d4366fd94fec865cac2d80b06be0'
|
||||
rinId: 17
|
||||
---
|
||||
|
||||
# Open-graph Intro
|
||||
|
||||
[[open graph 简述]]
|
||||
|
||||
## Scenario
|
||||
|
||||
When we use Twitter, we notice that some links display preview cards while others do not.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
This is because some websites have set up Open Graph, while others have not.
|
||||
|
||||

|
||||
|
||||
## What is Open Graph?
|
||||
|
||||
Open Graph is a protocol introduced by Facebook in 2010, used for displaying preview cards when sharing links on social networks.
|
||||
|
||||

|
||||
|
||||
From its name and purpose, it's evident that Open Graph signifies the openness of Facebook and other platforms supporting this protocol, especially amidst certain platforms that block external links or throttle those containing external links.
|
||||
|
||||

|
||||
|
||||
Similar to Open Graph, Twitter has its own card system. If both Twitter Card and Open Graph coexist, Twitter Card takes precedence. Only if Twitter Card is not defined, Open Graph is displayed.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Preview and Inspection Tools
|
||||
|
||||
[OpenGraph - Preview Social Media Share and Generate Metatags - OpenGraph](https://www.opengraph.xyz/)
|
||||
|
||||

|
||||
|
||||
[OpenGraph - Preview Images and Generate Open Graph Meta Tags](https://opengraph.dev/)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Some Examples
|
||||
|
||||
[Open Graph Examples](https://opengraphexamples.com/)
|
||||
|
||||

|
@ -1,93 +0,0 @@
|
||||
---
|
||||
title: 再次学习History.scrollRestoration
|
||||
date: 2024-05-23T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
status: Published
|
||||
tags:
|
||||
- History API
|
||||
- scrollRestoration
|
||||
- Web Development
|
||||
- JavaScript
|
||||
- 浏览器
|
||||
finished: true
|
||||
published: true
|
||||
category: 编程
|
||||
slug: understanding-history-scrollrestoration
|
||||
description: >-
|
||||
本文重新探讨了浏览器History对象的scrollRestoration属性,该属性用于控制历史页面切换时滚动条是否恢复到之前的位置。scrollRestoration属性有两个可选值:auto和manual。当设置为auto时,滚动条会自动恢复到切换前的位置;若设置为manual,则滚动条保持在页面顶部。文章还讨论了该属性的局限性,包括可能导致的页面跳动和在不同浏览器中实现一致滚动恢复的困难。最后,文章建议在页面出现不美观跳跃或需要手动控制滚动条位置时,应将scrollRestoration设置为manual。
|
||||
NotionID-notionnext: b5838d05-d223-4a6d-b92c-e284c5e5a2ce
|
||||
link-notionnext: >-
|
||||
https://kazoottt.notion.site/History-scrollRestoration-b5838d05d2234a6db92ce284c5e5a2ce
|
||||
rinId: 18
|
||||
---
|
||||
|
||||
# 再次学习History.scrollRestoration
|
||||
|
||||

|
||||
|
||||
之前在react.dev的源代码中了解到了这个HIstory的属性,当时写了一篇笔记来记录我对它的理解,现在看来还是一知半解。所以今天打算重新学习一下这个属性,主要从属性以及所属对象的介绍、使用方法,是否开启标准这几个方面来简单展开。
|
||||
|
||||
## 什么是scrollRestoration
|
||||
|
||||
scrollRestoration是一个属性,它所属的实例是浏览器的History。
|
||||
|
||||
这个属性是做什么的?它用来控制我们在切换历史页面的时候,滚动条的位置会不会恢复到之前的位置。
|
||||
|
||||

|
||||
|
||||
如图所示,我们切换历史页面,又切换回最之前的页面,发现滚动条的位置依然保持底部,也就是之前的位置。
|
||||
|
||||
什么是切换历史页面,从操作上来讲就是点击浏览器的回退(有的浏览器长按回退键会弹出历史的前面多个页面供选择)、前进按钮
|
||||
|
||||
从代码上来讲就是执行下面的这些操作:
|
||||
|
||||
```js
|
||||
history.back()
|
||||
history.forward()
|
||||
history.go(page) // page大于0,表示往后面翻对应的页数,反之则是往前翻对应的页数
|
||||
```
|
||||
|
||||
那么scrollRestoration这个属性与是否恢复滚动条的关系是什么?
|
||||
|
||||
scrollRestoration可选的值为auto和manual (如果浏览器支持这个属性,那么它默认是auto)
|
||||
|
||||
> scroll restoration mode, a scroll restoration mode, initially "auto". [HTML Standard](https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-scroll-restoration-mode)
|
||||
|
||||
如果是auto:那么在切换历史页面的时候,滚动条会自动地恢复到切换之前的位置。
|
||||
|
||||
如果是manual:那么在切换页面的时候,滚动条会在顶部。
|
||||
|
||||
(上述的结果均在未手动修改state对应的滚动条位置的情况下)
|
||||
|
||||
## 属性的局限性
|
||||
|
||||
我之前觉得这个特性很好,但是为什么要单独地设置一个属性来控制是否要恢复到之前的滚动条位置呢?
|
||||
|
||||
在[History API - 滚动恢复 | Blog | Chrome for Developers](https://developer.chrome.com/blog/history-api-scroll-restoration)这篇文章中提到:
|
||||
|
||||
> This often means unsightly jumps as the scroll position changes automatically, and especially so if your app does transitions, or changes the contents of the page in any way. Ultimately this leads to an horrible user experience.
|
||||
> To make matters even worse there's very little you can do about it: Chrome triggers a `popState` event before the `scroll` event, which means you can read the current scroll position in `popState` and then reverse it in the `scroll` event handler with `window.scrollTo` (Ewww, but at least it works!). Firefox, however, triggers the `scroll` event *before* `popState`, so you have no idea what the old scroll value was in order to restore it. Bah!
|
||||
|
||||
翻译为中文:
|
||||
|
||||
> 这通常意味着当滚动位置自动改变时会出现难看的跳动,尤其是当你的应用程序进行过渡或以任何方式更改页面内容时。这最终会导致糟糕的用户体验。
|
||||
> 更糟的是,你几乎无能为力:Chrome 会在 scroll 事件之前触发 popState 事件,这意味着你可以在 popState 中读取当前的滚动位置,然后在 scroll 事件处理程序中使用 window.scrollTo 恢复滚动位置(呃,但至少它能工作!)。然而,Firefox 则是在 popState 事件之前触发 scroll 事件,所以你无法知道旧的滚动位置以便恢复它。唉!
|
||||
|
||||
总结一下就是,此文的作者认为这个属性会造成的两个缺点是:
|
||||
|
||||
1. 可能产生不太美观的跳跃:当滚动位置自动改变时,页面内容可能会突然跳动,尤其是在应用程序进行过渡或更改页面内容时,这会导致不好的用户体验。
|
||||
2. (在不开启这个属性的时候)非常难以人工地实现恢复滚动位置:由于不同浏览器在触发 popState 和 scroll 事件的顺序上存在差异(如 Chrome 和 Firefox),这使得在所有浏览器中一致地恢复滚动位置变得非常困难。
|
||||
|
||||
## 那么什么时候需要设置为manual?
|
||||
|
||||
参考上面的两个缺点来说,当满足以下的条件的时候,可以考虑设置为manual
|
||||
|
||||
1. 页面确实会产生了不太美观的跳跃
|
||||
2. 不在意历史的滚动条位置,同时更希望全部由手动控制滚动条位置的时候
|
||||
|
||||
## 参考的资料
|
||||
|
||||
[History: scrollRestoration property - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/History/scrollRestoration)
|
||||
|
||||
[HTML Standard](https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-history-scroll-restoration)
|
@ -1,90 +0,0 @@
|
||||
---
|
||||
title: 如何实现在markdown中渲染iframe
|
||||
date: 2024-04-01T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
slug: how-to-render-iframes-in-markdown
|
||||
description: >-
|
||||
本文介绍了如何在Markdown中渲染iframe的两种方法。第一种方法是通过直接在Markdown中嵌入iframe标签,需要使用`rehypeRaw`插件来实现HTML内容的嵌入。第二种方法是通过重写Markdown中的`a`标签,将其转换为iframe,这种方法可以根据链接内容进行定制化处理,例如将特定链接转换为iframe展示。文中还提供了相关的代码示例和项目源代码链接,以及一个演示地址供参考。
|
||||
NotionID-notionnext: a63f5e28-352a-48cc-8c89-f9dd5b5a18ac
|
||||
link-notionnext: 'https://kazoottt.notion.site/markdown-iframe-a63f5e28352a48cc8c89f9dd5b5a18ac'
|
||||
rinId: 19
|
||||
---
|
||||
|
||||
# 如何实现在markdown中渲染iframe
|
||||
|
||||
demo展示地址:[Create Next App](https://markdown-preview-eosin.vercel.app/demo)
|
||||
|
||||
项目源代码: [https://github.com/KazooTTT/markdown-iframe-preview/](https://github.com/KazooTTT/markdown-iframe-preview/)
|
||||
|
||||
[https://github.com/KazooTTT/markdown-iframe-preview/](https://github.com/KazooTTT/markdown-iframe-preview/)
|
||||
|
||||
使用的markdown渲染器是:[GitHub - remarkjs/react-markdown: Markdown component for React](https://github.com/remarkjs/react-markdown)
|
||||
|
||||

|
||||
|
||||
有两种方案,第一种是iframe以html的语法嵌入(1),第二种是重写a标签把它转化为iframe(3)。
|
||||
|
||||
## Iframe直接嵌入markdown
|
||||
|
||||
```markdown
|
||||
### Iframe
|
||||
|
||||
<iframe src="./" width="100%" height="500"></iframe>
|
||||
```
|
||||
|
||||
参考:
|
||||
|
||||
[iFrame Not Rendering · Issue #661 · remarkjs/react-markdown · GitHub](https://github.com/remarkjs/react-markdown/issues/661)
|
||||
|
||||
[GitHub - remarkjs/react-markdown: Markdown component for React](https://github.com/remarkjs/react-markdown?tab=readme-ov-file#appendix-a-html-in-markdown)
|
||||
|
||||
也就是引入rehypeRaw这个rehypePlugin,实现在markdown中嵌入html。
|
||||
|
||||
(谨慎使用,需要保证html内容安全的情况下嵌入)
|
||||
|
||||
```tsx
|
||||
import Markdown from "react-markdown"
|
||||
import rehypeRaw from "rehype-raw"
|
||||
|
||||
const DempPage = () => {
|
||||
return <Markdown rehypePlugins={[rehypeRaw]}>{markdownContent}</Markdown>
|
||||
}
|
||||
```
|
||||
|
||||
## A标签转化为iframe
|
||||
|
||||
在某些情况下我们需要把a标签的对应的网页直接展示出来,这个时候就要把a标签转化为iframe了。实现的方法是重写a这个组件。
|
||||
|
||||
下面是我的写法,我需要把链接中有`/agent/special`的所有的链接都以iframe的形式展示出来。于是做了一个特殊判断来实现这个逻辑。对于其他的不满足要求的a标签,则直接渲染为a标签即可。
|
||||
|
||||
这里还可以做一些拓展的写法,比如检查到网易云的音乐链接,就在前面加一个网易云的logo,如果检测到外链那么点击的时候打开新的窗口等等。
|
||||
|
||||
```ts
|
||||
import Markdown from "react-markdown";
|
||||
|
||||
const DemoPage = () => {
|
||||
<Markdown
|
||||
components={{
|
||||
a(props) {
|
||||
const { href, children } = props;
|
||||
if (href && href.indexOf("/agent/special") != -1) {
|
||||
return (
|
||||
<iframe src={href} width="100%" height="500" allowFullScreen />
|
||||
);
|
||||
}
|
||||
// 否则,渲染为普通的 <a> 链接
|
||||
return (
|
||||
<a href={href} target="_blank" rel="noopener noreferrer">
|
||||
{children}
|
||||
</a>
|
||||
);
|
||||
},
|
||||
}}
|
||||
>
|
||||
{markdownContent}
|
||||
</Markdown>;
|
||||
};
|
||||
```
|
@ -1,32 +0,0 @@
|
||||
---
|
||||
title: 如何快速导出vercel project中的环境变量
|
||||
date: 2024-02-23
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- vercel
|
||||
finished: true
|
||||
published: true
|
||||
slug: how-to-quickly-export-environment-variables-in-vercel-project
|
||||
description: >-
|
||||
本文介绍了如何在Vercel中集成插件或链接数据库后,快速导出环境变量的方法。首先,需要全局安装Vercel,然后通过命令链接Vercel账户,并拉取环境变量到本地的.env.local文件中。这一过程简化了环境变量的管理,提高了开发效率。
|
||||
rinId: 3
|
||||
---
|
||||
|
||||
# 如何快速导出vercel Project中的环境变量 图床版
|
||||
|
||||
我在vercel中集成了某些插件或者链接了数据库,要如何快速的导出这些环境变量呢?
|
||||
|
||||
具体方法如下:
|
||||
|
||||
``` shell
|
||||
npm i -g vercel
|
||||
|
||||
vercel link
|
||||
|
||||
vercel env pull .env.local
|
||||
```
|
||||
|
||||
1. 首先是安装vercel
|
||||
2. 然后登录vercel 
|
||||
3. 最后拉取环境变量到.env.local
|
||||

|
@ -1,22 +0,0 @@
|
||||
---
|
||||
title: 快速获取telegram chatId然后实现消息通知的方法
|
||||
date: 2023-09-14T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- telegram
|
||||
- bot
|
||||
- 工具
|
||||
finished: true
|
||||
published: true
|
||||
slug: quick-way-to-get-telegram-chatid-and-then-implement-message-notification
|
||||
description: >-
|
||||
本文介绍了如何快速获取Telegram的chatId并实现消息通知的方法。首先,设置Telegram账户的username,然后向@RawDataBot发送消息以获取chatId。最后,结合Telegram
|
||||
bot和apprise工具来实现消息通知功能。
|
||||
rinId: 20
|
||||
---
|
||||
|
||||
# 快速获取telegram chatId然后实现消息通知的方法
|
||||
|
||||
1. 给 telegram 账户设置 username
|
||||
2. 搜索[@RawDataBot](https://www.alphr.com/find-chat-id-telegram/),给它发送一条消息。它会返回账户相关的信息给你。格式如下:,chat.id 就是所需要的 chatId![[Pasted image 20230914233217.png]]
|
||||
3. 然后就能结合[telegram bot](https://api.telegram.org/)+ [apprise](https://github.com/caronc/apprise/wiki/Notify_telegram)做消息通知了。![[Pasted image 20230914233337.png]]
|
@ -1,99 +0,0 @@
|
||||
---
|
||||
title: html | 浏览器滚动恢复属性History.scrollRestoration
|
||||
date: 2022-11-27T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- history
|
||||
- html
|
||||
- scrollRestoration
|
||||
- 前端
|
||||
- 页面滚动
|
||||
slug: browser-scroll-restoration-property-historyscrollrestoration
|
||||
published: true
|
||||
description: >-
|
||||
在React新版官网的代码中,发现了一个名为History.scrollRestoration的属性,用于控制页面刷新或返回后是否恢复到原来的滚动位置。该属性有两个值:'auto'表示自动恢复到用户滚动到的位置,而'manual'则表示不恢复,用户需手动滚动到该位置。在React官网的实现中,针对Safari浏览器设置了'auto',而其他浏览器则使用'manual',以优化不同浏览器的用户体验。这一设置有助于避免在Safari浏览器中出现返回时的灰色屏幕问题,同时确保其他浏览器如Chrome和Firefox的用户体验。
|
||||
NotionID-notionnext: 7dc13064-8325-4aa3-bf45-5450c89e0223
|
||||
link-notionnext: >-
|
||||
https://kazoottt.notion.site/History-scrollRestoration-7dc1306483254aa3bf455450c89e0223
|
||||
rinId: 21
|
||||
finished: true
|
||||
---
|
||||
|
||||
## 后续 2024-05-23
|
||||
|
||||
后来发现我被注释给欺骗了,虽然\_app.tsx里面说让nextjs设置scrollRestoration为manual,但是其实他们的项目中nextjs的scrollRestoration就是true。
|
||||
|
||||
与之前的注释不符...
|
||||
|
||||
```tsx
|
||||
useEffect(() => {
|
||||
// 取自StackOverflow。试图检测Safari桌面版和移动版。
|
||||
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
|
||||
if (isSafari) {
|
||||
// 这有点不真实。
|
||||
// 我们仍然依赖手动的Next.js滚动恢复逻辑。
|
||||
// 但是,我们*也*不希望在Safari的回退滑动手势期间出现灰屏。
|
||||
// 看起来启用自动恢复和Next.js逻辑同时使用似乎没有坏处。
|
||||
history.scrollRestoration = "auto"
|
||||
} else {
|
||||
// 对于其他浏览器,让Next.js将scrollRestoration设置为'manual'。
|
||||
// 这似乎对Chrome和Firefox更有效,因为它们没有动画回退滑动。
|
||||
}
|
||||
}, [])
|
||||
```
|
||||
|
||||

|
||||
|
||||
[Re-enable scroll restoration behind flag (#14046) · vercel/next.js@38bd1a0 · GitHub](https://github.com/vercel/next.js/commit/38bd1a024cb25923d8ea15f269a7294d073684d8)
|
||||
|
||||
# 浏览器滚动恢复属性History.scrollRestoration
|
||||
|
||||
[GitHub - reactjs/react.dev: The React documentation website](https://github.com/reactjs/react.dev)
|
||||
|
||||
最近在阅读 React 新版官网的代码时,发现在[\_app.tsx](https://github.com/reactjs/reactjs.org/blob/main/beta/src/pages/_app.tsx)中有这样一段代码。
|
||||
|
||||
```typescript
|
||||
useEffect(() => {
|
||||
// Taken from StackOverflow. Trying to detect both Safari desktop and mobile.
|
||||
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
|
||||
if (isSafari) {
|
||||
// This is kind of a lie.
|
||||
// We still rely on the manual Next.js scrollRestoration logic.
|
||||
// However, we *also* don't want Safari grey screen during the back swipe gesture.
|
||||
// Seems like it doesn't hurt to enable auto restore *and* Next.js logic at the same time.
|
||||
history.scrollRestoration = "auto"
|
||||
} else {
|
||||
// For other browsers, let Next.js set scrollRestoration to 'manual'.
|
||||
// It seems to work better for Chrome and Firefox which don't animate the back swipe.
|
||||
}
|
||||
}, [])
|
||||
```
|
||||
|
||||
这里用到了我没有接触过的一个属性 History.scrollRestoration,发现这个属性是用来控制页面刷新或者返回后是否滚动到原来的位置。
|
||||
|
||||
[MDN 文档](https://developer.mozilla.org/zh-CN/docs/Web/API/History/scrollRestoration)
|
||||
|
||||
属性的值:
|
||||
|
||||
1. auto 将恢复用户已滚动到的页面上的位置。
|
||||
2. manual 未还原页上的位置。用户必须手动滚动到该位置。
|
||||
|
||||
在 mdn 文档中没有看到 auto 是默认值,但是自己手动验证以及在[google blog](https://developer.chrome.com/blog/history-api-scroll-restoration) 中提到:
|
||||
|
||||
> The good news is, however, that there's a potential fix: history.scrollRestoration. It takes two string values: auto, which keeps everything as it is today (and is its default value), and manual, which means that you as the developer will take ownership of any scroll changes that may be required when a user traverses the app's history.
|
||||
|
||||
所以 auto 确实是默认值没错。
|
||||
|
||||
## 举例
|
||||
|
||||
1. 如果 history.scrollRestoration = 'auto'; 自动回到原有位置。
|
||||

|
||||
|
||||
2. 如果 history.scrollRestoration = 'manual'; 回到顶部。
|
||||

|
||||
|
||||
## 在 react.dev (新版官网)中为什么要使用 Manul
|
||||
|
||||
这是因为这个项目用的 next.js,涉及到 ssr,可能出现页面还没渲染完就滚动到了之前的位置。(待补充例子。)
|
||||
|
||||
可以看一下这篇文档[Next.js 中怎么保持页面的滚动位置](https://juejin.cn/post/7141235243326898213)
|
0
src/content/post/周报/2023-W10.md → src/content/post/周报/00 2023-W10.md
Executable file → Normal file
0
src/content/post/周报/2023-W10.md → src/content/post/周报/00 2023-W10.md
Executable file → Normal file
0
src/content/post/周报/2023-W11.md → src/content/post/周报/01 2023-W11.md
Executable file → Normal file
0
src/content/post/周报/2023-W11.md → src/content/post/周报/01 2023-W11.md
Executable file → Normal file
0
src/content/post/周报/2023-W45.md → src/content/post/周报/02 2023-W45.md
Executable file → Normal file
0
src/content/post/周报/2023-W45.md → src/content/post/周报/02 2023-W45.md
Executable file → Normal file
0
src/content/post/周报/2023-W46.md → src/content/post/周报/03 2023-W46.md
Executable file → Normal file
0
src/content/post/周报/2023-W46.md → src/content/post/周报/03 2023-W46.md
Executable file → Normal file
0
src/content/post/周报/2024-W02.md → src/content/post/周报/04 2024-W02.md
Executable file → Normal file
0
src/content/post/周报/2024-W02.md → src/content/post/周报/04 2024-W02.md
Executable file → Normal file
@ -12,7 +12,7 @@ slug: 2024-W25
|
||||
rinId: 99
|
||||
---
|
||||
|
||||
日期范围: 2024/06/17 - 2024/06/23
|
||||
日期范围: 2024/06/17 - 2024/06/23
|
||||
|
||||
很久没有写周报了,最近有一些值得记录的事情,有了记录的动力。
|
||||
|
@ -1,25 +1,29 @@
|
||||
---
|
||||
title: 2024-W17
|
||||
date: 2024-04-26T00:00:00.000Z
|
||||
title: Alice研究周报第20期,OpenVoice2开源模型发布,Cloudflare推出AI Playground
|
||||
date: 2024-04-26
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
status: Draft
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
category: 周报
|
||||
finished: false
|
||||
published: false
|
||||
slug: 2024-W17
|
||||
description: >-
|
||||
在2024年4月22日至4月28日期间,人工智能领域有多项重要更新和发布。Myshell发布了OpenVoice2开源语音模型,能够通过少量音频样本复制说话人的声音并生成多种语言的语音,且完全开源。Snowflake推出了Arctic,一个面向企业的顶级语言模型,具有高效的企业任务性能。Adobe发布了Firefly
|
||||
Image
|
||||
3模型,用于文本到图像的生成。OpenAI为其API引入了更多企业级功能,包括增强的安全性和更好的行政控制。此外,GitHub上的多个项目如Speechless和Llama-3-8B-16K也进行了更新,增强了语言处理和推理能力。在应用方面,ComfyUI
|
||||
Workflows提供了工作流模板,Cloudflare推出了AI
|
||||
Playground,Perplexity提供了企业会员和企业定制服务。此外,还有多个教程和资料推荐,如Llama
|
||||
3的微调教程和大规模预训练语言模型的理论基础。这些更新和资源为AI领域的研究者和开发者提供了丰富的工具和知识。
|
||||
rinId: 97
|
||||
本文涵盖了从2024年4月22日至4月28日的一系列人工智能相关内容,包括多个模型的更新和应用,如Myshell发布的OpenVoice2开源语音模型、Snowflake
|
||||
Arctic企业级LLM、Adobe的Firefly Image 3模型等。此外,还介绍了OpenAI API的企业级功能升级、Speechless
|
||||
AI的特点和应用、以及Enterprise
|
||||
Pro的强大功能和数据安全措施。文章还涉及了大规模预训练语言模型的教程、生成式人工智能在量化交易中的应用挑战,以及基于科学的学习技巧等。整体上,本文为读者提供了人工智能领域的最新动态和深入分析。
|
||||
NotionID-notionnext: 178f73e6-c98c-4d2c-9f8b-53f8e3a33988
|
||||
link-notionnext: >-
|
||||
https://kazoottt.notion.site/Alice-20-OpenVoice2-Cloudflare-AI-Playground-178f73e6c98c4d2c9f8b53f8e3a33988
|
||||
category: 周报
|
||||
---
|
||||
|
||||
日期范围: 2024/04/22 - 2024/04/28
|
||||
日期范围:2024/04/22 - 2024/04/28
|
||||
|
||||
摘要:
|
||||
|
||||
本文主要介绍了一系列与人工智能相关的内容,包括 Snowflake Arctic 这一高效智能的企业级 LLM,OpenAI API 的企业相关功能升级,Speechless AI 的特点和应用,Enterprise Pro 的强大功能、数据安全与隐私、安全管理与控制、单点登录、效益、定价模式和常见问题,一个基于 Hono 的后端 API,大规模预训练语言模型的教程,生成式人工智能与量化交易的相似性及应用挑战、在其他领域的应用前景和展望,以及基于科学的学习技巧等。
|
||||
|
||||
# 1. 模型动态
|
||||
|
||||
@ -39,7 +43,7 @@ rinId: 97
|
||||
|
||||
## [Snowflake Arctic - LLM for Enterprise AI](https://www.snowflake.com/blog/arctic-open-efficient-foundation-language-models-snowflake/?continueFlag=5e163579825fe6026ed04354f826d987) 面向企业的LLM
|
||||
|
||||
![[Pasted image 20240426151951.png]]
|
||||

|
||||
|
||||
2024-04-24
|
||||
|
||||
@ -51,17 +55,17 @@ rinId: 97
|
||||
|
||||
## Firefly Image 3 Model - Adobe最新版文生图模型
|
||||
|
||||
![[Pasted image 20240426154127.png]]
|
||||

|
||||
|
||||
体验地址:
|
||||
|
||||
[Adobe Firefly](https://firefly.adobe.com/)
|
||||
|
||||
![[Pasted image 20240426153850.png]]
|
||||

|
||||
|
||||
## [Introducing more enterprise-grade features for API customers](https://openai.com/blog/more-enterprise-grade-features-for-api-customers?continueFlag=5e163579825fe6026ed04354f826d987) 为API引入更多企业级功能
|
||||
|
||||
![[Pasted image 20240426154613.png]]
|
||||

|
||||
|
||||
OpenAI发布了一篇博客来介绍对于API的与企业相关的功能升级内容。
|
||||
|
||||
@ -75,7 +79,7 @@ OpenAI发布了一篇博客来介绍对于API的与企业相关的功能升级
|
||||
|
||||
## [GitHub - uukuguy/speechless](https://github.com/uukuguy/speechless)
|
||||
|
||||
![[Pasted image 20240426154320.png]]
|
||||

|
||||
|
||||
Speechless AI,它是一个基于大型语言模型的人工智能助手,专注于将强大的语言处理和深度推理能力集成到实际业务应用中。
|
||||
|
||||
@ -87,9 +91,9 @@ Speechless AI,它是一个基于大型语言模型的人工智能助手,专
|
||||
|
||||
[X 上的 Matt Shumer:“I've doubled LLaMA 3's context window to 16K tokens. Fully open-source. Link in thread: https://t.co/uPgmrVojHX” / X](https://twitter.com/mattshumer_/status/1782576964118675565)
|
||||
|
||||
![[Pasted image 20240426163550.png]]
|
||||

|
||||
|
||||
![[Pasted image 20240426163527.png]]
|
||||

|
||||
|
||||
# 2. 优秀应用
|
||||
|
||||
@ -97,7 +101,7 @@ Speechless AI,它是一个基于大型语言模型的人工智能助手,专
|
||||
|
||||
工作流模板网站,主要是
|
||||
|
||||
![[Pasted image 20240426165657.png]]
|
||||

|
||||
|
||||
## Cloudflare推出AI Playground
|
||||
|
||||
@ -105,9 +109,9 @@ Speechless AI,它是一个基于大型语言模型的人工智能助手,专
|
||||
|
||||
支持免费使用多种开源模型,并且支持在playground调试好之后生成对应的调用代码。
|
||||
|
||||
![[Pasted image 20240426151413.png]]
|
||||

|
||||
|
||||
![[Pasted image 20240426151522.png]]
|
||||

|
||||
|
||||
与此同时cf还提供了其他的各种好用的工具,无论对于个人开发者还是企业都推荐使用。
|
||||
|
||||
@ -115,9 +119,9 @@ Speechless AI,它是一个基于大型语言模型的人工智能助手,专
|
||||
|
||||
## Perplexity推出了企业会员和企业定制服务
|
||||
|
||||
![[Pasted image 20240426162849.png]]
|
||||

|
||||
|
||||
亮点:
|
||||
亮点:
|
||||
Enterprise Pro 的强大功能:能为团队提供快速、最新且可靠的复杂问题答案,无需频繁点击链接、比较答案或在网上无休止搜索。
|
||||
|
||||
数据安全与隐私:确保只有合适的人能看到数据,不会有不必要的信息被分享,且数据不会被用于训练,同时保障数据隐私和安全。
|
||||
@ -138,13 +142,13 @@ Enterprise Pro 的效益:帮助企业加速研发,如 Databricks 估计每
|
||||
|
||||
选择模型和机器配置,可以查看这个配置能否运行对应的模型
|
||||
|
||||
![[Pasted image 20240426164521.png]]
|
||||

|
||||
|
||||
## [GitHub - feiandxs/duckrush](https://github.com/feiandxs/duckrush) 搜索关键词并返回LLM便于处理的数据格式
|
||||
|
||||
一个简单快速的后端API,基于Hono,可以使用关键字在互联网上搜索相关内容,并将其转换为适合LLM处理的格式。支持在 Cloudflare 上部署。
|
||||
|
||||
![[Pasted image 20240426165342.png]]
|
||||

|
||||
|
||||
# 3. 推荐资料
|
||||
|
||||
@ -154,13 +158,13 @@ LLama3 微调教程
|
||||
|
||||
[How to Fine Tune Llama 3 for Better Instruction Following? - YouTube](https://www.youtube.com/watch?v=WxQbWTRNTxY&ab_channel=MervinPraison)
|
||||
|
||||
![[Pasted image 20240426152053.png]]
|
||||

|
||||
|
||||
## [GitHub - datawhalechina/so-large-lm: 大模型基础: 一文了解大模型基础知识](https://github.com/datawhalechina/so-large-lm)
|
||||
|
||||
[大模型理论基础](https://datawhalechina.github.io/so-large-lm/#/)
|
||||
|
||||
![[Pasted image 20240426154426.png]]
|
||||

|
||||
|
||||
本项目是一个关于大规模预训练语言模型的教程,涵盖模型的各个方面,包括数据准备、模型构建、训练策略等,以及安全、隐私、环境和法律道德等方面的知识。项目以斯坦福大学课程为基础,结合开源贡献者的补充和更新,由项目团队成员分工撰写,预计三个月完成初始版本,后续根据社区贡献和反馈进行更新。旨在为相关领域的研究者和从业者提供知识和技术,拓宽受众的知识面,降低参与开源项目的门槛,并为大型语言模型研究领域贡献资源。
|
||||
|
||||
@ -172,11 +176,11 @@ LLama3 微调教程
|
||||
|
||||
“您将了解如何为您的用例选择正确的模型,并亲身体验有效提示技术、函数调用、JSON模式和检索增强生成(RAG)等功能”
|
||||
|
||||
![[Pasted image 20240426162631.png]]
|
||||

|
||||
|
||||
## [Financial Market Applications of LLMs](https://thegradient.pub/financial-market-applications-of-llms/?continueFlag=5e163579825fe6026ed04354f826d987) LLM在金融市场的应用
|
||||
|
||||
![[Pasted image 20240426163208.png]]
|
||||

|
||||
|
||||
重点:
|
||||
|
||||
@ -192,7 +196,7 @@ LLama3 微调教程
|
||||
|
||||
这篇文本主要讨论了多代理协作、语言模型的安全漏洞、GPT Store 的管理问题以及利用 RAG 改进语言模型性能等方面的内容。
|
||||
|
||||
![[Pasted image 20240426163818.png]]
|
||||

|
||||
|
||||
## [Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.](https://airy-lunch-c6f.notion.site/Becoming-SMART-is-easy-using-science-85119819e23f423887265b3fc436d586?pvs=4)
|
||||
|
2
src/content/post/周报/2024-W03-AI专题.md → src/content/post/周报/11 2024-W03-AI专题.md
Executable file → Normal file
2
src/content/post/周报/2024-W03-AI专题.md → src/content/post/周报/11 2024-W03-AI专题.md
Executable file → Normal file
@ -217,4 +217,4 @@ Chain-of-Table: Evolving Tables in the Reasoning Chain for Table Understanding
|
||||
|
||||
[Notebook](https://github.com/FullStackRetrieval-com/RetrievalTutorials/blob/main/5_Levels_Of_Text_Splitting.ipynb?continueFlag=61db114b5bb3eda119c3b0a42a3f0791)
|
||||
|
||||
### [温故而知新:大模型RAG问答研发的7个失分点及MOE专家组合模型的若干浅析](https://mp.weixin.qq.com/s/1p2VtmU-ClPQP1jEchGpGQ)
|
||||
### [温故而知新:大模型RAG问答研发的7个失分点及MOE专家组合模型的若干浅析](https://mp.weixin.qq.com/s/1p2VtmU-ClPQP1jEchGpGQ)
|
0
src/content/post/周报/2024-W03-应用推荐篇.md → src/content/post/周报/12 2024-W03-应用推荐篇.md
Executable file → Normal file
0
src/content/post/周报/2024-W03-应用推荐篇.md → src/content/post/周报/12 2024-W03-应用推荐篇.md
Executable file → Normal file
2
src/content/post/周报/2024-W03-推荐阅读篇.md → src/content/post/周报/13 2024-W03-推荐阅读篇.md
Executable file → Normal file
2
src/content/post/周报/2024-W03-推荐阅读篇.md → src/content/post/周报/13 2024-W03-推荐阅读篇.md
Executable file → Normal file
@ -83,4 +83,4 @@ finished: true
|
||||
|
||||
## [API Vs SDK.](https://twitter.com/alexxubyte/status/1745847854961492384?s=12&t=UKmYswdLBh4dGuqwtKAXUA)
|
||||
|
||||
## [FFmpeg 教程](https://wklchris.github.io/blog/FFmpeg/)
|
||||
## [FFmpeg 教程](https://wklchris.github.io/blog/FFmpeg/)
|
0
src/content/post/周报/2024-W03-设计篇.md → src/content/post/周报/14 2024-W03-设计篇.md
Executable file → Normal file
0
src/content/post/周报/2024-W03-设计篇.md → src/content/post/周报/14 2024-W03-设计篇.md
Executable file → Normal file
63
src/content/post/周报/2023-W48.md → src/content/post/周报/15 2023-W48.md
Executable file → Normal file
63
src/content/post/周报/2023-W48.md → src/content/post/周报/15 2023-W48.md
Executable file → Normal file
@ -16,12 +16,16 @@ finished: true
|
||||
|
||||
## 最近的变化
|
||||
|
||||
最大的变动应该是工作内容的变化了。
|
||||
在 11 月 23 的时候突然接到了一个其他部门的面试,去的时候发现部门的领导以及 HR 都在。简单聊了一下,11 月 24 的时候就收到消息说面试通过了,可以转岗到对方的部门工作。
|
||||
而我的工作也从 web 前端转成了类似于提示词工程师的角色?
|
||||
最大的变动应该是工作内容的变化了。
|
||||
|
||||
在 11 月 23 的时候突然接到了一个其他部门的面试,去的时候发现部门的领导以及 HR 都在。简单聊了一下,11 月 24 的时候就收到消息说面试通过了,可以转岗到对方的部门工作。
|
||||
|
||||
而我的工作也从 web 前端转成了类似于提示词工程师的角色?
|
||||
|
||||
真正转到这个岗位的时候,才发现自己对于大语言模型的认知是很缺乏的,应用层也好,模型层中间层也好,很多认知都是纸上谈兵(疯狂收藏资料,但是实际上看的很少。)
|
||||
|
||||
不过也借此机会,重拾了 python,上一次写 python 还是大三的时候写了一个圣纳百川贴吧的爬虫以及数据分析。
|
||||
不过也借此机会,重拾了 python,上一次写 python 还是大三的时候写了一个圣纳百川贴吧的爬虫以及数据分析。
|
||||
|
||||
总体来说觉得是一个很好的机会,很新鲜的尝试,不过也挺有压力的。
|
||||
|
||||
后面的学习方向也会有很大的不同,想把重心放在 llm 的研究上,当然业余时间还是做我自己的项目,通过学习和项目实践来巩固对于 llm 和前端的理解。
|
||||
@ -30,24 +34,34 @@ finished: true
|
||||
|
||||
其实以前的部门氛围很轻松,下班后可以按时回家。不过因为换了部门,有很多的东西不熟悉,所以这周下班时间还是比较晚。
|
||||
|
||||
父母决定来上海看我的时候,还没有换部门,所以突然换部门还是听猝不及防的。
|
||||
他们是周三到的上海,周日离开的上海。
|
||||
工作日的时候是他们自己在玩,只有周六和周日的时候陪他们出去玩了。
|
||||
工作日下班后我会到他们酒店去一起聊天,给了我很多建议,感觉收获还是蛮大的。另外更坚定了想回川渝的心吧,还是想离家近一点。
|
||||
父母决定来上海看我的时候,还没有换部门,所以突然换部门还是听猝不及防的。
|
||||
|
||||
他们是周三到的上海,周日离开的上海。
|
||||
|
||||
工作日的时候是他们自己在玩,只有周六和周日的时候陪他们出去玩了。
|
||||
|
||||
工作日下班后我会到他们酒店去一起聊天,给了我很多建议,感觉收获还是蛮大的。另外更坚定了想回川渝的心吧,还是想离家近一点。
|
||||
|
||||
周末陪他们玩的时候,行程也比较休闲,周六的时候去了城隍庙和豫园,然后去了南京东路买衣服(其实我不是很想买,但是感觉他们提出想给我买衣服,陪着他们逛街,他们也会比较开心),最后买了一件羽绒服(价格有点贵,如果是我自己买的话,绝对不会买这么贵的 😂,好肉疼)
|
||||
|
||||
## 收集资讯的方式发生了变化
|
||||
|
||||
值得一提的时候,换了新部门之后,部门刚好要求要收集资讯,这恰好是我最近开始做的事情。部门内比较注重的是 AI 方面的资讯,而对我自身而言,我还会收集一些前端方面的东西。
|
||||
值得一提的时候,换了新部门之后,部门刚好要求要收集资讯,这恰好是我最近开始做的事情。部门内比较注重的是 AI 方面的资讯,而对我自身而言,我还会收集一些前端方面的东西。
|
||||
|
||||

|
||||
|
||||
收集资讯的方式由之前的 twitter + 其他平台复制链接到 cubox 的方式,转变了到转发到 telegram 或者 discord。
|
||||
我发现直接转发到后面了两个平台会更直观以及便于查找,之前存了很多链接到 cubox,但是几乎很少打开。
|
||||
而选择 discord 还是 telegram 也是我比较纠结的一点,discord 可以分子频道,相当于在这一层就完成了资源的分类,但它的缺点是对于部门平台的链接预览不友好。
|
||||
例如 twitter,由于之前 twitter 平台的限制,discord 无法预览 twitter 链接,需要手动改写为 vxtwitter,才能预览,在转发的时候手动修改这个操作也算增加工作量了。
|
||||
收集资讯的方式由之前的 twitter + 其他平台复制链接到 cubox 的方式,转变了到转发到 telegram 或者 discord。
|
||||
|
||||
我发现直接转发到后面了两个平台会更直观以及便于查找,之前存了很多链接到 cubox,但是几乎很少打开。
|
||||
|
||||
而选择 discord 还是 telegram 也是我比较纠结的一点,discord 可以分子频道,相当于在这一层就完成了资源的分类,但它的缺点是对于部门平台的链接预览不友好。
|
||||
|
||||
例如 twitter,由于之前 twitter 平台的限制,discord 无法预览 twitter 链接,需要手动改写为 vxtwitter,才能预览,在转发的时候手动修改这个操作也算增加工作量了。
|
||||
|
||||

|
||||
|
||||
而 telegram 虽然可以很好地预览链接,但是个人来说并不太喜欢它的 UI。并且在后期如果要开发 bot,学习成本相对来说会更大一些。(因为 discord 直接支持 web hook,并且文档完善,有公开的 bot 市场)
|
||||
而 telegram 虽然可以很好地预览链接,但是个人来说并不太喜欢它的 UI。并且在后期如果要开发 bot,学习成本相对来说会更大一些。(因为 discord 直接支持 web hook,并且文档完善,有公开的 bot 市场)
|
||||
|
||||

|
||||
|
||||
所以我很纠结应该选择哪种方式。目前是使用的 discord,不过我觉得后期可能会转到 telegram。
|
||||
@ -57,8 +71,10 @@ finished: true
|
||||
### 发现了一个很炫酷的网站
|
||||
|
||||
<https://howieduhzit.best/>
|
||||
这个网站实现了第一人称视角的交互,将交互映射到 blender 的操作中。
|
||||
个人感觉很值得学习一下是如何实现的。
|
||||
这个网站实现了第一人称视角的交互,将交互映射到 blender 的操作中。
|
||||
|
||||
个人感觉很值得学习一下是如何实现的。
|
||||
|
||||

|
||||
|
||||
### GPTS - Blender 助手
|
||||
@ -69,8 +85,10 @@ finished: true
|
||||
### GPTS - DesignerGPT
|
||||
|
||||
[ChatGPT - DesignerGPT](https://chat.openai.com/g/g-2Eo3NxuS7-designergpt)
|
||||
这个 GPTS 的效果是输入提示词,它会返回给到你一个部署页面,这个部署页面就是根据提示词所生成的界面。
|
||||
看了它的提示词后发现并不算复杂。
|
||||
这个 GPTS 的效果是输入提示词,它会返回给到你一个部署页面,这个部署页面就是根据提示词所生成的界面。
|
||||
|
||||
看了它的提示词后发现并不算复杂。
|
||||
|
||||
[DesignerGPT.md](https://github.com/LouisShark/chatgpt_system_prompt/blob/main/prompts/gpts/DesignerGPT.md)
|
||||
|
||||
```plain text
|
||||
@ -83,7 +101,8 @@ follow this structure closely: `<main class="container"><div class="grid"><secti
|
||||
This action results in an actual webpage being created and hosted on the server. Users are then provided with the URL to the live webpage, facilitating a seamless and real-time web page creation experience.
|
||||
```
|
||||
|
||||
我们可以分为三个部分,第一个部分是背景介绍,第二个是把网页的 html + 样式(样式用的是外链,这里的我的理解是其实 html 或者样式或者其他都能用外链,只要能访问)丢给它(输出 html),第三个是提供一个用于接收 html 内容然后部署页面的 api,把 html 内容丢给它,然后返回最终的静态部署的预览的地址。
|
||||
我们可以分为三个部分,第一个部分是背景介绍,第二个是把网页的 html + 样式(样式用的是外链,这里的我的理解是其实 html 或者样式或者其他都能用外链,只要能访问)丢给它(输出 html),第三个是提供一个用于接收 html 内容然后部署页面的 api,把 html 内容丢给它,然后返回最终的静态部署的预览的地址。
|
||||
|
||||
从整个提示词或者最终的呈现效果来说并不算惊艳,但是为什么这个 GPTS 能在早期广受关注,我觉得是作者对于 GPT 的能力理解比较强,知道如何应用它的能力,以及它的“售后”是做的比较好的,提供预览链接这一点能够免去使用者很多成本。
|
||||
|
||||
### 配色方案限时免费(目前已恢复收费)
|
||||
@ -113,7 +132,7 @@ This action results in an actual webpage being created and hosted on the server.
|
||||
|
||||
### Devv 搜索引擎
|
||||
|
||||
[https://devv.ai/zh](https://devv.ai/zh "https://devv.ai/zh")
|
||||
[https://devv.ai/zh](https://devv.ai/zh 'https://devv.ai/zh')
|
||||
很好用强推
|
||||
|
||||
### 截图方案汇总
|
||||
@ -163,9 +182,9 @@ This action results in an actual webpage being created and hosted on the server.
|
||||
### Ios 关于金融的组件
|
||||
|
||||
[GitHub - WillkYang/YYKline: iOS YYKline:Kline、Chart、Volume、Scroll、Scale、MACD、KDJ、K 线图、分时图...](https://github.com/WillkYang/YYKline)
|
||||
![[Pasted image 20231120000803.png]]
|
||||

|
||||
|
||||
### React 关于金融的组件
|
||||
|
||||
[GitHub - rrag/react-stockcharts: Highly customizable stock charts with ReactJS and d3](https://github.com/rrag/react-stockcharts)
|
||||
![[Pasted image 20231120001545.png]]
|
||||

|
2
src/content/post/周报/2024-W03-编程篇.md → src/content/post/周报/16 2024-W03-编程篇.md
Executable file → Normal file
2
src/content/post/周报/2024-W03-编程篇.md → src/content/post/周报/16 2024-W03-编程篇.md
Executable file → Normal file
@ -171,4 +171,4 @@ Konva.js 是一个 HTML5 Canvas JavaScript 框架,它通过为桌面和移动
|
||||
|
||||

|
||||
|
||||
## [使用 HTML、CSS 和 JavaScript 👨🏻💻 创建 3D 产品卡片](https://twitter.com/flexipletech/status/1745455790667030581?s=12&t=UKmYswdLBh4dGuqwtKAXUA)
|
||||
## [使用 HTML、CSS 和 JavaScript 👨🏻💻 创建 3D 产品卡片](https://twitter.com/flexipletech/status/1745455790667030581?s=12&t=UKmYswdLBh4dGuqwtKAXUA)
|
2
src/content/post/周报/2024-W03.md → src/content/post/周报/17 2024-W03.md
Executable file → Normal file
2
src/content/post/周报/2024-W03.md → src/content/post/周报/17 2024-W03.md
Executable file → Normal file
@ -284,4 +284,4 @@ Konva.js 是一个 HTML5 Canvas JavaScript 框架,它通过为桌面和移动
|
||||
|
||||
### [API Vs SDK.](https://twitter.com/alexxubyte/status/1745847854961492384?s=12&t=UKmYswdLBh4dGuqwtKAXUA)
|
||||
|
||||
### [FFmpeg 教程](https://wklchris.github.io/blog/FFmpeg/)
|
||||
### [FFmpeg 教程](https://wklchris.github.io/blog/FFmpeg/)
|
1
src/content/post/生活/随笔和总结/Y1-2020年度总结.md → src/content/post/生活/00 Y1-2020年度总结.md
Executable file → Normal file
1
src/content/post/生活/随笔和总结/Y1-2020年度总结.md → src/content/post/生活/00 Y1-2020年度总结.md
Executable file → Normal file
@ -12,6 +12,7 @@ description: >-
|
||||
在2020年度,作者经历了一系列的学习和实习经历。6月参与省级大创,7月获得中国高校微信小程序应用开发赛西南赛区三等奖,并在上海某金融科技公司担任产品经理实习生。8月,荣获中国大学生计算机设计大赛国家级二等奖,并参与了中国好声音的录制。9月后,回到成都,在一家教育公司担任web前端开发工程师实习生。作者最初选择工作而非考研,对前端开发有浓厚兴趣,尽管在实习过程中曾尝试产品管理,但最终决定回归前端开发。10月,拒绝了国企的offer,选择在教育科技公司继续实习,使用Vue框架。作者计划在2021年继续提升技术,并希望获得满意的offer,同时计划学习电吉他、画画和MMD。
|
||||
rinId: 32
|
||||
finished: true
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# Y1-2020 年度总结
|
3
src/content/post/生活/随笔和总结/Y2-2021年度总结.md → src/content/post/生活/01 Y2-2021年度总结.md
Executable file → Normal file
3
src/content/post/生活/随笔和总结/Y2-2021年度总结.md → src/content/post/生活/01 Y2-2021年度总结.md
Executable file → Normal file
@ -12,6 +12,7 @@ description: >-
|
||||
在Y2-2021年度总结中,作者回顾了一年的重要事件和个人成长。年初意外成为主播房管,随后经历了上海长达六个月的封控,期间在家办公并感受到工作瓶颈。作者反思了自己的工作方式,意识到需要更深入的调研和思考。此外,作者还提到了部门的大变动,包括人员离职和裁员,以及自己对技术积累的不足。在个人生活方面,作者购买了一些产品,如Mac触控板和松下GX9相机,同时也出售了一些不再使用的物品。最后,作者总结了去年的计划完成情况,并设定了新一年的目标,包括找到成都的工作机会和继续学习设计技能。
|
||||
rinId: 33
|
||||
finished: true
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# Y2-2021 年度总结
|
||||
@ -91,6 +92,7 @@ finished: true
|
||||
一些数据
|
||||
|
||||
1. 微信读书
|
||||
|
||||
1. 2020 122h
|
||||
2. 2021 32h
|
||||
3. 2022 29h
|
||||
@ -107,6 +109,7 @@ finished: true
|
||||
4. 2019 195h
|
||||
5. 2018 327h
|
||||
6. 2017 30h
|
||||
|
||||
1. github contributions
|
||||

|
||||
|
3
src/content/post/生活/随笔和总结/Y3-2022年度总结.md → src/content/post/生活/02 Y3-2022年度总结.md
Executable file → Normal file
3
src/content/post/生活/随笔和总结/Y3-2022年度总结.md → src/content/post/生活/02 Y3-2022年度总结.md
Executable file → Normal file
@ -12,6 +12,7 @@ description: >-
|
||||
在Y3-2022年度总结中,作者回顾了一年的经历和感受。年初意外成为主播房管,随后经历了上海长达六个月的封控,期间在家办公,感受到了工作和个人生活的压力。作者反思了自己的工作方式,意识到需要更深入的调研和思考,以及在遇到困难时及时寻求帮助。此外,作者提到了部门的大变动,包括人员离职和裁员,以及对技术发展的担忧。在个人成长方面,作者感到自己过于在意他人看法,正在努力改善这一心理状态。产品方面,作者购买了一些电子产品和健身设备,但也有部分产品因各种原因被出售。最后,作者总结了去年的计划完成情况,并设定了新一年的目标,包括找到成都的工作机会,完成主站重构项目,继续学习设计和UI/UX等。
|
||||
rinId: 34
|
||||
finished: true
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# Y3-2022 年度总结
|
||||
@ -91,6 +92,7 @@ finished: true
|
||||
一些数据
|
||||
|
||||
1. 微信读书
|
||||
|
||||
1. 2020 122h
|
||||
2. 2021 32h
|
||||
3. 2022 29h
|
||||
@ -107,6 +109,7 @@ finished: true
|
||||
4. 2019 195h
|
||||
5. 2018 327h
|
||||
6. 2017 30h
|
||||
|
||||
1. github contributions
|
||||

|
||||
|
1
src/content/post/生活/随笔和总结/国庆厦门&杭州之行_图床版.md → src/content/post/生活/03 国庆厦门&杭州之行_图床版.md
Executable file → Normal file
1
src/content/post/生活/随笔和总结/国庆厦门&杭州之行_图床版.md → src/content/post/生活/03 国庆厦门&杭州之行_图床版.md
Executable file → Normal file
@ -13,6 +13,7 @@ slug: national-day-trip-to-xiamen-and-hangzhoupicture-bed-version
|
||||
description: >-
|
||||
国庆期间,作者记录了从上海出发前往厦门和杭州的旅行经历。在厦门,作者体验了当地的美食,如汉堡王、七星西鹭鸭胫店、宴遇1/2等,并游览了鼓浪屿,感受了当地的夜生活和自然风光。此外,作者还尝试了野草莓餐厅和叽叽扎扎烤肉,体验了不同的餐饮文化。在杭州,作者参观了联动店铺,并尝试了方老大的面食。整个旅程中,作者不仅享受了美食,还体验了当地的文化和生活方式,感受到了旅行的乐趣。
|
||||
rinId: 114
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 国庆厦门&杭州之行
|
3
src/content/post/生活/随笔和总结/2023bw汇报_图床版.md → src/content/post/生活/04 2023BW汇报.md
Executable file → Normal file
3
src/content/post/生活/随笔和总结/2023bw汇报_图床版.md → src/content/post/生活/04 2023BW汇报.md
Executable file → Normal file
@ -3,13 +3,14 @@ title: 2023bw汇报
|
||||
date: 2024-01-07
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- "2023"
|
||||
- '2023'
|
||||
- bw
|
||||
- hanser
|
||||
published: true
|
||||
slug: bw2023
|
||||
description: >-
|
||||
本文详细记录了作者在2023年参加BW活动的经历,从20号到23号的活动日程,包括与队友的互动、周边包装、场地布置、直播观看以及与粉丝的交流等。文章中穿插了作者的个人感受和对活动的反思,展现了从懵懂到逐渐融入圈子的成长过程,以及对未来职业选择的思考。此外,还提到了与队友的友情和团队合作的重要性,以及活动结束后的情感落差和回忆。整体上,这是一篇充满情感和细节的活动回顾。
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 2023bw 汇报
|
43
src/content/post/生活/随笔和总结/2023跨年.md → src/content/post/生活/05 2023跨年.md
Executable file → Normal file
43
src/content/post/生活/随笔和总结/2023跨年.md → src/content/post/生活/05 2023跨年.md
Executable file → Normal file
@ -3,7 +3,7 @@ title: 2023跨年
|
||||
date: 2024-01-07T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- "2023"
|
||||
- '2023'
|
||||
- 跨年
|
||||
- 朋友
|
||||
- 2023跨年
|
||||
@ -12,10 +12,10 @@ slug: 2023-crossing
|
||||
description: >-
|
||||
2023年跨年,作者与群友相约成都庆祝。由于年假已用完,选择29号和1号晚上的飞机以最大化游玩时间。在飞机上体验了有屏幕的座位,并观看了电影《小妇人》。抵达后,与朋友们在KTV聚会,感受四川话的亲切。30号品尝了跷脚牛肉和桌游店的乐趣,晚上享用了陶德砂锅的肥肠。31号,一起吃了谭豆花和火锅,晚上在玉林路喝酒庆祝跨年。1号在川大望江附近吃了冒烤鸭后前往机场。此行让作者感慨成都美食众多,决心今年回成都工作。
|
||||
finished: true
|
||||
category: 生活
|
||||
coverImage: https://pictures.kazoottt.top/2024/10/20241010-5eef043c1bc397df87b6be5f1a4aaa3e.png
|
||||
---
|
||||
|
||||
![[cover (2) 1.png]]
|
||||
|
||||
# 2023 跨年
|
||||
|
||||
一时兴起和群友约好了去成都跨年。
|
||||
@ -25,45 +25,50 @@ finished: true
|
||||
## 29 号与 30 号
|
||||
|
||||
第一次坐这种有屏幕的飞机,在座位上找耳机和耳机孔找了好久,后来才知道原来是起飞后才发耳机。=、=
|
||||
![[IMG_4892.jpg]]
|
||||

|
||||
在飞机上看完了[小妇人 (豆瓣)](https://movie.douban.com/subject/26348103/), 已经很久没有看完一部完整的电影了,感觉飞机上是一个补电影、补小说的好地方。
|
||||
|
||||
下了飞机后就直奔 KTV 了, 虽然那几天本身就很累了, 但是和朋友们聚一块还是很开心的。
|
||||
下了飞机后就直奔 KTV 了, 虽然那几天本身就很累了, 但是和朋友们聚一块还是很开心的。
|
||||
|
||||
在出租车上听到了熟悉的四川话,但自己有点不清楚应该讲普通话还是四川话了...甚至觉得说四川话有点不好意思,可能是太久没有回成都了吧。
|
||||
|
||||
30 号的中午,一起去吃了跷脚牛肉,感觉这家的干辣椒其实有一点湿 hhh,然后他们的炒菜都挺好吃的,虽然看着比较口味重,但还是挺清淡的。豆腐烧脑花很好吃!推荐~
|
||||
![[Pasted image 20240107160401.png]]
|
||||

|
||||
|
||||
一起去桌游店玩了桌游
|
||||
![[Pasted image 20240107160845.png]]
|
||||
![[Pasted image 20240107160836.png]]
|
||||

|
||||

|
||||
|
||||
晚上吃了陶德砂锅!肥肠真好吃 555.
|
||||
![[Pasted image 20240107160330.png]]
|
||||

|
||||
|
||||
## 31 号
|
||||
|
||||
早饭/午饭一起去吃了谭豆花,冰醉豆花很好吃!推荐。
|
||||
(原来成都有这么多好吃的...之前在这边读了 4 年书,好像都没这么出去玩过=、=)
|
||||
![[Pasted image 20240107160141.png]]
|
||||
早饭/午饭一起去吃了谭豆花,冰醉豆花很好吃!推荐。
|
||||
|
||||
晚上去吃了火锅!
|
||||
![[Pasted image 20240107160212.png]]
|
||||
(原来成都有这么多好吃的...之前在这边读了 4 年书,好像都没这么出去玩过=、=)
|
||||
|
||||

|
||||
|
||||
晚上去吃了火锅!
|
||||
|
||||

|
||||
|
||||
吃完火锅去玉林路喝了酒,感觉这个金汤力还挺好喝的=、=
|
||||
(打车到玉林路,一下车就跨年了,有被周围的摩托车发动起启动声吓到)
|
||||
![[Pasted image 20240107160222.png]]
|
||||

|
||||
|
||||
## 1 号
|
||||
|
||||
在川大望江附近吃了冒烤鸭
|
||||
![[Pasted image 20240107160229.png]]
|
||||

|
||||
|
||||
甚至之前的校园卡流量还能用....
|
||||
![[Pasted image 20240107160251.png]]
|
||||

|
||||
|
||||
一个人点了两个菜(分量怎么这么多!),吃完就去机场了。
|
||||
![[Pasted image 20240107160302.png]]
|
||||
一个人点了两个菜(分量怎么这么多!),吃完就去机场了。
|
||||
|
||||

|
||||
|
||||
最后的感想就是:
|
||||
|
160
src/content/post/生活/随笔和总结/Y4-2023年度总结.md → src/content/post/生活/06 Y4-2023年度总结.md
Executable file → Normal file
160
src/content/post/生活/随笔和总结/Y4-2023年度总结.md → src/content/post/生活/06 Y4-2023年度总结.md
Executable file → Normal file
@ -3,7 +3,7 @@ title: Y4-2023年度总结
|
||||
date: 2024-01-07T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- "2023"
|
||||
- '2023'
|
||||
- 2023年度总结
|
||||
published: true
|
||||
slug: summary-of-fy2023
|
||||
@ -11,10 +11,10 @@ description: >-
|
||||
2023年个人总结:作者回顾了一年的重要事件,包括参加aigc比赛、第二次去bw、厦门之旅以及转岗开始AI
|
||||
Agent的研究与开发。在这一年中,作者还开始担任面试官并参与其他公司的面试,体验了面试的双重角色。技术方面,作者的GitHub热力图逐渐变绿,参与了多个开源项目,并与朋友一起参加了AI相关的比赛,获得了奖项和奖金。此外,作者还分享了技术栈的偏向性,包括前端使用nextjs,后端使用nextjs/flask,设计使用figma和canva。最后,作者总结了去年的目标完成情况,并设定了新一年的计划,包括继续学习blender、每周至少产出一次技术向内容等。
|
||||
finished: true
|
||||
category: 生活
|
||||
coverImage: https://pictures.kazoottt.top/2024/10/20241010-747a24e5899b357928a58beafaa22faa.png
|
||||
---
|
||||
|
||||
![[cover (1) 1.png]]
|
||||
|
||||
# 2023 总结
|
||||
|
||||
感觉时间过得好快,一年又过去了,还是像以往一样做一个总结吧。
|
||||
@ -33,18 +33,18 @@ finished: true
|
||||
|
||||
### 终于开始面试
|
||||
|
||||
面试指两个方面,一个是我作为面试官面试他人(被迫的),另一个是我投简历面试其他公司。
|
||||
我面试他人:由于部门很缺前端,更资深的前端都已离职,于是只能我被迫开始面试招人,在我自己面试别人的过程中,也能感受到自己的不足之处,比如对方回答了某问题之后,我很难接下去深入聊。也就是说其实我本身对于那个问题的了解也是比较浅的。
|
||||
我被面试:投了几家公司,比较意外的是小公司投了后就没有下文了,但大厂的简历都过了,并且约了面试。结果以我目前的水平来说自然不用讲了, 还有很多东西要学习准备,不过我觉得起码我迈出了第一步,也知道自己的不足之处在哪里了。面试官都是很不错的人,面试过程中有很好地引导回答,并且面完之后给出了很多有用的建议。
|
||||
面试指两个方面,一个是我作为面试官面试他人(被迫的),另一个是我投简历面试其他公司。
|
||||
我面试他人:由于部门很缺前端,更资深的前端都已离职,于是只能我被迫开始面试招人,在我自己面试别人的过程中,也能感受到自己的不足之处,比如对方回答了某问题之后,我很难接下去深入聊。也就是说其实我本身对于那个问题的了解也是比较浅的。
|
||||
我被面试:投了几家公司,比较意外的是小公司投了后就没有下文了,但大厂的简历都过了,并且约了面试。结果以我目前的水平来说自然不用讲了,还有很多东西要学习准备,不过我觉得起码我迈出了第一步,也知道自己的不足之处在哪里了。面试官都是很不错的人,面试过程中有很好地引导回答,并且面完之后给出了很多有用的建议。
|
||||
|
||||
### 热力图终于绿了起来
|
||||
|
||||
因为自己的做项目以及给开源项目提 pr,github 的绿格子终于多了起来,虽然还是有很多空白的地方,但我觉得这是一个好的开始。希望 2024 年继续保持,并且做出真正能够解决自己痛点,同时也能帮助他人的项目。
|
||||
![[Pasted image 20240107150939.png]]
|
||||
之前写的一个油猴脚本,收到了他人的反馈,感觉这样的反馈很能激励自己做更多的产出。
|
||||
![[Pasted image 20240107151049.png]]
|
||||
除此之外还对一些开源项目提了 pr,虽然大多数都是很简单的 pr(例如 typo fix),但总算是迈出了第一步。
|
||||
![[Pasted image 20240107151307.png]]
|
||||
因为自己的做项目以及给开源项目提 pr,github 的绿格子终于多了起来,虽然还是有很多空白的地方,但我觉得这是一个好的开始。希望 2024 年继续保持,并且做出真正能够解决自己痛点,同时也能帮助他人的项目。
|
||||

|
||||
之前写的一个油猴脚本,收到了他人的反馈,感觉这样的反馈很能激励自己做更多的产出。
|
||||

|
||||
除此之外还对一些开源项目提了 pr,虽然大多数都是很简单的 pr(例如 typo fix),但总算是迈出了第一步。
|
||||

|
||||
|
||||
### 和朋友一起参加了 Ai 相关的比赛
|
||||
|
||||
@ -52,92 +52,92 @@ finished: true
|
||||
|
||||
从前期的开会讨论,后期的设计对接,都很愉快。那段时间的时间安排差不多都是白天工作,晚上回家继续写比赛的代码,虽然比较累但是觉得很快乐,在最后也拿了奖,同时也有一笔奖金。这应该是我第一次在工作外用自己的能力挣钱,感觉很快乐。
|
||||
|
||||
![[Pasted image 20240107144605.png]]
|
||||

|
||||
|
||||
下面详细聊一下这个 demo 的开发相关的感受以及不足之处。
|
||||
|
||||
框架使用的是 nextjs(app router) ,这个时候才意识到,原来我最顺手的框架是 nextjs,而不是工作里用得最多的 umi、cra、vite 之类的东西,后面的这几个框架对我来说其实都不是开箱即用的。
|
||||
框架使用的是 nextjs(app router),这个时候才意识到,原来我最顺手的框架是 nextjs,而不是工作里用得最多的 umi、cra、vite 之类的东西,后面的这几个框架对我来说其实都不是开箱即用的。
|
||||
后面要做的事情应该是针对这几个常见的框架自己另外几个适用于自己以及公司的脚手架,而不是每次用都重新配一次配置。
|
||||
|
||||
- [ ] [[常见框架脚手架]]
|
||||
|
||||
然后就是在写这个项目的过程中,充分体会到 chatgpt 的便捷之处了。在早期,设计老师还没有提供素材给我的时候,我使用是[Beautiful Free Images & Pictures | Unsplash](https://unsplash.com/) 的 api,
|
||||
然后就是在写这个项目的过程中,充分体会到 chatgpt 的便捷之处了。在早期,设计老师还没有提供素材给我的时候,我使用是[Beautiful Free Images & Pictures | Unsplash](https://unsplash.com/) 的 api,
|
||||
像下文这样随机生成图片,以及打乱顺序的 dirty work 就可以交给 chatgpt 来完成,减少了很多重复的工作量。
|
||||
|
||||
```javascript
|
||||
const imagesList = [
|
||||
[
|
||||
"https://source.unsplash.com/128x128/?architecture",
|
||||
"https://source.unsplash.com/128x128/?travel",
|
||||
"https://source.unsplash.com/128x128/?books",
|
||||
"https://source.unsplash.com/128x128/?dogs",
|
||||
"https://source.unsplash.com/128x128/?beach",
|
||||
"https://source.unsplash.com/128x128/?food",
|
||||
"https://source.unsplash.com/128x128/?music",
|
||||
"https://source.unsplash.com/128x128/?nature",
|
||||
"https://source.unsplash.com/128x128/?fashion",
|
||||
"https://source.unsplash.com/128x128/?cars",
|
||||
"https://source.unsplash.com/128x128/?wildlife",
|
||||
"https://source.unsplash.com/128x128/?art",
|
||||
"https://source.unsplash.com/128x128/?sports",
|
||||
"https://source.unsplash.com/128x128/?mountains",
|
||||
"https://source.unsplash.com/128x128/?technology",
|
||||
"https://source.unsplash.com/128x128/?city",
|
||||
"https://source.unsplash.com/128x128/?cats",
|
||||
"https://source.unsplash.com/128x128/?sunsets",
|
||||
"https://source.unsplash.com/128x128/?animals",
|
||||
"https://source.unsplash.com/128x128/?fitness",
|
||||
],
|
||||
[
|
||||
"https://source.unsplash.com/360x640/?technology",
|
||||
"https://source.unsplash.com/360x640/?music",
|
||||
"https://source.unsplash.com/360x640/?sports",
|
||||
"https://source.unsplash.com/360x640/?art",
|
||||
"https://source.unsplash.com/360x640/?fashion",
|
||||
"https://source.unsplash.com/360x640/?cars",
|
||||
"https://source.unsplash.com/360x640/?books",
|
||||
"https://source.unsplash.com/360x640/?architecture",
|
||||
"https://source.unsplash.com/360x640/?fitness",
|
||||
"https://source.unsplash.com/360x640/?nature",
|
||||
"https://source.unsplash.com/360x640/?city",
|
||||
"https://source.unsplash.com/360x640/?food",
|
||||
"https://source.unsplash.com/360x640/?animals",
|
||||
"https://source.unsplash.com/360x640/?mountains",
|
||||
"https://source.unsplash.com/360x640/?beach",
|
||||
"https://source.unsplash.com/360x640/?dogs",
|
||||
"https://source.unsplash.com/360x640/?travel",
|
||||
],
|
||||
[
|
||||
"https://source.unsplash.com/360x640/?nature",
|
||||
"https://source.unsplash.com/360x640/?city",
|
||||
"https://source.unsplash.com/360x640/?food",
|
||||
"https://source.unsplash.com/360x640/?animals",
|
||||
"https://source.unsplash.com/360x640/?mountains",
|
||||
"https://source.unsplash.com/360x640/?beach",
|
||||
"https://source.unsplash.com/360x640/?dogs",
|
||||
"https://source.unsplash.com/360x640/?travel",
|
||||
"https://source.unsplash.com/360x640/?architecture",
|
||||
"https://source.unsplash.com/360x640/?technology",
|
||||
"https://source.unsplash.com/360x640/?music",
|
||||
"https://source.unsplash.com/360x640/?sports",
|
||||
"https://source.unsplash.com/360x640/?art",
|
||||
"https://source.unsplash.com/360x640/?fashion",
|
||||
"https://source.unsplash.com/360x640/?cars",
|
||||
"https://source.unsplash.com/360x640/?books",
|
||||
"https://source.unsplash.com/360x640/?fitness",
|
||||
],
|
||||
[
|
||||
'https://source.unsplash.com/128x128/?architecture',
|
||||
'https://source.unsplash.com/128x128/?travel',
|
||||
'https://source.unsplash.com/128x128/?books',
|
||||
'https://source.unsplash.com/128x128/?dogs',
|
||||
'https://source.unsplash.com/128x128/?beach',
|
||||
'https://source.unsplash.com/128x128/?food',
|
||||
'https://source.unsplash.com/128x128/?music',
|
||||
'https://source.unsplash.com/128x128/?nature',
|
||||
'https://source.unsplash.com/128x128/?fashion',
|
||||
'https://source.unsplash.com/128x128/?cars',
|
||||
'https://source.unsplash.com/128x128/?wildlife',
|
||||
'https://source.unsplash.com/128x128/?art',
|
||||
'https://source.unsplash.com/128x128/?sports',
|
||||
'https://source.unsplash.com/128x128/?mountains',
|
||||
'https://source.unsplash.com/128x128/?technology',
|
||||
'https://source.unsplash.com/128x128/?city',
|
||||
'https://source.unsplash.com/128x128/?cats',
|
||||
'https://source.unsplash.com/128x128/?sunsets',
|
||||
'https://source.unsplash.com/128x128/?animals',
|
||||
'https://source.unsplash.com/128x128/?fitness'
|
||||
],
|
||||
[
|
||||
'https://source.unsplash.com/360x640/?technology',
|
||||
'https://source.unsplash.com/360x640/?music',
|
||||
'https://source.unsplash.com/360x640/?sports',
|
||||
'https://source.unsplash.com/360x640/?art',
|
||||
'https://source.unsplash.com/360x640/?fashion',
|
||||
'https://source.unsplash.com/360x640/?cars',
|
||||
'https://source.unsplash.com/360x640/?books',
|
||||
'https://source.unsplash.com/360x640/?architecture',
|
||||
'https://source.unsplash.com/360x640/?fitness',
|
||||
'https://source.unsplash.com/360x640/?nature',
|
||||
'https://source.unsplash.com/360x640/?city',
|
||||
'https://source.unsplash.com/360x640/?food',
|
||||
'https://source.unsplash.com/360x640/?animals',
|
||||
'https://source.unsplash.com/360x640/?mountains',
|
||||
'https://source.unsplash.com/360x640/?beach',
|
||||
'https://source.unsplash.com/360x640/?dogs',
|
||||
'https://source.unsplash.com/360x640/?travel'
|
||||
],
|
||||
[
|
||||
'https://source.unsplash.com/360x640/?nature',
|
||||
'https://source.unsplash.com/360x640/?city',
|
||||
'https://source.unsplash.com/360x640/?food',
|
||||
'https://source.unsplash.com/360x640/?animals',
|
||||
'https://source.unsplash.com/360x640/?mountains',
|
||||
'https://source.unsplash.com/360x640/?beach',
|
||||
'https://source.unsplash.com/360x640/?dogs',
|
||||
'https://source.unsplash.com/360x640/?travel',
|
||||
'https://source.unsplash.com/360x640/?architecture',
|
||||
'https://source.unsplash.com/360x640/?technology',
|
||||
'https://source.unsplash.com/360x640/?music',
|
||||
'https://source.unsplash.com/360x640/?sports',
|
||||
'https://source.unsplash.com/360x640/?art',
|
||||
'https://source.unsplash.com/360x640/?fashion',
|
||||
'https://source.unsplash.com/360x640/?cars',
|
||||
'https://source.unsplash.com/360x640/?books',
|
||||
'https://source.unsplash.com/360x640/?fitness'
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
### 去了 Bw2023
|
||||
|
||||
具体的内容可以看这篇汇报
|
||||
[[2023bw汇报_图床版]]
|
||||
[[生活/生活/2023bw汇报_图床版]]
|
||||
|
||||
### 去了厦门
|
||||
|
||||
具体的内容可以看这篇游记
|
||||
[[国庆厦门&杭州之行_图床版]]
|
||||
[[生活/生活/国庆厦门&杭州之行_图床版]]
|
||||
|
||||
### 转岗开启 AI Agent 开发 + 父母来上海看我
|
||||
|
||||
@ -146,7 +146,7 @@ const imagesList = [
|
||||
|
||||
### 和朋友一起在成都跨年
|
||||
|
||||
[[2023跨年]]
|
||||
[[生活/生活/2023跨年]]
|
||||
|
||||
## 技术栈的偏向性
|
||||
|
||||
@ -173,7 +173,7 @@ const imagesList = [
|
||||
2018 327h
|
||||
2017 30h
|
||||
wakatime 的数据查看:[Code stats for all users in 2023 - WakaTime](https://wakatime.com/a-look-back-at-2023)
|
||||
![[下载.png]]
|
||||

|
||||
|
||||
### 音乐
|
||||
|
||||
@ -186,7 +186,7 @@ wakatime 的数据查看:[Code stats for all users in 2023 - WakaTime](https:/
|
||||
1. [ ] 【工作】拿一个 base 地是成都的 offer
|
||||
2. [ ] 【开源】把主站重构项目写完并上线
|
||||
3. [ ] 【设计】继续学习 blender
|
||||
4. [ ] 【设计】 学习 UI/UX,熟悉 ps、figma
|
||||
4. [ ] 【设计】学习 UI/UX,熟悉 ps、figma
|
||||
5. [x] 【学习】重拾阅读习惯
|
||||
|
||||
## 今年的计划
|
1
src/content/post/生活/随笔和总结/一次受骗经历.md → src/content/post/生活/07 一次受骗经历.md
Executable file → Normal file
1
src/content/post/生活/随笔和总结/一次受骗经历.md → src/content/post/生活/07 一次受骗经历.md
Executable file → Normal file
@ -7,6 +7,7 @@ description: >-
|
||||
本文讲述了一位大学生在成都春熙路地下商场遭遇的骗局。作者被诱导进入一家店铺,经历了从免费面部检测到被迫支付高额费用的过程。在被骗后,作者通过寻求帮助,最终成功追回了大部分损失。这次经历让作者学会了更加小心谨慎,并感激那些在困难时刻给予帮助的人。文章旨在提醒读者警惕类似的消费陷阱。
|
||||
finished: true
|
||||
rinId: 111
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 一次受骗经历
|
1
src/content/post/生活/随笔和总结/厦门探店合集.md → src/content/post/生活/08 厦门探店合集.md
Executable file → Normal file
1
src/content/post/生活/随笔和总结/厦门探店合集.md → src/content/post/生活/08 厦门探店合集.md
Executable file → Normal file
@ -14,6 +14,7 @@ description: >-
|
||||
文章中作者分享了多个餐饮体验,包括奶茶店“薄荷森林”的薄荷生打椰,以及“野台风”的圆规和dirty咖啡。在“seven
|
||||
bus”尝试了杏仁牛油果冰淇士。正餐方面,作者品尝了“野草莓”的高性价比美食,以及“宴遇1/2”的酸菜鱼、火焰黑椒安格斯小牛肉等。此外,还体验了“叽叽扎扎烤肉”和“七星西鹭鸭胫店”的特色菜肴。最后,作者在“傲客夜食”尝试了麻辣烤鱼和冰粉。整体上,作者对所尝试的食物给予了积极的评价,并表达了对某些美食的特别喜爱。
|
||||
rinId: 113
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 奶茶与咖啡
|
@ -9,6 +9,7 @@ slug: a-very-abrupt-trip-to-hong-kong
|
||||
description: >-
|
||||
作者在生日假期冲动地决定去香港旅行,提前一周购买机票和预订酒店。旅程中遇到了一些小插曲,如机票信息错误和插头转换器购买错误,但都顺利解决。在香港,作者体验了当地的美食,如一兰拉面和各种点心,并与久未见面的高中同学共进午餐,享受了愉快的时光。尽管行程紧凑,但这次旅行给作者留下了深刻的印象和美好的回忆。
|
||||
rinId: 112
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 一次很突然的香港之行
|
||||
@ -17,7 +18,7 @@ rinId: 112
|
||||
|
||||
出发的时间是周三晚上,下班后坐地铁去了机场,吃了一顿不太划算的意面。
|
||||
|
||||
![[04FED0A5-000A-4FB5-9DC4-E6177093BE68_1_102_o.jpeg]]
|
||||

|
||||
|
||||
然后我就犯了第一个错,去自助值机的时候提示购票人的信息和证件(通行证)的信息不符合,这个时间我才发现我打错拼音了,我服了我自己这种低级错误也会犯。
|
||||
|
||||
@ -29,11 +30,11 @@ rinId: 112
|
||||
|
||||
拍拍路灯
|
||||
|
||||
![[1FBDB24F-50EB-4591-82C7-44D790FAA8E1_1_102_o.jpeg]]
|
||||

|
||||
|
||||
街边的广告,有点让我联想到椰树椰汁
|
||||
|
||||
![[6E4C12DE-564E-495A-9757-A71F2FCA93F2_1_102_o.jpeg]]
|
||||

|
||||
|
||||
大概坐了一个小时到了铜锣湾,之前订酒店的时候发现铜锣湾有家一兰拉面,抱着一个想试试主播之前吃过的同款的想法,我下车后没有去酒店,而是先去了一兰拉面,这家店营业到凌晨4点。
|
||||
|
||||
@ -43,23 +44,23 @@ rinId: 112
|
||||
|
||||
个人感觉还是挺好吃的,不过确实有点贵hhh
|
||||
|
||||
![[B3ECF3CA-48DB-44EF-9653-5F1550B8B3F9_1_102_o.jpeg]]
|
||||

|
||||
|
||||
![[656038D5-1DD9-448A-B87F-CD06B3D9F9D8_1_102_o.jpeg]]
|
||||

|
||||
|
||||
吃完拉面就回酒店休息了。 犯了第二个错是插头转化器买成了内地插头转香港插头的...从包里拿出来我才发现。
|
||||
吃完拉面就回酒店休息了。犯了第二个错是插头转化器买成了内地插头转香港插头的...从包里拿出来我才发现。
|
||||
|
||||
![[9D4EF7F8-2C59-49DF-8F4B-945C1C199EC7_1_102_o.jpeg]]
|
||||

|
||||
|
||||
白天起了个大早去干活~ 这天中午和高中同学约了午饭,不过她12点下班,于是我继续开始闲逛。
|
||||
|
||||
在公交车站看到了崩铁广告2333
|
||||
|
||||
![[A58CB566-63A9-4F80-86CB-D997B5D3E3F2_1_102_o.jpeg]]
|
||||

|
||||
|
||||
凉果零食专卖店
|
||||
|
||||
![[8FF79095-1EFA-49AE-AE73-2099BACB20B1_1_102_o.jpeg]]
|
||||

|
||||
|
||||
然后还去了时代广场和维港,初中的时候来过,但已经没有什么印象了,只记得林青霞的手印😂
|
||||
|
||||
@ -71,29 +72,29 @@ rinId: 112
|
||||
|
||||
烤酸奶
|
||||
|
||||
![[D7D9B20C-21B5-4873-9CC7-7621647772DB_1_102_o.jpeg]]
|
||||

|
||||
|
||||
肠粉(第一次吃这种肠粉,里面还有油条,感觉口感很神奇
|
||||
|
||||
![[1651BC89-6433-4A56-A773-70ABDFEC7195_1_102_o.jpeg]]
|
||||

|
||||
|
||||
虾饺
|
||||
|
||||
![[0F5D3FA0-ADD0-45B0-A550-165F6F3461D1_1_102_o.jpeg]]
|
||||

|
||||
|
||||
炒牛河
|
||||
|
||||
![[BC992799-52F6-47E7-A550-AAF99926D2AF_1_102_o.jpeg]]
|
||||

|
||||
|
||||
蒸排骨
|
||||
|
||||
![[7DC8D773-5E72-4674-B6E3-8A09C6349C61_1_102_o.jpeg]]
|
||||

|
||||
|
||||
然后还请我喝了冰抹茶,我点的时候没注意菜单,没有加奶😂感觉一股草的味道,看来我还是不太能接受纯抹茶。
|
||||
|
||||
![[8BE4D114-A064-4F5B-A6FC-FD26D2766C38_1_102_o 1.jpeg]]
|
||||

|
||||
|
||||
![[8F7B7ED6-B197-456D-AD14-B7E9F36CC7EA_1_102_o.jpeg]]
|
||||

|
||||
|
||||
吃完午饭散了散步,她又要回去工作了,于是走到她公司楼下跟她抱了抱就告别了T T
|
||||
|
@ -12,6 +12,7 @@ description: >-
|
||||
link: 'https://kazoottt.notion.site/4168e936345444f4b625a86309a5b320'
|
||||
notionID: 4168e936-3454-44f4-b625-a86309a5b320
|
||||
rinId: 57
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 与其倒腾,不如静下心来
|
@ -11,6 +11,7 @@ slug: recent-feelings-a-lot-of-hard-work
|
||||
description: >-
|
||||
在23年年末,作者内转至大模型应用部门,初期充满激情,能接触前沿项目并利用大模型厂商服务。然而,随着时间推移,工作中的不适感逐渐增强。主要问题包括基建不足,如缺乏CI/CD流程,发布版本耗时且需加班;项目框架笨重且存在性能问题,对项目信心下降;代码质量差,缺乏规范;以及对未来职业发展的担忧,如工作与学习时间冲突,薪资涨幅低。这些因素共同导致了作者对当前工作的不满和焦虑。
|
||||
rinId: 116
|
||||
category: 生活
|
||||
---
|
||||
|
||||
# 最近的感受-积重难返
|
@ -11,7 +11,7 @@ tags:
|
||||
- 端午节
|
||||
finished: true
|
||||
published: true
|
||||
category: 随笔与生活
|
||||
category: 生活
|
||||
slug: duanwu-guangzhou-trip
|
||||
description: 在端午节期间,我和朋友们相约去广州,参观了大咩老师的毕业展,品尝了各种美食,体验了广州的文化和风景。这次旅行充满了美好的回忆,让我感受到了广州的独特魅力。
|
||||
rinId: 5
|
||||
@ -245,13 +245,13 @@ rinId: 5
|
||||
|
||||
闭馆的时候,很多人来给玩偶拍照~
|
||||
|
||||
.png)
|
||||
.png>)
|
||||
|
||||
%201.png)
|
||||
%201.png>)
|
||||
|
||||
合照~
|
||||
|
||||
.png)
|
||||
.png>)
|
||||
|
||||
结束后我们在广美拍了合照,虽然毕业了几年了,但还是觉得自己是学生...
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: BW记录-个人向流水账版
|
||||
title: 2024BW记录-个人向流水账版
|
||||
date: 2024-07-17
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
@ -10,10 +10,10 @@ tags:
|
||||
- 个人流水账
|
||||
- 毛怪
|
||||
- 小缘
|
||||
- "2024"
|
||||
- '2024'
|
||||
finished: true
|
||||
published: true
|
||||
category: 随笔与生活
|
||||
category: 生活
|
||||
slug: bw-record-personal-notes
|
||||
description: 记录了 KazooTTT 在 BW 活动中的个人体验和感受,包括与朋友和偶像的合照、工作餐和摊位的点滴。
|
||||
rinId: 1
|
@ -1,21 +0,0 @@
|
||||
---
|
||||
title: 摘抄
|
||||
date: 2024-03-27T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
slug: extract
|
||||
description: >-
|
||||
编程大师Martin
|
||||
Fowler强调了代码中重复问题的严重性,认为重复是代码中最坏的“味道”。同时,提到了关于开源的心理建设资源,暗示了在编程和开源项目中维护心理健康的重要性。
|
||||
rinId: 31
|
||||
---
|
||||
|
||||
# 摘抄
|
||||
|
||||
> 编程大师*Martin Fowler*先生曾经说过:“**代码有很多种坏味道,重复是最坏的一种!**”
|
||||
|
||||
[开源的心理建设](https://antfu.me/posts/mental-health-oss-zh)
|
||||
|
||||
![[Pasted image 20240328230737.png]]
|
@ -1,36 +0,0 @@
|
||||
---
|
||||
title: 一些烦心事
|
||||
date: 2023-01-19T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags: []
|
||||
finished: true
|
||||
published: true
|
||||
slug: somethings-bothering-me
|
||||
description: >-
|
||||
在飞机上,作者通过写作来缓解心中的烦闷。上周状态良好,但本周因熬夜和粉丝圈的负面影响感到状态下滑。作者计划在春节期间调整作息,并反思了过去几年对粉丝圈的感受变化,包括从极度社恐到逐渐适应公共表达的过程,以及对粉丝圈中个体信任的思考。同时,作者也回顾了与主播和粉丝圈的互动,以及个人情感和观点表达的冲突与反思。
|
||||
rinId: 110
|
||||
---
|
||||
|
||||
# 一些烦心事
|
||||
|
||||
在飞机上,闲着也是闲着,不妨写点碎碎念,缓解一下心中的阴郁。
|
||||
上周也就是 1.9-1.23 这个时间段,我的状态挺好的,无论是工作、学习还是对其他感兴趣事物的产出,那种在对应的时间场所做对应的事情,然后同时又有的积极反馈,真的很棒。
|
||||
但是这周突然状态又变差了,想了想主要原因,第一是周末熬夜打乱了作息导致周一失眠,后续也没能调整好状态;第二是,受到了喜欢事物所在圈子某些事件、氛围的影响,进一步使心情变得更差。
|
||||
|
||||
对于第一点,我决定春节放假期间,调整作息,可以赖床,但绝不能晚睡。
|
||||
对于第二点,也就是粉丝氛围,其实一直都在困扰着我,去年前大半年,尤为严重,后小半年稍微好一点,但没想到最近又被影响到了心情。
|
||||
|
||||
从什么地方开始聊呢?先聊聊这几年的感受变化吧。
|
||||
一个人对某一事物感受的变化,受到多方面影响,无论是自己、事物本身还是大环境等等,多会有一定占比。
|
||||
小时候的我,可以说极度社恐,第一次坐飞机的时候,空姐问我要喝什么饮料,我都不敢说话,只能用手指指一下我想要的东西。17 年,到了大学,觉得不能一直畏畏缩缩,决定换个状态重新开始,于是逼自己加了辩论队,从那个时候开始慢慢地变得和普通人一样,虽然性格依然很闷,但终于可以在公共场合表达观点了。
|
||||
|
||||
自身心态发生改变的时间点,18 年-20 年,也刚好是我混我葱圈子最深入的时候,和大家共同经历了某些事,在非主要舆论场一起直面了很多恶意,也在某些事情上明白了现在喜欢不代表会一直喜欢,为了现圈利益撕破脸皮背刺前圈的事情还挺常见,可以信任粉丝整体,但不能信任某个个体。
|
||||
当然也有很多暖心的事情,一起庆祝生日、一起为某个线下准备惊喜。当有投票或出专辑,有时会帮一点点忙(那时候大学,时间真的多哇),当时教过四十多岁的玉米怎么购买专辑,之后偶然刷到她的微博,除了分享花花草草,就是转发微博关心我葱身体了,无论是当时还是现在回想起都很感动,这样的事情太多太多。
|
||||
|
||||
而同一时期,也刚好遇到了主播以及她的直播。当时看直播的时候,不太敢发弹幕和回帖,回复被念到的时候会下意识地关掉直播间,过几分钟再打开。并且我算是误打误撞入坑的类型,不了解 ACG,不看音乐区,兴趣点和主播的产出内容毫无重合,但还是在随机到主播的歌的时候产生了兴趣。所以当时的我,属于非常懵懂的旁观者、圈外人,看着大家互动,想着说原来这个圈子的大家是这样表达喜欢的,好不一样。
|
||||
这样的状态一直持续到 19 年年初,遇到了一件让我个人不太舒服的事情。那时的我已不是内心极度社恐和卑微的状态了,打字也喜欢带着辩论的一些架子,当时气在头上,在评论区选择了比较直白的提醒,后来有人评论反驳我,我也直接回怼了过去,在那之后选择了渐渐不看直播,投稿刷到了才看。
|
||||
19 年成都 bw 短暂的回坑了一下,但重新高强度看直播应该是说唱新世代时期,突然刷到了主播的 vlog,这个节目我葱也在,这种交集让我觉得有些奇妙。根据录制时间拉了点录播,后面又刷了某些切片上下文看,心里又慢慢释然了。
|
||||
这让我开始思考当初的做法有没有问题?从道理上讲,主播和观众看法、表达方式不一样太正常不过,无论哪一方,都不应该把自己的观点强加对方,应该做的是求同存异。从情感上讲,某些看法触及到自己所在意的点时,生气也很正常,如果别的地方有人嘴主播我也会表示不满,所以当时评论区也有反驳我也很正常。
|
||||
但正确的做法到底是什么我真的不清楚,做法随着自身情感倾斜程度变化吗?
|
||||
|
||||
好像有点扯太远了,本来是想聊粉丝氛围的。
|
@ -23,6 +23,7 @@ update_time: '2023/10/20 13:55:39'
|
||||
publish_time: '2023/10/20 13:50:45'
|
||||
finished: true
|
||||
rinId: 61
|
||||
category: 软件
|
||||
---
|
||||
|
||||
# messAuto + iMessage 实现iPhone和mac信息同步和自动复制验证码
|
@ -12,10 +12,11 @@ tags:
|
||||
finished: true
|
||||
published: true
|
||||
slug: possible-causes-and-solutions-for-focusee-switching-system-audio-to-speaker-playback-forcibly-zh
|
||||
description:
|
||||
description:
|
||||
NotionID-notionnext: 8ac966eb-66b4-4f39-b2fa-3fd4e4911a41
|
||||
link-notionnext: https://kazoottt.notion.site/focusee-8ac966eb66b44f39b2fa3fd4e4911a41
|
||||
rinId: 41
|
||||
category: 软件
|
||||
---
|
||||
|
||||
# Focusee录制系统声音被强制切换为扬声器播放的可能原因和解决方法
|
||||
@ -41,7 +42,7 @@ rinId: 41
|
||||
具体的操作是:
|
||||
|
||||
1. 点击来源下方的添加按钮,选择macOS音频采集
|
||||

|
||||

|
||||
|
||||
2. 根据你的需求选择是采集桌面音频还是应用音频。
|
||||

|
||||

|
@ -12,7 +12,7 @@ tags:
|
||||
- 退款
|
||||
finished: true
|
||||
published: true
|
||||
category: 编程与技术
|
||||
category: 软件
|
||||
slug: focusee-macos-review
|
||||
description: 分析了Focusee在macOS上的缺陷,包括色差严重、导出速度慢以及声卡配置冲突等问题,并分享了作者的退款经历。
|
||||
NotionID-notionnext: c6b6e2f5-9da1-43f9-b531-b07d974815ed
|
@ -11,7 +11,7 @@ tags:
|
||||
- deepseek
|
||||
finished: true
|
||||
published: true
|
||||
category:
|
||||
category: 软件
|
||||
slug: free-tokens-large-model-service
|
||||
description:
|
||||
NotionID-notionnext: 30a20483-ea28-4daf-b8be-155f0e690bc7
|
@ -19,6 +19,7 @@ description: 通过自动操作实现将指定文件夹中的图片自动导入
|
||||
NotionID-notionnext: d451ee94-44f7-44af-83c0-a6e8a30d26c8
|
||||
link-notionnext: https://kazoottt.notion.site/d451ee9444f744af83c0a6e8a30d26c8
|
||||
rinId: 44
|
||||
category: 软件
|
||||
---
|
||||
|
||||
# 如何自动同步某个文件夹的图片到某个相册中
|
||||
@ -69,6 +70,6 @@ rinId: 44
|
||||
|
||||
如果想要删除文件夹操作,可以前往以下路径:
|
||||
|
||||
``` shell
|
||||
```shell
|
||||
/Users/{这里替换为你的用户名}/Library/Workflows/Applications/Folder Actions
|
||||
```
|
1
src/content/post/软件/如何让你的截图更加好看.md → src/content/post/软件/05 如何让你的截图更加好看.md
Executable file → Normal file
1
src/content/post/软件/如何让你的截图更加好看.md → src/content/post/软件/05 如何让你的截图更加好看.md
Executable file → Normal file
@ -10,6 +10,7 @@ description: >-
|
||||
finished: true
|
||||
date: '2024-07-11T02:17:53.456Z'
|
||||
rinId: 122
|
||||
category: 软件
|
||||
---
|
||||
|
||||
# 如何让你的截图更加好看
|
@ -1,45 +0,0 @@
|
||||
---
|
||||
title: Possible Causes and Solutions for Focusee Switching System Audio to Speaker Playback forcibly
|
||||
date: 2024-05-25
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
status: Draft
|
||||
tags:
|
||||
- focusee
|
||||
- obs
|
||||
- VirtualSoundCard
|
||||
- BlackHole2ch
|
||||
finished: true
|
||||
published: true
|
||||
slug: possible-causes-and-solutions-for-focusee-switching-system-audio-to-speaker-playback-forcibly
|
||||
description:
|
||||
NotionID-notionnext: 80f19b4c-d207-45a0-bbbb-39641a9dc330
|
||||
link-notionnext: https://kazoottt.notion.site/Possible-Causes-and-Solutions-for-Focusee-Switching-System-Audio-to-Speaker-Playback-forcibly-80f19b4cd20745a0bbbb39641a9dc330
|
||||
rinId: 39
|
||||
---
|
||||
|
||||
# Possible Causes and Solutions for Focusee Switching System Audio to Speaker Playback Forcibly
|
||||
|
||||
On macOS, when I wanted to use Focusee to record system audio, I followed its guide to install Gemoo Speaker.
|
||||
|
||||
Although switching the output device to Gemoo Speaker allowed me to record the system audio, it played the sound directly through the speakers.
|
||||
|
||||
Later, I found out that it was because I had installed BlackHole2ch. After uninstalling this virtual sound card, Focusee was able to record the sound through the headphones properly using Gemoo Speaker.
|
||||
|
||||
Uninstallation method:
|
||||
|
||||
Navigate to the folder `/Library/Audio/Plug-Ins/HAL` and delete the corresponding BlackHole2ch folder.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
By the way, the reason I installed BlackHole2ch was to record system audio during screen recording or live streaming. Today, I suddenly discovered that OBS now directly supports recording system audio.
|
||||
|
||||
Here's how to do it:
|
||||
|
||||
1. Click the add button below the sources and select macOS Screen Capture.
|
||||

|
||||
|
||||
2. Choose whether to capture desktop audio or application audio based on your needs.
|
||||

|
@ -1,75 +0,0 @@
|
||||
---
|
||||
title: Reasons Not to Recommend Purchasing Focusee for macOS Users
|
||||
date: 2024-06-20
|
||||
author: KazooTTT
|
||||
type: Post
|
||||
status: Published
|
||||
tags:
|
||||
- macOS
|
||||
- Focusee
|
||||
- Screen Recording Software
|
||||
- Review
|
||||
- Refund
|
||||
finished: true
|
||||
published: true
|
||||
category: 编程与技术
|
||||
slug: focusee-macos-review-en
|
||||
description: An analysis of Focusee's shortcomings on macOS, including severe color discrepancies, slow export speed, and sound card configuration conflicts, along with the author's refund experience.
|
||||
NotionID-notionnext: c692f30c-bcbc-48fd-9739-19e23a3e1e40
|
||||
link-notionnext: https://kazoottt.notion.site/Reasons-Not-to-Recommend-Purchasing-Focusee-for-macOS-Users-c692f30cbcbc48fd973919e23a3e1e40
|
||||
rinId: 40
|
||||
---
|
||||
|
||||
# Reasons Not to Recommend Purchasing Focusee for macOS Users
|
||||
|
||||
## Why I Purchased Focusee
|
||||
|
||||
1. **Need to Record Both Camera and Screen Simultaneously**: Often need to show both myself and the computer screen while recording videos.
|
||||
2. **Need to Use Zoom Function**: Occasionally need to zoom in on specific areas during recording, and Focusee conveniently adds this effect.
|
||||
3. **Supports Both macOS and Windows**: Additionally, there was a discount for purchasing for two devices.
|
||||
|
||||
Based on these three reasons, I purchased Focusee.
|
||||
|
||||
## Why I Don't Recommend It
|
||||
|
||||
### Severe Color Discrepancy
|
||||
|
||||
This is the most serious issue.
|
||||
|
||||
The recorded videos on macOS have significant color discrepancies compared to the actual screen, to the extent that I find it almost unusable. Here's a specific comparison:
|
||||
|
||||

|
||||
|
||||
After discovering this issue, I contacted their team:
|
||||
|
||||
On May 27th, I reported the issue for the first time. They responded that macOS 12.3 and below didn't have this problem, but versions above 12.3 did, and they were looking for a solution.
|
||||
|
||||

|
||||
|
||||
By June 18th, there was still no reply, so I sent another email asking for progress. They replied:
|
||||
|
||||
1. This is an issue caused by higher versions of macOS (but no other screen recording software has such severe color discrepancies).
|
||||
2. Fixing this specific issue might sacrifice other color gamuts in the software.
|
||||
3. The current software configuration provides the best solution for balancing various colors (meaning this issue will not be resolved).
|
||||
|
||||

|
||||
|
||||
### Very Slow Export Speed
|
||||
|
||||
The slowness is quite noticeable. My configuration is a Mac Mini M2 Pro, and whether adding effects to the recorded video or exporting it directly without any changes, the speed is very slow.
|
||||
|
||||
### Sound Card Configuration Conflicts and Lack of Single Application Recording
|
||||
|
||||
Focusee's sound card settings conflict with other virtual sound cards on my system, possibly causing the sound output to be forcibly switched to speakers, and I can't switch back to headphones.
|
||||
|
||||
Issue troubleshooting and solutions: [[Possible Causes and Solutions for Focusee Switching System Audio to Speaker Playback forcibly]]
|
||||
|
||||
[Possible Causes and Solutions for Focusee Switching System Audio to Speaker Playback forcibly](https://www.kazoottt.top/article/possible-causes-and-solutions-for-focusee-switching-system-audio-to-speaker-playback-forcibly)
|
||||
|
||||
Moreover, it doesn't support single application sound recording. Competing products like Screen Studio (paid), QuickRecorder (open-source and free), and OBS all support single application sound recording.
|
||||
|
||||
## Refund Experience
|
||||
|
||||
Since they informed me that the color discrepancy issue would not be resolved, and this was a crucial functional defect for me, I decided to request a refund.
|
||||
|
||||
I purchased Focusee from [数码荔枝 x 软件商店 - 专注于分享最新鲜优秀的正版软件](https://lizhi.shop/) Taobao store. After contacting customer service to ask if I could get a refund, they processed it quickly and agreed to it without any issues. This was quite a pleasant surprise. I will consider Litchi Digital for similar purchases in the future.
|
@ -1,32 +0,0 @@
|
||||
---
|
||||
title: Telegram bot推荐 VidDlPBot
|
||||
date: 2024-06-26T00:00:00.000Z
|
||||
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
|
||||
---
|
||||
|
||||
# Telegram Bot推荐 VidDlPBot
|
||||
|
||||

|
||||
|
||||
目前已支持Twitter、TikTok、YouTube、Instagram
|
||||
|
||||
添加bot之后,直接输入要下载的链接给bot,它就会返回下载好的视频给你了。超级方便。gemoo
|
||||
|
||||
教学视频:
|
||||
|
||||
[如何快速下载视频(手机端同理)\[telegram bot推荐#1\]\_哔哩哔哩\_bilibili](https://www.bilibili.com/video/BV1dGgkecEr7/)
|
@ -1,23 +0,0 @@
|
||||
---
|
||||
title: shot.so
|
||||
date: 2023-09-17T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- 软件推荐
|
||||
- 图片处理
|
||||
- 设计
|
||||
- 图片美化工具
|
||||
finished: true
|
||||
published: true
|
||||
slug: shotso-image-beautification-tool
|
||||
description: >-
|
||||
shot.so是一个图片美化工具,主要用于快速美化截图。它支持设备模拟,允许用户修改阴影、边框、比例等属性。该工具内置了大量免费模板,方便用户快速创建精美的图片效果。
|
||||
rinId: 62
|
||||
---
|
||||
|
||||
# shot.so - 图片美化工具
|
||||
|
||||
<https://shots.so/>
|
||||
|
||||
可快速美化图片(主要是截图),支持设备 mock,支持修改 shadow,border,scale 等。内置模板很多,且均免费。
|
||||
![[Shots - Create Amazing Mockups.png]]![[954shots_so.png]]
|
1
src/content/post/项目管理/已结项/隐藏你的twitter信息.md → src/content/post/项目/00 隐藏你的twitter信息.md
Executable file → Normal file
1
src/content/post/项目管理/已结项/隐藏你的twitter信息.md → src/content/post/项目/00 隐藏你的twitter信息.md
Executable file → Normal file
@ -14,6 +14,7 @@ description: >-
|
||||
为了在公共场合保护个人隐私,防止他人查看自己的Twitter账号信息,如ID、昵称和头像,作者开发了一个油猴脚本。该脚本专门用于屏蔽Twitter首页上显示的个人信息。用户可以通过greasyfork安装此脚本,源代码可在GitHub上查看。脚本使用前后对比图展示了隐藏个人信息的效果。
|
||||
finished: true
|
||||
rinId: 125
|
||||
category: 项目
|
||||
---
|
||||
|
||||
# Hide-your-twitter-info
|
@ -16,6 +16,7 @@ description: >-
|
||||
函数则用于从Blob对象下载文件,同样支持自定义文件名。这两个函数均来自 `@kzttools/file-downloader`
|
||||
包,该包的NPM地址和GitHub地址均已提供。项目遵循MIT许可证,作者为kazoottt。
|
||||
rinId: 63
|
||||
category: 项目
|
||||
---
|
||||
|
||||
# File Download
|
@ -13,6 +13,7 @@ description: >-
|
||||
slugs. Check out the live demo at https://slugify.kazoottt.top/. This tool is
|
||||
based on the auto-slugify library available on GitHub.
|
||||
rinId: 65
|
||||
category: 项目
|
||||
---
|
||||
|
||||
# Auto Slugify Webapp
|
@ -9,6 +9,7 @@ finished: true
|
||||
published: true
|
||||
slug: write-an-oil-monkey-script-that-automatically-selects-the-latest-tweets
|
||||
rinId: 64
|
||||
category: 项目
|
||||
---
|
||||
|
||||
# 写一个油猴脚本,自动地选择最新微博
|
@ -1,51 +0,0 @@
|
||||
---
|
||||
title: 关于农业CMS要做的事情
|
||||
date: 2024-02-11T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- CMS
|
||||
- grain
|
||||
finished: true
|
||||
published: true
|
||||
slug: things-to-do-about-agriculture-cms
|
||||
description: >-
|
||||
这个项目是由我的同学吴泓志委托我开发的,主要包括前端和后端两部分。前端代码基于React、Ant
|
||||
Design和Vite,托管在GitHub上,地址为[https://github.com/KazooTTT/grain-database-webapp](https://github.com/KazooTTT/grain-database-webapp)。后端代码则基于Flask,同样在GitHub上,地址为[https://github.com/KazooTTT/grain_database_backend](https://github.com/KazooTTT/grain_database_backend)。项目涉及的农业CMS功能包括模板修改和多项列表页及详情页的开发任务,如级联选择、多选功能、数据下载支持以及属性统计和图表展示等。
|
||||
rinId: 123
|
||||
---
|
||||
|
||||
这个项目是我的同学吴泓志委托我做的
|
||||
|
||||
# The Source Code
|
||||
|
||||
[frontend source code](https://github.com/KazooTTT/grain-database-webapp)
|
||||
|
||||
based on react + antd + vite
|
||||
|
||||
[backend source code](https://github.com/KazooTTT/grain_database_backend)
|
||||
|
||||
based on flask
|
||||
|
||||
# 关于农业CMS要做的事情
|
||||
|
||||
## 2024-04-08 上传模板修改
|
||||
|
||||
## 2024-02-11
|
||||
|
||||
- [x] 列表页 把Material和Variety的级联选择给做好
|
||||
- [x] 列表页 Property是多选
|
||||
- [x] 列表页 Year是多选
|
||||
- [x] 列表页 支持下载。参考格式如下: 每一个property都有对应的其他的column。(1)
|
||||
- [x] 详情页 每个属性都需要画一张累计频率图
|
||||
- [x] 详情页 每个属性都需要有统计
|
||||
- [x] 详情页 需要支持下载(2)
|
||||
|
||||
(1)
|
||||
|
||||
![[Pasted image 20240211211126.png]]
|
||||
|
||||
![[Pasted image 20240211212504.png]]
|
||||
|
||||
(2)
|
||||
|
||||
![[Pasted image 20240211211006.png]]
|
@ -1,30 +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
|
||||
---
|
||||
|
||||
# 博客改造日志
|
||||
|
||||
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"`
|
2
src/env.d.ts
vendored
2
src/env.d.ts
vendored
@ -1,2 +1,2 @@
|
||||
/// <reference types="astro/client" />
|
||||
/// <reference path="../.astro/types.d.ts" />
|
||||
/// <reference path="../.astro/types.d.ts" />
|
||||
|
@ -31,7 +31,7 @@ export const menuLinks: Array<{ title: string; path: string }> = [
|
||||
{
|
||||
title: 'Blog',
|
||||
path: '/blog/'
|
||||
},
|
||||
}
|
||||
]
|
||||
|
||||
// https://expressive-code.com/reference/configuration/
|
||||
|
@ -1,5 +1,13 @@
|
||||
export { cn } from './tailwind'
|
||||
export { getAllPosts, sortMDByDate, getUniqueTags, getUniqueTagsWithCount, getAllCategories, getUniqueCategories,getUniqueCategoriesWithCount } from './post'
|
||||
export {
|
||||
getAllPosts,
|
||||
sortMDByDate,
|
||||
getUniqueTags,
|
||||
getUniqueTagsWithCount,
|
||||
getAllCategories,
|
||||
getUniqueCategories,
|
||||
getUniqueCategoriesWithCount
|
||||
} from './post'
|
||||
export { getFormattedDate } from './date'
|
||||
export { generateToc } from './generateToc'
|
||||
export type { TocItem } from './generateToc'
|
||||
|
@ -40,10 +40,9 @@ export function getUniqueTagsWithCount(
|
||||
|
||||
/** Note: This function doesn't filter draft posts, pass it the result of getAllPosts above to do so. */
|
||||
export function getAllCategories(posts: Array<CollectionEntry<'post'>>): string[] {
|
||||
return posts.map(post => post.data.category ?? "未分类")
|
||||
return posts.map((post) => post.data.category ?? '未分类')
|
||||
}
|
||||
|
||||
|
||||
/** Note: This function doesn't filter draft posts, pass it the result of getAllPosts above to do so. */
|
||||
export function getUniqueCategories(posts: Array<CollectionEntry<'post'>>) {
|
||||
return [...new Set(getAllCategories(posts))]
|
||||
@ -62,8 +61,11 @@ export function getUniqueCategoriesWithCount(
|
||||
}
|
||||
|
||||
export function getIdToSlugMap(posts: Array<CollectionEntry<'post'>>) {
|
||||
return posts.reduce((acc, post) => {
|
||||
acc[(post.id.split(".md")[0])] = post.slug
|
||||
return acc
|
||||
}, {} as Record<string, string>)
|
||||
return posts.reduce(
|
||||
(acc, post) => {
|
||||
acc[post.id.split('.md')[0]] = post.slug
|
||||
return acc
|
||||
},
|
||||
{} as Record<string, string>
|
||||
)
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ const config = {
|
||||
},
|
||||
fontFamily: {
|
||||
sans: [...fontFamily.sans],
|
||||
satoshi: ['Satoshi', 'sans'],
|
||||
satoshi: ['Satoshi', 'sans']
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user