Power BI 中 MongoDB 数据的实时分析

power BI 正在扩展自助服务数据准备, 以帮助业务分析师从大数据中提取见解并引入企业 BI 平台功能。使用最近的更新, Power BI 已使连接到更多的数据源比以往任何时候都多。也就是说, 没有任何产品能够执行所有操作, 这就是 CData Power BI 连接器的位置。 使用 CData, 您可以从120 多个支持的源(即 CRM 和市场自动化到大数据和 NoSQL) 中的任何一个 DirectQuery, 获取 Power BI 中的数据的实时连接。使用 CData 连接器, 您可以快速访问 MongoDB 数据 (比任何其他连接器更快), 并轻松地利用连接器的内置建模和数据拼合功能来创建无架构数据的类似表的模型,可以从 power BI 中查看、报告和分析-无需代码或数据的策划。 使 MongoDB … Read More

Featured Post

旋转沃拉鲁集群很容易

哦, 不, 更多的数据! 上个月, 我们采用了长时间运行的熊猫分类器, 利用沃拉鲁的并行化功能使其运行速度更快。这一次, 我们想把它踢到一个缺口, 看看我们是否可以继续扩大, 以满足更高的需求。我们还希望尽可能节约成本: 根据需要提供基础结构, 并在完成处理后对其进行预配置。 如果你不想阅读上面链接的帖子, 这里有一个简短的情况总结: 每个小时都有一份你正在运行的批处理作业。此作业接收 CSV 文件, 并使用基于熊猫的算法对文件的每一行进行分类。作业的运行时开始接近一小时标记, 并且担心当输入数据超过特定点时, 管道将断开。 在博客文章中, 我们展示了如何将输入数据分割成较小的数据框, 并在一个特殊的沃拉鲁集群中的工作人员之间分发它们, 在一个物理机器上运行。以这种方式并行工作会给我们很多时间, 并且批处理作业可以继续处理不断增加的数据量。 当然, 我们可以在合理的时间内处理100万行, 但如果数据集按数量级增长, 该怎么办?通过在本地沃拉鲁群集上运行我们的分类器, 我们能够将100万行的处理时间缩短到16分钟, 从而在分配的时间间隔内安装一个小时。但是, 如果输入数据, 比方说, 10x 更多, 我们将有一个困难的时间处理它在本地。 让我们看看如何通过按需启动基于云的沃拉鲁群集、运行作业、收集数据和关闭群集, 以完全自动化的方式来跟踪数据增长。 贸易工具 沃拉鲁的一个重要想法是, 您的应用程序不必知道它是否在一个进程、多个本地进程或包含许多物理计算机的分布式系统上运行。从这个意义上讲, … Read More

Featured Post

为什么DevOps和SRE职位这么难招人?

Reddit上一位网友有这样的困惑: 显然,在任何领域都没有足够优秀的工程师,但是,为什么DevOps / SRE人才特别难找? 这个问题引发了大家的讨论,其中的回答总结起来大致有这些点: “DevOps工程师”:被过度使用的术语

Featured Post

V神:应用Zcash技术,以太坊能扩展到500tx/s

导读:以太坊(Ethereum)是一种开源的、图灵完备的、智能合约公用区块链,基于区块链账本用于合约的处理和执行,使得任何人都能够创建合约和去中心化应用,并在其中自有定义所有权规则、交易方式和状态转换函数。Ethereum 由 Vitalik Buterin (绰号“V 神”)所创立并于 2014 年 7 月进行 ICO,以太坊内置名为 Ether (以太币,ETH)的加密货币。今天,V神表示,应用Zcash技术,以太坊能够达到每秒500tx的规模。Zcash是首个使用零知识证明机制的区块链系统,它可提供完全的支付保密性,同时仍能够使用公有区块链来维护一个去中心化网络。 为了在不使用Plasma等第二层技术的情况下实现约3200%的交易增长,以太网联合创始人Vitalik Buterin计划扩大以太坊的网络规模。 Buterin表示:ZK-SNARKS可以帮助ETH扩展到500 tx/s

Featured Post

以Chef和Ansible为例快速入门服务器配置

这篇文章讨论了如何在我们的环境中安装和配置软件,这个任务通常被称为服务器配置(Server Provisioning)。 服务器配置 在开始介绍现代化的工具之前,我们来看看最基本且经过实战考验的服务器配置工具:shell脚本。在Chef、Ansible或Puppet出现之前,很多运营团队使用Bash来配置服务器(在Windows上则使用PowerShell脚本)。 例如,如果想在运行Ubuntu的Amazon EC2实例上安装Nginx,可以使用以下脚本(install-nginx.sh): #!/bin/sh ssh -t ubuntu@$1 sudo apt-get upgrade ssh -t ubuntu@$1 sudo apt-get -y install nginx 我们可以使用shell脚本来配置服务器上的所有东西。据我所知,所有主流的配置工具都使用了基于安全传输层(如SSH)的shell命令或PowerShell(Chef可能是个例外)。即使你使用了配置工具,在某些时候也需要用到脚本。因此,当你开始使用配置工具(如Chef或Ansible)时,学习如何使用基本的shell脚本也会为你带来很多好处。 你可能会问自己,为什么在shell脚本已经可以完成所有工作的同时还要学习配置工具?很多环境已经使用shell脚本进行服务器配置,那么为什么要使用配置工具代替它们? 首先,shell脚本通常使用的是声明性语法。shell脚本通过运行命令序列来安装软件,而配置工具只需要指定服务器应该安装哪些软件,这样就可以使用相同的代码在不同的操作系统上、使用不同的包管理器以及指定不同的版本来安装和配置相同的软件。 其次,配置工具通常会提供用于组织基础设施的方式。虽然使用shell脚本也可以做到这一点,但配置工具通常会提供更简洁明了的方案。因为是行业标准,开发人员可以更轻松地找出QA环境中哪些服务器运行RabbitMQ。 第三,每个主要的配置工具都有一个蓬勃发展的社区,他们构建可复用的模块来安装大多数开源软件。你可以直接在模块配置中指定内存限制,而不需要记住Postgres配置文件在哪里,这样可以节省很多时间。 当然,原因还有很多,这里就不一一例举了。尽管学习曲线有点陡峭,但学习配置工具仍然是值得的。与shell脚本相比,配置工具更容易使用,便于思考,也更容易维护。 关于命名 学习使用Chef(服务器配置工具)的前几周给我留下了深刻的印象。入门指南展示了如何创建一个“recipe”,其中包含安装或配置软件的说明,我能够理解这种比喻背后的含义。recipe必须存在于“cookbook”中,这是有道理的。然后你在“kitchen”里测试cookbook,但我开始有点怀疑了。 这种比喻有点令人感到困惑,于是我决定去看一下其他工具,如Ansible。Ansible文档的第一页介绍了“playbook”的概念,而playbook包含一系列“play”。 那么,这些问题很重要吗?当然很重要了,因为在学习配置工具之前,你应该知道,它们很有可能会引入大量令人费解的术语。即使是为了完成基本的任务,你也必须重新学习很多术语。如果你是刚开始学习配置工具,我强烈建议你随时写下这些术语定义,你还有很多东西要学。 每个软件开发人员都会为现有的单词创建不同的含义,他们甚至还会发明一些单词,比如“uninitialize”和“unregister”。这已经成为软件开发的一部分。 我会尽量用大家熟悉的术语来解释这些工具。 配置管理 你决定使用花哨的配置工具在远程服务器上安装Nginx。在开始设置数据库备份节点前,一切都很顺利。你已经编写了MySQL主服务器的配置文件,但是你不太确定如何配置MySQL从服务器的内部DNS地址。这个时候配置管理就派上用场了。 在设置服务器时,最好可以将应用程序视为由两部分组成:不可变部分(通常是代码或编译的二进制文件)和可变部分(通常是配置文件或环境变量)。大部分由社区创建的模块默认情况下会安装二进制文件,并提供尽可能合理的配置,而且会为我们暴露出一些属性,方便对其进行覆盖。 这些属性通常包含特定于用户环境的值。大多数配置工具都为用户提供了一种机制,通过模板将特定于环境的值插入到配置文件中,或直接插入到环境变量中。 你可以使用配置工具提供的配置管理来配置MySQL主服务器的配置文件,然后在其中配置从服务器。 Secret管理 这样就可以解决上述的问题,但后来发现,你必须上传AWS凭证才能让MySQL从服务器访问S3。你知道不能直接将这些凭证提交到代码库中,因此这些凭证只能存在于你的机器和NSA服务器上。 … Read More

Featured Post

使用反应式领域驱动设计来解决不确定性

关键要点 反应式的分布式应用程序必须知道如何处理有关消息传递的不确定性,包括多次传递和无序传递。 领域驱动设计通过良好的建模来管理不确定性。 处理不确定性的规则必须在领域专家同意的业务逻辑中定义,而不是埋没在技术实现中。 消息去重器或重排器的实现最初看起来可能很简单,但在实际操作时会变得困难。 当可以使用通用语言来定义规则时,实现将变得非常简单且健壮。 我认为应该通过领域驱动设计的方式来开发软件。从Evan最初出版“Domain-Driven Design: Tackling Complexity in the Heart of Software”开始,我们经历了一趟艰难的旅程,已经走了很长的一段路。现在有一些关于领域驱动设计的技术大会,人们对领域驱动设计的兴趣程度也与日俱增,包括业务人士的参与,这是非常关键的。 如今,反应式变得越来越重要,稍后我会解释为什么它获得人们的关注。我认为真正有趣的是,DDD在2003年的使用或实现方式与今天使用DDD的方式截然不同。如果你已经读过我的红皮书“Implementing Domain-Driven Design”,那么你可能已经熟悉这样的一个事实:我在这本书中提到的有界上下文是单独的过程,需要进行单独的部署。然而,在Evan的蓝皮书中,有界上下文在逻辑上是分开的,但有时候部署在同一部署单元中,可能是在Web服务器或应用程序服务器中。现如今,越来越多的人采用DDD是因为它与单独部署机制(例如微服务)不谋而合。

Featured Post

Facebook曝至今最严重安全漏洞,超过5000万用户受影响

9月28日,Facebook披露了一个安全漏洞,5000万Facebook用户受到影响,恶意第三方可能会利用这个漏洞访问受影响的用户帐户。Facebook已确认创始人马克扎克伯格及首席运营官谢丽尔桑德伯格是受影响的5000万账户之一。 这次的安全漏洞是Facebook自2004年创建以来出现的最大的安全问题,并且特别严重。Facebook的产品管理副总裁Guy Rosen解释说,攻击者利用了与Facebook的“View As”功能相关的漏洞,这个漏洞允许攻击者窃取Facebook访问令牌,然后可以使用这些令牌来接管用户的帐户。 访问令牌是第一次登录后授予用户的一组代码,虽然不是密码,但是利用访问令牌无需密码也可以登陆账户。拥有访问令牌后,攻击者可以完全控制受害者的帐户,包括登录使用Facebook登录的第三方应用程序,包括Instagram。 Facebook的“View As”功能允许用户通过隐私设置将自己的个人资料设置成对不同的人显示得不一样,可以明确自己的朋友,朋友的朋友或公众可以查看哪些信息。 该安全漏洞是由Facebook工程师周二发现的。周五Facebook表示他们已经修复了这个漏洞。发现此漏洞后,Facebook修复并重置了确认受影响的5000万帐户的安全令牌。为了安全起见,还为另外4000万可能受影响的帐户重置了安全令牌。最后,Facebook关闭了“View As”功能。 “大约9000万人现在必须重新登录Facebook或任何使用Facebook登录的应用程序。在重新登录后,用户将在新闻Feed的顶部收到通知,了解发生了什么事情。”收到重新登录弹窗的用户无需更改密码,但是,无法重新登录Facebook的人 – 比如说忘记了密码 – 应该访问Facebook帮助中心。如果想退出Facebook,可以访问设置中的“安全和登录”,其中列出了用户登录Facebook的地方,只需点击一下即可退出。 Guy Rosen在博客中表示,Facebook的调查仍处于早期阶段,还没有看到任何帐户遭到入侵和访问不当。但扎克伯格表示,攻击者使用Facebook开发人员API可以获取一些信息,例如“姓名,性别和家乡”,这些信息与用户的个人资料页面相关联。 另外,Facebook表示私人消息不太可能被访问,也没有信用卡信息被泄露。 Facebook不会说这5000万用户分布在哪里,但已经通知了Facebook的欧洲子公司所在的爱尔兰数据监管机构。扎克伯格并未透露出这次网络攻击以及用户流失的严重程度。“我们还不知道这些帐户是否被影响,但我们会继续研究这个问题,并会在我们了解更多信息后进行更新,”扎克伯格在周五发表的一篇博文中表示。“显然我们低估了我们的社区和服务所面临的攻击“。 据Facebook称,这次的漏洞源于他们在2017年7月对其视频上传功能所做的改变,Facebook无意中在其视频上传器中引入了三个漏洞。但Facebook直到本月,即2018年9月16日发现异常活动激增时才知道这个漏洞。这意味着黑客可以长时间访问用户数据,因为Facebook目前还不确定攻击何时开始。正如Rosen所说,Facebook的工程团队“仅在9月25日星期二下午才发现了这一最新的安全漏洞”。 Facebook目前月活用户超过20亿,在此安全问题披露以后股价下跌超过3% 。 “我们很抱歉。”Facebook对于这次的安全问题向用户表示道歉。Facebook的道歉年份始于今年3月份,当时Facebook被曝出将9000万用户的私人数据(包括他们的个人信息)泄露给政治研究公司剑桥分析(Cambridge Analytica)。自此,Facebook接连曝出丑闻,包括多次侵犯隐私和政治动机的审查指控。 有评论称社交的黑暗时代已经到来,Facebook在2018年负面新闻缠身,已出现用户的信任危机,这与优步在2017年的表现一样糟糕,甚至更糟。社交媒体公司现在面临越来越多的批评,包括外国选举干扰,错误信息的流动,仇恨言论和数据隐私等问题。 参考链接: https://www.iafrikan.com/2018/09/28/facebook-reveals-latest-security-flaw-which-affects-50-million-users/ https://www.bbc.com/news/technology-45686890 https://www.rt.com/usa/439861-facebook-admits-security-breach-affected/ https://www.cnet.com/news/facebook-breach-affected-50-million-people/

Featured Post

Cloudflare推出域名注册服务:不赚利润只收取成本费

9月27日,Cloudflare官方博客宣布推出域名注册服务,承诺只收取成本费,不赚取利润。 Cloudflare在2010年9月成立,在那之前就有Cloudflare的早期测试版客户问:“你们会推出注册服务吗?!”现在Cloudflare就在做这样的事情,启动第一个能让大家都喜爱的域名注册服务。它围绕三个原则构建:信任,安全和始终公平的定价,可供所有Cloudflare客户使用。 在博客中,Cloudflare也阐述了自己为什么要做这样的域名注册服务。 需要安全的域名注册 Cloudflare的域名注册服务实际上已经运营了一段时间。 像Cloudflare的许多产品一样,它首先解决了Cloudflare的内部问题。Cloudflare有几个关键任务领域,如果这些域名的注册遭到破坏,后果将会很糟糕。 多年来,Cloudflare与域名注册商合作,以确保这些域名尽可能地被锁定。但是在2013年,一名黑客窃取了Cloudflare使用的注册商的几个系统,差一点就要接管Cloudflare的一些域名,这是非常危险的事情。 正是这一事件使Cloudflare意识到,他们需要更好的域名注册服务。然而,即使是收取了巨额费用并作出安全承诺的注册商,服务也很糟糕。最终Cloudflare认为:要达到Cloudflare所需的安全级别的域名注册服务,唯一的方法就是建立自己的域名注册服务。 超高端的自定义域名保护 一些客户注意到Cloudflare已经有了自己的域名注册,就进行了相关咨询,这些对话就变成了Cloudflare的企业级域名注册服务产品,有自定义域名保护功能,适合一些对安全性要求特别高的用户。每个使用自定义域名保护的客户端都能定义自己的更新记录流程:例如,如果自定义域名保护客户端希望Cloudflare不更改其DNS记录,那么,只有当6个不同的人按顺序用一组预定义的电话号码呼叫Cloudflare,每个人说出唯一的密码,并说出他们最喜欢的冰淇淋口味,并且这一天正好是一个满月的星期二,Cloudflare才会强制更改客户的DNS记录。(打个比方) 显然,这样的产品是不会大规模推广的。因此,Cloudflare会为自定义域名保护产品收取高额费用。 (如果您感兴趣,可以点击https://www.cloudflare.com/products/registrar/custom-domain-protection/了解更多信息。)然而,推出这一功能有助于Cloudflare定义每个域名注册商都应遵循的最佳实践。这也让Cloudflare开始思考:能建立一个更好的域名注册服务,让每个人都能使用吗? 目前的域名注册商哪里做得不好? 为了了解如何才能建立更安全的域名注册服务,Cloudflare向用户咨询了对当前域名注册商最不满的地方。得到的两个高频答案是:“诱饵销售”和“无休止的追加销售”。如果你曾经注册过域名,应该知道这个问题。在你第一次注册域名时,会获得折扣价,但每次续订时价格会飙升。此外,还会被追加销售本应该免费提供的服务(例如,DNSSEC),或者向你推销你并不想要的产品(例如,无价值的可信站点密封件)。  问题在于,域名注册是一种商品。这对于大众市场现有的任何注册商之间是没有差异的。每个顶级域名注册管理机构(如.com .org .info .io等TLD)都会为在其下注册域名设置批发价格。 这些价格已知并且一直不会怎么变。域名注册商所做的只是将你记录为特定域名的所有者,这只涉及向API发送一些命令。换句话说,域名注册商在向你收取中间人费用,而他们额外收取的费用是不合理的。 从免费SSL学到了什么 Cloudflare上一次发现相似的市场情况是在SSL证书市场。早在2014年,Cloudflare就认为在线加密付费是一件很疯狂的事情。在那一年的Cloudflare周年庆祝活动中,Cloudflare成为了第一批提供免费加密的服务商之一,从那以后出现了加密革命。如果你现在使用的某些服务仍然需要额外支付加密费用,那么这些服务商其实是在剥夺你的权利。 当然,域名注册的经济性有点不同,但只有一点点。TLD需要做一些工作以确保没有两个人注册相同的域名,还要防止大家仅用随意的字母组合来注册域名,他们的收费是合理的。但是,为什么注册服务商会在TLD收取的费用之外再收取额外的费用? Cloudflare域名注册服务承诺 9月27日,Cloudflare在8周年之际,为所有客户提供了一份礼物:Cloudflare推出了域名注册服务。 以下是Cloudflare作为域名注册商的承诺:Cloudflare将遵循最佳安全实践并为用户提供最优惠的价格。这意味着,从安全方面来说,Cloudflare承诺允许用户启用双因素身份验证,默认情况下会锁定域名注册,并自动启用DNSSEC等最佳实践安全服务。 而服务的定价则更简单:Cloudflare承诺永远不会收取除TLD批发价格之外的任何费用。用户使用的第一年是这样,以后每年也都是如此。 如果用户在Cloudflare注册域名,将始终只用支付TLD批发价格而无需其他任何费用。 例如,管理.com TLD的Verisign目前每年收费7.85美元用于注册.com域名。除了注册的每个域名,ICANN每年都会收取0.18美元的费用。今天,如果您将.com域名转移到Cloudflare,Cloudflare每年向您收取的费用为:8.03美元。没有其他费用。 Cloudflare所做的只是ping一个API,没有增加成本,那么为什么用户需要额外支付其他费用? Cloudflare域名注册服务还将免费提供符合当前ICANN准则的WHOIS个人数据修订。通过WHOIS服务广播注册人联系信息会给你的个人地址招来大量垃圾邮件。跟域名一样,你的隐私不应该被额外收取费用。 推出Cloudflare域名注册服务 现在还无法使用Cloudflare Registrar注册新域名。 Cloudflare目前推出的服务仅限于现有Cloudflare用户将其域名转移到Cloudflare。如果你以前在转移域名时遇到问题,请稍等:Cloudflare已经让域名转移过程变得非常容易了。 Cloudflare预计会有相当多的需求,所以他们会慢慢推出邀请,以确保提供极佳的过渡体验。要为邀请占位,你需要成为Cloudflare客户并注册Early Access。邀请将根据忠诚度在接下来的几周内发布:使用Cloudflare的时间越长,就会越早收到邀请。 注册Early Access:https://dash.cloudflare.com/domains 如果你还不是Cloudflare的用户,但想要使用Cloudflare域名注册服务,可以先注册Cloudflare的核心服务,这样也能获得邀请的排队位置。 … Read More

Featured Post

Git-Submodule新漏洞已修复

Git社区披露了一个影响clone和submodule命令的安全漏洞,当存在漏洞的机器访问恶意库时,这些命令可以远程执行代码。这个由Mitre分配了编号CVE-2018-17456的漏洞已在Git 2.19.1中修复。 要触发该漏洞,恶意库可以伪造一个.gitmodules,其中包含以破折号开头的URL。这将影响git clone –recurse-submodules和git submodule update –recursive,因为它们会将这个以破折号开头的URL递归地传递给git clone或git submodule子进程,它们会将该URL解释为命令选项。这可能导致在本地机器上执行任意命令。这个漏洞类似于CVE-2017-1000117,它也是通过伪造以破折号开头的ssh URL实现选项注入攻击,由git执行的ssh子进程会将这些URL解释为命令选项。目前还没有任何已知的不法行为。 我们还利用这段时间扫描了GitHub上所有的库,寻找它实际被用于实施攻击的证据。我们很高兴地告诉大家,没有发现攻击实例(现在,在我们的检测下,就没有实例可以添加了)。 正如@joernchen提交的修复漏洞的PR所显示的那样,修复本身非常简单。不过,这一发现为.gitmodules的全面审计提供了机会,它会针对其中的路径和URL实现更严格的检查。 如前所述,Git 2.19.1包含了对这个漏洞的修复。另外,该补丁还被反向移植到了2.14.5、2.15.3、2.16.5、2.17.2和2.18.1版本。由于git集成到了GitHub项目(如GitHub Desktop和Atom)中,这些项目也已经得到了修复,所以你最好尽快升级它们。

Featured Post

微软发布Azure-Storage不可变存储功能的正式版本

随着新的不可变存储功能的发布,blob特性在特定的保留期间内将是不可以擦除和修改的。该特性从今年6月份开始进行预览使用,现在,微软宣布它在所有公开Azure region中正式发布。 微软添加对不可变存储的支持,以便于帮助客户遵循像SEC 17a-4(f)、CFTC 1.31©-(d)和FINRA这样的行业标准。另外,客户将会在Azure Blob Service上面得到最大程度的数据保护,没有用户和管理员能够修改或删除数据。不可变存储的特性还允许客户存储对诉讼、刑事调查等方面至关重要的敏感信息,在所需的时间内这些数据会处于防篡改的状态。 按照发布声明,不可变存储包含如下的功能: 支持基于时间的保留策略:用户可以为存储数据设置在一定时间间隔内不可变的策略。 支持合法持有策略:如果保留时间间隔未知的话,用户可以为存储数据添加合法持有( legal hold)标签,这种不可变性会一直持续到合法持有标签被清理掉。 支持所有的Blob tier:一次写入多次读取(Write-Once-Read-Many,WORM)策略独立于Azure Blob Storage tier,将会应用到所有tier,包括hot、cool和archive tier,这样的话客户就能将他们的工作负载存储在成本最优的tier上,同时还能保证数据的不可变性。 Blob容器级别的配置:Azure Storage Blob的不可变存储功能允许用户在容器级别配置基于时间的保留策略和合法持有标签。通过简单的容器级别的配置,用户就可以创建基于时间的保留策略、锁定策略、扩展保留间隔、设置合法持有标签、清理合法持有标签等等。这个策略能够应用到容器中所有的Blob上,不管是已有的,还是新建的Blob均是如此。 用户可以在新建General Purpose V2 Storage或Blob Storage账号或者通过Azure Portal、Azure CLI 2.0或PowerShell新增容器时,启动不可变存储功能。当使用Portal时,用户能够在不可变blob下添加基于合法持有或保留间隔的策略。随后,如果有固定的保留阶段,用户可以为策略添加锁,或者为合法持有添加标签。    对于开发者来说,目前有多个支持不可变存储的库。这些库是.net客户端库(7.2.0-preview及以后版本)、node.js客户端版本(4.0.0及以后版本、Python客户端库(2.0.0及以后版本)和Java客户端库。另外,按照发布声明,CLI 2.0的预览版支持和PowerShell(4.4.0-preview版本)的支持很快就会发布,后者提供了产品级的支持。开发人员还可以直接使用2017-11-09及以后版本的Storage Services REST API。 随着不可变存储功能的添加,Azure Storage的特性集继之前的archiving特性之后得到了进一步的扩展。HubStor是微软的合作伙伴,他们在Azure Storage Service之上为企业提供服务,帮助这些企业管理和保护其任务关键性的非结构化数据。他们之前提供了对archiving的支持,现在又提供了对不可变存储的支持。随着对不可变存储功能的支持,他们的客户能够从更安全的数据状态中获益。HubStor的产品管理VP Brad … Read More

Featured Post

NVIDIA宣布RAPIDS、医学影像应用和面向自动驾驶汽车的驾驶模拟器

2018年10月10日,在慕尼黑2018年GPU技术大会上,NVIDIA首席执行官Jensen Huang发表了主题演讲。他宣布了RAPIDS,这是一个开源的CUDA加速工具包,可以帮助数据科学家更快地处理数据。他们宣布了在医学影像方面开展的合作。他们还宣布了一个自动驾驶汽车模拟器,汽车制造商可以使用它来验证自动驾驶汽车。 RAPIDS  NVIDIA宣布推出RAPIDS:这是一款开源软件,将GPU技术融入到数据科学管道中。它基于许多数据科学家正在使用的经典机器学习管道构建:使用Numpy、panda和scikit-learn编写的Python程序。RAPIDS可以使用多个Cuda Core读取数据,并在多个Cuda Core上运行学习和推理。2.4版的Spark会加入RAPIDS,包括流GPU支持、cuML、cuGraph和批cuDF。为了确保他们的数据科学平台可以为企业所用,NVIDIA与Oracle、IBM和沃尔玛等几家大公司开展了合作。要了解更多信息,可以查看NVIDIA的博客。 NVIDIA医疗应用程序 NVIDIA也正进入医疗市场,把他们的Clara AGX平台用于放射市场。他们创建了一种基于神经网络的图像识别算法,用于放射图像的可视化。这里的计算机需要运行一个医学成像管道,它接收传感器数据,对其进行处理,并将其可视化。要了解更多信息,可以查看NVIDIA的博客。  NVIDIA自动驾驶汽车平台 Jensen Huang宣布了NVIDIA AGX,这是一款用于自动化机器的计算机。它是一块带有Xavier处理器的板子,具有109GB/s的高速IO。自动化机器(汽车或机器人)的计算机不同于其他应用,现实世界中的平台需要实时运行,并且必须可靠。 随着慕尼黑成为多家大型汽车制造商的大本营,NVIDIA在GTC欧洲大会上宣布了NVIDIA在成为自动驾驶汽车硬件生产商方面取得的进展。去年,他们已经宣布了将于2019年发布Pegasus平台。此外,计算硬件方面,他们还谈到了SDK Drive Works,其中包含了很多可以用于自动驾驶的算法。Drive IX现在已经可用,Drive AGX Xavier开发工具包现在也已可用。沃尔沃宣布,他们将使用Drive AGX平台来测试他们的消费类汽车,这些汽车将具有二级自动驾驶功能。2级意味着汽车将具有自适应巡航控制和车道保持等高级功能,但司机将参与汽车性能的监控。 NVIDIA还发布了一款自动驾驶汽车模拟器Drive Constellation。它由两台计算机组成,其中一台计算机渲染另一台计算机用来决定采取何种行动的环境。这个模拟器可以用来验证自动驾驶汽车的功能,甚至可以用来创建一个虚拟的自动驾驶汽车许可证,计算机通过后才能在公共道路上驾驶。要了解更多信息,请查阅NVIDIA的博客。 Tesla T4和DGX2 Jensen Huang还展示了Tesla T4,它是在之前9月18日的GTC大会上发布的。它是一种多精度TensorCore加速器,可以在float32、int8和int4中运行推理。它每秒能做5.5万亿次运算。Jensen还谈到了DGX2,他们于2018年3月宣布了这一计划。该平台由连接在一块板上的16块Tesla V100 32GB GPU组成。它们由12个NVSwitches连接。它有1.5TB的系统内存,每秒可以进行高达2千万亿次处理。它还有32TB的SSD用于数据存储。由于大多数公司都在云环境中使用多服务器,NVIDIA宣布了KubeFlow。通过运行TensorRT推断服务器,你可以将神经网络推断部署到数据中心。它可以在多个服务器上分配神经网络推理的负载。目前,企业通常有多个pod,每个pod都运行专门的推理模型。遗憾的是,如果对特定模型的需求上升,你就必须扩展服务器以满足对该功能的需求。TensorRT和Kubernetes使得在多个服务器上分配多模型工作负载成为可能。Kubernetes确定工作负载在数据中心里的位置,并将模型放在具有剩余容量的服务器上。

Featured Post

人人恐惧AI寒冬,他却希望泡沫再破裂一次

AI应用落地,核心是工程问题,不是算法问题,更不是“哲学”问题。一定要特别特别“土”,踏踏实实从朴素的运维、数据库、数据清洗做起,从实际的工程中逐步演化。只有扎扎实实从工程出发,才能实事求是地发展出低成本的、有生命力的AI系统。 没有银弹,没有奇迹。都是扎扎实实的工程,多年细节的打磨才能解决一点小事。也从来没有一个所谓的伟大的想法,能跳过工程的考验就成功的。工程才是做好AI的钥匙。——鲍捷 鲍捷是谁?他是拥有近5.3W粉丝的微博博主“西瓜大丸子汤”,也是智能金融创业公司文因互联的创始人和CEO,还是知乎专栏“文因互联”的主要撰稿人。这几年鲍捷笔耕不辍,在微博、知乎、微信上撰文无数,其中不乏爆款和经典之作(比如《确保搞砸人工智能项目的十种方法》和《工程才是做好AI的钥匙》)。当被问及如何在繁忙的工作之余保持如此高频度的写作产出时,他只一句:“无他,唯压力尔。”正因为压力太大,天天不分昼夜地琢磨问题,自然就会想把正在思虑的问题都写下来。这些作品逐渐成为了文因互联的风格,吸引来一批志趣相投的工作伙伴,而“西瓜大丸子汤”也不再代表鲍捷个人,早已成为文因互联的重要公司资产。 鲍捷所写的文章主要有两类,一类是知识图谱技术的分析总结,另一类则是AI落地的经验之谈,这两类文章也代表了他的过去和现在:知识图谱是鲍捷进入人工智能领域学习、研究和工作几十年来最主要的研究方向,而AI应用落地则是当前他要带领文因互联去攻克的重要课题。 文章之外亦有玄机。文因互联是国内为数不多以知识图谱为核心技术的AI公司,它与其他人工智能企业有何不同?知识图谱到底能做些什么?在智能金融领域,知识图谱的商业化落地目前进展到哪了?带着这些问题,AI前线记者对鲍捷进行了专访,进一步了解文因互联在金融知识图谱的落地进展和经验,并探讨了知识图谱未来发展的可能性。 关于创业和文因互联 知识图谱其实一点都不新,如果从最早的知识工程开始算起,它几乎和人工智能这个领域的出现一样古老。2012年谷歌提出了一个叫“Knowledge Graph”的项目,知识图谱因此得名,而直到最近四、五年这一概念才被越来越多的人所知。 为什么选择创业做金融知识图谱? 鲍捷曾经表示:“不是为了一个技术而创业,而是为了解决一个问题而创业。”2011年,鲍捷选择离开学术界,2015年创办文因互联,就是为了解决知识图谱的落地问题。 为什么创业?因为只有创业、进入工业界才能解决知识图谱落地的核心问题。 鲍捷认为,这个领域核心的问题是工程问题,本质上就是成本问题,但学术界不关心成本。他在各个地方演讲,几乎每次都会讲到”成本”两字,几乎所有的演讲都是围绕如何降低成本展开,而“成本”也是这次采访中鲍捷提到次数最多的一个词。 “为什么我们这个领域落地不了呢?我后来发现,其实我们有很好的 “发动机”,比如各种规则引擎、推理机、各种查询引擎。但是如果我们想造一辆汽车,我们需要轮子、车厢、传动装置、刹车装置,这些全都要有。所以这个领域要落地,当前的发展瓶颈是解决人工智能的传动问题。我们有了问题,也有了引擎,要解决问题必须要把中间的这些环节全部做了,而且必须极大地降低成本。把成本降到现在的1%,才能work,这就是实验室和工程的区别。你要想商业化,核心问题不是需求问题,在我看来,这是从VC到创业者犯的最大的一个错误,他们都盯着需求,但是核心问题其实不是需求问题。需求就摆在那里,问题是怎么解锁这个需求问题,而怎么解锁需求的核心问题主要是降低成本的问题。你把成本降低到原来的1%,需求自然就能解决了。我们要想能够做到这一点,就必须在工业、企业才能做到,这就是我一开始创业的初衷。” 至于为什么选择金融领域这个方向,首要原因是金融领域拥有大量数据,其次是金融的客户非常多,有不同规模大小的客户,金融内部又有各种各样的门类,便于进行各种探索,而且也比较方便冷启动。 文因互联是一家什么样的公司? 从技术层面上讲,文因互联是一家认知智能公司,主要利用自然语言处理和知识图谱技术来解决金融领域知识的产生、管理、查询、应用的全周期问题。当前主要做的事情是给金融机构赋能,提供认知智能各个环节能力的输出,包括文档自动化阅读,用机器去理解金融文档;也包括金融知识建模和流程自动化,比如监管自动化、审计自动化、信贷自动化等。具体来讲,第一个层面是解决用机器怎么理解文档的问题,用专业术语来说就是知识提取;第二个层面是知识提取之后,如何把业务系统的流程自动化,包括智能投研,科技监管3.0,银行要做数据治理、自动化信贷流程,自动化审计,财务机器人,这些都是有了知识图谱以后就可以去做的事情。 从产品层面上讲,文因互联的产品聚焦于不同金融场景,比如最早推出的智能搜索,金融搜索;后来的自动化写报告,包括银行领域的自动化信贷报告,金融企业的CRM等,表面上看是自动化报告,本质上是将企业的知识沉淀下来并实现智能化和流程的自动化。再进行场景细分,在监管上有面向监管的产品,包括整个公告的结构化和自动化,以及后面的企业画像、预警和监管规则的执行,在银行业会有信贷的流程自动化,包括非结构化数据的数据治理,PDF文件、财务报表自动化审计和复核,信贷流程知识的建模等等。 从市场定位层面上讲,鲍捷提到了他早前提出的场景跃迁理论。他认为市场定位是不断变化的,像文因互联这样的公司不可能一步到位,因为这是一个革命的新兴市场,因此文因互联的市场定位也会随着时间的发展不断发生变化。鲍捷将现在的文因互联定位为一个做能力输出的公司,即为金融机构赋能。“中国现在有上百万的客户经理,5年或者10年之后,至少一半以上的客户经理的重复性低创造力的工作都会被机器取代,而文因互联就是在帮助银行实现这个过程。” 鲍捷认为,现在人工智能在金融领域的落地只达成了前一半,就是所谓基于现有的结构化数据的,比如说像大数据、机器学习,已经有了一些成功的实践,但这些只能算作低枝上的桃子,而高枝上的桃子还很难摘得到。所谓高枝上的桃子主要围绕的是如何解决非结构化数据的问题,比如各种PDF文件、票据里的数据如何解锁,这块现在基本上还没有能做到的,这也是文因互联想帮助客户解决的核心问题。文因互联当前在监管上做了很多工作,鲍捷认为这可能是解锁这个场景早期最主要的一个推动力。 现在很多公司都在宣传各种名为“XX大脑”的行业人工智能解决方案,相比其他公司的“金融大脑”,文因互联正在做的“金融神经系统”又有什么不同之处? 鲍捷表示,文因互联要解决的不仅是一个机构的问题,而是机构和机构之间互通的问题。虽然从当前的产品来看,文因互联其实也在帮助不同的机构构建他们的“大脑”,但在鲍捷看来,智能金融真正最有价值的事情,在于把机构串起来,构造一个机构之间的金融数据高速公路,这才是一个能创造出万亿产值的方向。这是文因互联长期的努力方向。 “文因互联要构造的金融神经系统,是指把中国几千家金融机构连通起来,当然不是我们自己一家来做,可能到时候会有上百家不同的机构一起做,文因互联只是负责其中一部分。现在中国金融的脉搏跳动可能还是以天、以周,有时候甚至是以月为单位来计,十年之后中国金融的脉搏应该是以秒为单位来计算的。到那时候,上百万家金融机构和企业之间的数据交换、数据的互通、文档的互通,都可以达到几乎实时的状态,这是我们努力的目标。” 知识图谱能为各行业做什么? “知识图谱就像数据库,用户可能感知不到,但没人离得了它” 2016年大家开始谈AI技术,2017年话题变为应用场景,到了2018年,业界更关注的是技术到底能带来哪些可衡量的用户价值。当前知识图谱技术的落地应用多见于金融行业,而它所带来的最直观的价值是十倍甚至百倍的效率提升。 原来交易所做公告处理,即使团队没日没夜工作也只能处理一小部分,有了知识图谱的帮助之后,至少可以节约80%的重复性劳动;原来银行做一次小微贷款可能要花一个月时间,现在有的银行半天就可以做完,主要是因为有了企业画像,而企业画像又怎么做到的呢?背后靠的就是知识图谱的力量,通过知识图谱把各种担保链条、违规情况挖掘出来了。其次,知识图谱可以帮助金融机构扩大现在的业务。以银行为例,要从一万个企业客户扩张到五万个客户,通常靠的不是把客户经理扩大到五倍,而是通过提高效率来做到这一点,知识图谱技术就是这里面核心的一环。 知识图谱之所以在金融行业落地产品多,很大一部分是因为这个行业方便团队去做事情。首先,数据比较全,因为有强制性披露,而且场景相对比较明晰。像财务分析就很适合团队快速入手,财务分析不会涉及到太深入的常识知识或者领域知识,因为它是有国家标准的。接下来就可以从财务分析,到行业分析,到宏观分析一层一层往上做。鲍捷表示,金融还有个特别大的好处,就是它的数据有很强的渗透性,基本上能够把金融这个行业做好,就可以很自然地渗透到很多其他应用,这对公司下一步突破自己的天花板有好处。 当然,金融行业并非唯一适合知识图谱落地的行业。除了文因互联现在主攻的金融,鲍捷未来还看好知识图谱在医疗、法律、国防等行业的应用和商业化落地,而这些行业的知识图谱落地也是美国早就证明可行的方向。 鲍捷表示,知识图谱从本质上来说,在当前的语境下是指结构化数据的应用,特别是把网页数据转化成结构化数据这个过程,如果按照这个标准来看,那知识图谱应用的成功案例就太多了。现在每个人的手机上基本都有一个问答引擎,很多人家里会有智能音箱,我们会有各种听歌机器人、智能后视镜,所有这些全都是知识图谱在应用层面的实例,没有知识图谱就不会有这些东西。其实还有很多应用,用户自己不一定知道背后的技术是什么。“知识图谱很像数据库,很少有公司会在最终产品里面说他用了Oracle数据库,实际上现在很多产品背后都在用知识图谱,像搜索引擎是最典型的了,搜索引擎没有知识图谱根本不可能做到现在这样。” 反过来看,也不是每一个应用都适合知识图谱。知识图谱相对机器学习更适合需要快速冷启动的应用,而且它可解释性很好。对于很多像金融行业Mission Critical的应用,必须是可解释的,不能给出一个投资策略却不能告诉用户为什么,这种情况就非常适合使用知识图谱。还有很多应用像搜索、问答、客服,必须精确理解用户在说什么,这是机器学习本身解决不了的问题,只有知识图谱能解决。 知识图谱商业化落地进展到哪了? “知识图谱应用,中国和美国相比既领先也落后” 提到AI,中国和美国在技术和应用的进展情况差异一直是备受关注的话题。当被问及现阶段知识图谱技术在行业应用上国内外的进展有何差异时,鲍捷给出了一个非常有哲理的回答。 “我们既领先也落后,是辩证的,这是一件事情的两面。首先,知识图谱早在十几年前就已经被应用了。知识图谱的第一波商业化是在2005-2006年就开始的,2005年到2008年是知识图谱的第一波应用,后来被金融危机打断了一段时间。到了2012年又开始了,现在属于第二波应用。从这个角度来说,中国是落后的。2012-2013年的时候,一些大厂开始了知识图谱的实践,这是国内第一波应用,比美国落后了差不多十年。后来那一波灭了,到2015-2016年的时候才陆陆续续又有一些新的公司出现。专门做知识图谱的公司非常少,当然我的信息可能不完备,但据我所知,国内正儿八经以知识图谱作为核心基础的公司也就三四家,这是认真做的。从这个角度来说,我们确实发展的比美国慢,但是我们比欧洲快。” “从另一个角度来说,中国又不比美国慢。国内现在在人工智能上的很多应用真的比美国快,美国没有那么多应用。我在华尔街的同学和老同事很多,他们认为国内在智能金融上的发展,如无人银行、信贷自动化、智能搜索处于较为领先的地位。由于国内场景丰富,实业提出了很多鲜活落地需求,使国内的发展比美国更快,场景更丰富。 但是美国涉及的面非常广。经过这十几年的发展,美国几乎在所有行业都有了知识图谱的应用,而且每个行业都已经出现了有竞争力的公司,比如说石油、医药、政府、化工等,每一个行业都有有竞争力的知识图谱公司。中国现在还没有多少,到目前为止金融有一些,法律有一些,医疗有一些,但是真正以知识图谱作为核心技术(核心的标准是指公司有科班出身的知识图谱负责人,公司掌握知识图谱的核心技术),满足条件的企业数量非常少,有些行业完全是一片空白。我认为从行业广度的角度,中国大概要再发展十年左右才能赶上美国。” “大厂关注头部问题,小厂关注垂直问题” 同样是做知识图谱,大公司和小公司之间有何差异?小公司的优势在哪里? … Read More

Featured Post

使用 Python 上传文件

蟒蛇在吞噬世界!您会发现许多充满激情的 python 程序员和许多评论家一样, 但不可否认的是, python 是当今软件开发中一个强大、相关且不断增长的力量。 Python 只是一种语言, 但是语言无法解决诸如工作流、架构和物流等业务问题;这些事情都由你来开发!您选择的包、所实现的体系结构以及您遵循的策略都将影响 Python 项目的成功。让我们来看看使用 Python 将文件上载到云后的后勤。我将讨论每个团队在实现文件上载和管理解决方案时所面临的一些注意事项, 然后以简明的食谱结尾, 使用 Filestack 的 python SDK 上传文件。 问题: 如何管理用户生成的上载? 你已经建立了你的 MVP, 所有的测试都通过了。您可以通过网站上的 HTML 表单上传文件;太容易了!只是一个简单的文章提交表单, 你的服务器捕获任何你的用户扔在它。这仅仅是一个开始, 不过-接下来是艰难的部分。 确保您的用户在上传、转换和共享内容时具有很好的体验, 这意味着为他们提供可靠、可恢复、快速的上传。这意味着向他们提供裁剪、调整大小和以其他方式调整上载所需的工具。它可能意味着将文件从一种格式转换到另一个。这当然意味着优化交付, 使他们能够从强大的分布式 CDN 中尽可能快地保存数据并获得最高质量的内容。 解决方案: 使用 Python SDK 当一个项目可以将繁重的工作与业务逻辑分开时, 每个人都会获胜。你可以从头开始用一小支开发人员和一台时间机器来构建一切, … Read More

Featured Post

完全一次的语义与 Apache 卡夫卡

卡夫卡的确切的一次语义是最近引入的版本, 使消息被准确地传递给最终消费者, 即使生产者重试发送消息。 这一主要版本引起了社会各界的广泛关注, 因为人们认为在分布式系统中这不是数学上可能的。克列普斯, 联合创始人和 Apache 卡夫卡, 解释了它的可能性, 它是如何实现在卡夫卡在这篇文章。 在本博客中, 我们将讨论如何利用卡夫卡提供的完全一次的消息语义。 Apache 卡夫卡提供的不同消息传递语义概述 “在大多数一次-m带有可能会丢失, 但从来没有重新传送. 在这种情况下, 当 ACK 超时或返回错误时, 生产者不会重试发送消息, 因此消息可能最终不会写入卡夫卡主题, 因此不会传递给使用者。 “至少有一次, 消息永远不会丢失, 但可能会重新传送. 在这种情况下, 如果 ACK 超时或收到错误, 则生产者尝试重新发送邮件, 前提是该邮件未写入卡夫卡主题。 ” 恰好一次– 这是人们真正想要的, 每条消息只传递一次, 只有一次. 在这种情况下, 即使生产者尝试重新发送一条消息, 它也会导致消息被完全传递给最终使用者。 … Read More

Featured Post

一文看懂Pinterest如何构建时间序列数据库系统Goku

导读:在Pinterest,开发人员依靠Statsboard来监控系统并发现问题,因此,可靠有效的监控系统对于开发速度来说非常重要。之前,Pinterest使用OpenTSDB来提取和提供指标数据。然而,随着Pinterest的发展,服务器也从数百个增加到数千个,每秒产生数百万个数据点,而且这个数字还在继续增长。 虽然OpenTSDB在功能上运行良好,但其性能随着Pinterest的增长而降低,导致运营开销(例如严重的GC问题和HBase经常崩溃)。为了解决这个问题,Pinterest开发了自己的内部时间序列数据库——Goku,其中包含用C ++编写的OpenTSDB兼容API,以支持高效的数据提取和成本昂贵的时间序列查询。 正文: (使用Goku进行两级分片) 时间序列数据模型 时间序列数据 Goku遵循OpenTSDB的时间序列数据模型。时间序列由一个键和一系列时间数字数据点组成。key = metric name +一组标记键值对。例如,“tc.proc.stat.cpu.total.infra-goku-a-prod {host = infra-goku-a-prod-001,cell_id = aws-us-east-1}”。数据点=键+值。值是时间戳和值对。例如,(1525724520,174706.61),(1525724580,173456.08)。 时间序列查询 除了开始时间和结束时间之外,每个查询都由以下部分或全部组成:度量标准名称、过滤器、聚合器、降采样器、速率选项。 1)度量名称示例:“tc.proc.stat.cpu.total.infra-goku-a-prod”。 2)对标记值应用过滤器,以减少在查询或组中拾取系列的次数,并在各种标记上聚合。Goku支持的过滤器示例包括:完全匹配、通配符、Or、Not或Regex。 3)聚合器规定将多个时间序列合并为单个时间序列的数学方法。Goku支持的聚合器示例包括:Sum、Max / Min、Avg、Zimsum、Count、Dev。 4)降采样器需要一个时间间隔和一个聚合器。聚合器用于计算指定时间间隔内所有数据点的新数据点。 5)速率选项可选择计算变化率。有关详细信息,请参阅OpenTSDB数据模型(http://opentsdb.net/docs/build/html/user_guide/query/index.html)。 挑战 Goku解决了OpenTSDB中的许多限制,包括: 1)不必要的扫描:Goku用倒排索引引擎取代了OpenTSDB的低效扫描。 2)数据大小:OpenTSDB中的数据点是20字节。Pinterest采用Gorilla压缩来实现12倍压缩。 3)单机聚合:OpenTSDB将数据读取到一个服务器上并进行聚合,而Goku的新查询引擎是将计算迁移到更接近存储层的位置,该存储层在叶节点上进行并行处理,然后在根节点上聚合部分结果。 4)序列化:OpenTSDB使用JSON,当有太多数据点要返回时,JSON会很慢;Goku使用thrift二进制代替。 架构 存储引擎 Goku在内存存储引擎中使用了Facebook Gorilla来存储过去24小时内的最新数据。 (存储引擎简介。请查看Gorilla论文及其GitHub存储库来了解详细信息) 如上所述,在存储引擎中,时间序列被分成称为BucketMap的不同分片。对于一个时间序列,也被分为可以调整时长的 bucket(Pinterest内部以每2小时为一个 bucket)。在每个BucketMap中,每个时间序列都被分配一个唯一的ID并链接到一个BucketTimeSeries对象。BucketTimeSeries将最新的可修改缓冲区存储区和存储ID保存到BucketStorage中的不可变数据存储区。在配置存储 bucket 时间之后,BucketTimeSeries中的数据将被写入BucketStorage,变为不可变数据。 为了实现持久性,BucketData也会写入磁盘。当Goku重新启动时,它会将数据从磁盘读入内存。Pinterest使用NFS来存储数据,从而实现简单的分片迁移。 … Read More

Featured Post

使用Vue构建桌面应用程序:Vuido

我非常喜欢Vue。这是个优秀的框架,可以帮助我们搭建完美的web应用程序。但真正神奇的地方是你不仅仅可以用它搭建web应用程序,还可以使用Weex或NativeScript-Vue创建本地移动应用程序。你还可以选择Electron或Vuido库,搭建桌面应用程序。在本文中,我将介绍如何使用Vuido库创建本地应用程序。 Vuido是一款基于Vue.js的框架,由Michał Męciński开发,用于创建本地桌面应用程序。使用Vuido开发的应用程序可以运行在Windows、OS X和Linux平台,使用本地的GUI组件,不需要Electron库。 Vuido使用为每款桌面平台提供本地GUI组件的libui库,以及Node.js的libui-node绑定。 我们将搭建什么? 为了便于介绍,我们将开发一款简单的应用程序,用于查看你指定城市的当前天气。我们将使用OpenWeatherMap API获取真实数据。 如果你想查阅完整的代码,请点击这里。 安装 正如Vuido文档所述,要开发桌面应用程序有些预先条件。根据平台的不同,预先条件也不同: Windows平台 windows-build-tools Visual Studio 2013的Visual C++ Redistributable Linux平台 build-essential GTK+ 3 OSX平台 Xcode 我将使用OSX平台来开发,我已经安装了Xcode了。 同时,你还需要安装vue-cli。(如果你要使用Vue CLI 3,你还需要@vue/cli-init。) 运行以下的命令创建新项目: vue init mimecorg/vuido-webpack-template my-project 在安装完成之后,你将在src文件夹中发现MainWindow.vue组件,代码如下所示: <template> <Window title=”some-app” width=”400″ height=”100″ margined … Read More

Featured Post

数十亿用户的Facebook如何进行贝叶斯系统调优?

AI前线导读:贝叶斯优化其实就是在函数方程不知的情况下根据已有的采样点预估函数最大值的一个算法。贝叶斯优化的主要目的是与大部分机器学习算法类似,学习模型的表达形式,在一定范围内求一个函数的最大(小)值。针对机器学习的高斯过程(Gaussian Processes,GP)是一个通用的监督学习方法,主要被设计用来解决回归问题。Facebook是全球最大的社交网站,如此庞大体量的在线系统要如何有效地调优呢?让我们看看贝叶斯优化在这方面是如何应用的。 Facebook依靠庞大的后端系统,每天为数十亿人提供服务。在这些后端系统中,许多都有大量的内部参数。例如,支持Facebook的Web服务器使用HipHop虚拟机(HHVM)来处理服务请求,而HHVM有几十个参数用于控制即时编译器。另一个例子是,用于各种预测任务的机器学习。这些系统通常都会涉及多层预测模型,具有大量参数,用于确定模型如何连接在一起,从而产生最终建议。这些参数必须通过使用实时随机实验仔细地进行调优,也称为A/B测试。这些实验中,每一项都可能需要一周或更长时间,因此挑战在于:用尽可能少的实验来优化一组参数。 A/B测试通常用作改进产品的一次性实验。我们的论文《Constrained Bayesian Optimization with Noisy Experiments》,现已在Bayesian Analysis期刊上发表。在这篇论文中,我们描述了如何使用一种被称为贝叶斯优化(Bayesian optimization)的人工智能技术,根据先前测试的结果自适应地设计一轮A/B测试。与网格搜索或手动调优相比,贝叶斯优化可以让我们用更少的实验共同调优更多的参数,并找到更好的值。我们已经在一系列后端系统中使用这些技术进行了数十次参数调优实验,发现它在机器学习系统调优方面特别有效。 AI前线注:论文《Constrained Bayesian Optimization with Noisy Experiments》见:https://projecteuclid.org/euclid.ba/1533866666 A/B测试的贝叶斯优化 在线系统参数调优的一种典型方法是手动运行小型网格搜索,分别对每个参数进行优化。贝叶斯优化构建了参数与感兴趣的在线结果之间关系的统计模型,并使用该模型来决定运行哪些实验。这种基于模型的方法具备几个关键的优势,特别是优化在线机器学习系统的方面。 使用参数维度进行更好地扩展:考虑到可运行的在线实验数量的限制,网格搜索或手动调优不能用于同时进行多个参数调优。模型的使用允许贝叶斯优化扩展到更多的参数;我们通常会共同优化多达20个参数。这对于机器学习系统而言很重要,因为在这些系统中,参数之间的交互经常需要进行联合优化(joint optimization)。 减少实验次数:贝叶斯优化允许我们在多轮实验中借用信息:对连续空间中的参数值进行测试不仅可获得有关其结果的信息,还可以获得有关附近点的信息。这使得我们能够大大减少探索空间所需的实验数量。 更好的实验结果:该模型能够识别不太可能产生良好结果的部分空间,并避免对这些参数值进行测试。这改善了实验组内的体验。 理解参数空间:建模允许我们可视化并更好地理解参数如何影响感兴趣的结果。如下图所示,显示了8参数实验的二维切片,这张可视化的典型图是为我们更好地理解参数空间而绘制的: 我们将在本文中介绍贝叶斯优化的高级描述,然后阐述本论文的工作和一些实验结果。 贝叶斯优化 贝叶斯优化是一种解决优化问题的技术,其中目标函数(即感兴趣的在线指标)没有分析表达式,而是只能通过一些耗时的操作(即随机实验)来评估。通过数量有限的实验来有效地探索多维空间的关键是建模:真正的目标函数是未知的,但我们可以将模型拟合到目前为止的观察值,并使用该模型来预测参数空间的良好部分,我们应该进行额外的实验。 高斯过程(Gaussian process,GP)是一种非参数贝叶斯模型。因为高斯过程提供了很好的不确定性估计(uncertainty estimates),并且易于分析处理,因此它在贝叶斯优化中工作得很好。它提供了在线指标如何随感兴趣的参数变化的估计值,如下图所示: AI前线注:高斯过程可参阅https://en.wikipedia.org/wiki/Gaussian_process 上图中的每个数据标记对应于该参数值的A/B测试额度结果。通过平衡探索(高不确定性)和开发(良好的模型估计),我们可以使用GP来决定接下来要测试的参数。这是通过计算采集函数(acquisition function)来完成的,该函数使用任何给定参数值估计进行实验的值。 假设我们要尝试决定是否应该使用参数配置x进行实验。在x处的观察值是多少?这个问题的答案取决于效用函数(utility function)。假设我们计划在观察x之后结束优化,优化的效用就是它找到的最佳点的值。在这种情况下,观察x的效用就是它的f(x)值比当前最佳值提高了多少,我们称之为x*(假设我们正在最大化): I(x) = max(0, f(x) – … Read More

Featured Post

混沌大会问答:混沌工程的好处、挑战和实践

本文要点 现代体系结构和基础设施是短暂的、动态的,不可预测的用户行为与不可预见的事件交织在一起。我们的系统开始不再像可预测的金属机器那样工作,而更像具有突发行为的生物机器。 灾难恢复已经存在多年了,但是它很昂贵、很传统,而且很脆弱,所以它只会部署在必要的地方,而且极少会用得到。混沌工程利用了云本地体系结构中现有的api和自动化。 IT团队中的每个人都应该关注于混沌工程,但是关注的领域可能有所不同。例如,在操作系统层(CPU、内存)、网络层和应用层都存在混乱。即使是专注于用户体验的产品经理也应该将混沌练习作为他们特性展示的一部分,予以规划和执行。 混沌工程是一种在目标时间框架内引发未知和意外故障的好方法,有助于提高系统的弹性。混沌工程应持续不断地运行。 对于混沌工程来说,有几个重要的先决条件。首先,你需要确保有适当的监控。然后,你需要能够确定五大关键服务是什么。接下来,选择一个服务,并确定一个你想在其上执行的假设和混沌实验。 9月28日,InfoQ在美国旧金山举办了的混沌大会,为了准备这次会议,InfoQ采访了多位演讲者,并讨论了混沌工程的好处、挑战和实践。 首届Chaos Conf将由 Gremlin Inc 团队组织,旨在为专家、实践者和混沌工程领域的新手提供一个分享经验和学习新出现的良好实践的论坛。演讲内容包括向非技术涉众介绍运行混沌实验的想法、混沌工程的历史、实现故障注入、故障管理模式、“破坏容器”和使用Kubernetes运行混沌实验等。 InfoQ最近与诸位Chaos Conf演讲者坐谈,讨论了混沌工程的方方面面,他们是:OUI.Sncf卓越运营总监 Kriss Rochefolle、亚马逊云架构副总裁 Adrian Cockcroft、Honeycomb首席执行官 Charity Majors、Turbine 实验室首席执行官和创始人Mark McBride、沃尔玛实验室工程总监 Vilas Veeraraghavan、推特工程经理Ronnie Chen、彭博社软件工程师Mikolaj Pawlikowski,以及Gremlin的混沌皇后Tammy Butow 和Ana Medina。 InfoQ:欢迎大家的到来,非常感谢你们参加了Chaos Conf会前问答环节。你们可以简单介绍一下你们自己吗? Kriss Rochefolle:你好,我是来自法国南特理工学院的质量和安全工程师(现在叫IMT Atlantique),我在软件公司和初创企业中建立软件质量团队的经历积累一定经验,特别是在多站点环境和离岸环境中受益匪浅。 在领导了第一个法国flash销售网站的敏捷 & DevOps方法之后,我加入了OUI。sncf集团在两年前以卓越运营方法和少量的混沌工程继续DevOps转型。 Adrian Cockcroft:你好,我是亚马逊云架构战略副总裁,我的部分工作是为亚马逊运营开源社区团队。我剩下的工作就是和客户交流,在会议上发言。 Charity Majors:嘿,我是 honeycomb.io的联合创始人兼首席执行官,那是一家为软件工程师建立可观察性的公司。我还曾任职于Parse/Facebook, … Read More

Featured Post

Kafka落选!InfoWorld最佳开源数据平台奖公布

AI前线导读:一年一度由世界知名科技媒体InfoWorld评选的Bossie Awards于9月26日公布,本次Bossie Awards评选出了最佳数据库与数据分析平台奖、最佳软件开发工具奖、最佳机器学习项目奖等多个奖项。在最佳开源数据库与数据分析平台奖中,Spark和Beam再次入选,连续两年入选的Kafka这次意外滑铁卢,取而代之的是新兴项目Pulsar;开源数据库入选的还有PingCAP的TiDB。  Bossie Awards是知名英文科技媒体InfoWorld针对开源软件颁发的年度奖项,根据这些软件对开源界的贡献,以及在业界的影响力评判获奖对象,由InfoWorld编辑独立评选,目前已经持续超过十年,是IT届最具影响力和含金量奖项之一。一起来看看接下来你需要了解和学习的新晋数据库和数据分析工具有哪些。 现如今,没有什么东西能够比数据更大的了!我们有比以前多得多的数据,我们有更多方式来存储和分析数据:SQL数据库、NoSQL数据库、分布式OLTP数据库、分布式OLAP平台、分布式混合OLTP/OLAP平台。2018年数据库和数据分析平台方面的Bossie大奖获得者也包括了流式处理方面的创新者。 Apache Spark 尽管新的产品层出不穷,Apache Spark在数据分析领域仍然占据着举足轻重的地位。如果你需要从事分布式计算、数据科学或者机器学习相关的工作,就使用Apache Spark吧。Apache Spark 2.3在二月份发布,它依然着重于开发、集成并加强它的Structured Streaming API。另外,新版本中添加了Kubernetes调度程序,因此在容器平台上直接运行Spark变得非常简单。总体来说,现在的Spark版本经过调整和改进,似乎焕然一新。 Apache Pulsar Apache Pulsar最初由雅虎开发,后来进入Apache孵化器,最近正式毕业,成为Apache顶级项目。Pulsar旨在取代Apache Kafka多年的主宰地位。Pulsar在很多情况下提供了比Kafka更快的吞吐量和更低的延迟,并为开发人员提供了一组兼容的API,让他们可以很轻松地从Kafka切换到Pulsar。 Pulsar的最大优点在于它提供了比Apache Kafka更简单明了、更健壮的一系列操作功能,特别在解决可观察性、地域复制和多租户方面的问题。在运行大型Kafka集群方面感觉有困难的企业可以考虑转向使用Pulsar。 Apache Beam 多年来,批处理和流式处理之间的差异正在慢慢缩小。批次数据变得越来越小,变成了微批次数据,随着批次的大小接近于一,也就变成了流式数据。有很多不同的处理架构也正在尝试将这种转变映射成为一种编程范式。 Apache Beam就是谷歌提出的解决方案。Beam结合了一个编程模型和多个语言特定的SDK,可用于定义数据处理管道。在定义好管道之后,这些管道就可以在不同的处理框架上运行,比如Hadoop、Spark和Flink。当为开发数据密集型应用程序而选择数据处理管道时(现如今还有什么应用程序不是数据密集的呢?),Beam应该在你的考虑范围之内。 Apache Solr 尽管大家都认为Apache Solr是基于Lucene索引技术而构建的搜索引擎,但它实际上是面向文本的文档数据库,而且是一个非常优秀的文档数据库。不管你是要“大海捞针”,还是要运行空间信息查询,Solr都可以帮上忙。 Solr 7系列目前已经发布了,新版本在运行更多分析查询的情况下仍然能保证闪电般的速度。你可以加入很多文档,不到一秒钟就能返回结果。它还改进了对日志和事件数据的支持。灾备(CDCR)现在也是双向的。Solr全新的自动扩展功能简化了集群负载增长时的扩展操作。 JupyterLab JupyterLab是新一代的Jupyter,一个基于Web的notebook服务器,颇受全世界数据科学家的喜爱。经过三年开发,JupyterLab完全改变了人们对notebook的理解,支持对单元格进行拖放重新排布、标签式的notebook、实时预览Markdown编辑,以及改良的扩展系统,与GitHub等服务的集成变得非常简单。预计在2018年底,JupyterLab将发布1.0稳定版。 KNIME分析平台 KNIME分析平台是用来创建数据科学应用程序和服务的开源软件。它提供了可拖放的图形界面,用来创建可视化工作流,还支持R和Python脚本、机器学习,支持和Apache Spark连接器。KNIME目前有大概2000个模块可用作工作流的节点。 KNIME还提供了商业版,商业版旨在提升生产效率和支持协作。不过,开源版KNIME分析平台并不存在人为限制,可以处理包含数亿行数据的项目。 CockroachDB CockroachDB是基于事务性和一致性键值存储而构建的分布式SQL数据库。它的设计目标是能够在磁盘、机器、机架甚至是数据中心的故障中存活下来,最小化延迟中断,不需要人工干预。CockroachDB … Read More

Featured Post

Oracle推出轻量级Java微服务框架Helidon

近日,Oracle推出了一个新的开源框架Helidon,该项目是一个用于创建基于微服务的应用程序的Java库集合。和Payara Micro、Thorntail(之前的WildFly Swarm)、OpenLiberty、TomEE等项目一样,该项目也加入了MicroProfile家族。 Helidon最初被命名为J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE和Helidon MP。Helidon SE提供了创建微服务的三个核心API:Web服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。Helidon MP支持用于构建基于微服务的应用程序的MicroProfile 1.1规范。 Web服务器 受NodeJS和其他Java框架的启发,Helidon的Web服务器是一个异步、反应性API,运行在Netty之上。WebServer接口包括对配置、路由、错误处理以及构建度量和健康端点的支持。 下面的示例代码演示了如何启动一个简单的Helidon Web服务器,在一个随机可用的端口上显示“It works!”:   // 在一个随机可用的端口上启动服务器 public void startWebServerUsingRandomPort() throws Exception { WebServer webServer = WebServer .create(Routing.builder() .any((req,res) -> res.send(“It works!” + “\n”)) .build()) .start() .toCompletableFuture() .get(10,TimeUnit.SECONDS); … Read More

Featured Post