图书云1.1.3.7校园图书共享优化版上线啦 简化流程,减少输入量 使用图书云校园图书共享功能 开启有智慧的青春校园读书生活

每个版本的背后,都有一个……一个故事!图书云1.1.3.7校园共享图书优化版基于海医学院实战经验总结而来。依据改版之前,要想加入图书云校园图书共享,需要输入手机号姓名,有些繁琐。改版后,不再需要输入手机号与姓名,加入后,可以通过图书云公众号沟通,无需花费短信费或电话费。

化繁为简

本次改版,不仅是学生群体使用体验的改版,更重要的是图书云运营策略的改变,更加开放的共享体验,更加简单的加入方式!简单,就是本次改版的核心理念!将原申请开通学校流程移除掉,学生可以自发开启校图共享!

体验方式

本次图书云1.1.3.7版本已经于2019年6月10日完成发布,全网均可直接使用!对于使用上的建议也可以随时通过图书云公众号反馈,也许你所想的的功能,你想要的体验就是下一个版本的主打。

抢前体验

图书云1.1.3.8会带来哪些新鲜的功能,带来哪些惊喜呢?欢迎加入图书云内测体验,请联系微信13439975582抢内测名额,请注明:图书云内测名额。

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

图书云为共享图书平台,向附近的朋友借书、同事、群友、俱乐部好友借书!图书云让小伙伴们享受便捷的私人移动图书馆服务,每个人都能将自己的闲置图书分享给身边的小伙伴,打造自己的小小图书馆!同时,也能通过图书云发现附近自己喜欢看的图书!

感谢以下赞助商对图书云的支持:

图书云1.1.3.6小区精度优化版发布 1.1.3.7校园图书共享流程优化预告 图书云共享平台持续更新升级中 只为您更好的共享

图书云新版本发布

图书云1.1.3.6小区精度优化版发布 

本次图书云发布的小区共享功能精度优化,充分考虑了图书云用户反馈的小区位置识别体验,经过产品的探索与权衡,推出此版! 图书云共享平台持续更新升级中,只为您更好的共享图书!在此,也感谢为图书云提出建议的各位朋友,虽然未曾谋面,但是你们对图书云的每一个建议,都将让图书云做得更好。图书云也将不断聆听用户的心声,不断的完善图书云功能与流程。也希望越来越多的朋友能积极反馈自己的想法与建议。

精度优化背景

本次1.1.3.6优化背景是基于一位网名为【上官振宏】的网友建议,他提出了小区识别方面的不足,导致每次加入图书云小区共享都会被图书云拦截。本次通过优化精度,基本上不会出现被莫名拦截了。同时,也针对【上官振宏】反馈的通过小区分享码未能进入到小程序功能页问题,进行了优化。目前新版本1.1.3.6都能进行更好的玩转图书云小区共享了。

图书云小区共享攻略

书非借不可读也,组建一个小区读书俱乐部,定期约小区朋友一起看看书,成长就在点滴积累中!可以是读读古典小说,也可以是玄幻科幻,亦可是IT技术、学术研究,书中自有黄金屋!

上线速度

本次1.1.3.6的上线速度受限于有关部门的审核中,通常上线是1个工作日,本次上线花了15个工作日。感慨一下,人在江湖,身不由己!

图书云1.1.3.7校园图书共享流程优化预告

图书云1.1.3.7将重点放在了校园图书共享流程的优化上,虽然新版本还未上线,但是功能已经发布出去。现在校园图书共享流程更加简洁了,学生群体可以直接加入自己所在的学校进行图书共享。同时,图书云1.1.3.7优化了沟通消息通知,借阅状态的变化都会通知双方,引导双方进行沟通。预计1个工作日可发布,敬请期待。

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

图书云为共享图书平台,向附近的朋友借书、同事、群友、俱乐部好友借书!图书云让小伙伴们享受便捷的私人移动图书馆服务,每个人都能将自己的闲置图书分享给身边的小伙伴,打造自己的小小图书馆!同时,也能通过图书云发现附近自己喜欢看的图书!

感谢以下赞助商对图书云的支持:

腾讯云通信聊天记录同步实战 与云通信巨头合作的点点滴滴 技术选型、技术实现、同步方案设计统统一线切身体会 躺坑在前 后来人有福啦

腾讯云通信聊天记录同步实战,与云通信巨头合作的点点滴滴,涉及技术选型、技术实现、同步方案设计,统统一线切身体会,躺坑在前,后来人有福啦!

云通信选型

比较了阿里旺信、网易云通信、容云通信、极光IM多款产品,一轮选型,直接锁定在阿里与腾讯云通信,这个主要是选择大品牌的出发点。第二轮锁定在腾讯云通信,这个的出发点在于,腾讯的微信可能会屏蔽阿里产品,就像淘宝之类的产品,在微信都是可能屏蔽掉的。再一个就是,旺信的文档显示,这个产品提供的文档很少很有限。相对之下,腾讯云通信的资料还是更齐全。

聊天记录同步技术方案

有两种方案可以将历史聊天记录保存下来,一是对接腾讯云通信的聊天回调通知,实时接收聊天信息。另一个方案是周期性拉取腾讯云通信的聊天记录。我们选择了方案二。因为方案一是实时的,如果聊天过于火爆,可能会我方的服务器带来压力。方案二,则不会出现压力问题,我们只需要慢慢的去拉取,有点错峰处理的意思。

历史聊天记录同步的技术实现

技术实现上,采用java开发语言堆出来一个后台服务程序,这个后台程序运用到了redis,myql,cron,springframework,ibatis、分布式锁,在遵循代码中的方法不能有超过一屏,严格区分bll,service,agent等代码规范要求下,实现了一版历史聊天记录同步程序。

1.分布式锁的运用

为了防止多个服务器实时并发跑,造成重复拉取,我们要运用分布式锁。最开始的时候,当同事们聊到分布式锁,我感觉好高大上啊。当我打开工历史代码,仔细看看目前的三种实现方式,就感觉,嗯嗯。1.是使用mamcache,2.是使用redis,3是使用zookeeper。经过咨询多个前辈。这个项目,就选redis了,因为我们需要使用redis做些缓存,正好又拿来实现分布式锁。这个是基于redis.setnx,原子性操作,如果key存在,则会设置失败,利用这个特性,实现了一个分布式锁。

2.cron+springframework

作业的调度,采用了springframework的任务调度功能(schedule),配置一个cron,感觉还是很方便。想想不用自己去创建线程,不用自己去启动线程,只需要安心的写业务代码,有点小小的开心。

3.ibatis

嗯嗯,ibatis几乎融合在所有的项目里,用来操作数据库,还是很贴心的。就不再八卦了,

4.严格的代码规范

一个方法的长度不能超过一屏。嗯嗯,怪不得有同事把屏幕坚起来写代码。我的字体设置的比较大,又是横屏显示,这个有点点挑战。我先把主体逻辑写完,以业务实现为目标,完成业务代码的实现,这个阶段,我并不太考虑代码分层是否合理,一个方法的代码是否在一屏之内。等业务逻辑实现好了,我再进行代码重构,要拆的拆,要分的分,这种方式还是很不错。一边写,一边可以思考怎么拆更合理,等业务实现完了,基本上对代码重构有了一个完整的重构思路。当然,找一个有经验的同事一起重构是最重要的经验啦。

5.我们的代码逻辑

一个分布式锁,一个按天调度逻辑,一个按小时调试循环,再到聊天文件解析,将图片链接替换成长期存储连接。

小结

今天主要介绍了一下我们与云通信巨头对接历史聊天记录的实战经验,你应该能知晓我们为什么在众多云通信厂商中选择腾讯云!并了解我们历史聊天记录的同步方案以及所使用到的技术。好了,今天的分享就到这里了,一期文字,码了好久!期待下一期!

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

图书云共享图书不断迭代力图连接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张表。

结束语

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

一招搞定可视化工作流设计器开发 巧用draw2d绝战可视化工作流设计器 友好的开源协议MIT

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

工作流通常会使用xml进行管理与配置,之间流转关系使用不同的xml节点进行配置,看着xml文件,很难直接Get到流程之间的流转关系。如果使用可视化的呈现来展现工作流,则很好的解决这个问题。更好的管理与维护。

可视化呈现,自然离不开图形的操作。Github上找以2个非常有价值的工程 ,分别是:

https://github.com/jifuwei/workflow-designer-web

https://github.com/freegroup/draw2d

都fork到仓库里了,不用担心找不到主

https://github.com/Lancker/draw2d

https://github.com/Lancker/workflow-designer-web

实现的思路:

首先,查看workflow-designer-web,这个工具有一个简单的工作流设计器,可以体验,能画节点,并用线条连接上。存在的问题是:节点类型不足以覆盖我所想要达到的效果。如果拿visio来比的话,操作流程度也是一个问题。阅读workflow-designer-web,图形操作相关的组件主要是draw2d。

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

紧接着,转战draw2d,这个是开源的,能做什么不能做什么可以通过官网及demo查看,主要是以下2个网址:

官网 http://www.draw2d.org/

Demo示例:https://freegroup.github.io/draw2d/index.html

非常开心的可以看到,draw2d采用MIT协议,官方网站上提到了Draw2D的用途之一就是workflow设计器的开发,有图有真像,来看看官网是怎么说的:

Draw2D touch is a modern HTML 5 JavaScript library for visualization and interaction with diagrams and graphs. Draw2D touch makes it easy to create visual languages & tools of various kinds.

在示例代码中可以看到不少workflow的影子,github仓库的介绍里也有一个BrainBox的实际应用,开发者使用Draw2D做的电路可视化工具​箱。

Draw2D-examples

有了Draw2D,如何开发一个工作流可视化编辑器​呢?开源大神还是很贴心的给了一个Shape Designer。如果没有这个东东,做可视化设计器会有些让人“恶心”,因为画一个图,可是一堆线条组成的啊~想想都够,还好,有这个Shape Designer!

shapeDesigner

Shape Designer能帮我们设计好各种基础的Workflow组件,用来设计不同的任务节点!再回到https://github.com/Lancker/workflow-designer-web,这个是工作流半成品,少了组件,正好使用Shape Designer设计满足自身需求的组件!

简单小结一下​设计器开发流程:

  1. 使用Shape Designer设计工作流节点
  2. 参考workflow-designer-web,更换节点组件

​就这么结束了?​没有没有。流程文件的导出与加载还是空白,给大家留一个悬念​,下次再分解!

巧妙拆分bolt提升Storm集群吞吐量

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