零成本上线个人项目 ——ngrok 仅穿透前端实现公网访问

开发个人项目时,想让他人访问往往需要购买服务器、配置域名解析,成本高且流程繁琐。

本文介绍一种零成本方案 —— 仅穿透前端即可实现内网个人项目的公网访问。

ngrok 账号注册与工具准备

首先在https://ngrok.com/ 官网注册一个账号,就能获得一个免费的dev结尾的域名。

注册好之后,下载对应的zip压缩包

在官网个人后台 / 仪表盘(Dashboard)可直接复制个人专属的 Authtoken。

分框架适配配置

如果前端是用 Vite + React 的项目,需要在 vite.config.js 文件加上allowedHosts这一行代码:

// vite.config.jsexportdefaultdefineConfig({server:{allowedHosts:['xxx.dev']// ngrok 域名}})

如果前端是基于 Umi Max + Ant Design Pro 的项目,前端默认是跑在 localhost:8000(umi dev),则需要修改2个文件。

1.config/config.ts

在文件里加上如下 proxy 部分:

// config/config.tsexportdefaultdefineConfig({// ... 其他配置 ... proxy:{'/api/':{ target:'http://localhost:[项目后端的端口号]', changeOrigin:true,// 根据后端实际路由决定是否 rewrite// 如果后端接口路径就是 /api/xxx 开头 → 不要 rewrite// 如果后端是 /user/xxx(无 /api 前缀) → 加下面这行// pathRewrite: { '^/api': '' },},},// ... 其他配置 ...});

这段只在 umi dev / npm run dev 时生效。

2.src/app.tsx

找到 request 配置,把 baseURL 相关全部注释或删除:

// src/app.tsxexportconst request: RequestConfig ={// !!! 下面这整段注释掉或删除 !!!// baseURL: "http://localhost:[项目后端的端口号]",// 保持这两个(ngrok 警告页绕过 + cookie 跨域) withCredentials:true, headers:{'ngrok-skip-browser-warning':'true',},...errorConfig,};

项目启动与公网访问

接下来,依次启动后端和前端,将之前下载好的压缩包解压后直接双击 exe 即可打开命令行,执行以下命令:

ngrok config add-authtoken [YourAuthtoken] ngrok http [项目前端的端口号]

复制 ngrok 生成的 https 地址,其他人就能够访问你的项目了。

Read more

Qwen3-VL + LLama-Factory进行针对Grounding任务LoRA微调

Qwen3-VL + LLama-Factory进行针对Grounding任务LoRA微调

0.官方GitHub网站: GitHub - QwenLM/Qwen3-VL:Qwen3-VL 是由阿里云 Qwen 团队开发的多模态大语言模型系列。https://github.com/QwenLM/Qwen3-VL 空间感知能力大幅提升:2D grounding 从绝对坐标变为相对坐标,支持判断物体方位、视角变化、遮挡关系,能实现 3D grounding,为复杂场景下的空间推理和具身场景打下基础。 OCR 支持更多语言及复杂场景:支持的中英外的语言从 10 种扩展到 32 种,覆盖更多国家和地区;在复杂光线、模糊、倾斜等实拍挑战性场景下表现更稳定;对生僻字、古籍字、专业术语的识别准确率也显著提升;超长文档理解和精细结构还原能力进一步提升。 一是采用 MRoPE-Interleave,原始MRoPE将特征维度按照时间(t)、高度(h)和宽度(w)的顺序分块划分,

AI辅助编程的边界探索:当Copilot学会写测试

AI辅助编程的边界探索:当Copilot学会写测试

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕人工智能这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * AI辅助编程的边界探索:当Copilot学会写测试 🚀 * 1. 从“写代码”到“验代码”:AI的新战场 ⚔️ * 场景设定:一个简单的支付网关模拟器 💳 * 2. 初级实验:AI能写出“Happy Path”吗? ✅ * 3. 进阶实验:Mocking 与 外部依赖 🎭 * 4. 陷阱与幻觉:AI写测试时犯的那些错 🤪 * 案例 A:永远不会错的测试 * 案例 B:永远跑不通的断言 * 案例 C:复杂集成测试的无力 * 5. 人机协作:重新定义测试工作流 🤝 * 实践技巧:如何高效地让AI写测试?

Lostlife2.0下载官网整合LLama-Factory引擎,增强NPC对话逻辑

Lostlife2.0整合LLama-Factory引擎,重塑NPC对话逻辑 在文字冒险游戏的世界里,玩家最怕什么?不是任务太难,也不是剧情平淡——而是和一个“话术机械、反应呆板”的NPC对话时,那种瞬间出戏的割裂感。明明世界观设定是末世废土,结果NPC张口就是“绝绝子”“破防了”,这种语言风格的崩塌足以让沉浸感荡然无存。 《Lostlife2.0》作为一款以深度叙事和角色互动为核心卖点的文字冒险游戏,在开发过程中就直面了这一难题。早期版本中,NPC的对话依赖传统的决策树系统:每句台词都由编剧手动编写,每个分支都需要精确配置。这不仅导致内容维护成本极高,更带来了“选项爆炸”问题——新增一条剧情线,往往要额外添加数十个节点,最终形成一张难以管理的复杂网络。 真正的转机出现在团队引入 LLama-Factory 之后。这个开源的大模型微调框架,原本主要用于科研与企业级AI定制,但《Lostlife2.0》团队敏锐地意识到:它或许能成为解决NPC智能瓶颈的关键工具。通过将LLama-Factory深度集成到开发流程中,他们成功构建了一套动态、可进化、风格一致的对话生成系统,彻底改变了传

GPU PRO 4 - 5.1 An Aspect-Based Engine Architecture 笔记

本笔记仅为个人的理解,如果有误欢迎指出 An Aspect-Based Engine Architecture 一种基于方面的引擎架构         不是很明白为什么GPU的书籍会有游戏引擎架构的文章。         这里Aspect在文章中的意义更像是表述一个功能模块,在Java中有将Aspect翻译成切面,但是Java切面主要是横向的代码注入,与本文的概念不相符。 大多数系统架构都会考虑将各个功能封装成模块或者组件,在面向对象编程的思想下,这个封装是基于对象去实现的,本文则描述了一种在引擎层面的封装功能的架构思想,封装后的产物被称为Aspect,每一个Aspect负责提供一些功能子集,并通过一个通用的接口与引擎核心通信。 引擎核心:         引擎核心的功能是保存游戏或者仿真时的数据结构以及相关状态,功能Aspect将会与这些数据进行交互。一般来说引擎核心会定义一些接口,外部的Aspect则通过接口访问当前的游戏数据                  用MVC架构的角度去理解的话引擎核心相当于M层,而各个Aspect则相当于C层。