最近我在 NAS 上部署了 Podsync —— 一个可以将 YouTube 频道或 RSS 源转换为播客订阅地址的工具,方便我通过播客客户端订阅和离线收听。不过部署之后我注意到一个问题:它的 Web 服务会将整个目录内容暴露出来。比如我在浏览器中访问 Podsync 的地址时,看到的是类似下面的画面:pgsql复制编辑Index of / - index.xml - feed.json - video001.mp4这意味着只要知道地址,任何人都可以看到、甚至下载我所有同步的文件。对于公开网络来说,这是一个不小的安全隐患。✅ 简单有效的解决方案:设置默认首页 index.html解决办法其实很简单:在 Podsync 的输出目录里添加一个 index.html 文件即可。这个文件会被 Web 服务优先加载,从而替代原本的目录列表。示例文件如下:html复制编辑<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Podsync 私有服
在日常的财富管理中,清晰地掌握资产的构成与分布是理财的第一步。本次我开发了一个网页应用,旨在提供一个实时动态刷新的资产清单页面,既能直观展示资产总览,又便于用户随时维护和更新资产内容。这个网页是我“100个实用网站和App”项目中的第六个项目,它专注于一个核心目标:资产可视化+实时汇率+灵活编辑。核心功能一览1. 资产总览(支持多种货币币种的计价)系统支持多币种资产的录入,后台自动获取汇率,并将资产统一换算为美元和人民币两种总值,方便用户根据不同需求查看资产规模。2. 资产构成图表展示我们提供了两个维度的可视化图表,便于用户从多个角度了解自己资产的结构:类别维度:比如股票、基金、现金、债券等资产类别。货币维度:根据资产所处币种分类,帮助用户识别汇率风险。3. 资产信息编辑支持资产管理不能只是静态展示,还需要灵活调整。这个页面允许用户对资产进行以下操作:修改现有资产的金额新增资产类别及其金额删除不再持有的资产类别在首页点击“资产编辑”按钮,即可进入编辑界面进行实时调整。4. 实时汇率展示(使用缓存提升响应速度)在资产计算与展示过程中,我们接入了三组重要汇率信息:美元兑人民币汇率欧元兑美元
在寻找适合的语言学习工具时,我们发现现有的很多应用要么是单纯的视频播放器,要么是结构过于复杂、广告泛滥、不适合低龄儿童操作的“学习App”。于是,我决定自己打造一款简洁、高效、专注内容的原生 Android 应用,通过 WebView 加载精选外语儿歌与童话资源,为孩子(也包括我们这些学习外语的大人)提供一个沉浸式、可控、安全的语言学习环境。项目技术背景这款 App 是基于 原生 Android(Native Android)开发 构建的,主要技术栈包括:Kotlin 语言:现代、安全、简洁的 Android 官方推荐语言。Android Jetpack 组件:androidx.appcompat.app.AppCompatActivity:保证老版本系统的兼容性;androidx.swiperefreshlayout.widget.SwipeRefreshLayout:支持网页下拉刷新;android.webkit.WebView:嵌入式网页浏览器,用于展示儿歌/童话等内容页面。为什么选择原生开发?尽管跨平台方案如 Flutter、React Native 近年来风头正劲,但我仍然选
最近,我在“退休前发布100个项目”的计划中完成了第4个项目:搭建一个网络存储服务。这一次,我选择了一台价格非常便宜的服务器,虽然配置不高,只有1T硬盘和1G内存,但它的优势在于存储空间充足。于是我决定:不部署网站,就把它打造成一个对象存储服务。✅ 为什么要做这个?随着项目逐渐增多,我积累了不少图片、音频、视频等资源。这些内容如果全部放在网站服务器上,会越来越难管理,访问也不稳定。而使用独立的对象存储服务可以带来几个好处:资源统一管理:图片、音频、视频集中存放,便于调用和维护。访问稳定:配合 CDN,可以大幅提升文件加载速度。支持外链和权限管理:可以为每个文件生成临时访问链接,既方便又安全。兼容性好:这个系统和 Amazon S3 的接口兼容,以后如果需要升级,也可以无缝迁移。🧰 我用的是什么工具?我选择了一个叫 MinIO 的开源服务。它是一个非常轻量的对象存储系统,界面简洁,功能实用,而且对服务器配置要求不高,非常适合我的这台“老弱机型”。搭配上 Cloudflare 提供的域名和加密访问服务,我实现了一个既安全又易用的网络存储平台。现在,无论是上传文件、查看内容,还是在网站中调用
最近在试用下某单位开发提供的一个系统,拖拽上传文件,自动OCR识别,然后可以继续拖拽一个大模型节点,对识别结果进行智能整理。这让我思考了一个问题:👉 这种通过工具组合完成一项工作的系统,到底算不算是“智能体”?什么是智能体,工作流和智能体到底有啥区别?什么是工作流(Workflow)?先来看个日常例子:公司报销流程:1️⃣ 员工提交发票 2️⃣ 系统检查发票是否合规 3️⃣ 超过一定金额需要经理审批 4️⃣ 审批通过后打款这是一条标准的、预定义好的流程,每一步的处理规则都是提前写死的(比如金额 > 5000 元就需要经理审批)。不会因为发票上写了“特急”二字流程就变了。这就是典型的 工作流系统。 工作流擅长处理确定性流程,比如:审批流数据同步流程订单处理流程什么是智能体(Agent)?来看另一个例子:你问一个智能客服机器人:👉“上周我买的那个蓝色的无线耳机坏了,怎么申请换货?”机器人要做的事情是:1️⃣ 理解你的问题(售后问题?换货请求?) 2️⃣ 从数据库中查找相关政策 3️⃣ 结合你账户信息判断是否符合换货条件 4️⃣ 生成一段符合当前情况的回复,告诉你如何操作
原来爸妈家一直使用的是京东赠送的路由器,其实就是pcdn的边缘存储服务,目前运营商正在严查。想着没有必要给他们造成麻烦,索性考虑给他们换下来。家里正好有一台闲置的小米路由器,之前我用它做 AP(无线接入点)模式,给主路由扩展Wi-Fi信号用。想着带到爸妈家直接接光猫当主路由器用正合适。但没想到,忘记提前切换回路由模式,白白折腾了一下子,所以趁机记录一下过程,供以后参考,也希望能帮到有同样需求的朋友。一、出现的问题小米路由器原来配置为 AP 模式(桥接模式)到爸妈家后直接连光猫结果手机连上 Wi-Fi 后获取到的 IP 是 192.168.1.x 段(原光猫默认分配的)无法访问 192.168.31.1,说明小米路由器没有接管 DHCP,也没有处于“路由模式”路由器管理后台显示功能极简,无法设置拨号/端口转发等核心功能二、排查分析结合经验判断:1️⃣ AP模式的特征小米路由器关闭了自己的 DHCP只是作为无线扩展设备存在所以手机获取到的是光猫分配的 192.168.1.x IP2️⃣ 为什么会自动切换到AP?小米路由器在首次接入网络时,会检测上级网络是否已存在 DHCP 服务如果检测到(
最近在打扫房间时,我意外翻出了一台 GL.iNet GL-SFT1200(Opal) 路由器,曾经因为页面打开非常慢,开启 OpenWrt 后体验不佳,一直束之高阁。这次心血来潮,决定尝试通过官方 Web 界面升级来“挽救”它的使用价值,顺便记录一下整个过程和体验,供有类似设备的朋友参考。封存的原因最初购买 GL-SFT1200 是为了便携科学上网与临时搭建小型网络,但实际使用中发现:页面打开非常缓慢,尤其是切换管理界面时几乎卡死。开启 OpenWrt 18.06 后体验更差,LuCI 页面延迟严重。配置稍复杂的插件(如 SSR Plus+、Passwall)基本无法流畅运行。最终被我束之高阁,封存进抽屉。再次尝试的初衷现在 GL.iNet 官方和社区的固件支持更好,新版 OpenWrt(4.x 系列官方固件)优化明显。Web 界面直接支持升级,操作门槛低,正好测试一下是否能改善性能。何不趁机尝试升级下,看看是否能焕发新生?升级准备与流程1️⃣ 选择官方 Web 版本升级方案我选择采用 GL.iNet 官方 Web 界面升级方案,流程友好、不需要折腾 U-Boot 模式,适合日常用户:
AI 大模型时代,很多企业开始探索用 LLM+工具化的方式提升客服效率。 今天我用一个典型场景“电信客服”举例,介绍下如何用 Qwen-Agent 框架快速搭建一个支持多业务查询的智能客服,当然很多内容也是现学现用。场景需求用户常见的咨询问题包括:💰 话费查询📴 停机原因定位📡 网络故障诊断📦 套餐内容查询📈 流量使用查询📝 业务办理进度查询 ... 多达几十类,几百项指标。问题是:如何优雅地支持这些动态查询?系统设计思路核心思路很简单:用户提问 ↓ Agent 通过大模型理解意图 ↓ 选择调用对应的 Tool(函数) ↓ Tool 执行(查实时数据) ↓ 模型生成自然语言回复系统结构图┌──────────────┐ │ 用户提问 │ └────┬─────────┘ ↓ ┌─────────────────────────────┐ │ Qwen-Agent 主体 │ │ ┌──────────────┐ │ │ │ Large Model │ 理解意图 │ │ └─────┬─────
📌 背景我一直使用 Obsidian 编写 Markdown 文件,并配合脚本将内容自动发布到 Typecho 博客中,实现写作与发布的无缝整合。 整个流程包括:在 Obsidian 中编写 .md 文件使用脚本自动将 .md 转换为 HTML 或内容片段并通过接口发布到 Typecho发布后在博客首页中自动展示文章及封面图一切都很顺利,直到我发现 首页有些文章封面不显示了,甚至页面布局错乱。🕵️ 问题分析经过排查,发现问题出在:如果 Obsidian 的 Markdown 中插入了视频链接(如 .mov 文件),自动生成的封面图提取逻辑会错误地把 .mov 当成图片来显示。而首页模板会这样写:<img src="xxx.mov" />👉 这在 HTML 中是非法的,浏览器无法渲染视频为图片,导致封面图加载失败。🔧 根本原因主题中负责提取封面图的函数如下(原始版本):function getFirstImageFromContent($content) { $output = preg_match_all('/<img.+src=&quo
您的浏览器不支持视频播放。今天我试用了谷歌新发布的视频编辑AI。果然和我几天前猜的一样,现在已经下放到Pro套餐了。您的浏览器不支持视频播放。每次智能生成的视频时长是八秒。晚上我专门体验了一下。您的浏览器不支持视频播放。最明显的感受是:Pro版提供的时长还是太短了。您的浏览器不支持视频播放。很多内容还没交代清楚时间就到了。不过,视频中的内容还是比较丰富的。您的浏览器不支持视频播放。但有个明显的问题,就是对中文的支持不太好。我输入的中文关键词会直接识别成英文或者被略去。您的浏览器不支持视频播放。如果强行让它用中文,又经常会出现乱码。使用英文显示就会正常。您的浏览器不支持视频播放。这一点用下来,体验确实不太理想。此外如果对其中人物如果不强调外貌,默认肯定都是外媒记者了。您的浏览器不支持视频播放。希望后续版本能有所改进吧,放出更多的时长,做更好的中文支持。
walker
万事随性而为,因好而研,因趣而学,从心所欲。脱离依赖,谋划将来,避免经济之险,迈向希望之光。