摘要: [MAUI]在.NET MAUI中复刻苹果Cover Flow Cover Flow是iTunes和Finder中的一个视图选项,允许用户使用水平滚动的图像查看他们的音乐库或文件。Cover Flow的交互设计非常优秀:通过指尖滑动从堆叠的专辑库中翻动和挑选一张专辑的交互方式不仅有趣,而且在有限的屏幕空间内,展现了更多的专辑封面。那个是乔布斯时代的苹果——使事情变得简单和有趣。最近我很怀念这个功能,但由于我手头上已经没有任何一台设备能访问这个功能了。于是在.NET MAUI中复刻了Cover Flow。 阅读全文
posted @ 2023-05-21 23:24 林晓lx 阅读(3212) 评论(27) 推荐(58) 编辑
摘要: 今天下午在排查一个EF问题时,遇到了个很隐蔽的坑,特此记录。 问题 使用ef执行Insert对象到某表时报错,此对象的Address为空: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';列不允许有 Null 值。INSERT 失败。 检查数据库和迁移文件时发现Address 阅读全文
posted @ 2023-05-18 19:05 林晓lx 阅读(604) 评论(1) 推荐(9) 编辑
摘要: [MAUI程序设计]界面多态与实现 .NET MAUI 实现界面多态有很多种方式,今天主要来说说在日常开发中常见的需求该如何应对。 需求一:在不同设备上使用不同 UI 外观 .NET MAUI是一个跨平台的UI框架,可在一个项目中开发Android、iOS、Windows、MacOS等多个平台的应用。在不同设备上我们希望应用的界面或交 阅读全文
posted @ 2023-05-14 17:47 林晓lx 阅读(3222) 评论(7) 推荐(19) 编辑
摘要: [MAUI]模仿iOS多任务切换卡片滑动的交互实现 @ 看了上一篇博文的评论,大家对MAUI还是比较感兴趣的,非常感谢大家的关注,这个专栏我争取周更😉。 App之间的多任务切换相信你们都很熟悉。苹果设备从iOS9开始使用水平排列的叠层卡片来展现多任务 动图来自iPhone 使用手册 - 在 iPhone 上的应用之间切换 这个设计利用屏幕深度(z方 阅读全文
posted @ 2023-05-02 21:48 林晓lx 阅读(3637) 评论(11) 推荐(61) 编辑
摘要: [MAUI]模仿网易云音乐黑胶唱片的交互实现 @ 用过网易云音乐App的同学应该都比较熟悉它播放界面。 这是一个良好的交互设计,留声机的界面隐喻准确地向人们传达产品概念和使用方法:当手指左右滑动时,便模拟了更换唱盘从而导向切换歌曲的交互功能。 今天在 .NET MAUI 中我们来实现这个交互效果,先来看看效果: 使用.NET MAU实现跨平台支 阅读全文
posted @ 2023-04-25 08:55 林晓lx 阅读(4362) 评论(31) 推荐(69) 编辑
摘要: 本文将从GB/T 22239《信息安全技术 网络安全等级保护基本要求》规定的安全计算环境中解读、摘要若干安全要求,结合Abp框架,对站点进行安全升级。 【身份鉴别】应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 解决方案 设置密码最小长度 密码由数字、字 阅读全文
posted @ 2023-04-18 13:48 林晓lx 阅读(780) 评论(1) 推荐(9) 编辑
摘要: [MAUI]模仿微信“按住-说话”的交互实现 @ .NET MAUI 跨平台框架包含了识别平移手势的功能,在之前的博文[MAUI 项目实战] 手势控制音乐播放器(二): 手势交互中利用此功能实现了pan-pit拖拽系统。 简单来说就是拖拽物(pan)体到坑(pit)中,手势容器控件PanContainer描述了pan运动和pit位置的关系,并在 阅读全文
posted @ 2023-04-15 20:31 林晓lx 阅读(1240) 评论(5) 推荐(19) 编辑
摘要: 漏洞说明: 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Web脚本代码(html、javascript、css等),当用户浏览该页面时, 阅读全文
posted @ 2023-04-14 18:39 林晓lx 阅读(509) 评论(1) 推荐(2) 编辑
摘要: @ 用户找回密码,确切地说是重置密码,为了保证用户账号安全,原始密码将不再以明文的方式找回,而是通过短信或者邮件的方式发送一个随机的重置校验码(带校验码的页面连接),用户点击该链接,跳转到重置密码页面,输入新的密码。这个重置校验码是一次性的,用户重置密码后立即失效。 用户找回密码是在用户没有登录时进 阅读全文
posted @ 2023-04-14 11:59 林晓lx 阅读(456) 评论(0) 推荐(4) 编辑
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(三):免登录验证 @ 免登录验证是用户在首次两步验证通过后,在常用的设备(浏览器)中,在一定时间内不需要再次输入验证码直接登录。 常见的网页上提示“7天免登录验证”或“信任此设备,7天内无需两步验证”等内容。 这样可以提高用户的体验。但同时也会带来一定的安全风险,因此需要用户自己决定是否开启。 原理 常用的实现方式是 阅读全文
posted @ 2023-04-12 21:24 林晓lx 阅读(340) 评论(0) 推荐(3) 编辑
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(二):Vue网页端开发 @ 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先添加全局对象: loginForm: 登录表单对象 twoFactorData: 两步验证数据, showTwoFactorSuccess: 是否显示两步验证成功提示 l 阅读全文
posted @ 2023-04-12 13:54 林晓lx 阅读(384) 评论(1) 推荐(5) 编辑
摘要: [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 这是一篇系列博文。请关注我,学习更多.NET MAUI开发知识! [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 [MAUI 项目实战] 手势控制音乐播放器(三): 动画 [MAUI 项目实战] 手势控制音乐播放器(四): 阅读全文
posted @ 2023-04-09 18:13 林晓lx 阅读(369) 评论(0) 推荐(2) 编辑
摘要: [MAUI 项目实战] 手势控制音乐播放器(四):圆形进度条 @ 我们将绘制一个圆形的音乐播放控件,它包含一个圆形的进度条、专辑页面和播放按钮。 关于图形绘制 使用MAUI的绘制功能,需要Microsoft.Maui.Graphics库。 Microsoft.Maui.Graphics 是一个实验性的跨平台图形库,它可以在 .NET MAUI 中使用。它提供了 阅读全文
posted @ 2023-04-09 10:33 林晓lx 阅读(320) 评论(0) 推荐(3) 编辑
摘要: [MAUI 项目实战] 手势控制音乐播放器(三): 动画 @ 上一章节我们创建了手势容器控件PanContainer,它对拖拽物进行包装并响应了平移手势和点击手势。 拖拽物现在虽然可以响应手势操作,但视觉效果较生硬,一个优秀的设计要求UI界面交互流畅,页面元素显得灵动,则少不了动画(Animation)。 本章节我们对拖拽物加入过渡动画 吸附动画 还记的上 阅读全文
posted @ 2023-04-09 00:18 林晓lx 阅读(223) 评论(0) 推荐(1) 编辑
摘要: [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 @ 原理 定义一个拖拽物,和它拖拽的目标,拖拽物可以理解为一个平底锅(pan),拖拽目标是一个坑(pit),当拖拽物进入坑时,拖拽物就会被吸附在坑里。可以脑补一下下图: 你问我为什么是平底锅和坑,当然了在微软官方的写法里pan是平移的意思,而不是指代平底锅。只是通过同义词来方便理解 坑就是正好是平底 阅读全文
posted @ 2023-04-08 18:00 林晓lx 阅读(273) 评论(1) 推荐(4) 编辑
摘要: 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(一):认证模块 @目录原理用户验证码校验模块双因素认证模块改写登录项目地址 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系统支持双因素认证(Two-Factor Authentication)功能。 两步验证,又称双重验证或 阅读全文
posted @ 2023-04-07 22:02 林晓lx 阅读(612) 评论(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 阅读(501) 评论(2) 推荐(3) 编辑
摘要: @ 现象 默认地,Abp的语言提供程序将返回的CultureInfo为En,在一些默认实现的接口(比如/api/TokenAuth/Authenticate)返回的错误信息是英文 目标是改成简体中文显示,但是即便我们在AbpSettings表中加入了DefaultLanguage为"zh-Hans" 阅读全文
posted @ 2023-04-04 20:56 林晓lx 阅读(325) 评论(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 阅读(264) 评论(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 阅读(240) 评论(0) 推荐(1) 编辑
摘要: @ 准备工作 安装python3环境 申请一个可用的语音转换API,此篇以Microsoft Azure Speech为例 在Microsoft Azure 市场中搜索speech关键字找到语音服务。并创建好服务实例 在资源中找到创建的服务并查看 在此处点击显示密钥,我们要记住key值和locati 阅读全文
posted @ 2023-03-17 19:29 林晓lx 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 集成RocketChat至现有的.Net项目中,为ChatGPT铺路 @ 前言 今天我们来聊一聊一个Paas的方案,如何集成到一个既有的项目中。 以其中一个需求为例子:在产品项目中,加入IM(即时通信)功能,开始徒手撸代码,会发现工作量很大,去github找开源项目,结果也可能事与愿违:功能不够强大,或者用不同的语言编写的,编译出来程序集无法集成到项目中。 可能当下最 阅读全文
posted @ 2023-03-01 16:52 林晓lx 阅读(902) 评论(2) 推荐(5) 编辑
摘要: [MAUI 项目实战] 音乐播放器(三):界面交互 UI设计的本质是对于产品的理解在界面中多种形式的映射,当需求和定位不同时,对相同的功能表达出了不同的界面和交互方式。作为播放器,界面可以是千差万别的。《番茄播放器》的iOS平台上我开发了传统版本,和基于手势播放的版本。它们界面不同,但用的同一个播放内核。作为播放内核项目,在MatoMusic.Core的工作已经结束。本系列博文重点还是在播放器思路的解读,关于MAUI动画交互,我打算有时间另外写博客(这里给自己挖个坑)。 本项目中朴实无华的播放器界面部分,我想仅作为辅佐播放内核的示例,对于页面和控件的Xaml部分不会展开描述。 阅读全文
posted @ 2023-02-27 17:18 林晓lx 阅读(921) 评论(1) 推荐(10) 编辑
摘要: Rocket.Chat 的业务数据主要存储于mongodb数据库的rocketchat库中,聊天中通过发送文件功能产生的文件储存于/app/uploads中(文件方式设置为"FileSystem"),因此在对Rocket.Chat做数据移动或备份主要分为两步,数据库备份和文件备份。 前提 已在本地或 阅读全文
posted @ 2023-02-21 17:23 林晓lx 阅读(342) 评论(0) 推荐(0) 编辑
摘要: @目录方式一,使用SQL Server Management Studio准备工作收缩数据库移动数据库数据库备份还原数据库方式二,使用命令行工具准备工作收缩数据库移动数据库备份数据库还原数据库 本文将介绍如何在日常项目中,对SQL server数据库做备份和还原工作,SQL server的备份/还原 阅读全文
posted @ 2023-02-21 17:21 林晓lx 阅读(601) 评论(0) 推荐(1) 编辑
摘要: [MAUI 项目实战] 音乐播放器(二):播放内核 曲目排序,原理是通过交换位置实现的,iOS和Android平台都有自己的可排序列表控件,在对选中的条目进行排序(往往是提起条目-拖拽-释放)的过程中,触发事件往往提供当前条目。在传统播放器随机播放时,如果下一曲不是我想听的,我仍然想听上一曲,由于上一曲按钮是随机触发的时机 阅读全文
posted @ 2023-02-12 00:27 林晓lx 阅读(543) 评论(0) 推荐(4) 编辑
摘要: [MAUI 项目实战] 音乐播放器(一):概述与架构 为什么想起来这个项目了呢?这是一个Windows Phone 8的老项目,2014年用作为兴趣写了个叫“番茄播放器”的App,顺便提高编程技能。这个项目的架构历经多次迁移,从WP8到UWP再到Xamarin.Forms。去年底随着MAUI的正式发布,又尝试把它迁移到MAUI上来。 阅读全文
posted @ 2023-02-12 00:25 林晓lx 阅读(1568) 评论(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 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 适用于AbpBoilerplate的RocketChat Api库 RocketChat 适用于AbpBoilerplate的RocketChat Api库 Rocket.Chat 是一个免费、开源、可扩展、高度可定制且安全的平台,可让您与团队进行交流和协作、共享文件和实时聊天(https://www.rocket.chat/) Rocket.Chat服务的安装请阅 阅读全文
posted @ 2023-02-12 00:11 林晓lx 阅读(83) 评论(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 阅读(42) 评论(0) 推荐(0) 编辑
摘要:  Abp.Zero 手机号免密登录验证与号码绑定功能的实现(三):Vue网页端开发 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。 首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过currentVerifyingType 来区别当前验证码种类。也就是在服务端的Purpose目的。 阅读全文
posted @ 2022-11-01 18:15 林晓lx 阅读(174) 评论(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 阅读(155) 评论(0) 推荐(0) 编辑
摘要: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号免密登录验证与号码绑定功能的实现(二):改造Abp默认实现 Abp.Zero 手机号免密登录验证与号 阅读全文
posted @ 2022-11-01 18:12 林晓lx 阅读(586) 评论(0) 推荐(4) 编辑
摘要: ​ 最近在做一个生成文档的需求。通过先制作一个包含各字段占位符的文档模板,导入这个模板并填写内容替换掉占位符,再输出成最终文件。 由于版式固定,安全性更好,业务上常用Pdf作为最终标准化的格式, 在.Net平台下,可以使用PdfSharp导入,,导出Pdf文档。这次做一个生成电子处方Pdf的小示例: 阅读全文
posted @ 2022-10-25 15:47 林晓lx 阅读(1030) 评论(2) 推荐(0) 编辑
摘要: 适用于AbpBoilerplate的阿里云腾讯云Sms短信服务 Sms 适用于AbpBoilerplate的短信服务(Short Message Service,SMS)模块,通过简单配置即可使用,仅更改一处代码即可切换短信服务提供商。 Aliyun.Sms由阿里云Sms提供服务(https://www.aliyun.com/product/sms) Tence 阅读全文
posted @ 2022-10-24 18:54 林晓lx 阅读(80) 评论(0) 推荐(0) 编辑
摘要: ExcelPatternTool Excel表格-数据库互导工具 介绍: 指定Pattern文件-一个规则描述的json文档,基于此规则实现Excel表格与数据库之间的导入导出,校验等功能。 特点: 小巧,轻量化的命令行工具 基于json文档的配置 支持Excel97-2003(xls)与Excel 阅读全文
posted @ 2022-08-01 17:45 林晓lx 阅读(764) 评论(2) 推荐(2) 编辑
摘要: [学习笔记]Linux + Nginx环境下部署 Web 站点 ​部署后端程序,请阅读: [学习笔记]Linux环境下部署 .Net5 程序 - 林晓lx - 博客园 (cnblogs.com) 打包项目 以Vue项目为例,首先打包站点,前往项目的根目录并键入: yarn build 等待打包结束,成功后将在根目录下生成dist文件夹 ​ 用Zip压缩dist文 阅读全文
posted @ 2022-07-21 19:58 林晓lx 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发 ​简短回顾一下微信小程序端的流程: 用户通过扫码进入小程序的鉴权页面,更新状态到ACCESSED已扫码 用户点击确认授权,微信通过wx.login()接口获取第三方登录的必要信息:Code登录凭证。 微信小程序主要为用户授权行为提供交互功能,用户在扫码之后,提供一个交互UI,如下: ​ 在使用 Ab 阅读全文
posted @ 2022-07-19 17:12 林晓lx 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 使用 Abp.Zero 搭建第三方登录模块(三):网页端开发 ​简短回顾一下网页端的流程,总的来说网页端的职责有三: 生成一个随机字符作为鉴权会话的临时Token, 生成一个小程序码, Token作为参数固化于小程序码当中 监控整个鉴权过程状态,一旦状态变为AUTHORIZED(已授权)则获取小程序登录凭证code。调用ExternalAuthenticate 阅读全文
posted @ 2022-07-19 17:08 林晓lx 阅读(834) 评论(1) 推荐(2) 编辑
摘要: 使用 Abp.Zero 搭建第三方登录模块(一):原理篇 这是一篇系列博文,我将从原理分析、设计到代码编写,搭建一套基于微信小程序登录的网站第三方登录模块: 使用 Abp.Zero 搭建第三方登录模块(一):原理篇 - 林晓lx - 博客园 (cnblogs.com) 使用 Abp.Zero 搭建第三方登录模块(二):服务端开发 - 林晓lx - 博客园 阅读全文
posted @ 2022-06-24 11:07 林晓lx 阅读(1097) 评论(2) 推荐(2) 编辑