性能预览
点击预览线上部署的测试版本
- 1、请勿压测,倡议应用 chrome 浏览器;
- 2、目前【工作治理】的 socket 连贯不是并发的(因为我比拟菜 …),如果多人同时拜访可能须要排队期待,同时这是提供预览的;
- 3、在线上预览版本注册的账号后续可能会革除,正式应用请用 docker 部署到本地;
前言
现有产品用的友盟统计。
免费版的友盟统计每个利用最多只能有 500 个无效的自定义事件,超过最大数量后如果想要新增,则须要先暂停一些不罕用或者已废除的自定义事件才行。在友盟官网,是有“批量暂停”操作的,但其“批量暂停”跟“筛选性能”是离开的,导致我不能筛选合乎本身需要的一些事件进行暂停。
其次,有的时候产品改版,性能形容可能发生变化,须要批改自定义事件的显示名称,想要批改友盟自定义事件显示名称的话,则须要一个 id 一个 id 地搜寻,而后一个一个地批改。如果变更的自定义事件过多或者变更次数比拟频繁,那这样机械的操作就挺繁琐的。尽管友盟官网有批量上传自定义事件性能,然而已存在的自定义事件 id 不会进行更新,而是被疏忽掉,所以要想更新显示名称,还是得一个一个地查找能力更新。
另外,如果同一个产品有多个包名(多马甲),外面的自定义事件根本都是一样的,照下面所述状况,如果有性能差不多 & 自定义事件统一的利用 A、利用 B、利用 C,则须要机械地来回操作屡次,这真是一件耗时耗力的事件,一次两次还好,但如果操作次数多了,每次都须要繁琐的关上官网进行一些必要而干燥的操作,心里总会有一些马儿在奔流。
所以,就下面遇到的问题,我多心愿有个工具可能解决我的痛点,于是我施展本人的强项:百度 & google & cv,一直输出“友盟批处理工具”、“友盟自定义事件批量治理”、“友盟助手”等关键词,翻了几页之后没有找到合乎本人需要的工具,有些悲观。起初我就想,要不本人写代码实现这样的批处理操作好了。于是我花了一天工夫,剖析友盟自定义事件操作 api,写了一个 python 脚本,根本满足了本人的需要:
- 1、读取友盟自定义事件模板文件,存在则更新,不存在则插入;
- 2、缓存友盟自定义事件列表到本地,依据筛选指定事件进行暂停操作,实现筛选并批量暂停;
- 3、实现将“利用 A”的自定义事件状态,批量复制(同步)到“利用 B”、“利用 C”上。
前面一段时间,我都是间接执行这个脚本来实现相应操作的。一开始本人还算比较满意,然而操作次数多了,感觉还是比拟繁琐(人的欲望与需要总是无穷无尽啊),因为有时候友盟那边的 cookie 生效了,还得关上我的项目手动更新文件外面的配置项,另外就是筛选条件的配置项也得批改配置文件。所以我又想着,能不能自己写一个 web 治理页面呢(因为我现主业务是搞 Android 的)?联合本人的应用习惯再顺便加点性能。
于是我便开始 web 治理页面的开发了。取名 UMEM。
技术选型
最早最早我想着用 Flask + html 来写的,次要我之前用 Flask 写过一些小 api 还算比拟相熟(只是相熟简略利用,囫囵吞枣不精通)。不过最终还是选用了 Django + vue3 作为开发脚手架,这哥俩我也是第一次接触,因为只是要做个小工具,所以利用空闲工夫边学边做对于我来说也算是两全其美。而且 vue 的教程目前也很多,饿了么的 element-plus(vue3)提供的界面控件也很合乎目前开发的需要。
开发历程
因为后面曾经用 python 脚本实现了基本功能,所以在 web 端上,一开始我只是心愿:
- 1、操作更加便捷,比方上传自定义事件文件我想要简略的拖拽就行;
- 2、执行友盟自定义工作事,心愿及时看到相应的操作日志及进度;
- 3、自定义事件有专门的筛选条件不便检索;
以上性能都逐个(通过各种搜寻 & 各种 cv)解决了,在后续开发过程中,因为须要操作的友盟利用还是须要本人手动输出 key、友盟的 cookie 过期后还是得本人复制粘贴进行更新,所以本人持续追加了新需要:
- 1、心愿间接从已有的友盟利用列表中抉择须要操作的利用,而不是本人手动输出利用 key;
- 2、友盟的 cookie 可能一键更新,缩小繁琐的复制粘贴操作;
第一个需要点容易解决,第二个需要点我一开始是想通过程序模仿申请友盟 api 来获取 cookie,然而那样又须要账号密码,同时还得解决登录前的一个验证码校验,所以这个计划不太行。正好我看到一些谷歌浏览器插件能够更新 cookie(一些可将文章批量更新各大平台的产品的从属插件),我便进行海量搜寻 & 模拟着写一个合乎本人需要的谷歌浏览器插件,这个插件可能一键更新友盟的 cookie 信息,于是便有了 UMEM- 友盟登录助手 一键更新配置,免去手动复制粘贴之劳形。点击下载插件
再起初,思考到在局域网内部署供多人应用,于是追加了注册登录性能。
在性能都开发得差不多的状况下,我将程序打包为 docker 镜像,不便一键部署到本地或者近程服务器。
运行 docker 镜像
-
1、创立本地目录,用于挂载 docker 运行时的 log 目录、数据库(这小工具数据库目前应用的是 sqlite3)
mkdir -p ~/umem/log mkdir -p ~/umem/db
-
2、运行 docker(-e LANG=C.UTF-8 是解决 python 解决中文的问题, 这里的 /home/samge/umem 是对应宿主机的绝对路径,须要更换为上一步本人理论创立的本地目录):
docker run -d \ -v /home/samge/umem/db:/app/db \ -v /home/samge/umem/log:/app/log \ -p 8000:8000 \ -p 9001:9001 \ --name umem \ --pull=always \ --restart always \ -e LANG=C.UTF-8 \ samge/umem:v1
拜访
UMEM 拜访地址:http://localhost:8000
Supervisor 治理页面:http://localhost:9001/
Supervisor 账号:admin
Supervisor 明码:admin
点击预览线上部署的测试版本
(请勿压测,倡议应用 chrome 浏览器,目前【工作治理】的 socket 连贯不是并发的,如果多人同时拜访可能须要排队期待,同时这是提供预览的,注册的账号后续可能会革除,尽量本人用 docker 部署到本地应用)
应用
- 1、注册账号登录
- 2、进入“配置管理”页,配置友盟登录后的 cookie 等相干信息,这里可应用 UMEM- 友盟登录助手 一键更新配置
- 3、在“友盟 key”页,抉择须要操作的友盟利用
- 4、配置实现,可进行测试 / 应用
相干截图
最初
目前 UMEM 只是一款集体开发的十分小众的小工具,没有大面积测试,在我本人电脑的谷歌浏览器中运行临时没发现大的问题,合乎集体需要。
如果刚好有相似需要(友盟自定义事件批处理)的同学,心愿在正式应用前,先自行测试,合乎本人需要后再正式应用,审慎些总没错。
同时在应用的过程中如果有什么意见或者倡议都能够在我的项目仓库里的 issues 里提出来。