当 pdf 中包含 STSONG-light 字体时,会导致 pdf 转图片时,文字丢失。这是因为 GHostscript 默认配置的问题。在 Docker 中往往会出现这个问题。 查看 Ghostscript 配置文件: cat /etc/ghostscript/cidfmap.d/90gs-cjk-resource-gb1.conf 部分内容如下: /Song-Medium /GBZenKai-Medium ; /STSong-Light /BousungEG-Light-GB ; /STFangsong-Li…

2023年12月25日 0条评论 2042点热度 0人点赞 痴者工良 阅读全文

背景:最近使用 Debezium 做数据库数据监听工具,然后使用 C# 开发管理工具对接 kafka 获取增量同步的数据,这个 C# 管理工具需要支持自定义下游数据库映射,因此再新增加映射关系时需要批量将上游数据全量同步到下游,然后才能从 Kafka 中开始使用增量数据同步,以便保持上下游的数据一致。 刚开始,笔者使用 mysqldump 工具导出表数据,然后使用 C# 读取 SQL 文件,再导入到下游表。可是这样做的性能比较差、速度比较慢,而且不能修改表名称。因为上游表名称是 A , 下游表名称是 v_A ,内部…

2023年12月21日 0条评论 2724点热度 0人点赞 痴者工良 阅读全文

demo 仓库地址:https://github.com/whuanle/yolo8_demo Ultralytics YOLOv8 是备受好评的实时目标检测和图像分割模型,主要功能是物体识别、分割图片物体、分类、姿态识别和跟踪等。Ultralytics 支持使用 CPU、GPU 进行训练,支持 x64、arm64 等 CPU 架构,支持苹果的 M1/M2 芯片,支持在边缘设备中训练和使用。 Ultralytics 对于个人免费,使用 【AGPL-3.0 许可】 开源协议,对于企业则需要付费。 Ultralytic…

2023年12月13日 5条评论 3780点热度 1人点赞 痴者工良 阅读全文

[TOC] 在业务开发中,使用数据库事务是必不可少的。而开发中往往会使用各种 ORM 执行数据库操作,简化代码复杂度,不过,由于各种 ORM 的封装特性,开发者的使用方式也不一样,开发者想要了解 ORM 对事务做了什么处理是比较难的。因此,本文介绍数据库事务基础、Ado.net 事务、如何封装 DbContext ,读者掌握以后,可以加深对 C# 使用事务的理解,使用各种 ORM 时也会更应手。 生成数据库数据 为了演示各种事务操作,我们想要先创建 demo 数据,打开 filldb 官网,根据操作提示生成模拟数据…

2023年12月12日 0条评论 1861点热度 0人点赞 痴者工良 阅读全文

首先在 router/index.ts 中创建对应的路由。 const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/', name: 'home', component: HomeView }, { path: '/datasource/:source?/:database?', name: 'dataSource', component:[......]继续阅读

2023年12月6日 0条评论 2384点热度 0人点赞 痴者工良 阅读全文

Kiota 是一个命令行工具,用于将 swagger、openapi 生成对应语言的的代码文件,目前支持: .NET CLI(C# 的 System.CommandLine) Go Java PHP Python TypeScript/JavaScript 官方文档: https://learn.microsoft.com/en-us/openapi/kiota/ 官方仓库: https://github.com/microsoft/kiota 据笔者使用,此工具目前尚未成熟,Bug 较多。此工具貌似是 Azure…

2023年12月5日 0条评论 1662点热度 0人点赞 痴者工良 阅读全文

NumPy NumPy 是 Python 中用于科学计算的基本包。它是一个 Python 库,提供了一个多维数组对象、各种派生对象(比如屏蔽数组和矩阵) ,以及一系列用于数组快速操作的例程,包括数学、逻辑、形状操作、排序、选择、 i/o、离散傅里叶变换、基本线性代数、基本统计操作、随机模拟等等。 官网文档地址:https://numpy.org/ 单纯学习 Numpy 会比较闷,因为 Numpy 是用于科学计算的。只是学习了各种 API 的使用,会很苦闷学来干啥,跟人工智能有什么关系? 安装 numpy 比较简单,…

2023年11月25日 0条评论 1615点热度 0人点赞 痴者工良 阅读全文

继承 DiagnosticAnalyzer 。 检测 async void 注册监听器: public override void Initialize(AnalysisContext context) { context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); context.EnableConcurrentExecution(); // 注册分析类型,只分析方法 contex[......]继续阅读

2023年11月23日 0条评论 1724点热度 0人点赞 痴者工良 阅读全文

A 项目中含有中文字符串目录路径,导致使用 Jenkins 时调用 Powershell 编译报错。 无论是设置环境变量还是使用 chcp 命令等,均无效。 这是因为默认 csproj 是使用 utf8-bom 保存的。 这样的特性会导致在本地电脑开发环境中正常,但是在服务器中编译就会报错。 需要改成正经的 utf8 编码重新保存文件才行。 [......] 继续阅读

2023年11月23日 0条评论 1568点热度 0人点赞 痴者工良 阅读全文

MainWindow 窗口使用 Blazor WebView2: <Border Margin="0,0,0,0" Background="Transparent" BorderThickness="0" CornerRadius="0,0,0,0"> <Grid> <blazor:BlazorWebView x:Name="webView" HostPage="{Bindi[......]继续阅读

2023年11月22日 0条评论 1542点热度 0人点赞 痴者工良 阅读全文

先引入 PInvoke.net 或 Microsoft.Windows.CsWin32,请参考: https://www.whuanle.cn/archives/21436 定义两个获取屏幕去掉任务栏的长宽高函数: public static int GetSystemMetrics_SM_CYMAXIMIZED() { return PInvoke.GetSystemMetrics(Windows.Win32.UI.WindowsAndMessaging.SYSTEM_METRICS_INDEX.SM_CYMAX…

2023年11月22日 0条评论 848点热度 0人点赞 痴者工良 阅读全文

PInvoke.net 是官方用于操作 Win32 API 的库,但是已经归档了。也就是后续需要使用 Microsoft.Windows.CsWin32 来操作 win32 API。 但是 Microsoft.Windows.CsWin32 比较麻烦,因为 Microsoft.Windows.CsWin32 使用的是 Rolsyn 技术动态生成代码,并且只能针对当前项目。当然,优点是动态生成部分代码合并到项目中,项目打包发布的时候,不需要依赖 Microsoft.Windows.CsWin32 包了,体积会小一些。…

2023年11月22日 2条评论 2070点热度 0人点赞 痴者工良 阅读全文

如图: 有两种配置形式。 一种是在项目中(可以启动的项目,类库不行)配置模板文件,另一种是在项目编译之后配置。 第一种方法在项目中新建一个 runtimeconfig.template.json 文件。 示例如下: { "runtimeOptions": { "configProperties": { "System.GC.ConserveMemory": 9 } } } 另一种是项目编译之后,项目下面会有个 {项目名称}.runtimeconfig.json 文件。手动修改即可。 [......] 继续阅读

2023年11月22日 0条评论 974点热度 0人点赞 痴者工良 阅读全文

新建一个项目,项目只能使用 netstandard2。 其 csproj 文件完整内容如下: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> <EnforceExtendedAn…

2023年11月21日 0条评论 900点热度 0人点赞 痴者工良 阅读全文

您大可以相信工良出品。本文从 C# 角度开始一点点编码,逐步了解 RabbitMQ 编程的各种细节,学会消息处理机制和多种场景下的开发细节。虽然文章比较长,但是不会啰啰嗦嗦说一堆理论。

2023年11月16日 0条评论 1827点热度 3人点赞 痴者工良 阅读全文

折腾了好一段时间,office 365、outlook 等的授权验证方式过于麻烦,因此记录开发步骤。 大概开发过程如下: 1,去注册 Azure 账号,然后进行应用注册。 2,租户邀请该用户加入组织中。 3,使用应用通过 OAuth 2.0 链接,获取用户的授权。 4,获取用户的 access_token 访问用户信息、替用户发送邮件等。 但是这些过程并不是一帆风顺,有很多曲折。比如不能跨租户访问等,必须先邀请用户加入组织。 否则会报错: AADSTS50020: User account 'xxx@xxx.onm…

2023年11月7日 5条评论 3040点热度 0人点赞 痴者工良 阅读全文

包 CommunityToolkit.Mvvm 主要用于代码生成,能够为用户减少编写大量的代码,在 WPF 中可以实现 MVVM 设计模式,降低代码复杂度。 引入项目包: <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1 "/> 要学习 MVVM,需要关注以下类型: CommunityToolkit.Mvvm.ComponentModel ObservableObject ObservableRecipient Observ…

2023年11月2日 0条评论 1758点热度 2人点赞 痴者工良 阅读全文

Spire.pdf 等打印 pdf 的库需要付费,因此本篇文章是通过使用 Google 开源的 PDFium 项目实现打印, PDFium 项目开源且跨平台。 bblanchon.PDFium.Win32 则是一个使用 C# 封装了 PDFium 的库。 引入三个库: <ItemGroup> <PackageReference Include="bblanchon.PDFium.Win32" Version="122.0.6259" /> <PackageReference Inclu…

2023年10月25日 3条评论 2678点热度 1人点赞 痴者工良 阅读全文

图片转换需要安装:https://ghostscript.com/ 引入: <ItemGroup> <PackageReference Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" /> <PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="2.3.2" /> </ItemGroup> 定义转换配置: public class…

2023年10月25日 0条评论 1291点热度 0人点赞 痴者工良 阅读全文

自家的软件安装后,需要更新,更新文件完成后还需要修改注册表中关于程序的版本号。 软件安装后,会被写入注册表中。 所以只需要修改注册表的 DisplayVersion 即可,不同的程序可能还需要修改其它属性,例如 Version、DisplayName。 修改注册表可能需要管理员权限,这要看软件是安装到所有人可以使用,还是仅当前用户可以使用。 每个程序的 KEY 都是不同的,需要自行拼接。 static void Main(string[] args) { string code = "4444-4444-4444-…

2023年10月23日 0条评论 1082点热度 0人点赞 痴者工良 阅读全文
1234526