
记一次A800显卡服务器掉卡排查
前几天突然出现服务器掉卡,本来有8张A800显卡的,从8张掉到6张,后面只掉剩4张了,nvidis-smi不显示那四张显卡,lspci |grep -i nvidia却又能识别到所有的八张卡 于是进行排查 dmesg显示是NVRM出了问题 重启服务器后,华硕服务器主板显示了B9错误,也就是表示主板出现了问题,让人感到神奇 再次重启华硕主板又显示AE错误码,只能进行硬重启(拔电源 开机后先查看下系统内核日志 使用下面命令可以查看内核日志十天内中nvidia显卡的报错 1 journalctl --since `date -d "10 days ago" "+%Y-%m-%d"`|grep Xid 从上面看到报的是Xid:140,官方文档对140报错的解读 使用nvidia-smi -q获取更加详细的关于显卡的信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (py310) ps@ps:~$ nvidia-smi -q ==============NVSMI LOG============== GPU 00000000:20:00.0 Product Name : NVIDIA A800 80GB PCIe Product Brand : NVIDIA Product Architecture : Ampere Display Mode : Enabled ...... Aggregate SRAM Correctable : 0 SRAM Uncorrectable Parity : 0 SRAM Uncorrectable SEC-DED : 0 DRAM Correctable : 151 DRAM Uncorrectable : 439 SRAM Threshold Exceeded : No 如果你不想看这么一长串的输出,可以直接用下面这个命令...

Claude MCP初体验
关于MCP mcp是什么?它解决了什么? 按照anthropic的说法,MCP解决了数据的隔离,提供了一个通用的开放标准,使得AI系统访问数据更加容易 我有这么一个使用场景: 我在一名叫luogu的文件夹里面写了很多算法题,想要总结到特定文件夹的一个特定markdown文件里面,我可以使用mcp来解决这个问题吗? 首先需要解决的就是让mcp可以做到读取文件,然后写入文件 动手构建MCP 开始动手写一个mcp的sevrer 按照官方的流程,需要安装uv(一个由Rust编写的python包管理客户端) 我是windows系统,所以用下面的命令 1 powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 如果是macos或者linux系统,可以用下面的命令 1 curl -LsSf https://astral.sh/uv/install.sh | sh 之后进行项目的初始化,我将这个sever命名为algomd 1 2 3 4 5 6 7 8 9 10 11 12 # Create a new directory for our project uv init algomd # Create virtual environment and activate it uv venv source .venv/bin/activate # Install dependencies uv add "mcp[cli]" # Create our server file new-item algomd....

从iPhone越狱到打造完美手机
前言 还记得第一次拿到iPhone时的兴奋(iPhone4),流畅的操作、精美的界面,屌打当时所有手机的科技感,一切都让人爱不释手,他的先进,让人忘记了他的许多缺点,但是…… 但是随着时间的推移,iPhone沦为平庸,甚至有些地方让人觉得不堪入目,比如:文件管理、键盘输入、系统设置等等,这些问题让我开始思考,是不是有一种手机,可以完美的解决这些问题。 于是,我在2025年购入了一台全新美版iPhone Xs,把它的系统系统刷到了iOS 16.1.1,开启了我的越狱之旅。 越狱进行时 前置准备 最新版本的 Sideloadly 如果使用的是,需要安装好iTunes 最新版本的 TrollInstallerX 适合越狱的系统版本 需要注意,我这里的“越狱”其实是一种半完美越狱,重启后仍然需要重新越狱 iOS版本与越狱工具对应表 来自 TrollStore 官方网站 From To arm64 (A8) arm64 (A9-A11) arm64e (A12-A17/M1-M2) 14.0 beta 1及更早版本 不支持 不支持 不支持 14.0 beta 2 14.8.1 TrollInstallerX TrollInstallerX TrollHelperOTA 15.0 15.5 beta 4 TrollHelperOTA TrollHelperOTA TrollHelperOTA 15.5 15.5 TrollInstallerMDC TrollInstallerX TrollHelperOTA 15.6 beta 1 15.6 beta 3 TrollHelperOTA TrollHelperOTA TrollHelperOTA 15.6 beta 4 15.6.1 TrollInstallerMDC TrollInstallerX TrollHelperOTA 15.7 15.7.1 TrollInstallerMDC TrollInstallerX TrollInstallerX 15....

k8s初体验
下载安装k8s 我是用curl安装的,一行命令就能下载 1 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" 安装 kubectl 1 sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl 这是k8s的架构图,可以看到他其实是由许多部分组成的 至少还有下面的这些需要安装 配置kubectl 我用的是zsh,所以需要配置一下kubectl的自动补全 在~/.zshrc中添加如下 1 source <(kubectl completion zsh) 我用的是wsl上的debian安装,没想到添加后,补全的是kubectl.exe,wsl也太会玩了 一点小插曲 发现我的WSL用的是镜像网络模式(Mirrored),所以每台机子ip都是一致的,所以没法在wsl上直接开k8s了 所以我趁着腾讯云促销直接购入了新的vps,再把我原来阿里云的升级下☝️🤓 安装kubeadm等 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包 1 apt-get install -y apt-transport-https ca-certificates curl gpg 下载用于 Kubernetes 软件包仓库的公共签名密钥。 1 2 3 # 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。 # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs....

Gorm Gen生成数据库CURD代码 源码解析
前言 在看sonic的源码时,发现了一个有趣的东西,就是GORM生成数据库源码(真是我等CURD Boy的福音),想了解一下这个东西是怎么实现的,于是萌生了写这篇文章的想法 核心设计 分层设计 gorm采用三层架构,元数据层,逻辑层,渲染层(Metadata Layer,Transformations Layer,Templates Layer) 关键数据结构 QueryStructMeta 1 2 3 4 5 6 type QueryStructMeta struct { TableName string ModelStructName string Fields []Field Source string // 来源:数据库表或已有结构体 } genInfo 1 2 3 4 type genInfo struct { *QueryStructMeta Interfaces []InterfaceMethod // 生成的接口方法集合 } 核心工作原理 通过数据库表名获取表结构,解析出字段名,字段类型,字段注释等信息 1 2 3 4 func GetQueryStructMeta(db *gorm.DB, conf *model.Config) (*QueryStructMeta, error) { if _, ok := db.Config.Dialector.(tests.DummyDialector); ok { return nil, fmt....