不积跬步,无以至千里
不积小流,无以成江海

Great journeys begin with small steps;
mighty rivers grow from little streams.

Wild flower, working bees, a little fog


Night cycling at Sentosa, but Sentosa not much cycling friendly, only cycling road to Sentosa cove. There no view, only hotel.


After almost 2-year, cycling to sentosa


浅谈任务调度中的自身依赖

在大数据处理中,因为算法或者业务逻辑的要求,有时候需要依赖任务本身的历史数据,譬如,当前业务日期依赖T-1,即昨天的计算结果。这就是自依赖,在任务调度图上看,就是一个闭环。以T-1来说,如果昨天的任务没有完成,那么今天的业务日期是处于等待状态,直到昨天的完成为止。这种有个潜在的风险是,如果任务失败,而又不能及时发现并重启,那么后续的所有业务日期的任务都处于等待。而且,重启任务要从最早失败的日期开始,等成功了,在重启下一个业务日期。这种一个一个按顺序重启,非常麻烦。那么如何解决这个问题?解决方案要具体问题具体分析,如果如果T-1的依赖是业务强要求,譬如,一定要严格计算今天同昨天比新增的数据,那么就一定要这个依赖。但在大数据处理时,这种严格的业务要求通常不会有。如果是因为算法计算为了提高效率,减少计算量,昨天已经处理过的数据,今天就不必处理了,直接把昨天的结果拿来就行,这时候,就完全可以去掉这种自依赖。从而保证系统的稳定性和鲁棒性。核心是cache,即把所需的历史数据,譬如,t-1的结果放到一个cache表(独立的表或者和处理结果同一个表,但放到一个特别的最大业务日期分区,譬如99991231),那么在当前业务日期计算的时候,增量是和从cache取得,就不需要依赖自身。cache总是保存当前最新的业务日期处理结果。当当天的业务日期处理完成后,除了更新当前业务日期分区,同时,也要更新cache表或最大业务日期分区。这样即使历史任务很多失败了,也可以快速修复数据,因为cache里总是有数据在,只是增量计算的参考不再是严格的t-1,但实际上不影响任何东西。因为算法增量计算的目的是不做重复计算,大多数时候是要把增量和cache的数据做合并,每天仍是全量。如何设计cache,和具体算法业务有关,如果你想在某些情况下已经计算过的,其中一些在某些条件下需要重新计算,这时候,cache的逻辑可以复杂,只cache满足条件的部分数据。你也可以设计个开关,随时打开或关闭cache。我们希望系统稳定,减少维护成本,把宝贵的时间和聪明放到更有价值的地方,就需要在系统开发的时候提前规划好,设计好。

Passion fruit in sky garden


East Coast park , 东海岸公园


Learn programming - C++ basic

I will share some slides being prepared to teach basic C++ to children. C++ is beautiful and useful, particularly when your system has high requirements on efficiency with limited resources. Although high level languages such as Python, are widely used...

宽客人生读后感

从一档podcast听到这本书,就找来看看。这是一本介绍Emanuel Derman,一位在哥伦比亚大学受训为理论物理学家,如何经历职业的震荡,最终成为一位量化分析师的过程。如果我在博士刚毕业的时候能看到这本书,可能我的个人职业发展也会是不一样的人生。对于立志从事科学研究的人,读完这本书,可能要重新审视自己的决定。六七十年代的哥大,那是理论物理学的重地,因为有李政道在那里坐阵。物理系的研究生可谓是天才中的天才。作者从南方到哥大,立志成为理论物理学家,而且也是自恃聪明,可到了哥大,才发现厉害的人到处都是。经历了选课题选导师,作者开始审视自己,以自己的资质,是绝无可能获得重大成就,可又新有不甘。毕业后为了从事理论研究的职业,做不稳定的博士后。朋友介绍工业界的机会,可不愿放下身段,因为做理论物理的人去做应用,在那时候是很没有面子,丢人的,等于承认自己的失败。在后来,为了家庭,总算去了bell实验室去做分析软件。渐渐发现编程做软件系统挺有意思,可以看到自己的东西直接有成效。虽然作者自己的系统成了公司的产品,可他毕竟半路出家,后来一个科班出身的哥们加入他们团队,系统升级的时候重写了代码,而他在休假。等他发现,已经晚了,而且他看了人家写的,简直比自己的好太多。以后只能自己维护,理解代码都困难。在后来有机会加入高盛,在量化团队跟着一位牛人,开发量化模型,其实就是软件工程师,实现领导的模型想法。相比交易员和销售员,地位奖金可差远了。好在他很喜欢,在高盛开发交易模型,一直就这样做下去(中间短期跳槽去了所罗门兄弟)。主要收获:搞科学研究不是光有热忱和不屑的努力就可以的,智力占主要的。就像作者说的,读了爱因斯坦的论文,自己绝对做不出来。年轻的时候我们很多人都立志科研,可有时候现实很残酷应用研究也是很有意思的,可以立马看到效果。看到自己的东西很快产生实际效果,也是很有成就感的。要跟对人。作者跟着当时的最牛的金融量化教授和专家做,通过实现别人的模型,外加自学相关知识,起点肯定高,做的东西都是顶级的。时机对。从所罗门兄弟再回到高盛时,原有的team leader 的位置已经没了,因此去了另外一个股票模型组(没有原来的好,奖金啊),正巧牛人老板被掉到其他岗位,空出来leader的岗位。真是命啊爱好和长期耕耘。作者喜欢建模,善于思考,理解交易员碰到的问题,思考解决方案。这其实是博士的训练,发现问题,抽象和模型化,写代码解决问题。博士训练的是一种思维,一种解决问题的方式。虽然实际问题千差万别,但分析抽象后,就变成一般性的问题,解决方案也就有了。本书的文笔感觉一般(看的中文版),有点像流水账。里面有不少理论物理界的名人轶事,权当茶余饭后的聊资。

East coat, many people rest at beach


Flying kite


Go to East Coast


Garden by the Bay to Marina barrages