微信小程序的 WXML 目前(2025.07)是不支持 <svg> 标签的,所以没办法直接使用 Lucide 这一类的图标,但小程序提供了 <image> 标签,是支持 SVG 格式的,但!直接用 <image> 引入 SVG 就没办法自定义颜色了。

有解决方案吗?有的,因为 <image> 是支持 base64 格式的,那我们动态创建 SVG 图标即可。

怎么动态创建呢,把图标的 SVG 字符串中的颜色熟悉(stroke)提取出来,将整个 SVG 字符串作为图标模板,然后用字符串的 replace() 替换即可。

本文的代码是 React + Taro,其他框架的思路是一样的,只是写法略有差异。这里需要用到 js-base64 这个库,记得先 npm 安装一下。

以 Lucide 的 book 图标为例,它的 SVG 是这样的:

阅读剩余部分

起因

事情起因是这样的:作为一名垃圾佬,手里有好几家云厂商的(低价)服务器,之前在阿里云广州已经部署了一个 MongoDB 副本集,现在想在腾讯云广州新增一个节点,于是按照 MongoDB 的官方文档执行

rs.add("xxx.xxx.xxx.xxx:27017")

一开始以为只需要在阿里云的防火墙安全组放通腾讯云访问、腾讯云安全组放通阿里云访问,结果折腾半天发现新节点一直处在 STARTUP 状态不会进入 SECONDARY,很纳闷。

后来用 telnet 发现不管是在阿里云还是腾讯云的机器上访问自身公网 IP:27017 也不通的,遂在各自防火墙上放通自己访问自己 27017 端口,新节点一下子就成功加入副本集了。

阅读剩余部分

过去一个月(2025.05.19~06.18)的重心仍然是开发,大部分时间都投入到了 词焙,也尝试了一些新的技术点

开发

开发工作中:

  • 词焙 Chrome 插件:完成了第一个版本,已实现功能:划词翻译,同时接了 AI 来扩充词库数据
  • 词焙单词数据处理:处理了已有词库的单词,补充了单词的变型形式和做了查询索引, 在后端处理单词变型数据上做了大量工作,包括数据变型的初步处理、引入了多线程优化数据处理效率,并对数据结构进行了变更和修正,也处理了单词变型数据的索引。
  • 词焙登录方式调整:考虑到后续 Chrome 插件等等客户端,只有单一的小程序登录是肯定不满足的,于是趁用户量还不大赶紧调整了登录方式
  • 调研了 Feistel 算法,调整了 passportaccess_token 生成算法

其他

最近广州电信连 Cloudflare Tunnel 有点不太稳,于是用了 Tailscale 组网,将 Cloudflare Tunnel 移到香港机和新加坡机,然后通过 Tailscale 子网反代到家里的机器,现在访问我博客的链路大概是 浏览器 -> CF -> 腾讯云香港/新加坡 -> 广州 🤣

不知不觉又到了月报时间,过去一个月(2025.04.19~05.18)主要还是围绕着 词焙 进行了一些开发工作,同时也抽空学习了一些新知识。

开发

这个月在 “词焙” 上有以下进展:

  • 修复了一些前端 bug
  • 新增了「近似发音」数据

学习

除了开发之外,这个月也保持了持续学习的状态:

  • 突发奇想 AI prompt 能不能有类似 GraphQL 的玩法,于是研究了 GraphQL 的概念和用法
  • 研究了一些查找算法,用于查单词接口

不知不觉又一个月过去了,这个月比上个月还要忙,原定今天要上线一个小程序的,但是工作效果不如预期,只能再继续打磨打磨了。

开发

这个月 90% 的工作时间都在做开发,重写了一个将近十年前的老项目的后端接口,技术栈是 Go + MongoDB,第一次这么认真去学习一个新的数据库,目前体验下来感觉还不错,bson 的一些操作比 SQL 还要爽(可能是因为以前我怕慢查询而比较少用 SQL 的复杂查询,然后现在用 MongoDB 就有点初生牛犊不怕虎的感觉,什么都敢用)。

告别微信支付开发四年之后重新接触微信开发的东西,才发现原来微信支付接口已经改了这么多,也是第一次用 Go 来写微信支付的东西,总得来说还算顺利。

这个月还顺手修了一些 tipsy 的 bug

备案

除了开发,这个月做得比较多的是跟备案打交道:

  • 第一次给小程序备案,也是第一次用企业主体、非法人、负责人身份去做备案
  • 给小程序 API 用的域名备案,现在可以不用在 www 域专门挂个网页放备案号了
  • 给一个旧域名注销备案,全过程应该是自动化的,挺快就注销好了

其他

这个月去了趟香港,办了几张卡,全程手机 app 操作,网上的攻略也多,还算比较丝滑;

这个月本来有两篇文章想写的,但是实在太忙了就还没写,下个月一定补上