文章类型

原创[MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目

[MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目
其它的工具插件可以单独获取。在OnAfterRenderAsync中调用初始化函数,并订阅OnSubmitting和OnInited事件,以便在提交事件触发时保存,以及文本状态变更时重新渲染。在wwwroot创建editorjs_index.html文件,并在body中引入editorjs.umd.js和各插件js文件。我们先要获取web应用的资源文件(js,css等),以便MAUI的视图呈现标准的Web UI。在script代码段中,创建LoadContent函数,用于加载EditorJs的初始内容。

原创[MAUI]模仿哔哩哔哩的一键三连

[MAUI]模仿哔哩哔哩的一键三连
的CodeBehind中,创建OnCanvasViewPaintSurface,通过给定起始角度为正上方,扫描角度为360对于100%进度,通过插值计算出当前进度对应的扫描角度,绘制出进度条。“三连按钮”是一组按钮,轻击时当做普通状态按钮使用,当长按 2 秒钟后,转为三连模式,可以控制并显示进度,并在进度完成时弹出一些泡泡。在本项目中,需要监听长按动作,当“三连按钮”长按2秒后,转为三连模式,此时需要监听手指释放情况,当时长不足时取消三连。当按钮被点击时此Timer会开。这些按钮用svg格式在html中。

原创[MAUI]集成高德地图组件至.NET MAUI Blazor项目

[MAUI]集成高德地图组件至.NET MAUI Blazor项目
地图组件在手机App中常用地理相关业务,如查看线下门店,设置导航,或选取地址等。是一个较为常见的组件。在.NET MAUI 中,有两种方案可以集成高德地图,一种是使用原生库绑定。但这种方案需要大量平台原生开发的知识,而且需要对每一个平台进行适配。在这里我介绍第二种方案:.NET MAUI Blazor + 高德地图JS API 2.0 库的实现。JS API 2.0 是高德开放平台基于WebGL的地图组件,可以将高德地图模块集成到.NET MAUI Blazor中的BlazorWebView控件。

原创[.NET项目实战] Elsa开源工作流组件应用(三):实战演练

[.NET项目实战] Elsa开源工作流组件应用(三):实战演练
之前的文章简单介绍了工作流和Elsa工作流库,这里再补充说明两点工作流的使用场景非常广泛,几乎涵盖了所有需要进行业务流程自动化管理的领域。学习一个开源库,最简单的方法就是看源码,Elsa的工作流引擎源码非常简单易懂,并且提供了非常丰富的示例代码,举一个例子:审批工作流示例这个审批流是这样的:作者发来一个文章,有两个审批人需要全部审批通过,文章才算通过,否则退回。

原创[.NET项目实战] Elsa开源工作流组件应用(二):内核解读

[.NET项目实战] Elsa开源工作流组件应用(二):内核解读
Elsa工作原理可以抽象理解为管道中间件 + 异步模型Elsa中,活动的变量的获取和设置都是异步的。Elsa定义了Variable类型作为异步操作的结果或者说是异步操作的占位符,这个变量在运行的时候才会填充数值。这与我们熟悉C#中的Task,或者js里的promise对象作用相同。输入Input,OutPut都属于 Variable。Elsa模拟了内存寄存器(MemoryRegister)以及Set和Get访问器实现异步模型。

原创深度观察2024中国系统架构师大会(SACC)

深度观察2024中国系统架构师大会(SACC)
今年的中国系统架构师大会(SACC)在我所在的城市广州举办,很荣幸受邀参加。这次能接触到国内最优秀的架构师,学习他们的架构思想和行业经验。对我而言非常有意义。大会分为上下午共4场,我参加了上午的多云多活架构设计专场和下午的AIGC专场。本篇文章就多云多活架构设计专场,我选取几位老师的观点进行分享。(我并不是架构师,只是对架构感兴趣,如有错误,还请指正)

原创[.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介

[.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介
工作流定义描述了一个工作流的结构,比如:名称,变量,包含的活动等,可以理解为一个工作流的模板。工作流定义在Elsa初始化时会“注册” 到资源池中,每个工作流定义都有一个唯一的ID。使用设计器生成的工作流,通过序列化成JSON字符串,并持久化到数据库。使用硬编码创建的工作流,在Elsa初始化时将工作流注册到工作流定义并持久化到数据库。实例化是根据定义创建一个工作流的实例,工作流实例包含工作流状态(WorkflowState)以及活动实例(ActivityState)。

原创在macOS中搭建.NET MAUI开发环境

在macOS中搭建.NET MAUI开发环境
在 Visual Studio Code 中,按 F5 键或单击“运行”>“启动调试”以调试 .NET MAUI 应用。在 macOS 上,建议的 Android SDK 目录值为 $HOME/Library/Android/sdk。此时已可以真机调试 Android 应用,如果真机调试不方便,我们需要安装 Android 模拟器。另外可以通过切换调试目标中的菜单,查看可用的镜像,选择一个镜像,或创建一个新的镜像。在 Visual Studio Code 的资源管理器中,打开项目sln文件,

原创将Abp默认事件总线改造为分布式事件总线

将Abp默认事件总线改造为分布式事件总线
定义NotificationEventData,用于传递自定义事件。set;set;set;set;在消费者端,定义一个事件处理器,用于处理自定义事件。在生产者端,触发自定义事件。运行程序,可以看到消费者端打印出了自定义事件。

原创[学习笔记]批量迁移数据库文件

[学习笔记]批量迁移数据库文件
更多移动用户数据库内容请查看官方文档 https://learn.microsoft.com/zh-cn/sql/relational-databases/databases/move-user-databases。注意,从 SQL Server 2008 R2 (10.50.x) 开始,全文目录已集成到数据库中,而不是存储在文件系统中。因此如果你的数据库是SQL Server 2008 R2(10.50.x) 之前的版本,你需要分别迁移数据库文件和日志文件。首先复制数据库文件到新的磁盘位置,比如。

原创[学习笔记]在CentOS7中用Docker方式安装Jenkins

[学习笔记]在CentOS7中用Docker方式安装Jenkins
Docker in Docker (以下简称 DinD)可以在 Container 中直接运行一个 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。容器内的Docker Daemon对外提供服务,每个运行中的容器,都是一个进程,这个进程都托管在Docker Daemon中,镜像和容器都在一个隔离的环境。Jenkins在构建时,需要一个独立的Docker环境用于打包镜像。网桥允许连接到同一网桥网络的容器进行通信,创建一个名为jenkins的网桥网络。

原创将ECharts图表插入到Word文档中

将ECharts图表插入到Word文档中
首先指定一个option,在官方示例 https://echarts.apache.org/examples/zh/index.html 中,随意找一个柱状图的sample,复制option对象内容到新创建的option.json文件中。echarts-convert在github上有众多版本,echarts-convert的代码来源于这里:https://github.com/wadezhan/billfeller.github.io/issues/85。将下载好的可执行文件解压放置在项目根目录下的。

原创DocTemplateTool - 可根据模板生成word或pdf文件的工具

DocTemplateTool - 可根据模板生成word或pdf文件的工具
你是否经常遇到这样的场景:产品运营有着大量的报告需求,或者给客户领导展现每周的运营报告?这些文档类的任务可以交给运营同事,他们负责文档排版和样式,你作为开发人员你只需要提供数据源,和一个映射表,告诉制作文档的人哪些字段可供使用。这样一来分工明确,减少了很多不必要的沟通成本。

原创[学习笔记]TypeScript查缺补漏(一):类

[学习笔记]TypeScript查缺补漏(一):类
private在编译后JavaScript中没有影响,仅对TypeScript编译器有影响,而使用#符号声明的私有属性在JavaScript中会被编译为常规的私有属性。Getter/Setter可以在不改变属性的访问权限的情况下,对属性的值进行更精细的控制。装饰器是使用 @ 符号来标识的特殊类型的函数,可以用来扩展类或方法的行为。尽管箭头函数是在对象的方法中定义的,但是它不会捕获到调用该方法的对象作为自己的this上下文。在箭头函数中,this不指向调用该函数的对象,而是指向定义该箭头函数时的上下文。

原创[MAUI]深入了解.NET MAUI Blazor与Vue的混合开发

[MAUI]深入了解.NET MAUI Blazor与Vue的混合开发
每个BlazorWebView控件包含根组件(RootComponent)定义,ComponentType是在应用程序启动时加载页面时的类型,该类型需要继承自Microsoft.AspNetCore.Components.IComponent,由于我们的导航是由MAUI处理的,因此我们不需要使用Blazor路由,直接使用Razor组件。开发应用需要一个独立的host项目。中引入,还有一种是使用并置的js文件,这种方式是所谓的"CodeBehind",因为更利于组织代码,这里我们使用并置的js文件。

原创[MAUI]实现动态拖拽排序网格

[MAUI]实现动态拖拽排序网格
拖拽控件悬停在当前控件上方时,将IsBeingDraggedOver设置为true,通知当前控件正在有拖拽控件悬停在其上方,同时在服务列表中寻找当前正在被拖拽的服务,将DropPlaceHolderItem设置为当前控件。当以比较快的速度,拖拽Tile经过较多的位置时,后面的Tile会短暂地替代原先的位置,导致拖拽中的Tile不在期望的Tile上方,而拖拽中的Tile与错误的Tile产生了交叠从而触发DraggedOver事件,导致错乱。其是在松开手指之后才向列表提交条目位置变更的命令。