halo的使用
文章导入导出方案一halo社区有一vscode扩展提供此功能
https://github.com/halo-sigs/vscode-extension-halo/?tab=readme-ov-file
issue
https://github.com/halo-dev/halo/issues/4873
方案二使用halo插件
https://github.com/Lyn4ever29/halo-plugin-export-md
来源
https://jhacker.cn/2023/halo-plugin-export2doc
终极方案无论是方案一还是方案二,都无法很好处理md文件所附带的图片问题,尤其是方案一,居然还会修改源文件内容,而且不好批量导入导出,简直不可容忍
halo有一附件模块可以用于存放图片等二进制文件,方案二不能处理md文件的图片路径,使其与halo附件模块符合,而且也不能上传图片,针对这点,通过分析halo上传附件的接口,发现并不难,所以自己手动编程解决,代码如下
123456789101112131415161718192021222324252627282930 ...
微博web接口分析
获取cookie的url
https://login.sina.com.cn/visitor/visitor?a=crossdomain&s=_2AkMRhYh2f8NxqwFRmfwRy2vmaIV_zA3EieKn2XmtJRMxHRl-yj9vqmAbtRB6OgWmmh55AN4DGKMg0EAVREQm0p0K6cy5&sp=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhmoeQ5wzafabTPJQagbSrw&from=weibo&_rand=0.8782838631205104&entry=miniblog&url=https%3A%2F%2Fweibo.com%2Fajax%2Ffeed%2Fhottimeline%3Fsince_id%3D0%26refresh%3D0%26group_id%3D102803%26containerid%3D102803%26extparam%3Ddiscover%257Cnew_feed%26max_id%3D0%26count%3D10
_rand参数应该是 ...
归档文件格式
两个命令行工具
ar 一般用于创建Linux系统C/C++的静态库文件
tar
两种文件格式,都是属于未压缩归档格式,所谓归档格式就是一个文件包含了好几个文件的内容的格式
ar 参加wiki ar (Unix) - Wikipedia#:~:text=The archiver%2C also known simply,linker uses and for generating .)
tar 参见wiki tar (computing) - Wikipedia
.deb格式本质上是ar格式
FHS
Filesystem Hierarchy Standard (FHS) 是定义类 Unix 操作系统(如 Linux)中文件系统结构的标准。它规定了各种文件和目录的布局及用途,旨在确保不同操作系统之间的一致性,使得软件开发者和系统管理员更容易理解和管理文件系统。FHS 的设计使系统的结构更加统一,便于软件包的安装和维护。
下面是 FHS 的主要目录及其功能说明:
目录路径
描述
详细说明
/
根目录
系统中所有文件和目录的顶层。所有文件系统都挂载在此目录下,是整个文件系统的起点。
/bin
基本用户命令二进制文件
存放系统启动和单用户模式下所需的基本命令,如 ls、cp、mv 等。通常这些命令在所有用户环境下都可以使用。
/boot
引导加载器文件
包含引导加载器(如 GRUB)使用的文件,以及启动 Linux 系统所需的内核、初始内存盘(initrd)等。
/dev
设备文件
包含与硬件设备(如磁盘、终端、打印机)相关的特殊文件。这些文件通常通过设备驱动程序与物理设备交互。
/etc
配置文件
存储系统级配置文件和脚本,如网络配置、用户信息、服务启动脚本等 ...
EGE库的使用
EGE是一个基于C++语言的针对Windows平台的图形库
官网:https://xege.org/
下面演示如何在Windows上Getting Started
首先下载编译工具,这里使用MinGW,官网是:MinGW-w64,在这上面找到w64devkit,下载它,它最终会是一个目录,其bin目录下存放了gcc、g++等编译工具,还有一些常用的linux命令工具,如ls、nc,为方便使用这些工具,添加路径到PATH环境变量
如果不添加PATH环境变量,当用gcc、g++编译时会出现问题,提示找不到文件之类的错误
添加环境变量后,windows上使用如下命令验证gcc、g++命令是来自刚刚配置的目录
1where gcc
1where g++
接下来下载EGE库,从它的官网上找到下载链接下载,最终也是一个目录,进入后,include目录是这个库的头文件,lib目录是这个库的静态库文件,它分为好几个版本,这里选择mingw64/mingw-w64-gcc-8.1.0-x86_64这个目录下的静态库文件
然后可以新建项目目录了,在项目目录下新建源码文件main.cpp, ...
C语言静态库和动态库
创建静态库的过程通常包括以下几个步骤:
编写源代码:编写要包含在静态库中的C源文件。
编译为目标文件:将源代码编译为目标文件(.o)。
创建静态库:使用 ar 工具将目标文件打包成静态库(.a)。
使用静态库:在其他程序中链接和使用这个静态库。
示例演示1. 编写源代码假设你有两个源文件,分别是 foo.c 和 bar.c,内容如下:
foo.c:
12345#include <stdio.h>void foo() { printf("This is function foo.\n");}
bar.c:
12345#include <stdio.h>void bar() { printf("This is function bar.\n");}
2. 编译为目标文件使用 gcc 将 foo.c 和 bar.c 编译为目标文件 foo.o 和 bar.o:
12gcc -c foo.c -o foo.ogcc -c bar.c -o bar.o
3. 创建静态库使 ...
C语言Linux系统调用
什么是系统调用系统调用是操作系统提供对外提供服务的方式,应用程序通过系统调用请求操作系统完成特定功能
在C语言中,系统调用表现为一系列函数的调用,常见的系统调用函数如下
进程控制
**fork()**:创建一个新进程。
123456789101112131415161718192021222324252627#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main() { pid_t pid; // 创建新进程 pid = fork(); if (pid < 0) { // fork失败 perror("fork failed"); return 1; } else if (pid == 0) { // 子进程 printf("This is the child process. PID: %d\n ...
手动VPN
手动模拟实现VPN
本项目旨在模拟VPN效果的一种实现,分为客户端和服务端两个程序,客户端程序是一个安卓APP,用Android Studio作为开发IDE,服务端程序是一个运行于Linux系统上的C语言程序,用Clion作为开发IDE。
了解Android Studio,就不得不了解Ktolin,早年间安卓开发虽然用的是Java,但是现在已经流行用Kotlin,``Ktolin`是一种有别于Java语法的基于JVM的编程语言,它的官网:Kotlin Programming Language (kotlinlang.org),可从此官网页面Kotlin command-line compiler | Kotlin Documentation (kotlinlang.org)获取命令行编译器,下载解压后如下
bin目录包含kotlinc脚本,此脚本可以用于编译kotlin程序,可将此路径添加到PATH环境变量
直接运行kotlinc会进入一个交互式环境,从输出中可知,kotlin编译器依赖于jvm,可以推断,kotlin编译器是用java或其它能编译成字节码的 ...
项目部署过程
项目部署过程这里简要描述web项目的部署,所需东西:
一台具有公网ip的计算机
域名
SSL/TLS证书
网站的静态资源和动态资源
关于第一点,可以从各种云平台购买获取,比如国内的阿里云,腾讯云,华为云等,国外的vultr,搬瓦工
关于域名,可以从阿里云购买,也可去域名购买网站购买
关于证书,可以去一些网站上免费申请90天时效的证书
部署步骤:
ssh连接到远程主机
安装nginx,上传网站静态资源,配置nginx以应用资源
安装并运行此项目依赖的软件,如MinIO,Redis,Coturn
安装MySQL,配置MySQL,创建数据库和表结构,需要时也可导入数据
上传SpringBoot项目构建后的可执行jar包文件到远程主机
配置此jar包,将它以系统服务的方式运行
云服务器平台的选择
云服务器平台的选择分为国内和国外两种
国内的服务器特点
网络延迟低(响应快,100ms以内)
网络带宽通常很有限,只有几兆(传输慢)
搭建网站需备案(域名备案才能用浏览器以域名访问,https也不行)
电子邮箱端口25的入站流量默认被封禁,意味着不能搭建邮件服务
价格便宜
不可用于科学上网环境搭建
国外的服务器的特点
网络延迟高,平均300ms
网络带宽通常巨大,由于国内线路问题,国内访问的带宽非常有限,需通过技术手段加速
无需备案即可用浏览器以域名访问网站
电子邮箱端口不封禁,可自建邮局
价格略贵
可用于科学上网环境搭建
国内平台:阿里云,腾讯云,华为云
国外:Vultr
这些云服务器都有一个共同点,就是具有公网IPv4地址,可配合实现内网穿透
