2013年的学习体会

这里记录了我在2013年折腾过的各种东西,今年做了很多之前一直想做但没做成的事情,取得了许多意想不到的收获

Browser

首先是在浏览器方面的学习,Blink 的发展比我想象的要快很多,半年时间就改进了很多 WebKit 的问题,所以从下半年起我几乎不再关注 WebKit 了,后续重心也将全面偏向 Blink

之前几年我只看渲染部分,今年开始全面学习 Chromium,这真是一个超级复杂的项目,光源码就有18G,规模已经是操作系统级别了,所以可以学到的技术相当多

而我主要关注的是 Chromium for Android,这是我见过最复杂的 Android 应用,和普通的 Android 开发完全不同,它大量使用了底层系统的方法,通过它还学到了很多不常见的 Anroid 技术

Android

说到 Android,这是我今年学习的重点,还买了自己的第一个 Android 设备 Nexus 7

Android 下的应用比之前预想的要好,但下了几个 Android 应用后发现是靠推广挣钱的,要靠注册其它换积分才能用的,感觉很麻烦,而去年正好看过《Android软件安全与逆向分析》这本书,于是开始玩起了破解,结果发现好有意思,一下丢进去好几个周末,大部分应用只需简单修改重新打包就好了,或者直接手动生成相关注册信息实现完美破解

想起十年前用 Windows 的时候曾经很想学破解技术,还翻过第一版的《加密与解密》,但当时完全看不懂就放弃了,而今年终于在 Android 下学会了破解,总算是实现这个愿望

另外通过破解还学习了很多安全方面的技术,比如杀毒软件的实现,发现并没有想象中那么神奇,不过因为发现自己不太感兴趣,所以玩一段时间后就不再关注了

除了破解,在下半年参与的某个项目中还研究了一下 ndk 相关的技术,发现这个领域变化很快,涌现出了很多新东西,比如像 JUCE 这样的跨平台库,还有 Apportable 这种能直接编译 iOS 到 Android 的工具,相信在2014年跨平台开发会更加方便

iOS

而 iOS 方面则完全不同,年初时还研究了不少 Objective-C 相关的东西,我很喜欢这个语言,如果当初它能流行起来并取代 C++,这个世界将会变得更美好,但 Apple 的封闭实在是让开发过程很不爽,我喜欢通过底层的原理来学习,黑箱开发会让我感觉很不安,而且经常遇到问题时不知所措,到处找资料和瞎测试的效率很低

于是终于在某天遇到证书过期问题时我彻底放弃了,因为花了半天才找到原因,感觉就是在浪费生命

Virtual Machine

2012年的时候曾经有一段时间对虚拟机很感兴趣,花大量时间研究了虚拟机的相关技术,至今在 Evernote 上收录的资料有603篇,各方面论文都有,但因为平时工作并不需要这么深的了解,所以渐渐地就不再关注了

HHVM 的出现倒是给了我一个 Review 的机会,公司里 PHP 用得比较广泛,消耗了很多机器,或许能使用 HHVM 降低些成本,于是我写了一篇 hhvm 的介绍文章,收集了大量的资料,锻炼了自己捕风捉影的能力,挖到很多鲜为人知的东东,欢迎阅读

写完后发现这不仅能让其它同事学到技术,而且也能很好梳理了自己的知识,所以明年我打算多写这类型的文章

3D Rendering

记得在上大一时辅导员让我们写自己最感兴趣的领域,我写的是多媒体制作,当时还用 Flash 做过些小动画,加上平时很喜欢看电影,所以一直对 CG 很感兴趣,也非常想了解那些逼真的特效是如何实现的,但前几年尝试时都被 3D 软件的复杂操作吓傻了

今年偶然读了一本讲如何建模的书《Digital Modeling》,从整体上了解一个 CG 制作都由哪些阶段组成,每个阶段都在做什么,有了这种宏观认识,让我重新拾起了信心,加上今年 3D 打印技术的兴起也给了我很大的动力

于是开始认真学习 3D 软件的使用,在尝试了 Blender、Maya、Modo、Cinema 4D、DAZ Studio、LightWave 3D、Poser、ZBrush 等软件后,我最终选择了 Cinema 4D 深入学习,它用起来很方便,也有不错的物理渲染效果,通过它我终于对 CG 制作有了实际体验

但比起 CG 创作,我发现自己其实对背后的原理更感兴趣,所以 Cinema 4D 玩了一段时间就不玩了,开始研究计算机图形学的相关技术,重新读了一遍《Interactive Computer Graphics》,发现又理解了不少内容,这是一个非常非常广的领域,而其中我最感兴趣的是渲染部分,尤其是那种非常真实的渲染效果

一般书籍里的渲染都是讲 Photon mapping‎,这是绝大部分游戏中用到方法,它能通过少量的计算来获得看的过去的效果,不过我更喜欢的是真实渲染,于是就开始啃《Physically Based Rendering》这本1200页的书,不过由于时间关系并没有看多少,希望能在2014年看完

话说去年我还偶尔会玩一些游戏,今年了解了渲染就基本不玩了,因为一眼就能识别出其中的假光源效果和粗糙的模型,顿时兴趣全无

另外今年终于弄懂了 OpenGL,后来有一段时间对游戏引擎感兴趣,简单研究了 openscenegraph、ogre3d 等开源 3D 引擎,还玩了一段时间 Unity 3D,了解了一款游戏是如何制作做出来的

有了 OpenGL 基础,学 WebGL 就简单了,尤其是有了 Three.js、Babylon.js 这样的库,开发起来相当方便,另外值得一提的是 Lagoa 这个在线的 3D 制作工作,效果很惊艳,或许几年后大家都在网上创作 3D 了

CUDA / OpenCL

了解 OpenGL 后发现 glsl 是一个大坑,可以用来做出各种惊艳的特效,如果感兴趣你可以去 Shadertoy 上体验,不过这里面涉及很多算法,我还没空研究,倒是让我又对它所引发的另一个领域感兴趣了 - 那就是 GPGPU

之前一直很想学高性能计算方面的知识,也简单翻过 CUDA 的书,但都没看懂,今年终于认真阅读了一遍,总算是明白怎么写了,但发现实在是太繁琐,要实现个算法比 CPU 麻烦得多,还是用 Theano、Rootbeer 这样上层的库好玩些,加上平时用不到,所以就暂时放弃深入研究了,或许明年买个 Parallella 后可能会再折腾

人工智能

人工智能是我去年底还挺感兴趣的一个领域,但在今年并没怎么花时间研究,主要卡在最优化理论上,一方面觉得太花时间,要复习很多高等数学的知识,另一方面发现开源库越来越完善了,就没太多动力去学习

之前翻完《Artificial Intelligence》后其实有些失望,感觉这离真正的智能还差很远,但今年意外地读到《人工智能的未来》这本书,惊喜地发现书中的观点非常靠谱,就像进化论那样让人眼前一亮,仿佛在黑暗中看到了光明。话说后来发现原来 Andrew Ng 也是受到这本书影响才重新拾起对机器学习的兴趣

新兴的 Deep Learning 技术虽然在语言和图像方面有突破,但我对这两方面都不太感兴趣,所以没怎么关注

现在回过头想想,虽然这方面的学习并没有给我的工作带来多少帮助,但这个过程还是很有意思的,也有很多收获,某天无聊时快速翻了一遍《The Elements of Statistical Learning》居然发现能大部分看懂了,去年还觉得这是一本天书呢

绘画

估计很多人都和我一样,绘画水平还停留在小学,只会画简单的轮廓,每当看到栩栩如生的绘画时都会感到不可思议,觉得自己是无论如何也画不出来的,所以很好奇别人是怎么做到的

我在2年前买了本书《五天学会绘画》,当时主要是被简介所忽悠了,说什么是苹果的企业创造力培训书,但结果买来后一直没看,今年终于抽空看了,结果意外发现这是今年最有价值的投资

这不仅仅是一本将如何绘画的书,而是如何改变思维方式,如何使用右脑思考,当进入到右脑的细节思考模式时,你会忘记时间,你所看到的将不再是一整幅复杂的画面,而是一个个的细节点,比如颜色的深浅、阴影的变化,通过研究这些细节,你就能画出任意复杂的画面,这种感觉非常神奇

对我而言最大的收获就是体验了右脑思考的强大,后来遇到复杂的技术时,我都会尝试静下心来仔细观察其中的细节,然后就会发现其实很简单,于是从此再也不畏惧任何复杂的技术了

不过由于时间关系,体验了右脑思考后我就不再学习绘画了,因为有太多更好玩的事情。。。

日本語

几年前一直都对学英语很感兴趣,没事时就看看美剧,但因为平时接触的英语很多,渐渐地就习以为常,不再有学习和进步的感觉,而英语到一定程度后就很难突破了,需要常年的接触和积累,尤其是无穷无尽的短语,比如「spot on」,这两个单词很简单,但通过单词却没法猜到这个短语的意思,只能遇到一个记一个

忽然有一天想要不学日语吧,结果一发不可收拾,占据了大量的周末时间,但却让我找回了学英语时的乐趣,能看懂和听懂一门语言的感觉是妙不可言

最开始我其实只打算学好阅读和听力,但后来发现口语也挺有意思,借助 iOS 和 Android 上的应用,可以不用像以前学英语那样,先成为哑巴,然后再很长时间去纠正口语

目前我在大量看双语字幕的日剧,对培养语感很有帮助,另一个有意思的地方是找到了很多古代中国的影子,比如不少日语书籍是竖排版的,虽然看起来很累,但很有感觉

了解一门语言就好像打开了一扇窗口,能接触到很多之前不知道的东西,真是一项很有价值的投资

开车

开车是一项最基本的技能,但我却一直不会,但今年终于拿到驾照了,感觉自己的移动范围增强了很多,以后去旅游可以自己开车了

不过我觉得最有意思的是驾校里的广播音乐和考前教室里大家的紧张复习,感觉像回到了学校

经济学与投资

前几年看过一些忽悠投资的书,说什么下半生要靠投资来养活自己,加上周围有几个同事炒美股,所以今年花了些时间学习这方面的知识,学了很多经济学的基础知识,尤其是《经济为什么会崩溃》这本书,让我一下深刻理解了各种经济学名词背后的根源

后来看了很多期郎咸平的讲座,学到很多,但郎咸平似乎从来都是报忧不报喜,每次听都心里哇凉哇凉的,感觉中国未来经济形式很不乐观。。。

系统性

以前一直以 Linus 为榜样,像他说的那样「start small, and think about the details」,埋头学习和做事,所以老被批评缺乏系统性,而我却坚持认为系统性这东西太虚,并不产生价值,所以并不在意

但《系统之美》这本书终于让我理解了什么叫系统,以及制度的重要,并从年底开始开始制定部门的各项新制度,希望明年能取得明显的改善

技术会议

今年我没有参加任何技术会议,不过如果有会议的视频或 slide 我基本都会看一遍,其中印象最深刻的是 Google I/O,我周末花了整整2天时间将最大部分视频都看过了,还认真做了笔记,其中提到了很多 Chrome 和 Android 的技术,另外年底的 Chrome Dev Summit 也很不错

读书

今年开始习惯了买电子书,因为携带方便,可以随时随地看,平时用的比较多的是 Kindle、多看和京东

但由于周末时间很多花在了学车、日语等方面,所以阅读量明显少于去年,从豆瓣看看有105本,但实际数量会多些,因为很多书快速翻过后发现没啥价值就懒得去记录了,其中印象比较深的书在前面都提到了,以下是其它一些:

回顾

今年年尝试了太多方向的事情,导致重点不清晰,现在想想有些事情其实是不必要的,应该果断暂停,但整体来看今年在各个方面的成长都超过了去年,明年将更加努力,再次超越自己