阿里云OSS资源路径避坑
阿里云 OSS 在解析请求时会把 + 转义成 (空格),这点与 S3 恰恰相反,需要做预处理
CPPCLI将第三方DLL链接到CSharp项目
最近需要将第三方的 DLL 封装成 csharp 的模块,可是我没有源码,只有头文件,网上综合调查了方案,最后选择了 C++/CLI 具体可见微软的官方文档 第一步,创建 CLR 项目 这里默认你已经通过各种手段获得了 DLL 和头文件 这里使用 Visual Stdio 创建一个新的 C++ CLR 项目 基本编辑 这里的基本语法还是和 C++一样的 进入项目,自行创建一个类,就会生成一个 CPP 和 H 文件 这里需要在头文件中包含 DLL 内相关函数和类定义的头文件,直接使用绝对路径包含即可 #include "path\to\your\header.h"public ref class YourModule {} 然后像 C++创建一个类那样,设置构造函数和成员函数,并实现 这里你的实现可以直接调用 DLL 中的函数,实现封装。 设置编译选项 右键项目,打开属性,将 Release 的配置类型修改为“动态库(. dll)”,注意这里的目标平台需要和你的 DLL...
tcpdump指定dst端口抓包失败
tcpdump 在抓包时使用 libpcap filter 作为过滤,这种过滤语法又叫 BPF 语法,其中可以使用 port num 作为语法过滤指定端口的报文,但是有时会发现,当启用过滤后,反而无法从指定端口抓到包,而没有过滤时却可以看到相关的包 遇到这种问题,可能是由于你监听的网卡是 VLAN,VLAN 网卡在发送报文时会加上一个 VLAN 头来标识,这时需要改变原来的语法,使用 vlan and port num 进行过滤,这样就可以识别出 vlan 报文,进而对报文的端口进行识别。 vlan [vlan_id] True if the packet is an IEEE 802.1Q VLAN packet. If the optional vlan_id is specified, only true if the packet has the specified vlan_id. Note that the first vlan keyword encountered in an expression changes the decoding offsets...
为什么hexo在生成时会修改md文件
最近在搭建个人博客自动化时,我发现 Hexo 在生成时总会修改 markdown 文件的 front-matter 部分,修改内容集中在日期和标题相关的字段,并且会自动为其添加引号。这引起了我的好奇,于是我决定探究一下 省流 标题自动添加引号是为了避免纯数字标题类型错误 日期自动添加引号是因为我的日期格式不正确修改为标准 utc 时间格式后不会自动添加引号(用官方 cli 创建了一个 md 文件后马上就发现了这一点……) 过程 下面放源码 for (const [key, item] of Object.entries(data)) { if (moment.isMoment(item)) { data[key] = item.utc().format('YYYY-MM-DD HH:mm:ss'); } else if (moment.isDate(item)) { data[key] = moment.utc(item).format('YYYY-MM-DD...
zerotier自建planet容器迁移
最近续费域名发现阿里云服务器 99 一年 2c2g,感觉自己血亏用了一整年的 78/month 的腾讯云,遂决定迁移。 经过测试发现 Zerotier 在迁移后需要根据 IP 重新生成 planet 文件,仍然需要重新分发,目前似乎没有好的解决办法,不如重新安装,安装时服务器的防火墙端口记得开 Nginx 配置 这次有一个阿里云的域名,干脆顺便配个 nginx 首先安装 nginx yum install nginx 然后进入到 nginx 的目录,新建一个配置文件,写入以下内容 cd /etc/nginxvim conf.d/zerotier.conf upstream zerotier { server 127.0.0.1:3443;}server { listen 80; server_name {your_site}; # 替换为自己的域名 location /zerotier/ { proxy_pass http://zerotier/; ...
基于ARM架构交叉编译libpcap库的技术指南
基于 ARM 架构交叉编译 libpcap 库的技术指南 一、交叉编译环境搭建 1. 获取交叉编译工具链 推荐使用 Linaro 官方提供的 6.2 版本工具链: wget https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz 文件校验信息: SHA256: 5eb7ab2f8a0b4b960900321505cd6923a072cb3e2412102f5f72a6e74c2f0a55 2. 配置编译环境 # 解压工具链tar -xvf gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz# 添加至环境变量export...
FTP同步服务静默崩溃故障分析:SIGPIPE信号与TCP半关闭状态的致命陷阱
问题 故障情景 业务背景: 技术栈:C++线程池 + FTP 协议长连接 分布式系统中的文件 FTP 同步服务 故障描述: 本地FTP目录同步服务存在非正常进程终止缺陷。当远程FTP服务器发生非计划性停机(服务崩溃/网络中断/强制kill进程)时,本地同步进程发生静默崩溃(无退出状态码、无异常抛出) 故障分析 首先通过打印的 LOG 信息,快速定位到了 tcpSocket 的 Send() 方法中,Send() 方法的实现如下: ssize_t TcpSocket::Send(const void *buf, int len) const { if (!connected_) { return 0; } return ::write(skt_, buf, len);} 添加 try-catch 语句 首先先对其添加了 try-catch 语句尝试捕获异常,发现程序仍然直接退出 事后查阅资料发现,POSIX 的系统调用的错误以返回值出现,因此这里 try-catch 完全无效,应该针对返回值进行...
WSL2 配置 tensorflow 环境
Windows 系统中更新 NVIDA 驱动 这里可以直接通过 Geforce Experience 直接更新 更新完成后可以在命令行/wsl 中输入 nvidia-smi 可以看到输出 这里的 CUDA Version 指的是该驱动版本最高可支持的 CUDA 版本 安装 CUDA 到 NVIDIA官网下载符合条件的 CUDA 这里我一开始直接选择安装了最新版的 CUDA 12.4,随后发现 Tensorflow 目前 (2024.3.17) 并不支持 12.4,于是重新安装,选择了 CUDA 11.2 直接下载 EXE 版本安装即可 在安装时,会发现安装报错 cuda you already have a newer version of the nvidia frameview sdk installed 这里需要到系统设置里卸载NVIDIA frameview sdk 组件,我使用的是 Geek 进行卸载,很干净 注意:不要直接到 NVIDIA 文件夹删除对应文件 下载 ANACONDA 到最新下载地址找到对应的 ANACONDA...
基于Nexus的第三方Nuget源搭建
Nexus 是支持 Nuget、Docker、Npm 等多种包的仓库管理器,可用做私有包的存储分发,缓存官方包。 https://help.sonatype.com/en/sonatype-nexus-repository.html 环境需求 Docker 安装 创建数据挂载目录并赋予权限 mkdir data && chown -R 200 data 创建 docker-compose. Yml 文件 version: '3.1'services: nexus: # 这里使用latest可能拉不动 image: m.daocloud.io/docker.io/sonatype/nexus3:3.61.0 container_name: nexus3 restart: always environment: # Nexus 上下文路径 NEXUS_CONTEXT: / # 指定jvm参数 INSTALL4J_ADD_VM_PARAMS: -Xms1g...
告别“搬运式”更新,打造丝滑写作流(Obsidian + Hexo + Github Page)(如告,暂时只告别了本地搬运版)
如果你在其他平台看到这篇文章,这可能不是最终版本。为了获得更好的阅读体验(包含最新的评论讨论和勘误),欢迎移步原文 写在前面 作为一个强迫症兼折腾爱好者,我一直梦想有一套完美的博客工作流:在 Obsidian 里像写日记一样随手记录,然后博客就自动静默发布到了网页上。 在折腾出这套方案之前,我每天都在重复极其琐碎的体力活:写完 Markdown -> 手动复制到 Hexo 目录 -> 手动敲指令 -> 等待上传。这种低效的流程不仅累,而且极其消磨写作的热情。 经过持续的踩坑,我终于基本跑通了这套基于 GitHub Actions 的 Obsidian-Hexo 自动化发布方案”。它的核心优势只有三个字:全自动。 写作在 Ob: 享受 Obsidian 强大的插件和管理能力。 图床在 Git: PicGo 配合 GitHub 仓库,图片随粘贴随上传。(这个得小心点,别白嫖太多,图片多了就得买个服务器了,不过那样指不定哪天图片就全 404 了,欢迎分享更好用的方案) 发布在云端: 只要我在 Git 提交,GitHub Actions...





