大象笔记

知者行之始,行者知之成

gobackup 自动将 MySQL 数据库备份到七牛云私有空间之二,线上部署

继续前文 使用 gobackup 自动将 MySQL 数据库备份到七牛云私有空间,在本地测试了 gobackup 的基本功能之后,今天在几台线上服务器,包括阿里云和腾讯云的各种服务器,依次部署了 gobackup 备份服务。这里记录一下一些踩坑的地方。 消息通知设置 用 163 邮箱设置了邮件通知,测试失败日志如下: 2025/10/27 09:32:58 [Notifier] Running 1 Notifiers 2025/10/27 09:33:18 [Notifier] EOF 从 github issue 看,似乎是不支持 TLS: When send mail via port ...

阅读全文...

使用 gobackup 自动将 MySQL 数据库备份到七牛云私有空间

现在后台开发和运维都是我一个人,所以服务器上的 MySQL 数据库备份也只能自己来做了。 由于服务分散在多台服务器上,并且有几十个数据库需要备份,手动备份实在是太麻烦了。 需要一套自动化的备份流程。定时将数据库导出,并存储到云存储空间中,例如七牛云存储或者阿里云 OSS 上。 备份方案的选择 我昨天纠结了半天,到底用什么方案或者工具来做数据库的自动备份: 手写 shell 脚本。这个很麻烦,因为数据库太多,不同服务对应的云存储还不一样。逻辑复杂,不适合用 shell 脚本来写。 Python 脚本。本来是都开始动手要写了,但是登录了一台服务器,发现居然是 Ubuntu 18.04 系统,Py ...

阅读全文...

尝试 Playwright 进行网站自动化测试

为何要对网站进行自动化测试? 最近在开发公司内部使用的人事系统,发现手动测试非常麻烦。每次改动代码后,都需要手动打开浏览器,点击各种按钮,填写各种表单,确认功能是否正常。这个过程既耗时,又容易出错。 同时,我自己的网站也有类似的需求。写了一堆功能,每次上线都心惊胆战,生怕修改了一处代码,导致其他功能出错。而自动化测试可以大大降低这种焦虑感。尤其,现在好多功能都是用 AI 来实现的,我经常性的不看 AI 的具体实现代码,而是看它的输出结果是否符合预期。这种情况下,自动化测试就显得尤为重要。 我看现在好多人推荐使用 Playwright,而且是微软出品的,感觉应该还不错。于是决定尝试一下。 Pyt ...

阅读全文...

vscode copilot 国内满血复活 Claude 的配置方法

大概是上个月,我发现国内已经不能在 vscode GitHub copilot 中使用 claude 相关的模型了。对我来说,不太影响日常的搬砖性的 crud 开发任务。但是今天,遇到了出设计稿的任务,想让 ai 出一版平板 app 的设计稿。之前用 claude 给出的效果非常赞。参考前文 Claude 3.7 生成 APP/网站 UI 设计稿的提示词。 没有 claude 的情况下,我用 gpt 5 codex 和 gemini 2.5 pro 分别除了一版设计稿,效果惨不忍睹。而且让 gemini 微调,也是一直嗯嗯嗯,就是不改。无法忍受🤣 不得不请回 claude了。 网上查了一下,方 ...

阅读全文...

tailwindcss V4 警告处理, cdn.tailwindcss.com should not be used in production

用 AI 生成的网页代码,如果使用了 tailwindcss V4 的 CDN 版本,会看到浏览器控制台报了一段警告信息: cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation 奈何 AI 用 tailwindcss 生成的页面就是比用 bootstrap 的好看,不得不解决一 ...

阅读全文...

golang gin 生成网站地图文件 sitemap.xml

周末继续 Golang Gin 重构 PHP 的 Magento 电商网站。其中一个需要重构的功能是网站地图 sitemap.xml 文件的生成。 之前做的网站普遍简单,很少超过上万个产品或者文章。而电商类的服务,例如 magento 通常需要导入几十万甚至上百万的产品信息。那么就需要注意一下 sitemap.xml 的配置规范。 golang 三方库 https://github.com/sabloger/sitemap-generator 虽然 Star 数只有 40 个,但是看起来文档还挺详情,准备测试一下。 > go get github.com/sabloger/sitemap ...

阅读全文...

国庆假期处理的第二例网站服务器被刷流量,导致 Linode Server 宕机

国庆第一天,刚处理了国内的阿里云个人博客服务器被刷爆带宽。 而国庆第五天,一大早就收到海外的一个网站服务器(Linode Server)的宕机通知邮件。 早上一起床就赶紧登上了服务器,发现是网站服务器被刷流量,直接导致服务器负载过高,网站无法访问。 攻击流量特征 几乎全部的垃圾流量都是在刷一个站的博客列表页面,路径如下: /latest-blog?mdrv=<xxx.com>&start=<random_number> /latest-blog?=1&pagespeed=%27%3Fpagespeed%3D%27&start=2750 正常的 ...

阅读全文...

随机生成家庭住址及工作单位,职务等个人资料的在线工具

开发完了公司内网的人事管理系统,开始动手测试,发现里面的测试数据惨不忍睹,全是 111,222 这样的名字,员工资料里全是数字,显得系统异常粗糙😵‍💫。明天就要给人事部门演示了,这样可不行。于是我就用之前开发的 随机生成身份证号,手机号,邮箱地址的微信小程序 生成了一堆测试数据,界面里面看起来像个正式一点的人事系统了。但是,还有一部分数据没法自动生成,例如,家庭住址/户籍地址,工作单位,职务这些信息。 于是,我想干脆借此机会把这个工具再完善一下,就加上了更多的个人资料字段随机生成,效果如下: 本来想加上一些工资卡开户银行的信息想想算了,怕引起敏感词问题。同时增加了网页版本,方便在不方便登录微 ...

阅读全文...

git blame 确认代码中的屎是不是自己拉的

今天在排查一处程序 bug 时,发现一段代码写的逻辑实在乱,完全没有印象正确的逻辑应该是怎样的。 于是想查看这段代码是不是自己写的,什么时候写的,为什么这么写的。 直接在 VSCode 的 github copilot 的 Chat 窗口中问了一下: 如何通过 git 命令查看某段代码是那个提交修改的:例如: line1 line2 line3 得到的回答是,可以试试 git blame 命令。试了一下,非常好用。 git blame 示例 例如, 我想查看 models/product.go 文件中第 10 到 13 行的修改记录,可以运行: git blame -L 10,13 mode ...

阅读全文...

Magento 服务器磁盘空间被图片缓存占满

最近批量导入了一批 Magento 产品信息,不知道为何直接导致服务器磁盘空间被占满。 而导入的产品也不多,不到1万个,理论上不应该占用上 G 的空间啊。 使用 ncdu 工具排查 使用之前的磁盘空间分析工具 ncdu。使用方式参考: 使用 ncdu 命令分析 linux 磁盘空间占用 发现,最占磁盘空间是 Magento 的项目目录。占了 76 G。 然后,在结果里面逐级进入子目录,发现最占空间的 Magento 子目录是: pub/media/catalog/product/cache 占了 56 个G。这个目录里全部是产品图片的缓存,即各种尺寸的缩略图。 不得不说,ncdu 真是运维神 ...

阅读全文...

工作周报自动生成,基于 Git 历史的 AI 提示词

每个周写周报是最浪费生命的事情之一,之前就吐槽过一次。本来是部门范围内提交就可以了,现在变成了公司所有人都需要提交,还要抄送人事部门,保证人事部门的 HR 也能看懂 🥲 这就很头疼,比如花费了一天时间完成了复杂的文件资料管理功能,但是提现在周报里就是一句话“实现了文件资料管理接口”。看起来没啥工作量的感觉 😅 比起写周报,还是写代码简单快乐一点。 今天周一,傍晚临下班提交 git commit 时,准备顺便把提交内容复制一份到周报文件里,这样就能省去周五下午花时间再整理。突然想到,为何不能让 ai 根据 git 提交历史信息自动生成周报呢🤔 great idea!于是动手试验了一下,效果非常满 ...

阅读全文...

Magento 的批量导入机制,及数据库表 importexport_importdata

找了半天 Magento 无法批量导入的问题,最后发现是 crontab 里设置了一个定时任务,每半小时 restart php fpm 的 docker 容器。导致 Magento 的批量任务没有执行完,就被 restart 中断了。如此反复,导致没有一个批量任务导入成功的。 我在 Magento 日志中,没有找到任何的相关日志,完全靠翻看数据库表结构,盲猜 magento 的导入机制,才解决这个问题的。 记录一下排查中学到的 Magento 无用知识: 数据库表 有个数据表,名为 importexport_importdata,记录了需要导入的产品信息。 实际数据来源就是,后台上传的 c ...

阅读全文...