最近发布

JS真的很强大,人人都会用JS写操作系统了?

什么是Windows 95?这个Windows 95是微软的那个操作系统吗?可以说是,也可以说不是。它实际上是一个Electron app,可以运行在Windows、macOS和Linux上。请看下面的截图: 是的,绝对是的。 当然可以了,但建议在640×480的分辨率和256色模式下运行DOS游戏——一股很浓的复古怀旧风啊! 当然可以了。 Linux系统需要运行X-Server Display并安装了Docker,然后启动Docker: docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device /dev/snd --name windows95…

Tink是开源加解密方面不错的选择

在谷歌,很多产品团队使用加密技术来保护用户数据。在加密技术领域,一个很细微的错误都会产生非常严重的后果。想要正确实现加密技术,可能需要先消化数十年的学术文献。毋庸置疑,很多开发人员没有这么多时间。 为了帮助开发人员交付安全的加密代码,谷歌开发了Tink(https://github.com/google/tink)—一个支持多语言的跨平台加密库。他们希望Tink能够成为一个社区项目,因此Tink从一开始就托管在GitHub上,并且已经吸引到了几个外部贡献者。在谷歌,Tink已经被用来保护多个产品的数据,如AdMob、Google Pay、Google Assistant、Firebase、Android Search App等。经过近两年的发展,Tink正式迎来了1.2版本(https://github.com/google/tink/releases/tag/v1.2.0)。这也是第一个支持云、Android、iOS的版本! Tink致力于提供安全且易于使用的加密API。Tink建立在现有的库之上,如BoringSSL和Java Cryptography Architecture,同时对这些库中存在的弱点进行了加固。 有了Tink,很多常见的加密操作(如数据加密、数字签名等)只需几行代码即可完成。以下是使用AEAD接口加密和解密的示例(Java版): import com.google.crypto.tink.Aead;import com.google.crypto.tink.KeysetHandle;import com.google.crypto.tink.aead.AeadFactory;import com.google.crypto.tink.aead.AeadKeyTemplates;// 1. Generate the key material.KeysetHandle…

未来的应用程序会是什么样的?

16年前,计算机刚刚兴起,简单的HTML代码和并不复杂的后台服务应用程序,就大大改变了新的创新——互联网的兴起。如今,计算机应用程序可以解决问题的场景大大超越了以往任何时候。未来,将会比以往任何时候都成几何倍数地增加。那么如何构建更新颖的应用程序来应对未来各种复杂场景的变化。 Lightbend CTO兼联合创始人乔纳斯·鲍纳给未来应用程序定义蓝图——反应宣言(reactive manifesto 1.0), 以下是该宣言的google翻译: 为未来的应用程序定义蓝图,这些应用程序是事件驱动的,可伸缩的,弹性的和交互式的。 2013年8月22日 注意:本文档是我在2013年中期撰写的第一版Reactive Manifesto。可以在reactivemanifesto.org上找到最新且大大改进的版本。 近年来,应用要求发生了巨大变化。仅在几年前,大型应用程序具有数十台服务器,响应时间为数秒,离线维护时间为数十亿字节。今天,应用程序部署在从移动设备到运行数千个多核处理器的基于云的集群的各个方面。用户期望毫秒响应时间和100%正常运行时间。数据需求正在扩展到PB级。 最初是像谷歌或Twitter这样的创新互联网驱动型公司的领域,这些应用程序特征在大多数行业中都呈现出来。金融和电信是第一个采用新做法来满足新要求的人,而其他人则遵循这些要求。 新要求需要新技术。以前的解决方案强调托管服务器和容器。通过购买更大的服务器和通过多线程进行并发处理来实现扩展。通过复杂,低效且昂贵的专有解决方案添加了额外的服务器。 但是现在,一种新的架构已经发展到允许开发人员构思和构建满足当今需求的应用程序。我们称这些反应性应用程序。该体系结构允许开发人员构建事件驱动,可伸缩,弹性和交互的系统:以可扩展且具有弹性的应用程序堆栈为后盾,提供具有实时感的高度交互式用户体验,随时可部署在多核和云计算体系结构上。“反应性宣言”描述了进行反应所需的这些关键特征。 Merriam-Webster将反应定义为“对刺激很容易响应”,即其组件“活跃”并随时准备接收事件。该定义捕获了被动应用程序的本质,重点关注以下系统: 这些中的每一个都是反应性应用的基本特征。虽然它们之间存在依赖关系,但这些特征与标准分层应用程序架构意义上的层不同。相反,他们描述了适用于整个技术堆栈的设计属性。 在下文中,我们将深入研究这四种品质中的每一种,并了解它们之间的相互关系。 基于异步通信的应用程序实现松耦合设计,比仅基于同步方法调用的应用程序更好。可以在不考虑事件如何传播的细节的情况下实现发送者和接收者,从而允许接口关注于通信的内容。这导致实施更容易扩展,发展和维护,为您提供更大的灵活性并降低维护成本。 由于异步通信的接收方可以在事件发生或接收到消息之前保持休眠状态,因此事件驱动方法可以有效利用现有资源,允许大量接收方共享单个硬件线程。因此,与基于阻塞同步和通信原语的传统应用程序相比,处于高负载下的非阻塞应用程序可以具有更低的延迟和更高的吞吐量。这样可以降低运营成本,提高利用率并使最终用户更加满意。 在事件驱动的应用程序中,组件通过事件的生成和消费彼此交互…

如何构建和运行快速数据应用程序

流数据处理不仅仅是更快地提取信息。它是关于我们如何构建以数据为中心的应用程序的批发变革。对可用性,可伸缩性和弹性的需求迫使快速数据架构变得像微服务架构。相反,构建微服务的成功组织发现他们的数据需求随着他们的组织而增长。因此,数据和微服务架构之间发生了统一。 Lightbend快速数据平台具有独特的优势,可以帮助企业克服这些挑战,因为我们在这两个领域,微服务和流数据方面拥有深厚的专业知识。 Lightbend快速数据平台为企业提供的服务: 引导选择,以便您选择最适合您项目的流组件。 一个集成的平台和深度支持,以加快您的开发人员的速度。 智能监控和管理,使您的运行集群保持弹性,可扩展和响应,确保大规模确保可靠性。 为您的所有快速数据应用程序组件提供一站式支持,让您完全放心。 详细请免费下载PDF:https://info.lightbend.com/rs/558-NCX-702/images/lightbend-fast-data-platform-tech-overview-v3.pdf 官方平台文档:https://developer.lightbend.com/docs/fast-data-platform/1.2.0/

服务机器学习模型——架构,流处理引擎和框架指南

机器学习当然是当今软件工程中最热门的话题之一,但该领域的一个方面需要更多关注:如何为经过培训的模型提供服务。通常,两个不同的小组负责模型培训和模型服务。数据科学家经常介绍他们自己的机器学习工具,使软件工程师创建互补的模型服务框架以跟上步伐。这不是一个非常有效的系统。 该实际报告展示了一种更标准化的模型服务和模型评分方法。作为Lightbend首席架构师的作者Boris Lublinsky介绍了作为输入流处理的一部分实时服务模型的架构。这种方法还可以使数据科学团队更新模型,而无需重新启动现有应用程序。 使用Python,Beam,Flink,Spark,Kafka流和Akka代码示例(可在GitHub上获得),Lublinsky使用几种流行的流处理引擎和框架来检查构建此模型评分解决方案的不同方法。 你会探索: 使用Predictive Model Markup Language(PMML)和TensorFlow作为示例导出模型的方法 实施 Lightbend的 流处理引擎的架构:Spark,Flink和Beam 使用流处理库实现相同的解决方案:Kafka Streams和Akka Streams 用可查询状态监视体系结构的方法 详细请见PDF:https://info.lightbend.com/rs/558-NCX-702/images/ebook-serving-machine-learning-models.pdf

何时选择Akka HTTP,Lagom Framework或Play Framework?

关注和使用Play Framework已经5年时间了,目前是公司使用的核心技术,推荐使用该系列技术框架,当初是因为相信其未来:任何一个程序员面对都是弹性可扩展、高并发、分布式、实时高效的应用处理系统。构建这样的应用程序,其中的核心技术只有技术专家才可应付,只关注应用开发的程序人员则很难掌控和实现。所以,选择好的框架作为应用开发工具,是捷径之选。 下面是官方对系列框架如何选择的最新介绍,原文详见:https://www.lightbend.com/blog/lightbend-podcast-when-to-use-play-lagom-or-akka-http Google翻译如下: 成千上万的开发人员正在使用Lightbend技术构建出色的系统,但某些特定工具对于特定用例更好。那么如何为工作选择合适的工具呢?在与Lightbend的微服务实践负责人Wade Waldron的播客中,我们讨论了为什么考虑您的用例,您的团队和您的环境很重要。 有些问题要问自己: 您正在构建REST API吗? 你在构建GUI吗? 您是否希望在服务之间明确地进行HTTP调用?或者您正在寻找更像远程过程调用(RPC)的东西? 您是否计划使用Command Query Responsibility Segregation(CQRS)或Event Sourcing(ES)进行构建? 您的团队是否愿意在较低的水平上工作,了解所发生的所有细节?或者他们更喜欢框架透明地处理这些细节? 根据您对这些问题的回答,您可以确定Play Framework,Lagom Framework或Akka…