简单聊聊我如何学英文
前两天参加了一次公司组织的校园女生活动,这次活动希望通过分享一个个发生在我们公司的真实的女生故事帮助在校女大生进行职业规划。在这次活动中,我的角色应该是一个车夫外加手拿小米4的摄影师。在提问环节,有一些女生比较关心到底如何学习英文,而在我公司新入职的毕业生中,这个问题也被普遍问道。这里谈谈我自己的看法和经验。
ThoughtWorks, Chengdu
前两天参加了一次公司组织的校园女生活动,这次活动希望通过分享一个个发生在我们公司的真实的女生故事帮助在校女大生进行职业规划。在这次活动中,我的角色应该是一个车夫外加手拿小米4的摄影师。在提问环节,有一些女生比较关心到底如何学习英文,而在我公司新入职的毕业生中,这个问题也被普遍问道。这里谈谈我自己的看法和经验。
当作为程序员的你加入一个新项目,又或是因为兴趣爱好在github发现一个有趣的项目时,通常我们第一件需要做的事情就是检查自己的环境是不是符合这个应用的需要,因为我们希望在本地先把它运行起来。做的好的应用会为你提供非常完备的脚本帮你完成所有准备环境需要的工作,但是,有更多的应用通常是提供类似tutorial的说明文档,你需要照着它一步步的做下去,如果中间出了问题,那么,你会看看有没有FAQ环节,如果有就祈祷希望在这个环节可以Cover你的问题。不过,通常不幸的事情总会发生,接着我们可能会因为环境问题而耗费大量的时间。而当准备环境变成一个团队都需要做的事情的时候,这个成本就可想而知了。
Docker作为轻量级的虚拟化技术已经发展到了1.1的版本,然而从版本0.3.4开始,它就已经开始提供一套 Remote API。这套API是完全基于RESTful方式组织和设计的,通过它,常规的Docker操作都可以完成,例如:可以通过发送POST请求到/container/create创建一个Container,通过发送GET请求到/container/{id}/json对某个Container执行inspect操作等等。这就为我们提供一种可以远程操作Docker的方式。
为什么突然想到MessageFormat呢?原因是今天一个同事问我:在Spring的properties文件中,为什么有的时候单引号会被过滤掉?这个问题的答案是:Spring在处理properties时,会先判断调用时是否传入参数,如果参数为空,那么Spring将不会调用MessageFormat而直接返回字符串本身;如果参数列表不为空,那么,Spring会用MessageFormat处理消息的国际化以及占位符的替换,这个时候,由于单引号在MessageFormat是特殊字符,所以,需要同时使用两个单引号来显示。
第一次接触防御式编程这个概念还是上大学时候,当时花了99块钱买了一本《代码大全》。其中有一章就是介绍什么是防御式编程,下面就是书中对于它的描述:
很多种编程语言都提供了问号表达式,它是一种if-else的简易替代方案,我们可以暂且叫它选择性问号表达式。如果你的判断逻辑十分简单,比如像下面的代码:
如果你曾经做个几个中等规模的Java企业级应用,那么,我假设你一定会与至少一个外部服务集成,当前我所在的项目就有至少一个这样的服务。这个服务是比较典型的基于SOAP的WebService,它对外提供WSDL和XSD文件,作为客户端,你可以使用像CXF这样的工具,自动生成该服务的Domain Object(DO)和调用该服务的工具类。直到这一步,一切都很好,你不需要做太多的事情,仅仅是使用几个工具就已经可以和这个服务通信了。
先来看看JSR335是如何定义它的:
在软件行业,或者说在程序员这个族群中,流行着这样一句话:不要重复造轮子。相对好的意思是应该尽可能用现有的实现来解决问题,而不太好的意思就是你太笨了,有现成的还要重写,醒醒吧?然而,纵观整个开源社区,几乎每段时间总会有各种各样的轮子被重复的造出来,不管是DI容器也好,还是MVC框架也罢。虽说随着语言的发展,有些新的轮子确实比旧的轮子优秀,然而大部分轮子都很快的销声匿迹了。当作为一个旁观者看到这样一番景象时,“重复造轮子是不好的”这个概念就会在你的大脑中被慢慢的强化,于是渐渐的,你就变成一个轮子的搜寻者,而放弃了作为一个轮子的创造者的机会。