大象笔记

知者行之始,行者知之成

开源 CRM SuiteCRM 的版本选择

想部署一套开源的 SuiteCRM,安装之前,SuiteCRM 的版本问题就令我迷惑不已。 SuiteCRM-Core 版本 https://github.com/salesagility/SuiteCRM-Core SuiteCRM-Core 版本是 8.5.0. 从 git 提交日志看是从 2020 年就开始开发了,已经开发了 3 年多。 SuiteCRM 8 is still in active development and all current releases are not yet production ready, so be sure to check the Relea ...

阅读全文...

Android 基于 PopupWindow 实现右下角的悬浮额外指标数值

PopupWindow 介绍 This class represents a popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity. PopupWindow 会浮动在当前 Activity/Fragment 之上。 相对于 AlertDialog,PopupWindow 的实现更灵活。 可以自定义位置。例如显示在指定按钮的下方,上方等位置。 展现形式更自由 ...

阅读全文...

Android 图表库 MPAndroidChart

为了在 Android 平板上实时展示血氧和心率的曲线图,需要找一个三方的 chart 库。 Android Chart 库的选型 https://github.com/PhilJay/MPAndroidChart , 37K star 但是 4 年前就不再更新了。但是实测并没有兼容性问题 (Android 12, 及华为鸿蒙3) https://github.com/diogobernardino/williamchart , 这个确实很漂亮,而且是 kotlin 实现的,但是看起来不如 MPAndroidChart 灵活。 MPAndroidChart 的使用 添加依赖 ...

阅读全文...

对话机器人 Rasa(三十):slot influence_conversation 引发的 intent 无法识别

问题现象 在某个对话流程之后,返回了两个按钮,点击一个按钮 预期的效果是:先返回一个 utter,然后进入 form 输入 loop。 bug 表现:要么返回空,要么返回完全不着边际的一个 utter,或者触发一个没有任何关联的一个 custom action。 我本以为是这个 intent,触发 form loop 这个 story 写的有问题。 但实际上,发现这两个按钮都不正常了,甚至所有 intent 都无法在这个操作之后正常被识别。 排除 intent 识别问题 按钮 payload 中的指定意图,类似这样的格式。 /intent 这个是不会有识别问题的。因为其 confiden ...

阅读全文...

Android Kotlin 点击按钮跳转至系统语言切换设置页

需求 在 Android 多语言 App 内切换语言,为了节省开发工作量,直接复用系统的语言切换功能。 即,点击一个 App 内的语言设置按钮,跳转至 Android 系统的语言切换功能页。 实现 import android.content.Intent import android.provider.Settings binding.appSetting.setOnClickListener { val intent = Intent(Settings.ACTION_LOCALE_SETTINGS) startActivity(intent) } 效果 效果非常好。而且 ...

阅读全文...

对话机器人 Rasa(二十九):custom action 中获取请求 channel 来源

需求背景 Rasa custom action 的 Python 代码中,需要根据不同 channel 渠道,来做不同的逻辑处理。 所以,需要能获取当前消息的 channel 来源。 获取 channel channel = tracker.get_latest_input_channel() print(channel) 可能值 配置文件 credentials.yml 中有详情的 channel 清单。 例如: 默认 channel: rest 自定义的 channel: 例如 app 等 查看合集 📖 对话机器人 Rasa 中文系列教程 ...

阅读全文...

Nginx 添加 Access-Control-Allow-Origin 头,允许跨域请求

No 'Access-Control-Allow-Origin' header 想从 js 前端实现拉取一个服务端的 markdown 文件,然后在浏览器端渲染成 HTML。 但是本地开发环境调试时报错: Access to XMLHttpRequest at 'https://www.sunzhongwei.com/some_file.md' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on th ...

阅读全文...

2023 年底工作总结

又到了一年一度的年底写工作总结的 PPT 时间。 这个周末烟台刚下完创历史记录的暴雪,天太冷就没有出门,把 PPT 赶了出来。 PPT 内容来源 每个月的月报 涉及项目的屏幕截图。统计了一下今年6成的工作都是在写 Android,所以界面截图成了大头。为了更加直观,我把截屏视频转换成了 gif 自动循环播放,同时省去了贴图量。 整理这个笔记的目的 找一个合适的切入点,让我自己不反感这个总结。 公司比较尴尬的一点是,这个 PPT 还要在部门内部上台讲一遍。 然后相互打分,作为年度考核的一个依据。 如果是为了打高分,那么这个 PPT 自然就会出现各种言不由衷的内容。 而且也不一定有好的效果。 ...

阅读全文...

Rust web 框架 axum (五): 每个功能独立一个文件

之前为了练手把所有的 Axum rust 代码都写在 main.rs 这一个主文件中。 随着功能的增多,发现几点不便: 代码行数过多,不方便查找指定功能的代码 不同功能的类似数据结构需要分别定义,为了避免重名,增加了功能名前缀,但是带来的影响是类型名过长,代码丑陋无比 新增功能时,复制/修改既有代码也不方便 目标 一个 Axum 项目中,有多个子功能,每个子功能在不同的文件中实现。 契机 正好在写枯燥无比的 Android 界面代码时,产生了一个小工具的需求, 即,将 Android 样式代码剥离出 styles.xml 文件,于是在写这个功能的时候, 就顺手将既有的 Axum 项目代码重 ...

阅读全文...

将 yolov5 内置模型导出为 pytorch mobile 格式

Google Colab 地址 使用 Colab 能利用 Google 免费提供的 GPU 资源,快速进行模型训练。比在我的弱鸡笔记本上训练,能节省大量时间。 在 Colab 上新建一个项目 https://colab.research.google.com 或者可以考虑继续沿用之前的项目。 安装 yolov5 新建一个代码块 #clone YOLOv5 and !git clone https://github.com/ultralytics/yolov5 # clone repo %cd yolov5 %pip install -qr requirements.txt # install ...

阅读全文...

Rust web 框架 axum (四): 生产服务器环境使用 Nginx 部署 axum 服务

这个周末不算忙,总算可以把一直没有上线的 Rust Axum 写的在线小工具发布了。 基本上跟 Golang Gin 的发布流程类似,本地编译好,scp 到服务器上。 然后配置好 systemd, nginx reload 就可以了。 比较省事的地方是 axum 默认会把模板文件打包到二进制文件中,不需要像 golang gin 一样增加额外配置代码。 第一个 Rust 小工具 Rust Axum 小工具: 中文标点替换成对应的英文标点符号 网页地址: https://www.sunzhongwei.com/tools3/replace-chinese-punctuation 编译优化 如果不 ...

阅读全文...

通过了微信小程序个人认证

早上收到一条微信公众平台的消息提醒: 大致内容是,现有的个人微信小程序需要完成微信认证,否则,12月24日之后将不能被搜索到,无法转发分享。。。 这还得了,只能屁颠屁颠地去小程序管理后台去完成认证了。 按照提示,到左侧导航栏找到微信认证功能,即可。 费用 个人微信小程序认证费用 30,企业小程序 300。 认证费用转嫁开发者,也是没有底线了现在。 第一个被驳回 原因是,如果你选择了个人职业,例如我选了软件开发工程师,还需要上传身份证。但是第一次填写,也没提示。审核人员就打电话过来了。说不提供身份证,就需要将职业置空,即无。 第一次见到发布程序,还需要认证我职业的。。。有任何关联性么? 我干 ...

阅读全文...