[i=s] 本帖最后由 GaiaApostle 于 2015-3-14 12:14 编辑
先说一句我的个人总结:能带损管带损管。我等普通百姓只能坐等大神们解析,不过这次似乎对于该类bug有眉目了。只有以上两句话是本人的观点,以下内容都是转述或概括。
图终于弄好了……
一、真神说不是他的锅
本图原为magami微博发布的
然而我没有sina微博号所以看不了这么长的图
故本图转自尼姑庵帖子http://bbs.ngacn.cc/read.php?tid=7942655
注意:此分析有人提出质疑,目前不能保证是正确的
←图在这
同一条微博中真神写道:
“4点才下班,回来不睡觉分析这个我也是蛋疼…这**,拿着这个去找运营估计还会被反咬一口未经许可反编译程序侵犯著作权。有精力的孩子可以继续挖,APIConnectionBase基类的本体我猜应该在Core.swf里,不过这文件有加密,破解估计需要点时间。让我背锅我肯定不乐意的,总之我现在很困先去躺了…”
二、该帖子209楼以及另一个帖子中有几人对真神的分析提出质疑
http://bbs.ngacn.cc/read.php?tid=7943837,注意不要看逗比的楼主,看下面其他人的讨论
目前,真神的说法暂不能确认是否正确。
209楼:“来赌五毛,真神要自己打脸
Load方法重载这么写的:
Line 17: 设定要加载的URL是相对地址: api_req_sortie/battle
重载的load方法是这么说的:
Line 24: _loc2_的Object为用_data.dto.getEmulateData
Line 26-28: 如果_loc2_为空,那么调用父类的load方法。
Line 29-37: 如果_loc2_非空,那么Debug.log输出字符串,使用_handleLoadComplete方法处理null和_loc2_。之后如果param1非空,则调用其dispatchEvent方法,参数是新的Event(COMPLETE)
以上是技术向内容。换用非技术向的,就是这么说:
如果服务器返回的内容之中可以用一个程序解析出来数据,就走过程2(29-37).否则就走过程1(25-28).
但是看红字。里面有Emulate。这个英文什么意思呢?对,是模拟的意思。所以我推测DMM有一台测试服务器,这台服务器上面出击的话会返回一个模拟(测试用)的数据。很有可能测试服务器不会沉船。
而且在29-37行,如果是模拟数据存在,那么还会输出到调试一行字。这个字是[Emulate]战斗开始。
从整个程序看来,对于出击做两次请求的唯一情况是:_data.dto.getEmulateData解析出的东西无效,才会做第二次请求。
DMM可能的锅是,服务器不小心打开了调试开关,然后模拟请求打一次,父类的load方法再来一次。这就是两次日战。
剧透日志的锅,我源代码查到JavaEE的代码就没有继续查下去。我是没有看到任何默认请求的超时行为是重试的。
在这里我想要问真神,防猫的代码敢不敢放出来看看?我一直对于防猫有很大疑虑,一般来说猫都是数据不完整导致的,这应该防吗? ”
三、已经出现一位苦主表示要跟角川刚正面
http://bbs.ngacn.cc/read.php?tid=7944200
真的勇士,敢于直面甩锅的角川{:4_90:}
等待结果
いい風 发表于 2015-3-14 11:08
刚仔细看完你的签名之后,才发现这简直丧心病狂、无法直视
你在這個嚴肅的貼子裡說這種話也令我無法直視{:4_114:}
{:4_114:}原po主是逗比嘛,战斗过程的计算是上交到服务器进行的你非要拿一个纯数据传输的“补给”来比。补给有提交计算job到server嘛,不一样这不是废话嘛
{:4_114:}对面的服务器是是个集群,你上交的计算job分配给某一台机器传不回来的可能性是蛮大的,job重分配在一个集群里不是很正常的事么。
{:4_102:}{:4_103:}就从这两段我没看出来dmm有锅要背,所以原po主到底在抹什么?
不明觉厉_(:зゝ∠)_
深海藻类 发表于 2015-3-14 11:11
你在這個嚴肅的貼子裡說這種話也令我無法直視
{:4_88:}实在是情不自禁就吐槽了
看贴吧里的BUG记录帖基本都是有用防猫功能的才出了事难道真的跟防猫有关系? 反正我改host战斗开始那卡了不知道多少次但就是没事。。。也许我脸帝吧 {:4_117:}
{:4_111:}用的VPN,暫時沒啥事
其实一直对防猫的设计有疑问,大家可以试一下,在发出一个请求命令(比如出击)时,断开网络,显然发送的数据包无法到达娇【关ww键ww词】喘服务器,这个命令会认为失效。但如果用岛风狗的,则会暂存这个命令,再次联网后发送到服务器。
假定在网络环境非常差的情况下,一个出击命令在网络延迟很高时被岛风狗保留,而因为设计缺陷,命令实际在延迟若干时间后是到达服务器的,但岛风狗认为服务器没有接收到,继而在它判断网络联通后再次进行发送,则会造成所谓的同一点重复出击。
当然以上是最基础的揣测,真神不公开岛风狗源码的话,始终是无法逃过技术宅们的质疑。
在这里我想要问真神,防猫的代码敢不敢放出来看看?我一直对于防猫有很大疑虑,一般来说猫都是数据不完整导致的,这应该防吗? ”
又一个想看人家代码的SB,原PO八成是会点三脚猫功夫,看过一两本编程书就以为自己是大神了的SB,
有本事自己反编译破解,然后找出问题打真神脸,要么就别废话。
学渣看不懂{:4_88:}
[i=s] 本帖最后由 花嫁扶桑 于 2015-3-14 11:59 编辑
駆逐艦磯風 发表于 2015-3-14 11:46
其实一直对防猫的设计有疑问,大家可以试一下,在发出一个请求命令(比如出击)时,断开网络,显然发送的数 …
娇【关ww键ww词】喘服务器不接受2次相同的数据的,这个之前NGA也有大神说明过,真神也有说明过,
要人家交出代码,我说的难听点,对不起,伤到你请原谅,是无知的表现,住着庙骂和尚,你觉得岛风GO有问题,可以不用,另外一说,11区也有不少反馈重复战斗,或者出击回来船没了的情报,NICO上直播出BUG也不是第一次了,这锅也能甩给真神,我也是醉了,忍一上午了。
围观dalao
花嫁扶桑 发表于 2015-3-14 11:56
娇【关ww键ww词】喘服务器不接受2次相同的数据的,这个之前NGA也有大神说明过,真神也有说明过,
要人家交出代码,我说的 …
交出代码当然是不可能的了,说得好听点这牵涉到盈利,已经是商业机密范畴了。但是也挡不住外界的质疑。
娇【关ww键ww词】喘服务器是不是接受2次相同数据,哪怕有人进行过验证,那也只是客户端模拟,模拟能界定所有情况么,那又是个大大的问号了。
这事情谁背锅不是最重要的,但是用插件的娃总要警醒一些。至少没用插件的娃们,基本很难遇到这种极端情况。