关于开发:谷歌云-最大限度地提高可靠性降低成本调整-Kubernetes-工作负载的大小

您晓得通过调整工作负载申请以更好地代表其理论应用状况能够节俭多少钱吗?如果您没有调整工作负载规模,则可能会为工作负载基本没有应用的资源领取过高的费用,甚至更糟,从而使工作负载面临因配置有余而导致可靠性问题的危险。 为了进步 Kubernetes 工作负载的可靠性,设置资源是最重要的事件。在本博客中,咱们将帮忙您理解Kubernetes 老本优化现状报告的重要发现! 依据咱们的钻研后果,工作负载调整是最重要的黄金信号。工作负载调整掂量的是开发人员正确应用为其应用程序申请的 CPU 和内存的能力。 规模调整具备挑战性 预测应用程序的资源需要可能十分艰难,而传统数据中心环境中的开发人员从来并不关怀这一点。在传统的数据中心环境中,通常会事后适度配置资源,以确保满足峰值需要和将来增长的需要,因而开发人员无需专一于精确预测资源需要,因为它们已被过剩容量所笼罩,而在云环境中,资源按需耗费。在效率和可靠性之间找到均衡通常感觉像是一种奥妙的均衡行为。 用于调整工作负载规模的工具 Cloud Monitoring 和 GKE UI 中提供了原生工具,您能够应用它们来调整 GKE 上运行的工作负载规模。 在控制台中调整大小 “工作负载老本优化”选项卡可通过显示已应用的资源与申请的资源来帮忙您辨认可优化的工作负载。 为了充分利用潜在的老本节俭,您能够深刻理解集群以查看工作负载级别的资源倡议。 仅查看部署对象的工作负载资源倡议: 在GKE 老本优化中抉择一个集群单击工作负载 > 老本优化抉择一个部署工作负载在工作负载的详细信息页面中,抉择操作 > 扩大 > 编辑资源申请通过云监控调整规模 Cloud Monitoring 提供内置的 VPA 规模倡议指标,您能够应用这些指标来监控工作负载的性能并确定调整工作负载规模的机会,而无需创立 VPA 对象。 要查看这些指标: 进入云监控 > 指标摸索控制台。在指标下拉列表中,抉择指标:内存倡议: Kubernetes Scale > autoscaler > Recommended per replica request bytesCPU举荐: Kubernetes Scale > autoscaler > Recommended per replica request cores大规模调整规模 如果您有趣味查看跨集群和我的项目的倡议,咱们创立了一份指南,您当初就能够应用它来帮忙您大规模调整 GKE 工作负载规模。 ...

August 18, 2023 · 1 min · jiezi

关于开发:SOFAStack-的一下五年

文|宋顺(GitHub ID:nobodyiam)SOFAStack 社区开源负责人蚂蚁团体高级技术专家 本文 3861 字 浏览 11 分钟  01回顾开源这五年回想起 2018 年 4 月 19 日 SOFAStack 首次开源,过后的官宣文章中就提到了咱们开源的初心: 冀望通过逐渐向社区开源 SOFA 中各个组件,从而一方面帮忙更多机构和合作伙伴实现金融分布式转型,帮忙大家更加疾速构建稳固的金融级云原生的架构,另一方面也是冀望 SOFA 在蚂蚁体系之外的更大场景上来利用,来进一步锻造改良这套体系,使其更加欠缺和巩固。 所以这几年咱们也是围绕着这个初心把 SOFAStack 体系的各个产品逐步开源,包含首批开源的 SOFABoot、SOFARPC、SOFAArk,以及起初的 SOFARegistry、SOFAJRaft、Seata 等。同时咱们也孵化了 MOSN 社区,开源了云原生网络代理 MOSN 以及利用运行时 Layotto。这些产品也是代表着 SOFAStack 在金融级云原生畛域的积淀和积攒,目前曾经在上百家企业中生根发芽。 图 1 - 产品开源工夫线 咱们再来看几个数字,在这 5 年中,咱们举办了 18 场 Meetup,发展了 32 场直播分享,目前在 GitHub 组织层面有 438 名贡献者以及 3W 的 Star。 图 2 - 开源 5 年的几个数字 除了在我的项目上播种了不少贡献者和 Star 外,咱们也逐步地对开源有了更为粗浅的意识。 以开源指标为例,咱们的初心是为了帮忙更多机构和合作伙伴实现金融分布式转型,咱们一开始最为关注的指标是用户数;但因开源的特殊性,咱们无奈间接获取理论的用户数,所以采纳了 GitHub 的 Star 作为掂量指标。 ...

June 25, 2023 · 2 min · jiezi

关于开发:可观测性最佳实践怎样让运维和开发协同保障系统稳定性

保障系统稳固运行,这是所有数字平台的根本要求,但谁是第一责任人?假如 10 年前提出此问,绝大部分答案会说是运维。但在明天,随着微服务和云原生的进一步遍及,很多状况是运维负责的 IaaS 和 PaaS 一切正常,但开发提供的程序漏洞百出,极不稳固,常常解体,这时谁该是第一责任人?可开发其实也有话说,既要放弃利用高频迭代,又要保障稳固不出错,这是两个反方向的工作,不可能同时实现。那就把这个问题再进一步,是保障系统稳定性重要,还是放弃高频迭代疾速上线重要?可能在不同的业务场景下,答案都不一样,但业务既要又要怎么办?在这个看似不可能实现的工作背后,运维和开发是否有可能严密协同,共担责任,找到零碎稳固和高频迭代的平衡点? 其实这齐全能够做到,首先要实现零碎全链路数据的可观测性。 可观测性对于生产环境的价值可观测性是指在零碎中收集和剖析数据以理解零碎的行为和状态的能力。可观测性并不是一个新生物,而是一种观点的翻新。绝对于传统的监控而言,可观测性是站在零碎的角度去摸索零碎应该如何失当地展示本人的状态,而监控则是站在局外人的角度去扫视零碎的运行状况。在生产环境中,可观测性能够帮忙运维人员理解零碎的运行状况,及时发现问题并进行解决。同时,可观测性也能够帮忙研发人员理解零碎的瓶颈和性能问题,进而进步零碎的可靠性和性能。因而,引入可观测性是实现生产环境运维和研发协同的一个重要步骤。 可观测性实现研发运维协同的实际构建业务的全面可观测性平台对于服务于生产环境的可观测性平台,必须具备残缺的业务可观测性能力。从理论的业务零碎登程,可能笼罩多种多样的客户端,例如 Web、小程序、Android、iOS 等。服务端反对多种语言,并尽量减少接入的门槛,对业务的影响降到最低。其次,对于中间件、零碎以及各种云服务的反对,都要做到全面笼罩。只有这样的可观测性平台能力具备生产环境下运维和研发协同应用的前提。 通过观测云实现的可观测性平台,具备残缺全面的可观测能力。无论业务采纳任何客户端、服务端、中间件或多种多样的云服务,或者是多云能力,观测云都具备十分好的扩大接入能力。理论革新接入对业务自身造成的影响也十分小。构建对立日志剖析平台在生产环境中,运维和开发人员都要依赖大量的日志来跟踪剖析零碎运行的状况,但实际上利用产生的日志,包含业务自身的日志、业务依赖中间件的日志、系统日志、平安日志等等,这些日志基本上都是散落在不同的日志平台上,当生产环境零碎呈现故障的时候,研发和运维须要在这些不同的日志零碎中提取有用的信息,这对于疾速排查故障,造成了十分大的麻烦。如果能把这些日志集中管理,并提供集中检索性能和关联剖析,不仅能够提供高诊断效率,同时对系统状况能有全面的理解,能够防止预先救火的被动。观测云提供全面的日志采集能力,通过配置日志采集,把日志数据对立上报到观测云,就能够对所采集的日志数据进行对立存储、查问、告警、剖析、导出等操作。对于开发和运维人员,从一个日志平台检索所有日志内容,不论是开发还是运维都可能疾速把握各个系统运行的状况。 构建分布式追踪能力分布式跟踪能力是一种用于跟踪分布式系统申请的办法。当零碎外部的服务和组件数量减少时,分布式跟踪能力变得越来越重要。通过一个 trace_id 串联前后端所有服务,分布式追踪能力可能疾速理解申请在零碎中的流向和工夫。此外,如果零碎的申请日志也可能包含申请 trace_id,您就可能具备残缺的分布式追踪能力。这样,运维人员能够疾速把握零碎间的依赖关系,开发人员也可能疾速识别系统瓶颈及性能问题。除了跟踪申请,分布式追踪能力还能够帮忙理解零碎中的谬误和异样。应用分布式追踪工具来监督申请的响应工夫、成功率、错误率等指标,以及零碎中的资源应用状况。这些指标能够帮忙运维和开发辨认潜在的性能问题,并提供优化零碎的线索。利用观测云,可实现残缺的从前端到后端,再到基础设施端的全链路可追踪能力,通过一个 trace_id 实现用户会话拜访、页面拜访、后端接口、后端申请日志,以及对应主机或容器监控的串联追踪能力。运维和研发利用全链路的可追踪能力,疾速识别系统问题并解决,最大水平进步零碎的稳定性。 构建异样跟踪能力在生产环境中,不论是运维还是研发,都须要实时跟踪零碎产生的异样。运维人员要及时发现零碎异样并进行解决,他们能够利用可观测性平台来实时跟踪零碎的健康状况,一旦出现异常,他们就须要立刻采取措施来解决问题。而研发人员也须要实时跟踪零碎异样,他们能够利用异样数据来进行问题剖析和性能优化。通过对异样数据的剖析,他们能够理解零碎的运行状况,找到问题的本源并进行优化,从而进步零碎的性能和可靠性。观测云具备零碎运行中的谬误追踪能力,并具备异样产生的残缺上下文,异样时的系统日志、主机状态、依赖服务的状态,十分不便运维和开发人员定位并解决异样问题。其次,通过谬误聚类能够理解零碎中有哪几类的异样,通过聚类能够疾速通晓零碎异样品种,把精力投入到最重要的问题上。 构建扁平化的基础设施监控平台在传统模式下,基础设施平台的问题都是由运维来保障。当零碎呈现故障时,运维人员会去排查基础设施相干的监控数据,排除基础设施问题后再把相干问题透传给研发人员。在生产环境下的故障定位解决时效要求十分高,而研发和运维对于基础设施监控数据的都有依赖,因而须要一种更加高效的形式来解决这个问题。利用可观测平台构建扁平化的基础设施监控平台,从零碎自身登程,将依赖的基础设施,如主机、容器、数据库等全副集中起来,不论是研发还是运维人员,都能第一工夫知悉基础设施的健康状况,从而对故障的真实情况疾速做出判断。通过观测云构建的基础设施监控平台,不光能收集这些基础设施平台的指标、日志等监控数据,而且具备将基础设施同零碎关联的能力,这种能力在简单的生产环境下十分有价值,研发人员能够从零碎利用登程查看依赖的基础设施监控数据,运维人员能够从基础设施登程,查看基础设施运行的零碎利用的监控数据。 总结在生产环境中引入可观测性对于确保零碎的稳定性、可靠性和性能至关重要。通过构建业务的全面可观测性平台、对立的日志剖析平台、分布式追踪能力、异样跟踪能力、扁平化的基础设施监控平台等办法,运维和研发团队能够更无效地协同工作,辨认和解决问题。应用这些办法,团队能够确保其零碎安稳运行,用户取得良好体验。 观测云更多资讯请关注观测云官网(guance.com),扫码小助手获取~

June 16, 2023 · 1 min · jiezi

关于开发:恭喜龙蜥社区开发者沙龙圆满落幕-年度优秀贡献者名单正式公布

3 月 17 日,龙蜥社区在北京胜利举办开发者沙龙,会上正式颁布「2022 龙蜥社区优良贡献者」榜单。 来自中科方德、龙芯中科、统信软件、浪潮信息、Intel、工业和信息化电子五所、中南大学、北京大学等企业、高校及研究所,超四十位开发者参加了此次沙龙,围绕“如何参加社区做奉献”、“社区如何给予足够激励”等话题开展热烈探讨。 (图/沙龙开发者现场合照) (图/沙龙开发者们现场探讨合照) 此前,由龙蜥社区特约参谋、学术代表、经营委员会、技术委员会等 12 位成员组成的评委团,通过了近一个月的迷信且谨严的评审,「2022 龙蜥社区优良贡献者」获奖者榜单正式颁布。现场,龙蜥社区理事长马涛、副理事长朱建忠,龙蜥社区技术委员会主席杨勇、副主席孟杰,龙蜥社区经营委员会主席陈绪博士等为获奖者进行颁奖,以下为颁奖环节现场快照: (图/“卓越贡献奖”获得者合照) (图/“代码之星”获得者合照) (图/“布道之星”获得者合照) (图/“最佳研发团队”获得者合照) (图/“最佳 SIG”获得者合照) (图/“最佳开源我的项目”获得者合照) (图/“产学研单干促成奖”获得者合照) 获奖名单详见下方海报: —— 完 ——

March 21, 2023 · 1 min · jiezi

关于开发:Terraform-新手村指南萌新必读

基础设施即代码(IaC)是指应用代码和软件开发技术来配置和治理基础设施的实际。IaC 背地的逻辑是尽量打消手动配置基础设施和资源的需要,比方服务器、负载平衡以及数据库等。因为基础设施是整个软件开发流程的一个组成部分,并且与利用交付更严密地分割在一起,因而让基础设施的更改更容易交付非常重要。  应用代码来定义和治理基础设施及其配置,能够让开发者采纳版本控制、测试和自动化部署等技术,这有助于防止各种利用问题产生,比方性能瓶颈、性能故障等。  Terraform 是一个被宽泛应用的开源 IaC 工具,用户能够以申明式的形式来治理基础设施。借助 Terraform, 用户能够应用简略的配置语言治理多个不同云厂商的云资源,比方 AWS、Azure、GCP等。  本文将会介绍 Terraform 的根底,包含架构、工作原理、工作流程及最佳实际等方面的内容。  Terraform 架构Terraform 是一款基于插件的工具,因而其有一个外围利用 Terraform,和上百个插件。外围利用提供了一个对立的层来治理 IaC 代码,并且它还会负责装置所需的插件,调用它们、治理状态等。另一方面,插件能够与基础设施平台和利用通信,如AWS、GCP、Grafana、Jenkins、GitLab等。其中一些插件由 Hashicorp 团队保护,另外的那些则是由第三方保护。每个人都能够编写并公布本人的插件,拜访下方网站能够获取插件库:https://registry.terraform.io/   Terraform 插件由两大次要类型:Provider 和 Provisioner。Provider 是通过 API 负责与理论基础设施或利用进行连贯,并创立、批改和删除对象和资源。Provisioner 是负责连贯曾经配置好的基础设施并对其进行更改。例如,你能够应用 AWS Provider 来配置一个 EC2 实例,并在配置实现后近程执行 Provisioner 来在实例上执行某些命令行。(须要留神的是,Provisioner 通常不是最佳实际)  Terraform 外围概念本节介绍一些 Terraform 中应用的外围概念/术语:  Variables:也被称为 input-variables(输出变量),它是 Terraform 模块应用的键值对,能够自定义。Provider:一种插件类型,与 API 服务进行交互并拜访相干资源。Module:它是一个蕴含 Terraform 模板的文件夹,所有的配置都能够在这里定义。State:它由 Terraform 治理的基础设施和相干配置的缓存信息组成。Resources:它指一个或多个基础设施对象(计算实例、虚构网络等)的块(block),这些对象用于配置和治理基础设施。Data Source:它是由 provider 实现的,以返回内部对象的信息到 Terraform。Output Values:这是 Terraform 模块的返回值,能够被其余配置应用。Plan:这是指其中一个阶段,在这一阶段中会决定须要创立、更新或销毁什么,以便从基础设施的 real/current 状态转移到冀望状态。Apply:这一阶段会利用基础设施的更改 real/current 状态,以推动到冀望状态。 Terraform 生命周期Terraform 的生命周期由init、plan、apply和 destroy,4个阶段形成。  Terraform init 初始化工作目录,其中包含所有的配置文件。Terraform plan 被用来创立执行打算以达到基础设施的冀望状态。为了达到预期状态,会对配置文件进行更改。Terraform apply 会对在 plan 阶段中定义的基础设施进行更改,从而使基础设施达到冀望状态。Terraform destroy 这一阶段用于删除所有的旧基础设施资源,这些资源在apply 阶段后被标记为污损(taint)。 Terraform 的工作原理Terraform 能够让用户通过配置文件定义和治理整个基础设施和版本控制。这次要由 Terraform 架构中的两个次要组件来实现这一指标:Core 和 Provider。  ...

March 8, 2023 · 1 min · jiezi

关于开发:以太坊开发框架Truffle基础使用介绍

Truffle Truffle简介 truffle unbox webpack一条命令因为要下载泛滥须要的模块,大略耗时10分钟左右,所以咱们先来理解一下Truffle。 Truffle是目前最风行的以太坊DApp开发框架,(依照官网说法)是一个世界级的开发环境和测试框架,也是所有应用了EVM的区块链的资产治理通道,它基于JavaScript,致力于让以太坊上的开发变得简略。 Truffle有以下性能: 内置的智能合约编译,链接,部署和二进制文件的治理。合约自动测试,不便疾速开发。脚本化的、可扩大的部署与公布框架。可部署到任意数量公网或私网的网络环境治理性能应用EthPM和NPM提供的包治理,应用ERC190规范。与合约间接通信的间接交互控制台(写完合约就能够命令行里验证了)。可配的构建流程,反对严密集成。在Truffle环境里反对执行内部的脚本。Truffle的客户端 咱们之后写的智能合约必须要部署到链上进行测试,所以truffle构建的DApp也必须抉择一条链来进行部署。咱们能够抉择部署到一些公共的测试链比方Rinkeby或者Ropsten上,毛病是部署和测试工夫比拟长,而且须要破费肯定的工夫赚取假代币避免out of gas。当然,对于DApp公布的正规流程,staging(模仿环境)还是应该用测试公链的。 还有一种形式就是部署到私链上,这在开发阶段是通常的抉择。Truffle官网举荐应用以下两种客户端: Ganachetruffle develop而truffle develop是truffle内置的客户端,跟命令行版本的Ganache根本相似。在truffle目录下bash输出: truffle develop即可开启客户端,和ganache一样,它也会给咱们主动生成10个账户。惟一要留神的是在truffle develop里执行truffle命令的时候须要省略后面的“truffle”,比方“truffle compile”只须要敲“compile”就能够了 装置Truffle 启动geth,而后咱们来装置truffle。truffle是一个dapp的开发框架,它能够使得dapp的构建和治理非常容易。 你能够像这样应用npm装置truffle:>npm install -g truffle而后咱们创立一个空目录,在上面创立truffle我的项目: mkdir simple_voting_by_truffle_dappcd simple_voting_by_truffle_dappnpm install -g webpacktruffle unbox webpacktruffle init: 在当前目录初始化一个新的truffle空我的项目(我的项目文件只有truffle-config.js 和truffle.js;contracts目录中只有Migrations.sol;migrations目录中只有1_initial_migration.js)。 truffle unbox: 间接下载一个truffle box,即一个事后构建好的truffle我的项目;unbox的过程绝对会长一点,实现之后应该看到这样的提醒: 这里的webpack就是一个基于webpack构建流程的官网我的项目框架(truffle box),更多truffle box参见: https://truffleframework.com/boxes 创立我的项目 初始化一个truffle我的项目时,它会创立运行一个残缺dapp所有必要的文件和目录。咱们间接下载webpack这个truffle box,它外面的目录也是相似的: lsREADME.md contracts node_modules test webpack.config.js truffle.js app migrations package.jsonls app/index.html javascripts stylesheetsls contracts/ConvertLib.sol MetaCoin.sol Migrations.solls migrations/1_initial_migration.js 2_deploy_contracts.jsapp/ - 你的利用文件运行的默认目录。这外面包含举荐的javascript文件和css款式文件目录,但你能够齐全决定如何应用这些目录。contract/ - Truffle默认的合约文件寄存目录。migrations/ - 部署脚本文件的寄存目录。test/ - 用来测试利用和合约的测试文件目录。truffle.js - Truffle的配置文件。truffle也会创立一个你能够疾速上手的示例利用,你能够释怀地删除我的项目上面contracts目录的ConvertLib.sol和MetaCoin.sol文件。 ...

December 23, 2022 · 3 min · jiezi

关于开发:一种可灰度的接口迁移方案

在疾速迭代的互联网背景下,零碎为了实现疾速上线,经常会抉择最快的开发模式,例如咱们常见的mvp版本迭代。大部分的业务零碎对于将来业务的倒退是不确定的,因而随着工夫的推移,往往会遇到各种各样的瓶颈,例如零碎性能、无奈适配业务逻辑等问题,这时可能就波及到零碎架构的降级。系统升级往往蕴含最根底的两个局部:接口迁徙重构和数据迁徙重构,在零碎架构降级的过程中,最重要的是须要保证系统稳定性,即用户不感知。因而文本的目标是提供一种可灰度、回滚的设计思路,实现稳固的架构降级。场景在咱们零碎迭代过程中,往往波及到重构、数据源切换、接口迁徙等场景,为了保障系统安稳上线,因而在接口迁徙过程中应该保障可回滚、可灰度。接口迁徙可能也波及到数据迁徙,两者的先后顺序应该不影响到零碎的稳定性。总结一下,接口迁徙的指标: 可灰度,即应用新老接口是可能管制的。可回滚,如应用新接口异样,可能疾速回滚到老接口。不入侵业务逻辑,不改变原来的业务逻辑代码,等迁徙结束后再整体下线,避免间接侵入批改造成不可逆的影响。老接口在零碎安稳运行后收口,即对老的数据源拜访、老的接口可能安稳下线迁徙计划本文次要为接口迁徙和数据迁徙提供了一种思路,在第3节里会有实际的外围代码实现。(代码只是提供思路,并不是可能间接运行的代码) 总体迁徙计划下图示意了接口迁徙的思路,参考了cglib的jdk的代理形式。假如你有一个待迁徙接口类(指标类),那么你须要从新写一个代理类作为迁徙后的接口。指标类和代理类的抉择通过开关去管制,开关波及到两个层面: 总开关:用于管制是否全量切换新接口,当接口迁徙稳固上线 且 数据迁徙结束(如有)灰度开关:能够设置一个灰度开关列表,用于管制你的那些接口/数据须要走代理接口针对不同的接口逻辑,代理接口实现逻辑会有差别,具体场景如下文所述。 单条数据查问针对单条数据,能够通过数据源来判断起源。基于可灰度和回滚的准则,指标类和代理类的路由规定如下: 优先判断总开关,如果总管制开关已关上,则阐明迁徙已实现并且验证校验结束,此时走代理接口,这样能够实现接口、数据的收口,达到咱们的迁徙指标。如果数据不存在于老数据表中,那么无论这条数据有没有存在于新表中,咱们都能够间接走代理接口,收拢新数据的接口逻辑。如果数据存在于老数据表中,然而不在灰度名单内,此时应用指标类(回滚时可这么操作),走原来的接口办法,即老逻辑,这是不会影响到零碎性能。如果数据存在于老数据表中,然而在灰度名单内,阐明这条数据曾经迁徙实现待验证,此时能够应用代理类(灰度时可这么操作)走新的接口逻辑。多条数据查问不同于单条数据的查问,咱们须要查问中新表、老表中所有符合条件的数据,多条数据查问波及到数据反复的问题(即数据会同时存在于老表和新表中),因而须要对数据进行去重,而后再合并返回后果。 数据更新因为在数据迁徙后到零碎灰度的过程中存在两头工夫,所以在数据更新时咱们应该通过双写来放弃新、老表数据的一致性。同时为了对接口和数据进行收口,咱们也要先判断总控开关是否开启,如果总开关曾经关上,则数据更新只须要更新新表即可。 数据插入对数据和接口收口,咱们须要对增量数据进行切换,因而间接应用代理类并将数据插入到新表中,管制老表的数据增量,在数据迁徙的时候只须要思考存量数据即可。 实际例如在批发场景中,每个门店都有惟一的身份标识门店id,那么咱们的灰度列表就能够寄存门店id列表,按门店维度进行灰度,来粒度化影响范畴。 代理散发逻辑散发逻辑是外围逻辑,数据的去重规定、接口/仓储层代理转发都是基于这套逻辑来管制: 先判断总开关,总开关开启阐明迁徙实现,此时全副通过代理类走新的接口逻辑和数据源。判断灰度开关,如果在灰度过程中蕴含了灰度的门店,那么就通过代理类走新的接口;否则走原接口的老逻辑,实现接口的切换。新数据转发到代理类,对新的逻辑和数据进行收口,避免增量数据的产生。批量查问接口须要转发到代理类,因为波及到对新、老数据进行去重、合并的过程。 /** * 是否开启代理 * * @param ctx 上下文 * @return 是:开启代理,否:不开启代理 */ public Boolean enableProxy(ProxyEnableContext ctx) { if (ctx == null) { return false; } // 判断总开关 if (总开关关上) { // 阐明数据迁徙实现,接口全副切换 return true; } if (单个门店操作) { if (存在老数据源) { // 判断是否在灰度名单,是则返回true;否则返回false; } else { // 新数据 return true; } } else { // 批量查问,须要走代理合并新、老数据源 return true; } }接口代理接口代理次要通过切面来拦挡,通过注解办法的形式来实现。代理注解如下 ...

August 17, 2022 · 3 min · jiezi

关于开发:九联科技开发板正式合入OpenHarmony主干

近日,九联科技Unionpi系列Unionpi Tiger(A311D)开发板,正式合入OpenAtom OpenHarmony(以下简称“OpenHarmony”)社区骨干。Unionpi Tiger开发板是一款基于A311D芯片,反对OpenHarmony规范零碎,面向超高清畛域的开发板。 A311D芯片有着弱小的CPU、GPU和神经网络减速子系统。反对4K视频编解码器引擎和一流的HDR图像处理,集成了所有规范音频/视频输出/输入接口。主零碎CPU基于大小核架构,集成四核ARM Cortex-A73 CPU集群和双核Cortex-A53集群,对立二级缓存,晋升零碎性能。每个 CPU 内核都蕴含独自的 NEON SIMD 协处理器,以进步软件媒体解决能力。还有反对 INT8 推理的神经网络加速器,实用于所有风行的深度学习框架,包含 TensorFlow 和 Caffe,反对 8bit/16bit 运算,运算性能高达 5.0T。 九联科技作为OpenHarmony共建单位之一,踊跃推动OpenHarmony芯片适配过程,冲破实现A311D芯片对OpenHarmony 3.1 Release 的适配,推出基于此芯片打造的OpenHarmony开发板——Unionpi Tiger,并顺利通过兼容性测评,合入OpenHarmony社区骨干。 Unionpi Tiger开发板,采纳双层结构,上上层别离为外围板、底板。外围板集成高速嵌入式存储器,具备32G的Flash和4G的RAM,同时集成有WIFI模块。底板包含RJ45以太网、USB、phone、HDMI、Micro USB、GPIO、I2C、I2S、Speaker、MIPI DIS、MIPI CSI、ADC、PWM、TTL、RS485、CAN BUS等接口,以及4G等选配模块。 将来,九联科技将继续深耕超高清视频行业,充分发挥本身劣势,踊跃推动OpenHarmony 生态倒退,为开源生态可继续倒退倾智献力,独特创立一个新时代的万物互联体系。 代码仓地址: https://gitee.com/openharmony...

July 15, 2022 · 1 min · jiezi

关于开发:软件定制开发对于企业来说有何好处

随着互联网的衰亡,企业对定制软件开发的需要一劳永逸,无论是外部的管理软件,还是内部的服务和营销软件,对企业来说都显得尤为重要。一个好用的软件能够让企业在治理上事倍功半,在营销上联合流动精准引流客户,晋升销量。因而,软件定制开发是很多企业不可或缺的环节。那么定制软件开发能给企业带来什么益处呢?深圳至佳科技领有多年的软件定制开发教训。上面具体解释一下,心愿对您有帮忙。软件定制开发五大益处介绍 1、合乎发展趋势,超过竞争对手 企业软件定制开发也是市场局势所迫。因为当初网络市场空间微小,很多竞争的公司都退出了网络销售和治理的行列,有了本人的市场。想要超过竞争对手,博得线上客户的青眼,必须要有一个好的软件。因而,企业必须软件定制开发,从本身需要和潜在客户的需要登程设计软件。 2、应用流程效率高 定制软件开发的应用效率会高于一般软件。原本一般的软件须要一些繁琐的程序,而定制的软件会因为集体需要而扭转,所以会更容易应用。同时,因为定制软件是按需定制开发的,除了简单的性能和程序之外,还有一个对立固定的指标,其性能会依据用户的需要进行调整,会比一般的通用软件更加简洁不便。所以能依据用户需要随时调整的软件效率天然会更高。 3、前期保护降级更不便 随着经济社会的不断进步,任何软件都须要依据企业本身治理的须要进行变更和定制。因为企业有本人的源代码,能够自行进行二次开发,进行定制治理简略不便。 4、模板有缺点,定制更久远 市面上有很多软件开发模板,但往往在细节上不能完满满足企业开发的需要。要么是界面性能不匹配,要么是功能设计太简单。所以,不如由企业本人开发一个量身定制的软件。所有性能都能满足公司本身需要,带来更好的体验。 5、反对个性化性能 局部企业心愿实现信息化治理。想让软件不仅能给顾客带来更晦涩的购物服务体验,还能交给员工在线操作,在线治理。如果抉择软件定制开发,齐全能够满足这种需要。深圳软件定制开发公司会依据企业的需求量身定制一款软件,充沛满足多样化的性能需要。这种软件能够大大提高公司的工作效率! 因为每一个定制软件的开发都要通过具体的系统分析,同时要依据不同企业的状况,制订出最适宜企业的计划。至佳科技作为业余的深圳软件定制开发公司,能够为宽广企业提供更业余、更优质的服务。如有相干问题,可征询至佳科技。

July 12, 2022 · 1 min · jiezi

关于开发:补齐短板开源IM项目OpenIM关于初始化登录好友接口文档介绍

OpenIM文档方面的建设始终远远落后于开发, 也常常被开发者诟病,在接下来一周的工夫里,咱们重点补齐文档,让开发者更轻松接入。因为app sdk底层都是go来实现,所以本文先写一个模板和框架,在接下来的工夫里,会有iOS、Android、Flutter、Uniapp、jssdk共事补充具体的细节,并更新到官网 初始化及登录初始化并登录胜利回调,是失常应用OpenIM 服务的前提 SDK形容[Login]登录,如果登录胜利,必须退出登录能力再次执行登录操作[Logout]退出登录[GetLoginStatus]获取登录状态, 101:登录胜利, 102:登陆中, 103:登录失败, 201:退出登录[GetLoginUser]获取以后登录用户UserID,此时用户登录状态未知[initSDK]初始化 SDK,整个生命周期执行一次,登录相干监听介绍如下:OpenIM和调用方利用监听回调机制,和调用方信息互通,把登录状态通过异步回调形式即时传递给调用方,确保信息及时传播而不阻塞其主线程。 监听阐明登录相干监听回调形容[OnConnecting]连贯中,在连贯后盾时(包含重连)回调[OnConnectSuccess]连贯胜利[OnConnectFailed]连贯失败,如果因网络连接失败会重连,其余状况不重连[OnKickedOffline]被踢下线,可能因为多端登录策略所致,或后盾管理员强制其退出登录[OnUserTokenExpired]检测token过期回调调用流程OpenIM调用流程分为如下几步: (1)初始化:在整个生命周期执行一次 (2)设置监听:包含群组监听,好友监听,用户监听,音讯及会话监听,这些监听会在其余章节中形容 (3)登录:登录回调胜利后再执行其余操作,否则可能呈现资源加载未实现的谬误 (4)收发音讯等操作; 好友治理相干接口OpenIM提供好友关系托管,比方好友申请,批准,以及好友获取等,OpenIM在客户端本地存储好友关系,并联合音讯告诉机制,按需调用后盾接口,确保本地和服务端数据统一。同时利用监听机制,把数据变动通过异步回调传播调用方。OpenIM在收发音讯时,默认不查看好友关系,您能够在配置文件中自行批改。OpenIM好友关系是双向关系,A增加B为好友后,则A在B的好友列表中,B也在A的好友列表中,A删除B,仅仅只是删除A的好友列表,而B的好友列表不受影响。同样,黑名单也相似。 SDK形容[GetDesignatedFriendsInfo]获取指定好友的信息[GetFriendList]获取所有的好友列表[SearchFriends]通过关键词搜寻好友[CheckFriend]查看是否好友关系[AddFriend]发动增加好友申请[SetFriendRemark]设置好友备注[DeleteFriend]删除好友(单向删除)[GetRecvFriendApplicationList]获取我收到的增加好友申请列表[GetSendFriendApplicationList]获取我发动的的增加好友申请列表[AcceptFriendApplication]批准好友申请[RefuseFriendApplication]回绝好友申请[SetFriendListener]设置好友、黑名单相干监听,用于UI层实时感知数据变动并刷新监听阐明好友监听器的作用:调用方设置好友监听,好友关系的变动会通过OpenIM音讯机制实时同步到须要感知的在线用户,包含用户的其余端,调用方依据回调事件做相干的数据处理。 比方用户B在Android端增加用户A为好友,用户A(所有在线的终端)收到B的好友申请,则A调用GetRecvFriendApplicationList获取收到的好友申请列表,刷新界面。同时,用户B在线其余的终端比方PC端也会收到告诉,B调用GetSendFriendApplicationList获取发动的好友申请列表,刷新B收回的好友申请列表。 当然也能够利用回调的参数信息,做增量解决,而不必获取全量的好友申请列表。 以用户B申请增加用户A为例 好友及黑名单监听形容[OnFriendApplicationAdded]好友申请列表减少,被动发起者和被动增加者会收到[OnFriendApplicationDeleted]好友申请列表删除,被动删除者会收到[OnFriendApplicationAccepted]好友申请被批准,被动发起者和被动增加者会收到[OnFriendApplicationRejected]好友申请被回绝,被动发起者和被动增加者会收到[OnFriendAdded]好友减少,用户好友减少时会收到[OnFriendDeleted]好友删除,用户好友缩小时会收到[OnFriendInfoChanged]好友信息扭转,用户好友信息(比方昵称等)扭转时会收到[OnBlackAdded]黑名单减少,用户黑名单减少时会收到[OnBlackDeleted]黑名单移除,用户黑名单缩小时会收到我的项目介绍OpenIM持续领跑开源IM畛域,在宽广开发者的反对下,目前github star冲破9k。在数据泄露、信息外泄、隐衷滥用的时代,IM私有化部署需要旺盛。其中,政企协同办公对IM需要猛增,随着信息化技术的迭代降级以及信创产业减速落地和实际,协同办公软件的发展潜力将进一步被开释。“平安可控“逐渐成为第一因素。对于社区交友畛域,暴露出的隐衷平安问题越来越多,私有化部署确保用户数据不泄露。 OpenIM从服务端到客户端SDK开源即时通讯(IM)整体解决方案,能够轻松代替第三方IM云服务,打造具备聊天、社交、办公性能的app。 github地址: https://github.com/OpenIMSDK/... 开发者核心:https://doc.rentsoft.cn/#/ OpenIM团队开创团队来自资深IM技术团队,咱们致力于用开源技术发明服务价值,打造轻量级、高可用的IM架构,开发者只需简略调用 SDK,即可在利用内构建多种即时通讯及实时音视频互动场景。OpenIM劣势:开源,平安,牢靠,低成本。对于信息安全器重的电子政务,企业协同办公,OpenIM都是十分好的抉择。 从公司成立之初就将“开源”作为外围策略来推动,开源充分体现了自在、平等、分享的互联网精力。 OpenIM邀请寰球技术极客参加技术优化,让开发者轻松集成,让每一个利用都具备IM性能,同时思考企业的接入老本、服务器资源以及最重要的数据安全性和私密性。

June 26, 2022 · 1 min · jiezi

关于开发:深圳开发商城小程序商城开发方式有哪些

小程序商城给商家和消费者带来了很大不便,推动了传统批发的转型降级,当初的商家如果想在强烈的同行竞争中立足,没有一个适合的线上平台很难生存,小程序商城无疑是比拟好的抉择,上面深圳至佳科技为大家介绍一下小程序商城开发方式有哪些? 小程序商城开发方式汇总: 1、应用第三方开发工具 当初很多小程序商城都是通过应用第三方开发工具进行开发,是比拟大众化的一种开发方式,比拟适宜中小一般商家的一种形式。这种形式的门槛比拟低,操作非常简单,根本没有任何难度可言,只需选好相应的行业模板,再通过增减版块,做一些图片上传、文案、板块调整、商品上传和分类的工作,快的话十几分钟就搞定了。即便商品较多,几个小时也就根本实现了,后续还能够随时批改。 2、基于成品软件二次开发 间接洽购第三方成品小程序商城进行开发,这种形式可能帮忙企业疾速失去一个品质成熟的小程序商城,兼顾企业老本和个性化需要,小程序商城开发商会提供源码给企业进行二次开发,企业能够依据需要开发理论相应的性能,几千块就能领有一个不错的小程序商城,也不须要破费太多费用去养一个开发部门,只须要领取小程序商城的市场价格,实现企业的个性化需要。 3、本人开发 本人开发是省钱的形式,个别须要懂得开发技术才可能本人开发,开发小程序商城能够省掉给开发人员的费用,通过这种形式就能够不花一分钱领有本人的小程序,然而本人开发,所有都要本人做,从市场调研、需要剖析、零碎布局、零碎开发、零碎测试、部署到上线,所有都须要本人亲自动手,对于开发的要求比拟高。它的劣势在于能够灵便控制系统性能,清晰明了零碎的各个局部,个性化需要更容易实现。 4、找外包团队定制 对小程序商城要求比拟高、资金、工夫都比拟短缺的企业就能够抉择定制开发这种形式,市面上有很多深圳小程序商城开发公司对于小程序商城开发专研,只须要企业和开发公司沟通好本人无关的需要即可,比拟省事省心,然而周期比拟长,从提交需要、产品定位、确定格调……到最初的开发、测试,少则将近一个月多则几个月,在价格方面比拟昂扬,从几万到十几万不等。这种形式不是特地适宜中小商家,比拟适宜大型企业。 以上就是对于小程序商城的开发方式,在进行小程序商城开发的时候,肯定要提前理解本人的理论需要,依据本人的需要来进行不同的开发方式的抉择。综合来看,不论是个体工商户还是中小企业,都能够应用第三方软件的开发方式进行小程序商城的开发,对于一些大企业来说因为他们的要求是十分高的,因而也能够抉择定制小程序商城的形式来进行开发。如果用户无意开发小程序商城,至佳科技能够帮助企业定制计划和预估费用。

May 31, 2022 · 1 min · jiezi

关于开发:如何开一场高效的迭代排期会-敏捷开发落地指南

简介:如何开一场高效的迭代排期会,高效落地麻利开发,先从这3个要害流动着手,通过本文你将理解到什么是麻利开发、什么是双周迭代、如何高效地发展排期会,以及如何在云效我的项目合作·Projex 中落地排期会相干事宜。 摘要:如何开一场高效的迭代排期会,高效落地麻利开发,先从这3个要害流动着手,通过本文你将理解到什么是麻利开发、什么是双周迭代、如何高效地发展排期会,以及如何在云效我的项目合作·Projex 中落地排期会相干事宜。 作为团队的负责人,你心愿将研发模式从瀑布式转为麻利,并进行继续改良,但却不晓得从哪里开始? 作为项目管理人员,你心愿负责建设迭代机制,并进行规模化的推广和度量,但却不晓得如何疾速建设机制? 作为产品经理,需要排期后,你心愿能不便地跟进需要停顿,及时发现问题,但却不晓得怎么跟进不便? 接下来,咱们将通过 3 篇文章,率领大家逐渐理解麻利开发的全过程及高效落地指南。 麻利开发之 Scrum 办法介绍 在麻利开发落地的过程中,通常采纳 Scrum 的形式,所以咱们以 Scrum 为例来介绍麻利开发的流程和场景(如上图),在这个过程中: 1. 首先产品经理会进行: ○ 需要的收集、调研和剖析,造成按优先级排序的产品待办列表; ○ 对高优先级的需要,进行具体设计和廓清; ○ 通过迭代排期会,造成按优先级排序的迭代待办列表; ○ 排期实现后,需要从产品经理侧流向技术同学侧。 2. 在需要廓清的状况下,研发团队来会: ○ 以 1~4 周的迭代周期进行继续开发和交付迭代待办列表中的内容 ○ 采纳每日站会来跟进打算和发现问题,并在迭代过程中继续或间歇性地交付可工作的软件。 与此同时,产品经理会在这个阶段,进行下一迭代的需要设计和廓清。 3. 迭代待办列表开发实现后,产品经理和研发团队一起进行迭代演示,交付可工作的软件。 4. 最初,通过迭代复盘会流动驱动团队继续改良。 在落地 Scrum 办法时,无论是阿里外部还是云效的企业客户,通常采纳双周迭代的运作机制,上面咱们以「双周迭代」为例进行介绍。 双周迭代的运作机制双周迭代时序图 上图是双周迭代的运作流程: ● 在 N-2 和 N-1 周,业务和产品会继续做需要的剖析和设计,会把要排入迭代的需要按优先级高下筹备好,包含需要的剖析、设计和廓清; ● 随后开发和测试同学在排期后的两周内( N 周和 N+1周),按优先级对需要进行开发、测试、验收和公布上线。注:排入迭代的需要在迭代排期前要已廓清分明,并明确验收规范。 ● 迭代排期在双周迭代中起着前后连接的作用,每两周进行一次,个别每次 1~2 小时。排期前,业务和产品同学须要筹备好待排期的需要,排期后,开发和测试同学须要依照打算对需要进行开发、验证和公布。 ● 迭代节奏和公布频率是要解耦的,迭代节奏能够是两周或一周,而公布频率能够是每两周一次、一周一次、或一周屡次等。有的企业或团队会依照每个迭代进行一次公布来落地,也有可能依照一个迭代进行屡次公布来落地。 至此,咱们了解了麻利开发的整体流程,及双周迭代的运作机制。能够看到在双周迭代的运作中,一个迭代中有 3 个十分重要的流动:迭代排期、迭代跟进和迭代复盘。本篇文章咱们先从「如何发展一场高效的迭代排期会」聊起。 如何发展一场高效的迭代排期会?想要发展一场高效的迭代排期会,须要相干同学做一些筹备工作,咱们将排期流动中的须要筹备的事项、指标等整顿在一起(如下表),供大家参考。 ...

April 27, 2022 · 1 min · jiezi

关于开发:全面解读OpenHarmony-31-Release版本夯实技术底座-打造繁荣生态

4月25日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)技术日在深圳举办,对OpenHarmony 3.1 Release版本核心技术进行了深刻解读,同时分享了生态的最新进展。全新的OpenHarmony 3.1 Release版本,大幅优化加强了零碎根底能力,为开源生态蓬勃发展构建强有力的撑持,展示了OpenHarmony开源生态系统的弱小韧性。 OpenHarmony 3.1 Release版本首次反对简单规范带屏设施以及简单UI类利用开发,在内核层、零碎服务层、框架层以及开发资源&工具链方面,实现根底能力再降级,标记着OpenHarmony迈向新的转折阶段。 OpenHarmony版本继续迭代 生态产品初具规模 从1.0到3.1,短短不到两年的工夫,OpenHarmony版本零碎能力继续倒退,OpenHarmony 1.0 领有轻量级OS根底框架,OpenHarmony 2.0反对音视频和多内核能力,OpenHarmony 3.0 反对ArkUI框架及根本分布式能力,当初OpenHarmony 3.1领有了简单图形、平安、电话和分布式加强等全新个性。 零碎能力的继续迭代,助力OpenHarmony开发资源不断丰富,反对的利用和设施类型更加宽泛。零碎能力方面,OpenHarmony 3.1 Release版本已反对简单UI类利用开发,设施类型方面,新版本已反对简单规范带屏设施的开发。 截至目前,80款余软硬件产品正在通过兼容性测评,OpenHarmony生态产品初具规模。随着OpenHarmony 3.1 Release版本到来,置信OpenHarmony生态产品将会失去进一步拓展。 OpenHarmony零碎能力一直加强 分布式技术独具特色 面向全场景、全连贯、全智能时代,OpenHarmony具备“对立 OS,弹性部署”;“硬件互助,资源共享”;以及“一次开发,多端部署”三大个性。当初,OpenHarmony 3.1 Release在内核层、零碎服务层、框架层以及开发资源&工具链方面全面加强,带来分布式硬件互助能力、对象级数据管理能力、分布式平安框架等独具特色的性能。同时,新版本全新的UX设计语言,也赋予OpenHarmony带屏设施更加年老简洁的格调。 在内核层,新版本带来自适应内核调度机制,打造晦涩性能体验底座;丰盛HDI接口,为零碎提供更多的硬件拜访能力。零碎服务层方面,全新图形及窗口框架,能够提供晦涩的图形交互根底体验与动画体验;新增编解码、视频录制、媒体治理等能力,构建端到端的音视频数据处理平台。 分布式技术是OpenHarmony独具特色的性能,也是其构筑行业竞争力的关键所在。OpenHarmony 3.1 Release版本领有全新硬件资源池化架构,实现相机和屏幕的“超级终端”硬件互助能力,分布式相机反对远端相机的预览,拍照,可管制远端相机的缩放及拍照角度,分布式屏幕反对两台设施之间的屏幕镜像,扩大投射能力;新增分布式数据对象能力,继续欠缺多种数据类型的全局“一份”数据的开发体验;全新分布式平安框架也在继续欠缺,构建起更弱小的零碎完整性爱护、零碎隔离和访问控制平安根底平台,包含有分布式设施互信认证、分布式用户身份认证、跨设施数据安全、程序访问控制以及可信平安环境,此外,新版本采纳分级平安管控,进一步加强系统安全能力。 零碎底层能力加强,分布式技术打造差异化服务体验,OpenHarmony 3.1 Release版本零碎能力的全面降级,将为更多设施带来丰盛的性能体验,推动OpenHarmony利用和设施胜利落地。 开发者 OpenHarmony利用开发环境和设施开发工具继续降级 生态产业的凋敝,离不开每一位开发者的奉献。开发者是推动OpenHarmony开源生态倒退的基石,OpenHarmony 3.1 Release版本为宽广开发者带来更加高效的利用开发环境和设施开发工具。 全新的一站式OpenHarmony利用开发环境DevEco Studio 3.0 Beta3,反对低代码开发、Native开发,带来信息中心、全新构建工具Hvigor、双向极速组件预览、一键自动化调试签名等性能个性;便捷高效的OpenHarmony设施开发工具DevEco Device Tool 3.0 Release,为开发者提供一站式开发平台和一站式能力获取,赋能开发者高效实现设施开发。 欠缺开源底座能力 撑持千行百业OpenHarmony生态产品落地 ArkUI根技术、分布式根技术、内核根技术……为什么OpenHarmony始终在保持根技术的翻新?随同寰球数字经济高速倒退,数字化的需要超出预期,业界须要摸索新实践、新架构、重构技术底座,以撑持数字经济的可继续倒退。联接的密度乘以计算的精度,就是数字经济的强度。因而,根深能力叶茂。 随着数字经济的倒退,作为数字基础设施根技术的操作系统成为数字改革的要害力量。OpenHarmony作为泛智能终端数字底座,撑持千行百业的产业生态。截至目前,OpenHarmony曾经领有2000+社区贡献者、160万+社区用户,是目前国内最受企业及开发者欢送的开源我的项目之一。 将来,OpenHarmony将继续投入根技术创新,继续晋升性能、加强隐衷平安、扩大分布式能力、晋升开发效率,以反对大型分布式应用和全量零碎设施性能,从而无效撑持千行百业设施和利用落地。针对多行业共性需要,OpenHarmony社区会进行版本继续保护,帮忙行业软件发行版构筑先进生产力。OpenHarmony将持续欠缺开源底座能力,撑持开源生态蓬勃发展,更好的赋能千行百业的产业生态,为企业数字化转型做出更大的奉献。

April 26, 2022 · 1 min · jiezi

关于开发:阿里低代码引擎-LowCodeEngine-正式开源

低代码平台的开发始终须要较长时间的基础性开发工作,费时费力,咱们心愿通过开源低代码引擎让更多的垂直行业低代码更容易孵化,引入规范+SDK模式建设更多的心智打造。低代码引擎是什么? 低代码引擎是一款为低代码平台开发者提供的,具备弱小扩大能力的低代码研发框架。 低代码引擎由阿里巴巴前端委员会、钉钉宜搭联结出品。使用者只须要基于低代码引擎便能够疾速定制合乎本人业务需要的低代码平台。同时,低代码引擎还在规范低代码设计器的根底上提供了简略易用的定制扩大能力,可能满足业务独特的性能须要。 为什么咱们要开发低代码引擎?2019 年 7 月,在阿里巴巴前端委员会的技术资产盘点中,咱们发现,团体外部曾经有几十个具备低代码能力的平台在各业务中宽泛应用了,而这些平台底层是基于 3 至 4 套根底能力或 SDK 来实现的。而这些能力中很多都是能够复用的,比方下文提到的低代码引擎的几大外围能力:入料、编排、渲染、出码。这些能力的反复建设很消耗人力,而每一个 SDK 所投入的人力无限,不足以将其性能打磨精密,导致这些 SDK 大多数都处于低水平反复建设中。在思考解决方案的过程中,咱们意识到,不可能将所有的低代码平台收敛至一个,因而咱们决定将低代码能力下沉,将低代码技术体系拉通共建,制订了对立底层协定,基于规范打造出低代码平台的根底能力,并在此基础上提供定制化能力,最终造成了咱们低代码引擎。 低代码引擎有什么劣势?低代码引擎提供了低代码平台研发所需的根底技术能力,是一款面向前端研发人员的技术产品。如果有低代码产品的研发诉求,例如: 业务有独特的需要,市面上的低代码平台都不满足需要,须要打造一款新的低代码平台。须要将低代码平台的研发能力集成到已有零碎中。以上两种状况,如果应用低代码引擎,能够在 极短时间 内实现开发低代码设计器的开发,大大降低了低代码平台的研发难度和老本。而依据定制化水平的不同,工作量能够由传统的几十人/月压缩到几人/月。 为了撑持成千盈百个低代码平台,咱们将低代码技术分成了四层,通过分层架构来撑持低代码平台开发者进行业务上的定制和扩大。 底层协定标准化 咱们定义了《低代码引擎搭建协定标准》和《低代码引擎物料标准》作为低代码引擎的底层协定。 这两份协定定义了 3 方面的内容,别离是 术语、构造和行为 。 术语是咱们沟通的根底,概念相通,咱们能力高效沟通。咱们依据物料的颗粒度,定义了根底组件、区块、低代码组件、模板等术语,另外还包含低代码生产过程中一些模块名称,比方编辑器、画布、事件绑定、数据绑定、渲染、出码、设置器之类的术语。构造,包含页面形容的构造,如何定义页面组件树、数据源、生命周期、页面状态等等。行为,不同的业务场景,咱们对物料的配置、束缚、扩大各不相同,所以咱们在物料形容中有各种各样的钩子来反对自定制。正是基于以上几份协定,让下层的互通成为可能,让 “概念互通,物料互通,生态互通” 成为了可能。 弱小的扩大能力下图是低代码设计器的骨架构造,而设计器的扩大能力就是围绕以上的五大区域来进行的。能够通过插件、物料和设置器的扩大能力来对所需的区域进行定制。 低代码引擎孵化的低代码平台能够用以下的公式来了解: 低代码设计器 = 低代码引擎 + 设计器插件 n + 物料 n + 设置器 * n 上面三种典型的低代码设计器,就是在低代码引擎的根底上通过不同的插件、物料、设置器组合而成。 中后盾页面设计器小程序设计器流程设计器 当然还有更多定制化的低代码平台设计器这里因为篇幅就不一一列举了。其中中后盾页面设计器中,通过插件、设计器和物料定制的区域如下: 插件定制设计器定制的依赖之一就是设计器插件,咱们能够间接应用生态中流通的插件,也能够依据咱们本人的需要进行插件的开发。通过编写不同的插件同引擎外围模块进行交互,在满足多样化的性能的同时,同时也与低代码引擎解耦。 物料定制低代码平台中的物料也是非常重要的一个局部,咱们提供了三个方面的解决方案: 提供了一套根底的低代码物料,对于新低代码平台来说能够开箱即用。提供了将现有的源码组件转化为低代码组件的能力,之后即可在低代码引擎中应用。提供了低代码组件开发能力,包含低代码组件我的项目初始化、低代码组件调试、低代码组件配置等能力。设置器定制设置器是指在低代码设计器中设计一个组件时,咱们是须要对组件进行可视化配置的,而每一项配置都须要一个设置器,比方咱们的配置是一个文本,咱们须要的是文本设置器,咱们须要配置的是数字,咱们须要的就是数字设置器。 下图中的“按钮内容”和“图标尺寸”的配置就别离是文本设置器和下拉框设置器。 当规范的设置器无奈满足大家的个性化需要时,规范设置器也提供了定制扩大能力。开发者能够研发自定义的设置器并在组件中应用,使得组件能反对更个性化的配置能力。 配套生态开箱即用为了帮忙大家更低成本的研发低代码平台,除了低代码引擎,咱们还开源了配套生态(根底物料、根底插件、根底设置器、工具链),提供更多开箱即用的能力。更多的生态建设还在路上,敬请期待。 商业化产品验证钉钉宜搭是阿里巴巴自研的低代码利用开发平台,基于阿里云的云基础设施和钉钉的企业数字化操作系统,为每个组织提供低门槛、高效率的数字化业务利用生产新模式。在宜搭上生产的每个利用人造具备互联互通、数据驱动、平安可控的特点。 钉钉宜搭前端底层就是依赖于低代码引擎的能力进行研发的。除此之外,低代码引擎还撑持了阿里团体外部 100多个低代码平台的建设。置信之后会有更多的商业化产品应用低代码引擎。 为什么要开源?低代码平台的开发始终须要较长时间的基础性开发工作,费时费力,咱们心愿通过开源低代码引擎让更多的垂直行业低代码更容易孵化,引入规范+SDK模式建设更多的心智打造。通过社区中开发者的应用,能够减速低代码规范的造成,也能够帮忙咱们改良低代码引擎,丰盛低代码平台的场景,扩大创新能力。 通过领有低代码引擎,能够疾速的领有一款定制的低代码平台。在阿里外部曾经孵化了100种以上各种各样的低代码平台了。而明天,低代码引擎也迎来了本人的一个要害节点,于 2022.3.23 正式对外开源。快到咱们的官网进行围观吧。 点→官网地址点→github 如果对低代码引擎建设历程和思考有趣味,还能够查看之前的文章: 阿里低代码引擎和生态建设实战及思考 低代码引擎在团体外部曾经建设多年了,研发人员也经验了很多代,咱们冀望能把其中的技术细节、架构设计和技术思考出现给大家。咱们提供了 《低代码引擎技术白皮书》 ,心愿通过对低代码技术原理进行一个全面的介绍,让大家对低代码引擎有一个更加全面的意识。当然也心愿借此可能吸引到更多志趣相投的小伙伴通过开源社区进行共建,一起减速低代码行业疾速倒退。除此之外,咱们也心愿社区的小伙伴在理解低代码引擎之后, 能联合本人的教训或者低代码业务场景发现咱们的有余,提出改良倡议,咱们将感激不尽。 ...

March 29, 2022 · 1 min · jiezi

关于开发:网易会议开源之桌面端篇

 导读:随着线上会议越来越广泛,各企业在这种环境下也更加器重,冀望可能领有一套本人的会议零碎,不便开展工作和交换;网易云信在通信畛域研发深耕 24 年,基于此能力打造了一款成熟的会议零碎并将其开源,心愿奉献本人的一份力量,本文将介绍下其中的桌面端。  一、UI如何抉择对于桌面的利用,抉择的 UI 有很多,在不同的平台下都有成熟好用的框架,无论是出于疾速开发、性能、视觉效果都有多种抉择。 基于咱们的场景,须要反对 Windows 和 macOS 零碎,也就是要跨平台,跨平台计划也较多,Qt,Electron,Flutter 等都各有千秋;会议场景中的视频,作为根底外围,须要可能反对多路视频流的渲染,当然如果是高清视频会更好,因而性能也就是咱们思考中的重要一项。 为了更高的利用系统资源,心愿应用本地渲染,尽可能的应用硬件加速,进步渲染效率,联合其余因素咱们采纳 Qt 作为咱们的 UI 框架,Qt 作为老牌的跨平台 UI 框架,优缺点显而易见,抉择适宜的才是最好的。 二、桌面端(一)桌面端的框架框架整体如下图所示:   App:前端应用Qt搭建整个利用,包含注册登录,入会等一些性能,用户能够参考相干调用接口,齐全可能定制本人的App。SDK:会议组件的 UI SDK,包含会中的所有性能,也提供了对外的接口。IPC:作为 App 与 SDK 之间的桥梁,负责数据的通信。此模块是通过 Socket 联合异步工作队列实现接口的调用,其中 App 作为 Server 端创立 Server,拉起 SDK 的 UI 过程并传递端口号,而后监听 Client 链接,Client 应用端口来链接 Server,与之建设键连贯。下图是个大抵示意图。  App 和 SDK 采纳双过程的计划长处: 有更好的隔离,使得 SDK 更稳固。进步系统资源利用率,防止与 SDK 宿主过程资源抢占。(二)SDK   SDK 提供了对外的集成接口,也提供了会中的 UI 模块,用户能够基于此简略的接口,很容易实现集成。 UI 层:包含了会中的一些UI界面,比方视频视图展现,聊天展现,成员列表展现,直播,白板展现等。Service 层:依照业务对业务模块的封装。Control 层:对能力层模块的业务封装。Base 层:能力模块,根底模块。三、接入形式(一) 桌面端提供了丰盛的接入接口,如下所列 C++形式:提供了一套通用的C++接口,能够在Windows和macOS里通过原生的形式集成。Electron形式:提供基于JS的接口,具备和C++统一的接口,不便集成到Electron利用中。(二)SDK提供的接口能力依据会议的场景,提供了鉴权、账户、会中等服务,满足App端的能力。(三)SDK的长处组件化程高,接口简略稳固,可能简略快捷的接入。可定制化,UI可通过自定义的形式,集成到本人的零碎中。四、结语以上次要介绍了会议和组件的架构和一些业务,心愿可能帮忙用户理清架构和一些模块关系,理解外部实现和逻辑;当然在理论开发中,也会遇到一些关键技术点和局部模块的难点,咱们也有相应的解决方案,心愿在当前的篇幅中可能为您具体介绍。

March 18, 2022 · 1 min · jiezi

关于开发:2022年软件开发趋势远程工作已成主流

看看明年会产生什么。 2020 年 3 月,工作世界产生了天翻地覆的变动。到 2020 年 4 月,大概一半的公司报告称,因为新冠病毒,其 80% 以上的员工在家工作。大多数人再也没有回到办公室——近程工作将持续存在。被迫在网上生活,技术变得至关重要。 数字化转型当初是任何想要跟上步调的组织的根本要求。以前就很热门的技术工作者,当初更受追捧,以帮忙建设一个咱们都依赖技术进行最根本流动的世界。 2022年技术将如何反对近程工作Gartner 的一项考察显示,因为新冠病毒,69% 的董事会减速了数字化转型。这一趋势将持续存在,组织的重点是非接触式服务 (60.1%)、迁徙到云 (52.25%) 以及 DevOps 流动 (51.75%)。 依据数据,咱们预测了2022年的一些软件发展趋势: 1. 云将变得越来越重要云将在 2022 年及将来几年在技术中施展越来越重要的作用。能够迁徙到云端的所有货色都将迁徙到云端。 以公司新开发人员的入职为例。他们通常会破费几周的工夫来尝试让所有货色都在本地机器上运行。这十分耗时,不仅对于新员工来说,而且对于须要在此过程中提供帮忙的经验丰富的工程师来说也是如此。 到目前为止,大多数自动化构建、模仿环境和正在运行的生产应用程序曾经迁徙到云端。下一步是本地开发环境。 微软和亚马逊曾经开始着手这方面的工作,并且在 2021 年都公布了解决方案(微软的 GitHub Codespaces 和亚马逊的 AWS Cloud9),这些解决方案能够在几秒钟内提供可在浏览器上拜访的开发环境。 2. DevOps 将施展重要作用谷歌的 DORA 进行的钻研表明,“优良的执行工程组织实现其组织指标的可能性是个别组织的两倍,并在三年内实现了 50% 的高增长率”。 为了放慢管道并疾速交付新性能,团队须要确保他们的流程和工具尽可能好,打消阻碍和瓶颈。因而,DevOps 和实现继续交付的实际至关重要。 3. 人工智能辅助开发2021 年,咱们曾经见证了人工智能开始进入开发工具。GitHub Copilot、IBM AI for Code 和 Oracle 的新查询语言生成器是指向 AI 辅助开发方向的一些翻新。 2022 年,Forrester “预计简直所有开发工具中都会呈现 AI 机器人,为开发人员的工具箱增加自然语言和其余性能”。 4. 低代码平台的崛起2017 年,《福布斯》将低代码平台归类为“极具颠覆性”,而且这一趋势还在减速。Gartner 预测:“到 2022 年,低代码利用平台预计仍将是低代码开发技术市场的最大组成部分,比 2020 年增长近 30%,到 2021 年达到 58 亿美元”。并补充说“到 2024 年,低代码 利用开发将占利用开发流动的 65% 以上。” ...

March 4, 2022 · 1 min · jiezi

关于开发:网易智企发布易开源计划网易会议组件正式开源

 2021 年 11 月,工业和信息化部印发《“十四五”软件和信息技术服务业倒退布局》,将“凋敝国内开源生态”作为一项重要工作,开源被晋升至国家级别的策略高度。 其实,开源软件倒退至今已有几十年的历史,随同寰球数字化浪潮的衰亡,技术开源逐渐成为寰球软件产业翻新的重要模式之一。数据表明,寰球 97% 软件开发者和 99% 企业应用开源软件,开源已笼罩软件开发的全域场景。 网易智企旗下泛滥产品的倒退也得益于开源技术的红利,在这个过程中,网易智企也在不断加强本身核心技术的自研能力。 近日,网易智企公布”易+”开源打算,将网易智企局部技术进行开源,反哺行业翻新。网易智企旗下交融通信云服务专家网易云信打响头炮,正式开源网易会议组件,并将在第二季度开源低延时直播技术。 共创共享,天下“一家” 。“易+”开源打算心愿开发者站在网易智企的肩膀上,基于优质的源代码进行下层开发和迭代翻新,深耕需要场景打磨前沿产品,助力千行百业数字化转型。   本次开源的网易会议组件由网易云信团队自研,联合行业当先的实时音视频、即时通讯、白板、直播等技术,网易云信构建出一套稳固、高清、易用、平安的会议零碎。 蔓延寰球的新冠疫情减速了数字化转型倒退的过程,挪动化办公成为各行各业的刚需,而会议软件作为近程信息传播的重要工具,曾经是“基础设施”个别的存在。基于网易会议组件,开发者能够疾速地将音视频会议性能集成至现有利用中,一周即可开发出一个属于本人的 “ZOOM” 。 拜访形式Github:https://github.com/GrowthEase... Gitee:https://gitee.com/GrowthEase/... 挪动端可通过以下二维码拜访网易智企 Github 主页:   性能层面,网易会议组件能够满足大中小会议全场景需要,晋升合作效率。音视频性能卓越,反对一对一或多世间的语音/视频通话性能;会议合作能力丰盛,反对实时音讯、白板共享、屏幕共享等性能;治理能力全面,反对会议管制、会议邀请、视图切换等性能;多维度平安保障,入会明码、会议锁定、多重防护,全面保障会议平安。 网易会议组件架构 体验层面,网易会议组件代码可能让开发者降本增效,晋升开发体验。一套代码跨平台多端复用,进步开发者集成效率;功能丰富,灵便的自定义 UI 模板升高开发者开发成本;组件化产品设计,模块划分更正当;代码兼具高可读性和高稳定性,网易会议组件将优雅和丝滑写进代码里。 “软件定义世界,开源定义软件”。0 门槛试错、低成本翻新,开源模式对产品演进和行业倒退的重要性显而易见。目前,网易会议组件不仅能够利用于企业各类会议场景,还可广泛应用于娱乐 社交行 业、教育行业、金融行业、互联网医疗、工业物联网等畛域。 能够同声传译的会议室、能够在线编码的视频面试、专家近程多方视频会诊、近程管制工业器械......站在网易智企的肩膀上,更多翻新期待开掘,更多时代将被定义。 有任何问题或倡议欢送扫码增加小助手(左)/退出官网社群(右) “独行快,众行远”。始终以来,网易智企始终将技术生态建设放在重要地位,与开发者们一路同行。网易智企深知,凋谢、平等、合作、共享的开源模式是技术倒退、科技翻新的重要力量。将来,”易+”开源打算将持续施展智企技术劣势,打造开源开放平台,让更多行业体验到因技术带来的体验降级、场景翻新和效率改革。 直播举荐3 月 8 日 19:00 网易会议组件产品负责人郭科健 将在视频号与大家分享网易会议组件性能、劣势以及场景,同时针对疑难现场答疑 3月8日 19:00 视频号直播 不见不散

March 3, 2022 · 1 min · jiezi

关于开发:译文-一文看懂技术债

很多人搞不清楚技术债权、缺点和非功能性需要之间的区别: 缺点不能成为技术债权,因为技术债权并不意味着不满足性能或技术要求。 技术债权与蹩脚的设计、蹩脚的编码、不适合的设计模式、设计准则等无关,缺点则与产品不适宜、使用性能不佳等无关。 不满足非功能性需要=缺点,而技术债权与之不同~ 什么是技术债权?技术债权是沃德·坎宁安 (Ward Cunningham) 发明的一个比喻: 技术债权相似于金融债权,软件开发就像是“贷款”,技术债权是它的“利息”,“利息”是须要将来额定的工夫偿还的。 以下举例会更不便大家了解: 012007 年“我”从事保险产品的工作,团队应用的外围产品是用 AS400 编写的 WINS。 过后,“我”正在应用 asp.net 开发一个门户网站,因为后端是AS400,所以由另外一个团队编写中间件,本来应该编写中间件的团队负责开发,而咱们本应该应用这些服务来应用asp.net 编写前端。 开局很好,但随着工夫的推移,咱们落后于打算。 每次咱们须要更改时都会分割中间件团队进行更改,因为变动的需要太多,留给他们的反应时间也越来越短。 眼瞅着中间件团队的压力一天比一天大,前端团队开始试用绕过中间件团队,间接指向后端的流程治理办法,冀望可能缩小修复缺点带来的工夫损耗。 咱们修复了缺点,按时交付,所有此类更改的日志都被保留下来,以便中间件团队能够在日后更好的修复它们。可怜的是,“日后”从未来到—一直有新的变动呈现,技术债权也越积越多。 02同一个产品,生成策略的业务规定却又很多,XML被用来驱动这些规定,咱们应用的是一个规定引擎。有一种办法用于生成策略,它与规定引擎相连,且该办法最后只有一个参数。 随着开发的进行,本来的团队成员来到,新人退出,他们都在代码中增加了更多行,但出于对曾经工作的性能产生毁坏的放心,他们不对现有代码进行任何更改,也无奈找到更好的工具来解决这一问题。 其后果是可怕的,18 个月后,同一个办法有超过十个重载办法和远超过 10万行的代码…… 性能虽完满,代码却是一场劫难——没有人试图重构代码来做简化,新开发人员须要 2 到 3 周的工夫能力了解那里写的所有内容。 这里想做一点假如:若团队足够稳固、指导方针更优越、团队谋求技术的专一和极致性,那这所有不会产生…… 03团队在 2009 年应用 WPF、WCF 和 SQL Server 开发了一个 EMR 应用程序,在WPF 很新、可用的经验丰富的开发人员却不多的状况下,自然而然的,团队在学习开发它上消耗了太多的工夫。 只管团队内对 MVVM 设计模式仍旧不是很自信,但业务却心愿尽快地公布它。于是,在对MVVM没有太多理解的前提条件下,团队内开始构建它了。尽管后果是好的,但人们编写了不容易了解的代码,并增加了许多将代码变的简单的额定代码。 以上三个例子活泼的向咱们诠释了什么是技术债权不是缺点,以及它们产生的起因: 业务压力:企业关怀性能而不是代码品质并行开发:一个团队试图通过安顿更多人来满足最初期限不足技术技能和常识:在学习可承受的实际(例如 TDD、重构和紧急设计等)方面投入有余不足文档:许多人认为麻利意味着没有文档或不理解文档的价值不足所有权:将开发外包蹩脚的设计技能: 延聘教训较少的低成本工程师等这里又呈现一个问题: 什么是非功能性需要?非功能性需要是需要,非技术债权。 如果页面须要更多工夫来关上而产品经理对此有所埋怨,这示意产品经理在回绝欠缺该性能的需要,而非技术债权。 同样,如果零碎无奈解决负载或谬误音讯不明确,则存在性能缺失,而非技术债权。 以下这些都是功能性需要: 数据安全治理用户会话并爱护它拣货时段和非拣货时段的服务器负载治理页面加载工夫服务器响应工夫正确的日志治理政府合规等LigaAI 新一代智能研发合作平台 让 AI 为您的研发团队提供个性化、智能化的我的项目合作体验,化繁就简,帮忙开发者专一、高效的创作!本文作者:Naveen Kumar Singh

March 2, 2022 · 1 min · jiezi

关于开发:Instagram-CEO-苹果-iPad-不咋受欢迎不值得给开发个专属版本的-App

上周,Instagram 首席执行官 Adam Mosseri 在社交平台上发文称,他们始终没公布 iPad 版 Instagram 的起因,只是“因为 iPad 不怎么欢送”。该推文一经公布,引发不少热议。 作为备受年老用户青睐的社交媒体平台,Instagram 在在近几年的影响力也在继续晋升。但让不少用户“蛊惑”的一点,就是这款广受欢迎的社交 APP 竟然始终没有推出 iPad 版本。 所以,对于“Instagram 什么时候公布 iPad版本”的话题始终是用户关注的焦点之一,而且简直每年都有人问这个问题。 当然,始终被用户问这个问题,作为 Instagram CEO 的 Mosseri 天然备受“困扰”。 终于在 2 月 27 日,当出名科技博客作者 Marques Brownlee 在社交媒体上再次提出这个问题“The year is 2022 and there's still no proper Instagram app for iPad”,吐槽“都 2022 年了,iPad 上还没有适合的Instagram 应用程序”的时候,Instagram 的 CEO Mosseri 终于含糊其辞的做出了回应: “Yup, we get this one a lot. It's still just not a big enough group of people to be a priority. Hoping to get to it at some point, but right now we're very heads down on other things.” ...

March 2, 2022 · 1 min · jiezi

关于开发:开发人员的编程心理学

向开发人员提供倡议的编程心理学我之前写过,编程有两个受众:CPU 和你的编程搭档。 还有一些优良的文章,比方《面向苦难编程》 ,能够帮忙你在编程时调整指标——让它工作、让它丑陋、让它疾速,这是那篇文章的倡议。 “让它工作、让它丑陋、让它疾速”是绝妙的编程倡议,也是我从第一次读它开始就始终牢记在心的倡议。 编程倡议程序首先以 CPU 为指标——即“使其工作”。 1 正当的编程倡议而后倡议针对您的编程搭档,即必须保护或查看代码的人,让代码丑陋。 一旦您的代码胜利满足其计算要求,并满足与咱们一起共事的普通人可能了解的要求,那么,如有必要,咱们就能够聚精会神地不断完善它。事实上, 代码“丑陋”意味着有可能更容易找到改良的机会,因为在大多数状况下,使代码“丑陋”意味着更小的、独立的函数,从而使得更易优化。 我最近在网上和一位敌人聊天,他提出了一个问题,这也反映了我的经验:他的工作是集成一组代码,这些代码是在没有团队监督的状况下创立的。这些代码不足测试,并且是独立编写的,没有遵循与主我的项目雷同的编码标准。 这是一个艰巨的处境。集成这样的代码意味着要试图弄清切入点——这是测试的职责——但因为没通过测试,你不得不置信编码者实际上满足了需要,因为在现实情情景下,测试也要证实这一点。 你会怎么做?你会给什么编程倡议? 2 无抵触面对如我所言,我遇到过相似情景,尽管我抵赖还能够解决得更好,但同时我也认为本人曾经做得够好了。 人们不喜爱被面对,面对什么并不重要。迪特里希·邦霍费尔(Dietrich Bonhoeffer)有一个粗浅的洞察,即个体可能很愚蠢,但群体可能超级愚蠢——更蹩脚的是,冲突挑战,抵抗力会随着参加人数的减少而减少。(你能够很容易地扭转一个敌人的想法——然而扭转一群七个人的想法却难于上青天。) 所以我所做的就是把本人描绘成一个受到他们的代码库挑战的人。我没有评论理论代码或它们有多可怕:我让本人专一是于学习代码,因为我不了解它。 这个性能的测试在哪里?”我问道,只管我晓得没有测试。毕竟,我可能是错的……问测试在哪里是对他们的温和刺激,以便我能从他们那里有所播种。 这个问题给了他们很大的回旋余地。 3 强制自我检查他们能够指出测试在哪里的确满足了我的需要;兴许我只是没看到?(在这种状况下,不存在测试,我晓得,但这不是重点。我须要他们思考可能性。) 他们也能够本人察看到,兴许测试不存在,作为交接的要求,兴许他们能够写一个。 当您还没有设计用于测试的代码时,测试很艰难,但在您承受代码之前,这不是您的问题,这让他们有机会批改本人对代码的了解,而不用在意我对他们代码的认识。 当然,兴许你没有权限要求这样的测试。在这种状况下,您可能须要向利益相关者(负责交付代码的人)申请帮忙,并指出未测试代码的集成引入了可变的可靠性(即,它是不牢靠的,因为您不能假如它是牢靠的)。 与利益相关者就可靠性进行对话可能会让您有权回去进行构造和测试的对话。 4 编程倡议心理学再者说,这种对话齐全能够颠倒过去。如果他们编写了意大利面条式的代码并为此感到骄傲——谁不会呢?—您会简略地要求他们编写它,以便您的小脑袋能够像了解依据组织约定编写的代码一样容易地了解它。 “哇,那个243行的函数太厉害了,就是看不懂。你能通知我咱们如何将它合成并重构为具备更小的函数和组合吗? 而这个对“j”的援用,是一个索引吗?咱们能把它命名为它理论代表的货色吗?是窗口句柄吗? 请帮帮我,我真的不明确。” 这是根本的心理学原理。在某种程度上,这是一种操纵,但咱们每天和每次互动都以温和(心愿是凶恶)的形式操纵人们:当咱们与人打招呼时,咱们会微笑,以触发特定的内啡肽,咱们首先提到好消息(或者不是)发明有利于咱们想要的特定心态。为本人的目标应用人们的思维和感知形式并不奇怪,如果后果是侧面的,那么这样做也不是好事。 不要胆怯用心理学来帮忙你编程。这可能很难,因为有时它意味着你不能对那些可能真的须要大喊大叫的人大喊大叫——但大喊大叫往往会事与愿违,如果指标是富有成效,那么咱们须要思考如何发明咱们的工作环境,而不是通过按住他人来满足咱们的私欲。 注:本文译自:The psychology of offering programming advice to developers - Coffee Talk: Java, News, Stories and Opinions (theserverside.com)

January 25, 2022 · 1 min · jiezi

关于开发:龙蜥社区一周动态-110114

各位龙蜥社区的盆友们好,社区一周动静与大家准时见面,欢送继续关注公众号不迷路。当初, 让咱们一起来回顾下社区「1.10-1.14」都有哪些「上新」干货吧。 —— 完 —— 退出龙蜥社群退出微信群:增加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;退出钉钉群:扫描下方钉钉群二维码。欢送开发者/用户退出龙蜥社区(OpenAnolis)交换,独特推动龙蜥社区的倒退,一起打造一个沉闷的、衰弱的开源操作系统生态! 对于龙蜥社区龙蜥社区(OpenAnolis)是由企事业单位、高等院校、科研单位、非营利性组织、集体等在被迫、平等、开源、合作的根底上组成的非盈利性开源社区。龙蜥社区成立于 2020 年 9 月,旨在构建一个开源、中立、凋谢的Linux 上游发行版社区及翻新平台。 龙蜥社区成立的短期指标是开发龙蜥操作系统(Anolis OS)作为 CentOS 停服后的应答计划,构建一个兼容国内 Linux 支流厂商的社区发行版。中长期指标是摸索打造一个面向未来的操作系统,建设对立的开源操作系统生态,孵化翻新开源我的项目,凋敝开源生态。 目前,龙蜥OS 8.4已公布,反对 X86_64 、Arm64、LoongArch 架构,欠缺适配飞腾、海光、兆芯、鲲鹏、龙芯等芯片,并提供全栈国密反对。 欢送下载: https://openanolis.cn/download 退出咱们,一起打造面向未来的开源操作系统! https://openanolis.cn

January 18, 2022 · 1 min · jiezi

关于开发:以开发之名一站式分发精准触达圈层

《偶像梦幻祭2》主策动Helen在游戏行业十多年了,作为一个“二次元爱好者”,她从初中开始就各种追番、买漫画杂志,对二次元游戏也很感兴趣,起初很侥幸参加了《偶像梦幻祭2》的策动。 《偶像梦幻祭2》是一款二次元女性向偶像养成音乐手游,通过精美的美术画面和丰盛的3D MV剧情给予玩家陪伴感和养成感。因为玩家群体偏差二次元,粘性强的同时圈层感也很强,如何散发和精准触达圈层是个不小的挑战。 “在游戏散发的前中后期,HUAWEI AppGallery Connect为咱们提供了丰盛的服务,让更多的玩家与咱们相遇。”Helen从游戏上线前、上线当周以及上线后三个阶段分享了游戏上线过程和获得的成绩。 “在《偶像梦幻祭2》首发前,驳回华为团队依据数据提出的倡议,预约Banner由之前的每月替换改为每周替换,向玩家传递更多的游戏角色信息,预约数峰值靠近3万,为首发用户积攒做了很好的铺垫。”Helen说。 在游戏首发当周,华为游戏核心“上分之路”栏目从游戏角色、画风、音乐、剧本故事等多个维度对《偶像梦幻祭2》进行了业余测评,同时配合同人条漫的连载,帮忙玩家更疾速理解游戏,最终让游戏首发期间的曝光达到了300万左右。 “在游戏上线后,因为游戏包体大小达1.7G,用户下载老本较高,所以咱们始终有一个争议:是小包下载后加载完整包,还是一次性下载完整包的转化率更高? ”Helen说,“所以咱们应用了HUAWEI AppGallery Connect的分阶段公布服务,将线上流量依照5:5的比例随机分流,比照两种下载方式的量级转化、留存和付费状况。后果小包IPM比完整包高28%,详情页转化率回升90%,付费7日LTV根本稳固,依据这个后果咱们全渠道地替换了小包。” 散发能力是实现游戏和利用增长的重要一环。HUAWEI AppGallery Connect在帮忙开发者打造优质的游戏体验,升高潜在危险,晋升散发成果的同时,也为开发者上架公布游戏和利用加强信念。从利用上架之前的筹备,利用上架后的流量积累,再到前期的高效经营,HUAWEI AppGallery Connect基于华为利用市场平台资源为游戏和利用提供了全方位的赋能。 “这两年女性向和二次元是两个很引人注目的市场,高质量作品不断涌现,玩家对游戏的规范也一直进步,须要用更优良的作品吸引玩家、留住玩家。在将来,咱们心愿携手HUAWEI AppGallery Connect创作出更多让玩家青睐的优良内容。”Helen说。

December 28, 2021 · 1 min · jiezi

关于开发:以开发之名深耕本土化内容带给用户更丰富的娱乐体验

《梦幻花园》是一款打消+建造交融玩法的三消游戏,由俄罗斯开发商Playrix制作,原生场景更偏差于欧洲的庄园设计,一些功能性修建也附带了浓重的东方色调。作为一款海内产品进入中国,将如何做“本土化”内容? “咱们心愿能为中国用户提供更优质的产品体验和正向的情绪价值,为此咱们在“本土化”方面做了较多的致力和投入。”《梦幻花园》游戏制作人尤泽煦说。 《梦幻花园》经营团队调研发现年轻人其实很喜爱理解传统文化内容,所以在本土化过程中,他们尝试退出了苏州园林、雪落长安、故宫文化等优质内容,推出一系列符合中国用户审美的花园皮肤。 同时充分发挥游戏设计巧思,如御花园新版本,把剧情包装成奥斯汀来中国游览,并且独自开拓了一块全新的建造区域,给予用户全新玩耍体验的同时,也可能感触到宫廷修建的深厚底蕴。 面对国内市场用户增长变缓的现状,老用户留存和促活成为要害。HUAWEI AppGallery Connect凋谢的全生命周期服务,帮忙开发者做精细化经营,晋升开发、经营以及散发效率。 “《梦幻花园》在正式上线御花园新版本时,首次应用了新版本‘预约’性能。帮忙咱们取得了近3个亿的品牌曝光量,触达外围用户群,包含历史注册用户,积攒潜在玩家。新版本公布后,预约用户的回流率达到85%以上,极大地促成了用户活跃度,晋升用户粘性。”创梦天地商务VP张迪说。 为了给用户提供更丰盛的游戏内容体验,《梦幻花园》还联合华为生态智能产品在内容上进行单干摸索,于往年6月推出了“华为商城智慧生活馆”装修流动,用户通过闯关取得装修票,能够在游戏内应用虚构的华为品牌智能设施装修本人的“华为商城智慧生活馆”,流动期间用户新增量环比增长50%。 在将来,创梦天地和华为还将在游戏深度联运、联结推广、IP等畛域发展更深刻的单干,并独特摸索云游戏、VR游戏等翻新利用场景,为用户带来全新的娱乐体验。 “《梦幻花园》不单是一款为用户提供产品体验和娱乐价值的游戏,更是一座陪伴用户的花园。《梦幻花园》愿携手华为始终守护着大家心中的那片花园。” 创梦天地联结创始人兼总裁高炼惇说。

December 21, 2021 · 1 min · jiezi

关于开发:分布式-DBLE-新特性之脱离分库分表的读写分离

作者:赵佳慧 爱可生产品团队成员,次要负责公司运维平台的更新迭代。平时喜爱多理解其余技术,一直晋升集体技能。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 一、性能介绍本篇内容次要围绕分库分表中间件 DBLE v3.20.10.0 版本的新个性 “不分库分表的读写拆散” 开展介绍。 在 v3.20.10.0 版本之前,DBLE 反对配置分库分表的前提下应用读写拆散性能。v3.20.10.0 版本开始,DBLE 反对配置单纯的读写拆散,即读写拆散性能能够和分库分表性能离开,独自应用读写拆散性能。在介绍新个性之前,咱们先来回顾分库分表下的读写拆散性能如何应用。 二、环境筹备验证分库分表下的读写拆散性能之前,首先筹备所需环境,根本信息如下: 服务器IP用处版本10.186.64.40部署DBLE服务3.20.10.010.186.64.23部署MySQL-M15.7.2510.186.64.31部署MySQL-S15.7.2510.186.64.34部署MySQL-S25.7.251、部署一主两从数据库组。 2、部署 DBLE 环境。 可参考 DBLE手 册中的 疾速开始 。 3、编辑 DBLE 配置文件,配置好后端数据库组。 4、开启 MySQL 的 general.log ,用于验证 SQL 语句的下发。 三、应用分库分表的读写拆散性能1、配置分库分表的读写拆散性能。 配置要点: 配置多个 dbInstance 为读操作提供负载平衡。rwSplitMode 配置不能为 0 。重要配置内容: user.xml <dble:user xmlns:dble="http://dble.cloud/" version="4.0"> <managerUser name="admin" password="1" maxCon="200"/> <shardingUser name="root" password="1" schemas="db1" maxCon="200" > </shardingUser> </dble:user>shardingUser:分库用户配置db.xml <dble:db xmlns:dble="http://dble.cloud/" version="4.0"> <dbGroup name="dbGroup1" rwSplitMode="1" delayThreshold="100"> <heartbeat>show slave status</heartbeat> <dbInstance name="M1" url="10.186.64.23:3306" user="root" password="1" maxCon="500" minCon="100" primary="true" readWeight="0" id="mysql1"> <property name="testOnCreate">true</property> </dbInstance> <dbInstance name="S1" url="10.186.64.31:3306" user="root" password="1" maxCon="500" minCon="100" disabled="false"> </dbInstance> <dbInstance name="S2" url="10.186.64.34:3306" user="root" password="1" maxCon="500" minCon="100" disabled="false"> </dbInstance> </dbGroup></dble:db>rwSplitMode:读操作的负载平衡模式(候选值0/1/2) 0:不做平衡,间接散发到主实例。1:读操作在所有从实例中平衡,当所有从实例均不可用时,下发语句会报错。在v3.20.10前是会发往主实例。2:读操作在所有实例中平衡。Sharding.xml <dble:sharding xmlns:dble="http://dble.cloud/" version="4.0"> <schema name="db1" sqlMaxLimit="-1"> <globalTable name="t1" shardingNode="dn1,dn2" sqlMaxLimit="-1"></globalTable> </schema> <shardingNode name="dn1" dbGroup="dbGroup1" database="db_1"/> <shardingNode name="dn2" dbGroup="dbGroup1" database="db_2"/></dble:sharding>2、应用 mysql client 登录 dble 客户端。 ...

September 15, 2021 · 2 min · jiezi

关于开发:云端开发在阿里的典型应用场景

简介:云端开发在阿里的典型利用场景,云端开发指开发者可基于云平台实现编码、测试、公布等研发流程。一个残缺的云端开发平台不仅是提供了一个云端的编码环境,还提供了一整套研发工具和配套设施,让开发者做到在云端即可实现应用程序的需要、编码、测试和运维的全生命周期治理。 本文作者:弗止,阿里云云效技术专家;辰颜,阿里云云效高级开发工程师本文源自:阿里云云效团队出品的《阿里巴巴DevOps实际指南》,返回:https://developer.aliyun.com/...,下载完整版电子书,理解阿里十年DevOps实践经验。 云端开发指开发者可基于云平台实现编码、测试、公布等研发流程。一个残缺的云端开发平台不仅是提供了一个云端的编码环境,还提供了一整套研发工具和配套设施,让开发者做到在云端即可实现应用程序的需要、编码、测试和运维的全生命周期治理。 传统的本地开发的问题如下图所示,在传统的开发模式中,企业研发人员通常在本地实现代码的编写和测试,而后把代码推送到远端服务器,通过一系列的构建和集,最终公布到生产环境,并继续利用线上的运维体系实现线上零碎的监控和运维;同时,企业也会采集局部研发过程中的要害数据,用来度量团队及集体的效力。 随着各种软硬件技术逐步更替,公司规模也越来越大,为了适应这种变动: • 公司须要一直为企业研发人员配备适合的本地研发工具(如:多核高内存的计算机设备、Mac 笔记本电脑),这些设施可能价值不菲,而且须要定期的更新换代;• 新退出的员工,在正式开始开发前,须要配置简单的本地开发环境,装置特定的软件及插件,并相熟我的项目的研发流程及各个线上零碎;局部我的项目因为网络配置等问题,可能第一工夫还无奈在本地启动,还会耽搁不少额定的配置及调试工夫;• 公司须要投入较多的资源,能力构建起匹配管理者需要的效力度量零碎和平安管控零碎,并且因为云端体系天生对开发者本地环境的弱管控性,成果只能差强人意; 阿里巴巴也不例外,随着近些年各项业务的飞速发展,人员的疾速裁减,如何解决倒退过程中带来的相似问题变得火烧眉毛。而云端研发作为一种新兴的技术模式,其独特的劣势恰好能够用来解决上述问题。 云端开发的典型利用案例案例 1:前端组件的开发在阿里外部,存在大量的基于 Node.js 构建的前端工程,这些前端工程广泛采纳模块化的组织形式,在开发过程中会随着需要迭代产生泛滥的模块(或组件)。同时,有些前端工程会邀请业务方参加共建,即由提出性能需要的团队在大的规范下自行开发组件,并公布上线,在平台中集成本人的场景。在这样的背景下,组件的开发会被高度的形象,大部分的步骤都能够由工具辅助实现(如下图中,业务开发人员只须要关注本人的业务逻辑即可),这样既晋升了研发效率,又晋升了组件的开发品质。 前端组件开发过程: 云端开发的开箱即用,恰好能够解决相似的问题。开发者关上浏览器就是一个配置好的环境,实现零配置上手;而环境配置能够由项目组的资深共事保护,配置好针对某个我的项目的零碎版本、程序运行时、SDK 和 IDE 插件汇合。相比应用本地的研发工具,云端开发能够实现: • 研发流程的产品化,从组件的新建到最终的公布零打碎敲,不必再在多个平台工具上来回跳转;• 屏蔽用户操作系统的差别,提供对立的研发环境,不必再解决 Windows/Mac 的差别,不必放心本地Node.js 的版本问题;• 所有环境都会预装好必要的开发提效工具,如:规约扫描和修复工具、预览调试工具、各环境公布工具等;• 充沛开释本地磁盘空间,不必放心磁盘被 node_modules 占满; 案例 2、代码平安管控与研发过程数字化度量在政务、金融以及局部高科技企业的研发场景中,对代码的平安管控要求极其严格。但近几年,公司外部源代码泄露的事件时有发生,有的被明码标价进行发售,标价数十万甚至上百万美元;有的间接被公开在网络上,任何人都能够拜访下载。一旦产生相似事件,将会间接或间接造成商业信息泄露及公司名誉受损。 当应用本地开发时,源码的传输环境、本地的长久化介质不可控,对于员工无意泄露源码的行为仿佛无可奈何。当应用云端开发时,所有都迎刃而解:开发者能够从代码库或需要间接关上网页开始云端开发,研发过程中代码不落本地磁盘,既能缩小传输危险,又防止了员工本地环境被植入木马、从而在不知情的状况下泄露源码的可能;同时,在云端开发环境中能够对用户的浏览、拷贝行为做不同水平的管控,联合告警和零碎主动拦挡,可无效升高源码泄露的危险。 在阿里外部,当波及到对保密性要求极高的我的项目,或者当企业内部成员参加对代码保密性有要求的我的项目时,咱们会举荐我的项目团队应用云端进行研发,从而无效避免源码的泄露。 此外,随着越来越多的企业进入到数字化转型阶段,管理者冀望能更加全面的看到企业员工的投入与产出,并且针对我的项目人员散布与研发过程效率做出更加及时的调整与改良。在过来,所有的数字化信息都依赖人工的反馈和统计,反馈的是否精确、统计过程中是否有纰漏都会间接影响管理层的判断。但如果把研发过程搬到云上,所有的研发过程数据就能生在云上、用在云上,想要借助数字化晋升研发效率变得更加容易。 在阿里外部,团队中常常会呈现一名正式员工率领多名企业内部成员实现我的项目的状况。在须要对企业内部成员的工作进行绩效评定时,传统的评定形式通常是参考需要实现数量、代码缺陷率等指标,但理论工作中需要有大有小、有难有易,齐全基于后果指标进行评定很难做到偏心公正,让优良的员工怀才不遇。借助云端开发,能够让所有研发过程中的数据也通明进去,如各需要的编码时长、长期版本公布次数、过程代码与最终无效代码的比例、单位工夫代码产出量等。通过联合研发过程数据,也能够让绩效评定更加通明公正。 总结云端开发具备灵便定制、开箱即用的特点,借助好这两个个性,就能够创新性的解决掉传统本地开发过程中的顽疾。除了上述两个案例外,咱们认为,以后适宜云端开发落地的场景还能够是: 1、云原生场景中的轻量代码开发,如 Serverless 场景,这类场景中研发人员只须要集中式的编写业务逻辑,大量的框架类代码已被默认暗藏,并且调试、部署形式有别于传统研发过程,更适宜云端开发的落地。2、各类垂直化的场景,这类场景通常须要有针对性的定制,与特定的线上零碎进行买通,只有能利用好云端开发灵便定制的个性,就无望实现开发阶段 10 倍效力的晋升。 目前,阿里巴巴外部的云端开发平台目前已通过阿里云云效对外输入,返回ide.aliyun.com,秒级体验云端编码、代码智能补全等黑科技。 阿里巴巴合伙人和业界多位大佬力荐、何勉、陈鑫等17位阿里资深技术专家联袂出品、阿里十年DevOps教训积淀总结、阿里巴巴DevOps落地实际一本通。 返回:https://developer.aliyun.com/...,下载完整版电子书。 云端开发在阿里的典型利用场景,云端开发指开发者可基于云平台实现编码、测试、公布等研发流程。一个残缺的云端开发平台不仅是提供了一个云端的编码环境,还提供了一整套研发工具和配套设施,让开发者做到在云端即可实现应用程序的需要、编码、测试和运维的全生命周期治理。

September 10, 2021 · 1 min · jiezi

关于开发:来啊来魔改啊人生重开模拟器一键托管上线

简介: 云开发平台将“人生重开模拟器”fork到了云开发的仓库了,用户只须要间接fork到本人的仓库当前就能够在云开发平台上进行疾速魔改和一键部署,绑定本人的域名就可能让小伙伴们一起来感触你的魔改创意哦。 人生无奈重来,游戏能够重开!人生重开模拟器莫名其妙就火了,这是款纯文字MUD游戏。玩家开局能够从10个各具特色的天才里选中3个,并为本人的4项属性(颜值、智力、体质、家境)调配点值就可能重开你的人生。你齐全无奈意料本人会有怎么样的经验,比方2岁吃不饱饭死了、政府要求5点放学、家庭艰难、吃不饱饭、进入监狱、一会有女朋友、一会交一个男朋友等等,这款游戏还有很多十分厉害的暗藏终局! 这个游戏的全貌就是全程点点点,如播放 PPT 个别从诞生到死亡,没有美术、没有音效、甚至没有广告。但它魔性的随机文本词条混搭着平平淡淡的日常,偶然还会存在奇奇怪怪的开展,让我一心想摸索一下人生的边界,重复重开,重复筛选天才、配置属性,总想体验不一样的人生,一不小心就轮回了几百次。一玩就上瘾,重开了快 300 次人生,也逃不过究竟平庸的命运,还是没有体验到开挂的人生。那来啊,来魔改啊,长生不老版、升仙版、音效版,你都能够领有。 云开发平台将原我的项目fork到了云开发的仓库了,用户只须要间接fork到本人的仓库当前就能够在云开发平台上进行疾速魔改和一键部署,绑定本人的域名就可能让小伙伴们一起来感触你的魔改创意哦。 人生重开模拟器的实现逻辑剖析这个游戏的repo里一共就不超过10个js文件,没有应用任何简单的库,只是用jQuery和css简略的拼了一个前端而已,惟一简单一点的中央是游戏逻辑解决。 首先,游戏数据,如天才和事件等,是寄存在data目录下:外面有游戏数据相干的xlsx与json文件,如每个年龄可能产生的事件、各个事件产生的条件、天才等等。作者还写了一个脚本文件utils/xlsxTransform.js用于将xlsx文件转化为json,不便读取。 钻研一下这个表格,咱们能够发现,人物的根底属性有这么几种: CHR(Charm): 颜值INT(Intelligence): 智力STR(Strong): 体质MNY(Money): 家境SPR(Spirit): 高兴LIF(Life): 生命事件的产生可能会带来颜值、智力、体质、家境的变动。 生命的变动只有“-1”。包含“你死了”和“飞升天界”两种状况。所以修仙胜利的敌人们不要太得意。你认为的位列仙班,没准就是被天道采摘成熟果实呢?“有某事件时能力被随机到”和“有某事件时肯定随机不到”造就了命运迥异的农村线、城市线、美籍华人线。天才(TLT, talent)对于事件的产生也有影响,如城间高楼必然出世在城市。产生事件后,可能会依据前置事件和人物属性走向不同的分支。例如“你受到了一位老师的猥亵”事件在人物 INT>7 时会走向“你报了警,老师被刑拘”反之则是“你逐步低沉,但不敢和其他人说。”其次游戏的次要代码都是在src目录下: 你能够先从 src/index.js 开始了解,这个文件就干了两件事: 读取方才提到的 data 下的 json 游戏数据,绑定为全局变量;绑定一个全局的 banner handler。初始化 app。import App from '../src/app.js'; window.json = async fileName => await (await fetch(../data/${fileName}.json)).json(); // Pssst, I've created a github package - https://github.com/brookesb91...window.hideBanners = (e) => { document .querySelectorAll(".banner.visible") .forEach((b) => b.classList.remove("visible"));}; const app = new App();app.initial();而后你能够顺着去读 src/app.js 的代码,外面就是次要的前端 jQuery 局部,负责生成视图并绑定函数,基本上大部分前端的逻辑都在这里。举个例子,上面这段代码: ...

September 10, 2021 · 1 min · jiezi

关于开发:基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP-Gateway-方案和思路

为什么做这个? 今年初接到一个我的项目工作,客户要求在本人的音视频平台零碎中集成webrtc性能(原零碎是基于SIP协定开发的,曾经稳固运行多年,有很多客户)。在比对了多家RTC产品的成果后,。他们对声网音视频DEMO成果后十分称心,指定要求用声网的SD-RTN传输网络,全面革新客户端软件。据客户实测,在某些国家和地区,同样网络环境下比微信要好很多,比方在东非和中国之间语音通话,提早很小、声音也更清晰。 话不多说,先列下客户要求和以后产品的问题:1、要求全面革新Android、IOS、Windows、MacOS、Web版5个平台的客户端软件,原来的客户端别离是基于Pjsip、Linphone、Sipjs开发的;2、要求在网络环境差的中央,也能满足清晰语音通话的要求(声网专为此而生);3、最小侵入性,尽量不扭转服务器端的零碎性能,实现客户无感降级;4、解决SIP协定常常碰到丢包、被过滤UDP等无奈呼叫,或者呼叫听不清的问题;5、解决SIP服务器常常被尝试攻打呼叫、歹意扫描注册攻打等行为,进步零碎稳定性;6、实现WebRTC协定和SIP协定的双向互通,既要兼容SIP呼叫,反对RTC客户端送呼叫到SIP Server,也要反对SIP Server呼入到客户端软件(在声网的音视频实时传输网传输)。. 其实刚接到需要的时候,大家一起探讨剖析过,感觉这种我的项目看着有不少估算,然而要做的是全平台的客户端,开发工作沉重,要思考的细节也比拟多,没准是个坑,能不能达到客户冀望难说,少数共事不倡议做。而后在领导和客户一起去happy一晚后,这活儿不晓得怎么就接了下来。老板理由很简略,这也不做那也不做,那咱们能够做什么?如果谁都能做,客户还会找咱们吗?那就干吧,马上口头,各种查资料,翻阅声网的技术开发文档,并征询声网的技术同学。2天后拿出初步计划。 零碎架构图解决思路:1、本人写信令模块,放弃灵活性,简略实现:开发TCP Server承当信令服务器;2、外围是开发一个SIP2WebRTC/WebRTC2SIP协定转换网关,保护一个状态机;3、开发音视频编解码处理器,解决声网语音和SIP语音编码互通;4、开发一个状态治理模块,SessionManger,以保护客户端的状态IP+端口;5、联合声网的音视频SDK,集成本人的信令模块,实现和WebRTC2SIP 模块通信;6、自定义常见的SIP呼叫信令,供各平台客户端保持一致。罕用的SIP 信令有:1注册、2呼叫、3接听、4挂断、5拒接、6勾销、7Hold、8DTMF、9用户未反映、10用户离线、11Transfer、12会议(我简略介绍后面的6个) 咱们暂且把这个零碎命名为 WebRTC2SIP Connector 或者SIP2WebRTC Connector吧。至于为什么这么叫,我也不晓得,可能叫XX Gateway的太多了,不这么叫显不出声网的SD-RTN有多牛X,我是他爹,想叫什么都能够。 理清思路后,咱们须要确认几个外围问题:1、以哪个平台的SDK为根底开发这个WebRTC2SIP Connector 外围模块?2、Agora SDK是否反对多并发呼叫?3、声网的语音编码格局和视频编码格局是什么?采样率多少?4、SIP客户测有没有什么具体的编码要求?客户可承受固定一个语音编码,我抉择PCMA 这里特别感谢一下声网,对咱们这种小众需要做出了疾速响应,也感激声网技术支持同学Nemo,专门来到公司交换了几个小时,并分享了一些技术信息。他倡议咱们:1、用Agora Windows SDK 或者 Linux SDK 开发协定转换模块;2、2个SDK都反对多并发呼叫;3、语音是pcm格局,视频是yuv格局;采样率是48khz 到这里心里有数了,简要文字描述下大略流程就是:1、各客户端SDK启动的时候,发动TCP连贯,登录TCP Server信令服务器, WebRTC2SIP转接模块初始化也发动TCP连贯登录TCP Server ,由TCP Server记录大家的UID,IP和端口等信息。2、呼叫的时候,申请一个房间号,并依据自定义信令格局发动calling 报文,TCP Server收到后,转发给转接模块WebRTC2SIP ,WebRTC2SIP收到后创立1个线程,解析报文,并启动声网的SDK,退出指定房间号,开始读取音频流程,同时启动线程,封装SIP规范报文,发动sip invite申请给电话服务器SIP Server; SIP Server收到呼叫申请就去呼叫被叫电话号码,并返回ring振铃信号;WebRTC2SIP收到振铃信号,封装自定义的振铃信息给客户端SDK,被叫接听后,WebRTC2SIP,启动Media Coder开始解析媒体流,并resample 后,写入到声网的房间外面。实现语音通话。形容个大略,置信能看明确。3、从SIP呼入到声网的SDK,大同小异,反过来。 这里要留神:1、每个终端都要自定义编号;2、每个呼叫都要退出声网的房间channel 实现音视频互通;3、因为编码不一样,所以须要resample 这个很重要,不要接通了没有声音,单方不匹配。4、WebRTC2SIP 模块要多线程形式解决,以实现并发呼叫;5、WebRTC2SIP 模块要保护一个残缺的状态机,给每个通话加惟一编号,不至于出错。 到当初咱们讲清楚了大略的解决方案和技术思路,看到这里,各位客官应该明确了,其实这个做起来没啥难度,至多当初看来是这样的。 基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计 (二)上一篇咱们提到,罕用的SIP 信令有:1注册、2振铃、3呼叫、4接听、5挂断、6勾销有了这几个报文,电话的呼入和呼出就能够根本实现,其余拒接、DTMF等相似。如图所示: 约定:1、客户端和服务器端JSON格局交互;必传参数:msgtag 是音讯惟一标记,userid是谁触发的,appid 作为一个利用的标记。sign 签名加密 (看状况)2、服务器返回的报文必须包含msgtag \appid\errcode errcode=1 阐明有谬误 errmsg就会有值 ;如果errcode=0 阐明返回后果正确个别是返回的msgtag 是申请的msgtag+”_res”做为辨别3、roomID 是房间号对应声网的渠道号,每个通话报文必须包含roomID 用处是什么本人想。4、callType 是video audio 前者代表视频呼叫,后者代表语音呼叫5、direction 呼叫方向 in 呼入 (SIP Server 把呼叫送到声网的SDK)out 呼出(SDK把呼叫送到SIP Server)6、isSIP yes no 代表这通呼叫是外部呼叫(声网客户端实现) 还是SIP呼叫(走落地) ...

July 6, 2021 · 1 min · jiezi

关于开发:开发人员应该害怕低代码吗

低代码正风行LCDP(低代码开发平台)市场规模大,增长迅速。Forrester预测,到2022年,低代码开发平台市场将从2017年的38亿美元大幅增长增至212亿美元。Gartner预计,到2024年,65%的利用程序开发将波及某种模式的低代码利用程序开发。 驱动低代码风行的四个个性低代码有事后构建的模块通过一个预构建模块库,低代码平台容许开发人员轻松无缝地构建应用程序。这些模块也是可重新配置的,并能够依据操作须要进行更新。企业低代码平台通常还容许开发人员创立本人的定制模块,并将其作为可重用的公司资产在企业中共享。 低代码缩短了开发工夫低代码=更少的代码带来更快的开发工夫。开发人员应用低代码开发平台能够进步工作效率。然而,这并不一定意味着低代码开发人员会被投入到更多的开发我的项目中。相同,它还提供了一个选项,容许破费更多的工夫来收集需要、与利益相关者合作、迭代最终用户验收测试,并最终交付一个更容易被最终用户承受和青睐的产品。 低代码容许平滑合作业务用户和开发人员从不同的角度对待一个我的项目,但他们都奉献了价值,应该激励二者之间的单干。低代码开发平台通过提供业务用户能够解释和了解的可视化设计工具,能够促成开发人员和业务用户之间的合作。 例如,能够应用相似流程图的设计工具来设计业务流程。从业务用户的角度来看,流程图示意由人员或零碎执行的高级性能的逻辑流。从开发人员的角度来看,工作流中的每个节点可能代表一个事件,该事件将在将工作流转换到下一步之前触发蕴含某种逻辑模式的服务。同样的设计工具能够使业务用户了解设计是否适宜业务流程的需要,以及作为执行工作流自身的开发环境的开发人员的需要。 低代码在云端和本地都可运行许多低代码开发平台在云中作为基于SaaS的解决方案运行。基于云的解决方案能够很快地建设起来,并且简直不须要保护。然而,许多公司更喜爱或甚至可能规定一个外部选项,以便他们能够在本人的公共云提供商(如AWS、谷歌或Azure)上部署应用程序,或者在局域网的企业防火墙后部署应用程序。在抉择外部部署的背地可能有许多正当的平安、隐衷或技术相干的起因。 低代码会取代开发人员吗?低代码开发平台性能日益弱小。然而,它们的目标是让开发人员更有效率,而不是取代他们。理论状况是,低代码的设计是为了取代可反复的流程和性能。特定用例所特有的流程和性能依然须要一些手工编写的代码。低代码可能会让你做到99%的进度,但剩下的1%对于实现工作是最重要的,并且最终是你的我的项目或业务流程区别于其余我的项目或业务流程的中央。 应用低代码的开发平台,开发人员将破费更多的工夫来实现更高价值的工作,例如与相干方合作,了解业务需要,迭代用户验收测试,以产出交付非凡价值的解决方案。 开发团队如何最大化低代码工具?造就单干文化尽早确定业务用户如何参加低代码开发我的项目。例如,业务用户能够通过间接在低代码平台自身中设计业务流程来提供帮忙。因为业务用户和开发人员都应用雷同的设计环境,开发人员将可能疾速确定所提议的设计的问题,并就所提议的实现给出反馈或要求廓清。 民主化倒退低代码平台能够为开发人员在我的项目中调配的工作提供更大的灵活性。在某些状况下,前端开发人员可能成为全栈开发人员,反之亦然。 现实状况下,如果低代码平台也反对多语言开发,那么就能够在人才库上领有更大的灵活性,并基于这个人才库进行我的项目开发。 在低代码平台中寻找机会请记住,低代码工具的存在是为了帮忙开发人员。当一个平台被正当应用时,开发人员的工作效率就会进步,并且能够为其余重要的事件调配工夫,比方与相干方的合作。 平息恐怖到往年,低代码市场的市值将靠近150亿美元,而且短期内不会放缓。但这并不意味着开发人员应该胆怯低代码——远非如此。LCAD平台的建设有助于让他们的生存更轻松,并防止他们编写反复的、千篇一律的代码的麻烦。开发人员应该找到利用LCAD平台的办法,而不是放心这种毁坏。这对他们来说是一个很好的机会,来最大限度地缩短他们的开发工夫,并找到节省时间的办法来构建其余产品和应用程序。

May 31, 2021 · 1 min · jiezi

关于k8s:万字警告-k8s入门理应Pod先行

大家好,欢送来到小菜集体 solo 学堂。在这里,常识收费,不吝排汇!关注收费,不吝入手!死鬼~看完记得给我来个三连哦! 本文次要介绍 kubernetes中pod的应用 如有须要,能够参考 如有帮忙,不忘 点赞 ❥ 微信公众号已开启,小菜良记,没关注的同学们记得关注哦! 上篇文章咱们说到如何搭建 k8s 集群,不晓得看完的小伙伴有没有本人去尝试一下呢! 不要让贫困扼杀了你学 k8s 的趣味 这篇咱们本着虎头蛇尾的准则,持续带你搞明确 k8s 中的pod ,成为他人家的程序员~ 咱们老样子,先回顾下 k8s 中存在的几种组件: 那咱们还得理解一下 k8s 中几种常见的资源: Master: 集群管制节点,每个集群都至多须要一个 master 节点负责集群的管控Node: 工作负载节点,由 master 调配容器到这些 node 节点上,而后 node 节点上的docker 负责容器的运行Pod: kubernetes的最小管制单元,容器都是运行在 pod 中的,一个pod中能够有 1 个或多个容器Controller: 控制器,通过它来实现对 pod 的治理,比方启动 pod,进行 pod,伸缩 pod 的数量等等Service: pod 对外服务的对立入口,能够保护同一类的多个 podLabel: 标签,用于对 pod 进行分类,同一类的 pod 会领有雷同的标签NameSpace: 命名空间,用来隔离 pod 的运行环境这几个概念先初步有个理解即可,接下来便是对每个概念开展阐明的时候~那么,正片开始! Kubernetes一、资源管理在 kubernetes 中,所有的内容都形象为资源,用户须要通过操作资源来治理 kubernetes 对于对 资源管理 的了解,咱们须要理解以下几个概念: ...

April 25, 2021 · 6 min · jiezi

关于金融:代码回现-如何实现交易反欺诈

一、背景概述交易反欺诈是VoltDB实用场景之一,是典型的事件驱动的业务,外围是摄取高频的交易数据,并逐条对交易进行一系列简单的反欺诈规定校验,最终生成评判交易可疑度的分值,发送给上游业务零碎,触发交易拦挡动作。反欺诈规定中波及大量的通过剖析历史交易生成的指标项,在VoltDB中进行流式计算,可基于本地保留的丰盛的上下文数据对事件进行剖析决策,使实时计算凑近上下文数据,取得性能劣势。 二、实例回现上面咱们通过一个刷卡的利用,展现VoltDB是如何实现一个简略的反欺诈用例的。为了让示例代码更加简洁,又能突出VoltDB的性能,这里应用一个地铁刷卡的场景代替金融交易(如信用卡刷卡),以防止引入过多业余的金融业务知识。同时一个忙碌地铁零碎产生的交易吞吐量不可小觑,定义的反欺诈规定也更容易了解。能够通过这个链接来拜访具体的代码https://github.com/ssomagani/...在这个利用中,模仿如下几个场景: 多辆列车在地铁站点之间运行,生成列车进站事件。通过这个场景能够理解,如何将数据公布到VoltDB Topic中,以及如何生产Topic中的数据。公交卡充值操作。通过这个场景,能够理解,如何应用一个蕴含自定义业务规定的procedure来解决Topic中的数据,同时应用Stream对象将数据导出到Topic中,并通过视图对Stream中的数据流进行统计,生成实时的统计报表。视图会逐条统计Stream中的流数据,将处理结果保留到视图中,是VoltDB实现流式计算的形式之一。乘客刷卡乘车,生成高频交易数据。通过这个场景,能够理解,如何应用VoltDB数据库客户端api间接操作数据表(区别与将数据发送到Topic中),保留交易数据。如何通过VoltDB的java procedure定制反欺诈校验规定,并调用java procedure进行交易校验和反欺诈行为。让咱们来具体理解一下,在VoltDB中运行这个用例的过程。2.1筹备工作1. 启用VoltDB Topic性能VoltDB提供一个对立的配置文件,次要的个性都能够在其中进行定义,如:长久化、高可用、安全性等等,这里次要介绍与案例相干的VoltDB Topic性能。如下配置开启了Topic服务,并在服务器上开启端口9999,用于承受客户端发来的音讯。 <Topics enabled="true"> <properties> <property name="port">9999</property> <property name="group.initial.rebalance.delay.ms">0</property> <property name="retention.policy.threads">1</property> </properties> <profiles> <profile name="retain_compact"> <retention policy="compact" limit="2048" /> </profile> </profiles> </Topics>2.依据特定配置文件启动VoltDB3.创立Topic,Topic的用处前面的代码剖析中提到 CREATE Topic TRAINTOPIC execute procedure train_events.insert;CREATE TOPIC RECHARGE execute procedure RechargeCard;CREATE TOPIC using stream CARD_ALERT_EXPORT properties(topic.format=avro);create topic using stream FRAUD properties(topic.format=avro,consumer.keys=TRANS_ID);4.创立数据表在解决实时事件流时,能够充分利用底层的数据库引擎,充分利用本地关系型数据进行数据分析,失去反欺诈业务指标。在本例中将创立如下数据表和视图(省略具体DDL)5.初始化数据通过VoltDB的数据导入性能,从csv文件中初始化站点和列车 csvloader --file $PROJ_HOME/data/redline.csv --reportdir log stationscsvloader --file $PROJ_HOME/data/trains.csv --reportdir log trains2.2 代码剖析-列车运行在这个场景中,客户端模仿8辆列车在17个站点之间运行,产生进站事件并发送到Topic。因为设定的列车进出站工夫比拟短(微秒为单位),所以会产生高频事件流。在服务端,VoltDB实现:1.音讯接管2.生产音讯3.将列车进站事件记录到数据库中在客户端,通过java类TrainProducer生成多辆列车进站事件,并将事件发送到VoltDB Topic中。TrainProducer的执行命令如下: java metro.pub.TrainProducer localhost:9999 TRAINTOPIC 8TrainProducer类接管四个参数: .指定接管列车进站和离站事件的VoltDB服务器端口。这里假如在同一台机器上运行client代码和VoltDB,而后面在VoltDB配置文件中咱们曾经指定Topic的监听端口是9999。指定VoltDB broker指定数据发送的Topic名称。指定要模仿的列车数量。剖析一下TrainProducer的次要办法,main办法生成10个线程,每50毫秒执行一次publish()办法,将列车进出站工夫发送到Topic“TRAINTOPIC”中。 public static void main(String[] args) { ScheduledExecutorService EXECUTOR = Executors.newScheduledThreadPool(10); TrainProducer producer = new TrainProducer(args[0], args[1], Integer.parseInt(args[2])); System.out.println("Scheduling trains"); EXECUTOR.scheduleAtFixedRate ( () -> { producer.publish(producer.getNewEvents()); }, 1, 50, MILLISECONDS); }跟踪代码找到producer的定义,它其实就是原生的KafkaProducer,所以能够看到VoltDB Topic齐全兼容kafka api。而brokers即是main办法中的传参localhost:9999,因而下面producer.getNewEvents()办法生成的数据将被发送到VoltDB Topic中。 ...

April 14, 2021 · 8 min · jiezi

关于开发:RTThread学习笔记-5RTThread线程间同步学习过程总结

多线程之间同步是继多线程学习之后,须要重点把握的又一个重要内容。一个实时操作系统外面,如果只有多线程而没有线程间同步,各个线程都无序运行,那么必然会导致整个零碎的运行呈现各种问题。 正是因为一个较大的工作拆分为多个小工作,这些小工作是由多个线程去执行的,那么,这些小工作之间必然会存在着千头万绪的关系,小工作的运行更不能只管自扫门前雪,不论别人瓦上霜,因而,线程间同步是必须把握的内容。 对于多线程之间的同步,RT-Thread提供了比拟丰盛的文档作为参考,具体能够查看以下链接:https://www.rt-thread.org/doc... 本文尝试从以下几个方面总结一下RT-Thread线程间同步的学习过程什么是线程间同步,为什么须要线程同步? 上一篇文章RT-Thread学习笔记 -- (4)RT-Thread多线程学习过程总结外面提及到,音乐播放器通过多线程工作的时候,须要通过正当的调度形式,能力让各个线程协同工作。而这里所说的“正当的调度形式”,其中一种形式就是指多线程同步。 什么是线程间同步?艰深一点来说,线程间同步是指多个线程之间进行协商工作的形式。后面曾经说过,线程在工作的时候,尽管只分心在做一件事件,但线程在工作的时候,并不能只埋头苦干,而不顾其余线程的状态,因而必须要有一种形式,来告知其余线程对于本身的工作状态。 为什么须要线程同步?持续用音乐播放器来举例说明,依照前文的图例,如果不应用多线程播放音乐,会有什么结果呢?结果有可能是,音乐文件读取线程比歌词文件读取线程跑得慢,导致歌曲还没播放到那一步,而歌词反而先显示进去了,还有其余可能性,导致歌曲,歌词,MV三者播放的程序乱套了,不能同步显示。 如果要让音乐播放能失常工作,就须要在4个工作线程之间退出线程同步机制。比方歌词文件读取线程可能运行得比拟快,而音乐文件读取线程读取音乐比较慢,那么,这两个线程之间就须要进行同步,快的线程要略微等一下,等慢的线程发送一个同步音讯,这样两者能力一起欢快地持续运行。线程间同步的形式 针对RT-Thread实时操作系统,线程间同步次要有三种形式:信号量,互斥量,事件集。这三种线程同步机制各有优缺点,在理论开发工作外面,须要依据不同的利用场景进行辨别应用。 信号量是一种非常灵活的线程同步形式,通过信号量能够衍生出多种性能,比方,锁、线程同步、资源计数,前面讲述的互斥量也能够通过二值型信号量来实现。生存中的停车场利用场景,就是信号量的一种具体体现。 1.当停车场空的时候,停车场的管理员发现有很多空车位,此时会让里面的车陆续进入停车场取得停车位;2.当停车场的车位满的时候,管理员发现曾经没有空车位,将禁止里面的车进入停车场,车辆在外排队等待;3.当停车场内有车来到时,管理员发现有空的车位让出,容许里面的车进入停车场;待空车位填满后,又禁止内部车辆进入。 在这个场景外面,管理员就相当于信号量,管理员手中空车位的个数就是信号量的值(非正数,动态变化);停车位相当于公共资源(临界区),车辆相当于线程。车辆通过取得管理员的容许获得停车位,就相似于线程通过取得信号量拜访公共资源。 信号量是没有“所有权”这种概念的,也就是说,对于一个非二值型的信号量,多个线程能够对其进行获取/开释操作,也能够递归获取信号量,因而,对于非二值型信号量,在应用过程中可能会呈现线程优先级翻转和线程死锁的问题。 零碎内核提供以下信号量的API函数接口,如下图所示。 互斥量,顾名思义,就是一种互相排挤的信号量,是一种非凡模式的二值型信号量。这种状况就相似于一个停车位,当A汽车占据了停车位(获取到互斥量)的时候,其余汽车就不能获取该车位了,必须等A汽车来到该车位的时候,能力有机会抢夺该车位。 互斥量跟信号量不同的是,互斥量只有两种状态值,对于领有互斥量的线程,示意该线程曾经领有了该互斥量的所有权和控制权,该互斥量只能由该线程来进行开释,这样就能够解决线程递归获取互斥量呈现的死锁问题。 对于信号量中存在的优先级翻转问题,在互斥量外面不会呈现,这是因为互斥量外面实现了高优先级继承算法。优先级继承是通过在高优先级线程尝试获取共享资源而被挂起的期间内,将低优先级的线程的优先级晋升到高优先级线程的优先级别,从而解决优先级翻转引起的问题。 零碎内核提供以下互斥量的API函数接口,如下图所示。 事件集也是线程同步的一种机制,但与信号量或互斥锁不同,事件集是能够实现一对多或多对多同步的。也就是说,一个线程收回一个(或多个)事件,一个(或多个)期待该事件的线程在获取到该事件后,就能够取得运行的权限。 事件集是应用一个32位无符号整型的变量来示意的,每一个位示意一个事件,这些事件能够是“逻辑与”或“逻辑或”的关系。换句话说,就是能够让一个线程期待一个事件(逻辑或)达到就执行,或者让一个线程期待所有事件(逻辑与)达到才执行。 事件集在某些场合外面是能够代替信号量的。但事件集与信号量不同,事件集的事件在革除之前,是不能累计的,也就是说,一个线程发送了屡次同一事件,因为不能累计,也就相当于只发了一次该事件,直到该事件被革除。 零碎内核提供以下事件集的API函数接口,如下图所示。多线程同步的利用示例 多线程同步的利用示例,次要是为了验证信号量,互斥量,事件集的API接口函数,并且通过试验景象察看这三种线程同步形式的运行状况。 示例源码下载链接:https://github.com/embediot/r... 信号量示例次要演示了一个“生产者-消费者”的设计模式,生产者线程一直生产产品(数值加1)放入仓库(循环数组),消费者线程一直从仓库外面取出产品,仓库的读写操作都须要应用信号量的锁机制进行同步。 互斥量示例次要创立了三个动静线程,这三个动静线程一直抢夺这个互斥量的使用权,通过试验景象能够察看到,持有互斥锁的线程的优先级,会通过优先级继承算法,调整到期待线程优先级中的最高优先级。 事件集示例次要初始化了一个事件集和两个线程,一个线程发送事件,另一个线程期待事件。期待事件的线程,别离应用了“逻辑与”和“逻辑或”这两种事件接管形式。 具体示例的实现能够查看工程源码,在synchronize.h头文件中,关上相应的宏定义开关,从新编译工程并下载到开发板即可。线程间同步的注意事项 在进行多线程间同步的时候,对于信号量,互斥量,事件集这三种线程同步形式,有以下一些注意事项:1.中断与线程间的互斥,不能采纳信号量(锁)的形式,应该采纳开关中断的形式。 2.资源计数类型的利用场景,少数都是混合形式的线程间同步,因为单个的资源解决存在线程的多重拜访,因而须要对资源进行锁形式的互斥操作。 3.在应用信号量的时候,应该要留神优先级翻转的问题,合理安排工作的优先级。 4.不能递归获取信号量,否则有可能会造成“死锁”的状况。 5.线程不能长时间占用互斥量,在取得互斥量之后,不能再更改持有互斥量线程的优先级。 6.不能在中断服务程序外面应用互斥量。 7.事件集仅能用于线程同步,不能用于线程间传输数据。 8.事件集不会造成队列,在革除事件之前,发送屡次跟发送一次都是同样的成果。 原文链接/;https://club.rt-thread.org/as...

March 12, 2021 · 1 min · jiezi

关于开发:『力荐汇总』这些-VS-Code-快捷键太好用忍不住录了这34张gif动图

之前写过三篇文章,播种了极其不错的浏览量与转发量: 你真的会用 VS Code 的 Ctrl、Shift和Alt吗?高效易用的快捷键:多光标、跳转援用等轻松搞定VS Code 中的 Vim 操作 | 无需批改 VSC 默认快捷键 | 罕用组合与逻辑跳转援用、禅模式...VS Code 中 11 个快捷键/操作,让你的效率与舒适度翻倍!一方面,我的确将 VS Code 作为本人的主力编辑器:近程操作时用、写笔记时用、写代码(C++/Python/JavaScript)时也用,我曾经具备了些许心得与教训;另一方面,本人也很喜爱积攒或浏览相干材料(比方韩骏老师的《Visual Studio Code 权威指南》),并且在实际与学习中做成笔记(比方录制gif)。 本文将汇总我录制的 34 张 gif 动图,为读者敌人举荐并整顿『远离鼠标,晋升效率』的 VS Code 快捷操作。 本文纲要: 6 个 Ctrl+Shift+Alt 组合8 个你可能不晓得的重要操作3 个乏味又通用的小众插件5+ 的 vim + vscode 操作6 个 Ctrl+Shift+Alt 组合CtrlCtrl 管制屏幕的挪动与光标的挪动。 Ctrl 加上左右键,以单词为单位跳转。 Ctrl 加上高低键,小幅度滚动屏幕(滚动一行)。 ShiftShift 相当于「拖动鼠标」,与方向键联合选中文本。 有了 Shift ,不再用鼠标拖动。 AltAlt 较为非凡。 Alt 与高低键联合,英文叫做「copy line」,相当于拖着这一行高低挪动。 ...

March 5, 2021 · 3 min · jiezi

关于开发:DDD上吊绳驱动开发开发要想不被吊死该如何自救-IDCF

话题缘起明天在DevOps案例深度钻研探讨群里,群友们围绕一种开发模式开展了探讨:DDD(Deadline Driven Development),期限驱动开发,大家仿佛更违心将其翻译成“上吊绳驱动开发”。 这种开发模式是说在接到新的需要后,给开发者脖子上加一根绳子,这根绳子会随着工夫收紧,如果规定工夫内没有实现开发工作,开发者会被“吊死”。 好吓人,开发咋还有绳命危险了呢....麻麻,我要回家! 下图是中英文对照。 “咱们始终在实践中探寻更苦逼的软件开发办法,继续加班的同时也帮忙别人加班...” what!“帮忙别人加班”这是什么神仙操作,这位翻译同学你! 另外,群友针对价值观有补充解释: 预算内,挑战预算内算优良,带buffer预算内算实现;范畴内,实现要害需要算实现,实现所有需要算优良;预期内,打算工夫内实现为优,不影响业务理论应用工夫为实现。“DDD 上吊绳驱动开发”的劣势尽管称其为“上吊绳驱动开发”有一些戏谑的成分,但其中体现的是一种“倒排期”的开发方法,在项目管理中列出每一个开发工作必须要实现的工夫节点,不影响下一个工作或其余合作人员的工作进度,“倒排期”开发在很多开发团队中都有利用,其劣势就在于: 1、须要自上而下的指标拆解,将一个整体的指标拆解为具体可执行的工作工作,这很像OKR工作法中的工作拆解思路,这样的益处在于每个人都很清晰本人当下要做什么,实现之后对下一个环节有什么影响,以及咱们最终要做什么,工作指标就是达成这个可预期的工作后果,这会让开发过程更加靠谱和高效。 2、明确的工作实现工夫和工作内容,让每个人都有清晰的工作指标,在麻利工作法里,咱们通常会用看板的形式来跟进要害工作的进度,只管在工作过程中有些需要会产生变动,但大家放弃一个高频的沟通会进一步升高项目风险。 3、有了明确的死线,或者说上吊绳勒紧的工夫当前,大家会更加专一,更少去响应一些无关的或非重要不紧急的需要,这会让每一个执行人员专一于手中的工作,而不会有过多的想法导致整个我的项目进度变得拖沓。 如何做到“DDD上吊绳驱动开发”如果咱们要在团队中去执行上吊绳驱动开发的办法,也就是给每一个工作确定一个实现的死线,须要做好什么前提呢? 咱们认为会有3个关键点: 首先,依据指标和估算做清晰的工作拆解。这里蕴含3个步骤, 一是对最终目标有一个清晰的意识,团队内通过头脑风暴的模式达成共识;二是做好需要治理和排序,砍掉不必要的需要保留要害需要,同时对每个阶段须要实现的需要做梳理;三是确定需要实现的先后顺序,依据整体我的项目交付工夫倒推做各工作的工夫排序。一个我的项目通常会波及到多个主线,梳理分明每个线程间的协作关系和流程,同时应用麻利小组的工作形式和指标拆解思路来保障工作的清晰、精确以及合作上的高效。 其次,及时沟通我的项目过程中的问题,始终保持最小化可交付的理念去推动。在工作执行和推动的过程中,经常会产生一些意外状况影响我的项目进度,基层人员有可能会把这个事件想得特地简单,那么作为推进者就须要放弃沉着思考,时刻以最小化可交付和最小化试验验证的理念来推动工作,防止产生甚至去满足有效需要。 第三,工作安顿要分为抬头看和低头看2个阶段。抬头看阶段是一个新我的项目的初始期,这是一个摸着石头过河的阶段,通向对岸的路有很多,但你不晓得你抉择的那个上岸的点肯定会有石头让你踩,这个阶段要算清楚咱们有什么,咱们能做什么,尽快尝试去往前走一步。 到了下一个阶段就须要低头看,晓得了哪条路有石头能够踩当前,就要找到一个最佳的上岸地点,排兵布阵地走过来,达到目标。 第三点在拆解工作和做工作排序时,两个阶段都要快,但不能乱,否则可能导致我的项目过程中呈现很多无奈实现或者有效的工作,节约死线内的工夫。 总结驱动开发工作效率晋升的办法有很多,除了明天探讨的DDD(上吊绳驱动开发),还有PDD(屁股驱动开发),TDD(踢人驱动开发),TPDD(踢人屁股驱动开发)MDD(骂人驱动开发)BDD(哔哔驱动开发)...你认为哪一种驱动开发的形式更高效呢?去留言区写下你的认识吧~ 起源:IDCF社区

March 5, 2021 · 1 min · jiezi

关于开发:URP从原理到应用基础篇

1.1 前言Unity目前曾经反对了将近30个游戏平台,这就意味着内置渲染管线必须同时反对所有平台,平台之间的差异性导致内置管线越来越臃肿不堪。引擎每次对特定平台的管线批改都必须思考其余平台的兼容性(必定会用到各种if else条件,或者宏预编译判断),内置渲染管线无奈对开发者提供一些定制化批改接口,一般开发者无奈去学习渲染管线,导致大部分开发者对这块常识都很匮乏,不利于个人成长。 Unity自2018推出SRP(可编程渲染管线),从它诞生那一天起就被贴上了高性能、高拓展性、高定制化的标签,这是具备跨时代意义的。Unity在C++凋谢出更底层的渲染接口是SRP的根基,持续对外开出C#接口让使用者能够充沛定制,这里的使用者也包含引擎开发者,将代码从C++中剥离到PackageManager中不仅能够对引擎做一个瘦身,如果呈现Bug也不须要从新公布引擎,只须要从新公布URP的Package包即可。另外,挪动端和主机芯片从设计上就截然不同,强行把它们揉在一起用一套渲染管线,无奈充沛兼顾性能与成果。在SRP的加持下Unity推出了面向通用平台的URP渲染管线,和面向主机平台的HDRP高清渲染管线,进一步让开发者对管线进行充沛定制与优化。 1.2 SRP简介为了让指标平台充分发挥性能与成果,Unity自2018版本提供了SRP全称Scriptable Render Pipeline(可编程渲染管线),Unity将C++调用渲染API (如:OpenGL ES)的接口尽可能做到浅封装并且对外开放C#调用接口,这样就能够编写C#脚本来管制Unity渲染的每一帧。SRP并没有间接提供相似对接OpenGL ES的接口,所以并不能随心所欲,有些货色仍然是做不到的。 基于SRP技术,Unity开发了URP(通用渲染管线)和HDRP(高清渲染管线),这样在性能高端的PC主机上能够应用更好的渲染成果。将来在手机上也能够反对HDRP,HDRP上的好成果也能够自行移植到URP,渲染管线是跑在CPU上的而非GPU,GPU硬件也有一套本人的渲染管线,两者是不同的。这两年手游上也有基于GPU Driven的渲染管线裁减技术的案例,有趣味的敌人能够去互联网上找找。 HDRP的指标是为高端平台,如主机、PC平台提供震撼的视觉效果,高端的成果必然对硬件的算力有肯定要求,它同时反对前向渲染和提早渲染技术,内置了大量3A游戏的渲染成果体积光、体积雾、大气散射、光线追踪、次外表散射和SSAO等,所用到的技术包含Visual Effect Graph特效编辑器、Shader Graph可视化着色器编辑器、Timeline、Cinemachine以及Post Processing Stacks后处理,根本是包罗万象。HDRP将来也会反对挪动设施,挪动设施也分高端机和低端机,在高端机或VR上也能够应用HDRP的一些高端成果。 Unity官网的数字人异教徒 URP的指标平台并不齐全是挪动设施,而是所有平台。最开始被称为轻量渲染管线--Light Weight Render Pipeline,简称LWRP。很多开发者就会有误会,LWRP是不是就意味着性能更强劲,其实这个论断不完全正确,甚至使用不当有可能还不如内置渲染管线。 起初Unity将LWRP更名Universal Render Pipeline,简称URP。自Unity 2021版本后,内置渲染管线将不再进行保护,将应用URP齐全代替它。市场上的开发者要想齐全切换URP可能还得一段时间,比方Asset Store上的插件,大量渲染教程,这些大多都还是基于内置管线的。 URP游艇反抗 URP提供的渲染成果也没有HDRP多,比方体积光、体积雾、大气散射、光线追踪、次外表散射等目前都没有提供,在新版本URP中曾经提供了SSAO和Shadow Mask性能。而且HDRP提供了成果也能够自行移植到URP中来, URP从设计上摈弃了很多内置管线的缺点,这也导致了一些本来内置管线有的货色却在URP上实现不了,我置信随着版本的迭代,这些都不会是问题。最重要的是URP和HDRP的C#局部代码都是开源的,开发者也能够基于SRP实现一套独有的渲染管线,这样性能与成果就能够达到最佳均衡。 在正式进入学习之前咱们先来致敬一下Unity的首席图形渲染大佬Phli_lira(费利佩·里拉),他是URP和Shader Graph的作者,我在学习URP的过程中谷歌搜寻问题,每次都能看到他的具体答复,在论坛里他和大量开发者交换,解答了很多人心中的纳闷。 费利佩·里拉(图片来自领英) 大佬本人开源了一套本人基于URP的工程: https://github.com/phi-lira/UniversalShaderExamples 这个例子非常适合初学者学习,它并不像Unity内置的Lit.shader那样互相关联了一大堆文件看起来会十分吃力,而是从少到多一点点加的。都是从最根底基于URP的Shader拓展进去的,包含自发光、暗影、MatCap环境反射、屏幕空间UV、Lit PBR、车漆。 还要感激另外一位大佬,就是From Built-in URP这篇文章的作者,URP在文档中并没有具体阐明着色器在Built-in管线的函数如何1:1替换成URP管线的函数,这篇文章作者写得十分分明,在移植管线的时候帮了咱们大忙,不晓得为什么这篇文章目前网上曾经找不到了(知乎上能找到有人翻译的文章), 我过后在给组员讲URP的时候有保留过一份,刚好在这里也在分享一份离线的。 2020年11月我在北京UUG上分享了案例《SRP到URP从原理到利用》,惋惜过后没有录像,有趣味的小伙伴也能够返回UWA学堂查看下载相干PDF。 《URP从原理到利用——根底篇》全文可戳此浏览

February 26, 2021 · 1 min · jiezi

关于开发:能力识别模型

背景这些年始终在做对外的麻利开发培训,也就是针对其余企业的开发人员进行麻利全栈开发培训,通过造就之后冀望这些开发人员能疾速胜任工作。 然而因为大部分的培训最终产出物可能都是一些评估或者一个分数,它并不能很好的反馈一个人的能力状况,也不能帮忙培训者或者企业更好的辨认每个人的能力。 因而,通过屡次迭代,演绎总结出了一个针对开发岗的能力辨认模型,目标是可能帮忙培训者和企业更好的辨认他们的能力散布。 能力辨认模型是什么能力辨认模型是一个蕴含4种能力,32种形象行为的一个模型。 用于辨认开发岗的开发人员的各纬度能力散布。 4种能力别离是: 技术能力学习能力理解能力沟通能力每种能力对应了8种形象的相干行为,共32种行为。 上面就开展具体说一下。 技术能力顾名思义,技术能力就是指和开发技术相干的各种能力。 它蕴含的上面8种形象行为指的是他/她会在过程中应用到或者被察看到能体现这些行为的facts或事实。 1 - 验收思维 验收思维指的是做事件或者编码时能思考到如何验收。 比方写测试是一种验收,tasking时表明输出和输入是一种验收。 2 - 代码设计 代码设计指的是写代码的时候有代码设计。 比方应用设计模式,比方在Java外面应用stream API,比方有良好的OO设计,比方恪守了SOLID准则。 3 - 独立编码 独立编码指的是能独立编写代码。 比方独立实现Java编程,独立实现react编程,独立实现python编程等。 4 - 整洁代码 整洁代码指的是编写的代码满足clean code。 比方没有显著的坏滋味等。 5 - 实现工作 实现工作就是指的能按时合格实现工作。 比方按时合格实现编程练习,比方按时合格实现非技术的画图工作等。 6 - 解决问题 解决问题指的是能解决遇到的各种问题,包含技术问题,非技术问题等。 比方能应用debug修复遇到的bug,比方能通过看日志或者搜寻等解决遇到的技术问题。 7 - 利用资源 利用资源指的是能利用所有资源来实现工作。 比方向教练求助,向同学共事发问,上网搜寻,应用工具等都属于利用资源。 8 - 摸索新技术 摸索新技术指的是本人能摸索一些新的技术,包含框架,工具,算法等。 比方学习了某种新算法,钻研了某个新工具或者新框架,比方没接触过Jenkins但本人钻研了如何应用Jenkins,比方没写过python但学习python解决了某个问题。 学习能力顾名思义,学习能力就是通过一直学习来欠缺本身的能力。 它蕴含的上面8种形象行为指的是他/她会在过程中应用到或者被察看到能体现这些行为的facts或事实。 1 - 迭代思维 迭代思维指的是做任何事件都能小步快跑,迭代式的实现工作。 比方写代码的时候可能小步提交,比方做我的项目时能迭代开发。 2 - 遵循最佳实际 遵循最佳实际指的是做任何事件都能遵循最佳实际。 比方遵循重构的最佳实际,比方遵循code review的最佳实际,比方遵循TDD的最佳实际,比方遵循站会的最佳实际。 3 - 从别人身上学习 从别人身上学习指的是能学习别人的优良的技术、习惯和思维。 ...

February 26, 2021 · 1 min · jiezi

关于开发:公司的技术总监不写代码凭什么拿这么高工资

国外常常把技术团队负责人叫做 Engineering Managers,国内就形形色色,比方 CTO,技术总监,研发总监,技术经理,技术组长等等,差不多都是技术团队负责人的意思,只不过团队大小,各不相同。 有人问,技术团队的负责人很少写具体代码,为什么还很牛逼的样子,拿这么高工资? 因为程序员的外围能力是写代码的能力,而技术总监的外围能力是技术判断力。简略来讲,就是判断一个我的项目、一个零碎架构、某个技术方向,是否合乎企业以后现状,是否对企业的将来产生价值。 他们所做的技术判断,给公司带来十分高的价值。比方,阿里云创始人王坚博士,在所有人拥护的时候,他保持云计算是将来,帮忙阿里提前布局云计算,为阿里成长为万亿商业帝国,立下汗马功劳。这就是技术判断力,给企业带来的微小价值。 当技术团队倒退到30人左右,有了多条外围产品线、有了多个技术经理时,就须要一个技术总监了。 图源网络技术总监,作为领域专家,站在更高的层面思考技术如何建设壁垒,构建技术竞争力。逐渐开始建设公共技术平台,协调多条产品线在对立的技术平台上疾速迭代,让产品线跑得快、跑得稳。 技术总监,在畛域内有多年积淀,来自出名互联网企业,可能把技术团队带上一个新的台阶。技术总监,更多是做技术判断了,也有些技术型的技术总监依然会写些外围代码、做架构设计。 回到技术总监要不要写代码这个话题,其实也是须要看公司是什么样的背景、处于什么样的阶段、技术总监管理人员的规模来定,有3种状况须要写代码。 第一种,技术驱动型的技术总监须要写代码。很多互联网公司产品,齐全是依赖技术来构建的,公司的命根子都是技术,那么这个技术总监就肯定要参加到外围代码的编写中。 第二种,初创技术团队的技术总监须要写代码。简直所有的守业公司在刚开始的时候,就技术的须要水平是相当紧迫的,所以这个期间的技术总监,肯定要亲自参加其中,确保外围零碎性能不会呈现问题。总的来说,除非是大型技术团队,否则倡议总体还是须要参加到外围代码的梳理中,须要对系统的各个个性了然于胸,晓得零碎很可能呈现的问题点,在呈现问题的时候能够疾速定位解决。在架构设计、外围代码评审、代码优化层面来多做工作。因为如果技术总监齐全脱离代码编写工作,容易导致团队技术失控。

February 23, 2021 · 1 min · jiezi

关于开发:分布式-DBLE-网络模块源码解析三

作者:路路酷爱技术、乐于分享的技术人,目前次要从事数据库相干技术的钻研。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 前言在前两篇文章中,次要讲了网络 IO 的基础知识,以及 DBLE 网络模块的源码剖析,本篇作为 DBLE 网络模块源码解析的第三篇,也是最初一篇,次要对 DBLE 网络模块常识作个简略概括及总结。 DBLE 网络模块次要波及类图咱们先来看下网络模块波及到的次要类图: DBLE 网络模块波及到的次要类图如上图所示,它们的次要性能总结如下: NIOAcceptor:负责承受客户端连贯申请;NIOReactorPool:负责创立及获取 NIOReactor 对象;NIOReactor:次要通过外部类 RW 来解决连贯的读写事件,外部类 RW 中应用 Selector 实现 IO 多路复用,即可能解决多个连贯的读写事件;FrontendConnectionFactory:负责创立前端连贯;FrontendConnection:前端连贯类;SocketWR:负责单个连贯的读写操作。简略来讲,就是 NIOAcceptor 负责接管客户端连贯申请,而后创立前端连贯 FrontendConnection,NIOReactor 则负责监听前端连贯的读写事件,如果有读写事件产生,则交给 SocketWR 进行理论网络 IO 数据的读取,读取到数据后续天然就是进行解决了。整个网络 IO 读写流程大略如此。 DBLE 网络模块概括及总结对于中间件来讲,网络 IO 解决既是关键点,同时也是难点,高性能网络 IO 解决远比设想中的难。 DBLE 的网络 IO 模块是通过原生 JDK 纯手写的,抛开应用网络 IO 框架,更可能让咱们看到网络 IO 解决的实在的、底层的过程。当然并不是说网络 IO 框架不好,理解了网络 IO 的底层原理,再看任何网络 IO 框架,你都能知其所以然,这比你单纯的会用框架,必定是不一样的。 本系列文章总共有三篇,一篇原理介绍,一篇源码解析,最初一篇概括总结,通过本系列文章,心愿不光光帮忙大家理解到 DBLE 的网络解决逻辑,更可能帮忙大家理解更个别的网络 IO 常识,后者对大家的工作帮忙必定更大,最初心愿大家可能有所播种。 相干举荐:分布式 | DBLE 网络模块源码解析(一):网络 IO 基础知识 ...

February 23, 2021 · 1 min · jiezi

关于开发:对DevOps的九大误解你是否也中过招

【摘要】 只管大多数组织曾经胜利地部署了DevOps来实现必要的指标和目标,然而对于这种办法依然存在一些误会,本文将列举九大误会开展形容。DevOps是开发和运维的联合,有助于集成和自动化测试过程以及部署存储库,还提供了透明度以及灵活性。DevOps的指标如下: ●更快的上市工夫(TTM)。●缩小各种修复之间的前置工夫。●进步部署频率。●更快的复原工夫。●升高新版本的失败率。许多商业部门的领导者都晓得,进步营销速度是一种生存技能,而不仅仅是指标。管理人员,特地是IT行业的管理人员,曾经感触到了以更快的速度和更无效地执行流程以及做出更好的业务决策的压力。只管大多数组织曾经胜利地部署了DevOps来实现必要的指标和目标,然而对于这种办法依然存在一些误会。以下是对于误会的一些纠正: DevOps不是一套自动化工具 DevOps不是一套能够购买的自动化工具。对于如何部署和监督应用程序而言,这是一种不同的思考办法。合作、继续交付、继续测试和继续集成不是实现工具。相同,它们是须要在我的项目中采纳的实际。只管的确有很多工具,比方禅道、Git Hub和Docker,它们通常都有助于DevOps实际的实现,然而只有当团队成员晓得如何优化并将它们引入到工作办法中时,它们才是无效的。 并不是每个我的项目的程序都要扭转 为每一个新我的项目从新设计程序的概念与实现DevOps的理念南辕北辙。领有一个能够依据须要轻松批改并利用于各种我的项目的繁多过程集,为可预测性留出了空间。在这种办法中,每个人都相熟本人的工作角色以及他们须要如何操作流程。 DevOps实际在实质上须要具备适应性和灵活性,以便将它们实现到服务器配置、异样测试、部署周期和加强开发团队的实力中。这只有在通过反复来让团队彻底了解整个过程时才有可能实现。 不只实用于小型公司或初创公司 包含Netflix、NASA、亚马逊、谷歌、星巴克、领英、通用电气、塔吉特、爱彼迎、HubSpot、耐克等在内的当先组织都在实际DevOps。它是为每个人开发和应用的,并不限度行业和公司的规模。每个企业都心愿在其周期时间或上市工夫内进行所需的改良。DevOps能够帮忙企业定期进步上市工夫,而且收益微小。这就是为什么大多数公司都施行这种办法。一家电子学习机构Intellipaat的首席执行官示意,他的DevOps认证我的项目为从小型到不同规模的大型公司提供服务。 DevOps不是麻利的替代品 与大多数理念不同,DevOps并没有取代麻利,能够将其视为麻利的连续或麻利激活器。在DevOps的帮忙下,能够实现继续部署、继续集成和继续交付管道的继续交付。此外,它容许在每次迭代完结时计算潜在可交付的代码。因而,DevOps和麻利的合作提供了最佳后果和体验。 DevOps没有勾销IT运维 依据无运维(NoOps)的概念,IT行业将变得十分自动化,不须要任何外部团队来管理软件。此外,人们置信微服务会使DevOps操作过期。然而,无论服务变得如许自动化,运维总是须要的。只管这些运维的工作可能会有一些变动,但它们在DevOps中依然具备重要意义。 DevOps并非只为开源软件开发的 通常,DevOps是在应用LAMP(Linux、Apache、MySQL和PHP)堆栈以及各种开源工具(如Jenkins、Docker、Ansible、Git、Chef、ELK、Nexus、Sonar、Zentao、Nagios和Gerrit)的组织中实现的。然而,取得一个胜利的DevOps后果并不依赖于所应用的技术。许多组织应用COBOL、Microsoft.NET、大型机汇编代码、SAP以及嵌入式零碎。 它能够兼容ITIL ITIL代表信息技术基础设施图书馆。它由IT服务治理(ITSM)的具体实际组成,旨在使各种IT服务与各自的业务需要保持一致。DevOps与ITIL兼容,但各种ITIL流程都是齐全自动化的,以反对与DevOps相干的高部署频率和短交货工夫。这解决了与配置和公布治理过程相干的许多问题。 DevOps不等同于继续交付 只管软件的继续交付表明企业曾经实现了DevOps的重要组件,但它不是一种二元关系。这两项服务并不能齐全等同,它们必定是不一样的。DevOps的次要关注点应该是改良工作文化,保护基础设施和软件。此外,它还必须反对销售和市场部门。 DevOps不是来到云端就不能运行 大多数人把DevOps称为云。云为测试人员和开发人员提供了动静的基础设施资源,以疾速取得测试环境,而不是期待手动实现申请。然而,这并不意味着须要用于DevOps的云。如果领有高效的流程来获取能够在应用程序中部署和测试更改的资源,那么也能够采纳这种软件。 本文分享自华为云社区《对DevOps的九大误会,是时候纠正了!》,原文作者:陈琦聊测试。 点击关注,第一工夫理解华为云陈腐技术~

February 22, 2021 · 1 min · jiezi

关于开发:关于开发把时间都花在编码上还要写测试么的讨论-IDCF

前 言“如何保障在开发进度很缓和的状况下,开发人员投入足够的工夫写测试用例,而不是把工夫都花在编码上呢?” 这个问题是一位共事问的。 我一开始的反馈如同注释中某位小伙伴的答复一样“你怎么晓得是在编码,还是在写BUG?”。然而认真想想,这应该属于比拟广泛的问题,所以拿进去发在IDCF的群以及朋友圈。一时引发了泛滥探讨,看来这也是大家比拟关注的共性问题。 探讨很冷落,内容也都特地好,根本各类型各方面的观点也都比拟全了,简略整顿总结如下,咱们先看小伙伴们的探讨,而后再发表本人的认识。 这不是单点的问题,有必要急躁的把各方面的论点都看一下。同样的,每个单点的回复都不会残缺,也没必要针对个别论点纠缠。 自己就不做过多评论了,欢送大家留言进一步探讨~ 从开发测试分工动手(按开发做测试的水平排序) 开发进度很缓和,不把工夫用在代码上,还思考测试的工作,是不是不太好?开发把测试活儿干了,那测试干啥?写代码么?测试负责品质监查。为啥肯定要开发写测试用例呢?先人工自测下,后补doc不行么?不论进度是否缓和,开发都须要调试代码,都须要花工夫定位缺点,以及修复缺点,和验证缺点是否真的修复了。失当的单元测试,能够很大水平上改善以上的工夫。单元测试就是开发的一部分,排除进去算进度自身就是谬误的。开发先自测,写不完换测试。聪慧的孩子都会把编程的一部分工夫用来做单元测试。测试用例要看是什么测试用例吧,例如单元测试就是开发写的,其余则是由测试人员编写的。单元测试不是开发写谁写,让测试把开发代码看完了解了再写么?“据书上说,测试前移能极大缩短修复BUG工夫,要不咱试试?”TDD不是标准答案吗?结对编程,一个写性能,一个写测试。测试笼罩不到,CI挂掉,提不了PR。代码评审的时候必须提供对应的测试用例,否则代码不予合并到公布分支。没有测试用例,如何及时反馈代码的正确性?代码要的是数量,还是品质?如何保障开发人员投入足够的工夫写性能,而不是把工夫花在写BUG上呢?这样不可能做到高质量,这种问题,发问的人本人也很分明,不用搭理。以上倡议很多都与测试的实际相干,包含门禁等,不过执行的是否到位,放一张茹炳晟老师分享的资料供自检~ 从组织和流程动手产品生命周期阶段而定,如果晚期,或者产品自身生命周期就很短的,其实是不是不肯定要写那么多单测。开发能保障冒烟测试全通过,我感觉就OK;能够考核开发的一次性提测通过率。冒烟之后,就是提测,测试同学测出bug,开发修!如果Bug可控,其实ok;如果Bug太多,减少冒烟比例。如何在业务和工夫缓和的状况下,进行测试的安顿。要分两个维度来看,第一个是看产品的性质。如果产品自身是疾速迭代的例如2C端的,那么咱们就做疾速交付,能够通过灰度来做。换句话讲,让客户帮咱们做2C端的测试,就算有问题,对整个的影响和危险是可控范畴的;如果有问题,能够通过疾速上线新版本进行修复的。还有一种,是相似金融、航空航天、医疗等,对人的生命安全或金融平安有重大影响的,这种就不实用了,尽可能在研发环境里把问题找进去,要把资源和工夫做一个均衡。如果有危险,要在产品、测试、研发以及老板之间把这个危险裸露进去,发版的责任大家共担。工夫紧是伪命题,不信你看看大家每天仍旧有工夫聊微信、刷微博。所以问题的外围在于:开发人员为什么非要写测试用例?对他们有什么益处?不写有什么损失?大家有这样的痛点和诉求吗?如果不能解答这个问题,那就没必要写,即便以政治工作强压,只能让大家怨气加深,各种糊弄,当形式主义去实现。鸡贼点:或者能够在DevOps平台上减少一个相似门限提交的卡点,去尝试用工具扭转一下大家的行为作为尝试,看看成果再做决定。把怨气引到工具上,让工具唱红脸,人唱白脸,加以疏导,去摸索适宜的“平衡点”。如果存在甩锅,阐明动到一方的利益了,那么就要反诘施行方,你晓得大家的外围KPI是什么么?各方做此事的利益共同点在哪里?不然为什么大家“浪费时间”陪你玩?搞不定这个问题,最初实施者本人就会变成“人心所向”的瓶颈点。什么工具都打不通“部门墙”,唯有“人”!这个“人”要有足够的信息量,理解各角色、各部门的外围KPI,当然获取信息的路径能够多方面,比方在酒桌、闲聊、八卦等各种形式。用“信息差”发明“影响力”,谁信息多,谁有主导权,而后找大家“利益共同点”去疏导大家共识,让做这件事的每个人都能从中播种实打实的益处,如此能力跨角色或跨BU的把大家凝聚在一起。从需要和工夫动手把测试也写在需要外面。应该要解决需求方的焦虑,老板也有压力。如果工具、资源、流程不行那还好说,减少资源、改良工具和流程。作为执行方要管制老板的预期。如果不能delay的话,就减scope。凭什么啊!减需要啊!让开发进度别那么缓和。我始终感觉麻利就是用来治理一些过于贪婪的老板或甲方的好工具。双周迭代的话,开发编码工夫都紧凑,没工夫写用例,除非人员很短缺。进度缓和,又要有足够工夫写测试?自身两个就是相悖的,看写代码人的集体能力了。如果不能为开发团队争取来足够的工夫,又不违心砍性能,那就做完我的项目优先级最高,性能交付了再说。需要人员说:啊,都急着要产量了,还测什么~从零碎和绩效动手我司没有测试人员,在麻利的模式下BA能及时赶出下个冲刺的需要就很nice了,开发人员须要承当测试的工作,然而没写测试用例,会先对着需要验收规范写开发思路,而后开发本人冒烟后让BA进入测试,BA会小本本记录SIT阶段有多少bug,UAT阶段有多少bug,以及上线后是否呈现生产环境bug。考核的时候,以单个冲刺间开发人员的bug率进行交付品质打分。“打分是矮子里选高个儿么”?有一个红线SIT:多少个bug以内,UAT多少个bug以内。触碰红线的绩效就别想多好啦。被其他人测出千行代码的BUG数目,间接和开发的奖金成反比,有点邪恶~如果工夫线往前延长,计划多。如果只是基于以后工夫点,这个好难,放弃在测试用例上投过多工夫是一种抉择,只关注外围、频发业务。另外,尝试把测试引入救急,转变下原有形式。这样不是最佳计划,只是应急措施。拉长工夫线,把上线回滚危险和单位上线时长做个回归剖析,应该能够算进去花多少精力实现测试AI化。领会过单元测试的会被动去写,但也是笼罩局部要害办法;晋升覆盖率还是要靠绩效辅助。如果一个公司始终属于紧急状态。那这个公司预计也活不短暂了。向领导反馈,如果说现阶段软件品质要求不太高,反而交付工夫是最重要的状况下,能够暂且就义品质,前面再还债。如果测试用例是交付物中必须的,那会有人写,毕竟是上线必须的条件,加班也得写啊。往往就是因为可有可无,反正不写也不影响零碎上线,那必定先紧着上线要做的事件实现啊,其余等当前再做,而后上线后感觉反正都上完了,其余做不做都一样。就是纯正为了让开发写的话,不如就成心找他们麻烦,开发完代码之后鸡蛋挑骨头全算BUG,博弈一下很快预计就写了...这个开发写,实质上相似编写实现的定义。讲个故事,没过生产跳伞包的厂家合格率永远无奈到100%,起初每次跳伞都带上几个厂家生产人员,而后,后果大家都晓得了,合格率马上100%。架构足够优良,这测试代码的工夫就不会花太多。业务代码也是一样,花太多工夫写业务代码,阐明架构优化还不够。性能精简,构思好代码逻辑再入手。从能力和认知动手如果大家都认可写测试用例的价值,工夫缓和的时候,问题就变为如何高效写测试用例,否则是不是不宜在进度缓和的时候做强要求?不是不给写测试的工夫,而是不给学习测试的工夫。从后续发现的缺点看他们交给测试人员时的代码品质,怎么保证质量他们本人决定。个性团队外部小范畴沟通,应该还好,比拟真正的指标就在眼么前儿。另外,判断什么时候该写,该怎么写测试用例,这个能力自身的造就也很重要。有些时候感觉没用所以不违心写,其实是因为不会写胡写才没用。总 结这是一个系统性问题,任何单点的优化,都无奈解决全局的问题。 “如何保障在开发进度很缓和的状况下,开发人员投入足够的工夫写测试用例,而不是把工夫都花在编码上呢?” 的问题,提问者也未必是不提倡开发写测试用例,问题所处的背景须要进一步探讨,才有可能给出相干倡议。 “开发进度很缓和”:为什么会缓和?哪些时候不缓和?如何能够不缓和?“投入足够的工夫写测试用例”:目前投入多少工夫?都写哪些测试用例?你认为多少是正当的足够工夫?如果有足够的工夫,你感觉开发人员写哪些测试用例?为什么?“把工夫都花在编码上”:代码品质如何?如何掂量?呈现过哪些品质问题?回溯来看能够做哪些改良?其余相干的问题:零碎是什么类型?缺点目前如何散布的?上线呈现缺点如何修复?会有哪些影响?如此相干的问题之后,联合大伙的探讨,大略答案也就跃然纸上了。 你有什么话题特地想探讨的?留言给冬哥,2021年,咱们一起精进。 作者:IDCF社区 冬哥

January 26, 2021 · 1 min · jiezi

关于SegmentFault:2020年中国DevOps应用发展研究艾瑞咨询报告总结

2020年12月,艾瑞征询公布《DevOps利用倒退钻研》,对业内企业进行调研,梳理国内DevOps历史脉络、倒退现状及瞻望,内容涵盖DevOps理念解析及行业利用、中国DevOps市场倒退情况和中国DevOps利用倒退瞻望。 DevOps概述DevOps企业实际:因为DevOps的实际远不仅限于装置软件工具,其在企业外部的落地实际须要经验简单的转型过程。咱们认为DevOps的成功实践须要企业工程解耦化、流程协同化和治理颗粒化的扭转,要走过从资源整合到自助服务的五个步骤。在这个过程中,企业和团队须要更多地关注治理形式和文化适应性,引入业余机构的征询和培训服务可能无效缩小DevOps转型过程中的摩擦老本。DevOps市场现状:早在云计算诞生之前DevOps未然存在,长期以来DevOps实际应用的软件工具以收费的开源软件为主。尽管如此,一体化的DevOps平台正在成为寰球范畴内的DevOps发展趋势,国内企业通常采纳一体化平台+开源软件的形式构建本人的DevOps体系。2020年国内DevOps服务的市场规模达到27亿元,将来5年的CAGR将超过25%,市场发展前景良好。DevOps利用瞻望:DevOps面对的企业文化上的敏态转型以及其所应用的一直优化的开发/运维软件都决定了DevOps不会成为一种墨守成规的工具,云原生更是为DevOps大展身手提供了广大的平台。DevOps将会在自动化、数据化、一体化和智能化方向上一直自驱倒退,DevOps与人工智能、无服务器和安全工程的交融倒退将会为DevOps注入新的生机和可能性。 企业为什么要引入DevOps?1.IT人才市场供不应求 企业需寻求内生路径以增强IT部门运行效率2.开发和运维部门在工作指标上面临一致,难以无效沟通3.瀑布流式开发流程僵化,不利于效率的晋升,逐渐向麻利转型4.IT部门治理透明度低、难度大,IT业务的复杂性和专业性对领导层治理造成考验 DevOps理念和工具在哪些行业有所利用?1.传统行业:数字化转型捷径DevOps助力传统行业稳步走上云原生数字化之路2.科技行业:软件工程新纪元DevOps赋能科技行业迈入软件工程高效阶段 DevOps为企业带来的价值工作效率及产品质量失去进步,量化指标还有优化空间。 DevOps软件工具的现状市场规模:将来5年DevOps市场复合增长率将超过25% 随着互联网转型的深刻,目前各行业的头部企业根本都曾经开始了DevOps转型实际,并造成了良好的带头和示范作用,将来数年DevOps工具将持续向企业浸透,并保持稳定的市场规模的增长。预计2020年年底DevOps市场规模将达到27亿 元,5年之后这一市场将增长至83亿元,复合增长率将超过25%。值得注意的是,DevOps实际中所应用的大量软件工具为收费的开源软件,并不间接带来市场规模的增长,前述市场规模次要包含DevOps云平台(包含私有云和公有云)及多数免费软件产生的市场价值;其次,互联网和IT是在DevOps畛域投入最多的行业之一,然而互联网和IT企业在这一畛域经常是以“自产自用”的形式构建外部DevOps工作框架(如禅道项目管理软件配合自研的禅道ZTF及Zendata进行自动化测试、继续集成),从而在交易环节对DevOps市场的奉献远不及其理论应用规模。 一体化趋势:“一站式”能力是软件研发平台产品的广泛倒退方向;“云平台+开源软件”是最支流的DevOps构建办法;一体化DevOps市场拓展仍期待头部企业的示范作用。 成熟度状态:容器技术推动DevOps实际,大多数企业实际获得了功效;征询与培训服务在DevOps实际中的作用不可漠视;DevOps的进一步深入仰赖软件行业的全面生态交融。 倒退瞻望:DevOps——一直自驱与提高的IT文化:自动化、数据化、一体化、智能化是将来DevOps的倒退方向 Serverless + DevOps:以底层资源的智能托管整合DevOps的运维工作 无服务器架构外围是将服务器等底层资源的配置和保护工作最大水平地交由云服务商托管,使得使用者可能专一于无服务器利用的运行。对于软件开发者而言,这一架构给予了他们更加专一的工作环境,可能进一步提高工作效率、升高工作摩擦。同时,从软件生命周期来看,传统的软件运维分为对运行状态即业务流程的运维以及对底层基础设施的运维。Serverless的倒退有心愿将基础设施运维的累赘从用户手中分流,二者的联合无望给IT运维行业的格局带来粗浅的扭转,通过增强IT运维职能划分和主动响应来缩小IT部门的运维老本。 AI + DevOps:以动静优化的流程和规定赋能DevOps的麻利思维人工智能与运维工作的交融被称为“AIOps”,其外围是冲破现有的以固定脚本设置规定来对系统运行状况进行监控的传统模式,将机器学习算法引入运维规定的设置,从而对不同企业、不同软件的运行智能生成更有针对性的运维规定,进步问题辨认的精准度有有效性,进步运维服务的品质并升高其老本。而在开发端,人工智能的次要角色是通过充分利用大数据推导智能算法提供更加优化的部署、交付和测试计划,进一步缩小人工参加和手动进行的环境,进步准确性和效率性,国外已有公司如Lambdatest将人工智能算法融入到测试过程中,以进步测试效率、减速软件开发过程。Security + DevOps:以有机内生的平安办法保障DevOps的稳固高效 在软件开发实际当中,传统的平安流程往往因为跟不上频繁公布和更新的步调,从而成为制约DevOps流程提速的短板,或是间接被研发人员跳过以谋求麻利效率。DevSecOps的理念是将平安防护流程有机地融入传统的DevOps流程中,通过自动化、智能化的办法使其成为软件开发和运维中的内生局部,以对立的流程实现对平安防护的兼顾。在云原生时代,安全策略在寰球范畴内受到的器重越来越高,软件开发内生安全性将成为评估企业DevOps成熟度程度的重要指标。 数据起源:艾瑞征询《2020年中国DevOps利用倒退钻研——艾瑞云原生系列报告(二)》https://www.iresearch.com.cn/...

January 20, 2021 · 1 min · jiezi

关于开发:2020DevOps状态报告变更管理

如果你的公司还没有走向平台化,当初依然能够是很大的飞跃。您依然能够通过解决公司的变更治理流程来放慢软件交付。在本章中,咱们将钻研咱们在公司外部所学的变更管理模式。咱们将向您展现什么是无效的,什么是有效的,以及如何利用DevOps准则将变更治理转化为无效的、使能的流程。 在过来的十年里,咱们曾经看到DevOps的实际颠覆了软件公布团队的工作形式。以下是最显著的变动。 “问题自身并不会扭转,因为扭转始终在产生;问题是在变动来长期无奈应答。” Kent Beck《解析极限编程:拥抱变动》即便咱们看到交付团队胜利地转变了他们的思维和实际,但要在一个大型组织中扭转积重难返的构造和流程依然要艰难得多。变更治理就是最难扭转的过程之一。转向一种新的做事形式须要领导反对、组织纪律和跨组织各层的大量单干和合作。然而,在大多数大型组织中倒退起来的大型遗留环境并不容易被拆分和从新设计。它们通常由许多不同的团队保护,每个团队都领有技术堆栈的一部分。了解工作的团队通常不足批准本人所提变更的权限;相同,变更批准常常被调配给脱离实际工作、理解不够深切的委员会。所有这些层面的存在是因为大型遗留环境是组织的次要业务所在。因而,任何变动都会让人感觉有危险,而且有大量的流程和官僚作风,让人感觉是在爱护企业的平安。可怜的是,所有这些过程都妨碍了组织的倒退。他们根本无法疾速公布软件——无论是面向内部客户还是外部客户——以满足业务需要。同时,那些使他们的变更治理更无效的竞争对手可能疾速而重复地公布,使他们排在后面。 DevOps演进和变更治理有效性咱们想看看变更治理的有效性是否与DevOps的倒退相干。为了掂量改革治理的有效性,咱们从以下三个维度察看: 施行成功率。咱们察看了变更失败率和部署频率。现实状况下,企业应该可能更频繁地进行改革,从失败中迅速复原,并从中吸取教训。效率程度。咱们想晓得扭转的效率有多高治理过程基于以下内容:•不到两周的强制期待期•更改只需一次批准•更改被正确实现,不须要撤销•由具备适当技能的人批准,从而做出正确评估•记录更改所需的工夫很少绩效情绪。作为对每个受访者所在组织的主观评估的代理,咱们制订了该指标。咱们询问受访者他们公司的变更管理程序是否:•升高危险•缩小与服务事件相干的停机工夫•提供对组织有用的信息•确保与适当的利益相关者共享常识和信息•放慢业务需要的变动速度•依据评估的变更危险等级,提供适当级别的审查和批准这三个维度——施行成功率,效率程度和绩效情绪——形成咱们的变更治理有效性的度量。 咱们发现随着组织倒退他们的DevOps实际,变更治理的有效性减少了。尽管差别不是很大,但在统计上的体现是显著的。 变更治理的办法为了考察改革治理,咱们向受访者询问了他们在工作场合的一些不同做法。这些能够分为两个局部:变更审批流程和变更实现的自动化水平。可分为四种群体:运维成熟。高水平的过程和自动化。工程驱动。高度重视自动化。以治理为核心。高度重视人工审批,而不器重自动化。长期型。不器重过程和自动化。 是什么驱动着改革治理的有效性?当从总体上看改革治理的有效性时,会发现工程驱动的公司具备最高程度的变更治理有效性,长期型公司因不足流程而成功率居于第二,剩下的两组重大依赖正统的认可,在有效性上得分不高。 咱们的数据揭示了一些对于影响变更治理的有效性和效率: 正统的批准会升高效率;自动化使团队对变更治理充满信心;授予权限会带来更高的效率。

January 13, 2021 · 1 min · jiezi

关于开发:用了这个评估优化LiteOS镜像利器我有点飘

摘要:本文会给大家介绍下LiteOS Studio的镜像剖析工具,这可是一个评估、优化镜像文件RAM、ROM占用大小的利器。大家都晓得嵌入式开发板因为受老本限度,芯片的RAM、Flash等硬件资源无限,比方有些低成本的开发板只有内置的64KB ROM、20KB RAM。在丰盛性能个性编程时,一些看似有害的扭转,都可能导致编译出的镜像收缩,超出开发板的资源限度。对于硬件资源绝对拮据的开发板,正当的镜像大小布局,也会晋升性能。本文会给大家介绍下LiteOS Studio的镜像剖析工具,这可是个评估、优化镜像文件RAM、ROM占用大小的利器。 开发环境筹备后期的系列文章,咱们把握了如何装置LiteOS Studio,如何新建STM32F769IDISCOVERY和Qemu realview-pbx-a9工程。这次咱们以STM32F429IGTx开发板为例,创立工程的形式是一样的,开发板抉择STM32F429IGTx即可。镜像剖析个性对任何LiteOS工程都是实用的,咱们只是以该开发板为例。工程创立结束后,执行编译,输入如下: 终端控制台输入显示编译胜利了,可执行文件Huawei_LiteOS.elf对应的text段为74774 bytes,data段大小1444 bytes,bss段13080 bytes,dec示意后面三段大小的共计,为89268bytes。这些text、data、bss数据代表什么?有什么意义?咱们持续,后文中会具体解释。 LiteOS 镜像剖析个性点击LiteOS Studio工具栏的调测工具Debug Tools按钮,关上调试工具,抉择镜像剖析,这就是本文要给大家介绍的LiteOS Studio的镜像剖析工具。填写可执行文件门路、Map文件门路等,如图: 点击确定按钮,会主动关上镜像剖析窗口。蕴含内存区域、详细信息、文件大小、模块大小等4个选项卡。咱们顺次演示如何应用。 内存区域内存区域页面评估剖析LiteOS开发板工程对内存的细分应用状况。对于STM32F429IGTx开发板,显示的内存区域region蕴含FLASH、RAM、CCMRAM,展现的信息蕴含每个内存区域的名称、起始内存地址、总大小、闲暇大小、已用大小,应用比例。在这个内存区域页面,除了数值展现剖析,还提供饼图能够宏观的评估每个区域的应用、残余状况。如下图所示,FLASH总大小 1024Kb,RAM总大小192Kb,对FLASH、RAM的使用率较低,刚刚超7%。对于CCMRAM更是没有应用,CCM(Core Coupled Memory)是给STM32F4内核专用的全速64KB RAM。 详细信息持续点击详细信息选项卡关上镜像剖析详细信息页面,该页面展现每个内存区域蕴含的内存段section,内存段蕴含的符号symbol的详细信息。 比方FLASH上面蕴含.isr_vector、.text、.rodata等内存段, 内存段又蕴含调配在该段的程序符号。每一行展现的信息蕴含运行地址VMA(Virtual Memory Address)、装载地址LMA(Load Memory Address)、内存段/符号的大小。其中,LMA示意程序装载的内存地址;VMA示意程序运行时的内存地址。嵌入式零碎中RAM内存空间无限,个别把程序放在FLASH中,LMA地址为Flash中的地址,等到程序运行时,再载入到RAM中的运行地址VMA。内存段.data、.vector_ram就属于这种状况,VMA、LMA地址不一样,并且在FLASH、RAM均呈现。 在应用详情页面,反对排序和搜寻过滤,反对程序符号疾速跳转到源代码行。咱们能够很直观的评估每个内存段、程序符号的应用大小状况,能够疾速定位到潜在可优化的资源耗费小户。如图: 从镜像剖析图表中,能够看出text、data段寄存在Flash存储,data、bss段数据寄存在RAM存储。那么,链接器linker是怎么晓得如何把各个段的符号数据寄存在ROM、RAM的?这就要靠链接脚本。 链接脚本和Text、Data、BSS Section段链接脚本蕴含一些规定来束缚链接器如何把函数、变量放到ROM或RAM,STM32F429IGTx工程的链接脚本地位在targetsCloud_STM32F429IGTx_FIREliteos.ld。咱们分栏同时展现镜像剖析页面和链接脚本,如下图,能够看出镜像剖析页面展现的内存段应用状况和链接脚本中所定义的是统一的,开发板的内存应用状况在LiteOS Studio 镜像剖析页面失去十分直观的展现。 内存段.ccmram在链接脚本中没有定义,已应用大小的也为0 byte。对于内存段.data、.vector_ram,链接脚本中应用关键字 RAM AT> FLASH,来示意装载地址、理论运行地址别离在FLASH、RAM。 链接脚本片段1如下,定义了中断解决向量.isr_vector、程序.text寄存在Flash存储,应用的关键字为>FLASH,其中FLASH在上文的MEMORY{......}中定义。 / The startup code goes first into FLASH / .isr_vector : { . = ALIGN(4);KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4);} >FLASH / The program code and other data goes into FLASH / .text : { ...

December 23, 2020 · 3 min · jiezi

关于开发:分布式-DBLE-网络模块源码解析二

作者:路路酷爱技术、乐于分享的技术人,目前次要从事数据库相干技术的钻研。本文起源:原创投稿*爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。前言在上一篇文章中,我讲了网络IO的基础知识,本篇文章将从源码角度具体解说DBLE的网络模块,包含DBLE是如何解决MySQL包的,多路复用在DBLE中是如何实现的,以及申请的异步化解决相干逻辑。 DBLE是如何解决MySQL包的?咱们将以客户端连贯DBLE为例,从源码角度解说DBLE的相干解决流程。 客户端与DBLE建设连贯的流程如下图所示(因为DBLE实现了MySQL协定,所以与客户端连贯MySQL的流程一样): 次要包含以下四个步骤: 1、 客户端发动connect连贯; 2、服务端发送握手包; 3、客户端回复握手包; 4、服务端返回OK包,示意连贯建设实现,进入命令阶段。 咱们间接看源码: 1、DBLE解决客户端connect DBLE解决客户端connect的代码在NIOAcceptor#run办法中: public void run() { //这里的selector即IO多路复用选择器,一个selector能够解决多个客户端连贯申请 final Selector tSelector = this.selector; for (; ; ) { try { tSelector.select(1000L); Set<SelectionKey> keys = tSelector.selectedKeys(); try { for (SelectionKey key : keys) { if (key.isValid() && key.isAcceptable()) { //当连贯无效且可承受时,解决客户端连贯 accept(); } else { key.cancel(); } } } catch (final Throwable e) { LOGGER.warn("caught Throwable err: ", e); } finally { keys.clear(); } } catch (Exception e) { LOGGER.info(getName(), e); } } }能够看出上述办法调用了accept来承受客户端发动的TCP连贯,持续看该类的accept办法: ...

December 21, 2020 · 3 min · jiezi

关于开发:分布式-DBLE-网络模块源码解析一网络-IO-基础知识

作者:路路酷爱技术、乐于分享的技术人,目前次要从事数据库相干技术的钻研。本文起源:原创投稿*爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。前言对于计算机学科来说,计算机网络相干常识的重要性显而易见。平时咱们框架用的多了,对于底层网络 IO 的解决关注的并不算多(如果不让你用 Spring,你还能写出个 Web 接口吗?),但对于中间件以及框架的开发者来说,网络 IO 的解决却是最须要关注的中央。 DBLE 的网络模块没有用任何框架,齐全是通过原生 JDK 纯手写的。研读 DBLE 网络模块的源码,可能让你对网络 IO 的解决有更进一步的了解。为什么连贯 DBLE 可能像连贯 MySQL 一样?为什么 DBLE 的性能可能如此高?心愿通过本系列文章,可能帮忙大家对DBLE的网络模块有更深刻的理解,更进一步,心愿可能帮忙大家对高性能网络 IO 有更深刻的理解。 本篇作为 《DBLE 网络模块源码解析》的第一篇,次要讲讲网络 IO 的基础知识。 一、TCP/IP 协定栈TCP/IP 协定在肯定水平上参考了 OSI 的体系结构。OSI 模型共有七层,从下到上别离是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。然而这显然是有些简单的,所以在 TCP/IP 协定中,它们被简化为了四个档次,从下到上顺次是链路层、网络层、传输层和应用层。 不同层之间的数据封装如下图所示: 从上图能够看出上一层的协定数据都是作为下一层协定的音讯体来传输的。所以协定从上到下,是一层一层封装的构造。 二、MySQL 协定MySQL 协定在 TCP/IP 协定栈中是处于应用层这一层。从而可能晓得 MySQL 协定数据是作为 TCP 协定中的音讯体局部来传输的。 因为 TCP 为面向流的协定,没有界线,会存在粘包拆包问题,须要在应用层解决。常见的解决办法有: 音讯定长,例如每个报文的大小为固定长度 100 字节,如果不够,空位补空格;在包尾减少回车换行符进行宰割,例如 FTP 协定;将音讯分为音讯头和音讯体,音讯头中蕴含示意音讯总长度(或者音讯体长度)的字段;更简单的应用层协定。MySQL 协定是通过音讯定长和在音讯头中蕴含音讯体长度字段的办法来解决 TCP 粘包问题的。如下图所示: https://dev.mysql.com/doc/dev... 连贯 DBLE 既然能像连贯 MySQL 一样,那 DBLE 肯定要可能解决 MySQL 的数据包,如何解决这些数据包在代码里都有体现,我将在网络模块源码解析里具体解说 DBLE 对于 MySQL 数据包的解决。 ...

December 15, 2020 · 1 min · jiezi

关于开发:EMAS-移动-DevOps-解决方案-Mobile-DevOps

阿里云 云原生利用研发平台EMAS 彭钊(州牧) 简介: DevOps这一优良的软件交付理念在服务端曾经有很多相干的实际,那么是否也能够利用到挪动端进行交付呢?基于挪动端和服务端场景的差别,挪动DevOps跟服务端DevOps又有哪些不同和挑战?本文分享阿里云云原生利用研发平台EMAS在建设云原生Mobile DevOps过程中的思考、遇到的挑战以及解法,解密其设计架构和技术细节。一、Mobile DevOps 介绍什么是挪动 DevOps1)大家所熟知的DevOps在2020年这个工夫节点上,DevOps曾经不再是什么陈腐概念,置信大家或多或少都有些本人的了解,但当要咱们去精确形容什么是DevOps时,如同又很难讲的分明。实际上DevOps至今业界也没有能够让大家统一认可的定义,之所以很难被精确定义,是因为DevOps其实是一种理念甚至是一组理念的汇合,很难被具象化。“DevOps”这个词自身从字面能够了解为软件从Dev(Development,开发)到Ops(Operations,经营)的全生命周期,但DevOps的精确定义到底是什么?在泛滥的DevOps定义中,集体认为Azure DevOps的定义[1]较为准确和具体: DevOps 是开发 (Dev) 和经营 (Ops) 的复合词,它将人、流程和技术联合起来,一直地为客户提供价值。DevOps 对团队意味着什么?DevOps 使以前孤立的角色(开发、IT 经营、品质工程和平安)能够协调和合作,以生产更好、更牢靠的产品。通过采纳 DevOps 文化、做法和工具,团队可能更好地响应客户需要,加强对所构建应用程序的信念,更快地实现业务指标。 这个定义里有几个要害信息总结一下:① 人、流程、技术的联合② DevOps使让以前孤立的角色能够协调和合作③ DevOps是一种理念,既要建立文化,也要有自动化工具的反对④ 目标是更快的生产更好、更牢靠的产品 2)从DevOps到挪动DevOps对于DevOps大家平时探讨比拟多的其实是服务端DevOps,既然DevOps是一种优良的软件交付理念,为什么不把DevOps也利用到挪动端交付呢?这也就是咱们明天要介绍的挪动DevOps。因为挪动端和服务端场景的差别,挪动DevOps跟服务端DevOps会有很大的不同。次要体现在以下几个方面: 挪动端利用自动化构建更为简单• 构建环境碎片化Android、iOS两个平台须要基于不同的操作系统和构建工具链搭建构建环境,即使是同一平台构建工具链也存在版本碎片化景象,比方Android构建依赖的Android SDK、Gradle须要多个版本同时反对,iOS构建依赖的Xcode、Ruby版本须要多个版本同时反对 • 挪动端构建波及到证书托管等数据安全问题• iOS构建依赖的Mac设施为机房非标设施Mac设施不属于规范服务器无奈部署在规范机房,通常须要自建Mac机房,对于可运维性和稳定性也是一个挑战。 自动化构建是DevOps中必不可少的能力,这就要求挪动DevOps通过技术手段很好的解决上述客户端自动化构建、一键出包的问题。挪动端碎片化重大,利用交付兼容性是微小的挑战不同于服务端部署环境的一致性,挪动端利用运行环境碎片化十分重大,兼容性测试笼罩难度远大于服务端。挪动端碎片化景象以Android零碎尤为重大,次要体现在以下几个方面: • 手机机型碎片化Android市场有泛滥的手机厂商和茫茫多的机型,不同厂商都会对系统做底层“优化”,实践上任何笼罩不到的机型测试都可能会面临兼容性问题,下图是2020.10月份最新的百度统计流量研究院[2]的Android Top机型散布,Top 10的机型市场占用率都有余15%,可见机型碎片化之重大 • 操作系统版本碎片化操作系统的差别对利用运行的影响更为间接,零碎大版本升级导致利用不兼容的状况不足为奇,每次操作系统大版本公布都是对利用兼容性的一次考验;在思考兼容新零碎的同时,还不能放弃老零碎的用户。下图是2020.10月份最新的百度流量研究院的Android版本散布数据,能够看到曾经公布一年多的Android 10.0,市场占用率还有余50%,2年以前的操作系统仍然占支流 因为端设施的碎片化问题,就须要挪动DevOps具备挪动测试能力,自动化实现大量的真机兼容性测试。挪动端利用公布更新周期长利用新版本可能公布2周更新比例都不会超过50%,不像服务端能够在很短的工夫内实现所有服务器的软件公布。公布周期长意味着犯错老本更高,一个有Bug的版本收回去,可能须要很长的工夫能力通过更新降级消化完。 这就须要挪动DevOps一方面具备欠缺的灰度公布机制,防止将有问题的利用一次性公布到用户侧;另一方面一旦有Bug的版本曾经收回,须要挪动DevOps具备热修复能力,能够通过增量补丁包的公布形式更轻量、疾速的修复Bug。挪动利用运行在海量挪动端设施不像服务端服务运行在特定的集群内,能够对立管控和运维,挪动利用的运行环境在用户的手机上,而且对于手淘这类超级App来讲是亿级海量设施。 这就须要挪动监控类产品通过大数据技术来实现挪动端运维监控,甚至须要近程日志性能来拉取指定设施上的谬误日志来定位排查谬误。基于以上几点,并参考DevOps对软件交付生命周期的定义,总结挪动DevOps利用生命周期及各阶段能力要求如下: 什么是Mobile DevOps1)Mobile DevOps 是EMAS挪动DevOps理念的具象化实现首先介绍一下EMAS(Enterprise Mobile Application Studio),EMAS是来自阿里云的国内当先云原生利用研发平台(挪动App、H5利用、小程序、Web利用等),基于宽泛的云原生技术(Backend as a Service、Serverless、DevOps、低代码等),致力于为企业、开发者提供一站式的利用研发治理服务,涵盖开发、测试、运维、经营等利用全生命周期。更多对于EMAS的介绍详见阿里云官网EMAS详情页。Mobile DevOps是EMAS挪动DevOps理念的具象化产品输入,是EMAS的中轴型产品,它联动EMAS所有产品独特实现上述挪动DevOps理念。Mobile DevOps将EMAS本来孤立在利用各个生命周期的产品像上图一样实现了联动和残缺闭环,实现了EMAS从挪动中间件平台向挪动研发平台的降级。Mobile DevOps联合以下EMAS产品独特造成EMAS的挪动DevOps:研发域:Mobile DevOps测试域:挪动测试公布域:Mobile DevOps运维域:挪动监控,挪动热修复经营域:挪动推送,移动用户反馈 2)Mobile DevOps的历史Mobile DevOps是团体外部挪动研发平台的商业化输入版本,最早于2017年由阿里云和手淘团队一起研发出输入第一版专有云输入版本,2020年04月上线第一个公共云版本。上面这张图是Mobile DevOps的发展史,能够说Mobile DevOps的发展史其实就是阿里团体挪动研发技术发展史,是阿里巴巴近十年挪动技术、工程研发理念积淀。 3)Mobile DevOps的现状专有云已初具规模Mobile DevOps专有云次要面向大客户,尤其是正在做数字化转型的大客户,这部分客户对平安有很高的要求,根本只能承受专有云部署的模式,同时也违心为晋升研发效力投入老本。2018年Mobile DevOps以专有云场景正式落地输入,目前曾经为多个行业数十家大客户发明价值,赋能企业研发流程数字化转型。公共云收费公测中绝对于专有云,Mobile DevOps公共云更多的是面向中小微企业,这部分客户对研发效力晋升有诉求,然而又对价格敏感,公共云是很好的承接模式;同时阿里团体外部有些对外输入的业务(例如专属钉钉)无奈基于团体外部研发平台去做挪动DevOps的,Mobile DevOps公共云也是很好的抉择。Mobile DevOps公共云自2020.07开始正式对外收费公测,目前已服务以及泛滥中小微客户,以及阿里团体外部专属钉钉、政务钉钉、唱鸭等客户。 ...

November 27, 2020 · 2 min · jiezi

关于开发:用友低代码开发平台YonBuilder为您加速

随着云计算、人工智能、物联网、大数据、5G等新一代技术的疾速倒退,越来越多的企业心愿借助技术的力量减速数智化转型,期许通过更加麻利和弱小的利用零碎推动企业的商业翻新速度。但传统软件开发周期长、开发成本大、开发环境要求低等问题,与企业“麻利翻新”的需要成为一对主要矛盾,时代呐喊利用构建更为便捷的低代码开发平台的呈现。 保持“用创想和技术推动社会和商业提高”的用友,正是在如此背景下,基于商业翻新平台YonBIP,推出了低代码开发平台YonBuilder,将积淀了32年的技术能力赋能产业,为企业商业翻新注入弱小能源。 颠覆传统开发,YonBuilder让人人都是开发者 如果说抖音突破了视频制作技术的门槛,让人人都是生存的“导演”,那么YonBuilder就像是企业服务畛域的抖音,突破了传统软件的开发模式,让人人都是“开发者”,这背地其实是YonBuilder这一全新“开发利器”,赋予了利用构建极大的便捷性。于开发者而言, YonBuilder既反对一般开发者无代码可视化构建APP、小程序、H5等利用,一般业务人员,只有懂业务逻辑也能搭建利用,从肯定水平上解决了企业“程序员不懂业务,业务员不懂编程”的难堪问题;也反对业余开发者低代码开发各类大型利用、企业因时代倒退所须要的个性化利用、以及海量业务场景的长尾利用,让开发者聚焦外围编程逻辑,升高开发难度,晋升开发效率。 于企业而言,YonBuilder能够帮忙企业以更快更简略的形式实现自主利用开发,还能够与用友提供的规范服务进行无缝对接,也能够为服务企业的搭档提供开发平台,一起为用友的客户服务,搭档在YonBuilder上开发的利用与用友自身的规范利用一样,用户应用起来无任何差异化感知。 从开发小白到技术大牛,YonBuilder认证体系成就职业新高度 数字经济时代,无论是急需转型的企业,还是急需提效的开发者,无论是急需业务冲破的业务人员,亦或是急需晋升职场竞争力的集体,把握低代码开发技能,都将赋予咱们更多的竞争力。 为让更多人全面把握并利用低代码开发平台YonBuilder,用友推出了欠缺的YonBuilder认证体系,面对不同开发根底人群,提供不同的认证等级。微认证,是面向社会人士、在校大学生、业务人员等无开发教训人群的根底认证,通过学习课程、入手实际等,全面理解并纯熟利用YonBuilder平台,通过考试,即可颁发微认证证书,成为YonBuilder利用达人。 业余认证,是面向有开发根底的业余开发者的免费认证,通过YonBuilder平台构建利用,开发成绩经由业余认证团队审核评定,依据评定后果给与开发人员“开发者”“开发专家”“开发MVP”相应等级名称与证书,通过认证,即可收费学习相应等级的高价值专业课程,开发成绩还将有机会获商业变现反对、商业孵化与投融资搀扶,让“商业创新者”身份实至名归。 YonBuilder微认证启动,限量300名收费 在用友YonBuilder对外公布后,引发了媒体圈、开发者社区、科创企业的诸多热议,越来越多的人也对YonBuilder产生了浓厚兴趣,心愿学习把握YonBuilder平台,成就更多可能。 用友不负众望,推出YonBuilder微认证限量300名收费流动,无论您是在校大学生、企业员工、亦或是业务骨干、企业领导,都能够在“摩天”官网(www.imotian.com)注册,疾速进行微认证,同时,开发领导、体系化课程学习、案例详解、试用体验、社区互动等专属服务,也将助您拿下证书,成为YonBuilder利用达人。种一棵树最好的工夫是10年前,其次是当初。 IDC调研报告显示,将来5年,全行业将会创立5亿个新应用程序,比过来40年的总和还多,低代码开发平台将成为构建将来应用程序的弱小工具,低代码开发新时代未然降临! 乘时代东风,做新时的代商业创新者,从把握低代码开发技能开始,从应用低代码开发平台构建大型简单利用开始。将来,用友将与企业、开发者、集体,共风雨,筑生态,一起在推动商业翻新的改革中乘风破浪!

November 18, 2020 · 1 min · jiezi

关于开发:LR软件开发平台快速建立企业协同办公解决方案

往年疫情肆虐的状况下,很多公司开始借助互联网进行企业的管理工作,诸如在线办公室和疾速温度测量等数字利用逐渐成为常态,以期通过数字化办公转型来缩小疫情的影响。 互联网的退出,使传统的生产和生存形式正在调整,如无人驾驶、智能工厂、智能批发、近程医疗和智能教育无处不在,数字化时代未然降临。新兴利用层出不穷,看得见的是对咱们生存的扭转,看不见的是对IT基础架构的重塑。 以后,企业在数字化转型过程中往往面临三大难题:效率、弹性、老本。效率和老本总是鱼和熊掌不可兼得,随着数据一直增大,企业零碎往往越来越难以承载企业的倒退。 如果想跟上企业的倒退步调,就要求IT基础架构可能灵便弹性扩大,满足将来业务倒退的须要,当新技术产生时,可能在零碎中疾速利用并发明价值。 对于力软企业开发平台,它能够帮忙企业在较短的工夫内实现“随时随地,高效,平安”的办公服务信息建设,并为企业建设一套跨平台协同办公零碎。 力软(LR)企业开发平台是一套智能化可扩大组件式软件系统我的项目平台,应用了以后支流的利用开发技术(.net/java双版本),框架内置工作流、向导式智能开发组件、即时通讯组件、APP开发组件、微信组件、通用权限等一系列组件,以及可扩大的零碎机制,开发人员通过一系列简略配置就能够疾速构建OA、ERP、CRM、BI、BPM、APP、小程序等泛滥高质量的信息系统,可无效晋升企业效率,节俭企业老本。 详情参阅:learun.cn. 为更加明确的理解平台理论效用,这里截取工作流模块性能以作参考。 1.流程设计 2.流程工作 3.流程委托 4.流程监控 5.签章治理 更多功能,请参阅“力软”平台.

October 30, 2020 · 1 min · jiezi

关于开发:API进阶之路研发需求突增3倍测试团队集体闹离职

摘要:最近研发的需求量涨了3倍,开发团队拼命赶进度,可苦了测试团队。本认为从一线研发转治理后会安闲一些,然而没想到,我还要充当救火队员的角色。 到了第四季度,各业务部门都在憋着劲儿冲业绩,毕竟这跟年终奖可是非亲非故的事儿。业务部门冲业绩,带动着研发的需要一直减少,这个部门说想要提前上线,那个部门说要长期加个需要,研发只能说咱们得按排期来,这句话平时可能好使,可一旦需要和业绩相干,那研发就要火力全开,排期什么的就得靠边站了。 最近研发的需求量涨了3倍,开发团队拼命赶进度,却苦了测试团队。本来测试团队就人少压力大,当初需要涨了,测试人员却没减少,测试主管带着几个共事找到老板,说再这样上来真是干不了了。 没有测试可还行?这可急坏了老板,长期招人也来不及。他喊我过来磋商,看有没有方法解决。老板的意思是心愿我可能去带一带测试团队,给大家缓解下压力。然而吧,加上我一个人也解决不了什么问题呀,这可怎么办? 通过剖析,咱们发现测试的压力来自2个方面:一方面是要上线的我的项目集中暴发;另一方面是开发在赶进度,交付品质有所升高,再加上微服务架构下我的项目单元变多,测试的工作量也成倍增长。得想个办法从根本上解决这些问题。 推敲了一个早晨,我给老板提交了一份计划:把原先写的测试用例注册到华为云一站式云端测试平台——云测(CloudTest)上,应用云测API进行测试用例治理、接口测试等,进步测试效率,保障我的项目高质量领取。 应用华为云云测API也比拟容易,具体步骤如下。 一、TestHub服务操作TestHub服务操作包含:新测试类型服务注册到云测、用户获取本人以后曾经注册的服务。 1、确定调用API鉴权时应用的Token,获取响应Header参数中X-Subject-Token对应的值。 2、确定Testhub服务名称及用户服务域名并注册。 接口相干信息:URL格局-POST /v1/services 申请示例:发送一条POST申请。 POST: https://{endpoint}/v1/services { "service_name" : "这是一个测试类型名称", "server_host" : "https://xxx.xxx.xxx"}响应示例 { "service_name" : "这是一个测试类型名称", "service_id" : 13}3、确定Testhub服务已被注册胜利。 接口相干信息:URL格局- GET /v1/services 申请示例:发送一条GET申请。 GET:https://{endpoint}/v1/services 响应示例:获取到返回的注册信息即证实用户已注册胜利。 { "services" : [ { "id" : 13, "name" : "这是一个测试类型名称" } ]}二、用例操作用例操作包含:创立测试用例、更新测试用例、获取测试用例详情、批量执行用例接口、批量更新测试用例后果。 1、确定调用API鉴权时应用的Token,获取响应Header参数中X-Subject-Token对应的值。 2、创立新的测试用例。 接口相干信息:URL格局-POST /v1/projects/{project_id}/testcases 申请示例:发送一条POST申请。 POST: https://{endpoint}/v1/projects/{project_id}/testcases { "name" : "testcaseXXX", "service_id" : 13, "rank_id" : "2", "testcase_number" : "1234", "extend_info" : { "description" : "这是一条形容信息", "preparation" : "这是一条前置条件xxxxxx", "steps" : [ { "expect_result" : "<ol class="ordered"><li class="ordered"><span>后果一</span></li><li class="ordered"><span>后果二</span></li></ol><p><br /></p>", "test_step" : "<p>步骤一</p>" } ], "label_list" : [ "标签一", "标签二" ], "module_id" : "b66aab5469cc4ab39b0dda8e644a42a4", "test_version_id" : "8.1.2", "fix_version_id" : "8.2.0.1", "assigned_id" : "b66aab5469cc4ab39b0dda8e644a42a4", "issue_id" : "b66aab5469cc4ab39b0dda8e644a42a4" }}响应示例 ...

October 23, 2020 · 2 min · jiezi

关于开发:为什么企业需要CRM系统CRM的作用及其重要性分析

客户管理系统(CRM)是企业外围应用软件之一,对于进步企业业绩起着至关重要的作用,当初很多企业都在客户倒退方面投入大量的资金,以求取得更好的回报。 对于CRM CRM是一个客户数据中心,在CRM中,你能够解决公司各部门与客户相干的各种细节,包含跟踪和治理每个与你的品牌、网站或产品有过互动的潜在客户和客户的旅程。这种模式实用于多种行业的业务场景:技术、业务服务、批发、银行、制作、安保、通信和媒体等。 CRM为何重要 CRM零碎之所以重要,是因为它收集、解决和治理所有与客户相干的信息。CRM零碎通过客户流动和潜在客户信息,帮忙企业找到新客户,造成成交,帮忙企业与客户之间建设牢固的关系并更快、更好地开展业务。 CRM零碎首先通过跨多个起源和渠道收集客户的网站,电子邮件,电话,微信,QQ等数据;再通过相干数据进行的剖析和跟进,让业务人员更好的理解客户状况,并通过无效信息造成成交;最初通过成交,记录订单,合同,计算提成等相干后续治理。有的CRM零碎还能够促成二次成交,代理商分销,业务员提成实时调配等。市场营销和销售团队成为一个有凝聚力的个体,是企业倒退的重要一环,CRM的作用就是帮忙企业实现这一指标的解决方案: 1.条理化和简单化 当企业进入高速增长阶段,一些有价值的客户很容易被忽视。连贯CRM零碎,销售、市场营销和服务人员就不必花大量精力搜寻电子邮件、试图与其余共事分割,进而疾速找到特定潜在客户状态相干的最新精确信息。 例如,CRM能够揭示你与潜在客户的预约——防止反复预约,让你凭着有条理的形式轻松减少联系人和潜在客户的数量。CRM还揭示销售代表在买家旅程的关键环节上跟踪潜在客户,将他们造就成客户。 此外,随着公司的倒退,你可能会减少销售代表的数量,他们将会与潜在客户和代表进行沟通。CRM有利于创立和放弃销售代表(无论他们在哪个部门)与所有潜在客户和客户之间统一的沟通形式和格调。 2.解决客户间接服务团队所面临的挑战 现在,咱们有大量在线接触潜在客户并与之建设友好关系的机会,比方借助社交媒体、网站等等。这对业务很有益处,但所有这些接触点可能让你很难跟踪和监控公司与潜在客户之间的沟通。 CRM解决方案曾经演变成应答客户间接服务团队和代表所面临的挑战——它们与其余各种各样的服务和渠道相结合。通过这些服务和渠道,潜在客户和客户参加到你们的业务中来。这让销售代表可能与潜在客户和客户进行无效地沟通,不会错过任何环节,因为所有的沟通都能够在零碎外部进行治理。 此外,CRM反对实现跨团队合作——使得市场营销和销售等部门可能共享资源以及与联系人沟通的细节,防止重复性工作。 3.通过创立工作流来节省时间 优良的CRM零碎反对市场营销和销售方面的致力,以及所有与客户单干相干的外部流程——又被称为工作流。也就是说,CRM为你主动操作、实现和组织特定的工作,进而反对简单和一直变动的工作流程。CRM零碎通过更无效地利用工夫、打消许多单调乏味的工作,使得团队专一工作,并放弃同步。 4.实现日常工作自动化 CRM将其余日常工作自动化,减速消耗工夫的工作的过程,而这类工作通常是销售、服务和市场营销团队成员须要实现的。 CRM中常见的自动化工作包含输出数据、设置集体电子邮件程序、记录所有客户沟通以及自动化客户服务工作。这种自动化类型反对销售代表回到上次来到联系人的状态,同时反对轻松治理他们与所有潜在客户和客户的关系。 简化报告和剖析流程 有了CRM,报告和剖析流程和渠道变得简略。CRM的报告性能能够让你深刻理解销售和市场营销的流程,更好地优化你在所有团队中的工作。这种剖析类型反对你为潜在客户和客户发明难忘的体验。 CRM应蕴含报告概览并具备可定制性,你能够报告贯通销售、市场营销或服务机构的任何指标。你可在任何工夫提取这些具体报告,间接与须要审阅它们的团队成员共享。 CRM将企业的客户关系治理数字化、可视化、自动化,为企业实现标准化、规范化的销售行为提供了最简洁便当的渠道。 无论你只是想要一个核心地位来组织和治理所有与客户相干的信息,还是想让外部沟通更容易,亦或是想要更快地将更多潜在客户转化为客户,或者想要改善你与客户的关系,CRM这样的管理软件可能提供帮忙。 Windy.

September 16, 2020 · 1 min · jiezi

关于开发:够开放吗来和一群开发者搞事情

近日,易观官网上线“开发者专题”,正式面向开发者展现和分享易观技术研发能力与交换社区。围绕着这家致力于开源赋能的技术公司,以及背地上百位不露姓名的代码英雄们,咱们明天一起来理解下他们的征途。 端午假期,老代参加了一堂《对于开源 license 许可与专利洞见》的在线谈判,作为一枚积极支持开源的技术开发者,除了投身日常工作外,平时延时上班,在周末得闲暇,老代也将中年的余热激情献给了 Apache 国内开源社区。 这也是小朱姐入职易观的一周年整,作为专职的产品经营,小朱姐负责的易观方舟 Argo,正在帮忙越来越多的中小企业,实现零老本部署上数字化用户经营平台。在微群里,在社区留言本,围绕着部署施行、埋点设置,长相娟秀的小朱姐东倒西歪地答复发问,着实就是个技术老爷们。 当初,小朱姐和“中年代”所在组织易观,曾经和数据打了20年的交道。从数据分析、数据产品到数据平台,易观开始积攒起丰盛的数字资产以及技术知识产权,开发推出了企业智能用户经营平台易观方舟(蕴含智能剖析、智能画像、智能经营)、互联网竞争剖析工具-易观千帆等。当然,围绕在这些产品和技术的背地,是越来越多服务底层技术的代码英雄们,咱们叫他们老代、叫她小朱。 迄今为止,易观已推出包含易观方舟智能用户经营组件在内的数据经营平台及解决方案,同时还上线了免费版用户行为剖析产品、开源了多种 SDK源码、为国内顶尖开源组织 Apache 奉献了调度工具-海豚调度 (DolphinScheduler )。 01 解放开发者,赋能企业数字化 数据开发者在工作中,可能常常会遇到数据获取难、实时性难满足、数据需要变动多,还有埋点治理乱、可视化成果差等一些列问题,从而无奈真正晋升大数据技术。 去年3月,易观推出了易观方舟 Argo,作为国内第一款收费可私有化部署的用户行为剖析工具,Argo 反对全端数据采集、自定义多维度剖析,推出行业首家智能埋点治理,Argo的背地是易观自主知识产权的秒算引擎提供实时用户剖析反对。此外,Argo 还具备更多凋谢的链接能力。 完结北京疫情隔离的老江再次回到工作岗位,作为 Argo 晚期开创成员,老江谈到,“Argo 可能帮忙开发者从日常繁琐的 SQL 工作中解放出来,让他们专一在工具优化和数仓建设上,帮忙企业大幅晋升工作效率、节约开发成本,而无需思考经费问题,在数字化经营的路上疾速跑起来。” 就像对待本人的孩子,尽管还有不完满,但在老江眼里, Argo 在成长, Argo 也是最棒的。迄今为止, Argo 社区已汇集数千名数据爱好者,大家一起探讨工具部署和应用,目前用户已涵盖新批发、教育、电商、社区、医药和金融等多个行业。 02 开源多种源码,节俭开发工夫 “通过开源 SDK,咱们心愿赋能给对用户行为感兴趣的工程师们,帮忙大家疾速、精确、无误地采集用户行为数据。”易观 CTO 郭炜说到。 数据采集是企业进行数据分析的根底,具备基石的意义。为满足不同企业需要,易观凋谢了客户端、服务端多种 SDK,同时反对代码埋点、可视化埋点、全埋点不同埋点形式,满足不同场景需要。工程师能够依据业务需要对开源代码进行调整,帮忙大家节俭大量根底代码开发工夫。易观方舟 SDK支 持全端用户买通,目前已反对采集超过22种数字用户触点,包含 Android、 iOS、 H5以及各类平台小程序等。 易观开源 SDK 反对商业我的项目使用,已有包含华润、方正、当当、九阳、CSDN 等近一百家用户应用。同时,易观装备了专门的 SDK 开源社区,汇集了泛滥前端及SDK工程师,可能及时响应社区问题:“一个滑动的布局如 NestedScrollView 嵌套一个 RecycleView,如何监听到 RecycleView 中每个 item 是否露出呢?” 几分钟后,烈火工程师间接收回代码示例,单方切磋数轮后,问题失去解决。偶然在老江、老代和小朱姐射程范畴内的问题,他们也会随时回应。作为社区负责人,小朱姐期待更多小伙伴们能提交问题、共建文档,大家独特建设本人的社区。 03 海豚调度,选好调度早回家 调度选得好,上班回家早。这句技术共事的笑梗,当初曾经成为“海豚调度”官网盖章的广告语。 ...

September 9, 2020 · 1 min · jiezi

关于开发:云开发校园合伙人招募令阿里实习生直通面试名额等你来PICK

简介: 长假漫漫,宅家宅到压力山大。云开发平台喊你出道啦!首批云开发校园大使将面向所有对Serverless和云开发感兴趣的在校大学生进行招募。变质是青春必修课,别再犹豫,不负青春,乘风破浪。成为校园KOL,C位出道,率领Serverless云开发校园爱好者玩转云开发。一飞冲天吧,少年!10个阿里实习生直通面试名额、1000件阿里云飞天代码T-shirt、1000张代金券等通关处分等你来PICK,当初报名即领优酷VIP会员卡! 参加福利: **10个阿里实习生直通面试名额 1000份阿里云代码T-shirt 1000张代金券通关处分** …… 等你来PICK,当初报名即领优酷VIP会员卡。 什么是云开发校园合伙人 校园合伙人是阿里云云开发平台面向在校大学生招募的精英团队,首批云开发校园合伙人,将面向所有对Serverless云开发感兴趣的在校大学生进行招募。并以“大咖授课+我的项目实际”的模式率领营员全面理解Serverless畛域和云开发的前沿常识。 成为云开发校园合伙人是什么体验 • 云开发校园合伙人专属证书; • 云开发平台官网集体形象展现; • 校内流动资源资助; • 阿里云开发者流动收费参加; • 与阿里云技术大咖深层次沟通交流; • 有机会领有实习生绿通资格; …… 有收益有播种,怎么算都划算! 加入发明营3步即可C位出道 第一步:云开发训练(8.3-8.11):Serverless Web开发从入门到精通 云开发学习环节,采纳大咖直播教学和自主学习形式联合,随到随学,并由技术大咖线上答疑。学习内容包含云开发协同、云函数、云数据库、多媒体托管、前后端一体化框架等Serverless Web开发必备常识。 通关处分:间断7天实现打卡的学员,取得阿里云代码T-shirt。 第二步:云开发实战(8.12-8.19):建站翻新我的项目实战 云开发实战环节,此阶段内学员基于云开发平台独立实现Web开发并提交创新作品,大神带练手把手教你Serverless Web开发技巧,通过实际真正把握这门新技能。 通关处分:实现我的项目提交处分50元资源代金券。 第三步:云开发校园合伙人C位出道(8.19-8.26):我的项目展现 联合本人开发的Web利用,写一篇介绍利用开发的背景、思考和过程的文章公布在阿里云开发者社区,综合我的项目的浏览量、投票状况及评委评分进行排名。 通关处分 :排名前50的学员取得云开发校园合伙人荣誉和证书,排名前10的学员取得实习生直通面试资格 加入云开发发明营播种不个别 • 一段干货超多的学习经验; • 每天半个小时,钉群学习,随到随学; • 每天阿里云云开发技术专家定时答疑; • 作业打卡坚固学习内容,与同学沟通交流; • 学习+实战+竞技全方位活用Serverless云开发技能; • 10个直通阿里实习生面试名额。 期待这样的你退出咱们 • 全日制在校大学生 • 业余年级不限 • 对推广Serverless感兴趣 • 对云开发有激情 • 爱分享 优良的人总是相互吸引,退出咱们,让咱们一起变得更加优良吧!! 报名通道 ...

July 23, 2020 · 1 min · jiezi

Choerodon猪齿鱼实践之开发应用服务

当有多个开发人员参加我的项目时,通过Git进行分支和Tag治理,将软件的版本控制以及分支治理贯通于整个软件产品的生命周期,能无效的防止代码抵触,进步开发效率。Choerodon 代码仓库就是基于 Git 进行代码版本治理。本文介绍了 Choerodon 猪齿鱼中开发应用服务的办法,包含创立分支、克隆、推拉代码、合并分支等。 开发应用服务在Choerodon中开发应用服务之前,首先需确认已在Choerodon我的项目下创立应用服务,并配置了 Git,包含下载安装、设置等。 第一步:创立分支Choerodon应用 GitLab 进行分支治理,默认分支为 master。目前反对六种常见的分支类型: master:主分支,用于版本继续公布;feature:个性分支,用于日常开发时切出分支进行单功能开发;bugfix:故障修补分支,通常用于修复故障;release:公布分支,实用于产品公布、产品迭代;hotfix:热修分支,用于产品公布后修复缺点;custom:自定义分支,用户能够自定义须要的分支类型。注:bugfix旨在与麻利的问题类型(故障)响应,用于标识此分支的工作是修复某个故障这里咱们以 Feature 分支为例,在Choerodon中进行分支创立。 在 代码治理 -> 分支 界面,抉择应用服务猪齿鱼Todo服务;点击创立分支,如果没有issue可抉择,则先创立问题, 抉择对应的issue;分支起源抉择master,填写issue号,如feature-1,点击创立,即可创立一个分支; 例如, 问题名称: choerodon-dev-1 猪齿鱼疾速入门文档分支起源: master分支类型: feature分支名称: feature-choerodon-dev-1![image](https://minio.choerodon.com.cn/knowledgebase-service/0/ecbb8aa99d4a41e5be5c7d8d9cead9b3@blob.png)创立完分支之后,您就能够进行后续的本地开发。Choerodon 采纳 githubflow作为咱们的分支管理策略的主体。并在此基础上,参考了一些其余策略,对开发者的开发分支做了肯定水平上的细分。更多相干信息参考分支治理。 第二步:拉取代码仓库在代码仓库 菜单,找到猪齿鱼Todo服务的仓库地址,复制仓库地址;本地通过git 命令拉取生成的我的项目代码;切换到对应分支进行本地开发。 $ git clone `仓库地址`$ cd ./choerodon-todo-servie$ git checkout feature-choerodon-dev-1克隆代码时候,会让输出用户名,明码。用户名为平台用户名,明码为用户新建后收到的站内信中的Gitlab仓库明码,若遗记明码,能够到个人信息页面重置GitLab仓库明码。 第三步:本地开发将代码克隆到本地后,就能够在本地进行开发。 通过Choerodon 提供的MicroService 应用服务模板,会生成一个极简略的spring boot 应用服务。模板自身生成的应用服务能够间接运行在平台上,如需拓展更多功能,可具体参考后端开发手册。第四步:提交代码当本地做了相干批改之后,须要将本地仓库的代码提交到近程分支上。提交的用户名明码同克隆代码库的一样。 $ git add .$ git commit -m "[ADD] init todo-service"$ git push origin feature-choerodon-dev-1提交时须要遵循Choerodon 的标准: [IMP] 晋升改善正在开发或者曾经实现的性能[FIX] 修改BUG[REF] 重构一个性能,对性能重写[ADD] 增加实现新性能[REM] 删除不须要的文件第五步:代码集成当代码提交到服务器之后,能够在页面查看继续集成。 在代码治理 -> 继续集成 页面,抉择应用服务猪齿鱼Todo服务;点击阶段跳转到Gitlab 查看 CI 执行状况。 第六步:合并分支当 CI 执行通过当前,能够将feature分支合并到master分支上。 在代码治理 -> 合并申请 页面,抉择应用服务猪齿鱼Todo服务;点击创立合并申请,跳转到Gitlab;别离抉择源分支为feature-choerodon-dev-1 ,指标分支为master,并提交合并申请。期待ci流水线通过后,点击合并分支。当master分支的ci流水线 通过当前,在应用服务 -> 点击应用服务 猪齿鱼Todo服务 ,便能在”服务版本“Tab页中看到猪齿鱼Todo服务 生成的版本。此处的版本会用于后续的部署操作。若想理解更多Choerodon猪齿鱼版本相干的内容,可参考《Choerodon猪齿鱼实际之继续交付中的分支治理与版本控制》。 ...

July 15, 2020 · 1 min · jiezi

架构师是如何练成的

前言在盘点2019年全年平台各技术岗位薪资数据时发现,架构师是全年面邀薪资中仅次于CTO的岗 位,同时,将架构师作为期望求职岗位的候选人数,仅次于Java工程师、前端工程师,以及移动端工程师。 因此,今天会把从事多年的架构经验和大家做分享,我觉得很有必要,会比纯技术的分享更有意义。 今天我将以自己的亲身经历,与大家分享技术领导者成长过程中的几大常见难题,以及一名合格的架构 师应具备的素质。 技术路线or管理路线该如何抉择?经历了3-5年的一个技术人很常见的问题就来了:我是坚持走技术路线呢,还是走管理岗位?这个问题其实并没有标准答案。 每个人的喜好不同,对自己的规划也不同。 但我觉得不论走技术路线还是管理路线,首先技术能力是不可或缺的。 技术人,如果自己的技术都不过关,很难领导好一个团队。最基础的,面临一个技术问题的排期,如果 你技术不过关,恐怕也很难保证收到的排期是合理的、符合预期的。(毕竟谁也不会真心服一个能力比自己低的人) 其次是带队能力,技术专家并不只关注技术。技术是为业务服务的,一味地讲技术深度,做出来的东西 有时候并不符合业务的需要。所以,技术专家的存在,一是带领大家对技术做攻关,二是确保业务需求 架构设计更合理。当然,管理方向和技术方向对个人的要求还是有区别的。 管理方向更多的是带领团队完成某件事,利用 好人;例如按照公司的战略方向,制定团队的作战方法。技术专家则更多关注的是技术如何更好地服务 业务,利用自身的技术能力,赋能业务、赋能团队。 所以一定要根据自身的实际情况及个人规划,选择自己未来要走的路。 架构师与程序员区别?对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。 其实架构师和程序员的界限并不是很大,比如现在仍然在每天写代码。成长首先来自于自身的学习,而阅读成熟项目的代码会使人受益匪浅,其次就是来自于所从事领域的经验,要了解分布式系统的特点,在做项目时,要能够关注性能、扩展性、可靠性、可用性等指标。 架构师其实就是一个漫长的积累过程(打野),从准备期到动荡期我们都是不停的探索,学习.大部分的高级架构师的年龄都是在35岁左右,这个阶段就是程序员的黄金期。 合格的架构师该有怎样的素质?1、懂业务 没有业务,架构也就无从谈起。合理的架构也一定是随着业务的发展逐步进化的。 大部分初创公司人员简单,业务简单且变化较快,这个时候,单体应用比较合适。因为单体应用有更高 的开发效率,能够快速试错。但业务量上涨之后,公司的规模一般也会变大,人员增多,组织部门开始划分。 这时就要开始服务化, 降低系统间的耦合,职责更加清晰,每个部门对自己所负责的服务负责。随着业务量的持续上涨,就要进行更细的划分,这时可能就要使用微服务。微服务越来越多,就要去解 决服务治理,服务发现等一系列问题。 所以说,好的架构师一定是为业务设计架构。 2、技术前瞻性 架构师一定要站在业务和技术的更前端,考虑业务的发展对架构的影响,以最小的变动,支撑业务的发展。 拿某电商的订单服务来说,早期,单体应用没有订单服务,整个业务都是一个大的数据库。当业务量上 来后,有了订单服务,订单表从大库拆分,仅仅进行了拆表操作,没有进行拆库,导致后期订单库成为 了业务瓶颈,再次进行拆库耗费了很多的人力物力。 如果主导这次拆分的是一个合格的架构师,应该从一开始就要考虑到目前的技术选型是否符合业务的长期发展需求,选择一个更加合适的架构。 3、沟通协作能力 好的架构师能将自己的设计通俗易懂的讲给小伙伴,不仅要做到传道还要授业解惑。 同时,在日常工作 中,能够将自己的选型及设计清楚地传达下去,合理分工,还能交代清楚为什么这样做,这样做的好处 是什么。让每个人都清楚自己的职责,更好地完成工作内容。 好的架构师能够关注业务重点,及时解决 小伙伴们碰到的技术问题,给予支持,帮助整个团队一起提升。 4、持续学习的心态 新的技术层出不穷,持续不断地学习是技术人必备的通用素质,但架构师尤甚。新的技术能否帮助业务发展,我们现有的技术体系是否有需要借鉴的地方,都是架构师要持续学习的。 除了技术,业务方向也 是架构师需要学习的点,架构师要有广阔的视野,才能在后续的业务中有好的架构设计。 架构师如何加强技能修养?程序员要往一名架构师发展,需要进一步加强技能的修养。 对于互联网公司来言,最重要的技能是对网 络和分布式系统的理解,比较麻烦的是分布式系统,需要结合很多实际的项目和方案来理解。 因为同一个技术,在不同的项目经验后,绝对不是不同的理解。 首先架构师的技术宽度必须很广,技术深度在某一个领域是专家。 必须要有这几个要素:思考问题的角度尽量站的高一点,再高一点,从分解公司战略层面开始入手做架构设计 对业务的深刻理解,才能做好业务架构 理论学习&技术实践,什么时候都不能丢掉,这是技术架构的基础,重要性不赘述 同行业交流 时时对新技术保持敏感。 架构师自我培养?要成为一名合格的架构师仅仅通过理论学习是不行的,我自己理想中的架构师要求很高,不仅有丰富的 编码经验,而且还要熟悉硬件性能优化、内核调试、网络故障排查、系统安全、分布式系统,还有了解国内外技术的新趋势和特点,最重要的是还要善于与人沟通,敢于排除不同意见,敢于承担责任,了解团队内工程师的特点,善于将他们组成一个整体。 技术方面: 从最基础的开发做起 逐步提高解决高难度技术的能力 不断重构代码、不断优化代码,每次重构都是一次思考 业务方面: 从理解现有业务做起 从成为小领域业务专家,扩展到更多领域的业务专家 在每次重构底层代码时,更在不断思考业务架构重构与优化,做到以上,大约是个高级序员或准架构师水平。 做到以上,大约是个高级程序员或准架构师水平。 ...

June 20, 2020 · 1 min · jiezi