| 字数
2276
什么是规范驱动开发 (Spec-Driven Development, SDD) 规范驱动开发(SDD)是一种专门为 AI 辅助编程(AI-Native Engineering) 打造的软件开发方法论。在传统的开发中,人类开发者直接编写代码;而在 SDD 模式下,人类的角色转变为“系统架构师”和“产品经理”,主要负责编写和维护结构化的需求规范(Spec),然后由 AI 智能体(如 Claude Code)根据规范自动生成执行计划、拆解任务并最终编写和测试代码。 SDD 的核心理念是:规范(Spec)即唯一的真实数据源(Single Source of Truth)。 只要规范定义得足够清晰、边界足够明确,AI 就能高效……
阅读全文
| 字数
1103
1 配镜流程 在线下店,选择「施洛华」的镜架,根据移心量≤3mm, (镜架型号:sp369 尺寸:54口17-145 H35.0, 镜架重量:7.8g) 由于线下店价格谈不合适,线上购买镜架。(pdd或者1688下单同款) 拿着新镜架,线下验光。实际提交参数如下: 配镜:咸鱼找一家(鱼小铺L6级别)线上配镜,我选择了最后一次的验光数据。 选择:智锐单光+防蓝光防卫版,折射率1.60 2 验光流程 点有些长折叠了 ... 2025年10月11日,在线下做了3次验光,分别是港大医院: 第2家 前海山姆【博士眼镜】 第3家 Eziwish 第1家 港大医院眼科: 验光体……
阅读全文
| 字数
1365
Preface 将两个切片按指定批次大小交替合并, 参数 batch 表示每次从切片取出元素个数。 常规实现(迭代) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // mergeSlicesByBatch 将两个切片按指定批次大小交替合并 // 参数 batch 表示每次从切片取出元素个数 func mergeSlicesByBatch[T any](s1, s2 []T, batch int) []T { merged := make([]T, 0, len(s1)+len(s2)) // 提取指定批次的元素 mergeTopN := func(slice []T, begin, batch int) int { end := begin + batch if end > len(slice) { end = len(slice) } if begin < end { merged = append(merged, slice[begin:end]...) begin = end } return begin } for i, j := 0, 0; i < len(s1) || j < len(s2); { i = mergeTopN(s1, i, batch) j = mergeTopN(s2, j, batch) } return merged } 递归实现 1 2 3 4 5 6 7 8 9 10 11 12 13 func crossMerge[T any](s1, s2 []T, batch int) []T { // s1长度<=N,直接合并 if len(s1) <= batch { return slices.Concat(s1, s2) } // s2长度<……
阅读全文
| 字数
477
动态计算 md5 header字段 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var CryptoJS = require("crypto-js"); // Unix 时间秒数 var nowSec = Math.floor(new Date().getTime()/1000); // 获取 collection 变量 var appID = pm.collectionVariables.get("TAGAppID"); var random = pm.collectionVariables.get("TAGRandom"); // 计算MD5 var hash = CryptoJS.MD5(appID +"token" + nowSec + random ).toString(); // Set the new collection variable pm.collectionVariables.set("timestampS", nowSec); pm.collectionVariables.set("TAGToken", hash);……
阅读全文
| 字数
212
4 最后,不应该研究未定义行为( 对,第4点很重要!但是,cpp的未定义行为实在太多了,要提前学完也还真不容易。 给了const,又能const_cast。大家不应该经常cast,但是又没办法就是需要cast,比如派生类指针在继承树上候选类型之间的切换。开发者得一个个都经历,都思考,然后才能用好。 Bjarne Stroustrup说相信程序员都是聪明的,但是程序员很多时候并不相信自己足够聪明。我就经常在debug的时候怀疑人生。……
阅读全文
| 字数
464
1 Preface 当使用 git cherry-pick A^..B 来 copy 一组 commits 时,会默认使用当前的系统时间; 我们想修改一组 commits 的 author和 email,但是要保留 commit-date 和 author-date, 这时候该怎么做呢? 2 解决办法 1 git -c rebase.instructionFormat='%s%nexec GIT_COMMITTER_DATE="%cD" GIT_AUTHOR_DATE="%aD" git commit --amend --no-edit --reset-author' rebase -i ${hashid} 不使用-i,改为 -f,则不显示交互会话界面,直接执行。 默认只影响 hash-id 之后的commits,如果需要从 root 开始rebase,则使用 --root to rebase all。 3 参考 1 How to update git commit author 2 更多玩法 How to preserve the committer date in git-rebase.md……
阅读全文
| 字数
1316
本文为转载内容 以下内容来源转载: 3. 药物科普 在常规治疗中,我们提到了最重要的一点,就是在整个过敏季,要全程用药。但市面上有那么多种抗过敏药,到底有什么区别,每一种都要提前一周吃吗?也不见得,全程用药是个笼统的说法。但药物之间还是有个差异的。下面,我们就来讲一讲。 一般来说,我们能够拿到的正规的,治疗过敏性鼻炎的药物有三种: 3.1 绝对主力:口服抗组胺药物 如果你每年固定时间段过敏,那么非常建议你在过敏季提前一周开始使用口服抗组胺药物,并一直服用到过敏季结束。 代际 常见药 白话优缺点 一代抗组胺药物 扑尔敏、苯海拉明……
阅读全文
| 字数
393
1 准备工作 先安装 oh-my-zsh 配置管理工具 2 zsh常用插件 命名补全:zsh-completions brew install zsh-completions 如果自动补全不生效,将以下2个目录,追加到FPATH路径中即可。 在.zshrc 文件中,添加如下内容: 1 2 3 4 5 6 if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$(brew --prefix)/share/zsh/site-functions:$FPATH autoload -Uz compinit compinit fi 3 扩展 其他第三方工具,自动补全脚本(比如goup)保存在如下路径即可。 goup completion zsh > $(brew –prefix)/share/zsh/site-functions/_goup……
阅读全文
| 字数
2621
部分内容参考自:视频商业化常用数据指标及概念 广告平台/来源 SPA 通常在我们内部交流时 SPA ≈ 指竞价广告 2018年9月30日(930组织架构调整,PCG也是那时候成立的)腾讯整合社交与效果广告部(SPA)与原网络媒体事业群(OMG)广告线,成立新的广告营销服务线(AMS)。 拓展阅读:腾讯商业化拼图进入最后一公里。 AMS(Ads Marketing Services) 广告营销服务线 ,新广告业务线,历史由来见 SPA 。 广平 广告平台 的简称,广平广告一般指通过广告平台投放的广告,通常与合约广告等价,代码中常用 Adx 代表合约,具体原因不详。 广告……
阅读全文
| 字数
1106
在线广告领域,特许人支付广告费用的方式主要有三种,CPM、CPC 和 CPA。 首先,让我们花点时间为您定义它们。 CPM(Cost Per Mille): 广告商需要为 1,000 次展示或观看支付的金额。 CPM=总消费/曝光量1000 CPC(Cost Per Click): 广告商需要为 1 次点击支付的金额。 CPA(每次操作成本): 广告商需要为 1 次操作支付的金额。例如,如果有人要填写联系表,特许人只支付广告商只支付给平台的费用。 (注意:通过将 CPM 除以 1000 可以很容易地计算出一次展示的成本。但是,由于这是行业发展的方式,因此价格几乎完全按照……
阅读全文