一款当前很火的抢票神器的重大bug

一款当前很火的抢票神器的重大bug

by Idouba on 2014年12月23日 in dou&lifedoubadoudoudouma

前言:昨天在家抢票,无意中发现了最近很火的一款猎豹抢票神器的重大bug。简单描述下,并加上自己对bug原因的定位和分析,希望可以帮助这款神器的使用者和开发者提供些有用信息。

快过年了,又到了一年抢票时。今年douba和douma计划要带着doudou回姥姥家。昨天在家用抢票软件居然发现了一个bug,按照douma的指示,今天上班来中午吃完饭不休息了,匆匆写下发表出来,供其他焦急的抢票战友们借鉴。祝大家都能抢到心仪的车票。

除了360外,douma推荐了另外一款抢票神器猎豹。并且douma还用自己的成功经验诠释了下该神器的与其他工具的比较优势,那就是除了普通工具都有的自动刷票功能外,还提供了一款推荐功能。可以提示用户购买超出区间的余票,并很nice很体贴的提示出票价超了多少。比如douma本来要买两张hangzhou’到yangzhou的软卧,没有买到,就通过该功能成功的抢了两张wenzhou发车的票,尽管多付了66%的票款(这个败家媳妇!),但是能抢到就是很了不起了!尤其据douma的消息,今年除了起点站很多过路的票都很难抢,因此这个跨站抢票的功能就显得尤为重要了。可是就是这个重要功能,在后续使用中被发现存在问题。

本来douma的两张超出常规票价66%的两张软卧(败家媳妇,说到这儿就得再骂一遍)可以把doudoudouba带到姥姥家。可是偏偏doudou的姥姥家住的就是这么偏僻,下了火车还要再倒一班3个半小时的短途火车。就是这两张车票让douma和douba抢了三四天都没有抢到。怎么想这个短途车也不至于这么热吧?打了电话12306,声音甜美的美眉客服也是说票都被秒杀啦。但是昨天在家里打开笔记本打算继续扫之前,douba无意做了个操作,却发现了个神奇的现象。

猎豹和360显示“本次车票已经卖完了”。其他地方也是显示yanzhou这个过站没有票。说明确实过站的票是没有了。

然后当然是尝试起点站购票了。douma天天都盯着猎豹的跨站推荐的地方。但是三天里推荐功能一直显示:“订票助手正在为您监控以下跨站票”。让douma望眼欲穿!看来douma比较拿手的始发站下手的策略也没有办法实施。难道这个票从“zaozhuangxi”就卖完啦?douma一个本地人非常不解,这个车以前好像都是没人坐吧,又慢又不好的,要不是带着doudou等大巴麻烦,我才不选这个破车呢。douma领着douba和doudou回家从yanzhou到juxian就这一班火车的哦。急死了!

就这样焦急了三天,天天上班doubadouma都是到座位开机后不忘把两个神器开起来,然后才忙别的,期间还会QQ、电话互通下进展。晚上下班回家,第一件事情也是把doudou先放一边,打开神器再忙别的。一天一天,douma都要放弃了,也就商量着直接打个车得了。

直到周末,准确说是周日昨天(周六都懒得搞了),吃完饭开机搞别的,居然被douba轻松手动的从12306的官方售票处买到了这趟车的车票。你能想到在douba支付宝支付的时候,douma和doudou那敬仰的神态吗?家长就应该是这个样子滴!截至到douba这会儿在写这个小文章,去12306上截个图,发现这趟车依然有票在买,从放票开始已经过去整整5天了,票还没卖完。也验证了douma的了解,这趟车确实没有那么热,问题就是为什么猎豹推荐的zaozhuangxi始发的车就是没有呢?结论当然是抢票神器出了问题。

为什么好几天了直到现在12306一直说有票,抢票神器却说没票呢?“应该是这个软件有bug”,CS工学硕士douma第一时间给出了结论,非常镇定,当时的神态都非常认真和专业,尽管不是在公司,而是穿着拖鞋在家里客厅。

douma说的对,但是分析是什么bug呢?就需要一定的业务知识的支持,这个就要请教在读研搞CS前曾经修过铁路的douba了。应该是一个个非常tricky的问题,抢票神器应该是没有考虑到的。那就是车次的问题,细心的朋友应该看到,尽管douma没有选车次,但是神器推荐的是5037 ,而douba在12306上买到的是5036。不是Yanzhou到juxian只有一趟车吗?怎么有两个车次?

随即douba打开12306的列车信息演示给douma看,原来这是一趟车。

我们都是有文化的人,但是看到车次这一列,想必大部分人都会“蛋疼了”。有这么折腾人的吗?一趟车走早上七点到八点半叫5036,走到九点就叫5037,再走到中午12点又叫5036,走了三个多小时后,到了下午三点多又叫5037。能不能不要这么任性啊!你都不怕列车广播车次的时候把刚上车的大叔大妈吓得认为坐错车了。反正douma这样的工学硕士看见这张表是晕菜了。

再听douba啰嗦下《铁路概论》课本上学到的规定的我国的火车车次的编排规则:

我国火车车次的编制和上行下行有关。铁路规定进京方向或是从支线到干线被称为上行,反之离京方向或是从干线到支线被称为下行。上行的列车车次为偶数(双数),下行的列车车次为奇数(单数)。在铁路调度中,调度员能一看车次就知道行驶方向,十分方便。因此就会出现有的车在运行途中会因为线路上下行的改变而改变车次。例如:1392/1393 到天津前是往北京方向,天津站后是远离北京方向。

所以这趟火车有两个车次编号。同样的5036/5037也是。看看这个地图中这趟车的行进线路上和我们伟大祖国的首都的相对位置变化就不难理解其为什么走俩小时变个车次,走俩小时又变一下了。

说到这里,douma大概理解了抢票神器中的问题。“猎豹应该就是只是按照5037进行查询了”。然后douma完整了描述了下bug:“当用户在神器中推荐功能其实是神器自己列举了若干个站到站查询,但是进行这步站到站查询的时候,带上了车次的的信息,不巧这个车次在后面站是存在的,在这个站是不存在的。即使用的车次不是这趟车的真正的唯一标识,而只是一个看上去的唯一标识。

说白了用户查yanzhou到juxian的列车,神器先得到车次信息是5037,然后跨站推荐中把查询的起始和终点站万前后延伸,尝试做二次查询,类似信息检索技术中的查询扩展,都是为了提高查全率。如尝试起点站zaozhuangxi到juxian,但是这个时候却错误的带上了前面的车次信息。两个条件与在一起就查不出来了。在douma的例子中,按照5037去跨站搜,发现zaozhuangxi根本就没有该趟车,不是卖完了,是从来就没有过!

试想如果该趟车在铁路管理系统中的一条记录如下

Id 车次 起点站 终点站 运行时间 里程 硬卧下
889 5036/5037 枣庄西 烟台 11.小时 710 170  
890 K112 贵阳 上海南 25小时 1982 416
891            

如果我们用889来标识这趟车是没有问题,如果我们用5036/5037这九个字符来标识这趟车也没有问题,但是如果我们只是用5036或5037这其中四个字符来标识这趟车就有问题了。这样的全称来表达一辆连续的列车是合适的,看好多网站上上车票信息的查询中对车次的标示用的就是用5036/5037这样的标示,而不是一个车次来标示来查。

铁路上是通过运行区间来管理的(以前一个抬杠的熟语是说“铁路警察是管长不管宽”说的就是这个道理),狭长的铁路必须分而治之,因而就有了北京段、济南段这样的分段,但是把运行(现在应该讲是飞驰)在其上的火车也分段命名仅仅是为了调度上好区分而搞单双号,douba一个从铁路系统上跑出来的程序员认为是有点过时了。

但是对于开发神器这个系统的开发者来说这个明显是用户现状了,我们开发者不大能指望用户做多大调整,更何况是对于中国铁路这么庞然大物的一个用户了,所以只能是系统来适应。

前面报bug,包括bug描述以及截图都应该是完整、精确、并且尽可能做到可以reproduct的。但是后面的分析,是douba为了博得doudoudouma再次的敬仰当场发挥的,也就老婆孩子面前装13的,完全是基于自己的理解和分析。可能是跑偏了,只能算是对发现的bug做了个简单的外围的分析和定位吧。但求开发神器的伟大攻城狮们了解到,快点改好。douma还惦记着用神器买返程票呢。作为同行,代表doudou和douma对你们的工作表示由衷的感谢,这才是有用的东西,为我们这些屌丝大众造福的好产品。

另外对于大多数和douma一样的急着抢票的神器用户,douba想说,人家 12306官方都说了大家不要使用刷票软件,也就悠着点用吧,千万不要太迷信刷票软件,该动手时实施自己动手尝试下,说不定会有惊喜哦。

完。

原创文章。为了维护文章的版本一致、最新、可追溯,转载请注明: 转载自idouba

本文链接地址: 一款当前很火的抢票神器的重大bug

时间: 2024-10-06 08:12:57

一款当前很火的抢票神器的重大bug的相关文章

玩好一款游戏很重要(人民邮电报专栏《乐游记》之15)

游戏的最大妙用就在于,它或许能指导我们的现实生活,又或者能帮我们获得更好的生活,或许你不相信,但文章中的故事,确确实实发生过,而且是那么的正常. 文/张书乐 年龄大了以后,我发现外语真的很管用.某日中午,我在午睡,朋友在微信上给我发了个单词"relex".被弄醒的我,半天没有回过神来,毕竟快十年没有和"英格里希"(Engliash)打过什么实质性的交道了.向百度.谷歌求助后,我也没得出什么结果,琢磨了将近一中午,后来猛然醒悟,可能是拼写有误的"relax&

安利一个很火的 Github 滤镜项目

安利一个很火的 Github 滤镜项目 园长 1 个月前 简评:通过深度学习,一秒钟让你的照片高大上,这是康奈尔大学和 Adobe 的工程师合作的一个新项目,通过卷积神经网络把图片进行风格迁移.项目已开源,名字叫「Deep Photo Style Transfer」,有兴趣的玩家请移步 Github. 照片风格迁移的项目非常多,比如之前迁移名画的作品(GitHub 地址). (第一张图片是参照,第二张是原图,第三章图片是迁移后)或者各种风格化的项目(7 个 App 可让你的照片变成艺术品). 近

html5很火,他到底与html4有何区别?

HTML5是HTML标准的下一个版本.越来越多的程序员开始HTML5来构建网站.如果你同时使用HTML4和HTML5的话 ,你会发现用HTML5从头构建,比从HTML4迁移到HTML5要方便很多.虽然HTML5没有完全颠覆HTML4,它们还是有很多相似之处,但是它们 也有一些关键的不同.本文就列出了它们之间10个关键的不同之处. 1. HTML5 标准还在制定中 首先要注意的是,HTML5虽然现在很火,但是HTML5标准还在制定中,标准仍在改变.HTML4已经10多年了,不会有任何改变了. 2.

五款国内最火的HTML5前端开发框架【中国寒龙整理发布】

本文主要为大家推荐五款国内最火的HTML5前端开发框架,它们分别是腾讯团队开发的JX.淘宝团队开发的KISSY.百度团队开发的QWrap和Tangram,以及上海康尚实验室推出的Como. 1. JX(腾讯) JX 是一个类似 Google Closure Library 的 Web 前端开发框架,服役于 WebQQ 等大规模的 WebApp. JX 是模块化的非侵入式Web前端框架,开发于2008年,并于2009年开源于GoogleCode ,于2012年切换到Github. JX 框架同时适

一款兼容性很好的标准二级css下拉菜单

<!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> <head> <meta ht

短视频内容生态年终白皮书 很火的一年其实叫创业

文/张书乐 年末岁初,国内最大的短视频平台秒拍推出<2016短视频内容生态白皮书>(以下简称"白皮书"),这是国内首个,也是唯一一个由短视频平台推出并主导的行业趋势报告,为短视频创业者.投资者.平台.行业都起到方向行的指引作用.<白皮书>中列出了一众的数据,例如:从播放角度,秒拍视频日均播放量从年初的3.4亿增至20.4亿,涨幅过6倍:从创作者角度,单月视频播放量超过10万人次的用户从1.5万增长到8万人,涨幅超过4倍-- 在各大视频平台都在纷纷发布自己的年度内

HTML5-前端开发很火且工资很高?

一 前言 晚上逛论坛看到一篇对从事HTML5前端开发的文章写的非常不错,和目前的市场形势差不多,然后我在其基础上给大家进行加工总结一下分享给大家.今天我们谈论的话题是<<为什么从事HTML5前端开发越来越火,工资高,并且还涨的快>>,针对这个问题进行分析分析. 俗话说的好:"没有调查,就没有发言权",同样在市场浪潮中,同样如果没有实际调查,不要轻易发表言论,误导他人. 现在主要从下面几个方面给大家进行总结和分析呢? 二 目录 HTML5前端开发的薪资 市场的供求

最近很火的7大短视频分红平台 每日分红0成本必赚项目汇总

打开支付宝首页在顶部搜索"9713978",即可领红包 [8月1日-9月30日]每天可以领到大额额外红包 天猫聚划算99大促 预售定金膨胀 满300-30 万券齐发:复制€m9C3bdzhkeg€打开手机淘宝领券 抢99购物津贴购物券入口(每满300元减30元) 附上99大促红包官方链接地址, 直接点击链接就可抢红包&购物津贴:复制€wMG0bW3asUf€打开手机淘宝领红包. 这阵子突然冒出来了很多短视频平台,而这些短视频平台的运营模式完全跟抖音快手有所不同,最大的不同之处在

VR现在很火,可能给用户带来快感的暂时只有游戏

VR是什么?其实它本身就是个游戏,能够让人享受快感的虚拟世界,至少目前的技术条件也就这样了. 文/张书乐 原载于<人民邮电报>2016年2月26日<乐游记>专栏 互联网是一个很喜欢制造流行词汇的地方,尤其是用英文字母组成的词汇,如电子商务领域的B2C.C2C,2014年大热的O2O以及2015年的IP,等等.而在2016年,VR这个过去看起来很生冷的词汇,很快流行起来,占据了各大媒体的显眼位置,2016年也顺理成章地变成了VR元年. 如果将VR换成它的中文全称--虚拟现实,或许就没