漫谈分布式系统、拜占庭将军问题与区块链


最近区块链的话题很火。有人想用它改变世界,有人想用它招摇撞骗。

但是我们今天只分析技术。从技术的角度看,区块链是一种与分布式系统有关的技术。它与分布式系统的各个概念之间有什么联系?今天本文就借这个机会,跟大家一起讨论一下分布式系统的核心问题和概念。最后,我们将尽量沿着逻辑上前后一贯的思路,讨论一下区块链技术。

阅读全文 »


为什么未来是增强现实的?


大约在十年前,也就是2007年,iPhone第一次公开亮相,从此开启了智能手机的革命。如今,在PC上能完成的事情,已经几乎没有哪一件不能在手机上完成了。

智能手机已经基本取代了PC。那么,我们自然要问:在下个十年,是否会出现能取代智能手机的消费级电子产品?

阅读全文 »


天赋是个伪命题吗?


女儿绘画班的王老师是一个很有想法的人,尤其是在教育小孩子方面很有自己的一套方法和理论。有一次我和王老师聊天,聊着聊着,很自然地就聊到了关于小孩子天赋的话题。王老师提到了她的观点:天赋,其实是个伪命题。我对此深表赞同。所谓「天赋」,只不过是个方便的说法而已。

阅读全文 »


OpenGL ES和坐标变换(二)


本文是《OpenGL ES和坐标变换》系列文章的第二篇。在本文中,我们将集中讨论以下内容:

  1. 首先,以Demo程序中的代码为例,介绍model、view、projection三个变换在Android中如何用代码来表达。
  2. 介绍相关理论,推导一下model变换中的缩放(scaling)和平移(translation)这两个变换的计算过程。由于旋转(rotation)这个话题比较复杂,我们留在下一篇再讨论。
  3. 我们分析一下Android中的缩放(scaling)和平移(translation)变换的具体实现,将前面的理论推导同代码实现相互印证,以加深理解。

阅读全文 »


为什么有些技术书籍难以读懂?


对于在某个领域初入门径的人来说,一本好书真可谓良师益友,阅读起来就如同聆听一位耐心的导师的谆谆教诲。它可以帮你节省大量的摸索时间,快速越过「新手期」,到达一个有能力进一步钻研精进的阶段。然而,现实经常事与愿违。我经常看到的情况是,周围的同事和朋友,为了了解某项技术,花费精力和金钱选书、购书,最终买回来才发现,根本「读不懂」。然后只能把它放在书架上,从此再也不会看上一眼。

阅读全文 »


OpenGL ES和坐标变换(一)


相信做技术的同学,特别是做客户端开发的同学,都听说过OpenGL。要想对客户端的渲染机制有一个深入的了解,不对OpenGL了解一番恐怕是做不到的。而且,近年来客户端开发中对于图像和视频处理的需求,成上升趋势,要想胜任这些稍具「专业性」的工作,对于OpenGL的学习也是必不可少的。然而,OpenGL的学习曲线相对来说比较陡峭,尤其是涉及到一些计算机图形学方面的专业知识,不免会让很多人望而生畏。

阅读全文 »


做技术的「五比一」原则


前些日子看到了一篇文章,很有意思。不光内容有意思,而且很巧,是我个人很喜欢的一位「网红」写的文章,文章里又恰好提到了我更喜欢的一位作家。这篇文章的名字叫《分享刘慈欣的一段话》,作者是六神磊磊。

阅读全文 »


程序员的武林秘籍


之前我们在《技术的正宗与野路子》一文中提到过,「做技术,犹如修习一门武功」,那么按照这种说法,我们平常阅读过的那些好的技术文章、书籍、资料、文档,自然就相当于「武林秘籍」了。今天,我们就来说说在程序员江湖中这个不容忽视的存在——武林秘籍。

阅读全文 »