摘要: Vue + Volo.Abp 实现OAuth2.0客户端授权模式认证 @[toc] Volo.Abp的[身份服务器模块](https://docs.abp.io/zh-Hans/abp/latest/Modules/IdentityServer)默认使用 [IdentityServer4](https://identityserver4.readthedocs.io/ 阅读全文
posted @ 2023-07-07 11:32 林晓lx 阅读(1726) 评论(1) 推荐(4)
摘要: [MAUI]用纯C#代码写两个漂亮的时钟 @[toc] 谷歌在2021年5月份推出的Android 12给我们带来了新的UI设计规范Material You,你是否已经体验到了Material You设计的魅力了呢? 在原生主屏幕启动器中,有一个时钟小部件。这个小部件可以选择表盘风格。 > ![在这里插入图片描述](https://img2 阅读全文
posted @ 2023-07-01 19:35 林晓lx 阅读(3791) 评论(7) 推荐(17)
摘要: [MAUI]弧形进度条与弧形滑块的交互实现 @[toc] 进度条(ProgressBar)用于展示任务的进度,告知用户当前状态和预期; 滑块(Slider)通过拖动滑块在一个固定区间内进行选择数值范围。 进度条和滑块都是进度值在UI界面的映射,其中滑块可以抽象成为带控制柄(Thumb)的进度条,是界面元素和进度值的双向绑定。 在某些场景下,我 阅读全文
posted @ 2023-06-18 15:02 林晓lx 阅读(2305) 评论(19) 推荐(19)
摘要: [MAUI]写一个跨平台富文本编辑器 @[toc] 富文本编辑器是一种所见即所得(what you see is what you get 简称 WYSIWYG)文本编辑器,用户在编辑器中输入内容和所做的样式修改,都会直接反映在编辑器中。 在Web端常见的有[Quill](https://github.com/quilljs/quill 阅读全文
posted @ 2023-06-11 23:15 林晓lx 阅读(3508) 评论(8) 推荐(25)
摘要: Volo.Abp升级小记(二)创建全新微服务模块 @[toc] 假设有一个按照[官方sample](https://docs.abp.io/zh-Hans/abp/latest/Samples/Microservice-Demo)搭建的微服务项目,并安装好了abp-cli。 需要创建一个名为GDMK.CAH.Common的模块,并在模块中创建标签管 阅读全文
posted @ 2023-06-09 14:45 林晓lx 阅读(566) 评论(1) 推荐(0)
摘要: [MAUI程序设计] 用Handler实现自定义跨平台控件 @[toc] 今天来谈一谈MAUI跨平台技术的核心概念——跨平台控件。 无论是MAUI,Xamarin.Forms还是其它的跨平台技术,他们是多个不同平台功能的抽象层,利用通用的方法实现所谓“一次开发,处处运行”。 跨平台框架需要考虑通用方法在各平台的兼容,但由于各原生平台(官方将原生称为本机)功能 阅读全文
posted @ 2023-06-04 18:37 林晓lx 阅读(2389) 评论(6) 推荐(22)
摘要: [MAUI]模仿Chrome下拉标签页的交互实现 今天来说说怎样在.NET MAUI 中制作一个灵动的类标签页控件,这类控件常用于页面中多个子页面的导航功能。比如在手机版的Chrome中,当用户在网页中下拉时将出现“新建标签页”,“刷新”,“关闭标签页”三个选项,通过不间断的横向手势滑动,可以在这三个选项之间切换。浏览网页常用选项融入到了原“下拉刷新”交互中,对比传统交互方式它更显便捷和流畅,根据Steve Krug之《Don't Make Me Think》的核心思想,用户无需思考点击次序,只需要使用基础动作就能完成交互。 阅读全文
posted @ 2023-05-28 18:00 林晓lx 阅读(1981) 评论(20) 推荐(35)
摘要: [MAUI]在.NET MAUI中复刻苹果Cover Flow Cover Flow是iTunes和Finder中的一个视图选项,允许用户使用水平滚动的图像查看他们的音乐库或文件。Cover Flow的交互设计非常优秀:通过指尖滑动从堆叠的专辑库中翻动和挑选一张专辑的交互方式不仅有趣,而且在有限的屏幕空间内,展现了更多的专辑封面。那个是乔布斯时代的苹果——使事情变得简单和有趣。最近我很怀念这个功能,但由于我手头上已经没有任何一台设备能访问这个功能了。于是在.NET MAUI中复刻了Cover Flow。 阅读全文
posted @ 2023-05-21 23:24 林晓lx 阅读(3384) 评论(27) 推荐(58)
摘要: 今天下午在排查一个EF问题时,遇到了个很隐蔽的坑,特此记录。 问题 使用ef执行Insert对象到某表时报错,此对象的Address为空: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';列不允许有 Null 值。INSERT 失败。 检查数据库和迁移文件时发现Address 阅读全文
posted @ 2023-05-18 19:05 林晓lx 阅读(796) 评论(2) 推荐(10)
摘要: [MAUI程序设计]界面多态与实现 .NET MAUI 实现界面多态有很多种方式,今天主要来说说在日常开发中常见的需求该如何应对。 需求一:在不同设备上使用不同 UI 外观 .NET MAUI是一个跨平台的UI框架,可在一个项目中开发Android、iOS、Windows、MacOS等多个平台的应用。在不同设备上我们希望应用的界面或交 阅读全文
posted @ 2023-05-14 17:47 林晓lx 阅读(3648) 评论(7) 推荐(19)
摘要: [MAUI]模仿iOS多任务切换卡片滑动的交互实现 @ 看了上一篇博文的评论,大家对MAUI还是比较感兴趣的,非常感谢大家的关注,这个专栏我争取周更😉。 App之间的多任务切换相信你们都很熟悉。苹果设备从iOS9开始使用水平排列的叠层卡片来展现多任务 动图来自iPhone 使用手册 - 在 iPhone 上的应用之间切换 这个设计利用屏幕深度(z方 阅读全文
posted @ 2023-05-02 21:48 林晓lx 阅读(3942) 评论(11) 推荐(61)
摘要: [MAUI]模仿网易云音乐黑胶唱片的交互实现 @ 用过网易云音乐App的同学应该都比较熟悉它播放界面。 这是一个良好的交互设计,留声机的界面隐喻准确地向人们传达产品概念和使用方法:当手指左右滑动时,便模拟了更换唱盘从而导向切换歌曲的交互功能。 今天在 .NET MAUI 中我们来实现这个交互效果,先来看看效果: 使用.NET MAU实现跨平台支 阅读全文
posted @ 2023-04-25 08:55 林晓lx 阅读(4605) 评论(32) 推荐(70)
摘要: 本文将从GB/T 22239《信息安全技术 网络安全等级保护基本要求》规定的安全计算环境中解读、摘要若干安全要求,结合Abp框架,对站点进行安全升级。 【身份鉴别】应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 解决方案 设置密码最小长度 密码由数字、字 阅读全文
posted @ 2023-04-18 13:48 林晓lx 阅读(924) 评论(1) 推荐(9)
摘要: [MAUI]模仿微信“按住-说话”的交互实现 @ .NET MAUI 跨平台框架包含了识别平移手势的功能,在之前的博文[MAUI 项目实战] 手势控制音乐播放器(二): 手势交互中利用此功能实现了pan-pit拖拽系统。 简单来说就是拖拽物(pan)体到坑(pit)中,手势容器控件PanContainer描述了pan运动和pit位置的关系,并在 阅读全文
posted @ 2023-04-15 20:31 林晓lx 阅读(1678) 评论(5) 推荐(19)
摘要: 漏洞说明: 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Web脚本代码(html、javascript、css等),当用户浏览该页面时, 阅读全文
posted @ 2023-04-14 18:39 林晓lx 阅读(781) 评论(1) 推荐(2)
摘要: @ 用户找回密码,确切地说是重置密码,为了保证用户账号安全,原始密码将不再以明文的方式找回,而是通过短信或者邮件的方式发送一个随机的重置校验码(带校验码的页面连接),用户点击该链接,跳转到重置密码页面,输入新的密码。这个重置校验码是一次性的,用户重置密码后立即失效。 用户找回密码是在用户没有登录时进 阅读全文
posted @ 2023-04-14 11:59 林晓lx 阅读(638) 评论(0) 推荐(4)
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证 @ 免登录验证是用户在首次两步验证通过后,在常用的设备(浏览器)中,在一定时间内不需要再次输入验证码直接登录。 常见的网页上提示“7天免登录验证”或“信任此设备,7天内无需两步验证”等内容。 这样可以提高用户的体验。但同时也会带来一定的安全风险,因此需要用户自己决定是否开启。 原理 常用的实现方式是 阅读全文
posted @ 2023-04-12 21:24 林晓lx 阅读(446) 评论(0) 推荐(3)
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(二):Vue网页端开发 @ 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先添加全局对象: loginForm: 登录表单对象 twoFactorData: 两步验证数据, showTwoFactorSuccess: 是否显示两步验证成功提示 l 阅读全文
posted @ 2023-04-12 13:54 林晓lx 阅读(540) 评论(1) 推荐(5)
摘要: [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 这是一篇系列博文。请关注我,学习更多.NET MAUI开发知识! [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 [MAUI 项目实战] 手势控制音乐播放器(三): 动画 [MAUI 项目实战] 手势控制音乐播放器(四): 阅读全文
posted @ 2023-04-09 18:13 林晓lx 阅读(509) 评论(0) 推荐(2)
摘要: [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条 @ 我们将绘制一个圆形的音乐播放控件,它包含一个圆形的进度条、专辑页面和播放按钮。 关于图形绘制 使用MAUI的绘制功能,需要Microsoft.Maui.Graphics库。 Microsoft.Maui.Graphics 是一个实验性的跨平台图形库,它可以在 .NET MAUI 中使用。它提供了 阅读全文
posted @ 2023-04-09 10:33 林晓lx 阅读(442) 评论(0) 推荐(3)
摘要: [MAUI 项目实战] 手势控制音乐播放器(三): 动画 @ 上一章节我们创建了手势容器控件PanContainer,它对拖拽物进行包装并响应了平移手势和点击手势。 拖拽物现在虽然可以响应手势操作,但视觉效果较生硬,一个优秀的设计要求UI界面交互流畅,页面元素显得灵动,则少不了动画(Animation)。 本章节我们对拖拽物加入过渡动画 吸附动画 还记的上 阅读全文
posted @ 2023-04-09 00:18 林晓lx 阅读(289) 评论(0) 推荐(1)
摘要: [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 @ 原理 定义一个拖拽物,和它拖拽的目标,拖拽物可以理解为一个平底锅(pan),拖拽目标是一个坑(pit),当拖拽物进入坑时,拖拽物就会被吸附在坑里。可以脑补一下下图: 你问我为什么是平底锅和坑,当然了在微软官方的写法里pan是平移的意思,而不是指代平底锅。只是通过同义词来方便理解 坑就是正好是平底 阅读全文
posted @ 2023-04-08 18:00 林晓lx 阅读(340) 评论(1) 推荐(4)
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(一):认证模块 @目录原理用户验证码校验模块双因素认证模块改写登录项目地址 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系统支持双因素认证(Two-Factor Authentication)功能。 两步验证,又称双重验证或 阅读全文
posted @ 2023-04-07 22:02 林晓lx 阅读(1194) 评论(0) 推荐(4)
摘要: 假设有User表 public class User : Entity<int> { public int Id { get; set; } public string UserName { get; set; } public string Name { get; set; } public st 阅读全文
posted @ 2023-04-05 08:30 林晓lx 阅读(671) 评论(2) 推荐(3)
摘要: @ 现象 默认地,Abp的语言提供程序将返回的CultureInfo为En,在一些默认实现的接口(比如/api/TokenAuth/Authenticate)返回的错误信息是英文 目标是改成简体中文显示,但是即便我们在AbpSettings表中加入了DefaultLanguage为"zh-Hans" 阅读全文
posted @ 2023-04-04 20:56 林晓lx 阅读(557) 评论(0) 推荐(0)
摘要: [Volo.Abp升级笔记]使用旧版Api规则替换RESTful Api以兼容老程序 @ Volo.Abp 配置应用层自动生成Controller,增删查改服务(CrudAppService)将会以RESTful Api的方式生成对应的接口 (官方文档),这与旧版本的Abp区别很大。RESTful固然好,虽然项目里新的Api会逐步使用RESTful Api代替旧的,但在前后端分离的项 阅读全文
posted @ 2023-03-29 11:22 林晓lx 阅读(376) 评论(0) 推荐(3)
摘要: 本周在做接口动态传参的时候思考了个问题:如何把一个json字符串,转成C#动态类? 比如由 { 'userId': 100, 'id': 1, 'title': 'hello world', 'completed': false } 生成 dynamic obj = new { userId = 1 阅读全文
posted @ 2023-03-19 09:01 林晓lx 阅读(353) 评论(0) 推荐(1)
摘要: @ 准备工作 安装python3环境 申请一个可用的语音转换API,此篇以Microsoft Azure Speech为例 在Microsoft Azure 市场中搜索speech关键字找到语音服务。并创建好服务实例 在资源中找到创建的服务并查看 在此处点击显示密钥,我们要记住key值和locati 阅读全文
posted @ 2023-03-17 19:29 林晓lx 阅读(950) 评论(0) 推荐(0)
摘要: 集成RocketChat至现有的.Net项目中,为ChatGPT铺路 @ 前言 今天我们来聊一聊一个Paas的方案,如何集成到一个既有的项目中。 以其中一个需求为例子:在产品项目中,加入IM(即时通信)功能,开始徒手撸代码,会发现工作量很大,去github找开源项目,结果也可能事与愿违:功能不够强大,或者用不同的语言编写的,编译出来程序集无法集成到项目中。 可能当下最 阅读全文
posted @ 2023-03-01 16:52 林晓lx 阅读(1155) 评论(3) 推荐(5)
摘要: [MAUI 项目实战] 音乐播放器(三):界面交互 UI设计的本质是对于产品的理解在界面中多种形式的映射,当需求和定位不同时,对相同的功能表达出了不同的界面和交互方式。作为播放器,界面可以是千差万别的。《番茄播放器》的iOS平台上我开发了传统版本,和基于手势播放的版本。它们界面不同,但用的同一个播放内核。作为播放内核项目,在MatoMusic.Core的工作已经结束。本系列博文重点还是在播放器思路的解读,关于MAUI动画交互,我打算有时间另外写博客(这里给自己挖个坑)。 本项目中朴实无华的播放器界面部分,我想仅作为辅佐播放内核的示例,对于页面和控件的Xaml部分不会展开描述。 阅读全文
posted @ 2023-02-27 17:18 林晓lx 阅读(1057) 评论(1) 推荐(10)
摘要: Rocket.Chat 的业务数据主要存储于mongodb数据库的rocketchat库中,聊天中通过发送文件功能产生的文件储存于/app/uploads中(文件方式设置为"FileSystem"),因此在对Rocket.Chat做数据移动或备份主要分为两步,数据库备份和文件备份。 前提 已在本地或 阅读全文
posted @ 2023-02-21 17:23 林晓lx 阅读(575) 评论(0) 推荐(0)
摘要: @目录方式一,使用SQL Server Management Studio准备工作收缩数据库移动数据库数据库备份还原数据库方式二,使用命令行工具准备工作收缩数据库移动数据库备份数据库还原数据库 本文将介绍如何在日常项目中,对SQL server数据库做备份和还原工作,SQL server的备份/还原 阅读全文
posted @ 2023-02-21 17:21 林晓lx 阅读(875) 评论(0) 推荐(1)
摘要: [MAUI 项目实战] 音乐播放器(二):播放内核 曲目排序,原理是通过交换位置实现的,iOS和Android平台都有自己的可排序列表控件,在对选中的条目进行排序(往往是提起条目-拖拽-释放)的过程中,触发事件往往提供当前条目。在传统播放器随机播放时,如果下一曲不是我想听的,我仍然想听上一曲,由于上一曲按钮是随机触发的时机 阅读全文
posted @ 2023-02-12 00:27 林晓lx 阅读(727) 评论(0) 推荐(4)
摘要: [MAUI 项目实战] 音乐播放器(一):概述与架构 为什么想起来这个项目了呢?这是一个Windows Phone 8的老项目,2014年用作为兴趣写了个叫“番茄播放器”的App,顺便提高编程技能。这个项目的架构历经多次迁移,从WP8到UWP再到Xamarin.Forms。去年底随着MAUI的正式发布,又尝试把它迁移到MAUI上来。 阅读全文
posted @ 2023-02-12 00:25 林晓lx 阅读(1821) 评论(2) 推荐(19)
摘要: 安装 安装源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 安装本体 yum -y install postgr 阅读全文
posted @ 2023-02-12 00:14 林晓lx 阅读(190) 评论(0) 推荐(0)
摘要: 适用于AbpBoilerplate的RocketChat Api库 RocketChat 适用于AbpBoilerplate的RocketChat Api库 Rocket.Chat 是一个免费、开源、可扩展、高度可定制且安全的平台,可让您与团队进行交流和协作、共享文件和实时聊天(https://www.rocket.chat/) Rocket.Chat服务的安装请阅 阅读全文
posted @ 2023-02-12 00:11 林晓lx 阅读(134) 评论(0) 推荐(0)
摘要: Redis 5.0+ 官方文档:https://redis.io/download/#redis-downloads sudo yum install redis RabbitMQ 3.7.11+ 官方文档:https://www.rabbitmq.com/install-rpm.html 配置安装 阅读全文
posted @ 2023-02-12 00:08 林晓lx 阅读(61) 评论(0) 推荐(0)
摘要:  Abp.Zero 手机号免密登录验证与号码绑定功能的实现(三):Vue网页端开发 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过currentVerifyingType 来区别当前验证码种类。也就是在服务端的Purpose目的。 阅读全文
posted @ 2022-11-01 18:15 林晓lx 阅读(262) 评论(0) 推荐(0)
摘要: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(二):改造Abp默认实现 接下来我们重写原Abp的部分实现,来驳接手机号相关业务。 改造User类 重写PhoneNumber使得电话号码为必填项,和中国大陆手机号11位长度 public new const int MaxPhoneNumberLength = 11; [Required] [StringLength(Ma 阅读全文
posted @ 2022-11-01 18:13 林晓lx 阅读(212) 评论(0) 推荐(0)
摘要: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号免密登录验证与号码绑定功能的实现(二):改造Abp默认实现 Abp.Zero 手机号免密登录验证与号 阅读全文
posted @ 2022-11-01 18:12 林晓lx 阅读(683) 评论(0) 推荐(4)