Compare commits
193 Commits
b60f893cbf
...
main
Author | SHA1 | Date | |
---|---|---|---|
764305d2a2 | |||
fb5122e0a6 | |||
3048a45b71 | |||
eaf435e811 | |||
57bd44199d | |||
64083959b3 | |||
e411338a9e | |||
c89211f135 | |||
dc99617273 | |||
b0dc31c51b | |||
4d1c6b9b3a | |||
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: [
|
||||
|
@ -21,7 +21,7 @@
|
||||
"@astrojs/rss": "4.0.11",
|
||||
"@astrojs/sitemap": "3.2.1",
|
||||
"@giscus/react": "^3.1.0",
|
||||
"@tailwindcss/vite": "4.0.3",
|
||||
"@tailwindcss/vite": "4.0.7",
|
||||
"astro": "5.2.5",
|
||||
"astro-expressive-code": "^0.40.1",
|
||||
"astro-icon": "^1.1.5",
|
||||
@ -66,7 +66,8 @@
|
||||
"prettier-plugin-astro": "0.14.1",
|
||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||
"reading-time": "^1.5.0",
|
||||
"tailwindcss": "4.0.4",
|
||||
"tailwindcss": "4.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-0187CF71B8111B5DAC91D43FE53BF99C.png
Normal file
After Width: | Height: | Size: 437 KiB |
BIN
public/mdImages/IMG-01C29A2AE7B2AC74CD42B4232F8B0368.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
public/mdImages/IMG-046D624E2839F47D99268E99A1ECD6F3.png
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
public/mdImages/IMG-0733EB60BEF8A8FC852B6A469970771A.jpeg
Normal file
After Width: | Height: | Size: 210 KiB |
BIN
public/mdImages/IMG-0AAA2B5AFBB693960833F35AD42391FC.jpeg
Normal file
After Width: | Height: | Size: 1.2 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-12D6893D54D5C4588252994BEF51884F.png
Normal file
After Width: | Height: | Size: 663 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-77D03748577291EADAE256CF51FD017C.png
Normal file
After Width: | Height: | Size: 206 KiB |
BIN
public/mdImages/IMG-7AE3856CBA3784A64BCD7F53381D2D97.png
Normal file
After Width: | Height: | Size: 560 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-85F1FB61FECED4BC5A9195C797244402.jpeg
Normal file
After Width: | Height: | Size: 238 KiB |
BIN
public/mdImages/IMG-88633EA7BDD10531AFF07602F1A5D072.png
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
public/mdImages/IMG-8A0ACC1338DF74A12910C831D3F58710.jpeg
Normal file
After Width: | Height: | Size: 191 KiB |
BIN
public/mdImages/IMG-8CC93AB4E3FAD972BCDF049C8A100E6B.png
Normal file
After Width: | Height: | Size: 356 KiB |
BIN
public/mdImages/IMG-9021D59207DD62599F7A11966E419698.png
Normal file
After Width: | Height: | Size: 241 KiB |
BIN
public/mdImages/IMG-90FA33702CABD88A0FD81D714715B375.jpeg
Normal file
After Width: | Height: | Size: 249 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-AAE1EE75A3170CFB8AEA51BE61FF73C7.png
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
public/mdImages/IMG-AEAF37AC3A662CDFD9DCC3025D7B1A80.png
Normal file
After Width: | Height: | Size: 281 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-C9A975C74715582A031F0CE5BA2B5B7C.png
Normal file
After Width: | Height: | Size: 299 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-CE5A15A6A4FD83171688A87A51A3CF74.png
Normal file
After Width: | Height: | Size: 1.1 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 |
BIN
public/mdImages/IMG-FE6445F72AB7AAB3C9F93EAB7764004C.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 458 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>
|
||||
)
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
import { Icon } from "astro-icon/components";
|
||||
|
||||
/**
|
||||
/**
|
||||
Uses https://www.astroicon.dev/getting-started/
|
||||
Find icons via guide: https://www.astroicon.dev/guides/customization/#open-source-icon-sets
|
||||
Only installed pack is: @iconify-json/mdi
|
||||
@ -27,6 +27,11 @@ const socialLinks: {
|
||||
link: "https://x.com/kazoottt",
|
||||
name: "mdi:twitter",
|
||||
},
|
||||
{
|
||||
friendlyName: "YouTube",
|
||||
link: "https://www.youtube.com/@kazoottt255",
|
||||
name: "mdi:youtube",
|
||||
},
|
||||
{
|
||||
friendlyName: "Photo",
|
||||
link: "https://unsplash.com/@kazoottt",
|
||||
@ -35,7 +40,12 @@ const socialLinks: {
|
||||
{
|
||||
friendlyName: "汇总",
|
||||
link: "https://bento.me/KazooTTT",
|
||||
name: "mdi:link",
|
||||
name: "mdi:open-in-new",
|
||||
},
|
||||
{
|
||||
friendlyName: "rss",
|
||||
link: "https://blog.kazoottt.top/rss.xml",
|
||||
name: "mdi:rss-box",
|
||||
},
|
||||
];
|
||||
---
|
||||
|
@ -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>
|
||||
|
@ -13,7 +13,7 @@ const {
|
||||
<li class={`${depth > 2 ? "ms-2" : ""}`}>
|
||||
<a
|
||||
class={`line-clamp-2 hover:text-accent ${depth <= 2 ? "mt-3" : "mt-2 text-xs"}`}
|
||||
href={`#${slug}`}><span aria-hidden="true" class="me-0.5">#</span>{text}</a
|
||||
href={`#${slug}`}><span aria-hidden="true" class="me-0.5"></span>{text}</a
|
||||
>
|
||||
{
|
||||
!!children.length && (
|
||||
|
@ -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>)
|
||||
```
|