标签过滤:开放源码

修剪动态重建与libabigail

||c++开源优化

复杂的c++项目经常与长时间的构建时间作斗争。与依赖静态链接相比,将项目分割为多个动态链接组件可以为开发人员提供更快的增量重构和更短的编辑-编译-测试周期,特别是在有大量测试二进制文件的情况下。但是,由于处理传递库依赖关系的方式,构建系统通常无法实现动态增量重构的所有可能收益。红帽的ABI内省库libabigail提供了一种可能的方法来消除对某些类源修改的不必要的传递重链接。

考虑引入官方MongoDB Go驱动程序的社区效应188金宝搏手机客户端安卓下载

||golang司机开源

当你所依赖的开源项目不再满足你的需求时,你会怎么做?当你的选择影响的不仅仅是你自己,而是一个更大的社区,什么原则指导你的决定?

提交补丁通常是第一个选择,但是您要受维护人员的摆布才能接受它们。如果你需要的改变是彻底的,实质性的改变,接受的几率很低。最终,剩下的现实选择只有几个:找到一个替代方案,派生项目,或者编写自己的替代方案。每个依赖于开源的人都在某个时候面临着这个难题。

依托社区多年发展起来的分别去司机对于Mo188金宝搏手机客户端安卓下载ngoDB来说,MongoDB已经开始开发一个全新的、内部开发的、开源的Go驱动程序。我们知道发布一个由公司赞助的替代方案来替代一个成功的社区开发的项目会给用户带来压力和不确定性,所以我们不会轻易做出这个决定。我们仔细考虑了我们的选择将如何影响当前和未来的MongoDB Go用户。188金宝搏手机客户端安卓下载

呈现WinKerberos

||开源pythonkerberos

WinKerberos是一个Python模块,它为Windows上的Python应用程序提供Kerberos工具,在Windows上PyKerberos不起作用。对于使用PyKerberos的客户端应用程序,WinKerberos可以作为Windows上的临时替代。

为什么要为Python编写新的Kerberos模块?

Mong188金宝搏手机客户端安卓下载oDB企业版2.4支持一种新的身份验证机制:Kerberos V5,使用通用安全服务API (GSSAPI)。MongoDB的Python驱动程序PyMongo需要支持这种188金宝搏手机客户端安卓下载新的身份验证机制。

关于在Python应用程序中使用Kerberos的信息并不多,更不用说在Windows上运行的应用程序了。Nick Coghlan 2011年的文章“使用Python Kerberos模块”是当时能得到的最好的信息尼克的文章是关于使用PyKerberos要实现HTTP“协商”身份验证,而MongoDB使用自定义的TCP有线协议,但是使用本文的代码示例、其他一些188金宝搏手机客户端安卓下载源文件和仔细阅读RFC 4752的3.1节我在PyMongo中使用了Kerberos身份验证,几天之后就可以在除Windows之外的任何地方使用了。

PyKerberos是由苹果作为他们开源的一部分写的吗日历和联系人服务器项目。它是一个基于MIT Kerberos V5或Heimdal构建的纯C Python扩展模块,在macOS和Linux上经过了良好的测试。虽然有传言说有人让PyKerberos在Windows上工作,但我们始终不知道他们是如何做到的。

当我们在2013年3月19日发布M188金宝搏手机客户端安卓下载ongoDB Enterprise 2.4时,需要在Windows上支持Kerberos身份验证的PyMongo的用户数量似乎正好为零。2013年5月22日,我们发布了PyKerberos支持的平台上支持Kerberos身份验证的PyMongo 2.5。到2016年,在多次请求在Windows上提供Kerberos支持并尝试使用kerberos-sspi,我们决定编写一个新的Python模块。这个模块将为PyMongo和任何其他需要它的Python项目在Windows上支持Kerberos身份验证。

进入WinKerberos

WinKerberos是一个纯C Python扩展模块,支持Python 2.6、2.7和3.3+。它提供了PyKerberos的大部分客户端API,但使用的是Microsoft的安全支持提供者接口(SSPI)藏在被子里。PyMongo,请求,其他几个项目在Windows上使用WinKerberos作为Kerberos提供者。它是pypi上可用作为预构建的二进制车轮,可以与pip安装,无需C编译器:

安装winkerberos

要向使用PyKerberos进行客户端身份验证的现有应用程序添加Windows支持,请更改:

进口kerberos

:

尝试:导入winkerberos作为kerberos,但ImportError:导入kerberos

如果需要在应用程序中从头开始实现Kerberos身份验证,则需要自述提供一个与WinKerberos或PyKerberos一起使用的示例实现。

帮助我们改进WinKerberos

WinKerberos实现了PyKerberos 0.1版以来PyMongo所需要的所有特性。从那以后,我们又发布了6个版本,增加了对社区要求的特性的支持,以及来自用户的补丁,增加了对的支持SPNEGORFC 5929频道绑定。作为用于Windows的PyKerberos的重新实现,WinKerberos仍然不完整。它缺少一些PyKerberos的客户端函数,比如changePassword和getServerPrincipalDetails,并且没有实现任何服务器API。如果您希望在WinKerberos中看到这些特性,或者您正在向PyKerberos中添加一个应该也存在于WinKerberos中的新特性,我们很乐意接受社区提供的补丁。如果您发现WinKerberos中的bug,或者想申请一个新功能,请提供在Github项目中提交一个票据

使用Jepsen和Evergreen测试线性化:“不停地给我打电话!”

||测试cibuildtogether开源

如果第三方工具证明您的应用程序缺少某个特性,您会做什么呢?将该工具添加到您的持续集成系统中(当然,在添加特性之后)!在我们的例子中,我们添加了线性化读取到MongoDB 3.4188金宝搏手机客户端安卓下载和使用Jepsen来测试它。

Linearizability是什么?

线性化是分布式系统的一个特性,首先由Herlihy和Wing在他们1990年7月的文章中介绍。线性化:并发对象的正确性条件(ACM编程语言和系统学报)。彼得百利可能提供了最容易理解的解释关于线性化:“写作应该是瞬间的。不精确地说,一旦写操作完成,所有以后的读操作(其中“later”由壁钟开始时间定义)都应该返回该写操作的值或以后的写操作的值。一旦读取返回一个特定的值,所有后续读取都应该返回该值或后续写入的值。”

Python中并发DNS的传奇,以及击败邪恶的互斥巨魔

||python开源macosbsd

告诉我们你在Mac和BSD上用Python并发DNS解析的时间。

不,不,你不想听那个故事,我的朋友们。这只不过是些古老的传说。

但是您使Python更具可伸缩性。史蒂夫·乔布斯的传奇故事是由一个有着奇特绰号的神秘巫师唱给你听的!告诉我们!

聚集。我将告诉您我是如何挖掘出一个丢失的秘密的,从旧的枷锁中解放出来的Python,以及如何驱逐一个古老的、可怕的互斥锁巨魔的。

让我们从头开始……

很久以前,在20世纪80年代,伯克利的一群巫师精心设计了一个操作系统。他们以自己的名字命名它:Berkeley Software Distribution,简称188金宝慱官网下载1888bet亚洲体育BSD。他们一代又一代地培育它,使它成长,增加它的特性。一天晚上,他们想出了一个强大的功能,可以将主机名解析为IPv4或IPv6地址。它叫做getaddrinfo。这个功能很强大,但在未来几年,它会变得很危险,因为巫师们没有使getaddrinfo成为线程安全的。

随着时间的推移,BSD产生了许多后代。有FreeBSD, OpenBSD, NetBSD,以及Mac OS x,每个都在不同的时间和不同的方式使其getaddrinfo副本线程安全。一些操作系统保留了记录这些事件的抄写员。一些没有。

因为getaddrinfo被神秘包围着,所以开发跨平台网络库的工匠们不信任它。线程安全吗?通常,他们会雇佣一个互斥木马来保护并防止多个线程并发地使用getaddrinfo。这种库中应用最广泛的是Python自己的套接字模块,它与Python的标准库一起分发。在Mac和其他BSDs上,Python解释器雇佣了一个互斥锁巨魔,它要求每个Python线程在调用getaddrinfo时持有一个特殊的锁。