2014

2014-12-31 评论(6) 分类:随记

又到了12月31日,第八篇年终博客。

房子

房子这事跟2013年的总结连接上了,写2013时就在忙买房的事,今年1月1日就去跟房东签约交定金了,接下来是一阵折腾,手续繁多,出现各种难题一一解决,还好没出什么意外,顺利完成交易。接下来刷墙,买家具,5月份就先入住了,算是很快,接着陆陆续续把家里需要的东西买齐,花了不少时间精力,钱也哗啦啦流走,到最近几个月才止住。入住后没多大特殊感觉,我对这方面不太敏感,相对于租房最明显的差别就是可以随意买家具,随意放置装扮自己的家,当然环境是比之前晚上楼下烧烤档吵闹又有烟味是好得多了,但离地铁站也比之前远了,特别是现在每天上下班,上地铁下地铁两段路程要走二十多分钟,但也没找到什么好办法,走着走着就习惯了。地铁发展这么久,还没出现一种方便的地铁接驳工具,真是遗憾。

我挺希望我的房子可以做到简洁和实用,但不太容易,发现简洁是奢侈品,怎样才显得简洁?大量留白。怎样才能做到大量留白?一是东西少,二是房子大。我们一是东西多,二是房子小,简洁恐怕是实现不了了。即使东西少房子大,若想实用,也很难实现简洁,简洁和实用往往是一对矛盾的需求,例如你想方便地为手机充电,家里就会充满杂乱的充电线,你想家里能方便地拿到纸巾,家里就要放很多纸巾盒,在各种需求推动下慢慢变杂乱。要解决这个问题估计得等智能家居发达了,我说的不是现在的智能家居,现在的智能家居没看到有任何用处,没有让人拥有的欲望。理想中的智能家居是让家里的东西我不需要的时候隐藏,需要的时候马上出现,能远程执行机械控制,例如拉个窗帘,倒杯水之类的,而不是开关空调电灯电视这样画蛇添足的数码操控,悲观目测这一天还挺远的。

结婚

结婚咯,一下就变成已婚人士,至今对这身份的转变还没缓过神来╮(╯▽╰)╭ (开玩笑)。年初就领了证,年中拍了婚纱照,8月在家乡小小摆了下酒,弄得比较简单,只是请一下爸妈那代人的一些亲戚朋友喝个喜酒,再加几个好友庆贺,没有弄婚礼,但一些传统仪式还是有简化地做了。虽然仪式和酒席简单,但操办起来还是有很多繁琐事情,这些家里人都包办了,真是辛苦了。

摆完酒就去度蜜月了,想当年小学时看漫画IQ博士,第一次接触到度蜜月这几个字,当时还不知道啥意思,一晃就轮到我实践度蜜月了。去了马尔代夫瑞喜登岛玩了四五天,相当不错,第一次出国,第一次去海岛度假,第一次看到浅蓝色的海滩,第一次浮潜,总的来说时光就是在浮潜-吃饭-懒洋洋躺着-游泳-逛小岛中度过,舒适惬意。感觉四天的时光很长,过得很慢,可能因为过的日子不是重复的,是新颖的,人脑就会活跃起来感知外界,从而感知到的时间就越长。这么说来经常去体验不同的东西,常外出游玩,会让自己的精神寿命更长,感受到更多活着的时间。可惜正儿八经地工作后,能外出游玩的时间少了。

工作

年初回腾讯工作,为什么回大公司工作我另一篇博客说了,小公司若没有高速发展,对技术人员的成长很不利,若走另一条路自己创业,也没萌生什么值得尝试的想法,社交能力和忽悠能力也是我的大短板。迷茫了好一阵子,在一段时间里还有能力停滞焦虑症,觉得还是先回大公司锻炼技术能力。工作了九个多月,刚开始一段时间比较困难,后面适应了就好了,现在状态不错,想认真投入做好每件事,在技术上做好一个产品。

人总是生活在一个个框架下,公务员生活在国家体制这个框架下,创业者生意人生活在市场经济这个大框架下,而大公司也形成了自己一套框架,在一个框架下待久了,可能会习惯这个框架,依赖于这个框架给予的利益,导致遵守规则追求框架内的利益成了最重要的事,眼界变窄收缩于公司内部,把自己其他的追求都抛之脑后。大公司提供了大平台和良好的成长环境,同时也可能有这样的局限,需要警惕。

APP

APP今年不断在下滑,不太好受,不过也没更多办法,一是我没放多少精力在上面,没有精力去研究竞争对手,研究AppStore新规则,更新APP功能,做热点APP,解决投诉等,二是主要APP受冲击,在私密文件保存这个领域这一年多出了非常多模仿和竞争对手,有些除了名字跟我的一样,界面配色都被拙劣地模仿了,有些看起来是做得还不错,很多还是免费下载,在这一大波同类产品冲击下,销量下滑也是情理之中。

今年时间有限,只做了三个小APP,年初的StockProfit,年中的WifiKeyboard和年末的Fitastic。StockProfit每天自动计算已购股票的收益,但因为各国股票市场货币不同,不清楚世界各个股票市场对应的货币单位,至今还没做好汇率转换问题。WifiKeyboard是通过Wifi连接电脑的键盘,可以像蓝牙键盘一样用键盘在iPhone/iPad上打字,iOS8出来之前只能在APP内同步打字,打完后复制到其他地方,iOS8以后做了键盘扩展,可以在任意地方打字了,个人感觉还是挺不错的。Fitastic用于记录每日运动项目,很早就想做这个项目,因为做俯卧撑/plank这种运动时,挺想记录下知道我历史上一共做了多少个/多少分钟,不过觉得这个需求太小众,一直没做,这次在老婆的推动下完成了这个APP,每项运动的图标都是老婆设计的,算是合力做的一个APP。后面为APP的名字犯愁,最后还得感谢小木舟和老罗赐名。Fitastic刚好就在今天通过审核上架了~

还是挺喜欢做各种完整的小东西,这个爱好持续了十几年,搞得我对设计/产品/技术一直都有不小的兴趣,但时间和能力有限,目前只能选择发展技术能力,但时不时还是会有一些矛盾的想法。

股票

今年开始买点股票玩玩,可惜碰上形式不好的一年,跟2013年完全无法比,2013年随便持有几个互联网股,放一年,不翻番至少也有50%的收益,今年要是买个互联网股放一年,不跌就偷笑了。结果我的战绩是不盈利不亏损,没仔细算过,估计比把钱放余额宝收益低。我只买了自己熟悉的互联网公司的股,没去分析各种股票市场走势,感觉比较复杂,有各种内幕,各种操盘博弈,A股在没内幕消息的情况下更是跟赌博没两样,一直没碰它。作为一个门外汉,买卖股票的时候心理活动挺有意思的,持有时看它涨了不舍得卖,觉得形势大好了应该还会继续涨,看着它跌了揪心,又不甘心冒着亏损把股票卖了,也一直等,导致买入的股票都不怎么卖出,到最后还是亏了。

电台

今年没看什么书,因为把看书的时间都贡献给了听电台。年初发现逻辑思维很振奋,用上下班坐车走路时间把他过去一年的节目都给听了。接着年中发现晓松奇谈和晓说,更是喜欢,把他两年多100多期的节目听了,期间还听了不少一席的讲座。

逻辑思维大部分讲的是互联网思维/创业/小团队/市场经济,偶尔讲讲历史,但大部分是通过历史来说现代的一些道理。刚开始听觉得能获得挺多知识的,后来感觉说教味太浓了,道理说着说着还有点成功学的味道,最近几期听着老是有反驳的冲动,没那么有说服力,也不怎么喜欢听了。

高晓松说的题材比较纯粹,都是纯文科,历史/地理/政治/军事/民族/美国,都非常有意思,有点帮人睁眼看世界的感觉,有很多自己个人的观点,但没有说教的成分,只是跟大家分享下自己的想法,感觉很舒服。挺佩服高晓松庞大的知识面,可能因为我文科知识太匮乏,很多观点听起来都很有意思,例如上次博客提到的历史在马尔塞斯陷阱中不断循环,又如2012年最后一期说的科技和人文的交替前进。

听了这么多,说下一点小感触,世界很大,也很复杂,很多事情的发生都无法用几个因素推导出结果,但人脑最容易理解的就是因果关系,而且比较容易赞同逻辑简单的因果关系,所以在向其他人分析一件事的原因时,只需要列出众多原因中的一两条,就能把因果关系串起来,如果听众对这件事情的了解不是那么多,不知道影响事情发生的各种因素,很容易就会信服他对这件事因果关系的分析,而偏离事实真相,知识的作用之一就是减少这样的事情出现,它可以帮助你不被人或少被人忽悠,你知道得越多,别人偏离真相的推导就越不容易说服你,在信息爆炸的年代各种观点乱飞的时候帮助你尽量看清真相,不被洗脑,不轻易相信任何人的话,独立思考。

其他

身体好了挺多,这一年没生什么病,就牙齿问题麻烦了点。

自律能力没多大提升,还是有大量时间照常浪费,注意力也经常分散,话说这事连续好几年的年终总结都是这样说,还有没有救……

从2010年开始在Google Calendar写每日做的事情,今年开始全部转到DayOne这个APP上,变成真正的写日记了,看上它的配图/搜索/同步功能,一天配一张图还挺有意思,不过生活单调后经常没有拍照。

据豆瓣统计,今年只读了区区七本书……是去年的1/6,上面说了因为业余时间都被电台占据了,工作时间又长,就没读什么书了。电影看了21部,倒不算少,但没什么值得特别推荐的电影。

2015年,好好过~

QQ邮箱APP漂流瓶开发记录

2014-12-26 评论(6) 分类:技术文章

QQ邮箱4.0增加了漂流瓶功能,记录一下做漂流瓶过程中碰到的问题。
(更多…)

web前端开发与iOS终端开发的异同

2014-12-22 评论(4) 分类:技术文章 Tags:

毕业之前一直在做前端开发,毕业后就转成做iOS开发,这两者有很多挺有意思的对比,尝试写下我能想到的它们的一些相同点和不同点。

语言

前端和终端作为面向用户端的程序,有个共同特点:需要依赖用户机器的运行环境,所以开发语言基本上是没有选择的,不像后台想用什么就用什么,iOS只能用object-c,前端只能javascript,当然iOS还可以用RubyMotion,前端还能用GWT/CoffeeScript,但不是主流,用的人很少,真正用了也会多出很多麻烦。iOS还可以用苹果新出的swift语言,后面可能用于取代object-c,还处于起步阶段,先不讨论。

objc和js这两者有个有意思的对比:变量/方法命名的风格正好相反。苹果一直鼓吹用户体验,写代码也不例外,程序命名都是用英文全称并且要多详细有多详细,力求看变量和方法名就能知道是干嘛的,例如application:didFinishLaunchingWithOptions:。而js因为每次都要从网络下载,要力求减少代码体积,所以变量方法名是尽量用缩写,实际上有代码压缩工具,无论变量名写多长最终上线的效果是一样的,但大家也都习惯了用短的命名,例如上述objc的application:didFinishLaunchingWithOptions:方法在js里习惯的命名是:$()。

objc与js都是动态语言,使用起来还蛮像,但objc是编译型,速度快,很多错误也能在编译过程中被发现,js是解释型,性能依赖于解释引擎,即使在强劲的v8引擎下性能也赶不上编译型语言,语言太动态,变量完全没有类型,写起来爽,debug起来稍微费点劲。一直感觉js轻巧灵活放荡不羁充满各种奇技淫巧,objc中规中矩没c++ java那么严肃也没有js那么灵活。 (更多…)

iOS8多语言备选规则

2014-12-7 评论(2) 分类:技术文章 Tags:

近期伊书突然接到一些外国用户的投诉,说伊书界面变成了中文,但他们系统语言不是中文,是法文俄文日文等,伊书只支持中文跟英文,在不支持系统所用语言的时候,理应会自动选用英文,不知为什么会选成了中文,经过艰难困苦的重重排查,终于找到原因,知道了iOS多语言备选的规则。

主要有两个影响因素,一是CFBundleDevelopmentRegion(Info.plist的一个字段),二是iOS8新增的系统首选语言列表:

(更多…)

AFNetworking2.0源码解析<四>

2014-11-18 评论(2) 分类:技术文章 Tags:

续AFNetworking2.0源码解析<一><二><三>,本篇来看看AFURLResponseSerialization做的事情。

结构

AFURLResponseSerialization负责解析网络返回数据,检查数据是否合法,把NSData数据转成相应的对象,内置的转换器有json,xml,plist,image,用户可以很方便地继承基类AFHTTPResponseSerializer去解析更多的数据格式,AFNetworking这一套响应解析机制结构很简单,主要就是两个方法:

1.-validateResponse:data:error:

基类AFHTTPResponseSerializer的这个方法检测返回的HTTP状态码和数据类型是否合法,属性acceptableStatusCodes和acceptableContentTypes规定了合法的状态码和数据类型,例如JSONSerialization就把acceptableContentTypes设为@”application/json”, @”text/json”, @”text/javascript”,若不是这三者之一,就验证失败,返回相应的NSError对象。一般子类不需要重写这个方法,只需要设置好acceptableStatusCodes和acceptableContentTypes就行了。
(更多…)

驾校教练平台

2014-10-26 评论(7) 分类:随记

前几天听在学车的朋友说教练正在狂骂学员,还是女学员,骂到快哭了,还没有停止的意思,快看不下去了。在当前驾校这种事情司空见惯,之前学车就体会到了,我的教练还算是中等凶残的,骂同车的学员你是猪啊这么笨,出现一点操作不对分贝直接上涨1000%,我都快受不了了,还有大批更过分的,这个行业真是很奇葩,这种情况竟然还一直到现在,网上搜“驾校 骂人”能搜出一大堆来,很不科学。当然运气好也能碰到和蔼可亲的教练,但几率不是很大。

整个行业这样,就跟个人素质关系不大了,是制度规则的问题,似乎教练们对学员态度怎样都丝毫不影响他们的工作晋升和收入,教练的工作是稳定的,每天照常上下班,做得好做得不好,骂学员不骂学员对他们来说都一样,反正公司缺人不会炒鱿鱼,也没什么晋升空间,合格率不要太低就行了。驾校对教练骂人这种事情是不管的,反正不会影响报名学车的人数,驾校是位置相关的资源,再差也有人贪近来报名,现在学车的人这么多,更不怕没生源。要是教练把学员骂到完全不想来学,那对驾校还更有利,因为有时间限制,过了两三年时间就得重新报名交钱,之前交的钱就给驾校吞了。

以上说的教练属于打工型的教练,在公司的温室下,没有竞争没有压力,做得好做得差没区别。现在市场上还有另一个种教练,叫加盟型教练,他们挂靠在驾校上,但跟驾校不是雇佣关系,他们自己买教练车,自己拉学员到他这里学,只是让驾校提供教学场地和搞定约考收费这些事。加盟型教练相当于自由职业者,自己可以自由控制上下班时间,跟打工型教练最大的不同是打工型都是公司给他们分配学员然后按时发工资,加盟型则是自己去拉学员,拉多賺多拉少賺少。这种类型的教练让学员与教练之前有了种制衡,因为加盟型教练的生源大多靠口碑传播,要是他跟打工教练一样骂人,就没人向朋友推荐他,生源就变得难找,自己钱也就賺得少了。

有了这种制衡关系应该好挺多了,不过还不够,要是这个教练看你不爽决定不要你这单个人的口碑了,那还是照骂,而且被骂惨了你也不能投诉驾校,以你单个人的力量对他的声誉能造成的影响也有限。最好的方式还是做一个网上平台,教练在上面招生,学员可以在上面评价教练。这个平台如果面对打工型教练应该是很难做起来,面对加盟型教练就很有吸引力了,他们本来就要想方设法多招些学员,如果有这个平台应该会蜂拥而上。有了这个平台学员就有了更大的权利,他们对教练的评价很大影响以后的学员选不选这个教练,这时教练要敢再骂人,这个自由职业恐怕是做不成了,另外要是有多个学员向平台投诉这货骂人,平台也可以把他加入黑名单。在这平台上,教练可以获得生源和公平的评价,学员可以获得好服务的保障。

这种平台一般都有先有鸡还是先有蛋问题,像打车软件那样,有很多的士司机用,用户才会用,有很多用户用,的士司机才会用。但这个教练平台没有这个问题,对加盟型教练来说,即使初期上面潜在学员不多,也乐于在上面登个记,多个打广告的地方。另外想找到这些加盟星教练也不难,这些教练都会在加盟驾校上登记,一网打尽得到每个人的联系方式一个个推销也是可行的。对于用户端(想学车的人),可以以普通驾校教练骂人为广告点宣传,跟大伙说咱这的教练素质高,一个区域一个区域地推,具体就看团队的地推能力了。这个平台如果能顺利发展起来,加盟型教练每年就可以招到稳定的生源,賺得比打工型教练多很多,好的教练还能有溢价的能力,可以吸引越来越多的打工型教练转为加盟型教练,市场环境可以变好,规模可以变大。

最后一个问题,就是用户学完车拿到驾照后,就会跟这个平台say goodbye了,以后也不太可能再上这个平台,流动性太大,除非这个平台是挂靠在一个更大的平台上,可能用户多了后可以逐渐发展成把车相关的东西包进来,例如摇号买车交车险年审违章缴费,这得再慢慢细想。初期可以在这个平台以外加多一些资讯/教学类的内容,吸引想学车的人即使不在这里选教练,也可以把它当工具使用。

以上是一个驾校O2O项目的设想,真希望尽快有人能做起来。O2O实在太有前途,除了给用户提供便利,信息透明+评价体系还可以改善行业的服务水平,提供实实在在的价值,很多行业都可以引入这个模式,快餐/的士/代驾的O2O已经发展得挺好,小区服务还在路上,O2O可以把很多行业都变得更好,真有点新时代开端的感觉。

扯扯

2014-10-24 评论(6) 分类:随记

从博客有那么一些认识的人看开始,我写博客就畏手畏脚了,以前的博客是什么都往上写,后来就想写点有主题有内容的东西,后来越来越眼高手低,想写些好的东西,又没那个能力,怕写的东西见不得人,就越写越少了。这次决定整一整这样的风气,写一篇乱七八糟的博客。

博客的时代早就过去,写博客的很少了,我一直写到现在只是跟自己有个约定,一定至少每月写一篇博客,无论是什么内容的。我对自己类似的约定还有每天写日记、保持记账,至今已经连续写了1688天的日记,记账也连续记了4年。其实写这么久日记至今我还没看出有多大好处,大多是流水账,写了也挺少再回去翻看,不过就是形成习惯了,有点强迫症,一天不写就破坏了这个事情的完整性,没有连续了,所以一天没拉下,不过后来发现每天在日记附上一张照片挺有意思,照片很容易翻看,不过这个实施起来有点困难,照片经常忘了拍,没法连续,也就没了那个强迫症。记账倒是带来挺多好处,很清楚地知道自己的财务状况,还有买东西的时候想到待会还要记账,可能就懒得买了,省了点钱。

一直坚持做上面说的几件事,可别觉得我是个很有毅力的人,很多事情我都没坚持下来,没有坚持学英语,没有坚持锻炼,没有坚持一大堆显然有益的东西,不仅如此,拖延症还十分严重,有颗牙就是因为拖延不想去医院,被我拖到不能修复只能拔的程度,工作上的拖延导致很多事情没完成。其实拖延就是懒惰,是人性的一部分,要说拖延和懒惰的区别就是说自己拖延的人意识到这样的懒惰行为是对自己不利的,不应该这样做,但又不由自主地懒了下去,给人感觉这是一种病,才有拖延症这说法。大家都说自己有拖延症,就是环境竞争太激烈,大家都太想往上爬,想获得名利,都觉得自己的懒惰太不应该,所以才成了现代社会人的普遍存在的“症状”。要是大家都优哉游哉,社会没什么竞争压力,工作拖着不做算哪门子拖延症,那是生活。

半年多来上下班路上大部分时间都在听电台,很有意思,电台应该是上下班路上最好的伴侣了,无论是坐地铁坐公车打的开车还是走路都能听,其他像视频,文章,电子书都无法做到这样,所以移动互联网时代电台很有前途,好的节目也很有前途。至今我就听三个,一席,逻辑思维和晓松奇谈。一席就是想做中国的TED,可以听到各种不同领域的佼佼者出来发表他们的观点,展现他们的生活和工作,因为是各种不同的人演讲,不同人的落差还是比较大的,有些讲得让人拍案叫绝,有些不感兴趣。逻辑思维听得比较多,很多观点都是挺不错的,但听多了会觉得很多重复,讲市场万能和互联网万能的太多了,渐渐的观点也不怎么能说服人了。晓松奇谈最近才发现挺好听的,这货实在太能说了,这富家子弟知识分子还能兼有屌丝气质,挺难得,故事说起来引人入胜,当然少不了一些夸张的修辞和很多的一家之言,但总体听起来很舒服,让人觉得历史太有趣了,挺佩服的。可能接下来百家讲坛要转移到电台了,不是整个节目转移过来,而是很多那些能说会道的人会自己在电台开个专栏讲,因为成功案例越来越多了。

在电台听到一个挺有意思的东西:马尔塞斯陷阱,就是历史上战乱时期人口变少,人均拥有土地资源变多,每个人都变得富裕,富裕了不想打战,安定下来生很多娃,人口增多,出现繁荣发展太平盛世,人口增多到一定程度,人均拥有土地资源剧减,人吃不饱饭,对政府意见大,豁出去造反,战乱人口不断减少,又进入下一个循环,所以那些太平盛世都是战乱后的几十年内发生,那些帝王不一定有多英明,只是他刚好处在这个时期,亡国的帝王只是不走运刚好处在另一个时期,电影《雪国列车》就是这个过程的缩影。这个循环的原因是指数级增长的人口与有限的资源间的矛盾,但自从工业革命以来,这个循环打破了,科技的发展使人类能从地球上得到比以前多得多的资源,从而能支撑这么多人口在地球上存在而不用发生战争强制清除人口。这样说来从人类历史上看,无论多么伟大的帝王/军事家都不值一提,真正能影响人类历史进程的是科学家们。第一次接触到这样的历史观还挺震撼的。

听南明历史的时候同时在跟爸妈看抗日神剧,忽然觉得日军入侵跟当时满军入侵性质是一样一样的,在那个时代人们的反应跟我们现在对日军的反应也是一样的,群情激奋抗争到底,最后区别只是满军把事办成了,结果几百年后我们多数人在看待清朝时,大部分对其中英明的皇帝大家褒奖,全国头发都给剃了还说满族人被汉化,黑猫白猫抓到老鼠就是好猫,治得了国就是好政府,而忘了他们之前侵略时是怎样残暴屠城,不知这是因为人的遗忘和适应能力太强的原因,还是胜利者书写历史的原因。

好了,今天就先扯到这里吧。

AFNetworking2.0源码解析<三>

2014-9-15 评论(6) 分类:技术文章 Tags:

续AFNetworking源码解析<一><二>

本篇说说安全相关的AFSecurityPolicy模块,AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题。

HTTPS

HTTPS连接建立过程大致是,客户端和服务端建立一个连接,服务端返回一个证书,客户端里存有各个受信任的证书机构根证书,用这些根证书对服务端返回的证书进行验证,经验证如果证书是可信任的,就生成一个pre-master secret,用这个证书的公钥加密后发送给服务端,服务端用私钥解密后得到pre-master secret,再根据某种算法生成master secret,客户端也同样根据这种算法从pre-master secret生成master secret,随后双方的通信都用这个master secret对传输数据进行加密解密。
(更多…)

AFNetworking2.0源码解析<二>

2014-9-3 评论(8) 分类:技术文章 Tags:

AFNetworking2.0源码解析<一>

本篇我们继续来看看AFNetworking的下一个模块 — AFURLRequestSerialization。

AFURLRequestSerialization用于帮助构建NSURLRequest,主要做了两个事情:
1.构建普通请求:格式化请求参数,生成HTTP Header。
2.构建multipart请求。
分别看看它在这两点具体做了什么,怎么做的。
(更多…)

AFNetworking2.0源码解析<一>

2014-8-28 评论(29) 分类:技术文章 Tags:

最近看AFNetworking2的源码,学习这个知名网络框架的实现,顺便梳理写下文章。AFNetworking2的大体架构和思路在这篇文章已经说得挺清楚了,就不再赘述了,只说说实现的细节。AFNetworking的代码还在不断更新中,我看的是AFNetworking2.3.1

本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构建了NSURLConnection,作为NSURLConnection的delegate处理请求回调,做好状态切换,线程管理,可以说是AFNetworking最核心的类,下面分几部分说下看源码时注意的点,最后放上代码的注释。
(更多…)