2015年书单

今年一直在途牛,开发了途牛NB-App和去途-App两个项目。NB-App是从去年我来了之后开始开发的,从去年的9月底的1.0.0版本,一直到现在的3.1.0版本,明年也会继续升级。去途-App是给途牛全职、兼职的导游使用的一个管理类的App,在12月中旬开发,于2016年1月上线。

本来在开发去途App的时候是想使用Swift2.0开发的,后来由于一些原因,还是依然采用objc开发了,但是,我们尝试引入了ReactiveCocoa,来比较好的满足MVVM模式的开发。当然,RAC也带入了很多函数式的特性,非常方便,我是电子专业出生,没见过这种方式,感到非常新奇。因为我一直以来使用的都是偏向于命令式的编程语言,像objc、Python(有一定的函数式编程能力)这种,我在使用函数式的时候,依然只是把它当做一个补充的语法糖,并不会使用函数式的方式去思考问题,写出来的东西不伦不类,并没有掌握函数式编程的真正精髓。 所以我去学习了一点Haskell,我想从正统的函数式编程语言上,去学习如何用函数式的方式思考问题,这本书会体现在我的书单上。

Haskell比较难学,起码比我学objc的时候难,总有一种看的时候有点会,但是解决问题的时候,又感觉有的时候无从下手,又想回到命令式的困顿。

iOS

首先,我还是介绍一下今年看的iOS相关的书籍。

iOS应用安全攻防实战

很遗憾,这书出版的时间比较晚,上面的内容很多是基于老版的iOS,有一定的参考意义。我翻了一下,没有仔细看,不太好评价。个人感觉,我还是喜欢iOS应用逆向工程

iOS开发进阶

唐巧的书。唐巧在我们iOS界名气很大,也很有影响力,他出的书我肯定是要买一本学习一下的。

至于内容,怎么说呢,可能和我的预期不太一样。这书我一天时间就看完了,里面的内容不是很多,而大部分内容对我而言都是我所熟知的。

巧哥的这本书最主要的问题可能不是里面的内容,而是这本书的名字上。15年年初的时候,我刚毕业一年半,而我看这本所谓进阶的书,都已经觉得比较浅了。书上的内容更多的是类似于笔记、备注这种,如果书的名字叫做《巧哥的备忘录》、《巧哥的工具箱》什么的,或许恰当一些。

当然,这只是我的个人意见,巧哥的这本书依然是个好书。

iOS Auto Layout开发秘籍

这本书讲了AutoLayout的方方面面,好吧,我没看完,我在去途上面依然使用masonry来手写AutoLayout,很简单,维护起来也很方便。

NB-App项目最早我们是从iOS5开始支持的,后来由于iOS5用户只有不到10个,而我们某个模块使用UICollection会比较方便,在大家商议之后,我们果断放弃了iOS5。

那么从iOS6开始支持后,我们就在部分页面上放弃了autoresizing,改为使用UIAutoLayout。

我刚开始开发iOS的时候,是支持到iOS4.x的,后来渐渐不使用MRC了,也渐渐开始使用AutoLayout了,只是我当时一直比较排斥这种东西。现在想来,顺应时代的潮流是必然的。

我们经理转了一个文章,大致是这么说的:”我们程序员不能过于死板,要顺应时代的发展,有理由、有方向的去使用新的技术,像现在有些iOS程序员依然在使用MRC”。我觉得说的很对,但是例子举得不是很恰当。

我这么举个例子吧。很久以前,有个小岛,岛上的人民世世代代使用锯子伐木。有一天,有个商人带来了一个叫做电锯的东西。岛上的人民使用了一下,他们觉得很不好,因为这电锯需要拉很长的电线,而且很重很大,不好拿,价钱还很贵。他们没有去买电锯,之后,再有商人来卖电锯的时候,他们连看都不看一眼。

这又何尝不是我们很多程序员的现状。有些新工具,刚出来的时候有很多问题,很多程序员浅尝辄止,很长时间以后,他们依然拒绝那种已经不新的技术,他们并不知道,这世界,变化太快。我以前又何尝不是这种人。

狭义上来说,ARC对MRC是一种新技术,广义上来说,React Native对iOS来说又何尝不是一种新技术,Node.js对后台开发来说又何尝不是一种新技术。

电锯对岛上的人民来说是一种新生活,那么,离开小岛,踏足大陆,又何尝不是一种全新的生活。

我们写iOS的,眼光不能只局限于iOS的新技术,很多优秀的新技术依然在影响着我们,我们如果置若罔闻,只能被整个技术圈淘汰。

说了这么多,这是想批评一下以前的我。不过,现在的我,会去接受React Native,会去使用Python开发Web、各种小工具,会去看几本MongoDB的书籍,会去把算法导论拿出来看几章,而这,就是我今年最大的改变。

当然,我们首先得有一把干将莫邪,然后才能有一把瑞士军刀。

CFHipsterRef

这是NSHipster上卖的小册子,延续了NSHipster上的高质量文章。 主要讲了一些比较底层的东西,比如Kernel、OSAtomic等等。本书的第二章讲的是Objective-C Runtime,讲了常见的用法,比如添加属性、方法、类等。我受到这方面的启发,结合于我们项目中使用的一些开源库,写了一篇Objective-C runtime常见用法。文中我对runtime的常见用法结合实例来讲解,应该是更加容易理解的,有兴趣的可以去看看。介绍屠龙刀的多,介绍怎么用屠龙刀砍木头的应该不多。

其他技术书籍

函数式编程思维

我们在去途app中全面使用RAC,RAC给objc引入了很多函数式的思想和语法,但是我并不是很了解函数式编程,所以买了这本书。

这本书用Groovy、Clojure、Scala、Java等语言讲解了函数式编程的常见特性,比如说高阶函数、惰性求值、递归等。这本书一定意义上开阔了我的眼界,但是同时,这书讲的比较简单了,很多内容没有涉及到,比较适合用来了解函数式编程。

这本书看的意犹未尽,我去找了另外一本书,想更加深入了解函数式。所以我又看了下面这本书:

Haskell趣学指南

这本书还没有看完,正在看,里面有很多我不理解的地方,但是并不影响我认为这本书很好。

RAC给objc带来了很多函数式的特性,map、reduce、filter等等,除了这些基本的之外,还有很多是和Haskell一样的,这本书对那些语法的使用做了补充,很适合入门函数式编程。举个例子,我第一次在RAC中看到zip这种语法的时候,我还以为是zip压缩呢。

图解密码技术

日本人写书很有意思,很多书写的很简单(objc高级编程那本书可不浅),读者非常容易理解,图解系列就是这样的一种书。

这本书讲了很多常见的密码技术,我也在组内进行了一次分享。分享是我以前的《比特币》系列的第二篇,第一篇是关于比特币的起源、如何生成、block等等,第二篇是介绍比特币的加密技术基础。比特币主要使用了SHA-256、ECC加密算法,但是我在基础上只分享了凯撒、简单替换密码、一次性密码本、DES、RSA。分享的内容也是以这本书为主,但是这本书太简单了,密码学又怎能不和数学结合,所以在分享DES、RSA的时候参考了计算机网络(第4版)算法数论这两本书。

和这书一起的,我还买了另外两本,图解TCP/IP : 第5版图解HTTP这两本,但是只是翻了一下,基本没怎么看,希望我以后可以有时间抽出来看一下。我并非软件专业出生,这些东西都只是了解,但是并不了解的多深,很遗憾。

其他书籍

其他书就看的少了,很多时候,时间不是那么充裕,只能在地铁或者公交上看看。

下面介绍的书籍都是在多看书城上直接限时畅读或者特价购买的。

金庸传(修订版)

这个是在去张家港的路上看的,去张家港是因为我老婆的大学同学结婚,过去随份子。大巴开了两个小时,再加上其他车的时间,总共大概在3个多小时。这书不厚,看着看着也就结束了。书里面介绍了金庸的大半生平,我也不知道哪些是真的,但是有个东西我印象很深刻,就是书里说金庸的祖父在丹阳当县令。好吧,我是丹阳的。

一胜九败3

我也不知道一胜九败这书有多少册,我看这书只是因为这书限时畅读,两天看完不要钱。

说真的,我真的一点都不喜欢成功学,我觉得那种东西太虚,稍微听点还可以,听多了,人都可能废了。

我记得在《非你莫属》的一期节目里,有个人刚毕业,学了点成功学,要年薪百万,要做老板顾问,老板问他,你可以帮我什么,他说,所谓天地人。。。。老板立即打断了他,老板说,我问你怎么帮我营销我的产品,而你是想告诉我何为天地、如何做人是吗。

我们写程序的,还是脚踏实地,好好工作吧。

书里有个点子不错,说百度在美国上市的时候,为了让别人理解百度更懂中文,他们用二三十种方式去描述”我”,比如吾、洒家、寡人等等,很有意思。途牛是不是也可以在广告上用各种语言和很多有地域特色的方言去说”我们这老漂亮了”,这会不会很有意思。

第一团队

我真不是去看成功人士怎么成功的,完全是这书畅读,我随便看的。

成龙:还没长大就老了

这书给我的最大感悟就是:一份耕耘,一份收获。成龙这么努力才能成就现在的位置,虽然这里面有很多机会、运气,但是,更多的是那一份拼搏。他是一个令人肃然起敬的男人。

Article Published in on iOS

Article by 付军