2025-03-09 09:22:20
之前用微信小程序实现了一个汇率计算的功能,参见:
但是这里有个界面的体验问题,就是数字的默认字体是非等宽字体,看起来非常别扭。 右侧的数字在垂直方向,没有对齐,看起来让人浑身难受。
查了一下微信小程序是支持设置字体的,所以,将右侧数字改成等宽字体即可。
font-family: "Courier New", Consolas, Menlo, "Roboto Mono", "Droid Sans Mono", monospace;
一开始是从网上找了一段代码,但是实际测试在 Android 上还是显示为非等宽,不得以还是让 DeepSeek 来吧。 果然,上面的代码更靠谱一点。至少在 Windows 模拟器和 Android 上是没有问题的。
不同平台的默认等宽字体如下:
输入 11111 这个数字来测试。
题外话,最近用 claude 3.7 写了几个前端界面,甚至可以说是设计稿加界面,例如一个打砖块的游戏和一个工控机的操作界面,还有一个仿 Twitter 的消息界面,非常惊艳。我宣布,claude 3.7 吊打我见过的所有前端开发,无一例外🤦♂️ 无论是审美,还是功能细节,claude 都遥遥领先(^з^)-☆
2025-03-07 17:01:18
最近有三个大象计算器小程序的热心用户,不约而同地反馈需要一个汇率换算的计算功能。但是使用场景各有不同:
说干就干,在 Claude 3.7 的加持下,一部电影的时间完成了这个汇率计算微信小程序的开发。界面如下:
点击左侧的货币名称,可以切换为对应的货币为基准,查看对应的其他货币的金额。例如,由美元切换为人民币。
同时也可以点击右侧的金额,修改金额,已实现自定义金额的换算。
汇率的英文是"exchange rate"。它是指两种不同货币之间的兑换价格。例如,一美元换算为人民币,大概是 7.24 元人民币。
基于美元对人民币的汇率,及美元对日元的汇率,来计算人民币对日元的汇率,这样计算是否合理?
这是我遇到的一个问题。因为我是通过三方接口来拉取实时汇率的。但是我只想拉取一次,为了减少拉取损耗配额。但是我不确定相互间的换算是否合理?于是请假了一下 DeepSeek,我感觉 ds 的回答有理有据,而且有分析过程,几句话就说明白了。
大意是,若市场实际汇率与交叉汇率不一致,将引发套利行为,推动汇率回归理论值。因此,在有效市场中,套算汇率与实际汇率趋于一致。那么我就可以放心地交差换算了。而数据端,我只需要在我的 💻 阿里云服务器上,缓存一条汇率记录即可。
有了 claude 3.7,加上 GitHub copilot 我感觉自己强的可怕 😎😎😎。只需要把汇率计算器的需求描述清楚,然后把界面和交互大概说一下,基本就能自动把代码写出来了。
提示词应该保存下来的,方便其他平台生成代码时使用。其实,提示词应该来自前期的需求分析,及设计文档。理论上也是可以通过 DeepSeek 来生成的。没有保存,太可惜啦 😅
本来想顺便实现一下网页版,想想算了,没有必要,网页版竞争太激烈,完全轮不到我,几乎来不了啥流量。
2025-03-03 11:17:38
本周有位大象计算器的热心用户加我,让我增加一个炒股用的做 T 补仓计算器。其实这不是第一个用户让我加补仓计算功能了,由于我之前一直比较忙「懒」,就一直拖着😮💨。一开始非常非常疑惑,为什么会有这么个奇怪的需求,因为成本计算功能不是内置在所有的券商 app 里了么?这位老板解释了一下我才明白
原来还有这样的需求😲。即比如今天10元买了1000股,第二天跌倒8元买了500股,第三天跌倒6.5元,补仓1000股,现在持仓均价是多少啊?需要能计算出来。而用券商里的功能,那得买进去后才知道是多少,用户想提前确定下,然后决定买多少股,对于目前的走势会不会拉下来好解套。
关键这位老板还包了个红包🧧给我🤪,我就不好意思再拖延下去了。周六晚上洗脚的时间,用了半个小时就开发完成了。随即提交微信审核,周日早上就通过审核,发布更新了小程序。(没想的微信审核人员周末也在加班🥲)
功能感觉还比较简陋,但是先上线一版看看用户的反馈比较重要。
长按或者扫描下方微信小程序码,即可体验
或者微信搜索大象计算器,然后进入后,在首页界面中找到补仓计算器,即可使用
让 ai 写界面,还是需要一点的交流能力的。不能直接潦草的说明实现个什么功能。要么给个设计稿,要么写个大概的界面架子,让 ai 可以参考,否则生成出来的界面完全跟预想的不一样。至少目前的 GitHub copilot 还不能完全依赖 ai 来实现整体功能的实现。我的实践做法是,先基于原有的界面组件把界面写好,本来也不复杂,然后让 AI 生成对应的变量,及计算逻辑。比如这个小程序,就可以把补仓相关的输入框先复制黏贴到 wxml 界面代码文件中,然后使用 github copilot 的 inline edit 功能,提示加入每个输入框对应的变量名。用 AI 起变量名可省事多了,都省去了查英文字典的时间。后面的计算也是,基本也不需要说明,AI 按照变量名其实就能自动猜出来对应的计算逻辑,没有任何 bug。
2025-03-03 11:13:02
晚上有位手机租赁行业老板找我开发一款租金计算的微信小程序。大体功能就是,输入手机价格,根据设定好的参数,自动计算出首付金额,及每个月的租金金额,还有对应的还款日期。界面如下:
还能计算出每天的日租金,非常直观 👍
因为跟之前开发过的两款小程序非常相似:
所以很快完成,周六提交审核,没想到周末小程序就已经审核通过,并发布了。
后面还有两件事情需要做:
只有备案通过和个人认证之后,其他人才能通过搜索找到这个小程序。所以这两个步骤不能省略哦😉
新的尝试,这两张轮播图让我煞费苦心。毕竟不是专美工,但是我找到一套不错的作图流程:
2025-03-01 17:07:33
周五总是充满了意外,先是一个还没经过完全测试的大赛系统被甲方抢先上线,吓个半死; 然后发现一台服务器的上磁盘空间满了。。。😱
为了快速清理磁盘空间,顺序清理了:
但是也只能勉强清理出来不到 5G。
然后 使用 ncdu 命令分析 linux 磁盘空间占用 意外的发现 MySQL 目录下的 binlog 占用了近 100G。
之前一天大概 1~2G 的日志,但是这个周飙到了每天 7~8G 。。。
可以通过 MySQL console 中,使用 SQL 清理某个编号之前的 binlog 日志文件:
例如,清理 100 编号前的 binlog (从 mysql 目录下的文件列表能看到都是顺序编号的)
PURGE BINARY LOGS TO 'binlog.000100';
例如: MySQL 8.0+ 支持秒级精度(示例:设置保留 3 天)因为存储的并不是什么金融级数据,所以保存 3 天日志应该是足够的。
SET GLOBAL binlog_expire_logs_seconds = 3*24*3600;
补充:
在 MySQL 8 上测试发现,已经不能使用 expire_logs_days 了,只能使用上面的 binlog_expire_logs_seconds
SET GLOBAL expire_logs_days = 3;
MySQL 返回: 文档
#3683 - The option expire_logs_days and binlog_expire_logs_seconds cannot be used together. Please use binlog_expire_logs_seconds to set the expire time (expire_logs_days is deprecated)
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
Variable_name Value
binlog_expire_logs_seconds 259200
但是上面的设置,会在 MySQL 重启后失效。如果要永久保存,就需要设置 mysql 的配置文件。
而我的 MySQL 是安装在 docker 中,理论上是可以通过 docker compose 配置的环境变量来搞定,这个等找个访问量上的晚上设置一下吧。
奇妙的运维知识又增加了 😅
最后,还是得加一下磁盘空间监控,定时发送磁盘剩余空间比较稳妥。
2025-02-27 11:06:17
昨天使用了阿里云的短信服务,但测试通知短信发送失败,提示
“签名黑名单,运营商根据签名投诉情况进行拦截, 建议使用其他签名进行发送”。
而我的短信签名是通过了阿里云的短信签名审核的,使用的也是公司名称中的文字。
所以提交了工单,找客服帮忙反馈运营商通道侧报备。
阿里云客服反馈很快,几分钟后给了回复,跟我要了测试失败的手机号,然后就等处理结果了。
下面是工单的回复内容:
您好,经核实是因部分运营商网关签名未实名报备导致的短信发送失败。目前各级运营商将加强端口类短信业务经营行为和安全管理规范的执行,并对部分短信进行拦截。需要针对签名进行实名报备,我们已协助您推进报备工作,当前平均需3~5个工作日才能逐步完成;不同运营商报备时效略有不同,移动报备时间稍慢,大约需要5-7个工作日。辛苦后续在观察下
遇到类似发送失败问题,可以参考一下如何提交工单。
只有自定义模板有问题,而阿里云内置的验证码模板等没有任何问题,使用相同的手机号测试也没有问题。
说明运营商实际在发送短信之前,判断了短信内容。
阿里云的反馈是:
您好
1、运营商侧不会同步报备结果 ,请您过几天观察下短信发送情况。如届时出现新的失败,可提供新的失败记录联系我们,我们再反馈给运营商侧进行相应的补充报备。
2、建议您近期一段时间,都用三网号码多次发送这样可以有效帮助激活对应运营商通道的子端口,以达到实名制报备的目的。
3、确实无法给到您准确的时间点,非常抱歉;
4、建议对失败号码进行多次发送,因为目前只是部分运营商网关未报备导致,只是发送失败率会比较高,并不是完全无法发送。
在经过了 6 个工作日之后,移动号码也能收到注册验证码短信了。