完成从旧站的搬运

This commit is contained in:
li-chx 2025-08-27 11:19:39 +08:00
parent f667c37701
commit 565aff4a59
11 changed files with 517 additions and 4 deletions

View File

@ -0,0 +1,28 @@
---
{
title: "Hyprland 新进展",
description: "此前博客中提到的swww问题经提交issue后得知是因重构引发开发者已将main分支回退至稳定版本问题得以解决。同时也找到了解决Fcitx5在Electron中无法使用的有效方案并意外发现一个MC服务器社群。接下来的计划是配置JetBrains系列软件的Fcitx5输入法并安装Office等生产力工具继续探索。",
draft: false,
type: "article",
created_at: "2024-07-02T10:00:00+08:00",
published_at: "2024-07-02T10:09:00+08:00",
updated_at: [ "2024-07-02T10:09:00+08:00"],
category: '个人',
tags: [ "Linux" ],
tech_stack: [ "Hyprland","Linux" ],
tech_stack_percent: [ 9, 1 ],
tech_stack_icon_names: [ "simple-icons:hyprland","simple-icons:linux" ],
tech_stack_theme_colors: [ "#10dbd7", "#263238" ],
}
---
!!!warning Legacy Article 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
上次blog有提到swww的相关问题在提交[issue](https://github.com/LGFae/swww/issues/337)后开发者说是当前正在重构导致的不稳定。并且把main分支回退到了一个更稳定的版本
然后就能用了捏quq
![图片.png](https://typecho.lichx.top/usr/uploads/2024/07/2726087925.png)
好看!
另外一件事是fcitx5在electron中无法使用的问题。翻遍各种网站后还真让我找到了正确的[解决方案](https://my.toho.red/posts/solve-electron-wayland-input-problem)(屎里淘金说是)
另外顺着这个网站找到了一个不大的mc服务器群quq
下一步是jetbrain系软件继续搞fcitx5安装和生产力软件word、excel、powerpoint、...)还有各种折腾

View File

@ -0,0 +1,55 @@
---
{
title: "LagrangeCoreApi 开发小记",
description: "本文介绍了C#中ControllerBase的扩展方法通过重载设计解决响应中数据与消息参数组合的问题。同时提到Lagrange.Core现已提供官方签名API无需自建签名服务。最后分享了使用VS的Git功能时建议以命令行为主、界面为辅的操作经验。",
draft: false,
type: "article",
created_at: "2024-07-07T21:00:00+08:00",
published_at: "2024-07-07T21:09:00+08:00",
updated_at: [ "2024-07-07T21:09: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#
public static class ControllerBaseExtension
{
public static IActionResult Success(this ControllerBase controller) =>
new ApiResponse<int>(200);
public static IActionResult Success(this ControllerBase controller, string msg) =>
new ApiResponse<int>(200, msg);
public static IActionResult Success<T>(this ControllerBase controller, T data) =>
new ApiResponse<T>(200, "", data);
public static IActionResult Success<T>(
this ControllerBase controller,
string msg,
T? data
) => new ApiResponse<T>(200, msg, data);
public static IActionResult Fail(this ControllerBase controller) =>
new ApiResponse<int>(500);
public static IActionResult Fail(this ControllerBase controller, string msg) =>
new ApiResponse<int>(500, msg);
}
```
之前写这段代码时遇到一个问题如果想要使用一个参数发送string类型的data但msg留空。在全用范型方法的情况下是做不到的。当时把这个问题暂时搁置了。但后续使用方法时由于忘记填写范型类型导致报错让我想出了如上的方法。如果有范型则最后一个参数为data。否则没有data数据。后续可能会用object和null代替。
第二Lagrange.Core现在有官方的Api地址可以不用自己设置sign服务了
https://sign.lagrangecore.org/api/sign
Thanks for 外国热心网友 for Provision of Azure Servlet
** Built-in SignServer is now provided, Enjoy! **
第三VS的git真的难用。点了半天后上网搜了git命令直接解决了。建议只把VS的git作为一个可视化工具。

View File

@ -0,0 +1,76 @@
---
{
title: "Xorg 红蓝两色通道异常 默认分辨率和色深设置",
description: "Xorg显示颜色异常如红色显蓝因色深设置错误将8bit改为16bit后修复。需在配置中指定amdgpu驱动并设DefaultDepth为16原modesetting驱动不支持16bit下1920x1080分辨率。调整配置后问题解决。",
draft: false,
type: "article",
created_at: "2024-07-15T02:35:00+08:00",
published_at: "2024-07-15T02:45:00+08:00",
updated_at: [ "2024-07-15T02:45: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 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
现象:红色显示蓝色,蓝色显示黄色
原因Xorg色深设置错误从8bit提升至16bit后显示正确
相关conf
```
Section "Device"
Identifier "AMD"
Driver "amdgpu"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "amdgpu"
Monitor "Default Monitor"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1920x1080"
EndSubSection
EndSection
### Valid values for rotation are "normal", "left", "right"
Section "Monitor"
Identifier "Default Monitor"
# Option "Rotate" "normal"
# 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
Modeline "1920x1080_60.00" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
EndSection
```
正点原子RK3568的默认配置中Device使用的驱动是modesetting该驱动在16bit色深下不能提升分辨率至1920x1080
你可以通过执行 `sudo X :1 -configure` :1 可以是其它非0数字不要是已激活的屏幕就行
```
X.Org X Server 1.21.1.7
X Protocol Version 11, Revision 0
Current Operating System: Linux atompi-ca1 5.10.160 #1 SMP Tue Jan 30 11:01:02 CST 2024 aarch64
Kernel command line: earlycon=uart8250,mmio32,0xfe660000 root=/dev/mmcblk0p3 earlyprintk console=ttyFIQ0 rootwait rw
xorg-server 2:21.1.7-3+deb12u7 (https://www.debian.org/support)
Current version of pixman: 0.42.2
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.1.log", Time: Sun Jul 14 18:42:15 2024
List of video drivers:
amdgpu
ati
nouveau
radeon
modesetting
fbdev
vesa
No devices to configure. Configuration failed.
(EE) Server terminated with error (2). Closing log file.
```

View File

@ -0,0 +1,50 @@
---
{
title: "sysv-rc-conf 升级失败 依赖冲突 AtomPi 正点原子RK3568 Debian升级小记",
description: "文章记录了Debian 11升级12的过程重点警告使用systemd时切勿升级或应卸载sysv-rc-conf否则会引发冲突甚至删除systemd。升级前务必用timeshift备份并注意处理dbgsym包及依赖问题。",
draft: false,
type: "article",
created_at: "2024-07-12T21:15:00+08:00",
published_at: "2024-07-12T21:28:00+08:00",
updated_at: [ "2024-07-12T21:28: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 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
故事略长,但是先讲重点
如果你使用systemd作为init程序那么不要升级sysv-rc-conf甚至可以直接卸载
正文AtomPi 正点原子RK3568 Debian升级小记
新拿到手的RK3568自带的是Debian11 说实话,能用,如果不像我一样对新系统偏执完全不用升级
升级系统步骤如下:
设置timeshift系统备份很重要不要莽去搜简单易用有效
删除所有dbgsym
`dpkg -l | grep dbgsym | awk '{print $2}' | xargs sudo dpkg --purge `
这个命令说实话有点危险它本意是删除所有带dbgsym的软件包后续升级时这些软件包会造成依赖问题
修改`/etc/apt/sources.list` 我这里是Debian11升12所以把bullseye改为bookworm
`sudo apt update $$ sudo apt upgrade`
升级后你会发现一些软件包没有被升级,我的处理方式挺麻烦的,当然你选择不升级也不会有任何影响。
我这边大概有80多个未升级的软件包很多软件包能看出来是一类的当你使用
'''
sudo apt upgrade
sudo apt dist-upgrade
'''
都不能升级,但`sudo apt upgrade [特定软件包名]`又可以升级时可以试试这样例如gstreamer
`dpkg -l | grep gstreamer | awk '{print $2}' | xargs sudo apt dist-upgrade -y --allow-change-held-packages `
好,其实以上这些都不是我想讲的
我想说的是其中一个软件包sysv-rc-conf
在尝试单独升级这个包时会出现systemd相关的依赖冲突问题。但是奇怪的是其他软件包的依赖问题都是这样子的
升级A时
A依赖B B版本不对
B依赖A A的新版本不能被B接受
但是sysv-rc-conf却没有出现在依赖问题中。
然后我试着删掉包重装。然后发现重装时要求删掉我的systemd
这下我知道为什么我第一次升级把systemd升没了。上一次我的处理方法是记录所有包删掉所有包重装所有包。
sysv init和systemd init是冲突的。用systemd就好了。

View File

@ -0,0 +1,161 @@
---
{
title: "从debian装模拟器打Arknights到RK3568内核重编译",
description: "文章记录了Debian 11升级12的过程重点警告使用systemd时切勿升级或应卸载sysv-rc-conf否则会引发冲突甚至删除systemd。升级前务必用timeshift备份并注意处理dbgsym包及依赖问题。",
draft: false,
type: "article",
created_at: "2024-07-28T02:00:00+08:00",
published_at: "2024-07-28T02:47:00+08:00",
updated_at: [ "2024-07-28T02:47:00+08:00"],
category: '个人',
tags: [ "Linux" ],
tech_stack: [ "Docker", "Linux" ],
tech_stack_percent: [ 4,6 ],
tech_stack_icon_names: [ "mdi:docker", "simple-icons:linux" ],
tech_stack_theme_colors: [ "#1c90ed","#263238" ],
}
---
!!!warning Legacy Article 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
## 前言
写这篇文章的起因是想在RK3568上运行Arknights+MAA但是模拟器需要的编译参数没有打开。故重编译内核。考虑到后续需要OpenWRT故同时启用KVM支持。
在编译过程中,遇到了非常多的问题,在此记录一下。
### 前言就是用来写废话的!!(暴论)
这次编译内核就目前为止失败了三次。两次是因为磁盘空间不足,一次是因为内存空间不足。我会在之后成功时计算内存和存储的用量。(是的我是边做边写的,如果我做完再写就写不出这些废话了)
用到的RK3568是正点原子的它们提供了一个Linux SDK包并且给了一份指导书可惜有一些缺漏。SDK包会有一些传统内核编译没有的东西build.sh大概所以这个教程并不一定能完全适用所有RK3568。请自行判断。
原子科技的内核编译使用的是VMware。我能理解但我这里用的是WSL+Docker因为我希望能最多的利用性能。
wsl的内存一定要拉大还有SWAP一定要拉大我后续会出一份内存使用情况-时间图。(大概)
指导手册和源码指北:
[我是链接](http://www.openedv.com/docs/boards/arm-linux/RK3568Linux.html)
手册在A盘->10、用户手册.zip->10、用户手册->03、辅助文档->24【正点原子】ATK-DLRK3568_Linux5.10_SDK编译说明V1.0.pdf
源码在B盘->02、ATK-DLRK3568开发板SDK->05、linux5.10_sdk
## 正文
### Docker迁移
Windows的Docker Desktop wsl虚拟机默认装载C盘。你可能装在了别的盘请确认该盘至少有91G容量。(粗略计算,建议多准备一些)(如果过程中内存不足是会把整个wsl带崩的到时候就只能`wsl --shutdown`重启wsl了)
Docker迁移非常简单Docker Desktop - Settings - Resources 然后直接改location就行。如果说你的Docker用过一段时间了那么可能会很耗时。你可以通过任务管理器的磁盘占用与速率推断出Docker迁移是否完成。不要以Docker Engine是否重新启动作为参照。
我不建议你用wsl的导出和导入迁移Docker。虽然迁移后能用但这会导致Docker内部显示的路径还是之前的路径可能有影响反正不太好。
### Ubuntu Container的启动与SDK全编译
在Docker中启动一个最小Ubuntu镜像。笔者使用的是22.04但现在最新的应该是24.04了所以注意一下latest tag对应的版本问题。这一步pull image即可。
镜像启动容器这里我先用Docker Desktop创建一个有公共空间的镜像然后再点击三个点 Copy Docker Run 把复制出来的命令中,加上-t --privileged。然后删掉容器在powershell中重新运行即可。
这里给出我自己的Run命令
```
docker run --hostname=4417a56bb7d1 --mac-address=02:42:ac:11:00:02 --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --volume=C:\Users\{替换成你的用户名}\Desktop\dockerShare:/data:rw --restart=no --label='org.opencontainers.image.ref.name=ubuntu' --label='org.opencontainers.image.version=22.04' --runtime=runc -t -d --privileged ubuntu:latest
```
该命令把桌面上的dockerShare文件夹映射到Ubuntu内部的/data文件夹你也可以改改。
Ubuntu镜像换源
tip有bash不要用sh折磨自己
这里给出我自己在用的源(阿里云),但是不能保证你用的时候源还能用:
因为没有vi没有vim没有nano所以直接重定向即可。
```
echo "deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse" >/etc/apt/sources.list
```
更新&安装依赖
`apt update && apt upgrade`
代码更新需要python2.7因为要装python2.7我才不用自己的实体Ubuntu原因一
`apt install python2.7`
指导手册给的依赖 好多我自己用不到的我才不用自己的实体Ubuntu原因二
```
apt install git ssh make gcc libssl-dev liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev libmpc-dev bc
```
因为使用了最小Ubuntu所以需要额外装一些软件vim是我个人的习惯应该可以换nano
`apt install time file rsync bsdmainutils xz-utils vim`
为python2.7做一个到python的链接
`ln -s $(which python2.7) /usr/bin/python`
把显示转换为中文UTF-8不换可能导致某些带中文的文件在vim中显示不正确
`echo 'LANG="zh_CN.UTF-8"' >> /etc/environment`
首先解压05、linux5.10_sdk.zip和其嵌套的文件夹假设该zip已经在Ubuntu:/data文件夹下
我不记得unzip是不是自带的了我估计不是如果没有就装一下
`unzip 05、linux5.10_sdk.zip` //此处建议敲个05敲个tab
//把解压出来的两个tgz文件复制一份到主目录如果缺空间data下解压出来的tgz文件就可以删了。
```
mkdir ~/rk3568_linux5.10_sdk
tar -xzf ~/atk-rk3568_linux5.10_release_v1.1_20240705.tgz -C ~/rk3568_linux5.10_sdk
cd ~/rk3568_linux5.10_sdk
.repo/repo/repo sync -l -j10 //这一步用到了python (python2.7)
tar -xf ~/dl.tgz -C ./buildroot/
./build.sh alientek_rk3568_defconfig
```
准备工作都做完了如果你只想编译内核请跳转到下一节如果你想全编译SDK就继续。
全编译:
`./build.sh all`
### 内核编译选项设置
由于后续使用Docker Desktop的terminal看不清选项菜单中的*故使用其他terminal操作
` docker exec -it {docker id} /bin/sh`
进入内核文件夹
`cd kernel`
首先需要选择合适的defconfig 观察build.sh 编译kernel时的log
```
==========================================
Start building kernel
==========================================
+ make -C /root/rk3568_linux5.10_sdk/kernel/ -j21 CROSS_COMPILE=/root/rk3568_linux5.10_sdk/prebuilts/gcc/
linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
ARCH=arm64 rockchip_linux_defconfig
```
可见defconfig名字为rockchip_linux_defconfig
删除之前生成的.config
`rm .config`
设置内核选项:
`make menuconfig KCONFIG_CONFIG=arch/arm64/configs/rockchip_linux_defconfig ARCH=arm64`
需要设置的内核编译选项有KVM和CONFIG_KPROBE_EVENTS
KVM比较简单
主页 Virtualization 按y勾选然后回车进入按y勾选KVM即可
CONFIG_KPROBE_EVENTS相对复杂一点先搜索该选项。
![image.png](https://typecho.lichx.top/usr/uploads/2024/07/903557681.png)
Location代表该选项位置Depends on代表依赖。需要先满足依赖该选项才会出现。DFS启动
可见KPROBES为n再次搜索KPROBES
![image.png](https://typecho.lichx.top/usr/uploads/2024/07/1048796659.png)
可见其Location为General architecture-dependent options 但是找不到这个位置
在经过我一顿尝试后发现把KGDB打开就行
KGDB位置Kernel hacking > Generic Kernel Debugging Instruments
之后CONFIG_KPROBE_EVENTS也自动开启了
选择save之后退出
需要小小的修改一下源码,当然你也可以试试直接编译,但应该会遇到如下问题:
error: implicit declaration of function 'sve_cond_update_zcr_vq' [-Werror=implicit-function-declaration]
修改这个 kernel文件夹下
`vim arch/arm64/include/asm/fpsimd.h`
在170行添加这句话
tips `:set nu`显示行号 `:170`转到170行
```
168 static inline void sve_user_disable(void) { BUILD_BUG(); }
169 static inline void sve_user_enable(void) { BUILD_BUG(); }
170 + #define sve_cond_update_zcr_vq(val, reg)
171 static inline void sve_init_vq_map(void) { }
172 static inline void sve_update_vq_map(void) { }
```
如果你需要启用KPROBE_ON_FTRACE那你需要这个[链接](https://patchwork.kernel.org/project/linux-arm-kernel/patch/20191218140622.57bbaca5@xhacker.debian/#23074137)
此外如果你需要启用DOCKER那么我建议你同时启用NF_TABLE、BRIDGE、MASQUERADE、addrtype相关选项
重编译内核,打包镜像:
```
cd ..
./build.sh kernel
//updateimg不是必要的其作用是更新update.img如果你只烧录内核那你可以在output/firmware/找到它
./build.sh updateimg
```
kernel位置
boot.img: output/update/Image/ 同output/firmware/
update.img: output/update/
### 引用:
[Kprobes介绍](https://www.kernel.org/doc/html/latest/trace/kprobes.html)
[sve_cond_update_zcr_vq 相关错误与解决方案](https://mailweb.openeuler.org/hyperkitty/list/linuxarm@openeuler.org/thread/3D6J3RU6ZDFIINBJG7T4OETLERMXMWOB/#:~:text=The%20root%20cause%20is%20that%20sve_cond_update_zcr_vq%20is%20not,it%20by%20adding%20an%20empty%20definition%20when%20CONFIG_ARM64_SVE%3Dn.)
[ARM64启用KPROBE_ON_FTRACE的PATCH](https://patchwork.kernel.org/project/linux-arm-kernel/patch/20191218140622.57bbaca5@xhacker.debian/#23074137)
### 待补充内存图
内存图鸽了我不想再折磨一次电脑目测RAM占用上过10G我用的16G内存加16GSWAP在用户文件夹下的.wslconfig调整

View File

@ -0,0 +1,12 @@
---
{
title: "2024.8.9 开发小记",
draft: false,
type: "rambling",
created_at: "2024-08-09T02:00:00+08:00",
published_at: "2024-08-09T02:11:00+08:00",
updated_at: [ "2024-08-09T02:11:00+08:00"],
}
---
今天打开LagrangeCoreApi的代码花了点时间看懂之前的代码然后进行了小修小补。结果最后发现昨晚能运行的功能今天坏掉了。一路Debug无果最后发现git设置还有问题。干脆删掉了代码从昨天的版本再来。
闹麻了..

View File

@ -0,0 +1,11 @@
---
{
title: "RK3568从入门到放弃",
draft: false,
type: "rambling",
created_at: "2024-08-16T20:00:00+08:00",
published_at: "2024-08-16T20:28:00+08:00",
updated_at: [ "2024-08-16T20:28:00+08:00"],
}
---
我用一个暑假的时间证明以我目前的能力在RK3568中运行android模拟器是一件做不到的事

View File

@ -0,0 +1,59 @@
---
{
title: "ApiFox / Postman 使用WebSocket连接SignalR需要注意的小问题",
description: "使用ApiFox测试SignalR时发现消息发送无响应原因为未在消息末尾添加结束符0x1e。正确格式为消息体后加0x1e字符如`{\"protocol\":\"json\",\"version\":1}`。调用方法需按指定JSON结构并注意不同类型消息的含义。",
draft: false,
type: "article",
created_at: "2024-09-11T15:00:00+08:00",
published_at: "2024-09-11T15:08:00+08:00",
updated_at: [ "2024-09-11T15:08:00+08:00"],
category: '个人',
tags: [ "WebSocket" ],
tech_stack: [ "WebSocket" ],
tech_stack_percent: [ 1 ],
tech_stack_icon_names: [ "simple-icons:socketdotio" ],
tech_stack_theme_colors: [ "#fdfdfd" ],
}
---
!!!warning Legacy Article 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
省流忘加0x1e
最近刚接触SignalR发现用ApiFox怎么都没法测试可以正常连接但是发消息没有任何反应。我一度怀疑是自己的环境出了问题。
![image.png](https://typecho.lichx.top/usr/uploads/2024/09/1251616581.png)
后来直接使用大佬的代码带前端进行测试发现是正常的。说明这只是操作上的问题。又去搜postman调试SignalR。才找到了这个简单的隐蔽的问题。
SignalR的交流以0x1e作为结束符。之前没有注意到这一点走了一些弯路。
`{"protocol":"json","version":1}`
这段代码末尾加了个0x1e。可以直接整段复制用于SignalR连接。
![image.png](https://typecho.lichx.top/usr/uploads/2024/09/2409001684.png)
TakeAway message:
如果想要上传消息,格式是:
{
"type": 1,
"target": "方法名",
"arguments": ["方法参数1", "方法参数2..."]
}
SignalR type 数字含义From Copilot
1. Invocation (1)
• 表示客户端或服务器调用一个方法。
• 例如客户端调用服务器上的一个Hub方法。
2. StreamItem (2)
• 表示流中的一项数据。
• 用于流式传输数据时,每个数据项都会使用这个消息类型。
3. Completion (3)
• 表示一个调用或流的完成。
• 包含调用的结果或错误信息。
4. StreamInvocation (4)
• 表示客户端请求从服务器流式传输数据。
• 服务器会返回多个StreamItem消息。
5. CancelInvocation (5)
• 表示取消一个流式传输的请求。
• 客户端可以发送这个消息来取消一个正在进行的流。
6. Ping (6)
• 表示一个心跳消息,用于保持连接活跃。
• 没有负载,只是为了确保连接没有超时。
7. Close (7)
• 表示连接关闭。
• 包含可选的错误信息。

View File

@ -0,0 +1,60 @@
---
{
title: "Docker内部网络连接错误的一种检查手段 nmap container",
description: "文章讲述了排查容器内应用连接问题的方法。作者创建了一个nmap容器来检查`host.docker.internal`发现该域名已不可用实际应使用IP`172.17.0.1`。同时分享了在服务器无法拉取镜像时,通过`docker save`和`docker load`迁移本地镜像的解决方案。最后提到可直接在容器内启动Ubuntu并exec进入操作。",
draft: false,
type: "article",
created_at: "2024-09-23T20:50:00+08:00",
published_at: "2024-09-23T21:01:00+08:00",
updated_at: [ "2024-09-23T21:01:00+08:00"],
category: '个人',
tags: [ "Docker" ],
tech_stack: [ "Docker" ],
tech_stack_percent: [ 1 ],
tech_stack_icon_names: [ "mdi:docker" ],
tech_stack_theme_colors: [ "#1c90ed" ],
}
---
!!!warning Legacy Article 过时的文章
此文章从旧博客迁移而来,编写时技术水平有限,仅供参考
!!!
最近被一个容器无法内应用无法连接的问题折磨住了我想看看内部的host.docker.internal到底怎么回事于是想到建立一个nmap container进去检查
Dockerfile:
```
# 使用官方的 Ubuntu 镜像作为基础镜像
FROM ubuntu:latest
# 更新包列表并安装 nmap
RUN apt-get update && apt-get install -y nmap
# 创建一个目录来存储 nmap 结果
RUN mkdir /nmap_results
# 运行 nmap 并将结果保存到文件中,同时打印到控制台
CMD ["sh", "-c", "nmap host.docker.internal > /nmap_results/nmap_results.log && cat /nmap_results/nmap_results.log"]
```
docker-compose.yml:
```
version: '3.4'
services:
nmap_service:
image: nmap_image:latest
build:
context: .
dockerfile: Dockerfile
volumes:
- ./nmap_results:/nmap_results
```
nmap结果发现不存在host.docker.internal可能是docker更新的原因。之前是可用的但现在变成了 `172.17.0.1`
另附服务器无法pull image时使用其他机器本地image的方法
```
# 机器一
docker save [imgID] > imagefile
#机器二
docker load < imagefile
docker tag [new_imgID] [随便什么名字]:[随便什么版本]
```
最后改掉Dockerfile中的FROM就好了
写文章时我才想起来可以直接docker内起ubuntu虚拟机exec进去操作忘了。

View File

@ -6,7 +6,7 @@
type: "article", type: "article",
created_at: "2025-08-25T02:54:33+08:00", created_at: "2025-08-25T02:54:33+08:00",
published_at: "2025-08-25T04:17:34+08:00", published_at: "2025-08-25T04:17:34+08:00",
updated_at: [ "2025-08-25T02:54:33+08:00" ], updated_at: [ "2025-08-25T04:17:34+08:00" ],
category: '记录', category: '记录',
tags: [ "前端", "文档" ], tags: [ "前端", "文档" ],
tech_stack: [ "Vue.js","Nuxt","TypeScript" ], tech_stack: [ "Vue.js","Nuxt","TypeScript" ],
@ -23,7 +23,7 @@
从某种程度上来说,我自行搭建博客的原因与以上发言类似 ~~(有点大言不惭了)~~ ,我需要一个测试自己的机会。我已经构建了几十个项目,我对它们尽心尽力,但是它们中大多数生命周期很短,往往是为了实验、比赛等短期目标。这些代码往往不需要过高的可扩展性和稳定性。同时,我注意到我的能力似乎已经足以支撑我去构建一个更加大型的长期项目。思来想去,博客是一个不错的选择,并且我可以通过它来记录我的学习和生活。 从某种程度上来说,我自行搭建博客的原因与以上发言类似 ~~(有点大言不惭了)~~ ,我需要一个测试自己的机会。我已经构建了几十个项目,我对它们尽心尽力,但是它们中大多数生命周期很短,往往是为了实验、比赛等短期目标。这些代码往往不需要过高的可扩展性和稳定性。同时,我注意到我的能力似乎已经足以支撑我去构建一个更加大型的长期项目。思来想去,博客是一个不错的选择,并且我可以通过它来记录我的学习和生活。
构建博客的原因之二是,市面上现有的博客也许它们能满足我的需求,但是我感觉研究它们的配置没有我自己重写一个有趣。而且,我希望能够完全控制我的博客内容和样式,而不是被平台所限制。 构建博客的原因之二是,市面上现有的博客也许能满足我的需求,但是我感觉研究它们的配置没有我自己重写一个有趣。而且,我希望能够完全控制我的博客内容和样式,而不是被平台所限制。
## 进展如何? ## 进展如何?
当我实际开始写之后我注意到这件事远比我设想的复杂。有很多技术我只是想当然的认为可行虽然结果也确实能行但是有大量的细节需要注意。不得不说首次编写本博客的现在已是暑假之末但是项目进度很不理想。先不考虑管理端博客部分有两个页面没创建一个页面有bug已有页面中有一个组件还没开始写。 当我实际开始写之后我注意到这件事远比我设想的复杂。有很多技术我只是想当然的认为可行虽然结果也确实能行但是有大量的细节需要注意。不得不说首次编写本博客的现在已是暑假之末但是项目进度很不理想。先不考虑管理端博客部分有两个页面没创建一个页面有bug已有页面中有一个组件还没开始写。

View File

@ -3,11 +3,12 @@
title: "博客开发TODO List", title: "博客开发TODO List",
description: "服务器需要支持的Feature", description: "服务器需要支持的Feature",
created_at: "2025-08-22T08:00:00+08:00", created_at: "2025-08-22T08:00:00+08:00",
published_at: "2024-08-22T00:00:00+08:00", published_at: "2025-08-22T00:00:00+08:00",
updated_at: [ "2024-08-22T08:00:00+08:00"], updated_at: [ "2025-08-22T08:00:00+08:00"],
category: '规划', category: '规划',
tags: [ "规划", "文档!" ], tags: [ "规划", "文档!" ],
draft: false, draft: false,
pinned: true,
tech_stack: [ "Vue.js","ASP.Net Core" ], tech_stack: [ "Vue.js","ASP.Net Core" ],
tech_stack_percent: [ 12,60,15 ], tech_stack_percent: [ 12,60,15 ],
tech_stack_icon_names: [ "mdi:vuejs","mdi:language-csharp"], tech_stack_icon_names: [ "mdi:vuejs","mdi:language-csharp"],