2026-09-13 10:30:03
这是当前更前沿的“Vibe Motion”趋势,将录屏步骤也自动化了。代表性开源框架包括:
https://github.com/heygen-com/hyperframes
HyperFrames 是一个开源框架,可将 HTML、CSS、媒体内容以及可播放的动画转换为格式固定的 MP4 视频。它可以通过命令行工具在本地使用,也可以与具备相应功能的 AI 编程工具配合使用。此外,它还可以作为托管式内容创作流程中的渲染核心组件来使用。
https://github.com/nexu-io/html-video
HTML 内容可以直接转换成视频——而且是在你的笔记本电脑上完成。你可以使用各种编程工具来辅助这个过程:Open Design、Windsurf CLI、Trae CLI、Claude Code、Cursor、Codex、Gemini、Grok、Qwen、OpenCode、Copilot、Aider、Hermes,或者 Anthropic API。你只需描述一下想要制作的视频内容,或者粘贴相关文章的链接或 GitHub 代码库的地址,这些工具就会把内容转换成多帧动画视频。最后,这些视频会被直接保存为 MP4 格式,保存在你的电脑上。整个过程非常简单:只需使用相应的工具,无需额外付费,也不会受到任何软件或服务的限制。Apache-2.0 许可证,完全免费使用,无任何附加条件。
我看了一下这俩个 github 项目,HyperFrames 无论是 star 数量,还是更新频率,及 commit 更新数量,都远远优于 html-video。所以,我还是优先尝试 HyperFrames 吧。
2026-09-12 08:55:58
最近用 AI 生成了一套基于微信服务号的访客管理系统,但是一周改了近 100 个 bug,我感觉很多地方浪费了太多时间,这里先记录一下问题
最初使用腾讯的 Miora (类似 Figma)生成了交互原型,或者说是设计稿。但其实,这套虽然看起来挺好看。但是其实缺乏了设计规范,例如:
而且还很耗费 token,还不如不用 Miora, 直接让 AI 生成 HTML。至少几年前的 AI 都知道需要先生成设计规范 markdown,方便调整。
而且,我感觉,还是需要类似 bootstrap 或者 tailwind css 这样的框架来规范,虽然丑了一点,但是至少不会犯低级问题。我理解不了文字用 12px 是给人类看的吗。。。
生成的代码里,使用了一个未定义的 js 页面变量,导致部分状态下显示正常,部分状态下白屏。定位了半天发现是使用一个未定义的 vue 变量。
为了规避这类问题,我让 AI 自己加上了 Lint 检查工具,并且加到了全局提示器中 .codebuddy/codebuddy.md, 要求每次修改了代码文件之后,必须运行 Lint 工具。
虽然规避了这种低级问题,但是这远远不够。我看好多流行的 skill,要求 TDD 的开发模式,就是必须先写单元测试,然后才去实现。距离这步还太远。但,这是非常合理的。
开发完成后,上线前,领导要求出具一份安全检测报告。我猜测应该包含两部分:
我让 AI 分析了一下,一堆低级的逻辑漏洞。比如,微信服务号静默授权登录流程,这些基础流程,还不如我的祖传代码靠谱。然后还找到了一堆 Ruoyi 框架的漏洞,这些非主流框架真是一言难尽。又浪费了半天时间来搞定漏洞。
先整理到这里吧,我感觉还是需要积累自己的开发规范和实现框架,避免把这些基础问题犯一遍,非常浪费时间。
2026-09-11 21:24:43
要去掉 Magento 网站顶部菜单中的提交询盘页面的入口:
通过 grep contact 关键字,可以找到
./top.phtml:
<?php echo $this->getLayout()->createBlock("cms/block")->setBlockId("contact")->toHtml() ?>
setBlockId(“contact”):指定要加载的静态块标识符(Identifier)为 contact。
需要去 Magento 后台:
<ul>
<li class="level0 nav-2 level-top parent"><a class="level-top" href="{{store direct_url="contact-us"}}"><span>Contact Us</span></a>
<ul class="level0">
<li class="level1 nav-2-1 first"><a href="{{store direct_url="contacts"}}"><span>Contact Sunricher</span></a></li>
<li class="level1 nav-2-1 first"><a href="{{store direct_url="contact-us"}}"><span>Contact Us</span></a></li>
</ul>
</li>
</ul>
保存时,注意要把外层的 ul 去掉,才能生效。。。即:
<li class="level0 nav-2 level-top parent"><a class="level-top" href="{{store direct_url="contact-us"}}"><span>Contact Us</span></a>
<ul class="level0">
<li class="level1 nav-2-1 first"><a href="{{store direct_url="contact-us"}}"><span>Contact Us</span></a></li>
</ul>
</li>
2026-09-10 19:41:16
最近碰到了一个 Magento 1.7 网站的问题,网站右上角不知怎么的出现了 “My Account | My Cart | Checkout | Log In” 这类的功能,去年还没有这些,不知道怎么就开启了这类功能,是代码问题?也许是因为这类功能被开启了,所以产品详情页下方也跟着出现了可以添加产品数量到购物车的功能,这类功能也需要关掉,因为这个网站不做在线购买商品的。

点击 Save Config 保存。
禁用后,请务必清除缓存:进入 System > Cache Management,点击 Flush Magento Cache。

首先要确定目前使用的主题:
登录服务器,找到对应主题的配置文件,例如:
/home/wwwroot/www.sunzhongwei.com/sunzhongweicom/app/design/frontend/default/
打开
vim catalog.xml
注释掉添加购物车的代码
<!--
<block type="catalog/product_view" name="product.info.addtocart" as="addtocart" template="catalog/product/view/addtocart.phtml"/>
-->
然后清除缓存即可:
进入 System > Cache Management,点击右上方 Flush Magento Cache。
如何设置全局 css?
<style>
.add-to-box {
display: none !important;
}
</style>
点击右上角 Save Config,提示保存成功。
进入 System > Cache Management,点击右上方 Flush Magento Cache。
然后就一切正常了。
2026-09-02 21:17:18
今天遇到一个诡异的 s3fs 报错。当修改完 /etc/fstab,添加了一条 Linode Bucket 记录后,再执行
mount -a
报错:
s3fs: BUCKET /path/name -- bucket name contains an illegal character
很奇怪,之前尝试时,s3fs-fuse 将 Linode Object Storage 挂载到 Ubuntu Server 本地文件系统 也遇到过同样问题,那次是 bucket name 写错了。这次确认了几次,名字确实没有写错。
# bucket1
bucket1.sunzhongwei.com /var/bucket1 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://us-east-1.linodeobjects.com/ 0 0
# bucket2
bucket2 /var/bucket2 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://ap-south-1.linodeobjects.com/ 0 0
不知道为何 bucket1 没有问题,只有 bucket2 报错。
bucket2:/ /var/bucket2 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://ap-south-1.linodeobjects.com/ 0 0
在 bucket name 后加上了 :/ 后缀,再次执行:
sudo mount /var/bucket2
就正常了。
bucket:/ 方式:s3fs 可执行文件自身会按冒号 : 分割第一个参数,明确知道冒号前是 Bucket 名,冒号后是子路径(这里 :/ 表示根目录)。这种方式不依赖任何外部脚本,几乎在任何环境下都能工作。
2026-08-31 21:42:30
我只找到了 gtranslate 的 joomla 插件的前端部分代码:
modules/mod_gtranslate/
但是没有找到后台的相关逻辑。于是干脆从数据库里找存储位置:
SELECT * FROM `xxx_modules`
可以找到一个 gtranslate 的配置项,里面的 params 字段存储了相关的配置。
这个字段是个 json 字符串,里面的 languages 存储了多语言列表。例如:
["en","ar","zh-CN","cs","nl","fi","fr","de","it","ko","pl","pt","ro","ru","es","sv","ca","tl","iw","id","sr","sk","uk","vi","et","th","tr","fa","ms","be","hy","az","eu","ur","bn","la","kk","uz","ky"]
https://cdn.gtranslate.net/flags/svg/en-us.svg
以英语为例,可以直接读取上面的 svg logo。