一年国庆又到~
程序猿、运维工程师、利用假期该结婚的结婚,该回老家的回老家。产品经理、项目经理们也要出国旅游了(好像这次是去东京玩),并且叮嘱一定要安排好值班表。
我是个程序员,我也想出国旅游,却觉得有点儿贵。多亏了领导上安排我值班,只能在北京待着,这样我就有个借口跟新交的女朋友说 “你看我国庆要加班。。。下次放假去马尔代夫玩好不好?唉,唉,别生气了,我帮你把手机升级到ios11好不好?”
但仍旧心里忐忑不安,万一服务节中挂了还真得干活,通常就有这种新闻:
或者这种:
我的一位运维同事管理上千台的服务器,就在节前在自己的跳板机上面上线了这玩意儿(亲眼所见):
以上这些吧,受党教育这么多年,我好歹有点唯物主义精神,虽然实在想找个人保佑,又觉得我这行儿跟佛祖有点不搭。再说到底是拜禅宗还是密宗也选择困难,眼看就国庆了,临时抱佛脚也不大虔诚。罪过罪过。
俗话说:饮水思源。各行当都有祖师爷。求祖师爷保佑如何?
木匠拜祖师爷鲁班,
江湖黑帮拜关二爷,
媒婆都拜月下老人,
包粽子工人拜屈原。
(好像不押韵)
没有屈原就没有粽子
计算机行当的祖师爷当然就是Alan Turing和John von Neumann。我觉得每个程序员都应该知道他们2位的贡献,这才会对为什么现代计算机是这个样子有一个更深的理解。
图灵的事迹很多,可以读这篇了解一二:为什么每个人都应该知道图灵, 还有他的传记电影,模仿游戏。
模仿游戏海报
16岁的艾伦图灵
在二战中,图灵建造出世界上第一个建造出电子计算机,提出了算法和计算机的概念,没错,就是你找工作,笔试面试时最讨厌的考试内容:算法。 什么数据库里面的归并排序,HTTPS协议里面用的RSA加密可都是一种算法。
所以,没有图灵,我们程序员都不知道什么是算法,当然也没有程序可写。
图灵的电子计算机
关于冯·诺伊曼的事迹就更多了,罕见的天才,在多个领域神一样的存在,他有很多逸事传闻。
冯·诺伊曼
在他之前的电子计算机不能叫做通用计算机,因为每台计算机的功能都是专用的。 一个计算火箭弹道的计算机只能研究火箭弹道,但想玩一把王者荣耀?那就只能重新设计,修改计算机结构,或者再买一台王者荣耀专用计算机。这成本高的吓人。
冯·诺伊曼结构计算机定义了Program的概念(没错,就是你现在写的那种程序),只需要计算机可以读取指令,根据Program里面的指令做计算和控制,那这种计算机就是一个多用途的通用计算机。如果这个Program是算火箭弹道的,那这台计算机就可以计算火箭弹道。但如果这个program里面的指令都是3D建模渲染,自动寻路数的算法之类,那这个Program就是你玩的王者荣耀了。
无论是Minecraft游戏里面的计算机, 还是我们公司里面的商用服务器,又或者我给新女朋友承诺,将要给她买的IPhoneX,都是冯·诺伊曼架构的计算机。
minecraft游戏中的计算机
冯·诺伊曼开创了程序员这个工种,程序员只要动动手(比如我就擅长用手),就几乎可以做任何事情,奇妙啊奇妙~
说了这么多,我作为一个程序员,就求2位计算机之父图灵和冯·诺伊曼保佑,国庆7天服务在线永不坏。 于是做了这个ASCII ART在我的堡垒机上,每次登陆都可以看到:
(求祖师爷保佑)高清大图
每次登陆就看到二神,左冯老,右图神,运维也有劲了,代码调试比以前快很多了,最奇妙的是女朋友也比以前温柔许多。(知乎的图做了压缩,可以点击看高清大图,效果刚刚的)
2条命令,你就可以拥有和我一样神奇的功能。值得拥有:
curl https://raw.githubusercontent.com/thesues/blessme/master/bless.txt -o .bless.txt
echo 'cat .bless.txt' >> ~/.bash_profile
最后,如果有的同学已经上线佛祖保佑的版本,也不用非请我佛下来。俗话说。请神容易送神难, 是吧?
如果也非要说我佛和计算机行业有关系的话,我很喜欢佛经里面对数字和时间的理解,也算是和程序员这行有关,佛祖也会保佑你的:一些佛经对地狱痛苦的夸张描述,已经到了无法计算的地步。比如《佛说十八泥犁经》说,有65536(即2的16次方)斛芥种,一百年拿走一粒芥种,把这些芥种都拿光了,在十八层地狱犁受苦的众生的寿命还没有尽呢。。。。这只不过是人在地狱中开始的一刹那而已。
-------《佛,到底讲了些什么》
所以佛经里不光有二进制,而且还有地狱。每次我调试底层Bug的感觉都跟在无间地狱里面一般。
最后,祝大家国庆愉快。
附录:如何制作上面的ASCII图?
一共分4步:网上搜索照片
提取计算机之父的照片中的边缘,这样可以提升生成ASCII图的效果
有很多在线免费的图片转ASCII网站,转化图形
后期处理,比如合并图灵和冯诺伊曼的ASCII头像,增加颜色等等
第一步:搜图好办,我找到了2张图片:
第二步:提取照片边缘
TMD我是一个系统程序员,这个图像处理算法不大会, 假期在即,也懒得学。 怎么办?
我想到了这个神奇的数学网站Computational Knowledge Engine,像他们这种超级大名人,肯定有很多崇拜者,于是我就找到了边缘清晰的图灵头像和冯·诺伊曼的头像:
这2个头像都是用函数画出来的,边缘要多清晰有多清晰:
由上面一个大函数画出图灵头像
John von Neumann
Alan Turing
所以,如果有读者知道有简单的提取图像边缘的办法,欢迎分享一下,我觉得在wolframalpha上找,实在是有点怪.
第三步:
我用的是ASCII Art Generator这个网站,上传图片,就可以把图片转化成ASCII码。上面还有一些参数可以调整,我用的是默认的,效果很好
第四步:
把ASCII Art Generator生成的2个文本文件,合并成一个大文件,保证2位计算机之父是并排站立的,而不是冯祖师在上,图祖师在下。站位很重要。当然,这都看个人喜好。
#!/usr/bin/python
from itertools import izip
with open("von.txt") as von, open("turing.txt") as turing:
for x, y in izip(von, turing):
#remove new line
x = x.rstrip();
y = y.rstrip();
#fill space until to 76 for von
l = len(unicode(x,"utf8"));
x = x + " " * (76 - l)
print("{0}{1}".format(x, y))
两位计算机之父:并排站立
#!/bin/bashcat von.txt turing.txt
两位计算机之父:一个在上面,一个在下面
最后,你还可以在文本下面填几个名言警语儿,就跟有“好好学习,天天向上”这种标语一样。相信我,在你加这几个名言的时候,能体会到为人师表的自豪感:
如果有人不相信数学是简单的,那是因为他们没有意识到人生有多复杂
------ 冯·诺伊曼
有时候,被世人遗弃的人,才能成就让人想像不到的大事
------ 艾伦·图灵