Compare commits
183 Commits
b60f893cbf
...
dependabot
Author | SHA1 | Date | |
---|---|---|---|
d322842acb | |||
ff2bb77707 | |||
f0752c8a1a | |||
f05b886396 | |||
48f3227688 | |||
77ae882b43 | |||
9c0973638a | |||
a1275593b9 | |||
262b6ed3ab | |||
8ba6f6e413 | |||
d652a45c13 | |||
c15c556c06 | |||
b63c52df9e | |||
ec402ffbfe | |||
a1fc14d838 | |||
ece753d46b | |||
e271a2efd9 | |||
bd2f5178ce | |||
a4d4ad6b93 | |||
c834969703 | |||
97ce476651 | |||
ea0268259d | |||
f343d4d18c | |||
37d80c7d79 | |||
0a72b399ce | |||
ebe5cc59a5 | |||
1f48dedb16 | |||
1a49d28395 | |||
827e6eeadf | |||
f816128ccc | |||
054047e2b4 | |||
baee12dd9f | |||
10cc40f869 | |||
6aed3ff17c | |||
3a4364976c | |||
7463daefe7 | |||
fa9ab1a4bc | |||
75da123e09 | |||
c03e9c6658 | |||
b5dd9d1f84 | |||
ee9a8e4b0a | |||
4c96c80101 | |||
fa09ed5bc1 | |||
07d4fcbc19 | |||
a563602baf | |||
a7f416df4f | |||
6dfdcc2234 | |||
c3ff39ab6e | |||
e4d7129465 | |||
c8c0250793 | |||
73d962248a | |||
0149481062 | |||
f3547b2e51 | |||
ed3119e37d | |||
723151fad0 | |||
befe3b6f11 | |||
433d2f1152 | |||
207d923ee7 | |||
535082b945 | |||
cc89da80d8 | |||
0c8cae5bea | |||
f8e73888d1 | |||
53487b36e7 | |||
6a3b085635 | |||
85ac5bcda1 | |||
1b16e54e09 | |||
4705878c1d | |||
e31323397b | |||
b5502d4cbe | |||
09b8958141 | |||
ac1173786f | |||
55040baff5 | |||
b2b1ba6dcd | |||
66ec490344 | |||
39652a9e90 | |||
4feb5e95af | |||
a9879a68b1 | |||
8e7273da0c | |||
807cf650f8 | |||
b7bf1eab35 | |||
b931b14013 | |||
e123d5928a | |||
e6a88b73af | |||
c36acc92c6 | |||
79e12689c9 | |||
013ede32a4 | |||
ee3068bc18 | |||
99b2d194bb | |||
f37e2a10bb | |||
ca268a37dc | |||
1a40d05221 | |||
f5085a2490 | |||
0fc8c6cb80 | |||
5a7c9eced0 | |||
45bbf23dbc | |||
66cbee31df | |||
ae886f5596 | |||
fcf0f24937 | |||
10abfc34a7 | |||
c5eca7b064 | |||
6b7e3f1b70 | |||
c12699b65c | |||
937eee5627 | |||
6dee4650b9 | |||
0e9ad45b65 | |||
fd1bbcbf21 | |||
47473a34f9 | |||
fdd2768e0c | |||
57ee25f4f3 | |||
58f4e095b5 | |||
64383959c0 | |||
bb1b0eaa5b | |||
2bfda8024b | |||
0cf1cbb56a | |||
e2e98f9cc7 | |||
c037d61e49 | |||
ab931dd953 | |||
0eba98f263 | |||
50d4e72216 | |||
b3004795f0 | |||
92aa02ed46 | |||
e7d79d1733 | |||
f5a8cd1a06 | |||
e5a5192922 | |||
7037b5a0fb | |||
ab9ca1ba14 | |||
57edf2f4e6 | |||
b187b8c9ca | |||
0e5bf1e01e | |||
c57de061be | |||
56d4cc877e | |||
eeed2a201b | |||
cf0ed3decd | |||
3e4539ddbe | |||
d3f479d891 | |||
27d1849336 | |||
8390d757ea | |||
a25ea16c36 | |||
febcdb06a4 | |||
a9928d78c8 | |||
d70d2af9d1 | |||
4288d472c7 | |||
2fd907f3e8 | |||
95fed683c8 | |||
492e9bac78 | |||
4fe221acf1 | |||
1c36e3f5ec | |||
a2bef5b7ad | |||
dd87317456 | |||
795af34d25 | |||
857eb8b1f8 | |||
ccf89cfb95 | |||
033aff4018 | |||
3a1aebd718 | |||
4bf67ab53a | |||
f2cf86e9d0 | |||
7bbe51e4bd | |||
a90b31a668 | |||
d3240e607c | |||
f5655ef972 | |||
80c2ee94a9 | |||
66478bb19a | |||
c20c2a39b5 | |||
d2f9072d90 | |||
5d2123077d | |||
71a46f6eee | |||
de56f79e7d | |||
8e20625972 | |||
d42c581794 | |||
35853958d2 | |||
fa9476ca80 | |||
6bea8d12e6 | |||
67698eed22 | |||
6639493f18 | |||
3af73ab320 | |||
c7b012a891 | |||
7912a06e82 | |||
e334636663 | |||
723b29e9d5 | |||
527e98e0d1 | |||
cd6388c0d6 | |||
902d84dded | |||
9a5bea6580 |
2
.github/workflows/main.yml
vendored
@ -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
|
||||
|
61
README.md
@ -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 2fa,messauto的半平替](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)
|
||||
|
@ -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: [
|
||||
|
@ -16,12 +16,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/markdown-remark": "^6.1.0",
|
||||
"@astrojs/mdx": "4.0.8",
|
||||
"@astrojs/mdx": "4.2.6",
|
||||
"@astrojs/react": "^4.2.0",
|
||||
"@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.0.7",
|
||||
"typescript": "^5.7.3"
|
||||
}
|
||||
},
|
||||
"packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6"
|
||||
}
|
||||
|
7734
pnpm-lock.yaml
generated
BIN
public/mdImages/IMG-011D19D13EDFE81DEB93DD909473FE07.png
Normal file
After Width: | Height: | Size: 7.0 MiB |
BIN
public/mdImages/IMG-0C9958D04B6611CA0549E874E30191F7.png
Normal file
After Width: | Height: | Size: 9.6 MiB |
BIN
public/mdImages/IMG-0CAF40BEB99FF683F714CE95D41C23F8.jpeg
Normal file
After Width: | Height: | Size: 210 KiB |
BIN
public/mdImages/IMG-0D175B70CD95C4BBB4C6FAF69C9AF06D.png
Normal file
After Width: | Height: | Size: 10 MiB |
BIN
public/mdImages/IMG-0D6BB6964D19AF5A39633F63A46EE430.png
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
public/mdImages/IMG-175A7D0403C666A77EDC045637DDCDCD.jpeg
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
public/mdImages/IMG-27E57C2F932F03BA78332F527ABECC3C.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
public/mdImages/IMG-2C2B9C98EF7B0A1DEFF1E1A269912DE2.png
Normal file
After Width: | Height: | Size: 246 KiB |
BIN
public/mdImages/IMG-2F53DF7357EC28522945C58351B62D96.png
Normal file
After Width: | Height: | Size: 847 KiB |
BIN
public/mdImages/IMG-35BB3944E412FBA781AF040F6893920F.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
public/mdImages/IMG-3BB6C980AE215D9FCB97F71C415135E1.png
Normal file
After Width: | Height: | Size: 9.9 MiB |
BIN
public/mdImages/IMG-3C592EDF4B92747CD6E3755E57AE372A.png
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
public/mdImages/IMG-41F8AD4A7B808D2191BF4861D3847A35.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
public/mdImages/IMG-4280029B164F70CB774332E5AE95D1DA.png
Normal file
After Width: | Height: | Size: 603 KiB |
BIN
public/mdImages/IMG-42E5510D67C42284041E3402E4D459AD.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
public/mdImages/IMG-51D0FD01D07773D514D8BB903F1DC6CA.png
Normal file
After Width: | Height: | Size: 19 MiB |
BIN
public/mdImages/IMG-5ECA04383C3D96B4A767C5A0B3463E19.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
public/mdImages/IMG-6819ED4AC0DA9B9CF3D106BE71AAADD3.png
Normal file
After Width: | Height: | Size: 317 KiB |
BIN
public/mdImages/IMG-682179B90CF4FDC5DB2A36189B316881.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
public/mdImages/IMG-745FC8CBCFE1B784E4EEB2F74860A255.png
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
public/mdImages/IMG-7CA6E2EC79AA6040BACEF006B13F8940.png
Normal file
After Width: | Height: | Size: 459 KiB |
BIN
public/mdImages/IMG-803E576335AF5653F8963BE7881E4DD8.png
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
public/mdImages/IMG-88633EA7BDD10531AFF07602F1A5D072.png
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
public/mdImages/IMG-9021D59207DD62599F7A11966E419698.png
Normal file
After Width: | Height: | Size: 241 KiB |
BIN
public/mdImages/IMG-946FF0883E29B42DB2023CE8E18C4751.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/mdImages/IMG-9C33AC8AD52429EFBF3BC3D1FD84DA5A.png
Normal file
After Width: | Height: | Size: 17 MiB |
BIN
public/mdImages/IMG-9C72E80EE99057103B55DCD293201880.png
Normal file
After Width: | Height: | Size: 241 KiB |
BIN
public/mdImages/IMG-A057E6D98847314E2A2742FB44382803.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
public/mdImages/IMG-A6AAE4B65CAEFB6B8E549F2AB75BADCD.png
Normal file
After Width: | Height: | Size: 219 KiB |
BIN
public/mdImages/IMG-B303974BEE5FF7D16E310D441BF06C23.png
Normal file
After Width: | Height: | Size: 17 MiB |
BIN
public/mdImages/IMG-BF22CA923126747336FA047AD2FFE0B3.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
public/mdImages/IMG-C4F896C16386AFFB89F1ED856D4D8319.png
Normal file
After Width: | Height: | Size: 788 KiB |
BIN
public/mdImages/IMG-C54B455556952B47DBE32B14D26E5548.png
Normal file
After Width: | Height: | Size: 147 KiB |
BIN
public/mdImages/IMG-CAC1EEA1E39685627A82ED14C5001F20.png
Normal file
After Width: | Height: | Size: 827 KiB |
BIN
public/mdImages/IMG-CC5FD58A2A879EFF190D4CEEB2601ABF.png
Normal file
After Width: | Height: | Size: 18 MiB |
BIN
public/mdImages/IMG-CFC7256A2D7BC1D6C014F1BED8A455CB.png
Normal file
After Width: | Height: | Size: 455 KiB |
BIN
public/mdImages/IMG-D95FCCD99DA3CEF64C2B2017B2AA4346.png
Normal file
After Width: | Height: | Size: 478 KiB |
BIN
public/mdImages/IMG-DE175F4D2C345F58E467656A11E3E2D8-1.png
Normal file
After Width: | Height: | Size: 2.2 MiB |
BIN
public/mdImages/IMG-F2941F88FBABE4EDDABB80C1DFED62EB.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
public/mdImages/IMG-F6EAF822377F64DB27E99C394FDAFDBC.png
Normal file
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 304 KiB |
@ -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>
|
||||
|
@ -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>
|
||||
|
30
src/components/RecentUpdate.astro
Normal 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>
|
||||
)
|
||||
}
|
@ -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",
|
||||
},
|
||||
];
|
||||
---
|
||||
|
@ -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>
|
||||
{
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
))
|
||||
|
@ -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>
|
||||
|
@ -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(),
|
||||
}),
|
||||
});
|
||||
|
||||
|
@ -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
|
@ -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 -->
|
||||
|
||||
## 直播
|
||||
|
||||
> 不需要 背负任何
|
||||
> 只需要空行囊和彼此就够
|
@ -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] 游泳
|
@ -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>
|
@ -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 组
|
||||
|
||||
下次要把拖鞋带来,洗完澡直接穿拖鞋回家。
|
@ -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 数据:
|
||||

|
||||
|
||||
## React-noiton-x
|
||||
|
||||
今天一直在看 react-noiton-x 的问题,因为博客里依赖了这个库的搜索接口,而该接口虽然在源代码里更新了,但是最新一次打包是二月份
|
||||

|
||||
|
||||
所以尝试自己从源代码打包一份,然后新发一个版本给自己使用。
|
||||
|
||||
遇到的问题有:
|
||||
|
||||
1. 忘记修改过 yarn 的代理(公司内网),导致安装失败。代理优先级应该是 yarn 自身代理>npm 代理
|
||||
2. 对于 workspace 的概念不熟悉
|
||||
3. 对于 npm 发布不熟悉
|
||||
后续要做的事:
|
||||
|
||||
打包,然后发布
|
||||
|
||||
## Blog
|
||||
|
||||
然后继续折腾了一下博客,接入了 sentry,
|
||||
之前的 giscus 评论区的样式是比较怪异的(即使切换了主题,背景色还是白色),今天做成适配的了。不过这个切换有些生硬,后续要加个过渡
|
||||

|
||||
|
||||
## 健身
|
||||
|
||||
状态不好,没去健身房,在家踩了椭圆机,3-11 档阻力交叉 30 分钟
|
||||
|
||||
=、= 感觉该换手表了,突然发现这个手表表盘市场都不兼容了
|
||||

|
||||

|
@ -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)
|
@ -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的问题)
|
@ -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 拦截 + 第一页数据填充
|
||||
后面要做的事:
|
||||
|
||||
实现滚动加载后,填充对应的数据
|
||||

|
||||
|
||||
## Inbox
|
||||
|
||||
[屏蔽推特黄推](/notes/blocking-twitter-yellow-tweets)
|
||||
[shot.so - 图片美化工具](/notes/shotso-image-beautification-tool)
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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 -->
|
||||
|
||||
## 今天要做的事情
|
||||
|
||||
## 打卡
|
||||
|
||||

|
||||
|
||||
## Inbox
|
@ -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
|
@ -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 星期一
|
||||
|
||||
## 今天要做的事情
|
||||
|
||||
## 打卡
|
||||
|
||||

|
||||
今天的 wakatime 有点恐怖了
|
||||
|
||||
## Inbox
|
||||
|
||||
<!-- start of weread -->
|
||||
<!-- end of weread -->
|
@ -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 -->
|
@ -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 -->
|
@ -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 -->
|
@ -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 提了 pr,autogen 的已经被合并了,这是第二次被 autogen 合并,
|
||||
|
||||
🙏非常感谢。
|
||||
|
||||
然后开通了 notion ai,发现它支持 google pay,这点对我来说挺友好的。开通的原因是想用它的自动生成 tags 和 summary 的功能。搭配 notionnext,比较方便。然后迁移了一部分本地的内容到博客上去。
|
||||
|
||||
买的时尚小垃圾到了,挺喜欢的。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
今天的不足之处是没有学习也没有刷题。
|
||||
|
||||
昨天太累了,今天早睡吧。晚安。
|
||||
|
||||
# 今天记录的内容
|
||||
|
||||
```dataview
|
||||
table file.path
|
||||
from ""
|
||||
where dateformat(file.ctime, "yyyy-MM-dd") = "2024-03-06"
|
||||
```
|
||||
|
||||
# 明天要做的事情
|
||||
|
||||
# Inbox
|
||||
|
||||
<!-- start of weread -->
|
||||
<!-- end of weread -->
|
@ -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)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[幸福的具象化](https://weibo.com/6083416567/P28jkx9MS#comment)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[girl rule cut](https://weibo.com/1750538651/P27NfAOja#comment)
|
||||
|
||||
[亲亲](https://weibo.com/1825971940/P288xfVxF#comment)
|
||||
|
||||

|
||||
|
||||
[二搭 预告片 婉司姬](https://weibo.com/1753015991/P27pq9oJU#comment)
|
||||
|
||||

|
||||
|
||||
[二搭 预告片 弯弯字幕组](https://weibo.com/7392264056/P27lQtUnd#comment)
|
||||
|
||||

|
||||
|
||||
[Findwichh推介会汇总](https://weibo.com/6613951279/P29c7fgx9#comment)
|
@ -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 赠送了试用的天数
|
||||
|
||||

|
||||
|
||||
个人感觉 cursor 的自动补全速度比 windsurf 快和智能很多
|
||||
|
||||
volview 也这么多 store,谁能看懂...
|
||||
|
||||

|
||||
|
||||
`src\components\tools\crop\Crop2D.vue`
|
||||
|
||||
啥意思
|
||||
|
||||

|
||||
|
||||
安装 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)
|
@ -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
|
||||
|
||||

|
||||
|
||||
[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 真好玩
|
||||
|
||||
我怎么这么久了才开始玩(谢谢酱紫表的安利)
|
||||
|
||||

|
||||
|
||||
[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)
|
@ -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 (需要登录)
|
||||
|
||||

|
||||
|
||||
[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 手搓这种图
|
||||
|
||||

|
||||
|
||||
最近可以做的事情:
|
||||
|
||||
编辑器图片上传重构
|
||||
编辑器高度修改
|
||||
|
||||
行间高度调整
|
||||
|
||||
用 rn 重写移动端
|
||||
ml 资源整合
|
||||
vtk、图形学学习
|
||||
obsidian 插件 ollama generate slug tags
|
@ -1,34 +0,0 @@
|
||||
---
|
||||
title: 2024-11-30 星期六
|
||||
date: 2024-11-30T00:00:00.000Z
|
||||
day_of_week: 星期六
|
||||
author: KazooTTT
|
||||
tags:
|
||||
- 日记
|
||||
description: >-
|
||||
为了更快地启动 Visual Studio Code(VSCode)extention,先按下 Ctrl+Shift+P或Cmd+Shift+P进入
|
||||
Command Pallete。然后输入“Startup Performance”并选择相关选项,完成后记得激活功能以保持其设置。
|
||||
如果存在占用特定端口的程序,请使用命令“lsof -i :<PORT>”识别端口对应的进程ID(PID),再使用命令“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+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 “Startup Performance” 并选择该选项。 关注:Finish Activate
|
||||
|
||||
kill 端口为 x 的进程
|
||||
|
||||
```
|
||||
lsof -i :<PORT>
|
||||
kill -9 <PID>
|
||||
```
|
||||
|
||||
```
|
||||
kill -9 $(lsof -t -i :<PORT>)
|
||||
```
|
@ -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 了
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
上周在忙什么?主要是做 vtk.js 的开发花了很多时间,不然后续的需求查漏补缺我不会做的这么着急。
|
||||
|
||||
对于 vtk.js 的掌握程度还是太低了,甚至连 polydata 的变化要怎么写都是临时掌握的。不过好在上周耐心理了一下项目里复杂的数据流转,清晰了很多。
|
||||
|
||||

|
||||
|
||||
然后今天主要再写文档,写得头昏眼花的,好容易走神。
|
||||
|
||||
---
|
||||
|
||||
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/)
|
||||
|
||||

|
@ -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:靠一些不切实际的信念感在往下走
|
||||
但是感觉明年就该清醒了
|
@ -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/)
|
||||
|
||||

|
||||
|
||||
## 碎片化记录(基于 n8n + rss + 飞书 webhook 生成)
|
||||
|
||||
11:53:昨天的打卡
|
||||
|
||||
12:27:这个真的很好用
|
||||
|
||||
不打游戏,办公够了
|
||||
|
||||
安利安利
|
||||
|
||||
13:11:21 牛爱能闪耀运动会吗
|
||||
|
||||
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:转发微博
|
||||
|
||||
- 转发 @全是狗狗啊: 只要一碰小狗狗的鼻子,狗狗就会自动地吐舌头!这也太可爱了吧!啊啊啊啊我能玩一天 全是狗狗啊的微博视频
|
||||
|
@ -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,方便自己,也能增加熟练度。(比如前端封装 slider,unity 中也封装 slider)
|
||||
|
||||
最后就是直接阅读后续要上手的项目代码并学习使用 remote app 快速看效果。
|
||||
|
||||
其实在大学的时候有参加过 VR 的社团,当时看过 B 站上一个虚拟小屋的教学视频也体验过 VR 设备。后来大创也申报过 VR + 医疗相关的项目,不过被砍后已经很久没有接触过 unity。
|
||||
|
||||
然后去年和同担一起有策划过一个模拟经营类的游戏,但是因为我太忙并且主动性不高这个项目搁置了。希望能通过这次好好学一下 unity 并把这个项目重新做起来。(做到一定阶段再跟别人说,而不是还没开始就大范围告诉他人,我觉得我一直都是这种喜欢给自己画饼之余也爱给别人画饼的,这样的缺点真的需要改)
|
||||
|
||||
今天同组同事也跟我聊了一下,教了我一些技巧,有句话对我来说印象比较深刻就是“你就是缺了迈出去的那一步。”
|
||||
|
||||
不管怎么样实践和学习总是没错,不要抵触新的事物,先做一个垃圾出来至少也算是做出来了。
|
||||
|
||||

|
@ -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 切换器
|
||||
|
||||
新版布局
|
@ -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
|
||||
|
||||

|
||||
|
||||
- Steam provides **Intel-chip compatible version** only
|
||||
- If you are Apple Silicon user, the performance may be affected
|
@ -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 简单介绍
|
||||
|
||||

|
||||
|
||||
官网:
|
||||
|
||||
[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)
|
||||
|
||||
## 简介
|
||||
|
||||

|
||||
|
||||
## 使用场景
|
||||
|
||||
评估提示词
|
||||
|
||||
攻击性测试
|
||||
|
||||
评估模型
|
||||
|
||||
评估某项指标
|
||||
|
||||
## 实践
|
||||
|
||||

|
||||
|
||||
这两个例子单独拿出来讲
|
||||
|
||||
## 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 提示注入攻击和漏洞测试
|
@ -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) 的汇总网站。
|
||||
|
||||
点击卡片内的微博图标可以跳转到对应的微博,点击蓝色的外链图标可以直接跳转至查看文章或者视频的平台。
|
||||
|
||||
非常感谢各位老师的产出
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 开发
|
||||
|
||||
开发本身没有花太多时间,更多的时间是花在了把相关的信息整理为结构化的数据上面(应该有更系统的方法,实现更系统的方法会花费更多时间,虽然以后会受益,但这次想着快速开发就直接人工 + 部分 llm 辅助整理了)
|
||||
|
||||

|
@ -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 搜索引擎
|
||||
|
||||

|
||||
|
||||
<https://www.perplexity.ai/>
|
||||
|
||||
### 普通和 Pro 的区别
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 频繁人工验证怎么办
|
||||
|
||||

|
||||
|
||||
[Perplexity - AI Search - Chrome 应用商店](https://chromewebstore.google.com/detail/perplexity-ai-search/bnaffjbjpgiagpondjlnneblepbdchol)
|
||||
|
||||

|
||||
|
||||
### 同类别产品
|
||||
|
||||
[Devv AI](https://devv.ai/) (编程向)
|
||||
|
||||

|
||||
|
||||
## 产品 2 Perplexity Playground
|
||||
|
||||
体验最新大模型
|
||||
|
||||
<https://labs.perplexity.ai/>
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
[Introducing Llama 3.1: Our most capable models to date](https://ai.meta.com/blog/meta-llama-3-1/)
|
||||
|
||||

|
||||
|
||||
[Changelog - Perplexity](https://docs.perplexity.ai/changelog/changelog#introducing-new-and-improved-sonar-models)
|
||||
|
||||

|
||||
|
||||
## 产品 3 Perplexity 播客
|
||||
|
||||
[资讯汇总 Discover](https://www.perplexity.ai/discover)
|
||||
|
||||

|
||||
|
||||
Perplexity 和 eleventlab 合作,把 Discover 的内容转成播客了。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
很适合练习听力以及了解科技资讯。地址:[Discover Daily by Perplexity](https://discoverdaily.ai/)
|
||||
|
||||
[spotify](https://open.spotify.com/episode/1CaSWrm7uUAOkaKjE9KI47?si=WPbA0x73QkGEPm-DFh4big)
|
||||
|
||||
[pca.st](https://pca.st/03qazv0d)
|
||||
|
||||
支持 rss
|
||||
|
||||

|
@ -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.
|
||||
|
||||

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

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

|
@ -1,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:
|
||||
|
||||

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

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

|
||||
|
||||
### Very Slow Export Speed
|
||||
|
||||
The slowness is quite noticeable. My configuration is a Mac Mini M2 Pro, and whether adding effects to the recorded video or exporting it directly without any changes, the speed is very slow.
|
||||
|
||||
### Sound Card Configuration Conflicts and Lack of Single Application Recording
|
||||
|
||||
Focusee's sound card settings conflict with other virtual sound cards on my system, possibly causing the sound output to be forcibly switched to speakers, and I can't switch back to headphones.
|
||||
|
||||
Issue troubleshooting and solutions: [Possible Causes and Solutions for Focusee Switching System Audio to Speaker Playback forcibly](/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.
|
@ -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)
|
||||
```
|
@ -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 爬虫
|
||||
|
||||

|
||||
|
||||
于是心血来潮去想去回顾一下 askfm,发现网站已经无法访问了。
|
||||
|
||||

|
||||
|
||||
然后在 reddit 上搜到这个网站在 20241201 的时候关停了
|
||||
|
||||

|
||||
|
||||
突然感觉承载了一些记忆的平台就这样关停了,还是挺可惜的。
|
||||
|
||||
而且如果不及时关注网站发布的公告,可能连最后备份的机会都没有,所有的数据就这样瞬间清空。
|
@ -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)
|
@ -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 对应的文件夹即可
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
顺带一提,当时安装 BlackHole2ch 的原因是想要在录屏或者直播的时候录制到系统的声音,今天我突然发现 obs 已经支持了直接录制系统声音的功能。
|
||||
|
||||
具体的操作是:
|
||||
|
||||
1. 点击来源下方的添加按钮,选择 macOS 音频采集
|
||||

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

|
@ -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.
|
||||
|
||||

|
||||
|
||||
method 2: at the left top of the screen, click `add - mesh - cylinder`, we can create a cylinder in the scene, too.
|
||||
|
||||

|
||||
|
||||
## (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.
|
||||
|
||||

|
||||
|
||||
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,0)unit 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:
|
||||
|
||||

|
||||
|
||||
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:
|
||||
|
||||

|
||||
|
||||
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)
|
||||
|
||||

|
||||
|
||||
now we can see the cylinder is hollow.
|
||||
|
||||

|
@ -1,40 +0,0 @@
|
||||
---
|
||||
date_created: 2025-01-20T01:56:29.000Z
|
||||
date_modified: 2025-02-07T03:17:02.000Z
|
||||
slug: how-to-separate-object-in-blender
|
||||
tags:
|
||||
- Blender
|
||||
- 3D Modeling
|
||||
- Mesh Editing
|
||||
- Shortcut Keys
|
||||
description: >-
|
||||
Step-by-step guide to separating objects in Blender using three different
|
||||
methods
|
||||
title: How to Separate Objects in Blender
|
||||
date: 2025-01-20T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
type: Tutorial
|
||||
status: Published
|
||||
finished: true
|
||||
published: true
|
||||
category: blender
|
||||
toAstro: true
|
||||
---
|
||||
|
||||
how to separate object in blender
|
||||
|
||||
1. press tab to enter the edit mode
|
||||
2. select the object you want to separate
|
||||
3. click right mouse button or press the p directly to separate the object
|
||||
|
||||

|
||||
|
||||
there are three kinds of separation:
|
||||
|
||||
1. Selection (if you want to separate the object by selection, choose this)
|
||||
2. By Material
|
||||
3. By Loose Parts
|
||||
|
||||
## reference
|
||||
|
||||
<https://docs.blender.org/manual/en/latest/modeling/meshes/editing/mesh/separate.html>
|