《扩散!急求这235次列车和航伴》《急求人!急求Z264、Z265次列车同行!》急求同行,这趟去琼海的列车发现一名确诊患者”……新型肺炎潜伏期长达14天,春运高峰期大大增加了疫情防控难度。一条在新闻上跳转的患者同行信息,是疫情防控的关键节点。狙击疫情,分秒必争!信息不断更新,来源多样复杂。人们如何快速确认自己是否与确诊的新型肺炎患者同行,从而快速诊断和隔离?紧急开发,到晚上11点已经在朋友圈传播的“新冠肺炎同程查询工具”。已上线——输入日期、车次和地区,即可查看是否与已公开的确诊患者同行。网址:http://2019ncov.nosugartech.com/“有些人是医护人员,所以他们去;帮助大家”。今天,阿里妹专访了成都无糖信息技术有限公司联合创始人兼CTO、该工具的开发者童永奥。在他的故事中,我们看到了中国开发者的力量。童永奥推出办公工具后,累计访问量已超过3500万,并被人民日报点赞转发。做力所能及的小事,帮助大家渡过难关。阿里妹:能简单介绍一下开发新冠病毒确诊患者同程查询工具的初衷吗?童永奥:原来的原因很简单。我有一个查询需要。我们日常接触到的疫情信息中,就有寻找患者同行的内容。内容一般以图片为主。一张图片列出了患者乘坐的交通工具、车次、日期等信息。通过图片一张一张的查找资料,一方面很可能会漏掉资料,另一方面查找起来确实很不方便,每次都得从头查找。作为一个程序员,我比较“懒”,一条一条的翻历史记录很麻烦,所以想着把资料挖出来用搜索工具找会更方便。阿里梅:工具开发团队是如何在短时间内建立起来的?团队成员都是志愿者吗?童永奥:最初的团队成员是认识十几年的老网友。我们本来是在一个群里的,平时聊天。看到央视新闻后,我把自己做工具的想法告诉了群里。他们也非常支持,所以他们才开始做。团队里还有一个人是我公司的。因为工具需要运维,所以请来了公司的运维主管。志愿者也有考虑,但是如果一开始就开放招募,整个周期会很长。一开始,我画了一个简单的布局,扔进了群里。安排好前端、后端、数据采集的工作后,我就立马开工了。其实这是一种非常简单粗暴的方式。后来陆续加入了一些志愿者。他们看到该工具后,通过电子邮件与我们联系并加入了我们。然后我们把这些志愿者拉进群里,他们帮我们收集和整理数据。一开始大家在群里讨论工具的时候,简单的原型是手绘的阿里妹:能分享一下查询工具最初的设计思路吗?童永奥:工具本身使用的技术比较简单。首先,整合网上已有的图片和文字内容,并入库。然后做一个搜索工具,就变成了现在大家看到的样子。一开始没想太多,大意很直白。一旦有了想法,就开始构建网页。首先在互联网上查找公开信息,交通工具包括:火车、飞机、公交车、出租车等。因此,初步设计数据库可能会用到这些字段。接下来就是考虑用户可能使用的查询方式,查询的关键词等等,我把自己当成一个用户,如果用这个工具,需要查什么?我首先想到的是日期,先看看我是哪天坐的交通工具。第二点,根据车次进行具体搜索。另一种是区域搜索。如果用户在某个位置,那么这个区域的火车、飞机等是否有确诊患者。前两点是后台数据库设计,最后是界面设计。考虑了这两个设计后,我就直接开始做了。阿里妹:从开始到上线这个工具用了多长时间?上线后会做哪些工作?童永奥:大概开发了半天。1月27日上午11:00左右萌生了这个想法,下午5:00左右,功能基本搞定了。后来又用了6个小时整理资料,晚上11点发朋友圈。很多时间花在后期维护上。团队成员每天花费17个小时或更多时间进行维护。这些天,基本上每个人都是从早上9:00工作到下午2:00。一开始,我们真的没想到数据会突然变大。信息量增加后,我们不得不做一些功能上的增强,比如:处理数据流机制,改代码,回复网友邮件。事情很多,比较复杂,但凡事都要慎重对待。阿里妹:在开发和维护的过程中遇到了哪些挑战?童永奥:最大的挑战来自数据整理。这个工具刚发布的时候,用到的数据都是央视整理出来的。资料是现成的,整理起来也比较容易。到了后期,信息量越来越大,组织信息的难度也越来越大。现在我们也自己过滤信息。我们一方面通过爬虫筛选信息,另一方面依靠网友给我们反馈。我们会要求网友提供链接,在批量抓取链接回来后,我们会对链接做一些信息抽取的工作。从目前的数据来看,爬虫的信息和网友提??供的信息大概在50-50分左右。另一个挑战来自暴涨的访问量。没想到访问量这么大。当第二天访问量开始急剧增加时,原来的版本结构已经应付不来了。阿里妹:能简单描述一下访问量的增长过程吗?面对飙升的流量,你是如何生存下来的?童永奥:1月28日是上线的第二天,总访问量是450万。从晚上8:00开始第二天,访问量呈几何级数增长,从1小时10万次跃升至300万次。29号和30号加起来大概2000万左右。一开始用的是朋友的服务器,1兆带宽,1G内存。上线第一天,因为配置太低,无法容纳100人同时在线的流量。后来我们直接调用了第三方CDN,我们嵌入了远程资源,就不用自己去承担资源访问的流量了。但是随着访问量的增加,我们发现单台服务器很难承载上千万级别的流量。所以我们采取了一个技巧,生成了静态页面和数据文件。相当于把库里的数据生成一个静态文件,然后把页面和数据放到阿里云的OSS上。让阿里云的OSS对象存储来应对高并发、高流量,不用担心流量压力。阿里妹:需要输入多少信息?如何保证数据的准确性?童永奥:总数大概是500-600。最早的资料是100多条,现在录入了300多条。后台还有大约250-300条信息没有录入,要录入的信息有重复的。数据验证是一个漏斗状的筛选过程。互联网上收集的信息经过验证和去重后会越来越少。数据量大的时候自动采集,数据量小的时候直接手动采集。审核步骤的大致流程是:初步线索->网友整理->内部人员整理(常见错误的核对和更正)->内部人员录入(单错核对)->提交(单错复核)->审查(原文链接失效或新闻文章后续修改)。后来人民日报推这个工具的时候,又帮我们仔细审核了数据。我们会逐层核对信息,越靠近后面的关键步骤,数据看门人越少越好。人越多,出错的可能性就越大。而且涉及到信任问题,尤其是后期的审核,除了我最信任的朋友和公司的制作人,其他人都不允许插手。在时间上,输入速度没有以前快了。因为我们对数据准确性的要求越来越严格,需要花费大量的时间去验证。对我们来说,及时性排在第二位,准确性排在第一位。阿里梅:工具的性能会有什么改进吗?童永奥:现阶段最重要的是后台数据,第一是准确性,第二是及时性。无意使其在功能上复杂化。如果有什么新的想法,我可能会单独尝试。当然,还是希望疫情快点结束,就不用想这些了。阿里妹:未来会有回流高峰。有大流量的方案吗?童永奥:我们现在不太担心高并发和大流量,主要是我们对数据的准确性有更高的要求。我们现在输入数据的时候,有点强迫症的感觉,很紧张。我们怕输入一个数字后需要反复确认。阿里梅:疫情来势凶猛。您认为开发者的参与对防止疫情扩散有何帮助?童永奥:很难判断。假设我是该工具的使用者,我只是查询确认一下。至于对疫情有多大帮助,我感觉不到。我觉得医生是最有帮助的,工具可以给大家提供一定的参考,我觉得就够了。这两天,我也收到了一些网友的邮件,有的非常简单,就四个字:谢谢。看起来真的很暖心。阿里妹:作为老开发者,你有什么建议可以分享给同行?童永奥:这几天没时间也没精力想太多。我觉得,对于程序员来说,写代码不应该被看成是一份工作,而应该被看成是一种工具。从这个角度来说,很容易想到做一个疫情共乘查询工具,因为我只是用一种编程语言来解决生活中我想解决的问题,并不是说我想做一个项目,从产品的角度来思考这件事。对于开发者来说,建议他们尽量把编程变成解决日常生活需要的东西,而不是简单的把它当作工作,这样可能会出来更多的东西。同心抗疫,我们就能打赢疫情没有旁观者。感谢开发者用科技的力量点亮星空。除了新型肺炎同课查询工具,阿里妹还在GitHub上看到了“wuhan2020”防疫信息采集平台,以及还在招收的外籍人员登记系统、消毒检查登记系统、学生健康报告管理等开发商。系统、违纪举报系统、物资管理系统等项目。我们诚邀各位开发者一起集思广益。如果你有可以帮助战胜疫情的小工具或好点子,请在下方留言。一起抗击疫情,我们一定能赢!
