From f667c37701c07f4b3c6cfadbb2f7a691a2e72b42 Mon Sep 17 00:00:00 2001 From: li-chx Date: Tue, 26 Aug 2025 01:34:11 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E4=BB=8E=E6=97=A7=E7=AB=99?= =?UTF-8?q?=E6=90=AC=E8=BF=90=E4=B8=80=E6=89=B9=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChronoCat使用遇到亿点困难 3.28开发小记.md | 43 ++++++ 2024-03/补档 Uni运维小记.md | 133 ++++++++++++++++++ 2024-03/转向Lagrange.Core 解决Sign服务问题.md | 58 ++++++++ 2024-04/2024.4.10 开发小记.md | 16 +++ 2024-04/2024.4.12 开发小记.md | 15 ++ 2024-04/C#命名规范 for Uni.md | 62 ++++++++ ...米平板5 Pro with Ubuntu22.04 installed by tmoe.md | 108 ++++++++++++++ 2024-04/小记.md | 11 ++ 2024-04/记录一下突然想到的一个点子.md | 17 +++ 2024-05/2024.5.5 小记.md | 32 +++++ 2024-05/Hackathon 活动后记.md | 18 +++ 2024-05/关于人工智能当前问题的一点想法.md | 21 +++ 2024-06/Hyprland.md | 41 ++++++ 2025-08/SiteBuild.md | 100 +++++++++++++ 2025-08/announcement.md | 15 ++ Feature.md | 11 +- date/oldDate.md | 16 --- readme.md | 5 + test.md | 13 -- test/announcement_test.md | 15 ++ test/{test.md => article_test.md} | 4 +- test/rambling_test.md | 4 +- 22 files changed, 722 insertions(+), 36 deletions(-) create mode 100644 2024-03/ChronoCat使用遇到亿点困难 3.28开发小记.md create mode 100644 2024-03/补档 Uni运维小记.md create mode 100644 2024-03/转向Lagrange.Core 解决Sign服务问题.md create mode 100644 2024-04/2024.4.10 开发小记.md create mode 100644 2024-04/2024.4.12 开发小记.md create mode 100644 2024-04/C#命名规范 for Uni.md create mode 100644 2024-04/KiCAD手动编译安装 on Aarch64_arm64 for 小米平板5 Pro with Ubuntu22.04 installed by tmoe.md create mode 100644 2024-04/小记.md create mode 100644 2024-04/记录一下突然想到的一个点子.md create mode 100644 2024-05/2024.5.5 小记.md create mode 100644 2024-05/Hackathon 活动后记.md create mode 100644 2024-05/关于人工智能当前问题的一点想法.md create mode 100644 2024-06/Hyprland.md create mode 100644 2025-08/SiteBuild.md create mode 100644 2025-08/announcement.md delete mode 100644 date/oldDate.md delete mode 100644 test.md create mode 100644 test/announcement_test.md rename test/{test.md => article_test.md} (94%) diff --git a/2024-03/ChronoCat使用遇到亿点困难 3.28开发小记.md b/2024-03/ChronoCat使用遇到亿点困难 3.28开发小记.md new file mode 100644 index 0000000..b17eead --- /dev/null +++ b/2024-03/ChronoCat使用遇到亿点困难 3.28开发小记.md @@ -0,0 +1,43 @@ +--- +{ + title: "ChronoCat使用遇到亿点困难 3.28开发小记", + description: "作者在Docker中配置ChronoCat QQ框架时遇到困难,包括版本兼容、VNC显示问题及冻号风险。部分API测试成功,基于Satori协议调用方便。后续计划提供JSON格式的API供其他容器使用,示例包含来源、目标和信息内容。环境问题尚未解决。", + draft: false, + type: "article", + created_at: "2024-03-28T09:26:00+08:00", + published_at: "2024-03-28T09:34:00+08:00", + updated_at: [ "2024-03-28T09:34:00+08:00"], + category: 'Uni', + tags: [ "QQBot" ], + tech_stack: [ "ChronoCat" ], + tech_stack_percent: [ 100 ], + tech_stack_icon_names: [ "mdi:cat" ], + tech_stack_theme_colors: [ "#bc446f" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +## ChronoCat 配置小结 + +最近一直在弄qq框架 ChronoCat +首先这东西一定得弄在Docker里,我没有精力在原系统做一个vnc,然后再装一个QQ,想想就感觉太地狱了。 +但是Docker好像没有足够新的版本,倒是找到了能用的Compose文件,但是好多Api都搞不通,我怀疑是版本问题。 +另一方面,有一些消息表明使用早期版本的QQ会导致冻号,虽然我的号还没出问题。 +问题落在了完成一份新的Dockerfile上。 +但是我没能成功,目前仍然卡在这一步。根据错误消息,我怀疑是vnc和QQ不对付,vnc可以启动,但是看不到QQ的画面。 +感觉只要涉及到Linux图形化,最后都会变成一场噩梦。 +不过也有好消息,从已经成功测试的部分Api来看,调用Api并不困难,基于Satori协议,还是比较方便的。 +可以假设我将在一段时间后解决上述配环境的问题,现在考虑一下后端框架。 +首先,我需要提供一批Api,供其他Container使用。 +以一个报错信息为例子 +需要以下信息:(来自谁,发送到谁(人/组/多组),信息内容(string)) +```json +{ + "from": "string?", + "to": ["people","groupA","groupB"], + "info": "string?" +} +``` +还有很多要考虑的事 要下课了 diff --git a/2024-03/补档 Uni运维小记.md b/2024-03/补档 Uni运维小记.md new file mode 100644 index 0000000..b2963de --- /dev/null +++ b/2024-03/补档 Uni运维小记.md @@ -0,0 +1,133 @@ +--- +{ + title: "补档 Uni运维小记", + description: "作者在Docker中配置ChronoCat QQ框架时遇到困难,包括版本兼容、VNC显示问题及冻号风险。部分API测试成功,基于Satori协议调用方便。后续计划提供JSON格式的API供其他容器使用,示例包含来源、目标和信息内容。环境问题尚未解决。", + draft: false, + type: "article", + created_at: "2024-03-29T10:30:00+08:00", + published_at: "2024-03-29T11:18:00+08:00", + updated_at: [ "2024-03-29T11:18:00+08:00"], + category: 'Uni', + tags: [ "运维" ], + tech_stack: [ "Docker", "Nginx", "MariaDB", "Azure Devops" ], + tech_stack_percent: [ 40,30,20,50 ], + tech_stack_icon_names: [ "mdi:docker","simple-icons:nginx", "simple-icons:mariadb", "simple-icons:azuredevops" ], + tech_stack_theme_colors: [ "#1c90ed","#109748","#c0765a","#2b99e2" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +#运维 +运维的主要任务有:部署代码,配置和维护服务器上的nginx,Docker和mariaDB服务。~~还有背锅~~ +运维技术路线: + +##Docker +学习[Docker](https://docker-practice.github.io/zh-cn/)会是你的第一课。几乎全部的后端代码都运行在Docker中,Docker提供了服务管理,自动化部署和端口映射功能你需要学习的有关知识有: +Image、Container的概念及相关操作 +从Image构建Container,端口映射相关配置 +导出Container Log, 进入运行的Container进行检查 +从 DOCKERFILE 文件构建Container +从 DockerCompose 构建Container + +##nginx +nginx维护的关键是:看懂学长留下的配置文件。然后在其基础上堆上自己的文件,同时保持nginx不崩 +目前笔者nginx技术有限。不过多赘述 + +##mariaDB +mariaDB和Mysql语法略有区别。但大部分都是一致的。作为运维,你需要为后端代码建立所需的数据库。建立数据库,配置用户并不困难。去bing或者谷歌花点时间就能做好。 +但是关键是,把带有帐号,密码,地址的字符串传递给后端代码。我将在后续提到。 + +##Azure +你有很大概率在Azure中看到这份指导文件,但你大概率还不会使用Azure进行代码管理和部署配置。 +这里不会讲Commit PR 或是 Branch相关的概念。如果你不了解,你需要去学习Git相关知识。在很大程度上,Azure和Github类似,只是这里不会从搜索引擎中搜到。接下来,我会假设你了解相关概念。 +这里主要讲Azure Pipelines的配置 +在左侧,你能找到Pipelines。你可以右键,在新窗口中打开。这样就可以不退出本指导。 +你可以看到很多Pipeline在其中。排在前面的可能是IWutApi,或是其他什么东西。它们在进行**自动化部署**的工作。每个Pipeline都在持续监测某个仓库的的某个分支,如果发生改变,它会把代码传到制定的服务器,构建,运行。这样,后端开发者就能在第一时间对最新的代码进行测试,并且把最新的代码上线,供用户使用。 +这一近乎神奇的操作的关键,是仓库中的一个yml文件,它通常被命名为 ***-pipeline.yml +关于yml文件的配置,我的建议是:抄 +```yml +trigger: + - main + +resources: + - repo: self + +variables: + projectName: iwut-api-prod + +stages: + - stage: Deploy + displayName: 部署到服务器 + jobs: + - deployment: VMDeploy + displayName: 部署到Uni服务器 + environment: + name: JP-tencent + resourceType: VirtualMachine + strategy: + runOnce: + deploy: + steps: + - checkout: self + fetchDepth: 1 + displayName: 切换到目标仓库分支 + - bash: |- + docker compose -p $(projectName) -f docker-compose.yml up --build -d + env: + DeployPort: 5003 + ConnectionStrings__App: $(ConnectionStrings__App) + displayName: 运行 docker compose 命令 +``` +这是目前正在运行的一份pipeline文件。我们来简单分析一下,如果要改在其他工程上,需要改什么。 +trigger:规定正在监测的分支名字是什么 +projectName:项目名字,改成对应的 +stages里,第一个可能要改的是environment,你要部署到哪个服务器。在Pipeline-Environments中,可以看到现在可用的服务器。这个大概率会有人告诉你。但以防万一,这里简单叙述目前的情况。 +如果你要部署的是一个需要Debug,后端还在开发的代码,放在uni-tencent上,并且只部署dev分支。 +如果你要上线一个供用户使用的新功能,那么JP-tencent是更好的选择,只部署main(或master?)分支 +下一个要改的是steps中的bash 这是一行从Docker-Compose启动docker container指令,关于Docker Container创建和端口转发,在Docker-Compose文件中。 +然后是env, DeployPort和ConnectionStrings__App +env是环境变量,这里创建了两条环境变量,部署端口和连接字符串。 + +这里容我粘贴DockerCompose.yml(也能在仓库找到)文件,插入的讲解一下 +```yml +version: '3.8' + +services: + iwut-api: #目标Contaienr 名字 + image: iwut-api:prod #镜像名字 + build: + context: . + dockerfile: IWutApi/Dockerfile #DockerFile文件位置,需要修改 + args: + BuildConfig: Release #发行环境 + environment: + TZ: Asia/Shanghai + ASPNETCORE_ENVIRONMENT: Production #发行环境 + ConnectionStrings__App: ${ConnectionStrings__App:?} #数据库连接串 + ports: + - ${DeployPort}:80 #端口 + extra_hosts: + - "host.docker.internal:host-gateway" +``` +这个文件中,发行环境可能会改成Debug或Development,这个看后端需求。 +你可以看到 数据库连接串和端口使用了${something} 的形式,这里就是在读取环境变量。 + +回到之前的Pipeline文件,端口没什么说的了,现在聊聊ConnectionStrings_App +该环境变量 在构建Pipeline过程中加入,如图。![Screenshot_2024-03-25-15-29-23-111_com.realvnc.viewer.android.jpg][1] +右侧添加名字和值,由于该字符串包括密码,所以需要**勾上Keep this value secret** +问题出现了,你 ~~,一个刚准备接锅的运维,~~ 怎么知道这个值怎么填,因为过往的Pipeline这里都是**** +两个办法: +如果是新的项目,直接问后端,直接问他怎么填,要个示例。 +如果是老项目 +还记得之前Docker要求你学习怎么进入容器内部吗? +``` Bash +docker exec -it (DockerID) bash +echo $ConnectionStrings__App +``` +当然还有第三个办法,反正代码就在这,不如发挥主观能动性,学习后端。 +祝你好运 + + +[1]: https://typecho.lichx.top/usr/uploads/2024/03/1075500197.jpg \ No newline at end of file diff --git a/2024-03/转向Lagrange.Core 解决Sign服务问题.md b/2024-03/转向Lagrange.Core 解决Sign服务问题.md new file mode 100644 index 0000000..dc22604 --- /dev/null +++ b/2024-03/转向Lagrange.Core 解决Sign服务问题.md @@ -0,0 +1,58 @@ +--- +{ + title: "转向Lagrange.Core 解决Sign服务问题", + description: "作者放弃ChronoCat转向Lagrange.Core,但在发送消息时遇到阻塞。发现未配置Sign服务器导致登录异常。通过阅读源码,自定义SignProvider并硬编码URL后解决问题,成功实现消息发送。", + draft: false, + type: "article", + created_at: "2024-03-29T09:50:00+08:00", + published_at: "2024-03-29T10:19:00+08:00", + updated_at: [ "2024-03-29T10:19:00+08:00"], + category: 'Uni', + tags: [ "QQBot" ], + tech_stack: [ "LagrangeCore","C#" ], + tech_stack_percent: [ 50, 50 ], + tech_stack_icon_names: [ "mynaui:letter-l","mdi:language-csharp" ], + tech_stack_theme_colors: [ "#8f71b0","#a179dc" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +## 事件记录 +在群U的劝说下,放弃了ChronoCat,转向了**Lagrange.Core** +初步了解后,我发现这东西竟然有Nuget开发包,我直呼还有这好事,直接对着Api文档开写。 +写到发送单对单信息后,开始测试,发现发不出去,就阻塞了,卡在那了,没报错,没异常。 +在反复对照,调试了30min后,向Rosemoe求助。 +他一开始也觉得没问题,突然问我,**你配Sign了吗?** +我一下子就不懂了 +然后他丢给我一个sign的链接 这里就不丢出来了,需要的去telegram找 +我就愣住了,然后就开始看文档,看ReadMe 我就发现只有一个地方提到了sign的事 Lagrange.OneBot Appsettings.json里面有一个,要求用户填入。 +然后我就把链接填到Docker Contianer里的Appsettings.json 重启 但是没用 +更不会了,突然想起来Docker也有log 我决定对比一下我的请求和Docker log 看看有没有什么报错信息。 +然后我就发现一个奇怪的事,好像我的请求,和log没什么关系? + +而且log里也有用于登录的二维码? ~~这不扫一下~~ +然后我发现我的电脑qq被顶下去了,我立刻意识到,它成功登录了,而我的Api调用登录是不成功的。 +这时我才意识到Lagrange.Core 和 Lagrange.OneBot是两个东西,关于Lagrange.Core的sign服务配置,只在ReadMe.md有提到 +> 暂不提供签名 API,您可能需要在某个地方找到它并在 BotConfig 继承 SignProvider 类的CustomSignProviderBotConfig + +之前ChronoCat使用vnc直接显示qq界面,登了就顶,符合直觉。 +在调用Lagrange.Core时,如果没有正确配置sign服务器,登录时手机会显示有其他设备登录,但是电脑上不顶号。获取到了BotContext,甚至有uin字段,但是实际是没有登录成功的。 +这也解释了为什么Online事件没有正常触发。 + +#正题 Lagrange.Core sign配置 +没办法了,只能试着看源代码了 +在这个过程中,Rosemoe给了我OneBot sign 服务实现的代码,位置是 +> Lagrange.OneBot.Utility.OneBotSigner + +大致的读了一下代码,关键在于:从AppSettings获取了Sign链接,然后配合其他的变量,发送了一条请求,最后返回了一个byte[] +Core下也有类似的代码: +> Lagrange.Core.Utility.Sign.LinuxSigner //这里只考虑Linux + +但是该文件中 Url是空的,并且没有函数给它赋值,LinuxSigner继承自SignProvider +SignProvider是BotConfig的一个属性 而BotConfig是Create一个Bot时需要的变量。 +看到这,你可能已经明了了 +LinuxSigner只有在BotConfig的SignProvider为null时才会被构建,所以需要写一个自己的Signer,然后把里面的url填上。 +由于LinuxSigner的url是 private const 我不太确定继承能不能使用新的url,我这里直接继承SignProvider为Sign,然后 copy LinuxSigner,修改url,后面可能改成从AppSettings读取。这里先直接硬写了。 +然后使用新的SignProvider初始化BotConfig,重新测试,没有问题。 diff --git a/2024-04/2024.4.10 开发小记.md b/2024-04/2024.4.10 开发小记.md new file mode 100644 index 0000000..d2a083e --- /dev/null +++ b/2024-04/2024.4.10 开发小记.md @@ -0,0 +1,16 @@ +--- +{ + title: "2024.4.10 开发小记", + draft: false, + type: "rambling", + created_at: "2024-04-10T23:35:00+08:00", + published_at: "2024-04-10T23:40:00+08:00", + updated_at: [ "2024-04-10T23:40:00+08:00"], +} +--- +做了一晚上实验,又写了一坨屎 + +在写WinForm程序,因为加载时间过长,决定做个动画。 +好消息:动画做出来了 虽然很糙 +坏消息:动画播完Form才开始加载 +想法:搞个Panel,把Form分到Panel里,然后在新层播动画,处理好两个层的前后关系。让新的Form发完成信号。 \ No newline at end of file diff --git a/2024-04/2024.4.12 开发小记.md b/2024-04/2024.4.12 开发小记.md new file mode 100644 index 0000000..56f46af --- /dev/null +++ b/2024-04/2024.4.12 开发小记.md @@ -0,0 +1,15 @@ +--- +{ + title: "2024.4.12 开发小记", + draft: false, + type: "rambling", + created_at: "2024-04-12T00:00:00+08:00", + published_at: "2024-04-12T00:11:00+08:00", + updated_at: [ "2024-04-12T00:11:00+08:00"], +} +--- +写了一下午实验,屎山代码延申了。部署了新的Pipeline,因为代码的问题卡了一会儿。 +今天1999和舟都有新活动 但是完全没有时间打。 ~~虽说下午确实摸了会儿鱼~~ +伞的魔术贴终于是掉了,简单学习缝线后,缝了一下。完全谈不上美观,但是足够结实。 +突然想起来Leetcode没写,只能之后补上了。 +明天又要验收实验,得快点了 diff --git a/2024-04/C#命名规范 for Uni.md b/2024-04/C#命名规范 for Uni.md new file mode 100644 index 0000000..c8fe808 --- /dev/null +++ b/2024-04/C#命名规范 for Uni.md @@ -0,0 +1,62 @@ +--- +{ + title: "C#命名规范 for Uni", + description: "C#命名规范:标识符以字母或下划线开头,可含Unicode字符。接口以\"I\"开头(如`IMyInterface`),类、方法、常量用PascalCase,私有字段以\"_\"加camelCase,局部变量和参数用camelCase。特性以\"Attribute\"结尾。清晰命名优先于简洁。", + draft: false, + type: "article", + created_at: "2024-04-08T23:00:00+08:00", + published_at: "2024-04-08T23:29:00+08:00", + updated_at: [ "2024-04-08T23:29:00+08:00"], + category: 'Uni', + tags: [ "C#" ], + tech_stack: [ "C#" ], + tech_stack_percent: [ 1 ], + tech_stack_icon_names: [ "mdi:language-csharp" ], + tech_stack_theme_colors: [ "#a179dc" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +# C#命名规范 +该文是作者对[微软文档](https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/coding-style/identifier-names)的见解,更多详细信息请参照原文档 + +## 标识符 (变量) +· 标识符必须以字母或下划线(_)开头 + +· 标识符可以包含 Unicode 字母字符、十进制数字字符、Unicode 连接字符、Unicode 组合字符或 Unicode 格式字符。 + +· 你可以在关键字前加'@',声明一个与关键字相同的变量,例如:@if 是变量 if。我个人不太建议这么做。 + +## 命名约定 +在介绍命名约定之前,我将先介绍Pascal Case 和 Camel Case +### Pascle Case +形如 DataChecker, ValueCoordinate 之类的命名。将单词间空格删去,所有首字母大写,即是Pascle Case +### Camel Case +Camel Case,又称驼峰法,与Pascal Case及其类似,只是第一个字母不在大写,例如dataChecker, valueCoordinate + +### True 命名约定 +``` C# +public interface IMyInterface //接口使用I作为开头,其余部分使用Pascle命名法 +{ + public void MyMethod(); //方法使用Pascle命名法 +} + +public class MyAttribute : Attribute { } //特性使用Attribute结尾,其余部分使用Pascle命名法 + +public class MyClass : IMyInterface +{ + private readonly int _myVal = 256; //私有变量以_开头,其余部分使用Camel命名法 + + public void MyMethod() + { + const int MyVal = 1024; //常量使用Pascle命名法 + int localVar = MyVal + _myVal; //局部变量使用Camel命名法 + } + + public int AnotherMethod(int firstParameter) => firstParameter + _myVal; //方法参数使用Camel命名法 +} +``` + +在充分理解以上约定的基础上,清晰胜于简洁 \ No newline at end of file diff --git a/2024-04/KiCAD手动编译安装 on Aarch64_arm64 for 小米平板5 Pro with Ubuntu22.04 installed by tmoe.md b/2024-04/KiCAD手动编译安装 on Aarch64_arm64 for 小米平板5 Pro with Ubuntu22.04 installed by tmoe.md new file mode 100644 index 0000000..91a66c9 --- /dev/null +++ b/2024-04/KiCAD手动编译安装 on Aarch64_arm64 for 小米平板5 Pro with Ubuntu22.04 installed by tmoe.md @@ -0,0 +1,108 @@ +--- +{ + title: "KiCAD手动编译安装 on Aarch64/arm64 for 小米平板5 Pro with Ubuntu22.04 installed by tmoe", + description: "作者分享了手动编译KiCAD的详细过程。因版本冲突问题选择从源码编译,处理了OpenGL、CURL、cairo、libgit2、boost等依赖,升级了GCC和Clang版本,并编译安装OpenCascade和wxPython。遇到wxWidgets版本检测错误时修改了CMake脚本。最后使用Ninja进行编译,总耗时较长。", + draft: false, + type: "article", + created_at: "2024-04-10T00:00:00+08:00", + published_at: "2024-04-11T17:34:00+08:00", + updated_at: [ "2024-04-11T17:34:00+08:00"], + category: '个人', + tags: [ "Linux" ], + tech_stack: [ "Linux" ], + tech_stack_percent: [ 1 ], + tech_stack_icon_names: [ "simple-icons:linux" ], + tech_stack_theme_colors: [ "#263238" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +如果你只是想安装KiCAD,以应该安装官方PPA源然后下载预构建版本 +如果你像我一样,遇到了主程序为6.0 其他为8.0 的问题,或者因为什么其他原因决心手动编译。那么,欢迎,祝你好运。 +—————————————————————————————————————————————————————————————————————————————————————————— +## 依赖处理 +源代码下载,我直接使用[github](https://github.com/KiCad/kicad-source-mirror),不小,如果gitee有镜像也可以考虑 +[官方构建文档](https://dev-docs.kicad.org/zh-cn/build/linux/) 不长,最好先看一下 +首先是处理依赖问题,命令 cmake会检查所有依赖 我这里使用的是: +`cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo ../../` + +openGL +''' +sudo apt-get install build-essential +sudo apt-get install build-essential libgl1-mesa-dev +sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev +sudo apt-get install libglfw3-dev libglfw3 +sudo apt-get install freeglut3-dev +''' + +CURL: +`sudo apt-get install libcurl4-openssl-dev` + +cairo: +`sudo apt-get install libcairo2-dev` + +libgit2: +`sudo apt install libgit2-dev` + +boost: +`sudo apt-get install libboost-all-dev` + +harfbuzz: +`sudo apt install libharfbuzz-dev` + +提升Clang版本至Clang-15 +提升Gcc版本(必要性存疑)至gcc-12 +`sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12` +理论上来说,KiCAD由gcc编译,但是提升Clang版本才让我实际解决了问题 + +安装OpenCascade +[过程见此文章](https://blog.csdn.net/smart_jackli/article/details/128132773) +编译约耗时1h45min + +wxpython: +`sudo apt install -y libgtk-3-dev` +`pip install wxpython` +编译约耗时50min +`pip install wxWidgets` + +我是在Cmake过程中,不断检查依赖,完成的这篇文章。当进行到这里时,我出现了一个问题: +''' +CMake Error at CMakeLists.txt:992 (message): +wxWidgets 3.2.0 or greater is required +''' +但是,我已经安装了wxWidgets 3.2.2 +检查相关的Cmake脚本,定位到这一段: +/cmake/FindwxPython.cmake +''' +set( _py_cmd "import wx;print(wx.wxWidgets_version.split(' ')[1])") +execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "${_py_dll}${_py_site_path}${_py_cmd}" +RESULT_VARIABLE WXPYTHON_WXVERSION_RESULT +OUTPUT_VARIABLE WXPYTHON_WXVERSION +OUTPUT_STRIP_TRAILING_WHITESPACE +) + + if( NOT WXPYTHON_WXVERSION_RESULT EQUAL 0 ) + set( WXPYTHON_WXVERSION "3.0.2" ) + message( WARNING "Could not determine wxWidgets version used by Phoenix, " + "requesting ${WXPYTHON_WXVERSION}" ) + endif() +''' +你可以像这段代码一样运行一下: +`import wx;print(wx.wxWidgets_version.split(' ')[1])` +我的结果是3.2.2.1 +这里我直接修改脚本 把 3.0.2 修改为 3.2.1 +如果你没遇到这个问题,那是最好的。如果遇到了,可以先这么改。 +你可能会有疑问 为什么是3.2.1 这是因为之前apt安装的wxWidgets 就是3.2.1 如果这里不匹配有会报错 + +unixodbc +`sudo apt-get install unixodbc-dev -y` +`sudo apt-get install libsecret-1-dev -y` +libsecret-1-dev 可能不必要 我本来使用的是iodbc 但是报错了,libsecret可能不被unixodbc需要 + +Ok,兄弟们,搞到这,依赖应该差不多了。下一步Build +## Build +`Ninja` +Ninja会快一点(存疑) +目前编译时间:1:36+2:38+1:47+1:00 \ No newline at end of file diff --git a/2024-04/小记.md b/2024-04/小记.md new file mode 100644 index 0000000..3dabb4c --- /dev/null +++ b/2024-04/小记.md @@ -0,0 +1,11 @@ +--- +{ + title: "小记", + draft: false, + type: "rambling", + created_at: "2024-04-02T00:10:00+08:00", + published_at: "2024-04-02T00:11:00+08:00", + updated_at: [ "2024-04-02T00:11:00+08:00"], +} +--- +于我而言,**思考**与**遗忘**竟如此形影不离。 \ No newline at end of file diff --git a/2024-04/记录一下突然想到的一个点子.md b/2024-04/记录一下突然想到的一个点子.md new file mode 100644 index 0000000..76cff96 --- /dev/null +++ b/2024-04/记录一下突然想到的一个点子.md @@ -0,0 +1,17 @@ +--- +{ + title: "记录一下突然想到的一个点子", + draft: false, + type: "rambling", + created_at: "2024-04-07T00:35:00+08:00", + published_at: "2024-04-07T00:35:00+08:00", + updated_at: [ "2024-04-07T00:35:00+08:00", "2025-08-26T00:30:55+08:00"], +} +--- +udp打洞 这个技术有一段历史了 但是它有一些基本问题 +最大的问题就是丢包 +我在想一个基础协议,封装整个udp打洞过程 最后做成一个局域网 把打洞目标放进去 +这件事远远超过我的能力 此处仅是记录 待来日有能力实现 + +搬运时补充: +直到现在,我还是没有实现这个技术,同时我很确定已经有人干过类似的了 \ No newline at end of file diff --git a/2024-05/2024.5.5 小记.md b/2024-05/2024.5.5 小记.md new file mode 100644 index 0000000..3db5183 --- /dev/null +++ b/2024-05/2024.5.5 小记.md @@ -0,0 +1,32 @@ +--- +{ + title: "2024.5.5 小记", + draft: false, + type: "rambling", + created_at: "2024-05-05T23:40:00+08:00", + published_at: "2024-05-05T23:46:00+08:00", + updated_at: [ "2024-05-05T23:46:00+08:00", "2025-08-26T00:56:46+08:00"], +} +--- +五一假期要结束力 +虽然早有预感,但还是觉得结束的好快。 +还有好多事没做 +最近又想起来错过党课的事,果然得写一下。 +简单讲,没注意信息+注意到后没理解导致错过了党课。一年没上,下学期应该需要重新推优。 +这次错过让我离入党远了一步,也让我再次询问自己一个问题,我是不是真的想入党? +有这样的想法,主要还是对党的不了解与对自身的不了解导致的。 +我相信党是一个服务人民,造福人民的组织机构。但是理解不够细致,如果我成为党员,我担心自己不够格。 + +第二件事,Uni全会要召开了,感觉,应该不远了。但是我是社恐,有点不太确定该说啥。 +说实话,这个负责人当的太怪了。虽然能理解全貌,理解为什么会推选我,但是实际在这个位置时,还是感到有些无助。 +当然,最根本原因还是专业能力不够,不管是social还是tech。 + +第三件事,科目补习需要加速了。虽然和Uni全会还有HackDay碰撞,但还是需要优先一下 机组、编译原理、人工智能概论 对这些科目不同程度的落后让我担心。 + +第四件事,Ros,学长的代码浅看了一下,还是需要很多工作,预计要消耗不少时间,我大概有一个月的事件准备。 + +第五件事,六级,也尽快吧,尽早开始,不能像四级一样混了,感觉混不过去。 + +总体来说,事不少,就看能不能/30去做,这是关键中的关键。 + +搬运时记录:当时六级果然没过,424 \ No newline at end of file diff --git a/2024-05/Hackathon 活动后记.md b/2024-05/Hackathon 活动后记.md new file mode 100644 index 0000000..cd9ff38 --- /dev/null +++ b/2024-05/Hackathon 活动后记.md @@ -0,0 +1,18 @@ +--- +{ + title: "Hackathon 活动后记", + draft: false, + type: "rambling", + created_at: "2024-05-28T14:20:00+08:00", + published_at: "2024-05-28T14:24:00+08:00", + updated_at: [ "2024-05-28T14:24:00+08:00"], +} +--- +上周六到周日(2024.5.25-2024.5.26) Uni和木犀联合举办了一年一度的HackDay活动。 +理论上,这个活动是武汉高校联盟都能来的,而且原计划和冰岩联合,在华科举办,但因为未知原因,在街道口附近自习室举办。 +先说结论,Hackathon绝对是一次特别的经历。 +首先是从未有过的团队协作的经验,这方面主要有三点,你必须不断的帮小组成员解决困难和让小组成员解决你的困难,必须多次讨论确定最终作品的结果(这其中有时间和技术的取舍,也包括对剩余san值的取舍),必须不断面对git pull失败和merge冲突相关问题。实际上,想法和代码迭代速度之快,导致几乎每一次提交代码都需要处理冲突问题,平常很难有这样的机会。 +与小组成员的讨论变得相当关键,在理智近乎消失的同时,必须尽早,尽量详细的确定未来作品的方向。这个过程实际上是一个Social的过程。实际上,我感觉这次活动中起到协调的作用,找到了整个项目在设计的创意和技术的能力的中间点,(同时劝住了执着的设计和鼓舞了想摆的技术,我好NB)避免大部分无效沟通。 +技术是比赛中的限制,但不会是瓶颈。简单的技术与有趣的创意能搭配出足够出色的结果。实际上,写代码的四个人中,有三个人没有事先学过自己需要的技术栈(指pygame)(还有一个一直想在代码C的设计,只可惜能力不够(并无谴责意思,只是表达事实))现在想来,我写的很多代码最终也被替换,只有制谱器和一些代码的算法被保留下来。 +足够特殊的经历,推荐每个产品/设计/技术亲自参加一次。 +一个必须要说的事是,通宵写代码真的有点难,建议中途小睡一觉,或者可以和小组成员接力一下。开空调有点冷,记得带好御寒的衣服或毯子。 \ No newline at end of file diff --git a/2024-05/关于人工智能当前问题的一点想法.md b/2024-05/关于人工智能当前问题的一点想法.md new file mode 100644 index 0000000..b296d1a --- /dev/null +++ b/2024-05/关于人工智能当前问题的一点想法.md @@ -0,0 +1,21 @@ +--- +{ + title: "关于人工智能当前问题的一点想法", + draft: false, + type: "rambling", + created_at: "2024-05-17T00:00:00+08:00", + published_at: "2024-05-17T00:04:00+08:00", + updated_at: [ "2024-05-17T00:04:00+08:00", "2025-08-26T01:00:26+08:00"], +} +--- +现在人工智能的两个典型问题是:1.智能程度差 2.信息输入不够简单 +先谈谈第二个问题:目前常见的人工智能IO是文字输入和语音输入,文字输出和多媒体输出。但是不能直接输入图片或视频。而是先做图片识别和视频处理,再将文字转发。好处是专人干专事和节省带宽,降低开销,坏处是信息损失。我是喜欢x86不喜欢arm的人(You know what I mean.) 说实话力大砖飞是我的期望。 +再看第一个问题:一个广泛接受的理论是智力同模型大小成正比。而更大的模型和显卡显存直接相关,不可避免的导致cost++。 +我有时候在想,低参数的模型能不能和幼年的儿童做类比(期望上)它们的一些结果不合或部分合逻辑。chatGPT3.5就像一个没意识到自己错误的小孩。一心觉得自己逻辑正确。更进一步的,这些差错,是否是想象力的一种可能,甚至是创新的源泉。 +我认为这并不是不可能。我们总是对各种东西持怀疑态度,推动了人类科学进步。但是,循规蹈矩会让我们对大部分自然现象熟视无睹。想象一颗往天上掉的苹果可能是很多孩童梦中的情景。这种对想象和现实的差错的仔细研究是怀疑和探究的关键。 +当然,想要利用这种“差错”,首先需要想办法让其“大量”起来。然后需要一个能判断正误的东西(GPT-4?)和一个能做探究的东西(大概只有人了(悲,我果然是牛马)) +注意,这只是对GPT3.5的外特性的一些遐想和延申。我知道其内部就是一个做接龙的鹦鹉,不过,我还是希望多保留一种想法。 + +搬运时记录: +这段看起来写的莫名其妙的,有点癫了 +搬了,是折磨读者,所以搬了 \ No newline at end of file diff --git a/2024-06/Hyprland.md b/2024-06/Hyprland.md new file mode 100644 index 0000000..db99109 --- /dev/null +++ b/2024-06/Hyprland.md @@ -0,0 +1,41 @@ +--- +{ + title: "Hyprland", + description: "作者开始尝试Hyprland平铺式桌面,重装Ubuntu 24.04并配置了Clash、Timeshift和Fcitx5。Hyprland通过文件配置多显示器,修改即时生效。遇到swww壁纸问题未解决。", + draft: false, + type: "article", + created_at: "2024-06-30T09:40:00+08:00", + published_at: "2024-06-30T09:56:00+08:00", + updated_at: [ "2024-06-30T09:56:00+08:00"], + category: '个人', + tags: [ "Linux" ], + tech_stack: [ "Hyprland","Linux" ], + tech_stack_percent: [ 6,4 ], + tech_stack_icon_names: [ "simple-icons:hyprland","simple-icons:linux" ], + tech_stack_theme_colors: [ "#10dbd7", "#263238" ], +} +--- +!!!warning Legacy Article 过时的文章 +此文章从旧博客迁移而来,编写时技术水平有限,仅供参考 +!!! + +今天开搞一个一直想搞的桌面: hyprland +hyprland是一个平铺式桌面,理论上,在熟悉快捷键后,应该能有一个很高的效率。此外,我希望这能成为一个新的开始,关于linux新的,有趣的技术的开始。 +今天做的事: +备份原来linux中的少部分关键个人文件 +设置Ubuntu镜像,准备安装。 +安装Ubuntu24.04 +![安装界面](https://typecho.lichx.top/usr/uploads/2024/06/2182989347.png) +这个安装竟然自动使用清华镜像源 好耶! + +设置Clash +安装hyprland +安装Ubuntu24.04 +设置Clash +安装并设置timeshift +安装hyprland 取消了sddm的安装 +配置hyprland,这东西设置多显示器的分辨率和方向是通过文件设置的。但是在修改文件后立刻就能更改。这一点感觉有点特别。 +配置fcitx5 +swww运行不正确,看不到壁纸,给原作者发很烂的issue。希望作者别打我。 +今天就做到这么多,有时间再试试解决壁纸问题。(遇到困难睡大觉说是) +推荐一个很好听的歌:幽世桔梗 diff --git a/2025-08/SiteBuild.md b/2025-08/SiteBuild.md new file mode 100644 index 0000000..bff3792 --- /dev/null +++ b/2025-08/SiteBuild.md @@ -0,0 +1,100 @@ +--- +{ + title: "建站小记", + description: "作者选择自行搭建博客以挑战技术能力,追求完全控制权。项目使用Nuxt(Content + SSG)、TypeScript、Tailwind CSS等技术栈,开发中遇到Nuxt ColorMode切换动画问题、Content的Schema类型难题以及响应式布局与动画冲突等挑战。目前进度不理想,管理端尚未完成,能否完工取决于后续时间。", + draft: false, + type: "article", + created_at: "2025-08-25T02:54:33+08:00", + published_at: "2025-08-25T04:17:34+08:00", + updated_at: [ "2025-08-25T02:54:33+08:00" ], + category: '记录', + tags: [ "前端", "文档" ], + tech_stack: [ "Vue.js","Nuxt","TypeScript" ], + tech_stack_percent: [ 60,70,40 ], + tech_stack_icon_names: [ "mdi:vuejs","lineicons:nuxt", "lineicons:typescript" ], + tech_stack_theme_colors: [ "#41b883", "#a179dc", "#054e63" ], +} +--- +## 为什么我要自行建设博客? +> We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard; because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too. +> —— John F. Kennedy, 1962 +> 我们选择在这个十年内登上月球并完成其他任务,不是因为它们容易,而是因为它们困难;因为这个目标将有助于组织和衡量我们最好的精力和技能,因为这是一个我们愿意接受的挑战,一个我们不愿推迟的挑战,一个我们打算赢得的挑战,当然也包括其他挑战。 +> —— 约翰·F·肯尼迪,1962年 + +从某种程度上来说,我自行搭建博客的原因与以上发言类似 ~~(有点大言不惭了)~~ ,我需要一个测试自己的机会。我已经构建了几十个项目,我对它们尽心尽力,但是它们中大多数生命周期很短,往往是为了实验、比赛等短期目标。这些代码往往不需要过高的可扩展性和稳定性。同时,我注意到我的能力似乎已经足以支撑我去构建一个更加大型的长期项目。思来想去,博客是一个不错的选择,并且我可以通过它来记录我的学习和生活。 + +构建博客的原因之二是,市面上现有的博客也许它们能满足我的需求,但是我感觉研究它们的配置没有我自己重写一个有趣。而且,我希望能够完全控制我的博客内容和样式,而不是被平台所限制。 + +## 进展如何? +当我实际开始写之后,我注意到这件事远比我设想的复杂。有很多技术我只是想当然的认为可行,虽然结果也确实能行,但是有大量的细节需要注意。不得不说,首次编写本博客的现在已是暑假之末,但是项目进度很不理想。先不考虑管理端,博客部分有两个页面没创建,一个页面有bug,已有页面中有一个组件还没开始写。 + +而管理端前后端呢?更是不见踪影,与博客配对的相关配置,也处于残缺状态。 + +考虑到后续的比赛、保研以及可能的实习。我只能说,这项目能不能写完纯看缘分。 + +## 博客技术 +聊点不那么现实的 + +这次博客使用了Nuxt来编写,Nuxt构建后的产物的加载速度给我留下了颇为深刻的印象。在与ChatGPT、Claude 聊了一段时间后,确定了用Nuxt Content + SSG作为博客核心。 + +就目前的开发体验来说,Nuxt的启动和加载确实不够快,但是其代码确实足够优雅,我很喜欢。虽然从一定角度来讲,为了所谓的优雅,牺牲了太多开发效率,消耗了太多时间在查文档和debug上。 但是我觉得这是值得的。从某种程度而言,我学计算机就是想来干这个的。 + +对于其他的技术栈,目前博客使用了 +```Text +TypeScript +Pinia +Tailwind CSS +Nuxt UI +HighCharts +MdEditor V3 +``` +那些大家都在用的就不放了 + +这里面 TypeScript Tailwind CSS 能明显提升前端体验,我说实话,我已经不太确定自己能不能写纯CSS项目了,TS更不用多说,JS看了半小时我就开始用TS了。好用爱用。 + +在用Nuxt时,顺便被安利了Nuxt UI 就目前来讲,还可以,用的没有TDesign熟练,有些组件即便有还是选择了手搓,主要还是控制上差了一点。这次没用TDesign主要是和博客想要的风格不符,TDesign有点太正式了。ElementPlus也不考虑,有点丑,我用的也少。 + +Nuxt的Pinia集成也是一个难点,曾几何时,Nuxt的Pinia集成搞了我一下午的时间。Vuex还没学过,我估计这个项目也不需要,Pinia够了。 + +HighCharts是个意外,我本来想用ECharts的,但是ECharts不支持坐标轴中放HTML代码,只支持纯文字。而HighCharts虽然也不是能接受任意HTML,但至少支持svg。配合[icons](https://icones.js.org/)这个强大的网站,够用了。 +HighCharts开源但商用收费,拿来建个人博客还是没问题的。 +PS:HighCharts的介绍页面图表又多又好看,期待后续有新想法继续使用。 + +MdEditor V3 这是我第一个使用的前端Markdown编辑/渲染器。之前做实验就用过,但是这次我没有首选它,而是选了MilkDown,不好用。 +从 MilkDown core 和 MilkDown creep 中可以看到这个项目的潜力。但是实在有点难配了,文档真看不懂,感觉写的有点屎,当然我觉得还是自己能力不足。只能说为了WYSIWYG实在不值得,双屏写MD我是没什么障碍的,例如我现在就在WebStorm里写MD,然后同步渲染到dev网页里。因此索性放弃了MilkDown。 +后来又试了 Markdown-it。如果我没记错,放弃它的原因是因为滚动不是连贯的。 + +试来试去,发现最初遇到的就是最好的,果断复合了。 + +PS:正在写这篇文章的时候,发现上面的代码段竟然在我Navbar的上面,一看z-index是10000,绝了。改成5了,我看看会出什么问题。 + +## 遇到的各种难点 +### Nuxt ColorMode +这个插件真的很神奇。如果我没记错,这个插件的问题是在切换主题时,有些设置了过渡动画的DOM没有播放动画,而是一步到位。我真的卡了很久,但最后没办法,自己实现了一个ColorMode切换器,丝滑无比。而且我认为原理上和Nuxt-ColorMode应该是一致的,都是在顶级中添加dark class。但是用这插件就是会出现问题,最终含泪放弃。 +### Nuxt Content +Nuxt Content 的文档确实需要仔细翻才能找到某些功能。从某种程度上也是吃了英语不好的亏。但总体来说,这个手册质量还是在线的。 +但是我也确实有没能解决的问题。 + +Content Config 中有一个 Schema 的属性,它会利用zod,自动生成一个ContentCollectionItem属性。Schema作用是定义文章元数据,如果定义了rawbody,那么将得到文章原文。 +问题出在 queryCollection 后的 select 方法上,select方法接受一组键,这些键都是Schema中定义的数据结构,但是问题在于,我只是不想要其中的rawbody,因为在列表加载原文可能会浪费很多性能。 +在这种情况下,我希望将 Schema 提取出来,然后将所有非rawbody的键写入到select中。这么做虽然没问题,但是TS不高兴。虽然我们通过 Schema 定义了 文章属性,但是它与自动生成 ContentCollectionItem 毫无关联。对于ts来说,我们在试图将string赋值给keyof ContentCollectionItem,这显然是不行的。 +而ContentCollectionItem也没有export出来,无法直接使用。 +目前的解决方案是,先连同rawbody一起加载,出问题再说。理论上,只有生成时会慢,运行时不会受影响。 + +### 粘性布局、响应式更新与动画冲突 +这三个东西随便缺一个都不会有我接下来要讲的神奇问题 +在浏览其他人的博客时,我注意到大部分博客信息流旁会有一个随滚动而滚动的侧边栏,这个侧边栏通常是粘性布局实现的。 + +但我在具体实现上犯了难。 + +观察别人的博客HTML后,确定应当将sticky的父设置为table,然后把sticky DOM设置为float left,主DOM设置为 float right。这样,粘性布局就搞定了。 + +在其基础上,设置断点对应的宽度,实现响应式布局,也没问题。 + +再加上动画设置,结果问题出现了。 + +由于使用了浮动,而两个DOM都是块。当两者宽度大于父DOM宽度时,两个DOM会从左右布局变为上下布局。在动画开始时是正确的,动画结束时是正确的,但是动画进行时,外部的DOM宽度减小速度过快,内部的宽度减小速度较慢,导致内部两DOM变为上下布局。 + +解决方法是:把原先会响应式更新的侧边栏的宽度改为固定值,然后让右侧DOM根据父组件计算自己的宽度。这样就不会出现上述问题了。 +## 未完待续 +最近保研真是焦虑quq \ No newline at end of file diff --git a/2025-08/announcement.md b/2025-08/announcement.md new file mode 100644 index 0000000..b596ee8 --- /dev/null +++ b/2025-08/announcement.md @@ -0,0 +1,15 @@ +--- +{ + title: "构建中", + draft: false, + type: "announcement", + isPinned: true, + created_at: "2025-08-25T00:00:00+08:00", + published_at: "2025-08-25T00:00:00+08:00", + updated_at: [ "2025-08-25T00:00:00+08:00"], +} +--- +!!! warning +本站正在积极建设中。如需要,你可以浏览[旧站](https://typecho.lichx.top)。 +文章正在搬运中quq +!!! diff --git a/Feature.md b/Feature.md index b4c1faa..751430b 100644 --- a/Feature.md +++ b/Feature.md @@ -1,6 +1,6 @@ --- { - title: "Feature", + title: "博客开发TODO List", description: "服务器需要支持的Feature", created_at: "2025-08-22T08:00:00+08:00", published_at: "2024-08-22T00:00:00+08:00", @@ -18,10 +18,15 @@ - [ ] 主页 - [ ] 网站标题 - - [ ] 文章列表(时间排序) + - [x] 文章列表(时间排序) - [x] 文章标题 - [x] 文章摘要 - [x] 文章标签 + - [x] 置顶 + - [x] 公告 + - [x] 絮语 + - [ ] 分页 + - [ ] LOGO - [ ] 个人信息展示 - [ ] RSS 订阅 - [ ] 登录管理页面 @@ -38,7 +43,7 @@ - [ ] 上一篇/下一篇文章链接 - [ ] 归档页/archive - [ ] 按时间归档 - - [ ] 按标签归档 + - [ ] 按类别归档 - [ ] 搜索 - [ ] 友链/friend - [ ] 关于 diff --git a/date/oldDate.md b/date/oldDate.md deleted file mode 100644 index 3d74e62..0000000 --- a/date/oldDate.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -{ - title: "标题003Date", - description: "这是一个日期测试文档", - created_at: "2024-10-01T08:00:00+08:00", - published_at: "2024-10-02T00:00:00+08:00", - updated_at: [ "2024-10-03T08:00:00+08:00","2023-10-04T08:00:00+08:00" ], - category: '测试', - tags: [ "测试", "文档!" ], - draft: false, - tech_stack: [ "Vue.js","ASP.Net Core" ], - tech_stack_percent: [ 12,60,15 ], - tech_stack_icon_names: [ "mdi:vuejs","mdi:language-csharp"], - tech_stack_theme_colors: [ "#41b883", "#a179dc" ], -} ---- \ No newline at end of file diff --git a/readme.md b/readme.md index 0d0e13c..de2674f 100644 --- a/readme.md +++ b/readme.md @@ -1 +1,6 @@ +--- +{ + draft: true +} +--- Lichx Blog Articles \ No newline at end of file diff --git a/test.md b/test.md deleted file mode 100644 index 7932d26..0000000 --- a/test.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -{ - title: "标题001", - description: "这是一个测试文档", - created_at: "2023-10-01", - published_at: "2023-10-02", - updated_at: [ "2023-10-03","2023-10-04" ], - tags: [ "测试", "文档" ], - draft: false -} ---- -# 测试文档 -这是一个测试文档的内容。 \ No newline at end of file diff --git a/test/announcement_test.md b/test/announcement_test.md new file mode 100644 index 0000000..72f36c7 --- /dev/null +++ b/test/announcement_test.md @@ -0,0 +1,15 @@ +--- +{ + title: "announcement_test", + draft: true, + type: "announcement", + isPinned: true, + created_at: "2025-08-25T00:00:00+08:00", + published_at: "2025-08-25T00:00:00+08:00", + updated_at: [ "2025-08-25T00:00:00+08:00"], +} +--- +!!! warning +这是公告 +!!! +isPinned 是置顶 不限类型 默认false diff --git a/test/test.md b/test/article_test.md similarity index 94% rename from test/test.md rename to test/article_test.md index 7a28a40..60fde24 100644 --- a/test/test.md +++ b/test/article_test.md @@ -1,8 +1,8 @@ --- { - title: "标题002", + title: "文章测试", description: "这是一个测试文档", - draft: false, + draft: true, type: "article", created_at: "2023-10-01T08:00:00+08:00", published_at: "2023-10-02T00:00:00+08:00", diff --git a/test/rambling_test.md b/test/rambling_test.md index 837fb45..1c7a4ca 100644 --- a/test/rambling_test.md +++ b/test/rambling_test.md @@ -1,7 +1,7 @@ --- { - title: "Rambling", - draft: false, + title: "絮语测试", + draft: true, type: "rambling", created_at: "2025-10-01T08:00:00+08:00", published_at: "2025-10-02T00:00:00+08:00",