`
找不着北
  • 浏览: 316373 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我曾遇到最大的一个bug

阅读更多

Bug从来不是个让人高兴的东西。然而也有例外,那就是当你弄明白了这个Bug的时候。本文讲就是我曾经遇到的一个最大的、至今仍未解决的 Bug的故事。

年青时,我曾经开发了一些魔兽世界 的插件。那时候我除了 沉迷于这个游戏之外,还对开发游戏外挂非常感兴趣,你知道,那是一种非常上瘾的感觉,特别是当发现有新的公共API公布时,真是兴奋的不得了。 这样我也就有了巨大的动力去学习 Lua 语言了,它是个非常有意思的编程语言。

当时,我和我的一个朋友开发了一个叫做 FriendNet 的插件,这是个非常棒的插件。 它能帮助我们在游戏中解决一个很大的麻烦: 找到你真正的朋友,防住探子。 这个插件会把你游戏中的好友清单传送给你的所有朋友。反过来,也会取回他们的好友列表。最终,你的好友数量会不断增加,而且里面不会有探子。

你知道,插件API里绝对不会给你提供任何形式的网络交流通道的,所以,我们只好一种黑客注入方式来传送好友清单。 我们的做法是把这个清单序列化,通过在线游戏聊天室发给对方,用私语通知对方接收这些名单。

是的,现在大家都玩Facebook,但几年前我们就是通过这种地下方式在这个虚拟世界里扩展我们的社会关系网的。而且不亦乐乎。

毕竟,FriendNet还是有一些问题存在。P2P程序都是很难维护,每当你有Bug修复、版本升级时,你很难让所有的用户都立即升级他们的 程序。 于是出现了不同版本一起在线通信,导致了很多莫名其妙的事情出现,很难定位是那块出了问题。

其中有一个bug特别的让人困惑,难以确定:每隔几天,FriendNet就会出现一些不正常的信息,会导致这个插件的有些界面上一片混乱。 我们收到了相当多的bug反馈,而且确信这个问题是真实存在的,但不管我们怎样的努力测试,总是不能复制这样的现象。 这是个来自地狱的bug。最终我们放弃了,为了推托责任,我们就说这个问题是由于魔兽恶劣的API导致的。

如今我已经不玩魔兽世界好几年了,然而突然有一天我明白了这个问题是怎样产生的了。当明白了是什么地方的出来问题后,我意识到我们是被习惯性的 思维方式蒙蔽了。

你知道,你在游戏中扮演的人物在魔兽世界里是可以喝醉 的。 当了喝了太多的烈酒后,你的屏幕开始变形,变模糊,而且你走路走不了直线。 同样,当你在聊天时敲入一段文字:

Penelope says: I'm so wasted

电脑会给你显示成:

Penelope says: I'm sho washted ...hic!

因为FriendNet是把所有的交流信息全部打包发送的,所以每当在群发的人中有喝醉的时,信息就会变成乱码。

FriendNet 已经在插件网站上消失很长时间了,估计你现在已经不能下载到它了。我怀疑也许它还能在现在的最新版的魔兽世界里使用。但我始终没有去修复这个bug,每当 我回想起这个事,我都会觉得非常有趣。

 

来自 外刊IT评论

 

:)

27
19
分享到:
评论
11 楼 smzd 2010-06-18  
phyeas 写道
  一个计费视频 系统为了测试把测试账号写死了,上线的时候忘记改回来,用了一个多月,客户方损失几万RMB。。。

很强大,下次用我的银行账户测试
10 楼 only_xxp 2010-06-10  
我也是wow玩家!
9 楼 htallen 2010-06-10  
老外语言很幽默
8 楼 guoapeng 2010-06-10  
楼主广告里的游戏不错!
7 楼 conservatism 2010-06-10  
hehe
6 楼 hanjiangit 2010-06-09  
ipconfiger 写道
电信支付系统的支付按钮没有屏蔽重复点击,有个牛人因为网速慢狂点弄出了一万多的消费

感谢国家 ...  发现好多政府部门的多好烂  还振振有词的说 只支持IE浏览器 哈哈
5 楼 ipconfiger 2010-06-09  
电信支付系统的支付按钮没有屏蔽重复点击,有个牛人因为网速慢狂点弄出了一万多的消费
4 楼 evilgod 2010-06-09  
这不叫bug吧
3 楼 phyeas 2010-06-09  
  一个计费视频 系统为了测试把测试账号写死了,上线的时候忘记改回来,用了一个多月,客户方损失几万RMB。。。
2 楼 george6684 2010-06-09  
哈哈

我光玩了,没想着写插件,惭愧。。。
1 楼 找不着北 2010-06-09  
Bug从来不是个让人高兴的东西。然而也有例外

相关推荐

    bug2algorithm_matlab_bugalgorithm_bug2_

    这个压缩包文件"bug2algorithm_matlab_bugalgorithm_bug2_"显然包含了用MATLAB编写的一个算法,名为"bug2algorithm.m",它可能是对"Bug 2 Algorithm"的实现,这是一种经典的路径规划算法。 "Bug 2 Algorithm",也...

    低级bug耗费12小时Fix

    本文主要探讨一个关于软件开发中的低级bug排查案例,该bug虽然简单却导致了一个原本简单的程序耗时超过12小时才得以修复。通过深入分析这个案例,我们可以从中汲取宝贵的经验教训,了解在开发过程中如何避免此类问题...

    windows server 2008 r2 bug修复补丁

    在Windows Server 2008 R2操作系统中,可能会遇到一个严重的性能问题,尤其是在服务器环境中,这涉及到套接字(socket)资源的管理。当系统出现"No buffer space available (maximum connections reached?): JVM_...

    面试Java程序员最可能遇到的问题考试大全

    44. **一个.java文件中的类数量**:一个文件只能有一个public类,但可以有多个非public类。 45. **Java内存泄漏**:虽然有垃圾回收,但不合理使用可能导致内存无法释放。 46. **多态的机制**:通过方法的重写和向上...

    Beetle,摇一摇在github、gitlab和azure devops上创建bug报告!.zip

    GitHub是全球最大的开源软件开发平台,它提供了一个基于Git的版本控制系统,允许开发者存储和管理代码,同时提供了一个平台进行项目协作,如问题追踪、代码审查等。开发者可以通过创建issue来报告或讨论项目中存在的...

    UISlider控件4个bug的修复patch 2014.7.28 BY:Redrain

    duilib是一个流行的开源UI库,用于快速开发Windows和Android平台上的富客户端应用程序。 首先,让我们深入了解一下这四个bug: 1. **值不准确**:在某些情况下,UISlider可能无法正确地反映用户的滑动操作,导致...

    MySQL关于exists的一个bug

    按常理,`MAX()`函数在这里不应该改变`EXISTS`的逻辑,因为它只是在子查询中找到一个最大值,并不影响`EXISTS`检查是否存在匹配的行。然而,实际情况并非如此,这可能是因为MySQL引擎在处理这种特定情况时的bug。 ...

    交友插件[更新BUG补丁] For PhpWind7.3.2.rar

    《详解PhpWind7.3.2交友插件的更新与BUG补丁》 在Web开发领域,论坛系统作为用户互动的重要平台,...通过细心的操作和及时的更新,我们可以使这个交友插件发挥出最大的潜力,为用户创造一个更友好、更稳定的互动环境。

    自定义事件解决重复请求BUG的问题

    最近在开发一个组件的时候,遇到了一个很有意思的BUG。。。 BUG的背景 最近在开发一个组件,好不容易开发好了转测试。然后,测试给我提了一个这样的bug,orz… 因为是一个组件,最大的好处就是可以随处复用,随处...

    微信QQ新浪微博第三方登陆最新支持iOS9 64位 无BUG版

    "微信QQ新浪微博第三方登陆最新支持iOS9 64位 无BUG版"这个资源就是为开发者提供了一个针对iOS 9系统,64位架构优化的第三方登录解决方案。 1. **第三方登录服务**:第三方登录服务是应用程序允许用户使用其在其他...

    做尚医通项目遇到的问题及相关问题笔记

    解决方法是,创建一个临时表,使用以下语句:CREATE TABLE temp( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10), created_at timestamp NULL DEFAULT '0000-00-00 00:00:00', updated_at timestamp NULL...

    用于复现 OOM bug,模拟JVM调优经历-JVMTest.zip

    "用于复现 OOM bug,模拟JVM调优经历-JVMTest.zip"文件提供了一个实战平台,让我们可以模拟JVM内存状况,学习如何识别和解决内存溢出问题。 首先,JVM的内存区域主要分为堆(Heap)、方法区(Method Area)、虚拟机...

    jquery.uploadify.js修复IE9 IE10浏览按钮点击无效的bug

    jQuery Uploadify.js 是一个非常流行的JavaScript插件,它为网站提供了优雅的多文件上传解决方案。这个插件使得文件上传变得更加简单,用户可以方便地选择并上传多个文件,同时提供进度条显示等交互效果。 然而,...

    TextView解决中英文换行bug和点击显示全部功能

    这个问题通常出现在当一个英文单词与一个中文字符相邻时,由于英文单词内部不能断行,系统可能会在英文单词和中文字符之间进行换行,从而影响了布局的美观和阅读体验。为了解决这个问题,我们可以使用特定的设置或...

    kbmmw4.93 企业版 内存表

    KbmMW不仅可以用于delphi 开发三层和多层系统,还可以开发移动端的软件,是一个很好的中间件软件. KbmMW在国外社区很火,国内可能很多人对kbmMemTable都不陌生,而KbmMW也是基于kbmMemTable做的封装。我对KbmMW最大的...

    说明文档1

    当遇到难以处理的数据格式时,可以尝试数据转换,比如将MIDI数据映射到不同的坐标系统,或者创建一个数据流模型,让音符信息在特定空间内流动并进行处理。这种方法可以帮助简化逻辑,并可能更容易地发现和修复bug。 ...

    PHP中获取变量的变量名的一段代码的bug分析

    这实际上指向了一个更大的问题:PHP在处理递归函数时容易遇到的最大递归深度限制问题。当函数内部有对`$GLOBALS`的递归调用时,可能会很容易超出脚本的最大递归深度。虽然在这个特定的`getVarName`函数中没有直接的...

Global site tag (gtag.js) - Google Analytics