Flume 的 EncodeState 和 DecodeState

Flume里面每个Fn都有两个成员函数: void Fn::EncodeState(string* state); static Fn* Fn::DecodeState(const string& state); 今日终于彻底搞明白了它们的用途。主要推理过程如下: Flume的执行过程很有意思,它首先把用户写的主程序执行一遍,计算所有必要的Pipeline Operations,然后才真正开始处理数据。 所有的 Fn 都在主程序里面创建了一个实例。Fn的构造参数可以是主程序执行的时候算出来的动态数据,但是不能包含任何Flume操作的结果。 Flume Worker 只运行 Fn 而不执行主程序,所以不知道这些构造参数的值。它们生成Fn的唯一办法,就是主程序在它的 Fn 实例上调用 EncodeState,把构造参数序列化,然后再传到Worker上去。Worker调用 DecodeState来生成一个Fn的实例。 这个东西更合适的名字也许应该是 EncodeConstructorParameters。

今天日食

今天日食。妈妈、女儿、儿子都很兴奋。妈妈老早就买了专门的眼镜看日食。女儿学校很早就发出各种通知让大家准备,我自己却没有什么感觉。大概第一是因为这只是一个偏食,地面上的人不会有特别的感觉,第二是早已经明白了其中的原理,也少了很多神秘感吧。自己倒是很早提议全家去Oregan等能看到日全食的地方去,不过一来是太折腾,二来女儿已经开学了,最后只好作罢。 上午正在办公室写程序,结果同事们都纷纷跑出去看日食,也有同事邀请我去,虽然不熟悉,但是这种活动多了不久熟悉起来了吗?想到这里,我也就跟着出去看。同事递过来一副日食眼镜,透过眼镜看太阳就像一个蛋黄色的月亮,天空中其他地方均是一片黑暗。大家看了几分钟,也就纷纷散去了。 看过刘慈欣写的科幻小说《流浪地球》,写的是太阳将要变成红巨星之前人类操作地球逃离太阳系的故事。小说中的太阳即将爆炸而吞噬地球,是地球上人类生存的最大威胁,和我们平时描述的万物生长都要依靠的那个太阳绝不相同。大概看过那篇小说之后,我对于太阳的看法就彻底改变了。今天看到日食,也觉得天空中的这个火球威力无穷,太阳系中的其他天体如地球、月亮,与之相比实在是微不足道。再想想太阳只是千亿颗恒星中非常普通的一个,顿觉生命是个偶然,在这浩瀚宇宙中实在是太渺小了。

终于扳回一局

对老爷子已经是二连败了。总战绩也是处于下风,这次下定决心要扳回一局,但是又没有太大的把握。 棋局的进程也是如履薄冰,充分领教了老爷子务杀不顾的棋风,也暴露了我薄弱的大局观。我很多时候不走薄厚相关的要紧处,却在小的官子处走棋。汗颜! 我执白棋,开局白方在左边走的有点过强,到白30已经很苦。可能22还是应该B9打。 白36当然应该J15跳出,实战不知道在走什么,黑棋封锁之后,白棋大苦战。 黑47当然应该长出,实战白方提掉一子,黑棋却吃不掉里面白棋,白方得分。 61,63棋谱有误,黑棋是先跳出再飞角。 白64以下得失不明,也许应该高挂。实战追求复杂,局部实地有所得。但是几块孤棋还是很薄弱。 79凶狠,老爷子的棋风尽显无遗,白方三块孤棋,这盘棋真是侥幸。 黑85未在M14一带下杀手,不解。 白86受劣势心情影响,全力抢空,并谋求对黑反攻,局势非常凶险。杀黑希望渺茫,但是白棋三块孤棋都很弱。 实战87以下棋谱次序有误,但是正确的次序想不起来了。直到白102尖吃掉一子,一块白棋才算安定下来。 106当时想不出更好的办法,也许应该R17尖角。 黑109以下疯狂追杀,不明。但是黑损失有限。 118做活,并瞄着黑棋大块,但是黑棋似乎没有发觉。 119以下白又一角苦活,今天的棋狼狈不堪,太差了。 123又开始袭击,不过白124也动了杀心。黑129不明所以,白130跳的时候还以为已经吃住大块胜定。 138提错招,于N13接黑大块无生路。实战黑145好手,黑棋大块逃脱。受此打击,白方以下枪法凌乱,送黑棋边路成空,大损!于O12吃住黑5子依然是胜势。实战黑方竟然先手成活,又抢到K4,真是不堪回首。 下到170左右的时候,终于看到了吃黑四子的手段,心情平静下来,知道此局胜定。实战黑棋不明所以,结果一共被吃掉6子。 总结一下,老爷子的死活计算并不扎实,但是棋风凶悍。我自己计算力还行,但是大局观薄弱,而且棋风保守。总是好胜负。 汗颜的一局。

Amazon 真是黑心

前一阵子因为要把自己的旧24寸显示器卖掉,就尝试了一下 Amazon Seller Center。当时一时兴起,顺便把女儿的几本旧书也挂在上面。后来显示器通过Craiglist卖掉了,Amazon的书就一直放在上面没有管。 昨天收到一封Amazon的邮件,说女儿的一本书卖出去了,买家是NJ的,大家都很高兴。今天开始着手处理这件事情,结果发现Amazon 收了$3.7的费用,包括什么 Item Fee,Referral Fee,Closing Fee,等等。连同运费算下来,整个东西还亏本 $1.6,真是大吃一惊。这个Amazon 真是黑心,收这么多费用!小东西在Amazon 上面卖,实在是不值得。

Vim 插件介绍 – Multiple Highlights

Vim在搜索某个字符串的时候,可以一次把当前文件里面所有这个字符串都出现的地方高亮显示(highlight),这个非常方便。Vim有一个插件叫 Mutliple Highlights,这个插件把上述功能扩展了一下,可以高亮显示多个字符串。我查看日志文件和源程序的时候常常使用,觉得实在是很方便。 插件的安装就不说了,只介绍一下我自己使用的几个 key mapping。这些配置的目的是让这个插件提供的功能可以看作Vim本身功能一个自然的扩展,方便记忆和使用。 标记一个字符串:在Visual Mode 和 Normal Mode下: <Leader>m 找到下一个字符串:在 Normal Mode 下将光标移动到已经高亮显示的字符串上,然后: <Leader>*: 找下一个 <Leader>#: 找前一个 删除一个已经标记的字符串:在 Normal Mode 下将光标移动到已经高亮显示的字符串上:<Leader>m 一次清除所有的标记:<Ctrl-L>。注意这个也会清除Vim自己的搜索高亮字符串。如果想要只清除Vim自己的搜索,可以使用 :nohls

下棋的主要目的就是Social

无论是中国象棋、国际象棋还是围棋,对于人脑来说都是博大精深,不存在穷尽的可能。如果不是职业棋手,不靠下棋吃饭的话,研究这个棋艺更是虚无缥缈,费力不讨好。且不说强中自有强中手,光是要保持水平,做到拳不离手,曲不离口,这中间花费的时间就相当可观了。围棋界有一句俗话:棋下到业余五段,正式工作也就算是荒废了,我深有同感。 既然如此,那棋艺本身就没有什么值得可研究的了。要是说下棋的乐趣就在于胜负,那更是误入歧途,别的不说,从胜负的角度看下棋肯定是一个零和游戏,大家在一起下棋那就什么也得不到。在我看来,下棋最主要的功能,还是在于它是一个Social的工具,借助这个东西创造和人交流的机会。对于我来讲:和孩子们下下国际象棋,和老婆以及朋友下下中国象棋,和老爷子下下围棋,大家共同度过一段美好的时光,也就算达到目的。

从站点首页删掉 “文章”两个字

我的站点使用 “Twenty Seventeen” 主题。这个主题一切都好,就是在首页上所有帖子最前面有“文章”两个字。这两个字可真是一点用处都没有。 花了点时间在模板定制里面找了找,好像还改不了。今天下定决心在源程序里面找了找,就是下面这个文件: /opt/bitnami/apps/wordpress/htdocs/wp-content/themes/twentyseventeen/index.php 注释掉里面 <header class=”page-header”> 相关的一大块就好了。

我为什么要写博客

王小波有一篇文章《我为什么要写作》,讲的是他自己有写作的欲望,也相信写作能够给自己和这个世界带来一些好处。我也偶尔问自己这个问题,我为什么要写博客? 很显然,这个时代自己建个网站早就没有多少人看了,大公司的平台比如新浪微博、微信、Facebook等等已经垄断了绝大多数内容和访问途径,所以凭借流量想要弄点广告费基本上是痴心妄想。当时装好WordPress 以后,我还安装了 Google Analytics,不过前两天看看可怜的访问量,我就把它又卸载了。后来我还尝试在网站上装上Google AdSense,一个月过去也没有任何收入。很显然,自己写博客不牵扯任何经济利益。 要回答这个问题,不能不提到个人的成长经历。我这一代人成长的时候,大陆的整个教育都在系统性的压制个体的声音,以至于这种欲望在我这一代人身上几乎消失殆尽。虽然赶上了互联网这个好时候,可是一直以来,我的上网习惯可以完全用“潜水”两个字来形容。不过上网看多了,就觉得有些人写文章也是胡诌,下笔洋洋洒洒,通常经不住推敲;很多网站也就是东抄西凑,弄一些博人眼球的花边新闻。也难怪大陆当局一直把整顿网络谣言当做一项工作重点。来到美国以后,发现这个地方阿猫阿狗都能写本书发表,我自己也常常看见各种自传性质的书籍,开飞机的、造火箭的,演电影的,似乎美国人只要做过一点什么事情,就会写本书来宣传。连女儿在学校从小学一年级起就学着写书,而且已经装模作样弄了好几本了(当然都是我们自己买下来)。在这种耳濡目染的环境中呆久了,难免心痒痒的,想要琢磨着找个机会自己发出一点声音。再加上自己是搞 IT 工作的,搞个个人网站实在是分分钟的事情,终于找了个契机就开始了。 博客这个东西一旦开写,就有一种惯性让自己不停的写。我也说不出来这是一种什么心理,但是恐怕和电脑里面的养成类游戏差不多吧。反正是自己的空间,想到什么就说什么,不必担心。写了一阵子以后,我发现写作最少有如下的好处: 一样东西写下来的过程可以帮助整理思路; 写下来的结果可以长久保存; 不平则鸣有助于心理健康。 这么些好处加起来,就是我现在写博客的原因。这里还要感谢一下互联网这个时代,确实改变了世界。如果我们还生活在只有报纸、杂志、电视、广播的时代,恐怕我这辈子都不会有机会发出一些声音。

生活就像骑自行车

今天陪儿子骑自行车,结果他的自行车后轮爆胎了,然后只好让他骑姐姐没有辅助轮的自行车。我一个上午都要扶着他骑来骑去,不停的指导:继续蹬,继续蹬。小娃娃最容易犯的的错误就是看到前方的障碍物,一紧张脚底下就忘了蹬轮,结果自行车越走越慢,最后就倒了。其实只要一直蹬,车子保持速度往前走,到了障碍物前拐一下很容易就过去了。 教了好久,下午在公园的篮球场上儿子终于可以骑得很好了,看着他开心的在球场上骑了一圈又一圈,我突然想到,人生这个东西,也就是要不停的努力向前,很多问题在前进中也就自然解决了,一旦停下了,反而容易像自行车一样失去了平衡而摔倒。我自己从家乡到县城,从北京到硅谷,在保持平衡的前提下总是努力向前,恐怕也是暗合了这个道理吧。现在从搞传统的infrastructure转行到搞 machine learning,还是要努力向前呀。