大象笔记

知者行之始,行者知之成

Golang time.Parse 时区问题引起的时间比对 bug

使用 golang 开发的大赛报名截止时间功能,发现一个奇怪的 bug,就是截止时间判断不准确。 现象是,截止时间设置的是今天上午十点,但是判断函数只有在下午 18 点时才生效。 我第一反应是大概就是时区问题。 未指定时区前 now := time.Now() registerStartTime, err := time.Parse("2006-01-02 15:04:05", registerStart) registerEndTime, err := time.Parse("2006-01-02 15:04:05", registerEnd) fm ...

阅读全文...

[Magento 2 定制化开发] 之十四:Magento 产品详情页面 Details 和 More Information 标题文字修改

想修改 Magento 产品详情页面 Details 和 More Information 标题文字。 首先需要确认是修改哪个文件: 包含 More Information 的文件 > cd /some_path/magento2/vendor/magento > grep "More Information" -r . ./module-page-builder/view/frontend/page_layout/product-full-width.xml: <argument name="title" translate=&qu ...

阅读全文...

通过 MySQL SQL 批量修改 Magento 产品详情

背景 Magento 批量导入的产品详情中,图片的 alt 属性有问题,导致在前端显示不正常。需要通过 SQL 批量修改。 产品详情在哪个表 Magento 2.4.6 版本,产品详情在 catalog_product_entity_text 表中,字段 value 中存储了产品详情的 HTML 内容。 这里很有意思,magento 的产品 SKU,name,price,detail 存储在不同的表中,例如: 产品 SKU 存储在 catalog_product_entity 表中 产品名称存储在 catalog_product_entity_varchar 表中 产品价格存储在 catal ...

阅读全文...

Python 获取不同时区的当前时间

需求背景 需要给处于不同时区的用户,显示不同的当前时间。 如果直接使用 datetime.now() 返回的只是服务器的时间,无法满足不同时区用户的需求。 解决方法 ZoneInfo 参考: https://docs.python.org/3/library/zoneinfo.html 从官方文档可看到,python 3.9 开始内置了这个库。用法: Python 3.12.3 (main, Feb 4 2025, 14:48:35) [GCC 13.3.0] on linux Type "help", "copyright", "credi ...

阅读全文...

Magento 自定义模块实现批量导入产品信息 (一)

背景 通过 Magento Admin 后台手动批量导入 CSV 太慢(在产品比较多的情况下)。需要等待很长时间。 如果能够通过程序,自动化导入批量的 CSV 文件,那就能大大提升效率,减少繁琐的手动操作及等待时间。 而 Magento 又不支持导入的 RESTful API,也不支持命令行,所以只能使用其他的方案。 Magento 定制化模块 网上找到一个方案,看起来是比较靠谱的: https://magento.stackexchange.com/questions/359280/import-product-data-programmatically-using-csv 里面推荐使用定制 ...

阅读全文...

高新技术企业资格测评微信小程序

五一小长假节前给一个客户开发了一套高新技术企业测评小程序。主要功能是方便想申报高新企业的客户了解申报过程中的一些细则,以及通过内置的自评工具,及调查问卷功能,方便辅导机构有针对性地进行指导。以下是一些主要功能界面的截图: 首页界面 常见功能 FAQ 界面 可以查看并检索关于高新技术企业在申报过程中的疑问。里面的资料也都是从政府官方资料中摘取的,非常具有权威性。 专家咨询功能 包括在线微信聊天咨询,及电话等联系方式,以及微信地图导航功能。 研发费用占比计算器功能 研发费用占比=企业近三个会计年度的研发费用总额/企业近三个会计年度的销售收入总额×100%。对于不同销售收入等级的企业,其研发 ...

阅读全文...

对话机器人 Rasa(三十九):使用 Python 编写自动化测试脚本

之前使用 Bash Shell 脚本来实现的 Rasa 长对话流程的测试(多轮对话,因为很多 bug 只有在多轮对话的特定流程之后才会复现)。 但是,Shell 变量太难搞了,特别是单引号及双引号混用的情况。 例如,下面这段脚本: #!/bin/bash set -e # or use "set -o errexit" to quit on error. set -x # or use "set -o xtrace" to print the statement before you execute it. # 定义一个变量,值为 test_us ...

阅读全文...

查看 Magento 批量导入的错误日志

发现 Magento 批量导入 CSV 之后,网站上显示的产品总量跟 CSV 里的行数对不上。 需要查看哪里报错了。 可以登录服务器,在 Magento 项目目录下,查看 ls var/import_history 会发现,除了上传的 CSV 文件之外,还有一些以 error 后缀的文件,例如: <时间戳>_filename.csv <时间戳>_filename_error_report.csv 下载 xxx_error_report.csv 之后,用 WPS 打开,会看到最后一列是 error 信息。按提示修正即可。 参考 https://magento.sta ...

阅读全文...

VSCode VIM 插件技巧:使用 Windows 剪切板

需求背景 需要大量搜索某些字符串时(例如,rasa 项目搜索各种 utter_xxx),使用 VIM 模式复制,然后黏贴到 VSCode 的搜索功能,非常麻烦。 还不如鼠标框选 ctrl + c 来的方便。 好在今天在看一篇关于 VSCode VIM 插件使用经验的文章里看到有个配置,可以将 VIM 模式下复制的内容直接存储到 Windows 系统剪切板。 设置方法一 打开 VSCode 设置,搜索 vim clipboard: 勾选 “Use system clipboard for unnamed register” 设置方法二 setting 文件的配置方法 顶部搜索条里,搜素 set ...

阅读全文...

阿里云短信服务运营商报备结果,等了7个工作日终于报备成功

之前在折腾短信验证码收不到的问题(参考 🔗 移动短信验证码又收不到了,需要到阿里云短信服务后台进行运营商报备),苦苦等了 11 天,即 7 个工作日,终于有了结果。但是这个结果说明,一言难尽,看起来也不保证所有运营商都能成功。 因部分运营商不返回报备结果,若报备结果成功但仍有因实名制报备问题导致的短信发送失败,建议您检查签名来源和签名名称是否完全满足“企事业单位名”、“已注册商标”和“已上线APP”的要求。若签名核验无误,可以少量多次尝试使用该签名发送,观察短信发送效果后再开始批量发送。 因为,之前电信和联通基本没啥问题,成功率能达到 99% 以上。有问题的是移动,成功率连 50% 都不 ...

阅读全文...

golang gin 的管理后台多角色路由权限控制

使用 golang gin 实现一个前后端分离的后台管理系统,管理员分为: 普通管理员 超级管理员 超级管理员可以访问一些普通管理员没有权限访问的接口,同时即便同一个接口两种管理员都能访问,但是可以操作的资源不同。如何设计路由及中间件可以实现清晰简洁的权限管理呢? 例如,超级管理员是我的账号,而客户也能登录这个后台,即客户是普通管理员。我作为超级管理员可以看到后台所有的设备,而客户作为普通管理员只能看到自己所属的设备,且只能对自己的设备进行远程锁机,而不能对其他客户的设备进行操作。 我实在是懒得自己想了,就问了一下 DeepSeek。DeepSeek AI 给出的方案,确实比我目前用的单一 ...

阅读全文...

Node 18 报错:Error: error:0308010C:digital envelope routines::unsupported

在新的 WSL Ubuntu 环境下安装 Ant Design Pro 的开发环境(参考:安装搭建 Ant Design Pro V5 开发环境),报错: node:internal/crypto/hash:69 this[kHandle] = new _Hash(algorithm, xofLen); Error: error:0308010C:digital envelope routines::unsupported Node 版本 Node.js v18.19.1 解决方法 在执行 tyarn start:dev 之前,先设置环境变量: export NODE_OPTIONS=-- ...

阅读全文...