前言 近日,小编被一篇“做程序员,挺!好!”的文章刷爆朋友圈,小编压抑不住满心的好奇,托人寻得那个“挺!好!”的程序员bottle,希望具体了解一下“挺好”背后的黑科技!
正|文|
小编:bottle你好!大家都对你具体如何实现“挺!好!”的技术细节非常感兴趣,但我更好奇的是,解决了“挺!好!”问题,单身问题也得到解决了吗?
Bottle:没有。但是需求已经排期了,这个迭代解决“挺!好!”问题,下个迭代是解决单身问题。我们遇到什么困难,也不要怕,微笑着面对它!坚持,才是胜利!加油,奥利给!
小编:哈哈!祝福bottle也顺利解决单身问题哦!想问问为什么会想到做一款监控自己坐姿的程序呢?
Bottle:疫情期间远程办公成了日常。从公司三千块的人体工学办公椅到家里几十块的椅子,这个体验落差是非常大的。办公条件有限,总是不禁弯腰驼背,一天下来疲劳加倍,感觉身体被掏空。正好我们是做网络建设流程和网络监控告警的,是web开发和监控告警的专业团队,这个需求其实很简单。
小编:我对视频中亮瞎眼的台灯比较好奇,能介绍一下你是如何控制物理设备的吗?
Bottle:要操控物理设备自然想到了物联网,我们网络平台部物联网的同事在听到我的需求之后给了我一个神器:物联插座。这个插座采用的是 LoRa 无线传输协议,腾讯的几个办公大厦都有LoRa网络覆盖,标准的LoRaWAN插座就可以接入到腾讯云物联网开发平台中。通过向腾讯云物联网开发平台发送一个web请求,控制信号会通过LoRa无线网络立即传递到这个无线插座,插座收到控制信号后会对内部继电器进行通断。具体API文档见: https://cloud.tencent.com/document/product/1081/34973,
只要修改 payload {"power_switch":1} 就可以对插座进行开关操作。于是,我们就拥有了控制插座的通/断电能力。
小编:能具体介绍一下监控是如何实现的吗?
Bottle:这就是web开发的内容了。在前端开发里面,我们可以通过JavaScript去调用电脑的音视频能力。笔记本自带前置摄像头,台式机可以通过接入外设的方式支持。前端JavaScript通过API
navigator.mediaDevices.getUserMedi 即可。由于浏览器隐私策略的设定,需要在HTTPS协议下才能使用。该API返回一个promise对象,在resolve里将得到的MediaStream对象分配给video标签实现初始化,再通过requestAnimationFrame循环canvas的drawImage将video画到画布上,这样,我们就可以在浏览器上实时看到自己美貌啦~
小编:坐姿的识别是如何实现的呢?
Bottle:我找了公司内部的兄弟团队:TEG安全平台部AI安全团队。他们提供了AI人体关键点识别服务。通过canvas.toDateURL拿到图像压缩过的jpeg格式的base64编码数据作为输入,输出人体17个关键点在图像中的x、y坐标。新增一个与监控图像等大等位置的canvas,同样用canvas的drawImage循环擦写,将坐标点绘制到画布上。这样我们就可以在浏览器上看到自己五官的打点了。
小编:最后想问问,你作为一名鹅厂的程序员,为何发量如此充沛??你具体是做哪方面工作的呢?
Bottle:因为我从不立“发量充沛”这样的flag。头发不够,假发来凑,我对假发这一块略有涉猎,我们可以私聊。我在TEG网络平台部从事WEB开发,部门主要负责腾讯网络的规划设计、研发创新和运营,是一个有梦想和情怀的团队,工作之余鼓励大家去追求诗和远方。像我,画画小猪佩奇,或者做今天这个坐姿监控的事情,生活美滋滋。
|