大象笔记

知者行之始,行者知之成

MySQL & golang gorm 按月份自动分表存储物联网设备日志

遇到一个存储大量在线设备日志的需求。设备日志通过 MQTT 上传,服务端使用 golang 订阅 MQTT 主题来获取日志,然后存储到 MySQL。之前,为了偷懒,使用了 InfluxDB 2 来存储这里时序数据,但是,经历了一个项目之后,我觉得还是 MySQL 好用。毕竟 influxdb 2.0 的查询语法很不习惯,而且我没有运维经验,这玩意要花时间去了解如何运维,这些时间花费的非常不值。能用最顺手的技术实现,而且稳定可靠,那么就不要折腾。 按照我的估算,按月存储日志,可以把每个表都日志量控制在 1000 万条以内,那么就不需要按天或按周存储了。 今天能把这个功能搞定,就很不错了。也算是设 ...

阅读全文...

添加 Windows 右键菜单,点击执行一段 Python 脚本

之前用 C# 实现了一个右键菜单上传本地文件到七牛云的本地工具,参见 《做程序员呢,开心最重要,用 .Net 8 开发了一个自用的 Windows 文件上传七牛云小工具》。原理就是第一次运行时,修改 Windows 注册表,添加一个右键菜单。 但是后来对 C# 的 ASP.NET AOT 很不满意,感觉就是个玩具。就又切换回 golang 了。用 golang 开发 windows 工具其实比用 C# 方便很多。这不连 C# 之父优化 TS 7.0 也选择了 golang。 回归正题,既然工具链又回到了 golang / python。那么怎么方便地修改 Windows 注册表添加右键菜单呢 ...

阅读全文...

ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages

使用清华的 python 源 pip install 失败,报错: ERROR: HTTP error 403 while getting https://pypi.tuna.tsinghua.edu.cn/packages 据说是因为清华源不是 https 的,而 python 禁用了 http 的访问。 更换为阿里云的 python 源 pip config set global.index-url http://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com ...

阅读全文...

ubuntu server 下使用 /etc/fstab 挂载的 s3 存储目录,如何卸载掉

之前通过 s3fs-fuse 将 Linode Object Storage 挂载到 Ubuntu Server 本地文件系统,但是现在想将其中一个 Linode Bucket 去掉。记录一下如何操作: 直接复制了 DeepSeek 的回答,感觉比我自己整理的清晰多了 🥲 在 Ubuntu Server 下卸载通过 /etc/fstab 挂载的 S3 存储目录,需按以下步骤操作: 步骤 1:卸载挂载点 首先使用 umount 命令卸载目录: sudo umount /path/to/mount_point # 替换为实际挂载路径(如 /mnt/s3) 常见问题处理: 设备忙(Devi ...

阅读全文...

Claude 3.7 生成 APP/网站 UI 设计稿的提示词

在浏览小红书时 (@大象卷大葱),发现了一个不错的 AI 提示词模板,用于生成 APP/网站 UI 设计稿。非常实用,可以直接在 VSCode Github Copilot 插件的 Edits 中一键生成设计稿的 HTML 网页代码。 例如,我想开发一个颜色搭配的 App。 生成的设计稿效果 先看效果,就是网页啦: 提示词 我想开发一个颜色搭配的 App,现在需要输出高保真的原型图,请通过以下方式帮我完成所有界面的原型设计,并确保这些原型界面可以直接用于开发: 1、用户体验分析:先分析这个 App 的主要功能和用户需求,确定核心交互逻辑。 2、产品界面规划:作为产品经理,定义关键界面,确保 ...

阅读全文...

清理线上系统的测试数据,使用 truncate 还是 delete

有个开发了一个多月的大赛报名系统终于要上线了。上线前有一项重要的任务就是清理 MySQL 数据库中的测试数据。 简单粗暴的所有表都 truncate 一遍是不行的。因为还有一些是配置项表,和数据字典表,清空了就白忙活了。所以,需要记录哪些表是可以清理的,哪些是不行。 😅 使用 truncate 还是 delete 清理前,还有一个重要的概念。就是究竟是用 truncate 还是 delete 来清理数据表。 印象中,好多年前遇到过这个问题,还被 truncate 坑过一次。因为如果部分表用 truncate,而关联表不用的话,会导致数据错乱。原因是 truncate 会导致主键自增 ID 重置 ...

阅读全文...

微信小程序数字和字母的等宽字体

之前用微信小程序实现了一个汇率计算的功能,参见: 微信汇率计算器小程序,炒美股港股收益换算人民币小工具 但是这里有个界面的体验问题,就是数字的默认字体是非等宽字体,看起来非常别扭。 右侧的数字在垂直方向,没有对齐,看起来让人浑身难受。 查了一下微信小程序是支持设置字体的,所以,将右侧数字改成等宽字体即可。 font-family: "Courier New", Consolas, Menlo, "Roboto Mono", "Droid Sans Mono", monospace; 跨平台兼容性 一开始是从网上找了一段代码,但是实际 ...

阅读全文...

微信汇率计算器小程序,炒美股港股收益换算人民币小工具

最近有三个大象计算器小程序的热心用户,不约而同地反馈需要一个汇率换算的计算功能。但是使用场景各有不同: 有的是炒美股,例如 50 美金买了 100 股苹果的股票,80 美金💲卖出去,想知道赚了多少人民币。 有的是金融从业人员想关注国际主要货币的汇率 🤔 说干就干,在 Claude 3.7 的加持下,一部电影的时间完成了这个汇率计算微信小程序的开发。界面如下: 点击左侧的货币名称,可以切换为对应的货币为基准,查看对应的其他货币的金额。例如,由美元切换为人民币。 同时也可以点击右侧的金额,修改金额,已实现自定义金额的换算。 体验方式 长按识别,或者扫描下方小程序码,进入 微信中搜索大 ...

阅读全文...

股票做 T 补仓计算器小程序,大象又发布新功能啦

本周有位大象计算器的热心用户加我,让我增加一个炒股用的做 T 补仓计算器。其实这不是第一个用户让我加补仓计算功能了,由于我之前一直比较忙「懒」,就一直拖着😮‍💨。一开始非常非常疑惑,为什么会有这么个奇怪的需求,因为成本计算功能不是内置在所有的券商 app 里了么?这位老板解释了一下我才明白 原来还有这样的需求😲。即比如今天10元买了1000股,第二天跌倒8元买了500股,第三天跌倒6.5元,补仓1000股,现在持仓均价是多少啊?需要能计算出来。而用券商里的功能,那得买进去后才知道是多少,用户想提前确定下,然后决定买多少股,对于目前的走势会不会拉下来好解套。 关键这位老板还包了个红包🧧给我🤪,我 ...

阅读全文...

手机租金计算器小程序,输入价格自动计算首付金额及每月还款额

晚上有位手机租赁行业老板找我开发一款租金计算的微信小程序。大体功能就是,输入手机价格,根据设定好的参数,自动计算出首付金额,及每个月的租金金额,还有对应的还款日期。界面如下: 还能计算出每天的日租金,非常直观 👍 因为跟之前开发过的两款小程序非常相似: 📱 微信小程序版手机租赁月租计算器 🚗 微信小程序版车辆租赁月租金计算器 所以很快完成,周六提交审核,没想到周末小程序就已经审核通过,并发布了。 后面还有两件事情需要做: 小程序备案。这个就是走个流程,就是个人备案,走个流程,大概一个周就能过。按照提示来就行。 微信认证。这个是个人认证,30 块钱一年,按照提示来就行。 只有备案通过和 ...

阅读全文...

设置 MySQL binlog 保存天数,节省服务器硬盘空间

周五总是充满了意外,先是一个还没经过完全测试的大赛系统被甲方抢先上线,吓个半死; 然后发现一台服务器的上磁盘空间满了。。。😱 为了快速清理磁盘空间,顺序清理了: Nginx 日志 Web 框架日志 系统日志 但是也只能勉强清理出来不到 5G。 然后 使用 ncdu 命令分析 linux 磁盘空间占用 意外的发现 MySQL 目录下的 binlog 占用了近 100G。 之前一天大概 1~2G 的日志,但是这个周飙到了每天 7~8G 。。。 紧急清理 可以通过 MySQL console 中,使用 SQL 清理某个编号之前的 binlog 日志文件: 例如,清理 100 编号前的 binlo ...

阅读全文...

签名黑名单,阿里云通知短信发送失败

昨天使用了阿里云的短信服务,但测试通知短信发送失败,提示 “签名黑名单,运营商根据签名投诉情况进行拦截, 建议使用其他签名进行发送”。 而我的短信签名是通过了阿里云的短信签名审核的,使用的也是公司名称中的文字。 所以提交了工单,找客服帮忙反馈运营商通道侧报备。 阿里云客服反馈很快,几分钟后给了回复,跟我要了测试失败的手机号,然后就等处理结果了。 下面是工单的回复内容: 您好,经核实是因部分运营商网关签名未实名报备导致的短信发送失败。目前各级运营商将加强端口类短信业务经营行为和安全管理规范的执行,并对部分短信进行拦截。需要针对签名进行实名报备,我们已协助您推进报备工作,当前平均需3~5个工 ...

阅读全文...