0%

python json serializable

在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题。Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化。但是这种序列化仅支持python内置的基本类型,对于自定义的类,我们将得到Object of type A is not JSON serializable的错误。

阅读全文 »

我们每天都在用某种编程语言写代码,但是我们真的了解它们是如何工作的吗?代码是如何转换为计算机可以识别的机器码的呢?

了解编程语言的工作原理,不仅可以让我们深入理解某一种编程语言,某些时候还可以帮助以一种更优雅的方式实现想要的功能。比如我们平时谈论很多的DSL(Domain Specific Language),在定义了DSL之后,我们如何做更进一步的支持呢?事实上我们还可以实现DSL的自动错误检查,还可以将其转化为某种可以执行的程序等等。还比如我们经常遇到的模式识别问题,状态机相关问题等等。对于这些问题,编程语言的实现原理可以给我们很多启示。

阅读全文 »

随着机器学习的流行,Python近几年的热度一直在上升,再加上Python本身语言设计的简洁直观和易用,Python越来越得到开发者的青睐。但是我们却时常听说Python性能低,不如java,更比不上C。在这些抱怨背后到底是什么原因呢?Python真的性能低下吗?有没有什么优化的办法呢?

对于单纯的复杂计算过程,Python性能是比较低的,这是由于Python本身在设计时首要考虑的是如何快速完成工作(get things done),所以在性能上难免会有一定的牺牲。但是由于python和c有着非常好的互操作性,这类问题都可以通过实现一个c语言的版本来解决。当然从代码编写技巧的角度也有一定的优化空间,如果我们想做极致的性能优化,可以参考官方的性能优化技巧

阅读全文 »

中台的概念从阿里17年开始提出来就快速成为了年度IT热词。阿里这样体量的企业的成功无疑论证了中台建设的正确性,让大家对于中台这样的解决方案跃跃欲试。而阿里顺理成章成为了中台的最好代言人,大家学习中台的榜样。那么什么是中台?事实上,对于中台的定义大家也一直在探讨中。阿里内部业务系统有其独有的特点,诞生其中的中台自然也带着阿里独有的特征,这一点从《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》这本书中我们也能读出来。直接复制阿里的中台方案真的能解决广大企业中的共性问题吗?可能未必,这应该也是当前大家关于数据中台有着各种各样的解读的原因。

阅读全文 »

随着微服务和DDD的兴起,领域这个词逐渐成为了一个大家每天讨论中的高频词。对于经验稍欠缺的同学们,刚接触领域这个词,总会感觉有点神秘。到底什么算是一个领域呢?我们经常在谈论领域模型、领域服务、领域事件、领域边界等等,如果对领域概念没有一个清晰的认识,在接受这些相关概念上想必也会遇到阻碍。本文将结合我个人的理解以及一些实践经验来谈谈对这个概念的理解,希望能帮助大家更好的认识领域,进而更好的理解和运用相关的概念,最终更好的指导软件开发实践。

阅读全文 »

我时常在项目中听到一些经验稍欠缺的开发人员在Code Review时这么讲:

这里为了方便测试我抽取了一个纯函数,这个函数包含了主要的业务逻辑,测试覆盖率也比较高,我们可以认为这一部分质量不错。
使用这个函数的地方由于集成度高不好测试,我们就不做自动化测试了。

他的代码可能写成下面这样:

1
2
3
4
5
6
7
8
9
10
// some_file.ts
function someEasyToTestMethod() {
...
}

class A {
someMethod() {
someEasyToTestMethod();
}
}
阅读全文 »

坑说:Jasmineany(Object)不能替代any({premitive type}),可以考虑使用anything()

坑位:使用toHaveBeenCalledWith测试函数被调用时的参数。

当参数列表太长(如:func(p1, p2, p3){...})的时候,往往只需要验证某一部分参数正确性,这个时候使用any()

阅读全文 »

最近在一个网站上,看到了很炫的网页特效:视频背景透明。该网址是:http://videostir.com/。他们还为用户提供了制作透明视频的服务。用户只需要上传他们要求的格式的视频,就可以生成一个透明的视频。

正如该网站所演示的,这种视频作为网站的引导,效果非常赞,互动的感觉非常强烈。

阅读全文 »

概述

From Martin Fowler microservices:

微服务架构即是采用一组小服务来构建应用的方法。
每个服务运行在独立的进程中,不同服务通过一些轻量级交互机制来通信, 例如 RPC、HTTP 等。
服务围绕业务能力来构建,并依赖自动部署机制来独立部署。

From Sam Newman [Building Microservices]:

You should instead think of Microservices as a specific approach for SOA in the same way that XP or Scrum are specific approaches for Agile software development.

微服务即SOA的一种实现方式。企业服务总线(ESB)设计的失败给SOA带上了负面的标签。

阅读全文 »