年度总结 – 2013

今天是2013年12月31日,再过几个小时,就到了2014年1月1日了。

fce2c11db61f20d680752457a7f6b4a8

2013对于我来说意味着改变很多,尽管本质上的变化不大,但是起码自己有了些突破。

2012年12月31日,我也写了一篇年度总结,在年度总结中提到了几个关键词:

  • 基金
  • 定期储蓄
  • 妹子
  • 用户体验
  • Scala
  • NodeJS
  • ETL

过去的一年中,有几个关键词倒是落实得还行。

  • 我投入了一部分资金到货币基金和股市,以及还有在小杨同学的带领下也尝试了一些P2P的交易
  • 至于对于寻找伴侣这件事情上来说,不能算是有很大的进步,但是至少有一些尝试了。2014年这件事情仍然是一个重点的关键词啊,不过一切还是随缘,自己提高主动性。
  • 后面的四点是围绕技术方面来说的,首先Scala很不幸的没有被我坚持下来;NodeJS也只是在自己有兴趣的范围零零碎碎的进行,也没有取得比较大的进步;最后一个ETL,则是因为参与了项目的进程,基本上整个年度都围绕这个产品来进行,无论从哪个方面来说对自己都是一个不错的变化点。从技术方面来说,我需要变得更专注。

每一年的年度总结都会有一个核心关键词,2012年的核心词汇是纠结,2013年的核心词汇则是改变。

工作的改变

首先工作上最主要的变化是,我换了一份工作:从工作了近8年的合众出来了,到了目前的新东家—蘑菇街。

年初开始参与到ETL项目的进程中去,主导了产品的Web化的过程。在这个过程主要进行的整体框架的建立,前端模块化和组件化的技术引入(比如SeaJS,Draw2d,Eventproxy)。引入这些内容在前期还是遭遇了一些问题,但是后期理顺思路后,这个套路让我觉得用得是越来越顺手了,当然也很感谢团队伙伴们的给力支持,让这个产品能顺利的进行下来了。

11月11日,我入职蘑菇街了。从一家传统的产品型公司到一家新兴的电子商务互联网公司。虽然都是技术活,但是明显可以感觉到两种不同类型公司的运作方式和节奏的差异性。蘑菇街是一家为女性服务的电商公司,所以很明显的感受是妹子真多。尽管刚来不久,但是可以明显得感觉到自己需要学习的东西很多,需要提高的地方也很多。有太多的东西还需要去适应和改变。

技术能力的改变

2013年前十个月,主要是参与ETL项目的管理和开发。从技术方面来说,最大的改变就是进一步提高了自己在前端Javascript开发方面的能力,尽管后来因为离职导致想尝试Web化更彻底的计划也没有去做(不过我相信团队伙伴们做得肯定更好)。在产品架构和风险控制方面也学习了一些经验,这一点对于我来说是成长比较大,因为以前是一个比较理想化的思路。在ETL WEB化的过程,由于需求和时间的一些变化,也让自己逐步学习了一些应变和调整的方法。

我以前特别喜欢对公司的产品进行组合分析,然后自己猜测公司未来可能会走的技术或者业务方向。现在想想,其实也没有考虑这么多,要在其位而谋其政啊。

现在做了一些以前自己关注过的东西,比如Nagios。也接触了以前从未听说过的Puppet。可能未来也还是有很多新的东西等着自己来尝试,所以需要去学习更多,让自己进步的更快一些。

生活的改变

自信了一点,尽管这一点很小,但是对于我来说算是一个蛮大的进步了。

  • 坚持每周至少两次时间在1小时以上的运动,为此办了一张健身年卡。
  • 每月至少去看两次电影,2013年记忆深刻的电影是一代宗师,当时我还写了一篇观后感。
  • 外出旅游一趟。我曾经想过每半月去江浙周围去游玩,但是始终没有出去过。离职前后出去游玩了一趟,认识了不少人,也见到许久不见的堂姐和表弟。

2013-11-24 203521

2013-11-24 224520

小杨每次拉我出去玩,但是真正成行的却不多。想来真正去玩次数真的为数不多。最早一次是去上海,是跟庞胖子拿手表;然后跟庞胖子去过苏州跨年,跟小杨、谢剑、徐东德,燕国他们一起去象山,去过几次临安。我2011年计划要去的南京却一直没有成行。

家庭和朋友的改变

对于我个人来说,个人问题依然高悬,仍然是明年需要推进一件大事。

父母今年都还算基本顺利,还是希望老爸来年少喝酒,路上注意安全;老妈年度做了静脉栓的手术,希望明年她能来杭州玩一趟。

老哥一家今年应该也算OK吧,尤其是之妍的成长真快啊。

堂弟也结婚了。表妹也出嫁了,前几天刚生了一个娃。

去了成都一趟,见到了许久不见得表弟和堂姐,真的非常开心。

丝瓜又创业了,转变还是很大了,他小孩都上幼儿园了,我都一次没去见过。

杨老大生完孩子也回来工作了。

刚刚在回来的路上,看到花生也离职了。

朋友们,如果你们看到这篇总结,希望你们能继续好好的生活和工作。

资产状况的改变

尽管总体上来说,我的资产状况依然很差,但是相比过去几年来说有了一些变化。前面已经说到了资金分流到了股市、基金以及一些其它的渠道内。

2013年初制定了一个存钱金额的规划,但是从目前来看是基本无法实现了,至少还距离有一半多的距离。

2013年单笔最大消费—购买了一台Iphone4s的合约机。还有就是在软件上面花费了不少的费用。

2012年的总结里说过:

结合我32岁前结婚的新目标,因此婚前积累一定的资金应该是一个非常重要的环节了。

所以2014年资金方面仍然还是需要继续积累的。希望自己能够坚持一些基本原则,也能够从小杨,老俞,老汪他们那边学习到丰富的理财经验。

2014碎语

改变才刚刚开始。2014年需要进行更坚定,更专注的做自己的东西了。

b3daf505ae23116b22401750175a2e7a

3d4d8061e564c420070cf1650e29cb9d

折腾与挣扎

折腾与挣扎

国庆长假,基本没有出门,只是4日出门前往植物园短暂游走一番。

假日期间,看到一篇小文,原文开题:折腾与挣扎。

问:世间人忙忙碌碌,没一刻消停,真不知道忙些什么?

答:千忙万忙。其实只有两种忙:一种叫挣扎;一种叫折腾。

问:何为挣扎?

答:迫于生计,奔波于衣食,住房没着落,孩子要学费,病没钱医治,不忙行么?此为挣扎型。

问:何为折腾?

答:衣食不缺,房屋不漏,孩子能自立,收入有保障,却硬要在弄出点事业来做否则难受,那就是折腾了。

问:人在世间,离了这两种活法,还有别的活法么?

答:不多事,不怕事,顺俗不逐俗,随缘不攀缘,任运而动止,得不见得,失不见失,闲时闲,忙时也忙,心闲者乃真闲也。

放下手中的事情,到大自然中去静静的倾听虚空的声音,感受生命的真谛,你会发现以往为之拼搏的事业只是折腾而已。

前不久的日子里也转发了一位朋友在QQ空间写的一段生活感悟:

不能总是往上比,有时也要往差的比,寻求点自我安慰。

想想曾经的万里帝王家,都得忍受春梦绕胡沙,那么我委屈也可开花了.

我先看到朋友写的这两句,然后才看到前面这段小文的。为什么读到这段小文又让我想起朋友这两句话,因为我知道这位朋友的一些经历,她所承受的生活压力其实远远比我复杂,但是她依然能在生活和工作中取得非凡的成绩,我觉得她应该一直走在自己坚信的道路上,感觉她正在努力做到第三种活法。她不挣扎,也不折腾,很好的女子。

在我看来:

挣扎是因为存有希望,就如年少时的我,跌入水中,挣扎中寻找周围水草。那水草是活着的希望。

折腾则由于漫无目的,就如工作上的我,做过很多岗位,折腾了很多东西,却并未取得良好的结果。因为没有方向,才在各种圆圈里起舞。

但是我觉得无论如何,我都不应该放弃折腾或者挣扎。我此时折腾可能只是我想要目标被我自己掩藏起来了,我相信我一定可以重新找到。当然也不应该放弃挣扎:

各位,我希望你们无论希望如何渺茫,都不要做一个放弃了挣扎的人,叫你们不要放弃挣扎不是因为挣扎才有希望,而是因为不停挣扎我们才不会被自己看不起,才不会成为自己眼中的行尸走肉,各位不妨想想看,如果一个人放弃了挣扎,那人生真的就提前结束了。

我可能写完这篇没有中心思想的文字以后,还是会继续折腾,亦或者是挣扎,但是我肯定那时的我是更好的我。

我所有做过的选择,犯过的错误,失去的感情,都可能是我讲故事给儿子听的素材。

所有的一切会过去的,先感谢已经、正在以及将要从我身边路过的人和故事。

所有的一切会过去的,在未来我要多关心家人、朋友和自己。

从前有一个老和尚和一个小和尚下山去化缘,回到山脚下时,天已经黑了。小和尚看着前方,担心地问老和尚:师傅,天这么黑,路这么远,山上还有悬崖峭壁,各种怪兽,我们怎么才能回到家啊?老和尚看看他,平静地说了三个字:看脚下。

我希望我能真正的读懂这个故事。

周末两三记

上周末两天,呆家里一天,外出各种转账还款一天。偶尔的翻翻书,想了些事情,简单记录下。

关于选择

人这一生除了投胎这件事情是没有办法选择以外,其它的事情都会面临各种各样的选择。
有些时候可以从容面对,有些时候只能匆忙决策。
正因为这些选择的多样性,也造就每个人独一无二的人生。

就像《黑客帝国》里面的场景,墨菲斯给两种药丸让Neo选择。

选择红色药丸还是蓝色药丸,所面对的世界将截然不同。

我常说我有选择恐惧症,对于大不部分人来说,这是一个太明显不过的借口罢了。
从侧面来说,我对于做选择没有什么把握,或者说我对于承受选择后面的失败缺少认识。
用朋友的话来说:

你这人只是鬼点子多,但是让你在这么多鬼点子里面挑选一个,你又拖拖拉拉不肯做选择。
只有在遇到时间截止前才好不容易匆忙做个决定。等到决定出来了,又会陷在下一个路口的选择中。
从表现上来看,你这是明显的害怕承担选择后果的一种反应嘛。
所以我看你陷在工作这般,生活这般,感情这般都是你自己找的嘛。

关于编程

上周修改了一个小程序,当然我自己的编程能力也不是很好。但是在这个过程也有些想法。
怎么才能让自己编写的东西才能达到小而美呢?

顺着前面的选择来说,本来只是打算维护那个小程序的,并没有打算要做比较大的改动的。
因为很容易”修修补补又一年”的境地,加上之前开发的一个产品至今半年有余还没有出厂过。

由于这个工具在最近一个测试周期内出现了很多问题,才让我动了想要修改的念头。
花了几天时间整理原有工具的工具的工作流程,又花了几天时间写新版本的代码,目前基本上算还是完成了。

在这个过程中关于小程序的的想法比较多,尤其是该如何编写和维护小工具有了些想法。
但是想法比较乱。比如如何选择外部组件,如何协调内部组件的关系,如何进行质量保证,如何进行单元测试等等。
正因为比较乱,所以自己先还是把修改的功能给完成了再说。

回头来写篇具体的长文来说说这些想法。不过由于我个人太喜欢回头看,然后否定自己的做法。还是得小心自己的想法发散。

关于励志

我最近几年总觉得自己在各个方面的变化总体上是一个颓势,因此总是表现的郁郁寡欢,很不开心。
以至于经常有朋友说:你这天天像个无头鬼样的晃荡来晃荡去,过得啥意思嘛。

买了很多励志书,也去看了心理咨询。
终于做了一个选择:”回到研发队伍去”。
在经历了2012年一整年的事情后,我发现自己存在几个问题,需要自己给自己励志:

1, 选择的东西就是苹果树一般,你不能随心所欲的一个一个的去选择自己想吃的苹果,也不可能吃一半,然后再拿一个好的吃。
你最好是拿一个杆子,打一杆子,吃掉下来那个。主要杆子质量好,要站在你选的平果下面。
2, 选错了苹果,先吃掉它,咱不是还会留下果核嘛,留在地里。好生照看,辛苦总会有结果的。
3,可能有好多摘苹果的人。多学习别人是怎么摘苹果,别人是怎么保存苹果的。
4,苹果的品种很多,不要太贪心了。一段时间内好生吃这么一个苹果,吃着手里的苹果,也要不忘给地里的那个苹果打点药呗。
5,练好挥杆子的动作,


书单,欢迎借阅:
1. 《思考,快与慢》
2. 《少有人走的路》
3. 《心理调节术》
4. 《瞬变》
5. 《意志力》
6. 《遇见未知的自己》
7. 《The Tools – 工具》
8. 《暗时间》
9. 《当心理学遇上博弈学》
10.《你可以,爱》
11.《活出全新的自己》
12.《不抱怨的世界》

年度总结 – 2012

今天是2012年12月31日,明天就是2013年了。
很显然,我们大家都安然的度过了传说的”世界末日”,开始走入一个新的玛雅纪元了。
年度总结写了几年了,中间断过一年,2011年的年度没有写。现在也就不再为为什么不写而烦恼了。
过去的就过去了吧。我还是要往下面走嘛。

2012年对于我来说,就是尝试摆脱纠结的一年,并且这个过程还会延续到下一年去。从目前来看,取得了一定的效果,但是自己还是会时不时想问这就是我想要的么?

接下来我将从以下几个方面来说明过去这一年中的变与不变,其中包含:工作和公司、技术积累、感情生活和妹子、家庭和朋友以及资产状况

工作和公司

对于工作和公司来说,不变是我还留在我的第一家公司–合众–工作,变化的是工作的内容和范围发生了变化。
上半年我一直在断断续续的从事部门的基础规范和内部系统的研发,期间有代码规范、文库系统、问答系统、质量控制系统等一系列系统的开发,但是基本上都是我一个人在开展工作的。也正因为这半年内的沟通乏善可陈,导致自己一直郁郁不振,加上从事的工作内容让我对工作本身产生怀疑,尤其是对于团队的认识让我感觉很迷茫。

期间为了解决这些问题,进行了几个月的心理治疗和生理治疗,尽管没有看到效果,加上我本来一直依赖的杨波同志也因为怀孕开始休产假的关系,所以自己完全独立的做了一个决定:回到开发团队内部去

于是下半年接手了一个WEB系统的新版本开发,最近又开始介入公司ETL产品的项目进程中。从目前来看,我自己觉得WEB系统的开发还算不错,但是仍然存在很多问题,尤其是在进度和培养人员方面存在很大的问题。另外这个系统的改造完全是采用了跟公司基础结构不一样的开发结构,中间也是花了不少时间在学习。

所以回到开发团队去这个选择的效果并不明显,加上维护内部系统的关系,手头上还是有不少事情的。如何进行梳理是新的一年需要考虑的事情。

从我2006年加入合众开始,确实几乎每年都些不一样的事情,就我个人而言,我还是觉得我自己跟不上公司的发展步伐。尤其是在近三年中,加上由于个人没有很好的区分工作和生活的关系,这种感觉是日趋强烈。

明年要减少自己在部门维护和其它事务上的时间量,正确让这些内部系统或者事务可以交给其他人去负责,希望有专职人员能接手这些事务。

技术积累

2011年中我接触到了NodeJS,同年底,我又接触了Objective-C。如果要评选我个人的年度语言的话,那么2012年肯定是NodeJS。2012年虽然没有深入NodeJS,但是也陆陆续续写了不少跟Node有关系的小工具和小系统,所以NodeJS在我心目中算了留下了不少美好的影子。

2012年新了解的语言是Scala,接触的比较早,但是一直比较浅薄,也没有写出过什么具体的系统或者案例出来。

之所以会学习NodeJS和Scala,都是希望能学习到多并发和异步编程的一些经验。

我记得我在2011年底的时候,跟同事讨论公司的技术方向,其中也有提到这个方面,实时数据处理与挖掘。前几天回头看了下这个思维导图,发现公司目前的产品线基本到涵盖了我们之前讨论的方向。从目前来看,这个结构跟一些互联网公司的结构很像,我坚信2013年中期或者年底,公司的部分产品开始需要针对实时数据和离线数据做一些不同的产品组合。

感情生活和妹子

2012年对于问我来说,感情生活基本是一个空白,怎么说呢。这有可能是因为2011年底的一个决定引起的吧。
可以说这是我2012年上半年情绪一直不稳定,以至于还需要进行心理治疗的关键。

如果没有记错的话,我年中决定回到开发团队中的时候,同时也做了另外一个决定: 32岁前结婚

因此2013年的感情生活将决定我这个目标能否达成的一个关键了。但是矛盾的是,我又觉得这样为了结婚而结婚,也还是跟以前一样是委屈了人家女孩子啊。

但是不管怎么说,2012年,妹子不在身旁啊!13年加油吧。

家庭和朋友

这一年主动联系家人和朋友的次数非常少,内心总是在逃避着他们的关心。

周围的朋友们也陆陆续续结婚生子,周围的各种聊天内容也陆陆续续转变为结婚、买房、育儿等等内容。
当然也有不少让我感觉到揪心的事情吧,各种不知道如何帮助的事情。

房子和夫妻关系算是我这里的年度词汇了。

当然买房并不是我没有妹子的关键因素,但是前提我得有尽快买房的意图才行。从目前来看,由于我个人之前几年的过度消费,半年内购房的可行性太低了,因此2013年总体的资金是需要进行控制的。或许可以考虑进行一些稳健性的投资吧。-–|||||–有点扯远的话题。

总体上我希望我的家人和朋友都能健康愉快的生活。有好多人几乎不怎么联系,但是我依然知道你在。有好多人我经常联系,但是也没有真正的去见过一次面,请原谅我吧。以前联系得多了,现在少了,可能是你有家室了吧。

资产状况

我本来不准备把这一项拿出来作为总结的,但是考虑到前面提到的买房和妹子的关系,尽管这二者没有必然关系。

结合我32岁前结婚的新目标,因此婚前积累一定的资金应该是一个非常重要的环节了。

2012年的消费状态和之前几年的消费状况总体一致,准确来说就是消费过多过高。

  • 2012年2月14日购买了魅族MX手机,坑爹的魅族啊。不过尽管被坑,我还是推荐性价比和质量都有要求的人可以考虑魅族。
  • 2012年4月初购买了New Ipad 32G。
  • 2012年美金消费明显增多,预计在2000-3000美金左右的消费,主要集中在购买外文图书和软件
  • 2012年图书的购买量仍然巨大,但是消化的内容却不多。
  • 2012年信用卡每月基本消费在5K左右。具体的内容也各种各样。
  • 2012年4月开始定期买彩票了。到现在消费也不少了。这个要控制

因此2013年如果需要达到资金积累的目标的话,对于消费是需要进行一定的控制的。

可以考虑学习小杨同学进行基金理财,或者干脆保留一定的固定资金存入定期存款中。

我一直主张钱给老婆管理。

附:

2012年个人年度报告

  • 年度词汇 : 纠结
  • 年度事件 : 回到研发
  • 年度技术 : NodeJS
  • 年度他人关注词汇 : 房子和关系
  • 年度妹子 : LCH (不断被提起)
  • 年度家庭事件 : 老哥买房和侄女周岁
  • 年度朋友 : 小杨同学(结婚了、买房了,赶紧生娃吧)
  • 年度图书 : 看见、正能量

2013年的关键词预计:

  • 基金
  • 定期储蓄
  • 妹子
  • 用户体验
  • Scala
  • NodeJS
  • ETL

意志力读书笔记

最近在看书,准备写一些自己在阅读之后的想法。同时也希望借由这些书的内容结合自己在工作生活中的一些问题进行及时的调整。
先谈点别的内容。关于最近跟部门老大以及公司其他同事谈过之后的一些想法。
在我思考现状的时候,而这些时间仍然在继续流走。沉溺于过去的问题和现在的迷惘,总是让你看不到未来的方向。

上周跟部门老大谈了一次,目的本来没有那么明确的。因为我一直认为我最需要进行沟通和交流的人是部门的老大,因为我在公司这么多年里面,我们沟通都非常有限和简单。而由于他在我内心形成一种心理形象,让我一直不敢主动找他交流。因此这种效应让我越来越难以突破。

我之前在跟他人交流我的问题的时候,能发现各种各样的原因。但是有几点关键内容上的看法很相近:

1,六年间实际完成的任务的数目和质量都不好。上层认为我承受不住高强度的压力,总是在关键时刻选择放弃或者逃避或者退出。带过组的同事认为我管理项目的方式太松散,任务分配不明确。

2,从事的内容太过于杂乱,容易被新鲜事物吸引。专注力不够,不务实。专精的地方不够深入,很多事情可以谈,但是都是泛泛而谈。这点我自己也这么认为,在公司我从事的岗位也比较多,自己也不主动拒绝别人的各种要求。我写过代码,搞过QA,也当过项目组长,兼过一段时间的部门助理。在这么多的产品开发过程中,做过的项目也大都半路结束。只有Dbsync和RDS,也确实在干这两个项目的时候,才感觉这才是团队力量。虽然我自己定义我在两个项目中还是失败的表现,但是在某些阶段里,我总是觉得这两个带给我很多感触,也让我总是拿这两个项目来作为对比的参考物。

3,在其位不谋其职。想法太多,并且很多想法并不符合当前的位置和时间点。但是自己仍然盲目坚持和乐观,发现错误后也不及时进行修正和反馈处理。


回归正题,最近在看一本关于自控调节方面的书。计划在这本书读完了以后,我考虑给自己一点奖励。
首先提到的内容是:
1,意志力像一种活期储蓄,通过人生的初期锻炼和养成计划,会形成一个基本的存储值。需要经过锻炼才能继续增强这种控制力,锻炼类似继续存钱进去的过程。
2,意志力可以用于各种场景下,但是消耗的账户是来自于同一个账户。因此意志力的连续消耗是失败的,意思就是说,你消耗一定的意志力去做某一件事情,那么连接下来的事情就很难高效稳定的完成了。

意志力消耗在四种场合下:
1, 控制思维。
2, 控制情绪。
3, 控制冲动。
4, 控制表现、绩效、成绩

这四个方面我的表现和控制都不是很好,也反应了其实这些问题可能存在普遍性。
一段时间内只做一件事情,有明确的规划和时间点予以检查确认。
原则、方法、目标都很重要,需要学些如何平衡。

ADC 2012 感想

今年是我第二次参加技术嘉年华活动,小的社区活动也参与了几次。

自从我参加了这些活动后,不免经常在同事或者朋友旁边说起这些。他们经常给来的一个反应就是,你既然对淘宝使用的技术这么感兴趣,为什么不转投淘宝呢?

其实我刚毕业的时候,我对自己的定位还比较清晰的。觉得自己能够通过一两年的技术积累后,进而学习业务模式,能够成为一个比较好的技术管理人员。但是经过这几年的发展,由于自己对待人与事情的处理方式的关系,管理岗位的追求并不适合我。犹记得当时面试的时候,跟老周说,我自己意识到自己是一个半路出家的技术人员,所以技术方面肯定不如专业出身的同志,但是我想我会努力学习,以改善这些缺点所带来的问题。然后过了这么多年,发现自己在这个圈子转悠了这么久,仍然没有找到合适的定位,以至于抑郁成疾。

常常跟别人开玩笑说,现在估计换工作都没有人愿意要我了,只会一种技术。我个人一直认为第一家公司对一个人的影响很大,就如我喜欢一个女子就很难摆脱她的影子一般。当然我肯定是内心夸大了这两者的影响,才导致我不愿意改变。

去年我参加技术嘉年华的时候,感觉像是开了一扇窗。了解了行业性软件开发和互联网软件开发中的使用的技术场景以及所面临的问题的异同,加上我那时候刚从RDS项目组转出,专职做技术培训和内部系统研发的工作(当然这个事情也让我知道,事情要跟直接当事人直接交流,跟任何的第三方渠道沟通都有可能导致语义丢失)。

今年再参加技术嘉年华的时候,并没有又开了一扇门。这次报名的内容本来包含移动开发、数据处理和前端开发三个方向,实际参与的却只有数据处理和NodeJS两个。尤其是通过听淘宝去Oracle的过程了解了其中的各种复杂变化以及取舍,同时开发人员面临的各种需求变更吐槽时。其实所有的公司的都一样。

再引用一个网友的评论表达一下:

比你牛B的人比你更努力,比你们公司更加牛逼的公司加班比你们更加多,流程制度比你们公司更加健全的公司改起需求来更加频繁

我几年在公司内部推行过两个制度:1,QA制度;2、代码规范。这两个制度或者规约最终都没有很好的走下去,也是这两个事情让我意识到做这些工作,表面上看上去会有促进,大家也都有认识,但是执行起来的难度都不小。改革的手法有很多种,温和推进,强制执行等。经过了这些事情,人的影响力又被我过分夸大。有点无所适从的感觉。

在嘉年华上碰到了不少人,也听了不少课题。回到家自己也在思考,我似乎总是把自己放在一个较低的层面来对待,我似乎只有在面对资历比我浅的人的时候才表现出极富信心的状态。这是一个陷阱,感觉跟别人是平等的,实际上位置上已经错开了。这样就很难找到归属感。

我记得我有跟谁谈起过,公司留不住人才的原因,在于很多方面。薪水、归属感、成长空间等等。在薪水面前我表现的似乎不屑一顾,但是没有薪水,活下去都难啊。我感觉我缺乏的是归属感和认同感,这又是一个悖论,我又没有问过所有的人是不是认同我的观点和做法。

最近看了一些书,感觉很烦闷。确实只有在谈技术的时候,我才不会躲避他人的眼光啊。

ADC 2012 见闻

上周末(2012.07.07-07.08)第二次参加淘宝举办的技术嘉年华活动,听了一些不错的课题,也碰到了不少技术达人。当然也错过了一些本来准备听的课题内容,比较悲催的是周末两晚都给热风给吹得头疼。

这一次计划要听的内容主要集中在两个方面:Hbase和NodeJS。结果由于周日头疼,当天的Hbase场基本没赶上,只听了一场关于淘宝去Oracle的过程与感想的分享。其余的时间基本花在听NodeJS的场次上。

淘宝目前的数据量非常庞大,核心数据在30PB左右,并且每日增长在100T。整体业务从Oracle迁移到Mysql共同花费了一年左右的时间。采用的迁移策略主要有:1,从非核心业务开始,最先开始的是买家收藏夹的业务。2,oracle数据复制到mysql的策略选择,全量和增量备份的流程,数据验证过程复杂(一个验证周期需要7天,因此后期直接去除了数据验证这一部分工作)。3,项目负责人还是制定了后手方案,失败仍然可以迁移回Oracle。复杂的变更集中在两个方面,数据表的结构的变更,以及尤其带来的对原有业务逻辑的冲击。保证在线业务的正常是整个过程中必须的事情,因此核心代码冗余和重复的地方也比较多,事务处理修正复杂。

之前了解过淘宝内部的数据处理流程大体也类似先存储再交换后处理的几个步骤,当然他们现在也有实时计算方面的业务。数据交换的方式采用了三种渠道DataX,DbSync,TimeTunnel完成,这三个产品将数据主要交换到hadoop中,再利用一些产品对这些数据进行数据分析与挖掘,形成诸如量子统计,数据魔方和淘宝指数的几个主要产品,此外还可以将这些数据提供给搜索引擎使用。

淘宝去Oracle

除了数据方面的课题以外,其它的时间我基本都泡在NodeJS分享场次里。之前参加过几次NodeJS的活动,也跟一些“基友”聊过他们目前从事的NodeJS的实战情况,就目前来走在前面的基本都是大公司,实际运用在产品中也就那么几个公司。不过已经有越来越多的人开始尝试NodeJS解决一部分实际问题。网易开始用NodeJS搞web游戏框架的设计,淘宝将NodeJS运用在数据中间件方面,形成的成熟产品有淘宝指数(已知的全NodeJS产品)。阿里内部已经有多个前端团队将前端集成与发布有原先的java版本或者perl版本更迭为NodeJS版本。也有人开发了一些小的站点,如club.cnodejs.org,csser.com等。我之前也计划将nodejs应用到实际的一些场景中,无奈对js的不熟练和版本更迭太快让我感觉还需要等待一些日子。此外我觉得这个事情一个人推动是无意义的,所以还需要有队员的加入才行。

NodeJS在淘宝

最让我吃惊的是,老赵—一个狂热的人—为了宣传他自己的开源项目,完全自费来杭进行宣讲,准备在之后的个人作品使用起来。借用一下网上朋友此次的评价:

比你牛B的人比你更努力,比你们公司更加牛逼的公司加班比你们更加多,流程制度比你们公司更加健全的公司改起需求来更加频繁

文末提供一些本次或者之前的一些ppt。

1,NodeJS在淘宝
2,ADC2012IData1
这是idata的的分享内容。泽远的分享之前有听斩星讲过,这次只听了一个开头。从ppt来看,开发的IDE比之前要更完善了。提供一个web化的开发工具。

NodeJS开发杂记–环境准备

这篇文章本来是我个人为自己写的开发总结系列的文章。结果越写越像教程了。所以考虑放到社区来,希望能有所帮助。这一系列的文章会随时得到更新和修正,包含本文,可能会对一些具体的细节进行补充完善。

我接触NodeJS的时候,NodeJS的版本还是0.4.7,2011年下半年的版本变化非常快。主要原因是社区的介入非常火热。

目前最新的版本是0.6.10,unstable 的版本已经到了0.7.2。本月的重大的消息就是NodeJS的主要创造者ryan dahl将Node转入另一个主要奉献者之手了,并且根据计划在Q1-Q2之间会发布稳定版本0.8.0

这里先给大家简单介绍下在开发NodeJS应用需要了解的知识和需要准备的环境:

1. 了解NodeJS的原理和简单应用分析。

2. 建立开发环境.

  • NodeJS:NodeJS目前已经提供了MAC,Windows,Linux三种不同操作环境的安装方法。其中linux下需要使用源代码编译,这里不进行详细说明。需要注意的是,虽然官方虽然已经提供了windows的安装版本,但是仍然有一些特定的第三方包是不支持的,所以如果你的运行环境如果实在需要使用到这些第三方包所提供的功能特性,请选择cygwin进行安装NodeJS,具体的安装方法,同样可以使用Google找到。

  • IDE :开发工具其实因人而异,有的人习惯了纯文本编辑的简单,也有希望能得到完整IDE所带来的方便体验。目前开发javascript的IDE很多。EclipseWebStorm以及textmatesublime text2都是不错的选择,请根据个人的喜欢进行选择。但是这些开发工具所提供的功能特性都不是很完整,问题主要集中在调试器方面的问题。
    如果你是使用的MAC OS,我推荐你使用TextMate 2以及sublime text 2.我个人也比较喜欢Cloud9和nide。

  • NPM:NPM是NodeJS用于管理项目依赖的工具,熟悉它的使用,绝对会让你的总做事半功倍。我认为每一个项目都应该建立自己的package声明,package声明中的内容包含项目名称、版本、NodeJS引擎的版本、主程序以及依赖包和测试脚本定义等等。甚至可以包含GitHub的路径。
    当然你可以选择使用一些工具来帮助你生成项目的结构。比如ngen。如果你觉得ngen不好,你可以到Toolbox For Node上寻找适合自己的。

3. 开发与测试

如果你是个新手,我建议你可以阅读文章前面提到的书籍进行学习。如果你有一定的经验了,请你保持开发与测试并行的原则,尽量保证每个方法或者功能都已经经过了测试验证。

在开发过程我觉得有几个地方需要申明:

  • 单元测试,尽量对最小方法快都进行单元测试。

  • 代码规范,请保证你的编码风格是符合各类编码标准的。比如javascript编码tab为2个空格等。如果你是其他语言的开发者,请事先设定好的IDE。关于编码规范可以访问一下地址:

NodeJS社区:http://club.cnodejs.org/topic/4f16442ccae1f4aa27001051

https://github.com/windyrobin/iFrame/blob/master/style.md

4,提问、反馈与奉献

  • 问题:如果在开发过程中出现了问题,需要向他人求教。那么我建议你首先整理好你的问题的细节,比如异常信息、问题的原始代码等等。尽量不要使用简单的语言表述,因为在很多情况问题的现象是一样的,但是原因则不一样。

  • 反馈:如果你在使用NodeJS的时候,发现了NodeJS自身或者第三方包的问题,并且自己予以修复,那么我建议你将该修复方案反馈给社区。因为你的反馈是会促进社区更好发展的。

  • 奉献:我建议你的开发项目是可以反馈到社区的,尽量反馈到社区。反馈到社区的好处,项目有可能得到同好的相应和帮助,这样既能帮助你解决问题,也能帮助认识更多的朋友。

NodeJS开发杂记–闲言片段

这篇文章将是我2012年以来的第一篇博客,举例上一次写博客已经过去很长时间了。
微博我也使用,但是微博更多的只是一种零散的只言片语,更完整的内容还是需要通过博客类应用对一些想法和事情进行总结。当然博客这种总结也也有可能对别人提供一些帮助。

我是2011年下半年接触到NodeJS的,接触这个事情的起因是部门内部有同事需要提供类似知乎的问答服务以供团队使用,偶然的接触到了NodeJS的概念,当时并未深入。之后在taobao的技术嘉年华上相对较深入的了解了下NodeJS,以及taobao内部是如何使用NodeJS的,对其特性有了一些初步认识。当时的想法是可以小范围的运用于公司的一些运维产品中,对于我们公司来说可以适用的场景主要有:分布站点的日志分析,运行状态跟踪等,由于NodeJS的部署方便简易,更容易实施在这种分布较广的产品中。

就目前了解,NodeJS运用较为广泛的国内业界主要是淘宝的数据团队和新浪的weibo团队,还有腾讯的朋友网也使用了。

后来由于学习Objective-C的影响,并没有再深入的学习和使用NodeJS。再后来参加了NodeJS社区的活动,了解了一些项目的技术特性,比如taobao的itier,taobao的UE团队的集成系统等等。

在2012年1月底的时候,我开始进行一个内部协作平台的开发,该项目集成了多种功能,包含有知乎类问答,日程管理,部门期刊文档等主要功能载体。 项目最初是 采用Java开发,使用了SSH。在年前主要完成了前端的一些功能。管理员的功能项没有完成,本来计划是让新员工来完成后台管理模块的功能的。

过年的时候,因为没有回家,在住处发现社区网站采用NodeJS全新开发了。因而自己也萌发了使用NodeJS来开发后台管理模块的想法,于是乎在过年的这一段时间里,自己基本完成一个基于NodeJS的CURD应用的系统。

本来事已至此就该完结了。但是自己又喜欢折腾,后来竟然考虑将整个系统全部转换为基于NodeJS的web应用,并且还就真的这么干了。
当然在初期遭遇到了几个问题:
1,NodeJS + Mysql 对象关系映射的问题。
2,session状态保持的问题
3,性能问题
4,不可移植模块的处理办法

到目前位置这些问题都取得一些解决方法,但是还需要更多的测试与完善。

本来这个应用只是单纯的web版本,后来给领导看过后,老总说需要提供移动版本的。自己就感觉悲催了,移动版本的界面给他们演示的只是一个游客版本。这相当于一个饼还没有好,我就急着画下一个饼了。

好了。关于开发过程中的一些闲言片语就先写到这里,总结下这个过程:

1,无论开发多小的应用都仍然需要进行明确目标和量化指标。不能因为该技术的在前期的投入产出高,而匆忙下马。2,问题的细节,还是应该从最简单的代码质量着手。由于NodeJS开发过程经常使用到外部依赖的关系,而开发过程中又没有比较清楚的帮助指导,因而需要开发人员认真对待每一行代码。
3, 数据结构的移植也是非常重要的环节,需要针对不同的数据源采取不同的处理方法。当然我不建议NodeJS的应用支持太多的数据源结构。因为这个过程会比较复杂,尤其是关系型数据库和NoSQL数据库替换的问题。 

在接下来的的几篇文章的中,我会就自己在开发过程的一些具体问题进行下分析和总结。希望能对那些会访问我的网站的朋友有所帮助。

Objective-C 学习总结 – 1

我一周前开始学习OC,这一周的主要内容集中在语法层面等初级层面。
并且由于各种书籍上面的SDK版本的差异,有些内容上还是不一样的。
这里总结下OC跟C以及JAVA的一些区别。

1,OC内置支持的数据类型兼容C的基本数据类型。如int,float,char等。
OC中字符串的跟C的定义不一样,这一点有点类似Java的风格。
在OC中定义个字符串的方法:NSString * string = @“my name is leton li”。

2,OC是C的超集,但是跟C是不一样的。它是面向对象的。
OC中的类代码由两部分组成,一部分是头文件,一部分实现部分,我个人觉得这个风格更像是java中的接口与实现分离。
举例说明:

// Program to work with fractions – class version
#import <Foundation/Foundation.h>
//---- @interface section ----
@interface Fraction: NSObject
{
    int numerator;
    int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end

//---- @implementation section ----
@implementation Fraction
-(void) print
{
NSLog (@"%i/%i", numerator, denominator);
}
-(void) setNumerator: (int) n
{
numerator = n;
}
-(void) setDenominator: (int) d
{
denominator = d;
}
@end
//---- program section ----


OC中的类的属性默认是私有的(@private),如果需要访问私有属性,可以通过get/set方法实现。
OC中建议get的方法就是属性名。
除了get/set方法为可以使用@property定义属性,@synthesize 。如上例子中的类的属性就可以直接定义
@property int numerator
然后在实现部分使用 
@synthesize numerator

3,方法调用与访问
例如上面代码的方法调用就是这样:

Fraction  * fraction = [[Fraction alloc] init];
[fraction setNumerator:10];
[fraction setDenominator:10];
[fraction print];

如果有多个参数定义就下所示:

-(void) sum:(int)aa addNumber:(int)b;

我个人觉得定义的过程就像在进行对话一般。
刚开始入门OC的时候,这种写法还是不好习惯的。

4,内存管理。
在OC中的内存管理是非常重要的,所有的对象都建议在使用完成后进行释放
[fraction release];
在4.2之后的版本中,引入了ARC机制。内存管理的难度大大下降了。
ARC 自动引用计数控制。

5,集合
NSArray,NSDictionary,NSSet都不是不可变长数据的存储。字典类类似Java中的Map结构。

如果需要变长数据可以使用NSMutableArray。NSMutableDictionary等。

6,基本文件操作
NSFileManager,NSURL等类的使用。
这里面让我不适应的地方是我目前还不知道大文件如何可以按顺序读取和或者直接定位到文件的位置上。需要看官方文档。

7,Arcive数据。
这个过程就是讲对象实例的数据存储起来的一个方法。存储后的数据在文件的内容类似于XML数据。从其中可以看到类定义,实例数据等相应信息。

======
第一阶段的计划是能够做一个命令台下面的非常小型的数据查询,存储的系统。练习下各个基本结构的使用。
下一阶段的目标是学习应用的MVC模式以及Cocoa和Cocoa touch的基本实现过程。