<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>inspireMeNow的小站</title>
    <link>https://inspiremenow.top/zh/</link>
    <description>Recent content on inspireMeNow的小站</description>
    <image>
      <title>inspireMeNow的小站</title>
      <url>https://inspiremenow.top/images/profile.jpg</url>
      <link>https://inspiremenow.top/images/profile.jpg</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh</language>
    <lastBuildDate>Mon, 08 Sep 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://inspiremenow.top/zh/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>为 NCNN 添加 RenderDoc 支持</title>
      <link>https://inspiremenow.top/zh/posts/2025-09-08-ncnn-renderdoc/</link>
      <pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2025-09-08-ncnn-renderdoc/</guid>
      <description>平台检测宏定义 #define PLATFORM_WINDOWS 0 #define PLATFORM_LINUX 0 #define PLATFORM_APPLE 0 #define PLATFORM_IOS 0 #define PLATFORM_ANDROID 0 查阅文档发现各个平台的 RenderDoc 库名称不同，因此需要用宏来检测各个平台，这里我定义了这几个宏，分别代表 Windows、Linux 等
#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) #undef PLATFORM_WINDOWS #define PLATFORM_WINDOWS 1 #elif defined(__APPLE__) #undef PLATFORM_APPLE #define PLATFORM_APPLE 1 // 其他平台检测 Windows 的话，可以通过 __WIN32__ 或者检测是否有 MSVC 就行；Android 用 __ANDROID__； Apple 平台用 __APPLE__；剩下的识别为 Linux
RenderDoc API 初始化 #define RENDERDOC_API_LATEST RENDERDOC_API_1_6_0 #define eRENDERDOC_API_Version_LATEST eRENDERDOC_API_Version_1_6_0 这里定义 LATEST 宏可以方便后续更新 RenderDoc 版本
Windows 平台</description>
    </item>
    <item>
      <title>Fedora 切换到 UKI 内核并启用安全启动</title>
      <link>https://inspiremenow.top/zh/posts/2025-05-18-fedora-uki-setup/</link>
      <pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2025-05-18-fedora-uki-setup/</guid>
      <description>生成 UKI 镜像 这部分需要先去 BIOS 关闭安全启动！！
删除 GRUB 引导程序 sudo rm -rf /boot/efi/* sudo dnf remove grub2\* --setopt=protected_packages= 配置 kernel-install 这里为 UKI 镜像所在文件夹，可以根据需要自行修改
sudo mkdir -p /boot/efi/EFI/Linux 这里也可以使用 ukify
sudo vim /etc/kernel/install.conf layout=uki uki_generator=dracut 由于默认生成的 efi 文件包含随机字符，不利于 Direct Boot，这里需要固定 efi 文件名称
sudo cp /usr/lib/kernel/install.d/90-uki-copy.install /etc/kernel/install.d/ sudo vim /etc/kernel/install.d/90-uki-copy.install 这里添加了 UKI_FALLBACK_FILE， 留一份原来的内核备用
#!/usr/bin/sh # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh # SPDX-License-Identifier: LGPL-2.</description>
    </item>
    <item>
      <title>在milkv duo s开发版上运行ncnn并测试</title>
      <link>https://inspiremenow.top/zh/posts/2024-07-03-milkv-duos-ncnn/</link>
      <pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2024-07-03-milkv-duos-ncnn/</guid>
      <description>编译安装ncnn 克隆ncnn仓库 我的系统是fedora 40
mkdir ncnn cd ncnn git clone https://github.com/Tencent/ncnn.git git submodule update --init 设置交叉工具链 cd .. wget https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz mkdir riscv-milkv tar -zxvf host-tools.gz -C riscv-milkv/ export RISCV_ROOT_PATH=$(pwd)/riscv-milkv/host-tools/gcc/riscv64-linux-x86_64 设置cmake cd ncnn mkdir build-milkv/ cd build-milkv cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/c906-v240.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_BUILD_TESTS=ON -DNCNN_OPENMP=OFF -DNCNN_THREADS=OFF -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON .. 设置完cmake就可以编译ncnn了
编译ncnn make -j$(nproc) 将benchncnn和param文件传送到milkv duo s开发版 开发版上是linux系统，这里我使用scp传送,将my_ip和/path/to/替换成自己的
make install scp duan@my_ip:/path/to/ncnn/build-milkv/benchncnn . scp duan@my_ip:/path/to/ncnn/benchmark/*.param . 跑分测试 milkv duo s的SG2000有一个ARM核（1 x Cortex-A53@1GHz）和一个RISCV核（1 x C906@1GHz + 1 x C906@700MHz)，有点难为这块开发板了x</description>
    </item>
    <item>
      <title>在骁龙765G平台上运行ncnn并测试</title>
      <link>https://inspiremenow.top/zh/posts/2024-07-02-snapdragon-765g-ncnn/</link>
      <pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2024-07-02-snapdragon-765g-ncnn/</guid>
      <description>编译安装ncnn 克隆ncnn仓库 我的系统是fedora 40
mkdir ncnn cd ncnn git clone https://github.com/Tencent/ncnn.git git submodule update --init 设置Android NDK cd .. wget https://dl.google.com/android/repository/android-ndk-r26d-linux.zip mkdir android-ndk unzip android-ndk-r26d-linux.zip -d android-ndk/ export ANDROID_NDK=$(pwd)/android-ndk/android-ndk-r26d 可选：去除debug标志
vim $ANDROID_NDK/build/cmake/android-legacy.toolchain.cmak 去掉这里的-g参数即可
list(APPEND ANDROID_COMPILER_FLAGS -g -DANDROID 设置cmake 如果你的cmake版本大于等于3.21，ndk版本为r23或更高，可添加-DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False选项以启用优化
mkdir -p build-android cd build-android cmake -DCMAKE_TOOLCHAIN_FILE=&amp;#34;$ANDROID_NDK/build/cmake/android.toolchain.cmake&amp;#34;\ -DANDROID_ABI=&amp;#34;arm64-v8a&amp;#34; \ -DANDROID_PLATFORM=android-21 -DNCNN_VULKAN=ON \ -DANDROID_USE_LEGACY_TOOLCHAIN_FILE=False .. 设置完cmake就可以编译ncnn了
编译ncnn make -j$(nproc) make install 测试ncnn 将文件传送到手机 这里我使用Pixel 4a 5g手机进行测试
adb push build-android/benchmark/benchncnn /data/local/tmp/ adb push .</description>
    </item>
    <item>
      <title>在RK3588平台上运行ncnn并测试</title>
      <link>https://inspiremenow.top/zh/posts/2024-06-30-orangepi-rk3588-ncnn/</link>
      <pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2024-06-30-orangepi-rk3588-ncnn/</guid>
      <description>编译安装ncnn 克隆ncnn仓库 我的系统是fedora 40
mkdir ncnn cd ncnn git clone https://github.com/Tencent/ncnn.git git submodule update --init 设置交叉工具链 cd .. wget https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz mkdir aarch64-orangepi tar -xvf gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz -C aarch64-orangepi/ export PATH=$(pwd)/aarch64-orangepi/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin:$PATH 设置cmake cd ncnn mkdir build-orangepi/ cd build-orangepi 改一下编译器名称
vim ../toolchains/aarch64-linux-gnu.toolchain.cmake set(CMAKE_C_COMPILER &amp;#34;aarch64-none-linux-gnu-gcc&amp;#34;) set(CMAKE_CXX_COMPILER &amp;#34;aarch64-none-linux-gnu-g++&amp;#34;) 设置cmake
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DNCNN_BUILD_TESTS=ON .. 设置完cmake就可以编译ncnn了
编译ncnn make -j8 将文件传送到OrangePi 5 Plus开发版 开发版上是linux系统，这里我使用rsync传送,将my_ip和/path/to/替换成自己的
make install scp duan@my_ip:/path/to/ncnn/build-orangepi/benchmark/benchncnn . scp duan@my_ip:/path/to/ncnn/benchmark/*.param . 测试ncnn 单元测试 将build-orangepi、examples和tests目录、run_test.cmake文件上传至开发板
mkdir ncnn cd ncnn rsync -a -v duan@my_ip:/path/to/ncnn/build-orangepi .</description>
    </item>
    <item>
      <title>ELF文件结构</title>
      <link>https://inspiremenow.top/zh/posts/2024-03-01-elf-binary-zh/</link>
      <pubDate>Fri, 01 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2024-03-01-elf-binary-zh/</guid>
      <description>ELF（Executable and Linkable Format）文件 可重定位文件（Relocatable File），包含由编译器生成的代码以及数据。链接器会将它与其它目标文件链接起来从而创建可执行文件或者共享目标文件。在 Linux 系统中，这种文件的后缀一般为 .o 。
可执行文件（Executable File），就是通常在 Linux 中执行的程序。
共享目标文件（Shared Object File），包含代码和数据，这种文件称为库文件，一般以 .so 结尾。一般情况下，它有以下两种使用情景：
链接器（ld）可能会处理它和其它可重定位文件以及共享目标文件，生成另外一个目标文件。 动态链接器（Dynamic Linker）将它与可执行文件以及其它共享目标组合在一起生成进程镜像。 ELF文件结构 ELF header（ELF头部）：包含有关文件结构的基本信息，如文件编译的体系结构、文件类型（可执行文件、共享对象等）、可执行文件的入口点等。
Program header table（程序头表）:描述了在加载和执行可执行文件时，操作系统如何处理文件的各个段（segments）的信息，包括段类型、段偏移、虚拟地址、物理地址、段大小、文件大小、段权限等。只有可执行文件和共享目标文件包含程序头表.
Section header table（节头表）：描述了ELF文件中每个分区的具体位置，包括节名称、节类型、标志、文件偏移、节区大小、链接信息、对齐信息、附加信息等。
段内容：一个段可能包括一到多个节区，这并不会影响程序的加载。通常包含代码段和数据段。
数据结构 文件头 include/elf.h
#define EI_NIDENT (16) typedef struct elf32_hdr{ unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; /* Entry point */ Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; Program header table（程序头表）:e_phoff、e_phentsize、e_phnum、e_entry Section header table（节头表）: e_shoff、e_shentsize、e_shnum、e_shstrndx（字符串表相关的表项的索引 值） e_ident: 0x00~0x03为 Magic Number（魔数）， 0x04指定格式为32位/64位，0x05指定大端/小端模式，0x06为 elf文件版本，0x07为OSABI，0x08为ABI版本,0x09~0x0f为保留位。 e_type（目标文件类型，ET_NONE ET_REL ET_EXEC ET_DYN ET_CORE ET_LOPROC ET_HIPROC） e_machine(机器架构) e_version（文件版本） e_flags（处理器相关标志） e_ehsize（ELF文件头长度） 程序头表 #define PF_R 0x4 #define PF_W 0x2 #define PF_X 0x1 typedef struct elf32_phdr{ Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; p_offset（偏移地址） p_vaddr（虚拟地址） p_paddr（物理地址） p_filez（文件中的大小） p_memsz（内存中的大小） p_align（对齐方式） p_type（段类型） PT_NULL:未使用 PT_LOAD:可加载段 PT_DYNAMIC:动态链接信息 PT_INTERP:此类型段给出了一个以 NULL 结尾的字符串的位置和长度，该字符串将被当作解释器调用。这种段类型仅对可执行文件有意义（也可能出现在共享目标文件中）。这种段在一个文件中最多出现一次。而且这种类型的段若存在，它必须在所有可加载段项的前面。 PT_NOTE:附加信息的位置和长度。 PT_SHLIB:保留 PT_PHDR:给出程序头表自身的大小和位置 PT_TLS:Thread-Local Storage Template（一种基于模板的通用方法，用于创建线程局部存储变量） PT_LOOS:保留范围（依赖操作系统） PT_HIOS:保留范围（依赖操作系统） PT_LOPROC:保留范围（依赖处理器） PT_HIPROC:保留范围（依赖处理器） p_flags（段权限） 代码段：包含只读的数据以及指令。通常包含.</description>
    </item>
    <item>
      <title>使用Hugo搭建个人博客</title>
      <link>https://inspiremenow.top/zh/posts/2024-01-03-hugo-papermod/</link>
      <pubDate>Thu, 04 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2024-01-03-hugo-papermod/</guid>
      <description>安装Hugo工具 export HUGO_VERSION=0.121.1 wget -O ./hugo.tar.gz https://github.com/gohugoio/hugo/releaserms/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz tar -xvf ./tar.gz sudo cp hugo /usr/bin sudo chmod +x /usr/bin/hugo 创建网站 hugo new site quickstart cd quickstart git init 设置博客主题 git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod echo &amp;#34;theme: &amp;#39;PaperMod&amp;#39;&amp;#34; &amp;gt;&amp;gt; hugo.toml hugo server 配置网站 baseURL: &amp;#34;https://example.com/&amp;#34; title: username paginate: 5 theme: PaperMod # 修复新帖子不渲染的问题 buildFuture: true # 设置网站默认显示语言 DefaultContentLanguage: &amp;#34;zh&amp;#34; DefaultContentLanguageInSubdir: true # 启用Robots.txt enableRobotsTXT: true buildDrafts: false buildExpired: false # 启用Google Analytics googleAnalytics: EXAMPLE 新建一篇文章 新建content/posts文件夹，在posts文件夹里新建Markdown文件即可，以下为示例</description>
    </item>
    <item>
      <title>实现校园网自动认证的功能</title>
      <link>https://inspiremenow.top/zh/posts/2023-02-26-campus-problem/</link>
      <pubDate>Sun, 26 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2023-02-26-campus-problem/</guid>
      <description>由于校园网认证总是自己断掉，于是想到使用bash或python脚本认证校园网的方法，配合linux的cron可以方便的进行自动认证。
抓取登录时使用的get/post请求 打开chrome开发者工具，选择网络，勾选保留日志选项
输入用户名和密码并登录，找到对应的登录请求 以cURL格式复制值
我的校园网使用的是get请求 使用shell脚本认证 获取本机ip地址 ifconfig interface |grep inet|awk &amp;#39;{print $(NF)}&amp;#39;|head -n 1 # 替换为自己的网络接口 获取本机mac地址 ifconfig interface | grep ether| awk &amp;#39;{print $(NF-3)}&amp;#39; # 替换为自己的网络接口 编写认证脚本 CURRENT_IP=$(ifconfig interface|grep inet|awk &amp;#39;{print $(NF)}&amp;#39;|head -n 1) MAC_ADDRESS=$(ifconfig interface | grep ether| awk &amp;#39;{print $(NF-3)}&amp;#39;) curl &amp;#34;http://192.168.251.75/quickauth.do?userid=userid&amp;amp;passwd=passwd&amp;amp;wlanuserip=${CURRENT_IP}&amp;amp;wlanacname=NFV-BASE&amp;amp;wlanacIp=202.206.32.195&amp;amp;ssid=&amp;amp;vlan=0&amp;amp;mac=${MAC_ADDRESS}&amp;amp;version=0&amp;amp;portalpageid=1&amp;amp;timestamp=1677389084992&amp;amp;uuid=d149ad07-e027-4f8b-aef3-206b5a4acf8e&amp;amp;portaltype=&amp;amp;hostname=&amp;#34; \ -H &amp;#34;Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7&amp;#34; \ -H &amp;#34;Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7&amp;#34; \ -H &amp;#34;Cache-Control: max-age=0&amp;#34; \ -H &amp;#34;Connection: keep-alive&amp;#34; \ -H &amp;#34;Cookie: macAuth=1f:78:63:0a:00:00||2b:7d:63:0a:00:00; ABMS=dbed4e41-6917-4d4e-8cce-f3c654b1e83c&amp;#34; \ -H &amp;#34;DNT: 1&amp;#34; \ -H &amp;#34;Upgrade-Insecure-Requests: 1&amp;#34; \ -H &amp;#34;User-Agent: Mozilla/5.</description>
    </item>
    <item>
      <title>rclone挂载云端网盘</title>
      <link>https://inspiremenow.top/zh/posts/2023-02-19-rclone-config/</link>
      <pubDate>Sun, 19 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2023-02-19-rclone-config/</guid>
      <description>安装rclone Debian sudo apt install rclone 配置云端网盘 rclone config 提示：支持Amazon Drive、Dropbox、Google Drive、Google Photos、OpenDrive、SFTP、Webdav等众多网盘。
新建挂载点 mkdir /path/to/mountpoint 挂载云端网盘 rclone mount remote_name:remote_path /path/to/mountpoint --daemon 进入挂载点目录 cd /path/to/mountpoint 不要忘记卸载云端网盘！
fusermount -u /path/to/mountpoint 更多用法 复制 rclone copy 同步到目标目录 rclone sync 双向同步 rclone bisync 移动 rclone move 删除路径下的内容 rclone delete 删除路径及所有内容 rclone purge 检查目标与源是否匹配 rclone check 列出路径中所有对象的大小和路径 rclone ls 列出路径中的所有目录 rclone lsd 列出远程目录中所有对象的总大小和数量 rclone size 选项配置 </description>
    </item>
    <item>
      <title>webdav解决局域网之间的文件传输问题</title>
      <link>https://inspiremenow.top/zh/posts/2023-01-12-webdav-solutioon/</link>
      <pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2023-01-12-webdav-solutioon/</guid>
      <description>webdav方法说明 方法名称 文件权限 方法说明 OPTIONS &amp;ndash; 支持 WebDAV 的检索服务方法 GET 读 获取文件 PUT、POST 写 上传文件 DELETE 删除 删除文件或集合 COPY 读、写 复制文件 MOVE 删除、写 移动文件 MKCOL 写 创建由一个或多个文件 URI 组成的新集合 PROPFIND 读 获取一个或多个文件的特性，实现文件的查找与管理 LOCK、UNLOCK 写 添加、删除文件锁，实现写操作保护 使用的服务端 nginx 注意：需要第三方模块nginx-dav-ext-module！
配置webdav目录权限 chown -R nobody:nobody /var/www/dav chmod -R 700 /var/www/dav 配置nginx服务器 dav_ext_lock_zone zone=davlock:10m; # DAV文件锁内存共享区 server { listen 443 ssl http2; # 启用HTTPS及HTTP/2 server_name yourservername; access_log logs/webdav.access.log main; #网站日志文件 root /var/www/dav; ssl_certificate yourpath/fullchain.pem; # 网站证书文件 ssl_certificate_key yourpath/privkey.</description>
    </item>
    <item>
      <title>Linux远程桌面配置</title>
      <link>https://inspiremenow.top/zh/posts/2023-01-06-linux-remote-config/</link>
      <pubDate>Fri, 06 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2023-01-06-linux-remote-config/</guid>
      <description>远程服务端选择 trigervnc、xrdp、gnome-remote-desktop、spice
vnc配置 添加用户 sudo vim /etc/tigervnc/vncserver.users # TigerVNC User assignment # # This file assigns users to specific VNC display numbers. # The syntax is &amp;lt;display&amp;gt;=&amp;lt;username&amp;gt;. E.g.: # # :2=andrew # :3=lisa # 添加自己用户，注意，不要与现有DISPLAY环境变量冲突 :2=user 编辑systemd文件 sudo vim /usr/lib/systemd/system/vncserver@.service [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking ExecStartPre=+/usr/libexec/vncsession-restore %i ExecStart=/usr/libexec/vncsession-start %i PIDFile=/run/vncsession-%i.pid SELinuxContext=system_u:system_r:vnc_session_t:s0 [Install] WantedBy=multi-user.target 设置systemd服务自动启动 这里记得填写用户对应的display_number
sudo systemctl enable --now vncserver@display_number 使用vnc客户端测试连接 gnome-remote-desktop配置 由于gnome-remote-desktop限制只能已登录用户使用，需要设置自动登录
设置自动登录 sudo vim /etc/gdm/custom.</description>
    </item>
    <item>
      <title>记录一次java web项目部署的过程</title>
      <link>https://inspiremenow.top/zh/posts/2022-12-27-maven-tomcat/</link>
      <pubDate>Tue, 27 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-12-27-maven-tomcat/</guid>
      <description>从其他机器上导入的maven项目构建失败 mvn clean 之后应该就可以正常编译了
配置github actions 使用maven编译 - name: Build with Maven run: mvn -B package --file CSMS/pom.xml 上传release文件 - name: Create Draft Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 验证token with: tag_name: ver-${{ github.sha }} # 触发工作流的提交 SHA。此提交 SHA 的值取决于触发工作流的事件。 release_name: 配件库存管理系统 draft: true prerelease: true # 是否为prerelease - uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./CSMS/target/CSMS.war # 编译输出文件的路径 asset_name: CSMS.</description>
    </item>
    <item>
      <title>chromebook配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-10-11-chromebook-config/</link>
      <pubDate>Mon, 10 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-10-11-chromebook-config/</guid>
      <description>启用开发者模式 注意：此操作会对chromebook进行powerwash操作！
开机按esc+refresh+power键按提示进行操作即可。
设置上网环境 设置tuic 下载 wget https://github.com/EAimTY/tuic/releases/download/0.8.4/tuic-client-0.8.4-x86_64-linux-gnu 安装 注意：chromeos的分区除了/usr/local/外所有路径均有noexec标签，即阻止任何二进制文件运行，所以只能安装到/usr/local路径下！
mv tuic-client-0.8.4-x86_64-linux-gnu tuic sudo install -Dt /usr/local/bin -m 755 ~/Downloads/tuic 配置 mkdir -p /usr/local/etc/tuic sudo vim /usr/local/etc/tuic/config.json { &amp;#34;relay&amp;#34;: { &amp;#34;server&amp;#34;: &amp;#34;servername&amp;#34;, &amp;#34;port&amp;#34;: yourport, &amp;#34;token&amp;#34;: &amp;#34;yourtoken&amp;#34;, &amp;#34;udp_relay_mode&amp;#34;: &amp;#34;quic&amp;#34;, &amp;#34;congestion_controller&amp;#34;: &amp;#34;bbr&amp;#34;, &amp;#34;heartbeat_interval&amp;#34;: 10000, &amp;#34;alpn&amp;#34;: [&amp;#34;h3&amp;#34;], &amp;#34;disable_sni&amp;#34;: false, &amp;#34;reduce_rtt&amp;#34;: false, &amp;#34;request_timeout&amp;#34;: 8000, &amp;#34;max_udp_relay_packet_size&amp;#34;: 1500 }, &amp;#34;local&amp;#34;: { &amp;#34;port&amp;#34;: yourlocalort, &amp;#34;ip&amp;#34;: &amp;#34;127.0.0.1&amp;#34; }, &amp;#34;log_level&amp;#34;: &amp;#34;info&amp;#34; } 启动 nohup tuic -c /usr/local/etc/tuic/config.json 设置clash 安装 sudo install -Dt /usr/local/bin -m 755 ~/Downloads/clash 启动 nohup clash &amp;amp; 设置代理 进入设置选手动配置代理即可。</description>
    </item>
    <item>
      <title>自签证书解决github访问问题</title>
      <link>https://inspiremenow.top/zh/posts/2022-09-30-boost-github/</link>
      <pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-09-30-boost-github/</guid>
      <description>由于众所周知的原因，国内github时常连不上，tcpping查看github的ip可以访问，但就是通过域名就无法访问，这类问题是sni阻断造成的，本文的方法类似中间人攻击，在本地反向代理github网站，由于得不到github的证书，浏览器会直接报ssl错误，阻止连接，此时我们需要信任证书，然后你就可以通过本地的域名访问github了，此过程没有发送github的sni，即避免了sni阻断。
配置证书 注：根据提示添加github.com,.github.com,githubusercontent.com,.githubusercontent.com这些域名到CN
openssl genrsa 2048 &amp;gt; ca.key # 创建ca证书 # CA证书的公钥，用于信任CA证书 # 生成不通的CA export SUBJ=&amp;#34;/C=CN/ST=ST$RANDOM/O=O$RANDOM/OU=OU$RANDOM/CN=CN$RANDOM/emailAddress=$RANDOM@localhost&amp;#34; # CN写0CN是为了让证书好找（会排到最前面）,20231231为证书过期日期 openssl req -new -x509 -days `expr \( \`date -d 20231231 +%s\` - \`date +%s\` \) / 86400 + 1` -key ca.key -out ca.pem -subj $SUBJ # date为证书有效期 # 生成nginx使用的证书 openssl genrsa 1024 &amp;gt; nginx.key # 密钥 openssl req -new -nodes -key nginx.key -out nginx.csr -subj $SUBJ # CA签名，写github对应域名 openssl x509 -req -days `expr \( \`date -d 99991231 +%s\` - \`date +%s\` \) / 86400 + 1` \ -in nginx.</description>
    </item>
    <item>
      <title>docker容器配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-09-27-docker-config/</link>
      <pubDate>Tue, 27 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-09-27-docker-config/</guid>
      <description>由于编译debian方便一点，故pull了一个debian镜像，设置过程参考了docker文档。
docker安装 设置软件仓库
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo sudo dnf makecache 安装docker引擎
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin 安装特定版本的docker
查看可用版本 dnf list docker-ce --showduplicates | sort -r 安装docker sudo dnf -y install docker-ce-&amp;lt;VERSION_STRING&amp;gt; docker-ce-cli-&amp;lt;VERSION_STRING&amp;gt; containerd.io docker-compose-plugin 设置docker自动启动
sudo systemctl enable --now docker 将用户加入docker用户组（可选）
这样打开docker时不需要授权
sudo usermod -a -G docker username 注意：需要重启系统才能生效
运行GUI程序 加上-e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix:Z参数即可，但是不要使用root账户运行gui程序会打不开窗口
设置debian参数 -e用于设置环境变量，-v用于设置挂载的volume，可以挂载实际文件夹，也可以挂载docker的volume，后者需要为volume命名，如果系统启用了selinux，则需要加上:Z参数
docker run --name debian -e LANG=C.UTF-8 -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix:Z -v /pathto/github:/pathto/github:Z -it debian:unstable /bin/bash -l 注意：debian镜像中需要先安装好X11</description>
    </item>
    <item>
      <title>用Telegram收发qq消息</title>
      <link>https://inspiremenow.top/zh/posts/2022-09-20-efb-qq-config/</link>
      <pubDate>Mon, 19 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-09-20-efb-qq-config/</guid>
      <description>所需条件 Tegeram帐号一个 VPS一台 Linux操作系统 开始 安装依赖 sudo apt-get install python3 libopus0 ffmpeg libmagic1 python3-pip git nano libssl-dev pip安装 pip3 install setuptools wheel pip3 install ehforwarderbot 配置EFB 创建配置文件目录 mkdir -p ~/.ehforwarderbot/profiles/default/ mkdir -p ~/.ehforwarderbot/profiles/default/blueset.telegram mkdir -p ~/.ehforwarderbot/profiles/default/milkice.qq 创建配置文件~/.ehforwarderbot/profiles/default/config.yaml并编辑 master_channel: blueset.telegram slave_channels: - milkice.qq 配置ETM 创建bot 向@BotFather发送/newbot启动向导
注意：牢记bot的token
对bot进行配置 发送 /setprivacy 到 @BotFather，选择刚刚创建好的 Bot 用户名，然后选择 “Disable”.
发送 /setjoingroups 到 @BotFather，选择刚刚创建好的 Bot 用户名，然后选择 “Enable”.
发送 /setcommands 到 @BotFather，选择刚刚创建好的 Bot 用户名，然后发送如下内容：
link - 将会话绑定到 Telegram 群组 chat - 生成会话头 recog - 回复语音消息以进行识别 extra - 获取更多功能 获取Telegram ID 通过Bot查询，以下Bot可以查询，不行的话自己找Bot查询</description>
    </item>
    <item>
      <title>mailgun收发邮件</title>
      <link>https://inspiremenow.top/zh/posts/2022-09-14-mailgun-setup/</link>
      <pubDate>Wed, 14 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-09-14-mailgun-setup/</guid>
      <description>暑假小组合作做的项目java-gradesystem需要做邮箱验证，申请了mailgun帐号，准备用java实现一个发送邮件的功能
发送邮件 使用mailgun api java MailgunMessagesApi mailgunMessagesApi = MailgunClient.config(apikey) .createApi(MailgunMessagesApi.class); Message message = Message.builder() .from(&amp;#34;STD成绩管理系统 &amp;lt;postmaster@yourdomain&amp;gt;&amp;#34;) .to(email) .subject(subject) .text(post) .build(); MessageResponse messageResponse = mailgunMessagesApi.sendMessage(&amp;#34;yourdomain&amp;#34;, message); 注：apikey和yourdomain填成自己的
python def send_simple_message(): return requests.post( &amp;#34;https://api.mailgun.net/v3/duan-dky.me/messages&amp;#34;, auth=(&amp;#34;api&amp;#34;, &amp;#34;apikey&amp;#34;), data={&amp;#34;from&amp;#34;: &amp;#34;postmaster@yourdomain&amp;#34;, &amp;#34;to&amp;#34;: [&amp;#34;mail@example.com&amp;#34;, &amp;#34;postmaster@yourdomain&amp;#34;], &amp;#34;subject&amp;#34;: subject, &amp;#34;text&amp;#34;: post}) javascript const apiKey = &amp;#39;apikey&amp;#39;; const domain = &amp;#39;yourdomain&amp;#39;; const mailgun = require(&amp;#39;mailgun-js&amp;#39;)({ domain, apiKey }); mailgun. messages(). send({ from: `test@${domain}`, to: email, subject: subject, text: post }).</description>
    </item>
    <item>
      <title>记录一次jsp与servlet之间传递表单时遇到的问题</title>
      <link>https://inspiremenow.top/zh/posts/2022-09-14-servet-post/</link>
      <pubDate>Wed, 14 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-09-14-servet-post/</guid>
      <description>jsp提交表单时遇到一个问题，我需要提交两个表单，但是其中一个表单嵌套在另外一个表单中，尝试了嵌套表单，但是提交失败，servlet获取不到对应的参数于是尝试了js生成一个表单提交
&amp;lt;div class=&amp;#34;body-content-list&amp;#34;&amp;gt; &amp;lt;span class=&amp;#34;input-name&amp;#34;&amp;gt;电子邮件:&amp;lt;/span&amp;gt; &amp;lt;input type=&amp;#34;text&amp;#34; class=&amp;#34;input-style&amp;#34; id=&amp;#34;email&amp;#34; name=&amp;#34;email&amp;#34; value=&amp;#34;${requestScope.email}&amp;#34; placeholder=&amp;#34;请填写电子邮箱地址&amp;#34; onchange=&amp;#34;checkEmail()&amp;#34; onkeyup=&amp;#34;value=value.replace(/[^\w\@\_\.]/ig,&amp;#39;&amp;#39;)&amp;#34;/&amp;gt; &amp;lt;div id=&amp;#34;chkEmail&amp;#34; style=&amp;#34;font-size:12px;&amp;#34;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;#34;body-content-list2&amp;#34;&amp;gt; &amp;lt;span class=&amp;#34;input-name&amp;#34;&amp;gt;邮箱验证:&amp;lt;/span&amp;gt; &amp;lt;input type=&amp;#34;text&amp;#34; class=&amp;#34;input-style&amp;#34; id=&amp;#34;confirmId&amp;#34; name=&amp;#34;confirmId&amp;#34; value=&amp;#34;${requestScope.confirmId}&amp;#34; placeholder=&amp;#34;请填写邮箱验证码&amp;#34;/&amp;gt; &amp;lt;div class=&amp;#34;last-info&amp;#34;&amp;gt; &amp;lt;span id=&amp;#34;confirmEmail&amp;#34;&amp;gt;&amp;lt;button type=&amp;#34;button&amp;#34; class=&amp;#34;btn btn-blue&amp;#34; id=&amp;#34;confirm&amp;#34; style=&amp;#34;min-width: 45px;text-align: center;font-size: 30px;background-color:#2a66e1;color: white;&amp;#34; onclick=&amp;#34;sendEmail()&amp;#34;&amp;gt;获取验证码&amp;lt;/button&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div id=&amp;#34;chksend&amp;#34; style=&amp;#34;font-size:12px;&amp;#34;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; 注：button的type需要设置成button，阻止提交表单，鼠标点击事件执行js代码，requestScope用于获取servlet提交的参数。
function sendEmail(){ var email=document.getElementById(&amp;#34;email&amp;#34;).value; var universityId=document.getElementById(&amp;#34;universityId&amp;#34;).value; var Urole=document.getElementById(&amp;#34;Urole&amp;#34;).value; let form=document.createElement(&amp;#39;form&amp;#39;); //创建表单 form.action = &amp;#34;userServlet?action=sendEmail&amp;#34;; //跳转到servlet form.method = &amp;#34;POST&amp;#34;; //设置POST请求 form.innerHTML = &amp;#39;&amp;lt;input name=&amp;#34;email&amp;#34; value=&amp;#34;&amp;#39;+email+&amp;#39;&amp;#34;&amp;gt;&amp;#39;+&amp;#39;\n&amp;#39;+&amp;#39;&amp;lt;input name=&amp;#34;universityId&amp;#34; value=&amp;#34;&amp;#39;+universityId+&amp;#39;&amp;#34;&amp;gt;&amp;#39;+&amp;#39;\n&amp;#39;+&amp;#39;&amp;lt;input name=&amp;#34;Urole&amp;#34; value=&amp;#34;&amp;#39;+Urole+&amp;#39;&amp;#34;&amp;gt;&amp;#39;; //表单内容 document.</description>
    </item>
    <item>
      <title>xray reality配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-31-vless-config/</link>
      <pubDate>Wed, 31 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-31-vless-config/</guid>
      <description>xray安装 wget https://github.com/XTLS/Xray-core/releases/download/v1.8.1/Xray-linux-64.zip unzip Xray-linux-64.zip cp xray /usr/bin mkdir /etc/xray cp *.dat /etc/xray xray systemd服务 [Unit] Description=Xray Service Documentation=https://github.com/xtls After=network.target nss-lookup.target [Service] ExecStart=/usr/bin/xray run -config /etc/xray/config.json Environment=&amp;#34;XRAY_LOCATION_ASSET=/etc/xray&amp;#34; Restart=on-failure RestartPreventExitStatus=23 LimitNPROC=10000 LimitNOFILE=1000000 [Install] WantedBy=multi-user.target 注意：若xray所在目录和geosite.dat所在目录不一致，需要设置环境变量XRAY_LOCATION_ASSET，不设置此环境变量会导致默认将geosite.dat定位至/use/bin，此目录无geosite.dat，因此服务会报错无法启动
设置systemd服务自动启动
sudo systemctl enable --now xray vless+websocket+tls和vless+nginx+grpc+tls容易被识别，不建议使用
vless reality配置 服务端
{ &amp;#34;log&amp;#34;: { &amp;#34;loglevel&amp;#34;: &amp;#34;info&amp;#34;, &amp;#34;access&amp;#34;: &amp;#34;/var/log/xray/access.log&amp;#34;, &amp;#34;error&amp;#34;: &amp;#34;/var/log/xray/error.log&amp;#34; }, &amp;#34;inbounds&amp;#34;: [ // 服务端入站配置 { &amp;#34;port&amp;#34;: 443, &amp;#34;protocol&amp;#34;: &amp;#34;vless&amp;#34;, &amp;#34;settings&amp;#34;: { &amp;#34;clients&amp;#34;: [ { &amp;#34;id&amp;#34;: &amp;#34;UUID&amp;#34;, // 必填，执行 .</description>
    </item>
    <item>
      <title>hysteria配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-29-hysteria-config/</link>
      <pubDate>Mon, 29 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-29-hysteria-config/</guid>
      <description>由于hysteria用了udp协议，不受tcp阻断的影响，故尝试此项目。
server端 下载安装 下载 wget https://github.com/HyNetwork/hysteria/releases/download/v1.2.0/hysteria-linux-amd64
编辑配置文件config.json { &amp;#34;listen&amp;#34;: &amp;#34;:37658&amp;#34;, #监听端口 &amp;#34;protocol&amp;#34;: &amp;#34;wechat-video&amp;#34;, #流量类型，支持udp，faketcp，wechat-video &amp;#34;cert&amp;#34;: &amp;#34;/path/to/fullchain.pem&amp;#34;, &amp;#34;key&amp;#34;: &amp;#34;/path/to/privkey.pem&amp;#34;, &amp;#34;alpn&amp;#34;: &amp;#34;h3&amp;#34;, &amp;#34;auth&amp;#34;: { &amp;#34;mode&amp;#34;: &amp;#34;passwords&amp;#34;, &amp;#34;config&amp;#34;: [&amp;#34;yourpassword&amp;#34;] }, &amp;#34;up_mbps&amp;#34;: 100, #限速，建议值不要过高，默认单位：Mbps &amp;#34;down_mbps&amp;#34;: 100 } 启动hysteria ./hysteria -c config.json server 注册为systemd服务 [Unit] Description=Hysteria, a feature-packed network utility optimized for networks of poor quality Documentation=https://github.com/HyNetwork/hysteria/wiki After=network.target [Service] CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_RAW AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW NoNewPrivileges=true WorkingDirectory=/etc/hysteria Environment=HYSTERIA_LOG_LEVEL=info ExecStart=/usr/bin/hysteria -c /etc/hysteria/config.json server Restart=on-failure RestartPreventExitStatus=1 RestartSec=5 [Install] WantedBy=multi-user.target 重载systemd服务 sudo systemctl daemon-reload sudo systemctl enable --now hysteria client端 我是用的clash meta核心，它可以进行分流</description>
    </item>
    <item>
      <title>自建gitlab</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-28-gitlab-setup/</link>
      <pubDate>Sun, 28 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-28-gitlab-setup/</guid>
      <description>安装方式 我选的docker镜像，方便管理
1.拉取docker镜像 docker pull gitlab/gitlab-ee:latest 2.设置gitlab存储位置 export GITLAB_HOME=/srv/gitlab #自己设置位置 3.运行docker镜像 sudo docker run --detach \ --hostname gitlab.example.com \ #外部url，服务器域名 --publish 443:443 --publish 80:80 --publish 22:22 \ #换成自己的端口 --name gitlab \ --restart always \ #设置自动启动 --volume $GITLAB_HOME/config:/etc/gitlab:Z \ #相当于文件挂载点 --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \ --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \ --shm-size 256m \ gitlab/gitlab-ee:latest 4.查看gitlab运行日志 sudo docker logs -f gitlab 注：成功后即可打开浏览器输入localhost进入登录界面
5.获取管理员初始密码 sudo docker exec -it gitlab grep &amp;#39;Password:&amp;#39; /etc/gitlab/initial_root_password 注：请在24小时内修改密码，否则密码将会失效
6.gitlab配置 由于我这台服务器有nginx，需要监听80端口，因此禁用gitlab的内建nginx
禁用内建nginx nginx[&amp;#39;enable&amp;#39;] = false 设置web服务器用户 web_server[&amp;#39;external_users&amp;#39;] = [&amp;#39;www-data&amp;#39;] 将web服务器添加到受信任的代理列表中 gitlab_rails[&amp;#39;trusted_proxies&amp;#39;] = [ &amp;#39;192.</description>
    </item>
    <item>
      <title>解决dns污染问题</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-26-dns-config/</link>
      <pubDate>Fri, 26 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-26-dns-config/</guid>
      <description>起因 由于近期dns污染严重，域名解析不正常，故设置doh，dns分流进行dns解析。
配置 dnsmasq 通过dnsmasq-china-list进行dns分流
安装 git clone https://github.com/felixonmars/dnsmasq-china-list cd dnsmasq-china-list&amp;amp;&amp;amp;bash install.sh sudo systemctl restart dnsmasq //重启dnsmasq 效果 重启dnsmasq太慢，且解析速度下降
mosdns+dnsmasq 安装 mosdns wget https://github.com/IrineSistiana/mosdns/releases/download/v4.1.9/mosdns-linux-amd64.zip unzip mosdns-linux-amd64.zip sudo mkdir /etc/mosdns sudo cp mosdns /usr/bin sudo cp config.yaml /etc/mosdns //配置文件 wget --no-check-certificate https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat -O /etc/mosdns/geosite.dat wget --no-check-certificate https://raw.githubusercontent.com/Loyalsoldier/geoip/release/geoip-only-cn-private.dat -O /etc/mosdns/geoip-only-cn-private.dat //中国ip名单 配置文件
log: level: warn file: &amp;#34;mosdns.log&amp;#34; data_providers: - tag: geosite file: ./geosite.dat auto_reload: true - tag: geoip file: ./geoip-only-cn-private.dat auto_reload: true plugins: # 缓存 - tag: cache type: cache args: size: 4096 lazy_cache_ttl: 172800 # 转发至本地服务器的插件 - tag: forward_local type: fast_forward args: upstream: - addr: tls://223.</description>
    </item>
    <item>
      <title>随机数生成</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-21-random-number/</link>
      <pubDate>Sun, 21 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-21-random-number/</guid>
      <description>通过系统变量生成 echo $RANDOM 获取特定位数的随机字符,这里为10位
echo $RANDOM |md5sum |cut -c 1-10 获取随机数字,这里为10位
echo $RANDOM |cksum |cut -c 1-10 通过openssl生成 base64编码
openssl rand -base64 10 注：openssl产生的是指定长度个bytes的随机字符，也可使用cksum等命令生成随机数字
通过系统uuid生成 cat /proc/sys/kernel/random/uuid 通过程序实现 C++实现 随机数 生成1~100000之间的随机数，使用srand函数初始化保证每次的随机数不同
# include &amp;lt;iostream&amp;gt; #include&amp;lt;random&amp;gt; #include&amp;lt;time.h&amp;gt; int main(){ srand((unsigned)time(NULL)); int a=1; int b=100000; std::cout &amp;lt;&amp;lt; (rand() % (b - a + 1)) + a &amp;lt;&amp;lt; std::endl; return 0; } 随机字符 </description>
    </item>
    <item>
      <title>sql server docker镜像配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-19-sqlserver-docker/</link>
      <pubDate>Fri, 19 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-19-sqlserver-docker/</guid>
      <description>1.拉取docker镜像 sudo docker pull mcr.microsoft.com/mssql/server:2022-latest 2.创建并运行docker镜像 sudo docker run -e &amp;#34;ACCEPT_EULA=Y&amp;#34; -e &amp;#34;MSSQL_SA_PASSWORD=&amp;lt;YourPassword&amp;gt;&amp;#34; \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2022-latest 注：开放1433端口以进行数据库连接，docker镜像名称为sql1
3. 查看sql server服务器是否准备好连接 docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection 4.设置管理员密码 sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA \ -P &amp;#34;$(read -sp &amp;#34;Enter current SA password: &amp;#34;; echo &amp;#34;${REPLY}&amp;#34;)&amp;#34; \ -Q &amp;#34;ALTER LOGIN SA WITH PASSWORD=\&amp;#34;$(read -sp &amp;#34;Enter new SA password: &amp;#34;; echo &amp;#34;${REPLY}&amp;#34;)\&amp;#34;&amp;#34; 5.</description>
    </item>
    <item>
      <title>gpg加密解密</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-15-gpg-encrypt/</link>
      <pubDate>Mon, 15 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-15-gpg-encrypt/</guid>
      <description>生成密钥 注意：千万不要随意更改.gnupg目录的权限，否则你的密钥将无法解密数据，提示损坏的私钥！！！
gpg生成私钥
gpg --full-generate-key 列出所有密钥
gpg --list-keys 导出密钥
gpg --export --armor keyID &amp;gt; gpgkey.pub.asc 导入公钥
gpg --import gpgkey.pub.asc 从服务器导入
gpg --keyserver servername --recv-keys keyID 非对称加密解密 加密文件
gpg -e -r username filename 解密文件
gpg -d filename 对称加密解密 加密文件
gpg --symmetric filename 解密文件
gpg -d filename 对文件签名 数字签名
gpg -o filename.sig -s filename 签名+加密
gpg -o filename.sig -ser name filename 文本签名
gpg -o filename.sig --clearsign filename 分离签名（原文件与签名分开）
gpg -o filename.sig -ab filename 验证签名</description>
    </item>
    <item>
      <title>nginx配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-10-nginx-config/</link>
      <pubDate>Wed, 10 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-10-nginx-config/</guid>
      <description>测试系统：Debian11
1.安装升级系统 sudo apt update 2.安装nginx sudo apt install nginx 3.申请域名 github学生包或者freenom免费域名，添加域名解析，使用nslookup命令查看是否解析成功，注意先不要使用cdn
4.申请证书 zerossl或者letsencrypt即可
80端口验证 sudo apt install python3-certbot-nginx 安装完成后：
sudo certbot –nginx 邮箱系统验证 dns验证 泛域名申请 以cloudflare为例：
创建cloudflare api密钥，记下token
创建cloudflare.ini配置文件并放入指定位置
dns_cloudflare_api_token = your_token 申请证书
certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \ -d example.com \ -d www.example.com 二级域名申请 sudo certbot -d my.example.com --manual --preferred-challenges dns certonly 注：根据提示添加txt域名映射记录，待域名生效后即可回车
5.编辑nginx配置文件 编辑/etc/nginx/sites-enabled/default文件
server { # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic.</description>
    </item>
    <item>
      <title>git配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-05-git-config/</link>
      <pubDate>Fri, 05 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-05-git-config/</guid>
      <description>安装git Linux Debian sudo apt install git Fedora sudo dnf install git Windows 直接安装 下载链接
winget安装 winget install --id Git.Git -e --source winget git初步配置 git config --global user.name &amp;#34;username&amp;#34; #用户名 git config --list #已有配置信息 git config --global user.email youremail #邮箱 git config --global core.editor nvim #默认文本编辑器 git config --global merge.tool vimdiff #差异分析工具 git使用 概念:
工作区：就是你在电脑里能看到的目录。
暂存区：英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件（.git/index）中，所以我们把暂存区有时也叫作索引（index）。
版本库：工作区有一个隐藏目录 .git，这个不算工作区，而是 Git 的版本库。
基本操作 git init #初始化仓库 注：第一次初始提交后才有master分支</description>
    </item>
    <item>
      <title>fedora基本配置</title>
      <link>https://inspiremenow.top/zh/posts/2022-08-03-fedora-config/</link>
      <pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-08-03-fedora-config/</guid>
      <description>1.软件包管理工具 dnf命令 建立软件包缓存
sudo dnf makecache 进行软件包更新
sudo dnf upgrade 更新单个软件包
sudo dnf upgrade package_name 搜索软件包
dnf search package_name 查找软件包，使用通配符
dnf list kernel-* 列出所有软件包
dnf list all 列出已安装软件包
dnf list installed package_nam 列出所有包组
dnf group list 列出已启用的软件仓库
dnf repolist 列出来自单个软件仓库的软件包
dnf repository-packages fedora list 显示单个软件包的信息
dnf info package_name 列出具体软件包的所有信息
dnf repoquery package_name --info 列出哪个软件包提供了该二进制文件
dnf provides &amp;#34;*bin/named&amp;#34; 列出某个软件包组的详细信息
dnf -v group list group_name 安装单个软件包
sudo dnf install package_name 不知道包名的情况下使用
sudo dnf install /usr/sbin/named 安装软件包组</description>
    </item>
    <item>
      <title>frp内网穿透</title>
      <link>https://inspiremenow.top/zh/posts/2022-07-31-frp-config/</link>
      <pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-07-31-frp-config/</guid>
      <description>1.frp server端配置 [common] # frp监听的端口，默认是7000，可以改成其他的 bind_port = 14823 vhost_http_port = 12345 # 授权码，请改成更复杂的 token = 12345678 # frp管理后台端口，请按自己需求更改 dashboard_port = 7800 # frp管理后台用户名和密码，请改成自己的 dashboard_user = admin dashboard_pwd = admin enable_prometheus = true 2.frp client端配置 [common] server_addr = yourdomain server_port = 14823 #server端bind_port token = 12345678 #授权码 [ssh] #ssh远程链接 type = tcp local_ip = 127.0.0.1 local_port = 22 #本地ssh端口 remote_port = 6000 #远程ssh连接端口 [web1] type = http #http服务 local_port = 80 custom_domains = yourdomain 3.</description>
    </item>
    <item>
      <title>rust学习</title>
      <link>https://inspiremenow.top/zh/posts/2022-07-27-rust-practice/</link>
      <pubDate>Wed, 27 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-07-27-rust-practice/</guid>
      <description>1.rust函数
fn main(){ //主函数 println!(&amp;#34;hello world!&amp;#34;); } 2.Rust变量 Rust 是强类型语言，但具有自动判断变量类型的能力。
声明变量使用let关键字。
重影:指变量的名称可以被重新使用。
有符号类型
长度 有符号 无符号 8bit i8 u8 16bit i16 u16 32bit i32 u32 64bit 164 u64 128bit i128 u128 arch isize usize </description>
    </item>
    <item>
      <title>c&#43;&#43;练习</title>
      <link>https://inspiremenow.top/zh/posts/2022-04-24-c&#43;&#43;link/</link>
      <pubDate>Sun, 24 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/posts/2022-04-24-c&#43;&#43;link/</guid>
      <description>练习题 二分法求解方程 #include &amp;lt;iostream&amp;gt; # include &amp;lt;sstream&amp;gt; # include &amp;lt;cmath&amp;gt; # include &amp;lt;iomanip&amp;gt; using namespace std; double x,y,h; bool check(double w){ return h/sqrt(x*x-w*w)+h/sqrt(y*y-w*w)-1&amp;gt;=0; //单调递减函数 } int main() { int t; cin&amp;gt;&amp;gt;t; for(int i=0;i&amp;lt;t;i++){ cin&amp;gt;&amp;gt;x&amp;gt;&amp;gt;y&amp;gt;&amp;gt;h; double l=0; double r=x&amp;lt;y?x:y; while(r-1&amp;gt;1e-12){ double mid = (l+r)/2; if(check(mid))r=mid; //如果在x轴上方则向右查找 else{ l = mid; } } cout&amp;lt;&amp;lt;fixed&amp;lt;&amp;lt;setprecision(6)&amp;lt;&amp;lt;i&amp;lt;&amp;lt;&amp;#34;: &amp;#34;&amp;lt;&amp;lt;r; } } 十六进制转换成二进制 链表 查找元素 std::pair&amp;lt;int, int&amp;gt; getElem(int a,list *l1) { list *b=l1; int count=0; for(;b-&amp;gt;next!=NULL;b=b-&amp;gt;next){ if(a==b-&amp;gt;a){ return std::pair&amp;lt;int, int&amp;gt;(a,count); //返回元素和下标 } count++; } if(b-&amp;gt;a==a){ return std::pair&amp;lt;int, int&amp;gt;(a,count); //未找到返回-1 } return std::pair&amp;lt;int, int&amp;gt;(a,-1); } </description>
    </item>
    <item>
      <title>关于</title>
      <link>https://inspiremenow.top/zh/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://inspiremenow.top/zh/about/</guid>
      <description> 📬 我的邮箱地址 inspiremenow@murena.io ⚒️ 我使用的编程语言 C, C++ , Java, C#, Rust, Python, Vue.js 🔒 密钥 AD3D 2BAD 63B3 81F4 071D DECA 1333 72E0 763E 04E0 Pubilc Key
所有未签名的提交均不对此负责
💖 赞助我 github 💻 环境 Fedora Windows Arch Linux Android
📱 设备 Pixel 4a 5G Samsung Tab S6 Intel NUC M15
🔗 友链 Jackfen zhuangzhongxu Integral MeowRain </description>
    </item>
  </channel>
</rss>
