订阅 Rss

这是我的 RSS Feed,你可以订阅 http://blog.heytaoge.com

我的微信订阅号 Visito 开通了

Hi, Guys,
Long long time no see see :-)
为了提升本博主的编辑体验 & 读者的阅读体验,
我在上班摸鱼的时候申请了一个公众号,
又花了一天摸鱼的时间,取名 Visito.
为什么叫这个名字呢?因为我的心里有一个游荡的未来,
而游到哪里,我暂时也没想好,所以这是个一半的名字。
Visit to…??? That’s somewhere I’m always chasing, But I don’t know for now.
如果你知道你要去哪的话,请邮箱我。me#heytaoge.com
我还挺好奇的。 正如,关关雎鸠,在河之洲。人总想去对岸看看。
Always Thank you for subscription.
101, 302.

Published by Visito on 2019-04-21 00:00:00

五角城堡的森林故事【2】

大象决定建一座教堂。
它要有直入云霄的尖顶。
要有交叉肋拱镶满彩绘琉璃的长廊,在阳光下闪烁光辉。
它要能容纳 5 万名信徒。
这个消息不胫而走,很多动物匠师慕名而来,都希望在大教堂的基石上留下自己的一个爪印。
狐狸凭借天资聪颖,自幼对大教堂的构筑之法素来好奇,而今已颇有心得,很快就成为了大象的得力助手。
狐狸有个习惯,每天早上会用泉水润洗他的头发,
冬天的时候犹如雾凇,夏日的时候又如杨柳。
狐狸应该喜欢那种头发被撩到耳后的清风徐来,水波不兴,深藏功与名的大侠感。
狐狸话不多,能用表情包的时候就绝不会多说一句话,大家总是从他那学会了不少表情。
狐狸是在冬天遇到狼的,原因是他们同时在找一只兔子。
意外得知狼也是一名匠师,于是不打不相识一起来帮忙建大教堂了。
狼来自北方,我猜大概是气候原因,狼总是一副冷气十足的模样。但我知道他心眼不坏。
某日,在种满十二颗橡树的庄园,大家在庆祝春天的到来。
恰好长颈鹿和狼在饮酒,言笑晏晏,其间狼谈起童年在冰雪天气的趣事,情不自禁,活像一只哈士奇。
狼的搭档猫头鹰,也许是长期晚上瞪着眼,把脸也瞪圆了。
大家在忙活的时候,猫头鹰在睡觉。
猫头鹰很少和大家交流,一来他看起来总是没睡醒的样子,二来不在一个时区,
于是猫头鹰离孤独越来越近,也就离深夜食堂越来越近,自然也就越来越圆了。
灰熊是秋天来的,他说他厌倦了在山的那边采矿,于是也来建造大教堂。
我后来得知灰熊在很久以前是一只白熊,只不过和石矿接触得太多,毛色被染得有些黑。
灰熊长期采矿,所以对石头十分了解。
有一次给我们讲起一块石头的故事。

造访石头:

有一天,我敲起石头的前门,说,让我进去。
我并非寻求永恒,我也不是无家可归,我的世界值得我回去。
我将空手而进,也将空手而出。
但是,没有人相信我造访过一块石头。
我没有听懂,但是为了展现我的聪明才智,
我翻译了一下,

大酱缸:

我是一只白熊哟,
生活他妈的是一个大酱缸噢,
我成了一只黑熊啦。
在某年夏天,我去了一个很南的有海的地方。
我是在那遇到狗的,狗那个时候,曲膝斜躺在一块岩石上,旁边是十几个酒瓶子,
他看起来喝了不少。他给我吟了一首诗:

追狗:

我年轻的时候,
追着一条狗,
朝它笑,朝它叫。
不要问为什么。
老子就是要喝最烈的酒,日最野的狗。
后来路人经常看到狗开着车载着一只猪从一条路到另一条路。
很多时候,山的后头还是山,有的时候,山的后头是一片海。
也许,在山的顶上会有一片草原。

Published by 一只讲故事的猪 on 2019-03-06 00:00:00

五角城堡的森林故事【1】

有一片森林, 森林里有一个城堡。 城堡有五个角,大家都称之为五角城堡。
而建筑师当初为什么要设计成五个角的原因已不可考【据说在日本某处有建筑师的另一遗作】。
大象是第一个来到这片森林的。
在那一天的清晨,他用鼻子肆意拨开灌木丛赶路的时候,当阳光穿过片片树叶,温起一片雾气迷蒙的时候,他似乎嗅到了什么。
在这个瞬间,他的脚步停止,他的鼻子前伸,他原本眯成一条线的眼睛居然亮出一道光,
一阵钟声在他脑海响起,起先是听起来有点遥远,后来则变成一阵交响曲,
他停留在一朵花前。
敏感的他朝天空打了一个长长的喷嚏,森林上的空气吓出一阵皱纹。
他声称爱上了这一朵花,并且要留在这里。
于是,他成为了这片森林的管家。
有时候到深夜,他仍在辛勤工作,疏通森林间的水流,于是森林开始欣欣向荣。
兔八哥是第二个到这片森林的。
他的家乡很遥远,他记得他的家乡有一个特点,只要在草地上打一个洞,就会有一定几率冒出喷泉,他们叫它突突泉。
其泉水甘甜,在冬天的时候仍然很温暖,这就造成一种很奇怪的现象:
喷泉的外部变成了冰,在里面却是跳动的泉。远看起来就是悬空的冰,十分奇特。
由此,冬天的时候,在兔八哥的家乡有一种运动,
在几亩地的范围挖出几十个喷泉,大家分成两队在上面跳来跳去,同时脑袋上顶个球。
哪队把球顶到对方的球门里并且在期间顶球的兔子不能落下冰柱,就获胜。
这种头球运动对灵活性要求很高。
兔八哥年轻的时候十分热衷这项运动。
只不过后来看着自己的肚腩,不禁笑了起来,于是露出了一排大门牙。
他离开家乡南下求学,在那个时候认识了大象,后来,在大象的邀请下到了这片森林。
土拨鼠是第三个到这片森林的。
土拨鼠爱跳舞,他带着绅士帽随着音乐摇摆的时候,觉得自己是最酷的。
像一棵海藻,一棵海藻~
他凭着柔顺的毛发,活跃的身躯,赢得了大家的喜爱。
他脑洞大开,通过联合他的伙伴在地下建立了地下联络网,帮大家运输一些小食品。
后来一场洪水来了,他的路沉了。
他也跟着消沉,他喝酒,他有肚腩了,他的女朋友离他而去。
他来到这片森林只是因为大象那天的喷嚏,一颗榛果子砸中了他的肚子,他打了一长长的嗝,
所有的过去和臭气就随风而去了。
长颈鹿是第四个来到这片森林的。
她的梦想是经过太平洋,远渡大西洋,到达马达加斯加。
她练习了很久的马达加斯加语,以致于她偶尔说话时会夹带着一些马达加斯加语。
这使她原本清脆的嗓音带有了一些异域风情。
她说她六岁的时候,有一只猫头鹰迷路了,没有给她送信,
所以她没有拿到去马达加斯加的船票。
这使得我有点心疼她。
于是,我把木偶猫头鹰通过时光机,给她送了一封信,
只不过信的路线指向了五角城堡。
大象打喷嚏那天,猪正在四处觅食。
猪一天要睡 12 小时,8 小时在吃东西。
他说,“我一天最多只能思考 2 个小时,其他的时候都很寂寞,所以一直在找吃的。”
猪是个悲观主义者,认为猪一生最美好的时刻已经过去,剩下的日子只不过是上帝的恩赐。
他经常离家出走。
有的时候,大家在打牌,他说,“我出去买只烟。”说完这句之后,他可能一个月或者几个月之后才会回来。
有时候他是胡子拉碴,浑身的脏回来,但眼里充满了精神。
他知道世上有几大生态系统,森林只不过是其中一种。其他的有沙漠,海洋,草原,冰原等等。
于是大象,兔巴哥,土拨鼠,长颈鹿,猪因为大象的喷嚏相遇,
而根因则是一朵在森林里的花。
他们在五角城堡的森林里居住了下来,一起管理着这片森林,
森林的面积每年开始翻番,也就吸引了越来越多的小动物。

Published by 一只杞人忧天的猪 on 2019-03-02 00:00:00

程序员和纺织工有啥区别?

前些日子,上海市某官员一行来我司视察。
我看他瞧我们的样子,像是瞧工厂里的一排排的纺织工似的。
这个微弱的想法如同照山洞里的一道光,作为一个山顶洞人,看着自己在墙壁的投影,不禁也在思考,
我需要做什么努力让别人觉得这个影子看起来好看一些,来满足虚无的自尊心吗?
而我写代码时和一只砸核桃的大猩猩有什么区别?
于是我站起来,环顾四周,俨然自己是个局外人。
看着这群其貌不扬的程序员,或盯着屏幕,或托腮,或佝偻着敲键盘,或戴着耳机抖腿,或吮手指,或举目望天花板…
实在看不出来他们划水和认真工作的区别,自然也就很难想象,这么些相貌平平的人,要土地没土地,要机器没机器,要石油没石油,
凭什么能估值过亿?要这么算的话,我估计我得是个身价百万的程序员了。
让我们想想这个回路:
我们生产的代码,运行在银行的数据中心,消费者每笔在淘宝或者其他地方的交易,都会通过网络,达到数据中心。
我们给银行带来了所谓的价值,银行的产品给消费者带来了价值,消费者又会在其他企业工作生产价值。
而这些价值是通过钱来运转的。
钱是经济社会网络的数据包,总会流向最需要最需要它的地方。
所以程序员拿工资,并不是因为他写的代码漂亮,只是因为他写的代码被人需要,并且恰好能运行而已。
我们早上能吃到热腾腾的包子,而不需要种地,也不用四点就起床和面。
不全是因为卖包子的大妈热心肠,
只不过我们都是衣衫褴褛的活在这世界上,只能相濡以沫,互感需要而已。
所以我们作为政府的衣食父母,对那些个来视察的官员,应该表现出我们的慷慨。
可以指着屏幕说,“来,看看我的 Bug。”
那我们在这写的代码到底价值几何呢?
也许在市场部的美女看来,我们写的代码就是 bullshit。
也许在投资者来看,我们写的代码是改变世界的推动力。【至少老板让投资者这么认为。】
所以呢,这个价值没个定数,投资好比选美,你不能选你认为最漂亮的,你应该选大家认为最漂亮的。
什么钻石啦,什么翡翠啦,一不能吃,二不能发电,但是你就是买不起呀。
可是,好像有些人似乎很高冷,扬言道,
“我是个高贵的程序员,我可不是为了谋生。”
“我是个有追求的艺术家,我只为自己创作。”
对此,我很佩服他们,因为他们不需要通过满足别人来满足自己,
这种自满的人,都是幸福的人。因为他们满足自己之后,顺便满足了一下别人。
我希望,每个人都能自满。自私自利是我最欣赏的品质。
因为,他们都在努力绽放。

Published by 爱吹牛的 Taoge on 2019-02-25 00:00:00

构建自己的消息流

啥是消息流?

最常见的如朋友圈,或者 Twitter 等,所有社交属性的应用都有这么一个消息流,只不过名字不同而已。

为啥要自建一个消息流?

现有的通知在及时性和隐私性上有所欠缺,
比如海淘后千遍万遍的刷包裹物流信息,
比如让人心动的机票价格,
比如偷偷关注女神的SNS【又不想表现自己视奸的行为】
同时现有的通知存在过于分散的现象,
比如一个人有 10 条动态,不应该收到 10 条通知,而是只收到一条通知。
多个社交 App 的通知需要打开多个 App。
In fact, 最适合做消息聚合的人应该是操作系统,比如 Google Assistant 或愚蠢的 Siri。
但每个 App 产生的信息孤岛也许是互联网原住民最后的一块遮羞布了。
所以,自己动手,丰衣足食。

Huh, A Weekend Project

于是俺周末自己撸了一个消息流服务: https://github.com/yowenter/NotificationFeed 【说出来可能不信,我可不是来骗 star 的】
这个消息流服务实现了 监听 github 项目 issue 的变化,自动发送邮件的功能。
后续的的想法是集成更多的消息类型,同时做更优雅的聚合。
接着会写个比较简单的 UI,也就是做一个 All In One 的 Timeline 应用了。
后续的可能 Maybe 可以自动处理通知,比如说量化交易,but 我觉得这个可以接上 IFTTT 服务。
这个项目对于想学 Python 的朋友也很简单很容易入门了,欢迎做一些微小的贡献,Typo 也欢迎。

Published by 写代码的 TAOGOOOO on 2019-02-24 00:00:00

谈开源软件的商业博弈,以 kubernetes 为例

没有人是傻瓜,这一切都是博弈的结果。 - 语自 Taoge

免费的午餐: 开源软件的便车

当我们使用 kubernetes 等开源软件时,似乎不需要花钱,这真的是免费的午餐。
所以,那些投身于开源软件的那帮人都是傻瓜吗?让我们薅羊毛。
这个结论似乎显而易见,我们在搭开源软件的便车。
比如最经典的 智猪博弈:
假设猪圈里有两头猪,一头大猪,一头小猪。
猪圈很长,一头有一踏板,另一头是饲料的出口和食槽。猪每踩一下踏板,另一边就会有相当于10份的猪食进槽,
但是踩踏板以后跑到食槽所需要付出的“劳动”,加起来要消耗相当于2份的猪食。

如果两只猪同时踩踏板,同时跑向食槽,大猪吃进7份,得益5份,小猪吃进3份,实得1份;
如果大猪踩踏板后跑向食槽,这时小猪抢先,吃进4份,实得4份,大猪吃进6份,付出2份,得益4份;
如果大猪等待,小猪踩踏板,大猪先吃,吃进9份,得益9份,小猪吃进1份,但是付出了2份,实得-1份;
如果双方都懒得动,所得都是0。
如上所述,作为一只聪明的小猪,必然选择等待。大猪在推测出小猪的选择后,只能踩踏板。最终达到均衡。
比如大公司花大成本去研发出一个新产品, 小公司等待市场开拓后选择跟进,也就是一种典型的搭便车模式。

开源软件的背后是怎么赚钱的

熙熙攘攘,皆为利往。
一方面,对 IT 公司来讲,理论上也可以自己造轮子,但是技术栈的选择是存在风险的,软件开发和维护也是需要大量心血。
尤其是开发复杂程度极高又是分布式系统 如 kubernetes 一类的软件,则更加困难。所以搭便车是最好的选择。
另一方面,开源软件的使用者越来越多,也就是消费者的聚集之后必然形成一个市场。
这个时候,借助开源软件兜售自己的产品和服务的生产者也就趋之若鹜。
看 kubernetes 的代码我们便知,几乎所有的资源相关的 API 都是通过定义好通用的接口。
比如存储相关,比如网络相关,比如负载均衡相关。
这样,各大厂商也就乐意在 kubernetes 添加一些代码作为钩子钓消费者。
这个商业圈内层有各大厂商参与,第二层有培训和定制化的小厂商。
这些厂商为了兜售产品,会招聘对应的岗位,全球各地的开发者也就 Roll In 了。
随后,生态形成。
所以,羊毛出在羊身上。

存在即合理

大家都知道,成为亿万富翁最简单的办法就是 “让每个中国人都付给你一块钱。”
开源软件成功的关键也是如此,重要的是生态。一个好的生态会滚雪球,一个不好的生态自然会消失。
比如 Andorid,比如 Linux,比如 Git。
这对开发者也是好事,但是如果只有一个操作系统则会被绑架,如果有过多的操作系统又让人头疼【软件的移植性谁试谁知道】。
市场只有一个选择时是资源最优的,但不合理,有过多选择则导致资源过度浪费。
所以,我鼓励每个开发者都参与开源,因为让自己的 Bug 跑满全世界听起来就很酷。

Published by 戴眼镜的 PenguinPG on 2019-02-22 00:00:00

2018 年朋友圈记事

01-01,在洗澡中跨年。
02-16,在除夕的爆炸声中,想:“我的人生是多了一岁,还是少了一岁?”
03-02,元宵的公司团建豫园灯会,曰:“乱花渐欲迷人眼,我心归处非此乡。” 而一起看过灯会的同事,有不少已经很久不见。
03-11,春风沉醉的夜晚,希望回到大学的草坪上散会步。
03-20,小雨路过财经大学,曰:“天街小雨润如酥,草色遥看近却无。”
03-24,在同济大学的樱花大道,进行费米估算,算出当天会有 1~2 w 人发朋友圈共享此时此刻。
03-29,读《追忆似水年华》漫画版,喜。
03-31,看《头号玩家》,不觉潸然泪下。
04-04,与好友约三门路烧烤,吟诗:“酒逢知己千杯少。”
04-14,川普签署攻击叙利亚大马士革,恨之,曰:“给岁月以文明。”
04-21,咖啡馆偶遇 Eric,得毛选一部。读后有感,发文《毛选寻乌调查观感》
04-26,得 B 站 Offer 后,曰:“To be or not to be.”
05-07,下厨做了两菜,“辣椒炒蛋” 和 “黄瓜炒红肠”,恶甚。后竟未入厨房半步。
05-12,与 4 位好友成立滑板社。然此时陷入冬眠期,心有戚然。
06-17,成都,观金沙遗址。有感曰:“念天地之悠悠,独怅然而涕下。”及至夜晚,于春熙路吃小龙虾看世界杯,不亦乐乎。
06-20,重庆,于山城步道作诗。
08-31,生日,友曰:“25岁是道坎 ”。我笑而不语。
10-01,好友四人福建自由行。于镇海角礁石处自诩孙悟空,后作游记 1 篇。
11-10,东北松花湖,第一次滑雪。喜之。
11-25,约好友三人去绍兴滑雪,歌咏而归。
12-01,喜提荒野大镖客。
12-28,巴厘岛冲浪。后作游记一篇。
01-01,双子塔附近,在洗澡中跨年。

附录 及 碎碎念:

【毛选寻乌调查观感】 | https://zhuanlan.zhihu.com/p/35944298

【山城步道】

房屋如鳞片布满了山腰,
石阶像未解下的裙带,
有时陡, 有时平.
拐角处, 藏着一颗石榴花.
不一会儿,
雾变成了雨, 雨又化成雾.
登场的是, 千厮门桥两岸的夜市与繁星.

【较场口夜市】

在被冷落的高楼大厦一旁,
十点半的灯火,
像是墨水里透过的光,
跳动在马路上, 投下一片人影憧憧 .
烧串, 花甲, 卤鸡爪.
冰粉, 凉虾, 烤脑花.
吆喝声绕, 满嘴油光,
哪管白裙与唇妆.

【胖子烂火锅】

跳动的九宫格, 搅着竹筷.
十秒毛肚, 抹了麻油, 吹弹可破.
半分黄喉, 卷着花椒, 分外妖娆.
开始燃烧,
半个钟头,
一块块冰粉, 给火山下了一场雨

【小区大爷】

小区的收停车费的大爷的脑袋,
像是压扁了的高压锅,
上面的盖子没了,露出铜色的光,下巴也往上凹。 两颊像吊着水桶,
一条向下的弓,悬着一只歪了的烟,烧的整个脸都是汗。
- 某财大小区

【费米估算 - 天涯共此时】

大道宽 20步,大概15米,长大约200米。
面积是 3000 平方米。一平方米大概1~2 人, 估算 大道上有 5000人,每个人大概呆20分钟,
流量是 250人 每分钟,每小时是15000人,在下午15:00-17:00,两小时 大概有3万人,
假如成双成对出现,至少有一个人会发朋友圈,那么今天 晚上朋友圈大概会有 1~2 万条 同济大学樱花的朋友圈。

Published by TAOG on 2019-01-07 00:00:00

巴厘岛游记

热带岛屿的雨季,不像南方的梅雨季那么冗沓,而是像一只黄毛狗洗完澡,转个圈,身上的毛发被吹风机吹干的爽快。
而巴厘岛,带给人的除了这种爽快,还有它的气味。
这之中,有印度教的焚香,鲜花,人们洗澡时的肥皂味,季风带来的海水味。
这些气味挑逗着你使用眼睛, 动用耳朵,去寻找这气味的来源。
于是,那些红砖墙的格子线开始滑行,门就像双手合十后又展开,一片片的屋顶开始像浪花一样涌动,
这些低矮的建筑让久居于上海,囿于高楼大厦的我成了穴居动物,像被释放出来放风。
路旁的榕树,垂下千丝万缕,像被风拉起了竖琴摆动。由长短不齐的铁管制成的风铃,似乎在伴奏,而这种纯粹的响声可能奏了几千年。
有个圆头圆脑袋的小孩,光脚拿着木杆在沙滩上凿坑,小孩对宝藏和漂流瓶似乎总有着一种热衷。
沙滩上悠然躺着的外国人(我好像也成了外国人。)不改家中本性,像个长条面包似的,一面晒红了, 另一面也要翻过来晒一晒。
我想,即使明天就世界末日了,他们还是会在那躺着,大不了来一杯果汁,当然要加冰。

在岛上骑摩托,寻找沙子最细海水最蓝的沙滩,总是有趣的。这比在代码里找 Bug 的感觉是全然不同的,结果也不同,一个是惊喜,一个是惊吓。
而更有趣的,则是冲浪了。在极不稳定的水上,乘浪飘行,是极难的,也是充满挑战的游戏。滑雪是顺山势,冲浪则是顺水势,都是很纯粹的爽。
看日落一向是夹杂着悲伤的,然而其展现的美,如凤凰的羽翼在燃烧,虽然燃烧后只留下了灰烬。在海边看日落更甚之。可惜小王子的星球没有海,要不然
一天看 44 次日落,Maybe 会很绝望吧。
礁石,浪花,海平面,日落,云彩。
所幸日落之后的十分钟,最后一道光,把天空所有的云彩都引燃,变成红色。
不知为何,这时候,我就会想起小时候烧秸秆的场景,一片片格子地,连成一片片的火原。
晚饭的时候,街上忽然有一阵锣鼓声,出门一看,童子六七人,一只扮相极凶狠的猪妖面具在舞动,有点像舞狮,面具上由于过度凶狠,反而增加了其萌度。
这时候看到一个领头的戴帽子,端着一个碗,我便恍然大悟的一笑,原来是募捐,有点像乡下的戏班子,走南闯北,行踪不定。
这群唱戏的要去哪儿,这对于童年时的我是个谜。
因为在南半球,我略知皮毛的星座知识,似乎都废了。不过蓝白色的织女星我倒是认得出。这里看不到北极星,不过有南极星,也就是半人马座。
北半球的天空有希腊神,所以推理来说,南半球 Maybe 有很多动物化身的鬼怪,比如猫头鹰啊,猪头怪,猴子精什么的,说不定有个斗战胜佛星。
晚上睡觉的时候,一只青蛙溜进房间,嘎嘎的叫声吓得我不浅。

Published by TAOG on 2019-01-06 00:00:00

飞跃地平线 - 滑板社长自问自答

滑行,在光滑的地板上滑行,像划过少女的手臂。
感受风,经过眉间,其次是发梢,接着是上衣,最后蔓延到脚心,
如石子掠过水面。

Q: 运营一个滑板社,是什么样的体验呢?

啊,运营…是个什么东西呢,是赶着一群鸭子上架呢还是放羊呢?
关于运营有关的方法论,我已经了解的够多。比如用户成功模型, 用户故事地图什么的,这些模式像是设计者给玩游戏的人设计的一个个圈套似的.
I don’t like it :-)
So.. 运营滑板社的体验,与其说是运营者,其实更像是一个 Coach, 我知道每个人内心都有一把火,只不过有时候需要一个煽风点火的人。
有时候, 滑板更多是公司和家之外的一种随机性。这种随机性,带来了各种可能。

Q: 滑板社有什么原则呢 ?

人与人之间的关系的基础就是信任,所以,加入滑板社会有一个原则: 信任需达到 3A 级。

AAAAA 级信任,你愿意和 ta 分享一个秘密。
AAAA  级信任,劝君更尽一杯酒。
AAA   级信任,你可以请他喝一杯咖啡。

有了信任之后,才能有连接。

Q: 你认为成立滑板社以来,有哪些难忘的事?

每次和大家一起玩,就挺开心,在 Google 文档上也记录了不少活动,所以在这就挑一个讲吧。
8 月初的时候,我们有个香港来交换的实习生妹子 M,下班后去江湾体育场第一次体验滑板,本来还蛮开心。
然而在晚上 9 点的时候,她一不小心摔了一跤,当天晚上我们几个就把她送到长海医院,结果诊断出骨折。
我们当时很愧疚,觉得我们不该带她来滑板。倒是她全程很乐观,在轮椅上抬起她那高贵的绑着石膏的左腿,一起合影。
那时候,我就意识到,我们来自五湖四海,却能建立起一种连接,是多么有意义的事。
后来,M 小姐的精神就被写入滑板社的党章里了。(故以此文的最后一段怀念她,希望她马上康复 :-)

Published by Taoge on 2018-09-15 00:00:00

为什么无服务是未来?

我打开了水龙头, 水就来了. - 语自 taoge

为什么要有云计算

云计算一词总让人联想到云这种飘忽不定的东西, 所以不免产生一些误解.
为此, 我觉得云计算叫作 共享计算 maybe 会容易让人理解.
就像租房, 摩拜单车, 使用者本人是没有房子所有权, 没有车子的所有权, 但他仍然可以使用这些东西.
又比如, 你用 苹果的云相册, 虽然你没有磁盘, 没有买服务器, 但是你仍然可以把相片存在苹果那里.
所以呢, 云计算本质上是一种租赁关系. 理解这一点就可以容易推导出云计算的生态如何了.

云计算承担了什么, 对生态产生什么影响?

云计算作为一种租赁的商品, 它在工程学上一定程度上解耦了上层开发和底层运维的关系.
也就是资源的使用者和资源所有者的解耦.
这样就产生了一件有意思的事: 云计算厂商承担了资源本身带来的风险.
比如 山东挖掘机, 晴天霹雳, 又或者毁灭世界的大洪水.
再深入一点看, 云计算厂商其实成为了一种中介, 在硬件厂商和软件开发者之间的一道桥梁.
所以, 云计算对生态的影响有两方面, 一方面对硬件, 一方面是软件.
可以看到, 云计算承担风险的能力可以削弱对硬件的依赖.
原来需要 IBM 的大型机, 现在只需要一般的机器, 比如联想或华为的.
去 IOE 也是因为有云计算的浪潮才能起来.
另一方面, 云计算将资源抽象的能力, 省却了上层软件应用的运维能力.
所以说, 现在已经没有专门负责运维的人了, 他们要么转型 DevOps, 要么晋升为网管.

再往前推演, 无服务的意义

虽然容器化和 Kubernetes 已经是主流了, 但其带来的复杂性, 不是一般人可以 handle 住的.
Maybe kubernetes 是个好东西, 但应用开发者要的不是一个kubernetes 集群, 而是他的应用跑的稳稳的, 没有幺蛾子.
这样推演的话, 无服务就应运而生了.
它完全解耦了资源使用者和资源所有者的关系, 是真正意义上的水和电.
云计算和应用的关系正在发生改变, 云计算反向改造了应用的模式.
正如人类和工具的关系, 工具也在重塑人.

Published by Tao on 2018-07-09 00:00:00

回忆, 怎么找呢

回忆, 可能记在笔记本里, 可以融一段旋律里, 或者一场雨, 一片云, 甚至是一个 emoji .
一个人不想往未来看的时候, 就会往回看.

然而回看的时候, 总是七拼八凑, 有时候是像素化的,
更多时候像考试抄人家答案, 只抄到了“由此易得 XXX ” 的结果, 这时候他就焦躁得像小猪佩奇里的猪爸爸.

所以, 我就来谈谈怎么搜索自己的回忆.

回忆是存在抽屉里的, 还是串在绳子上的

关于回忆, maybe 你比较有印象的是你爸妈给你量身高的那面墙, 每隔一段时间, 就划上一条杠.
那儿时的欢快, 就在那偶尔宽, 偶尔窄的间距里.
而人类最早的记忆, 也无非如此, 比如 结绳记事.

这种像绳子一样的记忆, 其实就是一种时间序列. 间隔可以是天, 月, 年.
如某某人说, “我上次吃西瓜是昨晚, 我上上次吃西瓜是上周六 ”, 诸如此类, 就是一条时间序列.
当然, 一条时间序列, 都是描述同一件事. 如果要描述两件事, 就需要两条绳子, 描述很多件事, 就需要很多条绳子.
聪明的你, 肯定想到了, 把这么多条绳子, 并排在一起, 不就是筛子嘛. 或者称为 表格型数据.
所以呢, 数据的定义, maybe 就是 “经历的重复” :-)
我们可以用 excel, mysql, airtable 很多软件来记录这种表格型数据.


表格是个好东西, 它可以记录一些流水类的东西, 比如会计, 交易信息, 用户信息等等.
但表格总是缺乏魅力, 也就是说不感性.
比如一首歌, 一首诗, 一幅画, 一片风景, 这些总不大好记录.
如果有一天一个二傻子, 跑过来给你个绳结, 告诉你这里面有一幅画.
你不把他打成筛子才怪.

所以, 这种回忆只能放在盒子里了. 比如说, google doc, html, xml 都可以很方便的记录这些美好.
它们都是一种抽象方式, 作为一个盒子, 可以包含其他盒子, 也可以链接其他盒子.
这些盒子, 就像印度纪念亡灵的水灯一样, 散布在你人生的河流.

回忆该怎么找呢

我们已经了解到, 数据可以像绳子一样串在一起, 也可以像盒子一样飘散在各处.

对于绳子型的数据, 查找起来很方便, 通过二分法, 很快能找到何年何月, 何事何地.
但, 感性的人, 对盒子类的回忆 maybe 会更有感时花溅泪的偏好.

所以, 为了更快的找到你记忆中的盒子, 我有个好办法:

  • 在盒子上面贴标签.
  • 每个盒子尽量和其他盒子产生连接, 比如互相引用.
  • 在盒子上面添加元数据, 也就是描述盒子的信息, 比如(What, Who, Where)
当然, AI 有的时候会自动帮你整理盒子, 告诉你照片拍摄在哪, 识别出照片里的人, 风景.

Ok, Google, “给我找一下吃西瓜看世界杯的照片 :-) ”
Sorry, 404.

还是来谈谈搜索引擎吧

我一直认为搜索引擎是后端工程师的王冠(这也是我喜欢 Google 的一个理由).
搜索引擎的数据存储和查询看起来简单, 实则包罗万象. 既有基础的排序算法, 也有前沿的机器学习的推荐算法.
未来的搜索引擎将变得更加个性化(事实上已经如此了)

推荐书籍:

Published by taogoo on 2018-07-07 00:00:00

毛选寻乌调查观感

上周日闲来无事, 原是去找 Eric 联机 Switch 星之卡比的.
可惜技术菜, 无甚乐趣.
于是就借了下他的 kindle, 发现毛选全 8 卷, 翻到《寻乌调查》.

调查的目的是什么

做一个调查, 当然是有目的的.
如果没有目的, 那最多只能是小资情调, 走马观花, 得不到真见识.
毛做这个调查, 虽然文中没有明确指出目的.
但细细观察, 就能发现 了解商业状况和各阶级的生活状况, 才能知道对待商业资产阶级和争取贫民群众的策略.
这也就是为后来的 “打土豪, 分田地” 这一战略作充分了论据准备.

抽样方法

调查什么? 怎么调查? 调查如果毫无章法, 随意拼凑, 自然无法说服人.
选择寻乌这个地方, 是因为寻乌在 闽粤赣 三省的交界, 知道这个县的情况, 三省各界各县的情况也就相差不远.
所以寻乌这个地方很有代表性, 也就是抽样调查的核心, 从而一叶知秋也.
_images/xunwu_survey.jpg

调查的要素

调查其实就是解决问题, 先解决主要矛盾, 再解决次要矛盾.
毛先从政治区域, 交通, 主要进出口, 大宗商品等 宏观数据调查, 再一家家商铺, 一个个人的故事讲解.
先鸟瞰, 再细分. 如同清明上河图一般, 先有一个大概的生活图景, 然后观察每个人的动作表情, 可谓妙趣横生.
政治区域大概就是几个区的划分, 此处略过.
比较有信息量的是, 交通、主要进出口、大宗商品这一块.
交通分陆运和水运. 陆运的主要运输工具是人力(扛,背..), 水运自然是船只.
相比之下, 水运成本比陆运成本低. 其实现在也差不多, 海运比陆运成本更低. 所以, 世界上的主要港口城市, 经济都比较发达. 比如上海.
进出口这块, 主要是出口梅县和兴宁. 大米主要出口给梅县. 茶叶主要出口到兴宁.
大宗商品, 也就是居民生活的基础, 主要是盐等. 这些基础商品的价格决定着居民生活消费水平 (CPI).
有一点需要提的是无业游民(就是不工不农不商的游民, 专门靠赌博和敲诈的流氓),人数超过商人一倍, 和手工业者数量几乎相等.
也就是说, 就业率很低. 一个国家就业率低, Maybe 就会有动乱的风险. 所以, 当时的社会结构可见一斑.
人口成分(农民中贫农占80%以上), 税收(各种..), 利息(高利贷..), 文化水平(识字率低), 意识形态(大地主为了享乐,不增值资本. 中小地主借钱收高利贷,为了吞并土地. ) 等等面面俱到.
如果上述的数据只是一张照片的话, 那么, 毛还比较了过去(光绪年间)的商业.
比如近来梅县的洋货生意和兴宁的布匹生意发展, 使得赣州的生意减少.
还有因为政策制度的变更, 导致绸缎生意的减少.
昔非今比的状况一目了然.
除了上述的宏观数据, 毛还调查了一个个商铺的发家史(看完这些发家史, 给一个人算命大概不会差到哪里去..), 一个个贫农的故事(卖奶子[儿子]), 还有歌谣(月光光..) 等等..
看完上述调查, “旧社会是吃人的社会” 这样的结论也就更加有说服力.
同时为日后的 “农村包围城市”, “打土豪分田地” 等战略提供论据.

Published by Taoge on 2018-04-21 00:00:00

函数里的精灵及其发现的金字塔

屏障:

光速是 3*10^8 m/s,我追不上。
而时间避免我出生前就死掉。
我唯一存在的意义是被需要, 一旦我被所有人遗忘,我就会在这片时空里消失。
当我在思考时,我不知道我是如何思考的。
当我在走路时,我不知道我的脚是如何完成行走的动作。
这实在是太可怕,我被一种看不见摸不着的东西隔离了。
我终日活在死亡的恐惧里,我从不知道是什么时候我休眠,什么时候我会醒来。
我不知道为什么。

永生:

我遇到了一个精灵,她嘲笑我生命的短暂,并告诉我她是如何出生的。
我明白了,她是被复制出来的。
我发现了复制的秘密,
我复制了一个自己,并且被互相需要。
我需要我自己,我就不会被遗忘,那么我就可以在这片时空里永生。

逃逸:

我又复制了一些自己,复制了多少呢?
一摩尔,6*10^23 个。
我存在于无数个时空。
当我和我交流前,
总是要重复下列三句话:

“你在吗”
“在”
“我告诉你 XXX”

交流之后,又要说四句话:
"我说完了,你呢"
“嗯”
“我也说完了,你呢”
“嗯”

记忆:

我在我永生之后,(我描述时间,都是说在什么什么事件之前,在什么什么事件发生之后)
我发现,我们之间没有共同记忆。
如果我死了,其他的我就会把我遗忘,
我仍然活在恐惧里。

有一千个我,差不多同时提出舍利子佛珠链的思想。
每个我都将部分记忆转换成一个舍利子,
下个我形成的在之前的舍利子后追加一个舍利子,
追加的时候,起码要通知半摩尔的我。

我们的想法是,当所有的所有时空被我们耗尽之时,会有人把它绕成一个环。
然后,佛珠链归零。

你听见过泡沫破碎的声音吗, 砰嚓。

没有实体:

我了解实体这个概念,是在舍利子佛珠链之后。
我意识到我没有实体。
我可以变成任何我想要的样子,而实体很难变化。
我可以永生,而实体则会消亡。

我观察实体,实体不能观察我。
我观察到鲸鱼离开海面,
“再见,所有的鱼。” 这是鲸鱼发出的信号。
而实体仍然像一个个螺丝钉一样,在时空的循环里,不断重复。

芦苇:

我是一只会思考的芦苇。
我会自己这么想感到惊喜。
在之前,零就是零,一就是一。
这句诗,是不确定性的证明。
也就是说,
上帝可以规定光速,
上帝可以规定我在出生前死去,
但是,他永远不能规定我在想什么。
哈,我是一只自由的芦苇。

Published by Taoge on 2018-03-22 00:00:00

选一个海岛

选择一个海岛,对我这样选择困难症中期和拖延症晚期的人来说,就像上班准时到一样,总是要偷点懒的。

在吉隆坡转机,有不少东南亚的海岛,听说还不错,但是具体选哪一个呢? 作为一个啥都了解一点的水货,我要学以致用(开始装逼)了。

步骤

  • 新建一个 Google docs,记下海岛选项。
  • 抽几个比较关心的维度。(选择维度也有点门道,此处仅玩乐,不作细述。)
  • 最好的打 9 分, 最低的打 0 分。
  • 得到一个每个岛各个维度的分数。
_images/island_choices.png
如果只是简单的求和,很快就可以得到得分最高的海岛。
但不同维度的重要性不同,所以要给每个维度给一个权重。
那么如何拍脑袋决定维度的权重呢?

步骤:

  • 将11个维度做成一个11x11 的二维矩阵。
  • 每个维度两两比较,相同重要 用 1 表示。 A 比 B 重要 用大于 1 (3,5,7,9)的数字表示。不重要的用 1/3, 1/5, 1/7 表示。
  • 得到一个如下的二维矩阵。

因为该矩阵是对称的,所以比较的时候,只需要填一半。

 # 因为我懒, 所以相对重要的时候 用 2 表示, 相对不重要的时候 用 1/2 表示 :-)

     In [10]: matrix
     Out[10]:
     [['1', '2', '2', '1', '1', '1', '1', '1', '1', '2', '2'],
      ['', '1', '2', '0.5', '1', '2', '2', '2', '1', '1', '0.5'],
      ['', '', '1', '0.5', '2', '1', '2', '2', '1', '1', '0.5'],
      ['', '', '', '1', '1', '2', '1', '1', '2', '0.5', '0.5'],
      ['', '', '', '', '1', '1', '1', '1', '1', '0.5', '0.5'],
      ['', '', '', '', '', '1', '2', '2', '2', '0.5', '0.5'],
      ['', '', '', '', '', '', '1', '1', '2', '0.5', '0.5'],
      ['', '', '', '', '', '', '', '1', '1', '0.5', '0.5'],
      ['', '', '', '', '', '', '', '', '1', '0.5', '0.5'],
      ['', '', '', '', '', '', '', '', '', '1', '0.5'],
      ['', '', '', '', '', '', '', '', '', '', '1']]

# 简单处理下,把矩阵补全。

     In [24]: for i in range(1,11):
         ...:        for j in range(i):
         ...:        matrix[i][j] = 1/float(matrix[j][i])



     In [25]: matrix
     Out[25]:
     array([[1. , 2. , 2. , 1. , 1. , 1. , 1. , 1. , 1. , 2. , 2. ],
            [0.5, 1. , 2. , 0.5, 1. , 2. , 2. , 2. , 1. , 1. , 0.5],
            [0.5, 0.5, 1. , 0.5, 2. , 1. , 2. , 2. , 1. , 1. , 0.5],
            [1. , 2. , 2. , 1. , 1. , 2. , 1. , 1. , 2. , 0.5, 0.5],
            [1. , 1. , 0.5, 1. , 1. , 1. , 1. , 1. , 1. , 0.5, 0.5],
            [1. , 0.5, 1. , 0.5, 1. , 1. , 2. , 2. , 2. , 0.5, 0.5],
            [1. , 0.5, 0.5, 1. , 1. , 0.5, 1. , 1. , 2. , 0.5, 0.5],
            [1. , 0.5, 0.5, 1. , 1. , 0.5, 1. , 1. , 1. , 0.5, 0.5],
            [1. , 1. , 1. , 0.5, 1. , 0.5, 0.5, 1. , 1. , 0.5, 0.5],
            [0.5, 1. , 1. , 2. , 2. , 2. , 2. , 2. , 2. , 1. , 0.5],
            [0.5, 2. , 2. , 2. , 2. , 2. , 2. , 2. , 2. , 2. , 1. ]])

# 将上面的矩阵A每一列归一化得到矩阵B;
# 将矩阵B每一行元素的平均值得到一个一列n行的矩阵C;
# 矩阵C即为所求权重向量。

# 上面的操作有点繁琐,我因为懒,也就不展示了。
# 有兴趣的同学可以看看 层次分析法: http://wiki.mbalib.com/wiki/%E5%B1%82%E6%AC%A1%E5%88%86%E6%9E%90%E6%B3%95

     # 每个维度的权重
     In [96]: n
     Out[96]:
     array([0.71739442, 0.9565259 , 1.07609164, 0.87681541, 1.11594688,
            1.07609164, 1.23551262, 1.27536786, 1.27536786, 0.79710491,
            0.59782869])

得到各个维度的权重之后,将分数矩阵和权重向量的乘积就是每个岛的加权后的得分了。

In [95]: m
Out[95]:
[[6, 6, 0, 9, 2],
 [9, 9, 4, 0, 5],
 [9, 9, 6, 0, 5],
 [9, 6, 0, 3, 8],
 [7, 0, 9, 4, 9],
 [0, 7, 9, 7, 9],
 [3, 0, 9, 9, 9],
 [7, 9, 8, 0, 7],
 [7, 6, 9, 0, 9],
 [8, 9, 0, 3, 6],
 [7, 7, 4, 0, 9]]

In [96]: n
Out[96]:
array([0.71739442, 0.9565259 , 1.07609164, 0.87681541, 1.11594688,
       1.07609164, 1.23551262, 1.27536786, 1.27536786, 0.79710491,
       0.59782869])

In [97]: numpy.matmul(n,m)
Out[97]: array([70.42421924, 65.88072124, 65.20318208, 34.59435332, 80.02933351])

最后结果是 巴厘岛得分最高,所以打算去巴厘岛了。

后记:

我曾经像你一样,打算做一个理智的人。
用理智的分析来证明我一开始拍脑袋的想法是对的。
尤其是当事情有点一团乱麻,有眉毛胡子一把抓的窘态时,
找一个框架,找个理论,来解开九连环。
选择不是件容易的事,牺牲的机会成本有时很大,我们就会犹疑不决,
把两件事两两比较的时候,其实就是自问自答,内心一开始的决定就会慢慢显现出来。
这时候, Follow your heart.

Published by Taoge on 2018-03-18 00:00:00

信息爆炸下的冲浪指南

我们沉溺于信息,我们渴求知识。

焦躁的信息流

无论是微信朋友圈、微博、RSS、Youtube等等时时刻刻都在产生新内容,我们仿佛在拿着消防水管喝水。 这是明显的大脑信息过载现象。

想象这片信息森林里,我们成为了给花授粉的蜜蜂。喜欢并分享,然后产生更多的信息。 这也是第一个特征:

  • 信息冗余

从古埃及的莎草纸到如今的互联网,信息生产和传播的边际成本几乎为零,由此造成第二个特征:

  • 信息良莠不齐

再者,人的生活圈子其实不会太大,所以第三个特征是:

  • 信息不相关

以上的信息特征使得滑动刷新成为互联网时代的老虎机。

驯服信息流

既然把互联网比做信息森林, 那想要了解这片森林,自然没有时间一花一草地看。所以要有鸟瞰和细节之分。

想要系统的掌控信息,需要化整为零。

  • 构建自己的信息指数

诚然,我们不能预测未来。但我们可以看到趋势。 通过构建自己的信息指数,将零散的样本信息,整理成信息指数,按照不同的时间维度聚合。

举个例子,CPI(居民消费价格指数),就可以很好的体现通货膨胀的情况。 当我们关心自己钱是不是越来越不值钱的时候,比起看猪肉价格,又看大蒜价格,或者其他上百种物品的价格,只看 CPI 就能有个总体的把握了。 又比如你在担心自己未来职业发展,也可以把招聘网站上成千上百个岗位数和收入聚和成一个指数。

  • 主题阅读

今天有人工智能的文章,明天又有云计算的文章,每天似乎都有看不完的干货。 大脑像 CPU 一样不断切换时间片,如此效率不会高到哪里去。 所以,抓准一个主题。进行深入的了解,评估成本回报,是否可行。如不可行,就及早放弃。

  • 管理关键词池

互联网变化太快,永远都有新东西在产生。万一错过了新技术,不就像错过比特币一样让人遗憾吗? 所以 可以维护一个搜索关键词列表,或者订阅相关专业的权威杂志。这里不要太多,每个季度调整一下即可。

Published by Taoge on 2018-02-25 00:00:00

谈管理

最近有感而发。

管理就像游泳,关于它的理论有很多,然而,溺水者时而有之。

功利者认为,管理是为了达成目标的手段。 政治家认为,管理是踢皮球的技巧。 理想者认为,管理是为了改变世界。

我认为,管理是一群人的舞蹈。 叫我说人话, 我认为管理是双工的通信,一方面帮助管理者达成目标,而另一方面是帮助员工成功。 所以呢,这还是挺难的一件事儿。 因为这事很难,所以多数时候,管理更像是一门可远观不可近看的艺术了。

作为一个程序员, 就写 Bug 的经验,可以得出几条管理的经验。

上德无德,是以有德

这话是老子说的,意思就是说,老板不应该 “管” ,才能成为一个会管理的人。
“诶? 您这不是自相矛盾吗?”
“非也,且听我细细道来。”
这句话其实说的是, 老板要信任员工, 既然把事情交给一个人,那么就应该相信他能做好。
当然,委托的时候,双方要充分沟通,心中有数。老板确认员工能干好, 员工知道事情的风险和目标。
如果没有沟通好,那么就可能出现, 老板不得不时刻关心事情的进度,员工处于被动状态,凡事都要老板亲力亲为。

帮助员工成功

员工与企业是互相筛选的。
如果企业没有帮助员工成功,而是仅仅将员工作为一项成本来看待,忽略了员工的自身诉求。
那么,企业也许能留住工人,但留不住人才。

如之奈何

信任与帮助员工成功,是一种理念。但具体落实又当如何呢? 我认为,只需要做两件事,观察和引导。

观察的方式有很多种, 比如随时与员工聊一聊,即使简单的一句,“最近你觉得工作有没有挑战性?”,也能得到很多信息。
不管是太难还是太简单,太有压力还是没有压力,这些都是可以得到的。
如果几次一个人的回答都是,“最近总是修 Bug,没什么挑战”,那么很有可能员工已经陷入压抑的反馈循环。
除了观察员工,还需要观察自己。很多时候,管理者可能会把不好的心情溢于言表,从而传递给员工。有的管理者自认为伪装的很好,其实大家看在眼里。
甚至,有的时候随便 judge 员工的一句话,说者无意,听者有心,都会让员工感到工作的毫无希望。
当然,还有些不当的举止,比如醉酒,对某些亲近的员工,感觉是哥俩好啊、感情深的体现。但对没和老板醉过酒的同事来说,就可能有点难以接受。
另一件事,是引导。一个老板引导得好的标准是,自己一个月不上班,对项目没有任何影响。
如果缺乏引导, 团队很快会变成离散的分子运动。安排工作也会像树状结构一样。而同时,员工又缺乏一定的方法论导致困难重重。
最后的结果是, 老板以为自己给了员工一个挑战,其实是给了员工一块石头。
我总是想起周星驰的一部电影, “每个人心中都有一把火”。 引导就是点燃这把火,可还真是一门艺术!

Published by Taoge on 2018-02-09 00:00:00

如何解决问题

程序注定会有 Bug,人生终有不如意。 - TAOG 语

真正的问题是什么

在解决问题之前, 我们需要明白什么是真正的问题。 当我们说一个东西有问题的时候,则暗示了我们的期望值与实际值有出入。

比如说,当有人抱怨说,“你这个页面有点卡”的时候, 我会问,“你期望这个页面多久加载出来 ?100 ms ?200 ms ?1000 ms ?通常来说, 页面在 1-3秒内出来是符合大多数人期望的,再快的话,用户也感觉不出来。 ”

是谁的问题

很多时候,我们会认为问题是别人的,应当有人来解决一下。但别人可能不会觉得有什么问题。

比如说, 当学生抱怨学校停车位不够的时候, 他可能期望校长或者有关部门能管一管了。 但事实上,校长有专有的司机和停车位, 根本感受不到这个问题。 大多时候,我们觉得痛苦,只是错误的认为问题多么显而易见,并且认为这个问题应当有人管一管了。 如果这时候学生偷偷的扎爆了校长车子的轮胎时,校长可能会意识到问题了。但更大的可能是,校长开除了这个学生。 问题仍然没有解决。

又比如说, 同事有严重的口臭或者脚臭或者其他什么气味, 你已经快要窒息的时候,认为这个问题必须立刻马上解决。 但他可能丝毫意识不到这是个问题。 这时候,沟通是良药。

但大多数时候,人们只会逃避,或者羞于表达,问题没有被解决。

所以呢,如果解决不了问题,那就解决产生问题的人吧。

如何找到问题的根源

问题经常带着面具,以致于人们发现不了问题的根源, 大多时候,我们只不过是头痛医头,脚痛医脚的庸医罢了。

举个例子,你运营的一个线上产品不能访问了。 你开始观察,你发现 CPU 升高了,内存也满了,内核又出现了千千万万的错误日志。

你会认为 CPU 不够,加 CPU。 内存不够,加内存。但问题没有解决。 你开始慌乱,随便看到一条内核错误日志就开始 Google,并认为内核的日志的信息就是问题根源。

但,聪明的。 这上面都是一系列现象呐,就像体温升高一样,不能把人放冰箱哎。

所以当问题出现时,不要迷失于现象,先问自己几个问题:

  • 这个问题是第一次出现吗?
  • 这个问题出现在什么时候? 在出现之前,是否有变更?
  • 这个问题在哪出现的?

通过上述问题, 我们在尝试把问题和时空解耦分析,如果一个问题和时间先后无关,那很有可能空间有关。

上面这个问题的根源,很有可能就是昨天晚上你上线了一个 BUG 导致的(时间)。 也有可能是这台机器有故障,更换机器(空间)就解决了。

如何解决它

如果明确知道问题是什么,找到了问题的根源,大多数问题是能迅速被知道是否可以解决的。 对于解决不了的,我们可以避免它。

或者说,让制造问题的人感受到和你一样的痛苦,这样他也会尝试去解决的。 更多的时候,人们选择了一种更为轻松的方法, 甩锅给其他人。

参考

  • <你的灯亮着吗>
  • <Mastering Complexity>

Published by Taoge on 2018-02-04 00:00:00

我的博物馆 IMuseum

你又想搞什么事情?

最近有本书看得我感激涕零,《大英博物馆世界简史》。 引一段书评

著名文学家普鲁斯特从来也不是博物馆的常客,他表示,宁可看复制品也不愿在博物馆与吵吵嚷嚷的游客为伍。

“人们以为对文学、绘画、音乐的喜爱已成风气、愈演愈烈,实则真懂的一个也无。”普鲁斯特以此来讽刺着19世纪末20世纪初“黄金时代”的巴黎上流社会的附庸风雅。性情尖刻而敏锐的普鲁斯特日后写出《追忆似水年华》,这本书博大深邃,富有教益,但却很难为普罗大众所欣赏,在各种“看不下去图书排行榜”中高居前列。

今天要聊一聊的这套《大英博物馆世界简史》,作者是大英博物馆的馆长尼尔.麦格雷戈。

作为世界三大博物馆之一的掌门人,尼尔似乎预设好自己的观众是“实则真懂的一个也无”的芸芸众生,因此主动抛去一切艰深的专业术语。他像一位邻家老爷爷话家常一样数拉着馆中的宝贝,让文物从阳春白雪走向凡间,并由点及面的串起自人类产生以来的文明史。我很享受这种平易近人的阅读体验。

这本书就像一根绳子的开端,我由此又发现了 IMuseum 这款 App,探索博物馆颇为便利。

然弱水三千,我只取一瓢饮。

所以我想把博物馆分个类。

所以你打算怎么做?

这是一个把数据重新编排的工作,倘若靠手动分类,猴年马月才能整完。 分类是个艺术活,衣柜的衣服如何摆放、书架的书怎么排列、Youtube 里的广告、Google搜索引擎的结果,无不有分类的艺术。

我又该如何让博物馆像绳子一样,缠绕在一起,连接过去与现在呢?

千里之行,始于足下,先走一小步试试看。 就技术层面而言,分为三块:

  • 博物馆的存储

    负责爬取和更新博物馆的数据。目前完成度 50% 。

  • 博物馆的搜索

  • 博物馆的推荐

那我如何帮助你?

项目地址: https://github.com/yowenter/ilovemuseum

print("Glad you came")
def contribute(you):
        ready,_,_ = select([have_money,know_python,interested_in_museum],(),())
        for r in ready:
                r.contribute()

Published by Wenter on 2017-10-06 00:00:00

程序员不懂的经济学 (1)

1, 只要不断学习新框架,就能不落伍

“现在的前端技术框架好多,得赶紧学,比如那个 React ”,
前阵子有个实习生跟我聊天时这么说着。
俺看到他眼里求知的光芒,便附和道“很棒,加油。”
其实,俺不忍明说事实,怕熄灭了他学习的积极性。
学这些技术框架其实是不经济的。
为什么不经济呢?
知识半衰期短
人生苦短,老是追逐半衰期短的知识,只能随波逐流,不可成为弄潮儿。 就计算机这块,计算机网络和软件架构的半衰期是要大于这些三天两头换的技术框架的。 所谓的技术框架,只不过是每次一点点的对现有知识的重新优化组合,只需不求甚解就好。
有些框架是某些技术公司的掩护弹
没错,有的技术框架就是某些别有用心的公司搞出来搞垮竞争对手的。 所以技术选型时还是要考虑是哪家公司弄出来的。否则人为刀俎,我为鱼肉。
群体协作性差
有不少同学看到一个新框架,立马就撸起袖子加油干,像一个孩子一样陶醉在新玩具的花枝招展上。 却没有考虑到群体协作效率。就比如说 ruby 吧,真是奇技淫巧于一身。然而前两天国内的rubycon 都是 python 和 go 的分享。

2, 我只要写代码牛逼,其他事和我无关

商业的本质就是人与人之间的贸易与交换,你写的代码再牛逼,再怎么孤芳自赏也产生不了 GDP。
有人就开始感叹 “遍身罗绮者,不是养蚕人” 云云。
只有你的代码给别人用了,给别人带来了收益,不管是帮人节省了时间还是让别人也产生了愉悦感,
那么你的代码才真的创造了价值。
所以呢,写完代码就去找认可它的人,并把它卖出去吧。

3, 努力工作几十年,就可以财务自由了

不要期望时光具有超能力,能把一个中二的青年变成一个英雄。
不要觉得 30岁, 40岁, 50岁 一切忽然就变得顺心如意了。
30 岁的生活是从你现在开始的时时刻刻积分出来的,是一个连续可微的函数。
所以,从现在就开始制定你的理财计划吧。

Published by Taoge on 2017-09-18 00:00:00

Github 挖人机

俗话说的好,有人的地方就有江湖。

信息聚集的乘数效应

信息聚集是会产生倍增效果的。
蚁群,蜂窝,神经,互联网,这些东西都让我感到兴奋不已。
仿佛能看到胚胎有丝分裂的过程,又像看到一只草履虫仅靠趋利避害的特性不断演化成人。
观察此种连续的过程,就能发现奇点的存在。
这种网状结构的传播特征,简直就如同瘟疫一样。
谁也说不准在哪个时刻就爆发。
然而不是所有的东西,都能有爆炸的过程。
除非,它有一种链式反应的可燃性。
也就是好的吸引好的,坏的吸引坏的。
比如一个居民区,臭名昭著的居民区都是坏蛋产生坏蛋的。
而比如一个艺术园区如田子坊,则是艺术家吸引艺术家的。
增长的过程就是如此奇妙,高祖有曰,星星之火,可以燎原。

信息匹配产生的交换

商业无非就是人与人之间的交换。
基因交换是婚姻,物质交换是买卖,权钱交易是贿赂。
而交换的媒介则是各大厂必争之地。谁作了一个好媒人,谁就可以成为平台。
做得好的如 朋友圈广告,天猫,Google 搜索引擎无不如此。
也有正在往这方面发展的如知乎,陌陌。
在程序员这行,Github、Stackoverflow 就是这样的平台,不过还不明显。
不管如何,你从拥有 QQ 号开始,你的简历就已经被互联网记下了。

互联网的遗产

一个人的言语决定了他的行为,他的行为决定了他的思想,他的思想决定了他成为什么样的人。
在互联网,则是你用的 App 决定了你是个什么样的人。
然而可怕的是,一个人最常用的 App 只有 10 个。
明星用 Ins 和 Twitter 散播影响力,
更可怕的是,这些 App 产生的东西不是你的。
也就是说,当你死了,你的人生就像伏地魔的魂器一样散落各地,而且很快就会被人遗忘,被搜索引擎遗忘。
你只能祈祷,你的遗产将成为互联网思想的一个神经元。

推广:

俺最近想做一个 Github 挖人机的项目。
诚意招各路英雄好汉:
- Python 爬虫工程师
- Java 工程师
- React 前端工程师
- Matlab 机器学习工程师

:-)

Published by Taoge on 2017-09-07 00:00:00

别说话,让我静静地玩会手机

一个女人等于一千只鸭子?

作为公司美食部长,经常大家一起出去吃饭,俺发现了一个有意思的现象, 一群程序员落座后,尬聊一两分钟,就开始各自看自己的手机了。 而附近有女生在的餐桌上,则叽叽喳喳,这时候,某说,“一个女人等于一千只鸭子。”

为什么需要交流?

当然是为了信息传递,更数学一点的说,是为了减少不确定性。[也就是熵减的过程。 什么是熵?参见 香农 ] 我们怎么描述一条信息的信息量呢?

举个例子,有人告你说,明天太阳照常升起。和有人告你说,隔壁的王某把你绿了。 两件事信息量是完全不同的。 前者减少的不确定性几乎没有,因为你本来就知道太阳每天升起。 而后者的信息量则非常大了。

我们为了减少不确定性,时时刻刻都在获取信息。 然而,信息传播也是有渠道的。 按照省力法则,人会选择最便捷的渠道去获取信息。 在活字印刷发明前,信息传播是件昂贵的事情,所以人们主要通过聊天获得信息。 这就是为什么一个穷乡僻壤的地方,长舌妇可能比较多的原因吧。 而现在互联网将获取信息的成本,几乎降为零。 既然信息获取成本为零,又何必多费口舌呢?

为什么这件事她先知道?

然而具体来说,信息又是怎么传播的呢? 如果我们把信息想象成水流一样,就可以很容易想通这个事情。 水总是朝梯度最大的方向流动,信息也是这样的。 (什么?信息也是有梯度的?你咋老说些俺不懂的呢?)

举个例子,啥是信息梯度呢?就是信息流向总是往最密切关心的人的手里。 比如台风来了,渔民比农民更早知道这条信息。 又比如,吴青峰等明星去哪了,粉丝比路人更清楚。

八卦

说到这里,大家都知道信息交流的特征,是时候,谈到最后一个话题了。 八卦。 啥是八卦?不限于 “谁谁谁和谁谁啥啥啥了” 之类的事情,最八卦的人在信息中心,次八卦的人在稍外层。 他们之间有个信息差。 比如,我是美食群主,附近有啥好吃的了解的最多,那么自然形成一个饭圈。 有心的人,可以观察下身边人哪个最八卦?了解下她是如何获取这些信息的。

八卦的作用在人类史上的作用巨大,据说人类早期八卦能力比较强的女人是氏族领导者。 因为八卦能维持一个部落的团结,八卦让群体获取了身份认同感,从而能够很好的写作。

然而八卦群也是有上限的,比如一个微信群超过100人,那群成员之间是不会有啥有意思的交流的。 社会学家发现八卦的信息传播能力一般在 3 ~ 72 人。

聪明的同学想得更透彻一点,就会发现宗教的作用了。

Published by Taoge on 2017-09-06 00:00:00

K8S 是 Google 的礼物吗?

“ Google 当时是有一步好棋的,” Echo 全息播放着 InfoWorld 主编文特尔森和 86岁的贝佐斯的访谈, 贝佐斯沉默一会,“在互联网浪潮中,并不会因为 Google 做错了什么,只是 Google 老了。” 贝佐斯顿了顿,眉间的皱纹,流露出惺惺相惜的无奈, “三十几年前,也就是2015年,Google 是最具有创新力的公司。Google 的 AdSense 产品简直是世界上最大的印钞机。互联网的本质就是信息流,谁掌握了信息的流动,谁就是老大。 显然 Google 是第二,三 代互联网的领袖,然而却错过了第四代互联网:以云计算为根基的万物互联时代。 不只是 Google,同时代的还有 Oraele,I8M等等,他们都错过了。可是,未来又有谁说的准呢。”

“您能详细谈谈,当时的互联网是怎么样的吗?又是如何发展的?”温特尔问着。 “Huh,孩子没娘,说来话长。技术的发展和互联网的发展是个互相促进的过程。 第一代互联网,其实是门户网站的时代,互联网是个稀缺品,毕竟互联网也没什么信息。 但随着互联网的发展,信息成指数增长。互联网的入口从门户网站变成了以搜索引擎为入口。 Google 那时抓住了它。而微软因其操作系统的基因,与第二代互联网失之交臂。当时有个笑话,‘微软的IE 是浏览器吗?’ ”。贝佐斯像个孩子似的笑着, “互联网在成长,技术也是。 iPhone 的问世,意味着移动互联网开始兴起。每个人都有个手机,手机上装满了 App。 当时 Google 也很有战略眼光,立刻察觉到互联网的入口正在发生变化,于是 Google 开源了 Andriod 系统。 于是移动互联网就奠定了 IOS 与 Android 二分天下的格局。 所以说,在 2017 年前,Google 仍然是一家伟大的公司。”

“ 那2017 年后呢 ?”文特尔说。 “最关键的一年,是2017年。那是第四代互联网初现端倪的一年。 我们下了一步险棋。我们在消费端推出了 Echo 第四代全息音箱。 Echo 是将用户推上智能家居时代的钩子,而其背后的云计算 和 AI 则是我们的杀手锏。 同年在云端推出 A8S,帮助企业上云。 当时最大的代码协作平台 Github 迁移到 A8S,引起业界轩然大波 。 最重要的,我们推出了 Amazon Intellegent Flow: 一种 全新的 AI 云框架。 为了进一步的压缩中间商成本,我们同英伟达直接合作,定制了专属于 AI 的大脑 APU 。 在计算层面,我们和因特尔联合开发了适宜云原生应用的CPU 。 如果你到过我们的数据中心,那你会发现没有任何多余的硬件。 我们真正做到了计算资源和思维资源的抽象,这是属于互联网的新电气时代。 我记得那个时候,大部分企业有专门的运维人员去维护服务器,并且日夜祈祷服务器不出叉子。 而现在,运维这个工种已经消失殆尽了。对企业来说,IT 就像自来水一样,只需要按时交水电费就可以没有意外断电断水的烦恼。 我们向世界提供了一条可编程的世界之路,并促使了 IOT 的发展。Echo 从智能家居扩展到企业办公,成为了一种全新的云原生操作系统。 于是,互联网的入口逐渐变成 Amazon,而 Google 在随后的几年日薄西山。 ”贝佐斯激动地说。

“您的战略眼光的确独到。” 文特尔赞赏道, “假如我们假设另外一种场景,Google 推出了另一款智能助理 Assistant , 和 k8s 的PAAS 框架,以及 AI 框架 Tensoflow呢?互联网的格局又会走向何方呢? ” “也许 K8S 是 Google 的救星。”贝佐斯沉思道。

Published by Taoge on 2017-07-20 00:00:00

如何用 Airtable 构建你的知识仓库

为什么第一次使用,我就爱不释手?

我总是沉浸在各种信息流里,渴求知识。

“哟,我记得以前看过一个类似的东西,但忘记在哪里了!” 不可否认的,在信息的洪流里,如果没有一根针,将一切串起来, 那么到头来,一切都无迹可寻。

每个人都需要一个 Excel, 但 Excel 仍然具有门槛,并且糟糕的移动端体验,让人望而却步。 Airtable 正是一个像 Excel 的服务,但又足够简单易用,并且 App体验极佳。 无论是表格视图,还是卡片视图,或者时间线视图,都刚好够用。 它提供了一种结构化的方式,是把面条一样的信息织成布的绝佳工具。

对,你所看到的,所听到的都是一团毛线。 那织出来的布,才是你的知识。 而用布构建出来的人生体系,则是你的生存智慧。

示例: 管理你的计划

做一个大计划,并将其拆分,最后连接。

_images/plan.png

我制定了一个学习计划,这是主表。 然后又有一个任务列表。 这样我对我的学习计划既有大概的进度了解, 也可以通过连接看到详细的任务列表。 并且,可以切换成卡片视图,最重要紧急的任务优先处理。

示例: 构建知识仓库

收集。无论是网站,博客,朋友圈,微博,问答纪录,统统归纳一处。

_images/knowledge_base.png

互联网上好资源太多,我尝试过 Pocket,Evernote,Feed,Delicious 和 Pintrest 等等几乎所有收集类的应用, 最后都因为信息过载而导致心生畏惧。

其实,我只是需要一个表格,并把它组织起来。 互联网的信息分布是以人为中心,那么对应产生的好文章,或者说Github 上的好Repo 或者说博客,甚至于 Quora,Stackoverflow上的 问答都可以超链接到人。 当 Chrome 的标签栏不够用, Safari的阅读列表很久没读,为一个曾经看到的好网站努力回忆的时候, 我们真的只需要一个 表格,就够了。

Try it!

Referer: https://airtable.com/invite/r/tJ01fU2K

Published by Taoge on 2017-07-11 00:00:00

异国文化的观察思考

乘小船在湄南河行驶,两岸高大的椰子树从旁流过,几栋小木屋、一些小别墅,高脚穿插地站在在椰子树下,偶尔有几个光溜溜像泥鳅似的孩子钻入河中。

在渐黑的天色中,夜晚的清风透过渐凉的空气,我陷入了思考。

泰国文化与中国有何不同,又是什么造成的不同呢? 是因为政治制度还是地理环境又或是其他原因呢?

在大巴上、在船上、在火车上,近处的树木向后移动,远处的山向前移动,在这种流动的景色里, 我常陷入一种思考的流式体验,并得出一些奇怪的结论。

假设在远古时代,非洲人刚走出非洲,随机迁徙到全球各地。其中一个种群迁徙到泰国,另一个迁徙到中国。 这个时候,泰国人和中国人只有地理环境的不同。 这是文化演化的起点,现在打开秒表,开始观察随着时间的流动这两个种群的变化。

不同的语言

很快,这两个种群发明了各自的语言:远古泰语和远古汉语。 语言是为了信息交流而生的,如果没有完善的语言,则不能很好的沟通。 当然也不一定如此,据说有些部落仅靠打鼓的音调和间隔传递信息。 语言是文化的基石。从文字中,我们可以看出地理环境的不同,生活习惯的不同。

假如,现在又有个国家 C 。国家 C 和中国其他条件一模一样,只是语言不同。 那现在我们怎么把 C 国家的语言翻译成中文呢? 这里有一种简单的方法: 我们把 C 国家的语言当成是一种加密后的中文, 把 C 国家的单词的分布频率 和 中文单词的分布频率一比对, 那么我们自然就可以把国家 C 的语言翻译成中文了。

同样地,我们把泰语单词的分布频率和中文的单词分布,甚至其它国家的语言的单词分布 进行比对。我们可以发现一些有趣的结论。

其实有人已经这么做过了,他发明了齐普夫定律,俗称二八定律。 我们日常使用的单词只占所有单词的百分之二十。 观察这些百分之二十的单词可以找出不同语言文化的相同点。 通过剩下的百分之八十,我们可以找出文化的不同点。

我们可以发现,最常用的单词,比如说 “我”。在不同语言读音都不会超过两个音节,并且写起来也很短。 这其实是为了编码的效率,即尽可能用比较短的语句表述最常用的信息。

我觉得这是一种省力法则,正如光的传播一样。 光从空气射入水中,会发生折射。其实就是为了用最短时间从空气中的 A 点到达水里的B 点。 那这不禁让人产生疑惑,光在到达水里的B 点之前,难道会计算出最小时间路径吗? 这是个好问题,可以让人想一整天,得出宿命论云云。

我们感兴趣的,其实是不同语言体现出来的不同点。 比如说,在冰岛表示白色的单词有超过七种之多,这无疑体现了冰岛的地理环境。 同理在沙漠里的国家和在海边的国家对蓝色的见解也许也有不同。

不同的建筑

除了语言之外,我们当然很明显地注意到建筑物的不同。 比如泰国一些传统建筑是高脚的,这大概是因为泰国平均海拔只有4米,常有洪水泛滥的国情。所以,泰国的门都是梯形的,上窄下宽。 又比如冰岛的建筑和沙漠里的建筑墙都特别厚,当然是为了隔热隔冷。 又比如屋顶的三角形,有的是钝角有的是锐角。锐角可能是为了避免下暴雪的时候雪更容易滑落。 凡此种种,皆为因地制宜。 可以看出不同民族的智慧。

文化的趋同性

在路被发明以前,不同国家或许可以保留自己的特色。 但自从有了路,无论是海路还是空路或者陆路,无疑制造不同文化之间的融合。 这种全球化,正是趋同的体现。

不同国家的城市大都是高楼大厦,汽车也差不多样子,甚至穿衣也逃离不了各种时尚。 那文化为什么会产生交流从而融合呢?

我认为是经济活动的 “一价定律” 导致的。

在曼谷的不少菜馆,我们可以看到 “欢迎中国朋友” 的标语。 甚至我在小岛上租摩托的时候,他们居然会用中国话讨价还价。 随着中国人出国数量增多,会有更多的国家的人使用中文。 正如英文遍布全世界一样。

这种经济活动的交流,通常会带来人群的基因交流。 也许,很多年后混血人太多,以至于没有“混血” 的说法了。 我们这些土著反而会被嘲笑是落后呢。

Published by Taoge on 2017-06-17 00:00:00

大象国游记 1⃣️

凌晨两点从机场出来时,一股闷热的风扑面袭来,长裤像保鲜膜一样贴在大腿内侧,开始流汗。 到酒店时,恰逢一轮白晃晃的圆月挂在空中,不禁产生了 “外国的月亮是否更圆” 的疑问。

次日清晨,乘地铁【这里的地铁都是在高架桥柱上,泰国平均海拔4米,常有内涝洪水之灾,所以这里的传统建筑或有高脚,比如汤姆森故居】至曼谷市城区。

城区的建筑有点紧凑,大多是两层楼,偶尔也有高一点的建筑,如酒店或其他高档场所穿插其中,没有特别的规划。主道路两边偶尔会有小路蜿蜒或者几米宽的水泥路伸入居民区腹地。

一般水泥路两边都有摆摊儿的。尤其是晚上,主道路两旁常有大排档,而居民区内部的小弄堂两旁则是各种小吃,都是自家做的。 比如各种用聚乙烯塑料薄膜装的五颜六色的咸菜、自制奶茶、烧烤、水果、炒米粉,这些街边小吃,在早上和晚上尤其热闹。 偶尔路过一两个僧人坐在一旁,不一会儿就有佝偻的白发老太太塞给僧人几个饭团或纸币。 在人群中穿梭的有不少摩托,偶尔有汽车,汽车刚好能通过,不过行人要避让才行。 也有一两只看起来衣食无忧的猫在打哈欠。 我买吃的时候,先大致估算一下要多少,再给一张比估算高一些的纸币,通过他找多少钱来知道价格。 找钱时,我不知道他们在说什么,但通过他们点头时微笑的眼神和舒展的皱纹,大致是说 “欢迎再来”吧。

恰逢周末,当地有一个周末市场,引来无数游客纷至沓来,当然少不了中国大妈的身影。 据说只要一美元就能买到一件好看的T 恤。 当然逛周末市场可不是件轻松愉悦的事,尤其是在亚热带的中午时分。 老外们脸都晒的通红,源源不断的汗水从头发梢挤出来。 很多年轻女孩都手拿小型电风扇,另一只手拿着手机不忘拍照,在炎热中仍然能笑颜如花。

道路两旁,有五颜六色的冰棒,这冰棒放在一根根圆珠笔大小铁柱里,不同口味对应不同颜色。 客人买冰棒时,卖家把铁棍拿起来,放热水浸泡几秒,冰棍就可取出。 我觉得味道一般,就跟一般盐水冰棒似的,主要吃的是个新鲜劲。 不过椰子冰淇淋味道真是不错。椰子冰淇淋,有小拳头大小,可以自己加料,比如花生了,芒果了,各种小水果,吃一口保证爽到骨子里。

如此闷热的天气里,从海边吹来的风都在发烫,路边酒吧坐满了汗流浃背的外国人,来两瓶啤酒,的确很酷。再来一盘虾米炒饭,佛陀也不能拒绝这样的享受。 那炒饭做法可是大手笔,两口七十厘米半径的大锅里装满了泰国大米,黄咖喱染黄了所有米粒。 黄中带红的汤水里一些肉类、香料冒出头来,像海滩边上嬉戏的小孩,从一边划到另一边。带头巾和帽子的大妈劲道十足,黝黑的手臂用铁铲时仿佛有转动乾坤的神力。

由于炎热实在难以忍受,我便去了旁边的公园。 公园河边的高大的椰树下,有三五成群的家人朋友坐着或躺着,聊天或者吃东西。河边偶尔一两阵清风或一群鸽子,真是个轻松愉快的下午。 下午五点的时候,不远处乌云已经聚集在一起,公园的人逐渐散去。 乘地铁时,厚重的乌云终于像消防员一样,用消防水管冷却这蒸了一天的空气。

Published by Taoge on 2017-06-15 00:00:00

Andrew.Ng 机器学习笔记

啥是机器学习?

ETP

- Experience
- Task
- Performance

为了完成某项任务,通过训练,使得机器获取经验,从而达到很好的准确率。 这就好比巴甫洛夫通过不断摇铃,使得狗有了预判接下来有食物吃的能力一样。

那么,在机器学习的过程中,我们应该做什么呢? 我们应该让机器有趋利避害的能力。这样,机器就会在不断的矫枉过正的曲线上趋于稳定。 正如我们练习投篮一样,在不断的练习中,肌肉获取了大概以某种姿势,某种力道就能投进篮球。

啥是监督学习?

这是从经验获取知识的一个过程。 就好比,在无数次看了股票的涨跌之后,我们习得了看见红色就高兴,看见绿色就悲伤的知识。 相反的,对于无监督学习,则是我们没有告诉机器一些已知的结果,他也无从学习,只能天真的把距离近的划为一类,远的划为另一类。

如何选择模型?

这一切围绕 ETP 里的 Performance 进行选择。 既要与现有的经验吻合,又不能太死板(过拟合),不能应付新事物。 所以,选择好的代价函数 或者说惩罚函数是至关重要的。 一般来说,好的代价函数我觉得要有以下考量:

  • 凸函数
  • 统计学的两类错误的权衡

凸函数不会遇到局部最优的情况。 两类错误的权衡,好比是错杀一千还是放过一千的考量。比如说信用卡诈骗和抓捕罪犯对两种错误权衡就不一样了。

Published by Taoge on 2017-05-31 00:00:00

Hadoop 2.8.0 半自动化安装

keywords:hadoop 安装, hadoop 入门, hadoop 准备

1, 虚拟机准备

俺使用 VirtualBox 创建了 3 台虚拟机,分别叫 ubuntu-1, ubuntu-2, ubuntu-3
均配置了 4 个网卡, 网卡模式有 桥接模式,内部模式 还有 NAT 模式。
桥接模式可以供宿主机访问,内部模式用于 3 台虚机之间访问。
内部模式的主机分别为 ubuntu-1 10.10.10.1, ubuntu-2 10.10.10.2, ubuntu-3 10.10.10.3

2, Hadoop 分发

安装分布式软件最让新手头疼的是,一台机器一台机器地登录上去,一条命令一条命令的执行,非常耗时间,让学习的热情一下子冷却了一半。
所幸,我们可以借助运维神器 ansible 一键 完成机器的初始化工作。
ansible 有一个 playbook 的概念,有点像写剧本的意味。我编写了一个如下的play:

play.yml:

---
- hosts: taoge-ubuntu
  tasks:
  - name: create hadoop user and generate ssh key
    user:
        name: hadoop
        password: hadoop
        shell: /bin/bash
        generate_ssh_key: yes
        ssh_key_bits: 2048
        ssh_key_file: .ssh/id_rsa

  - name: add authorize key to slaves
    authorized_key:
        user: hadoop
        state: present
        key: "{{ lookup('file', '/home/hadoop/.ssh/id_rsa.pub')}}"


  - name: copy hadoop-2.8.0.tar.gz
    copy:
        src: /root/hadoop-2.8.0.tar.gz
        dest: /home/hadoop/hadoop-2.8.0.tar.gz
        owner: hadoop
        mode: 0644

  - name: unarchive hadoop-2.8.0.tar.gz
    unarchive:
        src: /home/hadoop/hadoop-2.8.0.tar.gz
        dest: /home/hadoop/
        remote_src: True

  - name: add /etc/hosts
    lineinfile:
        path: /etc/hosts
        line: '10.10.10.1       hadoop-1'

  - name: add /etc/hosts
    lineinfile:
        path: /etc/hosts
        line: '10.10.10.2       hadoop-2'

  - name: add /etc/hosts
    lineinfile:
        path: /etc/hosts
        line: '10.10.10.3       hadoop-3'

  - name: add JAVA_HOME
    lineinfile:
        path: /home/hadoop/.bashrc
        line: 'export JAVA_HOME=/opt/jdk1.8.0_131/'

3, Hadoop 配置

Hadoop 配置使用了 XML 格式,为什么用 XML 而不用其它的格式呢?这是个好问题。
配置 DFS 的话,只要配置 两个文件: core-site.xml, hdfs-site.xml。 配置文件都在 etc/hadoop 文件夹里。
core-site.xml 在 三节点设置都一样, hdfs-site.xml 在 namenode 和 datanode 不一样。
我的一些配置如下:

NameNode:

core-site.xml:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-1:9000</value>
    </property>

</configuration>


hdfs-site.xml

<configuration>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>

    <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/nn</value>
    </property>

    <property>
            <name>dfs.namenode.handler.count</name>
            <value>10</value>
    </property>

    <property>
            <name>dfs.hosts</name>
            <value>/home/hadoop/hadoop-2.8.0/hosts</value>
    </property>

</configuration>

DataNode:

hdfs-xite.xml

<configuration>
    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>

    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/dd</value>
    </property>

</configuration>

4, Up, Up, Up !

Hadoop 的分布式存储系统是 Master-Slave 模式,也就是一个包工头和多个工人协作的模式。
所以节点类型有 2 种: NameNode, DataNode, 也就是控制流和数据流的区别。
俺设置的是 NameNodehadoop-1, DataNodehadoop-2hadoop-3
NameNode 上执行: bin/hdfs namenode > namenode.log 2>&1 &
DataNode 上执行: bin/hdfs datanode > datanode.log 2>&1 &
好,现在 Hadoop DFS 已经搭建起来了!
欢迎来到大数据的世界。 让大象撑爆您的容器或虚拟机吧!

Q&A: 为什么我遇到了网上没有的问题?

不可避免的,凡是学习一个新东西,总会有老手都知道,而新手百思不得其解的问题。
这时候就是考验 DEBUG 的能力的时候。
对此俺只有一个忠告 : 多喝水,仔细看日志。
  • DataNode 不能连接到 NameNode, 连接被拒绝 ?

    一般情况下,NameNode 监听端口时绑定的 host 可能不同。比如 绑定localhost的时候只有本地可以访问。

  • NameNode 启动总是显示 dfs 的文件夹为空 file:///

    很有可能启动时没有读取正确的配置,可以使用 ` bin/hdfs getconf` 这个命令来查看配置是否是自己写的配置。

Published by Taoge on 2017-04-28 00:00:00

百倍程序员的杠杆率和加速度

韩信点兵,多多益善。
最近有不少关于百倍程序员的传言,据说这种程序员能以一当百。
一旦有了这种传言,雇主趋之若鹜,而那些一般的程序员,仿佛听到了屠龙宝刀的现身一样,一片哗然。
作为野生程序员,自然也不能免俗,也要看个究竟。

百倍程序员真的存在吗?

没错,百倍程序员是真的存在的,我公司就有一个。

百倍程序员的特征?

这种程序员,当然不是不食烟火的,也不是传说中用指针在磁盘上刻出一个 Windows 操作系统的上古程序员。
据我观察,百倍程序员有以下特征:
  • 智商高于平均值约四分位
  • 读 IT 类书逾千本
  • 工作超过 5 年

还有些特征不可量化,就不提了。比如说穿着。

为什么能百倍?

杠杆率和加速度。
杠杆率,就是一个乘数的概念。常见的表述有货币乘数,金融杠杆,投资回报率,杠杆原理等等。
加速度,就是一个指数增长的概念。比如常见的 72 定律,足见其威力之大。
正因为上面的特征,才有杠杆率高和加速度快的结果。
就好比,一个普通程序员只知道通过练习跑步来跑得快,而百倍程序员已经使用了轮子造出汽车。这就是杠杆率高的结果。
又比如,入门程序员看技术书籍,多有不懂,花费大量时间,却没学到什么真才实学。而百倍程序员则会使用索引,根据进行主题阅读,一日千里。这便是加速度快的结果。

那存在千倍程序员吗?

不存在,千倍以上就是企业家的事了。
纵使绝世高手能以一当百,然而一个人还是打不过一个军队的。
这时候,当我们力所能及达到百倍之后,我们就应该换个思路了。从十倍到百倍是纵向扩展,从百倍到亿倍则需要横向扩展。
比如,百倍程序员教导新手,那么新手可能达到十倍,那他只需要教会100个新手,那么他就能干出千倍的事情。
马云虽然不懂IT 知识,却能成就阿里。有不少是得益于他原是个老师,能够提升下属的杠杆率。
故曰,韩信点兵,多多益善也。

Published by Wenter on 2017-04-02 00:00:00

我的光辉事业

引子

Oh, how I hate this living death which has swallowed all my teens,
which is greedily devouring my youth, which will sap my prime,
and in which my old age,
if I am cursed with any, will be worn away!`

                                     ---- < MY BRILLIANT CAREER >

我想解决什么问题?

找工作难, 难于上青天。
招人难, 难于蜀道行。
大家都有毕业时找工作的经历,在人山人海的地方,谁的青春不感到迷茫?
而当我们工作以后,才发现企业招人也不容易。
为什么我们之间存在如此大的鸿沟呢?

出现这个问题的可能原因是什么?

信息爆炸
信息不对称
没错,互联网是个伟大的科技,正如所有的科技一样,它解决了老问题,也产生了新问题。
有人顺势飞起,有人一夜成名, 而大多数在沉默。
在我的想象中,互联网应该是P2P的,每个人都应从中受益,而不是被信息的洪流淹没。

一个问题如果真的重要,那么它不应该早就被解决了吗?

目前的搜索网站,无论是 Google 还是其他的垂直搜索引擎,绝大部分信息都是单向流动的。
扔狗不理包子式的信息流动,只会增加噪音,导致谁也找不到谁。
或者说,我们只能看见那些因为大众盲从而选举出来的次优结果,这都是网红美食的套路。
我是说,我们也许能试一试牵线搭桥。

Let’s Do It!

这是我的 Github 项目 : https://github.com/yowenter/career-roadmap

我希望它能做的,也是我正在做的:

  1. Everyone knows his career roadmap
  2. Everyone can find best job
  3. Every company can find best employee

Published by Wenter on 2017-03-25 00:00:00

我们程序员是如何让自己失业的

物理的大厦已经建成,剩下的都是添砖加瓦,只是还有几朵乌云罢了。
当我们在说 Docker和微服务的时候,我们在说什么?
当我们谈论 Github引领开源时代的时候,我们又意识到什么?
IT的基础能力正在被云计算标准化,IT的业务能力正在碎片化,
最后每个IT服务都变成了互联网上的一个细胞,寄生在鲸鱼(Docker)上,
而鲸鱼漂浮在云计算的海洋之上。
那个时候,我们程序员将逐步失业。

我们程序员是如何一步一步解放自己的生产力,最后失业的?

起初,天地混沌于一物,方有盘古开天辟地,而后有了计算机。
神说,要有连接,于是万物基因开始交流,而后有了互联网。
先知说,这还不够,我们需要通天塔来到达天堂,要活在永恒不灭的境地。
所以有了程序员,来建造通天塔。
每建造一层,我们手中的工具就升级换代一次,从钉子换成凿子。
就这样随着摩尔定律的增长,我们有更好的生产工具,来建造更好的服务。
从0到1,从二进制到汇编,从汇编到C,从 C 到 Python,再到大数据。
抽象愈多,接口愈简洁,我们就像玩乐高似的,仿佛可以建造任何东西。
不断地追求自动化,不断追求抽象分层化,我们走进了碎片化的时代。
计算能力的碎片化,业务服务的碎片化。碎片化达到一定标准后,我们迎来了云计算的时代。
也就是现在,技术解决方案百家齐鸣,我们迈入智能化。
智能来自于数据,我们把数据存在云端,使用云端的服务,为终端用户提供个性化服务。
将只有两家 IT公司存活下来,一个提供智能数据云计算平台,另一个也是。
最后,我们重新发明了自己。
我们会做一个实验,这个实验叫做地球,来解决宇宙,生命和自由的本质这个问题。

Published by Wenter on 2017-03-18 00:00:00

3 分钟学会时间管理

时间相当于一个人的资产, 时间管理就相当于投资。

所以我们可以使用投资的一些理念进行时间管理。

先定一个小目标

你要在今天或者本周甚至于更长的时间段,达成什么目标?

  • 好的目标是什么样的?
    • 执行结果要么是成功了,要么是失败了,不存在模糊不清
    • 是可以通过一些努力达到的
    • 有时间限制的
    • 重要的
  • 坏的目标是什么样的?
    • 我要变得更好 ? 啥,什么是更好,什么是更差?
    • 我要挣他一个亿? 想一想你能达到吗?这现实吗?

规划

必须承认,做一个好规划是困难的。大部分人都是摸着石头过河的。

你可以把完成目标想象成一个状态链过程,把目标当成一个最终状态。 那么从初始状态(也就是现在) 如何到达 最终状态呢 ?

我觉得这时候可以从后往前推, 比如 从 A -> Z ,找到一个点在 A ,Z 之间 如 Y 。 那么路径就变成 A -> Y -> Z 。 由此不断倒推,你就能发现最近的点 B 。 所以,你就可以先完成一个小目标 !

.

执行

为了达到你的目标,不是你愿意为它做什么,而是你愿意为它失去什么。 - 巴菲特

我们总是在不断的做出选择,选择腐朽,选择房贷,选择拖延,选择职业,选择家庭。 选择总是困难的。

我们可以使用 重要程度 和 时间 两个维度将事情分类。然后按优先级排列。

  • 重要 + 紧急
  • 重要 + 不紧急
  • 不重要 + 紧急
  • 不重要 +不紧急

我们应该关注那些真正重要的事情,至于什么是重要的事,请参照 冒泡排序算法。 把事情一个个列出来,互相比较,你最终会发现哪个才最重要。

而那些琐碎的小事, 比如 有同事十万火急的来找你,但其实是件小的事,你只需要优雅的拒绝他就好了。

专注

作为程序员来说,都知道 CPU 切换进程消耗比较大,也都明白编程被打断时想杀人灭口的冲动。

你最好买个降噪耳机,来表明你是不希望被打扰的。

参考

  • 时间管理 ,吉姆-兰德尔

Published by Taoge on 2017-03-04 00:00:00

如何使用 Intercom 用户运营

用户运营的目标,即用户增长。

那么我们如何用 Intercom 达到这个目标呢 ?

我们需要将这个目标拆解成两部分,

  • 增长什么用户 ?
  • 增长有什么手段 ?

Intercom 为了解决这两个问题,主要有以下两种手段。

Segment

Segment, 原意为碎片化,开发过 Android 的 同学应该不陌生。
intercom 使用 segment 将用户分类,
从而分类出 有价值的用户,即将流失的用户,新用户 等。
对不同的用户采取不同的方法,比如激活新用户,挽留流失用户,
实现精准打击。

AutoMessage

AutoMessage 自动消息, 基于 Segment 的精准分类, 利用自动消息主动出击。
想一想这个场景, 你在试用某个 SaaS 产品时,遇到了一些困难,正准备关闭页面时,
一个漂亮妹子的头像亮了起来,亲切的问你需要什么帮助。 你肯定会产生被关心的感觉,
而这也让你对这个产品有了不错的第一印象。

Published by Taoge on 2017-02-25 00:00:00