MicrosoftOfficeWord(2000以上的版本)文档,在其中输入一个“胡”字(隶书或者幼园),将字号设大(值在100左右或将显示比例增大为500%),按鼠标右键,在菜单中选择“字体”,将其改为空心字,然后会发现,“胡万进印”四个字出现在“古”字旁的“十”字中间。消息传开后,很多网民对此议论纷纷。对此,微软表示将很快给出意见,并表示在最新版的word中,已经解决了这个问题。
把梗埋在代码里,最多一两年就没了,在 API 里,也许能撑个三五年,但是如果把梗埋在基础通讯协议握手验证字段里,就能永垂不朽了……
我2006年在百度实习的时候做百度搜藏(还有人记得这个东西么),彼时 tech lead 福至心灵想要设计一个新的通用的一点的 RPC 协议。最后不知为什么写代码的变成了我。
这种二进制协议的消息头里经常会放一个类似江湖切口的 magic number 验证通讯两端是不是讲的同一个协议大小端是否一致之类。然后我放了一个
0xfb709394 (粤语数字梗:出来搞三搞四)。
后来这个协议 somehow 变成了百度一个蛮通行的通讯协议,几乎全百度的服务器都在呢喃着这句粤语切口,网卡灯的每一次闪烁都是来自大吃省的亲切问候。机房外的北京城漫天黄沙,机房里的空气却是初夏广东露天大排档的味道。
作为一个握手验证字段,要改只能服务端和客户端一起改…… 以任何大点的公司都差不多的一团乱麻的内部服务依赖状态这基本是没法动了。就算到了全新的 BRPC, 也不得不留下对这个老接口的兼容代码:
https:// github.com/brpc/brpc/bl ob/master/src/brpc/nshead.h#L21
天津某银行的某系统,自动创建的临时目录叫“lxb”,这是开发人员前女友的名字。该开发人员已经你行一个领导,所以笑的时候注意收敛一点。
在一个程序中,彩蛋的设置见仁见智,如果设得好,不但能给开发者增加乐趣,还能给用户带来惊喜。但是彩蛋的性质是锦上添花而不能反客为主,它的目的从本质上讲还是给用户更多的好感,从而提高用户黏性。
举个例子,我在Win10应用《纸书科学计算器》里设的彩蛋,在正常的使用中,界面是这样的:
如果点击Ans键再点击等号,就会触发彩蛋,出现一个用数学表达式拼成的小超人“Answer Man”:
当时考虑彩蛋的时候想过很多触发方式,但是为什么选择了这种?因为这种方式不影响正常功能但又相对容易触发。
在计算器里,“Ans”常量表示上一次计算结果,但是《纸书》既提供了历史记录功能,又可以在表达式输入过程中同步输出答案,因此先输入“Ans”(不参与任何运算)再点击等号基本是多次一举的操作,在这里加入彩蛋不会影响正常的功能。再者这种触发方式已经足够简单,老用户在长期使用下触发的概率相对更大,免于因为藏得过深而变成自娱自乐的尴尬。
看到话题里有前端开发,就再说一些前端的彩蛋。前端比较经典的彩蛋触发方式就是404页面和控制台。
404页面的彩蛋其实更看重设计师的脑洞,分享几个有趣的,其中一些都是知名的企业官网:
The useless web index,在404页面上直接放了一段狐獴东张西望的视频当作背景,十分可爱,有点Bing的味道。
Figma,这个404页一看就是设计师的点子,因为404三个数字是带锚点的。以为人家的彩蛋只有这些?这个图案不光带着锚点,还真的能编辑:
原来真身是一个复杂的canvas,没想到吧!
Starbucks,星爸爸的404页面上有一圈咖啡渍,而咖啡杯已经被人端走找不到了,含义十分微妙。而左边是十分详尽的说明和用户指导。
Blizzard, 暴雪的404延续了其冷酷的设计,一张被锤子砸得面目全非的网页告诉用户:你真的走错路了。
这些404页面不仅创意十足,而且设计风格是和网站的其他部分一脉相承的。作为彩蛋在令人眼前一亮的同时又心旷神怡,很好地缓和了“找不到页面”给用户带来的焦虑感。
而控制台彩蛋则更是前端工程师的施展舞台。比如知乎网页版,在Chrome、Firefox或Edge等浏览器按下F12,就可以看到控制台里的彩蛋:
一般能调出控制台的用户都是相对专业的用户或开发者,所以不少IT企业喜欢在这里留下招聘信息。但是也有例外,有一些注重设计的小型网站会在这里留下设计工作室的名字和版权等信息。被发现的时候既能带给用户一股geek风又能保护代码版权。
记得我的毕业设计是为学院的工作室开发官网(工作室主营设计/影视后期),当时留了一个格式化的控制台彩蛋,带版权信息:
这个网站还有一个内部作品平台的入口,只有工作室成员才可以进入。因为工作室成员都在一个学院而且较少,不太想因为这个入口打破原有的设计,于是我想办法把它藏了起来,做成了另一个彩蛋。最后入口放在了页脚Logo后面,上线的时候内部通知就好了。
而在2016年Edge浏览器推出不久后,我在另一个项目中对其表示了支持。如果用Edge访问这个网站,控制台会偷偷输出一句话:
然而根据这个网站的流量和用户群体,我觉得这个彩蛋应该永远不会被人发现……
在注释里加东西弱爆了,彩蛋就要所有人都能看到!
说说我曾经在公司线上代码里悄悄隐藏过的彩蛋
1. 在调试器里打飞机的游戏。利用不断的清屏和字符渲染实现游戏互动。
2. 在几年前的某个圣诞节,悄悄把线上主战的代码全部压缩成了圣诞树的 ascii 字符画(不要怀疑,还可以继续运行)。后来好多代码在线上存在了好几年。。。(这个视频是前几天压出来祝自己生日快乐的,可能很多人会觉得无聊,但是这个真没那么容易实现,我自己觉得潮爆了
原理见:https://zhuanlan.zhihu.com/p/24506119
https://www.zhihu.com/video/968188049419624448
有人说工作不饱和,说两点:
1. 你们的工作真的饱和到每天上班无时不刻不在认真工作吗?如果是请联系我,高薪聘请。
2. 这些小玩意大多是业余熬夜写出来的(怕拖久了忘了要怎么实现)
3. 其实我们公司的工作的确不饱和,我们考察的是你是否完成既定任务,是否达成个人成长,具体你要怎么分配上班时间,无人关心。
第一个彩蛋的源码很多人要,主要是这个彩蛋是四五年前的产物了,不太好意思拿出手,不过豁出去了,代码不是很好看,随意吧。
(function(){ if(!window.console){window.console ={log:function(){}};return;} var me = 19; var Star = function(){ this.x=0; this.speed = 1; this.y=0; } var score = 0; var strs = function(){ var result = ''; for(var i=0;i<20;i++){ result+="
" for(var n =0;n<40;n++){ var now = '一' if(i==19&&n==me){ now="码" } if(i==19&&n==me+1){ now="农" } stars.forEach(function(star){ var x= Math.floor(star.x); var y = Math.floor(star.y) if(x==n&&y==i){ if(Math.abs(star.y-19)<1&&(n==me||n==me+1)){ die() } now="车" } }) result+=now; } } result+=" 《全民躲车车》得分:"+score return result; } window.onkeydown = function(e){ if(e.keyCode==37){ me-=1; if(me<0) me=0; }else if(e.keyCode==39){ me+=1 if(me>38) me=38 } } var count=0; var die = function(){ clearInterval(timer1) clearInterval(timer2) clearInterval(timer3) setTimeout(function(){ console.log("游戏结束,您的得分:"+score+",分享到微博:%o","http://service.weibo.com/share/share.php?url=http%3A%2F%2Ftangeche.com&pic=http://img.souche.com/test/aab0c3d397799533e446759083c2f97c.gif&title=%E6%88%91%E5%9C%A8%E3%80%90%E5%BC%B9%E4%B8%AA%E8%BD%A6%E3%80%91%E7%8E%A9%E7%A0%81%E5%86%9C%E4%B8%93%E6%9C%89%E6%B8%B8%E6%88%8F%E3%80%8A%E7%A0%81%E5%86%9C%E8%BA%B2%E8%BD%A6%E8%BD%A6%E3%80%8B%E8%8E%B7%E5%BE%97%E4%BA%86"+score+"%E5%88%86%2C%E5%BF%AB%E6%9D%A5%E6%8C%91%E6%88%98%E6%AF%94%E6%AF%94%E7%9C%8B%E3%80%82%E7%94%A8%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E6%89%93%E5%BC%80www.tangeche.com%E9%A6%96%E9%A1%B5%EF%BC%8C%E6%89%93%E5%BC%80%E8%B0%83%E8%AF%95%E5%B7%A5%E5%85%B7%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8F%B0%EF%BC%8C%E8%BE%93%E5%85%A5start%28%29%3B%E5%9B%9E%E8%BD%A6%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8C%89%E7%85%A7%E6%8F%90%E7%A4%BA%E5%8D%B3%E5%8F%AF%E5%BC%80%E5%A7%8B%E6%B8%B8%E6%88%8F%E3%80%82%40%E5%BC%B9%E4%B8%AA%E8%BD%A6") },100) } var stars = [] var appearP = 1 var timer1,timer2,timer3; var begin = function(){ timer1 = setInterval(function(){ var createCount=Math.floor(Math.random()*5*appearP) for(var i=0;i<createCount;i++){ var star = new Star(); star.x = Math.floor(Math.random()*40) star.y = 0; star.speed = Math.random()*appearP;//Math.floor(Math.random()*3+1) stars.push(star) } },1000) timer2 = setInterval(function(){ stars.forEach(function(star,i){ star.y+=star.speed; if (star.y>=31){ stars.splice(i,1); score++ } }) console.log(strs()) count++; if(count>300){ console.clear() count = 0; } },100) timer3 = setInterval(function(){ appearP*=1.1 },3000) } console.log("输入 start(); 后即可开始《码农躲车车》游戏!") window.start = function(){ appearP=1.1 starts=[]; score=0; me = 19; count = 0; console.log("%c请先用鼠标点击一下弹个车网页页面,游戏需要捕捉网页上的键盘事件(你应该懂吧)!","font-size:16px;color:#ff6700;") console.log("使用键盘左右键移动最下方的码农,躲开所有的汽车,汽车数量和速度会一直增加,看看谁坚持的最久吧!") var countdown = 6; setTimeout(function(){ if(countdown--<=1){ begin(); }else{ console.log(countdown) setTimeout(arguments.callee,1000) } },1000) return ("倒计时!") } })();
如果在你的概念里,程序员是古板、木讷、不解风情的存在,说明你对程序员的了解太少了!他们也有万种风情,只不过都留给了代码……比如,用无限才华生成的魔法彩蛋,尔等芸芸草民看不透,看不透。
俗话说,模仿是最好的学习方法,所以,我们先来看一些著名有趣的彩蛋案例。
1、火狐浏览器Mozilla之书和机器人造访
这个历史性的彩蛋一直延续在Netscape系列之中,包括了Netscape/Mozilla/Firefox。打开浏览器,在地址栏里输入“about:mozilla”,这本书就会打开一页(如图),显示一段圣经体。至于是哪一页,取决于你的浏览器版本。这个彩蛋被称为Mozilla之书。
在火狐浏览器的地址栏里输入“about:robots”,就会有可爱的机器人前来造访!
2、科那美秘技Konami code
Konami code相信大家都知道,就是魂斗罗三十条命的秘技,即:↑↑↓↓←→←→BA。
Vogue是一本时尚杂志,在其英国官方网站:http://www.vogue.co.uk/,输入Konami code,你会看到一个奇怪的东西呼啸而过……
digg还记得吗?打开网站:http://digg.com/,同样在search中输入Konami code,接下来将会有神奇的事情发生。
加拿大银行发行新纸币的官网中,竟也隐藏了 Konami Code。打开页面输入暗号就会出现特效。据官方表示隐藏 Konami Code 十分有趣,所以就用来庆祝加拿大150周年。传送门:
http://www. bankofcanada.ca/banknot es/banknote150/
3、Imdb网站神评分电影
Imdb是一个电影库及影评网站,里面有一部电影叫摇滚万万岁(This Is Spinal Tap),打开这个电影的页面:https://www.imdb.com/title/tt0088258/ 乍一看也许不会发现有什么奇怪的地方,但是仔细一看,这部电影的最高评分竟可以达到11分!显然Imdb的程序员爱死了这部电影。
4、Google image打砖块游戏
打砖块是最著名的一款游戏,影响力极大,打开Google图片搜索,搜索关键字“Atari Breakout”,瞬间就出现了一个打砖块游戏,工作之余不妨玩两局~
5、可口可乐公司源代码logo
打开可口可乐的官方网站:https://www.coca-colacompany.com/ ,查看源代码,你会看到一个字符组成的可口可乐Logo。
6、百度搜索关键词
打开百度搜索,在搜索栏里输入以下关键词:也会出现意想不到的小惊喜哦~
看到这些彩蛋有没有眼前一亮?其实程序员的彩蛋主要通过注释、程序体、404和505、功能、以及效果等等几个地方来展示他们的才华。
1、注释中设置彩蛋
注释是程序员最常留彩蛋的地方,大多数留的是程序员的个人信息、程序的功能以及后续修改的说明等,但是有些程序员喜欢在注释里玩点花样,例如写表白呀、吐槽呀之类的,当然像某米音乐的程序员这样做就不太合适了。
这种通过注释设置彩蛋的方法是最简单的,比如有一些恶搞派为了避免别人在使用自己的代码时将自己的注释信息删除,就有了以下这种注释:
哪里有压迫哪里就会有反抗,有些程序员偏偏不信邪,直接删掉,结果在运行程序的时候出现报错,死活运行不下去,经过精密的查找,最后在代码里发现了这样的语句:
这位调皮的程序员是通过正则匹配的方式对全文进行检索,检索“Do not try to delete this comment”和“请不要删除这行注释,不信你就试试!”这两句话,如果检测不到就直接调用控制台信息报错,也是够调皮的。
2、通过404和505页面设计彩蛋
在程序编写过程中,尤其是网页程序,经常会出现“404找不到网页”以及“505服务器错误”的情况,为了更友好的人机交互体验,程序员们越来越重视起这两个页面的设计,以致这两个界面几乎已经成为程序员们炫技的角斗场。
比如Magic Leap,这家公司最爱干的事就是给自己家的产品赋予神秘感,甚至是连自己家网站的404页面都不放过。
Magic Leap官网的404页面看上去很立体,“404”被设计的颇有颓废感,其中一个4甚至是躺倒的,大部分人看到“404”之后就关闭网页了,殊不知这里隐藏着一个彩蛋:当你按住鼠标左键画圈,就会出现一个宇宙的界面,随着你圈数的增加,宇宙也会随之变大,点击就会进入一个虚拟宇宙,这是一个裸眼VR的宇宙场景,效果十分震撼,左右拖动鼠标还可以遨游宇宙。
是不是耐不住好奇心了?送你去感受下,传送门:https://www.magicleap.com/404
3、通过前端页面设置彩蛋
程序大部分都是后台行为,用户一般看不到,但是前端程序却是个例外,作为后台和用户的沟通桥梁,程序员们自然不会放过这个设置彩蛋的绝好机会,甚至有些脑洞大开的程序员通过调试信息的方式进行人才招聘,比如在广告上嵌入一个难解的数学题,引起程序员们的注意;有的直接在电视屏幕上播出动态问题;有的直接来一句莫名其妙的话,然后扔一个邮箱,比如Google网站上,曾经针对搜索编程问题的人屏幕裂开出现一个问题:你和我是同类,咱们使用的是同一种语言(暗示都是程序员),你是否愿意接受挑战?
程序员Max Rosett有一次在使用Google搜索编程语言的问题时,就遇到了这个页面,然后他点击了“接受”。
在回答了一些编程问题通过挑战后,他被要求发送一份简历到指定邮箱,不久后便收到谷歌的面试邀请,是的,他现在已经是谷歌的一名程序员了。
无独有偶,百度公司现在也在用前端彩蛋的方式进行人员招聘,在百度页面,按下Fn+F12进入到调试界面,便可以看到这段招聘信息:
很像闹着玩对吧,如果点击那里的职位介绍网址,你真的会跳转到百度的招聘网页。
其实这种招聘方式还是很有目标性和针对性的,能够找到这些彩蛋的都是业内人士,也证明你对百度的前端很感兴趣或者正在做测试,而程序员需要的就是这种探索欲和好奇心。
4、设置效果彩蛋
还有一类常见的彩蛋叫做效果彩蛋,比如原来的EXCEL2000内嵌的赛车小游戏,就是属于效果彩蛋,而另一种效果彩蛋就是为了让你满足一些特殊情况下的需要,比如,在微软word文件中,只要同时按下Ctrl、Shift、Alt,再点击带问号的键,就会惊喜的看到输入的问号是倒着的,倒着的感叹号也是同样的方法,是不是很神奇呢?
当然,如果你只想做一个源代码图案,可以用这个在线工具:http://www.ascii-art-generator.org/
如果你想做动态的彩蛋,可以用:
http://lou.wtf/cheet.js/(这是一个js文件,引入这个文件后,当用户输入彩蛋关键词,就可以得到回调,显示你的彩蛋内容)
留下彩蛋不是目的,彩蛋做的亮眼才是王道,通过彩蛋展示程序员的编码才华,是低调的炫技,是“不鸣则已、一鸣惊人”的自信,但是在此过程中一定不要忘记文明、合规的原则哦~
关注 @慕课网,get最新最实用的IT技术资讯,涵盖入门进阶、项目实战、面试技巧等综合性知识,助你在编程路上少走弯路。
推荐阅读: