从旧站搬运一批文章

This commit is contained in:
li-chx
2025-08-26 01:34:11 +08:00
parent a7cd0a0360
commit f667c37701
22 changed files with 722 additions and 36 deletions
+16
View File
@@ -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发完成信号。
+15
View File
@@ -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没写,只能之后补上了。
明天又要验收实验,得快点了
+62
View File
@@ -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命名法
}
```
在充分理解以上约定的基础上,清晰胜于简洁
@@ -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
+11
View File
@@ -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"],
}
---
于我而言,**思考**与**遗忘**竟如此形影不离。
@@ -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打洞过程 最后做成一个局域网 把打洞目标放进去
这件事远远超过我的能力 此处仅是记录 待来日有能力实现
搬运时补充:
直到现在,我还是没有实现这个技术,同时我很确定已经有人干过类似的了