当前位置: 首页 > 后端技术 > Java

用代码玩脚本杀?第三届83行代码大赛剧情官方解析

时间:2023-04-02 09:46:41 Java

介绍:由阿里云云霄主办的2021年第三届83行代码挑战赛已经落下帷幕。2万余人观看,近4000人参与,85支队伍组队对战。大赛采用突破游戏的方式,融合了元宇宙科幻元素和剧本杀,让开发者玩的不亦乐乎。说到剧本杀,很多人都很好奇,代码大赛是如何结合剧本杀元素的呢?如何连接关卡中收集到的线索?我们请来了这次代码脚本杀的主要设计者陈少斌(阿里云云霄代码平台)来详细说说。前言CodeChallenge、ScriptKilling、Metaverse,这几个词单独列出来你可能都知道,但放在一起你可能会有点疑惑:这三个是什么关系?为了让83行代码挑战更有趣,我们史无前例地将脚本杀元素、元宇宙科幻元素与代码挑战相结合,打造了独一无二的代码脚本杀。既然是剧本杀,自然要有端倪。玩家每通关一关,即可获得code83的定制线索,不仅包含关键剧情信息,还有入围者担心题目太难留下的提示。最重要的是,参赛玩家还可以通过获得的线索兑换云霄83行码xCHERRY定制机械键盘等豪华好礼。下面,就让我们来揭秘这场代码脚本杀人,看看你是否已经揭开了真相。线索设计这次在设计线索的时候,每条线索都包含了与最终主题和剧情相关的提示。下面我给大家解释一下最后题目相关的线索是怎么设计的,看看有没有漏掉什么线索。"<(?.*)>Whatcanitmean?":第一条线索是提醒final存在常规类型的bug。由于这种用法不是很常见,所以在线索中提前给出了提示。《NPE:NoPeopleEmo》:这是很直接的提示,决赛中有NPE类的题。final做题的时候需要多注意有没有地方可能为null而触发NPE。“Noteverythingwillwaitforyou,manythingsareone-time”:这是暗示可能存在一些“一次性”类型的bug。如果你有更多的经验,你可能会意识到这是指流式一次性读取的问题。“我们通常认为admin就是admin”:这其实是在提醒,admin在final的时候可能不是admin,那可能是什么呢?可能是ADMIN,也可能是admin123,具体到最后一个题目就知道了。《全局视角大家都喜欢,但是全局视角也有它的问题》:其实就是在提醒你,全局变量可能有问题,可能需要用局部变量替换全局变量。“Goodunittest=>youunderstandtheunittest=youunderstandthecode”:期末题的大部分bug都在单元测试调用的函数中。如果你能专注于分析单元测试调用的函数,那将修复大部分错误。“Somebugarehardtofindbecausetheyonlyappearatruntime”:提醒一些bug可能无法直接看代码分析出来,需要结合运行时调试诊断才能发现漏洞。“不要得意忘形,把你的尾巴拿开!”:这是为了提示正则匹配读尾巴。“Greedyandchewy”:这是一道提示正则匹配贪心模式的题。“断点调试是万能的吗?不影响应用本身的观察可能是更好的选择”:这里提醒大家,断点调试在本次决赛的场景下无法正常使用,所以可能需要具备应用观察的能力。剧情设计下面我们来分析一下剧情走向。一开始我们收到这样的邀请函:你收到了这封邀请函,但是只有一个YES选择按钮,没办法拒绝,只能接受。接受后,您将进入我们的故事线。在我们的故事线中,目前的时间线是这样的:你是程序员->收到邀请函,进入宇宙基地->进入第一道门,有缝隙,黑手会偷走有价值的东西->进入第二扇门,百万名字涌动,根据关键词找到对应的名字->进入第三扇门,重塑人生->进入第四扇门,发现你的人生被代码定义。这部分剧情内容通过WebIDE的剧情对话给出,剧情线索中会给出过去的时间线:高考后走上程序员之路->有后门在电脑上,导致公司机密泄露被炒鱿鱼->接触云霄(阿里云云霄),了解云开发->被炒鱿鱼后成为一名数学老师,怀念Cozy带来的高效技术生活->疫情来了,钉钉助力在线教育->意识觉醒,想用科技创造价值。了解所有剧情后,你需要回答三个问题,即:你来自哪个宇宙,你的真实身份是什么,如何创造人生的意义。你来自哪个宇宙,其实就是问你从哪里来;Whatisyourtrueidentity其实就是问你是谁;如何创造人生的意义,其实就是问自己想做什么,要去哪里。这是三个经典的人生问题。那么如何回答这三个问题呢?要解决这三个问题,需要先解决最后关卡的bug,你会发现客户端会返回一些字符串。这些字符串具有三个开头(三个通道)。如果你按照这三个通道去筛选,你会发现其实就是这三段代码:通过阅读这三段代码,你会发现这三段代码其实就是过去时间线中的三个阶段。所以从剧情来看,可以理解为“你”的人生早已被代码定义。第一个问题:你来自哪个宇宙?当然在代码宇宙中是毫无疑问的。另外,从代码的包名也可以看出:com.code.universe。第二个问题:你的真实身份是什么?从代码上也很清楚是程序员(programmer)。当然,在了解了整个剧情之后,更准确的答案应该是一段代码(code)或者一段程序(program)。最后一个问题:如何创造生命的意义?这其实有点困难。它不像前两个问题那么直观。看完整个剧情,你会发现剧情中主要强调的是科技的力量。第三段代码也明确提到,在经历了人生的大转折之后,向往Technology的力量,学习了DevStudio、云霄、DevOps、Cozy的知识,思考人生的价值。所以这个问题的答案是Technology,或者DevStudio、云霄、DevOps、Cozy都是可以的。以上就是本次比赛的完整剧情,最后还有一个追加问题:之前在故事线里提到了时间线,我们来对比一下真实的时间线:故事的时间线:你是程序员->收到邀请字母,进入宇宙基地->进入第一道门,有缝隙,黑手会偷走贵重物品->进入第二道门,百万名字涌动,根据关键字找到对应的名字->进入第三道一扇门,重塑人生,终于人生(职业)没变,过程更丰富->进入第四扇门,发现你的人生被代码定义->发现真相,阿里云云霄邀你使用科技共创生活价值现实时间线:你是程序员->你收到开始比赛的邀请,参加83线代码大赛->开启第一关,解决会造成漏洞的安全问题->开启第二关,从百万级类名开始,寻找指定前缀的类名->开启第三关,重构代码,最终业务逻辑不变,代码质量更好->开启第四关,破解bug,解开真相->揭晓结局,阿里云效应邀你一起用科技创造生活价值。看完这条时间线,我们终于可以回头看看这三个问题:你来自哪个宇宙?你的真实身份是什么?如何创造人生价值?这三个问题留给大家思考。结语2021年第三届83行代码挑战赛正式落下帷幕。你是在参加代码挑战,还是脚本杀戮,或者什么?你看到真相了吗?原文链接本文为阿里云原创内容,未经许可不得转载。