建立属于你的智能客服

随着人工智能的发展,对话式交互穿着语音和文本的外衣,携手模糊搜索引擎,怀抱计算科学和语言学的内核,带着定制化推荐的花环,驾着深度学习和大数据的马车乘风破浪而来——我们就知道,大约是时候了。至少,我们已经可以十分钟内创造自己的对话式客服了。今天的文章大约分三章,历史,今天(chatbot api)和未来(深度学习和智能问答)。希望在今天的session之后,这三张图片对我们来说都不再神秘。

写给新人的一封信

又是一年毕业季,回想起自己从校园到职场的过渡,也曾有过许多迷茫与困惑。而今已经踏入软件行业四年,自己也积累了一定的经验与认知,因此想要给想要进入这个行业以及已经身处其中的新人们分享一些Tips。
这里的新人包含在校的科班/非科班学生、半途转向培训班的培训生以及正在纠结于是否要进入软件行业的弟弟妹妹们。当然,这其中还包括一只脚已经踏进软件行业,却心存迷惘的探索者,正如2013年的我。

应用敏感信息的6个配置原则

无论是微服务还是单体应用,往往都会用到很多配置信息。在众多的配置信息中,有一类非常敏感,例如数据库账号密码、API Key、Service Account等。由于其特殊性,这些配置信息一旦泄露出去就很可能会使得应用遭到黑客攻击,例如数据库账号密码泄露可能导致“拖库”,甚至数据丢失。

在实际开发过程中,有几种常见的敏感配置信息管理方式,其优缺点各不相同,让我们依次来看看。

从三明治到六边形

软件的核心复杂度在于业务本身,我们需要对业务本身非常熟悉才可能正确的为业务建模。通过统一的语言我们可以编写出表意而且易于和业务人员交流的模型。

另一方面模型应该尽可能的和基础设施(比如JSON/XML的,数据库存储,通信机制等)分离开。这样一来可以很容易用mock的方式来解耦模型和基础设施,从而更容易测试和修改,二来我们的领域模型也更独立,更精简,在适应新的需求时修改也会更容易。

庖丁解牛:产品需求分析

在庄子的《南华经》中有一则寓言。说是有位叫丁的厨师,替梁惠王杀牛,其技法之娴熟,有行云流水一般的顺畅感。惠王就问他为什么有如此高超的技术。他回答说:“臣所喜好的是『道』,早就超越所谓的技术了。最初臣杀牛的时候,眼里看到的都是『完整的牛』;三年之后眼中就再看不到『完整的牛』。到了现在,臣以精神接触,而不用眼睛看牛,视觉感官停止了而精神在活动。按天然的道理,击入牛筋骨的缝隙,顺着筋骨的空洞进刀,依照它本来的构造,牛的筋骨接合的地方,臣都未以刀刃碰到过,而何况是大骨头呢!”

同样的道理。当我们在面对一头牛--复杂的业务需求时,如果不得其构造,不明其法,是不能够很好的拆解的。只有对需求深入了解,按照其本来的构造,在筋骨的缝隙处下刀,才能拆出不错的用户故事。今天在这里,就给大家介绍一些解牛之法。非『道』,唯术尔。

大型分布式团队的代码版本管理

介绍这个话题,有两个原因:
1、从开始工作到现在,我经历过从没有代码版本管理到代码集中式管理,到分布式管理,我深刻体会到它在软件开发过程中的重要性;
2、我在工作中遇到很多客户都存在对于代码版本管理的各种问题,困惑和不同的需求。
所以我希望将我在这个方面的经验分享给更多人,希望能帮助更多的团队解决在代码版本控制方面的问题和疑惑。