数据挖掘知识

免费体验
当前位置: 首页 > 知识库 > 数据挖掘知识 >

那些年我做过的有趣又无用的事

分享到:
时间:2017-01-07 01:04来源:谷歌推广seo网络知识 作者:谷歌优化怎么做
中国统计网(www.itongji.cn),是由大数据资深从业人员创办的大数据门户网站

从 2012 年到现在,我做了不少有趣但又无用的事。这些事小到花几天时间研究一个小玩具,大到花上两年的业余时间研究一门技术。这些东西往往没有太多的现实意义,但对我来说,却有无穷的乐趣。我把几件动手做了些实验产出的,拿出来和大家分享,也许能够激起你的动手欲望。


自制收音机

前段时间看《硅谷百年史》,激起了我探究计算机的发明过程的欲望。从继电器到电子真空管,再到晶体管,继而到集成电路,我把它们的原理研究了个遍。现在比以前好的地方在于,一方面有网络可以搜索任何你想要的内容,另一方面认识了各个领域的专家,许多问题发到朋友圈,立马会有专业的朋友给予解答,这让人感到无比的强大。我在做高空气球实验时,曾经接触过继电器,知道它就是个电磁铁控制的开关。但电子真空管如二极管、三极管,这些是什么原理,开始的时候并不清楚。没事,有维基百科。

当我看二极管的原理实现时,发现它基于的是爱迪生效应。而爱迪生效应又是我在去年研究爱迪生的人生时看到又没有仔细探究的。于是我就回过头来看爱迪生效应是怎么回事,进而清楚二极管、三极管又是怎么回事,这就明白了早期的大型计算机用继电器和电子真空管制造出来为什么会又庞大又计算的慢。那晶体管又是怎么回事?我又从发明晶体管的肖克利,一路研究到贝尔实验室,以及后来的集成电路。在我研究晶体管的发明后,发现它最早并不是用于计算机,而是用于一个叫做 TR-1 的收音机。


(图 1  TR-1 收音机,1954 年发布)

TR-1 只有扑克牌大小,也就是像 iPhone 一代那么大,很有设计感。据说,正是因为这款收音机,让摇滚音乐得以崛起。当年可以说是像 iPod 发布那样的轰动,颠覆了大家对收音机的认知。那收音机里为什么要用晶体管呢?它在里面有什么用?我顺着这个问题,又开始研究无线通讯,开始研究电磁波的原理。我还把媳妇买的高中物理教材讲电磁的一册给学习了一遍,现在看高中物理课本那信息量就非常少了,花两个小时都能学习一本书。在我看完之后,我又研究如何自制收音机,无意间发现了一种叫“矿石收音机”的东西。它可以只通过线圈的感应电流,不需要额外的电池电源,就可以收听广播了,简直是个奇迹。但这种收音机一定要找广播信号强的地方,要有足够大的感应电流。我也想自己组装一下,万能的淘宝可以解决一切问题,直接在网上花了 100 元买了套件。

到货之后,开始组装。一共提供了四种组装方案,试了一种没声音,再试一种还是没声音,直到第四种的时候,我感觉有点动静,于是靠近窗台,原来是中国之声的广播,心情还是很激动的。遥想在初中的时候,也和自己的小伙伴通过拆除旧收音机上的零件,加上自然课上的指导进行实验,结果没有收到任何声音,以失败告终。那个时候不了解电磁波,也不了解二极管,完全就是拼凑。


(图 2  自制收音机)


虽然现在有声音了,可是对于“调制”、“解调”之类的原理,还不是特别清楚。好在现在认识的专家多,直接找个专业博士朋友一起吃饭,让他系统给我讲了一遍。还和另一个通信专业的朋友微信进行了深入探讨,才对这块有了较为清晰的认识。等后面有时间,我打算直接从电磁波一路讲到收音机、计算机的实现。

小孔成像

今年 9 月 iPhone 7 发布,让我突然有个想法,想要总结一下 iPhone 这几年在传感器上的演进。在我看来,智能手机之所以智能,除了更强大的 CPU 和操作系统,重要的就是有各种传感器能够感知周围,进而做出响应。于是我把 iPhone 这十年的发布会都重新看了一遍,分析每次发布都引入了什么新的传感器,来带了什么好处。从加速度计到光度传感器,从陀螺仪到摄像头,最终写出了文章《iPhone 这十年在传感器上的演进》。这文章还上了知乎日报,两边加起来收到了超过 1500 个赞,创造了个人的新纪录。

在我研究完 iPhone 的传感器之后,得到一个结论是苹果在摄像头上花的功夫是最多的,比如会加一个专门的光学传感器,用来识别日光灯的闪烁对拍照带来的影响,进而进行矫正。所以不要只看相机的像素有多高,还得看每个像素都花了多少功夫。这对我带来两个影响,一是决定换 iPhone 7 Plus(前几天刚到手),二是要研究一下相机的成像原理。于是从小孔成像开始,研究了胶片相机的成像原理,以及数码相机的成像原理,算是对相机的原理弄懂了。

本着科学的探究精神,我还做了小孔成像的实验。设备很简单,直接拿了个鞋盒,在上面打了个孔,然后侧面撕开个口子,用来眼睛观看。直接孔对着台灯灯泡,我本来以为会看到一个倒着的灯泡,结果看到的是倒着的灯丝。

(图 3  鞋盒打了个孔)


(图 4  积了灰的台灯灯泡,注意灯丝是个倒着的 W)


(图 5  从鞋盒里看到的正着的 W 型灯丝)


跑马灯

2015 年中,在看《文明之光》第二册的时候,激起了我对爱迪生的兴趣,我想搞清楚他这辈子都做了哪些重要的发明,谷歌新闻收录,这些发明都是怎么做出来的。我一直是对发明创新抱有强烈的兴趣,而爱迪生是名副其实的“发明大王”,研究他就算是找对人了。在看了许多材料之后,写了一篇文章《从爱迪生看发明与创新》。并在 2015 年底的时候,有兴趣研究了一下电影的原理,可以说最早起源于儿童玩具跑马灯。

电影最基本的需要有一格格的画面,然后把这些画面一格格的显示在屏幕上,利用人眼的残余影像的机制看起来像连续的画面。这种残余影像的效果就是给你看一张图片,马上撤走后,你会有那么一瞬间还能感受到画面的存在。有了灯泡之后,就可以在画面切换的过程中,将灯光暗掉,等画面切换完成后,再亮开灯光,这样人眼要么什么也没看到,要么就是看到一张正好是完整的图片。显然,画面切换的频率越高,越会感觉到画面的流畅,这就是 30 帧和 120 桢的区别,低于 15 桢基本就看不出流畅动画效果了。

我直接打印了一张有马的几个动作的一张图片,并把它们剪成小片。把一个纸盒子剪成一个圆饼,分成 8 格,格与格之间剪出一条缝。然后把马动作图片贴到格子上。再用一个圆珠笔穿到圆心。这样把图面对着镜子,通过缝隙固定的看这个图片位置,然后转动圆饼,就可以看到马儿奔跑的效果了。

(图 6  自制跑马灯)


由于条件太简陋,我还没办法拍下来马儿运动的视频,只能人眼看一下。因为用的土黄纸板,转动的时候会看到一层糊着的土黄色,如果换成黑色或白色我估计会好一些。另外因为剪的八条缝不规整,转动时抖动比较厉害,总之改进的空间比较大。但能看到动画效果,还是挺激动的。这其中的演观固定位置,然后转动圆饼,正好可以保证每次通过缝看到的新画面都是同样的相对位置,所以有一种动画的变换效果。如果你直接不通过缝而是通过侧面看镜子里的图片的话,那就糊成一片像个陀螺面了。

Enigma 模拟器

2012 年的时候,我看了一篇文章叫《面对面的办公室》,讲图灵和冯诺依曼两个计算机之父的故事,里面提到图灵在二战时期参与破解了德国的电报。这种电报被一种叫做 Enigma 的机器加密,因为组合情况特别复杂,很难通过穷举的方式去解决。而图灵寻找一些字符出现的规律,比如一封电报的结尾可能会以“Hitler”结尾之类的,制作了一台破解机器来计算 Enigma 的机器配置,最终达到比德国人更快的翻译出电报内容。

(图 7  Enigma 哑谜机)


在 2014 年底,描述图灵一生的电影《模仿游戏》上映,我看过之后,有了兴趣研究图灵的解决方案以及 Enigma 机器的运作原理。并且用 Python 写了一个 Enigma 的模拟器,还给媳妇发了一封加密信息“jlbdbtkoymezvrpqjqtqnodgfjq”。模拟器的代码放在 Github 上:https://github.com/sangwf/fun/blob/master/enigma.py。

高空拍地球

在 2014 年底,微博上发生了这么一件事,一个学生写了篇文章叫《少年不可欺》,讲优酷盗取了自己气球拍地球的创意经过,并详细讲解了自己拍到地球的详细经过。简单来说,就是用个大氢气球带上 GPS 和 Gopro,然后放飞,气球升高到两万多米,可以拍到带有弧度的地球。我是很爱好户外运动的,并且每年都会去黄草梁爬山,就想能不能也放个气球拍一下地球。

把这个点子说给自己的一群基友后,得到了各种反对的声音。但我还是想做些尝试,我去做肯定不想像那位学生那样放飞之后无法控制,我是想加上控制模块,飞出预期范围,就自动泄气。于是买了气球、控制板子 Arduino、GPS、继电器等,并进行测试,把整个过程还写了出来,叫《拍地球的大叔们一、二、三、四》。遗憾的是因为条件的原因以及创业精力有限,目前也没有放飞成功,只做了一个实现 Arduino 控制泄气的一个版本,我还给它起了个名字叫 Interstellar 1。


(图 8  Interstellar 1)


跟着瓦利哥学写 OS

2012 年 5 月,我去西安做实习生招聘面试官。其中面到一个学生,他的简历里提到自己写过小的操作系统,这让我很有兴趣,我一直想着有天能做个哪怕只能打一行 Hello, world 的操作系统。他告诉我这不难,有本书叫《自己动手写操作系统》,看了之后很容易做出来。招聘回来之后,我就开始学习和动手实验,当通过模拟器打出一行字符的时候,还是让我很激动。之后就冒出了一个想法:我要实现一个小的操作系统,可以安装在手机上,可以连接 Wifi,并能发微博。想想都很酷。

光看那本入门书可不够,真正实现一个可用的操作系统,比打一行 Hello, world 要复杂很多。我先是把 Ken Thompson 和 Dannis Ritchie 写的关于 Unix 的论文学习了,又买了一本 Linus 写的《Just for fun》,里面有详细讲解他实现 Linux 早期版本的整个过程。我还把它翻译成了一个系列,叫《Linux 诞生记》。之后我就开始自己的小操作系统的实现过程,我给自己的操作系统起名叫 Walle OS。因为自己的电脑是 Macbook Pro,我就闪出了一个念头希望能直接将 Mac OS 系统上的一些程序能直接跑在 Walle OS 上,也就是打算兼容 Mac OS。这可给我带来了不少麻烦,网上这块的内容太少,我需要自己钻研。还记得有次和媳妇去沈阳,我还带着打印出来的一本 Mac OS 可执行程序格式说明在仔细研究。


(图 9  Walle OS 的截图)


真正实现起来,才知道里面坑有多大。后来发现为了支持 TCP / IP 协议,要开发的工作太大了。特别遗憾的是我连底层的网卡驱动都没有写好,通过自己的小操作系统发微博的目标是玩不成了。我想也不能把自己学的知识就这么浪费了吧,能够去把如何实现一个小操作系统的人毕竟不是很多,我何不在网上开一门课。于是在一段时间,每个周末都给几个报名的学员直播课程,有时候悲剧的是,晚上要上课,我下午都还没调通程序。底层的操作系统调试太难了。有兴趣的可以到 51CTO 上看看,叫《跟着瓦利哥学写 OS》。课程最终可以实现执行 exec 和 fork 命令,实现多任务效果。课程的代码和 PPT 也在 Github 上。

我研究和做过的这些东西,没有太多的实用价值,但却可以让我对一些技术原理搞的很明白,并且带来许多的乐趣。也许有一天,我可以出一门课程,去培养一些学生的动手能力。在我看来,国内的许多学生在动手能力上,可能还美国之类的有不少差距。国内的教材过于重视理论,而缺少实践,也可能是一些老师本身就不具备打通理论和实际的能力。


End.


作者:桑文锋 ( 特邀认证作者)


本文为 原创文章,需要转载请联系 (小编微信:itongjilove),转载时请注明作者及出处,并保留本文链接。

(整理:英文推广TuiGuang123.com)
分享到:
------分隔线----------------------------
购买咨询 | 联系我们 | 产品报价 | 付款方式
网站地图 Copyright·深圳市亿推信息技术有限公司 版权所有 粤ICP备13042246号