记录做过的手工
阅读全文
02因为房子的大小布局不同,个人的要求不同,家庭网络的设备布局一直没有完美的方案。 而且很多人的网络知识不够,导致最终家庭网络称不上好用。如果有一定的网络知识,vlan是简化家庭网络的利器。 概况 先说下原先的网络布局,光猫桥接模式,软路由作为主路由拨号,客厅的无线路由器使用 ap 模式。 虽然能够满足使用效果,但是多了个软路由,弱电箱空间变拥挤了,而且软路由发热也大,网络拓扑也复杂了。 原先是光猫拨号的,虽然能少个设备,但光猫的功能很弱,也不方便调整网络设置(如 DHCP, ipv6)。 也想过将无线路由器直接放弱电箱,又影响信号。总之当前的方案能满足需求,但不够完美。 现在,将傻瓜交换机换成网管交换机后,交换机只通过一条线连接客厅的…
阅读全文
03日常生活中有碰到轻量模型的推理需求,比如验证码识别、tts生成等。 想要这个服务24h可用,就不能在日常电脑上部署。正好有个 J4125 的迷你主机作为家庭服务器,就先把模型部署到上面,验证下是否满足需求。 核显思路就是使用 openvino + onnx,当最终还是失败,下面记录下探索过程。 核显驱动 openvino 是 intel 推出的一款开源 AI 推理工具套件,旨在帮助开发者在 intel 显卡上部署深度学习模型。 openvino 依赖 opencl, 所以需要正确驱动显卡;不过使用 docker 的话,应该不需要宿主机正确驱动,能识别到设备就行了。 所有简单起见,直接使用 docker 部署,由于 ubuntu 新系…
阅读全文文本是用 Claude Sonnet/Opus 4.6 开发 “UI 区域检测”功能的过程记录,文章大部分内容为 llm 生成。 因为要做些 ui 自动化的功能,涉及到区域检测。这个功能大概用了 5h+,本文主要记录整个迭代演进过程,以及 llm 对这个过程的评价。 基于 opencv 实现的最终效果,总体效果堪称完美。 迭代回顾 以下是 Claude Sonnet/Opus 4.6 对所有 vibe coding 会话内容的总结 时间线 阶段一:基础搭建与通用 CV 方法(v1-v5) Spec 执行 + 初始实现 — 执行 image-region-detection spec 全部 6 个任务。Pydantic 模型、路由、服…
阅读全文
05做 LLM Agent 开发时,经常要查看模型的请求与响应,需要一个便捷的工具。 mitmproxy 是一个功能强大的开源中间人代理,通常用于网络调试、分析 HTTP 和 HTTPS 流量。 安装 访问 https://www.mitmproxy.org/ ,根据指引安装,不同系统有区别 也可以使用 pip install mitmproxy 安装 配置证书,用于解析 https,参考 https://docs.mitmproxy.org/stable/concepts/certificates/ 使用 包含以下命令 mitmdump:支持将捕获的数据导出到文件,类似tcpdump mitmproxy:TUI 实时查看、修改和调试流…
阅读全文国行手机的 esim 功能有较多限制,使用不太方便。 但我们可以使用 esim 适配器,将 esim 转为实体 sim 卡。 esim 适配器 esim 适配器就是个 sim 卡,需要占用一个卡槽,可以通过软件将 esim 卡号写入到适配器。 可以写入多个 esim 号码,并且支持切换,但同时只能有一个在线。 适配器有不少品牌,如 estk、5ber、9esim,价格也各不相同,但是我都没怎么试过。 我使用的的适配器是 pdd 购买,20-30元,容量468KB。 esim 套餐 一般海外套餐都可以使用,我这里只用于接收短信,故使用 clubsim,成本大概50元。 号码写入 购买套餐后,运营商会提供二维码,安卓手机通过 OpenE…
阅读全文B 站非常逆天,只要你使用网页端看视频,点开首页推荐的视频,观看一定时长,就有概率会触发自动关注该 UP 主。 之前也有怀疑是某个浏览器插件的锅,但更换浏览器依然能够触发这个问题。 后来发现疑似是 bilibili 默认绑定了按键 G 关注 UP,非常容易误触发。 网上发现不少类似的问题,但都没有解决方案,迫于无奈只能使用自定义广告过滤规则了,之后没有再出现问题。 这里使用 uBlock origin, 其他去广告插件也类似, 进入插件设置 -> 自定义静态规则,添加如下规则。 在视频页面禁止关注请求,不影响点开 UP 主主页进行关注。 1 www.bilibili.com##+js(no-fetch-if, /api\.bi…
阅读全文昨天花了些时间将 Hexo + next 的博客版本更新了下,发现不少问题。 博客已经很多年了,一直用的是最开始的Hexo版本,nodejs 也是 v12,next 主题也是早年源码安装的,还在上面做了修改。 也是早就明白需要更新了,但是觉得麻烦,就一直没动,最后变得相当麻烦。 依赖更新 首先是版本升级,先将 nodejs 切换到最新 lts(v22)。 再尝试使用npm将 package.json 中的库自动更新,但由于版本差距太大以及很多库不维护了,更新不了。 最后只能使用 hexo init 新建个博客项目,将里面的依赖项复制到老博客里,删除对应的老依赖。 剩下的依赖,大部分是安装的插件,只能一个个搜索用途,看看有没有替代或者…
阅读全文这些年日常操作系统一直是 windows 和 macOS 交替使用,Linux 一般只作为服务器的操作系统。 然而,咖喱味的 Windows 11 (LTSC)用起来实在难受(平时只玩游戏,下载) arm 的 macbook 虽然能效惊人,但是内存金子价格,软件也封闭(点名finder)和傲慢,实在受不了。 最后,还是转向 Linux,毕竟现在 wayland 基本堪用,国产软件也随着信创逐渐丰富了。 发行版选择 这里选用 KDE Neon user edition,基于 Ubuntu LTS, 有以下优点 Ubuntu 用户基数大,有问题容易解决 可以安装星火应用商店,方便使用国产软件 可以用到最新的 KDE 桌面环境,wayla…
阅读全文PyAutoGUI 是 GUI 功能强大自动化方案,但 UI 程序的运行环境选择与配置也是一大难题。 系统选择 为了让环境可迁移,免维护,资源消耗少,必须使用虚拟化的方案。 虽然 PyAutoGUI 支持 Windows/macOS/Linux 三个平台。但是各有各的弊端。 Windows 的系统臃肿且开发环境不友好 macOS 的权限管理过于严格且虚拟化难度大,高dpi的屏幕也不适合自动化 Linux 就是最好的选择了,但执行的应用可能不支持 Linux,必须引入 Wine 综合以上情况考虑,系统环境选择如下 pve: 宿主机系统,也可以选择别的环境 debian: 客户机系统,目前是 debian 12, 方便使用 deepin…
阅读全文语言的力量远比想象的强大,某种程度上是有虚空造物的能力。 你可以凭空创造一个概念,并植入你的听众脑子,不论好还是坏。诈骗分子、PUA 大师、营销大师无不精通此等技艺。 起因是一个综艺节目,有个导演对哈妮克孜说了句话,让我惊为天人,让我惊叹“你他娘真是个人才”。 它在线下拍戏的时候见到了哈妮克孜,哈当时戴了副大镜框眼镜,于是它说道“我当时看到你的时候,感觉好失望,你和我银幕上看到的哈妮克孜完全不一样”。 它凭空创造了一个观念(事实),哈妮克孜颜值不行。怎么创造的呢?和哈妮克孜荧幕形象相比。这显然是不客观的,但很难瞬间就察觉到。 这样,好与坏、美与丑一切观念都是可以被重新定义的,只要你选择合适的目标和对照标准,甚至是你脑海里的标准。 你…
阅读全文联想某些版本的 bios 似乎会禁止降级,即使打开 bios 设置里的允许降级选项,依然会提示 “this platform does not support IHISI interface” 的错误,导致降级失败。 降级方法 经过一些尝试,找到了方法绕过,以 ThinkBook 14 G3 ACL 机型为例 打开驱动下载页面 打开 BIOS 页面, 下载以下安装文件 当前版本 BIOS 的安装包(NEW),版本 GQCN41WW_HFCN36WW 以及想要降级的 BIOS (OLD),版本 GQCN36WW_HFCN31WW 运行 NEW,选择仅解压。找到解压目录,应该只有一个 exe 程序,使用 7-zip 或者 bandizi…
阅读全文
13使用 redroid 等安卓虚拟环境,可能会发现 google play 用不了的问题。 虽然系统集成了 gapps,但系统提示 “设备未获得play保护机制认证”,无法登录 play 商店。 可能的原因比较多,这里大概是因为虚拟机的型号没在google的数据库里。 解决方案就是,获取 GSF ID 注册到 Google。 步骤 安装 device id 打开应用,复制 GSF id,假设为ffffffff 终端运行printf "%d\n" 0xffffffff,转换换成10进制数字。 打开 https://www.google.com/android/uncertified/ 输入转换后的结果并提交
阅读全文
14有些应用在安卓上是独占的,iOS 上又没有比较好的替代品,而且 iOS 上没有能用安卓模拟器。 如果使用多个设备,维护的心智成本又高,被这个问题困扰了许久。 最近碰巧了解了 scrcpy, 用于远程控制安卓,终于解决了这个问题。 需要的工具 安卓环境:虚拟环境或者物理设备均可,这里使用虚拟环境。以下是可选的虚拟环境 PVE 的 PCT容器 (Proxmox Container Toolkit),需要打补丁 docker,基于Redroid 需要调整内核参数 WSA (Windows Subsystem for Android),与 scrcpy 配合有点问题,窗口有黑边。 VMware、VirtualBox等虚拟化平台,需要解决虚拟…
阅读全文
15本文介绍在 VSCode 中配置和使用插件来高效地解决 LeetCode 问题,并使用 Rust 语言编写和测试代码。 vscode 插件 LeetCode.vscode-leetcode pucelle.run-on-save rust-lang.rust-analyzer 项目结构 cargo new vscode-leetcode-rust 1 2 3 4 5 6 7 8 9 10 // tree -I target --dirsfirst . ├── Cargo.lock ├── Cargo.toml └── src ├── lib.rs ├── main.rs └── solutions ├── 1_two_sum.rs…
阅读全文
16什么是跨域? 就是当前域访问了非本域的资源。对于http来说,url代表资源,也就是访问了非本域的url。 域的定义是啥? 这里的域,也就是同源策略(Same-origin policy)中的源。 如果两个 URL 的协议、端口和主机都相同的话,则这两个 URL 是同源的。 当前域:当前网页的域;目标域:访问的资源所在的域 为什么要限制跨域请求?信息泄露 js直接读取浏览器的目标域的sessionid、cookie,伪造请求。 比如,当前站点是恶意站点,它用js请求银行站点,盗取信息。 CSRF,如img标签的src会被访问,利用受害者已认证的身份,在不知情的情况下向受害者认证的站点发起恶意请求。 通过在src里构造url,恶意请求…
阅读全文一些公用的 Linux 服务器,处于维护以及安全考虑,一般只会提供普通权限用户给使用者。 普通用户的权限满足日常使用是够了,但是难以配置自己的开发环境,安装一些自己需要的包。 如果都从源码编译安装软件,依赖的维护过于复杂,初始编译工具链的版本可能也不满足需求,如 gcc 版本过低。 如果申请 sudo 权限或者请求更新系统或安装 docker,后期责任难以界定,运维和管理员一般也不会同意。 所以,最优方案还是有需求的用户在个人目录维护自己的工具链和环境。下文方案为围绕 HomeBrew 构建。 安装 miniconda 解决前置依赖 如果你的系统比较新,可以直接尝试安装 HomeBrew。 基于上面讨论的内容,公用服务器一般存在系统…
阅读全文macOS 系统的自带词典应用非常强大,与其他应用整合很好,快捷取词很方便(command+control+d)。 但是美中不足的是缺少生词本功能,查了单词又很容易忘记,对语言学习者来说就有些不便了。 经过本强迫症的探索,终于找到基于 Karabiner-Elements + Automator + Logseq 的完美生词本方案。 最后的效果是,快捷键取词的同时记录单词卡片到Logseq对应的笔记。 词典词库扩充 参考知乎文章安装好《朗道英汉字典5.0》 这是为了有个释义简洁的词典,方便后续生成生词本词条 编写workflow 使用 macOS 自带应用 Automator(自动操作)编写workflow,将当前鼠标所在位置的文本…
阅读全文
19我们在测试代码时,由于需要经常重启服务,经常会发现服务端口被占用。 一般kill掉后台进程就ok了,但是如果服务有启动一些常驻的后台程序,可能也会导致端口不能释放。 在类UNIX系统中,一切被打开的文件、端口被抽象为文件描述符(file descriptor) 从python3.4开始,文件描述符默认是non-inheritable,也就是子进程不会共享文件描述符。 问题 一般为了实现多进程、多线程的webserver,服务端口fd必须设置为继承(set_inheritable),这样才能多进程监听一个端口(配合SO_REUSEPORT) 典型的是使用flask的测试服务器的场景,这里我们写一段代码模拟。 1 2 3 4 5 6 i…
阅读全文在使用 docker 时,常常会碰到进程退出时资源清理的问题,比如保证当前请求处理完成,再退出程序。 当执行 docker stop xxx 时,docker会向主进程(pid=1)发送 SIGTERM 信号 如果在一定时间(默认为10s)内进程没有退出,会进一步发送 SIGKILL 直接杀死程序,该信号既不能被捕捉也不能被忽略。 一般的web框架或者rpc框架都集成了 SIGTERM 信号处理程序, 一般不用担心优雅退出的问题。 但是如果你的容器内有多个程序(称为胖容器,一般不推荐),那么就需要做一些操作保证所有程序优雅退出。 signals 信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程…
阅读全文