三百篇文字纪念

mem 光是放在blog上面的文字,已经超过三百篇。我觉得哪怕是在工地拉砖头,也应该是时候直起腰回头瞅瞅了。所以就有了此文,但是和十多年前的我不同的是,我应该不会发很多牢骚,而另一方面,我也不像是个理性到每逢这种时候都要摆一大迭数据出来说事儿的人。所以,大概还是扯扯东、扯扯西,这篇纪念就过去了。这当中该用力地记到脑子里的,会慢慢沉淀下来。

宏观地且从粗暴的统计来看,大概两年前的我,那个时候是最能写的。那段时间无论往前数还是往后数,生活或工作的繁忙程度都要增加许多,这无疑影响了我做这些笔头事情的效率。

最近可能是年纪增长的关系,我不断在思考一件事情,到底做点什么才是最值得的。我不是什么特别有规划的人,

[……]阅读全文

练琴

piano 以前有一个电子琴,只是时不时的折腾一番,也没有养成良好的读谱习惯,进步很慢。其实很多人都和我一样,心中从小就有一个各种各样的和艺术沾点边的梦,身边有画画很棒的,有下棋很牛的,还有同事每个月都会去跳舞,我和我老婆说,从小就喜欢折腾各种音乐器械,要不我也正儿八经学学钢琴,开发开发智力?她说,要不先弄你的电子琴吧,要是能坚持下来,再投资钢琴。差不多快一年,事实证明这个兴趣应该是可以坚持下去的。于是请了老师,每周一课。又过了一段时间,老师说,你得去弄一台真正的钢琴了,电子琴不是长久之计。

我做了做功课,有位同事家也有钢琴,不过是电钢琴,看到其中的好处之后我有点心动(比如可以调音量,便携,还可以编曲)

[……]阅读全文

从构建和测试的效率说起

最近的工作总是在EMR上跑Spark的job,从代码完毕到测试完毕的过程是这样的:

1. 本地测试:

    构建 -> 本地UT -> 观察分析结果,这一阶段可以发现逻辑问题

2. EMR上执行测试:

    上传最新构建到S3 -> 准备EMR资源(包括计算资源和数据) -> 在EMR上执行Spark job -> 观察分析结果,这一阶段可以发现在数据量较大的情况下才出现的问题

3. Workflow集成测试(这个workflow是公司内部的一个管理job的工作流系统):

  &nb

[……]阅读全文

Scala的模式匹配

scala

最近开始学习Scala,相较于学习Haskell的过程来看,Scala真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的Java和JavaScript来逐步学习Groovy和Haskell的文章,这以后再来学习Scala的话,就可以不断比较了。如果和我一样有Java经验的话但是从来没有接触过Scala的话,建议先阅读这篇文章,A Scala Tutorial for Java Programmers,一边比较,一边熟悉,同时配套的还有这个,Scala for Java programmers – Joakim Ohlrogge & Enno Runne,Youtube上的视频,

[……]阅读全文

我眼中的范加尔

LvG

写在双红会之后。曼联遇到利物浦,最近这一年多来,总是可以拿到酣畅淋漓的胜利。从莫耶斯到范加尔,其中的转变,这是一个缩影。毫无疑问范加尔是个颇具争议的主教练,他的身边从来不缺新闻话题,而且他的孤傲和弗格森还不一样,他喜欢把各种内部消息往外抖,说他心直口快也好,说他脑子缺根筋也好,反正记者爱听他爆料,球迷也爱听啊。就在没多久前,因为花了几千万签下一个名不见经传的马夏尔,还受到各方质疑,连他自己都承认,这个价格有点疯狂。

战术层面

说范加尔战术死板那绝对是有道理的。事实上,球员被允许自由发挥的余地并不大。关于球员自由发挥,这个和教练有着密切的关系。范加尔是个典型的control freak,从训练

[……]阅读全文

七年工作,几个故事

journey

从毕业工作到现在,已经有七个年头,年头虽然不久,但是回过头来看看那些经历的好的坏的有趣的扯淡的事情,还是有很多东西可以总结。所有人都会或多或少走弯路,本来成长就是这样一个过程,有时候想起来会感叹,有时候会唏嘘,有时候会一笑而过。我的前一半时间是在华为,这段时间留给我很多回忆(比如这几个瞬间);后半时间在亚马逊,也给了我不少感慨的机会。下面这些故事都是我经历的真真实实的事,有的事情已经过去好久,但我不想把它永远尘封。也许你和我在某些方面,会有共同的体会。

在我说这些故事前,或者说,吐这些槽前,我想说这样三个观点。

首先,为自己工作。

不是为父母,不是为同事,不是为公司,[……]阅读全文

谈谈曼联今年的位置竞争和引援

manutd

看完两场英超,引援上估计除了待定的佩德罗以外,不会有什么大的变数了。想起去年赛季伊始,在知乎上面回答了几个和曼联有关的问题,现在正好回过头来扒坟,比如关于曼联的拉斐尔,说“他也就是一员猛将,刚猛有余,智慧不足,前途平庸”,目前看来是正确的,已经离开前往法甲;说费莱尼“在当前全攻全守和控球理念强调下范加尔治下,费莱尼很难在球队中有他的一席之地”,很遗憾这条错得离谱,但是话说回来,费莱尼尽管上个赛季令人惊讶,但是我依然认为他和范加尔脑海中的建队思路有所违背,位置不稳的。范加尔上任以后屡遭非议,即便在去年范加尔成绩最差的时候,差到都不如同期莫耶斯,

[……]阅读全文

系统设计的典型分层和涉及的知识点

作为系统设计学习的一部分,不久前在梳理面试中典型的系统设计问题,发现大部分都可谓有套路可寻。我把思路梳理了一下,简单整理到下面这张图表里面:

System Design Layers

对于其中的内容,稍微补充几句:

  • 系统设计需要经验的积累,但也确确实实有章可循。问的问题考察的类型很集中,比如同步、异步,消息push和pull,根据实际问题设计存储的数据结构,对于scalability、availability的认识等等。最喜欢被问到的问题,我在《系统设计典型问题的思考》这里列了几个。
  • pull on demand 和 push on change 是消息系统里两种极其典型的消息传播方式,基本上设计twitte

[……]阅读全文

几道抛硬币问题

coin toss

只是记录一下遇到的几道抛硬币的概率问题。

 

1、平均需要抛掷多少次硬币,才会首次出现连续的两个正面?

假设连续两个正面的期望是E,那么,先看第一次抛硬币:

  1. 如果抛到反面,那么还期望抛E次,因为抛到反面完全没用,总数就期望抛E+1
  2. 如果抛到正面,那么要看下一次,如果下一次也是正面,那抛硬币就结束了,总数是2;如果下一次是反面,那么相当于重头来过,总数就期望抛E+2

于是可以得到如下关系式:

E = 0.5(E+1) + 0.25*2 + 0.25(E+2)

得到所求期望E=6

现在把题目拓展,不是说“连续两个正面”,而是“连续n个正面”呢?

这个问题Matrix67有非常有趣的解

[……]阅读全文

从Java和JavaScript来学习Haskell和Groovy(汇总)

programming language

这是这个系列的最后一篇,从编程范型的角度概览,前面几篇的链接在文章后半部分有汇总。

我在之前已经介绍过编程范型的概念,而事实上,我们到现在为止,纠结在这四门迥异的语言上面,浅看是各种语言特性,深看就是编程范型和思维方法。

下面这张“神图”来自于这里,可以说是对于范型和语言归类的概览,从左往右从更强的声明式向着更弱的声明式发展;依据状态分为Unnamed state(串行或并发,包含逻辑式和函数式这几种分类)、Nondet. state(所谓的不确定性状态)和Named state(包含数据流、消息传递和状态共享这几种分类),Haskell出现在了左侧函数式语言的分支内,而Java出现在了右侧

[……]阅读全文

关于远足

hiking

昨天刚从Lake 22远足回来,感觉很疲劳,回想起这些时间的远足经历,可以写一写其中的感受。如果你也有此长期计划,打算用远足的方式来充实生活,或者锻炼身体,甚至只是打发时间,那可以参考下面的文字。

首先,我不是驴友,我也没有专业的远足设备。我只是在周末天气不错的时候,用远足的方式给自己找点乐子。经过一段时间的熏陶以后,就像写博客一样,已经养成了习惯。我在《旅行映像》里贴了一些远足的图文记录,但是远足带来的体验,远不止所谓的“看风景”。本人甚业余,专业党、野餐党请绕路。

准备工作很简单,但是却少不得。平均起来,一个月四周的话,基本上有三周我都会去选择远足,时间一般都在周末。如果要去远处,或者步

[……]阅读全文

从Java和JavaScript来学习Haskell和Groovy(DSL)

dsl 这是《从Java和JavaScript来学习Haskell和Groovy》系列的第四篇。

首先来理解DSL。

DSL(Domain Specific Language)指的是一定应用领域内的计算机语言,它可以不强大,它可以只能在一定的领域内生效(和GPL相比,GPL是General Purpose Language),表达仅限于该领域,但是它对于特定领域简洁、清晰,包含针对特定领域的优化。

当我们面对各种各样的特定需求的时候,一个通用的语言往往不能高效地提供解决问题的路径,相应的DSL并不是并非要解决所有的问题,但是它只关注于某一个小领域,以便解决那一个小领域的问题就好了。比如HTML,只用

[……]阅读全文

想起那些听过的流行歌曲

lizongsheng

我们这一代人,很多都有一个不断演化着的音乐的梦想。

我们欣赏过很多音乐,听过很多歌,打开豆瓣音乐的时候,当我选择“八零后”频道,我确确实实感受到这些歌曲就是属于我的世界的,很难解释其中的原因。

虽然现在有时候依然去听那些新歌,但是就是很难再找到那根打动自己的神经。

我听张信哲的歌,最早最喜欢的是《别怕我伤心》,甚至在一些公众场合我都愿意拿出来唱一唱。

还有《爱如潮水》,当时买的是磁带,哪有什么CD啊。

后来看了《宝莲灯》,一遍遍听《爱就一个字》。

我听梁静茹的歌,从最早的《一夜长大》开始。我喜欢她那些有故事的歌曲。她有很多歌不只是曲子好听,歌词也越听越有味道。

有一首歌,《绿花》,词曲我都非

[……]阅读全文

从Java和JavaScript来学习Haskell和Groovy(元编程)

metaProgramming

本篇文章的话题是元编程。首先来认识元编程,我在第一篇《引子》里面已经介绍:元编程,指的是在运行时改变“类”的定义,例如访问、增加或修改等等。一言以蔽之,就是“用程序来写程序”。在第二篇的《类型系统》里面已经借由继承和接口的实现,介绍了一些利用元编程特性来增加或改变子类行为的方法。回顾语言发展的长河,其实是经历了一个从“对象 -> 类 -> 元类”到“对象 -> 原型”的发展过程的。所以,无论是类,还是元类,这样的概念其实都不是非有不可的,只是因为我们思考的习惯,特别是抽象的习惯而顺其自然地产生了。这一点我在《编程范型:工具的选择》里面已经详细描述了,建议在往下阅读前移步。

[……]阅读全文

LeetCode题目解答——155~226题

[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于tricky的方法。我没有为了这个再更新,就让它们去吧。

LeetCode上面的题目更新很快,而且题目是越来越不好做了。我把最新的155到226题目的思考和解答过程放在下面,解法有好有坏,有问题我们可以讨论。老规矩,有一些题目是要买一个特定的电子书才可以在线做题的,我就跳过去了。

226
Invert Binary Tree[……]阅读全文

换组

group

最近在忙于公司内部换组的事情,在亚马逊等等很多公司都有这样的政策文化,就是,如果你在这一个组工作一年以后,并且绩效不太差的话,都可以自己去寻找觉得喜欢的团队加入。我在当前的这个大组干了两年多了,经历了一些成败和风波,我觉得是时候离开去寻找一个更合我胃口的团队了,增加阅历和体验,当然,也肯定是新的挑战。在思考自己的职业未来的时候,其实是有不少选项的。大约是最近这一年,我越来越感觉到,在Amazon工作,那么多内容里面,最有价值的大概是数据,我寻找的下一站,也是想多参与和大数据更紧密的工作。如果说以前我的工作更像是一个full stack engineer的话,接下去一段时间,我要更多地和数据、

[……]阅读全文

手滑的故事

slippery

最近看到这篇文章《小伙伴们手滑集》,觉得感慨很多,强烈推荐大家阅读。比如这样的例子:

UPDATE没有WHERE条件

而我则经历过delete没有写where条件的惨剧,这个惨剧是某些case下面代码调用触发的,不是手动执行SQL发生的。

还有臭名昭著的,我没有经历过,但是我有不止一个同事干过这样的事情:

rm -rf

都只是手稍稍地温柔地“滑了一下”而已嘛……

这些事情我觉得一下子很亲切,似乎全世界的软件工程师都是如此得同一。

出的事故多了以后,变得战战兢兢,如履薄冰,尤其是回车键这样的敲击,似乎总是带着颤抖落指。

还有这篇文章《让自家系统瘫痪,这事我也干过》,讲了一个关于使用tr

[……]阅读全文

建立动态规划状态转移方程的练习

algorithm

大学里面算法课老师教导过动态规划,但是就像看书要把书看厚再看薄一样,要把动态规划彻底理解,还是需要一些时间的锻炼。解动态规划问题,每个人都有自己的习惯的套路,我的理解是最核心的过程有两部,一个是找出问题的一个一个子“状态”,再一个就是建立“状态转移方程”(就是所谓的“递推关系式”)。把这个过程搞定,基本上动态规划的题目就解了一半了,剩下那些代码层面的事情,是把思路和数学方程实现而已了。

在实现的过程中,可能会用到一些技巧,比如“循环还是递归”,这只是实现的办法而已,不是动态规划的本质;再比如空

[……]阅读全文

一点美中医疗的对比

med 最近耳道感染,左耳朵又堵又疼,在美国几次就医,本人虽非医学专业出身,但从局外人的角度,想到和国内那些求医的历史,还是有一些比较可言。

首先对于医生的划分,国内基本上就是根据科室来完成,一个医生在一个科室,时间久了,经验丰富,遂成为出名的医生。好处在于医生更能够专精于自己的一亩三分地,专科阅历容易积累。而看看许多国内的专家,有大量的机会见各种各样奇怪的病人,并且手术的机会也会非常多,因此我猜测经验会更加丰富。但不足之处在于,对于病人来说,疾病往往是复杂性全身性的,可能对要挂哪个科室并不清楚,即便到求医中后期,都有可能面临多科室一同合作的情况,这些情形都容易导致耽搁病情。

而美国的医疗体系,

[……]阅读全文

夏威夷游记

6天7夜,仅游玩了O'ahu一个岛,后来总结如果高效率地行进,可能这个岛屿4天就可以玩的差不多了。我很喜欢旅行,但是在旅行计划方面不太在行。夏威夷和我以前去过的菲律宾长滩岛比起来,更加现代一点,价格也贵了接近一倍。期间我们没有坐公交车,全程都租了车行进,并且我觉得花掉的钱里面,租车是最值得的。我把这篇文字记录下来,如果你也有夏威夷的出行计划,那么可以参考参考。

家人和我一起来,都说三个女人一台戏,至于四个女人嘛……反正一路上叽叽喳喳的。

IMG_2793

 

第一天:东线

海滩是夏威夷的重头戏,如果说论美丽的海滩数量,夏威夷可真是不少。当然,去多了可能觉

[……]阅读全文

back to top