自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1434)
  • 收藏
  • 关注

原创 长标题卡片别只试长文案:最短值和缺失值也会暴露问题

卡片用一段恰好两行的标题做出来,很容易显得整齐。换成一个字,操作区像悬在半空;换成连续编号,正文列开始挤压按钮;接口还没回来时,名称又被兜底成“未命名”。这三类问题不能靠同一条省略规则处理。这里讨论普通文档列表:标题用于辨认和进入详情,右侧操作是独立按钮。目标是容纳真实内容,保留可辨认信息。下文的内容样本由人工构造,图片为布局示意,没有执行浏览器渲染或读屏验证。

2026-11-07 00:05:25 35

原创 缓入缓出曲线的边界:零时长、反向距离与精确终点

一条曲线在预览里很顺,接上真实状态后仍可能出错。用户关闭动态效果,时长变成零;元素本来就在目标位置;最后一次采样越过了结束时刻。这些情况都不需要更漂亮的曲线,而需要更明确的输入与返回规则。下面只讨论一次标量位置插值:从起点移动到终点,开始前停在起点,结束后保持终点。不处理拖拽接管、重定向或初速度继承。本文执行了有限的 Python 算术检查,没有执行浏览器动画、帧率或设备体验测试。

2026-11-07 00:04:39 48

原创 列表要不要用方向键?先确定用户是在阅读、选择还是操作

几行卡片上下排列,视觉上都是列表,键盘交互却未必相同。文章目录是去往不同地址,配送方式是选择一个值,文件管理器则可能在每行放打开、重命名和删除。把它们统一做成“上下键移动,回车执行”,会把不同任务挤进同一种角色。本文讨论 Web 组件的语义选择。示例是人工构造的界面需求,不是经过用户验证的产品方案;没有执行浏览器、键盘或读屏测试。目标是先明确需要实现什么,再决定是否编写复合键盘导航。

2026-11-07 00:02:49 32

原创 Flutter 确认弹窗遇到大字体:先让内容增长,再决定怎样滚动

确认弹窗的说明通常很短,于是设计稿容易把它画成一张固定高度的小卡片。真正的对象名称可能很长,用户也可能调大系统字体。若仍坚持固定高度,最先被挤掉的常常是影响范围,最后只剩一个醒目的删除按钮。这里讨论 Material的内容约束:长名称、较长说明和窄窗口同时出现时,怎样保留决定所需的信息。不讨论请求状态管理,也不把这一方案套给所有 Cupertino 或自定义弹窗。代码是局部结构示例,没有在 Flutter SDK 中编译或运行。

2026-11-06 23:58:14 44

原创 动效尺度怎样容纳业务例外:基础值别直接变成所有场景的答案

设计系统定了几个时长,组件却依然各调各的。问题可能不在数值太少,而在这些值没有说明用途:按钮颜色过渡、抽屉位移和长列表分批出现,使用同一个“中等时长”,并不代表获得了同一种节奏。动效尺度需要可复用的基础值,也需要解释某个场景为何引用它。本文讨论一套假设的业务界面规则,重点是基础尺度、场景语义和例外怎样分层;没有界面播放、用户实验或性能测量,因此不提供所谓最佳参数。

2026-11-06 23:57:02 72

原创 空内容区域,别用固定高度撑住体面

空列表里放一幅插图、一句说明和一个创建按钮,再给区域固定高度、上下居中,宽屏截图通常很舒服。等文案长一点、字号大一点,按钮就可能被推到边界外。若父层还有,恢复路径会安静地消失。空内容区域需要的是空间余量,不是无法变化的盒子。这篇讨论普通页面中的占位布局:内容少时有留白,内容多时自然增长,由页面继续滚动。它不负责决定为什么为空,也不讨论请求状态;这些事实应由父层提供。代码没有执行浏览器渲染,图像是布局意图而非实测截图。

2026-11-05 14:31:14 156

原创 阻尼弹簧动效,先知道自己在调什么

把卡片移到新位置,普通缓动总觉得太规整,于是换成弹簧。接下来常见的调整方式是:刚度加一点,阻尼减一点,再看一遍。调到某次好看,并不说明已经知道换一段距离或换一个初速会发生什么。这篇只推导一维线性欠阻尼弹簧:目标固定,参数不随时间变化,没有碰撞、边界或非线性阻力。它适合解释装饰位移的参数关系,不是完整物理引擎。文中执行一组有限算术检查,没有浏览器、Flutter或设备播放记录。

2026-11-05 14:30:00 137

原创 表单报错,别只给输入框换个颜色

邮箱输入不完整,输入框变红,旁边也出现了错误文字。视觉上似乎足够清楚,但键盘用户再次进入这个字段时,可能只知道它叫“邮箱”,不知道下方哪一句与自己有关。表单错误需要同时处理可见信息和程序关联。这篇使用一个邮箱字段说明:原本有“用于接收通知”的帮助,出错后增加“请输入完整邮箱地址”,修正后撤销错误状态而保留帮助。本文没有执行浏览器或辅助技术测试,代码展示关系维护,不是完整验证器。

2026-11-05 14:28:44 210

原创 Flutter 设置列表,开关不是导航箭头

设置页里每一行都有标题和右侧控件,看起来适合做成同一个通用 Tile。但“消息提醒”是改变一个值,“隐私设置”是进入另一个页面。如果两者都做成开关,用户会误以为点一下已经改变了某种状态;如果都做成箭头,二元设置又失去直接反馈。这篇用假设的设置列表拆开内容、值与回调:开关改变提醒偏好,导航项进入更多选项;远端保存采用确认后更新,不使用乐观切换。没有本地 Flutter 编译、设备或辅助技术验证,代码只展示受控组件核心,不是完整设置服务。

2026-11-05 14:27:27 189

原创 组件状态变量,别让布尔值互相打架

一个提交按钮最初只有loading。后来加上successerrordisabledfocused,接口变得很灵活,也开始允许“正在提交且已经成功”。最后画成什么样,取决于哪个 class 写在后面。状态变量需要表达关系,不只是方便开关样式。这篇用假设的提交组件说明:业务阶段互斥,交互状态另列,视觉变量从有效组合映射。它不实现请求层,也不讨论所有复杂工作流;代码没有运行,不能据此宣称组件状态已完整覆盖。

2026-11-05 14:26:14 177

原创 响应式表单,别把两列写成两半

把两个字段各设为width: 50%,中间再加一个间距,最先出现的问题往往不是手机适配,而是两半加上间距已经超过一整行。随后补上减法、断点和特殊类,表单开始依赖越来越多的例外。表单列应该从字段可用空间推导。这里讨论一个假设的资料表单:姓名、邮箱、详细地址;前两个字段允许并列,地址需要覆盖当前全部列。重点是内容顺序、列宽下限和字段内部说明,不涉及实际提交接口。本文没有执行浏览器渲染或键盘走查,所有尺寸都是规则样例,不是实测最佳值。

2026-11-04 20:56:33 131

原创 动效中途改目标,别把速度归零

卡片正在向右移动,用户又选了更远的位置。新动画从当前画面开始,所以没有位置跳跃;但它重新从零速度缓入,卡片像在半路踩了一次刹车。起点接上了,节奏却断了。位置连续与速度连续是两件事。这篇用一维位移推导一条新轨迹:从当前位置和当前速度出发,在给定时长后到达新目标并停下。采用三次 Hermite 插值,不涉及完整物理仿真。文中执行了有限端点算术检查,没有浏览器播放、帧时间或真实打断验证。

2026-11-04 20:55:19 128

原创 弹窗关闭后,焦点还找得到回去的路吗

用户在一条记录上打开确认弹窗,确认后这条记录被删除。弹窗关了,代码调用原按钮的focus(),却没有明显效果——按钮已经不在页面里。接下来按 Tab,从哪里继续,开始取决于浏览器与页面当前状态。焦点恢复不是“记住一个节点,关闭时再调用一次”这么简单。它需要确认当前任务、页面变化和目标是否仍然可用。这篇讨论普通 Web 模态弹窗的恢复策略,使用假设的记录列表说明。没有执行浏览器或辅助技术验证,下面的规则是实现起点,不是兼容性结论。

2026-11-04 20:54:09 133

原创 Flutter 筛选面板,草稿别改到父层去

面板里勾了两个条件,点取消,列表暂时没有刷新。再次打开时,刚才取消的条件却还在。这类问题未必来自路由返回值:面板可能从一开始就拿着父层的同一个可变集合。显式应用模式下,面板需要拥有本次编辑的草稿,父层拥有已应用条件。这篇聚焦 Flutter 组件内部的所有权、初始化和选项变化,使用可多选的方案 ID 集合作为假设例子。没有本地 SDK 编译、设备运行或辅助技术验证,代码只是核心片段,不是完整筛选器。

2026-11-04 20:52:56 215

原创 文字样式引用,别只接上字号

组件已经使用,文字样式似乎接入了设计系统。但一处行高是固定长度,另一处继承父级,第三处又加了字重覆盖。它们字号相同,排起来却像来自三套界面。整理文字样式引用,不能只统计字号有没有变量。这篇讨论一个假设的表单帮助文字角色:它解释字段,不承担唯一的错误恢复信息。目标是让字号、行高、字重和用途一起可追溯。本文没有扫描真实项目或执行字体渲染,示例参数只是说明组合关系,不是可读性测量结果。

2026-11-04 20:51:40 132

原创 间距刻度,别让数字替你做设计

整理间距时,最诱人的动作是把页面里的 17、18、19 都归到 16。数值清单变短了,界面却未必更一致:有的 18 是真正的布局间隔,有的是字形边缘看起来多出一点,还有的来自相邻边距的组合。这篇从一个假设的清理任务出发:为表单、按钮和内容区域建立一小套间距刻度,并记录哪些值可以收敛、哪些需要保留。它讨论独立的设计系统整理方法,不涉及 AI 生成规则。示例没有扫描真实产品,也没有浏览器测量结果;以下观察值与变更记录均是用来说明判断过程的假设样例。

2026-11-03 23:45:50 186

原创 多按钮操作区,别靠挤压撑住:让 CSS 跟着内容换行

flex-end可以让最后一行靠行末,但不能保证主按钮独占整行,也不会自动产生一套窄屏竖排规则。封面中的单列布局是一种可以采用的设计结果;上面的基础代码只保证内容驱动的自然换行,不承诺每个按钮在窄屏都等宽铺满。如果产品明确要求窄容器时单列,应该为组件容器建立查询条件,再让按钮占满行宽。阈值需要从真实文案和字体样例中确定。仅凭“手机通常是某个宽度”填一个数字,很容易遗漏嵌入弹窗的桌面场景。还要警惕把主按钮视觉移到最前面,却让 Tab 最后才到达它。CSS 排序不会自动把源顺序与辅助技术顺序一起改好。

2026-11-03 23:44:39 167

原创 异步状态播报,别让读屏追着百分比跑

上传合同以后,用户转去填写备注。屏幕上的进度条不断变化,最后出现一个绿色勾。视觉上似乎已经交代清楚,但没有看着进度条的人,可能不知道文件何时可用。另一个极端是把每一次进度都写入 live region,让一串百分比与用户正在阅读的内容争抢注意力。这里讨论一个假设的单文件任务:传输、服务端处理、就绪,任一进行阶段都可能失败。目标是让关键变化可以被辅助技术获知,同时保留用户当前的焦点。以下依据语义规则分析实现,没有执行浏览器与读屏组合测试,不能把示例代码视作已经验证的播报行为。

2026-11-03 23:43:25 219

原创 错峰动效,先算最后一项何时结束

列表项依次出现,很容易写成“每项延迟 60 毫秒”。四项看着轻快,二十项却可能拖成一段等待。问题不一定出在缓动曲线:我们往往只给单项定了时长,没算整组结束的时间。这篇用一个明确的假设例子推导:四张内容卡片,每项运动 240 ms,相邻开始时间相差 60 ms。它们在数据准备完成后共同进入展示阶段,错峰只表达层次,不负责模拟加载。文中的数值已做有限算术检查,没有执行浏览器动效、打断操作或性能测量。240 与 60 都是解释公式的样例参数,不是推荐标准。

2026-11-03 23:42:11 173

原创 业务代码一行还没跑,工作进程就被打穿:深度拆解 PHP2Shell 漏洞

2026 年 10 月 21 日,PHP 发布安全更新,修复 CVE-2026-109618 和 CVE-2026-109619。这组被称为 PHP2Shell 的漏洞,CVSS v4.0 评分均为 9.2。在特定条件下,未经身份认证的请求可以导致远程代码执行,取得 Web 工作进程的权限。PHP官方公告部分路径在业务代码执行前就能触发,接口里的参数校验管不到这些运行时错误。线上环境需要先排查、更新,下面再慢慢拆原理。我也在本地跑了一个小 C 程序:先保留错误,再清掉引用,对比两次输出。

2026-11-03 10:20:09 30455

原创 实现减弱动态反馈:取消运动之后,用户还要看得懂状态

把动画时长改成零,页面不动了,选中标记却也没出现。原因可能是业务状态被绑在动画结束回调里,也可能是元素初始透明,而最终样式只靠动画填充保留。减弱动态分支首先需要一个完整的静态结果。运动可以少,状态不能丢。下面使用“选择一张卡片后做轻微装饰反馈”的例子说明初始化、运行中切换和卸载清理,代码未在浏览器执行,没有辅助技术或系统设置实测结论。

2026-11-02 12:41:02 1610

原创 Flutter 空结果提示:先拆开内容、状态与恢复回调

查询还没结束,列表暂时为空,页面就显示“暂无资料”;请求失败后,也显示同一张插图。用户看不到数据,组件却把三个不同原因压成了一个。空结果组件负责解释已经确定的状态,不应该负责猜请求结果。本文给出 Flutter 的状态判断与短内容布局初稿,使用虚构资料列表,没有编译、设备运行、大字体或辅助技术验证记录。配图是概念示意。

2026-11-02 12:39:51 1915

原创 整理语义色别名:让“错误文字”与“错误背景”各自有名字

设计系统只提供一个danger,组件作者便把它用于文字、边框、图标和背景。浅色主题里还能勉强看清,切到深色主题,某些错误说明就和底色挤在一起。名字没有变,使用关系却从未被说明。语义色应该表达用途,也要保留它与基础色的引用。下面用错误反馈说明一套小型命名与检查方法,颜色与名称均为自定义示例,没有执行浏览器或对比度计算,也不报告无障碍通过结果。

2026-11-02 12:38:40 1870

原创 实现标签集合换行:集合要能排成多行,单个长标签也要有边界

给标签容器加了,短标签已经能换行,一条很长的英文标识却仍撑出卡片。原因很具体:容器允许把标签放到下一行,不代表单个标签内部已经允许断行。这里实现一组纯展示标签,保留完整内容,不做省略。代码是布局初稿,包含最小结构和核心 CSS;本文没有执行浏览器渲染、溢出测量或键盘验证,信息图也不作为实际排版证据。

2026-11-02 12:37:29 1894

原创 长标题卡片为什么撑破容器:从内容约束推导 Grid 布局

缩略图、标题、查看按钮,三列卡片看起来很简单。标题换成一长串没有空格的标识后,按钮却被推出卡片边缘。给卡片加能让截图恢复整齐,但内容和焦点轮廓也可能一起被裁掉。要解决这个问题,先看三层约束:中间轨道能不能缩小,文本子项能不能缩小,文本在空间不够时怎样换行。本文给出一份保留完整标题的布局初稿和分析样本,未执行浏览器渲染、截图或溢出测量,不能把下面的推理当作兼容性测试结果。

2026-11-01 19:51:02 1808

原创 从公式到页面实现缓入缓出:先把时间归一化,再计算位置

一个标记从左边移到右边,距离改了,时长也改了,缓动函数该不该重写?如果公式直接拿毫秒计算,很容易把“经过多少时间”和“完成多少位移”混在一起。先把时间变成 0 到 1 的进度,再由缓动函数映射成位移进度,距离与时长就能独立表达。本文使用多项式,给出有限数值核对和页面核心实现。数值计算已执行;浏览器动画、帧时间、减弱动态体验没有执行验证,下面不报告流畅度或性能结果。

2026-11-01 19:49:53 1907

原创 实现键盘列表导航:先分清“浏览链接”和“选择一个值”

给列表加上下方向键,看起来只需要维护一个索引。但列表里的每一项究竟是什么?如果是文章链接,用户要打开页面;如果是候选值,用户要选择;如果一行里还有删除按钮,任务又变了。先确定任务,再选择原生元素或交互模式,键盘路径会清楚很多。本文用三个虚构草稿说明两种实现方向,代码只保留结构与关键行为,没有执行键盘、读屏或浏览器验证,不能称作无障碍验收通过。

2026-11-01 19:48:39 1579

原创 Flutter 确认操作弹窗:拆开内容、页面状态和异步回调

确认弹窗关闭了,页面上的操作却还在执行。用户又点了一次入口,第二个弹窗叠上来;或者用户离开页面后,旧请求回来继续调用setState。这两类问题都很难靠调整弹窗样式解决,因为状态没有放在合适的位置。这篇只讨论“弹窗收集决定,页面执行操作”的 Flutter 方案。它适合短内容确认,异步结果放在页面展示。代码是正文内的核心片段,未执行 Flutter 编译、设备运行、重建分析或大字体验证;API 按文末官方文档核对,不声称对应某个本地 SDK 已运行通过。

2026-11-01 19:47:27 1957

原创 整理动效尺度定义:让时长、距离和曲线都能追到设计意图

项目里有 120ms、160ms、200ms,整理成fastnormalslow,是不是就有动效系统了?还差一点:这几个值用在哪里,和多大位移搭配,用户要求减少运动时怎么办,都没有被保存。动效尺度需要表达可选择的参数,也需要表达使用条件。这篇用一个本地选中卡片的自定义字典说明分层方式,不调用模型,也不讨论 AI 生成质量。参数是讲解初稿,没有经过感知实验、浏览器性能或跨端验证。

2026-11-01 19:46:13 1876

原创 金丝雀发布看的是 P99,代码就别只算中位数

发布面板上写着“P99无明显回退”,判定代码却只比较两个样本的中位数。这不是一个小命名问题:少量请求变得很慢时,中间位置的请求可以完全不变。

2026-10-31 23:06:55 1561

原创 批流混部省下了什么:算实例时间,也算存储、网络和中断

在线容量与安全余量应先保留,再讨论可回收的批任务额度。任务是否支持检查点、能否中断恢复、截止时间是否允许等待,都决定它适不适合借用容量。Kubernetes 10月的节点 Swap 分析说明不同工作集的内存取舍;Kueue 准入讨论则帮助区分排队与调度。两者都不能直接证明混部后一定降低成本或满足在线时延。图中的一天容量曲线是示意。它展示固定在线预留的简化方案,真实业务可以采用经过验证的动态容量包络。

2026-10-31 23:05:48 1928

原创 CEP 归并和大模型解释分层做:别让摘要成为唯一告警证据

让每条告警都调用一次大模型,成本、时延和重复解释很快会堆起来。先用确定性规则组织事件,再让模型处理有上下文的证据包,通常更容易理解;但归并不能覆盖原始记录。

2026-10-31 23:04:40 1958

原创 SRE 知识库的金标集:证据、检索、动作和权限分开判

一个答案写得流畅、相关性很高,也可能引用了过期手册,或者建议了调用者无权执行的动作。把这些维度求平均,会让一次严重越权被其他高分稀释。

2026-10-31 23:03:33 1504

原创 写给下一个十年的运维笔记:可观察、可撤回,也要有人接手

整理运维文章时,我越来越在意一种差别:有些记录让人记住“当时真惊险”,有些记录能让没在场的人继续工作。后者通常不那么热闹,却更接近我希望留下的东西。相机里的一张夜景有明确的取景范围,镜头外的地方仍然未知。系统也是如此。我们需要足够好的观察,也需要承认观察边界;不能因为屏幕上没有红点,就把没采到的地方写成正常。

2026-10-31 23:02:22 1933

原创 eBPF 看见 futex 等待以后,还缺哪条证据才能谈死锁

线程长时间停在 futex 等待上,值得调查,但不能直接宣布已经找到一条完整的线程等待环。内核事件告诉我们发生了什么等待;某个用户态锁究竟由谁持有,还可能需要运行时与应用侧材料。

2026-10-30 13:18:13 1870

原创 STL 加异常模型怎么评:发现时间、覆盖率和准确率别混成一个分数

告警从十万条变成几十条,听起来像一次大幅改善。可如果没有事故标注、通知口径和时间范围,我们不知道减少的是重复信息,还是本来应该看见的异常。

2026-10-30 13:15:58 1880

原创 GPU 作业排队,先看卡在准入还是调度:模拟硬件也要说清验证范围

GPU 作业没有启动,第一反应常是“没有卡了”。实际上,它可能还在等租户额度,也可能已经准入、却找不到满足拓扑与设备条件的节点。两个阶段混在一起,排障会反复绕圈。

2026-10-30 13:14:08 1941

原创 液冷泄漏事故的业务视角:先划边界,再确认服务该往哪里撤

液冷管路出现泄漏,叙事很容易聚焦到“谁先冲进去抢下了设备”。对业务恢复而言,更重要的是受影响范围、现场专业确认、健康承载能力与数据状态。没有这些信息,快动作可能只是把风险扩大。本文不是某次可核实事故的亲历记录,也不提供带电设备或液冷管路处置教程。设施处置由授权专业人员完成,业务团队围绕服务恢复开展工作。

2026-10-30 13:09:54 1955

原创 让大模型写 Prometheus 规则,先用反例回放卡住它

自然语言需求很短:“错误率高时通知值班。”生成一条 PromQL 也许只要几秒。但分母没流量怎么办,标签是否把不同服务加在一起,告警持续多久触发,这些问题不会因为语法正确而自动解决。

2026-10-29 22:26:16 1869

原创 跨机房心跳断了,请显示未知:别把没有告警解释成已经恢复

机房 B 的指标突然不再出现,聚合大盘上的告警总数反而下降。如果系统把缺失当作零,事故越严重,画面可能越平静。跨机房监测首先需要一个能容纳未知的状态模型。

2026-10-29 22:24:46 1749

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除