普通视图

CloudCone和飞牛都暴雷了!

2026年2月3日 14:04

CloudCone和飞牛都暴雷了! - 第1张图片

这段时间网络上最火除了OpenClaw外,就应该是CC和飞牛的“暴雷”事件了。这已经不是新闻了!

CloudCone,简称CC,虽然是阿三开的,但是在国内有大量的用户,也能算得上是一个“大厂”了。我在《我在使用的VPS:CloudCone(简称:CC)》里也提到,我的博客使用了CC有三四年之久。好在《老张博客搬家至酷鸭数据香港VPS》,这次暴雷老张博客才没有受到影响 ,但是我的几个Docker服务还都在CC上。昨天晚上看到的通知,VPS可以重建了,但是所以数据全丢了。数据丢了这么严重的事件上,阿三却是一句话带过,好像这次暴雷和他没有关系一样!

1月22号开始,就有不少飞牛用户反映自己的网络卡顿、网络连接数上万,上传下截数据猛增。但是官对开始对这件事好像不是太重视,只是提到出现这种情况是把飞牛放在公网且用了http协议导致的。直到最后事态严重了,才承认自己代码有疏漏,才做了紧急的版本更新和专项的查杀脚本。因为我的飞牛是及时更新,也没有出现网络连接数上万、下传下载等异常情况,以为没有中招。昨天下午官方发布查杀脚本 ,我便跑了一下,NND,也中招了。也不知道自己的数据有没有被外流!

从这两件暴雷事情,来聊一聊!

服务商都是一个尿性

虽然免费使用飞牛,不应该这样说,但是飞牛官方在最初处理这件事情上是不到位了。不管是飞牛还是CC或是其他,遇到这样的情况时,好像都会去极力掩饰自己的问题,这么做估计是想保住自己的口碑,但是为什么不能直面问题去解决了。其实早在几个月前,就有人提出过飞牛的漏洞,但是官方并没有去解决!想一想,大厂都是这样,就更不要说小厂或是野鸡商家了。如果CC的事情发生在小厂上,估计会跑路!所以,以后就不要说什么大厂小厂了!

安全意识淡薄

我的爱快、OP、飞牛、黑群晖,都是直接用动态域名解析放在公网上的,而且密码全都是一样的,更为可怕的都是弱口令密码。这次事情之后,已把端口映射停掉了,目前正在寻求一个安全的方案。不知道你是不是这样!以后一定得要谨记教训了!千万不能让自己的设备在网络上“裸奔”了!随着飞牛暴雷事件,很多人都提到了Lucky,这几天得要好好研究研究,好给我的飞牛加装几把安全锁!

数据备份的重要性!

不管是大厂还是小厂,一定得要记住对数据进行备份!一定要备份!一定要备份!一定要备份!重要的情况说三遍!我的博客以及Docker服务都是三方备份,除备份到服务器本地外,同时还备份到了阿云OSS和OneDrive网盘。CC这次暴雷,虽然数据有备份,但是服务器重装、网站环境配置等等,又得要折腾好几天了!这都第四天了,我的两台CC还不能重装!NND,也不知道什么时候可以恢复。

 

视频水尺太难搞!L2TP 异地组网助我远程调试渡口摄像头

2026年2月1日 21:27

前段时间,我在某市县实施当地的平安渡运项目智能化部分施工,主要负责水文气象设备前端的安装与调试,我们团队一行几人,我作为总体技术负责人,具体工作涵盖点位勘察、设备选型、线路与供电规划、现场实施协调以及与甲方、总包的技术沟通等。这项目拉拉扯扯搞了很多年,最近终于是落地了!

该项目面向县域内主要河段沿岸的码头和渡口,建设水文及气象监测系统,将实时数据统一上报至中心平台,供相关管理单位查看和研判,作为平安渡运和是否允许通航的重要决策依据,例如水位、降雨量或风力达到设定阈值时,当地渡船(俗称过河船)即需停航。

项目所在河段枯水期与丰水期水位差极大,历史上个别年份甚至出现过二十多米的水位落差,沿河不少房屋和设施都曾被淹没,我们沿线踏勘时也能明显看到这些痕迹,所幸近些年得益于水利工程建设和系统治理,整体情况已明显改善。该县举例我的家乡并不远,但我的老家是没有这么大的河,我也几乎么有乘坐过渡船,因而每到一处见到爬坡上坎又过河的场景时,我便会感叹:这偌大的中国啊,这形形色色的故乡啊!

因为设备的安装点位大多分布在乡镇和偏远村落,通常需要从县道转入乡道,再进入村村通道路,路况好的十来分钟可达,路况差的连小型面包车都难以通行,最折腾的一个点位先是要走几公里布满坑洼的烂路,随后还需乘坐十多分钟快艇才能到达,单程交通耗时接近两个小时。

[ 阅读全文 ]

原文链接: https://www.shephe.com/post/video-water-gauge-l2tp-remote-debug/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

已解毒!HHKB键盘!

2026年1月28日 22:04

已解毒!HHKB键盘! - 第1张图片

2024年1月份《还是买了GPD win max2》,其实那是台“游戏机”,但是到目前为止也就玩过一次游戏。平常在单位没办法玩,而在家更不能玩,怕孩子看到。所以这台GPD便当成了随身携带的小巧的笔记本使用了。GPD本身就小导致键盘也小,而手感也不是太好,特别是《入坑客制化键盘80Retros GB65(GAME 1989)》机械键盘后,导致我根本不想去按GPD的键盘,这让我更是加重了我购买一台小巧的便于携带的键盘来配合GPD使用了。

大概在两三周前,在V2论坛上看到有人提到HHKB键盘,便找度娘了解了,特别是很多键盘狂人给它定义为“键盘爱好者的最后一块退烧键盘!”,更加勾起了我对HHKB键盘的好奇心!HHKB双模静音款某宝的官方店售价在两千三左右,而海淘店的售价大约是一千九左右。价格这么高,当然舍不得买新的,在海鲜上守了一个多星期,买了一台二手货。这台原主是2024年11月份京东官方店买的,送了防尘罩和手托,最后1450拿下。因为蹲海鲜也一周多,看了很多二手的HHKB的价格,我这台1450拿的,价格应该中规中举。

上周五下午三点收到的货,拆开后折腾了半天终于连接上电脑,急不可待的试了手感!HHKB静电容键盘的手感,真的不如机械键盘,和我的299的京造JZ990还是有一定的差距的,更不如我的80Retros的手感了!另外就是HHKB的键位布局,真的适应不了!周五下午用了半天,星期天下午用了半天,周一晚上装箱上柜!HHKB键盘虽好,但是不适合我!

好像我就有这个“病”,虚荣心在作怪,买东西老是想买贵的,不考虑对的!这次又重重的打脸了!不过也不能完全怪,毕竟购买之前没有试用过HHKB的键盘,如果能有在实体店试了HHKB键盘的手感的话,你打死我八顿我也不会买HHKB键盘的。

我把这台键盘又重新上架了海鲜,到目前挂了两天了,浏览量还不到一百,没有一个询价的!看来HHKB键盘还是比较小众的!可千万不能砸手上呀!呵呵!(就在刚刚,1450顺丰包邮给出了,贴了邮费,等于用邮费体验了HHKB键盘一天时间2026.1.29)

说到最后,还是想买一台小巧的键盘来配合GPD来使用!

探索网络实验的神器 Mininet

2025年9月28日 00:00

在计算机网络的学习与研究领域,Mininet 是款极具价值的工具。它就像是一个迷您网络世界的构建者,为我们提供便捷的网络实验环境。本文将带您深入了解 Mininet 魅力所在,并手把手教您安装与使用它。

简介

Mininet 是一个用于创建虚拟化网络环境的平台。

它能够在一台计算机上快速构建出包含多个交换机、主机、路由器等网络设备拓扑结构。

对于网络研究人员、开发者以及网络课程的学生来说,Mininet 是一个理想实验平台。

通过它可以模拟大规模网络环境,进行各种网络协议研究、网络应用的开发测试以及网络教学演示等。

例如,如果您想研究一种新的网络路由算法,借助 Mininet 就可以轻松搭建出实验所需的网络场景,无需搭建实体网络设备,大大节省了成本和时间。

它的核心优势在于轻量级以及灵活性。Mininet 是基于 Linux 的用户模式 Linux 网络命名空间技术实现的,这使得它能很方便地在各种 Linux 系统上运行。

而且,Mininet 的网络拓扑结构可以灵活定制,无论是简单的链式拓扑、树形拓扑,还是复杂的自定义拓扑,都能通过简单的配置文件或命令行参数来实现。

同时,Mininet 还支持多种网络仿真工具集成,例如 Wireshark 等,方便针对网络流量进行分析。

安装

安装 Mininet 的过程相对简便,但需要确保您的系统满足一定的前提条件。以下是基于 Ubuntu 系统安装步骤。

首先,需要更新系统的软件包列表。在终端输入命令 sudo apt update,让系统获取最新软件包信息。

然后安装必要的依赖库。可通过运行 sudo apt -y install build-essential autoconf automake libtool pkg-config gawk git python python-pip python-dev tcpdump wireshark sqlite3 curl bzip2 openvswitch-datapath-dkms openvswitch-switch openvswitch-common 命令,可一次性安装这些依赖,它们是 Mininet 正常运行和后续功能扩展的基础。

接下来就是安装 Mininet 本身。可从 Mininet 的官方仓库克隆代码,可使用命令 git clone git://github.com/mininet/mininet,然后进入 Mininet 目录中,再运行 mininet/util/install.sh -a 命令进行安装。这个安装脚本会自动完成编译和安装过程,在安装完成后,系统会提示安装成功的相关信息。

使用

安装 Mininet 后,就可以开始体验它强大的功能了。最基本的使用方式是通过命令行来创建和操作网络拓扑。

创建网络拓扑。Mininet 提供了简单的命令行参数来快速创建常见的网络拓扑。

如运行命令 sudo mn,就会自动创建一个包含两个主机、一个交换机和一个控制器的简单网络拓扑。

主机间通过交换机进行通信,控制器用于管理交换机行为。

如果想要创建更复杂的拓扑,可使用--topo 参数。如使用命令 sudo mn --topo linear,4,就会创建四个主机呈线性连接的拓扑,主机 1 连接到交换机 1,交换机 1 连接到主机 2,依此类推,形成一条链式结构。

操作网络设备。创建好网络拓扑后,Mininet 会进入交互式命令行界面。在这个界面中,可对网络设备进行各种操作。

例如,可以通过 h1 命令进入主机 1 的命令行界面,在主机 1 上执行网络相关的命令,如 ping h2 来测试主机 1 和主机 2 之间的连通性。如果网络配置正确,应该可以看到主机 1 向主机 2 发送 ICMP 请求并收到回复的信息,这就表明网络通信是正常的。

对于交换机可以使用 ovs-vsctl 命令来查看和配置交换机的端口信息、流表等等。例如,ovs-vsctl show 命令可显示交换机的详细信息,包括交换机的名称、连接主机、端口号等。

可自定义脚本。当然,Mininet 也支持使用 Python 脚本来自定义更复杂的网络行为和实验场景。您可以编写自己的 Python 脚本来定义网络拓扑、配置网络设备参数及实现特定的网络功能。

例如,您可以通过继承 Mininet 的拓扑类,创建个包含多个子网络、不同带宽和延迟设置的复杂拓扑,并在脚本中对交换机的流表进行编程,实现特定流量转发策略,例如负载均衡、流量过滤等等。这种方式为用户提供了极大的自由度,能够满足各种个性化的网络实验需求。

总结

总之,Mininet 可作为一款网络实验工具,凭借简单易用、功能强大特点,在网络领域有着广泛的应用。

无论是初学者入门网络知识,还是专业研究人员进行深度网络研究,Mininet 都是一个不可或缺的得力助手。通过掌握 Mininet 安装与使用方法,就可以开启一段精彩的网络实验之旅,探索网络世界无限奥秘。

老派博主的博客体验笔记

2026年1月14日 16:35

最近看了一篇文章,触动挺大。我也根据文章整理了自己对博客的一些感受。写博客,其实是给别人看的。技术再炫也不能抢走阅读感受。好的博客,是读者想打开就能顺利读完、想用功能就能轻松找到,也能感受到用心和舒服,让人愿意一次次回来的那种地方。

两款moviepilot-v2插件,实现115网盘strm302播放

2026年1月5日 10:58

两款moviepilot-v2插件,实现115网盘strm302播放 - 第1张图片

去年11月初的时候,配置了真正意义上的第一台NAS,《DIY人生第一台NAS-硬件篇》。虽然当时花了七千多块,很多人都认为是大冤种,但是这才过两个月,硬件又涨了一千多上去,看了一些新报报道,内存、固态等今年还会持续上涨。本来想把这台NAS转成台式机再配置一个低配的NAS用的,还是算了吧!

这台NAS本是不准备搞影视库的,但是老婆这段时间天天追剧、几个视频平台的年度会员也都连续买了几年,所以也就想着干脆买了115会员,自己来折腾算了。先在论坛上收了一个原石会员,不到30T的空间几十块钱,然后再充值8年会员再送永久40T空间,基本上够用了。

拿网盘来做影视库,最需要解决的就是“网盘直链播放”,也就是大家正常说的302重定向播放。简单的理解就是播放网盘视频时,流量不经过你的NAS或服务器,即使是你家宽带上行很低或是你的服务器VPS在国外,都可以流畅的播放网盘视频。所以,有些没有NAS的朋友,用国外便宜的VPS也可以搭建网盘影视库。飞牛fnos是原生的支持网盘直链播放的,但是经过测试,飞牛影视刮削准确率不高,同一网盘我在单位和在家分别进行了测试,刮削出的影视总量相差近千,所以,不得不再折腾起来。

实现115网盘302播放的,目前主流有moviepilot-v2、CloudMediaSynC(cms)和symedia,后面两者都是那收费版的,今天我们先折腾moviepilot-v2。moviepilot-v2部署好之后,只需要通过115网盘STRM助手、mediawarp这两款插件,就可以实现115网盘strm302播放了。

部署moviepilot-v2

version: '3'

services:
  moviepilot-v2:
    image: jxxghp/moviepilot-v2:latest
    container_name: moviepilot-v2
    stdin_open: true
    tty: true
    hostname: moviepilot-v2
    network_mode: bridge
	
    ports:
      - "4000:3000"
      - "9000:9000"
    volumes:
      - /vol1/1000/Docker/moviepilot/media:/media
      - /vol1/1000/Docker/moviepilot/config:/config
      - /vol1/1000/Docker/moviepilot/core:/moviepilot/.cache/ms-playwright
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      NGINX_PORT: "3000"
      PORT: "3001"
      PUID: "0"
      PGID: "0"
      UMASK: "000"
      TZ: "Asia/Shanghai"
      SUPERUSER: "admin"
      SUPERUSER_PASSWORD: "你的用户名和密码"
	restart:wlways  
	  

部署emby

version: '3'

services:
  emby:
    image: amilys/embyserver:latest
    container_name: emby
    restart: unless-stopped
    ports:
      - "8096:8096"
      - "8920:8920"
      - "65039:7359/udp"
      - "65040:1900/udp"
    volumes:
      - /vol1/1000/Docker/emby/config:/config
	  - /vol1/1000/Docker/emby/data:/data
      - /vol1/1000/Docker/moviepilot/media:/video
    environment:
      PUID: "0"
      PGID: "0"
      GIDLIST: "0"
      TZ: "Asia/Shanghai"
      EMBY_PublishedServerUrl: "xxx.xxx.xxx.xxx"
    privileged: true	

安装这个amilys/embyserver版本,能让你很开心!你懂的!

安装115网盘STRM助手、mediawarp插件

在moviepilot-v2插件中心中,搜索安装即可。

必要配置

moviepilot-v2设定,系统设置最下清加媒体服务器。(IP地址自定)

两款moviepilot-v2插件,实现115网盘strm302播放 - 第2张图片

moviepilot-v2的API令牌刷新,这点必须注意,是一个坑,否则生成的strm文件缺少api代码,不可用!我就掉在这个坑里折腾了几个小时。

moviepilot-v2-设定-系统-API令牌-刷新即可。

115网盘strm助手配置

两款moviepilot-v2插件,实现115网盘strm302播放 - 第3张图片

mediawarp配置

两款moviepilot-v2插件,实现115网盘strm302播放 - 第4张图片

emby添加媒体库

这个就不赘述了!

写在最后

moviepilot-v2主要功能是PT玩家的影视“一条龙”服务,我们只是使用了他的两款插件。

不要太“迷信”AI,我在部署moviepilot-v2的时候,AI直接把network_mode: bridge这行给去掉了,说是Docker默认就是bridge。结果emby302端口界面老是打不开,又是折腾了几个小时。即使在中途把docker停掉修改配置也不行。最后重新部署才成功。

这篇教程说的比较粗略,只是列出了基本的核心操作,也可以参考网上其他教程进行。

 

通过ai选购网卡

2026年1月4日 10:04

之前提过intel1219v网卡,pve下不稳定,会自动断流,尤其负荷变化大的情况下,比如前一秒局域网传输东西,下一秒空载,它就断流了。查了一下节能模式搞得毛病,pve模式下不能配置它,让他一直运行在千兆模式,关闭节能模式(关闭不了),bios设置关闭了pci相关节能模式电源模式无果。

本来选择的是intel211 ,这个网卡之前买过一个。感觉一般,但也挺稳定的。当时花了40多元。
冲动咸鱼26元又下单一个。当时只问了chatgpt,210 36元 211 26元 告诉我211 后来问了几个ai,不考虑价格的话,大多推荐intel210网卡。

好吧,我又付了5.99元快递费,退了211网卡,让卖家拦截退回。
intel那些拆机卡,我看上面有数字,问了ai1563 1724 1968 这些咋选 告诉我选择19年的。
最后我选择了国产的diewu的210(支持无盘启动) 35包邮拿下。

最后花了41买了个210网卡。看看效果。

快来解锁你的年度互动报告

2025年12月26日 15:37

前几天在瓦匠那儿看到了博友的年度报告,再加上年底各种 APP 都在发总结,就想着不如也从评论者的角度做一份试试。前端页面交给 AI 出,我来处理数据获取,折腾了几个晚上,最后就有了这份博友的年度互动报告。数据不复杂,主要图个好玩,欢迎点进来看看。

typecho插件-MemosSync,Memos 同步插件

2025年12月22日 21:50

typecho插件-MemosSync,Memos 同步插件 - 第1张图片

这款插件是我找deepseek写的,主要功能是把typecho发布的内容自动同步到Memos上。应该是绝大部分博主都用不上,各取所需吧!也是想说,AI成熟了,我们每位都是程序员,都可以让AI写出自己想要的功能的代码!

一直以来,除老张博客外,还有一个后花园,老张随笔。老张随笔就是每天记一些点滴,发一点牢骚!字数都是在一两百字,到目前为止,也记录了近一千五百篇日志了。老张随笔最初选用的是较轻量的Typecho程序,后来Memos在博客圈流行的时候,老张随笔便换成了Memos程序,这样能更好的和五木大佬开发的哔哔广场融合。Typecho数据导入到Memos数据库中也非常的简单,这篇《简单几步,Typecho博客文章轻松导入到Memos》教程,便可以教大家很方便的把Typecho的文章导入到Memos中。Memos也使用了两三年吧,但是由于作者的任性更新,版本一直还停留在0.18.1上。加之大家对Memos热度的减少,现在玩Memos的人很少了,原来五木大佬的哔哔广场,每天都好几十条哔文,现在基本上很少有人发了。种种原因,老张随笔又换回了Typecho程序,但是老张又舍不得Memos,所以在Typecho上发布一篇文章后,便手动复制到Memos上,也算是做为备份吧!每天手动甚是麻烦,便有了这款Typecho插件-MemosSync,Memos同步插件。

typecho插件-MemosSync,Memos 同步插件 - 第2张图片

插件功能特点:

  • ✅ 文章发布时自动同步到Memos

  • ✅ 支持将文章分类作为Memos标签

  • ✅ 可配置可见性(公开/受保护/私有)

  • ✅ 完整的错误处理,不影响文章发布

  • ✅ 后台配置界面

安装和使用说明

1.安装插件

将下面的文件上传到 /usr/plugins/MemosSync/ 目录

在Typecho后台启用插件

2.配置插件:

进入插件设置页面

填写Memos地址(例如:https://memos.example.com)

输入Access Token(在Memos设置中生成)

选择可见性设置

启用同步功能

3.获取Access Token:

登录您的Memos实例

进入设置 → 权限 → Access Tokens

生成新的Token并复制到插件设置中

注意事项

  1. 确保您的Typecho服务器可以访问Memos实例

  2. 如果同步失败,会在Typecho日志中记录错误信息

  3. 标签会自动过滤特殊字符,只保留字母、数字、中文和下划线

插件结构

/usr/plugins/MemosSync/

├── Plugin.php ├── config.xml └── form.php

1. config.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<name>MemosSync</name>
<description>将Typecho文章同步到Memos</description>
<author>Your Name</author>
<version>1.0.0</version>
<module>MemosSync</module>
</plugin>

2. form.php

<?php if(!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<h2>Memos 同步设置</h2>

<div class="typecho-page-title">
    <h2>Memos 配置</h2>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_url">Memos 地址</label>
    <input type="text" class="text" name="memos_url" id="memos_url" value="<?php $this->options->memos_url(); ?>" />
    <p class="description">请输入完整的Memos地址,例如:https://memos.example.com</p>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_token">Access Token</label>
    <input type="text" class="text" name="memos_token" id="memos_token" value="<?php $this->options->memos_token(); ?>" />
    <p class="description">在Memos设置中生成的Access Token</p>
</div>

<div class="typecho-option">
    <label class="typecho-label" for="memos_visibility">可见性</label>
    <select name="memos_visibility" id="memos_visibility">
        <option value="PUBLIC" <?php if($this->options->memos_visibility == 'PUBLIC') echo 'selected'; ?>>公开</option>
        <option value="PROTECTED" <?php if($this->options->memos_visibility == 'PROTECTED') echo 'selected'; ?>>受保护</option>
        <option value="PRIVATE" <?php if($this->options->memos_visibility == 'PRIVATE') echo 'selected'; ?>>私有</option>
    </select>
    <p class="description">选择同步到Memos的可见性设置</p>
</div>

<div class="typecho-option">
    <label class="typecho-label">
        <input type="checkbox" name="memos_enable_sync" value="1" <?php if($this->options->memos_enable_sync == '1') echo 'checked'; ?> />
        启用同步功能
    </label>
    <p class="description">启用后,发布文章时会自动同步到Memos</p>
</div>

<div class="typecho-option">
    <label class="typecho-label">
        <input type="checkbox" name="memos_include_tags" value="1" <?php if($this->options->memos_include_tags == '1') echo 'checked'; ?> />
        包含分类作为标签
    </label>
    <p class="description">将文章分类作为Memos的标签</p>
</div>

3. Plugin.php

<?php
/**
 * MemosSync - Typecho文章同步到Memos插件
 * 
 * @package MemosSync
 * @author Your Name
 * @version 1.0.0
 * @link https://yourblog.com
 */
class MemosSync_Plugin implements Typecho_Plugin_Interface
{
    /**
     * 激活插件
     */
    public static function activate()
    {
        Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('MemosSync_Plugin', 'syncToMemos');
        Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishSave = array('MemosSync_Plugin', 'syncToMemos');
        
        return _t('插件已激活,请配置Memos设置');
    }

 /**
     * 禁用插件
     */
    public static function deactivate()
    {
        return _t('插件已禁用');
    }

    /**
     * 插件配置面板
     */
    public static function config(Typecho_Widget_Helper_Form $form)
    {
        require_once 'form.php';
    }

    /**
     * 个人用户的配置面板
     */
    public static function personalConfig(Typecho_Widget_Helper_Form $form) {}

/**
     * 同步到Memos
     */
    public static function syncToMemos($contents, $post)
    {
        // 获取插件配置
        $options = Typecho_Widget::widget('Widget_Options');
        $memosUrl = $options->plugin('MemosSync')->memos_url;
        $memosToken = $options->plugin('MemosSync')->memos_token;
        $memosVisibility = $options->plugin('MemosSync')->memos_visibility;
        $enableSync = $options->plugin('MemosSync')->memos_enable_sync;
        $includeTags = $options->plugin('MemosSync')->memos_include_tags;
        
        // 检查是否启用同步
        if (!$enableSync) {
            return;
        }
        
        // 验证必要配置
        if (empty($memosUrl) || empty($memosToken)) {
            return;
        }
        
        try {
            // 准备请求数据
            $apiUrl = rtrim($memosUrl, '/') . '/api/v1/memos';
            
            $content = $contents['text'];
            
            // 如果启用了标签功能,获取分类作为标签
            $tags = array();
            if ($includeTags && isset($contents['category'])) {
                $category = $contents['category'];
                if (is_array($category)) {
                    $tags = $category;
                } else {
                    $tags = array($category);
                }
            }
            
            // 构建内容,包含标签
            $memoContent = $content;
            if (!empty($tags)) {
                $tagString = '';
                foreach ($tags as $tag) {
                    $tagString .= ' #' . self::formatTag($tag);
                }
                $memoContent .= "\n\n" . $tagString;
            }

// 准备请求数据
           $postData = array(
                'content' => $memoContent,
                'visibility' => $memosVisibility
            );
            
            // 发送请求到Memos
            $http = Typecho_Http_Client::get();
            if ($http) {
                $http->setHeader('Authorization', 'Bearer ' . $memosToken)
                     ->setHeader('Content-Type', 'application/json')
                     ->setData(json_encode($postData))
                     ->setTimeout(30)
                     ->send($apiUrl);
                
                $response = $http->getResponseBody();
                $status = $http->getResponseStatus();
                
                if ($status != 200) {
                    throw new Exception('Memos API 返回错误: ' . $status . ' - ' . $response);
                }
            }
            
        } catch (Exception $e) {
            // 记录错误日志,但不影响文章发布
            Typecho_Log::write('MemosSync Error: ' . $e->getMessage(), Typecho_Log::WARN);
        }
    }
    
    /**
     * 格式化标签
     */
    private static function formatTag($tag)
    {
        // 移除特殊字符,只保留字母、数字、中文、下划线
        $tag = preg_replace('/[^\p{L}\p{N}_]/u', '', $tag);
        return $tag;
    }
}

阿里云ESA体验及缓存规则配置

2025年12月16日 22:42

阿里云近期也推出了边缘安全加速ESA免费版,我试了试还挺顺手。它操作和EdgeOne差不多,但号称无限流量,对我这种用阿里云服务器的小站也更友好。我照着教程配了缓存规则,把静态图片、CSS这些都缓存起来,登录用户和动态页面不缓存。网站速度明显快了不少。

typecho博客从宝塔面板搬到1panel面板踩的那些坑

2025年12月9日 10:57

typecho博客从宝塔面板搬到1panel面板踩的那些坑 - 第1张图片

老张博客搬家至酷鸭数据香港VPS》时,还算是比较顺利。想着既然老张博客已经搬到了酷鸭数据,那也把我的后花园“老张随笔”也搬过来吧,说干就干。

以前用的CC家服务器,安装的是宝塔面板,手里一直还有一个1panel的永久授权版,所以这次酷鸭数据的香港VPS我使用的是1panel。如果两台服务器都是宝塔,那搬家真的是分分钟的事,直接用应该商店里的“网站迁移”就行,而现在,只能通过备份网站文件、数据库文件后再上传到新服务器的方式来进行搬家了。

网站运行环境不一致

这块还比较顺利,因为两台服务器我都使用了相同版本的MYSQL、PHP等。另外需要特别注意的就是PHP的扩展、禁用函数也必须要保持一致。

链接不上数据库

这个问题非常好解决,宝塔面板链接数据库MYSQL默认的是localhost,而1panel面板连接MYSQL地址是MYSQL的容器的名称,这点必须要修改。

登录后台遇500,Unmatched '}'报错

这个是我折腾最久的一个坑,当把老张随笔搬过来后,登录后台发现出现500报错,提示为Unmatched '}'。这个坑一直折腾了几个小时。其实在这里,我也是犯了一个非常简单的错误,就是搬家之前没有关闭所有插件。所以建议像这样的搬家,最好在搬家之前把所有的插件停掉、主题换成默认的,搬家后再一个一个启用插件,以便可以更好的测试到错误。

把所有的插件和主题停用后,后台可以正常进入,这个时候再一个一个启用插件,当排查到LoveKKCommentModify这个插件,只要启用就会提示Unmatched '}'。因为对1panel不熟悉,找到AI解决了问题。修改了LoveKKCommentModify的Plugin.php文件第343行:将 <? 改为 <?php、第589行:将 <? 改为 <?php。

其实导致这个问题的最终原因是LoveKKCommentModify插件使用了PHP短标签,宝塔面板默认是开启的,而1panel默认是关闭的。只需要到1panel的运行环境中,把PHP短标签开启即可。根本就不需要修改什么代码。

开启伪静态,登录不了后台

登录1panel后台,为typecho网站设置未静态,代码是默认的,但是出问题了。登录后台出现404错误,并提示:“找不到以下 Web 地址的网页: https://zhangbo.net/index.php/action/login?_=5ca13260eXXXXXXX53adXXXXc92a HTTP ERROR 404。

deepseek分析原因为Typecho的路径处理与当前伪静态规则不匹配。我也就想不通了,为什么官方的默认的代码就不匹配了。最后解决方法添加break指令修正规则

if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
break;
}

搬了一个家,遇到很多坑,折腾N天!要是若干年前还没有AI的时候,估计请教N位大佬也不一定能把问题解决。现在好了,AI普及,遇到问题都可以自己解决,有了AI,人人都是程序员了!!

AI 开发——改了一个浏览器翻译插件

2025年12月7日 12:30

前言

《我在用什么浏览器翻译插件?》这篇博文里我提到过我对浏览器翻译插件的体验和需求,那时候用了一阵子的 trancy,后来不知何时就弃用了,当时我就提到过,这不是我理想中的翻译插件(个人主观原因)。

在简单导航(simpleNav)基本不必再改动之后,我又萌生了改一个停更开源翻译插件的想法,虽然很早之前就有过,但 codebbudy 没能给我足够的信心。现在换上了 trae solo,我觉得效率上起码要高出不少。

选择

选择项目

停更许久的翻译插件大多是翻译接口失效或者不好用,看起来只需要替换接口就可以,所以我想找的是轻量,且使用体验比较适合我的项目。对比了一下轻氧翻译和侧边翻译,我最终选择了后者。

侧边翻译是我曾使用过很长一段时间的翻译插件,可惜已经停更很久了。加上现在各大翻译插件都有 AI 模型的加持,传统的机翻很难满足要求。

为了避免误导其他人,所以在遵循原项目的开源协议前提下,把这个新项目命名为“轻量翻译”,英文名:lightrans。

选择接口

既然不要机翻,又要考虑到公开给大众使用,就不能有高昂的开支,所以我首先想到的是用智谱清言的官方 api 调用 GLM 4.5-Flash,但是并发数限制得非常低,加上翻译速度没有达到我期望的即点即译,于是作罢。

好在我又体验了一下 trancy,发现 trancy 也没有免费提供 GLM 模型,而是改成了硅基流动。于是我注册了硅基流动的账号,发现居然有免费的模型可以使用!硅基流动真是带善人!

感谢硅基流动提供的免费模型

首先体验的是 deepseek 的一个模型,翻译速度也很慢(我猜测是因为有推理思考过程),在网上多方了解,发现Hunyuan-MT-7B倒是一个不错的专为翻译而生的小模型,腾讯混元官方的 api 依然是收费的,还好硅基流动限免提供使用。最后我选择了三个体量都不大的小模型:Hunyuan-MT-7BQwen2.5-7B-InstructGLM-4-9b-chat

这三个模型除了混元比较新之外,另外两个都算比较老的模型了,没办法,不花钱嘛,况且效果也不是不好。

根据我的用量级别,我使用这几个模型的速率限制为:1000 RPM 和 80000 TPM。即每分钟请求数1000,每分钟处理 token 数80000。

开改

精简代码

侧边翻译不是个人开发者的作品,应该类似于一些较大的开源项目组织维护,所以侧边翻译里有非常丰富和强大的功能及代码。考虑到我只需要接入一个翻译接口,于是必应、谷歌和百度等翻译接口都删掉了。

初次以外还删掉了分析代码、隐私政策、部分设置项和个别国家的本土化适配等等,源代码从14MB缩减到4.5MB。

添加翻译器

由于我选择的三个模型都是对话模型,所以请求的 api 地址一样,于是我只创建了一个 aitrans 的翻译器,方便测试就在代码里明文写了我的私钥,经过测试,对话框(popup)翻译正常,划词翻译正常,但是网页翻译不正常。

修改

原本的侧边翻译的对话框默认是搜索的,输入文本点击翻译后即会在侧边栏显示翻译结果,但是测试了一下目前的翻译接口都已经失效了。为了获得输入和获取结果的一致性,即当前对话框不会被打断关闭而显示另一个对话框,我改了 popup 的样式,并使它能够直接在当前窗口显示结果。

侧边翻译的对话框

lightrans的对话框翻译

除了对话框以外,侧栏显示翻译也会让人的视线离开当前关注的区域,所以我把划词翻译的结果也以浮动的卡片形式显示在了当前位置,并且和原来一样支持拖动。以下是划词翻译中三个不同模型结果的对比(发音按钮点击无效,功能删了但是还没删按钮):

lightrans混元模型划词翻译

lightrans千问模型划词翻译

lightransGLM模型划词翻译

当然,用不着的设置项也可以删掉,因为我的需求没有那么丰富(不然就用 trancy了),为了追求极简但好用,所以砍掉了许多原本有的功能,也为后面的修改和维护减轻一点负担。

侧边翻译的设置页

轻量翻译的设置页

看起来基本可以正常使用了,但是网页全文翻译依然不行。原项目使用的是谷歌和有道,但是有道已经下线了,谷歌在国内也无法直接访问,看来要支持网页翻译需要改动的还挺多。

中间的过程就不再赘述了,除了新增代码,调试代码之外,还要测试不同的请求频次和字符数,以免触发硅基流动限频的策略。

和原项目一样支持右键选择翻译模型

一开始选中模型进行网页翻译,往往要过十来秒钟页面才会有变化。或许是内容太多了模型处理也要时间吧,于是我设定了分批次提交,最高并发三个,最多重试三次。所以在进行网页翻译的时候可以看到内容是一部分一部分出来的,但是间隔不算大(主要是网页本身的菜单栏花的时间多,正文其实很快)。这样用户能感知到翻译已经开始了,而不是像之前一样等待了十来秒都没反应,于是不断尝试,就更容易触发限频。

lightrans贴一段代码

从翻译结果来看,不知道为什么千问模型会漏掉几个词语不翻译,也可能是我的代码有问题,相比之下,混元模型翻译得还不错,有些专有名词甚至会加括号解释说明。比如昨天在新华网英文站翻译页面时,发现它会解释“GuoChao”这一个词汇,但是我没找到那篇新闻,只能找另一个,没想到也复现了。

上方是翻译,下方是原文

这是更完整的页面翻译。

lightrans使用混元的网页翻译

最后

通过这次改写这个开源项目,我才发现原来微软的机翻 api 也是要钱的,那么多较大的翻译插件都把谷歌和微软翻译免费使用,甚至开放一些 AI 模型翻译免费使用,这样看起来他们真的是在为爱发电了。

而我能轻松改写这个项目,要感谢侧边翻译的开发者们的开源,也要感谢 trae solo 的帮助。考虑到我的 api 限频问题,所以暂时没想过上架应用商店,但是如果愿意体验并且给我提出意见的话,也欢迎下载扩展包尝试一下。

项目地址:hin/Lightrans · CNB

扩展包下载:lightrans_chrome.zip | w4j1e’s drive

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价

2025年12月6日 14:52

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第1张图片

老张博客搬家至酷鸭数据香港VPS》,目前使用已有一段时间了,感觉还是不错的。所以这里推一推自己的AFF。我的推广链接:https://www.kooya.hk/recommend/3gwffST4RbTO

目前酷鸭数据推出2026年盼新活动,8核16G高性能配置,香港Colo数据中心,399续费同价。目前老张博客也是放在这台母鸡上。当我看到这款配置的时候,我和酷鸭交流过,首先问这样高的配置是不是超售,得到答案是绝不会超开。其实像我们这样的博主,根本用不了这样高的配置,我想着能不能把配置降一降比如降到4核4G,带宽从5M往上提一提,这样价格还可以更低。得到的答案是年底了需要向总公司提交年度报告,如果总公司发现容量空那么多就觉得没必要给那么多配置容量给这边市场。所以原来活动配置是8核8G,索性就多送了8G内存。带宽太贵,只能给到5M,对于博客来说,5M的带宽也是足够使用的了。

若有想购买的,用我的推广链接注册呀!首页会弹出活动配置链接。还是那句话,不管是大厂还是小厂,记得天天备份数据哟!

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第2张图片

Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 21 minutes
Processor  : Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
CPU cores  : 8 @ 2299.984 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 15.4 GiB
Swap       : 0.0 KiB
Disk       : 130.0 GiB
Distro     : Debian GNU/Linux 12 (bookworm)
Kernel     : 4.18.0-358.el8.x86_64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ❌ Offline

IPv4 Network Information:
---------------------------------
ISP        : Cogent Communications
ASN        : AS401696 cognetcloud INC
Host       : FOJ IP TECHNOLOGY LIMITED
Location   : Mong Kok, Yau Tsim Mong District (KYT)
Country    : Hong Kong

fio Disk Speed Tests (Mixed R/W 50/50) (Partition -):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 227.97 MB/s  (56.9k) | 1.44 GB/s    (22.5k)
Write      | 228.57 MB/s  (57.1k) | 1.44 GB/s    (22.6k)
Total      | 456.54 MB/s (114.1k) | 2.88 GB/s    (45.1k)
           |                      |                     
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ---- 
Read       | 1.56 GB/s     (3.0k) | 1.61 GB/s     (1.5k)
Write      | 1.64 GB/s     (3.2k) | 1.71 GB/s     (1.6k)
Total      | 3.20 GB/s     (6.2k) | 3.32 GB/s     (3.2k)

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value                         
                |                               
Single Core     | 739                           
Multi Core      | 4879                          
Full Test       | https://browser.geekbench.com/v5/cpu/23949468

 SysBench CPU 测试 (Fast Mode, 1-Pass @ 5sec)
---------------------------------
 1 线程测试(单核)得分:          884 Scores
 8 线程测试(多核)得分:          6533 Scores
 SysBench 内存测试 (Fast Mode, 1-Pass @ 5sec)
---------------------------------
 单线程读测试:          18155.68 MB/s
 单线程写测试:          14202.38 MB/s

酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第3张图片
酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第4张图片
酷鸭数据2026盼新活动来了!8核16G高性能配置,香港Colo数据中心,399续费同价 - 第5张图片

DIY人生第一台NAS-软件篇

2025年12月1日 22:16

DIY人生第一台NAS-软件篇 - 第1张图片

 

DIY人生第一台NAS-硬件篇》已经有十几天了,这段时间由于工作上的事情比较多也就没有怎么样去折腾,只是把手机里、台式机、笔记本、移动硬盘等零零散散的照片收集起来并上传到了NAS,本来想的跑N个服务的到目前为止还一个也没有安装。这个时候就会想到组的这台NAS真的是性能过剩了,提到性能过剩,就来聊聊硬件安装好后,对于软件的考虑。

NAS系统的选择

硬件组建好之后,对于系统我也有考虑。NAS必须要求稳,不能今天安装这个系统、明天再安装个那个系统,只要能稳定运行就行。所以首当选择的就是飞牛fnos,虽然之前一直玩的是黑群晖。在J4125小主机群里有几位大佬交流之后,他们说像这样性能的NAS,不搞个all in one的话,性能都不能发挥出来。他们的建议就是“算存分离”,也就是虚拟出黑群晖来存放数据,而各种应用使用飞牛,飞牛和黑群晖之间通过虚拟交换机的万兆网卡用SMB达到秒传输数据。直接点说,他们看好飞牛系统里的各项应用,但是并不看好飞牛存储数据的安全性,那也就是“即想,又要”的关系了。之前折腾J4125的时候一直用ESXI做底层,但是我的这台NAS网卡却是螃蟹卡,在海鲜上买了半高的I350T4,可是安装好之后,挡了CPU的排风,加之我也不是太想搞“算存分离”,就放弃吧。简单点,直接飞牛fnos走起。其实那时也想着搞Unraid,虽然之前在张大妈上看过阿文菌的教程,但是我想折腾起来的话又得要N久,算了吧。

硬盘陈列方案的选择

在组这台NAS前,手时就存有两块4T西数的红盘和一块4t的旧的监控盘。因为那块监控盘在我手里都运行了两种多,之前从监控上淘汰下来的时候也运行有三四年,一共是运行了五万多小时,所以准备重新买一块西数红盘,三块硬盘组RAID5的,这样8T的空间于我说来真的是足够使用了。但是群里大佬说RAID5如果有坏盘换新重建的时候,有极高的二次故障风险,这个是RAID5最为致命的缺点,而RAID1的重建风险就非常的低。想想自己使用场景也就是存个照片什么的,最终还是两块4T西数红盘组成了RAID1,用来放照片等数据。而那块旧的4T监控盘直接使用,用来放影视,就是这块盘坏了,数据丢了也无所谓。

文件系统类型选择

在我组这台NAS的前两三个月吧,飞牛正式推出了ZFS文件系统。当也有做了功课,请教了deepseek的回答就是,鉴于我的硬件配置,那是必须要上ZFS。ZFS虽然对内存的要求极高,但是32G内存安全可以应付得来。ZFS的受益:ZFS会愉快地使用10GB、甚至20GB的内存作为ARC缓存,这将让您的照片库浏览、文件搜索等操作快如闪电。最终效果是:您的NAS整体响应速度会更快,因为大量的数据请求被内存缓存消化掉了,避免了慢速的硬盘I/O。“请毫不犹豫地选择ZFS。 它的内存占用是一种积极的、提升整体系统性能的投资。您的32GB内存足以让ZFS和您所有的Docker服务和谐共处,并享受ZFS带来的极致数据安全和飞快的读取速度。这是一种“双赢”的局面,而不是一场“零和博弈”。”,虽然deepseek把ZFS说的这么好,但是考虑到后期扩容的灵活性、数据恢复等众多原因,最后还是选择了Btrfs。

其实总结下来,还是选择大众化的,安心、省心、不劳心!

 

 

自制 Ping 监控工具,助我监看网络链路疑难杂症

2025年11月21日 20:10

最近几天,我一直泡在客户现场,为一套出入管理系统做安装和调试。项目本身并不算特别复杂,但网络链路略长、设备层级较多,再叠加门禁前端设备对网络稳定性的敏感度,几乎把这个“小工程”变成了一次完整的网络排障实战。

在这个过程中,我发现仅靠临时敲几下 ping 命令远远不够:需要能够长期监控、按时间统计丢包、自动记录日志的“小工具”,帮我判断网络到底是偶发抖动,还是结构性不稳定。于是,就有了本文分享这个已经跑通、用着还不错的 BAT 监控小脚本。希望对你也有用~

1. 当前项目的网络拓扑结构

本次项目的系统依托园区现有网络架构,通过多级接入交换机构成一条从服务器到岗亭电脑、再到门禁前端设备的完整链路。整体设计看似规范,但只要其中某个环节出现问题,尤其是接入交换机 1 不稳定,后续所有设备便会受到连带影响。总体而言,这套网络结构属于典型的“业务分层 + VLAN 分区”模式:

  • 下层是门禁专网和办公终端网段
  • 上层是园区核心网络和服务器资源
  • 中间是三层/二层交换机级联

从后端服务器到岗亭电脑,大致链路如下:

Server 172.20.1.35
   │
   ▼
Core Network (Core Switch / Router / ...)
   │
   ▼
Access Switch 1 ── 10.255.18.21
   │
   ▼
Access Switc..... [ 阅读全文 ]

原文链接: https://www.shephe.com/post/pinglogger/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

使用 Total Uninstall 强力卸载顽固软件 & 清理残留

2025年10月27日 11:42

如果你想要找一款 Windows 平台的强力卸载工具,并尝试在网上搜索的话,通常会出现这么几个软件:Total Uninstall、Revo Uninstaller、Geek Uninstaller、IObit Uninstaller 等。Kevin 实际下载了它们所有的软件进行测试,最终选定了 Total Uninstall 作为长期使用。尽管它已经一段时间没有更新了,界面也不够现代化,但总体而言,作为一个对电脑系统结构略熟悉的用户,我更喜欢它在卸载逻辑上的可控性与结果的可验证性。

这几个软件在功能上最核心的点,都是围绕「卸载 Windows 系统中的软件、插件与系统残留」展开的。不同的是,有的偏重操作简便,比如 IObit Uninstaller;有的追求轻量与速度,比如 Geek Uninstaller;而 Revo Uninstaller 则以“扫描残留文件”著称。它们都能满足日常用户的需求,但如果你想进一步掌控系统变化、确保每个文件和注册表项都能被精准清理,那么 Total Uninstall 无疑是更高级的选择。

Total Uninstall 的优势在于,它采用“安装前后快照对比”的方式来识别软件的完整安装轨迹。它不仅能记录程序在系统中的文件变化、注册表写入、服务注册等细节,还能基于这些差异生成卸载方案。相比那些仅在卸载后扫描残留文件的工具,Total Uninstall 的清理更彻底、更有逻辑。


[ 阅读全文 ]

原文链接: https://www.shephe.com/post/total-uninstall-remove-clean-software/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

让网站对 AI 更友好:一次关于 llms.txt 的探索与插件开发

2025年11月14日 15:30

最近发现了llms.txt这个新东西。它就像是专门给AI看的“网站说明书”。为了给自己的博客配上标准规范的llms.txt,我试了好多WordPress插件都不满意,格式太乱。干脆自己动手写了一个,把页面、文章的分类和摘要都利用起来,让AI能更准确地抓取内容。算是为网站跟上AI潮流做了一点小努力。

WordPress中使用ip2region实现评论者IP归属地

2025年10月24日 09:31

我将博客的IP归属地查询从纯真IP数据库换成了ip2region。因为纯真dat版已停更,czdb版的IPv6没什么用,而ip2region v3.0+免费、格式规范且支持IPv6。对于博客评论,城市级精度完全足够。本地数据库还有稳定、快速、保护隐私三大优势。现已成功集成,效果不错。

博客里的星河:评论数据与青春回声

2025年9月29日 00:01

整理过去18年的两万八千多条评论,像在清点一片星空,六成是你们的声音。四千多个独立邮箱里,大多如流星划过,感谢那瞬间的闪耀;另一些则成了长明的星,用上万条评论温暖着这片宇宙。特别想念那10位评论过百的老友,你们的博客或许已熄灯,但字句还带着温度。愿下一个十年,还能看见你们的星光。

暂时停用腾讯EdgeOne了

2025年8月3日 00:31

我最近把腾讯的EdgeOne停掉了,用了大概十来天吧,最近实在不太稳定,还是先关掉了。目前还没找到具体原因。只能猜测可能是EdgeOne刚上线不久,正值容易被攻击的阶段,用了它的 CDN 就顺带被波及了。我这台小水管服务器还是被不少请求打到了源站,稍微漏点请求过来就顶不住了。

❌