图书云共享图书不断迭代力图连接13亿个人图书成就全球最大图书馆 打破信息孤立 公众号与小程序用户体系流程整合

 

 

图书云公众号二维码
图书云公众号二维码

要想把一个产品做,那不断的迭代完善是避免不了的。图书云1.1.3.3体验版刚出,体验期才1天,就正式上线了。经过打通公众号与小程序用户体系,目前图书云已经正式支持小程序与图书云公众号的信息互通、体系互通。当用户在小程序发起借阅,藏书人将能收到图书云公众号推送的实时消息,不会耽误用户之间借书。试想一下,如果没有通知,同事借本书,尴尬得不要不要的。

做为专注共享图书的图书云平台,已经进入1.1.3.4的迭代周期,每一位用户都可以反馈使用体验与改进建议,我们会依据迭代周期排期,为用户增加更多的实用功能,让图书共享更加便捷!【跳过两张图书云靓照,还有文字哦】

图书云共享图书首页
图书云共享图书首页
图书云共享图书-共享经济
图书云共享图书-共享经济

图书云做为共享图书平台,支持个人、企业、公司、事业单位、学校、俱乐部等各类有图书互换环节的场景,看书是一个永恒的话题,活到老学到老。做为一名技术人,也要不断的学习更新自己的技术储备,除了看电子书,纸质书有着自己独特的视觉感观。系统的学习一门知识,安静的看看书,这也许是图书云为每位用户勾勒出的一种原生态生活。

图书云共享图书,为每一位爱书爱学习的用户而努力!请关注我们图书云公众号,让我们聆听您的心声。我们将不断的更新迭代,让您拥有更加便利的图书共享工具,让13亿中国人彼此连接,形成全世界最大的图书馆-图书云!

图书云公众号二维码
图书云公众号二维码

是云主机还是肉机?小白怎么防范国外黑客的频繁骚扰骚扰 维护小主机的安全与稳定 一次实战经验分享 效果显著 持续跟进攻防智斗大黑客

技术岛公众号
技术岛公众号

最近发现有台云主机被黑了,挂了很多英文的商品信息。站点里多出了很多【木马】文件。ChinaHadoop.org是一个简单的站点,也没有什么文章,但是却招来黑客,这个着实有些尴尬。

整个站点被嵌入了很多莫名奇妙的东西。因此,把网站重新安装了一遍,把整个网站全部删除掉了。为了防止国外黑客再次前来破坏网站,直接将国外IP全部封掉了,现在国外访问直接跳到一个广告页面。

这个黑客事件其实也是开源产品一个头疼的问题。虽然开源是免费的,但是开源也意味着代码是透明的,没有足够的安全机制,很容易出现这种事故。

把一个开源产品从头到位熟悉一遍,我觉得不够通用。直接从网络请求入口出发,进行IP限制管理,通过IP规则,将国外请求全部阻断。这个虽然没有完全解决掉问题,但是从攻击范围上来讲,已经屏蔽了很大一部分攻击了。同时开启,请求限制,将有风险的操作功能授权给个别IP,其他的IP只能查看静态页面即可,留言不需要,登陆不需要,评论也不需要。就是很纯粹的一个站点。

技术岛公众号
技术岛公众号

玩转企业微信群聊机器人 用机器人定时提醒饭点 订餐时间 任务时间 下班时间 任务代办事项 每个人都可以快速拥有的一个Robot

今天突然发现企业微信群聊的时候有个机器人功能,点了点,玩起了企业微信群聊机器人。用企业微信群聊机器人可以实现很多有意思的功能,如果能给自己单独做个机器人就好了,现在必须拉个群才能玩,有点小尴尬!今天带大家玩一下企业微信群聊机器人,看起之后,你应该能够自大实现一个群聊机器人,并能开发出来定时提醒饭点、订餐时间、任务时间 下班时间、任务代办事项等等通知功能,来来,走一波~~

机器人入口

企业微信群聊机器人入口
企业微信群聊机器人入口

点击新创建机器人

创建企业微信群聊机器人
创建企业微信群聊机器人

创建完机器人,得到授权接口址址

企业微信群聊机器人设置
企业微信群聊机器人设置

这是一个非常轻量级的机器人,上手速度非常快,看看官方的入门文档配置,真的是秒入门,秒使用!接口地址自带授权token,完全不需要来回签名验证的,直接关心做自己最喜欢的机器人功能就好。

来瞅瞅官方文档与个人自媒体的差异:

官方文档是这么写,不喜欢看官方文档的可以直接跳过,到下面的实战环节!

如何使用群机器人在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa589以下是用curl工具往群组推送文本消息的示例(注意要将url替换成你的机器人webhook地址,content必须是utf8编码):curl 'http://in.qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa5898' \   -H 'Content-Type: application/json' \   -d '   {        "msgtype": "text",        "text": {            "content": "hello world"        }   }'当前自定义机器人支持文本(text)、markdown(markdown)两种消息类型。消息类型及数据格式文本类型{    "msgtype": "text",    "text": {        "content": "广州今日天气:29度,大部分多云,降雨概率:60%",        "mentioned_list":["wangqing","@all"],        "mentioned_mobile_list":["13800001111","@all"]    }}参数  必须  说明msgtype  true  消息类型,此时固定为textcontent  true  文本内容,最长不超过2048个字节,必须是utf8编码mentioned_list  false  userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_listmentioned_mobile_list  false  手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人markdown类型{    "msgtype": "markdown",    "markdown": {        "content": "实时新增用户反馈<font color=\"warning\">132例</font>,请相关同事注意。\n         >类型:<font color=\"comment\">用户反馈</font> \n         >普通用户反馈:<font color=\"comment\">117例</font> \n         >VIP用户反馈:<font color=\"comment\">15例</font>"    }}参数  必须  说明msgtype  true  消息类型,此时固定为markdowncontent  true  markdown内容,最长不超过2048个字节,必须是utf8编码目前支持的markdown语法是如下的子集:标题 (支持16级标题,注意#与文字中间要有空格)# 标题一## 标题二### 标题三#### 标题四##### 标题五###### 标题六加粗**bold**链接[这是一个链接](http://work.weixin.qq.com/api/doc)行内代码段(暂不支持跨行)`code`引用> 引用文字字体颜色(只支持3种内置颜色)<font color="info">绿色</font><font color="comment">灰色</font><font color="warning">橙红色</font>图片类型{    "msgtype": "image",    "image": {        "base64": "DATA",        "md5": "MD5"    }}参数  必须  说明msgtype  true  消息类型,此时固定为imagebase64  true  图片内容的base64编码md5  true  图片内容(base64编码前)的md5值注:图片(base64编码前)最大不能超过2M,支持JPG,PNG格式图文类型{    "msgtype": "news",    "news": {       "articles" : [           {               "title" : "中秋节礼品领取",               "description" : "今年中秋节公司有豪礼相送",               "url" : "URL",               "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"           }        ]    }}参数  必须  说明msgtype  true  消息类型,此时固定为newsarticles  是  图文消息,一个图文消息支持18条图文title  是  标题,不超过128个字节,超过会自动截断description  否  描述,不超过512个字节,超过会自动截断url  是  点击后跳转的链接。picurl  否  图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图 1068*455,小图150*150消息发送频率限制每个机器人发送的消息不能超过20条/分钟。

实战环节

直接复制官方提供的curl命令执行的话,会报错,因为官方提供的是用来查看的,得调整一下,调整成这样子才可以跑起来:

curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx" -H "Content-Type: application/json"   -d "{\"msgtype\": \"text\",\"text\": {\"content\": \"hello world\" }}"

还有问题是curl发送中文的时候,在群里收到的是乱码,这个很让人揪心哦~。为了实现定时提醒功能,自然想到了windows定时任务!如果使用linux的话,也有类似的机制,今天就不介绍了。有同时使用jinkens做定时构建来玩,我也跳过了。我觉得今天的重点是还是使用一些比较常见的玩法。

如果喜欢使用english发信息的话,直接改改我上面提醒的curl命令,建个bat文件,现在windows任务中心创建一个定时任务就可以了。

玩法一 只能发英文的bot

 

  1. 建立一个bot.bat,内容跟截图错不多就可以。对于要提醒吃饭吃药下班做操等等提醒来说,只要将hello world修改成对应的英文内容就可。比如说:It is time for lanch.
  2. 企业微信群聊英文机器人enbot
    企业微信群聊英文机器人enbot
  3. 建立一个windows任务

win10进入任务管理直接输入“任务”,其他操作系统的话,可以在控制面板找找。

windows10任务计划入口
windows10任务计划入口

任务计划可以建很多,为了方便管理,建议先建一个目录叫做Robot,然后再新建任务计划到这个目录中。任务名字自己取,比如吃饭提醒什么的。

创建windows任务计划
创建windows任务计划

设置好触发时间

机器人任务计划配置
机器人任务计划配置

这里设置的是很天的上午11点50提醒。如果有些工作需要每周、每月提醒,则依据提示调整即可。

立即执行感受效果

立即执行机器人动作查看效果
立即执行机器人动作查看效果

到这里就完成了一个简单的bot机器人的设置,到约定时间,机器人就会执行,发送相应的消息。

玩法二 能发中文的bot

发英文的话,比较晦涩!不好Get到点。中文的bot可以使用其他脚本或开发语言完成,node.js\python都可以,不过,这里提供的方案是html+js+bat文件+winodws任务执行。

中文版企业微信群聊机器人
中文版企业微信群聊机器人

b.bat内容

start "C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe" D:\robot\robot.html 

QywxRobot.html内容

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script src="jquery-3.4.1.min.js"></script></head><body>    <input id="robotUrl" style="width:100%" type="text" value="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx"/>  <textarea id="msg" style="width:100%;height:200px;" value="我是机器人好不"></textarea>  <button style="display:flex;margin:30px auto;" id="btnSend">发送</button>  <script>    //关注微信公众号 技术岛Jishudao 体验最新的技术潮流,获取更多实用小工具    //微信 13439975582    $(function(){      $("#btnSend").click(function(){        var botData = {            "msgtype": "text",            "text": {              "content": $("#msg").val()            }         };         $.ajax({            url: $("#robotUrl").val(),            type: 'post',            dataType: 'json',            data: JSON.stringify(botData),            success: function(res){              console.log(res)              if (res.code === 200) {                               }               },            error: function(e) {               }          });      });    });    </script></body></html>

jquery-3.4.1.min.js可以到网上找一个,也可以直接到我的仓库获取:https://github.com/Lancker/QywxRobot

任务设计可以参考上面的说明。

以上就是今天的玩转企业微信群聊机器人,欢迎加入【技术岛】微信技术交流群,加微信13439975582【注明技术岛】

腾讯云通信、网易云通信、极光IM、阿里百川、容云通信国内云通信抉择之路 看云通信市场风云与掌控力 带腾讯云通信实战代码demo

技术岛公众号
技术岛公众号

我们的当前的需求:需要在web中集成聊天功能。我不知道为什么我们只考虑使用别人家的云通信,没有考虑自建聊天功能,那就干脆顺着这个思路看了看腾讯云通信、网易云通信、极光IM、阿里百川、容云通信。

历史上的今天

记得18年做过网易云通信的小程序集成,记忆依旧是那么的清晰,好像昨天的事情。记得18年看到腾讯云通信是10万用户都免费,今天睁大眼睛再看看,免费的版本只支持100用户,简单差太远了。

怎么选?

从品牌实力上来讲,腾讯+阿里。但是腾讯不跟阿里玩,阿里百川社区里阿里的人在谴责、吐槽,还支招使用NGINX隐藏阿里域名。虽然阿里百川免费,但是就冲微信喜欢百川这一条,我们直接Pass掉了阿里。我到是想使用免费的百川,只是想想阿里把我的10年TB店都封掉了,我也Pass掉阿里。

从SDK 上来讲,我觉得网易云算是比较完善的,阿里虽然被Pass掉,但是今天比较的结果来看,本身阿里对于h5、小程序的支持就缺失。腾讯云通信显得比较高傲,爱用不用,demo就这么丑丑的,小程序demo可以说是亮瞎了眼,功能都不齐全。网易云的demo到是比较良心,不过,想想啊,想想啊,看起来比较良心,实际也没有怎么太考虑真实用户怎么去集成与使用。拿网易云通信小程序集成来讲,还得看我之前的版本,官方压根就不是用来集成的,纯粹用来秀。

改良版本:https://github.com/Lancker/NIM_Web_Weapp_Demo

从收费上来讲,阿里是免费的,但是不建议使用!极光好像也是免费的,但是没有来得及尝试demo,我们已经决定使用腾讯云通信了。

腾讯云通信Demo

头一次看到这么奇葩的git仓库,把H5、小程序、iOS、安卓都放一起了。公司克隆下来老是中断,浏览器下载也老是断。最后想了一招,先使用云服务器,将仓库zip包下载到服务器,再用国内云盘的离线下载功能下载,再通过云盘下到本地。

实战第一步:先去腾讯云通信后台创建一个应用

实战第二步:下载sig生成的服务端代码,很多选择。今天尝试的php版本,本来是想使用java版本的,但是时间有限啊。先来看看php版本。

部署效果:

http://imphp.joke.dog/index.php   临时部署的,访问这个页面会生成三上用户sig值,后面登陆用到。类似于一个登陆授权token。

string(308) “eJxNjV1rgzAYRv*LtxvzTTQTB7uQflDX2lqqqwwhpE3sglStxhoZ**8Tt267PYfzPB9GtNo9sOOxbAtFVV8J48kA437EkotCyUyKeoBKNArQj2FVJTllilo1-xc0PKejGhiyATC4xLo1QleyFpRlatxDhBAMcEuvom5kWQwCAyIIWwB-Usmz*E4cGxxEfv-kacDBLJ7426nO3fnbwivz-BB55TVCUReHurvMUvN1H3pbvj73SeK-k9TEnX96ceRit7H6eJ5t2tVhAsE6yYgOhGvfPS4LLvftchqm5kWz4Nn4-AJSVVjS” bool(true) ======string(308) “eJxNjdtOg0AURf9lno09MzBcfCOtSakK0ppeTBNCYIAjwoww9hr-vQTr5XWtrL3P5OVxcZukqfxsdKyPSpA7AuRmwJiJRmOOou2hFp0GdjWJUpjFiY6NNvsXdFkVD6pn1ARg4HKDXqU4KGxFnOR62KOccwbwk*5E26FsesGAcsoMgD*psRbfiW2CTfnvHxY9frrfjP1o4mz2JU5Xp0Cm25G79O2pZ3jV*rBfUvl2lNYpaPNuYdGwdAq-9EK2LiYzaMTcquh2FETmg-KSj5k5r153WY3puHbD*t2JGueZfF0A5KJYdg__” bool(true) ======string(308) “eJxNj9tOg0AQQP*FZyOzCyvWpA8VSC2WNIipqSEhUIY6FSldFlI0-rsbrJfXc*bMZD6Mx2V8mW23h65WqRoaNG4MMC5GTAXWikpCqaHCVoF1NlnTUJFmKrVk8S9oi9d0VJoxG4DDRFjsLPHUkMQ0K9W4jwkhOMBP2qNs6VBrwYEJxi2AP6noDb8TxwaHid97tNM49CN3MS9Pifm8xNgtdg9H387aY1j2eL12EtMN5NynSbxKzHuM74bwfUa3ez3ezdpqk0fei90PwxXfiy7y8kD-yStr9bQgb1PF6yCPplPj8wunDlk9” bool(true)

我直接生成了三个用户的sig值,代码是用腾讯云通信demo代码简单改造而来。php的写法让我有点想吐了。就像好久没有坐公交车。来来来,上代码。

<?phpinclude 'TLSSigAPI.php';use Tencent\TLSSigAPI;final class ZuimeIM{    static private $private_key_string = <<<'EOT'-----BEGIN PRIVATE KEY-----MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjVKC5YlaxSH8FFeqYac++yKIXQ6+edkSQC21+uUQivyhRANCAATtoD5MbgZ+h/O3Rdiu8c3B+BXktZrQXRgR39N0k/xzkTOkD5PZZfFCyUVHDjK9PiJ3iNqdE4HebFsiiSJu+xbC-----END PRIVATE KEY-----EOT;    static private $public_key_string = <<<'EOT'-----BEGIN PUBLIC KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7aA+TG4Gfofzt0XYrvHNwfgV5LWa0F0YEd/TdJP8c5EzpA+T2WXxQslFRw4yvT4id4janROB3mxbIokibvsWwg==-----END PUBLIC KEY-----EOT;    public function testGenAndVerify($userCode){        $api = new TLSSigAPI();        $api->SetAppid(1400209531);//设置在腾讯云申请的appid        $api->SetPrivateKey(self::$private_key_string);//生成usersig需要先设置私钥        $api->SetPublicKey(self::$public_key_string);//校验usersig需要先设置公钥        $sig = $api->genSig($userCode);//生成usersig        $result = $api->verifySig($sig, $userCode, $init_time, $expire_time, $error_msg);//校验usersig    var_dump($sig);    var_dump($result);    }}$zuimeIM = new ZuimeIM();$zuimeIM->testGenAndVerify("test01");echo "======";$zuimeIM->testGenAndVerify("test02");echo "======";$zuimeIM->testGenAndVerify("test03");​

把官方的H5代码传上去(推荐使用filezilla ftp,开源免费好用)!index.html中的代码要调整一下,主要是换一下appid等,非常简单,直接看代码注释就换掉了。不再晒代码!直接看效果吧!

http://imphp.joke.dog/H5/index.html

后记:demo只是跑起来,真正的业务才刚刚开始!不过,至少知道怎么跑起来了!国内云通信还是有不少,但是他们没有真正站在集成的角度思考,坑苦了一般哥们做二次开发!统一云通信将是下一个趋势!

注意:本文中使用到的

http://imphp.joke.dog/index.php

http://imphp.joke.dog/H5/index.html

是临时搭建的,如果点不开的话,就自己再搭一个吧。喜欢玩服务器的,可以加好友!

游戏vs工作 用游戏的玩法构建工作生态圈 工作大礼包 打怪升级与工作相结合 一个游戏化的工作平台 累计游戏化经验快乐成长起来!

谈到工作与游戏,感觉就是对立的两件事情,多少祖国花朵沉迷在游戏中不能自拔。多数人都喜欢玩游戏,但是一提到工作,就感觉累!那能不能把工作氛围设计成一种游戏的感觉,让大家上班像玩游戏一样呢?

关于设计一种游戏化工作文化或者说构建一个类游戏化工作平台,也是时不时在脑海里转啊转的,今天大概分享一下类游戏工作平台的想法,涉及一些思路与手段。

愿景:

今天我领到一个任务礼包,我很开心的做任务,拿到任务金币。积累一定金币后,我升级了!

工作度量

如果说完成任务能拿到经验值,那么公平起见,需要对每项工作进行合理的度量,以便为每个任务设置不同的经验值。累计经验值,转化成角色等级。如何度量工作呢?不同类型的工作得用不同的度量方式。对于软件开发任务,来说,综合TestCase数量、功能实现难度等,转化成同一基准的经验值。

​荣誉体系

游戏等级是游戏的追逐点,第一名,前三名,吃鸡、躺鸡、王者、荣耀、青铜。同样,做为一个游戏化工作平台,荣誉体系也是必不可少。对于新人来讲,从荣誉体系中很快可以找到能帮忙自己成长的同事,快速解决问题,快速升级。

任务设计团队

将项目拆解成合适大小的任务,让经验值与任务平衡,让工作玩家能不间断的处理任务拿到经验值,并确保任务设计的合理性与公平性,这对于一个游戏化工作平台来讲,是非常重要的。这不同于传统意义上的接包平台,需求粗,难度量。任务设计团队可专注于任务的设计,玩家可专注做任务。

师徒体系

对于新手来讲,有一个人带着,会比较好!怎么玩,怎么玩好,都能快速的进入节奏!

中间先来个小小的总结,把工作变成游戏,重要的是工作经验值度量!有了这个基础,就好将师徒体系、成长体系、挑战赛、排行榜等游戏体系的引入,让工作充满乐趣。我还想补充的是,建立一个游戏化工作生态圈需要一些工具来辅助,它们分别是自动化部署、自动化测试、无感任务平台、代码质量检查工具。为什么会这么说呢?且听详细分解。

一、自动化部署

日常琐碎的工作,除了消耗时间与体力,还能说有什么价值?这种重复性劳动,并不能让工作充值乐趣。自动化部署,将这块繁琐,吃力不讨好的事情省下来,让工作在乐趣的范围里。

二、自动化测试与压测

游戏化,意味着竞争,意味着抢经验值。不能因为竞争性导致个人疯狂抢任务,质量降低。严格的产品交付,压测标准,确保游戏化后的交付质量。

三、无感任务平台

游戏化工作平台,我觉得任务体系要自然一点,无感操作,或者能有好的体验感知也行。

四、代码质量检查工具

代码质量检查工具,首推sonarQube,没有用过的,赶紧去搜索下载使用一下。为什么要用这个工具呢?当然是要保证游戏化后,能有好的代码质量。工具也能辅助提醒工作玩家代码存在的bug、不规范。

嗯嗯,写了这么多,来个最后的总结吧!今天主要分享一个游戏化工作平台的设想!想想,无论何是何地,不管是在北京还是在上海,还是在18线小镇,进入到这么一个游戏工作平台,赚取经验值,每个月还能有RMB,这不是很好么!

技术岛公众号
技术岛公众号

从腾讯文档Excel自动导入到离线人工导入 不要放弃沟通 美好与现实之间总能找到一个平衡点 一次工具实战感悟 多沟通给自己呼吸!

腾讯文档是一些同事喜欢使用的产品,进行文档分享与管理,同事间共享,权限控制!总之俘获了一批经常与文档打交道的同事!但是,文档好管理,最张还得与公司的OA打 交道。于是,产生了一个需求场景,需要将腾讯文档中的Excel文件内容,同步到公司OA系统。操作步骤:登陆腾讯文档,找到Excel文件,打开Excel文件,选择导出Excel文件,执行同步程序,将Excel同步到OA.

第一回合,美好滴初步设想,自动同步。

第一时间查看腾讯文档尾部,找不到类似OpenAPI的入口,在腾讯文档的社区发起提问,得到的答复是无此接口。最美好的想法落空。

第二回合,转战自动化测试工具为我所用

自动化测试工具,主要倾向于使用python+chromedriver跑脚本来完成。而遇到一个具有挑战性的登陆状态问题,使用微信扫码登陆的话,采用自动化测试工具有些困难。最终同事们想到的方案是,一个守护进程+一个执行进程。听想来也是挺美好的,只是自动化测试的小伙伴也没有真正去做过类似的方案,一般都是从头到尾一个Case,没有一个守护+一个执行的。于是,方案悬置,未实施。

storm与财富增值
storm与财富增值

享受宜信星火金服宜心理财实现财富增值,预期年化收益10%
扫码二维码
通过宜信星火金服活动链接 http://www.ixinghuo.com/qcode.php?yixinqcode
通过宜信星火金服理财师店铺链接:https://xinghuo.yixin.com/yiidea
通过宜信星火金服理财师移动端邀请页面https://xinghuo.yixin.com/mobile/activityPage/shareShop/yiidea
5.通过宜信星火金服理财师店铺宜心理财团队短链接:
http://yixin.hk
http://yixin.ceo
http://yue.ma
通过宜信星火金服宜心理财团队网站页面
http://www.yixinlicai.com.cn
通过 宜信.公司 | 宜信.网络 | 宜信.net

第三回合,JS主战场

第二回合采用chromedriver,相比较于JS,两个方案面可抽象的理解为同一个方案。将Chrome开着,相当于守护操作,执行JS相当于执行操作。初步尝试此方案的时候,还是很开心的。JS模拟点击,直接点击导出本地excel,能实现Excel文件导向,达到预期理想。但是JS模拟需要分现两步,第一步,点开菜单,第二步,点击导出。当导出【本地excel表格(.xlsx)】存在于dom树中,这个操作是成功的。但是实际模拟场景是,先去模拟点【文件】,js普通的模拟竟然点不出菜单!!!!那意味着,得使用高级一点的模拟方式,先把鼠标模拟到指定位置,再模拟人工点击。感觉是这样子的。

第四回合,模拟精灵

JS直接模拟点击不管用,那么使用模拟精灵直接模拟点击自然是可以吧。录制模拟脚本,搜索、打开、点菜单,点导出,回放。感觉要见证奇迹了,no,no,no,那有什么奇迹,菜单还是点不出来。【感觉】模拟精灵并没有完全模拟录制的动作,存在加速执行的节奏,省略了轨迹模拟,导致鼠标停留在【文件】上方的时间不足,没有把关键动作执行好。单独录制点击菜单动作,菜单出来了。也就是,关键脚本单独录制,再合成。想想也是醉了。模拟精灵的一个问题在于,如果系统中有任何突出窗口挡住了界面,操作就断了。这种担心,可能也没有必要,关掉系统自动更新,一般莫名的弹窗也是不会有的。

第五回合,沟通神器

经过沟通,Excel导入的工作频度较低,对于自动导入来讲,实现起来麻烦!最终换成了人肉导出excel,再导入到OA。另外,要自动,不仅仅是技术上的一个实现,也是工作流程上的一个变化,将同事已经熟悉的工作方式与流程,改变掉,除非是熟悉并能改进,否则,还是用辅助工具的形式。

第六回合,Coding战场

Excel解析

使用开源的POI读取Excel真的是非常开心,想想不用安装office,不用担心进程挂起,就是各种开心。当然POI也有些让人不开心的地方,读取单元格数据的时候,会有些不太方便,int,string,datetime得严格区分开,时间读出来还有可能是数字的,所以需要做些特殊的处理。这次解析Excel有一个小小的麻烦之处,一张worksheep中一般是1个父节点多个子节点交错着出现,需要逐行扫描记录,识别出父节点与子节点,并将父节点与子节点组装起来。想不到非常顺利的解析完了~

​演练

导完数据后,看起来没问题了。但是老感觉没谱。不知道数据最终会怎么使用,前前后后能否良好的串起来?这个时候,做演练是最好的选择了。还真有新的收获,之前的代码与线上代码不一致,数据库少了三个字段,上线就能崩溃。另外,导入数据还少操作了2张表。

结束语

需求是美好的,多沟通沟通,也许我们能变得更加现实。【自动】牵扯的不仅仅是技术实现,更是工作流程与工具的变更。