大象笔记

知者行之始,行者知之成

golang gin & ant design pro 前后端分离的登录实现

管理员用户表 admin_user id username password last_login_at 创建第一个管理员 方案: 命令行工具 (golang 需要编译,提供一个命令行工具麻烦) 网页接口 (不安全) 自动内置一个管理员,服务启动时(或者打开登录页时)判断如果没有管理员,就自动创建一个。登录后修改密码。 综合来看,第三种方案更合适。 管理后台 TODO 清单 done: 登录接口 done: 新增默认管理员 done: 生成 token done: golang gin token 校验 middleware done: currentUser 接口,获取用户信息 d ...

阅读全文...

ant design pro V5 使用 umi request 拦截器为请求 header 加上 jwt token

想使用 umi request 的拦截器为请求统一加上 jwt token,但是参考 ant design pro V5 的文档,始终不生效。 无效的配置 如果参考官方的文档 https://beta-pro.ant.design/docs/request-cn, 修改 src/app.tsx import type { RequestConfig, RunTimeLayoutConfig } from 'umi'; export const request: RequestConfig = { errorHandler, // 新增自动添加AccessToken的请求前拦截器 ...

阅读全文...

Golang Gin jwt 实现 Ant Design Pro V5 的登录态

Antd Design Pro 的登录逻辑在哪里 > grep "其他登录方式" -r src/ src/locales/zh-CN/pages.ts: 'pages.login.loginWith': '其他登录方式 :', src/pages/user/Login/index.tsx: <FormattedMessage id="pages.login.loginWith" defaultMessage="其他登录方式" /> 查看 src/pages/user/Login/index. ...

阅读全文...

Google Play Android App 卸载率高的原因分析

最近新开发了一个 Android App,在 Google Play 上发布,应用商店了翻译了 40+ 语言,但是应用内只翻译了中文和英文,想先看看 Google Play 的搜索效果。 观察了两天,搜索效果比预期要好,转化率也挺高。 但是出现了一个非常严重的问题,就是卸载率接近 100% ... 卸载率高的原因分析 应用内没有对应翻译。 前期安装用户,多来自于小语种用户,集中在南美,例如巴西。 而巴西用户的主要语言葡萄牙语,并没有加应用内翻译。 我猜测,用户可能看不懂英文导致卸载。 解决方案 先补充应用内翻译。 先行补充了三门语言 葡萄牙语。针对巴西市场。 日语 韩语 再发布一版,顺便加 ...

阅读全文...

MQTT 协议

MQTT 的使用场景 例如典型的物联网场景,在一台联网硬件设备被扫码支付之后,需要能及时的解锁使用。最常见的应用场景就是停车场扫码缴费,自动起竿。 MQTT 介绍 MQTT(MQ Telemetry Transport,消息队列遥测传输)是近年来出现的一种新型协议,物联网领域会将其作为标准协议。该协议构建于TCP/IP协议上(同样有基于UDP的版本,叫做MQTT-SN)。MQTT原本是IBM公司开发的协议,现在则开源了,被人们不断开发着。MQTT是一种能实现一对多通信(人们称之为发布或订阅型)的协议。它由3种功能构成,分别是中介(broker)、发布者(publisher)和订阅者(subsc ...

阅读全文...

Golang 将日期字符串转换为星期几

由于 Golang Weekday 返回的是日期的英文周几,需要加个 Map 转换为中文。 package main import ( "fmt" "time" ) var WeekDayMap = map[string]string{ "Monday": "周一", "Tuesday": "周二", "Wednesday": "周三", "Thursday": "周四&quot ...

阅读全文...

Antd Design Pro V5 设置 proxy 切换 Mock 数据为接口真实数据

概要 ant-design-pro 关闭 mock 的方法为,修改 config/proxy.ts 的 dev 配置,然后启动服务时使用: tyarn start:dev 替代: tyarn start 详细分析 首先 mock 数据在哪里?通过搜索关键字居然没搜到,原来接口返回的字段内容都是通过 js 动态生成的。 文件:mock/listTableList.ts export default { 'GET /api/rule': getRule, 'POST /api/rule': postRule, }; mock 目录下针对不同的功能有不同的 mock 文件: > ...

阅读全文...

小程序 wx.writeBLECharacteristicValue 向蓝牙写入数据报错 10004 noservice

使用微信小程序官方提供的操作蓝牙设备示例代码 https://developers.weixin.qq.com/miniprogram/dev/framework/device/bluetooth.html 向低功耗蓝牙设备写入数据时,发现蓝牙设备没有收到数据。 为 wx.writeBLECharacteristicValue 增加了成功失败回调之后 wx.writeBLECharacteristicValue({ deviceId: this._deviceId, serviceId: this._deviceId, characteristicId: this._characteri ...

阅读全文...

股票收益计算器 - 输入交易额自动计算盈亏、利润

收到一位大象计算器微信小程序的热心用户反馈,希望我能增加一个股票收益计算器的功能。即股票算利润的软件功能。 股票收益计算器小程序功能需求 输入交易额自动计算盈亏、利润。 输入项 交易数量,股数 佣金,百分比 买入价格 卖出价格 自动计算结果 盈亏额 收益率 买入交易额 买入税费 卖出交易额 卖出税费 小程序界面效果 扫码体验 ...

阅读全文...

联想 thinkpad windows 10 笔记本发现不了 Wifi 6 信号

在一台联想 thinkpad windows 10 笔记本上发现一个诡异的现象,搜索附件 wifi 信号时,大部分 wifi 信号都能发现并连接上, 只有一个 wifi 信号始终发现不了,就不显示在 wifi 列表中。 但是,我的手机是可以看到这个 wifi 信号的。 wifi 6 这个 wifi 信号有个特殊的地方,wifi logo 右侧还有一个数字 6 的符号。 查了一下,这是 wifi 6 的意思。 详细参考: https://zh.wikipedia.org/wiki/IEEE_802.11ax Wi-Fi联盟于2019年9月16日开启Wi-Fi CERTIFIED 6认证计划[2 ...

阅读全文...

微信小程序通过蓝牙控制硬件设备、及数据传输

给客户做了一个手机微信小程序蓝牙控制硬件设备启动,运行模式的功能;同时可以读取设备上的实时运行数据,展示在手机上(当时数值发生变化时由设备主动通过蓝牙推送到手机上)。 最终效果 微信小程序目前并不支持经典蓝牙 参考: https://developers.weixin.qq.com/community/develop/doc/000c20c0574c00b9a33b0c38c51400?_at=1618552916637 同一设备是否可以同时支持经典蓝牙与低功耗蓝牙 蓝牙 4.0 规范允许设备同时支持经典与低功耗蓝牙协议。 小程序蓝牙是否支持同时连接多个设备 https://develope ...

阅读全文...

GORM 1 升级 GORM 2 的修改点

在写公司内部的一个办公系统时,想趁机把 Gorm 版本升级一下。 大部分靠 go build 的编译错误提示,修改完成。 依赖修改 由 github.com/jinzhu/gorm 变更为 gorm.io/gorm cannot use "mysql" (type string) as type gorm.Dialector in argument to gorm.Open - DB, err = gorm.Open("mysql", dataSourceName) + DB, err = gorm.Open(mysql.Ope ...

阅读全文...