在这篇文章中,我们将探索如何使用.NET 5中的新source generator特性,使用MediatR库和CQRS模式自动为系统生成API。
我在职业生涯中使用过很多 OData,现在我来自不同团队的同事中很少有人建议我们迁移到 JsonAPI 和 GraphQL,因为它与 Microsoft 无关。我对这两种查询语言都没有太多经验。据我所知,OData 是 Salesforce、IBM、Microsoft 使用的标准,并且非常成熟。为什么要切换到 JsonAPI 和/或 GraphQL?有真正的好处吗?JsonAPI 和 GraphQL 是新标准吗?根据受欢迎程度更改公共 api 实现似乎没有用,尤其是在没有太大好处的情况下。
自动化代码生成这种能减少工作量的事情一直是程序员们的最爱。如果某些代码片段不断重复自身,我们会用宏替换来减少这种重复,但如果涉及到大规模,架构级别的重复,那么我们倾向于用代码生成来解决这种重复。日常工作中,大家使用得比较多的代码生成工具有 gRPC(或者其衍生的一系列 xRPC),用于把微服务的描述生成不同语言的代码。此外还有 GraphQL,用于把 GraphQL schema 生成服务端和客户端的代码。
在构思 Quenya 的时候,我已经有之前 UAPI 和 Goldorin 在生产环境下的应用经验。总结起来,就是 UAPI 有一个很好的结构(见我四年前的文章:再谈 API 的撰写 - 架构),但它做事的顺序反了,先有代码,再有 spec,通过代码生成 spec(当时是 swagger 2.0);Goldorin 纠正了这一做法,通过 spec 来生成代码,但 Goldorin 的问题在于自己定义 spec,并没有深思熟虑。另外,Goldorin 还有两个问题:
在 pkg/apis/{GROUP}/{VERSION}/types.go中使用,使用 // +genclient标记对应类型生成的客户端, 如果与该类型相关联的资源不是命名空间范围的(例如PersistentVolume), 则还需要附加 // + genclient:nonNamespaced标记,
原文:https://fastapi.tiangolo.com/alternatives/
前一篇文章(《如何使用 CRD 拓展 Kubernetes 集群》)通过一个 Demo 讲解 CRD 是什么,以及可以提供什么能力,本文继续基于这个 Demo(https://github.com/Coderhypo/KubeService ),来讲解一下如何构建一个 CRD Controller。
初始化目录: npm init 安装 Express: npm install express --save HelloWorld: 创建app.js //导入express const express = require('express') //创建app对象 const app = express() //构建请求 app.get('/',(req, res)=>res.send('hello world')) //配置app监听3000端口 app.listen(3000, ()=>consol
Kubernetes目前常使用CRD+Controller的方式扩展API,官方提供了CRD代码的自动生成器code-generator。
从零编写API文档既耗时又复杂,因此大多数企业都依赖API文档工具来简化这些工作。 API文档工具有助于自动化创建和管理文档,并以易于阅读和理解的方式帮助用户去格式化和显示信息,即使对于没有技术背景的用户也能轻松使用。
一、配置步骤 打开百度->输入支付宝开放平台->选择 📷 点击登录->扫码登录 📷 进入管理中心 📷 选择开发者中心 📷 选择创建应用->网页&移动应用->支付接入 📷 输入应用名称->图标->选择网页应用->确认创建 📷 选择添加能力 📷 新增能力->支付 📷 能力列表进行勾选 📷 开发信息->接口加密方式->设置 📷 点击底部蓝色字->下载支付宝秘钥生成器->下载成功并安装 📷 安装完成打开->按图配置->点击生成秘钥->复制公钥 📷 回到浏览器进行粘贴->保存设置->点击x关闭 📷 开发信息->授权回
如果你的工作每一个项目都非常的标准化,繁琐,你可以去抽象出来一些模板来用它进行快速的生成。
我记得在毕业以前,就大致明白这样一件事情,系统之间、模块之间的交互,要确定协议,要定义接口,兜兜转转这些年过去了,我觉得对这件事情认识当然越来越深刻,也说不清其中的程度。最近做的项目中,开始大量地和 OpenAPI 打交道,一方面要最先使用 OpenAPI 来定义接口,让多个其他交互的模块都遵循它来开发,就是 “OpenAPI Driven Development” 的意思,这没啥特别的;但另一方面,系统中还需要把 Protobuf 接口定义转换成 HTTP 接口定义,并实施地使用 swagger-core 来动态创建 OpenAPI Spec,这就比较好玩了。
花下猫语:如果你还不知道 FastAPI 是什么/有多好,请先看看我之前转载的 这篇文章,然后再阅读本文。今天分享的是一篇译文,译自 FastAPI 的官方文档,作者主要是将它与其它框架/库作了对比,介绍了 FastAPI 从它们身上吸收的一些亮点。阅读本文可以加深对 FastAPI 的理解,开阔对相关库的认知,更能知道优秀的开发者是如何从其它项目中吸收养分的。阅读愉快!
gRPC-Gateway 是一个遵循 gRPC HTTP 规范的 gRPC 到 JSON 代理生成器。它是 Google 协议缓冲编译器 protoc 的插件,可以读取 protobuf 服务定义并生成反向代理服务器,将 RESTful HTTP API 转换为 gRPC。该项目旨在帮助用户同时以 gRPC 和 RESTful 风格提供 API,并且具有以下核心优势:
Nav Inc.已经创建了一个开源模式定义和代码生成器,它使用GraphQL语法来定义事件和消息格式。选择GraphQL是因为它的表达能力和对开发人员的熟悉程度;Nav模式体系结构(NSA)不使用GraphQL runtime。
在元组周围可以使用括号。但千万不要在返回语句或条件语句中使用它们,除非将括号用于隐含的行继续或表示元组。
今天介绍如何使用Python杰出的文本处理功能,包括使用正则表达式将纯文本文件转换为用HTML和XML等语言标记的文件。如果不熟悉这些语言的人编写了一些文本,而你要在系统中使用并对其内容进行标记,就必需具备这些技能。
mall-tiny是一款基于SpringBoot+MyBatis-Plus的快速开发脚手架,目前在Github上已有1600+Star。它拥有完整的权限管理功能,支持使用MyBatis-Plus代码生成器生成代码,可对接mall项目的Vue前端,开箱即用。
好的代码风格,给人舒服的感觉,今天介绍一下谷歌的Python风格规范,由于规范比较多,将分为两次介绍。
没有规矩,不成方圆。代码任何一种语言都有一些约定俗成的编码规范,Python也不例外。Python非常重视代码的可读性,对代码布局和排版有更加严格的要求。虽然一些大型软件公司对自己公司程序员编写的代码在布局、结构、标识符命名等方面有一些特殊的要求,但其中很多内容和思想是相通的,目的也是一致的。这里重点介绍Python社区对代码编写的一些共同的要求、规范和一些常用的代码优化建议,最好在开始编写第一段代码的时候就要遵循这些规范和建议。 (1)严格使用缩进来体现代码的逻辑从属关系。Python对代码缩进是硬性要求
这个文件头中的mybatis-generator-config_1_0.dtd用于定义该配置文件中所有标签和属性的用法及限制。
市面上可用的 REST API 工具选项有很多,我们来看看其中一些开发人员最喜欢的工具。
市面上可用的 REST API 工具选项有很多,我们来看看开发人员最喜欢的一些工具。
在项目开发中,例如web项目的前后端分离开发,需要由前后端相关人员共同定义接口,编写接口文档。之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。一个好的接口文档能够帮助我们快速上手这类项目、便于阅读已有代码、对接接口自动化测试等等
现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。
本文探讨了小数据模式下的目标检测,由于数据稀有和注释费用的原因,只有有限数量的注释边界框可用。这是当今的一个常见挑战,因为机器学习被应用于许多新任务,在这些任务中,获得训练数据更具挑战性,例如在医生一生中有时只看到一次罕见疾病的医学图像中。在这项工作中,我们从生成建模的角度探讨了这个问题,方法是学习生成具有相关边界框的新图像,并将其用于训练目标检测器。我们表明,简单地训练先前提出的生成模型并不能产生令人满意的性能,因为它们是为了图像真实性而不是目标检测精度而优化的。为此,我们开发了一种具有新型展开机制的新模型,该机制联合优化生成模型和检测器,以使生成的图像提高检测器的性能。 我们表明,该方法在疾病检测和小数据行人检测这两个具有挑战性的数据集上优于现有技术,将NIH胸部X射线的平均精度提高了20%,定位精度提高了50%。
越来越多的人想要搭建一个属于自己的免费个人博客,记录下自己在技术上的学习历程,或是写一些文章。甚至有一天,可以将这些文章整理成集出版。这也不是没有可能的,个人所知很多深受大众喜爱的技术书籍就是这样诞生的,像阮一峰大神的《ES6 标准入门》、杨宝华等的《Docker 从入门到实践》、刘遄老师的《Linux 就该这么学》等等。
本文最初发布于 Max Desiatov 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。
这是一位朋友翻译的Google Python代码风格指南,很全面。可以作为公司的code review 标准,也可以作为自己编写代码的风格指南。希望对你有帮助。
这是一位大佬翻译的Google Python代码风格指南,很全面。可以作为公司的code review 标准,也可以作为自己编写代码的风格指南。希望对你有帮助。
这是怎么做到的呢?有一个辅助过程(bootstrap,引导程序,通常译作“自举”):对于一种语言的子集或早期版本,它的编译器是用其它的语言编写的。(我记得最初的 Pascal 编译器是用 FORTRAN 编写的!)然后用编译后的语言编写一个新的编译器,并用辅助的编译器来编译它。一旦新的编译器运行得足够好,辅助的编译器就会被废弃,并且该语言或新编译器的每个新版本,都会受到先前版本的编译器的编译能力的约束。
__next__:返回下一个可用的元素,如果没有元素了抛出StopIteration异常
https://github.com/shendeguize/GooglePythonStyleGuideCN
这是关注我的一位粉丝翻译的Google Python代码风格指南,很全面。可以作为公司的code review 标准,也可以作为自己编写代码的风格指南。希望对你有帮助。
这是一位朋友翻译的 Google Python代码风格指南,很全面。可以作为公司的 code review 标准,也可以作为自己编写代码的风格指南,希望对你有帮助
引用手册:一个生成器函数看起来像一个普通的函数,不同的是普通函数返回一个值,而一个生成器可以yield生成许多它所需要的值。当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环),PHP 将会在每次需要值的时候调用生成器函数,并在产生一个值之后保存生成器的状态,这样它就可以在需要产生下一个值的时候恢复调用状态。
pythonic是开发者们在写python代码过程中总结的编程习惯,崇尚优雅、明确、简单。就好比中文笔画,有先后顺序,最符合文字书写的习惯。
PEP8 PEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 PEP8 是什么呢,简单说就是一种编码规范,是为了让代码“更好看”,更容易被阅读。 具体有这些规范,参考 PEP 8 -- Style Guide for Python Code For example Yes: import os import sys No: import sys, os Yes: i = i + 1 submitted += 1 x = x*2 -
非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了《谷歌Python代码风格指南》 ,大家这样相互帮助,感觉真是太好。
非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了《谷歌Python代码风格指南》 ,大家这样相互帮助,感觉真是太好了。
默认情况下,python3源文件以UTF-8编码,所有字符串都是unicode字符串。同时可以指定源文件的不同编码 文件开头加上
Swagger是一个规范且完整API文档管理框架,可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
将 Swagger 生成器添加到 Startup.ConfigureServices 方法中的服务集合中:
选自eecis.udel 作者:Xiaoran Wang、Lori Pollock、K. Vijay-Shanker 机器之心编译 参与:熊猫 在阅读代码时,准确适当的注释能够给开发者提供很有价值的帮助。但并不是每一个需要阅读的代码都包含注释,这可能会让开发者白白花费更多用于理解代码的时间。特拉华大学软件分析实验室的一项研究试图通过数据驱动的技术来解决这一问题,为与对象相关的语句序列自动生成自然语言描述,从而帮助开发者更有效率地理解阅读代码。该论文也是 SANER 17(IEEE 软件分析演进与逆向工程国际
通过上面的一波实践,我们可以发现sa-plus确实是个有意思的框架。不仅提供了项目的基础功能,还提供了代码生成器,可以一键生成前后端及API文档代码,大大提高了开发效率。但是没有一种代码生成器是万能的,复杂的代码还是需要手写。sa-plus的权限功能把菜单和权限绑定在了一起,使用起来不太灵活,还是可以改进下的。
docsify是一个基于JavaScript 的文档生成器,它可以帮助你快速构建漂亮、响应式的文档网站。
领取专属 10元无门槛券
手把手带您无忧上云