大象笔记

知者行之始,行者知之成

ASP.NET 使用 EF Core 连接 MySQL 8.0

版本 ASP.NET Core in .NET 8.0 MySQL 8.0 EF Core 是什么 Entity Framework Core (中文名称更抽象,还是记住英文名吧),即 EF Core, 是微软官方的 ORM(对象关系映射)框架,它允许开发者使用 .NET 对象来操作数据库,从而避免了直接编写大量的数据访问代码。EF Core 支持: 多种数据库,如 SQL Server、MySQL、PostgreSQL 和 SQLite 等 支持跨平台 Windows, Linux 都可以。而我的服务器基本都是 Ubuntu 加 MySQL,所以才考虑使用 .NET 自动迁移,即 Mi ...

阅读全文...

我的个人博客网站再次被恶意镜像,这次手段高明了许多

最近在看个人博客网站的百度统计时,经常看到一个奇怪的域名访问记录。 我自己的域名是 www.sunzhongwei.com 而这个奇怪的域名是 okinm.fun 我第一反应是,估计又被人做了网站镜像。之前在 2021 年发现过一次,这是当时的记录 📚网站第一次被恶意镜像。 💡 高明的 404 Not Found 但是,奇怪的是,我访问这个域名,无论是用 http 还是用 https,都是显示 404 错误,即访问的页面不存在。 为了以防万一,我又去我的服务器上的 Nginx 日志中排查了一下,也没有这个域名的请求记录。 同时通过 dig 命令查看了这个域名的解析记录,发现是使用了 clo ...

阅读全文...

ASP.NET Core Razor 网页模板中将 Markdown 转换为 HTML

习惯了 Markdown 来记录笔记,所以编辑时使用的是 Markdown。但是在网站展示时, 希望将其转换为 HTML。 于是,搜索了一下 C# 相关的 Markdown 库。找到一个 Markdig 的库: https://github.com/xoofx/markdig 但是,这个不能直接在 ASP.NET Core MVC 的 Razor 代码文件中使用。 需要自己封装一下。还是太麻烦了,于是找了另一个基于 Markdig 封装好的库。 https://github.com/RickStrahl/Westwind.AspNetCore.Markdown ASP.NET Core Ma ...

阅读全文...

git 基于某个历史 commit 提交新建分支

针对不同版本的硬件,维护不同版本的软件,确实比较麻烦。 因为硬件不方便随时升级,所以只能让软件去升级,来兼容处理硬件的 bug。 结果就是,软件需要保留 N 多版本,且某个旧版本上可能还需要做 hot fix ... 😆 git 基于某个历史 commit 新建分支 git checkout -b new-branch-name commit-hash 💡 其它 再配合 git cherry-pick 将一个 commit 应用到多个分支 这样能方便不少。可以在多个版本分支上,应用同一个 hot fix。 唯一需要注意的是,cherry pick 之后,一定要检查一下 merge 后的代码变 ...

阅读全文...

对话机器人 Rasa(三十八):哪些功能不适合用 Rasa 实现

周末被一个 rasa 控制硬件设备的功能所困扰,连做梦都在梳理对话流程。当然是没有搞定。周一早上刷牙的时候,大脑又不自觉地思考起来,我觉得这不是个办法。于是,转而一想,抛开这是个必须完成的任务的角度,如果从我独立开发的角度去看呢?🤔 目前的实现方案为何如此烧脑,是否有更简洁清晰的解决方案。 ⚡️ 功能描述 在 rasa 对话流程中, 由 rasa 后端下发一个硬件设备的运行指令 然后客户端软件收到指令后,检测本地设备状态,将数据发给 rasa,rasa 再透传给三方服务器接口,存储数据 rasa 将三方服务接口的调用结果返回给客户端 客户端再控制硬件设备开始运行 运行结束,客户端再将运行结果发 ...

阅读全文...

AI 大模型取代搜索引擎的时代,是时候取消博客网站的 AMP MIP 支持了

这个周有个人加我微信,咨询微信小程序开发的事情。聊之前,他贴了个手机截屏,我一看是百度 app,搜出来的页面是我网站的 AMP 版本(Accelerated Mobile Pages,加速移动页面,最初由谷歌推出,旨在通过优化网页内容来加快移动页面的加载速度)。 如果不是看到这个界面,我都已经忘记了这个版本的存在。原因是,AMP 中我没有加百度统计的代码,而 google 分析我已经好多年没有看过了。 第一感觉是这个风格太丑陋了,而且没有统计跟踪,于是直接上服务器,把 AMP 及 MIP 版本的页面全部 301 跳转到了正常的页面。PHP 就是这点好,直接线上改代码,立马看效果。 取消 AMP ...

阅读全文...

.NET 8 C# 使用模板引擎 Scriban

由于 C# 中没有像 golang 一样内置一个模板引擎,所以做一下选型。 选型一:T4 text templates https://learn.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2022 没有看懂是否能够在 Visual Studio 之外使用,所以放弃。 选型二:类 razor 模板引擎 https://github.com/toddams/RazorLight 比较喜欢 Razor 的语法,但是这个项目引入政治元素,而且看起来文档也有点乱。 不太 ...

阅读全文...

在编程中变量名的几种表示方法

早上开会时,太无聊了,于是摸了个鱼,查询了一下在编程中变量名的几种表示方法对应的叫法。 为何要了解不同的命名方式呢? 因为 AI 时代,要让 AI 帮你写代码,首先要能描述清楚你的需求。例如,我在实现一个自动生成项目代码的 .NET 工具时,发现对于变量名格式的描述很模糊,需要不断举例说明,但是如果换成约定俗成的叫法,那么 AI 里面就能理解了。 下面就是一个案例: c# 将变量名 PascalCase 形式,转换为短横线命名法(KebabCase) 然后 AI 立即生成了对应的正则表达式代码。(腾讯元宝生成的代码还是不太行,用 POE 的 gpt-3.5-turbo 就非常准确) 下面是 ...

阅读全文...

计划管理由 obsidian 看板回归 vim markdown 的纯文本文件方式

计划管理似乎是一个永恒的话题,我已经记不清在各种项目管理工具之间切换了多少个轮回了😅从 Trac -> Trello -> Asana -> Trello -> TAPD -> Redmine -> Vim Markdown -> Obsidian Kanban -> Vim Markdown 。。。当然还有其他数不清的工具。差生文具多,所言不虚。 最近,我又回归了 Vim Markdown 这种纯文本的记录方式。例如,今晚在赶工一个 android 项目时,为了不让自己过于急躁,我直接在纸上用铅笔整理个大概,然后在项目的 README.md 中 ...

阅读全文...

.NET 8 C# Console 程序命令行解析

由于平时要写大量的增删改查代码,包括 golang gin 的和 C# asp.net 的等等。 用 VIM Snippet 可以解决单文件的问题,但是解决不了要同时新建多个文件的情况。 所以,想用 .NET 8 Console 来实现一个自动生成代码的工具。 首先呢,就需要能方便的解析命令行参数,来区分不同的框架。 依赖库:System.CommandLine 官方介绍 https://learn.microsoft.com/en-us/dotnet/standard/commandline/get-started-tutorial GitHub 项目: https://github.com ...

阅读全文...

QMS 质量管理系统中的供应商管理

最近一直在开发公司内部使用的 QMS 质量管理系统。 虽然是给质量检测部门使用,但是依然加入了供应商管理功能。 一开始感觉质检部门不应该有权限去查看供应商相关的信息,但是后续在开发的过程中,发现确实还是有一点必要,但是需要区分好侧重点。 数据同步策略 将集采平台的供应商都同步过来?感觉没有意义。 不如直接拉取集采平台中的列表,当有评价、打分时,才去创建评价记录。 采用用户故事的分析方法,即领域模型 打开列表页,从集采平台去拉取供应商列表 添加评价时,新建一条本地的供应商扩展记录,再创建一个供应商评价记录 定时同步来料统计,合格率统计 另一个方案: 将供应商列表直接同步过来。 直接使用集采 ...

阅读全文...

多张 PPT 无缝切换,适用于 win10 / win11

昨天公司举办一年一度的行业大会,我以第一鼠标操作员的身份参加了大会。 主要承担了给各个专家演讲时,播放 PPT 的核心工作 💣。在上午彩排预演的时候,政府领导对我切换 PPT 的手法提出了质疑,说每播放完一个 ppt,就回到系统桌面,或者文件夹,再选择下一个,看起来比较 low。是否可以做到无缝切换? 虽然我心中一万匹草泥马飘过,但是想想也非常合理。。。于是在手机上搜索了一下,没找到简单的解决方案。不知为何会议现场手机 5g 信号满格,但是网络异常卡,发个消息都发不出去。于是作罢,先完成彩排,然后想办法。 系统多屏幕设置 中午吃饭的时候,突然想到既然插了 hdmi 线投屏,理论上跟平时办公写代 ...

阅读全文...