现在的位置: 首页 > 综合 > 正文

转 推荐两个 Google 的开源项目

2013年03月08日 ⁄ 综合 ⁄ 共 2028字 ⁄ 字号 评论关闭
 

最近 Google 放出了两个重量级的开源项目 ,一个是 Google Test, 用来测试 C++ 程序的测试框架;一个是 Protocol Buffers, 用来交换结构化数据。这两个工具在 Google 内部应用相当广泛,几乎所有的 C++ 程序都使用 Google Test 来测试;几乎所有的数据交换都是 Protocol Buffers. 延伸阅读:

~~~~~~~~~~~~~~~~ 我是分割线,下面是译文 ~~~~~~~~~~~~~~~~~

原文:http://googletesting.blogspot.com/2008/07/announcing-new-google-c-testing.html

我们都知道写自动测试来覆盖我们代码的重要性。为了让大家更容易的写好 C++ 的测试,今天我们把 Google C++ Testing Framework (简称 Google Test) 开源发布了。成千上万的 Google 员工都在使用这个库来测试我们的 C++ 程序。这个项目的亮点包括:

  • Google Test 是可移植的:它可以在不同平台上使用(Linux, Windows, Mac OS X, 等等);可以兼容多个版本的 GCC 和 MSVC 编译器;可以打开或关闭异常。它甚至可以用在嵌入式系统中,例如 Windows CE 和 Symbian. Google Test 现已支持 Linux Autotools, 对于其他系统的构建工具和 test runners 还在开发中。
  • Google Test 支持致命的和非致命的断言。对于非致命的断言,测试会在它失败后继续运行。这可以使我们在一个编辑-编译-测试的周期中发现更多的问题。
  • Google Test 为了常用的测试需求提供了很多现成的断言,对于不那么常用的情况,你可以很容易的定义新的断言
  • 在 Linux 下,你可以写死亡测试来保证你的程序以预计的方式崩溃。
  • 因为 Google Test 是基于流行的 xUnit 架构的,因此如果你以前用过任何类似于 xUnit 的测试框架,Google Test 也很容易学会。


了解 Google Test 的基础知识并上手只需要大约 10 分钟的时间。请关注本 blog 来了解更多关于 Google Test 的信息。

如果您有任何问题和反馈,请发送到:googletestframework@googlegroups.com (Google Test 讨论组). See you there!

~~~~~~~~~~~~~~~~ 我还是分割线,下面是第二篇译文 ~~~~~~~~~~~~~~~

原文:http://google-opensource.blogspot.com/2008/07/protocol-buffers-googles-data.html

在 Google, 我们的使命是整合全世界的信息。我们使用数千种不同的数据格式来表示服务器之间传递的消息,仓库中的索引记录,三维的数据集合,等等。绝大多数的这些格式都是结构化的,而不是扁平的。这就产生了一个重要的问题:我们怎么序列化它们呢?

XML? 不行。XML 并没有打算在这种规模的应用中表现的足够高效。当你的所有机器和网络连接都跑到性能的极限的时候,XML 是一个非常昂贵的东东。也不用说,写代码来操作 DOM 树有时也不是那么容易。

直接把内存中的二进制数据丢到网络中传递?这也不行。当我们换上新版本的服务器的时候,它总是需要先和旧版本的服务器打交道。新的服务器需要读取旧版服务器产生的数据,反之亦然,即使你添加或删除了一些字段。当涉及到磁盘数据的时候,这就更加重要。而且我们还有一些代码是用 Java 和 Python 写的,这就需要一个可移植的解决方案。

为每个数据结构手写解析和序列化的代码?我们曾经这么干过。不用说,这持续不了多长时间。当你的代码库里存在上万种不同的需要序列化的数据结构的时候,你没法全部手写。

因此,我们开发了 Protocol Buffers. Protocol Buffers 允许你用一套专门的语言来定义简单的数据结构,然后把它们编译成你选择的语言中的类来表示这些数据结构。这些类有完整的、深度优化过的代码来把你的消息序列化为一个非常紧凑的的格式。最好的是,这些类很容易使用:每个字段都有一个简单的 ‘get’ 和 ’set’ 方法,然后当你准备好的时候,把整个数据结构序列化到(或者解析回)一个 byte 数组或者 I/O 流仅仅需要一个方法调用。

OK, 我知道你在想什么:“又一个 IDL?” 是的,你可以这么说。但是,IDL 通常来说都以它的令人绝望的复杂而出名。而在另一方面,Protocol Buffers 的一个主要的设计目标就是简洁。我们坚持简单的可以解决多数问题的列表-记录模型,并坚持追求边际效用递减,我们相信我们创造了不臃肿而又很强大的东西。并且,是的,它很快——至少比 XML 快上一个数量级。

现在,我们把 Protocol Buffers 贡献给开源社区。我们已经看到这样一个解决方案可以有多么的高效,我们希望更多的人来利用它。来看一看文档下载代码,并且告诉我们你在想什么

抱歉!评论已关闭.