mirror of
https://github.com/KazooTTT/kazoottt-blog-v2.git
synced 2025-06-25 03:31:29 +08:00
Compare commits
14 Commits
dependabot
...
37d80c7d79
Author | SHA1 | Date | |
---|---|---|---|
37d80c7d79 | |||
0a72b399ce | |||
ebe5cc59a5 | |||
1f48dedb16 | |||
1a49d28395 | |||
827e6eeadf | |||
f816128ccc | |||
054047e2b4 | |||
baee12dd9f | |||
10cc40f869 | |||
6aed3ff17c | |||
3a4364976c | |||
7463daefe7 | |||
fa9ab1a4bc |
12
README.md
12
README.md
@ -1,15 +1,13 @@
|
||||
# KazooTTT | 声控烤箱 博客
|
||||
# KazooTTT 博客
|
||||
|
||||
## 关于我
|
||||
|
||||
无论是博客还是笔记,最重要的服务对象是我自己。
|
||||
|
||||
[平台合集](<https://bento.me/kazoottt>)
|
||||
[平台合集](https://bento.me/kazoottt)
|
||||
|
||||
[个人博客|Blog](<https://blog.kazoottt.top/>)
|
||||
|
||||
[个人笔记 | Notes](<https://notes.kazoottt.top/>)
|
||||
|
||||
[GitHub](<https://github.com/KazooTTT>)
|
||||
[个人博客|Blog](https://blog.kazoottt.top/)
|
||||
|
||||
[个人笔记 | Notes](https://notes.kazoottt.top/)
|
||||
|
||||
[GitHub](https://github.com/KazooTTT)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 791 KiB |
@ -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,14 +27,9 @@ const socialLinks: {
|
||||
link: "https://x.com/kazoottt",
|
||||
name: "mdi:twitter",
|
||||
},
|
||||
{
|
||||
friendlyName: "Bilibili",
|
||||
link: "https://space.bilibili.com/391236013",
|
||||
name: "mdi:video",
|
||||
},
|
||||
{
|
||||
friendlyName: "YouTube",
|
||||
link: "https://www.youtube.com/@kazoottt4718",
|
||||
link: "https://www.youtube.com/@kazoottt255",
|
||||
name: "mdi:youtube",
|
||||
},
|
||||
{
|
||||
@ -47,6 +42,11 @@ const socialLinks: {
|
||||
link: "https://bento.me/KazooTTT",
|
||||
name: "mdi:open-in-new",
|
||||
},
|
||||
{
|
||||
friendlyName: "rss",
|
||||
link: "https://blog.kazoottt.top/rss.xml",
|
||||
name: "mdi:rss-box",
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
|
@ -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>
|
||||
|
@ -5,8 +5,9 @@ published: true
|
||||
toWexin: null
|
||||
toJuejin: null
|
||||
toZhihu: null
|
||||
status: Published
|
||||
date_created: 20241230
|
||||
date_modified: 20250304
|
||||
date_modified: 20250404
|
||||
title: Y5-2024年度总结
|
||||
date: 2025-01-30T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
@ -26,6 +27,8 @@ update_time: '1/30/2025, 9:18:33 PM'
|
||||
publish_time: '1/30/2025, 9:18:16 PM'
|
||||
banner: >-
|
||||
https://pictures.kazoottt.top/2025/01/20250130-Pasted%20image%2020250130212038.png
|
||||
NotionID-notionnext: 1cb55568-fd75-81d5-9481-d55848bbc36b
|
||||
link-notionnext: 'https://kazoottt.notion.site/Y5-2024-1cb55568fd7581d59481d55848bbc36b'
|
||||
---
|
||||
|
||||
## 去年目标完成情况
|
||||
|
81
src/content/post/与被我荒废的 7 年告别,从头开始.md
Normal file
81
src/content/post/与被我荒废的 7 年告别,从头开始.md
Normal file
@ -0,0 +1,81 @@
|
||||
---
|
||||
toAstro: true
|
||||
astroType: post
|
||||
published: false
|
||||
toWexin: null
|
||||
toJuejin: null
|
||||
toZhihu: null
|
||||
status: Published
|
||||
date: 2025-04-01T22:12:00.000Z
|
||||
tags:
|
||||
- 反思
|
||||
category: 随笔
|
||||
slug: saying-goodbye-to-wasted-7-years
|
||||
description: null
|
||||
title: 与被我荒废的 7 年告别,从头开始
|
||||
date_created: 20250401
|
||||
date_modified: 20250403
|
||||
NotionID-notionnext: 1ca55568-fd75-8126-b17a-f54bb9b19898
|
||||
link-notionnext: 'https://kazoottt.notion.site/7-1ca55568fd758126b17af54bb9b19898'
|
||||
---
|
||||
17 年大一,到现在已经 7 年多了,回顾一下我是如何荒废掉这 7 年时间的。想要与此告别,从头开始。
|
||||
|
||||
## 1. 在大学只“治”好了病
|
||||
|
||||
其实我的性格一直都非常的内向,小学的时候被老师叫起来回答问题,我虽然知道答案,但是就是不敢开口,最后只能急得控制不住自己的情绪然后在全班面前哭出来。
|
||||
|
||||
稍微改善一点是在高中,由于外公是退休的职工,班级的老师都认识他,有时候回教室宿舍的时候会碰到他们,然后聊上一两句。在那个环境下,我是更放松的,并且确实有想要学习的动力,所以会上台请教老师问题。再加上英语和语文老师都会安排每节课会有一个 talk 环节,也就是上台用中文或者英文分享一些内容。高中时候的我也知道我不能再像小学那样靠哭来逃避,这种分享是躲不掉的,所以只能私下多加练习,然后逼自己站在台上讲话。
|
||||
|
||||
到了大学,到了一个新的环境,不知道为什么格外地兴奋,在各种群中都比较活跃,甚至买了桌游到寝室和室友一起玩。当时会有一些社团招新的活动,去看了辩论队的表演赛后对此有些感兴趣,于是报名参加了辩论队。
|
||||
|
||||
其实在收到一面短信的时候,很紧张,打起了退堂鼓,给负责的学姐发了短信说自己可能不合适,想要退出,学姐劝了一下我说试一下也无妨。但是真的没想到我就双腿颤抖着靠着下意识完成了一面、二面,最终进入了辩论队。要知道在此之前我真的很胆小,回头再看我真的不知道为什么有勇气去报名辩论队。
|
||||
|
||||
在辩论队打了两年比赛,准备辩题的过程中学会了怎么在短时间内把一些概念掌握并讲清楚,也在众多观众的围观下治好了我多年的不敢开口。沟通能力或者说基础的公众表达能力的缺失是我一直以来的病,治病需要花时间是很正常的事情。
|
||||
|
||||
但是回过头来看,这或许是我大学时期为数不多的收获了。
|
||||
|
||||
## 2. 这些年所犯的错
|
||||
|
||||
### 2.1. 第一个错 :不再自律
|
||||
|
||||
大一上学期的时候,我的成绩还是中上,到了下学期开始下滑,可能是精力的不足,也可能是缺乏他人监督后变得懈怠。高中的时候,每次月考班主任都会念班级排名,也会把排名粘贴在班级的门口,再加上是封闭式的管理,不能玩手机,所以在那样的环境下,我们能做的只有学习。
|
||||
|
||||
但是到了大学,一切都不一样了,我可以在没有课的时候回宿舍休息,也可以去图书馆泡着,这都是自己的选择,不过选择的后果也需要自己承担。我渐渐地失去了自律的状态,这是我犯的第一个错。
|
||||
|
||||
### 2.2. 第二个错 :错误的选择和规划
|
||||
|
||||
大三是一个很重要的阶段,需要考虑就业、考研、考公等等未来的路。由于很多学长学姐都选择了的是产品经理这条路,我也有些动摇,最开始的实习投递的是产品岗,投了几份后匆忙去了一家上海的产品实习岗位,在这份实习中,我才意识到当我作为产品经理的时候我是没有产出动力的。然后我才将自己的就业意向从产品改为了前端。
|
||||
|
||||
其实辅导员在收集就业意向且我给的意向是产品的时候,他有劝过我应该是后端>前端>产品,但我还是头铁,选择相信自己的选择。
|
||||
|
||||
在就业意向转为前端的时候,我在家开始复习,效率很低,同时秋招开始了,也开始投递一些实习岗位,最开始投了腾讯(其实不应该那么早的,或者说我应该提前规划自己的实习方向和学习计划),毫无疑问一面挂,后来也面了一些,都是石沉大海。只去了百词斩的实习,在那里一边实习干活,一边学习继续准备面试。
|
||||
|
||||
所以其实直到春招,我才有第一个正式的 offer。
|
||||
|
||||
回头再看,这些都是因为我没有意识什么时间该做什么事情,以及我到底要做什么岗位。
|
||||
|
||||
### 2.3. 第三个错 :拿到 offer 后的懈怠
|
||||
|
||||
其实春招拿到的 offer 待遇并不算好,应该继续面试的去争取更好的待遇。
|
||||
|
||||
### 2.4. 第四个错 :学东西都浮于表面
|
||||
|
||||
写了这么久的前端了,即使自己也会写 side project,但是更多的都是浮于表面地写出来,也就是说做的很多都是玩具项目,对于技术的认知并没有提升。这一点很早之前面美团的时候,面试老师也有点出来,觉得我虽然想法很多但是技术不是很扎实。
|
||||
|
||||
## 3. 没有努力过,有什么资格抱怨现状
|
||||
|
||||
所以在犯错这么多的情况下,我的现状并不好,有时候看到同龄人的现状的时候,确实很羡慕,也会抱怨为什么我活成了现在这幅样子。
|
||||
|
||||
但是我都没有真的努力过,又有什么资格抱怨现状? 甚至现在拥有的一些东西,都只是在吃学历的“老本”。
|
||||
|
||||
在上海的时候,有一个刚入职的同事听到我的学校后很惊讶,说了一句“你怎么来这了”,其实那一刻心里有些触动。内心的想法在打架。
|
||||
- A: 是啊,我怎么来这了?
|
||||
- B: 是啊,我这种状态能来这里已经不错了。
|
||||
|
||||
不想再抱怨什么了,现在更多的时候会想为什么我都没努力过就放弃了?
|
||||
|
||||
现在醒过来,再好好努力一把,如果还是争取不到再认命不行吗?
|
||||
|
||||
我会给自己一段时间,与过去 7 年颓废的自己告别,努力找回最初的状态。
|
||||
|
||||
> 时间是最好的法官,是非成败未来见。
|
@ -5,6 +5,7 @@ published: true
|
||||
toWexin: null
|
||||
toJuejin: null
|
||||
toZhihu: null
|
||||
status: Published
|
||||
title: 封面生成器推荐
|
||||
date: 2025-02-01T00:00:00.000Z
|
||||
author: KazooTTT
|
||||
@ -16,11 +17,13 @@ slug: cover-generator
|
||||
description: >-
|
||||
本收集涵盖了多个封面生成工具和资源,旨在帮助用户快速创建美观且专业的封面设计。这些工具包括在线封面生成器、设计模板库以及自定义封面设计的技巧和指南。无论是用于书籍、报告、社交媒体还是其他用途,这些资源都能满足不同用户的需求,提升视觉呈现效果。
|
||||
date_created: 20250206
|
||||
date_modified: 20250306
|
||||
date_modified: 20250405
|
||||
finished: true
|
||||
category: 软件
|
||||
banner: >-
|
||||
https://pictures.kazoottt.top/2025/02/20250205-studio-807114e82b6ab5567962eacee314c872-bhdbpvle.jpg
|
||||
NotionID-notionnext: 1cb55568-fd75-81ca-b889-dae2726c9c82
|
||||
link-notionnext: 'https://kazoottt.notion.site/1cb55568fd7581cab889dae2726c9c82'
|
||||
---
|
||||
|
||||
# 封面生成器推荐
|
||||
@ -109,6 +112,6 @@ banner: >-
|
||||
|
||||
[IMaker](<https://img-maker.vercel.app/>)
|
||||
|
||||

|
||||

|
||||
|
||||
字体大小不能调大很大
|
||||
|
57
src/content/post/尝试一种新的英语学习方法.md
Normal file
57
src/content/post/尝试一种新的英语学习方法.md
Normal file
@ -0,0 +1,57 @@
|
||||
---
|
||||
toAstro: true
|
||||
astroType: post
|
||||
published: true
|
||||
toWexin: true
|
||||
toJuejin: null
|
||||
toZhihu: null
|
||||
date: 2025-04-06T00:50:00.000Z
|
||||
tags:
|
||||
- english
|
||||
category: null
|
||||
slug: trying-a-new-way-to-learn-english
|
||||
description: null
|
||||
title: 尝试一种新的英语学习方法
|
||||
status: Published
|
||||
date_created: 20250405
|
||||
date_modified: 20250406
|
||||
---
|
||||
|
||||
# 尝试一种新的英语学习方法
|
||||
|
||||
翻了一下我以前的四六级的成绩单,我发现我的阅读和听力并不差,差的是写作。但是现在看到一段英文或者想要输出英文的时候总是下意识借助插件来帮我进行翻译。
|
||||
|
||||
之前也有聊到过,自己对于翻译插件的看法:
|
||||
|
||||
> 今天面试了一个歪果仁
|
||||
>
|
||||
>
|
||||
> 我们中英混杂,他的中文不好,我的英文不好。他听不懂我说中文的时候,我开始说英语,然后有时候我也想不起来怎么表达,就又切成了中文
|
||||
>
|
||||
> 感觉我好像在特定情况下并不会不好意思开口,但是确实词汇量匮乏,连用不准确的词表达意思都不会,更别说精确表达
|
||||
>
|
||||
> 其实我觉得一些辅助翻译的插件,搭配上大模型,体验上是好用的,给了用户无痛阅读英文的感受,是拐杖但也让人一直依赖这个拐杖,导致能力提升很慢,脱离工具依然不会英语。
|
||||
>
|
||||
> 总是看到一些营销号类的账号说 xxx 已死,xxx 要失业了,个人是很反感这些标题和说辞的。在一些特定领域,依然需要不用辅助工具的条件下与人交流,并且目前的工作流水平可以做到输出精准,但无法做到快速的上下文联通。
|
||||
>
|
||||
> 所以我的想法是以后默认关闭插件,确实无法理解后再进行翻译,另外还要有意识地强制自己看英文视频和文档
|
||||
|
||||
在 twitter 上看到一位老师 [分享雅思口语学习的技巧](<https://x.com/HroyhongHong/status/1907266551419744495>)
|
||||
|
||||

|
||||
|
||||
所以我目前的练习方式调整为了:
|
||||
|
||||
设置大模型的提示为:
|
||||
|
||||
```
|
||||
用户可能使用英文跟你对话,但是语法或者措辞都不是很标准,甚至存在拼写错误。请你在回答完用户的问题之后,对于用户本身的问句也做出纠正,并补充注释。
|
||||
```
|
||||
|
||||
然后在与大模型日常对话的过程中,输入方式改为:使用 macos 的听写功能输入一段英文,如果无法表达完整会在听写完成后插入中文。
|
||||
|
||||
看完大模型回答的英文内容之后,在最后看一下它纠正我的输入的内容,然后又复述几遍,直到自己独立能说出来。
|
||||
|
||||
效果:
|
||||
|
||||

|
47
src/content/post/避免空口鉴抄、鉴AI.md
Normal file
47
src/content/post/避免空口鉴抄、鉴AI.md
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
toAstro: true
|
||||
astroType: post
|
||||
published: true
|
||||
toWexin: null
|
||||
toJuejin: null
|
||||
toZhihu: null
|
||||
date: 2025-04-01T22:56:00.000Z
|
||||
tags:
|
||||
- 鉴抄
|
||||
category: 随笔
|
||||
slug: no-unproven-claims-against-creators
|
||||
description: null
|
||||
title: 避免空口鉴抄、鉴AI
|
||||
date_created: 20250401
|
||||
date_modified: 20250401
|
||||
---
|
||||
前几天朋友在小红书上发了自己的作品,被底下的人评论鉴 AI。她们的对话如下:
|
||||
|
||||
- 路人:AI 画的?
|
||||
- 朋友:为什么觉得是 AI
|
||||
- 路人:感觉像 AI
|
||||
|
||||
当时看得我有点无奈,把之前写的一篇杜绝空口鉴抄袭的评论改了一下,发给了当时鉴 AI 的路人,不久后 ta 删除了评论并向我的朋友私信表示了歉意。
|
||||
|
||||
之前对于杜绝空口鉴抄袭的评论是这样的:
|
||||
|
||||
> 我觉得每个人都应该强调不要空口鉴抄,更不要用这种理由作为攻击他人作品的武器。
|
||||
>
|
||||
> 这种鉴抄不是在保护原创,而是在打击原创。
|
||||
>
|
||||
> 因为鉴抄不需要任何成本,把舆论带起来后到最终出鉴别结果有很长一段时间,在这个时间差内有的伤害已经造成了。
|
||||
>
|
||||
> 当然能做到这一点确实很难很难,虽然已经在各大平台见过很多相关科普,但转过头还是一样有很多人空口鉴抄。其中有不少故意的人,也会有被带着走的人。
|
||||
>
|
||||
> 能怎么办呢,我只希望我不要成为那种人。
|
||||
>
|
||||
> 也期待能有更快速直接的渠道来完成鉴别整个流程。
|
||||
>
|
||||
> 本身怀有恶意的人是无法从说通的,但可以减少他们通过打时间差和信息差去带节奏,给别人造成伤害的概率。
|
||||
|
||||
其实我无论是对于空口鉴抄袭还是鉴 AI 都是这种态度:
|
||||
|
||||
- 对于鉴别者:谁主张谁举证
|
||||
- 对于围观者:不应该把压力一开始就给到创作者本人
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
import SocialList from "@/components/SocialList.astro";
|
||||
import PostPreview from "@/components/blog/PostPreview.astro";
|
||||
import Note from "@/components/note/Note.astro";
|
||||
import { getAllFixedToTopPosts, getAllNotes, getAllPosts } from "@/data/post";
|
||||
import PageLayout from "@/layouts/Base.astro";
|
||||
import { collectionDateSort } from "@/utils/date";
|
||||
@ -73,8 +72,9 @@ const latestNotes = allNotes.sort(collectionDateSort).slice(0, MAX_NOTES);
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
<a href="/posts/" class="hover:text-accent block text-right">查看更多 →</a>
|
||||
</section>
|
||||
{
|
||||
<!-- {
|
||||
latestNotes.length > 0 && (
|
||||
<section class="mt-16">
|
||||
<h2 class="title text-accent mb-6 text-xl">
|
||||
@ -89,7 +89,7 @@ const latestNotes = allNotes.sort(collectionDateSort).slice(0, MAX_NOTES);
|
||||
</ul>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
} -->
|
||||
<ContentFooter />
|
||||
<GiscusComment client:load />
|
||||
</PageLayout>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { getAllPosts } from "@/data/post";
|
||||
import { siteConfig } from "@/site.config";
|
||||
import { collectionDateSort } from "@/utils/date";
|
||||
import { collectionDateSort, convertToGMT } from "@/utils/date";
|
||||
import rss from "@astrojs/rss";
|
||||
import MarkdownIt from "markdown-it";
|
||||
import sanitizeHtml from "sanitize-html";
|
||||
@ -25,7 +25,7 @@ export const GET = async () => {
|
||||
return {
|
||||
title: post.data.title,
|
||||
description: (post.data.description ?? "") + "\t" + tagStr,
|
||||
pubDate: post.dateToCmp,
|
||||
pubDate: convertToGMT(post.dateToCmp),
|
||||
link: `posts/${post.id}/`,
|
||||
content: post.body
|
||||
? sanitizeHtml(
|
||||
|
@ -3,7 +3,5 @@
|
||||
---
|
||||
|
||||
<div class="prose prose-base prose-cactus max-w-none">
|
||||
<p>4年经验的前端开发工程师</p>
|
||||
<p>主要使用react + vite + typescript开发</p>
|
||||
<p>喜欢写一些自己的side project</p>
|
||||
<p>只是一个前端开发</p>
|
||||
</div>
|
||||
|
@ -20,13 +20,13 @@ export const siteConfig: SiteConfig = {
|
||||
// Meta property, found in src/components/BaseHead.astro L:42
|
||||
ogLocale: "zh_CN",
|
||||
// Used to construct the meta title property found in src/components/BaseHead.astro L:11, and webmanifest name found in astro.config.ts L:42
|
||||
title: "声控烤箱 | KazooTTT 博客",
|
||||
title: "KazooTTT 博客",
|
||||
// ! Please remember to replace the following site property with your own domain, used in astro.config.ts
|
||||
url: "https://blog.kazoottt.top/",
|
||||
rssConfig: {
|
||||
noteTitle: "碎碎念 - 声控烤箱 | KazooTTT",
|
||||
noteTitle: "碎碎念 - KazooTTT 博客",
|
||||
noteDescription: "分享一些比较碎片化的内容。",
|
||||
blogTitle: "博客 - 声控烤箱 | KazooTTT",
|
||||
blogTitle: "博客 - KazooTTT",
|
||||
blogDescription: "分享一些技术笔记、个人随笔、生活日常等比较长篇的内容。",
|
||||
},
|
||||
};
|
||||
@ -45,10 +45,10 @@ export const menuLinks: { path: string; title: string }[] = [
|
||||
path: "/posts/",
|
||||
title: "Blog",
|
||||
},
|
||||
{
|
||||
path: "/notes/",
|
||||
title: "Notes",
|
||||
},
|
||||
// {
|
||||
// path: "/notes/",
|
||||
// title: "Notes",
|
||||
// },
|
||||
{
|
||||
path: "/friends/",
|
||||
title: "Friends",
|
||||
|
@ -23,3 +23,8 @@ export function collectionDateSort(a: AllItem, b: AllItem) {
|
||||
export function getLatestUpdatedPost(a: AllItem, b: AllItem) {
|
||||
return getDateSortByUpdateTime(b).getTime() - getDateSortByUpdateTime(a).getTime();
|
||||
}
|
||||
|
||||
export function convertToGMT(date: Date) {
|
||||
// Subtract 8 hours to convert Beijing time to GMT
|
||||
return new Date(date.getTime() - 8 * 60 * 60 * 1000);
|
||||
}
|
||||
|
Reference in New Issue
Block a user