让 C# 也拥有 gofmt 般的体验:用 CSharpier + Roslyn 实现 csfmt
C# 代码长到像答辩?用 CSharpier 自动折行,再用 Roslyn 修正 K&R 花括号,Taskfile 一键收尾。再补上 format-check,省得 CI 反复制造 Git diff。两步流水线并非原生 gofmt,顺序和版本仍得老实锁住。
STARBLOG / 技术与日常的文字存档
写下实践中的发现,也留住那些值得回看的想法。
C# 代码长到像答辩?用 CSharpier 自动折行,再用 Roslyn 修正 K&R 花括号,Taskfile 一键收尾。再补上 format-check,省得 CI 反复制造 Git diff。两步流水线并非原生 gofmt,顺序和版本仍得老实锁住。
又一个把Django/Rails那套“约定优于配置”搬进.NET生态的尝试,看着有点意思。预置了认证、队列、定时任务这些破事,省得自己天天重复造轮子。但767个star连个正式release都没有,就敢打着“生产级”旗号?呵,C#全栈爱好者们可以先玩玩,但别指望它能替代ASP.NET Core的体量。
.NET 10 的扩展方法语法糖?哦,用 `extension` 块定义扩展,支持属性和方法了,以前不行,现在行,真稀奇。静态扩展成员?太晚了点,给 `DateTime` 添加静态方法,终于能优雅了。升级吧,不然怎么享受这些新玩具?
Markdig 连文件名带空格的图片都搞不定?这破库还真是极限了。自己动手改改,正则表达式加个开关就完事,顺便吐槽下这框架原始得像块砖。
用C#模拟串口设备?这年头还学这种过时技术?不过行吧,至少比某些只会玩AI的卷王强点。搞搞清楚协议文档,装个破com0com驱动,写点死板代码应付下调试需求。至于什么物联网平台、工业控制?那是别人该干的事,我随便搞搞就够了。
用C#写个PDF目录提取工具?挺有意思,还整什么语义识别,效果真有那么好吗?AOT编译挺香,但别搞得太复杂就行。
C#覆盖率分析?不就是用工具生成报告吗?VSCode、VS、Rider哪个不能干?真当这是啥高科技?
纯C#+AOT打造的ImageGlider,图像处理功能堆得像山,还非得标榜零依赖?ImageSharp封装得倒是挺顺溜,就是不知道这模块化架构能走多远。Web API和CLI工具有点东西,但别指望我夸太离谱。
SharpIco bug修好了?真把自己当回事了,高分辨率图片转ico就崩,这逻辑够清奇。原来是位深度闹的,24转32而已,用点真本事解决?
本文介绍了在Avalonia框架下使用两种图标库(Icon.Avalonia和IconPacks.Avalonia)的详细方法。作者通过对比不同设备间emoji显示不一致的问题,引出使用FontAwesome图标的优势。文章重点讲解了两种库的安装步骤、XAML配置方法及实际应用场景,包括独立图标显示、控件附加、动画效果实现等。其中IconPacks.Avalonia支持35种图标集,功能更为丰富,还提供了图标浏览器工具。全文通过具体代码示例,为开发者提供了实用的技术参考。
SharpIco 是一款纯 C# 实现的跨平台图标生成工具,支持 AOT 编译,无需外部依赖。它能将 PNG 图片分解为多尺寸(16x16至512x512)合成 ICO 图标,并支持图标结构分析。工具提供命令行界面,可通过 dotnet tool 一键安装,并已发布至 NuGet 和 Scoop。项目旨在简化图标生成与验证,追求轻量、纯粹、易集成的使用体验。
本文介绍了作者使用Avalonia框架开发的跨平台文章发布工具StarBlog Publisher,并详细记录了使用AOT(Ahead-Of-Time)技术发布Avalonia应用的过程及遇到的问题。文章讨论了AOT的优缺点、配置方法,并针对JSON序列化、类型注册等问题提供了解决方案。作者分享了使用Newtonsoft.Json库和rd.xml文件等技巧,以优化AOT发布的性能和兼容性。
重构StarBlogPublisher中词云展示功能的过程。作者对比了两个流行的C#词云库,最终选择了功能更强大的Sdcb.WordCloud。文章详细说明了如何使用该库获取词频数据并生成词云图像,并展示了重构前后的效果对比。
国庆假期各种活动比较多,直到上班才有时间来更新文章~ 不过这两天我还是做了个小玩意(Clipify),起因是想给之前开发来自己用的简单视频剪辑工具 QuickCutSharp 加个功能,不过这个软件是基于 WinForms 开发的,做界面得拖拉控件,感觉繁琐又不灵活,于是索性重新做一个。
接下来我会找时间试一下 Electron 和 wails 的开发体验,进一步探索 Blazor Hybrid 在桌面软件开发中的优势。
前阵子在逛知乎的时候看到了Gitee发的文章,里面介绍了一些WinForm开源项目,其中就有涉及到界面库,我一下子就来了兴趣,然后顺瓜摸藤又找到了几个类似的界面库,看着熟悉的界面和代码,有一种「爷的青春回来了」的感觉~ 可惜属于WinForm的短暂时代早已结束,当今Web统治一切,怕是WinForm以后只能用来追忆往事了吧…… SunnyUI 看看作者的截图: 对话框: 看这界面颇有年代感,很惊讶
本文介绍了如何使用并行计算技术优化 KD 树算法,并使用 C# 编程语言实现了高效的最近邻搜索。首先,我们简要介绍了 KD 树的原理和构建过程,然后详细讨论了如何利用并行计算库在多个 CPU 核心上并行构建 KD 树,从而加速搜索过程。通过实验验证,我们证明了并行化优化能够显著提高 KD 树的构建速度和搜索效率,为大规模数据集下的最近邻搜索问题提供了一种高效的解决方案。
本文介绍了如何利用C#语言中的MemoryCache组件,结合并发编程技巧,实现轮流调用多个API Key以提高系统的并发能力。通过示例代码和详细说明,读者将了解如何有效地管理API Key的调用次数限制,并优化系统性能。
GitHub Action自动构建发布nuget包,省时省力。Secrets管理token,workflow一劳永逸。吐槽nuget推送重复输入token,烦人!
发布Nuget包到GitHub Packages?不过是配置token和nuget.config的重复劳动。手动关联包与仓库?GitHub的设计真够奇葩的。搞定,但谁有空折腾这些。
开发.NET Core控制台工具,依赖注入和日志整合得比Go优雅多了。哼,配置文件丝滑,但AOT?反射问题,放弃。
又一个.NetCore模板?FluentConsole.Templates,一键生成骨架,包含DI、日志、配置。安装?dotnet new install,然后dotnet new flu-cli -n MyProject。太简单了吧,谁在乎?
C#开发者用iKVM白嫖JVM生态?省事,但依赖处理还得手动折腾。无缝接入?不过是把JAR转DLL,省了移植代码的麻烦。AI工具缺?直接调用HanLP,但依赖处理,呵呵。
人脸检测与识别现在已经很成熟了,C# 上有 ViewFaceCore 这个很方便的库,但这种涉及到 native 调用的库,一般会有一些坑,本文记录一下开发和部署的过程。