马年,码农的年
长假真的很短,这就过完了,Golang也没怎么写,即将接手的工作也丢到脑后。 吃吃喝喝,晃晃忽忽…结果就做前端页面花了点时间,也做得很糙。 想成为full stack hacker不易啊,先做一个copyer吧:) Bitcoin Slides 为了准备下一次的Free Talk,尝试了一下T神推荐的reveal.js来做slides。 But草稿起得好丑啊…完全没有美感… 作为Bitcoin的脑残粉,鼓吹Bitcoin是天职,写了一个介绍Bitcoin的slides。 Bitcoin Briefly 阿克苏灰枣 为了给勺子的枣做广告,从Strikingly扒了一个页面,完成度80%。 Strikingly页面很有逼格,可以自适应PC, PAD和手机的HTML5页面。 欢迎大家光顾,目前接收Bitcoin下单,价格无敌。 Akesu Dates Bitcoin Robot 把Bitcoin Robot原型又稍微改善了一下,用web.go加了一个简陋的前端。 因为web.go并没有模板,所以主要想做restful API。因此说不上是前端页。 但对我来说够了,投资/产出才是创新之本。用于随时操控我的自动交易参数,B/S结构又避免平台依赖。 Bitcoin Robot 微信接入 另外还尝试了下微信的公共平台,接入接口Work了,但还没有内容。谁想开启自己的开发者模式,可以借用这个地址。(浏览器打开是空的) http://kongting.com/weixin 最后祝大家马年,马上有币!
扒了一个TIMELINE的简历
这周有点忙碌,没有更新博客,盗版了一个全英文的个人简历让大家感受一下… 猛击这里,内有福利,如有雷同,纯属抄袭
GO是一门和谐的语言
这周T神问我了一个问题,如果用Golang开发防火墙设备软件,你会有什么担心? 我无脑便答没什么可担心的,其实这个问题我自己问过自己,并在我的“无脑”中简单推导过几次。Go可以用在哪里? 于是我按直觉上大致再捋了一下,软件粗分为两种:系统软件,应用软件。 先说应用软件,应该是距离用户最近的,满足用户各种异想天开的需求,也是种类繁多,变化频繁的。不用多说,写这样的软件如果用C那么简直就是自虐。 当然这也是有前提的,如果是1980年,那么也别无选择,LinkList也要自己实现。但在今日,随着硬件,操作系统,开源库的发展的基础上,用高级语言带来的好处显而易见,开发周期短,代码少,维护简单,变更迅速。例如:Android应用就是Java开发运行在dalvik虚拟机上的。 系统软件一般功能单一,完成对资源的分配和调度,这种软件虽然看起来好像管好自己的一块饼就可以了,但实际却不是这样。在一个规模系统中,资源需要弹性得分配,调度也需要做到并发/并行,这些资源的管理和调度需要按需进行,分布式部署。于是更多的层次和模块在这里产生了,大型系统中有各种资源调度的中间件,线程池,读写缓存,消息队列等待。使得现代系统变得很复杂,如果从头到尾维护一套,显然不划算。 做优秀的系统要集中精力做好这个系统上最有价值的部分。 问题需要分治解决,软件设计上就是对系统分层,分模块,我不想凭空的大谈理论,实际这些理论是与工程相互结合的。先不细节,我想暴力定义每层可以使用不同的技术或者不同的语言。这种分离无疑是最强的,比方说用Java写一个让JVM Crash的程序就很难,或者用C语言来摧毁CPU也不太容易,用Golang维护世界和平也是不可能的…当然…“三个代表,和谐社会”也不行。 简单做从包处理角度看一个系统。 ####一. #### 首先进入包处理系统的底层,这里可以逐级使用ASIC,NP,CPU做信号数字化,Pattern Match,查表,转发,策略,QoS调度等。用到的语言可能是专用微码,汇编,兼容C语言。 ####二. #### 然后进入协议栈这层,这时报文可能按包属性被分发到不同CPU处理,可用C语言写IP协议栈,报文行为识别,安全策略执行。对于4-7层报文安全处理,80%的通用协议用可以C语言,或者协处理芯片。20%的不常见的应用报文,或者定制的处理,完全可以考虑Golang或者Lua脚本语言完成。 ####三. #### 报文通过后,应该有个中间件层,各种应用构筑在它之上,它承载资源虚拟化,缓存,负载均衡等能力。软件中间件尽量与硬件无关,可以选择能构建在llvm虚拟机或者java虚拟机上的技术,他们通过通用的中间字节码,引入了更多优雅的语言。既降低开发难度,又保证不失性能,如C++0x,Object-C,Java,Scala,甚至各种已经支持的语言Haskell, Ruby, Python等等。这样大量的第三方库就可以被导入,轻松构筑弹性的资源层面,为上层应用平台服务。 ####四. #### 报文最后被应用软件处理。应用软件可以根据自己的喜好,用特性选择不同的语言。比如SSH/FTP/HTTP这些成熟基础应用可以继续用过去的C/C++语言。高同步/高并发类的网游可以用erlang语言,数据库CRUD类的可以用动态解析脚本语言Python,Ruby,PHP…。 又扯远了,回到我熟悉的路由协议,配置管理,OAM,北向接口等控制类应用来说。这些应用有一定的变化,但又不大,要求性能,但又不会海量,最好还能赶个时髦,支持虚拟化,弹性,多核并发,当然还要开发简单,容易维护。这里我自然想到了Golang,Golang是编译型语言,性能不错,又隐藏了并发处理中调度和通讯的细节。 ####接着黑#### 当然如果你有华为的团队,你完全可以用C语言来搞定一切,一个应用协议20人维护,一个系统至少1000人交叉开发。产品性能不错,开发效率很低,软件维护痛苦,产品演进缓慢。 地球上没有几个这样的平台,所以如果我是架构师,我也许会用一个转发平面erlang,控制平面golang的结构。erlang代码两成,处理八成工作,重在并发。golang代码八成,实际两成常用,重在性价比。当然这是我的臆想了…想喷请留言… ####FIN#### Golang是一门中庸的语言,每个方面都是80分,当你它注定不是文艺青年的最爱,对我这种媳妇口中的“性价比哥”来说再好不过。看来我已经把使用一种语言上升到价值观的高度了,不能再远了。 好吧,说个近的,其实我对golang感兴趣,是因为它的吉祥物gopher很萌,像个屌丝二货工程师。 P.S. 关于这丑陋的贴图 是这周我的Bitcoin自动交易机器人(绰号:无脑赔钱货)7*24小时无中断的一周交易记录 时间 动作 成交价 收益率(100%) 币数(100元) 2014-01-12 10:33:08 卖出 5410.0 5.9879% 2014-01-12 05:22:41 买入 5440.0 0.019591 2014-01-12 04:53:41 卖出 5405.01 6.5756% 2014-01-12 04:22:20 买入 5421.99 0.019718 2014-01-12 03:03:25 卖出 5395.03 6.9104% 2014-01-11 17:00:47 买入 5310.89 0.019816 2014-01-11 14:35:13 卖出 5256.
2014你来了,我在哪里?
新年来了,大家快乐:) 回顾2013 一. 圆了勺子出国旅游的心愿,去了泰国,很棒。我又因公去印度一次,英语还是不行。 二. 终于迈出了勇敢的一步,或者说是胆小的一步。怕猝死,离开了华为,一波三折。 三. 开始学习理财,今年收益3%左右,比较挫。开始关注比特币,变成了脑残粉,参加了几次小会。心得:远离中国股市。 四. 新的工作环境很好,压力不大,这里遇到一位牛人,令人钦佩。跟他学习了很多互联网开发的东西,很兴奋。 五. 身体健康程度有好转,但有发福趋势,锻炼还没跟上。没读书,是个文盲。 展望2014 一. 计划至少出国旅游两次,已定清明去马来。下半年去越南,韩国,或者港台。 二. 工作上继续保持,争取全面了解防火墙,成为一个合格的路由器,交换机,防火墙三栖研发工程师。 三. 做对冲理财,90%保守,10%激进。跟进虚拟货币系统的发展,建立稍微像样的自动交易系统。目标收益10%。 四. 学习一门新语言Go,用Go写一个Web项目。争取让别人觉得你会C/C++, Python, Go。顺便了解nodejs, erlang。 五. 体重保持130以内,锻炼超过2013。争取读上两本书,多和朋友交流,多写博客,让自己看起来有点文化,不呆板。 2013年的最后一天在好朋友家里跨年,很开心。2014年的第一天在家里调了一天程序,很满足。 媳妇也今天在家里猫了一天,看脑残电视剧,和韩国欧巴。我祝她早日新的一年少睡觉,多学习:) P.S. 贡献一个原创的Bitcoin trade APIs for Python,用了T神推荐的requests库,所以很简单。 https://github.com/donge/chbtc requests是人性的http库,Web开发,杀人越货必备。 http://docs.python-requests.org/en/latest/
IT英雄榜
搞IT的人总有一个很坏的毛病,就是觉得自己牛逼,别人傻蛋。 今天突然冒出一个想法,我很想知道中国最顶尖的程序员到底什么水平,搞一个程序员排行榜如何呢? 但实际上是IT行业是一个很细节的行业,很难说谁比谁的技艺更高。所以想分出个第一第二,那真的是开玩笑。 但确实有这样一群人,他们在自己的领域登封造级,或练就一身绝学,或威名远播,那我就随便点评一下我知道的武林高手们。 天下武功无快不破 - 楼天城 ID: ACRush 生年: 1986年 清华博,人送“教主”,玩过算法竞赛的人无人不知他的大名。从全国奥赛开始,到ACM/ICPC,Topcoder,Baidu Astar等等比赛斩获无数奖项。之前那篇博客中描写的“10分钟800行,无错编译,一次通过”就是关于他的传说。我上大学那年北大ACM站的AC数量排行第一的就是他,无疑现实了他ID的王者风范,ACRush! 孤独求败 - 王垠 英姿少年,桀骜不驯,博士退学两次,大骂Google工程师都是二把刀的程序天才。在计算机语言的语法,语义解析领域有很强的功力,追求计算机逻辑最精髓的东西。大学时读过他Linux,LeTax的文章,就初觉小牛。最近看到他写的40行语言解析器的相关讨论,真是不明觉厉,这个领域也算是独孤求败了吧。 “我是传奇” - 田春 从网易出来的奇葩,人送绰号’伞哥’,因为每天无论阴晴都带一把伞出门,一身白衣,面无表情。一副刺客打扮,一看就装逼得不行。但此人精通Common Lisp,并且是国家级毽球运动员,跆拳道高手,并掌握多门外语的高素质综合人才,自诩"中国素质教育之典范"。有这种素质,不装都不行。 我就是风云 - 吴云洋 第一次听到这个名字,那时还在读高中,天天看游戏杂志。看到这样一个程序员,感觉很有趣。明明是个程序员弄得和游戏代言人一样,一头长发飘飘,起个名字还这么屌。殊不知此人确实在游戏领域还真是无人不知,曾任网易杭州研究所总监。一直坚持编程,属于全才,无愧“风云”的名字了。 八面玲珑 - 冯大辉 其实我真不确定他是不是程序员,但圈内知名度实在太高,成功转型自媒体人Fenng。原阿里数据库架构师,精通数据库和系统架构。目前任丁香园CTO,后出品小道盒子,加之人脉很广。所以江湖之事,他应该是先闻先知。不算武林高手,也算个泥菩萨。 以下是候补名单 凌波微步 - 许式伟 刚刚了解不久,WPS的架构师,前盛大技术总监。曾经擅长erlang,后又唱红golang,并使用golang成功创业。擅长互联网架构,分布式系统。热爱对新技术,这个跟进速度估计在从事编程10年以上开发者身上很难找到,绝对是武林中顶尖的轻功高手。 TBD - YOU 当然,这个名单是不固定的,因为还有很多我一时记不起来和不知道的高手,欢迎大家提供名单,要真的程序员哦~ 最后还是说说武林高手的共同之处,不仅仅在自己的专业领域牛逼,还要让别人了解你的牛逼。 前两天看到一个互联网招聘,说需要提供贡献过的开源项目,博客地址,Github账户,豆瓣书单… 这才意志到,高手绝不是隐居山林的高手,而是真正行走在江湖上的人。江湖很大,人外有人,天外有天,自问你还觉得牛逼么? 有人,就有江湖,To be continue…
我为什么放弃治疗?
从下定决心离开华为的那天到今天,刚好一年整。 现在知乎上流行晒“我为什么从XX离职”的话题,很有意思,不如我也说两句。 http://www.zhihu.com/question/22038145 Q: 你为什么从豆瓣离职? A: 作为一个程序员,从来不加班,让我觉得很空虚 1 不加班就生病 加班在华为是最基本的工作,加班时间长短是衡量员工是否优秀的唯一标准。 不管你牛还是不牛,出活还是不出活,每天只要早上9点来,晚上11点走,周末不休息,那考评得A垂手可得。 效率 * 时间 = 工作量 长时间工作,效率已经趋于稳定,不能再低了,但时间总是线性的。这是华为制胜的法宝。我也常说,如果华为不做通讯,做房屋中介,一样秒杀整个行业。 是不是真的有那么多事情?难道大家都能受得了?有没有轻松的工作? 一切都有例外,但研发90%是我经历这样的。华为选拔人才以"来自农村,苦大仇深"的人群为目标,说白了就招‘屌丝’,给他们‘逆袭’的大饼。经过长期的洗礼,能留下的,必定是牺牲生活,毫无品位,感情麻木,脾气暴躁的人。当然,回报算是丰厚的,前提是在你这样能力和品格下。 2012年,我负责的一个关键产品关键项目的设计和实现,加了不少班,稍微停下来后,大病了两场。这种事情很奇怪,但在华为很常见。 人在亢奋状态下是透支健康维持的,这种透支可以时间很长,但如果停下来,人就会生病。很多同事都遇到过,后来也听说很多中医书也这样写的。 我想我也可以写上一章,要想一直不得病,那唯一得办法就是—加班。 对于不加班不知道干什么,走的早就心里慌,心中没有理想的兄弟,你们还是不要放弃治疗了… 2 真的学不到东西了 对我来说,刚出校门的三年,这样的工作并没什么,工科学生本也是土包子。头三年我工作得很顺心,心思也都在工作上,绩效很好,三年后的收入已经高于同期入职同事的30%,成为了项目经理。那时我觉得我真得逆袭了。好吧,又暴露自己的智商了。不过说到这里还是需要感谢我的导师和那时的主管。 我不聪明,但喜欢学习新东西,新工作总比别人做的快。但时间一长就发现,自己没什么好炫耀的了。就好像你从小说话学得快,别人还哇哇叫的时候,你都会喊爸妈了。但你现在三十了,你还能发出什么别人不会发的音么。所以我一直追求做新的项目,模块,但华为人力组织很巧妙,每人只能做一块,不能变动。不得不佩服华为的HR,可能他们都是共产党员吧。 一段时间下来,我觉得我将来不会是一个顶尖的工程师,因为那时我偶尔玩一些算法程序竞赛,看到那些10分钟800行,编译无误,一次通过的人,我真为我的智商捉急。于是之后我去学习了系统分析,项目管理,还有溜须拍马,弄虚作假。当然系统分析我自认水平还可以,项目管理一般般,溜须拍马水平低,弄虚作假没学会。我发现我能精通这些技能更难,而这又恰是华为管理路线越往后走越需要的能力。于是我又认识到了,我更不是管理这块料。 这样我意识到了人智商是有差别的,无法赶上别人,但还可以慢慢改进。但人的品格,那是改变不了的,还好我选择了善良。 放眼全球,我就是一个弱智。但放眼华为一个近千人的部门,能入我法眼的技术人才竟然也没有几个。当然我定义的人才是真正爱技术的人,举个简单的例子,你工作之外还写代码么?如果没有,那就请你不要对号了。当然可能我也没统计过,遇到这样的人,与他们共事是一种荣幸。 结束了这种纠结又回到技术工作上,很快就发现这里学不到东西了,当然别人可能认为你是个专家,应该教别人东西了,还自己学什么呢。但我总觉得华为的“专家”特别刺耳。我真不专,我特花… 3 人是有感情的 华为职业生涯中做管理的一年是我最痛苦的,苦过加班,因为需要给别人打考评,考评为A没什么的,考评为C对员工的影响还是很大,主要是名额还是硬性的。那年我是项目经理,经常组织大家活动,自费请大家吃饭,K歌,我出远门回来也会给大家带礼物,我觉得应该这样做,因为大家给你干活都很辛苦。但考评来临时,我觉得这东西简直扯淡,泯灭人性。很快我放弃了,我宁愿任人宰割也不想宰割别人,自己断送了职业经理人的前程。 管技术自然好了很多,能自己做的自己就做了,用不着求爷爷告奶奶,也不用威胁别人或打小报告。但技术管理走高了其实也还是管人,部门里就一个例子,那架子是我学不来的。 其实很早就知华为生存法则“忍狠滚”,但无奈自己是个纯情少年啊。后来离职的时候还被部门主管或者是主管的主管玩了一把,你说好歹也是一起共事这么多年的同事,部门的利益也是我们日夜奋斗出来的,克扣奖金这个事也做的出来。只能说够狠,我看好你!但爷爷也不是吃素的,鉴于我的善良,理解文化如此,身不由己,也就这样作罢。谁让华为就是江湖呢,我再也不相信爱情了… 幸好我还有小伙伴们,与你们一同的日子,不‘紧紧’是工作的低级趣味,还有脱离了低级趣味的,各种趣味。请原谅我这唯美而富有诗意的表达吧。我真的不能说爱你们,不然我媳妇又该生气了。但我知道临走的最后一天,眼泪是为你们流的… 4 理想是个什么 这是个问题,想要搞清楚,只少要有思考的时间。我想开个公司,做个产品,挣点钱,这个算么?好低级哦…那你来个高级的。 我离职后和几个靠谱的死党天天研究,直接跳过前两步,就看看怎么能挣点钱,或者借点,骗点也行,当然甲方是国家了。不是我们坏,是这个规则就是这样的。我考察了几个领域,走访了各式能人,最后…..黄了。 但这也不是理想破灭了,我觉得理想是变化的,他的意义在于是你前进的动力。不管你做什么,创业还是工作,搞一个工程也是解一个BUG,你没有停下来,不是因为后面有人抽你,而是你自己就要这样的,足够了。这就是理想。我想我离开华为就是想找回这种理想的感觉了。 既然大钱赚不到,就好好学点东西。健康得工作,快乐得生活,这也足够了。 昨天和前同事一起吃饭,开玩笑说double一下,让我回去,我真的不用犹豫,triple一下我也不回去,因为… 环保园的厕所实在没有欲望上… 员工的生存问题解决了再说吧:) p.s. 附离职绝笔, 你们感受一下: 从2006年的邮件开始回忆你们…
[转] 史上最经典的LINUX内核学习方法论
待到山花烂漫时,还是那些经典在微笑。 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验。首先是5本久经考验的神作(个人概括为“2+1+2”,第一个2是指2本全面讲 解内核的书,中间的1指1本讲解驱动开发的书,后面的2则指2本有关内核具体子系统的书,你是否想到了某某广告里三个人突然站起单臂齐举高呼“1比1 比 1”的场景?)。 《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时 间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必 读的书籍。新人得有此书,足矣! 《深入理解Linux内核》 简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。 前面这两本,一本提纲挈领,一本全面深入。 《Linux设备驱动程序》 简称LDD,驱动开发者都要人手一本了。 《深入理解Linux虚拟内存管理》 简称LVMM,是一本介绍Linux虚拟内存管理机制的书。如果你希望深入的研究Linux的内存管理 子系统,仔细的研读这本书无疑是最好的选择。 《深入理解LINUX网络内幕》 一本讲解网络子系统实现的书,通过这本书,我们可以了解到Linux内核是如何实现复杂的网络功能的。(忘了声明下,我这列出来的书名是中文的,但是并不代表我建议大家去看他们的中文版,其中有的翻译的实在太??了,呵呵) 这5本书各有侧重,正如下面的图所展示的那样,恰好代表了个人一直主张的内核学习方法:首先通过LKD或ULK了解内核的设计实现特点,对内核有个整体全局的认识和理解,然后可分为两个岔路,如果从事驱动开发,则钻研LDD,如果希望对内核不是泛泛而谈而是有更深入的理解,则可以选择一个自己感兴趣的子系统,仔细分析它的代码,不懂的地方就通过社区、邮件列表或者直接发Email给maintainer请教等途径弄懂,切勿得过且过,这样分析下来,对同步、中断等等内核的很多机制也同样会非常了解,俗话说的一通则百通就是这个道理。当然,如果你选择研究的是内存管理或者网络,则可以有上面的两本书可以学习,如果是其他子系统可能就没有这么好的运气了。 内核社区 最近几年,社区网站非常的热火,不过此社区非彼社区。 Linux最大的一个优势就是它有一个紧密团结了众多使用者和开发者的社区,它的目标就是提供尽善尽美的内核。内核社区的中心是内核邮件列表(Linux Kernel Mailing List,LKML),我们可以在http://vger.kernel.org/vger-lists.html#linux-kernel上面看到订阅这个邮件列表的细节。 内核邮件列表的流量很大,每天都有几百条消息,这里是大牛们的战场,小牛们的天堂,任何一个内核开发者都可以从中受益非浅。除了LKML,大多数子系统也有自己独立的邮件列表来协调各自的开发工作,比如USB子系统的邮件列表可以在http://www.linux-usb.org/mailing.html上面订阅。 其他网络资源 除了内核邮件列表,还有很多其他的论坛或网站值得我们经常关注。我们要知道,网络上不仅有兽兽和凤姐,也不仅有犀利哥和韩局长。http://www.kernel.org/ 可以通过这个网站上下载内核的源代码和补丁、跟踪内核bug等。http://kerneltrap.org Linux和BSD内核的技术新闻。如果没时间跟踪LKML,那么经常浏览kerneltrap是个好主意。http://lwn.net/ Linux weekly news,创建于1997年底的一个Linux新闻站点。http://zh-kernel.org/mailman/listinfo/linux-kernel 这是内核开发的中文邮件列表,里面活跃着很多内核开发领域的华人,比如Herbert Xu,、Mingming Cao、Bryan Wu等。
用GITHUB开始整理过去十几年HACK过的代码
周末终于可以休息和有一点自己的时间,用GitHub来给自己整理一个Code回忆录。 从上初中开始到现在16年,除了学校交作业,上班工作写的代码,还写过或者更多是改过无数的代码,各种语言,各种网站,各种创意,回头看看很是有趣。 由于从初中开始到现在换了8台电脑,所以很多珍贵的Code回忆都丢了,我从现有的一些备份中开始慢慢还原它们,留给自己一个美好的回忆。 https://github.com/donge/donge.git
FW:LINKEDIN用一幅图告诉你:工程师最想去的10家硅谷创业公司
donge: 最近很是迷茫,没有方向,来看看湾区工程师们的方向吧,哈哈~~明了了吧。 旧金山湾区,包括整个硅谷,到处都是天才级别的软件工程师。但即使如此,对于创业公司来说,能否吸引最好的工程师仍然是企业成败关键的因素之一。而最火爆最有前景的创业公司,往往也就能吸引最多天才工程师的加入。 而作为全球最大的职业社交网络LinkedIn,自然能发现好的工程师都去了哪里,从而知道目前哪些创业公司是工程师们梦寐以求的地方。下面这张信息图,就是LinkedIn根据24万工程师的信息,统计出2012年第一季度湾区最火爆的10家创业公司。这些创业公司在LinkedIn的员工注册人数都在500人以下。 排名第一的Arista、第二的Nicira和第七名Violin Memory都是网络和数据存储服务公司。Arista是一家提供超速网络交换机的创业公司,创始人是Sun公司的联合创始人Andreas von Bechtolsheim,公司为实验室、大学和Google等需要高速数据处理中心的组织和机构提供交换机,价格往往是思科同类产品的十分之一。Violin Memory是闪存阵列供应商,也是为大数据存储服务提供硬件支持。 另外三家:第三名Box、第五名Square和第六名Pinterest都是大家所熟知的创业公司,如需了解请点击名称链接查看详细报道。 : )
开始使用移动客户端WORDPRESS
这篇是用android app推送的blog。 使用xml-rpc的协议与http交互,不过估计和netconf类似,这种多用户接口的安全性是不太让人放心的。希望不会被黑第三次。