181 Commits

Author SHA1 Message Date
87a65c2309 chore(deps-dev): bump tailwindcss from 4.0.7 to 4.1.5
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.0.7 to 4.1.5.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.5/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.1.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-01 03:07:04 +00:00
ff2bb77707 feat: 更新自我介绍页面
- 更改自我介绍内容为 "前端 / 吉他 / 摄影 / 追星"
- 移除旧的介绍文字和外部链接
2025-04-30 12:50:18 +08:00
f0752c8a1a feat: 添加Umami分析
- 集成Umami进行网站分析
- 添加Umami跟踪脚本
2025-04-30 12:37:07 +08:00
f05b886396 Update docs and sort content 2025-04-29 07:00:53 +00:00
48f3227688 Update docs and sort content 2025-04-29 06:54:11 +00:00
77ae882b43 Update docs and sort content 2025-04-29 06:53:56 +00:00
9c0973638a Update docs and sort content 2025-04-29 06:53:35 +00:00
a1275593b9 Update docs and sort content 2025-04-29 06:48:38 +00:00
262b6ed3ab Update docs and sort content 2025-04-29 06:39:39 +00:00
8ba6f6e413 Update docs and sort content 2025-04-28 16:30:58 +00:00
d652a45c13 Update docs and sort content 2025-04-28 16:25:32 +00:00
c15c556c06 Update docs and sort content 2025-04-24 03:51:25 +00:00
b63c52df9e Update docs and sort content 2025-04-21 14:52:49 +00:00
ec402ffbfe feat: 显示标签和分类的数量 2025-04-15 17:26:00 +08:00
a1fc14d838 feat: 修改分页大小以匹配全局配置 2025-04-15 16:46:46 +08:00
ece753d46b Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-04-15 16:43:48 +08:00
e271a2efd9 chore: 修改每页最大文章数为100 2025-04-15 16:43:46 +08:00
bd2f5178ce Update docs and sort content 2025-04-10 15:25:09 +00:00
a4d4ad6b93 docs: update self-intro content for clarity and context 2025-04-10 18:18:44 +08:00
c834969703 Update docs and sort content 2025-04-09 04:17:02 +00:00
97ce476651 Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-04-09 12:12:59 +08:00
ea0268259d docs: remove notes 2025-04-09 12:12:48 +08:00
f343d4d18c Update docs and sort content 2025-04-09 04:03:54 +00:00
37d80c7d79 Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-04-07 13:12:56 +08:00
0a72b399ce feat(social-list): 更新社交链接列表
- 移除Bilibili链接
- 更新YouTube链接
- 添加RSS链接

此次修改更新了社交链接列表,移除了不再使用的Bilibili链接,更新了YouTube链接,并添加了RSS链接。
2025-04-07 13:12:54 +08:00
ebe5cc59a5 Update docs and sort content 2025-04-05 16:53:32 +00:00
1f48dedb16 feat: 首页增加查看更多文章的链接
- 在首页的文章列表下方添加了一个“查看更多 →”的链接,指向 /posts/ 页面,方便用户浏览所有文章。
2025-04-02 12:40:09 +08:00
1a49d28395 docs: 更新自我介绍
- 简化自我介绍,只保留最基本的信息
2025-04-02 11:55:00 +08:00
827e6eeadf fix(date): replace Beijing time conversion with GMT conversion 2025-04-01 23:21:59 +08:00
f816128ccc Update docs and sort content 2025-04-01 15:06:36 +00:00
054047e2b4 Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-04-01 22:31:38 +08:00
baee12dd9f style: 修改标题和样式
- 修改网站标题为 "KazooTTT 博客"
- 修改头部导航栏样式,使页面更加美观
2025-04-01 22:31:36 +08:00
10cc40f869 Update docs and sort content 2025-04-01 14:24:23 +00:00
6aed3ff17c feat(rss): RSS 时间转换为北京时间
- 将 RSS 源中的时间转换为北京时间,保证时区正确。
- 使用 `convertToBeijingTime` 函数进行转换。
2025-04-01 22:22:39 +08:00
3a4364976c Update docs and sort content 2025-04-01 13:54:08 +00:00
7463daefe7 Update docs and sort content 2025-04-01 13:46:21 +00:00
fa9ab1a4bc chore: 移除首页的笔记模块
- 移除首页的笔记模块,因为笔记功能暂时不使用
- 修改了README中的链接格式,使用plaintext
- 修改了menuLinks,注释掉了notes
2025-04-01 17:09:42 +08:00
75da123e09 chore: no pnpm lock 2025-03-28 21:17:46 +08:00
c03e9c6658 feat: 首页增加关于我的信息,更新依赖
- 首页增加个人简介和wakatime代码时间
- 更新pnpm版本
- 移除about页面,精简导航栏
- 增加最近更新组件,在归档页展示
- 移除notes的index
2025-03-28 21:13:04 +08:00
b5dd9d1f84 Update docs and sort content 2025-03-27 06:17:24 +00:00
ee9a8e4b0a Update docs and sort content 2025-03-27 06:01:12 +00:00
4c96c80101 Update README.md 2025-03-25 18:02:26 +08:00
fa09ed5bc1 Updated with the latest blog posts 2025-03-24 16:04:46 +00:00
07d4fcbc19 Update docs and sort content 2025-03-24 16:01:14 +00:00
a563602baf Updated with the latest blog posts 2025-03-24 15:04:26 +00:00
a7f416df4f docs: 添加个人歌词本链接到自我介绍页 2025-03-24 22:54:18 +08:00
6dfdcc2234 Update docs and sort content 2025-03-24 14:31:49 +00:00
c3ff39ab6e Update docs and sort content 2025-03-24 13:30:59 +00:00
e4d7129465 Update docs and sort content 2025-03-24 13:14:37 +00:00
c8c0250793 Updated with the latest blog posts 2025-03-24 13:10:24 +00:00
73d962248a Update docs and sort content 2025-03-24 12:44:10 +00:00
0149481062 feat: 添加自我介绍组件并将其集成到主页和关于页面 2025-03-24 18:41:57 +08:00
f3547b2e51 Update docs and sort content 2025-03-20 10:18:04 +00:00
ed3119e37d Updated with the latest blog posts 2025-03-20 10:04:44 +00:00
723151fad0 Update docs and sort content 2025-03-20 09:20:37 +00:00
befe3b6f11 Updated with the latest blog posts 2025-03-20 09:04:15 +00:00
433d2f1152 Update docs and sort content 2025-03-20 08:57:34 +00:00
207d923ee7 style: 优化文章图片加载样式 2025-03-20 14:13:16 +08:00
535082b945 Updated with the latest blog posts 2025-03-20 06:05:34 +00:00
cc89da80d8 Update docs and sort content 2025-03-20 05:56:54 +00:00
0c8cae5bea Update docs and sort content 2025-03-20 05:37:01 +00:00
f8e73888d1 Updated with the latest blog posts 2025-03-15 23:03:39 +00:00
53487b36e7 Updated with the latest blog posts 2025-03-15 22:03:42 +00:00
6a3b085635 Updated with the latest blog posts 2025-03-15 21:03:38 +00:00
85ac5bcda1 Updated with the latest blog posts 2025-03-15 20:03:55 +00:00
1b16e54e09 Updated with the latest blog posts 2025-03-15 19:03:28 +00:00
4705878c1d Updated with the latest blog posts 2025-03-15 18:04:36 +00:00
e31323397b Updated with the latest blog posts 2025-03-15 17:03:33 +00:00
b5502d4cbe Updated with the latest blog posts 2025-03-15 16:03:55 +00:00
09b8958141 Update docs and sort content 2025-03-15 15:52:35 +00:00
ac1173786f Update docs and sort content 2025-03-15 15:49:05 +00:00
55040baff5 Updated with the latest blog posts 2025-03-07 02:28:28 +00:00
b2b1ba6dcd Update docs and sort content 2025-03-07 02:21:53 +00:00
66ec490344 Updated with the latest blog posts 2025-03-06 08:05:05 +00:00
39652a9e90 Update docs and sort content 2025-03-06 07:27:17 +00:00
4feb5e95af fix: 修复归档页面链接生成错误
-   修复归档页面中文章链接生成错误的问题
-   根据文章类型(post或note)动态生成链接,将post指向/posts/,note指向/notes/
2025-03-06 15:18:16 +08:00
a9879a68b1 Update docs and sort content 2025-03-06 07:11:30 +00:00
8e7273da0c Updated with the latest blog posts 2025-03-05 10:04:10 +00:00
807cf650f8 Updated with the latest blog posts 2025-03-05 09:04:09 +00:00
b7bf1eab35 style(footer): 调整页脚链接样式以支持折行
- 修改页脚链接的 flex 布局,从 `gap-x-2 sm:gap-x-0` 改为 `flex-wrap gap-x-2 sm:gap-x-0`,使其支持折行。
- 调整链接的内边距,在小屏幕上使用 `px-2 py-2`,在大屏幕上使用 `sm:px-4 sm:py-0`,以优化在小屏幕上的显示效果。
2025-03-05 16:36:49 +08:00
b931b14013 fix(notes): 移除多余的预览链接
- 移除 `/notes/[...page].astro` 中多余的预览链接。
2025-03-05 16:16:30 +08:00
e123d5928a Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-03-05 16:14:59 +08:00
e6a88b73af feat(blog): 重构文章和笔记展示,优化分类和标签 2025-03-05 16:14:05 +08:00
c36acc92c6 Updated with the latest blog posts 2025-03-05 08:05:01 +00:00
79e12689c9 Updated with the latest blog posts 2025-03-05 07:04:08 +00:00
013ede32a4 Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-03-05 14:26:11 +08:00
ee3068bc18 fix: 移动 ads.txt 文件 2025-03-05 14:26:06 +08:00
99b2d194bb Updated with the latest blog posts 2025-03-04 12:06:14 +00:00
f37e2a10bb Update docs and sort content 2025-03-04 11:07:00 +00:00
ca268a37dc Update docs and sort content 2025-03-04 07:57:37 +00:00
1a40d05221 Updated with the latest blog posts 2025-03-04 07:04:09 +00:00
f5085a2490 Updated with the latest blog posts 2025-03-04 07:04:06 +00:00
0fc8c6cb80 feat(content): 支持内容集合中可选的日期字段 2025-03-04 14:08:17 +08:00
5a7c9eced0 Updated with the latest blog posts 2025-03-04 06:05:10 +00:00
45bbf23dbc Update docs and sort content 2025-03-04 05:52:40 +00:00
66cbee31df Updated with the latest blog posts 2025-03-03 09:04:49 +00:00
ae886f5596 Updated with the latest blog posts 2025-03-03 08:05:41 +00:00
fcf0f24937 Updated with the latest blog posts 2025-03-03 07:04:17 +00:00
10abfc34a7 Update docs and sort content 2025-03-03 06:20:42 +00:00
c5eca7b064 Update docs and sort content 2025-03-03 06:12:56 +00:00
6b7e3f1b70 Update docs and sort content 2025-03-03 06:00:44 +00:00
c12699b65c Update docs and sort content 2025-03-03 05:48:17 +00:00
937eee5627 Update docs and sort content 2025-03-03 03:51:30 +00:00
6dee4650b9 Updated with the latest blog posts 2025-02-28 02:27:51 +00:00
0e9ad45b65 Update main.yml 2025-02-28 10:20:08 +08:00
fd1bbcbf21 Updated with the latest blog posts 2025-02-27 07:03:59 +00:00
47473a34f9 Update docs and sort content 2025-02-27 06:27:49 +00:00
fdd2768e0c Update docs and sort content 2025-02-25 03:56:48 +00:00
57ee25f4f3 fix: add number type parse 2025-02-25 11:55:07 +08:00
58f4e095b5 Update docs and sort content 2025-02-25 03:25:15 +00:00
64383959c0 Update docs and sort content 2025-02-24 15:37:36 +00:00
bb1b0eaa5b Updated with the latest blog posts 2025-02-24 08:05:39 +00:00
2bfda8024b Updated with the latest blog posts 2025-02-24 07:04:21 +00:00
0cf1cbb56a Update docs and sort content 2025-02-24 06:33:22 +00:00
e2e98f9cc7 feat: update rss config 2025-02-24 14:19:48 +08:00
c037d61e49 Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-02-24 14:05:41 +08:00
ab931dd953 fix: update feed id for notes 2025-02-24 14:05:37 +08:00
0eba98f263 Updated with the latest blog posts 2025-02-24 06:05:32 +00:00
50d4e72216 fix: 修复未分类的筛选 2025-02-24 13:38:26 +08:00
b3004795f0 Updated with the latest blog posts 2025-02-23 19:03:14 +00:00
92aa02ed46 Updated with the latest blog posts 2025-02-23 18:04:30 +00:00
e7d79d1733 Updated with the latest blog posts 2025-02-23 17:03:34 +00:00
f5a8cd1a06 Update docs and sort content 2025-02-23 16:16:20 +00:00
e5a5192922 Update docs and sort content 2025-02-23 16:12:23 +00:00
7037b5a0fb Update docs and sort content 2025-02-23 16:07:15 +00:00
ab9ca1ba14 Update docs and sort content 2025-02-22 03:48:20 +00:00
57edf2f4e6 Updated with the latest blog posts 2025-02-21 15:03:58 +00:00
b187b8c9ca Update docs and sort content 2025-02-21 14:24:53 +00:00
0e5bf1e01e Updated with the latest blog posts 2025-02-21 14:03:24 +00:00
c57de061be Update docs and sort content 2025-02-21 14:02:31 +00:00
56d4cc877e Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-02-21 21:58:29 +08:00
eeed2a201b feat: update date sorting function in notes pages 2025-02-21 21:58:26 +08:00
cf0ed3decd Updated with the latest blog posts 2025-02-21 13:07:45 +00:00
3e4539ddbe Merge branch 'main' of https://github.com/KazooTTT/kazoottt-blog-v2 2025-02-21 20:53:38 +08:00
d3f479d891 feat: change the sort priority 2025-02-21 20:53:36 +08:00
27d1849336 Update docs and sort content 2025-02-21 12:49:28 +00:00
8390d757ea Update docs and sort content 2025-02-21 12:43:48 +00:00
a25ea16c36 Update docs and sort content 2025-02-21 12:39:07 +00:00
febcdb06a4 fix: cf 直接重定向,移除astro配置 2025-02-21 20:27:36 +08:00
a9928d78c8 fix: error directory name 2025-02-21 19:31:59 +08:00
d70d2af9d1 Update docs and sort content 2025-02-21 11:19:40 +00:00
4288d472c7 feat: 优化重定向的写法 2025-02-21 15:44:50 +08:00
2fd907f3e8 Update docs and sort content 2025-02-21 03:39:38 +00:00
95fed683c8 Update docs and sort content 2025-02-21 03:23:48 +00:00
492e9bac78 Update docs and sort content 2025-02-21 02:54:17 +00:00
4fe221acf1 Update docs and sort content 2025-02-19 17:59:49 +00:00
1c36e3f5ec Update docs and sort content 2025-02-19 17:36:53 +00:00
a2bef5b7ad feat: enable notes rss 2025-02-20 01:32:27 +08:00
dd87317456 Update docs and sort content 2025-02-19 17:30:11 +00:00
795af34d25 Updated with the latest blog posts 2025-02-19 16:04:21 +00:00
857eb8b1f8 Updated with the latest blog posts 2025-02-19 15:04:08 +00:00
ccf89cfb95 Updated with the latest blog posts 2025-02-19 14:04:00 +00:00
033aff4018 Update docs and sort content 2025-02-19 13:20:27 +00:00
3a1aebd718 Update docs and sort content 2025-02-19 13:18:28 +00:00
4bf67ab53a Update docs and sort content 2025-02-19 13:05:22 +00:00
f2cf86e9d0 Update docs and sort content 2025-02-19 11:06:41 +00:00
7bbe51e4bd chore: Add kazoottt.top domain to image configuration 2025-02-19 18:32:21 +08:00
a90b31a668 Update docs and sort content 2025-02-19 10:23:27 +00:00
d3240e607c fix: add the site path for rss 2025-02-19 18:22:10 +08:00
f5655ef972 Updated with the latest blog posts 2025-02-19 05:03:53 +00:00
80c2ee94a9 Updated with the latest blog posts 2025-02-19 04:04:39 +00:00
66478bb19a Update docs and sort content 2025-02-19 03:50:29 +00:00
c20c2a39b5 Updated with the latest blog posts 2025-02-16 19:04:16 +00:00
d2f9072d90 Updated with the latest blog posts 2025-02-16 18:04:05 +00:00
5d2123077d Updated with the latest blog posts 2025-02-16 17:03:52 +00:00
71a46f6eee Updated with the latest blog posts 2025-02-16 16:03:46 +00:00
de56f79e7d Updated with the latest blog posts 2025-02-16 15:03:27 +00:00
8e20625972 Updated with the latest blog posts 2025-02-16 14:04:16 +00:00
d42c581794 Update docs and sort content 2025-02-16 13:49:26 +00:00
35853958d2 Update docs and sort content 2025-02-16 12:11:53 +00:00
fa9476ca80 Updated with the latest blog posts 2025-02-16 12:07:00 +00:00
6bea8d12e6 feat: add quote type 2025-02-16 19:48:54 +08:00
67698eed22 Update docs and sort content 2025-02-16 11:38:49 +00:00
6639493f18 fix: show the title only if the list has items 2025-02-14 19:01:57 +08:00
3af73ab320 feat: 新增置顶文章 2025-02-14 18:59:28 +08:00
c7b012a891 Update docs and sort content 2025-02-14 10:53:40 +00:00
7912a06e82 feat: change the sort of the components 2025-02-14 18:45:08 +08:00
e334636663 Update docs and sort content 2025-02-14 08:33:30 +00:00
723b29e9d5 Updated with the latest blog posts 2025-02-14 08:04:49 +00:00
527e98e0d1 fix: Correct summary card display condition in Note component 2025-02-14 15:44:38 +08:00
cd6388c0d6 feat: Add summary card to note components 2025-02-14 15:41:27 +08:00
255 changed files with 4415 additions and 15910 deletions

View File

@ -14,7 +14,7 @@ jobs:
- name: Pull in dev.to posts
uses: gautamkrishnar/blog-post-workflow@v1
with:
template: $newline - [$date 【$categories】 $title]($url)
template: $newline - [$date $title]($url)
date_format: "yyyy-mm-dd"
feed_list: "https://blog.kazoottt.top/rss.xml"
max_post_count: 25

View File

@ -1,52 +1,13 @@
# KazooTTT | 声控烤箱 博客
# KazooTTT 博客
## [Blog](https://blog.kazoottt.top/posts/)
<!-- BLOG-POST-LIST:START -->
- [2025-02-09 【周报】 2025-W06](https://blog.kazoottt.top/posts/2025-W06/)
- [2025-02-09 【前端】 不引入astro wiki plugin实现链接跳转的思路](https://blog.kazoottt.top/posts/redirect-links-without-astro-wiki-plugin/)
- [2025-02-06 【软件】 Obsidian Web Clipper 离线阅读同人作品](https://blog.kazoottt.top/posts/obsidian-web-clipper-offline-reading-fanfics/)
- [2025-02-01 【软件】 封面生成器推荐](https://blog.kazoottt.top/posts/cover-generator/)
- [2025-01-30 【年报】 Y5-2024年度总结](https://blog.kazoottt.top/posts/2024-annual-summary/)
- [2025-01-14 【frontend】 how to generate the path like router config in vite + react + react-router project](https://blog.kazoottt.top/posts/how-to-generate-the-path-like-router-config-in-vite-react-react-router-project/)
- [2025-01-12 【随笔】 “原来亲人在侧,是我最深重的感谢”](https://blog.kazoottt.top/posts/plain-and-simple-is-true/)
- [2025-01-07 【随笔】 ollama + excel处理器开发总结](https://blog.kazoottt.top/posts/ollama-excel-processor-development-summary/)
- [2025-01-06 【项目】 MUV家元旦24H限定食堂 - 汇总网站](https://blog.kazoottt.top/posts/milklovemuv/)
- [2024-12-19 【推荐】 值得一看的博客](https://blog.kazoottt.top/posts/blogs-worth-reading/)
- [2024-12-18 【】 与hanser有关的github仓库](https://blog.kazoottt.top/posts/hanser-repository/)
- [2024-12-17 【】 Share My Incorrect Usage Cases of Zustand](https://blog.kazoottt.top/posts/share-my-incorrect-usage-case-of-zustand-en/)
- [2024-12-17 【前端】 分享一下我的zustand错误使用案例](https://blog.kazoottt.top/posts/zustand-use-record/)
- [2024-12-11 【】 raycast + imessage 2famessauto的半平替](https://blog.kazoottt.top/posts/raycast-imessage-2fa/)
- [2024-11-29 【】 使用github action定时同步obsidian内容到博客仓库](https://blog.kazoottt.top/posts/synchronize-profiles-to-remote-and-local-on-a-regular-basis/)
- [2024-11-23 【软件】 个人工具与设备清单](https://blog.kazoottt.top/posts/personal-tools-and-equipment-inventory-202502/)
- [2024-11-12 【旅行】 五一 上海-重庆-成都流水账](https://blog.kazoottt.top/posts/may-1st-shanghai-chongqing-chengdu-flow-account/)
- [2024-09-02 【旅行】 2024 永不完结的冒险 武汉线下vlog](https://blog.kazoottt.top/posts/yukari-2024-live/)
- [2024-07-30 【项目】 微信读书网页版复制快捷键](https://blog.kazoottt.top/posts/wechat-reading-web-version-copy-shortcut/)
- [2024-07-17 【旅行】 BW记录-个人向流水账版](https://blog.kazoottt.top/posts/bw-record-personal-notes/)
- [2024-07-11 【周报】 2024-W03.md](https://blog.kazoottt.top/posts/2024-W03/)
- [2024-07-11 【周报】 2024-W03-编程篇](https://blog.kazoottt.top/posts/2024-W03-programming/)
- [2024-07-11 【周报】 2023-W48 转岗了](https://blog.kazoottt.top/posts/2023-W48/)
- [2024-07-08 【旅行】 端午去广州玩了](https://blog.kazoottt.top/posts/duanwu-guangzhou-trip/)
- [2024-07-01 【软件】 如何自动同步某个文件夹的图片到某个相册中](https://blog.kazoottt.top/posts/auto-sync-folder-to-album/)<!-- BLOG-POST-LIST:END -->
## 关于我
## [Memos](https://blog.kazoottt.top/notes/)
<!-- MEMO-POST-LIST:START -->
- [2025-02-11 碎片-2025-02-11 12时32分](https://blog.kazoottt.top/notes/fragmented-notes-2025-02-11-12-32-42/)
- [2025-02-08 如何解决 Nginx 启动时未联网无法访问DNS而挂掉的问题](https://blog.kazoottt.top/notes/nginx-startup-fix-configure-local-hosts-file/)
- [2025-02-06 小红书长文切图笔记?其实 craft 就可以实现。](https://blog.kazoottt.top/notes/use-craft-to-cut-the-long-text-note-of-xiaohongshu/)
- [2025-02-06 试试action5 pro推流到本地rtmp和有线连接的效果](https://blog.kazoottt.top/notes/action5-pro-obs-rtmp/)
- [2025-02-05 askfm的关停](https://blog.kazoottt.top/notes/askfm-shutdown/)
- [2025-02-05 使用 1password 的 secure notes 存储提示词](https://blog.kazoottt.top/notes/use-1password-secure-notes-to-store-prompt-templates/)
- [2025-02-03 记录一次滴滴打车维权](https://blog.kazoottt.top/notes/record-a-ride-sharing-complaint/)
- [2025-01-31 Blender on macOS - Steam Version Limitations for Apple Silicon Devices](https://blog.kazoottt.top/notes/blender-macos-steam-version-limitations/)
- [2025-01-31 How to Split Editor Windows in Blender](https://blog.kazoottt.top/notes/split-window-in-blender/)
- [2025-01-20 How to Separate Objects in Blender](https://blog.kazoottt.top/notes/how-to-separate-object-in-blender/)
- [2025-01-20 win11如何下载chatgpt](https://blog.kazoottt.top/notes/win11chatgpt/)
- [2025-01-15 how to make a hollow cylinder in blender](https://blog.kazoottt.top/notes/how-to-make-a-hollow-cylinder-in-blender/)
- [2025-01-07 在浏览器中 opengl 的配置与检测](https://blog.kazoottt.top/notes/how-to-check-opengl-configuration-and-detection-in-browser/)
- [2025-01-06 2025-01-06 星期一](https://blog.kazoottt.top/notes/diary-2025-01-06/)
- [2025-01-06 MUV家元旦24H限定食堂 - 汇总网站](https://blog.kazoottt.top/notes/milklovemuv/)
- [2025-01-05 whisper ui 下载模型 镜像设置](https://blog.kazoottt.top/notes/whisper-ui-download-model-mirror-setting/)
- [2024-12-23 2024-12-23 星期一 学习 unity day01](https://blog.kazoottt.top/notes/diary-2024-12-23/)
- [2024-12-19 2024-12-19 星期四](https://blog.kazoottt.top/notes/diary-2024-12-19/)
- [2024-12-19 使用cloudflare部署remix项目](https://blog.kazoottt.top/notes/deploy-remix-app-by-cloudflare/)
- [2024-12-19 合并多个PDF](https://blog.kazoottt.top/notes/merge-pdfs/)<!-- MEMO-POST-LIST:END -->
无论是博客还是笔记,最重要的服务对象是我自己。
[平台合集](https://bento.me/kazoottt)
[个人博客Blog](https://blog.kazoottt.top/)
[个人笔记 Notes](https://notes.kazoottt.top/)
[GitHub](https://github.com/KazooTTT)

View File

@ -26,7 +26,7 @@ import rehypeUnwrapImages from "rehype-unwrap-images";
export default defineConfig({
site: siteConfig.url,
image: {
domains: ["webmention.io"],
domains: ["webmention.io", "kazoottt.top"],
service: passthroughImageService(),
},
integrations: [

View File

@ -21,7 +21,7 @@
"@astrojs/rss": "4.0.11",
"@astrojs/sitemap": "3.2.1",
"@giscus/react": "^3.1.0",
"@tailwindcss/vite": "4.0.3",
"@tailwindcss/vite": "4.0.7",
"astro": "5.2.5",
"astro-expressive-code": "^0.40.1",
"astro-icon": "^1.1.5",
@ -66,7 +66,8 @@
"prettier-plugin-astro": "0.14.1",
"prettier-plugin-tailwindcss": "^0.6.11",
"reading-time": "^1.5.0",
"tailwindcss": "4.0.4",
"tailwindcss": "4.1.5",
"typescript": "^5.7.3"
}
},
"packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6"
}

7734
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -61,19 +61,16 @@ const { className = "", dataPagefindBody = true } = Astro.props;
/* 修改图片相关样式 */
:global(article img) {
opacity: 0;
position: relative;
background-color: #f0f0f0;
transition: all 0.5s ease-in-out;
}
:global(article img.loading) {
opacity: 1;
filter: blur(10px);
}
:global(article img.loaded) {
opacity: 1;
filter: blur(0);
}
</style>

View File

@ -121,6 +121,11 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url
})(window, document, "clarity", "script", "kvbyuhu6d2");
</script>
<script
defer
src="https://cloud.umami.is/script.js"
data-website-id="247d7726-70c1-46fd-9453-fbe95630c3d6"></script>
<meta content={Astro.generator} name="generator" />
<style is:global>

View File

@ -0,0 +1,30 @@
---
import { getAllCollectionPosts } from "@/data/post";
import { MAX_LATEST_POSTS } from "@/utils/constant";
import { getLatestUpdatedPost } from "@/utils/date";
const allPosts = await getAllCollectionPosts();
const latestUpdatedPost = allPosts.sort(getLatestUpdatedPost).slice(0, MAX_LATEST_POSTS);
---
{
(
<div>
<h2 class="title mb-4 flex items-center gap-2 text-lg">
<a class="">最近更新</a>
</h2>
<ul class="flex flex-wrap gap-2">
{latestUpdatedPost.map((post) => (
<li>
<a
href={`${post.collection === "post" ? "/posts/" : "/notes/"}${post.id}/`}
class="hover:text-link"
>
<span>{post.data.date_modified.toLocaleDateString()}</span>
{post.data.title}
</a>
</li>
))}
</ul>
</div>
)
}

View File

@ -1,7 +1,7 @@
---
import { Icon } from "astro-icon/components";
/**
/**
Uses https://www.astroicon.dev/getting-started/
Find icons via guide: https://www.astroicon.dev/guides/customization/#open-source-icon-sets
Only installed pack is: @iconify-json/mdi
@ -27,6 +27,11 @@ const socialLinks: {
link: "https://x.com/kazoottt",
name: "mdi:twitter",
},
{
friendlyName: "YouTube",
link: "https://www.youtube.com/@kazoottt255",
name: "mdi:youtube",
},
{
friendlyName: "Photo",
link: "https://unsplash.com/@kazoottt",
@ -35,7 +40,12 @@ const socialLinks: {
{
friendlyName: "汇总",
link: "https://bento.me/KazooTTT",
name: "mdi:link",
name: "mdi:open-in-new",
},
{
friendlyName: "rss",
link: "https://blog.kazoottt.top/rss.xml",
name: "mdi:rss-box",
},
];
---

View File

@ -1,18 +1,18 @@
---
import type { CollectionEntry } from "astro:content";
import FormattedDate from "@/components/FormattedDate.astro";
import Card from "../componentsBefore/Card.astro";
import { Icon } from "astro-icon/components";
import Label from "../componentsBefore/Label.astro";
import type { PostItem } from "@/types";
interface Props {
content: CollectionEntry<"post">;
content: PostItem;
readingTime: string;
ogImage: string;
}
const {
content: { data },
content: { data, dateToCmp },
readingTime,
ogImage,
} = Astro.props;
@ -27,13 +27,7 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url
{
socialImageURL && (
<div class="mb-6 aspect-video">
<img
alt={socialImageURL}
class="rounded-lg object-cover"
fetchpriority="high"
loading="eager"
src={socialImageURL}
/>
<img alt={socialImageURL} class="rounded-lg object-cover" src={socialImageURL} />
</div>
)
}
@ -54,7 +48,7 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url
</h1>
<div class="flex flex-wrap items-center gap-x-3 gap-y-2">
<p class="font-semibold">
<FormattedDate date={data.date} dateTimeOptions={dateTimeOptions} /> /{" "}
<FormattedDate date={dateToCmp} dateTimeOptions={dateTimeOptions} /> /{" "}
{readingTime}
</p>
{

View File

@ -1,10 +1,10 @@
---
import type { CollectionEntry } from "astro:content";
import FormattedDate from "@/components/FormattedDate.astro";
import type { HTMLTag, Polymorphic } from "astro/types";
import type { AllItem } from "@/types";
type Props<Tag extends HTMLTag> = Polymorphic<{ as: Tag }> & {
post: CollectionEntry<"post">;
post: AllItem;
withDesc?: boolean;
};
@ -17,7 +17,12 @@ const { as: Tag = "div", post, withDesc = false } = Astro.props;
/>
<Tag>
{post.data.draft && <span class="text-red-500">(Draft) </span>}
<a class="cactus-link" data-astro-prefetch href={`/posts/${post.id}/`}>
<a
class="hover:text-link"
data-astro-prefetch
href={`${post.collection === "post" ? "/posts/" : "/notes/"}${post.id}/`}
>
{post.data.fixedToTop && <span class="text-accent-2 mr-2">*</span>}
{post.data.title}
</a>
</Tag>

View File

@ -1,111 +1,111 @@
---
import kazootttAvatar from '../../assets/kazoottt-avatar.jpeg'
import { Image } from 'astro:assets'
import kazootttAvatar from "../../assets/kazoottt-avatar.jpeg";
import { Image } from "astro:assets";
---
<header class='fixed left-0 right-0 top-0 z-50 bg-white shadow-sm dark:bg-gray-800'>
<header class="fixed top-0 right-0 left-0 z-50 bg-white shadow-sm dark:bg-gray-800">
<nav
class='mx-auto flex w-full items-center justify-between px-4 py-3 lg:flex lg:w-3/5 lg:w-4/5 lg:items-center'
aria-label='global'
class="mx-auto flex w-full items-center justify-between px-4 py-3 lg:flex lg:w-3/5 lg:w-4/5 lg:items-center"
aria-label="global"
>
<a class='flex items-center' href='/'>
<a class="flex items-center" href="/">
<Image
src={kazootttAvatar}
alt='profile photo'
class='mr-2 h-8 w-auto rounded-full lg:hidden'
loading='eager'
alt="profile photo"
class="mr-2 h-8 w-auto rounded-full lg:hidden"
loading="eager"
/>
<div class='hidden flex-none text-xl font-semibold lg:block' aria-label='Brand'>声控烤箱</div>
<div class="hidden flex-none text-xl font-semibold lg:block" aria-label="Brand">KazooTTT</div>
</a>
<!-- Mobile menu button -->
<button
id='mobileMenuButton'
class='rounded-md p-2 hover:bg-border lg:hidden'
aria-label='Toggle mobile menu'
id="mobileMenuButton"
class="hover:bg-border rounded-md p-2 lg:hidden"
aria-label="Toggle mobile menu"
>
<svg
xmlns='http://www.w3.org/2000/svg'
width='24'
height='24'
viewBox='0 0 24 24'
class='h-6 w-6'
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
class="h-6 w-6"
>
<path fill='currentColor' d='M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z'></path>
<path fill="currentColor" d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path>
</svg>
</button>
<!-- Desktop Navigation -->
<div class='hidden flex-row items-center justify-center gap-x-7 lg:flex'>
<div class='relative'>
<div class="hidden flex-row items-center justify-center gap-x-7 lg:flex">
<div class="relative">
<a
href='/blog'
class={`peer flex items-center text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/blog') ? 'text-green-400' : ''}`}
aria-label='Blog Menu'
href="/blog"
class={`peer flex items-center text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/blog") ? "text-green-400" : ""}`}
aria-label="Blog Menu"
>
Blog
<svg
xmlns='http://www.w3.org/2000/svg'
width='20'
height='20'
viewBox='0 0 24 24'
class='ml-1 transform transition-transform duration-200 peer-hover:rotate-180'
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 24 24"
class="ml-1 transform transition-transform duration-200 peer-hover:rotate-180"
>
<path fill='currentColor' d='m12 15l-5-5h10z'></path>
<path fill="currentColor" d="m12 15l-5-5h10z"></path>
</svg>
</a>
<div
class='invisible absolute left-0 mt-2 w-48 rounded-md bg-white py-2 opacity-0 shadow-lg transition-all duration-200 hover:visible hover:opacity-100 peer-hover:visible peer-hover:opacity-100 dark:bg-gray-800'
class="invisible absolute left-0 mt-2 w-48 rounded-md bg-white py-2 opacity-0 shadow-lg transition-all duration-200 peer-hover:visible peer-hover:opacity-100 hover:visible hover:opacity-100 dark:bg-gray-800"
>
<a
href='/categories'
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith('/categories') ? 'text-green-400' : ''} dark:hover:bg-gray-700`}
aria-label='Categories Page'
href="/categories"
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith("/categories") ? "text-green-400" : ""} dark:hover:bg-gray-700`}
aria-label="Categories Page"
>
Categories
</a>
<a
href='/tags'
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith('/tags') ? 'text-green-400' : ''} dark:hover:bg-gray-700`}
aria-label='Tags Page'
href="/tags"
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith("/tags") ? "text-green-400" : ""} dark:hover:bg-gray-700`}
aria-label="Tags Page"
>
Tags
</a>
<a
href='/diary'
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith('/diary') ? 'text-green-400' : ''} dark:hover:bg-gray-700`}
aria-label='Diary Page'
href="/diary"
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith("/diary") ? "text-green-400" : ""} dark:hover:bg-gray-700`}
aria-label="Diary Page"
>
Diary
</a>
</div>
</div>
<a
href='/tools'
class={`flex-none text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/tools') ? 'text-green-400' : ''}`}
aria-label='Nav Menu Item'
href="/tools"
class={`flex-none text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/tools") ? "text-green-400" : ""}`}
aria-label="Nav Menu Item"
>Tools
</a>
<div class='relative'>
<button class='peer flex items-center text-[1.05rem] font-medium' aria-label='More Menu'>
<div class="relative">
<button class="peer flex items-center text-[1.05rem] font-medium" aria-label="More Menu">
More
<svg
xmlns='http://www.w3.org/2000/svg'
width='20'
height='20'
viewBox='0 0 24 24'
class='ml-1 transform transition-transform duration-200 peer-hover:rotate-180'
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 24 24"
class="ml-1 transform transition-transform duration-200 peer-hover:rotate-180"
>
<path fill='currentColor' d='m12 15l-5-5h10z'></path>
<path fill="currentColor" d="m12 15l-5-5h10z"></path>
</svg>
</button>
<div
class='invisible absolute right-0 mt-2 w-48 rounded-md bg-white py-2 opacity-0 shadow-lg transition-all duration-200 hover:visible hover:opacity-100 peer-hover:visible peer-hover:opacity-100 dark:bg-gray-800'
class="invisible absolute right-0 mt-2 w-48 rounded-md bg-white py-2 opacity-0 shadow-lg transition-all duration-200 peer-hover:visible peer-hover:opacity-100 hover:visible hover:opacity-100 dark:bg-gray-800"
>
<a
href='/friends'
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith('/friends') ? 'text-green-400' : ''} dark:hover:bg-gray-700`}
aria-label='Friends Page'
href="/friends"
class={`block px-6 py-3 text-[1.05rem] font-medium transition-colors hover:bg-gray-100 ${Astro.url.pathname.startsWith("/friends") ? "text-green-400" : ""} dark:hover:bg-gray-700`}
aria-label="Friends Page"
>
Friends
</a>
@ -113,30 +113,30 @@ import { Image } from 'astro:assets'
</div>
<button
id='toggleDarkMode'
class='relative rounded-md border border-border p-1.5 transition-all hover:bg-border'
id="toggleDarkMode"
class="border-border hover:bg-border relative rounded-md border p-1.5 transition-all"
>
<span class='sr-only'>Dark Theme</span>
<span class="sr-only">Dark Theme</span>
<svg
xmlns='http://www.w3.org/2000/svg'
width='32'
height='32'
viewBox='0 0 24 24'
class='h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:hidden dark:-rotate-90 dark:scale-0'
xmlns="http://www.w3.org/2000/svg"
width="32"
height="32"
viewBox="0 0 24 24"
class="h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:hidden dark:scale-0 dark:-rotate-90"
><path
fill='currentColor'
d='M12 15q1.25 0 2.125-.875T15 12q0-1.25-.875-2.125T12 9q-1.25 0-2.125.875T9 12q0 1.25.875 2.125T12 15m0 1q-1.671 0-2.836-1.164T8 12q0-1.671 1.164-2.836T12 8q1.671 0 2.836 1.164T16 12q0 1.671-1.164 2.836T12 16m-7-3.5H1.5v-1H5zm17.5 0H19v-1h3.5zM11.5 5V1.5h1V5zm0 17.5V19h1v3.5zM6.746 7.404l-2.16-2.098l.695-.744l2.111 2.134zM18.72 19.438l-2.117-2.14l.652-.702l2.16 2.098zM16.596 6.746l2.098-2.16l.744.695l-2.134 2.111zM4.562 18.72l2.14-2.117l.663.652l-2.078 2.179zM12 12'
fill="currentColor"
d="M12 15q1.25 0 2.125-.875T15 12q0-1.25-.875-2.125T12 9q-1.25 0-2.125.875T9 12q0 1.25.875 2.125T12 15m0 1q-1.671 0-2.836-1.164T8 12q0-1.671 1.164-2.836T12 8q1.671 0 2.836 1.164T16 12q0 1.671-1.164 2.836T12 16m-7-3.5H1.5v-1H5zm17.5 0H19v-1h3.5zM11.5 5V1.5h1V5zm0 17.5V19h1v3.5zM6.746 7.404l-2.16-2.098l.695-.744l2.111 2.134zM18.72 19.438l-2.117-2.14l.652-.702l2.16 2.098zM16.596 6.746l2.098-2.16l.744.695l-2.134 2.111zM4.562 18.72l2.14-2.117l.663.652l-2.078 2.179zM12 12"
></path></svg
>
<svg
xmlns='http://www.w3.org/2000/svg'
width='32'
height='32'
viewBox='0 0 24 24'
class='hidden h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:block dark:rotate-0 dark:scale-100'
xmlns="http://www.w3.org/2000/svg"
width="32"
height="32"
viewBox="0 0 24 24"
class="hidden h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:block dark:scale-100 dark:rotate-0"
><path
fill='currentColor'
d='M12.058 20q-3.334 0-5.667-2.333Q4.058 15.333 4.058 12q0-3.038 1.98-5.27Q8.02 4.5 10.942 4.097q.081 0 .159.006t.153.017q-.506.706-.801 1.57q-.295.865-.295 1.811q0 2.667 1.866 4.533q1.867 1.867 4.534 1.867q.952 0 1.813-.295q.862-.295 1.548-.801q.012.075.018.153q.005.078.005.158q-.384 2.923-2.615 4.904T12.057 20'
fill="currentColor"
d="M12.058 20q-3.334 0-5.667-2.333Q4.058 15.333 4.058 12q0-3.038 1.98-5.27Q8.02 4.5 10.942 4.097q.081 0 .159.006t.153.017q-.506.706-.801 1.57q-.295.865-.295 1.811q0 2.667 1.866 4.533q1.867 1.867 4.534 1.867q.952 0 1.813-.295q.862-.295 1.548-.801q.012.075.018.153q.005.078.005.158q-.384 2.923-2.615 4.904T12.057 20"
></path></svg
>
</button>
@ -144,71 +144,71 @@ import { Image } from 'astro:assets'
<!-- Mobile Navigation -->
<div
id='mobileMenu'
class='fixed inset-x-0 top-[72px] z-50 hidden max-h-[calc(100vh-72px)] overflow-y-auto rounded-b-lg bg-white shadow-lg dark:bg-gray-800 lg:hidden'
id="mobileMenu"
class="fixed inset-x-0 top-[72px] z-50 hidden max-h-[calc(100vh-72px)] overflow-y-auto rounded-b-lg bg-white shadow-lg lg:hidden dark:bg-gray-800"
>
<div class='space-y-2 px-4 py-2'>
<div class="space-y-2 px-4 py-2">
<a
href='/blog'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/blog') ? 'text-green-400' : ''}`}
href="/blog"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/blog") ? "text-green-400" : ""}`}
>
Blog
</a>
<a
href='/categories'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/categories') ? 'text-green-400' : ''}`}
href="/categories"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/categories") ? "text-green-400" : ""}`}
>
Categories
</a>
<a
href='/tags'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/tags') ? 'text-green-400' : ''}`}
href="/tags"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/tags") ? "text-green-400" : ""}`}
>
Tags
</a>
<a
href='/diary'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/diary') ? 'text-green-400' : ''}`}
href="/diary"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/diary") ? "text-green-400" : ""}`}
>
Diary
</a>
<a
href='/tools'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/tools') ? 'text-green-400' : ''}`}
href="/tools"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/tools") ? "text-green-400" : ""}`}
>
Tools
</a>
<a
href='/friends'
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith('/friends') ? 'text-green-400' : ''}`}
href="/friends"
class={`block py-2 text-[1.05rem] font-medium ${Astro.url.pathname.startsWith("/friends") ? "text-green-400" : ""}`}
>
Friends
</a>
<button
id='mobileToggleDarkMode'
class='mt-2 flex w-full items-center py-2 text-[1.05rem] font-medium'
id="mobileToggleDarkMode"
class="mt-2 flex w-full items-center py-2 text-[1.05rem] font-medium"
>
<span>Theme</span>
<svg
xmlns='http://www.w3.org/2000/svg'
width='32'
height='32'
viewBox='0 0 24 24'
class='ml-2 h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:hidden dark:-rotate-90 dark:scale-0'
xmlns="http://www.w3.org/2000/svg"
width="32"
height="32"
viewBox="0 0 24 24"
class="ml-2 h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:hidden dark:scale-0 dark:-rotate-90"
><path
fill='currentColor'
d='M12 15q1.25 0 2.125-.875T15 12q0-1.25-.875-2.125T12 9q-1.25 0-2.125.875T9 12q0 1.25.875 2.125T12 15m0 1q-1.671 0-2.836-1.164T8 12q0-1.671 1.164-2.836T12 8q1.671 0 2.836 1.164T16 12q0 1.671-1.164 2.836T12 16m-7-3.5H1.5v-1H5zm17.5 0H19v-1h3.5zM11.5 5V1.5h1V5zm0 17.5V19h1v3.5zM6.746 7.404l-2.16-2.098l.695-.744l2.111 2.134zM18.72 19.438l-2.117-2.14l.652-.702l2.16 2.098zM16.596 6.746l2.098-2.16l.744.695l-2.134 2.111zM4.562 18.72l2.14-2.117l.663.652l-2.078 2.179zM12 12'
fill="currentColor"
d="M12 15q1.25 0 2.125-.875T15 12q0-1.25-.875-2.125T12 9q-1.25 0-2.125.875T9 12q0 1.25.875 2.125T12 15m0 1q-1.671 0-2.836-1.164T8 12q0-1.671 1.164-2.836T12 8q1.671 0 2.836 1.164T16 12q0 1.671-1.164 2.836T12 16m-7-3.5H1.5v-1H5zm17.5 0H19v-1h3.5zM11.5 5V1.5h1V5zm0 17.5V19h1v3.5zM6.746 7.404l-2.16-2.098l.695-.744l2.111 2.134zM18.72 19.438l-2.117-2.14l.652-.702l2.16 2.098zM16.596 6.746l2.098-2.16l.744.695l-2.134 2.111zM4.562 18.72l2.14-2.117l.663.652l-2.078 2.179zM12 12"
></path></svg
>
<svg
xmlns='http://www.w3.org/2000/svg'
width='32'
height='32'
viewBox='0 0 24 24'
class='ml-2 hidden h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:block dark:rotate-0 dark:scale-100'
xmlns="http://www.w3.org/2000/svg"
width="32"
height="32"
viewBox="0 0 24 24"
class="ml-2 hidden h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:block dark:scale-100 dark:rotate-0"
><path
fill='currentColor'
d='M12.058 20q-3.334 0-5.667-2.333Q4.058 15.333 4.058 12q0-3.038 1.98-5.27Q8.02 4.5 10.942 4.097q.081 0 .159.006t.153.017q-.506.706-.801 1.57q-.295.865-.295 1.811q0 2.667 1.866 4.533q1.867 1.867 4.534 1.867q.952 0 1.813-.295q.862-.295 1.548-.801q.012.075.018.153q.005.078.005.158q-.384 2.923-2.615 4.904T12.057 20'
fill="currentColor"
d="M12.058 20q-3.334 0-5.667-2.333Q4.058 15.333 4.058 12q0-3.038 1.98-5.27Q8.02 4.5 10.942 4.097q.081 0 .159.006t.153.017q-.506.706-.801 1.57q-.295.865-.295 1.811q0 2.667 1.866 4.533q1.867 1.867 4.534 1.867q.952 0 1.813-.295q.862-.295 1.548-.801q.012.075.018.153q.005.078.005.158q-.384 2.923-2.615 4.904T12.057 20"
></path></svg
>
</button>
@ -219,59 +219,59 @@ import { Image } from 'astro:assets'
<script>
function getCurrentTheme() {
return localStorage.getItem('theme')
return localStorage.getItem("theme");
}
function setupDarkModeToggle() {
const toggleDarkModeButton = document.getElementById('toggleDarkMode')
const mobileToggleDarkMode = document.getElementById('mobileToggleDarkMode')
const toggleDarkModeButton = document.getElementById("toggleDarkMode");
const mobileToggleDarkMode = document.getElementById("mobileToggleDarkMode");
function toggleTheme() {
const currentTheme = getCurrentTheme()
const newTheme = currentTheme === 'dark' ? 'light' : 'dark'
localStorage.setItem('theme', newTheme)
document.documentElement.classList.toggle('dark')
const currentTheme = getCurrentTheme();
const newTheme = currentTheme === "dark" ? "light" : "dark";
localStorage.setItem("theme", newTheme);
document.documentElement.classList.toggle("dark");
// Dispatch theme change event
window.dispatchEvent(new CustomEvent('theme-change', { detail: { theme: newTheme } }))
window.dispatchEvent(new CustomEvent("theme-change", { detail: { theme: newTheme } }));
}
if (toggleDarkModeButton) {
toggleDarkModeButton.addEventListener('click', toggleTheme)
toggleDarkModeButton.addEventListener("click", toggleTheme);
}
if (mobileToggleDarkMode) {
mobileToggleDarkMode.addEventListener('click', toggleTheme)
mobileToggleDarkMode.addEventListener("click", toggleTheme);
}
}
function setupMobileMenu() {
const mobileMenuButton = document.getElementById('mobileMenuButton')
const mobileMenu = document.getElementById('mobileMenu')
if (!mobileMenuButton || !mobileMenu) return
const mobileMenuButton = document.getElementById("mobileMenuButton");
const mobileMenu = document.getElementById("mobileMenu");
if (!mobileMenuButton || !mobileMenu) return;
mobileMenuButton.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden')
})
mobileMenuButton.addEventListener("click", () => {
mobileMenu.classList.toggle("hidden");
});
// Close mobile menu when clicking outside
document.addEventListener('click', (event) => {
document.addEventListener("click", (event) => {
if (
!mobileMenuButton.contains(event.target as Node) &&
!mobileMenu.contains(event.target as Node)
) {
mobileMenu.classList.add('hidden')
mobileMenu.classList.add("hidden");
}
})
});
}
// Setup initial functionality
setupDarkModeToggle()
setupMobileMenu()
setupDarkModeToggle();
setupMobileMenu();
// Re-setup functionality after view transitions
document.addEventListener('astro:after-swap', () => {
setupDarkModeToggle()
setupMobileMenu()
})
document.addEventListener("astro:after-swap", () => {
setupDarkModeToggle();
setupMobileMenu();
});
</script>

View File

@ -23,12 +23,15 @@ const year = new Date().getFullYear();
</div>
<nav
aria-labelledby="footer_links"
class="flex gap-x-2 sm:gap-x-0 sm:divide-x sm:divide-gray-500"
class="flex flex-wrap gap-x-2 sm:gap-x-0 sm:divide-x sm:divide-gray-500"
>
<p id="footer_links" class="sr-only">More on this site</p>
{
menuLinks.map((link) => (
<a class="hover:text-global-text px-4 py-2 hover:underline sm:py-0" href={link.path}>
<a
class="hover:text-global-text px-2 py-2 hover:underline sm:px-4 sm:py-0"
href={link.path}
>
{link.title}
</a>
))

View File

@ -1,5 +1,5 @@
---
import { type CollectionEntry, render } from "astro:content";
import { render } from "astro:content";
import FormattedDate from "@/components/FormattedDate.astro";
import type { HTMLTag, Polymorphic } from "astro/types";
import GiscusComment from "@/components/componentsBefore/GiscusComment";
@ -7,8 +7,10 @@ import ArticleContainer from "../ArticleContainer.astro";
import ShareButtons from "../ShareButtons.astro";
import ContentFooter from "../ContentFooter.astro";
import { cn } from "@/utils/tailwind";
import Card from "../componentsBefore/Card.astro";
import type { NoteItem } from "@/types";
type Props<Tag extends HTMLTag> = Polymorphic<{ as: Tag }> & {
note: CollectionEntry<"note">;
note: NoteItem;
isPreview?: boolean | undefined;
index?: number;
enableLineClamp?: boolean;
@ -77,10 +79,19 @@ if (modifiedDate && modifiedDate.toDateString() === date.toDateString()) {
enableLineClamp && "line-clamp-4"
)}
>
{
!isPreview && note.data.description && note.data.description.trim().length > 0 && (
<Card heading="摘要由llm生成" altText="摘要" class="my-4 w-full">
<div class="text-muted-foreground ml-4">{note.data.description}</div>
</Card>
)
}
<Content />
</div>
</div>
{!isPreview && <ContentFooter />}
{!isPreview && <GiscusComment client:load />}
{
!isPreview && (
@ -89,6 +100,4 @@ if (modifiedDate && modifiedDate.toDateString() === date.toDateString()) {
</div>
)
}
{!isPreview && <ContentFooter />}
</ArticleContainer>

View File

@ -5,6 +5,23 @@ function removeDupsAndLowerCase(array: string[]) {
return [...new Set(array.map((str) => str.toLowerCase()))];
}
// 辅助函数:处理各种格式的日期
function processDate(val: string | number | Date): Date {
// 如果是数字如20250225转换为字符串并格式化
if (typeof val === "number") {
const numStr = val.toString();
// 假设格式为YYYYMMDD
if (numStr.length === 8) {
const year = numStr.substring(0, 4);
const month = numStr.substring(4, 6);
const day = numStr.substring(6, 8);
return new Date(`${year}-${month}-${day}`);
}
}
// 其他情况直接使用Date构造函数
return new Date(val);
}
const baseSchema = z.object({
title: z.string(),
});
@ -17,10 +34,20 @@ const post = defineCollection({
draft: z.boolean().default(false),
banner: z.string().optional(),
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
date: z.union([z.string(), z.date()]).transform((val) => new Date(val)),
date_modified: z.date().optional(),
data_created: z.date().optional(),
date: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
date_modified: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
data_created: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
category: z.string().optional().nullable(),
fixedToTop: z.boolean().optional().default(false),
}),
});
@ -28,10 +55,20 @@ const note = defineCollection({
loader: glob({ base: "./src/content/note", pattern: "**/*.{md,mdx}" }),
schema: baseSchema.extend({
description: z.string().optional().nullable(),
date: z.union([z.string(), z.date()]).transform((val) => new Date(val)),
date_modified: z.date().optional(),
data_created: z.date().optional(),
date: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
date_modified: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
data_created: z
.union([z.string(), z.number(), z.date()])
.optional()
.transform((val) => (val ? processDate(val) : undefined)),
tags: z.array(z.string()).default([]).transform(removeDupsAndLowerCase),
category: z.string().optional().nullable(),
}),
});

View File

@ -1,30 +0,0 @@
---
title: 2023-02-11 星期六
slug: diary-2023-02-11
date: 2023-02-11T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
2023年2月11日星期六菜单包括外婆菜炒蛋搭配土豆箜饭饮料为冰糖加柠檬片。当天的计划包括使用tailwind编写样式学习Photoshop或Figma操作以制作视频封面模板以及进行AI
Hanser的相关工作。
rinId: 22
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-02-11 星期六
## 今日菜单 + 饮料
外婆菜炒蛋 + 土豆箜饭
冰糖 + 柠檬片
## 今日计划
- [ ] 使用 tailwind 编写样式
- [ ] 学习 ps 或者 figma 操作,制作视频封面模板
- [ ] AI Hanser

View File

@ -1,27 +0,0 @@
---
title: 2023-09-08 星期五
slug: diary-2023-09-08
date: 2023-09-08T00:00:00.000Z
author: KazooTTT
tags:
- 日记
- 歌词
- hanser
published: true
description: 2023年9月8日星期五的记录中提到了一段关于直播的内容强调不需要背负任何负担只需带着空行囊和彼此即可。
rinId: 24
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-08 星期五
<!-- start of weread -->
<!-- end of weread -->
## 直播
> 不需要 背负任何
> 只需要空行囊和彼此就够

View File

@ -1,26 +0,0 @@
---
title: 2023-09-09 星期六
slug: diary-2023-09-09
date: 2023-09-09T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 2023年9月9日星期六的日程安排包括已完成的项目升级和游泳以及待完成的nextjs+node运行时脚本测试。
rinId: 25
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-09 星期六
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
- [x] 版本升级
- [ ] nextjs+node 运行时 脚本运行测试
- [x] 游泳

View File

@ -1,20 +0,0 @@
---
title: 2023-09-10 星期日
slug: diary-2023-09-10
date: 2023-09-10T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
2023年9月10日某博客讨论了其支持的模板语法指出虽然功能丰富但使用起来感觉不够灵活且学习成本较高。文章中提出疑问低代码是否是一种高效但可能过于简化的编程方式。
rinId: 26
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-10 星期日
- 13:17 某博客支持各种模板语法,但是使用的时候反而觉得不灵活以及学习成本过高了。<br>觉得突然想到,是不是低代码是一种含糖量极高的编程方式。<br>

View File

@ -1,39 +0,0 @@
---
title: 2023-09-12 星期二
slug: diary-2023-09-12
date: 2023-09-12T00:00:00.000Z
author: KazooTTT
tags:
- 日记
- 健身
published: true
description: >-
今天的任务包括完成多项链表相关的编程题目其中已完成的有“86.分隔链表”和“141.环形链表”未完成的有“142.环形链表-ii”和“160.相交链表”。此外已完成的任务还包括在Obsidian中链接外部代码文件。健身方面进行了跑步、椭圆机和器械锻炼并计划下次带拖鞋以便洗完澡后直接穿回家。
rinId: 27
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-12 星期二
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
- [ ] 刷题回顾
- [x] [86.分隔链表](https://notes.kazoottt.top/03-领域/编程/算法/记录/86.分隔链表)
- [x] [141.环形链表](https://notes.kazoottt.top/03-领域/编程/算法/记录/141.环形链表)
- [ ] [142.环形链表-ii](https://notes.kazoottt.top/03-领域/编程/算法/记录/142.环形链表-ii)
- [ ] [[160.相交链表]]
- [x] [[obsidian链接外部代码文件]]
## 打卡
## 健身
【打卡】跑步 15 分钟,椭圆机 15 分钟,器械(大腿 腹部 背部4 组
下次要把拖鞋带来,洗完澡直接穿拖鞋回家。

View File

@ -1,75 +0,0 @@
---
title: 2023-09-13 星期三
slug: diary-2023-09-13
date: 2023-09-13T00:00:00.000Z
author: KazooTTT
tags:
- 日记
- todo
published: true
description: >-
On September 13, 2023, the individual focused on several tasks including
reviewing coding problems, specifically completing the "141.环形链表" and planning
to tackle "142.环形链表-ii" and "160.相交链表". They also dealt with issues related to
the react-noiton-x library, which is used in their blog's search interface,
and attempted to compile the library from source code due to outdated
versions. Challenges included issues with yarn proxy settings, understanding
workspace concepts, and the process of npm publishing. Additionally, they
worked on their blog, integrating Sentry for error tracking and adjusting the
giscus comment section's style to better fit different themes. On the personal
front, they skipped the gym due to poor physical condition but exercised at
home using an elliptical machine. They also considered upgrading their
smartwatch as it was no longer compatible with the latest watch face market
updates.
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-13 星期三
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
- [ ] 刷题回顾
- [x] [141.环形链表](https://notes.kazoottt.top/03-领域/编程/算法/记录/141.环形链表)
- [ ] [142.环形链表-ii](https://notes.kazoottt.top/03-领域/编程/算法/记录/142.环形链表-ii)
- [ ] [[160.相交链表]]
## 打卡
wakatime 数据:
![IMG-20241021113029099](https://pictures.kazoottt.top/2024/11/20241125-7139a104f1df9b03b462a7d8b582b109.png)
## React-noiton-x
今天一直在看 react-noiton-x 的问题,因为博客里依赖了这个库的搜索接口,而该接口虽然在源代码里更新了,但是最新一次打包是二月份
![IMG-20241021113029126](https://pictures.kazoottt.top/2024/11/20241125-e05ed84ba105012a9d605957c3813d65.png)
所以尝试自己从源代码打包一份,然后新发一个版本给自己使用。
遇到的问题有:
1. 忘记修改过 yarn 的代理(公司内网),导致安装失败。代理优先级应该是 yarn 自身代理>npm 代理
2. 对于 workspace 的概念不熟悉
3. 对于 npm 发布不熟悉
后续要做的事:
打包,然后发布
## Blog
然后继续折腾了一下博客,接入了 sentry,
之前的 giscus 评论区的样式是比较怪异的(即使切换了主题,背景色还是白色),今天做成适配的了。不过这个切换有些生硬,后续要加个过渡
![IMG-20241021113029153](https://pictures.kazoottt.top/2024/11/20241125-c8924e57d362b973da60017a4ad7bbdd.gif)
## 健身
状态不好没去健身房在家踩了椭圆机3-11 档阻力交叉 30 分钟
=、= 感觉该换手表了,突然发现这个手表表盘市场都不兼容了
![IMG-20241021113029196](https://pictures.kazoottt.top/2024/11/20241125-4cd6f6565440bf5c21b6ee94587de167.jpeg)
![IMG-20241021113029229](https://pictures.kazoottt.top/2024/11/20241125-16152535d36b14dc442cccfd8484b72b.jpeg)

View File

@ -1,35 +0,0 @@
---
title: 2023-09-14 星期四
slug: diary-2023-09-14
date: 2023-09-14T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
今天是2023年9月14日星期四。今天的计划包括打卡和健身。健身内容包括跑步20分钟和使用器械30分钟虽然9点去健身房时间有点紧张。此外已经下单了一款新手表预计下周五到货。感觉自己的背部似乎直了一些。还提到了一种快速获取telegram
chatId并实现消息通知的方法。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-14 星期四
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
## 打卡
## 健身
健身打卡
跑步 20 分钟,器械 30 分钟9 点去健身房时间还是有点紧了!
下单了新的手表,下周五能到!
不知道是不是错觉,感觉自己背直了一点
[快速获取telegram chatId然后实现消息通知的方法](/notes/quick-way-to-get-telegram-chatid-and-then-implement-message-notification)

View File

@ -1,25 +0,0 @@
---
title: 2023-09-15 星期五
slug: diary-2023-09-15
date: 2023-09-15T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 2023年9月15日星期五的日程包括修复notion-blog中vercel og的问题并进行打卡记录。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-15 星期五
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
## 打卡
[修复了notion-blog中vercel og的问题](https://notes.kazoottt.top/05-临时/01-草稿箱/修复了notion-blog中vercel og的问题)

View File

@ -1,48 +0,0 @@
---
title: 2023-09-17 星期日
slug: diary-2023-09-17
date: 2023-09-17T00:00:00.000Z
author: KazooTTT
tags:
- 日记
- 健身
published: true
description: >-
2023年9月17日个人日记记录了当天的活动和任务。白天主要在休息晚上进行了健身活动包括30分钟的椭圆机训练和30分钟的器械训练。健身后回家泡脚并在此期间编写了一个油猴脚本用于直播间管理增强已完成弹窗样式修改和response拦截及第一页数据填充后续计划实现滚动加载后的数据填充。此外还记录了两个待处理的事项屏蔽推特黄推和使用shot.so进行图片美化。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-17 星期日
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
## 打卡
今天白天主要在休息,
晚上出门健身了,椭圆机 30 分钟,器械 30 分钟。
然后回到家泡了脚,出了挺多汗的。
一边泡脚一边写了一个油猴脚本,具体如下。
[直播间管理增强脚本](https://notes.kazoottt.top/05-临时/01-草稿箱/直播间管理增强脚本)
今日完成:
弹窗样式修改
response 拦截 + 第一页数据填充
后面要做的事:
实现滚动加载后,填充对应的数据
![IMG-20241021113029272](https://pictures.kazoottt.top/2024/11/20241125-15619d7536bbeb8537e13a5580d60fbd.png)
## Inbox
[屏蔽推特黄推](/notes/blocking-twitter-yellow-tweets)
[shot.so - 图片美化工具](/notes/shotso-image-beautification-tool)

View File

@ -1,31 +0,0 @@
---
title: 2023-09-24 星期日
slug: diary-2023-09-24
date: 2023-09-24T00:00:00.000Z
author: KazooTTT
tags:
- 日记
- 翻译
published: true
description: >-
今天的任务包括翻译YouTube视频《Monorepos - How the Pros Scale Huge Software Projects //
Turborepo vs
Nx》并投稿到Bilibili视频链接为https://www.youtube.com/watch?v=9iU_IE6vnJ8投稿链接为https://www.bilibili.com/video/BV1uz4y1V7cb/?spm_id_from=..search-card.all.click&vd_source=729e6f70ca3cee328ccece68cb2bbd30。此外还有待处理的inbox事项。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-09-24 星期日
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
## 打卡
[Monorepos - How the Pros Scale Huge Software Projects // Turborepo vs Nx](https://www.youtube.com/watch?v=9iU_IE6vnJ8) 的翻译然后 [投稿](https://www.bilibili.com/video/BV1uz4y1V7cb/?spm_id_from=..search-card.all.click&vd_source=729e6f70ca3cee328ccece68cb2bbd30)
## Inbox

View File

@ -1,29 +0,0 @@
---
title: 2023-10-06 星期五
slug: diary-2023-10-06
date: 2023-10-06T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
今天的任务包括给手表充电和录制关于如何使用MessAuto和iMessage实现iPhone和mac信息同步及自动复制验证码的视频并计划将视频发布到B站和小红书上。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-10-06 星期五
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
- [ ] 给手表充电
- [ ] 录 [[安利/MessAuto + iMessage 实现iPhone和mac信息同步和自动复制验证码]] 的视频,发布到 b 站和小红书
## 打卡
## Inbox

View File

@ -1,27 +0,0 @@
---
title: 2023-10-10 星期二
slug: diary-2023-10-10
date: 2023-10-10T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 今天的计划包括阅读vite文档并进行打卡和处理inbox事项。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-10-10 星期二
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
[从零开始阅读vite文档](https://notes.kazoottt.top/05-临时/01-草稿箱/从零开始阅读vite文档)
## 打卡
## Inbox

View File

@ -1,27 +0,0 @@
---
title: 2023-10-18 星期三
slug: diary-2023-10-18
date: 2023-10-18T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 今天的日程包括图片上传测试和打卡活动同时有一个待处理的inbox事项。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-10-18 星期三
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
[[图片上传测试]]
## 打卡
## Inbox

View File

@ -1,27 +0,0 @@
---
title: 2023-10-21 星期六
slug: diary-2023-10-21
date: 2023-10-21T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 2023年10月21日星期六的日程安排包括打卡和处理inbox事务。具体打卡内容通过一张图片展示而inbox的具体内容未详细说明。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-10-21 星期六
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
## 打卡
![IMG-20241021113029319](https://pictures.kazoottt.top/2024/11/20241125-2c8dfa24dd6c560da504635981725bb0.png)
## Inbox

View File

@ -1,27 +0,0 @@
---
title: 2023-10-22 星期日
slug: diary-2023-10-22
date: 2023-10-22T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 今天的计划包括防抖技术的学习和打卡任务,同时还有待处理的邮件。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-10-22 星期日
<!-- start of weread -->
<!-- end of weread -->
## 今天要做的事情
[防抖](https://notes.kazoottt.top/05-临时/01-草稿箱/防抖)
## 打卡
## Inbox

View File

@ -1,28 +0,0 @@
---
title: 2023-11-06 星期一
slug: diary-2023-11-06
date: 2023-11-06T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: 2023年11月6日星期一记录了当天的打卡情况显示Wakatime的使用时间较长给人留下了深刻印象。此外还提到了inbox但未详细说明内容。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-11-06 星期一
## 今天要做的事情
## 打卡
![IMG-20241021113029371](https://pictures.kazoottt.top/2024/11/20241125-d50f8d9b645bbfacc13485c8594b5f18.png)
今天的 wakatime 有点恐怖了
## Inbox
<!-- start of weread -->
<!-- end of weread -->

View File

@ -1,31 +0,0 @@
---
title: 2023-11-16 星期四
slug: diary-2023-11-16
date: 2023-11-16T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
今天是2023年11月16日星期四。今天的主要任务是开始学习web3特别是参加了一个名为solidity_bootcamp的在线课程该课程由open
build提供。此外还记录了学习笔记但具体内容未在提供的材料中详细说明。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-11-16 星期四
## 今天要做的事情
## 打卡
开始学习 web3上周报名的 open build 的 solidity_bootcamp 开营了。
[solidity_bootcamp学习笔记](https://notes.kazoottt.top/03-领域/编程/web3/solidity_bootcamp学习笔记)
## Inbox
<!-- start of weread -->
<!-- end of weread -->

View File

@ -1,32 +0,0 @@
---
title: 2023-11-17 星期五
slug: diary-2023-11-17
date: 2023-11-17T00:00:00.000Z
author: KazooTTT
tags:
- 日记
published: true
description: >-
今天的任务清单中已完成的是下午去办理港澳通行证而未完成的是准备公司评级的材料和学习web3基础知识。此外今天的日程中还包括打卡和查看inbox但没有具体的事项列出。
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 2023-11-17 星期五
## 今天要做的事情
## 打卡
## 明天要做的事情
- [x] 下午去办港澳通行证
- [ ] 去公司准备评级的材料
- [ ] 学习 web3 基础知识
## Inbox
<!-- start of weread -->
<!-- end of weread -->

View File

@ -1,47 +0,0 @@
---
title: 2024-03-05 星期二
slug: diary-2024-03-05
date: 2024-03-05T00:00:00.000Z
author: KazooTTT
tags:
- 日记
description: >-
今天的主要任务包括完成Python学习至day15和刷题已完成的任务有Python学习和刷题。未完成的任务包括整理周一和周二的资讯、进行多线程批量测试、解决Python的AttributeError问题以及JetBrains
IDE的terminal无法打开问题。此外还帮助前部门面试了一位前端候选人。明天计划继续处理未完成的任务并记录了2024年3月5日的文件路径信息。
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 今天要做的事情
- [x] python 看到 day15 [python100 1-15](https://notes.kazoottt.top/03-领域/编程/后端/python/python100 1-15)
- [x] 刷题
- [ ] 整理周一和周二的资讯
- [ ] 多线程批量跑测试
- [ ] [[AttributeError module 'select' has no attribute 'epoll']]
- [ ] [[jerbrains的ide打不开terminal]]
- [ ] [2024-03-05 刷题](https://notes.kazoottt.top/03-领域/编程/算法/记录/2024-03-05 刷题)
# 打卡
主要在看 Python另外刷了两道算法题。
帮之前部门的人面试了一个前端。​​​
# 今天记录的内容
```dataview
table file.path
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2024-03-05"
```
# 明天要做的事情
# Inbox
<!-- start of weread -->
<!-- end of weread -->

View File

@ -1,56 +0,0 @@
---
title: 2024-03-06 星期三
slug: diary-2024-03-06
date: 2024-03-06T00:00:00.000Z
author: KazooTTT
tags:
- 日记
description: >-
今天的工作主要集中在解决错误和提交代码上成功地向autogen和notionnext提交了pull
request其中autogen的请求已被合并。同时开通了notion
ai并迁移了部分本地内容到博客上。此外收到了购买的时尚小物品感到非常满意。遗憾的是今天没有进行学习和刷题。计划早点休息为明天做准备。
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# 今天要做的事情
# 打卡
工作上排了一天的错,本来要做的工作也没有做。
给 autogen 和 notionnext 提了 prautogen 的已经被合并了,这是第二次被 autogen 合并,
🙏非常感谢。
然后开通了 notion ai发现它支持 google pay这点对我来说挺友好的。开通的原因是想用它的自动生成 tags 和 summary 的功能。搭配 notionnext比较方便。然后迁移了一部分本地的内容到博客上去。
买的时尚小垃圾到了,挺喜欢的。
![IMG-20241021113029511](https://pictures.kazoottt.top/2024/11/20241125-30be30b76c47cff90a88e37b7562e1ed.png)
![IMG-20241021113029604](https://pictures.kazoottt.top/2024/11/20241125-15265af8fa83af8ec5365f588256f85b.jpeg)
![IMG-20241021113029671](https://pictures.kazoottt.top/2024/11/20241125-c33b78a016b48a6729cb3aa8e939e125.jpeg)
今天的不足之处是没有学习也没有刷题。
昨天太累了,今天早睡吧。晚安。
# 今天记录的内容
```dataview
table file.path
from ""
where dateformat(file.ctime, "yyyy-MM-dd") = "2024-03-06"
```
# 明天要做的事情
# Inbox
<!-- start of weread -->
<!-- end of weread -->

View File

@ -1,55 +0,0 @@
---
title: 2024-11-26 星期二
slug: diary-2024-11-26
date: 2024-11-26T00:00:00.000Z
day_of_week: 星期二
author: KazooTTT
tags:
- 日记
- milklove
- 幸福的具象化
description: >-
今天是milklove宣布二搭、三搭的日子。根据截图牛奶爱情已经发展到了很幸福的阶段。有许多视频和 GIFs
表示了他们之间的亲密度和甜蜜。虽然没有具体详细信息但可以看出这对人是非常恩爱的。在这里汇总了一些关键的视频和截图展示了milklove的幸福感和关怀。
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
很幸福的一天,今天是 milklove 宣布二搭、三搭的日子。
6 月入坑牛奶爱情,不知不觉嗑到现在,从没想过今天这样的发展。
在这里汇总一下今天的一些视频。
[截修](https://weibo.com/7101901680/P28tdryDc#comment)
![7101901680_P28tdryDc_3_007KCR3ily1hw00ujf2kdj30ok0wrhdt](https://pictures.kazoottt.top/2024/11/20241127-146e50893c94f9353d1dc1b4fb57cf9f.jpg)
![7101901680_P28tdryDc_2_007KCR3ily1hw00uoshooj30ok0wrhdt](https://pictures.kazoottt.top/2024/11/20241127-2fbf4d6dd6bfbab6f90dc9bb07616302.jpg)
![7101901680_P28tdryDc_1_007KCR3ily1hw00umrpncj30ok0wrhdt](https://pictures.kazoottt.top/2024/11/20241127-5ccf20fa63efa8c2cbb5fb96f24a9165.jpg)
[幸福的具象化](https://weibo.com/6083416567/P28jkx9MS#comment)
![IMG-20241127003154185](https://pictures.kazoottt.top/2024/11/20241127-116eefa7b7e4f45a768949a17c5eb2e1.gif)
![Pasted image 20241127003452](https://pictures.kazoottt.top/2024/11/20241127-05fca095f483c27c58e0f5b092b3d69a.png)
[girl rule cut](https://weibo.com/1750538651/P27NfAOja#comment)
[亲亲](https://weibo.com/1825971940/P288xfVxF#comment)
![lJxtFWEflx08jTFnm57i0104120011iE0E010](https://pictures.kazoottt.top/2024/11/20241127-3f6f17edcb438269258e15de9e0a885d.gif)
[二搭 预告片 婉司姬](https://weibo.com/1753015991/P27pq9oJU#comment)
![Pasted image 20241127003346](https://pictures.kazoottt.top/2024/11/20241127-cec219a8dbcaef9195964df8a2775832.png)
[二搭 预告片 弯弯字幕组](https://weibo.com/7392264056/P27lQtUnd#comment)
![Pasted image 20241127003356](https://pictures.kazoottt.top/2024/11/20241127-80e0bb6d50b0e8356ea53361e771365a.png)
[Findwichh推介会汇总](https://weibo.com/6613951279/P29c7fgx9#comment)

View File

@ -1,44 +0,0 @@
---
title: 2024-11-27 星期三
slug: diary-2024-11-27
date: 2024-11-27T00:00:00.000Z
day_of_week: 星期三
author: KazooTTT
tags:
- 日记
description: >-
windsurf 赠送了试用的天数,个人发现 windsurf 的 cursor 自动补全速度比其他软件快且更智能。然而volview 中的 store
信息难以理解,而 Crop2D.vue 的文件内容未能解释明了。此外,安装 canvas 时遇到错误,需要参考 node-canvas 的 Windows
安装指导解决问题。
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
windsurf 赠送了试用的天数
![Pasted image 20241127102521](https://pictures.kazoottt.top/2024/11/20241129-f78ed74651c9e92353b0b3f88033b873.png)
个人感觉 cursor 的自动补全速度比 windsurf 快和智能很多
volview 也这么多 store谁能看懂...
![Pasted image 20241127182204](https://pictures.kazoottt.top/2024/11/20241129-aa7cb1a643a25a79e8726605fd2b1106.png)
`src\components\tools\crop\Crop2D.vue`
啥意思
![Pasted image 20241127182701](https://pictures.kazoottt.top/2024/11/20241129-5550cf97c227b40010dffa544417d125.png)
安装 canvas 的时候报错:
```
error C1083: 无法打开包括文件: “cairo.h”: No such file or directory
```
解决方法:
[Installation: Windows · Automattic/node-canvas Wiki · GitHub](https://github.com/Automattic/node-canvas/wiki/Installation:-Windows)

View File

@ -1,72 +0,0 @@
---
title: 2024-11-28 星期四
slug: diary-2024-11-28
date: 2024-11-28T00:00:00.000Z
day_of_week: 星期四
author: KazooTTT
tags:
- 日记
description: >-
VSCode加速设置可以提高你的开发效率尤其是对于低端显卡或者集成显卡的机器。打开 VSCode命令面板输入 "Preferences:
Configure Runtime
Arguments"然后添加“disable-hardware-acceleration”true实验发现它确实有助于提高工作效率。但是如果你的
SonarLint 占用内存过高,就会导致卡顿问题。此外,你还遇到了 vite-plugin-checker 的错误,解决方法是安装或重新安装 uv。
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
[x.com](https://x.com/vikingmute/status/1858781019492790315)
```
打开这个禁止硬件加速的选项可以让 VSCode 快很多倍Cusror 这种基于 VSCode 的也可以,不知道什么原理,应该是针对低端显卡或者集成显卡的机器比较有效?但是我试了一下确实感觉快了一些,我是 M3 的 macbook大家可以试试看效果怎样
步骤:
1. 打开命令面板 (Cmnd + Shift + P)
2. 输入 "Preferences: Configure Runtime Arguments"
3. 添加: "disable-hardware-acceleration": true
```
SonarLint 内存占用高,卡顿
---
[vite-tsconfig-paths](https://www.npmjs.com/package/vite-tsconfig-paths#vite-tsconfig-paths) 踩坑
```
error when starting dev server:
ReferenceError: module is not defined in ES module scope
This file is being treated as an ES module because it has a '.js' file extension and 'C:\Users\turbo\Developer\xxx.worktrees\fix\cannot-export\node_modules\.pnpm\vite-plugin-checker@0.8.0_eslint@8.57.1_optionator@0.9.4_typescript@4.9.5_vite@4.5.5_@types+n_f2jvehahdn5lgzw77tv2nbqmma\node_modules\vite-plugin-checker\package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
```
Ensure the project either has "type": "module" set or that the Vite config is renamed to vite.config.mjs / vite.config.mts depending on whether TypeScript is used
确保项目已设置 "type": "module" 或根据是否使用 TypeScript 将 Vite 配置重命名为 vite.config.mjs / vite.config.mts
---
# Claude MCP can't connect to SQLite MCP serve
![image.png](https://pictures.kazoottt.top/2024/11/20241128-365eae5fe7493a84658fb9bbfa7555cb.png)
[Reddit - Dive into anything](https://www.reddit.com/r/ClaudeAI/comments/1h0my0y/comment/lz5w7ar/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)
解决方法install or reinstall uv
```
brew install uv
```
---
## ollma 真好玩
我怎么这么久了才开始玩(谢谢酱紫表的安利)
![CleanShot 2024-11-28 at 23.40.12@2x.png](https://pictures.kazoottt.top/2024/11/20241128-bde60eeee02f234a59d87d2144a4a4d3.png)
[GitHub - ollama/ollama: Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models.](https://github.com/ollama/ollama?tab=readme-ov-file)
[GitHub - AugustDev/enchanted: Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama.](https://github.com/AugustDev/enchanted)

View File

@ -1,65 +0,0 @@
---
title: 2024-11-29 星期五
date: 2024-11-29T00:00:00.000Z
day_of_week: 星期五
author: KazooTTT
tags:
- 日记
description: >-
Qube可以集成到GitHub上详细了解如何进行集成请参考YouTube上的视频。 如果出现HTTP
409错误首先删除使用该码的容器然后再删除相关容器。 在深度学习工具中Ollama是一个非常好的沉浸式翻译工具。
区分重启和刷新按钮时需要注意到不同操作的差异。在Windows系统上虽然没有macOS类似的窗口管理工具但仍可以使用Raycast等第三方应用进行任务
automation。 Adobe Express可以帮助我们将图片转换为SVG格式并提供了一个简单易用的工具。
在使用ECharts时Canvas和SVG两个渲染器的选择主要取决于软硬件环境、数据量和功能需求。在需要优化性能的问题场景下尝试结合实验来确定使用哪种渲-render器更合适。
只有在你熟悉用canvas手搓图表时你才能在网页上创建这种图。 最近的工作包括编辑器图片上传重构、移动端应用程序的开发以及学习VTK和图形学。
slug: diary-2024-11-29
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
qube 如何集成到 github:
[GitHub Integration | Mapping your organization into SonarQube - YouTube](https://www.youtube.com/watch?v=6zvBuZr8CeI)
Image HTTP code 409 is in use. Delete the container that's using it and try again.
先删除 container 再删除 volume
沉浸式翻译使用 ollama
如何区分重启和刷新按钮
windows 有没有像 macos 一样的窗口管理工具loop raycast 之类的
[Adobe Express](https://new.express.adobe.com/tools/convert-to-svg)
covnert image to svg (需要登录)
![image.png](https://pictures.kazoottt.top/2024/11/20241129-771df278cae6c89066af0a9a882f3ff9.png)
[Canvas vs. SVG - 最佳实践 - 使用手册 - Apache ECharts](https://echarts.apache.org/handbook/zh/best-practices/canvas-vs-svg/)
> [!note]
> 选择哪种渲染器,我们可以根据软硬件环境、数据量、功能需求综合考虑。
>
> - 在软硬件环境较好,数据量不大的场景下,两种渲染器都可以适用,并不需要太多纠结。
> - 在环境较差,出现性能问题需要优化的场景下,可以通过试验来确定使用哪种渲染器。比如有这些经验:
> - 在需要创建很多 ECharts 实例且浏览器易崩溃的情况下(可能是因为 Canvas 数量多导致内存占用超出手机承受能力),可以使用 SVG 渲染器来进行改善。大略的说,如果图表运行在低端安卓机,或者我们在使用一些特定图表如 [水球图](https://ecomfe.github.io/echarts-liquidfill/example/) SVG 渲染器可能效果更好。
> - 数据量较大(经验判断 > 1k、较多交互时建议选择 Canvas 渲染器。
我什么时候可以做到用 canvas 手搓这种图
![image.png](https://pictures.kazoottt.top/2024/11/20241129-60d83ca2693fd5e9774743f352039c2b.png)
最近可以做的事情:
编辑器图片上传重构
编辑器高度修改
行间高度调整
用 rn 重写移动端
ml 资源整合
vtk、图形学学习
obsidian 插件 ollama generate slug tags

View File

@ -1,34 +0,0 @@
---
title: 2024-11-30 星期六
date: 2024-11-30T00:00:00.000Z
day_of_week: 星期六
author: KazooTTT
tags:
- 日记
description: >-
为了更快地启动 Visual Studio CodeVSCodeextention先按下 Ctrl+Shift+P或Cmd+Shift+P进入
Command Pallete。然后输入“Startup Performance”并选择相关选项完成后记得激活功能以保持其设置。
如果存在占用特定端口的程序请使用命令“lsof -i :<PORT>”识别端口对应的进程IDPID再使用命令“kill -9
<PID>”终止该进程。也可以使用更方便的方式“kill -9 $(lsof -t -i :<PORT>)”,即直接杀死占用端口的进程。
slug: diary-2024-11-30
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
vscode extention 启动时间
按下 Ctrl+Shift+PWindows/Linux或 Cmd+Shift+PmacOS输入 “Startup Performance” 并选择该选项。 关注Finish Activate
kill 端口为 x 的进程
```
lsof -i :<PORT>
kill -9 <PID>
```
```
kill -9 $(lsof -t -i :<PORT>)
```

View File

@ -1,43 +0,0 @@
---
title: 2024-12-11 星期三
date: 2024-12-11T00:00:00.000Z
day_of_week: 星期三
author: KazooTTT
tags:
- 日记
description: >-
我上周忙得满不在乎wakatime 的数据显示,我加班的时间直接进入了全球前 100。主要是做 vtk.js
的开发花了很多时间,不仅没有做到原先计划的需求,还对 polydata
的变化感到困惑。虽然我耐下了心理压力,能清晰地理解项目里的复杂数据流转,但是写文档还是头昏眼花,一时起走神来。除了上周加班外,我也试用了
react-scan 和安卓视频下载软件,好看的个人主页让我感动。
slug: diary-2024-12-11
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
终于没有那么忙了,上周忙成狗了,加班加的 wakatime 时长直接进入全球前 100 了
![image.png](https://pictures.kazoottt.top/2024/12/20241210-c47db55ce8a5198e2eafb096444aab6f.png)
![image.png](https://pictures.kazoottt.top/2024/12/20241210-a064bc9e2410f0bfba01ba7323277e64.png)
上周在忙什么?主要是做 vtk.js 的开发花了很多时间,不然后续的需求查漏补缺我不会做的这么着急。
对于 vtk.js 的掌握程度还是太低了,甚至连 polydata 的变化要怎么写都是临时掌握的。不过好在上周耐心理了一下项目里复杂的数据流转,清晰了很多。
![image.png](https://pictures.kazoottt.top/2024/12/20241211-20241211214029.png)
然后今天主要再写文档,写得头昏眼花的,好容易走神。
---
react-scan 让页面的 rerender 一眼便知 [React Scan](https://react-scan.com/),试了下确实好用(比浏览器的开发者工具里面的 rerender 监视器好用),后面项目优化有事做了。
安卓的视频下载软件 [GitHub - JunkFood02/Seal: 🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You](https://github.com/JunkFood02/Seal)
好看的个人主页 [CAICAI - A Product Manager](https://www.caicai.me/)
![image.png](https://pictures.kazoottt.top/2024/12/20241210-bc4eadb59b028a2fac538771dae2c303.png)

View File

@ -1,107 +0,0 @@
---
title: 2024-12-12 星期四
date: 2024-12-12T00:00:00.000Z
day_of_week: 星期四
author: KazooTTT
tags:
- 日记
- 数据可视化
- 人工智能
- 图表生成
description: >-
这一天的碎片化记录包含了对深Seek
API和其新版聊天功能的感想以及工作、生活中的各种感受和体验。作者在这段时间内进行了一些个人思考和记录包括购买了智能工具Diagen感受到了一种计算收益的模式并且在思考自己的精神层面希望能够创作出更能让自己满意的作品。
slug: diary-2024-12-12
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
之前只用过 deepseek 的 api这几天的 deepseek 的 chat 用的比较多,发现两者都挺好用的
目前 todo 全部都移到滴答清单里面去记录和更改,这里单纯记录一些想法,不要 all in one
## 碎片化记录
10:55这次去看演出要用肩带夹录一个第一人称的记录
10:54把另外一把键盘带去公司了
感受是打字很舒服 但是打久了累
12:37活成了做什么都下意识计算收益的样子
13:05状态怎么样别人能很明显看出来…
还是对自己好点吧,现在这种状态实在太差了
13:18买了一个新手机壳就能玩很久
13:13总之先做一个出来
性能差就差,总比没有好
13:36转发微博
- 转发 @爱可可 - 爱生活:【Diagen一键生成数据图表的智能工具通过 AI 技术将复杂数据转化为美观的图表,支持多种图表类型,让数据可视化变得简单快捷】'diagen - Generate beautiful, reflective diagrams from your data with a single command.' GitHub: github.com/SouthBridgeAI/diagen #数据可视化# #人工智能# #图表生成#
13:35这下谁能看出 h 和 p 标签记录的啥
13:33//@KITATAIKOI: 跟去年相比产量确实是直接腰斩了,也跟我在思索一些关于精神层面的议题、把精力更多的花在工作上和尝试去改变自己有关。也很庆幸并没有在“向内批判自己”这件事上花太长的时间,我成功地走出了很大一部分源于过去的阴霾。 总之感谢大家的支持与认可,新的一年,咱会再接再厉,努力创作更能让自己满意,同时也更能深入人心的作品的!这样~
- 转发 @KITATAIKOI:*+2024 年终总结 +*
又到了一年一度的% かΘΛ……(省略一大堆感言)今年除工作外一共产图 110 张~~~
14:49//@绯音喵: 有病吗//@婉司姬: 干什么//@矮周迅: 这是真不敢//@王太弱: 我连上一秒的都不敢看//@巴斯小板: 我不想回忆。//@美困外卖: 那年今日就可以看到
- 转发 @CharlieDurian2 号: 没见过傻逼的可以看看自己几年前发的朋友圈
16:00要散了
19:50我怎么就活成这个样子了
20:05这辈子都不想做前端了
20:02于是我又打开 boss 直聘
我不会又要去上海吧
20:13逛商场好解压身心舒畅
20:12好想配这种镜框
感觉聪明的人带更聪明
笨的人带更笨
20:50幻想一下就能笑出声 好好养活
20:50如果买“保健品”可以让自己开心适当买点又怎么了
21:04谁教他把 blender 缩写成 bl 的
21:15//@碎片粘合區:………//@2048 种子选手: 我//@摩斯盖斯: 我磕 cp
- 转发 @推拿熊: 在现在的时代来说,你愿意持之以恒做一件事情,从早上醒来在想,做了一天后睡觉前也在琢磨,能沉浸其中,不觉得烦,已经是极大的正反馈了
21:27今天像吃了一顿空气
虽然有活动 但什么都没吃到
22:55这个号烂的别人给我点赞我都看不到提示😳
23:03- 转发 @奶制品 -: 人无法同时拥有青春和对青春的感受 18 岁的和 24 岁的 loverrukk 又有了共同的感受
23:03转发微博
- 转发 @月照废墟:milklove
人如何学会语言。
热带雨
23:44好喜欢这篇 (「・ω・)「
- 转发 @月照废墟:milklove
人如何学会语言。
热带雨
23:42浪费时间…
23:56声生不息的滤镜怎么把人脸搞得蜡黄蜡黄的
23:51靠一些不切实际的信念感在往下走
但是感觉明年就该清醒了

View File

@ -1,138 +0,0 @@
---
title: 2024-12-19 星期四
date: 2024-12-19T00:00:00.000Z
day_of_week: 星期四
author: KazooTTT
tags:
- 日记
description: null
slug: diary-2024-12-19
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
## 值得记录的事情
帮朋友单糊了一个大模型应用,被她和她的领导夸好,超开心的。
之前在公司做项目的时候被 leader 夸说我写的真的很快,有的事情没我搞不定。
听到这种被认可的话,就会觉得更有动力。
今天写好了一个 [合并多个PDF](/notes/merge-pdfs) 的小项目,写完之后用了合并功能在微信读书已经看上了杂货铺的中文翻译✌️
[PDF文件合并工具 - 在线免费合并PDF文档](https://pdf.kazoottt.top/)
![739C4785-E7F0-412D-B4CC-BC3EA1A7BD7A_1_105_c.jpeg](https://pictures.kazoottt.top/2024/12/20241220-789854cabb309452d0dd3ef21f666e62.jpeg)
## 碎片化记录(基于 n8n + rss + 飞书 webhook 生成)
11:53昨天的打卡
12:27这个真的很好用
不打游戏,办公够了
安利安利
13:1121 牛爱能闪耀运动会吗
13:39今夜你会不会来
15:17如果使用 remix然后用 cloudflare 进行部署。
通过 remix 的官方脚手架创建,在 Workers 和 Pages 中直接 import 仓库然后部署是无效的。部署完成后点击对应的域名访问,会无响应。
正确的做法是:
参考 cloudflare>) 的文档,使用 cloudflare + remix 的模板创建
shell
pnpm create cloudflare@latest my-remix-app --framework=remix
然后再在 Workers 和 Pages 中 import 你对应的 git 仓库,然后构建设置选择 remix它会帮你填好默认的配置保留该配置即可。
参考
Remix + Vite: assets not generated in /public - Developers / Cloudflare Pages - Cloudflare Community
16:18黄金和纳斯达克都跌了感觉今天亏的能抵半个月赚的
16:15忙了一下午点开社交平台什么新物料的没有
16:20昨天在看曼谷旅居一个月的开销
感觉涉及到省钱,真的离不开搭子
吃饭,住房很多地方都是两个人性价比更高
但是我现生哪里去找这样的搭子
18:32朋友要处理一些数据但是比较敏感所以只能用本地大模型。
花了点时间,帮写了一个 ollama 安装运行脚本(离线拷贝的,因为感觉大概率会碰到 pull 不下来的问题),然后还把 excel 的处理也写了,最后做了个简单的 gui 方便操作。
19:17忙的时候遭不住闲的时候又不乐意了
19:12以前用豆包觉得回复好慢
现在快了好多
(用来水字数还可以,输出贼多
19:33回家吃完饭刚好 8 点
8 点有事情要核对一下
好匆忙
19:59想给别人发大文件除了网盘还有什么方法
阿里和百度都限速
20:10是不是可以
把 gameobject 理解为 elements container
然后 component 对应的就是 container 中的各种 element
prefab 才对应的是 component
20:03给别人分享网盘链接结果对方没会员下载很慢的时候很想把账号借给对方
但是真的存了很多不方便分享的东西,好烦好烦,删了可惜,不删借不出账号又焦虑
20:00牛爱两人还认识吗
20:16大二的时候大创报错类型了报了商业型项目
当时的想法是通过 vr 治疗幽闭恐惧症(我也忘了为什么要做这个)
我是负责人,拉着队友们写了几天申报书,商业计划书,寒假的时候每天在家学 unity学到骨骼和动画的时候就开学了
结果去立项答辩的时候被卡了(商业型项目很严格…),给我留下了很深的阴影,从那之后再也没碰过 unity 和 vr
回头想想那个时候有点封闭自己,虽然最后没做下去,但也应该请队友们吃个饭,或者感谢一下的
没想到过了 6 年,又要重操旧业了
20:28明天把那个 stl 打一下
看看什么效果
20:31买了个显示器支架希望稳一点
22:46学到了虽然用不上
- 转发 @曝猛: 以防你想了解用手机直播的技巧……
22:57拉了几下 v 字把手就这样了
23:03转发微博
- 转发 @全是狗狗啊: 只要一碰小狗狗的鼻子,狗狗就会自动地吐舌头!这也太可爱了吧!啊啊啊啊我能玩一天 全是狗狗啊的微博视频

View File

@ -1,33 +0,0 @@
---
title: 2024-12-23 星期一 学习 unity day01
date: 2024-12-23T00:00:00.000Z
day_of_week: 星期一
author: KazooTTT
tags:
- 日记
description: null
slug: diary-2024-12-23
published: true
toAstro: true
category: 日记
date_created: 2025-01-04T03:34:08.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
学习 unity day01
今天看了唐老师的 unity 入门课程(感谢网友的推荐,这门课真的质量很高,思路清晰且容易看进去),搭配豆包和哔哔君看视频学习也比较高效了。
看了 mrtk2 的一些 demos个人的感受是学 unity 的一个方法是可以试着复刻一些常用的 prefab 或者 class方便自己也能增加熟练度。比如前端封装 sliderunity 中也封装 slider
最后就是直接阅读后续要上手的项目代码并学习使用 remote app 快速看效果。
其实在大学的时候有参加过 VR 的社团,当时看过 B 站上一个虚拟小屋的教学视频也体验过 VR 设备。后来大创也申报过 VR + 医疗相关的项目,不过被砍后已经很久没有接触过 unity。
然后去年和同担一起有策划过一个模拟经营类的游戏,但是因为我太忙并且主动性不高这个项目搁置了。希望能通过这次好好学一下 unity 并把这个项目重新做起来。(做到一定阶段再跟别人说,而不是还没开始就大范围告诉他人,我觉得我一直都是这种喜欢给自己画饼之余也爱给别人画饼的,这样的缺点真的需要改)
今天同组同事也跟我聊了一下,教了我一些技巧,有句话对我来说印象比较深刻就是“你就是缺了迈出去的那一步。”
不管怎么样实践和学习总是没错,不要抵触新的事物,先做一个垃圾出来至少也算是做出来了。
![image.png](https://pictures.kazoottt.top/2024/12/20241224-2c04f98a1db13b96bed1735f7fc684e6.png)

View File

@ -1,37 +0,0 @@
---
title: 2025-01-06 星期一
date: 2025-01-06T00:00:00.000Z
day_of_week: 星期一
author: KazooTTT
tags:
- 日记
- 工作
- 压力
description: null
slug: diary-2025-01-06
published: true
toAstro: true
category: 日记
date_created: 2025-01-06T12:11:06.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
最近一直都很忙,忙到有时候怀疑自己从上海回成都是否是好的决定。
但又觉得换了工作后,个人能力确实有提升,眼界也开拓了一些。所以目前仍在纠结阶段,要明确未来的方向得先想清楚我到底要什么,不能再草率做决定了。
之前也提过,想把那个搁置的项目重新写起来,因为现在也在学 unity 了,靠这个来进一步提升学习的动力是很好的方向。而且前期队友们都做了那么多准备了,感觉没有落地比较可惜。
我个人的想法是我先做一个框架出来,把流程跑通。资源部分使用文本或者简单的图片占位替代。
之前在电视投影仪ar 眼镜之间纠结,今天试用同事买的 ar 眼镜,有些被劝退了,对于近视人群的佩戴体验不是很好。戴上去比较费劲,且容易反光。
最近的状态有点像高三,从早忙到晚,专注时间比较长,回到家脑子里还有点兴奋
很喜欢黑客松的感觉,外部压力下短时间内快速实现想法,动力满满
## 备忘
dhcp 切换器
新版布局

View File

@ -1,37 +0,0 @@
---
date_created: 2025-01-31T13:07:18.000Z
date_modified: 2025-02-07T03:17:02.000Z
slug: blender-macos-steam-version-limitations
tags:
- Blender
- Steam
- macOS
- Apple Silicon
- Software Compatibility
description: >-
Important considerations when installing Blender via Steam on macOS for Apple
Silicon devices
title: Blender on macOS - Steam Version Limitations for Apple Silicon Devices
date: 2025-01-31T00:00:00.000Z
author: KazooTTT
type: Technical Note
status: Published
finished: true
published: true
category: 3D Modeling
toAstro: true
---
## 1. Steam Version Benefits
Key advantages of using Steam version:
- Automatic updates
- Usage time tracking
## 2. macOS Version Considerations
![IMG-F705691552F356BAFA7C7FEB418ED0B4](https://pictures.kazoottt.top/2025/01/20250131-IMG-F705691552F356BAFA7C7FEB418ED0B4.png)
- Steam provides **Intel-chip compatible version** only
- If you are Apple Silicon user, the performance may be affected

View File

@ -1,86 +0,0 @@
---
title: ChainForge简单介绍
date: 2024-05-22T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- llm
- chainforge
- 工具
finished: true
published: true
category: AI
slug: chainforge-intro
description: >-
ChainForge is a visual programming environment designed for prompt
engineering, allowing users to evaluate and test prompts for large language
models (LLMs). It supports various use cases such as assessing prompt
effectiveness, conducting adversarial testing, and evaluating model
performance. The platform also facilitates the customization of LLMs through
its documentation on adding custom providers. Users can find practical
examples and tutorials on the ChainForge website and GitHub repository,
including a case study on Twitter and a video demonstrating LLM prompt
injection attacks and vulnerability testing. Additionally, ChainForge is
working on enhancing its functionality by enabling internal and proxy network
environments.
NotionID-notionnext: 40ec4f8d-2030-4ce1-b8c7-c1c9f56ef55b
link-notionnext: 'https://kazoottt.notion.site/ChainForge-40ec4f8d20304ce1b8c7c1c9f56ef55b'
rinId: 8
toAstro: true
date_created: 2025-01-04T03:44:53.000Z
date_modified: 2025-02-07T03:17:03.000Z
---
# ChainForge 简单介绍
![Pasted image 20240417222811](https://pictures.kazoottt.top/2024/05/20240522-c31876b89dcb822e411af1ef7992eb49.png)
官网:
[ChainForge: A visual programming environment for prompt engineering](https://chainforge.ai/)
github 地址:
[GitHub - ianarawjo/ChainForge: An open-source visual programming environment for battle-testing prompts to LLMs.](https://github.com/ianarawjo/ChainForge)
## 简介
![Pasted image 20240417223400](https://pictures.kazoottt.top/2024/05/20240522-a9e96bff073602718c11943e61bcf758.png)
## 使用场景
评估提示词
攻击性测试
评估模型
评估某项指标
## 实践
![Pasted image 20240417231517](https://pictures.kazoottt.top/2024/05/20240522-5fea389ac9bca4a43c076dc442d374e6.png)
这两个例子单独拿出来讲
## TODO
1. 内部环境运行
2. 内网环境 proxy [Add Custom Providers - ChainForge Documentation](<https://chainforge.ai/docs/custom_providers/> 提供了自定义 llm
## 参考
使用案例:
[X](https://twitter.com/9hills/status/1772467763165958602)
自动化 Prompts
[\[2402.10949\] The Unreasonable Effectiveness of Eccentric Automatic Prompts](https://arxiv.org/abs/2402.10949)
相关的视频
[LLM Prompt Injection Attacks & Testing Vulnerabilities With ChainForge - YouTube](https://www.youtube.com/watch?v=x1_uEnoxvNs)
使用 ChainForge 进行 LLM 提示注入攻击和漏洞测试

View File

@ -1,41 +0,0 @@
---
title: MUV家元旦24H限定食堂 - 汇总网站
date: 2025-01-06T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- 项目
- milklove
- 同人
- milkpansa
- loverrukk
finished: true
published: true
category: 项目
slug: milklovemuv
description: null
toAstro: true
date_created: 2025-01-06T02:02:35.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
[MUV家元旦24H限定食堂 - 汇总](https://milklovemuv.com/)
## 介绍
方便后续回顾,写了一个 [#muv家元旦24h限定食堂#](https://s.weibo.com/weibo?q=%23muv%E5%AE%B6%E5%85%83%E6%97%A624h%E9%99%90%E5%AE%9A%E9%A3%9F%E5%A0%82%23) 的汇总网站。
点击卡片内的微博图标可以跳转到对应的微博,点击蓝色的外链图标可以直接跳转至查看文章或者视频的平台。
非常感谢各位老师的产出
![IMG-20250106115740490](https://pictures.kazoottt.top/2025/01/20250106-b1e56dd97c719d35d9e7db0486caf588.png)
---
## 开发
开发本身没有花太多时间,更多的时间是花在了把相关的信息整理为结构化的数据上面(应该有更系统的方法,实现更系统的方法会花费更多时间,虽然以后会受益,但这次想着快速开发就直接人工 + 部分 llm 辅助整理了)
![ac2f17b6-d280-4e7d-957a-485d72bd3668.svg](https://wakatime.com/badge/user/d3dc2570-e4bf-4469-b0c2-127b495e8b91/project/ac2f17b6-d280-4e7d-957a-485d72bd3668.svg)

View File

@ -1,91 +0,0 @@
---
title: Perplexity系列产品
date: 2024-09-04T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- AI
- 搜索引擎
- Perplexity
- Playground
- 播客
finished: true
published: true
category: 软件
slug: perplexity-productions-intro
description: 概述Perplexity系列产品包括搜索引擎、Playground和播客重点介绍其功能和区别。
NotionID-notionnext: ae2fba46-af30-4bd5-b6d0-fe751c162800
link-notionnext: 'https://kazoottt.notion.site/01-Perplexity-ae2fba46af304bd5b6d0fe751c162800'
toAstro: true
date_created: 2025-01-04T03:44:53.000Z
date_modified: 2025-02-07T03:17:03.000Z
---
# Perplexity 系列产品
## 产品 1 Perplexity 搜索引擎
![IMG-20240904094448497](https://pictures.kazoottt.top/2024/10/20241012-IMG-20240904094448497.png)
<https://www.perplexity.ai/>
### 普通和 Pro 的区别
![IMG-20240904001354592](https://pictures.kazoottt.top/2024/09/20240904-82efc9478928cf3428241d5cdbe1f7e2.png)
![IMG-20240904001354629](https://pictures.kazoottt.top/2024/09/20240904-b48e87c80c053f5afc32f440ab36959c.png)
### 频繁人工验证怎么办
![IMG-20240904001354676](https://pictures.kazoottt.top/2024/09/20240904-aa07d424f893146a987cccdcf7ae5bcf.png)
[Perplexity - AI Search - Chrome 应用商店](https://chromewebstore.google.com/detail/perplexity-ai-search/bnaffjbjpgiagpondjlnneblepbdchol)
![IMG-20240904001354729](https://pictures.kazoottt.top/2024/09/20240904-836c90b245302d2dd60fc14009e8aab1.png)
### 同类别产品
[Devv AI](https://devv.ai/) (编程向)
![IMG-20240904094534311](https://pictures.kazoottt.top/2024/10/20241012-IMG-20240904094534311.png)
## 产品 2 Perplexity Playground
体验最新大模型
<https://labs.perplexity.ai/>
![IMG-20240904001354800](https://pictures.kazoottt.top/2024/09/20240904-4a2f2948f9bda0d445948efd5d021e8c.png)
![IMG-20240904001354854](https://pictures.kazoottt.top/2024/09/20240904-9988cdc07d33329b209ee5f44269caef.png)
[Introducing Llama 3.1: Our most capable models to date](https://ai.meta.com/blog/meta-llama-3-1/)
![IMG-20240904001354881](https://pictures.kazoottt.top/2024/09/20240904-e5c298074d3edb3aa59b00a86c20ef0e.png)
[Changelog - Perplexity](https://docs.perplexity.ai/changelog/changelog#introducing-new-and-improved-sonar-models)
![IMG-20240904001354925](https://pictures.kazoottt.top/2024/09/20240904-6757a9b6e9c488d8faad8ae28a2e48e1.png)
## 产品 3 Perplexity 播客
[资讯汇总 Discover](https://www.perplexity.ai/discover)
![IMG-20240904001354996](https://pictures.kazoottt.top/2024/09/20240904-c06edb7427f2885aa1d8b3bd69659719.png)
Perplexity 和 eleventlab 合作,把 Discover 的内容转成播客了。
![Pasted image 20240308104550 1](https://pictures.kazoottt.top/2024/09/20240904-c2dbdcea85e283af86a34fe244f1b8e4.png)
![IMG-20240904001355089](https://pictures.kazoottt.top/2024/09/20240904-a904a8102ea53bd3a8619b43f6e4a770.png)
很适合练习听力以及了解科技资讯。地址:[Discover Daily by Perplexity](https://discoverdaily.ai/)
[spotify](https://open.spotify.com/episode/1CaSWrm7uUAOkaKjE9KI47?si=WPbA0x73QkGEPm-DFh4big)
[pca.st](https://pca.st/03qazv0d)
支持 rss
![IMG-20240904001355142](https://pictures.kazoottt.top/2024/09/20240904-51cb08cfa94e457d09ca0cfbaec6d604.png)

View File

@ -1,58 +0,0 @@
---
title: >-
Possible Causes and Solutions for Focusee Switching System Audio to Speaker
Playback forcibly
date: 2024-05-25T00:00:00.000Z
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-en
description: >-
如果你想使用Focusee录制系统音首先需要安装Gemoo Speaker安装后可以将输出设备更改为Gemoo
Speaker并用它录制系统音。但是注意不要在安装Gemoo
Speaker的过程中也安装BlackHole2ch这可能会导致无法正确录制音频。解释安装BlackHole2ch的方法是删除与其相关的文件夹。
如果你需要录制系统音时可以使用OBS。首先添加屏幕捕获源然后选择是否要录制桌面音或应用音。
如果你需要录制系统音时可以使用OBS。首先添加屏幕捕获源然后选择是否要录制桌面音或应用音。
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
category: 软件
toAstro: true
date_created: 2024-12-02T03:03:21.000Z
date_modified: 2025-02-07T03:46:35.000Z
---
# 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.
![image.png](https://pictures.kazoottt.top/2024/05/20240525-26e60249b527dc5dc46c78eb123769bf.png)
---
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.
![SCR-20240525-qcob-2.png](https://pictures.kazoottt.top/2024/05/20240525-862b985a72997075bf72d8dd84efa46c.png)
2. Choose whether to capture desktop audio or application audio based on your needs.
![image.png](https://pictures.kazoottt.top/2024/05/20240525-b1ea5d3a03406f26588601ed66067a05.png)

View File

@ -1,82 +0,0 @@
---
title: Reasons Not to Recommend Purchasing Focusee for macOS Users
date: 2024-06-20T00:00:00.000Z
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
toAstro: true
date_created: 2024-12-02T03:03:21.000Z
date_modified: 2025-02-08T11:09:45.000Z
---
# 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:
![8c214f3f-65f7-49d6-8abd-7011886b3392-spark-clipboard](https://pictures.kazoottt.top/2024/06/20240620-f8632859027aa520b2acfe05f8010997.jpg)
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.
![CleanShot 2024-06-20 at 14.48.02](https://pictures.kazoottt.top/2024/06/20240620-7c6bb9ad347fed77aba7ee6ec6316dd0.png)
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).
![CleanShot 2024-06-20 at 14.55.42](https://pictures.kazoottt.top/2024/06/20240620-0edca0a2dee7d10c1877c25a3aa1fbd3.png)
### 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](/notes/possible-causes-and-solutions-for-focusee-switching-system-audio-to-speaker-playback-forcibly-en)
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.

View File

@ -1,53 +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
description: >-
# ES Module 问题__dirname 不定义 在使用
TypeScript创建的ESM文件中遇到__dirname不定义的问题通常是因为使用了module的语法应该改为ESM的写法。两种解决方法分别是改为module的写法和改为ESM的写法。
## 改为module的写法 在这种方法中需要把import改为require将后缀从ts改为cts。
但这种方式并不推荐,因为它可能会导致文件相对路径的问题。 ## 改为ESM的写法
可以通过利用import.meta.url和fileURLToPath函数获取当前模块的目录路径来解决__dirname不定义的问题。
```typescript import { fileURLToPath } from "url" import path from "path" //
获取当前模块的目录路径 const __filename = fileURLToPath(import.meta.url) const __dirname
= path.dirname(__filename) ``` 这种方法推荐使用,避免了相对路径的问题。
toAstro: true
date_created: 2025-01-04T03:44:53.000Z
date_modified: 2025-02-07T03:25:34.000Z
---
# __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)
```

View File

@ -1,34 +0,0 @@
---
title: askfm的关停
date: 2025-02-05T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- askfm
- 爬虫
finished: false
published: false
category: 软件
slug: askfm-shutdown
description: null
toAstro: true
date_created: 2025-02-04T16:48:47.000Z
date_modified: 2025-02-07T03:17:02.000Z
---
今天翻了一下 todo list, 发现其中有一个是:写 askfm 爬虫
![IMG-10B1F940E0B13DE5FDFB9493A2502DE0](https://pictures.kazoottt.top/2025/02/20250205-IMG-10B1F940E0B13DE5FDFB9493A2502DE0.png)
于是心血来潮去想去回顾一下 askfm发现网站已经无法访问了。
![IMG-166598D5810641495277DB4DE4F67686](https://pictures.kazoottt.top/2025/02/20250205-IMG-166598D5810641495277DB4DE4F67686.png)
然后在 reddit 上搜到这个网站在 20241201 的时候关停了
![IMG-3B8AC1BA520FBB7E13D5029AC1D59765](https://pictures.kazoottt.top/2025/02/20250205-IMG-3B8AC1BA520FBB7E13D5029AC1D59765.png)
突然感觉承载了一些记忆的平台就这样关停了,还是挺可惜的。
而且如果不及时关注网站发布的公告,可能连最后备份的机会都没有,所有的数据就这样瞬间清空。

View File

@ -1,57 +0,0 @@
---
title: file-downloader
date: 2024-02-18T00:00:00.000Z
author: KazooTTT
tags:
- file-downloader
- 项目
- npm包
finished: true
published: true
slug: file-downloader
description: >-
本文介绍了两个用于文件下载的函数:`downloadFileFromURL`
`downloadFileFromBlob``downloadFileFromURL`
函数用于从指定的URL下载文件可以自定义文件名`downloadFileFromBlob`
函数则用于从Blob对象下载文件同样支持自定义文件名。这两个函数均来自 `@kzttools/file-downloader`
该包的NPM地址和GitHub地址均已提供。项目遵循MIT许可证作者为kazoottt。
rinId: 63
category: 项目
toAstro: true
date_created: 2024-12-17T05:34:45.000Z
date_modified: 2025-01-22T05:39:24.000Z
---
# File Download
封装了对于 url 和 blob 类型文件的下载方法。
## downloadFileFromURL
```ts
function downloadFileFromURL(url: string, filename?: string)
```
url 是网络请求的链接filename 不是必填,如果填了那么下载文件名称=filename
## downloadFileFromBlob
```ts
function downloadFileFromBlob(blob: Blob | MediaSource, filename: string)
```
blob 是一个 blob 对象一般从后端获取filename 不是必填,如果填了那么下载文件名称=filename
# 地址
npm 地址:
[@kzttools/file-downloader - npm](https://www.npmjs.com/package/@kzttools/file-downloader)
github 地址:
[GitHub - kzttools/file-downloader](https://github.com/kzttools/file-downloader)
## License
[MIT](./LICENSE) License © 2023-PRESENT [kazoottt](https://github.com/kazoottt)

View File

@ -1,52 +0,0 @@
---
title: focusee录制系统声音被强制切换为扬声器播放的可能原因和解决方法
date: 2024-05-25T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- focusee
- obs
- 虚拟声卡
- BlackHole2ch
finished: true
published: true
slug: >-
possible-causes-and-solutions-for-focusee-switching-system-audio-to-speaker-playback-forcibly
description: macOS上使用focusee录制系统声音时遇到问题。解决方法是卸载BlackHole2ch并通过obs选择录制桌面音频或应用音频。
NotionID-notionnext: 8ac966eb-66b4-4f39-b2fa-3fd4e4911a41
link-notionnext: 'https://kazoottt.notion.site/focusee-8ac966eb66b44f39b2fa3fd4e4911a41'
rinId: 41
category: 软件
toAstro: true
date_created: 2024-12-17T05:34:45.000Z
date_modified: 2025-02-07T03:46:54.000Z
---
# Focusee 录制系统声音被强制切换为扬声器播放的可能原因和解决方法
在 macOS 上,我想要使用 focusee 录制系统声音的时候我按照它的引导安装了 Gemoo Speaker
虽然输出设备切换到 Gemoo Speaker 输出,这样确实可以录制到系统的声音了,但是是直接用扬声器外放的声音。
后来我发现是我安装了 BlackHole2ch 的原因卸载掉这个虚拟声卡之后focusee 就通过 Gemoo Speaker 可以正常地录制到耳机里的声音了。
卸载方法:
`/Library/Audio/Plug-Ins/HAL`
在这个文件夹中删除 BlackHole2ch 对应的文件夹即可
![image.png](https://pictures.kazoottt.top/2024/05/20240525-26e60249b527dc5dc46c78eb123769bf.png)
---
顺带一提,当时安装 BlackHole2ch 的原因是想要在录屏或者直播的时候录制到系统的声音,今天我突然发现 obs 已经支持了直接录制系统声音的功能。
具体的操作是:
1. 点击来源下方的添加按钮,选择 macOS 音频采集
![SCR-20240525-qcob-2.png](https://pictures.kazoottt.top/2024/05/20240525-862b985a72997075bf72d8dd84efa46c.png)
2. 根据你的需求选择是采集桌面音频还是应用音频。
![image.png](https://pictures.kazoottt.top/2024/05/20240525-b1ea5d3a03406f26588601ed66067a05.png)

View File

@ -1,95 +0,0 @@
---
title: how to make a hollow cylinder in blender
date: 2025-01-15T00:00:00.000Z
author: KazooTTT
type: Post
status: Published
tags:
- blender
- cylinder
- model
finished: true
published: true
category: blender
slug: how-to-make-a-hollow-cylinder-in-blender
description: null
toAstro: true
date_created: 2025-01-14T16:38:23.000Z
date_modified: 2025-02-07T03:17:02.000Z
---
this is a blender note is to record how to make a hollow cylinder in blender.
we can split the problem into these parts:
1. create a cylinder
2. make the cylinder hollow
## 1. create a cylinder
method 1: in the object mode, press `shift + a` and select `mesh - cylinder`, we can create a cylinder in the scene.
![alt text](https://pictures.kazoottt.top/2025/01/20250115-cf0f5589dff49f5bd74887545528245b.png)
method 2: at the left top of the screen, click `add - mesh - cylinder`, we can create a cylinder in the scene, too.
![alt text](https://pictures.kazoottt.top/2025/01/20250115-3a42f7aaeffe74d9161f35d1fa18068f.png)
## (optional) 2. edit the cylinder when adding it
after we add a cylinder, we can see there has a `add cylinder` panel in the bottom left of the screen.
and if we click the `add cylinder` panel, we can edit the props of the cylinder, such as the vertex count, radius, depth, etc.
![alt text](https://pictures.kazoottt.top/2025/01/20250115-c15b02c04a8415e7f8188effa98f6bed.png)
because i am a new user of blender, so i will try to figure out the meaning of the props of panels one by one. (if you do not care about the meaning of the props, you can skip this part)
1. **Vertices**:
- Defines the number of edges or vertices around the base of the cylinder. A higher number results in a smoother circle, while a lower number creates a more polygonal shape.default 32
2. **Radius**:
- Sets the radius of the base of the cylinder. This controls how wide the cylinder is.default 1m
3. **Depth**:
- Determines the **height** of the cylinder along the Z-axis.default_2m
4. **Cap Fill Type**:
- Specifies the way the top and bottom caps of the cylinder are filled:
- **None**: Leaves the ends of the cylinder open.default
- **N-Gon**: Fills the ends with a single face (polygon) that spans the entire area.
- **Triangles**: Fills the ends with triangles arranged in a radial pattern.
5. **Generate UVs**:
- When checked, automatically generates UV mapping for the cylinder. This is useful for texturing the cylinder later.default checked
6. **Align**:
- Determines the alignment of the cylinder relative to the scene:
- **World**: Aligns the cylinder to the global coordinate system.
- **View**: Aligns the cylinder to the current camera view.
- **Cursor**: Aligns the cylinder based on the position and orientation of the 3D cursor.
7. **Location (X, Y, Z)**:
- Specifies the position of the cylinder in 3D space. These fields allow you to place the cylinder at exact coordinates.default 0,0,0 unit is meter
8. **Rotation (X, Y, Z)**:
- Defines the orientation of the cylinder by specifying its rotation around each of the three axes.default 0,0,0unit is degree
## 3. make the cylinder hollow
press the tab key to enter the edit mode, then press `s` to select all the vertices, and press `delete` to delete the vertices.
press the number key `3` to enable the `face selection` mode, then press `s` to select all the faces, and press `delete` to delete the faces.
press the button shift and left click the fases at the top and bottom of the cylinder, like this:
![alt text](https://pictures.kazoottt.top/2025/01/20250115-94ed6520719664ee3dfebab331d0adda.png)
attention: you should click the faces at the top and bottom both, not the vertices, not the single face or other faces.
then we press the `i` button to inset the faces, move the mouse and we can see the faces are inseted, like this:
![alt text](https://pictures.kazoottt.top/2025/01/20250115-2eeef440bbc377405873689b4560b32b.png)
then if then size is ok ,release the mouse
then press the `delete` button to delete the faces. (you should select the fases which you nested before)
![alt text](https://pictures.kazoottt.top/2025/01/20250115-6439ce14f7229427723f0694cfcae425.png)
now we can see the cylinder is hollow.
![alt text](https://pictures.kazoottt.top/2025/01/20250115-89fe97d1445513d78f54e6b99fbf45c3.png)

Some files were not shown because too many files have changed in this diff Show More