一台小霸王学习机让他走上软件之路,一份热爱让他练就Netty实战
Posted 异步图书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一台小霸王学习机让他走上软件之路,一份热爱让他练就Netty实战相关的知识,希望对你有一定的参考价值。
引子
“书中自有黄金屋,书中自有颜如玉”,这句话从小我老爸就给我讲,当然那个时候真的以为是黄金做的屋子以及很多玉件。后来慢慢长大了,也渐渐懂得了这背后的意思。当然他还给我说过:“书山有路勤为径,学海无涯苦作舟”,以及“少壮不努力,老大徒伤悲”。怎么说呢,虽然我父亲的文化程度并不是特别高,但是他教会我了踏实和努力,以及“好读书、读好书、书读好”。至于我妈妈,她特别的和蔼,当然也有双子座的太多特质,就是聪明、敏感和脆弱和文艺。她最大的爱好,其实是看书。
小时候家里条件并不是特别好,同村有几个玩伴有了小霸王学习机,每天都在打《顶蘑菇》、《魂斗罗》、《冒险岛》还有《坦克大战》,一堆人围着看,当然我们眼巴巴的只能排着队或者拿鸡蛋和他们换游戏时间咯——瞧他们多有商业头脑。从那时起,我最大的理想就是有个小霸王学习机。当然那个时候家长也不同意给我买,一是没太多的钱,二是耽误学习。可惜啊,天助我也,有一天上学的时候我竟然捡钱了,虽然和同学一起的,不过我眼神儿好,看到了一张 50 的,然后我就加快了脚步,跑到了他们前面,几步路又是一张 50 的,后来还有一张 20 和一张 10 元的纸币。当时对我来说可是天文数字,我的小心脏扑通扑通的跳。我也不去学校了,也不告诉和我一起同行的同学,当然我也没有告诉警察叔叔。相反的,我给同行的同学说,我作业本没有带,然后我如同脱弓的箭一样,飞驰到家了。那条路多年都没变,是山路,回家的路都是下坡的,所以那个速度,我真是终身难忘。回家后,我一把把我妈妈抱住,我说妈妈我捡钱了!
那个时候 130 块钱还是很多的,然后我妈妈第二次赶集的时候给我买了一个小霸王 105 ,剩下的钱买了一袋化肥和一斤肉,据说捡来的钱都得吃掉的,不过后来因为没有完全吃掉,我家养的猪GG了。
也是那个小霸王学习机让我第一次接触到了编程,那个时候估计我认识键盘上的也就那几个数字和加减号了。至于什么ABC,都是些什么玩意儿。
那个时候游戏卡带挺贵的,后来附赠的说明书中有介绍QBASIC,介绍说可以用来写游戏玩儿,所以我就按照书中的代码清单“逐字输入”了,用一个手指,一个字母一个字母地输入。我还记得后来那个小人儿在屏幕上走来走去的时候,我的高兴劲儿,当然,和实际具有游戏性的游戏差得还是太远。
后来我初中高中都沉迷计算机和网络游戏了,也是班上的计算机课代表。
再后来大学我选择了软件工程,并且在上海的建筑工地的某个暑假看了《Java编程思想》,从此步入了Java世界。再后来又搞android,并且因为工作接触到了Netty。
惬意
我是个爱钻研的人,所以对于自己不太懂的,又特别好奇的事物,总是想要搞明白。这份热情,也激发了我对Netty源代码的学习,如同在《Netty实战》的“内容简介”中所提到的那些知识,其实都是我当时欠缺的,所以直接学习 Netty 源代码,我还是碰壁很多的。不过怎么说呢,缺钙补钙、缺铁补铁,我在学习的过程中也不断地充实自己的知识,直到我后来在生产中更好地利用 Netty,发现问题,并且能够提出改进。其实,最开始我连Maven都不会用,还各种拷贝jar文件呢,当然在我为Netty做出贡献之前,我还买了一本《Maven实战》,好好学习呢。
Netty的源代码、Github上的讨论、社区的文档和博客都为我提供了充分的养分,并且如同我在书中提到的,Netty和Akka其实是对我影响很大的两个框架。我从这两个框架中学习到了太多的东西,优秀的框架设计、良好的软件工程、精巧的逻辑,每个小的点和他们的整体都是那么的充满艺术和美感。社区,特别是主要的维护者也特别热情,基本上很多细小的、看起来很傻的问题,别人都会回答你。我还记得现在看起来我当时问过最傻的问题是,那么多instanceOf不会影响性能么?可是就是这样的问题,Trustin Lee也给出了细致的回答。
毕业,不是学习的终点;工作,才是学习的起点。
随着我对Netty深入,并且因为工作上创造性的机会,我得以在很多的场景下使用Netty,并且在我之前的Leader的带领下基于几个RFC和一些论文搞了一个P2P的文件服务器、视频、聊天还有Android客户端,真的是麻雀虽小五脏俱全。再后来我又因为工作需要,接触到了Play,并且因为Play了解了Akka和Scala,并且发现了我真正的热情所在。是的,我爱Scala,因为它满足了我对编程语言的幻想,我也爱Netty,它让我感受到高性能网络编程也不过如此,美味佳肴。当然我更爱的是Akka,它给了我更大更宽广的视野,并且让我感受到了并发编程的乐趣。
虽然我后面主要都在生产上实践Akka的应用,可是我对Netty的热爱却从来没有停止过,我非常希望可以和社区一起分享和成长。后来偶然的机会,也是在Scala群,一次讨论中我遇到了臧秀涛,在我得知了他已经有了多本译作后,我就主动地联系了他,了解了一些和出版相关的问题,他也很乐于助人,并将我引荐给了杨海玲老师,并且我也因此有幸能够翻译这本《Netty实战》。
也许这就是所谓的蝴蝶效应吧,如果多年以前,我没有捡到钱,也没有那么不听警察叔叔的话,没有购买小霸王学习机等,我今天估计也不会在夜深人静的时候,找点时间,继续在和小霸王当年的手感差不多的键盘上,键入这段文字了。
时光机
弹指一瞬,恍如隔世,虽然没有那么长,但是整个翻译过程真的太长太长了,至少给我的心的尺度来说,是这样的。从北京翻译开始,在北京过了一个夏天、一个冬天,再到杭州继续,期间翻译也因为太忙,或者LOL这个游戏太坑了,或者老婆孩子暑假来了,或者各种各样的理由,其实速度并不好。当然给我的感受呢,因为是从MEAP版本开始的,后来原书的改动太大了,结果 1-7 章几乎是完全重新翻译了一遍,再后来又统一译法、口吻等杂七杂八又搞了几遍,拖拖拉拉的,终于在外版正式定稿后一年交稿了,然后好了,又该过年了。收年后来又是:预排、一审、二审、接着就是三校三审。在这个期间杨海玲老师给了我很多指导,因为毕竟作为译者,对于出版的流程并不熟悉,以为很简单,其实啊,编辑们的交流和勘误等都是在纸样上进行的。说实话,给我的感觉就是震撼和辛苦。
后来为了让读者能够更加早的知道这本书并且拿到本书,又开始了在京东和异步社区上的预售,可以说每一个字,每一行文案,杨老师都会考虑很久。不管是书籍本身的,还是书籍本身相关的宣导性文案。作为同样的“文字工作者”(写代码也算吧),我不得不敬佩她的专业态度。比如标点符号,如果我用错了,或者提出疑问来,她都会给出详实的指导,以及相关的参考资料。这让我在参与本书的翻译过程中,不但自己更加好地学习了本书,同样也提高了我个人各方面的水平,关于协作、责任、相信以及专业。
后来预售了,又是准备相关的代码清单——中文版的、英文版的(已经合并到了上游)以及答疑,以及漫长的等待,特别是今天早上,不对,昨天早上看到有北京的读者在群里晒自己已经收到了图书的时候,我真的很感动,虽然我自己都没有收到。因为出版社在北京,印刷厂也在北京,自然近水楼台先得月了,这么长时间、这么多人的劳动(杨老师、编辑、译者、原作者、校对老师、和我一起Review的朋友们、出版社的发行老师等),终于在一张晒单照上,可以画一个句号并且新起一段了。
感动
除了我对于杨海玲老师的信任以及包容的感激外,我还想感谢这本书背后的工作者,以及原作者Norman在我多次骚扰后依然和我积极沟通答疑。当然我更加想要感谢的是帮我一起review这本书的早期译稿的朋友们。他们中的很多人不止一遍的看过了译稿,并且给出了很多颇有见地的意见,这些意见大部分都是一针见血的,也有少部分我们会扯上半天,最后越辩越明。
特别要感谢的就是ctao、beck、兔子、DDS、frank、wrx以及Unexpectable,他们给出了很多非常非常棒意见,当然还有Hawstein,他也快速地帮我定位了一些问题,还有阿里的忘尘、宫博以及为本书中文版写序的北纬大大以及发现了本书第一版第一个勘误的断岭等。如果没有他们,可能本书肯定不会有现在的这个样子,当然,我也要感谢Play和Akka群的各位群友们,我总是给他们发一些和该群的主题并不是很有关系的疑问。其实都是关于译法的,感谢他们的包容和理解,他们也都不厌其烦的给我他们的意见。甚至包括他们对最终定价的建议。感谢你们,我的群友们。
当然我也要感谢我的家人,感谢他们的支持和理解,翻译一本书,以前以为很简单,实际上我这两年老公没做好,爸爸没做好,儿子也没做好。真的很感谢我的家人。
还要感谢的是,在本书刚刚预售后,中生代微信群的群友的帮忙,他们甚至制作了二维码。还有其他帮忙宣传这本书的朋友们,当然更需要感谢的是,不嫌麻烦在系统上提交勘误的朋友们,哪怕是电子版的细小排版问题,还是我那个“百密一疏”的把“2011”搞成了“2001”的问题,你们都巨大地提高了本书的质量,并且帮助了后来的读者。
后记
这本书虽然是译作,可是中文版我们也没有丝毫的含糊,至少作为译者我还是尽力了,毕竟是书,马虎不得。具体的我们在下面的几个方面做了改进:
本书中的内容已经结合了国内外的勘误了,即已有的错误不会再次出现。
对于原版内容中的一些未被社区发现的错误,也和作者进行了沟通,并且修正了。
本书对于英文版中的
channel
、handler
、以及pipeline
等都在合适的上下文中统一替换为了对应的程序概念,即Channel
和ChannelHandler
或者ChannelInboundHandler
或者ChannelOutboundHandler
以及ChannelPipeline
。但是在部分上下文中,指代更加通用的描述的时候还是使用的处理器
和流水线
这样的描述,从而大大地降低了读者的心智负担。本书对应的代码清单同时提供了英文版本的对照和中文版本的对照,其中英文版本已经合并到了上游,和原书中的排版 1-1 进行对照,并且通过
package-info.java
给出了每个代码清单对应的代码块的快速转跳,这个需要您在阅读源码的同时借助于IDE的帮助。同时针对于中文版,我们在代码清单中不但结合本书中文版 1-1 进行了排版,同时还加入了书中的代码清单的注释和讲解,以方便读者在查看代码清单的时候,能够很方便的得到上下文,虽然会增加一点读取上的负担,但是免去了重新看书中箭头说明的必要。本书对应的代码清单是在Github上维护的,已经更新到了Netty 4.1.10-final。如果大家有什么疑问,也可以在Github上进行联系。
当然购买本书,也会请原书的作者之一——Norman,现在的Netty的Tech Leader喝一瓶可乐或者速溶咖啡。同时也相当于帮助了Netty项目本身,毕竟他老爱说“买我书吧,请我喝咖啡”(Buy my book,make me rich)。
本书的电子版的勘误非常快,而本书纸质版的勘误是一印一勘。
本书对应的代码清单会一直更新,希望能够带给您最鲜活的阅读体验。
结语
最后当然是,感谢所有购买了这本书的读者,以及整个 Netty 社区,希望大家一起努力,构建更加高性能、弹性以及更具有适应性的反应式系统,来构建更加美好的未来,当然也包括更加成功的职业生涯。当然我也鼓励大家更多的回馈和参与开源社区,哪怕是改一个typo,或者发现问题提出问题,这些都是贡献,也是我们和国际接轨,和社区进行双向互补的机会,这必然会让您在专业和个人方面都得到成长。
当然,最后还是,感谢阅读本书,我自己也等不及了,明天我也将收到我自己的纸质书了,加油,社区!
(点击图片,立即阅读)
Marvin Allen Wolfthal(马文•艾伦•沃尔夫泰尔)
“Netty之父”Trustin Lee作序推荐!
阿里巴巴中间件高级技术专家罗毅为本书中文版作序推荐!
极实用的Netty技术书,附带行业一线公司的案例研究 ,系统而详细地介绍了Netty的各个方面并附带了即用型的优质示例 !
以上是关于一台小霸王学习机让他走上软件之路,一份热爱让他练就Netty实战的主要内容,如果未能解决你的问题,请参考以下文章
六周年嘉宾 | Marvin(Italy)& Naylet(Cuba)