简介:由阿里云云效主办的 2021 年第 3 届 83 行代码挑战赛曾经收官。超 2 万人围观,近 4000 人参赛,85 个团队组团来战。大赛采纳游戏闯关玩儿法,交融元宇宙科幻和剧本杀元素,让一众开发者玩得不可开交。
说到剧本杀,很多人很好奇,代码大赛到底是如何与剧本杀元素联合的?在关卡外面收集到的线索,到底如何串联起来?咱们请来了本次代码剧本杀的次要设计者陈少滨(阿里云云效代码平台)来具体讲讲。
前言
代码挑战赛、剧本杀、元宇宙,这些词可能独自列出来你都意识,然而放到一起可能就会有点纳闷:这三有啥关系?为了使 83 行代码挑战赛更加乏味,咱们前所未有地将剧本杀元素、元宇宙科幻元素与代码挑战赛联合,打造了一场别开生面的代码剧本杀。
既然是剧本杀,那么天然就要有线索。玩家每次通关,都可能获取 code83 的定制线索,其中不仅蕴含了要害的剧情信息,还有决赛出题人放心题目太难,特意留下的提醒,最重要的是,参加的玩家还能够通过获取的线索换取云效 83 行代码 xCHERRY 定制机械键盘等奢华大礼。
上面,咱们来揭秘一下这场代码剧本杀,看看你是否破获了假相。
线索设计
这次线索的设计的时候,每一条线索都蕴含了决赛题目相干的提醒和剧情相干的提醒,先给大家解释一下决赛题目相干的线索是怎么设计的,看大家有没有错过一些提醒。
“<(?.*)> 能够示意什么呢?”:第一条线索是提醒决赛有正则类型的 bug,因为? 这种用法不是特地罕用,所以在线索里提前给出提醒。
“NPE:No People Emo”:这个就是很间接地提醒决赛里有 NPE 类型的问题,当决赛答题的时候,须要多关注一下有没有什么中央可能会是 null,触发 NPE。
“ 不是什么都会等你,很多事件都是一次性的 ”:这个是提醒可能是有一些“一次性”类型的 bug,如果教训比拟丰盛的话,可能就能意识到这个是指流类型一次性读取的问题。
“ 咱们通常认为 admin 就是 admin”:这其实是在提醒决赛中 admin 可能不是 admin,那可能是什么呢?可能是 ADMIN,或者 admin123 这种,具体的大家在决赛题目中就会理解到。
“ 大家都喜爱全局视角,但全局视角也有它的问题 ”:其实是在揭示你全局类型的变量可能有问题,你可能须要把全局变量换成部分类型的变量。
“ 好的单元测试 => 你看懂了单元测试 = 你看懂了代码 ”:决赛题目中大部分的 bug 都是在单元测试调用的函数中,如果能聚焦地剖析单元测试调用到的函数,就能把大部分的 bug 解决掉。
“ 有的 bug 之所以难找,就是因为它只在运行时呈现 ”:这个是在提醒有一些 bug 可能是无奈间接看代码就能剖析到的,须要联合运行时的调试和诊断,能力发现这些 bug。
“ 别得意洋洋了,快收好你的尾巴!”:这个是在提醒正则匹配读取尾巴的问题。
“ 贪多嚼不烂 ”:这个是在提醒正则匹配的贪心模式的问题。
“ 断点调试是万能的吗?不影响利用自身的观测或者才是更优抉择 ”:这个是在提醒本次决赛的场景是无奈失常应用断点调试的,所以可能须要应用利用观测的能力。
剧情设计
上面咱们进行一下剧情向的解析。最开始咱们收到的是这样的邀请函:
你收到了这封邀请函,但只有一个 YES 选择键,没方法回绝,只能承受。承受了之后,你就进入了咱们的故事线。在咱们的故事线中,以后的工夫线是这样的:
你是一个程序猿 -> 收到邀请函,进入宇宙基地 -> 进入第一扇门,存在缝隙,暗手会偷走贵重的货色 -> 进入第二扇门,百万人名涌动,依据关键词找到对应人名 -> 进入第三扇门,重塑人生 -> 进入第四扇门,发现了本人的人生被代码定义。
这部分的剧情内容是通过 WebIDE 的剧情对话给出的,而剧情线索中,会给出过往的工夫线:
高考过后,走上程序猿路线 -> 电脑中存在后门,导致公司秘密透露,被开革 -> 接触到云晓(阿里云云效),理解云端开发 -> 开革后成为数学老师,思念柯西(Cosy)带来的高效和充斥技术感的生存 -> 疫情降临,钉钉助力在线教育 -> 意识沉睡,想用技术发明价值。
在理解了所有剧情之后,就须要答复三个问题,别离是:你来自什么宇宙、你的实在身份是什么、怎么发明生命的意义。
你来自什么宇宙,其实是在问你从哪里来;你的实在身份是什么,其实在问你是谁;怎么发明生命的意义,其实是问你要做什么,你要到哪里去。这是三个经典的人生问题。
那么具体怎么答复这三个问题呢?想要解决这三个问题,须要先将决赛关卡的 bug 解决完之后,会发现 client 的会返回一些字符串,这些字符串有三个结尾(三个通道),如果依据这三个通道进行筛选,就会发现其实是这三段代码:
通过浏览这三段代码,会发现其实这三段代码正好就是过往工夫线外面的三个阶段。
所以从剧情上的话,能够了解到“你”的人生其实早就被代码定义了。
第一个问题:你来自什么宇宙?当然毫无疑问就是在代码宇宙中。另外,从代码的包名也能够看出:
com.code.universe。
第二个问题:你的实在身份是什么呢?从代码中也很明确了,就是 programmer(程序猿)。当然,理解齐全部剧情之后,更精确的答案应该是一段代码(code)或者说一段程序(program)。
最初一个问题:怎么发明生命的意义?这个其实是略微有一点难的,不像前两题这么直观,须要看残缺个剧情,就会发现剧情里次要强调一点是技术的力量,第三段代码中也明确提到了在经验了人生的大转折之后,向往 Technology 的力量,学习了 DevStudio 的常识,Yunxiao 的常识,Devops 的常识,Cosy 的常识,思考生命的价值。所以这一题的答案是技术(Technology),或者 DevStudio、Yunxiao、Devops、Cosy 都是能够的。
上述就是本次较量的残缺剧情了,最初还有一个附加题:
之前提到了故事线中的工夫线,咱们再来比照一下事实的工夫线:
故事的工夫线:
你是一个程序猿 -> 收到邀请函,进入宇宙基地 -> 进入第一扇门,存在缝隙,暗手会偷走贵重的货色 -> 进入第二扇门,百万人名涌动,依据关键词找到对应人名 -> 进入第三扇门,重塑人生,最终人生(职业)未扭转,过程更加丰盛 -> 进入第四扇门,发现了本人的人生被代码定义 -> 发现假相,阿里云云效邀请你一起用技术发明生命的价值
事实的工夫线:
你是一个程序猿 -> 你收到开赛邀请,参加 83 行代码大赛 -> 开启第一关,解决会造成破绽的平安问题 -> 开启第二关,从百万级别类名中,寻找指定前缀的类名 -> 开启第三关,重构代码,最终业务逻辑不变,代码品质更好 -> 开启第四关,解决 bug,解锁假相 -> 揭晓终局,阿里云云效邀请你一起用技术发明生命的价值
当咱们看完这工夫线之后,最初咱们能够再回过来看这三个问题:你来自什么宇宙?你的实在身份是什么?
怎么发明生命的价值?这三个问题就留给大家思考了。
结语
2021 年第 3 届 83 行代码挑战赛曾经正式收官。你加入的,到底是一场代码挑战赛,还是一场剧本杀,亦或是?你看清假相了吗?
原文链接
本文为阿里云原创内容,未经容许不得转载。