必然,重混和互动

必然,重混和互动 创新不一定是创造 一直有个误区,以为创新就是从无到有。必然这章,让我重新定义创新的意思,为了区别我原来对于创新这个词的理解。就先把从无到有的这个过程叫做创造吧。 难道创新不是从无到有吗?不全是,是一部分,准确的讲,应该是一小部分。从无到有是一件很不容易的事情,依我看来,非大能力者和大毅力者不能为之。但创新不仅仅是这部分难的,也有一部分简单的,将已经有的东西,拆分打乱,然后重新组合,重混成一个崭新的事物。不是从无到有,但一样满满的全是新的,这不就是一种创新。 那么,道理谁都会讲,问题是,该怎么做? 从目录说起 必然书中,给了一个强力的例子,当我读到这的时候,莫得有一种心有戚戚的感觉。目录对于书来首,绝对是伟大的创造。让亿万书目从此有了检索。当然,对于此完全可以写一篇文章专门来歌颂,但今天不是来夸它的。 如今的网络时代,文字这个载体依然在这个平台上呼啸嘚瑟,但较比千年,它已经出现了形形色色的对手。图片,声音,视频正不断的扩大着,毕竟数字时代,很多以前只能靠文字和书来承接的,现在都可以通过多媒体来,而且更加可观,更加优秀。但即便如此,仍有些东西还未完善,比如目录。 如果把书对比与电影。那么,目录对于书,什么对于电影呢?关键位置的截图吗?还是预告片?我们读一本书的目录能了解到这本书整体的结构,而电影呢?只看预告片足够吗?或者看关键位置的截图(相信经常看日本爱情动作片的孩子,应该能明白我想说的是什么)?其实不足够,技术还需要发展,文字已经发展到可以通过搜索引擎来检阅目录和关键字来定位到书中的具体位置,可搜索对于图片和视频仍然是进行困难。 先把困难放在一边。如果google能搜索音乐和电影里的具体内容,我们是否可以想象,当我们需要一个场景的时候,我们告诉google我们想要一个什么场景的片段,然后所有相近和相似的片段都会出现供我选择。想一下还挺兴奋的。 时间不可逆吗? 时间是最大最不可能回退的成本,也是最廉价的成本。因为它不可保存,只能使用掉或者浪费掉。但反过来想,真的如此吗?数字技术,已经很大程度,或者说,另类的实现了这种替代。编辑文本时时时撤销,从任何一个保存的节点再重新开始写。视频和图片软件同样,游戏软件更加是如此。仍记得,当初玩《仙剑奇侠传》时,挂掉之后就会出现一排字:胜败乃兵家常事,大侠请重新来过吧。时间不可逆,但我们却可以重新来过,我们再改变时间吗? 时间悖论很多,也太过于光怪陆离,但无论哪个版本,能回看自己的历经,那将是一种什么状体?读书读到这里的时候,我猛地想起来一部英剧——黑镜。 VR?虚拟现实?还是从智能说起吧 这两年VR被炒得太热了,我读到这的时候,没多大热情和兴趣。只有一个小小的猜测,虚拟现实技术,我预想真正带动它发展的,应该是网络色情服务。它是最能带来互动,但却不需要很多智能的互动的行业,我们拭目以待吧。 互动这章也很有意思,一直在努力提供一种思路。我们使用各种电子设备,达到一种感受。但使用本身是相互的,越进步,就越相互,是一种相互满足的状态。或许,我们一直追求的智能,本来就应该是一种互动的概念,我读一本书时,我遇到一个不懂得词语时,不应该需要我去查询,甚至不需要我用手点一下屏幕,书和屏幕就自动显示这个词语的意思以及维基上的解释。(这并不困难,只要让屏幕读懂我们皱眉,我们抿嘴,我们…总之,我们总会出现什么被捕捉到)这才是互动,或者,这才配得上智能二字。 突然间脑洞一点点,人们总是歌舞,歌舞,但总是先有歌,然后编排舞步,有没有一种方式,让我在房间里自由自在的舞动,房间里的设备捕捉到我舞动的感觉,然后出来一首动听配合舞蹈的歌曲呢? 互动代表它有一种智慧在里面,即便是略显机械的智慧,仍让我们觉得它是活的那种感觉,而这种感觉恰恰就是人们离不开的东西。 我们头戴着头盔,单靠意识去让我们的机械手臂拿起东西来,更高级的,让我们能隔空取物…然后,我又在想,如果这样,那么头戴着头盔,让我们能用意识控制电脑,打开文件,移动鼠标,打字…这两种,切不论哪个更难实现,反过来想问问自己,哪个以后更为常见呢?又是那个问题,我们到时候是更多在乎所谓的现实世界,还是更多在乎所谓的数字世界呢?我觉得,很可能更在乎的是数字世界,就我而言,更在乎用意识控制电脑打字出来,想想就激动的忍不住颤抖。 还有一点。互动的成本,或者说,任何技术带来的学习成本。学习是有成本的,这个成本还不是定额的,就现在而言,我所知道的,年龄和阅历会让这个成本变得无法估计。所以,实现技术是一件事儿,普及还是一件。

必然,我们在选择,也在被选择

必然,我们在选择,也在被选择。 摘要 相见恨晚 我就是我,是颜色不一样的烟火 时间是个伪命题,但注意力是真命题 必然之必然,KK的这本书的确有很多角度让我折服。离开固有的想法不易,但重新解读固有的想法似乎更难。 相见恨晚 必然中专门讲了亚马逊的推荐,读书或者书目推荐,既然是读书。 那从读书讲起。 经常读书,最开心的莫过于读到一本好书,同理,不开心的也是读了半天才发觉是一本烂书。自然,选书一直是我的难题,而且越来越难,因为时间越来越少。每每读到一本好书的时候,总有那么一种相见恨晚的感觉。自然,找到一本好书不易,找到一本一见如故,很对自己口味的好书更是难上加难,选书真的是一件很技术的活,直到亚马逊的出现。 *亚马逊的那个功能————购买这本书的用户,同时还购买了这几本书。*亚马逊的推荐真的是拯救了我,刚开始的时候我只是尝试的买了几本系统推荐给我的书,但随后便一发不可收拾,那种相见恨晚的感觉一次接一次的,书荒已成历史。(此处让我先美一会儿) 这个世界上,总有一些人和我喜欢一样的书,有着相似的历经,自然也会有着相似的书目,如果我们能相聚在一起,开个读书分享会,交换有无,将彼此读过的书分享出来,每次读书会结束,我都能收获一些新的书目,享受一段新的读书时光。以前,这是一个奢望,毕竟找到志同道合的人,然后相聚是一件多么需要巧合的事情,但在现在,它已经不需要了,数据洪流中,我们已经公开了分享了自己的书目,甚至分享了自己的品味和思考(只是我们并不自知),亚马逊将这些计算完,汇成一个标签,然后找到相同标签的人,将这些书目放到我们面前。至此,我跨过了我的奢望。 替亚马逊做完广告。当我读必然读完这段的时候,我脑子里一直有这么一个想法。既然,志同道合能让数据推荐给我好书,那同仇敌忾是否也一样可以呢?比如,亚马逊的书下面有那么一个选项,喜欢/讨厌,供我选择。然后,在下次登录时,讨厌这本书的用户,都比较喜欢这几本书或者讨厌这本书的用户同时也讨厌这几本书。如此一来,岂不更有意思。 志同道合是理由,那同仇敌忾也是。其实对于我来说,不喜欢反而更能准确。和打仗一样,有时候不一定是有共同的目标而携手作战,而是因为有着共同的敌人。 我就是我,是颜色不一样的烟火 谷歌已经实现了,在大规模定制。我们很多创业,包括我正在工作的内容一样,也是在数字领域内,为用户做着个性化定制。在数字领域里,它变得没有那么困难和遥远,但在现实生活里,个性化定制仍然是奢侈品,仍然难以普通化。 网络时代,尤其是我这种职业就是码农的人来说。所谓的个性化,已经不仅仅是趋势,真的就是这本书的题目那样,个性化是一种必然,这种必然在网络上,在数字上,正在发生。但现实生活里,工业化仍是这个社会的主题,个性与定制对于每个人来说的确很遥远。 我喜欢张国荣的那首《我》,尤其是这句歌词——我就是我,是颜色不一样的烟火。寥寥几字,却让我深深的着迷其中。我们人,为了生存而群居变得一样,但却又一直挣扎着,想变得不一样,真是奇怪。网络开启了这个门,越来越多的公司和企业在网络上为他们的用户提供各种各样的个性化定制,就像在亚马逊,我们每个人看到的首页的内容都是不一样的。但越是如此,在现实生活里,我们就不得不面对,普通化和工业化。个性似乎只能存在数字世界里… 但是!但是!但是!我们真的需要吗?需要在现实里同样那么个性化吗?数字领域里的个性化真的不足够满足我们的个性化吗? 我似乎从来不用虚拟世界这个词,大多数文字里我都用的,数字领域,数字世界,网络世界这样的词汇。大概本身是因为从事互联网开发,所以世界观来说,这个世界并不虚拟,反而真实的可怕。更何况,我感觉网络对我的改变更加的快速和迅猛,越发离不开手机和网络。我深深的感到,在数字里的时间超过我再现实生活里的时间,既然如此,数字和现实,哪个算真哪个又叫虚拟呢? 也是如此,现实生活里的个性化虽然仍遥不可及,但在数字世界里的时间越长,反倒觉得现实里的那个性化不重要了。我似乎真的不太需要定制的拖鞋,定制的沙发,定制的台灯,因为我更需要定制的界面,定制的交互,与定制的功能。 我们总在努力如何将现实中的东西复制到网络世界里,却忘了,在网络世界,我们需要吗? 时间是个伪命题,但注意力是真命题 这就是后稀缺。我们只能与宏达世界的一小部分建立链接。所以,反过来,从宏达世界的方向来看,唯一稀缺的就是人类的注意力。 所以注意力留在哪里,金钱就就在那里。 同样,当我看到必然中举了这么一个例子,当我们因为投放简历或者投放广告等向对方发送邮件,那么收件人可以向发件人征收打开费用!邮件被打开阅读,费用就会被扣除。 这个逻辑非常的棒。向他人注意力支付报酬原则。 时间是个伪命题,它的确稀有,甚至比金钱稀有,世界上有很多东西难以复制,但想破脑袋也总有那么一点点复制的可能,唯独时间没有。绝对的不可复制,让时间成了珍品,也是我们经常说的那样,一寸光阴一寸金,寸金难买寸光阴。但可怜的是时间不仅仅只是不可复制,还不可存储。一天只有24小时,不会多出一秒,却也不会少一秒。无论你有多少事情要做,只有24小时,但巧的是你什么事情都不去做,也有24小时。不可复制,也不可存储。你如果不用掉这个时间,那么不好意思,你只能浪费掉这个时间。所以时间是个伪命题。 但注意力不是!时间是亘古的,就在那里。注意力不是,注意力停在哪里,哪里就是工作,哪里就是生活。 网络给了我们一个大大的空间,让我们与这个世界的链接变得不那么困难,不在那么遥不可及。我们不用跑到亚历山大图书馆去找珍贵的单本,也不用跑到耶鲁大学去听公开课,这些你都可以通过google得到。发现了吗?在我们这个时空的世界里,空间被‘压缩’了,那些本来在空间上占据‘稀有’这个标签的东西,渐渐变得普通甚至廉价。同样,空间上的链接变得越来越容易,信息也同样变得越来越容易,容易的东西就会泛滥,这个时候,无法被网络复制的东西便会珍惜起来。注意力,基于时间成本上的这个东西,慢慢的变得稀有。因此,网络时代,注意力成了资源,成了‘货币’。 注意力留在哪里,金钱就在那里。 什么是选择? 我们现在的选择权是越来越大。网购扩大的不仅仅是商圈,更是无限扩大了我们的选择权,那么,我们会选什么?那么,我们会怎么选?那些数据洪流,和我们生存或者说监视了我们好几年的数据,在帮我们选,事实上应该说,它们能预期到我们将会问什么。 然而,我们并不知道自己想要什么。人就是这么奇怪,这么贱。相反,数据会告诉我们,我们想要什么,它是由我们自身行为所产生的建议和推荐。就像一面镜子。让我们看到自己想要什么的镜子。 那么,什么是选择?

幸福,兄弟

幸福,兄弟 感冒似乎又加重了,本来计划写的文字又拖了。算了,还是忍不住爬起来,开始写这篇文字。 我有一个兄弟,代号狐狸,前天结婚了。 新婚快乐,狐狸,非常的遗憾,我没能到现场,真的非常遗憾,我好渴望去现场看看,那应该是一个句号,很完美的那种,代表一个故事的结束和另一个故事的开始。 我的文字里总是会出现狐狸(真的有这么一只狐狸),他也算是个名言大师,总会在不经意之间,吐出象牙,对于一只狐狸来说,嘴里能吐出象牙已经是很难得事情了。我和他开玩笑说,以后你说的多了,可以出本书,书名我都给你想好了,人家白岩松出本书叫白说,你也一样,出本书叫胡说(狐说),胡说八道的那个胡说。然后,他就会赶紧接上说,好呀好呀。 在我这一群‘狐朋狗友’中,狐狸是第一个结婚的,先驱总是会比剩下的人更面对更多困难,但也总比剩下的人收获更多。我们都问,狐狸,结婚到底是什么感觉?狐狸想了想说,累,很累…妈的,累死老夫了。所以,我们都知道了,结婚真的很累人。但狐狸说这话的时候,一直掩盖不住笑意。所以,我们不知道,结婚到底有多满足自豪。 又一次,感到无比的遗憾,未能去你的婚礼,未能亲眼看到你们走过红毯,未能亲口跟你说上那句新婚快乐,未能… 这似乎是一个节点。从狐狸开始,终于也轮到我们这群人,慢慢走入婚姻,慢慢组建家庭,慢慢的开始柴米油盐,从那个小小的我变成那个大大的我。我们一直承载着父母的关怀,终于,要和另一个人一起,组建一个新的家。生活似乎变得不太一样,一下子要去想很多东西,一下子又要规划很多东西。 狐狸说过,这群牲口们似乎都说过,喜欢过得过且过的生活,喜欢无拘无束的日子,不要去规划,也不愿去规划。但现在,只能自己打自己的脸了。因为生活不再是一个人的事儿了,是两个人,以后可能还会是三个人或四个人的事儿。我们不在无所畏惧,因为我们不在孤军奋战,人有了牵挂,就会变得不一样。 写着写着,就莫名的羡慕了。 狐狸的故事,我看着看着,看了快十年,结果就这么错过了大结局。狐狸的爱情已经跑了十年,浪漫吗?当然浪漫,问人生能有几个十年,三十岁之前你能有几个十年?而且,最终走过红毯,许下今生的诺言,从此海枯石烂,粗茶淡饭,不离不弃的那个人,已经陪了你十年,卧槽,这么算算,真的幸福到爆!。我从18岁,看着这个故事走到现在,结果最后的大剧照合影里没有我,妈蛋啊,真不甘心! 末了。我其实也是个傻乎乎的人,我也准备了一份小小的稿子,打算到现场的时候,说给狐狸听。妈蛋的,稿子也没说,真不甘心啊: 想起七八年前,狐狸还喜欢染一头的红发,大晚上不好好上自习一群牲口出去喝酒,我真的记不起到底有几头牲口在场,我们在一起聊,梦想!对,一群不到十八岁的孩子不好好学习,跑出去喝酒还大谈梦想,大家一人一嘴不着实际的说着,轮到狐狸的时候,在那最最年轻无畏的时候,在那爱情超过全部的时候,狐狸说:她就是我的梦想!或许狐狸不知道,他当时说出了我听过的最美的情话。 而现在,你的梦想实现了,祝贺你,新婚快乐,兄弟!

给测试一个可以‘测试’的环境

给测试一个可以‘测试’的环境 也算是一点心得。随便聊几句,感受下。 现在的软件开发,至少有两个环境,一个是测试环境,用来开发、更改、调整代码,只提供给内部使用的环境。另一个是正式环境(线上环境),提供给外部使用的环境。当然,一般还有一个灰度测试环境,用于从测试环境到正式环境的缓冲带,给内部使用真实的环境。 废话说完。 说实情,也是我准备更改的一件事情。不能给测试提供一个,可以有效用来进行测试的环境。 测试本身,是存在大量重复和冗余工作,这点无法消除。但的确也存在,不必要的重复和冗余,导致测试的工作即便和饱和,但产品的质量却仍然得不到一个很好的保证。(加上,我们的测试比较嫩,更容易被开发忽悠)。 提供给测试的环境不完整!对于测试来说,这是一个相当大的拖累,对于项目来说,这是一个非常错误的信息,会让项目的所以协作者都误以为达到了某种节点或者里程碑,但事实上,这本就应该是未达到测试标准。偷换了概念,用不完整掩盖未达标,从而将工作转移到了修复和维护上,自然加重了测试的工作量。可怜的是,包括工程师在内,都不是有意为之,因为工程师在这个环节中,也是受害者——提测后的压力本就大于开发期的压力。 提供给测试可以调控状况的能力!在阶段性测试中,经常会遇到,由于这样那样的原因,导致测试频繁的(过度频繁的)要求开发提供响应的状况,双方都在这过程中产生大量的相互等待和相互影响,这是一种高额成本的损耗,而且相当没有意义。(简单举例说明,测试经常需要开发更改标志性时间戳,更改对应账号的参数,更改客户端请求不同服务器等)事实上,这不仅仅是损耗,还有可能在相互的更改中,忽略其他相关的问题。这点颇有心得,开发总会忽略一些调控状态的输出,但如果发生一个测试经常会要求更改的状况的话,开发本就应该提供相应的输出。 给测试足够的否决权!说完两个硬环境,说一个软环境。测试本身有否决开发的权利,当然这点我们团队做的有些缺陷,仍然在补全中,但毋庸置疑。而我这次想说的却是,测试也有相当一部分否决产品的权利。这点我想了很久,对于小团队来说,测试是项目输出的第一道守护,很大程度上,测试对于项目输出的具体形态有着相当大影响,如此,否决产品很大程度上能制约乱改乱加现象,同时也能维护住成本。 所以,尽早构建CI,绝对是测试的福音。自动构建系统,至少满足两点。 1. 不依赖开发,只需要开发做不定时的维护就可以。 2. 可以提供多种环境的构建。 3. 可以自动发布。

对于项目维护的思考

对于项目维护的思考 漫谈。 程序写多了,对于一个项目的维护久了,产生了一些特别不一样的想法,写下来,与人念叨念叨。 实际开发 说维护,自然要从实际开发说起。 特别的聊一下加粗的这两个字,实际。 实际开发中,总是会有状况发生的,这是定律,所以,对于实际开发来说,我第一个想法就是短,准确说,别做太多事让整个开发周期拉长。短是方便控制,同时也便与紧急处理。实际落实过程中,总是会出现这样或者那样的妥协,我们尝试了很多办法去减少状况的发生,刚开始还不错,但随着这样或者那样制度的复杂度加深,效果却越来越小,甚至反弹。只能说,通过外力去减少异常状况的发生,有用,但没有那么有用。 所以,把目光转回来。 如何紧急处理紧急问题,成了实际开发中的最大的问题。就如我刚才所说的那样,这其中总会掺杂着这样或者那样的妥协,这篇是技术文,暂时抛开产品的专业性,就技术而言。如何紧急处理问题? 1. 减少复杂度。(这是最最重要的一条)在绝大多数情况下,我们处理的问题本身的复杂度,不会超越技术本身的承受力。(相信我,超过的问题,一般都会有更牛的人在前面帮你开拓了)所以,大多数看起来复杂到不可控的问题,都是由于我们的认知不够,有可能是认知缺失,也有可能是疏忽,所以看起来很复杂。但实际却经不起推敲。所以,减少复杂度,我给的建议很简单,找到相关的人,坐下来,重新梳理之后,做减法,减掉不必要的复杂选项后,再做修复。减少复杂,不代表肯定是减少功能,这几年和产品的博弈过程中,每次找产品,产品都觉得是我在减功能,囧。重申一遍,梳理逻辑才是重中之重。 2. 解耦。紧急问题的处理,总会有那么一种‘写死’的方案,或者说,总有那么一种成本低但耦合度高的方案可以勉强解决问题。千万不要这么做,这就是‘泥石坑’(人月神话),除非你不考虑下个版本,否则,这只能让你下个月的工作大大增加。因为,你不得不用一个很高昂的成本来弥补你这个时候偷的懒。 3. 尽早寻求帮助。紧急的问题加上时间的压榨,很容易让身处‘局里’的人盲目或者过激。不理智是留下遗留问题的根源,这里我自身也犯下了好几次错误。不得不说,坦诚承认,然后及时向他人寻求帮助是最好的对策,保证项目是首要,至于那一点点羞耻心真的不重要。因为纸包不住火,维护的时候终究还是要面对的。 其实,说了这么多,感觉都跑题了。其实,我想说,项目维护时流的汗水,都是开发时,你处理紧急问题时脑子进的水。 不顾以后的维护,只图解决眼下的问题,终究是要偿还的。 实际维护 维护或者优化。最重要的是:千万改完一个bug,又改出来一个。 然后,这个事情基本上是我所见到的实际维护过程中最高频率出现的事情之一。而其中大多数原因,就是缺少思考的修改了原来的代码。这么讲的话,难道维护或者优化的时候修复一个bug,要来来回回的思考和判断逻辑才能改原来的代码吗?全部这么做的话,成本岂不是太过于高昂了。 不好意思,的确是这样的。维护时期修复一个问题,要比开发时期困难很多很多。在一个勉强称得上稳定的系统上(默认上线的版本是较为稳定的版本),是它变得更加稳定和可靠是一件很难得事情。因为任何的修改的前提是,不能破坏原来的稳定。一句,不能破坏原来的稳定,就是最大的成本。 同时,维护还要尽量保证后来的维护或者优化能顺利进行,所以刚才的123点同时也是要注意。 也再说几点我的心得。 1. 时间是最大的成本。相信没有真正的维护时期,都是或多或少掺杂着新的开发,所以所谓的维护时间,并没有想象中的那么长。同时,人们总有种倾向,会认为新开发的优先级会高于旧维护的,毕竟,一个已经有了只是存在问题,另一个还没有。这种倾向会传染,让我们不自主的给维护更少的时间。 2. 拒绝拖延。程序开发里有一个不成名的定律,但凡说,以后改的问题,最终也没有改。说下一次就修复的事情,再也没有出现过下一次。这是个很伤心的事情,人始终不断的尝试或者做新的事情,的确能获得很多,同样,在修复和更改中,也能获得同样多,但却很少有人这么做。鸡汤说完,说实情。如果旧的问题始终不处理,会导致新的功能的不完整,连带出来很多新的问题。很少有功能或者说需求是完全和旧版本脱离的,自然使用也要不断使用旧版本中已经完成的功能,所以,拖延只能导致不断前进的步伐陷入‘坑’,举步维艰。 随便写点,先写这么多吧。

CI

Android,iOS 双平台搭建CI心得(Jenkins + GitLab + Gradle(android)/Xcode(iOS) + fir.im(分发) ) 概述 由于上一篇写到想尽早搭建移动端的CI,这两天便一直折腾。总算有点结果,至于细致下来,还需要一些时间去专门调整后,再移交个QA。 去年写过一篇,关于使用jenkins如何为安卓搭建自动生成分发的平台,左边目录点击就能找到。 自动构建平台:jenkins 版本控制:git 编译工具:Gradle(android)/Xcode(iOS) 分发工具:fir.im - fir-cl 选择jenkins主要考虑到它比较稳定,另外一点是可以兼顾两个平台,别的平台大多数都是偏向android或者iOS中一个。别的不用说,分发工具选择fir,在实践中发觉fir平台很稳定,非常适合做分发平台,而且重要的是,免费。 Android Android自动构建 这篇是我以前写的,是完全可行的。这里做一点改造。 为满足,不同构建生成不同环境的APK包,而减少QA与开发之间沟通,并同时满足后台需要特定环境调试。所以构建平台要能提供相应的项目,释放开发的压力。 具体改造: 1. 为Gradle配置全局变量,然后方便管理启用环境。因为我是使用Gradle进行配置,所以也同样使用Gradle属性赋值直接进行环境的更改。 # 在Gradle文件中,比如在我的项目中是 config.gradle task serverName { println "SEVER IS ${SEVER_CONFIG_CI}" } # 配置 SEVER_CONFIG_CI 可以通过Gradle自定义属性,也可以通过JVM配置等,这里使用比较偷懒的方法,直接定义gradle中的属性配置,但要在前面添加ORG_GRADLE_PROJECT_作为前缀 export ORG_GRADLE_PROJECT_SEVER_CONFIG_CI = 2 #这个时候就可以直接在命令行里运行 gradle serverName ,就能看到 结果为SEVER IS 2 配置完后,只需要在编译前,运行一次这个命令,就能提供相应的服务器环境了。 1. 将Gradle配置部署到jenkins上,一个项目对应一个环境,便于管理。具体步奏,在项目的配置中的>构建>增加构建步奏>Execute shell ,输入刚才提到的配置。 2. fir分发,用命令工具替换插件。原先用的插件支持并不友好(对我来说,命令行比较友好),所以这次fir提供了fir-cl工具后,便毅然决然的替换了原来的插件。步骤和2一样,只不过命令变成了 fir publish ${WORKSPACE}/app/build/outputs/apk/app-baidu-debug.apk -T {firToken} 当然,我是直接在构建中使用了,也可以选择构建后。如果选择构建后运操作>增加构建后操作步奏>Excute a set of scripts>Build steps (或者Add a shell 将写好的脚本上传) 最后立即构建,享受吧~~~ iOS iOS 由于编译软件的限制,所以只能有苹果系统,包含Xcode的机器才能集成这套CI。 对于jenkins的安装这里不重复了,想了解的仍然是点击左边目录,Android自动构建里有。 由于我的项目中有Cocopods,所以具体配置中有些坑要注意。 Git拉去源码时可能会出现。十分钟就断开,导致项目拉去始终失败的可能。这里需要在项目配置中源码管理>Additional Behaviours>Advanced clone behaviours>Timeout for clone and fetch operations 中填入一个较大的值,防止timeout。 构建中,选择Xcode。具体配置实例如下: Target: JenkinsCI Clean before build? Read On →

iOS实践:一次失败的重构记实

iOS实践:一次失败的重构记实 摘要: 2月15日,原代码分析,研究重构点 2月16日,尝试进行自适应和图片加载重构 2月17日,重构进行中 2月18日,UI改造。 2月19日,继续改造(图片逻辑处理方案以及一些感想) 2月20日,图片加载模块重构 2月15日,原代码分析,研究重构点 严重问题: 多类型列表的数据源控制,不仅使用了多个数组,还使用了一个包含所有数组的大字典来做统一管理。导致以下问题 阅读分析困难。命名的随意性更加加重了对代码的分析阅读,很难找到 相互关联的 UI与 数据源。可以理解为,视图和控制器虽分离了,但关联他们的接口混乱,导致无从查起。 数据管理困难。数据源相关的类皆为类属性(成员变量),大量方法函数对6个数据源列表进行操作,严重增加调试和查找困难。 数据类型多和混乱。通过大字典管理各个列表,然后就完全没涉及各个类型的数据的关系,然后共享出了问题。更直接的是,没有继承,整个界面就是一堆数据往里面塞得感觉。 有意思的是,我本以为UI部分也会这样。但事实上,比我想象的要好非常多。有类型区分,有管理。UI的主要问题是没用自动布局,及其严重的增加了成本。尤其是对于动态的内容高度等计算。 控件的布局困难。没有控件间的约束,导致控件之间的布局特别容易自己玩自己的去了。 列表单元高度计算困难。过于动态的内容,导致控件过于复杂的计算。iOS系统中居然没有自适应这种东西,简直让我这个android工程师极度抓狂。 单元模型设计的混乱。这个倒是可以理解,由于业务叠加的方向更改的任意性,产品变动的不可预测。直接导致单元模型的混乱,但也太混乱了。 解决思路参考: 数据方面。 - 数据源管理使用单一列表,不适用多列表加字典的方式 重新搭建继承关系。通过类型区分各个模型和单元 数据的传递和共享可以通过回调处理,不需要硬塞。 UI方面。 - UI整体使用自动布局和约束来替代现在的写法。 引入自动适应的label方案,减少对于label文字内容的适应问题。 引入列表单元自动适应高度解决方案。真心想告别计算单元高度的日子。 分析自适应解决方案 打算引入SDAutoLayout这个三方自适应。初步研究后,发觉能较好的适应tableView的自适应高度和Label的自适应高度。而且这个项目现在有专门人员在github是维护,且项目更新频率很高。 2月16日,尝试进行自适应和图片加载重构 数据方面的重新梳理和关系重构。 原来的数据model类中居然包含单元格高度属性…也是够了 这是一个典型的view和model未分离的情况。 重新命名,并修改内部相关属性。 这个世界上,总有一些傻逼是你躲不过去的。 现在是下午两点,简单说一些上午到现在做的一些东西。 确认使用框架后,先对详情页的主贴和续帖进行重构。接下来进行了几项尝试。 在原CellView上进行修改。相继出现多过崩溃异常。放弃 重新撰写简单的CellView(只包含title 和一个 imageview)。进行调试,文本的自动适应和图片的自动适应相继成功。 重新尝试1,但先进行cellview中,更改为autolayout,再进行自适应。 相继出现各种不出现,同时由于方法相互关联太多,越更改越困难,调试也更加困难。 重新尝试2,即从刚才较为简单的模型上添加控件,丰富界面,然后迁移点击事件。 好吧。还是失败了。工作量太大,而且迁移的过程中存在大量的自定义view,导致需要查看大量自定义view,显得不是很现实。再想别的办法。 2月17日,重构进行中 帖子详情页里,主贴,细小的功能非常之多。比我想象中的要困难很多。文本,文字很多需要转富文本,而且同时,还支持各种各样的点击。 主要的图片问题,终于不得不面对了。帖子详情页的图片加载异常混乱,每次加载完一个图片,就会调用界面重绘,极大的加重了UI负担和界面不可控。也是引起帖子详情页加载会崩溃的原因。 所以,暂时决定暂停UI,先行处理图片加载问题。 比我想象的还要困难。略有小感: 重构中困难的是取舍,原先代码是很糟(不糟谁重构啊),但却不能一下子全部抛弃,如果全部推翻重写的成本过于昂贵。 所以,预想中逐步重构,一点一点推翻。 但问题又来了,原先耦合性高且冗杂,加上复杂的业务逻辑,导致改一点就会引起新的问题,又要填补新的解决方案,反而被重构拖累,逐步更改的成本就会越来越高。 这是一个度的问题,但问题是,谁TM告诉我,这个度在哪里!!! 打算使用较为优秀的SDWebImage框架。Demo测试通过,开始集成到项目中。 集成过程异常艰辛。 通过pod包管理集成,出现异常。有重复类版本相撞无法通过编译。 艰难查实的确存在,但置于一个叫MW…的文件中的lib文件夹下。 简单查阅叫MW…这个鬼的用处,根本找不到用在哪,心好累,又不能直接暴力删除。也是够了! 直接替换源码试试。 试验失败了,直接替换掉源码,导致另一些类报错,数目很多。估计是对源码进行了加工修改。只能放弃。 妥协方案,用较旧的三方暂时实现图片加载。 失败: 重新回到自适应上,虽然有了一套对于自适应使用的流程代码,但对于复杂又多类型又过于动态的列表仍旧不能适应。需要补充的判断实在是过于复杂,所以,这期自适应,预计将搁浅。 先在较为简单的列表里试验,然后再着手处理复杂还多图的列表吧。 Read On →

美人鱼和周星驰

则西,医疗,百度,责与罪 风波一层过后,又来了一层。早上又一次看到新闻,看到知乎上对于广州那位被伤害的医生的讨论和评论。医疗问题再一次被推到风口浪尖上,也再一次让我思考和疼痛。我们眼下的医疗到底有多少毒在里面,然后,我们又到底该何去何从? 这篇文字还是只讨论则西事件,至于广州医生的事件,我仍需要一些补充一下事实再来讨论。 从我的角度出发,两点,责任和罪恶。 先说责任。 十分制,武警医院3分,莆田系4分,政府相关2分,百度1分。 这样写,估计很多人会先骂一顿,然后直接关掉网页了吧。只能先把下面的关于罪恶的评分也写上去,单纯的证明,我对百度的深恶痛绝。 罪恶十分,百度9分,剩下加起来还不如1分。 我是程序员,预期说太过于理性,不如说太过于现实。则西在知乎上那篇文字我很早就看到了,比这件事情还要早,则西将罪恶指向百度是事实,这点毋庸置疑,但莆田系和武警医院是也肯定是祸首,从责任上来讲,无论如何这两家都要付出绝对的代价。 先说医疗吧。三月四月我也基本全在医院,为治疗我父亲的癌症奔波,也同样失望绝望着,所以,我早早看到了则西死前的文字,不同说完全感同身受,但也的确历经着,有所感触。 先推荐几个我关注的人对于医疗方面的讨论。 可能吧-为甚了google没有虚假广告 君临-面对则西事件,李彦宏现在是什么状态,什么心情 他们说的很好,我心里有那么点思路,却完全组织不出来他们的语言来,索性便直接将链接引过来。 然后,说点切身的体会。在医院里吃住了近两个月,看到太多太多,其实有点心灰意冷,医生的圣洁之下,隐藏的太多罪与恶。也终于不得不明白,在中国(其实在整个世界上)看病是多么困难的一件事。 理性的讲,除了极个别名声在外的好医院外,中国剩下的医院基本都陷入了一种不得不的失责。由于政府对医院的甩手,医院需要自己满足收支平衡,让看病这个事儿,掺杂了生意成分进去。坦白说,生意场上,有大是大非,没有小善小恶,但医院里却有。 人可以有,小善小恶,因为人无完人。但人必须坚持,大是大非,因为需要配的起叫做人。 医院的乱收费现象不用特别说明,几乎历经的人都明白。谋财这个事儿,是已经浮出来的事儿。这是劣根,很难改的。 坦白讲,有些事情,很荒诞,但我却是认得。我看病的时候,总是会碰见乱收费,医生也会多开些药,甚至只开些营养品,来增加医院和医生自己的收入,大多数情况下,只要不是很过分,即便我心里明白,仍然愿意为此买单。 你可能觉得这是‘助恶’,但实情是,就算名声在外的大医院(如协和医院),在收支上也是非常的微弱。 但这次武警医院和莆田系,真是给了我一计响亮的耳光。我一直以为,医院和医生,首先是为了给病人看病,然后再开一些营养品甚至开一些无关紧要的药来增加收入。而不是,就是为了贪念,为了挣钱,就是为了谋财,而不是为了看病。这不谋财害病,这真的不仅仅是恶,这是罪。底线的失守,让它彻底成为了毒瘤,恶心。 医院和医生,和普通职业是有区别的,它自带着一种契约精神,一种与生俱来的信任。 利用它来赚钱已经是失衡的恶,而破坏它去敛财,去谋财害命,是超出我认知的大罪,无法饶恕,不可原谅。 再说罪恶。 刚才我说,百度这事中责任不大,则西真正接触百度查找的时间应该不多,更多的是在医院里被折磨。所以说,就这件事来讲,百度是一分的责任。但,事情单纯拿出来说,就太苍白了。他这一分,是入口,是带着则西填入深渊的一分。 我问自己,这样子,真的只算一分吗? 就算我真的认,百度只有一分的责任的话。我仍然说,百度有9分的罪恶,是大罪,十恶不赦的那种。百度不是只为武警医院和莆田系的做虚假广告,百度的广告诟病太深,太沉重。毫不夸张的说,它是很多虚假广告的入口,医疗、教育、科技、社会等…甚至,很多正规的企业或者公办处的电话,在百度提供出来的,都是虚假的…只不过,医疗太过于敏感,被推到了公众前面罢了。 我不知道描绘的是不是清楚,但却绝对是一件细思恐怖的事情。如果把社会摊到面上来讲,各个事情都有着不同的负责或者祸首,但却有着一个相同的帮凶,不,准确说,一个相同的接引人。每个骗局里,每个罪恶里,你都能看到同一个名字出现在里面,关想到这里,我已经感到了莫大的恐怖,实在是想不下去了… 所以,我除了厌恶百度,也真的恐惧百度。 一个企业,走到这里,真的是很糟糕。作为一个程序员,刚入行的时候,这个公司曾一度是我的理想目标之一。 沦落至此,让我不仅仅是同情与可悲,更有一种想除之后快的感觉。作为一个技术人,真的明白,用技术作恶是一件多么后怕的事情。尤其是一个已经失去了底线的公司… 请远离百度,这是我的忠告。 本来已经结束的文字,但在知乎上看到洗地的一系列后,我真的忍不住破口大骂。谷歌没有虚假广告吗?有,而且很多。谷歌里的人没有为了钱财而更改或者变相更改搜索结果排序吗?有,而且很多。但整个公司在努力的制止,整个公司在用各种监管来限制手下想谋财而更改排名,整个公司在修正着,所以谷歌说,Don’t be evil。 但百度不是,如果说谷歌是有恶,在修正的话,那么百度就是实打实的作恶! 这就是大罪,十罪不赦的那种!!! 一个企业,做公关,谁都能理解。但,这样子去洗地,实在是。 最后,我所能提出的建议,只能是远离。任何百度的产品都不去触碰。我甚至卸载了百度外卖,坦诚讲,我怕了,它没事,只是和百度沾上了,所以我怕了。

美人鱼和周星驰

美人鱼和周星驰 大年初一,便兴趣盎然的去看了——美人鱼。 我是星爷的影迷,粉丝,脑残粉,(所以写这篇文字里基本都是各种顶膜崇拜),自然会在上映第一天就屁颠屁颠的去看了这部16年的大作,美人鱼。 随后,回到家后,借着大年这些天无聊的时间,又陆陆续续的把功夫,喜剧之王,少林足球,大话西游再lu了一遍。看完后,脑子嗡嗡的,便写了这几个字。 我依旧在豆瓣上给了5分,虽然我觉得它不值这个分数,大概也就4分,甚至不足4分,但我是脑残粉嘛。 美人鱼开篇很多老梗,随后电影里很多很多老梗。开篇里,拿起咸鱼,然后馆长从浴缸里出水时那特渣的特效,都是以前影片里的影子。 当我看到,珊刺杀富豪轩的那组戏时,我又无耻的笑了。尤其是看到,林子聪出来的那个瞬间,笑的我竟然感动了,(当年就是这个死胖子)。豆瓣说好多评价较低的说都是些老梗,这组戏应该是最为明显的了,功夫中林子聪也是这样,把我们的星爷扎的不要不要的。只不过这次是个女孩,看着还略微有点疼。 说抄袭的…一边去,自己抄自己的都叫抄袭了,你还要不要人家拍电影了… 说没创意的…那要看你怎么定义创意了,如果非说从0到1是没创意。那我也觉得星爷这次这的没创意,不过星爷老了,我对这个有没有创意,要求不高。看完后我还是能哈哈笑出来,我就觉得挺好。 珊和富豪在游乐场边吃烧鸡,飙歌那段,真的是满满的搞笑和纯爱。这种简单加暴力的方式去诠释纯爱和眷恋,简直就跟闹着玩似得。记得以前在一篇文字中看到,李安说周星驰总是弄一些小孩子的玩意。大概,就是说星爷这种闹着玩的把爱表达了吧。 真的很喜欢这段,如果爱可以这么笑的看完,为啥非要那么多撕心裂肺呢。 说完了好的,说点不好的。 期待本身就是最大的负担和失望。 星爷这部电影,没那么好。尤其是又看了几部以前的电影,更加显得没那么好。美人鱼结尾的确有些凌乱,好多想表达的东西,都没表达出来。不够深刻,或者说,不够星爷的惯常的那种深刻。 读懂了结局,读的太懂了,甚至还没来得及回味。这种感觉并不舒服。 无论是大话西游还是喜剧之王,更不用说功夫。看完后,总有一些东西仿佛明白了,又仿佛还差那么一点点,忍不住想再看一遍。美人鱼缺的大概就是这种再来一遍的冲动。 有人说,这是星爷境界太高,咱悟不到。也有人说,这是星爷返璞归真,无招胜有招。当然,也有人说,江郎才尽,思绪枯涸了,搞不出来了。 聊两句我眼里的吧。 无论我多么不愿意承认,星爷的巅峰的的确确已经过去了。喜剧之王和功夫,成就了太多东西,也压榨了太多。(这两部影片一直是我的大爱) 也可以说,最让人敬畏的星爷和星爷的电影时代过去了。那敬畏之后呢? 从星仔到星爷,创作或许是有起伏,但认真却是从一而终。星爷的认真,真真切切从未变过。也是这种奇怪的认真在里面,保证了星爷的作品只有两个档——优秀和卓越。 这部美人鱼,真的称不上卓越,但说它优秀绝对没有问题。 至于卓越嘛…怎么讲呢?可遇不可求。因为在我看来,艺术上的卓越除了足够的实力和能力以外,还需要被长时间挤压的那种无法宣泄的灵感,在一次意外的碰撞后,喷涌而出,铸就卓越! 所以,追求卓越本身就是一件很奢侈,也很痛快的事儿。 而要求星爷的作品都卓越…也有点要求过高了… 但… 星爷下一部作品肯定是一部卓越的作品!因为 崇拜本身就是盲目的,不是吗? 2016.2.10